From 6fdd830a6e692bd67a5ec4fec0fae887573d7799 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BB=96=E5=BE=B7=E4=BA=91?= Date: Mon, 24 Nov 2025 22:56:00 +0800 Subject: [PATCH] ruoyi-geek-vue3 --- .env.development | 11 + .env.production | 14 + .env.staging | 14 + .gitignore | 23 + .vscode/launch.json | 32 + .vscode/settings.json | 12 + LICENSE | 6 + README.md | 132 ++ bin/build.bat | 12 + bin/package.bat | 12 + bin/run-web.bat | 12 + doc/image/code-edit.png | Bin 0 -> 87601 bytes doc/image/code-show.png | Bin 0 -> 109482 bytes doc/image/flowable.png | Bin 0 -> 186474 bytes doc/image/form-edit.png | Bin 0 -> 166736 bytes doc/image/logo.png | Bin 0 -> 4879 bytes doc/image/message.png | Bin 0 -> 86066 bytes doc/image/online-mb-code.png | Bin 0 -> 149041 bytes doc/image/online-mb-edit.png | Bin 0 -> 185794 bytes doc/image/online-mb-list.png | Bin 0 -> 149588 bytes doc/nginx.conf | 66 + html/ie.html | 47 + index.html | 215 ++ lib/vform/designer.style.css | 16 + lib/vform/designer.umd.js | 1678 ++++++++++++++++ lib/vform/favicon.ico | Bin 0 -> 4286 bytes package.json | 69 + public/draco/README.md | 32 + public/draco/draco_decoder.js | 34 + public/draco/draco_decoder.wasm | Bin 0 -> 285747 bytes public/draco/draco_encoder.js | 33 + public/draco/draco_wasm_wrapper.js | 117 ++ public/draco/gltf/draco_decoder.js | 33 + public/draco/gltf/draco_decoder.wasm | Bin 0 -> 192420 bytes public/draco/gltf/draco_encoder.js | 33 + public/draco/gltf/draco_wasm_wrapper.js | 116 ++ public/favicon.ico | Bin 0 -> 16958 bytes public/glb/1.glb | Bin 0 -> 4083692 bytes public/glb/2.glb | Bin 0 -> 333600 bytes public/glb/bg.jpeg | Bin 0 -> 4719 bytes src/App.vue | 19 + src/annotation/Api.ts | 60 + src/annotation/Schema.ts | 48 + src/annotation/SchemaComponent.ts | 27 + src/api/file/info.js | 130 ++ src/api/flowable/definition.js | 113 ++ src/api/flowable/expression.js | 44 + src/api/flowable/finished.js | 58 + src/api/flowable/form.js | 68 + src/api/flowable/listener.js | 44 + src/api/flowable/process.js | 70 + src/api/flowable/todo.js | 101 + src/api/form/data.js | 44 + src/api/form/template.js | 44 + src/api/login.js | 113 ++ src/api/menu.js | 9 + src/api/modelMessage/messageSystem.js | 70 + src/api/modelMessage/template.js | 52 + src/api/modelMessage/variable.js | 52 + src/api/monitor/cache.js | 57 + src/api/monitor/job.js | 71 + src/api/monitor/jobLog.js | 26 + src/api/monitor/logininfor.js | 34 + src/api/monitor/online.js | 18 + src/api/monitor/operlog.js | 26 + src/api/monitor/server.js | 9 + src/api/ngtools/NGCalcTools.js | 26 + src/api/ngtools/components.js | 44 + src/api/ngtools/meterpar.js | 44 + src/api/ngtools/meterresult.js | 44 + src/api/ngtools/ngpar.js | 44 + src/api/online/db.js | 18 + src/api/online/mb.js | 44 + src/api/pay/invoice.js | 44 + src/api/pay/order.js | 62 + src/api/system/config.js | 60 + src/api/system/convert.js | 44 + src/api/system/dept.js | 52 + src/api/system/dict/data.js | 52 + src/api/system/dict/type.js | 60 + src/api/system/expression.js | 44 + src/api/system/listener.js | 44 + src/api/system/menu.js | 60 + src/api/system/notice.js | 44 + src/api/system/oauth.js | 44 + src/api/system/post.js | 44 + src/api/system/role.js | 119 ++ src/api/system/treeDict.js | 44 + src/api/system/user.js | 138 ++ src/api/tool/gen.js | 88 + src/assets/401_images/401.gif | Bin 0 -> 164227 bytes src/assets/404_images/404.png | Bin 0 -> 98071 bytes src/assets/404_images/404_cloud.png | Bin 0 -> 4766 bytes src/assets/icons/svg/404.svg | 1 + src/assets/icons/svg/bug.svg | 1 + src/assets/icons/svg/build.svg | 1 + src/assets/icons/svg/button.svg | 1 + src/assets/icons/svg/cascader.svg | 1 + src/assets/icons/svg/chart.svg | 1 + src/assets/icons/svg/checkbox.svg | 1 + src/assets/icons/svg/clipboard.svg | 1 + src/assets/icons/svg/code.svg | 1 + src/assets/icons/svg/color.svg | 1 + src/assets/icons/svg/component.svg | 1 + src/assets/icons/svg/dashboard.svg | 1 + src/assets/icons/svg/date-range.svg | 1 + src/assets/icons/svg/date.svg | 1 + src/assets/icons/svg/dict.svg | 1 + src/assets/icons/svg/documentation.svg | 1 + src/assets/icons/svg/download.svg | 1 + src/assets/icons/svg/drag.svg | 1 + src/assets/icons/svg/druid.svg | 1 + src/assets/icons/svg/edit.svg | 1 + src/assets/icons/svg/education.svg | 1 + src/assets/icons/svg/email.svg | 1 + src/assets/icons/svg/enter.svg | 1 + src/assets/icons/svg/example.svg | 1 + src/assets/icons/svg/excel.svg | 1 + src/assets/icons/svg/exit-fullscreen.svg | 1 + src/assets/icons/svg/eye-open.svg | 1 + src/assets/icons/svg/eye.svg | 1 + src/assets/icons/svg/form.svg | 1 + src/assets/icons/svg/fullscreen.svg | 1 + src/assets/icons/svg/gitee.svg | 1 + src/assets/icons/svg/github.svg | 1 + src/assets/icons/svg/guide.svg | 1 + src/assets/icons/svg/icon.svg | 1 + src/assets/icons/svg/input.svg | 1 + src/assets/icons/svg/international.svg | 1 + src/assets/icons/svg/job.svg | 1 + src/assets/icons/svg/language.svg | 1 + src/assets/icons/svg/link.svg | 1 + src/assets/icons/svg/list.svg | 1 + src/assets/icons/svg/lock.svg | 1 + src/assets/icons/svg/log.svg | 1 + src/assets/icons/svg/logininfor.svg | 1 + src/assets/icons/svg/message.svg | 1 + src/assets/icons/svg/money.svg | 1 + src/assets/icons/svg/monitor.svg | 2 + src/assets/icons/svg/more-up.svg | 1 + src/assets/icons/svg/nested.svg | 1 + src/assets/icons/svg/number.svg | 1 + src/assets/icons/svg/online.svg | 1 + src/assets/icons/svg/password.svg | 1 + src/assets/icons/svg/pdf.svg | 1 + src/assets/icons/svg/people.svg | 1 + src/assets/icons/svg/peoples.svg | 1 + src/assets/icons/svg/phone.svg | 1 + src/assets/icons/svg/post.svg | 1 + src/assets/icons/svg/qq.svg | 1 + src/assets/icons/svg/question.svg | 1 + src/assets/icons/svg/radio.svg | 1 + src/assets/icons/svg/rate.svg | 1 + src/assets/icons/svg/redis-list.svg | 2 + src/assets/icons/svg/redis.svg | 1 + src/assets/icons/svg/row.svg | 1 + src/assets/icons/svg/search.svg | 1 + src/assets/icons/svg/select.svg | 1 + src/assets/icons/svg/server.svg | 1 + src/assets/icons/svg/shopping.svg | 1 + src/assets/icons/svg/size.svg | 1 + src/assets/icons/svg/skill.svg | 1 + src/assets/icons/svg/slider.svg | 1 + src/assets/icons/svg/star.svg | 1 + src/assets/icons/svg/swagger.svg | 1 + src/assets/icons/svg/switch.svg | 1 + src/assets/icons/svg/system.svg | 2 + src/assets/icons/svg/tab.svg | 1 + src/assets/icons/svg/table.svg | 1 + src/assets/icons/svg/textarea.svg | 1 + src/assets/icons/svg/theme.svg | 1 + src/assets/icons/svg/time-range.svg | 1 + src/assets/icons/svg/time.svg | 1 + src/assets/icons/svg/tool.svg | 1 + src/assets/icons/svg/tree-table.svg | 1 + src/assets/icons/svg/tree.svg | 1 + src/assets/icons/svg/upload.svg | 1 + src/assets/icons/svg/user.svg | 1 + src/assets/icons/svg/validCode.svg | 1 + src/assets/icons/svg/wechat.svg | 1 + src/assets/icons/svg/zip.svg | 1 + src/assets/images/dark.svg | 39 + src/assets/images/light.svg | 39 + src/assets/images/profile.jpg | Bin 0 -> 81131 bytes src/assets/logo/logo.png | Bin 0 -> 20919 bytes src/assets/styles/btn.scss | 100 + src/assets/styles/element-ui.scss | 141 ++ src/assets/styles/index.scss | 212 ++ src/assets/styles/mixin.scss | 98 + src/assets/styles/ruoyi.scss | 293 +++ src/assets/styles/sidebar.scss | 263 +++ src/assets/styles/transition.scss | 108 + src/assets/styles/variables.module.scss | 77 + src/components/Crontab/day.vue | 174 ++ src/components/Crontab/hour.vue | 127 ++ src/components/Crontab/index.vue | 317 +++ src/components/Crontab/min.vue | 126 ++ src/components/Crontab/month.vue | 141 ++ src/components/Crontab/result.vue | 540 +++++ src/components/Crontab/second.vue | 128 ++ src/components/Crontab/week.vue | 197 ++ src/components/Crontab/year.vue | 149 ++ src/components/DictTag/index.vue | 36 + src/components/Editor/index.vue | 307 +++ src/components/Hamburger/index.vue | 33 + src/components/HeaderSearch/index.vue | 244 +++ src/components/IconSelect/index.vue | 70 + src/components/IconSelect/requireIcons.ts | 8 + src/components/ImagePreview/index.vue | 91 + src/components/JsBarcodeView/index.vue | 25 + src/components/NGTools/NGCom.vue | 265 +++ src/components/NGTools/NGResult.vue | 326 +++ src/components/NGTools/meterPar.vue | 478 +++++ src/components/NGTools/meterResult.vue | 231 +++ src/components/Pagination/index.vue | 59 + src/components/ParentView/index.vue | 3 + src/components/Process/README.md | 181 ++ src/components/Process/common/bpmnUtils.js | 124 ++ src/components/Process/common/global.js | 17 + src/components/Process/common/index.js | 17 + .../Process/common/packed-config.js | 1769 +++++++++++++++++ .../Process/customPanel/CustomContextPad.js | 527 +++++ .../Process/customPanel/CustomPalette.js | 145 ++ .../Process/customPanel/customTranslate.js | 32 + src/components/Process/customPanel/index.js | 8 + src/components/Process/designer.vue | 186 ++ src/components/Process/flowable/flowable.json | 1256 ++++++++++++ src/components/Process/flowable/init.js | 33 + src/components/Process/index.vue | 351 ++++ src/components/Process/lang/zh.js | 277 +++ src/components/Process/panel/ButtonsPanel.vue | 139 ++ .../Process/panel/PropertiesPanel.vue | 139 ++ src/components/Process/panel/commonPanel.vue | 139 ++ .../Process/panel/conditionPanel.vue | 175 ++ .../Process/panel/executionListener.vue | 464 +++++ src/components/Process/panel/formPanel.vue | 78 + .../Process/panel/multiInstance.vue | 236 +++ src/components/Process/panel/otherPanel.vue | 65 + src/components/Process/panel/taskListener.vue | 501 +++++ src/components/Process/panel/taskPanel.vue | 407 ++++ src/components/Process/style/flow-viewer.scss | 183 ++ .../Process/style/process-panel.scss | 123 ++ src/components/Process/viewer/index.vue | 176 ++ src/components/QRCodeView/index.d.ts | 1 + src/components/QRCodeView/index.vue | 71 + src/components/RightToolbar/index.vue | 155 ++ src/components/Schema/form.vue | 23 + src/components/Schema/index.ts | 4 + src/components/Schema/table.vue | 27 + src/components/Screenfull/index.vue | 20 + src/components/SizeSelect/index.vue | 42 + src/components/SvgIcon/index.vue | 39 + src/components/TransitionVisible/index.vue | 209 ++ src/components/TreeSelect/index.vue | 145 ++ .../UploadComponents/ChunkUpload/TaskQueue.ts | 246 +++ .../UploadComponents/ChunkUpload/index.ts | 87 + .../UploadComponents/ChunkUpload/index.vue | 229 +++ .../UploadComponents/FileUpload/index.vue | 211 ++ .../UploadComponents/ImageUpload/index.vue | 207 ++ src/components/flow/ElInputTag/index.vue | 191 ++ src/components/flow/Expression/index.vue | 129 ++ src/components/flow/Role/index.vue | 179 ++ src/components/flow/User/index.vue | 222 +++ src/components/iFrame/index.vue | 28 + src/components/index.ts | 63 + src/components/inputValueUnit/index.vue | 492 +++++ src/directive/common/copyText.ts | 77 + src/directive/common/focus.ts | 7 + src/directive/common/full.ts | 50 + src/directive/index.ts | 14 + src/directive/permission/hasPermi.ts | 30 + src/directive/permission/hasRole.ts | 30 + src/entity/pay/PayInvoice.ts | 83 + src/entity/pay/PayOrder.ts | 65 + src/env.d.ts | 30 + src/hook/index.ts | 140 ++ src/layout/components/AppMain.vue | 61 + src/layout/components/Copyright/index.vue | 28 + src/layout/components/IframeToggle/index.vue | 14 + src/layout/components/InnerLink/index.vue | 19 + src/layout/components/Navbar/Breadcrumb.vue | 102 + .../components/Navbar/RuoYi/Doc/index.vue | 13 + .../components/Navbar/RuoYi/Git/gitee.vue | 13 + .../components/Navbar/RuoYi/Git/github.vue | 13 + src/layout/components/Navbar/TopNav.vue | 252 +++ src/layout/components/Navbar/index.vue | 213 ++ src/layout/components/Settings/index.vue | 267 +++ src/layout/components/Sidebar/Link.vue | 32 + src/layout/components/Sidebar/Logo.vue | 82 + src/layout/components/Sidebar/SidebarItem.vue | 96 + src/layout/components/Sidebar/index.vue | 47 + src/layout/components/TagsView/ScrollPane.vue | 104 + src/layout/components/TagsView/index.vue | 332 ++++ src/layout/components/index.ts | 5 + src/layout/index.vue | 112 ++ src/main.ts | 34 + src/plugins/auth.ts | 84 + src/plugins/bus.ts | 28 + src/plugins/cache.ts | 77 + src/plugins/download.ts | 72 + src/plugins/index.ts | 33 + src/plugins/modal.ts | 82 + src/plugins/socketclient.ts | 126 ++ src/plugins/tab.ts | 108 + src/router/guards/afterEach.ts | 9 + src/router/guards/beforeEach.ts | 58 + src/router/index.ts | 27 + src/router/routes/asyncRoutes.ts | 75 + src/router/routes/staticRoutes.ts | 134 ++ src/router/routesAlias.ts | 8 + src/router/utils/utils.ts | 12 + src/settings.ts | 80 + src/store/index.ts | 11 + src/store/modules/app.ts | 46 + src/store/modules/dict.ts | 59 + src/store/modules/permission.ts | 178 ++ src/store/modules/settings.ts | 56 + src/store/modules/tagsView.ts | 205 ++ src/store/modules/user.ts | 109 + src/types/Message.ts | 76 + src/types/dict.ts | 26 + src/types/request.ts | 39 + src/types/route.ts | 56 + src/types/user.ts | 53 + src/utils/StrUtil.ts | 737 +++++++ src/utils/auth.ts | 15 + src/utils/dict.ts | 28 + src/utils/drag.ts | 42 + src/utils/dynamicTitle.ts | 15 + src/utils/errorCode.ts | 6 + src/utils/index.js | 387 ++++ src/utils/jsencrypt.ts | 30 + src/utils/permission.ts | 51 + src/utils/request.ts | 164 ++ src/utils/ruoyi.js | 253 +++ src/utils/scroll-to.ts | 62 + src/utils/theme.ts | 49 + src/utils/validate.ts | 106 + src/views/auth/index.vue | 372 ++++ src/views/auth/login.vue | 245 +++ src/views/auth/oauth.vue | 171 ++ src/views/auth/register.vue | 248 +++ src/views/error/401.vue | 82 + src/views/error/404.vue | 227 +++ src/views/flowable/definition/index.vue | 465 +++++ src/views/flowable/definition/model.vue | 150 ++ src/views/flowable/expression/index.vue | 254 +++ src/views/flowable/listener/index.vue | 292 +++ .../flowable/task/finished/detail/index.vue | 200 ++ src/views/flowable/task/finished/index.vue | 195 ++ .../flowable/task/myProcess/detail/index.vue | 196 ++ src/views/flowable/task/myProcess/index.vue | 293 +++ .../flowable/task/myProcess/send/index.vue | 251 +++ src/views/flowable/task/todo/detail/index.vue | 450 +++++ src/views/flowable/task/todo/index.vue | 181 ++ src/views/form/data/index.vue | 239 +++ src/views/form/template/index.vue | 285 +++ src/views/index.vue | 659 ++++++ .../messageSystem/components/addMessage.vue | 267 +++ .../components/recipientSelector.vue | 257 +++ .../modelMessage/messageSystem/index.vue | 182 ++ .../components/TemplateFormDialog.vue | 183 ++ src/views/modelMessage/template/index.vue | 226 +++ .../components/VariableFormDialog.vue | 132 ++ src/views/modelMessage/variable/index.vue | 241 +++ src/views/monitor/cache/index.vue | 131 ++ src/views/monitor/cache/list.vue | 168 ++ src/views/monitor/druid/index.vue | 13 + src/views/monitor/job/index.vue | 434 ++++ src/views/monitor/job/log.vue | 225 +++ src/views/monitor/logininfor/index.vue | 179 ++ src/views/monitor/online/index.vue | 98 + src/views/monitor/operlog/index.vue | 234 +++ src/views/monitor/server/index.vue | 187 ++ src/views/ngtools/FlowCal/index.vue | 327 +++ src/views/ngtools/components/index.vue | 444 +++++ src/views/ngtools/meterpar/index.vue | 815 ++++++++ src/views/ngtools/meterresult/index.vue | 399 ++++ src/views/ngtools/ngpar/index.vue | 693 +++++++ src/views/online/db/index.vue | 53 + src/views/online/mb/index.vue | 400 ++++ src/views/online/mb/mybatis-input.vue | 238 +++ src/views/online/mb/online-preview.vue | 165 ++ src/views/pay/invoice/index.vue | 146 ++ src/views/pay/order/index.vue | 202 ++ src/views/pay/paytest/index.vue | 82 + src/views/redirect/index.vue | 14 + src/views/system/config/index.vue | 253 +++ src/views/system/convert/index.vue | 352 ++++ src/views/system/dept/index.vue | 248 +++ src/views/system/dict/data.vue | 306 +++ src/views/system/dict/index.vue | 258 +++ src/views/system/file/index.vue | 258 +++ src/views/system/menu/index.vue | 440 ++++ src/views/system/notice/index.vue | 248 +++ src/views/system/oauth/index.vue | 133 ++ src/views/system/post/index.vue | 238 +++ src/views/system/role/authUser.vue | 172 ++ src/views/system/role/index.vue | 489 +++++ src/views/system/role/selectUser.vue | 140 ++ src/views/system/user/authRole.vue | 120 ++ src/views/system/user/index.vue | 534 +++++ src/views/system/user/profile/index.vue | 105 + src/views/system/user/profile/resetEmail.vue | 50 + src/views/system/user/profile/resetPhone.vue | 50 + src/views/system/user/profile/resetPwd.vue | 61 + src/views/system/user/profile/userAvatar.vue | 159 ++ src/views/system/user/profile/userInfo.vue | 62 + src/views/three/ModelPanel.vue | 95 + src/views/three/OperatePanel.vue | 67 + src/views/three/Panel.vue | 103 + src/views/three/SelectedPanel.vue | 102 + src/views/three/ThreePanel.vue | 79 + src/views/three/director.ts | 92 + src/views/three/gltfmode.vue | 68 + src/views/three/three-plus/CapsControls.ts | 623 ++++++ src/views/three/three-plus/ExplodeControls.ts | 58 + src/views/three/three-plus/SelectControls.ts | 41 + src/views/three/three-plus/ThreeHelper.ts | 223 +++ .../glsl/CapsControls/fragment.glsl | 9 + .../glsl/CapsControls/fragmentClipping.glsl | 30 + .../CapsControls/fragmentClippingFront.glsl | 23 + .../CapsControls/invisibleFragmentShader.glsl | 4 + .../CapsControls/invisibleVertexShader.glsl | 4 + .../three-plus/glsl/CapsControls/vertex.glsl | 9 + .../glsl/CapsControls/vertexClipping.glsl | 17 + src/views/three/three-plus/utils.ts | 183 ++ src/views/tool/build/index.vue | 92 + src/views/tool/gen/components/createTable.vue | 327 +++ src/views/tool/gen/components/importTable.vue | 111 ++ src/views/tool/gen/edit/basicInfoForm.vue | 52 + src/views/tool/gen/edit/editTableForm.vue | 182 ++ src/views/tool/gen/edit/genInfoForm.vue | 259 +++ src/views/tool/gen/edit/index.ts | 332 ++++ src/views/tool/gen/edit/index.vue | 76 + src/views/tool/gen/edit/joinTableForm.vue | 179 ++ src/views/tool/gen/index.vue | 242 +++ src/views/tool/swagger/index.vue | 9 + src/views/websocket.vue | 339 ++++ tsconfig.json | 31 + vite.config.js | 78 + vite/plugins/auto-import.js | 12 + vite/plugins/compression.js | 28 + vite/plugins/index.js | 16 + vite/plugins/setup-extend.js | 5 + vite/plugins/svg-icon.js | 10 + 446 files changed, 49500 insertions(+) create mode 100644 .env.development create mode 100644 .env.production create mode 100644 .env.staging create mode 100644 .gitignore create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100644 LICENSE create mode 100644 README.md create mode 100644 bin/build.bat create mode 100644 bin/package.bat create mode 100644 bin/run-web.bat create mode 100644 doc/image/code-edit.png create mode 100644 doc/image/code-show.png create mode 100644 doc/image/flowable.png create mode 100644 doc/image/form-edit.png create mode 100644 doc/image/logo.png create mode 100644 doc/image/message.png create mode 100644 doc/image/online-mb-code.png create mode 100644 doc/image/online-mb-edit.png create mode 100644 doc/image/online-mb-list.png create mode 100644 doc/nginx.conf create mode 100644 html/ie.html create mode 100644 index.html create mode 100644 lib/vform/designer.style.css create mode 100644 lib/vform/designer.umd.js create mode 100644 lib/vform/favicon.ico create mode 100644 package.json create mode 100644 public/draco/README.md create mode 100644 public/draco/draco_decoder.js create mode 100644 public/draco/draco_decoder.wasm create mode 100644 public/draco/draco_encoder.js create mode 100644 public/draco/draco_wasm_wrapper.js create mode 100644 public/draco/gltf/draco_decoder.js create mode 100644 public/draco/gltf/draco_decoder.wasm create mode 100644 public/draco/gltf/draco_encoder.js create mode 100644 public/draco/gltf/draco_wasm_wrapper.js create mode 100644 public/favicon.ico create mode 100644 public/glb/1.glb create mode 100644 public/glb/2.glb create mode 100644 public/glb/bg.jpeg create mode 100644 src/App.vue create mode 100644 src/annotation/Api.ts create mode 100644 src/annotation/Schema.ts create mode 100644 src/annotation/SchemaComponent.ts create mode 100644 src/api/file/info.js create mode 100644 src/api/flowable/definition.js create mode 100644 src/api/flowable/expression.js create mode 100644 src/api/flowable/finished.js create mode 100644 src/api/flowable/form.js create mode 100644 src/api/flowable/listener.js create mode 100644 src/api/flowable/process.js create mode 100644 src/api/flowable/todo.js create mode 100644 src/api/form/data.js create mode 100644 src/api/form/template.js create mode 100644 src/api/login.js create mode 100644 src/api/menu.js create mode 100644 src/api/modelMessage/messageSystem.js create mode 100644 src/api/modelMessage/template.js create mode 100644 src/api/modelMessage/variable.js create mode 100644 src/api/monitor/cache.js create mode 100644 src/api/monitor/job.js create mode 100644 src/api/monitor/jobLog.js create mode 100644 src/api/monitor/logininfor.js create mode 100644 src/api/monitor/online.js create mode 100644 src/api/monitor/operlog.js create mode 100644 src/api/monitor/server.js create mode 100644 src/api/ngtools/NGCalcTools.js create mode 100644 src/api/ngtools/components.js create mode 100644 src/api/ngtools/meterpar.js create mode 100644 src/api/ngtools/meterresult.js create mode 100644 src/api/ngtools/ngpar.js create mode 100644 src/api/online/db.js create mode 100644 src/api/online/mb.js create mode 100644 src/api/pay/invoice.js create mode 100644 src/api/pay/order.js create mode 100644 src/api/system/config.js create mode 100644 src/api/system/convert.js create mode 100644 src/api/system/dept.js create mode 100644 src/api/system/dict/data.js create mode 100644 src/api/system/dict/type.js create mode 100644 src/api/system/expression.js create mode 100644 src/api/system/listener.js create mode 100644 src/api/system/menu.js create mode 100644 src/api/system/notice.js create mode 100644 src/api/system/oauth.js create mode 100644 src/api/system/post.js create mode 100644 src/api/system/role.js create mode 100644 src/api/system/treeDict.js create mode 100644 src/api/system/user.js create mode 100644 src/api/tool/gen.js create mode 100644 src/assets/401_images/401.gif create mode 100644 src/assets/404_images/404.png create mode 100644 src/assets/404_images/404_cloud.png create mode 100644 src/assets/icons/svg/404.svg create mode 100644 src/assets/icons/svg/bug.svg create mode 100644 src/assets/icons/svg/build.svg create mode 100644 src/assets/icons/svg/button.svg create mode 100644 src/assets/icons/svg/cascader.svg create mode 100644 src/assets/icons/svg/chart.svg create mode 100644 src/assets/icons/svg/checkbox.svg create mode 100644 src/assets/icons/svg/clipboard.svg create mode 100644 src/assets/icons/svg/code.svg create mode 100644 src/assets/icons/svg/color.svg create mode 100644 src/assets/icons/svg/component.svg create mode 100644 src/assets/icons/svg/dashboard.svg create mode 100644 src/assets/icons/svg/date-range.svg create mode 100644 src/assets/icons/svg/date.svg create mode 100644 src/assets/icons/svg/dict.svg create mode 100644 src/assets/icons/svg/documentation.svg create mode 100644 src/assets/icons/svg/download.svg create mode 100644 src/assets/icons/svg/drag.svg create mode 100644 src/assets/icons/svg/druid.svg create mode 100644 src/assets/icons/svg/edit.svg create mode 100644 src/assets/icons/svg/education.svg create mode 100644 src/assets/icons/svg/email.svg create mode 100644 src/assets/icons/svg/enter.svg create mode 100644 src/assets/icons/svg/example.svg create mode 100644 src/assets/icons/svg/excel.svg create mode 100644 src/assets/icons/svg/exit-fullscreen.svg create mode 100644 src/assets/icons/svg/eye-open.svg create mode 100644 src/assets/icons/svg/eye.svg create mode 100644 src/assets/icons/svg/form.svg create mode 100644 src/assets/icons/svg/fullscreen.svg create mode 100644 src/assets/icons/svg/gitee.svg create mode 100644 src/assets/icons/svg/github.svg create mode 100644 src/assets/icons/svg/guide.svg create mode 100644 src/assets/icons/svg/icon.svg create mode 100644 src/assets/icons/svg/input.svg create mode 100644 src/assets/icons/svg/international.svg create mode 100644 src/assets/icons/svg/job.svg create mode 100644 src/assets/icons/svg/language.svg create mode 100644 src/assets/icons/svg/link.svg create mode 100644 src/assets/icons/svg/list.svg create mode 100644 src/assets/icons/svg/lock.svg create mode 100644 src/assets/icons/svg/log.svg create mode 100644 src/assets/icons/svg/logininfor.svg create mode 100644 src/assets/icons/svg/message.svg create mode 100644 src/assets/icons/svg/money.svg create mode 100644 src/assets/icons/svg/monitor.svg create mode 100644 src/assets/icons/svg/more-up.svg create mode 100644 src/assets/icons/svg/nested.svg create mode 100644 src/assets/icons/svg/number.svg create mode 100644 src/assets/icons/svg/online.svg create mode 100644 src/assets/icons/svg/password.svg create mode 100644 src/assets/icons/svg/pdf.svg create mode 100644 src/assets/icons/svg/people.svg create mode 100644 src/assets/icons/svg/peoples.svg create mode 100644 src/assets/icons/svg/phone.svg create mode 100644 src/assets/icons/svg/post.svg create mode 100644 src/assets/icons/svg/qq.svg create mode 100644 src/assets/icons/svg/question.svg create mode 100644 src/assets/icons/svg/radio.svg create mode 100644 src/assets/icons/svg/rate.svg create mode 100644 src/assets/icons/svg/redis-list.svg create mode 100644 src/assets/icons/svg/redis.svg create mode 100644 src/assets/icons/svg/row.svg create mode 100644 src/assets/icons/svg/search.svg create mode 100644 src/assets/icons/svg/select.svg create mode 100644 src/assets/icons/svg/server.svg create mode 100644 src/assets/icons/svg/shopping.svg create mode 100644 src/assets/icons/svg/size.svg create mode 100644 src/assets/icons/svg/skill.svg create mode 100644 src/assets/icons/svg/slider.svg create mode 100644 src/assets/icons/svg/star.svg create mode 100644 src/assets/icons/svg/swagger.svg create mode 100644 src/assets/icons/svg/switch.svg create mode 100644 src/assets/icons/svg/system.svg create mode 100644 src/assets/icons/svg/tab.svg create mode 100644 src/assets/icons/svg/table.svg create mode 100644 src/assets/icons/svg/textarea.svg create mode 100644 src/assets/icons/svg/theme.svg create mode 100644 src/assets/icons/svg/time-range.svg create mode 100644 src/assets/icons/svg/time.svg create mode 100644 src/assets/icons/svg/tool.svg create mode 100644 src/assets/icons/svg/tree-table.svg create mode 100644 src/assets/icons/svg/tree.svg create mode 100644 src/assets/icons/svg/upload.svg create mode 100644 src/assets/icons/svg/user.svg create mode 100644 src/assets/icons/svg/validCode.svg create mode 100644 src/assets/icons/svg/wechat.svg create mode 100644 src/assets/icons/svg/zip.svg create mode 100644 src/assets/images/dark.svg create mode 100644 src/assets/images/light.svg create mode 100644 src/assets/images/profile.jpg create mode 100644 src/assets/logo/logo.png create mode 100644 src/assets/styles/btn.scss create mode 100644 src/assets/styles/element-ui.scss create mode 100644 src/assets/styles/index.scss create mode 100644 src/assets/styles/mixin.scss create mode 100644 src/assets/styles/ruoyi.scss create mode 100644 src/assets/styles/sidebar.scss create mode 100644 src/assets/styles/transition.scss create mode 100644 src/assets/styles/variables.module.scss create mode 100644 src/components/Crontab/day.vue create mode 100644 src/components/Crontab/hour.vue create mode 100644 src/components/Crontab/index.vue create mode 100644 src/components/Crontab/min.vue create mode 100644 src/components/Crontab/month.vue create mode 100644 src/components/Crontab/result.vue create mode 100644 src/components/Crontab/second.vue create mode 100644 src/components/Crontab/week.vue create mode 100644 src/components/Crontab/year.vue create mode 100644 src/components/DictTag/index.vue create mode 100644 src/components/Editor/index.vue create mode 100644 src/components/Hamburger/index.vue create mode 100644 src/components/HeaderSearch/index.vue create mode 100644 src/components/IconSelect/index.vue create mode 100644 src/components/IconSelect/requireIcons.ts create mode 100644 src/components/ImagePreview/index.vue create mode 100644 src/components/JsBarcodeView/index.vue create mode 100644 src/components/NGTools/NGCom.vue create mode 100644 src/components/NGTools/NGResult.vue create mode 100644 src/components/NGTools/meterPar.vue create mode 100644 src/components/NGTools/meterResult.vue create mode 100644 src/components/Pagination/index.vue create mode 100644 src/components/ParentView/index.vue create mode 100644 src/components/Process/README.md create mode 100644 src/components/Process/common/bpmnUtils.js create mode 100644 src/components/Process/common/global.js create mode 100644 src/components/Process/common/index.js create mode 100644 src/components/Process/common/packed-config.js create mode 100644 src/components/Process/customPanel/CustomContextPad.js create mode 100644 src/components/Process/customPanel/CustomPalette.js create mode 100644 src/components/Process/customPanel/customTranslate.js create mode 100644 src/components/Process/customPanel/index.js create mode 100644 src/components/Process/designer.vue create mode 100644 src/components/Process/flowable/flowable.json create mode 100644 src/components/Process/flowable/init.js create mode 100644 src/components/Process/index.vue create mode 100644 src/components/Process/lang/zh.js create mode 100644 src/components/Process/panel/ButtonsPanel.vue create mode 100644 src/components/Process/panel/PropertiesPanel.vue create mode 100644 src/components/Process/panel/commonPanel.vue create mode 100644 src/components/Process/panel/conditionPanel.vue create mode 100644 src/components/Process/panel/executionListener.vue create mode 100644 src/components/Process/panel/formPanel.vue create mode 100644 src/components/Process/panel/multiInstance.vue create mode 100644 src/components/Process/panel/otherPanel.vue create mode 100644 src/components/Process/panel/taskListener.vue create mode 100644 src/components/Process/panel/taskPanel.vue create mode 100644 src/components/Process/style/flow-viewer.scss create mode 100644 src/components/Process/style/process-panel.scss create mode 100644 src/components/Process/viewer/index.vue create mode 100644 src/components/QRCodeView/index.d.ts create mode 100644 src/components/QRCodeView/index.vue create mode 100644 src/components/RightToolbar/index.vue create mode 100644 src/components/Schema/form.vue create mode 100644 src/components/Schema/index.ts create mode 100644 src/components/Schema/table.vue create mode 100644 src/components/Screenfull/index.vue create mode 100644 src/components/SizeSelect/index.vue create mode 100644 src/components/SvgIcon/index.vue create mode 100644 src/components/TransitionVisible/index.vue create mode 100644 src/components/TreeSelect/index.vue create mode 100644 src/components/UploadComponents/ChunkUpload/TaskQueue.ts create mode 100644 src/components/UploadComponents/ChunkUpload/index.ts create mode 100644 src/components/UploadComponents/ChunkUpload/index.vue create mode 100644 src/components/UploadComponents/FileUpload/index.vue create mode 100644 src/components/UploadComponents/ImageUpload/index.vue create mode 100644 src/components/flow/ElInputTag/index.vue create mode 100644 src/components/flow/Expression/index.vue create mode 100644 src/components/flow/Role/index.vue create mode 100644 src/components/flow/User/index.vue create mode 100644 src/components/iFrame/index.vue create mode 100644 src/components/index.ts create mode 100644 src/components/inputValueUnit/index.vue create mode 100644 src/directive/common/copyText.ts create mode 100644 src/directive/common/focus.ts create mode 100644 src/directive/common/full.ts create mode 100644 src/directive/index.ts create mode 100644 src/directive/permission/hasPermi.ts create mode 100644 src/directive/permission/hasRole.ts create mode 100644 src/entity/pay/PayInvoice.ts create mode 100644 src/entity/pay/PayOrder.ts create mode 100644 src/env.d.ts create mode 100644 src/hook/index.ts create mode 100644 src/layout/components/AppMain.vue create mode 100644 src/layout/components/Copyright/index.vue create mode 100644 src/layout/components/IframeToggle/index.vue create mode 100644 src/layout/components/InnerLink/index.vue create mode 100644 src/layout/components/Navbar/Breadcrumb.vue create mode 100644 src/layout/components/Navbar/RuoYi/Doc/index.vue create mode 100644 src/layout/components/Navbar/RuoYi/Git/gitee.vue create mode 100644 src/layout/components/Navbar/RuoYi/Git/github.vue create mode 100644 src/layout/components/Navbar/TopNav.vue create mode 100644 src/layout/components/Navbar/index.vue create mode 100644 src/layout/components/Settings/index.vue create mode 100644 src/layout/components/Sidebar/Link.vue create mode 100644 src/layout/components/Sidebar/Logo.vue create mode 100644 src/layout/components/Sidebar/SidebarItem.vue create mode 100644 src/layout/components/Sidebar/index.vue create mode 100644 src/layout/components/TagsView/ScrollPane.vue create mode 100644 src/layout/components/TagsView/index.vue create mode 100644 src/layout/components/index.ts create mode 100644 src/layout/index.vue create mode 100644 src/main.ts create mode 100644 src/plugins/auth.ts create mode 100644 src/plugins/bus.ts create mode 100644 src/plugins/cache.ts create mode 100644 src/plugins/download.ts create mode 100644 src/plugins/index.ts create mode 100644 src/plugins/modal.ts create mode 100644 src/plugins/socketclient.ts create mode 100644 src/plugins/tab.ts create mode 100644 src/router/guards/afterEach.ts create mode 100644 src/router/guards/beforeEach.ts create mode 100644 src/router/index.ts create mode 100644 src/router/routes/asyncRoutes.ts create mode 100644 src/router/routes/staticRoutes.ts create mode 100644 src/router/routesAlias.ts create mode 100644 src/router/utils/utils.ts create mode 100644 src/settings.ts create mode 100644 src/store/index.ts create mode 100644 src/store/modules/app.ts create mode 100644 src/store/modules/dict.ts create mode 100644 src/store/modules/permission.ts create mode 100644 src/store/modules/settings.ts create mode 100644 src/store/modules/tagsView.ts create mode 100644 src/store/modules/user.ts create mode 100644 src/types/Message.ts create mode 100644 src/types/dict.ts create mode 100644 src/types/request.ts create mode 100644 src/types/route.ts create mode 100644 src/types/user.ts create mode 100644 src/utils/StrUtil.ts create mode 100644 src/utils/auth.ts create mode 100644 src/utils/dict.ts create mode 100644 src/utils/drag.ts create mode 100644 src/utils/dynamicTitle.ts create mode 100644 src/utils/errorCode.ts create mode 100644 src/utils/index.js create mode 100644 src/utils/jsencrypt.ts create mode 100644 src/utils/permission.ts create mode 100644 src/utils/request.ts create mode 100644 src/utils/ruoyi.js create mode 100644 src/utils/scroll-to.ts create mode 100644 src/utils/theme.ts create mode 100644 src/utils/validate.ts create mode 100644 src/views/auth/index.vue create mode 100644 src/views/auth/login.vue create mode 100644 src/views/auth/oauth.vue create mode 100644 src/views/auth/register.vue create mode 100644 src/views/error/401.vue create mode 100644 src/views/error/404.vue create mode 100644 src/views/flowable/definition/index.vue create mode 100644 src/views/flowable/definition/model.vue create mode 100644 src/views/flowable/expression/index.vue create mode 100644 src/views/flowable/listener/index.vue create mode 100644 src/views/flowable/task/finished/detail/index.vue create mode 100644 src/views/flowable/task/finished/index.vue create mode 100644 src/views/flowable/task/myProcess/detail/index.vue create mode 100644 src/views/flowable/task/myProcess/index.vue create mode 100644 src/views/flowable/task/myProcess/send/index.vue create mode 100644 src/views/flowable/task/todo/detail/index.vue create mode 100644 src/views/flowable/task/todo/index.vue create mode 100644 src/views/form/data/index.vue create mode 100644 src/views/form/template/index.vue create mode 100644 src/views/index.vue create mode 100644 src/views/modelMessage/messageSystem/components/addMessage.vue create mode 100644 src/views/modelMessage/messageSystem/components/recipientSelector.vue create mode 100644 src/views/modelMessage/messageSystem/index.vue create mode 100644 src/views/modelMessage/template/components/TemplateFormDialog.vue create mode 100644 src/views/modelMessage/template/index.vue create mode 100644 src/views/modelMessage/variable/components/VariableFormDialog.vue create mode 100644 src/views/modelMessage/variable/index.vue create mode 100644 src/views/monitor/cache/index.vue create mode 100644 src/views/monitor/cache/list.vue create mode 100644 src/views/monitor/druid/index.vue create mode 100644 src/views/monitor/job/index.vue create mode 100644 src/views/monitor/job/log.vue create mode 100644 src/views/monitor/logininfor/index.vue create mode 100644 src/views/monitor/online/index.vue create mode 100644 src/views/monitor/operlog/index.vue create mode 100644 src/views/monitor/server/index.vue create mode 100644 src/views/ngtools/FlowCal/index.vue create mode 100644 src/views/ngtools/components/index.vue create mode 100644 src/views/ngtools/meterpar/index.vue create mode 100644 src/views/ngtools/meterresult/index.vue create mode 100644 src/views/ngtools/ngpar/index.vue create mode 100644 src/views/online/db/index.vue create mode 100644 src/views/online/mb/index.vue create mode 100644 src/views/online/mb/mybatis-input.vue create mode 100644 src/views/online/mb/online-preview.vue create mode 100644 src/views/pay/invoice/index.vue create mode 100644 src/views/pay/order/index.vue create mode 100644 src/views/pay/paytest/index.vue create mode 100644 src/views/redirect/index.vue create mode 100644 src/views/system/config/index.vue create mode 100644 src/views/system/convert/index.vue create mode 100644 src/views/system/dept/index.vue create mode 100644 src/views/system/dict/data.vue create mode 100644 src/views/system/dict/index.vue create mode 100644 src/views/system/file/index.vue create mode 100644 src/views/system/menu/index.vue create mode 100644 src/views/system/notice/index.vue create mode 100644 src/views/system/oauth/index.vue create mode 100644 src/views/system/post/index.vue create mode 100644 src/views/system/role/authUser.vue create mode 100644 src/views/system/role/index.vue create mode 100644 src/views/system/role/selectUser.vue create mode 100644 src/views/system/user/authRole.vue create mode 100644 src/views/system/user/index.vue create mode 100644 src/views/system/user/profile/index.vue create mode 100644 src/views/system/user/profile/resetEmail.vue create mode 100644 src/views/system/user/profile/resetPhone.vue create mode 100644 src/views/system/user/profile/resetPwd.vue create mode 100644 src/views/system/user/profile/userAvatar.vue create mode 100644 src/views/system/user/profile/userInfo.vue create mode 100644 src/views/three/ModelPanel.vue create mode 100644 src/views/three/OperatePanel.vue create mode 100644 src/views/three/Panel.vue create mode 100644 src/views/three/SelectedPanel.vue create mode 100644 src/views/three/ThreePanel.vue create mode 100644 src/views/three/director.ts create mode 100644 src/views/three/gltfmode.vue create mode 100644 src/views/three/three-plus/CapsControls.ts create mode 100644 src/views/three/three-plus/ExplodeControls.ts create mode 100644 src/views/three/three-plus/SelectControls.ts create mode 100644 src/views/three/three-plus/ThreeHelper.ts create mode 100644 src/views/three/three-plus/glsl/CapsControls/fragment.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/fragmentClipping.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/fragmentClippingFront.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/invisibleFragmentShader.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/invisibleVertexShader.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/vertex.glsl create mode 100644 src/views/three/three-plus/glsl/CapsControls/vertexClipping.glsl create mode 100644 src/views/three/three-plus/utils.ts create mode 100644 src/views/tool/build/index.vue create mode 100644 src/views/tool/gen/components/createTable.vue create mode 100644 src/views/tool/gen/components/importTable.vue create mode 100644 src/views/tool/gen/edit/basicInfoForm.vue create mode 100644 src/views/tool/gen/edit/editTableForm.vue create mode 100644 src/views/tool/gen/edit/genInfoForm.vue create mode 100644 src/views/tool/gen/edit/index.ts create mode 100644 src/views/tool/gen/edit/index.vue create mode 100644 src/views/tool/gen/edit/joinTableForm.vue create mode 100644 src/views/tool/gen/index.vue create mode 100644 src/views/tool/swagger/index.vue create mode 100644 src/views/websocket.vue create mode 100644 tsconfig.json create mode 100644 vite.config.js create mode 100644 vite/plugins/auto-import.js create mode 100644 vite/plugins/compression.js create mode 100644 vite/plugins/index.js create mode 100644 vite/plugins/setup-extend.js create mode 100644 vite/plugins/svg-icon.js diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..edc18e6 --- /dev/null +++ b/.env.development @@ -0,0 +1,11 @@ +# 页面标题 +VITE_APP_TITLE = 若依Geek管理系统 + +# 开发环境配置 +VITE_APP_ENV = 'development' + +# 若依Geek管理系统/开发环境 +VITE_APP_BASE_API = '/dev-api' + +# 路由基础路径 +VITE_BASE_ROUTER = / diff --git a/.env.production b/.env.production new file mode 100644 index 0000000..f914044 --- /dev/null +++ b/.env.production @@ -0,0 +1,14 @@ +# 页面标题 +VITE_APP_TITLE = 若依Geek管理系统 + +# 生产环境配置 +VITE_APP_ENV = 'production' + +# 若依Geek管理系统/生产环境 +VITE_APP_BASE_API = '/prod-api' + +# 是否在打包时开启压缩,支持 gzip 和 brotli +VITE_BUILD_COMPRESS = gzip + +# 路由基础路径 +VITE_BASE_ROUTER = / \ No newline at end of file diff --git a/.env.staging b/.env.staging new file mode 100644 index 0000000..02ee95a --- /dev/null +++ b/.env.staging @@ -0,0 +1,14 @@ +# 页面标题 +VITE_APP_TITLE = 若依Geek管理系统 + +# 生产环境配置 +VITE_APP_ENV = 'staging' + +# 若依Geek管理系统/生产环境 +VITE_APP_BASE_API = '/stage-api' + +# 是否在打包时开启压缩,支持 gzip 和 brotli +VITE_BUILD_COMPRESS = gzip + +# 路由基础路径 +VITE_BASE_ROUTER = / \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6851624 --- /dev/null +++ b/.gitignore @@ -0,0 +1,23 @@ +.DS_Store +node_modules/ +dist/ +npm-debug.log* +yarn-debug.log* +yarn-error.log* +**/*.log + +tests/**/coverage/ +tests/e2e/reports +selenium-debug.log + +# Editor directories and files +.idea +*.suo +*.ntvs* +*.njsproj +*.sln +*.local + +package-lock.json +pnpm-lock.yaml +yarn.lock diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..7beedf0 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,32 @@ +{ + // 使用 IntelliSense 了解相关属性。 + // 悬停以查看现有属性的描述。 + // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387 + "version": "0.2.0", + "configurations": [ + { + "name": "DEV", + "request": "launch", + "runtimeArgs": ["run", "dev"], + "runtimeExecutable": "npm", + "skipFiles": ["/**"], + "type": "node" + }, + { + "name": "Debug Edge", + "request": "launch", + "type": "msedge", + "url": "http://localhost:80", + "webRoot": "${workspaceFolder}" + } + ], + "compounds": [ + { + "name": "Debug All", + "configurations": ["DEV", "Debug Edge"], + "presentation": { + "order": 1 + } + } + ] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..3513d29 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,12 @@ +{ + "files.encoding": "utf8", + "search.exclude": { + "node_modules": true, + "lib": true, + "dist": true, + "public/draco": true + }, + "files.autoGuessEncoding": false, + "editor.tabSize": 2, + "editor.formatOnSave": true +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..0d9552b --- /dev/null +++ b/LICENSE @@ -0,0 +1,6 @@ +MIT 许可证 +本产品所使用的核心代码基于开源项目 RuoYi-Geek(MIT 协议)开发,原项目版权归 RuoYi-Geek 所有。 +版权所有 (c) 2024 Dftre +特此授予任何获得本软件及相关文档文件(以下简称 “软件”)副本的人,免费使用、复制、修改、合并、发布、分发、再许可和 / 或出售本软件副本的权利,前提是遵守以下条件: +上述版权声明和本许可声明应包含在本软件的所有副本或主要部分中。 +本软件按 “现状” 提供,不提供任何形式的担保,无论是明示的还是默示的,包括但不限于适销性担保、特定用途适用性担保和非侵权担保。在任何情况下,作者或版权持有人均不对任何索赔、损害赔偿或其他责任承担责任,无论是因合同、侵权行为或其他与软件使用或其他交易相关的原因而产生的。 \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a0ca56e --- /dev/null +++ b/README.md @@ -0,0 +1,132 @@ +

+ + logo + + + + + logo + +

+

RuoYi-Geek v3.8.7.3.2

+

基于SpringBoot3+Vue3前后端分离的Java快速开发框架

+

+ +

+ +# 当前版本是3.8.7.3 + +本人的其他两个推荐搭配的项目 + +1. [RuoYi-App-Geek: 这是若依极客生态的小程序版本 (gitee.com)](https://gitee.com/geek-xd/geek-uniapp-vue3-uview-plus-uchart) +2. [RuoYi-SpringBoot3-Geek: 这是若依极客生态的SpringBoot3版本 (gitee.com)](https://gitee.com/geek-xd/ruoyi-spring-boot3-geek.git) + +与本项目同为一个作者开发,兼容性最好,学习成本最低 + +## 前端运行 + +```bash +# 克隆项目 +git clone https://gitee.com/geek-xd/ruoyi-geek-vue3.git + +# 进入项目目录 +cd RuoYi-Vue3 + +# 安装依赖 +yarn --registry=https://registry.npmmirror.com + +# 启动服务 +yarn dev + +# 构建测试环境 yarn build:stage +# 构建生产环境 yarn build:prod +# 前端访问地址 http://localhost:80 +``` + +## Electron + +electron项目已经迁移至: + +https://gitee.com/geek-xd/ruoyi-geek-electron.git + +## 内置功能 + +1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。 +2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。 +3. 岗位管理:配置系统用户所属担任职务。 +4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。 +5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。 +6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。 +7. 参数管理:对系统动态配置常用参数。 +8. 通知公告:系统通知公告信息发布维护。 +9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。 +10. 登录日志:系统登录日志记录查询包含登录异常。 +11. 在线用户:当前系统中活跃用户状态监控。 +12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。 +13. 代码生成:前后端代码的生成(java、html、xml、sql)支持CRUD下载 。 +14. 系统接口:根据业务代码自动生成相关的api接口文档。 +15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。 +16. 缓存监控:对系统的缓存信息查询,命令统计等。 +17. 在线构建器:拖动表单元素生成相应的HTML代码。 +18. 连接池监视:监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。 + +### 新加功能和增强功能演示 + + + + + + + + + + + + + + + + + + +
+ +### 原有功能演示 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +# 联系我们: + +QQ交流群:744785891 diff --git a/bin/build.bat b/bin/build.bat new file mode 100644 index 0000000..ecbb454 --- /dev/null +++ b/bin/build.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] Weḅdistļ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn build:prod + +pause \ No newline at end of file diff --git a/bin/package.bat b/bin/package.bat new file mode 100644 index 0000000..f5b24e0 --- /dev/null +++ b/bin/package.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] װWeḅnode_modulesļ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn --registry=https://registry.npmmirror.com + +pause \ No newline at end of file diff --git a/bin/run-web.bat b/bin/run-web.bat new file mode 100644 index 0000000..d2fe397 --- /dev/null +++ b/bin/run-web.bat @@ -0,0 +1,12 @@ +@echo off +echo. +echo [Ϣ] ʹ Vite Web ̡ +echo. + +%~d0 +cd %~dp0 + +cd .. +yarn dev + +pause \ No newline at end of file diff --git a/doc/image/code-edit.png b/doc/image/code-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..bea60145e5ffba9675f41ec2208150fef16dd20a GIT binary patch literal 87601 zcmeFZcT`i`yESY>R0Kq%ND&nUq$9mXR6s#MdItp|KNcF&6|C9ZFF>W{QVohGo72|dR04#Uu9ioWnpDWWl41spR#Wm z!?~5z=hf#WIA6H-=*-!Fz5Qu!_mz9;3lt654Z5}_oe;qYd^ zeS39v^}5BdKBlvhXB(%?{SjqlE$_1GPdIKyyghU7((OOr-XgytAs9YBJ_rQD%EFTK zvH+{N~Va&O37K;2#|5%|Bru2qB3pvTc1Eev=R~$mg=G~m);k=opLI# z*HSyYN(NDk)BigXkIuZ?pwiXXR~~{%%ZcjQtSfzUsx`pit|__)KH)^2Un7ApaQ^F2 z|9bqv>_?uS>bh1|xk(*SdY9g3zr6$-`&$23h}tuuUjHfVk8a;Shm^$UOiWCC7uEtE z$%jrj*k)Vq5ijigj!4_>f5#NKks+0s#8lYMbxh@zcUw1Z+t!fYf&X*h6tCa5r9nMQ zF!HAd!i_<4_3MgJuIvWCru)}m-aTWmwXegDzho^kU<$_HwLM@otP+%?xCDE$72EdU z-%0cC$2A~3S_1M`M^k2kqyyJ>u+%fV>JxW{ z3;nYcQoC{nFl``E~D^v{R>vE;tza;4(g(8oO{A)=ZIDN~L)=cqt~(#pUk5()`iw z7ZidCdKogilhfywYU(+hdwznv=GIaygfeA_YQs3%0kuozV7bKHPZ=rJR255OUe+?wj?pa<5|qiOpOiqt@-mhI?0Y7@bvgb$egk3Kbu zw6MvEF_-%6dg2^1zZ`{oA?szeUI{DLz?j#&;`JdXsKrS7mips`q^LWrydNElPLICr zPvlF)Djs^+{v@<(zRi;E;NVE3`S;Se#PqJ=cw&k&+Gd^S=%BHkvZl#m=dfuejO@4C zSiM=>(z@I$ZP2T+iEBEZ^c)dgR%rGmjWkN$yETK{S<9v_pmi8;mA0EcjVB)tkj23R zrK_tYvu@4VnP8WYr5dkAzbBC68RsUL$^Ofa^KBm8x7SayuXfJ_70J5Q&l1*pC`ZQj zyADUqF!rev=VDzY^kj>BAh3mO7D#aqJ2G;Icf>7x1)0O69_eJ|voV+pF@_a4n`@cD zS0|-tcos3cUU`72+Je!67b2tX4telH;y1 z1kS`nXcG3#O`pp10*StT1`S=w?W4c)UW~J2}eg4Ffz%wHx zSG)P_Z@RSn;vT$-q`9y2+@hqiOyYgaE$MO25gvH4+N7uJ&T1xyhTPHj;2ernRNi`n zp~r^bZ*Hq{7l;0zskOJ2aOv-hYV;rv!!*+`x4p3J?&zHeVmvpk-5S&&EGU0B|FIGi&S zo+0T)EG9(L`0n)$HCaSED3A|NQD3@SrGtivvGvTE+uK3ffh1IT0>7l>khC%rWz9XE6Ps~qx~#(>Z`TY98~xP zWA*oQI*Y4kfr&nu@xlzw%)p`16S{W=?;R^(R6X%I@?kk^su5xOv?47h1&Q{AMo47k zb2H&D$FTIuxf`|qGrKj79}hS(q~tx9Gp_3-xaqCZ^Pa4Ua!FMxyw*v#3&dD>3D^cL z#Hwu6&07#pZ;37;e;oZ>=KTZtzngtCpM92WFKYea?g$PR$JA3&B1_Q0#$!;VUQkMl z+DBZVIH!2L=<`X>?b(hH^VShBv#Zz_PdoUX)W7Sd9$CMAmexsqLRUdC(jBsN%^iuEN4LP1mOzDUq`=4IYl1}>A!f+O#X?} za#sIzaynvHgRRjaOEGOdKgc*6u9*&Gr4>ZO96VEamIgLCnUJ4&;HfnBVHr=#$?HQo z7Rk9(X4e$;>wY!Wn>ofYy3bsV6>lYYj`f?E;WM)JMARM>o7k*cH=B6wu6%fso3okf zF)06A?n}TV$H%BiJ$#G4-e^P5yF4-a!i-PAbj%S$ZD~7KJ2&=wrkzw+2b&_f=ajAIZ(UR%p;EZ)6lh`H}<4ts`hS zULJJNcj2G)APaTnMy8C_`_CrsJ2guS>r>t?W3a27el$ktwPz`io+Nc4q0^NaXVOt% z#ip*E-V_y8Sd(&JR}T~8jRgHM3V*IH_;wS8@|kquF~-qhoB3usS*~e!mXF`211T5f zBlqu^T%#BOptw!Js;z}{1<&Yg4g#--y~pi~N(M=|lT?0gzEH2|hoy*t(O;iCM}+$m z;I-x)tcN=lU=Ga;N&HmGh=S44YlpS)@-7;aCYKE~wHgBRVyeP2K-KLOW_?*LvCpE_ z&c9+A7c%cnu)6n6(cMbzWWq|)i|ps_5j7D{!1gC_uc`OL&4<4O#U0~iDqftt_(2m| z=w!cQtb_=-E6<%EBW;KrD8v$Ut6{ZE1yR3wG7_((l`}*%mOz2YnxWN9OV9So9FK>I zEo_|C8X}TyWwiw~3&ML_LY5kc^BZd%p5PtYRSNsDwnKibW+uVudtV8A^g+zsgwr#uCx`Uylr~OD? z{h+z0&voopdBBVNo1`o~<(VQT%aX<6c^x5qx919~jG|xu$Q_b)tbP3ZEP|F=K7Y2LWh(@3{_si!`d~oX6wz>;Okc7nOAV;61DLQj?&ew)nns| zCWSb1f>)Ll4i9RT(L>*js+z9<&AsfDuj4_;^J{3*nV4OrD4tIWgg$Fg-p`X;4$hGy zouGW#k{!U5*d^teGpT>=Zi&h4^`{bYT}ofI?I1{zfY-LwL-l!F%WSlxgC; zm4y-Ffi;af{_2S52QJ$db9bxxn(|slLI6IA3Iiv-!XL+H9y&_F$XFDmWafiod+0_% zw^sqVS$Mvn8BaE^+XyXBV(05Sn#Ef$hqWlQa1((FF-J`4_9{Q=Zi}3h5bQTfN^Y?q z=!(#+-Nd;!=c7HO>2`-N!RYh7HoVWgy9)GV3E`MjFr%rNf2qxuU-w{N50MEU8DDRv z<%F!UaJEIx*p@lkLmccZ_O1G3BA0TOz!C>$FAlW3WX~M8>*Sw^@2-VWP26YZlMM2V6$H z(6RmL7llFF-#A@Z97D`Y^UE_?_4SM2`rehj!HRkx92GXCZ4Wn#9{P2}2i=SA{9xhy zKn^dGHTlxsYmM$}F~roUqOvu~&?r*BdCiV3NAOhl72Q|;4RViYF`5Pw@(ND~hm%Z; z8kURh+SPO|+P@`t5P#i0iCB&IF1si|CGVxKw~*_{*KTLQ?C36-1qP1v!B@MIht5+$a0xiD+pf)>zE<7 z8N=A=TfJu#MSlL8x^2N3%4JL1?kFOt8GxNk5hCJutX7T$@JR_bm@?$H7K_^JlLpvi zj{2FnX|2h1vbnaH)%nJeFxofi@=e6?8MK)Ua@l!OKTWQJ@GUCO-(5kz${qWKcBaRe zc^CWra!Jdx)W)q5j_AxCPcsr+Xv!%(ntgZWbt}1qti4e>F0w7^rbc9)5eQuwy#wI( zQ#5~T9P#Fz7)AFfc+El}rUhtZknDOP!|ZXp<>*y*VdKg8o`%F~D@pT#q5vl~>i}~- zQhh_OxBy3xH&Mt!Um-19;rv$Ye$*^hPnukJ^OKv6{1C%b7zgpR?p9Nnp*|Vxn46dw zCZ|gc^IoCk4b#@S#&=9dJ0s}rC~?3uBPGGxK#qx=zLjKPAUrovkl9oBY7J+oE$mci zTQ2g;`w6|y6vA%CWGZ9{MzlY>pME*DLx&{CB4{#Z*&AC49t<$BEIyX|re5j2A01}& z6**zJ_ZF9HL@_i_raYW;f;iX%31pLqg&w&LSkIr_i6wSB99;v`$qHr=WcK}mRjEqv zgXl0X#*dJQ!_KAD?|xRv8vGstwi+h28+0=ktr;Na)7wNp(&@%``L5m#p(CRL2VO6I zl)r1c+Ieu`@*#Ju*cgIhvW2wjQeWM*rv8v zY&5jCoS?ecS6o0RRx44PEKxLDSK@#*^5frA-NAwH8~B=B=x4N59^BMJ%}invygx0T zygU1Ms-ES2=~DsuXItJ1i2mu}#{qp#*u|Bt#e^bP<-q_Tahph#0q!gJtuhuUv4VXYY!>CwnSQ-l{pk^;@8z4ubn2amb~sbS;YT|6?x@d6 zRE3de{5BPqMOhc^OlWU?gJ)lciApRA5(A#-4@9AuxPjWc5N0IA?{m0#Q*_#QrE@md zoMn5Jk24emS|h}wns#=6cyqPZd;APWDV%tmnmFGZ@L6t7(Mc3Y0d0n)j7&$JY^5(V zqI~QR-e)^ElfHL6*c32svDvM0ZcrIo$*T7+pz4HfQa-dL?XSYMCQE{j;6X0Romn2; z-b|~;)f&C)VX%j-i6simgSN5Tzd!bja*FHi!)GjtHBTqU>e!<`P?n{8iHVEVdgdnA zBjjPoQXO54{ktMQ+cN2gD+=OQ*(F_{>h6t;HG8}4m+f^9L>P*Fc-EI>?CwK+rgtN+ zQkZZEaI0G{Oq-Cm!4SW-kn=e?l-;X=nF6({itfE1I-iVvpY2o*y&`TK_0}j=M%yn=Lw)>A&FylB zb%R{|Vg7z)X@+Iy$n8MX&b&a_-LkuWE)M2J60=nPJHslc(Eu;FoVusX*1{}nI)lve z^`6ZTu`=J?cRaniDTs6LW+%%m6AvTB6%D0?M|c(VOELnzQOxPCL($O@RaO>`CzFTP zL2D20+B7$yeJhu6Mp4$C$xANiByAN%g#WvWZAod*b0muXAoG=?oH4(ZN(ntrQi?^r zc#p8>n2UKVn^;mtPki>Mh(NHL!D}DvVQ8Opl^xIgccXubNcYZaIoLjZpFv){f5k=} zo3rdRWi+CzXLs)hn7o+T0Yw-Hq=SzIGf5vSO$d}D4erVo-5YZDlEF6NjD5<3r!I4C zx8<1!5rR^$i~D~BEDJn~&4s!~N5EUk%1-djToZF^jLz8`nFbLqI~?Gqpzyy^(;z6e zes7nWk5P!cG)AW+0-fF+)_JaZx{|GudF<>xe~VMCG-{CxW+W_C0;$i|8W${=M9bmaj0-DDA6WY z$UgFm1=f5$>?=gFc^I^su~;xBUs}8RUm31>^<~N1$ao{I8{)RNDt*>-W=g1|0)sRy zO1$1gx#^3g2HPM7s?cU{Ixg)iLNA|pmNfnlp|`&vW4pXBmT*H5s=EFnaORsG#r+%x zWwkM`{k9NIO&K00E`xLhE#si|$Ez;zAOe$;-2_PE#%ISkYR@>8iNCw}tBr>PxFfpAHQpGq@a zXGd-iz_kY*w63g6-+=s`?Ph6SKH7yM!{4h3T2k{5?Za8kF7NC~j*{v8@E5Hj4?loN zN#6z(BWhmlO4EsXGjp)AOK_Ewq?twkQaVPd0a}@%h2U?n|FJBtgxbmfCP=yII5;cU z-PP$I1Z^6`j@}nj+}#m+2r@~n7ZN1(^rbB7Oh3r9J~( z+8K2}zXiTcXp@`(-y!isrl5I(h=1Gl$)@-tZ<~SS^wXia(FdYS5t+$b-+vFq6{wTn zU<=ASH8bR$hkC?W1I$T7nvpQq%3o{Vvz60Wnf4#?=|!#qrH+X#^7t9PsN&hrw**Uo zPOqvmq~UfaR)IUefDJ7RkUUP~a*u;_`U;?lLk6~Qvx*ocK%&R4_P9j+C@XdLy4WuX zo0w}YduX2$`9X0dDnZ5G7>KD5RSqjAzt7 zc?2wIn+>0k$=&YDzhiF|3gFyl!m6V2wE)zPIxAA6pxfzSzOfL4Mvn%R@aeKfjiFjf-)IIdrPzYOcgA&p# z-q%)Wz3&PDadgat+l#>OtD)r}gJSD$rF<18zszKlow5OSd9-OwfGxC0|Jpj~8b~z! zy)#f!UJkD{JW7}vD|#ZM+VUdtA6cun5pR2ReqFBRwQ4geBO zf+jTA27hthq*Uy{;dEX5Tfx1IokIY8(^b~dA*|{W!F$gh)dv}6`~--2=jO#1wGIHW zukSKaxM!Itud`I?x_yTRrZXa0ZuZ5`M%N*sUw`{x62r(}0V1CkXwtTBwzQG)8RUSC zJQ2<4077=Qh&z*@zx&P}t&X-urdS|pSWgW!v(=M&d9#^36x^AaS9&x@B!m|<$u37e zAF;XD?+;O(v#|UKIvUIkn&P4pEYbU!WAJhM4fduWL>`vjYkbGO_qEnn{;HLB<4Aj!eC^bu zF8T^;WEWGjTA>&n=3UO&v|O0n7{0qg+1;g~7Vv9;q~*=U;_K=elyi{wjqb@u5bFE-zg%i9|z=@>t+GP%L`p~C#Sy(e_jw`_OhWmrZ3>#|IF7_ol1he%P-gM&RR zq2EoUGT0y&^PmWOk5Nu{CKml8tOC~jSYNW`Wb_sWq8-!cP1vj>`p*4*cWuw;?9kP= zySX=>R~I!%RG22sFxz!>yA7HmJVQ<`cHN?v5ab*X5}<**MJw|)_OuX@xM|V+->I<(PR)A*Cp2twglN%41{#s}L0vJF$qx48*v$f! z$g(ui0$$(gF$TW1@}??}4z+0FVm+A%r6kU@L0h~BV@@~-YPk0g;tD3sKeK{o}nP?4W9j2io@Wc>j7_h6LOHU_{+v}2(HRpzmckg!6&#`DB0kg$z9_ z!*R6`j`eQ)0fic-OUdTm=5{7;_ZqYQhH**W7s<02rX;=I`UE$=UB&>B<@Q=0dD10h z9PpCr5bveHFa_d$-I~KwmSxnEQzqywZF@lE|E99Qk@^;N^(8AVM+i}*fn8tB+Zz(f zvp^Rt*F3ja*{;l~5g;}E;<$yES1{^JsJUfVK3X%L@<8_dh>lYJEfy!*!8naktwCIK zm`!W>C~*Y}izvw-r&i6Z;7~-A_nCp?+pTkLjA&tFG4h)yIw?-+xl=ZCyCl`7wUEE> zFvkkKs(y7aF^lmbr4Ci!VP=W4{%IbvL`6$F>=jbrYGF_kq3G|AR6m>9w=f1e0jiyC z72Q|#%@*U=eI_w;;%^W1&a%7QEkEy7!xxNEJT_6X$-=GLqY z-1^>Yb$uGypB5*#v*`NSU16fi>Tn|vmeX)yrL%(kX(x79;lP(r z#=C^J!MKfI=m)6z=?ZGzmvEK}mTEGIAriadQhA|uy4<%e)*U`>F4T8|7zEYfq{K!{ zN96+47M;iX!*Z&tk>o8CV%A<*=tH*UatY66ySJ)3b`y1NeygkVioQ;?-6K!b52eO$ zWQS!i=LcJAt(@vc;Svlv`msBYOT5t;pASz68zRWc+$U%$z9!~R(tYoxj^Txk<;t*&k>}r9P{ZVRRpk}X*44s$ z@%pC_Ke0^GCpr1V{gjyF@wSG<`uWFp%U5Mx^D^2hWhgnRBzVL3FGEhC&Ox|LB{7GH zEc{I_4dqI64vWH7bl^i zsloHwtB`0mF^c|tK<4Q)GAB&-YF_lBu@vL94SKB@n@M}#w1QwNY;$)`8Wmf+wBQ@K zX3k_x??W>^%Q95gzGo6TrvrZM?j_QkK@CIfUP&w`x(#*rN<^`^-(JE7&U0I%Qd)ua zFW~!pjWw=YBaJjXUVDqwi-?xn#+`@y?T{7r#>p&4nY18A(SXsC@@UN?hxPo@G&2*g zH5Mk&>w{1ZjdbbdpRYMdR)g)d)Hjd2-g^hkh6gdZSy`{Y3)+B-rV(Lz=$p;?IarLR zXPv^UzqY8geOgG{FS;ec_^ypYmiP@r@*&KkeA@UlaKEQre7V?ZF|FZdoL-Uq^@=$_ z#92o0h4-*H+Xad`P1~n7;3oje-7Br93n6?#ytxcYC8I4u5;H`PiN1Y@DgQTXy!K9Z#R~5C#w6w>a#wvPNL>)) z4^_FvI9JPq5P+APl0q6v11;iYP4RhiPewE$c2#OcE00&7iO-OUb?J*`S=cO$h75R( zgPT!|H;3V8U|jVQ3iwt_7&;rYoJ$coFH=8=3|pdsJ_~LNAv5%M&72VgH+gKn#ZtBa zLipQvhcrHRA=|&T@kPfYHHIvTt8}H^>3(By5&FukymtHWs|IfN9r^u!d;F25w-zVb zL@^r&umRH|@F1>uz=(D*(sz|=`T%46>CI|ra@i<&a7|yv@#`c@zWKn~?zj_u3fE7y zziX10RL;HrKbqVk#|PDLCF$)zS?tX?++Eywn^Pq+!`E5 z-!duXgcmw7Gc58>bL6@clFBXU1}T(-?6U$+^*;4HUR#Jx49JLY^68)wlBe5U^O!t| z28pggXHGZ{se|62DSx(+5&8QX5!8&{#19DC3sWURQI zK0gu^%cbZ3W;oEk#(y&R@`#T2(gMR*!50C)1O?WcA*XXz15fMxl5F)(_v#{o)8H%f zmZLAwgaA3EO57@=7@q()SCM*5+|DA)YXN{A>qUQzj4(l}4TRQGY{cu;wX*(I;!X3^cJEkK}^JNSj-HKFa#Qcxfl@Hg(;7jN9D;sHy{+2mH&1G#NG z$IlqNckhwN&Fuh?PC%2r`o{-d46)UA)@K5r1_P!Dz+Rw!e=OhoSw*ALp~GOn=>oPh z)4I>R!b52y{{tVog}6bfV}r_+vKrV*nmMX%+=L$FVLnDioj^(J8=&qc;om5c^2p2v zUI9D;nJVEh(0jZ(`87IGqcTuxWBq1%tGMqTew$M{()ZxQ(0TH1+w+m@;Zd1;fxT(8 zd*SS&5dWgl@cK@yyHS4@XtHvOkwZ3L5=d~_?mdlzz~+INdw{;a4zH=*Ex9#iNT{{I zFWt~jFSYfvj6;}pZ3!e`R!x+QdAz&o#wJMaz9a6bW2(ylbv7$;b{v_IIZ5I(UcV1B zlgiZbu05!hna}i|Vq%zTCGSu1I@>;7@uY5ALTU@kfmfO9Uz|tH&78~f~Neg2DgwGZ4 zAtDqkI}2-)*ri-jMM=kJLZu7>zhv`$^StpQlXI~*inv>FKhixAf)Z{D?6`!1eIFF?A(+bp|P&5R1R`Ii-e{FfDh23janA7a7K zKQOoWE>~2rVL4UV8sAARMBU`QWX@p{Idy6{D5~$t!)YdN{M^=nJ1l)nWr29_;%LM5 zMx}2PESxM7U38ED5+dtq3741rc6n*_@WO+SZkd|iWfLkNs$AEP+pq4w!39FWqh(y3 z6Y)>wt48OZZ1y^|ECkd0E?u$J8>RS&G%&I}5pNO)aVH)c=gyL>w>V65v*%vyyBh4WMJ^mo# z+_F18irqCR>-F>A;N~>HDY-M|dU>-yU5xX=N^ZO~Rnh?Q&0?51>$0F}VSQfUIX4Knu+H!*#7J7fu6 zb1)K>-z~~+<*my&iSKo)ZmNK*!fmHt-fZ2qchpHuW2&h}VkD644Z1?wORWJ$zQ43X z(iD4Ty#ed!0SA*sj}Qqlp9B2>6FH+?HmX|+M+2_|E}x(<-@yVaaQ{IRc$l( z^`R%Nq!TDID)}$}ikUCiq2eYmQ2{{P_rQ{oJ0WBV&_&uZKF5mti!({ye_aemAal}T zHFP)p&<}g(e{9A8+iHJldjR$T6L>sU>kke(`sx2OoCCU%7fRk)i)&Xw!CF0b`s$ru zXs}5yMUL*N;}NYe1@K1jB44+r@8-O9371A@vkPI_S<_!AXs7zJ4!uQc%(cUVQG+>d z1?joY?#!DatH>i%iy?<$j=4C@=Xw^-s1vn9@z7TPMqW#O;Knp0y43sLW@FH<{v?R4 z_RE#>fhqs}H%cRRDpu-NkU)3;K=+f#{F)FZ{0!k>!itrh)>j8s z1uFd|jyo@H=aT1NCa~m20?A4HDc| zrdd-UYuY`(#$C0Q?dPFwJI;_37Ubc^<4k|w_F%U=W9pB{AAfoqd+%a-P)+5Y8(V>rQSu2KzSCiG|*_W?V)ZNJTu7eqHQ128)18`zpu9{qpP+ zE;FWqH7`wBY7U9Ck7K3eeo@Ka5=+AJwf?{TizRJZ9aVylR*Nz-pSMRv}+U;91qZ#1_N$6 zAX~*6BzjYW8yw1A)~38)dN^t%+XGfPYe0W4id2r_diAE;vJHZEP)!Lj9%B32yEa;( zLNY%c`l5F@4f4Ttczfg1cRW8pV>op!;9u>i!njVKK(m6~|KhGw{7dDKZHaEh^ zh*$(({e_q1r3z|JAsw;;5F#IMzMaJ=NUQ2Cm%QP_(>#}u)`NnUDwyko%gdrquf_9S zZ8@XpK0{cTQ~i4@0W4g6Gqtvh{gc zIf{9IbvM_-e~B=}A!P20C~HAIG`8^h6=D-B4j`KVu|%>S>fqc;GJx+ssxgf$+>-bDm{loR5nS8nJ-i3m$$iTqu9wbB*&{*Cq zCJNP-8`d1B6nvy+m2g{Xbk{F6)d_5FK%MjQnN_?DQ)0#r;%v$t)unxifO9svw5I?u z3RQ?(WUkEHSxhTFyi%6I?_B8Y1fl*#f5zYQO3y;D;G;p@EUldE-?{UDt1f~1Sv^`U z-2TJ^+Aior*S_KRt|6gPv;4k2re#~9h08vI67wL?Jj>0VHShr^#iu>#^##5x;b>)3=35de9}bQLKp2Z z>$lr);wbR6Pchp31bz7uj7UfU|HH%af43g9gs9krj+R0w!ol~2GQ^?Vz&0O9d?x`U zFETgVdez^1BZtAxq9r|9Y_ZuF0W#FxGn&|MD(}U>OOCk6_CGsY_?MQEl#;d*ooVaq za=WOf-+Lcjxh8f(utGWgVP^$CKC)os5fC6BIM3uc_XWB39Wep9cAu2aWRbeH7H&m9 zeX>O`m`)S3igHAUF8W#|Ibw}#HeZ^hGz*y!pzC+2VdqmGJY+m~3vj@b$O{PWzssus zH|T@i6f9+W>sbF+zy@V^Q;P8KO7JbH*XSCBTET#Z2C7HB_lFFL7|S{)9++0BlcYJg z7OP)%*8%Y9%kH&{hi7FKbyib_aFWLgZrPL{Z}CW zKaX4%uye7$+Mt%Fw=6i0%4oeFyy?!gmZVxzW`H4(Ls;f+emv85eB&Ag4y^VQ72*Xa zEW>wCthsmD4c|ehWuSv);wGv=2V`!T{2#b{?b9>h&_#v1UP@i)Bc|Y`upXFNUINmS zdVPKU);xu^lE1&dqgi|2a8Fnd3sgbpF{nMu)C+v^!w=&Ugo0>PpudWfYU`TsJ8Hw5 z>erLKRh)VvtY(gP>H8J_5ker2Pm9keB0Rsgqg}55b{H(xyJGN>-!k#R<18BI(y3v< zRmRZbd!r2Yp8a}gP@cSOd&U=$0jgNVSo=yK_-XlP10b(q#J;3h*3=w5kVFIn&Tf6Fis(vPRUtp^{w52awHD&D5 zNoMUpE$Oq(zfSVd@jn`LNMEQBPrD$)DwZh^%>xT6Qgko!FmvQ3}8p+={K{V;oTSrKSYPOB1hSRFx3>DgmFY z^fkbNvg2WYK+&TMQ~*vhc~=@pUAiU~+HSUrW8=JQ+fpTc$JIT>&GzRwcM{tMZr{7w zJ5(Vy<}^|F0h0STz0NRKYy%XF>n-OACO3S`yYmkscj@*k0iXtI#k3!6(Om*ORkoj5 z=o(sj+~(-r1o7oUV4xXyDBbrCIA93$-pypsf1l2Sk#E}j`C5%O1(nt6m06Qhn7w>g zXUQm$9@H0@SDS0f)OZi<9=wb^$p}$M(jeYEb9aT8M&M@2R8)KT*VMwL*0R*(I%)r+ zJ?+T_d3J@SALnrEca;VM7Tr?Zq-BTZh`+pIph7ZxD^C3WbC&Asm#t#@j2BIxcWXI+ z$*t_FoRsRp2ZK(eXgx0WH^xN{1pemL+7jh z<9r=N+%lvuJJ)sz#vmRvhOqI(K70l|*7FB#YlD^T@fGxdY4l@q%M}|l!qRM>B}a4? zVe78JIBzhf!$&7-tx1gYRdbcJqAfF3S3Zr<)C_xr=0by4NVAae7~>h~=kl=``e2hj9ayxSBq)*df6Zg` z=Zhxo&u_m~bPqMkHr`v+`n?)E?UjXjt@>Nmwq*_u1CF40D7O!wsom}%?21?S?PW`- z)My~v4Rw#i-+Iw1N4_1yv+;)<(a1G9Y+Q_G?oWmvYY)urui8|mhCkC8h9a{PgBlYV zl$zhjdwa1OWi9o=lImfT)}wJJ;|sdr;lLmy;sW*Kp)mA^z=lt5wO?q+7< za=nRTzQxj24bdtZ>n&ZJuf(sUL{em8OLBM^Xx!;TuBap|s}dgH$ZLFRU&W6}E-_VG zoN!!Ls$Y#~5Kxzxb35d#(jV4*!ywj}{$t%({=vDq`7mpB-?D?9q2TJ%D)&gZ0PrGM zFW(Y)=00f=8By{O0mPt82E%_?x|M+n%QA8*pUvPZS?pu97|3VSS43!CTes$^F9^jq zDJvnons;!=M*3ni#C}!Du(gH8R-={r;cCs+wKpheZ`H*=!AIflwT3M0tji5XMn)zk zSvH#R(rnSxFl|e&g^4`QwR(C>?J!e5;PWZr3#}`ApZ56W3sSadKgN?Vi~UhOtq>de z*B(snd|y0)6JHE(vy5CJlBJQ5j+Qz8oDD;D4fXw|GPRe0CF+1@FmajxLxJ*vecBI0 zVTqri#k~ws#VOCJ7Wt9iwZtWYJ~nj)L>x5uKQ*q%h;hdX+)m_+@08ZNTV!u?SD^Q^ zq+y?YX`p$jzjTwI%o9{|#Dr&O+wS&@$C2XEj9{`#n5HnA)B3&$yHP>A*za~aItj=`48~7!QO`%IFM51zX zjAUa?j@OJ_ri5gTGNNaH)w>)@^3lo&{;b@YnkhYnml>PS`^FoNsE}5_S^rtdem%Gr zmQ`O-@v@^?VqJ}&iIK7AtO_QP&yB02?u&Ia4(mRc`#>bljZY4P;JSO^9EX^{W{g>V zcFz){SnsTrZLrPZPoJk<#&u1){toGMlqCp>9L<#hf5#6Z`axY;GBEQcw#>kBlM|X; zMne`ulX!$~>_c+EPJ}OaG-m2DY)setr*^Hyc^`b0fJJ;_jepUJxyQK9ix!O2ZlVLN z&@f8?o?%;oR>XSy?A~@l=s~Z>fKXf`pRCZG*0r?VYsjiPtzuhrNwS$;IimG_qKYgn z$iO7erhnj(k$v!*R)GV97~a?8ORkodCiX*jY@*H|Krlp5S!(D>He^XklMzt zt%E4*;4cW9*oUCqDP`a+l7%11BvJg&D!WJbE{n2XB31ofuZV~U&3dno9Rk~+Kec9& zUgckjNaVdC@Hr*s$v`PLKiwf1pqBEw;=_7YZF)4g5k&;LvHg>G`p=iUR@a8$Y^9`r0=INq6;$wUt;um^_DwwvDfR zCT5w4PcoxF?8)IeHV)XFKpB3Skii$oHi;>mgx!*4m4z_{&(4cqW#Cg^?6Z^rQf%Of zs^A9b&UJIGq0+7%i9Fg zd>Ae{4W=a|FfcI{@PvIzMF!i5drRosSX-wc5(iq#ex$sjo?fFi!kwLzy0&(b+Y|0GB^y~*rpj`JQQ4Tiw^Cg)4z@q7__}j$jz@^4WGW0O! zxk_uIfw7Q3kx78>&(0b+uAq1o79JjMWoelxV6x;Q716L%S65eB%I|B934;-%qsQa} zzy4%Q4WOVe-RwUH98Hup8Cp9il$3Va8$eIp&|}ftgT}B>t4%hIP5bql$YxYX6h4p> zUk28`v+tFOs^6EiDweZ~ED+sMWeijIcP_#7c;=JN`ho2q*bayso;Uh}kZwc35daEp za849orJt>W?Z{fo<-aj?6b|6m9-=V@CkNYT5lRwh!@psEd#_!AX`0F{kHgb}L+wuN zY3iaPkKcsvry#?ml3=EIdBMFG*jMg?bp~RMUu-QBdRx$}yL9ZLTt=_SGF8dk0KQ z)Y@76&R=?S_ATV3IB0n~_B>1!p6%I6$b?-0IvZwQeXk?oN6k4#)iqMtULK5^gpv8B zuk`k%{J}QTREZNtb+w(>?2reV7K#YIngRV0d*ttNti4gZT=)fS0%tg6XawBMZ!C`< z8*G2-*i>BzjOQUR9s#*du5xmY_5DAa_CUqkpA-@5 zVgH67X2aasIWaKsk=f6JN+8-xpF<5>eM2N%$A=b{?wB6Q#hN3IV37>>V)Hw2T>GW% zQEuzik26@TD&M#C%Wvr;f%^kzH>piI{|t#aMKH5icV}lx28mn7hM7=NImWEKFQYtpk( zl|hG%kZjQD;O@D=B#{4;5*J-Psp1GKCaMg`3t5lN*Ka3YnTOa6jrolm=7xT(4YR>e z*ta#{^PJ}T?SEQGa@QHvd#<{W9)DMZamaBT{u&1dRz^>my24eG-dOQq6pXJrj^2>< z9@N*jUX5PcZR#9`brCVed*6)N%9O{Hrz%C4^h=7(D0(fIa-u`sDIGglx}6Al9*iS7 zzTb&eahoKYMWC{arTCPItlu{G`(Hq%jT)xZU-c}}Q3AZUQ)S&7Ar2HSIp)E=OcHy` z8gRVP>juy(H_SFXc^k6yOVoqYmWH(8*M0MLRSPZqu@ChVqnmQ?TDA@^meKvuhMg_{ z3$Y>}8Fln13)#%Kz0Kc8`-a(-07i?l^U?Vo9WQ>!!}wrMU)ekzUq5&V$Vr^@3Oxox zuVefUP8od3Ej74o&8_Qt$_Ko^_ARPQpZ=j%WeHunAYv;hD9ET)wXK=jZ=;$CU}IQ# zcw-DT!D6VCrcAjHsJ~^#HcCZ5(!Z9$VswT+Al#pA0{<*yBmFQ>7O^V)>^`8&G9_Sy z;}hEGD_Yncl>WHM?cl$X2Iv(H4U?@2dWMGM$ZI|2VK$8jA8BPjiL4b5B{fS+uEpyT zsfOS8?kl<{PfLZ{(TkbCf=#SF50l-Je~8A=L#*+nT6n<6)0p0mSz_ z9?PoCXQP`@a&knkd)5R0@EMd(@t$LP8aJ;i9Ev;*F-K39-#r3}vhJ|8(_AITh*XbQeu9-+ifn@yW0M zH$h@e{M&15!z&&Vwk^8GdM21bog`xuj7w2<&vAPm7(A}?u*>((L!KtVqj^zV3@iw{ z8%$UHFhBHL6QG|MlAj{}GY@6?Rq>FY0+2Z@%F7ycjj^0c{eXa!q{>%rfH4AelV5;t z!v0^n$;e*{6(H&OJk9x8db#c!d;J4InyUF<1r+wB{}xarYpeBj(WbocQaI$25e_#! zUB-~34}A51*!#<{D!b-?999HHkrD-I1QnE$?vhdw0qI7%k!}!>EHM$l^}W2&oBQ|TdHr~JC>u`JtTi)h*34&S&3OQCy>o=WcR=gia)fI&sMl0r zR-6-E0h?}Ig>SToN1LxHySgO*ov*n98m9pCD98#S7gbbHucuU;HIoG(AH6R1o8R}# z(e?n`MhtR=3G5HPyhFvxk+>>V=UftY!VSQqBbFOge&y;m+k9s6eBiTT^g=MrAI022 zE04Y+P!W{OjsYbA;8{+cv@T}-?Iip{T~QMeAdgk+KOoPv=rzH=;f-Ht$8_!Q@jfJu zoF_Q#{k_3{Z3VIqK+gty9)YMCz{ej*(QkYHbsYct_~9I(j(1ZT<&8i_>)dsFd*D=y5>?*471f9;bq0PA>5e`-_7MOm|PwD+u6laeyDJ&{{E$j#Z_ z4$pdfJOKU{ZW}pK`~}_o^O64wN}i00tx9gWnq|tKF7dw%0sU{%4wVKIi<*At& z8XB6KKGxq04y^tQQT*rQQU$-NbIP0{x`5>n3P)k-&EfSub-J*@fdL%m{SxJRr^|ke zTo#Z$ebs2~4tr5u>%3L5W^-H)j|BabP-Bi~*B4_h6TQQW#GDfX0ZYsg%TY3bhuydu z{@}9bu$K4%D0hvF)jJaCfZYVWuKy)6#li<74KXJzzm>@{l8B+Fmxg&ptnC0OX?f>rklvuHr(ivEtHt3rx*;iZ@}Db z{ruxEl?|#7kO}{N{M1q)!TkuX@7$N^$5AMFO1)ytd0Oda%yFGK?9OF_ImCmf@+%*` z&fo&HCwk@-E@8w~&kgk|2PtXKrh zbUY(@=7HGhH?Te@T{e5HpVGkQNKo0JVFGdfER*QCa|v6?3K2fRs>|MC_5=M5xY^Y! zmyPAXPnIeGsh^>up`oFpvtcK?S~K_$7*TawDeR7xlXy$U&&ihxrdA?{=^RRInwM<$6+S8goJ`t<8UKCi|H|)WASI#3n6So% zOmG&_&!s_iSCy$*HKsB~y``mKdl5C#b0{CntyQ!{VE5w!0vnp1vJZ zJgz7ny^uAZ^2GF%p(ui&CfR6Jj!?Di7RJpopfq(a@v$xu$rU#Y6n8>qJUqPSh6Wnt zl8%}8_pPDk=H?(8+iuId$C5n+8#Dxb35|?s>*UnQz0V<^tJBFMFG&CLCBv?f4WXP= z5Ue7G%a*DQBj!W>3|6h!GkdFYuLD|4(ELAUhamTf%^85 zPJ4v);;mhBodnPaLq$$JE?)ZCZlC1cv>#uxBX}0=90xUQVZ_VL4!Qt{$t^2m&lnQ# zCX!LRF8Y^)_v>R_HvfAM-Pp4QKL;&Mp))E(tfWS%SN&G(1-Rvrd5r#lp&S2Tt`eLWLDd?E@>r^l`F);yM?}loe zB>Gk(1WVis29DAU%s&(Tbv4!%0 znA&h{HQ(l#*w@ywd>X3P8EuR`m`&&Oi2cN;}To zF+cKnxsTCpT2S&HlrPVY?ciFFKFyiBS6F{Ga!o`hqSc5df?hA^t!+)Ad4DyD*#YWq zLAM6Z-$r}p3D$Tb2OVAK&JG`_uJN%5%vBwb*3#V4<~uZZ-AFMwZg~AdG5I?5=o+Zh z8~MWZUC&7+ESZl_lJHydj}6{u`6pOdikA9sVRgvRW4%?k#E{z#ir?1vEw+e}p@uuG zW2|lM`khRi9_50pdgRO25?u#l?XRDId(|Gogr=hR)?x_{c?Ga<%4kwe2;zK$1)XZonsaKjk6xwDV(u&^MptNm>Kbj0FCZvN2u zn)N-XVN$`+_>@UnL;*l`$2K2~`-O=MK+f6vH6{GTIrU$h$+(gSJk|9FvHH{kJCnmX zJrwbi2j(*m|6bM(y4&=1s7N9WxpE2~WJ`m;?9M=B7Rwww`-q*wwN=4sL_@pxa+oCVM3!%r%4#t#))Zxc+PR z(1YEhC>8eO#}AtJeDE*bGlE%ka_emY{_7xYDibnV@|X6 z<)oPwzvL}OWf~MNzvt24xZjUD!EIYSJYQ}pIhcXDg;S8fz_-b#@|5Jd{@Mv_#%y!n z!AI0dMKa3ie8z0bYHtd)O%_>Ol72ahGtaRw&g#YLlXoY$0vu5fZQlodvh~E1SWQ%v zNZT#xbigk=%xKx&dfxQ(Z-3;6G6+VhHc26DH?8>e2S$M{5`S>~=Q zj7@8_OL?^ode!MJ4WWdTbT*fBoQ$ejTfX>}Bv-{9T^kF&&7^OLTYCC^T=66HT!+xU z$@Hx2BT75QG*qK!BoYKWE_R;=kB;*s&62-Fzmn#Nn$PLo)u(!goXKnIaKD<`DPm>S zO!tWjs|(#uq9SxkG`Fh=Jxuxl^(-@Fl8EN-Bns9O;1h&cP?lqeCmstxt^(^X$ISn1 zR!d7@EyXL?;oDMAk-XKNZa?Mt!x*9`6)Vc|>6X;KBr&g24s;&1=)6U3T{qtJ;cbM0FjQu9gdXNfG4+u9?5>@fU0_Q)P%V+QFjt z#Tpqud%kM^PHHrV<@+-WZTUC3L9p97!reK=b1iQMz3+r~Ht{~Fkt0nX;~P6U;4%@# zj;gR`$F41v+{|AJesG>lo;-Qa^eyjX+L76-0J#U?v^PpR$>?A#&QNR&nLG(uo%3o$ z`>%NmfO+59ARp2|1@mU*>k#jBS8cbD(~ncZXi=fweZ;{CXCG$@hs(*DSd|PkuetG6 zi+1!1#RW3%ywWrAkGWf`7zGpT4p-B^F_stz{96gta9-1o|%+oIjrQ-#5d+ z{oCR8(E$EBDyTHx>P5n4-WO)e!@tx^+yJqQt!S{8LrgQVj?0Ox7hJWx{$)FuE631v+7o~{E7t_;(aAr`kyMmzmN?LP_x78_LH#+5kw!KF*sgE z577x2qwBaS#~Gnabkwy?rJnq?Yx5*0B~kbPtNtB<7gao&rm%n;u?RraU$5Pz1Jj&1 zVP5|EljLY-7pXI3H)prF(pp&iCe}!Fcy7A|yPe)pU;s z6;>MoxW|_>;XYtO9XsPIdc;$Y*xU^+3 z;OO?FgU3y$&8hxAqksLDDgp^6C-UBX1D=|+SC6`P$z%N5K+d9jr|XvTqTS<*rW|;e z)kAipA%e2+;u^Qy5U@hrBZ^CTF`W;vx!SjDc({Pi@62PP9$rTABftklhtbzpBL%z1 zho-Ko@Ll$l1Y-Am2AZ(iL0WDmg)AH0J-OhOcog)=W+x)19R^`3S;{ zVlLV2u05S>7sz8jmXxxuPAbSeb~VxcI7#+?w&FB;lQE@~b}2Hx!*r#0V>yuS8Q%d!;jf=J7Sv?1t%HhlEvS5{UQH#s#+ z3#vG3`WeLl*`WnACh!@|qKBXX;q|gt0~s8~kP3CD%s5NPuvCB+Odl~i_yBzsygi8~ zA-_?kCapY$M%fg0ff1--{Ng6g!VA0nflcf@kA8O8Mk6>A|fSVhm9^xrq9i6TGBlo$mZloE?0`9K&bV4?r0-NPo!1Y#!;il+fR5!R zZj#8*#>Pg5qe$`NUiC&$H)C^rr{mgPTI_m>7M9t^jvF8EFQ+BT%)jYmaR>x1+kmQI7n2|Gg~gE|8x1>YG}yLt4ry*KJFId+`1t_mNRw#HHq8Ld#J*QdVsX_d>9|3u&_cu zUAK9%_H9s%_YN*KURpy#)V`I(r{W&U*HPNM{_u>HCk`?u4}0#Fe~#0Vn|}?=k{mH!bsdeNXUA4Wq?p3Qr0%mm?Mf*C3i|EZolj@pX4dt{!eySL?}jq)H=w_gBO( zmu3T|il0mp0np$u+MQPvAA`tjSKzDrb>Pc^?5iPMCT$4oz zw;Y~2eoI)LB6t;-+3}Xl&Ygd20r0~U6$fvPFbY_ojqjb0!9Arf{Gca<^i;s}b!s}gH$o7AxQNWb z=u}ddLf<`o&AQO3))oy?Y8hJvhhm%MGmltoav3qK&|-u;#DyWz%scrvV+746$2zIb zJu5dqrm9xH?Q$F{HYcB>l0YB)ZD*?$`Oh59%)U@sLaYi5hTpXjYTU&d@3Hy!SuABGn<#z4k3lAyI1DH~6H+?l|0ys-JgIt=fm z=eKuJ*R6gjTbRcsMGbO zot(ht&GWm&geJ^!luwlIXzi3qdccU<2fLE*Dz)bXip{7h8_l(3`bCdnC%VsupCmL@BGo4G$YMSl!gt@5e=Q8VZE;`3K4eOoF znrb7wM#kfQ^?t#SFz4|5c=_wbUG`mL+yh#w>MQ!APj+Niq?*dBR5x?t7_Af1L>sVS zr@Q9;3CaWCPpx_fF>n`Z-|wHjhv?}oy&QqSmq#G~i@P7r3o>gKVKSoDpOcvf;#;kl z9Z1U$HABBt>kdABwSMz-c;4kOT5CS_U|MPD>l$>-^yw>jW2zI+lTN+^E&pB_%UKTR zqKAF>vGk9LdF}ILGc$)lv6=mLc``wJ7=C#Q95XFh!{$%G;F}(iC-u_;@ z%&$e$KWw#jZoYtocg;F068H-PjgRMFa)t_=zz)eD&XaNeuWC8w*Z?F_7#jrXQ+C zTj&i*5gTwCiDog^GCAgtTQptGZ#gsX`?GjXGzpihep^HX z#_#)Wx?nTa^3254n!Js-0!=ZwuKAd-a(9-pbTxK0;Y8S4=68aB-MBMMTDgATRr)0un_2O7sfNry!7l?cb zj1$nK+&|uu7jM-(4=dbtweF#j8)1mIjT3t4t`jE?lC37?G8tQEqsZBAzfC`xl$S4JmJ7RS#AS8A zq^-5k#+0IKz(XVWnS5Z?L?_+Xm2p?OR9-)jy(vn(PvFbxw5*5NFq6}=-Y zTBug|n8MfWj=D$~m0!Okh2NZuq^#=10Da#?eYAm`t?SJPE6d=`D@QWL6eluS=s1L{g{gK}6eYDS;W)#=~LWx5jI`mpRL$M`c|AY3}6 zYV;W5=5q5nuV@z0+S}j69G?h1SKB8%7b02Dx5fP`R`0kFx;Wg}UO=fO`U5Sd86(=h z$aT$gsGwASSzG*UzE5jRj@iGs4j*@Yg_v@uP2J2E4IkEo3}q1eAgfP!GbY|M>GXy- z9sO-z&jAstHI%8zx`Xm>-1nS5*1j2;7$PqkXWxqJceIvj4$@>hDduQK=8zMi^eY;R$0|8*<5V1ZqEH9>FEk28Yd#Scnktd^IFivo~2cF|yx-MOLZo}Ls@ zuH}s3m=UO@bvI4u?9V~`S!_lO-0aYaE2AfJ{KPz~o40S5^qk*C&9SaAj_WsBN);O) zi~e9O0AH9p4ls$7jeE)@ZAO8XQvWpio{_hXTHLqf5&9>lY`9#a9=f$>hsTBxUDa|| zVUku(;jw_?E^-uB-s?79@6F^T0+gNCWHTz}a((x@yp^V%jaAd-Q+E+^Jn)ge(I%0g zb{dRh`sQh&R5;SPP6Jwe<4f!tv9VfqXwlWz@Hvn7kL=A4mKl1oq~PizGFH@#`m(Vd ziH%>0Cf%mC51`CdIUHhbCp!i_S@%sXmwa9DbURN)_L$qFB_FM%xTd_wsPDAV7jkC* zjcpE7Xq=S~eUa-4EkV}A>HYYbUcF-Hun#W?KHH`)9CWfhq)8nxdV+83KcBnM7l||l z+y5TZXJ=-a-t&)~FjQvdO+pB0_xqSw`{(vj ziLS|-Ni3J_Y_@&p?XglL{{#u4y;;;E(Oj>f^Qn^S?mvLO-oO3_R>^{Blw!XbiueQgk$lAB~zVaj=-HJk2HCVk{-@`RDMFqte zczKIDc`KA9lW#TcC#T*DMussIb-I6+XI@<@k?mf~C7WbpADlftZFr?^Tkx&Tb>F*Y zmfre6$@_;(B2D|!Ab}%WWq3NBo=xfTPs10+VL&ut!!pQa4i6wIEHwKndrad|S7fyN zp1#_{5K_p&V|1iEeRab6P&C_=z-aJs1gn3{+$c<*Fu+`PFs>p(ae~CtST@&ja><>} zewQz7reANJ zjm3TnxHq%sQH=N9vrdoCj6IuWOWc_>r!A0CQ=a)o1k)5Z4~}Y&6MUz`b4ch1_4e$j zpe$@;(e-qmxV&_G*;|u(iF(Bj2BXja81aH~=n2=cH>L|Gr0OWQ&#r`O(5Ri~>r|ZU z8hcmXxk;>|rSdg_cgR>v5&R?q@TH}UQpYB+jWCJWr=7?5YVaM8j>g45%jVET5NFdy zsp8ufz=t1H&nl$WsU6XvwK5r27vd=#7asy0rce#{O(>GJvQyTB^9DImXlQlkIAm$+ z6xe%Wgbc7 z*I zPtzl8 zbklO_aBqDbLyy`0O5|X_*>@z(W_M2jk|(atGG(HM5=+LW8v+MrWqNGWw*X z{GemvB}Mncl-JW$YmwN@%GubvGq?Z6N;HB$94@LkDhZ2?-f4-7zV7e*-r=-ye(iwE zmj1+ay>Y(Z9-Eo(OHHB8@j6#Ky51=~pATy)-F77~lJ{6w#H=vnF7pkxl!Kb#_aoTq z4Q%&RU(vY3mIm?7{JGRr%JFf0vLh%551VW$)AK?1cOFZ4JfUW@-nsIv^Y^n0(v*`f zCz`u6Y3C%y+E@?I%1zLbJ+b){m6145pc964yJVkefKt=Us$%zKeXyRIZo!V9At}$f zrZYl~KbmzQ+ngivnkIiGV@S-eo@iU-kbU1z-NU@KQdLb>y;*Pmhguo~bxgI4EH_oUzneK{4m1se_5nLetvWcv_yC zZC0Hgc*1vLH`^8Vbc(IFNrf<|-C+YeJTU_{M4hmmO_H|!V>J3lxLsMa>Rddw`Fpu@ z#?@sm`+<>X&sH$&9-(A*ow_S`7A;8FCcK4r&oyP3xYiDLF7cbK~M*y(cg1mCf4L9m~>gH#E`y zL)kjpzuIwwsag~=IyYNyDGjSorC`T+IBMGQG-AWAIWW$$_UsLvHU=BNu}D(M7s=%k zz(F>s->hk-+mxVuB5X zO+fqge)?~~o*KD>Z(pg0jG(86pNbH=y#-ys>-2XtbFnysdmSX#MlRH}W*1Ai9RBo# zAM}cmd&&9x^Rd&~ys3FouYOO&l^kMV%d|k>k*v$J;GqCODmS zn8)dTX3{&CiVUHSBwifD3v4=CDW!jm*R=0!@tk{qYytC(vzh>c%31xUfEb>(wHg}) zDL(m*67SodPkz!ITWX{n1UEi{O3V(?P+AuA5sbTCK~e?zfDI&aS>S}IcIS}ypHh&^ z*;p#zCvA{M+gd6dvN$(4X`5!_p=4K%f8L1PMfp4{H~%yN9i@ys51o!QsB*%j%iTP8 zz)v?G=?1w*^+Uykez)Su2qjz5^nt>vfO6rN_K}ma^?@bAvDeH?dWr_UVWeeRaPc<| zNK(R^Z@F$f*>d2LEe`0h%y^jf9sl3pvrhLaysMhE^mEB0)Q6&J4Dx)HtcSVM%Ixso z%&8jZbC^VXN{qN zk4N%yz}usjTgC0qMgYXOj2?3SUT))Hjh%il-~aVtU}RUqSxxMr%l07*(v@Eghy8G< zhek@A6zz4GtM%j3IqhSbY3IWqm0OG$j5{9x@ZD59S@MqT`ZD$t=Vv7SMBH6PxXGdH z$Mr_22p@;g6}J-rIKv^ZmmH`Hc+9IPjai$Vj)A_;6W?ToJ2clJx8noH7OFXYF{F-c zeSHQeZqN;)XxmT-R%hzvaN>S3nvxHzgDS*#+^U%fbtkuq8CD5Qb+pd z{4X2s;~ToWJ#!!?pC`^5A>sO!Vknke+=fVRJMWG6#F#5w*QC0@1%8}9DcSysFwoJ= zb|k}PTE_}m}?mw?xf+E3>KWDsfvm_Y*{^PkL;{!^3z@Z zaZVQ{sI>f4*ZBxITZm-grg5hI4IoO}D-(sHF|N}k55E_c;P)g!N-{Z^Y5s@C z7U6H&P`c%|2;vNvf4qWJ4N@>0@w635PZuGprCSs67=)w))BibL zA&Ap8cI@TY9ptB>hZ`^0{vV?RHo-CKo9|3b>T?HUsOmIovivW9h%2;CZa(SvSqai= zp{XR)U}d@Yy@*Xd0;cBX>iT}3#i%SP9tgmY`G1XduNCk<_J55fw1hdXtPE|->oo}% zVk79nu^7nmePpz@qyn4yHy^?u%D>cA{ZhDGH@hzA;kSGC8M#_-DzT`_0n1x&lo?J? z=;w|4h#qsXRQ4M;QN($U~ys(`Su^>>Ht&a6|Wy&o*|t)Q|Z1vR`b+sY;mp{=0q?^JCw=Ha=63fTuV$*DQ1DmQ37Y2$sS7RXW zrGD!lf1&~sRM*lvm)9|WujnjCfi}HZ%FT!xO;ZY<$p$(>#AB(@VV+m^@zs_TVhzB+ zy5`CFyW_4g2DczybIAt+GnpxUnnAg*x{({N>3^dAn=%3U+t8adJPIRrgWnFi=9qKQ z5yPHaon2!y&Ff8`+j!V6P*BTt3U}o^zxu?I5FVV2Y6X%XLRvN<+(2!5~WKN)!qJ)j`Ag9+)ji2e}m zi89`omVI6a>U8_X-6uhSta+1P#ATV|Fi|i9x7JGuqUHzsx&)W9=@a6z!x@abz#B+~ zrycLsW=zq`fu(Z1(-6r;SW9I+JF<Qdqaud=A zqeBt=o9-|uo-%dzDw{q6g(3_!u=&iRmEi|Rn2uz)BhWp0cx2SLh92utA4TYFQ8v6mdWPqcGgY<1r)Y#jwzd3*n2OPGiT z_&5>mNolm(yW%~@fhLd3D9UJ-l&nA{u3oagob`8yyhK z_{cwZ2m{~RGsZ8rxv7c3qpCy|$m7>_N3p6D3eX83|p>(3wX!#g?aTb#LZrlh#ehm;26+J#W3L@b#3^f70$5ub7Z{ST>Dhjun zp5?sNG9yIa->WlR(C8*QQsXO-91ZveO;pS=-+OByN|zboXpTIpP>$J?GosQuNfDHX z3hKu`n zv%|#Ln3*6D3WeqZX9jYZd(xW6%_Q$wP#j*({pg>QPhWnzad5CB?wDuk<_4+?Z-l+)taUal`6?9De21qJrcR|1URVN*S(4 zOg!(7Tl~<^M&Mr@o;i}n)rWSHl~dR25gw=)$W8gBxN9~rV@+AZrYe`s9rRWjiuSr# zb5zHQ>_^Dlj!wOEcHbhta2!i;?F$*3>0spe#Iyc9JXq=8A$82D8LGB0oE7#-wiFyx ztVI91SPqbpj`bw&7FIW1NO^@^Lbbf3(&1*;eBd_|i;WkKqs|oI^wy5D`=hRE=LH#P z2?Wf=jU5Sf^#opStW(XpwfONqynygVxi&*I-BOHyfKoFrh3%Y3zHG+rfHJ8s@>@km zQ3ti&P2=LxI?ydb=ImR;UpbCH*knHxuq=Hjy{ed#o0B&n?Jt#h3n|-ZH|++s?2^HA zQhSO!@3U;491{w3s}z?DxL)wIs7e8D3mHvjJE~oXNVDYv4p1E7asS#KqiD;%k`n>o zFYdWOw?+0U?5nV=ap@#aN2XBSVMyrI;umiKyU8FnYrlx(6*p6GwAzX>7L#m;$RxkI zr@>1mnRzo|bR+=&K&zm?S?Z5t0_z*7=^XKrN<>#hgdzkwO2YFL2G0j7I-U3vm6&*Q zOYs*4n=}n1<~T2&a%38wz^%Gh&reYSs;I_kTl*baMBn;8mHlw|fj{lBlc63{r*}Z( zTT;>gXc*$FI^ZVh5{kI7T8RT!$SBOZX71Qe;QBV>K~@y z!#&`D$lbmcxD)|g0|cWVkiLABC36*a4Jkb4XJ$NO#`}rZm|x;qZ<^v^e(JAOee z5hlij?YxoQ$=ecvHA%8DK`Pn%Zoj1V!z$M6qCdr747{Igp0l)7X9jm&>>K_+ha@7b zr_(I8n?rQ8uZB?g>vvR(HK}D)#l~kQ+Rwi@|DM#&s9%%cBs;mZU}Ubf-Za91Z>6$4 zU2e0D%|wnl_#?d#wTOw7+<9Z0@PRu_tQo_v))X5)<%%s7N2|tzO}e6bgw9r$i z5DZX%_H&k@K-81GbE9u&Kee{r9*d)g&3Y^#;ZOMlG}3I+K>w_14FmTwnUZ9X8c{*k z)*SM%SmCXRYSO_I0%oqD&RQW;qmMeXd(Ix9=gF+DB});z+=!fZl2uuh&rIP$XEYpp zV6^Ccu1w!IzxY;eQl)7tc;I`|q$#{Z7Ze=56zuJ+D7Zy(TWwSi+n%N{#7@Pc+i5v! zUtUrR8QS#X-rBP{!jJ-m@0=2r7d9S$Vir&;S>nUcy|JT2#ji>sciGGOJYOg55=iX# z7BJwucv`-TR`BIa5wO%RF9I)2(+kv&aB47t7tCeOD7{?N@~jBg;cYPAnGWoxcK67a z?WpXV-BiUO!Ol*yROnedBM#6{Kc>eFU^?YHcHMEM3iViKm+iEE_>6^TXyt6w!#kJG zvs2HBf)N)@wo~-a;|A1u>T)%E%9%*l9VK$~(}x!}njjIDCM%AwCG2Mz;xkurb+nDs z-e)d-vp-(fo?W#d5aFcl@?L1ejG9DLVKB7tE?!}W_if_!Ho~L?oTD)Uwo>#e)0NHV z^Yb0{fJbrrr2@0E1LvV1z|EHvo3(vq*Z8X4q1L6j^skF&J0l4xi&|aUh{^doBU4`F z+m)+`yND))*rRQj%!nbZ`Dxm}?qaWY?rH*iRt9Vy0wV zG~Zh8b6_?iA*_wy(Xk<-9CK<>q6s#I-~NMFiCSQD2i?r9dwjLsLpNI4^Zcf32j9>A z+9L@(URLsbok7yw+RVsoGGVKGmDVDf-8ttWHKkl8vHn3!O;i>(OYfmyGoLG0Pt^U=DGgf~>=T%xs+v5ayVu&tCB(4f}4Q75~V>#vF>h(w0vQ z(QhiPcy-R;u2P9Q-BqsIyj9j-uK9W5^F!;VCLs(WA*wd@#ghAn3Xk1vV1n%~whMvJ z^sGCkW|wMHeeIVU3TG!Og}STa6O55ID#-|z&mG4Vd6f==3Syd~W2_-s&6KA{L z!h*9zEoT;;aed*>H76~+xnwI~#md|BSU;$5qQJ6;hnbP}(U_Blu%*Zwzl+`gKLgM% ze}*?jj4Ax@+;zh<%U^zO`{Dj13b+X06!N}vTPSX1(L|E8TfI(~NzU>R+z(7Vtm$UF z!>syt5MN0&(=T&aiC9l%G!C%uT6%qPK+1~(q+37-XDfypfpFC}z08d}ZuW0RqLO5? zN!8MSH_A*XylJ=Tek7K{P^#3!y>qdi->_dB^iSw~DqQ{? z_3i_Gxp#vb(?8x(V1Mp*z;v67?B`qD4`sAgm@)*%J;QhBHMjth~Dn1wQ z*k*|Ra7eclbYp+@nY%9KUOcq-e%o3ZKSI^2=B^1}yLjd$#sZ@@(Vv<}jQ5RO-v&N~ z>j+tqWDgS{G?1BA->Rf0hbpx7NGZMV(lJ|~|IzJYR{T{eR{?8cuUjWTYBVpB(C^8& z>ceh-wjcgcb3?F7u~^|N>%6L)qvIBQ(Gm2<8W|;&SQ+k^kM6V}&RlBj+p52ltY9K; zjG#a}(%y=Cn62Fd#u$it_##>a0SinZi~8=mR)>pWv@?Z&&PkyHq5$oEF6pDKlZ zr%8XSs6`50gGUr5>Rrub*kH@A-x-gAdR$!T6}LA)QMh{M)K z;2D)s&cZn7)S^IBstYH(NQplY2PprWow6asO@?u=k4_KSR-SYF0Jr7AV?)!x4#c9` zb4R%Uyauu)1l$!Io{i!+0ER1l@PM>6umTHH6S!7BzA?%aznmQlBUa2mZ_{%k?gt13 zJLUq{s?+2}%l|LS3I+bOE+l$v&h8Tw0UiQp5QYouW}WmQ`sBauvu1`YU@6rUX7h)8 zfD6_}^D68~0AQ=BV6lR-qH6Zy9y^IPh>)xsXd+_S?ICf|VU#omv(^kI z&BX-1us8p~ufALwx!|-a78I<%s6`rtV4Y+9bGVMcqgp2>RQg2_3voBa;pfeZ&Z{2) zH&xcQQg$DJv9VA|e_8k(L@yN^ef|HrTu8N+VEZqE?tqX0Chs4nt^g4A=W!|GeF*Lg zA$Xbv9q z2D?I#%;}d5rS-9;vSLwBnJuPHwp5m7Ejagzb7k|DqK3yD$yL5OiHfA=5f z?2;e9ivaw?mgUY;4*(^?F@&h``Nk<-_iocK`J>f49t8vkL70ouH-DDZVWEpnS9;)!7AEZh!?oVs z#b&-CO4cla4CT;-Q~gr2AcVDz5ssQ?EmNplsTLiakUG^u<;@R)wOZH)9-;#fpE;RuvDJ3C<_?E^gsE zj9c@>%u}EEbiGRn0dlozQjk2{;adGofvBaLv5F~Zu4wY?c~LiwL5Tt}rRh?~AU;Wy z(tryP4k4SV9i^i!@I$zi4S(UQOL;&iY^PJ8 z_D(NM!g?&Qt@PpO`{tPfmj3q!-1dr$9S-U3KtY5duObt8b0{S)4?>yS5GjI)kW|u( zx=e=bK*Ah*OrNcAxYU#K_0*=c^TmNKAO4k9)u;j9&h45P*L!{m`vH zL2`o}39g#3DS(Uc&q&$d^J|sYE`DOcVfOAg{D0bu^6Suo^)b_KqO8}=&65VdYEFsA z8SD-0@>RCiP@t2vNgi@2C+qA=^agU@_Y^Wjc=uGm@v+#z{mUmz6a&hy>Yn<$lo#>c zZ_g8l1>gX7<+Wuf#E22*B%0(De9>;DK%;GQOfstES47c z4ugYg10mIjn`vpLi5o{EbCW0AD@xTP#@Fe7CiVZ5>2fi1iO%7$kFysDb#8Mgp1}K< zSf0b==5k?YN{YKpUWW$FjlVc%U^DOJz3zB4&)cq+LsOE~?UtVd+Ie%^yx5F=5UNk_ zEGOK6zYDRod)d&Y=mIQHOV$Z7M??g!JGyQ5ts+VVcZq6{?AQo5PMvHVZCg>|v53J5 z$5K$urXQ4h+B2|j6N;x@X`xd_e~e&@*Vb3ei&~V30<>uL#ugWnJ<#RFB$@;UmdXYt z*m#kNqam+mB`@Dm8t60VFj<5S(MffLLse&nKXy%+G9ih}*npeN!z0o{L#2c;0%gATfEq0xr zxIOBQ7h%WZ#;tjds};i*46aAEq~%2NI`7m!m36*1^+sW=A;b4yf3Ii9ebLsDeFC5s zM=Va-Epo}mL`Bc`CtK#m?8;FnvB*%|8du?)Ee-Q8ow<%|HwjgI$nan&zD033T=bu| zP+Ap?7mo$e{$rfMS8lh#r13vdy(MycdL25sRJO|Sc@HYt&VgeAF8M$m`KQS&c?+Kv zspluL?o*@A&zZ&wKVG75#$}iaX%8a3+a_iq3^y+qe6gCAsV3&>TPrfAfS$`JH1Z8M zcN@356O&||jXn9xQvA*r$p(+i<#IV_9*^Dd%G)I;*iEbovqjztdLKU0WbxK>l&$pA zFBwfV)Fbj{4w~VxCy=p+a|)>)Y7UQLAGG_>34ugVh$3VoG5~49 zQ77`VyEP@RIlP{Wsl`$#+sdRVaQlgxk@Rac^TR=PO0!dI#?gK-Z$9U}#ihexCSkOe z9d+6z-@9X()2)-WWUw%JQ1!Lu5FCZhm+(}3BIAPN)~M>BxuyAvY6E(8=2OlF-n1%8 zxRZe29!a=u|MD-N>fb2O3izz$gns?+0{J~XblF736fCGeQ&g9+zhiPUeyQ@+>0y`; z3Y^|-aEa{o^)^L!-F#2lr#pt7;B~P&!ngHSe4P||sqVWvE}%L61SQ`DX@P<2?OzzV zf<7A{4ZEjG!{jQN+HE#Y&}J1O}VFLU7tcbb%_>$$P2d{8q7ZNhdY}G?5nM3$SY&)4Dc>%%Yyg1 zqfc3EaH#R~S_y^Yvb1PwL&F%Lp}|GBW2_r;o-@<;-ip98S(WY1;Y^QxAWwH3jJC@? zoYmc^=_<1tQyRjEr!Ne-Ujqz9P+&_UYa!mp6KZdb?zkzmSt!XCc)h%GEhI9yokzPV z$j-5RDS0OJ$Z2{XbZ>teW-{t%rjrQsb8eYIY27C6^~>!0<9<99A{*^?BlxQ*N)|qI z``SxU86@GRW;OkL8oh27wUyd$&ptcZrlr;jnoma@U`B6;;416+tVz(}%E>y0$UW=b z{j3hDl2;ffyxp%!KtO|4HblM7`nCo6nrNxeH`z&(M;tyINg)MV(U19?Djby7w#_+m z3}L|GI;N%{p+oPZuagjXpJp^SMW+t~PHnRdjqZI6 zTarC^Yz*>?T&g`ZOtx&iauax%x8|)}5_P#JXtYXL{a*{WX~$mK(`Z@7QzXkdOMdiB z@W|3hVEq4M@2#V%{DWkaN$CawrAv@b0YOSiIyN8; zo04wWgmib^wej~m2j1s-&N=TLpSOMYt1$1XMPrJCger8wMy=9 zqDb|~0BXWBbWH2alecRyA`6^JjZBe7q6hyv{qRk@OTg`5Ux>S9=Ptt2fQ8qxP_yb~ z4rc1JfTD^ch8Qvb*EMuRFOODk#(iF~h>YD$-cLp|#5$6&muWED6?+Cw} zv^CuW0rtqs@Lsczo2rdw_tOGmfAN0FeR#81a~21z69JFX4Xb0`9s(0 zZIWu)$7EI((Jh?g5M|o*6Ds?7oaBn<5%O&Ig6qD{4{GGAaKvJ-5G!#kiCRyj#k+_y zmke`1EeV}iA#C3F&|@^PgS;iX)cz!(rDG>}K_fSm#CsxbK^zLyV12^R5tspGGdKfo?tM)lK>PQ>SR?NqFOWll* zz&=C_zvjit%F(xjxI-MQs9mL?ih*wd_>{V=xoQ9%_0Qntm8-F!B~x;;;eO=Fazt;W z%H0|GP&8%1*FywC_8%O5J~e8*9+I!JQ1+Yh;tPC6uArm{NfuU0feuc~?S_m}LgKQ!%XN8_(n2GUC79UgUP(!Bz7$q9qAqcDUVvxsO3%GfE zYEg$)$f#hTQ+{zlxl-q!Ci;pFbxa#FX@~mnYT=HEKj_@ma}x#7Pg0_UOU$HI$Qx*i z9`DQpJX0KrolA;^xvPUsPDlCNXuGLBa6C0MvnFC8-_1Epput6^lj!-jP{-jsTcrD$ zfQ=D;$+PbOUIVY^R_Qpfp1po<6(^Sz0HBPH(JW`Ls>$`kl!h}i^(#q6d*(hlrqc@X ztGr{tJ>mj}g@BNETs(n_{EaOt2dO?Qth+Mj-Kfxk(7;$o*QKD^ACgW1vmyXe8>(jg zB6jY5ZGe$%Fvne5nsmUZh^$7THb@*0;p4dT<7plUstuLj{~~(PY3p(ay<*sp8YO~R z=A!$=|J*32fh{65c`lKFHh>cd^IU27B9f_sNt-7SxrJ*3gl3`5(R(walCiJDd9eWo)%wC$_ zYX?n5XFNPVSmgZ#fA9-j5x9`z2Mj9o+U8vvS$&7UT(L=cP!f+|GgWk=X)sR2Yo2pN zoOTM3cwowtOVlme6(~v=a13lx$<={fz-JSG9jxPNaof6Hbs*QL^iaah`i+GmMONcJ zLrmZcs+E~%;Hg-fpeeP%i zo&2VjJi3&xxsxXdB@Yn>Rf&S{Cg1a|uB{0>Zhy0@j87Uu!)>bF=XuBZ2y1nTeec)1 zN}E=Mci%32dR*|S<1Yh%j$sHGNf`?Mg1R#KR2-OFfZUyP&u7pA{6R*6a_{e8=DD$J z-pS*G?iP34B_kuddsl9ZtEBC5aA8XQiqZWih{<5J<~UQ3t1FJAT-xWkL+r#5Gv?K5 z&0l(F*i_`5a^Uhwaw>uc4K9s(9-&GGc15J03cYkqpB~KzxNidgHqu;r z0q;T&iiF^8R=fL&SM9Sx_SQ>}y2l!*cxO!WW4G$ozkHzq&@NrBdR+gsv6C3F{HNZ# znJ#f--cGF6;qyAmhu}IQ0&)8DbVW0g$_hh|927eIbJZ!k{+b;cL83!SPSl-8#DTSG zkzX^&j}IFiRB_1088hXsOyV`$j;Kr;vS`G~GRHHiV(~7ame5d)lLD41Q?qdR^-x?l zzZhTxtqmQ&puqr47oduF0>ufxsjbvbu16zaj`KPAbPPL7`?=%9q(TZ=g3ZaVH`o+i zMGgAtuptviDOeK@JO0Y_J4+Ho)mHn5+&E$-;J&9pevHcTT?n|3w~^V@EI(P5lj;$aFuEXCf@CSaD)5VH zcV(bOK-I@2-iWV6bV~reztsjHD+Yx_{)bz+h35hOH8@MU0la9~^M-i4L4xbC@>&Qd zooqKfjFNo`pCBL#E^q=y8OCZ%3zcyVF1>W;S;Or-Zm2Eky!fzej?&Tx^=!sfe12NP z@2T*lAr1T-!bkp}RV4<+ry0XmYtHP6t>=p6<$!_BbK#r=v3EwvBS$=y1{Og~Yo_TI zb|S07fDt(kcH(oT%>6zv0`J^4PUIts>T2#bkPwIy^JV*|DlsYL?p)3CoJ*$ck#Pd6 zlog3TNTl>+>vMI-z~_2RS|LJ;&b);;`h(9F$$kYQLPWwLA$}}|O0|c<%+7QiG&;h! zIhqRIU1IyafdoT$xu*>M+1dno)Tf;v6dCtv)RC^(;G`)!WJ<@2HLMsJ4P=&m;2mCK zd>ZE${q=V1Wq4-E*%6a`<3&3IWuobjcvYbUR{`DL{FPcR_R3J+;_cs0{$D$g zZT2;{!$|c337I%+sUWTRsM3{_!^2L)_IpC4ReZLtB5`G9l|^O8MRv;D+Utu?P7dlg zRR>ECmx6^TD)`-wHbYc%?2c_rjk9dqj!IWNFN%gRP~%r;0L<0QVzQnnx0Hr%f+Wjj z`Gik+Cr0&WY}ne##_nEy^v4!>PRrJ~X18bVM8%Qw$*K#o{VDDq%fdPR4rT} z+l#+%GgF|vP}g<(Tj8~7MWBw>K{m#@MvDXWc6(=s4kHSSERU9t*o;qen}QG~rhu>4 zj5p|4sa?xAt4V*S&iI_B5?8lPCi&$Ja3tCF57anR6Ys-G;O#gJZO_hiwVc}Z40n9` zdVxp1Gm&vrNcbVS-EMzRig$1oWankmP_`3AL+u!YD?C5gpFi5>yGh09EJ8bNyTJocSO`FGb?x#pCfwgiSi{ z$!w0Y7C}QAjN`T*Y!Hq=um4)GWPv9zmaWir?WBUDvyY-b_I7ev_3;d1!j*}9Z*>~p zkp62tmrgyXaHs3&AvSr!wsDY)#%K%Uct(^e{g;b19>Bfx1kdpwzusq(nGQ#EO5>zqFXH`S=4#Jh2`dY#yB8b$k!R?rt+d_t=vKodB z3iEg>Sd#uux{1vDPln!)V8e@7RgbF_qvBQbfR(PTo|f0ZL-x4nkxycn=@sF z2Yu!ZY*TVw$A^)!Gd+m%{fXI^O$W9vLn;BJDlX1@S>@~}v-=FWG8)d)0+qbcc_?bi z3|W5J(CUNP597b6&1NmLP7PT9y)bekR~_3^UD$gqJD{y|@fL{U(y#IP3^9s+>HXe* ztu|aMLf`s^jdJ0&o{R_0jg5^-qSwR|L{Brz?qPxh`R0ZVD8^@%!O+kM=*1 z9eo}yQmQr1+B)^n$$w`*xeTB6LI{+(C`AZc9r+>z)Sb51H?|=%)i%>@3v@cdxAr2B zxld1<01!D1k?l-vCSbF>TxL!#kkzSqv^}jcrkZ#%J(^C9A53PrvRfwGxd?H5YXx9_ zZp~w=OaseDhNu!W_M$R4*jXirKEd1!?&+x%iL+ytGslh4iaq#3?bLwV?p9!6ph&0P z;nPK|9(sFIn{kL7BO$ii+StdIas_tSz3D+>|fQ~XUi zQRY_c>(=ZidRwI)qFVi_OY*w>Rt8DiN=5uA+83om%$VhH6F+>pm z@CzTSYb4$fbY}}T9<;+It4y)Gztl5&vroqTCb z^TmmWMy2&Z;@K>OLdbE3C&*3%o^((WObF;A*rwGD31d4Wm1U|k2C&a&c54P(;SF>| zXFSAeN{sAK0)~o@f$Y;xDEj0lISA*aYrm{y8~Quvf(K7j*XEX267ULb#7*C=8~k2a zpnzi(@yVRvyv-uvz04D@@(`S$r;@r-SFr9pfZAI9*oPbHuPG=SmoLTG+@@>8h;XAt zhfm}2wHaI8FXZORIPi&#&rq*)9^#jq&&o?y&9Sa7nr0TSwjVgt651mVzwSNrhhr zUi#NKnjUU#>kT=ts?*6FD%xyGcD5r!(}v+|=<*->ZpQSzm}hC|pVDF7Y<_y?bTDc@ z<5Zjn3fqN5h&O{0RjuRbg0atRHxO1Oua_Bihu$S%M@gl_vPskhoYaN0G&x@jFxgq{ zMu;6*m1UgwH#HZ3-d`4^a$33X@ZpYdYL5BrjSGJGh2uLP-os~I%glymMG96t2R2qE zE=PTlM~@N!IgeR3DP$x+KSI<>kGHUd$eX9D#b)tg>KyeKx1F5RHT*D_Q5 z>Hgs;*mo5ZPq!j}*%%scEan0xpQRI7I`V#s(c{;oB?k;Pp+6usveBr&dhAuHvex_$ zJ)%h3?49&+IsB6xW~b5+y@?B@Wz0g%!uCve5abSdlRP-)QBO#TWAiV4ZL`NJ26|jrJF_$5$J{TR+a9X1SpDpe$>B>@cFjX=KjU0#TpQfLB zb4byAz6ia#ipGe%7g~=JDsG47hs)8X(JmXNC{3smV50IZkj1v`-OGqOqIpi1%B8o< z5QW2|T+C1|B6sl~zN*A)fQ2VjTzKVLL1tx1@<9&1p}DX{u~PLX$W5O0hN}6Fxt^%z zPl1rNwuZK>5^tF}XXBYz33Ym+>hipd0hUBQr`;_ni1X>fieh@c{YhAxGIIj|(UhB@ z?Y%9?GmklloAujd+G!KRt&IUoi|r7VqhsgQLvEaVpb*{mXzNSOFL=ZcAud`YJM1wS zCodP<58>6UN3#>3(9+G^A-KWIgT9cJ#fhBax3tiRH><(9LRMT$hBHK{uIB3-<%Kp| z!Bi4lu7O~5Boq_})8WeI392TU8v9ih>W(LyeH1XK`TEKDfm}15og()=Lzy7y<9+zo zxAP6ko}ZEq=(uG9a{PHlhGK+Rh$JZRj1vdw<~rM}-o?$;_3>Ar$a1Uq91fC9fAH)* z8-6g_1}cCrL`ZA6knm3N54+Y6wB5Q$hY(cvq5U8;a3jWsaQXWxN42D!cUzqdlS&X) zOn7$drpMd(%4G9)o+}v#nCgZflGTYhCWM@f@RYKy7SiLkX5&`{6-@ou}y5nN}1bo|V;`jUg*;FT$aXU|6;=ksIfh z_4=4x;~1YRHdkm4dpmCj>&40c8blV#ZvWJXml-DKXiH@*<+SooQq^w)Zr!!uHA_ze zMN2ztPpqQXLpe&`7CFTo%}h`(*p)5;CHdin+BZ!Wv~*{?iwOh0MAwGdr4-n=<;G(+ zQZQp0I=3(e>Y0ftT#FufXyv~ZhmQEUZuOi7iWI^{FcCDk8UKs44fq}}4a48;UH)FmQD0sTq)`E{88}!SW$3nRGitZa5 zo!^YHiJQV1QIGblE)!zsfm^eN(z=tF$got%IXWRi)hw0VV$NNR1-hy|W6~mP@(le> znO~bu9IMh_jBaz?`$WncH}sMI=Gq4mGp)A!Euq2RdZh*Hq{CRW%ClvvPYV-aXSMGg zGG@0dD?^5h0$MDS2G<&PiFCsJww^w9D|f6=nlR$)=-=|vP}InUySi*Fds{Zmz!-fh zbMl>~%(CyZPkfSs$c|R;^o8ddcQ$;7&(E|dDAUq@4~Pp_Hyo|l?)NP;JY!UPE?i2R zd(8u|=Oo6f5co`&O<&zv@TZ&L+nHTaB(@WF5;%#pa=%6=-kzz~*;o(BBuz+kv~lCr z!Ua`zizy{93lB#kHBTze4j`vHIBv&hnYTG6ZjV5GUecSb@okpueg7^zdfaajvt+}n znJBCZvv)mgGH)dd>lAeO%_DQNkTk0D)S#MMHZIrYcy_d9YiUVmVD7rZ=3-0!a0~t! zO-YBn^K>7J>+$Mm6&gW1h}JDMI6cqlMpXM&gB4km!^ZmDHbbtKptH@>Y-3xlbn|ik z5LVVbKYa($S7*jy|0;wKfdS79dn9kZPI53>$0xBH)k{C8+0;1Wjv0Sqr1-|J#n2x8 z2YtlPeqt>JEW40N%p{q2ijRo7e|&UOoA5}FuxKAntEp>kQ=G;z@cI4G@d#iy}5n+gVz%X1b+`Td!5y!G0ep3+#U|Fog3MdoIj$93@R*wknAAz~30ET{?5;(heQ@GNpLM)jn3 z;9C86_~8J>KtFd$|2$#C?S(T=tBvPR|2YSS#AX557dO~ zoRqdH+uo(>7-W376fJuHo(2TWBW|L>e+P-&2W;WiHtEKX&QC_rnc*B=3$>R~7E@$m)oh>vy;xsT<;khy<ZQvzNSgeC?w36$vHY7ES2eL!DMq`+GE z`pG}|PR>(tHMhYYBLz&{8d*ZlA4F{QXKdi$(br)ZMcc;|%IEJV6?T3U0Z)jhU$--c z%l(si;2dN2jMBKPGQa5Hn>=J#MSX?{r3{PFG+WT9m%Dg-_iD}rxyM{TmuB^=^Qe|0 z)@Svdk~W1*jlQoP$+#W-X?3 zA)XJ^&VnyIH?vpu^(b??ZI0r)TG5uO7Y_mZf8)qV;>2(lbD2useT$0ng3>_~007O- z^#8ncCVFemVeE(=!?Y)ea^dlR9gZ6=`twlV=f4%6`*zZSe2PrH?|VU%;CnkCB0=TG z)%1$U7jeOTam1eHoF&i_*^r^nM^SHGA}_bZJ*iLn%k@pTp) zQ7aS~JC>JlX3kjnYX94(rU0pJWc#R$rpawbrjKnF>IUMB@p@nVAUT^@n;^!Up_WFv zvW5&b{`avmYhSI7eQ+9uA`qS+~XGpqsSbd-ZqLQ7gs#YpHh%g(3><6KNRpqKW;XAMN0XTR(0K;XJS8dR48!1+aY)E$|Q zz~>;6rJP!!`k#a28IKBevirzyVkc&3k2-@0Gx+Vke#a)4;sJWJY9f!bi#a-CjzV+4 z1H2b|T6+)zm&4E@{Bk^03^=~bTJ16AlO@~eejp(t#-9T^tKE#>8Ncq_;ntQ^ITot3$R~i zP9*_a@_(juy1sxyH&Lq%wA-|Tz$UOG&mF~VfJrPi;(=a@VOfK7phjgBr%kQ-0@ed* zN1)~Z?~OUBPIRk%?ew(QDV^(Cm%!<4eq@KH%4pPaLo8e=gG(sx<7$VHGmvA6Y zUcvdSU`$R?D}Dnby`yDb%WdteLX#^iK7@ADXOU3qKajqNjpv-g{P_M63*FfE?x7P) z;IWyruBm)#r$Iksod!30#3$>=D^=^LHj&j2P>lDaM??$F+CNhK-sj)XUTkcY_x|u) zwkz)a&p$4H7Kq#C+{3gS}x(XUIT15;z_Hq!rn zuLyP^rCS(*mu3+*x(QAU{Idh7*#zAbm*(&G{X8NwfTwp7Ns#-<6GR&6n+|ZT@j{c-pH>(&44q^s;`vd!>p=4Bns?FQ_S0_B~>xhRT$7 zo2YyZ#{Ul{07yoYzKAB`?mx9!g}FMe#FZu3IW5IBTqBy_PHSJ?Z6$KW_3<6M%bh2w zYEsQ;IlumD_R~aQ8+vyw%Z605|4((pS-$&;2Ag0*0IBmj;z+o zuKpwqWdtH^(%&E;D$;Dw*47M7Ve7AqKVy9A-t z>#X@(5m62O&{`mUM3F<6cg$P9J_KPkb*)Ikj+u?bKb>yVb&pT+4OhqfPZkQ0ALsqd znPrah8gi|)s;C{{w{HcZjzH`g{82@>Sn42qds<7-!L0iQ(FN_FWy|m~zeB#icYSUi zW3f0&VnHG>~kwcwraz3i3$>d z6%DWAeA2fmkNKc7AGzv}RRQXy(O8IMAkm~B8nFVtsL~CvvA-F|KX)E(A4u8>Vkwj0Q#v%S z10kIBA(3SHJyzYK7q{Jq-T>RNp`&Du;oD07pwj7&RG$g;Xm-~1HKIw9vpI*lyl~@0 zpf#&xZ);dzy4JH5a1ViE69M-RcENuH&@55Dq*^*0b*1I0mu!LTLassF6=MJJ1b^&H zFeYBGhWis0D%svI9N753^X2O?{&XShtAG5Y|J_%8W3G>LdtC633r9t<@ZE6ANEhV+ z4)MP!2B3v9Cy3Nl7>afY*rvMeeLqD+-d0Ev&c|8m78@QvLZ>QM{($C9)|gf< zLUga9rJif6zm-{UmoH&`bJe*k`^gWbFDoaXTwJM^#eRN4rN-=^J<(I`n^>D|4x(;r zMqvx*=Su4+ePfp-NM)_$UJ#TH0H>|Jo#x>i+i1|Hd`1d9mw}=3ZZr3=B8f&*(ljg+ zCzNkxMC>X-{Lz6h&g)h87E@T0Dk&FGzrI-a&Xju{c`TyV31!zBptc7KG# zkk2k!i0!6;QV>NGw}8b(R$^K7Of4LTHnST5HMU#zqZyr^XUWX=CL2WWWf<998IxgD z4{%P6C#Pv=U=~9!kiEi7qDzgad46WDaO}O|u}>(-JB_|@J?k3>0xL9Mr8DMv!$l|W zy$Cmep#ht6#BySA3R%ClEZw!t+5FNH;Pbnrd{OaYqve)L;qcFJsZY8GlzU&w>vVPV z%fQ0w%b40LDy1lWo*w1Y>^PjadY>qjxtU%Ed zlRl#%^|`I)-cEPyLzEAyb(=s9S-xdj+I%uyU-aJ;0`!tVL5Wn|L{UnwA;&c>A8UYRmh*056+GE*rL2dE1$ga@*P=LHD z%Z&c9$S^gb9{G7nQ+w&AO|IK`PMbf(Zij;6hDrZu1p(ascmOM=3RQxs+V+=WVIDNp z@6K1FR~(Nj<|i1+7nJU5bdk~Ktj_;MDgZsZKq~NqA|!)1&ce=MN7@F9#b;P}EO90% zUzwjpa`||9MlXRy@@P$-P7tAWd9WoY3!p$se8Z!;m3b%UNmC?O|Lt*KvRg4@q;T~b z64P|N9on3sfTM&T{l2jj58K$Z+E)_oNZ8yQOeDSYw4{Pamlnw31{}29+aY*)Ak_Y1 zI(5L_u0re6<3_^W)gFv-&q`DWG0If0-twT<ljy8sj<#|0pqyy5@J*`D#W4?F{d4Zr`nVq|L?|{XpOUbiysQl(YWEQo z``*Dj5qRYrW~;^KXQD;A1p=_gKPFy^RZ;S2$o|GVRX$soIUJO1H@kaMVMlf}D8N#{ zB>bU|A;tz#aGbzIalO7;+qqzCe4< zpGBFMUljeg+m0C;Q5Ka*n-$fLP}bCo)-lA})|4 z+i?7y;#n7|=daDrY6F#lpLw^?aD#2rlaG`s-LF4lZp*E>DPy9A%c)mM$&_v;L}Y1? z1kw_}NbtCb-#Wld#Q=q5Ao`FQqTM5Lgx=3Z(!$axgAQlIl1EwuIM_S0us-ASrKV&YB)AJPG7*-1-7@1jLPUScR6NriIZEH&R* zICqgxz!)3T_tq%3DpRDn;LuS;WVk6lx-<5aTDPapRb#gc=~&7A2nK#G~<@JvX)*J`Gq!s|7~ zes{vn`g4fM^J0gAQ@niR!trVmGBp04O<@Lr_z$-WKA>e|!`5p}rg2@XR2gMJko_?6 zE1mSRs5K{g{fS1@DtXkF#US>I!3wd50dKT}D2i1AQGMLA2Hp-NSY0X3_1CM5rvB}R zNPkjUkEC@q4+{V7Khfhjye68u##LM@Nw#UtPv0|V1_Cw0OFNQK!PI1%`!R!-`v!H&(y+K8DfL7AIyp&csxL|$a1&-`14i-QT?F&*naG7EnGLgA=l5y z3aj?r@gAXzV-^tsU}Sc@7c_a)qJ_6_is>2zEt3Pkc%n#Y9yWfrG-D&5b&v9uNMry! zY3KPypPLb0K0Pz4kcBv@kA4RzKKtccd_+mTgFT)_arYqJ`N5M{IruBGR|q(cmXs7y*a(tmmN_x&NC->Z#KqcJNYL?H+LzMdKn#mPHK4PiTgvCtco`X1G!}r~x}-DOzaaiQ!3Z8yRMbO-$vuGi zE=GTLN^)ieWz-_o}!Wmk`}8SQzE8l@T=HDf55Sf zz+5*byErbc_E2>sPslgfKcIfVcp&oInV%xkYp;=o7u%$O(RMJzIAm6d#LRhl#rVqr z%Ted8_zfYi!nYm<6WL1=pkkly>yvZ)CkJujJnsd0YgDVmNT}Q*b+(|Z+tE=2avTM{-e)0T-`a2wGGFLBy z=%UrwK0%g+(7GKS9f3QFKy}MwKEBM3sIv-Fj(pC-3QJXtS_@E@c{rPJSLc4=UXiP7 zS9Xe_VmmNnf?t3b_t|XikC-Hf5zh!$KxkDizxU!2o#lDRzm&ZyZ(Ca*p-PQ#gIWD_7l?! z5n2?E*A4;7+FqVKKUEI;f-Ntj45FudMf<+l;bt)J@G4J02k<4=oMRQvlKZ_c7H(jM zGmET~dVfv^^f!|@qZI%3n8Jq_n8v~45u77UTYV5qC6z#$P^Bi@1i*VJM$`DM4~a3^`-vAHGe$1?;sf@X14ppuw1)1pyjG*+C&g0qAyVjYV>zkk4x%trqVIh{sKm9eF`#b|K0d>WUSAGqxNS6f z9;N?>VHRbkae7w>>$5So?#`p#05;$r$-O-5CwU zQfTdGPiQ$F>E?g9R|=^AFGLguslkHPsnQk73{qxxS6S5w41{jqYT(hm@k|V!MH-88 zKB9-%hS>zj;dC|s*WnzWEsvR6Jy3S1J3Jz=uicv@X|FiS^l>O*G3TML!H?P1DrChK z&0j8H_bO$KDQ*;DEUeYnUJ%0?yp3%@>)Zq#*ww#AjTZIk)-%tFu@&#oRZYh51 zkYKZj>I)EoLDSy%J$tYCq#M>1tlQRpBQ-IE`d)P5pwGQ!Dv|eBu7aDFaVbUKUv6S@ z9^#UHy05#FTdj6w{u_PIfutLifs|U(1Z&lRrP_N%HR{6A|Fk)F3J!B2&9l+riZ`+l zm${9Hc&kTyg`Kd0h(YIa(8*Yzv(TE*S@dJ5S)zV3t33QowEdS6uXHz|8J}wSg7X7> zZ&f(v_7r+FiW2@+rR!p6PlSV**cn1xp9DemI&`Rw^8Ekt9^jWkYD#EAyzv(rbj)_Z z{JjNF|LM#dkHS45#BXxN64EtFo)b4yCoeb@*fO5*@u6r?CxQ9dVwUJu6%W+afIT&M z5!_Xu?qoR8a|TaH?SKfLaZk7&w2pb6>bh-=x}Eg<4;+>#TS&1gd46sj*x$i{?N$-x zVqc+vW$Mr`H0A3Xpj*;5^ZLV0xH$tZ4(#n!Q7g5dmb2&vg3zG%Kl9sLcxLUdSd#9f z?PCPkoi1;!iK(s|CK%gZduHc3XRn*-u{!P42}-vP5g7n*kR=XoqR&p^h439Tap$fs z|LBoNbjU0Pn`^x^Z(+1!5jT9KFd2}=PQuZd)W_5N>sAa_?Sk`{;{;y!xa*c3I_v|2 zw=Sui@~Y?-CBXhn()+G0&%){U@v9(+e~Fn zed2U{!g&RDx~}Zm_(7cWY`x4@@Od-?irQB15t*#_Tbm>6 zHxKTSllS3w^5f|bb>E+AT+QE5t*aV)W}^ZN^?5AY>b$oq+LV3dqym4G|9T`e!jQ18 zi`~SOABxS%*D+S}0}(MmpPh5-F4=8JT9Dpnizc|w?p)_=`rE#R9s7yz-_k80hh=q4 zEk1MWSv{)@xe03?KVbB*(>MI1vV<}@WiIj^r(%n)Ul|GL)*H=PU>hTCCp(%hODktP zo3L$jic*@B52PxT<5B-|IbkQ~@D>c1M!ci)huT}-<}1OtW5@P8RqxKz;F~cR1r6bQ z($~n)L}@!@WQXD&^e!BvU?`1^M|DV8)~8V?*Vz6h6z_b#I3RPgLUnyo;e)Cn9ntEC zfQ8U_9)3kxdr5AuAdfjSp}P`2>0aq}YvlEKQyIF^h{kRHG!kBI2W=Q1*>VtMwLT@j zyNJxMV>clNqd%H{DBtf%&#D_LbYN&GHnfr?A|UKA0sre_K#A;xQGvN~d3rogb^6Bh zF4D%O7Pl}T82R%}*FCd4)xvvA6&YuBcqhtXGFgs`?FqjFcupWp>K)AQfHvIvE6aA& zPCxTvdTircJ`1xXB$4;j{IkUVF`+0jFzc2zu$Uf+B%z2}jkfIy5I|fwqX|>C_^Ma4 zP%7~C1Bf}A!qeH8xJ=Cp;+SybzmCV(I&ANNNta^Pn9!9I7BL>E(`xVG&r^n#(!T3V zw2@8Jc}8{5SAc%^<=4hH?E@VdKOg^4S2TQPRgutpKR%A*W=zHGF9nC2!I+4RvISla zamsC}pogTZFE|TEa&0l3lE+IE>~C)R$3M1yH;cL?4JW>Rxh+`wzrgU71pnwnK{ zDZv-$W_(bs{-q$OM6F0k-F6n{Uv058RjtWH;-zX$bJIh~*N1By*#vlta62mFh`ULH zEzEG<1j+8HR0Gcsu_HbourSCGFcbQwZ6!O0Y~H4^J&s%PsMX<}cs_-l)XjdG zFrxaWV_iV?Q6gXHJsDM=BchD6EPW|=l#SB4 z>#ye8kxEB{Q@^{oxq`cCJmy+8*=~{3$hjx+lBSayR9NI4Mb9U=m4{&opKQq_k=n4n z2tjN#bnhB+A%?i7mC?nWFaTAuMCa5p>5wegwBp}T^NHDJ1}<+b>{tu+T;K7kH+oY~ zJm1i*f_MmB)l1pP8-j+q=czd1LZe1MHoUsJQKPc;d7a~4rt_iCoQ&Kc`3nKI;UHSL zWM|YTI%AoNhBn@MK75u38~TR#3DS${P9z`mTdXHxeHx%AgV~1lr_QwxNyx^3Ld&pl zOE=&gDq$G=C8{&V8}qa3O_KtPT7bkS36}fPXX z^RNBLyvNGC*$o?);%~>=J}F-pbYh{!*Le2m9fzTqUAv{-raMn+>;q`f_*8$iGd1T} z{dxvF_OLltz&&<8-YTcPNw8g>AYzq&X^s!Q)h|xnlR0Fok&zy1iTs6Xkn)**S(nY? zUHZ_^hHL0>&+ML!B~YR)IR9LrPdu$~p^q(__RRLH6W?QK&}oI_ys+!`P4?jQ4*S&u zbNy=e`~6M?;TBUaaOk1l%AXx+3TE&eIeVd~JrBwE!Sxgb&h z%Xz5X?>YDS6)Bp93Mn>okl|0sJ>m9Gi9;q5?JbkDy;GKlH;XYr1;cvX zEPe+&0f-ex5AQ_joV5_!Nj4L?`tVk3^*iV7K6g}kLo?mO*2Xpk0;xv+bS-JSR%c2D z(@vG}NE3pRmDl;b&xlvdLACkWi=j|LN#XmyM%deU{q=(iUi`h^f{oXG=ngJN=bTM< z=5?gwl#r)hXs^OYLCo-6qo(d;!2BwnrEPQ{<~LVTbps_zU~=8faSh_V+C+c5w#aqY zKtiNTfPdhL)D2uvpZ`88*AI-A>RzF7C~u5+rH~ok<0F`hf7eo+%ksGc*CX4E7uc?9 z^6Zu^-UZ!h+oGYt3$2)bq+S6^yy|n12^M8u-GYxy{Ve5qchYU+`Y@CKw+CWrzpwp_ zuXwTo8;4@s|2D~fjy7iq%{UKkI#^oT0x*#-d(7v5xySy)>kkT+6-U#J>|peY z#UgXpd6&0&{crJ)+WvKhIN#vfKLbvJG-mI{I7N{zXQkTFCP-DalO>yWw%O{9I}gA~ z!}&&BT%3kmNqD+Bxc%!z>jn2pjsS>N@%v}nx!WM(t3#jMC1Y%UwkwLqnc)dqx1z~& zJJQ}esS?n<%`q?k%InXTid2w$CO86RS$_S&9tmbFkpkXF>{YVrt#OQ_5}W{IW)B52 zG|YC-nwFN9(-qI9wI8eGqn*DfM6Jka^v};fe_HzH2cll|$}jk>u7hwsE5YmEljBn| z#%qf^W84!)hxd^kfnQduVRmb$Z#vR}H%|9i=fd{>`UwCO`nIKhazF<>HD5ndBfqgl zh|7_S3T|s`<{0Q*ZT>pCag5`z-dsUuhd#k4fB%}3c z7CG3-O3?Vc3wm7Qh4-fd&%}%}mqwAFxnAcupFx&4z-v5tB>vCoBtio$IJ{K)UbHeO z*H?bQi|m)j9QY&-kgM}_V7PyEo+Jr6{1mguX9qqjgP`0xmvS7~$>QYvF3btJ>)`)r zn8U>92!P7MUj-o>=uii`A6Kpc7h3&e_B?zAM3b6U-k}LTTa6S!MZOAUI?&etD#FQQ z&$*SAmGJQJ7us)Uma)Lu_Uzu<`^bUSqkvE#+66hzJ)aaf|8MaW`K&%AWo0_9F-`SM z&Cx~j>N1Uryy_86a~4z0Y^EHV*pdiisU>*zljvJdGjB+lG7rccF`64>7OHsxt>4t2 zKYv3iARn=ZnMiZ{ORw&#csz+oWqn2scvf-!X6EL>OBRk@B#L9tosL3h=MH<41jE$X89e3k1a)WP~)LzuMO3LTd$ez&ZV` ztuNwOny_{pPZ;l%iF24U4=|g3r15r(;P%Y%|7l0(G;PmE-aQ(W`BR{rgh7IMyFBTD zk!a^;(~X$U_w#bdkv;^|O@qE9?1E|@>$|`5oO_@Xl-}m^bEL36_S58t`OtyQA$ z?A!Y-O>5+4e|g`hLyb=Pm{aui9beGg;VV;zvM|ObE9*Ed#U5*{kHCPiW?vH{2P`cQ z)=)7GMf`uLlv1u-mPiS%pbqlvXrAq8@2IfQ z8coAdSh%0~t+-T$-(p-7miNP%)i3tvx}yWbF?ZaFYL~_#cbN;Q`gUmHXF+xsz(5Hl zSC)48TMgiufvWbR=+@$*5pBuX;Gm>zm$N}U&lH)`%cx`KuW7~5V3#1T`{wAP9Epva zj_eMy+EHXU_OjaP&PN;zU*IiH=!gT3VMFW*F3lUx9>w7U{T|C|++k4aF#N!^oD zGIZ9lDuI!1XkBm1;F)#&vr=|c@!>){u7KTVgd3BydTg`rUIbqK#fL-O9rs-@AqY`- zXvWj-@YaPrE~QM6=dkWoB_p)seRwfFlsRzN_k5uU0MnHng)i>Hi$&j#a_l1Av*kbB zmQCq4DxyVT;*T3}B=Hz_Ip>oxq*F~k&XnmKBP~h|gV3qk8+{RcQI5}%3(4+FF7z(j z{kS`VS#|SW0hU^?yvJPfgTALoYyJgRI9YX-lfPyRQhlEv$-U|#wR@|ptE;b16D^C# z-ZH3XXPmzo!#$Fjk;EIPLQVcY?luKqGOtX?2n}K(s^XVf>bx&@WCbEkK~bGiG-)R3 zVCHb=r(puG{bq|NUBdc#U;fPNGhyDH0#=qMjvX+&|GFL_joz`UIzJx|t+ugIyh=;> zXC<-e2$UyZZU9t9i*nHItJC!I=~%J! z%cS=6?rrOxr|Oao87$9tIs0i}&;8EYFxk2G7<9P8Q6efm?LX)9Bq`d9^9%$q8TYE2 z00%72;k~w$WurATUQa~s}imCX3Wp2_C~h728KF2Aalm@nvYl*vO>}G zYe`AG!J%vy^zm9OsTb^R4~JDXfq)E%8IVfCy-O7`&jPgZzy2>+OTrnx#+QMK;V%^O zPIB7wBTzF9*33Z)4YVUA_2&7v|11QGcwmc~eeu?i87y!u&;5QOm!KLEcLBE_U=RHK z`ND#iL=OxyQ{&M}I}MoJQFeopNbC83pxH@A6r9tyOH&5hTe1`U$K4DqmK7aqr^~4a zu_^Ctmsu!W_xN$@5-EiC*C4A28!*_$@9{wIELrQ4s28y{;L6W`^PYu_!6H*AICh?s zGY@&LdyFNLolI$!I^SWYaCSMFI;(IkwLOr}+j`u7%gwf@>ZQ5B@zO)p)3zN1zbGzg zyou}lIEtSCM?_X$Im%eYoBhxvhtfd7i`tR}8mKZ(YoG=i=)0x=!`T3xeDzxJX&$+F zyL{L2Z=5BJ+|>`FTf?&wd(0F&Xz;zDfdovcYM9M_Jw68H;0U2E`fh%+8!M6mT_V`^ zXm3v+jz%c1U7wh#7n#KSCGVeB`@V)0_)hbaREtl5PashE=Bt;YvUYot!^ytZ`tL|c z)ftYt0N)J{^~m7r+t{W;qos!rF+F0zUnd_IUqN}@k5R^8(mx~7;6F{5FDly+D0@+p zor(NDaBC<$9zLf`udx^1Y6Gn~%ufxR3B|D@#&aYp`03yso!;E!V`VnSI2jAELTZEK?~FrSr)psuw-n~~*3fIaQy!ZIO%VUid5=c;B`%n^ z@73(i%37qUF!3phd9eW-}M5Ps%o|VgDh z;<}Fkq{Cb4Q{DyqrbHS-3r2T$6vWH;{M~2!p*54^DNbV~>{ZsAnWfP+PcTzqyFVk) z;Xn0EF1l!bpb2^{PE&GvFq`h)8I}ZQuZs?+JKK)OfK}q5@#DaD;xQ%yUF!y}jPsnX z+L33wuGQMXtnOBktTV2FE?;2YJb4;Ed><<_ymLM z6`|E79qg=;0yED$DzrbC?2FglGsNhu-uV5Ko7~#4aewIfyS05B{@ST3iQL=?r)j6A z5)TO&B={Q7nt;X$JS8k8jHp^Jr`njw-50&bE!K+(E5^HJQ05<3AG=d>=wx5&KG|qu4PB)hKq+Ej1^l5AV|EQsTWK!G=A94#4bj zv|xSXq0$p3?ls3Z{{4G->wUyxrOvFD6`N#9v1ny+p8uWWRJ+PgN4FOQ+3)a#OkhfI zG~rFvBsuH^O4N3@WKCeU9sk};p}ZM`6Uy4L70VyHeLkPFJm)#j^M1B-I;H~oOXtUyzF8N;<__K6l6XdjwPA5&^nJF? z4c@Q}70S5$nMWesY1XzEU%vRvtZe>`>qQf-GL*Xf;5s?{2!KufWrjf|LlC;&J|3#@ zSkPruq=@lIN+eyJ=a(+AZr`y^XRNbLrJ2GaL5hy_+Gcif3AKa?boSHDH=f{y78=l> zAvv<;3fgk=U6x(fv@Wn#^v7RZA!-3*K=A#M&nv8Qf~1w?u^pkamwElPi@~%fBDJVK z0jSW0icfHY`eWN>57 zOz~gfBAW3#lH^@iRE@|b7GGhz!y*94E%G)6yirP3CPrv-8t3moB^XKM>|HCG7Xle+kYgU!R6%sV< z@nqZ_P|0N$xUY7N?8Iie1~30F@pFtd!>2{Ko6K61W_To&vlW+=uAPH~4s* zJRh3x&?rL8iuO9#LX&j`!0aWDX{C(|T0p714N0ylr#wrG2$p)!xk3sTVD!#0?Jrut zh`@+1I3KBYS(EV)k8P=2y4Po~;Z@0Fvu6yCdwD%QtP01Qh2ywIExH66wTI&mWSd%C#5zj_U?${`yD zY3clK?9!OJu5{E-5`gd?4+!rir9Ba{VFsUdb)blEgYz(0<~=L(40y7I%hwY)4KVec z9zSLdeo3$cBJG9A(Gd;-tuyt$lVh`kQ?d8)SrIF3BUO9AKNEwKugF9^30y~sC;`Cn z>L#?IkTj(OWRe$+c4LdKB(xid1ox5OGfyb%Ld$~xWzVlsS;t!2F90EC+(47k9!PnI z8WGOPX;#o8=j$RqE1tXJ4h&GGq~&5aDQFQ#dYxCSTyM7}l1&1AeSP~J!xB@jmIcGf zE8=YB)NLB(f&ovjQwMt=$zr=Tp&q=yHhfeF=&AH7P|28ZvUAjqdYp5J+H&p z6KxL@FlVrKIc%XS>3T*61_PD1VWGF4EYPu*TGU+rBrbZm1BT_+1mN@Dqd4YxO6-ozT&?_i09cnn=~)SBq< zx!`=AUBdawz;S*EVbQef?qHX3hRNNC5uV$?YSapuA!G>ck}*lv)(c@dBxxH~DFNsz zZU!BXJR1sl{i0|ap|^XOENjf4`QrJ&6J#+TwLr}Qct;&e&*gwlLlYo`%7*g3k|kMmCtYSqXQ5mA9L~spWrvj=3OLe=02@&Prikr8 zabHphCu#Q}*U5s1hkbJ}VjWyRF$Ac39W`(TIo z7v=J_w6s|H4o2Q^qpfCdTUqZTi}#8ml)Tc3d}UY9vzvY@P4E&zDqZg3NBTk(mNBuY@)j=RLw(ZK7USd9?51Vb z#EBT^?jqRe*x1;&Z{KETXTN^^sy)g2`Rp%J>$@zamyRK`linylFeCHIwQH;JJ59cY zTr0nQ>_KmB>>ZzN$5QA9K*;Jbfg>Fm_MvwfFWX=sPbJBb9^S>4)2U)KgH?NN)e4o7eLvmBve&C8T04ZpE z$KBT{*zfQ3V99oTU3#QOu_(|QK?O}RzqcfM0z6_Z+>3DY0G+k(YW|H5KsgwLNBNhk z>)w!^;v(S{D^flH!r^Ipi;`fzG6FppaI)3R>rCH(RXVYnp7VeDl-rfe_ zc&^Tg1^#BtaNQ$&kP=Z+UY@v{BkM=DOM)fY;_lIqG9gdbulYNcKDi}xM51FiafW1P zt%G}Ip-ohnAC7dhMh6F<*3TFj?pBb7K%)EA{M_7L!xwt0b2to$f@XY2`08WXv&%>cfbq~`V2!_WtK*C!q#gN}ip;9uGG z430mzU^_q{!}g;3fJz00NSPJi4TZJtes+vp-{t5=12DY7#5#Y0@P05iF@?vF&X9K+NIR zo=-u@d*At7D-M7dIeVMK%0Llsd9Cw(Z-GUdqXjPIug7h-eP8dgCf3reL_UBk@{YVv zT%9f-;0`f21M*)7#MivR`)#K=qND(^i%qnbR&k;j@Y%=RuQ>?*qItr)w!f6KN6U&q z3;{oKXOM2Cmnc>6*2_vYJlHmK0o)q>ecB14n?<$?-aUURdq0>%P+G#S z)u|IGxADA7p(<7M>OYk4D{(eB)1RJ#&S-(l*olP2!kLEi{Et2VtQP4+^|l;V>gm0d z@)hGHT-{bM(%aEZq6=4?9*swNuW?4n}bSgiolVzC*GcEMk3oc9? z$&MXS4H$l>Z-#EHz7Ux2Yt_C7VdLd zUdPFzzR}t(_w@(ICd}pJO>0UOldA1g;)IQQCJh74A7H03xJFI6Wqh3jC&k;eI=SUG zGZYh@k;0v)_$JlzggLP~2^}ME=58MXG`yJ-Ezbw;oL*g+W)ObTAM(C3A^^JAxi(R!TG7$#1#eA^I<$ zk!A4zz72Gkq$QfsOtWojb^a6h%;hhK@~5Z673Q+lxMckX?>hTux$|%5G%cD=%zr^z zf{hL^9v@qz4_a`{*pQ?yvs;A-(+(+<2pN=VFh}TU{f~zRO;i3GC_Z zw^y9MXlI8DFDabLJgw~FORPjK8kUMppZw%SQ9+C7_8qq;_3!JgQw+M|wpUy++pFH! zM=?&SuM@ARLz+yI>JyuxK*twME_mJy?KYXmUIt;oRu$Io%BrlE8~|EoxY8pH7Q^+; z!|w`*k11+DJ``{3)ag4k5lWXK@9Qc34R6-%JIGBUrev~jdpjPhzdZK&$PA%)qC+Ej zao%X55@w3^7r-uj3sfUz^Pj{t#>tt)3feAzF}pG6Hd}~-lV)v7XTEeVedvo{q)S5; zL0^qOs^nUzR-+nWoY{tstwNLs)czNT_mOcpxyE;VBxXdpG@Ov{>3Vt1D^*IT>a7EU38BJQMn%5B- zrhGe|Zst#H3~%Ow4>QIucXVIfCQb!TWXYGBJNgt-m!rKFz7-{cg^fm?WRng9YLZ>Z zY8A8x?4X>uQR8P-2o)y{bVvoBmhE0tW)fGl(@b<7DPftX^&0FpUg{CG>&t39BK^A;JCj7@^hizcWwY_;ICRQT zIGhi0w9l5LC#MWu=w3=JtJy>}=KK*8&K3faabzgb{W7q;D=BooM^d6r_B369X$1h= zcyc&)>{&XFruP=EBXif`#irB#V>yaT=%L8+os#qHeq(*z)5ZH-K5C!9I}t9356)01 z6Sax)@yj8AuQcnH3Hl->^G+^f)l#KnFw&xFN_(sSWT+Y{oJs;@Sp^7f=eN&*Pc;WD z+;m1Jye&VH{Ub`%qYlU>HV*M@A)DVGr{1hSsZA=&KQMaQe?n1Vj;IfJWzvWp=ZCjJ zb`pwb=j|iI1IzpNN6T;{ljl;pcM|*4<4x@dZ#Zwd1;e`M=hMs<+R`#h-J}fRo_M#R znQrW|wvQy9UCf&292$C{0_{lWzZ|MadfyknfKxP`M=4CT#rq9H&E_hS;Invr|IbTv z<1?k>Ii!iuQPQ9uJ#bN9R*UzZ==SsOsf!np7q-PfLw|$>YF~l{w-yP#dF~*f^GP(g zcA6}K%c8cZddI+e`@79(uJ<&=vY5dK9xVW_^-@(?M)Y;m%Z>!ipYx#gZunw4>x1wM#gwZ3iWw?%dE@u8UUTm6Yc zG4}A8N&L32AI+A>iW92lmR8EcQLp1fEGVR-ZL(u!kIj?>Ttol0OiO{zrJf zvnTLk&W*O!kY;llvV}-hYLO}|dl&9Dl;P!KIb>}yI#-Hn8{T%MFL}Nj2sq8r^|@R2 zn|i^~SMRTdHad)5YivKcW(taeqyf1tl^KHoFr>lIZ&uwM7qrY@KcDdpuP!$(z~;K` z!a(=@pxZj%0tGtI#NoS0q~0Ul{n7JvHh%MSV<)46ZTJG}AK4X$fsZ)jTTtWhTfjAM zg;#wLo3{i}t20l_M zSR)D`)V(>FUkP47FWS61cD=b#=!3nE8S9Z z^56^mHLDB`WrL)WlpHAJcN|S0n847KY+zuzG;wbMKXSWGySYK#E)iBeig@wLdoK@ zh==VeGZ63wlk941jP=tZF+T<#SvrLw0JVvCP4}YLCxWk1Jj$MIwRLoK7YzZnx-UIP3ULz1g0C5K*!r0^TW$r80o;2FR$R;tDCt^Ysg!!OJhrK2DuR{G&!Qrdy6TX8f zI?{KabUH6@hkZ`Oc9pz59}y)+3IS^~(9!HQ0AP5~ZerL5a)P5tDPvWJw_+YwY6 z?}59;F6Z-maLPmKiSY6*<4U-rD&iuUL5#LL7jN_>_9Ya+L~|lH(=ObZwn2xgT<(dq zxVVeafkj;N8jk)y-3y=}8>U0tAky1Wu@5*(db8AhN+3<=koF=JK%;k@t=Tv%G3AUc`0G5ISY$wKHII5c=T26z&@$Sa>4wi z^QAm|8V7L!Lr+By#eUi__20S71THaceA=&AB{Hg~sccc5IWof?KUO!2{ z2?QTN>tM^-jq-E8D=sWFOl#&l7oBKP!;<&TD99Oi|wSFQIooxuFQ^({D)JiDxDe_6*w*VY8PTd8-k5gIZ zuD#IYAPEE6W(!=!q_?4TPQIRftEz9X0c#?eQlrpLhCWUdK^ltne8_0||44w<=yTo2>ur-x>-Zqpc23J;vCwLJ)wNMhY z_-p~`ddA*r`_}Pyd(vzm2(~i`@3%GWG4>!73fl@VZhmrngLUvCW5>u`VV7W#zC`f) zVGFKn?_V?jXtQ44uI!Tk65oKR8_@8D41QmNnwy&`!%n#S83OqJj*I^Ay8N59t$Ob? zIpKABdKx4M^BEW$7^DJB)6o$u;k?Z1`xIlVd2v+Q^o2FUQc)$|_0Zshrh`W1J8jVOE%&CDQF4dz9c#;b;T_ z0;Nv7yyLxo0rDY8&Yo>l-e`bs)apmUIc06%=n#!!$0{?akS#TvB3K{uBV`ihJ1Q;~ zym+^?CH-3?%8$+Ht}Vu^2IQmsQ^@vrY#>HIBK}6UhA93;+npKYkqS=_BuH)`$03x-d&Q}g>B9|x z9;u>W8}~&=1mBIRNkv4q#B?GsoZ?ijhdUw4i^6XSI|R|sKqUg+F>`(K#rG8nxI_u! z%T&suF2>}&XrP0O-YFw7=nJ&f2L+C%4Q2!q9YJtd+8)g1BG|O2Oh>d->WzbLo!^Hi$E=1Ml^r)=3UW~g{(yONFz~S;iMjf})R?cn zPY$109~fB#mV1bw%=6GSO0VrmkfERf907~(UwR+>^QvrC&i3^12gCj2EP-Fh|B{~k zZgG6^$e!=v!}ash0{%S%Iax&@;V#9~+HLU0Jsp5`6pyCGfkKt8>Gg#rYdidqo>IMF zTr3yZ`dOM(IqULd*4`kO&BVn=>1zIku={P9>oDOUAlQ}?_<8*hzc=!gTx6zM`+^_j zljoIO+JNkLK%QoZ4IUJd{dHmZt(zH@p_mTSqZ_c~2e5P>vWeh;f06*Ofl zuw63JKDFN?AnwI#C0E=zFTGshigV{UI*iQ*)5&RT9~OgMGq^0~i^_|Z;8q`m50S-HWHow^v=rx5DneFn#lZH*8sAYSv7VO2L# zK@75=_?tcgE+*)a`6j!Z9%butQEK> z4^lZ`{B7n)ep&wgw9Z>1?3~TnJ^X+H9c}7rK`Y{aJmGv)jN8 zh@g_sFg5iCv^!SV12kKJpATCzgmhkn#Try_weLfoxchenvHRjpj?}X&Ffosvo zeyD-)BrriN!uhIU(M43F0d$7|R2o~{js@O~q3Kvz7#%R%Q7e{XLtrAXqd9TKTudA2 zDkbwR0e7~cE#B=5DxeIr<%~0^be#>7Hm3dJg-moDzt9j{!2`7wZ;g}*VmV?+7;^lc z8rTDUQoi5sTE_OF3`?(f& z&KPk3ePB=VZeMh51^}F>EFnGGz;~y0iwyClmqMuC@I3($0nJ?CDAhPF-8JemacBBk z|9xd>6eWM=a7aqQx47rTmQu^FZsP7Lu<8&?ANm_R+=OnYbbx~LUEksk3Ny#^vbuE2 z$0jk5Z4)^ra2MGR(X{r9xp4qM!K%e=w&Eb>@Y?%vP?PA_t^^316}x8Aea;m2FyGQP z#d4Ly-eFI_P9Jc6$$aF=itinxAcRXg{^PiVcZJ}VC4u) znQ|Mb=i{KO%PG;cQ3e3g9H66o^s}oqAV|M=r4lDK^=2ptKy%J4>&N}x-HI^HYE-8p zM^Ovz1z$hA{p~6ByKA`szqd-RsEliGx=>yLLT%wbq$BH+QP-MJpa;0H?Mm`iYXH0c z%u@g?IoQ3hxC~M={>Tvk91e>&ZWaT*3V(f)z_0-x>I1~Ik(6kDl?7ziAIT3$>46xy z77YLx%Y+svIR34r09Ww6SPa6htqllg*HL)?@4>3=Od!O>DT}^ZR{Pf_1hKSp=Oi2) z03GsYP!k($DQbYd!egyv%&kGMe`HYbeQk0wn`ADa19rh|eI4r>{tO~-C=D@=l~aX| zb5bAPz<3tT0N-2d=BzOqUFu@R^d{9l$#|GR8N7W2U46{;K$a6}gL zJ!W%}y_%YRQEbjP7>J$f)i|l2br1%T+s_};0bF!>GLv20F3d7wV(82lOsV`T$9Sld zLBBcG;)<5JUvAt@KjO64Q8TYpmnVal)t1gtDG| zj%m}2-McP-nawWV6Z=x+3Arf2o(f&E!|iI@r%yrC<5ihXy&2X=`JGO0BY_ z6+xv;SyoVkp@(M3s5}MJRv7hgUnxBf(~#oB%#GkLz59Xd&|lOK2)zL;xKd+nHnN1| zwKAqV(d#+*b@S!uJmKk`hr*Iu&r~ST$&a*rz_7EG-vJ8+ibP$!^FaAU0C&s2P!-^$ z6EgaW_^!S-ViM7*1PErg*pAB}@^4}yuZC;Wh@et`$sT@MqpOGIoUeA;Dc13xE5ddS zv)@E*O=-FhNslpVpxJ?sjAx%JtH@UN$BZ-NP<5Z6^EGylr;{Fkk?V&97z>!rh&#GW!(4b=5=q5a*%LWIeyglz-qvn z5hfMmBQ>)cdU;EZCed-RD@c30OpbwI#c=}jM!J5#s1_MufI|5qB3PjGW;>hcWC)U; z`_2PdnpkOR`M0O&uT}_%I0ubR4rwGDm9y2@c4S6yCkS98a~iK%1_tfFm5p;dZw*4! zve;j0kiHX?m+VGlk#RgO)eH{DFf{B4HQUh^+jEfC3zUz8oa*K!rz zc6lHTW0v7Yl&d09i(KX33XJl7a$Qf02a9m+>>I|UM2MtFda%_Ce1XjY-d&c(GH=i{ z7&eo5r8CK1oNekGV_nSAadvdfi-_1k9`2Jco$()0suujXkfO}PPV@DF%!9jD&aW|xCG<~%wd^!d~0miZt< zekQ~dT?-vmz`?j9TrfNY5b16TwqQ0uX}qEfG8H3=-6xw4Ps%`#b|?99+DHZvtPPD zDdM&j?!Dj3wC?k@O*0R`2u*A)#sE+G=kWmCX3$bt-?{rQ>j?@TG_3J2iGNua;D8jg zH~B{R3uOWPInJLAZSev=at^1B(jLh09{M;(_$rJ7%`0~dd3_Co{#3Y1C;)z*M6^SO zioq#Sw0S>L*VnzW127Pz#*n2@_BxJ%lT}0c=d-m26U;zGLw(gS(%rNk3lHwtz@SK= z00Tx^rPFkBC_{II?@ajt#ee=%52{5?zgc=_60+2d)n0B|y@3KfnHq*a0QL>=eo+ zrgdNMf}`t)m7&r|$nD!5{N&)B(bM;kv%!7J_0fXTFUOiR-73JXtZ|NsKEm7xG5z8< zx_=Slz(Yi*=2XWfetPRYD9AOtAy$njm$c%$L>uC0!Y)0c^5Q1CpTJ6q7KmE@FpJ`y zbaobJ1NnJyA8n(*h<KbG^6>kNb;p_4~=#X9cmED}zS|l7HxSJ#^{Y=i?-uqyPN3Zg2m(fjMmroY*-{myTPq_%LJQcrM-yRVgQb=!u z?tcc#OqM%3Ho`^y+aGd>D^4}(fE_U9?Z-V2Dsn+|UG-8MQW^SUFg+xvi)9lb!|Yq^ zORuq8xC?u#E*(1!_3#MOco?#F{1U(od{V~*Y44{dxc~m$JQWMWhFSh7bNyf=l)(Osg%G@ zP89@$9sk(>wOcQ(`IZ6*4EXpI>7}K=e5w9GGHkcFvkaE3x+BP#64D!V=MO5>7--(c`8C}B)A zB|5sJ(TxH`l!5JHxgY9n;o~FQ)qF=GgfVb%;0?fD{c;k>jqr&I2x}1E=$x8j z{0Q7VVtIMsirL>t-cNpHkkm{Kuwadso%BX{iF|h0yMhd)s8rBkcg!O0gu%6uH?J}Ki%TkFdN{d{UC;!;ga!UfE73~|FrDj5ntLH zLksW|qPfdv1H5#Pe0G$ye)A-l90clP^m{S!el1WG1c}f!Ob1m61;~_}*}vj}m1QDR z_6Rb~&RYcpehNy`H^>h;1Om6ns>A7eAZq?+wg=S<7+nc@FgXmiYxOvfH4wQ9D<6^{ zSw7M`A_yD^f8@yPIBNV0L>!o$jgvFD?%=l}SCb#TKAW}&cw!@oO)eX4b24Rvpt|Sk z{;|!kYe2vMAKUz6oBxoa3GDx*&Hu~NW)VKpdCm=++p^6(Q%`Mn@I`Te^YaOrmnI*J z&U|=q#HrHiR9NSOrvX%Xn;7=H%vZLay-oWtg`cl&zsu~s_dRo_?!QL>+0zb3(o_`eQ%SGK`B zVIb+_gkCBHc&+BzvI(-kp~lTyG{Jz^j1O^23nzF*CLd{$Q9&__=CWlfkYM{E~Pivkou~YpdP#fv7FGk!Qy7MJqUQ#zx-zvn?UuPA;1D2Z0|J zqW`cAIDTsVGJ9gSK$1)tDv;Ngira>?a@|Eg)@Waj(ZKPzN;#nMx*B3r0v#iFN0xoj zcy$+6#o!lEF~`vza4t?-O!M9N`Pv;;zuWvkou=u#&XB?dTfE=7Y(Htd` zl$5E%9=)|*{4-Y3=AlZIQiuk*Y zty3fS>*wms319Ju%hZ@*hQb`=>js+Gn&)Cd^v_Ke8yC5CrkE~FOSK-1{V-8^&AQrJ zYzpGT*f-$a;+_bxG!u_E!^YJe?Di+pOy#_b#N)xGlxBpwIgDy)ku;Q<%Q;3vT2}%7 zc%S(wW-gtWN?e461P5OonGkb#bDM}Kkx&FWy8euq<+Iw!0xa^{&G`Ar=JsV$al+Q6 zfSU;r%SVW$Lr z>2U+@4D3!-@;#@pUW9@VLo+*Da$Jq^mFIGp{-MV6({G8@Ny(Qx;%Gj05Q&S7Ts3jx z=LgOFyAE&`!IF{lBlEQDHb;T}q-Ysz!m&&>#*2JWM(RMENCGNSB z*Adbj?_OfJB#<1Uo9RGmZaQn=IB<{qGhcaUHcI{T!O?vlpY?5=ZK6Ms+~^*{Dq@tU zv1ickFHa?hMjtsv;_rWoU+Ul1<^#{w8<{?T;+P`4I7~l1&ag9T>lf9`RA1^_F;pq) z4O0focN=Ig)_Jp8dNZULmC&R{>Ud%w{}iJ6x@Fqyx5fT3U&?uUJG@*`ZJKKSyX6OT z$*==4lU^DOLwR1a3?)-uW`klMjLzXC@NqgGEi>_lg|19|XlD^_5k~Nz7CjnHH`Q%X<4q(!KdE$X&0q)g|TFeQ>Q>v zcE-M%qdtjqDuN_5_dwF+$d3J?ic%;zob#34oo`f{X3ylsW&>iLp@W9B8c>`a&Gj-5 zjR^I;-)LX5xxYgd9QdJcPzCJL>uy;AQaUbHDYAYf&LpD0Uqq++@kHglheE1)=SsVf z&BzQcOO4mGVPi}Codt-l%1}h%$*j(fdaoX>i!2@~w5iJsvyyXt=P%?n*Xcsb3N%%h z1`k{r8`PV@>)p+bbq0q0R|lK=)pc0Ciku#vm_Xe=>dTzPmVQ$$8(Ut|^&0i$ zBKza#g-0v~UNN1&v~(9Wj4?9c?sh0J$X@X4Q^$YmZHlO#Pzx4SD;%HCwx5ShDHb01 zsldDsxa|K$JIUz>@CtOmZjN_6Ji)OGp>s3p!OLmVrB=FQr_BYp?JwmwA+Ntv7&HuX zyk4C234(Dlt#dex-KU3h$k@T$w@?fja-a@ThMw_J%Spw|W$!E%)8`_6NNvnZuW~~) z>Opdx;FS!gFJ5RoYBhZx%E5o*#ln{lb8WsVM6cw0sIzKKxc)=dA$4NKlOBjBr*HH7DjyE4sxV2X6Tz{cj+I zT0&F9w3?Z8ZoU*_Kd%X$X`9rIhLQ4Q6i;IaNkI&Ik2T17!lLPe4qyXE1& z;^o)p7P(K$zgB#u*#3E-Vc&IJ08}@L3IL`=mMv7j1mDWUn9o=kFxDiizX&g>J`yc( z1Cd*#a3J(-ul|fRfuVx;J;G8bvH$9*t1?l}JYvVqHm3ro0^GetoO8$g3@@x`isc?J z);PJ!hzf64q3M_GARqJaXw3cd7E}C!FN_*3q-=#V=P{^^d&x1}ebWze`g1z0zVU62 zhjB!eEZ)1Szj$@4dP)mZeSZzrv{Vy%M7!E>*-^xxGp0hlHSb+Z=x1KXVV-ve3DT|i zjTQ&)CfnwFd<+z(6e-WuD+=(G5k$9bLlfh9KOfO`ZaQWNDZ09N{sf##*sof<;G^3a zZ(;nt%Wj8eRD7IyX!l`r59K9=XK%vbx+s_2-wG%?r=JR_x&XB2B9FK zS$n0ay}ibZ^uRP}>!pu5H(Yx=kp2A!Fc|yE+#9w9Gie9|O{*JHj?e(8h7^m=r;fR_ zi8?ptBr~E9rOtz>(l#-FGx+V?6m8tIeD(9ysh5hN5>3#kw&B!HHB3IeM00Mo&>Zfy z)E;9E9%nqGk6**GGhK{ojWK#t<7m8~tVhNbqAs;YW5@fN6fpk>h<18HEwR}6sj_7e;heh{E^>*p zl+PJ9rM0M(`@l59jj}Q$kL_txeAFoMg5$hU>fMRdaF0S%&1f02L_smu`Po&^j+D3> zI>(>LQ*m-^=vT-{LAzr(d<@scGBRq-&URq9o24X37(wBWP@1j6#p_k}Fw(5;L9em? zGjqRcBhB5?%;I&Vz|zr2h_3mUqxyu>YjY*#ewsZ3l!daz@Q^uy6hGW$njg@&&bPqL z`LND=x-d(SU?LpF-bh|Kv#MLt=b zPBG6gd;tNJcJ+%>L;B9*ilZND+JCQ$UW8IOIXRgco0-ue1rNt6af?!-;mdO=33Kt; z)f?0=^|aIYF3ygB07sxBRy&Z4L4!X`;@w?c^PxB!)D4L8FBq6?vIoQqyTIXaclW7F z+3miwV-`IwU>0}Eth1w+HLsbW{P&2HCV5ph|3cCge-CL}z|3eje0Hq&1Ly@Lu#}gd z*fF%IW_}@nP24#TB!hJ&Cn3}Kn<3enVF7}>G^r`ky9fbdGQK< zpPll$OZ^y481`y_1yv{QQ$odzXPR^(rGH7=rtmG?=f18-lKPd=w@W}Hbn14 z@0=&U?>*l-d0*f8@BDGrvMe*^d7gW>>)!j?`<|e;3etG@p4_`};|AWF*AmJ%Zs5Ay zxN)oQ4i@mv?g1hFjT=vIypi}z)#c_!Bh)f!-18^fmvXV6RDE*U@Nh=zNu%*-HtjMA zl`{5hW7!d8of2tCUFdV!D)x92?RW{923XWaK!v1_fpau3O&vGRM-tZZ){GOi%aTW@}4_2 zwaEGE_La(R|J8Yan)l_2=*6JuMVsh(oA*V@)q&`Fz|}9o<~_lyQ~j&;hXi*>p7?}? z;gyUoADnoIH1}^Go!z?pu=4=>qY&+ln|H)+U_JbB1N-U!`KOOB@$qg#^KO{U`Qi4} z<@Qze)#1$LEY0O?+U07R$kq9t_vNxT`^ouUzv#vOVDnjh^Vv>>_j$?Xa5FQgvde|` ztF(cUQQQ2E8{S~3Sx1rhH4gzE{WJvoW6O^Sul)e;BWLfU)tof1%ai5jXUczP zg-SU`@IU)t7Oo!Gz-){a2#Hs?&IR8lV|$2PP1HeM7gy)w+AHH`-95MEoxOI7=hwzw zml)YYwl3$E;_Lak7c55tmtH+C2o;9kK=7O1#})i|orJEhzHRP^xYP&;@tV*izSGjv zb**U-QscpRdXzQpql%6wC|Ij;Z1ij0kP`+JWKZ0WSL{+BoUP#9LQ@toyQ*~o@=DwI z8A|;tSO6)X65jNFdhCEa_=TRp)ZU&9OQH+UYtNEqi5R6W7P4-%%P2k3DynQMF0C!C zJ($bteH5prR;j)|yp$*C>?z`n5XqYX`%DEb8N495<9|MD`jqURzaQi&+3v9~yUmZ) zyVj>4o5X0L3LRc!z&g(K?ux(?T`t0d&uRTKCH;ip zY+L@24HZt{z=L-wEXbJ)5i=g)eXn*Q_<#<29dAlFe)Ktf}<8aaz;EcN+rkh4?j?vLi zq})8S{c3(Jbz)uE+LyNO|($G3d^&Q!v?cP3-FGh(>8jdW3rd(d8*V$r7NU$aGLG1bY62{s1~ z5B42B`6hUT-`iL>aILRQxY*Cs*73c!X;!sj@?6H?tS8>>{L-(8A7+ppu2dyaF8Xl) z6zeGUG@sHvxYlya)x6IU_!*y_`i1>OWD2CY6yvnaR1aGU0!Q8)7Si@CtjP3ICoNPt z$a>xh&)Lsk*_GQ1iUvQCnu^joGG3&}DjDu)fDJ}f1?*kbR*i63&F@_jUyx%Sb@lbjn4M96)WP3JPIE%-Z&0g?3&4qfh zm02BMMV!e-#Cf$;k*K+TB@JAXE4sgb>%Z0XH!K9aGU($(kJ^+Jm-2!pCME>WPB$q~ zZ9z5r^*Y){ZR=I1l`Nzw7^~EiTJf7@OS|~fnvD}jKOOd_+7JB>(bB%o>ZH_Gi(W4& z6qY|5A&MGRs8al;wDp@kPiAHCrIdAzhSNMR4#!f$`5E?khj~WEc*#rnCD7-`J3R{$ zii%faX`Z<@W)3KHslCl{i^FzIR$f+O`q}&@lm&K(I+Z2m*smPMKdAJ!UGj}P3F_R- zP<))@Hd&}qc)+NT+Tc>Up}zd6^H`#zo5U(WlMqSm{p&K{bS-LmD)4<`uYU?2jWw#s z4b$`m{P3P=SVJFaXWwjJk02Oh=W1kZVu53C@-=U`?5xmp{hfKYdu3FD)J5WvjBI#Z z$~bgBa3FblwZ|yy`LYymMT%dTmC0zndYrW6=uf|aXrru>MwP?U`Y6-ku6%e`DY1K8 zM?DpH`r8!+SU0B;v1|NcvERj+URZ+($@igp#)4t?>A;!YO6MLK4iNZ20aXY`#OgLK zKiFVnVX)0_djB1oKXcW45wtXzqu6}1q|GD(wXg_wDm9q!YRV}(jXz{6R&I-^GcF&=Ej7*qCBuqI!)EM zW|ZWtLYx(i$~XIPbDlh*DAudw1?viHD80|Ksjuk7GH8cvw%D^@8bn6bZfC?S2Cx9$!PzNMr8p$^^s_5^gWwYm zX%!^ZrQe@z?_{#LRxPcQ26UULzM*B0)0I2ctch!N!sam4mZTh_l#y(ne44wm6c=6= zZN#{?jF4RRn1q%jXl}V6pp_ao`v=TA6Jr>ijt)+P2JRO%?gdRkld|9HtP7}V+4oRu zIM`s!FI!6os@J3`h4D(LSlF!W$$YxYW$6xbWWwXrCUfd76yhiay|RtCD8Dus-q|+^ zct6b+2Yk|V(-%ip1$q|R`w&@Qe`niTgFWe0>!@2neh*!EQ(gYl=k1`XJRX=A(O%}# zWRoob01yGnM_cf<=w|E+^;Bk-BJ+_;q93A*Ae)qtb-?H&>!T{(`1tr+^K?jte;WLT z4?T7~O>v+cB}^`qpJ5AyIyjh=6khJ*5frrfd|tM?7(?KNEVt$8*5TS6f%m$XdeRmf z#`lD5-iNZ=NI4~B67z#f1H`Z$#533m(vkMos-y3W0%(1k1qE}eV^5PGseXW|l(S8` zC#R-V6F7z8SK?1ukkQofPPrFdK(xh;e2W&fpio)Qi$@_@b;ZS1Bg&q$=i^mX@z7DY zfS|RihJKxnXL`YW$JpDW&C8B-?GY3&)Z1BHL*wj6Al;;q$oETFZK&}(&>2>`kL1z5 zQAE#YJFlV2idirdBnw~o(g5j_JVeg8iAp`wzVws=t!r`3y{RmY&O+HL#?x?ntgG5A z7VK9%{@K89<(gBmFt#(w0jeGg+aRWEEHa%I*0V3%XPZ2a7fJSvCk}yZ7cOoNL|0F4 zQ4l|n#%&%gC$hyj@2lz;dN%V=7Erx2ckO>|`u=dJ;BdewE32`-mQ|S;=}tTbH|IvQ z_a96}ERc9}H$N z+i&*TP8E@!&k|W$^}BmvQqwRg-Zv(v+c;+{q;qH6*>Ua=GwWWg0SX@{-TWgh^}%}n z^e(v^Z2-SYV(=sjTX{4p!h2KybmY*h6yjUE(DSg!lKBOmC*V62?xSaxW);tmx|m5C z)6ozCCpSi1*7Z}qC@8Py(o`nuC6Wb<7~ed65FsCq*`lFXCEKVM;T<|La5D4CKWdp; z>1qAG;nF`>;c3@#`E%>XT;I=&?yYw6GvK%M{TNy9LjcSd$7kDDTLNHhMs1kz7Kpq4 z`q#!zPS?>*)F};{T#fyqvII=rXyghf@(r5ufuDLc)@U{u_c12NKiQBDGyB%#>qX`MlAak=;6g1^Ejn`gKAge% zuTN;ZhgH(U61{>-i-b&G7^z(1$*R!*Qa7J6ien4OJ~ru(B~Mry-lBTk5-lK(C;YQ^ zM#;o%-+whs*LS;i2Fha?uU}#j6f{2#x8QwMPj;BURA?iFq|+?3YmI8{?M+X zEM0xRB33@M)pwQt*)WeFVL^UdlC*^F?oNTTN@5;*clIN%R-(c?C#Z;Lbygk&!i`2w znqZ7<*;;-A!T)iq#X-Vb`Y^hu(EQK*fQ0g<(kHtNLvXS}R{G?GV7UO#_UQVMME08Xyuv*eV$HWGn6c?nhwt-o?Tn0HMa{Bramd{UkZ^01kY=y;ZmfAQuxWP+@ zUf3_S)v#@~u(%YmeM4>Zo!Z(hPE>Xcgx@b8TIg)LJoJ=+Yv;l$i2~j5b^mK)y^Twa zcTIK6v{j?mfAQ@ zC}$5qDX(5>!fYy%6wa+H%$)k4+#Iq2hvwFwx6|t=JPs*hnSX~qSAdn+iGGV(bC!{1 z7HG}m6__4{fhfdU-NCUHJ(rYCXZmAroApc*R+bu>I1b2oPYx#H-@B{u4NHyjQCz4t z>uT9sf?o=S?noTOz8R4Po0A+e!f|nN6&byRymlo-AQ5RoiK&TE3Ah|&uTIqd>XGtY zF)%f1E)Y)$ubz^3-5KydHFLAHpS$!|k8zM!qV2o8VIdZB&eM5rkt$$qyj36p!y2@5 zNHUaw1#=I#CgP<&gZuh?SY;Cr-}YnM_NQiXD?e=j z_xK|IM_u~#KK2mi%E8XOZb@UDqKqo6X4;Gp-QbkRx>d6CZ9>I-URRGRjGK-FNKoJW zvX91>1nFDqcMUY&eB`9NnopNypY-B{g-+EPEc;9mg@>LR=1~{^poP7U8OM0D6%lCT zByPU4mMHi9j>d?B*2uQEEw&n+cGP>@523?IBwhl$Zf>2b>&b5W{Wwx)4t1U4rZL+C z8D|Z58=HvAEg2ZhcT>v-}AWjVG zdk1N@6G@N};0rbU(TkjEpkjJczqb|BXbVXIzvZ@`B71A{Uc}tl>*c~)iZhT5xhpmz zoq5^jQQ@`7M>#X3V6@cKBAbFq9Y4ISSVeNw-)}V)aFWrqm&UnSO=S!3HVx>Ve~nPN zj~3IZzoCWaR18ttNs$!qA}bob3M&?jVWVReMtypoyDr_OD#K9?{cmQ5C15|_Xe1Ky zO+6=Pet_1QE~}v!qAXqJIQa><{FAsXrCig4YW{fghS!X5Nt=KcfyX6OEmD0$uP?@WJ^QPK$??(vdHlAUqO z-0p)<8CsV64jt>Vb9O~cpFcXdH8qTZxLJdAqaYNcN%&=*5|aujn?N&#=#QEbd#g*e ztQfMFyzDjUXa-a@P$X$wt&w%t2SJ>Foz_TcZwhxaIsCfFrv_5I@1FV2Fgmz9j(`1G zfVJa+oNlpBE+026ui;<{H%H{f)tumV3ZJgisima6uF;~&e6cZdbkcn@V^q*)c!+0Y zghz`4zMf=xfQKATfEFbv=r+4momi+Dd0Lq&rWx5URn039$uOU~Xsk?jq)Elo<=Id- zH$U;$D#;ic(Nb*9H?}HeK2Gp0r_LZ=`hK z2siZWVo|NF^&I#Kr9V+h<);|Y&x16bp-d$A7-gC^#wJt-Qlol-t@xmjEG(v(f)MG$ zsJk3aq4do#Q9M187S2+SBcKN+qGa^o#Umq6ly#zm%Ol2Lhft!}l{L+$R!U}%DWaJ( zN515A{Yv1>4QQ_E_-QzI2hK@dOMzv|On9G6uYhGc9cZQbdO5U0H= zl)N1j;yH3Zfsx?zu$wo6KdygazfbPXanx;ea-B$Oy^~Osyuz+}tcqT}_wwP`)GkXx z{-=CU&s8uhFP2MNwwguj>^G$_`Q*xYCAtS-Zc7_OjihKZ1*>c+=7q0j>V91cj!??? zS-4CEZ>{aVD>dmtOERPIyFr@j znmqd#@S*Zcbx7~HAf6sSN-Kot(6!tMoF|JfQ9eVnvPH8+MV4CmZnQ*q(#&$qtdvbX z*@l(nYObWo{nWC3{C+~Q9+a)w<>VBZ+JfF$rxMonJd8hN*VfLdoYjKKP9lq^JC@X; zo^9><`33UwDHvg%kpea=s_IjJA_eazX~Pb+_uv^xxeM#H2X;O6BV$@tP|hLPf-7|T zB`smCWhUz3dp4_lo|F_@145IihL+v7M{#b?aZMFEBw$a;o@m)?gx29a#zX4>bW`it zCV>_svi5Tvw25aM9|zBS_5LUJFmkI?(yF-`;g{jxKV%mB$@Wa3>3|K{N$gQ;g-P$q5c%xT zaF0rXB^fifR86*8FE`b%lD>Uae;dbRzu?ps!Ey^Jx<)D~^>zOV+jIMhdjx*!t#aW< z{^fz#LgD_q+#^dC+TPp07W#srMhD$J@ThObd5wh&n2|i++dQUr^jjtexFQ* z2~*>59d0Q-a&22KEe`9g$G1YbwmZf`t&s0~k07J1H_>SD4!05dXOfDkTnWx0gPFlh z?@+o`mSPOoA7s2O_MI0diS(mB#y^qM#$d|>!x(TYVtg2LxPsIlH>;bYrijkTkBx82 zQREh(cT8v=M8abBO1e&8yx}c#kQEd5(o9>zjPoB<-yEb}U$0*0M4d87XH!BGp==|` z!AoL4<2@a|6gX$)PneYRm*`b+NX<8USqk~Vc4Q>t-_tDSlDppD8iLsJv#qhlUbbFF8Lia8FSV|92D z(Q3t^ucH@rYbjCa25o#?F5InxrzVTp+W|(&YW(45>h_x3%*4E6DaAq7bcq9nD%4UP z66G8ZH=3GF0+()=n@#WDE}-0zgmq5E%fzJvJAjl#`EJs4MlIZoSD$$(>Pb?x`3s>D z8a$t@R`WQ>iZz3lesp|DhlUCM9EViq0;s@#zhEKo+psk~89tsmf`4jH59cnM|0q`m zBD(UNDBC&CEL@d(TRUV!=IqKxvV25?{)1M*1RDdsl-Fj;*Ju$bNtFn-Zf)Rvg+MzUQOomua^k;tfydo#;HOt!GKd{)*%Rw^JhX z`i6J}FKmUGnaVl8y6BDZ2$sGqbw6qyv!tC}?cAqhacsaJX6R_5Kjd$9s=lJve$!9# zN9V#P<1ex2;;-jkz-+m{0i2{H%{pRSm^bt41(4y20=$=y?0s@k>}c?O970pEENbUH zHdc$jR1yC0y5?`ixbGb*H24)N$&mFZT!Q}lW};!;$ZVftl4 z*`{$~3M1%JnP=i*4>5CS$STT6uRVCBhBT4IB*Gq*{4DHbqCjYp8`qwt#b;<%PT{># zKadgV3^ELlLlOG132zI0(s;m8djByx**I$4c{v-8n*(m7V(N0MB|cHU8^!83D2|%N ztxtR`boq1qJ)Q5~_uyqQO?cQrfAfF}xyFW+8a(>dCr7J;70ZKqHMS6Hx+Dn+P(VX@ zhwe?qL+MUp#(s1mx%P0mSJGdeQ3{t^#bzQVwdD}wNj`PKT4Y3AJ*x9=%bl?|A}$`(=l?2Q7+u(J*1YH$vh@83EA$km-eH47b_rtW?zIe7 z33odg(sS%)cV-B4>)ofFaW~IoOHEeSzqH;9j@@uf||!=H3d z-yC*PzWWF9O~QWjO$#Nstz_y-KAP9qC>v#aUS^N1GxM_F-K>-~StGyaCx_twxo7I} zQsay|^Rs|>w52hVqZC4w%xW{m?zRKs&Ppg<@MQYfbj>!T%HGLZAqX<4@L!1=ZUEI$ zk)tAq&bwyY_w#e@S+GSm(t;A_sWRTGcWX(gSbaX%?1ug0vr(-HxaBB^`Y1@JTo-Cp z|IW(Xy3y6$!_Cd9g_D2K5&EUFsC-rns!%0YTcag72m@L81FSg{k$0r5UFXU_c7*H^(7^ydDF z9({5~1dsobJKZFTTp+^>tEw-rS3>j>XsG@wl$o@U8G5)!JTKNvDzpd74uq(LLrl^R zdUA%Bxdd^BlLD6jnw4q#!B@|HC0;4SzK&(TQFu^IHKteI0xPbjZC@h*;JItZ>k)Q= z2>yq6!WHC>9)vnfZBQ5ICl>IDLW`O)6Vs+Nm6eWa`TzvYIOJ7r?T_!}^rv`V`NH%C z)DBTQM~Vq*I=OW^P^%RxGIGbMT4AqF!y;&{UB-^qdhPu|O&S828T_@Ys4bJBpxE`Guii}pX0Vwjv^aV)k;S!xPRj5d7t16v%#}luPLe*R zwrbxpK`uU`Ns-}Q9-~&ydt+<^Fm)>QHcua_2J|m@tBlJsTP@VAdq+lczLsd%g3n8J z=9HDFPEZz`rPgpy+CjgfM<7-;PNijaI}-=l@l~fwBRG>`OY30hdQy0^_tNp1Df{q< zn&z7K0fsoIKULK3bOX6Hjou+h3Qf9sSY73)rq|$5Jm(R!c{(0^zxi-FK_OYds(w1& zY)b~z+xg=KSswQ@G*T&T@ca?dzLg#hky_(sfQzU9pi5}>7&1w57*Cj5mQDePkAzOJ zA_2cBnLV#pP3`J^k+ENRY_4w07$XAV^{o#wQL_a8Tfzr%c!G*}wK$|0+z``4IUd#c zBX+Cj1ab1Zpfg=r;=?rpxO7AMk9k|Moyn1w&a!X*ueMH3iTx*mevNr6JdGI>{t3ZD8+)p*br->D&1zL6%97q3Q z+q6sc6?gdgKJRR!0k`z^5qrle-Oh!3%USyY#zP2AbzAZtg?Wfgf9AfaUYpIDGa@7q z@;vZpnoD&R)1=Gtgg0}x9&3%7KZ-fbMVmY|?_txe+0Di-!#2AB6~))ZLEl*no^Xf7 z2+(cVhG91I_b~L-TpzkTGH?rP%?H0lKU|q?JWGR5wBDja?*V-ZHKQ0?>vf4BX}S8J ze>$x#=#C{{irXESW0=})zIA-9WTTFp2J>w-BG*mj#21jpuV@EJ*1edc8PxF&)c~1i z1-1}0l4zn~X;+5GRIO_u<;JkV(8Yz^X-&zD^+1ixnpX zYNhQFQkH}~?)!c;rE_|O ze6(!P+u9hc+W`z+$lJUfZ^c~s=^y*1<5FDi&AwiiHIkyZzzl5|o~tvDw{Ll_P2QG4Afa{r*_WWKmBZXkfCC*z*^fJnxigwndi`-8mT< zRmTfy9MR4)DdWYdpx8Z!o4Bz=Kg$3bZXB^Z&hmwp$Kp+D(k5fAvQ1IH-ZMktj#hG& zO-_Xkx(Ubb+;Wu_qUdv=;LN%#%**TEUw)YtxPourm3z*Ms*l| zTD(Tj^LG^zOT6fvq62e>e%@I*tk1{1Y@emgb1`OXm!{_^ckLOJC0@E?=9}LqTkCbV zkoT{Dx^2Z>z-<|x8*>F|!Y_f&sl2NF?yLCL#Nh_jw?NB+?s*E(FkjmnHcC_k_qXG@ zj!e>IHq1Hz6B19JSh<06_3*JjuJzy2Y(#3QvRZ|js1pzMKODY%O03wlIU5X#7#$UL zICGO$Tt}wvhVW=Su?%C|tj3Wp!K@TESk}6X4;a)d%}hF$k%i$8>fQ=6uq>Qd@^4_WT=1UbdDbq?kLh7C{yGNhaVH!qYFI?}pA@Uq_Z1 zw*@k707>pwHCtyncVR+l>{xFT)SX9Q>NRUGi-P;%VYwoekn}jFv-4nVeRmD5P&v9B zRIVy&wkQ@ngTc59qpP(;*T8Y4K%X@6LIO?k$Nu+wmggx2wnNP4tQtuFd1GhuAx8|$ zlC;fbkDIs^FGKDTzl-UC;n~MGoCP>_W~s?DKdO7AG<9G)OKV?%kp?+$vaXHS5+ofR zT_M$!rz9I6my`5hC22K}sv zhBbN2-M9UP(T%ev${-3Hu7`DYqpuUty!DGaxHJM6Mchf?Eo*kc3l@d6Nz#3sP+n_q zTkGM;U$fa!oNZe|;5oP(y$IK%jN>)lrp~?ayGZ*rZI`q@Ik}{ADON#N`6A!me9S~& zAF+P2PMaHtt4jD2*S_57W{N?f%6nHmg@j_l<#TT$2If!lK7;y1s%1{2AR0S3!Dgsw znZNq~;01vhJlhrQ@AME3uaWAis_A!0T|A<$SDS@^#y$c5p1(i_)H*8%&)_hF#9=QW zl_2Z^GT|n#GoU3Fooviugw8scu1*GmVs4el2^if`O)s2Hbt*Pg8g&=Oo1`PC$xkv3286qwG_)M8k9{LksU z-A~^Dxt?32)?6BTWluS4Z_%g+?GZeW)$ z*B!GJ*hZo93XyU z*v<|t-UqfFsmbA`^+i$+{VF{x^X;#gnsG2_0{G#6>2Lu#ssvb4Pw_)S>CqxDU=Z=X z8c*DCB`LdZ(>q=FNzTNPV)NurVoSd#>+D^94^*UdV4F42)6&kSm0~LAlzT}giwSXt zO&hic9F}ZF?%*n5JaPtW*}xxYq|rD||9b{AQ})}@ex9j0?a#fOdfH9eNHr`k@1I*k zs-9{lin6ef%BrT*xdZ>Y!;aJ9_@&g5?54w!^x~v&AMHl4c7X-kNXL@)t+r~$Y+V0N zxFr~s()>=-v9>Hf8;FmL_4tTE!4yIF=c0v)q=5Zika6vDIL}PxlR2i4I}OX%0WDJ? zpPSZmI_kGM=(hWOL3i}dN-y8lV-F*`9v6#O2+~dq$fEk&VLLt{9Vg`LqGjF z>A?P=imf`f1e~mG#jFn%ILlnycbgxtgqnhj)eFIKqE6&RaNUF-#&O27VM2| z5_T4CH3je9CuP@Za4I@bSG>xG?wS4QiqSNd1hIsz-p2+DwV-N?dM1m5l{8LrcV>c> z=p3ag+f0(Cb*6v0-fA(x*}mZ-altew69p_#G5(SN%|8f+zk5ez@&<#8$+f}@HP)Mj zC9Bq7A5?<~DnJ!FO+VaDJnAd+cV3N~Egx*90ztOv(=@Ag776Ps72(|3KiteACRW@= zo(ZQ~MtmJR?MIlYrz4xh%-V?GIh`)2o@UdyZx_3fj$9~KVNrX({9ve{^ksmR2P<&N zP`mjv$G@=k23EV=x9uYic}2kMFasmQ1Ji0MqpDszySU5DifN6un^K)cEl~x?BEYZX z*QxF|`f3x$Q26?y@(93bg*c(ok*1Kl#u}iUY+Uo(K79|xK&DQPU%-E~WdEKikG#T8 zEiUqQSuXZ;*-#EUP`0`-fwpDA>wqkc!V=8Pp`T}CU0FFb_W83;vv8G&;IgK6{}uV8 zl{5@n(0Q>P8Z=g50AGIfo7f_mN1VW4ju8FXRuT#XB z*J{Tsnf5T?n-Y8I*jDm1HTzyl=~HT{M+p7{4kE2r*PXkdjhy1!o)jv3uk_mub-Jlr z@MGRBg&rGw`%^2Xi8u;`Es(p9a|`K3jJmirHc2Svz}9zS4i@8bdRYqiT}3?4jWMfJ zGN9D4)8vSkV9Mx?=T;JQ5szom)`WT8=I_&uhMc=v?suH2Gy?A$Dbic~!L0)^@$(Mx zLlck4S40>c)z;YVtq8y}cid+C6quq+rUML7k%|gqND+y>iMrnpMzT4#DwO}~Sc*Rb zUR643Fzed{aJ90^2{f_~z8V6Fo-Bhnl`Ptf&Q}u=3tvg7T2a|}5i5xXMGTR{o1Y0lq*~GQ8KbkF| zvEs*#6Nh`joz~$(T6_~4vVHjfG~>Xt$ashFf~1hnM6N+kAg*b6c#>OAG7S^G&#JxM z-QCX;n$H*U39gHR8$MX{zkVOv06s-AbL`(OF%LhY)ednbmVn{3Z$zyzOZJ8uvVSWf z@W1xdNFTP>Nw2=w#d^(>0cX#g>W$aM8Y8IzR0lni9;xJ=^DZQq+=r-JU2$i3P~S0nku7qdG#n zv5DCVH-IN&+etCRAbvmD?lFD-KaKxiE_p9rOa~nbRnV<^43m|BNlgJ#ey4}ecW~ii z-E5xG{|aTeb^TG5K=E(u2U#odknvouqnh6l*F#9-!Nt%^`2c4=7~*|QXv%}Q_fPZu zXBA%z?z#XDUChs`3DcQ;ZGt8O%ru3h&Z7qS_aKwQ6OY^V5H8#6O~i*SL~XNHTx%A_ zOdKKmTTalz{Seh#~)(eu*2o!6Nkv} zCKylu^8nX>R^j(XEC_PfBHR%f2-(RekponP>rgIjy63>gji`Ou%t6L;Ev&p2li)5M zH&${zk-@4ZMk?gMAP|VF>-eezqzlFFpgt64W0qnSI;!TtzM;nIpq{z=13W%iGbXbd z3@I5+vX!61yIzA>^go^4zw;E-V-XFV%e2Vcl6*>vaD_mmR`s-x(|fqNxpBd@3evjm zz%1eps#Ngvc400}f9!JjX44mFbl}ohCi(QQj2jxV*GIwA$jA?qo32?<26r3?Kf6z1 z2qX!~@K-zPm$=@9Wz~fwIOlN=CDjI{)3^J&j~wxZV3ahe!6xzUH<)|nBw(%26T#Q{ zs@Qv?w+Kz0a%`TYIk+9tP97Si0nq?OgokUf#=m`$=}^vgo|~H+*@H%-`9`>r%sCnC zK_d9l!XZ=POb+IWyaQ9)N*3W}?0xNNO4sZ*H+5I?Q;Ahvi*&F>|$6a>d}}+kCp-e6r(xu2_1&H1ZT4k$)T2(opsS zZWR?!90$nIZm7f)b!2sBTjx)wu>0fH=L{<@1i#1ziDbF4>7iSr1SqFQZ1BN#@oJp> zP4sd;=V~j)CP`;c|KecAV{^u9P!%Xn9MOebJe~4`fZgyLtXejog&@WaOFwU2=5Rp* zY2uyd>-#e+aRbe^Vhj7w_yVh!;ipM9a9OCQU> z@srs)NdgWLd2C_=t*@`o>VTBzQQXRAu|Fb3Q%>JQQ{q;!!*4}N+oLy}>gS8?nACAT z(&|olop*C*IaF6ypPk{V5dQEn$Q>~Z^90^42OhJzxjC|KmF+Bgy0RV;LLe8ns~lvb z%f4>j( zc2+PBXt)!d7F3`dVK%*P)Krc@SbKQsJjbjg&$tIDhfBf=D;}ZGcNcp_k9}!IvZ4*lW_5+y(8V3KC)Nxz>B!v16ek1|1K` zsS*5Fp4QXhFGCQnuCAJS#wR662>1AMaB%SA;-aU^G{9Acq43&ul$1(Idnxbncdm!! z3k1Mu+(q4z7T$rp0qwN68p-tb8r1yaawqrQ(wGPGj1EXIwZoFGZuKI}@cmu^ z;FR%(2KapzQ^h0+vf04l&@el~0c~2R7a$N`4P7SX)``9?2J|qgr%G!N6pu@{hsf=o zm%YHyhkSXX*y&H-=|ptL|MU!3yQF$mL~FBkC}~4uTOzLdYNP)YcZ0@zmvyVlMEu^h zI_t!yH}YTj!T0k@pU(ym~^y$(x^Xh;dRc7rKaB z!AlXMuE4=Gcwfmq0p7*VK>07}HV1$ayYmFyc$a~HLS&2y-Eo^G1fwIDfni?EwwGeN zzRlHm8q=x{aNV;qf||f`{%d!Lgb(i^mG7l=%HM$MG1M{8!;|y1yk#>fkm=;?V~MN4 zrE`a7ekwI~$?|*m)PY$9Q(bn(((3G~Cu>gLr&hO&xXp7VM`E9eA9a;^thb=uZZ)!o zsnJ>s;HyyRU6--~1=CASNM(X=JwyWb*9*)!B|U;aM+PkF93O8MZ@YAng*rZtF^y4i zX2{uEDeV>%6zncn&P~D%j#jTen4F$YO|IM9U6ieiUMq7kHD$D3uzyN6fU$c@rcC%F z+p2v3wpjJGdRM{rI;XiB{0%+d4-X@*j#tyHua3q}Nua#oYPsS>K+=jjS3YJ5m{;A* zR9KI3;{1}?h>9tt1gPNW8~|Qv?Cc^hgO-YGa7UMvq-Op_b>C_P?fQoXM)5|v`Y5dJu276OdsA8}cMf}HF{-?(Pga*NF>+}bA z(aC~YNonpqH0VMiPEqfjXIo`ZBIL})){$08bz-zug`SPdfg2-m*ujwnp;_JSrbz^7 z@hN+ zn!*R_h|WzXQ*jW>6-zZXNp0aX_;V$H_6+%gLja=J|Fh32uNg^}?{-;m06Sl9CNH-xKe|yyBWAIw>V`+JL#-#D8 z%H0*M5H+`u^;i?tGTQ4U{+;6Argz%2%Kh7rYE3~9JLDUzFcr;0$Fss{queLD0_zvK zZ&$9))2_iqNAgDJX@)u#wOa(I#&=vV5G{~)Ehjayec5^XpQy4`3}S^neHfT& zcDN2$E?OYtA*p7^wFOtOkJuVwe0eX)9&~o$gH?ujz%vgl(>2!{2Bw#Qae9cql)lb< zk=5pl}!KhvbM$z_tplskeZLntLY8ecdwNJ^&WmKJUjZq9OsKUYnW1yNlL&F!QjF z@Hzy_d<}3o^LQ}*D{&vZD$aTy3LI#{z59z#b>H);3&~L0DLe!Eq z(SD}8cK7>D!p@&ox(EOPfLdFcO?`-DVlM;vUbl>Pu^VU|Aw9l%Zb{H`I)I#!fZ~7Q zwNPGzEFZ*z0ke>gmb4Gj0yv@$COGs)IXfinsrtk)-woB(@48bOLWmLvTC#-$?}u`d+` zA{;tH|K)xT8rl=r)?IDSBg0KEMOX117tw1y8N<>MX(C>TRH&l*=rHVH)!$7-7nZ*~ zQP;b#Gc&f3*pJPdtX(XB6yLeNhYNsS%-8m>fEw!x*#12E__zMQ%@TFxn@vwl*wq^@dOdk%xB#bfp-=LTi9)qzDw!9sSMNSGFJF5d7Pl#0Y=a zt8ky*^&K2ve<%^Q%RJ%WY7nHrh!-b3qD%s(~OiH`M*W-`N#ke9azfjCD{+}V2^@%2~tb=|G^d{ z-g@%5NB4e^pw3F+N@&9-Wl2eH0az85*)e9FE*tAG_sSzB#iiQy3LjDXrCEba=$bf^ z{0(kLJw?B8R(6hgtA%jozC<~qEz8FxrUcpuT+PeJ4@ogXdK{kg>@S#vW;B;={X-uv z=@wbuS^OG}-^sdNyX04_@trS#s6(D~I**P{3Pd_vO{n7kZ#4Mw#KFO#p{nZO>@1j~5CpAy$C{Cm;kJ1B5so*dloy{ee_*G~yxqYR;2YH$_HM}z z26E6a&0*4qsaB`|I6v02Ul!-@8lM923o{&lcpWnTw7t8+d@`sgdNDED^mwPQ`J}SM za}#(yOpz(53J~RLI(kQ&d$>ADTfRVwj4-37q6!Pcr^XZAKi%5e@_iYO&BRE8bU%}c z|L*F1C)?u*(A%x$wEiS4IER7$dODAaup&gR7FShV%QXhbiXC+|AGtR(#%n(E+CK79 zw29n$ONcz7-Nb)S(qdrSRvVXt7=P@#kvAQDFK5ua^qs2wg6E`2mtWXd>Q+j9kZixy zS+SpA@mH>C*>TG$GFuKt|EM=~JL3Jdv=@(EZlaU7EM%`Wf^7}aVmMf+u@@7%Cq4Id9AlWjd%`>u5O-g=idMI(Gt(r-*7w3p9AWapZKlny(n9+ zvt$Xq5C}lk^_3y3C~BuL7&ac>BzfSlS%=8Nq#p-* zN67XxKp}6{d(`bYd&6$ZADl5}D(lgQ%JT|139PB6E@CEcJ#ozbY%+Km(+suH$>sRJ zTb16P+0P*$*o<8jnGj^RTwOORH<9{`6Q!l5N{HUjAkbf!J#Z6_3YgpkFkZ$v4{@zfAHLnZn>m+|C0}>;3M75E z^_hEAGlHMw9~ZF~W94zV5tAgx85nAmHsJI3<=fs+Yf;u40sv_P_zGjMM|`P=pJceeLl{e zz9h%*5^vEyEd4hx8>AblRnGe)RT(*Ati`N{?T(p!c=b9fcWg^V-u^O zfA*Xtb{y3!BoqmlKOZk{-u*vBp_Go#>-;Qn=4{F4e96WWkvQXiepa(ObtxZk&9GRX zcOdD$a?-wa?Z0Y_L-g6Ejn^q>8rjVGVb#H{KlW?LuZMy6f-UPxAoXo@{6f>|>FKR) zvdQUbS?3z*3=c5o>Bftka`%%xqYG~o$l`O@GG%ISC<@+PJ=Ch+6g*!To163L5jeG+ zQSvrts6{>JJ}wy@8w;FxHQ70;Pj-?J%d9IaJN3!}8vBCQul#9AdX^tO=SQ#e)tOkY ziz?3}X3vDgDUvtL>J41nKS$@RNu4VKHHn-NS}K_>F+F?qI3M9k_kRF1C}!^F4*h9Q zC`=)p@1LWjGKk@d~>9WgCa*&66m8=Y16j{^P_roMthB?ukM7?H;Ojm?Jyqy;ai(>cVfuweaK(XZV$iq9 z!ojTt3<2wThuCxJ3OT=M?3&@%D3H@$+er&+EIjVYA38uf!%q2cYK47;d|&vCet$Oq z#qeqiY0fgU&Psq{_uOJvY@mMvt=8%xVwa|8(A}>G4i6Q0Ia}7y(9pQ0rRxm9R5_KD zPNK%LG77zB|j4!bV4FHkMp?u)@QC!M_r8x;89OlszIjSz;2-rK$y24ewF z0dTE*w%wEHwa=T|1U?{G?(wWHD?=dUE_AH2A97x-fI(g`K{>^uX}XJZn~u=ID@lT< zv(Ss>3&n$bf%&bUoyyC~=Fi4(hV=ZCz1ExL8jEfrGPXSq!p;wuU-ZB-c%l?YTt&;0 z%8_H_d9Q&6U0yfxaiTzSfE{-G*ZsV36r(V*O};Q3+ei^?@0&{ZVjk?A*u14TR-Rii zIJniES@*pnv&7E4T=FY*k8&Bj!I8TM8F=Xa`&8fdwEGYRU6K#HAC4K9T(_xuKhSG#UXC~eItH5rz(IJQ?L(q!-dyI zeAnKrE3tZr4|0~Ct=EcN6fYcC7xSVU#(2M6P-|ge@28&9rbs{x&Mg|MeOOA;6ZpbQ z%g~o!_)!2;5WslZy6DJ^FdY?D)iuRepr1e8Jgu-Q{Y4GA>WHRY6POpb;M@+No!}uf zJKRjCR1VcT`PkK3EXYA;9Kg(it&+C-Q*sWA3^RNnu>2dr_gyST4wpSUJyF!~MyheyZ2Ij8GSY0An=1V;gu+J+)N*xUAPPr16uaI!UY= zSM7_Du(X8FS4L<%Y-8U)x~8q1^McwU>QgwY=q8g>^e_!o^8ngs*WQc}hvc&NinTy2 zDgd<9DY;5lvjId0BFruiS0&OR;ALQOT{)?WvXIp&QZ98UbT&=c+dglRgDiXPR|zr$ z0lXAqcM}s6@UI4^A?o>6Yy$fqj8XUzr98cB28CX=c#QSb_+xJID}zI5@pJd~0hkWx z2U}P~Dd#yQKc*%-;gnyFaAyQLwStH5L0G{fVUNWT;`S^1F+pmRm^c-0I{Ni%>%*t* zw0hB)CkLYrqE%EB)Spq2ijWmgYc{2R@}Yl}E`DJhaiEp*_KS^X0~)G#{j;I7Yd{Ud z`t^Y>Td(mIi}#=!_{CathO0bH*j(n?P{@8D;UrN+m(RDx$Di(i07{I$?LG*ct^;OU z0W+?@9Do!0Ulg>i-30h%Fy$2C3L&R!gQuTKtzw89QNa;2;iO`(+c2T22YrK1q42@2 zdvIJRY}NsFQ7c2S>s~H zBRC}6f|VP)hiGNfAPLr5&yz$Q!K5kgzrS5=PTOnv0`*|^?c$YHM#O9gKRP77F;oiD zc{{&H)h2VzFL(7ypypse?8;9`;s(4io5@a54N>@=F|GXa2nJUVcqcNDl9wHV@kXgZ zT6bkN%Tz0jB49}QrQLCQ1{U*ePNInOC+r@dGE%DfyXv@~t~^vdf=ONt){O~&=@!}V zVbp*y5gc?=3Lg}_*x!Zr?Y!W5-4Yop)RzN?|02eL+)n*l_Qi^gm-WNw zX?^R?J+mQaliVml#EQv>>GR@FTRCkMj#m&evC!<&Zoi0*p#ZxS2vU zq>BxgUDo48e1cAn?t?hjPlxJIy9oFqR_uVd`F_Fc9=wCXX|+bH1IgJ>=yi>;S}{g? znb6LX;hw8NSMnDutU+Cg?QRnY5&*1x87Fv5<;(~O&%{2mZD2|1xr;}pBl7tt`Ula_ zgDyo1t9~fS7w*Cr^bwMx_Ti6K@};^F_1%XjY5fqUk0THV2e?*(x)FM)VBFd76;Wk1bs)+^!7jBVpr$pu`3?LVI9+Y z62V5D>GKqi&>@%l@MTAIiPp&4L~cX7{9=LD{lOX&Fvz>si2L)- z7js#38RC`=mQ1u<%3tjO>5e;G>(3Er>>}mlx&pe~-cyj-qm+tLvTOKOGCf+7Yfm-b zQ{s3Fs1G!Pky1cLHZ?AayS~s6dLq%3Vy@L#E9kcE^|KMGQ!PyNmLIpjrkY7F4IcG+ zroYDL#(a>*Jb(Mf3uVC?Cd z`kpJ?`3vSsF#M<&IbO8uto>%~wY!(GMwSqZ`m1RyG3i>ye4OCbH;8-J{9X!CmYOb( zz6T-y`wvU`T-DcB@%ywMqtP)3s4sj`*M65nb{$Djrp5S581`_0&~!|)ka?(w02L$? zSO7cgx+nqU1nP!l|K;@?)r7>z3!mgrj|8ttL?Lr>syK7*i%DM`e9`q==Q|i%t=@Mv zOIdk&+lwgc%x7#gb&Y?yG5<=gE_>ioo=>#F7wK4`W9Y_wS&biu^8(&-dlC4N|#=kTjJ-d4S6}&yp$x!6U zc0%=PtT~G(%3P8o>hAHV)EJ+{6IGc@*4hlYhemlq@K~x=U{`deaxaT8mGPzr!u@Gi zO7MbQy4^QSJnqOL@5RYaJqnK>xSr3o0Af%1$)OGFO{9KD!1eDB9)t2!@^AxG>EO#m zha*2zxKu!FnlQ*$ZXjQ7Wdh}1y(U}uaWMMh$L_WHW4_T0K4!G7wR8(&oE&U0uvOWbH59SiuNCR3H&_Cl;|pP8hU@oDa>P_y%t z5@fyMaE=l?lr*rjyf&bjkC&yFVnvm55y!qOvXO^dvfS<_xK$Ow7$W_;a4g zwBL#eGqWdWydp=@J8{hjDI%vUZulw|$L~?o==%+Fr!5|77gg~uWTFFf1=tz2M`;+V zl6G1n(t_VB44fJ zl?5_=d9OOpgNnyd=6d9ASNlO~YeAIEeoPHR7k>KZ!$N_sOq@FRn2fu;%0pqbwj~V7 zuB;UWo+#rr8KGCgGiSw})c7n|13w)@N=Xw`SO+R^28if39GoO9Wt7^itA_Opxqh1jbsA&bZ93*wQZdY^HwoxXJuP z{=*GX@?e!vMsUwGA4~-zu%ESn!AeRu#LBpCU;rML&}r?p?9G7OQsjKS&MH4W zd~9E?Vh#pG;N=Yhvs_RC@)+E$foFQOiWfv}M9YtsZQB3esa>TT(n+Y3}C`8DAR z!fSR4d23=g9gre?Y5PFbfhmt7hH*g)-TW&SWu@gB7h36kOjmZyz^CCH$anJ1kz6dO z4Tzo*eS--q(-28iD5s(zgDr{U1aD^L*qT(z$`x?1gReNTSoZ{8+VP}?Oc-S#9V9?e zH)jw{cv}=ZQdv@%(HjYCW``0ZXH|^Ud($T#5$-o(s-dj46^DDoJ#q+Lk*^AkQ_1if z7|=v8kaav%W}gkh!`r=$!ozRM>~u<~rI_tqdF7!yMj!lGmOP;gcA-g^;vdlkIJ~n{ z7*(z+ezAFEwoWM{hzs7Eg(?;@`hI^_EDQ?N=U*Ow!Z&vIEsAI2>um&GDY z4=_VK7=$xnrmd*<1xpjTS$jV*(!Sq$uUcMxYSm?-qMJJPHy9>lo?gC@F+ zglpA#b{mTybE=XWq|3KDUT08~&-i?M7H%5a5XFd(&tk-Fl`ame?}J%O2XyRPO^kS3CX39e)Nce1A?qwZ%42{P1hKiar?ZH(gaJ?>#< zsgJ;dKlrf3b*sQM_ineCeRkQizHj%s?cy~pO4c}S6h`>zXcEr$VlgFazV<_)=F}sh z75CT4&YExtK|0}D^D{OtS3K;b0en?<6Y`>u>S96Ek>+l6t6cwU0Zc+3g!d~5xYE$fK-ULoAat0Ng;LyqB)2q5gg! zA{JBO6ZXc7zn%Q?&7m;&m;;d$LbcCsu6ID*#ywK%UB1v zlem|(!0@0zfv$C?Rak4+1}LLZ3rrK-uL5P`8MmjJAcuvHI)CeyJw;ZTsCi7Ilzyz&^>GgTql4?*EWX)rJ}s9 z6~Q2Ui`9Y>IHY~~7xUe7@8UP(Mc5~NBllCjG%2T$pvVx^tC3YKQr=Yj;qtP|DeC7p zrzXO2yBUOUdXTcb{ew<<%JDx=dG>LF!I?TP1OS*|cAwUMI+t*{k$?yMwSpP~E!OxR%U&OZh-t9K~ z`Xwh25ZwQTk@fOLc z>#-T)e~=LN$zyd%*l2x8N|O?nCja;-5x8YuW-{Pw_n96_fS!kcdXy41W#n$}Oqoir zC-<$ACk$v?nf-bIP*88PlUuVfpv&c(!h{)0A<}lHhny=VuI(G>FD`@<0;RoP& zlIj*yn~yNt@`K~>aqX*tOR)0`&!&I1i-3{LjmOZUM;#^+w21rvCNiIDU0X%!HZ=V8 z{4|?5Ng`00KB=1!Da@92J7no0V0dRepFFqwlj!pf{2E^VL-!1>Dm}39KkfBg4{s>i zHU^IW>uT>gMq~pGh%fs>Po5CG^~vPTH-I1DF?tRDmPr3X{%^^Zy49B?j8J)_{UiZ% z>(gSN_y2*u+vV%VJpA+ATnxAD1n@=e;o)Sdpw#4_9=AmMSq49WsQq~Rs1T^*_^)4E zP=oz}x22LNv?LPf10dQLjo&~?{QnS%FVO~=0Hp)pVqKcTC{DX}_p&P9!C`RKfv!F? z_GbIp3Kpo4`!7`9|GsEs`uch;T$j;rVeNTA@$vEd%cnt%_iL4p9OsF{ zV~FP+3C6qR+gG#mRy01;HynAT3Dg=rE$=nUjo*&i1-$DZcWauC#B`qhhQ>j|G@=v~ zi~Lt=?SGVgIitC&@AIDaWf8mhM&8K<;B8NR4Xfvm!{9FVvAgAaA|_&fHAdya*hf05 zsy5SITPg@BE`*VKoLdJrku{(Y0G>sV_It)li0h<#mxN{#M46R}+ z!bhg2rY;2CY)&c09A})DGS1)M_1C?%75g5Iv=JB0-*5IuubTH4wi_m`R}vRY{S$Bl z2KWbtaE5Ro@15>w(l@vP%PmjJJ9Xw7)VD?)%Zfm>KxpHX=Na)N7KeUHrTD-BQk^Ll^$Hn(#@_N^@g(N!Z zhb{s^)ve^GBQ$F}Ld>Ke+J&7x_r$XV_eX1&eV0TbzQ%3=-+n{vgF2|V`&R?oBccsn zJkOB9O(?igZSIujXM8jrauAsUIzMli9e(q}bhSl1h-Iv&YUYpIa9I96|HHX3|IUKJ z1*`kAxCpy|J?(B%?;}I&WK*UFTioATn#c0eLgaS&%w1`5{cGsmI&4}Qj`n^_2M3O? z%E5%#QbI8e1bDB48gnm~OQ+gUfxd1d-&@&}&Ywmf^1U6{Ckv zb9cjfC;3rhpg{<5xebv2&qJR*`S<1;?j}IVs};MJFuGOF8@w(W8|b!Lx}7YrP8X!k z6j^r1EMl8qw7Gt4HH)lM9oY{Je%E^@ayZm8tFVICtsybrbwz4h<@@i9$W?S{k$>+^ z9KGA%L!?w>KX$5%hsV^tl+a$jL3gVADSX8nGb8Rtemh@6Is-oU=rro5I13OTZ9pHG zG?rzhQt71l?HYM!R6U#fU4hk=8|L>uePB@M=D=4f%lvjXq36cep|S*eHeHyfc2RqK zJx{Y)??Iv7QX)z=nS-=({#(7v$pXnknwbsfEs}?toJ`n0&BPr0<)!TK?<>z{;(PO5 zdVGy*5^VOrq@>OE%v8pC3=fS^i)LnY@?~OLyO-N*3>9+m`4ix2i zagI7wu?U4>^)@IPXi0~+yCFY%UFSz`xGW1Fz(3N+k-EqV)F(Mmn?&@wA39;@NflAS zY@Vr`mB3$`Y~68ON=t>ia}CDh+)a?O>Hh68zste<*9nZ1q`H*6o_bx!sbRWxbUIR~ z&CA@BTu`W8$8o!^DKB1*Oq>*>`+CMGjK`pNP86GzFWQ|>Xu{^^BgvlTZ7jaT?RrPq zV$!v)R_-MI2#Rig!ql35YpLH=+1yoQ03uY<$Po5gQbNo$xlUl@vp?hggd$y-08@J; zII3tu*C+np=Vpgj^H>X~N!T7{H@_f4Zp<1r7>?!kcovow-QkOl3vh&A!v%ZO`t9C8 zALYL{r$Lf>BE6}}pSLQ4Kq70WlWjN0E2LtX%(xHTSeXh7pp9%Up9up}b}*I(*1eF$ z2q=9sO(+`O&d%=gUHiG)IWHhQh|neW3ye^C%A;J<3yo#*^MQrHrT#j`-QSg}=#|`{ z1fgsxUl1(`L26C-!|5b{^V(j%x6F1~_9&!dN2fmMpjs0Bz%g_KT+eppZ@2KS<=+Cz zLnmTi@u~8Rm+@{w>;-xGp)Y!OhO_2x1^esk+b;peYvh8jbon(4$3|K#pfWc<&}&}% zKQ84@qm@R^R+KM0x_yM3pn9?<=j!D94>#(fSX0n_g5GV_=o*|%@=u?|tWl_G=;ga4 z)^Fox^G_dDvuQU&iJ)MU6R{bx2U75lju1iD<%iy#=YBxL&nsfTIu-M0i2h6KN3q(q zd*KEi>ZC1Ep+UWTIg`Un?!HSLx(#AIp}ktJRaC#NyI_d%7B%eXEJ=;)SHMjmWE^2E z6%;{`uU0j1{?kWII@Q>0oVYbitC$?EWOE*F&k)yf21*HC`Nt>uZjN&r7aKdQ()qAe zB|a?F6}@{tTsMN@pPs7AD`nW8!N%6+wiCGgu8we9kv|?j5px`C19NqEeWR^NC|IN=fWfc9^Fj%5^&an(!hET3jNVEHaZL+(`Z)S(4Ppm)=s;^_7JRH>RK z$M_=mHdUK#R;`?ab_aNZ#dGh`TX0BT%gN2jw0}0&WS*RTZi(Q|JRhn#p;_IM91>&+ z|3%YclD}%&G(gV^Tz0m-E>3mN`is0aXT12yE@Hh7RK51wy!K$IS+5nZHP{8*`MmX} z*Xe}UZjUD-1$H#;1{a)G{FnEb?F85)|~O1F0RIQyxg&bn8b|)afpScuBB1+ zlyvwr|2x_77D~mxcpnD-cg*g)pdDhX$8*VkcN=U%d-+(`Yo54h+HHq5+Jjw^zMS1Y1W73A4STP1~&S~x0vE}L!oiZ z6XjFkZ4Oth$9(61cu`I~AKl}6(RHPhQLN`=N>QJvIa5v3+>tt#@s|?8Jn^3&Ibq@W zQC^3vDN;z16hY*?pbM~@CIYASCEp+M37eiLZhJbLZ2z35A!|I;LmWcga5%w6th{EW zbUlxzoCOb7Q_h#j+%Z#K#QX0X(a`j+AMi|o=4UiK0eDC+-${k3v)}OTZdn!kPL2BY zb3SFpHraeSE;O&bnsN7;KUN*jERZsl6Qb-3cPg(uts-R3^Iiy6Hd2Qb=xyG`bF*aP z_;-@@hqAvTc(S7jL-9gj!n%bNY+k63oPxF&2N%0#f=5!YJwYlzV}AHqYvRo4+rg75 zP|FbOg#w656G+3rUr1t`b6qc_33~VDeYlDqGA-?0C*Q2|70J|dH+rEE3YB}NvAs#E zy&HwobU(3ZL$-QyyB#(4&F~6H7Q`HFrPix7&6g!}DiC?0SYr2y)-E7qA-{1eyYWKqF;>Y-VlLAJsCX3UhMXW~7}JAy1M@QUQzeL7fo%P#?F z@%J0kuIrm{*&}c(xEG$Y!Mf)KGw0Cx`FS1@#8Kl>!{z;)EOEjP-jpFWVaHz6p35Yt z^Q?>g3(^At6aseKb#)$gvbKHEoN|#-1l!FdNPwNUCSL3co>R%Osdg$_G9(C9x$V5Q zFrn*VK`S6ib?J+BNJYhpn}$YL{4DWYFY%HO7L!t)WWL!&a)Xo96Up)!YOI0UcOmHe*}y<{S*_l%$_Km4-4pbs=bizlh`_ z#pBcyInV&OiOCik7S@KBaKI4)Zov2$h4MOuIXTtdOK90i^m?<^b!FmsEo6k$vi?wS zzG*$NNDvDaMrzH64I@s}oOMPh(3}al)^B=}*=+7i7+%waPHjS)>R2-ApCd#OxjCJI zh)P-0P)DArPJ?DzYkf1p=s&lp8LhS`2j70bsaP3ec$3p)sQ><}*6J%&(wST)EG;}n zUBv|XN|hnU8(?qa1w3^1B+cW6vO_WJ*3C&)n8Q7GV!1JeZy^sne=!nWGG8&eUENw! z&c{;1XxRQR!%QV9%P7^ zFgLd;YiGeTP%!5^&~=(VbPu~&3XSN`@C>g-e(;B`!PzLE#K*#3qIg&|KbKsGaEr~(h} zt>?+Ln@eXTNQiuxGPIrEMD_6#>D&u%fq9q^+@Q{vF*eWWS(G*ERaQa%&uYI3#hm)o ze7(_9+bYDG3wP4c)l*@fy~O_HQ^Z^>mTSG!eR4LdG3fY{vg@Z zI=pzI90ZSed+Te}cM~?D_{4v&@O?-1cxPDC#@VS>@HD=s1qQ+h8`R ze6i1|+lX3&stVQ&jh#m8qAI|KClzOY+RtWyI5=9 z_14e1S{sCg^(KANRc-SF{=OUf+rDSLWRNNm=am;8>wy?PjgCeZ1m``1*Y|%r>>v^k zT(&KLRY{wKscd^u-n@BH?-__VH$BD}H}C&$<#*Mnuc3E;glMR`Kl5E0Qi#T*vC8Rv z)YUnR*Lan~y%t7JlvQczY6*7KCc8-OJcY&Zi@g3}AHGuFFs5UJ0n1#0MvS8~G4C9$S>YKMZI(=&qFhh+uy0&4xy|L+Zgo7QH$rMcSmue`ORwk5M zcfxZrLLOfYI8Il(I_~Hn6IAYB5gGoF;QHUi;u0~@%M?L?Mu+KX9p_8n!Ry%>_oMSi zcf4L3nK>#~#3YxGtdl$<-Q3!=adZL}X&^cgH$f9w^qR+@t;%Qihk zW4It!#gF>5G}+pOalPM7;TjjalIoJNSf4|BzLGsMMq2;MfKCJaxH7ZsM9>p9lk-n6 znJb^e&8YPJsG#E&;@QT6R3-t>DkAl-uknV*F*^PIM}_i$O{$W4XR%-3FfC+}+-ctp zB%!gtjI>Z&q-;oSYUVn9O>J>;G}arqdw21=;$(jdrL$G+T|L1H`ik+P@~pB0Bl_nL zDnDCd{o?yB4eq!USn+VsSniM@&l>;qc>I}1ciFv!BPman%{lhv`U1R!f*%PdZjXl` zyTeM04mY(WM;&FWq+6>?orwB3v+_P8S=j2?^Q|c6b%uTJ{H6(u7_6UDLQ^y0Rqd1y zbZX0&xi>Dg*FAN*XK87vUn^pmBpn3&1dxNauQ_=doyF>}vhJW8S&g=fW4v*U5W|1u zv}ppVEuhf!@0R4T@~$=b#noM2bFVm1kAldb8qaq?(DW@J!GxYI%=dUuNlr%9w9(CR zb76VzV}U-RfS7RPN9oLV{TtiOwW(RBeHehs1YFYaCIQ0PQTfifuo?pj-qz_p%hqv= zW77Ik$1-KLht?@3buo`P0*e!|3g>^cQ95t(JrOeLV|g1z8oCr?ZRh5mNE%S{k{9Q9 z%3JW*yLa+UQ$fZ&5O2BT0`Fkl1YRioV148ibsi^z5aN}+(5jhdHj-3nbThK*mcTaG zA!_e25wTxxjV$bvFAnux^7N7~bJVbR^IKAxJj&uSRD3MUlQkNp_>0fH^cHNNu85Sy zUZ~0Wd<9|TA$*$BrYA14x4yB_y2ov`KjZXhJB*nvQG+Jz8P0+3JXwNsQIY_h@9ukg zPk-c|OKJ_`n;5e=PVgZW+e}V&f;+ax>c{86x*d;@lfDXLohV2jxTW_SV6-^u(gso# zFb+L#09EW|6Aq~-{T*`hF{h|T<)zzxOFJ=GSvPs7xOchihbEp);&nGKCv5BRUnK2u z8=cI3Bs}9~yLHj%U(T#|DR##AHpRi4YK}|1WhR#_xg$f(@WSD)t?~+ zm0bqFwXhL3b2oZ*o4cd9pl43Yj=s_9o>3l2fU{Biz;+6M^ds@U;XrBk`P}3Pfz`!i z`C+{7PX603SH`=~P5gT6zk4|Xg6UV6d*zzcEAY%QSIyuoi`w4F)g(``X(SQ}@aqbT z5rz$0KV!}Lg)Y>bGZPx^iLw`VZi!BsZGz{P*&;%u>{JKVlgK2e9~CK) zD>vO@Yu)P41n{!G?K=U#aT0ogms+E2YH^_^Lzuv*f0Vg&TNnEL?TePcQ1?Ru_v=0J zOT-#898=R(gvq{pH7R+TfiU!IMI!$(_2;oeXy|-R@W{ zAT%uch+xW|WCxCmk&yRK{#6UWAQSg2kZJW1w^jQ?W@kg&Yrh_X9v0BBVC8|BTIV#s zrMhLWLI6ci+d5CuB(MU|`3pae?AKmG}a-M@_uP+7m0e(m0vB`gRm;r59z5>-@;BNy#SV zQ+6*gsjaQ86pCv-W>?Eweb&@lc+f>eJm2x=)fm%i2(L!Z16mILQ6<`Yv5b3^Cg|`5 zzhZbgbh{A$w1+x{B|saqY24Ogv-8dKS6*+{Hdr3rSjMR<6p;FL`2cP9T^f63HMP|Q z6g91Ff;fx^hqIE@+R}<|jnB2dp`mPKlXTy;VXQ)B@g}@iK2_Z`AGZ;w*Oj^iZKmEC zxv(d{Ak%OOdoRck`ecR3-84mrmZh8cF5wNGm>%16opC=n-`L)E4iE$txM0qYePf=+ ziF74a-iMD4wH;RV1@o4%?1%jon2r%}_u&4h{$uwe+AV6d$g)OU36(oU3xjVwq9Fu) zWU$MGs&2xr>u!?sxc1mJmNYNK7XIJD4840mP9mQMbxbxlr)@$T0*Ez1j@Pht-ZY!a zwy0C&{N`=-$kfc*hQQ?Ln&mbrDJfO3^or#-tUOw_l=|Y=$DSdP%TaPVANp`G_QvJC zv30vS&qxJN3p~I}n^HVpJeFfSa%}+Y0UKZs0(cNjLFnBP)89yD7->#eKhbjO#P;X+ zA9vtrW{KF*t>>2-ykf&!r4BEoYre_gWQH?GZL4Wb#Cm&`C zL`Y3v?+0-RNLuUav;(`Cgt~N!s_I6jMmH?CH#)cp(r&ZvpQ17`yN|YKU~FgVnwrE3 zv2)C~^1UETh0xe&v?4|9B0Yfu+dmQeBV#O5ml&k`J%_p5+j@Ykld#bdI8s^qKGz8y zh-FDpmW6%hPOq3_?`Cv$^jGRl_vYb$n2vT!c2qMuM;kGnScNn?DT5?YzB zLC<2H9tto1I2og%26OEoa(ndjX1l!5jvB1<^{-A<$R7PM+lVSIB0L~KVz%M|1(mU8 z*2ubJC0fx)TxVLhOq}o^#xUo&@9MMrFF!kqltH$>p{9afml9BirI#=0`X%UhXf2l) z7}2+KHu#U$n(<9xi;0)2ZPw}&elm^H_nj~C zlvJDOwk>m!z`#84~^{E4??P8)Q*H!M`eOJ7D07_0LNgilpe(siNN9S&HlU#kqY zByzg-ylRz0h*A7uWh17O=7~{zK~TxL-h|vp?Elm){1uC`1psrkfH5%}*f}{R7?-Z> ze4%GxZ?UnQkoe4pS3sof`nOW=Dkn;Fv6H{ZI zK~gQGiHY@!xqqL?D+9t4t;e1aUx3T-AC~>7T+ng809n9#jt!^&El$Qi7xlFhqg&RZ zi(zV*(n~fXgenJZ-us5n z&S(|Z@#kDGIsN^EZ5kQemGS@ver1g`oW{MSDg8 zPQAjgNLjvU#I3p{+AGP$&21TUDW3K!#R}{XW{@@P7?8QH^;_VOrUyY!)}kN|3Ok2~ z@b;}#I|cPS^H{#dXud{Q!TN}%c4>b*PS{u!1W`g~JY?gWq?V3OJ*V&jof?k`+OCNS z-pilvPOO5rhy@qGt*hMb*5HMPv(_K}Y@)BSnW=YKe<7#sid@YTJ|N{5g3S~OzIdIF zM<`-XKy;P{0;QgnP&xHqee0#l{jsk!_M)Hp6lx-K88NWf||Z#X+hh?(E+As|;LD zP`D>6he}`HMowL<5Uw+MP!}H`}Vx z0{@EIA5cZqL3(%t^4)DAg+!TeEkfLV+9+F2QNa9VeAE{ItSw@nZ%9H$#w_|nl0$|E z;nm;zG7wWX1C6!x5(&*; zp~T0}IKauUpt?j&97e;L+dj+~>0{vhkhUd`$00r$EoCH_IGMApM?7ZZeawJ~UM^)S zJMG0PsbWXJDy;(NiWG~0ONT#K-g~aGfEG7wZTD>1L281hCfZ>L_JU-+4Gi%2fCW!Df;Qt9_K>K zDhDQ9vBrS&yLHR>30U)w&4~sgq3~C;46DkL(FzHWhq^<~wdc7xNi&R_Si344CA$zO zGZiy;$jqo&>ce_gQ+fUF#kJ~k(E+DzLOwWDvB9`|7i#+*=p z^@PDd=s7)xSX5jOXY~!0wP@@$gvHZFMys}9aU+yez4NZ1vc!=#~m{8(=Ep#PTsnB_ z7Hf#3^U!2J4iqjp9o6PQcRhf+g&%%E%dk42{-L)V z{;`(<|3M2tKMF96H$V5bBp=&&2Zxsvo>_C24aQ(aD=O7N7R#TPN_2h?3Q45qPp#_? z;s>9VYYtbk`^;<_$Bakdl6|)(*i|lOw`8}Nh|>$uK3z3ds>LFfpD`#CD@AIy) zh4>e(8C{@8A3)y7u7}Z7sj|xE+V0M4dqEu?6^)1MZ^a%{b~t&Z-9u$F}i528hGWS+S8#^N9V)Z(=bw-k&gmo zBfdm%xj_k2Cn2@_chziDT^1Woq3*hU5R+*>Eu+ zfD1%Ih}_=1sV*5KI;~j(iFE7Ia8r}Mko1J^pNMxi zNN2S&y&w`~q@?_pkV1p%{*-rvPElFI(aNqJEm?X+q1310LBGxAb#`qX=2XJNv3!-PPWh{g0)FFe+~ zSz3Q?+fA|Hm&;m&^~uuS%QrH$C}}Ont{zqD{m+SNal}B#Aj-Q-cE-L-HF`Sz)Bvmx zH!wy@NQJp;7-W*f79HDN;5la5cOg{=sA`R}4WPq?GgP5bjSLi_>QN>dCR&4M`~Ug= zjU@ney1eqMZ6O0SFS{e38}L9h6zcaNFQ8W2%8$4qMnzAON87!=oL~+{J|3O=pu(PA zLcDbsz-74{I<fVvZf=g3M+j*j@(}`q0;b)Hz5&ZbD@I zzvbh$S&TUL_22)Il^5mTLyT=B5U2gWZ&gSy`jReD4YoL5K<~Z-6Z%M6v?*fWYde`0 zGb^N7@OeH|EKBU@hRM9(x%dVD2k|UQ#c|$JKBuT&P)_3;EPgX&e zL=?2#rX88KA!}U^iWI2%EyujyauBDzB%+YWC5xxjWe+>cWj0uN`P_U&Bf~HxKR(34 z$ZFCwade(egC->*;{F$*13K|P)ih1!+6H^n+ai3~^f=V517FrT9O;`51Y^FvS5#*RxdcGO&bW*Lv zA}9&un7U<}T(2LzOfmMKasxnwdQ&kgvr`H-=FJRfbCU)QTic$Dyvc^iu^Yt@HHRhc zrV96_E;F$u3SO!IN)xU(D#zD#A4YEc!h;c!&=8qY=6`bWtEuM`4W{O zlxTItYu`zS!tM}0ih-*`hW%m zscdcD=cu#tPK;d+DJRRPT@Qyz!Ztm0}QFWTgcwP=VDxdeWqjC?w@)9LROA z_`PD95jwgQ_Y}+I=SW#VLM=j`5Ij=V# zyJ4{J;aax2q^%~C)Go%rmEp8!n#1E5mEm@w`9u=6b98x%$YpcTdOR7U-B}rJM2NyH zp~!hJiyvkwTAVKmY2Mbm7-TCmD?qyn>X^kY=3;wK+=>7jv#MH*;kg} zgaN8gNzYc3tY?f0VgL=mM1K|jpY@!VMjY`Yy%fSciJf`^X8SsAYGe(>_c_-6oAV3! zh4VYy@!Hn99UtFA?`(ck*Ii#Fi?}jn{Gu?l*D?h%m=ct(RCk9{ga3?S6n?Fp!5qH1 zVMXM5Ux+$C9;`ri^n=5Hn42rt=0V<{oWLfYinx)$#1;?`=TrS?12j|2Hg_ACm0sWE zLfL2D#Ce`!xLBt;JUrK~-`a73t)Ue-xT4<C-vHLFVZbcaWZcy!2^bkrQ zqRK1BGqiZ7g}v^e_8ydnYxkT>pF1ErD1I!HstMp6Z$%HZ#iPyHwa7`zlhU%O4r*w= zFeP;nr2Nh7Tfn2~NdpJ8JS3>1M9~X~6Xd}E=_C6WM3CI;lKl)u}vu~m3rTl}_` zy4zms%5t^@M)z(Pr|hl8z@_Kg;px9$>EI=lm~nqD<&#jN@6sua;NjPKjBY@?sPHLR z9_R+PT%TXiCfWnQ`Pzss7Ik^J)101(?#homR`bbww|~v({^XJ$fY`u3e`q!y@fbA<%iQ0?tm_e8kf%uQWDd(wzdx}(ReYrmPwd$b?ch& zx@(A^xcwT&{u$y$0vRNwb2!_Mx?L`ADx2)4l{!X1+}UQA;yM5SD0>U2Dzo-|cnm}Z z36&BB1(fb?1ZkxYb?EMH5G+7ix=Xr|I5dbzr!*WwS~?Cb@!xQq_Z^ve=lgwYxn|AG zLe6>iv-cg>eO=d{6bRxwZJI@jG9r3%?;0wg#MK0*90t!nG@G=>i7f|OfmVwZy$d1d z9I<}wd{z&BY=hlp&dcu^bDo+WU2JF(N_I}d_^D)wp1!C>P46XW%TLi_ zDs-vR<8aA;qwytJ5elKi#g-Go%hHA%XkwVGA1YA!rvmOb)S4RR^%>tnkg!NQ=#u{f zA?ecfj#$7V>-IQ7B)&Ly1OHTdzGwx;V6K3(H`RS|a#FvsV6|_{a^w@9<|VG_FE5f* zA!u7SS;xQBT>G`+q=G&_zS>Zws0hbRIy;VU#ciQ&qlVzhW7Q?w>jX|;xMN6(Q-WumwFfQrgk;dA-_ZFOqf0YPK zdYm2?xXn>ZnVz&M)#_Y16SEKrX+vY~zMD_02t(rlK;yss0!2~xQ{arWTUy}hXmqx0 zW!+5Ph3Dddq#oAv$AY%Hbi!z;PXS2|e)}HZ*(5$FJ^*wt+1cY#w3X7m&w<9 z^sj9Ht+paKEfA$Rqu>ZWAV^lBVDJSgBXYvr=O35K@A3E4*`p#mg?IBhFU@^!gK_!~ zovvewf0duihU=F>f%XJ3wo`G9^_h`HPovTJzyB2uO3pf(Gp&sM;ly235u*f>j&N$v zf0J7XXs9?;rJZS2;`od({Cmu_v~X_&d>E{jruXOeGEH7SK8!^B=~!asvOAr5vWRGD zeL*KF6jI^e=I*c4v9086+*P=E1Z|TmVG2{%J07$B|A{}k&79R_1-$MbUb5I4o_k(g9nZtyHH25!N;72+rPoZuLSz8BUgh*Fe3cB zw6=OOGbl(aktoYjOo#N>|ZiJF}7B571V){ zXHyYkrnhuN5d9IPtLiHiskMag3;+BiAR7(uj#T>0g-)_Z@3NFc7ri9ro1QTyd&}$@ zaCmVRd~t+~FdX3(#?q}KU6k5VB8!RdvYm!9smzw#cfuJ(&?1*3l9TLJUHu)3#RzoC z(pvC!8NmN57BVDMarGxH57R46?R(th{o>m9iyvrp*;#*NH6j5e*}1X5-nLoTh|l}2 z@EO_=BP|*+5tcI@sv2c0p&20y$?IRg7oHB^XNdh-a;ZoiXe@@s8bIeHRtCB;8otC= z3?XkLD%#erTc~&#ME*d2eAUS;B)HW?+)&mtTkGgT$cqvAEZz#v!N&DY;nC3$6i^Y&?=@HL!ZNlOGWB+XzSx00WwfRwG;2`HPq*>OezVCfd?lYx6wt!U*yl;B-DJCFRlATFeW&*wW#L>^2foJAlr@vaSub!X7 z_&dqY`J-wLF^^c-SKgGE+I=Tv5?UD>Zon)CL;OHB*H=0uF z&N2#760Ub;(h`t@Hbq?pKGX!C9)vL#=?{xRRg##b@N^?#wL7{O@{~q@KF&XG~X>E^Kn(rx=pEi+%z0~VnQ*8ue$zWDj&$~af_;18$>yf4@H{42b z&gD1GDZp6f*@8Q4ept$681Q+!O4j-eN|s0zlu>KZ&I<86^vcnStar#8{{t4>`QmnA z1>5jw>oa@VRCGK`=sOyA4>hXY@@d$cTQKcSd|x~0R+ZgBsEDjp(PgRM*7J|cXk;Ih zBE~HiHz0zQ!iF zNdA0FT6?MF$S3Wps+s0?uEqQ$xv?XNJ6?oJ`{NpytXcp1+O=Yz!9XY(uS788*0WYrWAjbDtQ+wb zRPg*-b3-eXamDx;iC|fX{H4yP8Nn+Zx*Vbj6dy{$naxbS^r;Geuiyo=rhaWV++^p# zHnka5u-(=|N{k+!#kgBH!;b5g9b>{^VUMMmn0}ZF>!)RnY6ts3g zA=v37&DXEuQLX3Ft5WymqMYn3D|Ebm6&iwQ?{&tCFc1(|CYD)?drci1tf79 zs{zoooaqs3Wv_lw!V5e`@w$^vkK6dJAt;!SZK3haNABMcz&~Ekk)9{>?fvVWtdP<) zbRi>+wsx)zp+{$HD>-AB-I=%VxCaqWgLGV>Q?JjqLkYWwsJ;(r=w4gNrb!9I{F~U7 zffl*mY(U2wN;TBN26(g8G_(Xa&m@b`yZprB7JTZy7<}H}t(Im-Lc173U`&g5FbZ(* z47R2kdUe|kDL#3r*N2rP7wrW5Eia!nP!3n)!s0X|0ynJ?n+@Q4VA1%EsspE=-v*`j zUyhC3s)NE^r^<@^?CaoFKac1lK9gmW2_ne06_Mg&D8IXfj#`myuZqWhg>aX17iUSV zkl$v0*SohBc4hZ1$%_8=fjr2kfdSML5`p$t`Kx*7zH^&ZtA@B?=hOlLn~hXW(3g9< z(i}zO!{Ol^jkvolMFW}rQF?`X7QHH5IDcQLYshU4ymH9H;iGXtYd@b;_G9E+x@teI zd#Nk?UA^LiDjaSh%2=IMto6|>t@~Mr0P<^P;KWI~Ta~81(9cs(OdsmbY0heD>J=;k zi8u-zXnC`ColTupJ(!~jH%kyN+jwXox45H2z7&#?>m_{+-tgqg-?%)VX@1otpt1ir zS1G(JYNSDS4BG=Sss=vjQy@1<_9Xj#Ko~7)OW-4pMgOvp@HsmXNT*5%!O(LIP1cZD zp1KlY8X?04KcgYVP+HP_y#jD9-@q6t4$BHsz3PKG)3mw z`3aDno0-vlHxFxn8QKxl!*ins(k*=c9sH$lT78lais5=NNE<)AuvD%e#jt4C0FR>L z&QBL3aH#I^QQIpo+Q}@Z#t-#rry9cbU*%w2v>uq|qI+1}ugI{Hp-r*-p^nHiruEh}m`v(&@^;^T=1GdF>2Sv-9z_Yw%aAd{$Mm+ro7-vn_jz z8vAc_eFITs0Kh-jotk%v8d)F)puax29s6h`Z6*F z8#Bai^i>D?Xp!)2u4TDhRf$9A8#ZB}$ue?iUmG?2B;Y98g68^eqt-&ZX=kkgh}kglHA9vY{nT`yA@!6wjFVDI&| zJ>{l7x;}~!CBz+NHeg@%Yl0h!!{5Hm67rZkfMuu}V{bhItI`AAQ9BEVt4xj3nfOvs z36D6d+M?6V8n2dPG2Y?1SO5wjWAJNmVpZs#8EMSr@Gl~dmgJoRRP|==Z|@dc(~C2s z&EEa#q4VDr=`lg(XzBkyV(p2)FUrCnBE za0zseYurgr&azaSZ00qO8@O|_g)+Qiay{`5V0^1oIqBxuq&}_Bar_DB_f4d6mg*`x z5`_P^wk=GdOff=56>!VbBoEM-5_;|rbntxR=?SytSG>yxNY*#z_6_lQh98V-M-`LD zya+bxisnH27_j>a?87QK-3-Ua?sZ;XAM+wk`F1~loaTevg@p$$1%LK@&QI>CN&3>| z^|(!a@!VPI_C&*La{9=5e1Fqf-DzLdAK)shZ(A20F9MkHt%lo4{VX;8SUG;3pV0aw zM`(yG)vnd6=u^UHXQ3masaru5x@p->C^TpnS+KNpweV&_b+81AZUUag)|8>Bc(^`? z%*BzBz(eu#9i->!U#ws>@nfyJy7ZBc@siHq{K*>l)88(~Ag&edIloNKkA%hK3hC9# ztyV`_M`o^fCQLgY?2lPUp=m&i*ZY1fa{?T)VL2AH0#6gac4S7u2!r45Z8hhQtQlkUfdJ629VE748K zzmdgfm8qgXn?dkTJ)L)vX2Bd4drH*SEX4#U{Ta;hneYW-Pre7=kD#m}qER2^4~zW& z%Nf2TX!|X1#MemJC#}9!MBLDLj`J(KLl-AHn>TK8?VCG9^=Vaex!xIk7fO`f+bz`X z7G>K}_V4D;zW){CpFZt-gO4f9?HuVQJr;eS-OpuVH`4%CAIKtaW$bBC!$ryiZd3jE zXaVR2q6)eSX;9_X!wKota-ATavoi>)62;q|>uMGIv#qg_(kOEqVcXGCyl!ZS4av(p zqXD7XUR4f7oFkPFTF$_O(zAAo%1{A z{at@|4`mg(t?`_uSMz=IHi81v}fkyBb(#AdvjDyie?>ulN%UR=b~oyX(k?n~rvb7_(f!n@MrLd%i_Lq7N3>|}PaZ=(GAa7&}cwUXzhpRmR( zFFnh$iP?DhmS6^bGUukCf4xv&#=0rdJN1e!J*Oaq@r~9VDo*x>aSWH5gtfcCo?%-g zcb_V)qs{rzut-~kc4jr5lvQ7RVA=#gx8B;+J=BI z&Cy)oC444L-&!5ZFZ#1$u}7a9O&2%JG$=FkEnY5B^v|I@C1W+mzBtDMLgq7|fzlV0 z>VT@g+bgQMXeLExE^dk;Xe$$)A?Lg`5>b8`z9LaD%$LP=32&9-UN0{_-`RlSJTyUQgo(}f6M zbg$#*BCz*zA=Q~n-?y~>+@62d0Rqp@Um6GRIsqk1T`l||7?1xp5yU?{jgm^~sj2%` zS04HLn9FpA`|WUNU$YzuT4ZoGCFciYkr3J$pvu9cQ_Fl4vZ<*?$Om&HVZlszLUa^G zzez~r&A4zA0*<7P4bWZ5^9`hQBD!1{S)^GOEUjqA10EN15xFW8YU*>3$S$&JNEr@; zsxFnxQIyM^n-E+&1InvdLO7cw%s(o8+@{KcdJV@lgmTc>e5i{S2h3+xa0t5P=VYy+ zREy|1D-kcO9UxW1>o=*A+6w;ooBHlL@;D0Skh1VwBceI417jr*TaUdf-5&Vi2XTU& z?Tt1_v!%>LsSM^D!}Xz!rf=Dw4AIF^u)qyJHVCy{33sN@CTu)-w#c{l=vL*fneMfw z(^ILlJ$Mr9Zj-cTv?!D;p6xSk_wb`eP#HI*lgG0?WPS@X!{%JZ zmnaDf>5_Q?s9xqc_GJsD_POS|YI{!mA2RI-tb@Tlf+ERDdBkOfRfG9`qw)Re{z`3% zpD*xD3b~N2d?S;b5g!jvwbRe0IoD-TQBk=Fwn}d4v3qX3-}@7}C&nh@T{;=S|_Dy>X;4ERa-4T}P-m%aeyqy^8c!8oXtgGHCf@+AS=sWpuK+PpeDA`Lbd@ z@!18mgjwTU56qu$CBD9O@vHywn&-R+I*{A60ESFc6T3mx`@!eIeaEGyeNXf7^G@Ra za8peqn#OYmI)EKow+0Wb!{JX0v14YqSBhM8Y6^a&-bpuf>CCrDr-ULNeQu1$G_3r6 zcelSl2BfR6RB=ET(hSGa0F_ZJN z?>WluobjifMYNPY(wsr}4#v~X?)O=-q8NC6tZ`XG1OC=Y{c%+l84?!7O>cHi$u74q~j$5P`~YI{Xo@11si_-qr_SJQ})+4`mK7Q#^tr znq&x@%ikP?S>3qHyc0a{?32M)UD(f(eWDwE9~hxza^BXySmGlKv|ducMA!IWYJvK0 zeqJMXUi!(e$78?4PYf~TQ)g;cYfV@P@tt53OpUXsS&2kOT+6Dv=^570~?pj4~>B3m3&RK!J7X^06et z!u>!7Z(Ot^cA1QwcURRap@RgkE~du-5@e$Zm@@73*A)}7k}G0vai?4t(~Nixz?;(- zP2KXX61x&yp(%8OoHkN>0@ee%jm3Pz23;M4CFwCbeqI|ikC|`0{%2ePR~Xqzez@M5 zGFzfQ0Xq5l9PZ^}@n63_U`F?rt-Lr7kj=(()K1fY9&73%#IEy3og>X>Ph#NJbn`pnVdM|wRPjnBOTC9 z;rJs=W_pFI5l^iDlG}lrgUzbTN`pI(*RvFK!FJ8o!dqlBwGxroj?xAr`)=}h#*u?v zc-B?XUppeGzg&FveaKh;fGD|Q(Pn~XLC7fK@wk2g?VsC=AhEwtC*!47-`ZeUs*q`H zrZ#|ln|#=Snp=$U3AZiD5O2O2F9b!G36@)wdu?f3(f(6P_WQht89DP25K6Z3k>7Lk zsC>J_jB(bqHDwi!1EkYJ1*)Hej%OA*m@grHm~%VlsFj4{LZi$QfNVM&z&-E>< z_+(z3`+x)xcwtg6>TVUoXv05+g7mt&e;ckoQeT)zCmS4HKNj)glf(65B2zdC#GQ~7 zjsj0B#o_Ng!!v?t#4ggpy|9oYG-g3tjpxucb#U%$Ym0f~|9q#7pw8QLTY~C*Kln8!C;e zEe_9bhs(psNlhOf)%lhWs#dnh)h#XD3NO|EB%h!~p)5)G&~A_*3ZNdWw}y;t5?X8T zNv{ejhx4nDIXpS7Y1F>R)+q@@;>~@$V{S)Qwx%<{y2pZV!o8&QjytiVL&N&uuEzfA zirx77?iyd6-(vxAi=Rg&m~r{Vw2E-x2@6CH z-}AfYReK>6k4hqA4&wzVGmXCeyo37ZVfFm40A7#vn>k+DuRZeroz%_^|GI^Y_^)b8Li9E!;mL~O=O^)GIw z$b{?qh((&DAI9rAFKD~>1M8);$_Zf3RTN=H@5=*5;(k7n>E}_`6ZqLYJb^ z1m~FO2X!4#BLL{~!g*Q%%&nM>fbht)GD(lY!e@m#j?9te>e7%&^VxyCTt7ZCK2R)ffm(!@2 zK23hIY3CrqyztxDe)aFK0El*qeet7 zn?JRYqRQQ+fiyHJq|1x=-R1>!e)fE2J0g7@v18zLxYA7E3**%|nSn>&JhrourZH0y zrXOC?Dbq2e(3j7BFs;sw<4+3VudW{y$qp;h`wE3D9*F5zFtGOW_}Yo0`5Z{&e5$Y+ z9qfWJ)+>^l>zh!Or^_lZuR&R>*nDe9W*P4*AI}b2LYfKVIe%!sS%&k&vl0BUGT$)QLf4oRnnH!7<3v<*6 zHhCaKu_REDG2R5W+BM-t$lJ%qup+b;vkI|`V7uy5)eLMi0D%rlD1Nr$z##aA$i4nV^>7y;5i zxTyAMh_<(*L!8C(aQ$q7@$j0&Cn?ir`H^2a1nRIg_niR$rss$GV>R?E+da`96|;ZNRm$BfmJZD*oyl6sUjd}o$jp}DnZ`?O?8fBr7O!N$29WIqjfn`v zlgcAL=Iieb1C|jDayF9zcvw}+JZAv(Ona^*LThUnNx#8ugA^Is4_C5{(CKOPw2SQTK^6sU@M4(oAk><}5vM3IA zWto{Mx7+(qiEO31zWpp2`u^+ysHgAW z2rs|U$4q9Z#Mu{?w|o0L@pIRL2cf^S4Q7ygqC^<3pf^k`-{}}Vw8i6h zM*!$gt@c!|U`VnpGL$3nWVW3cUd}F#VzUegbpP2uXHA>yS4eXrgSve#qhAb+@9%yw zTAavgkJko#R>hF!@#kjuX@HbY*>==`4sPxzJum1N4`U2E#Q=dNDgCzB*&|i5U_J?Y ziS@6LJ(68j8rXBxJL4@q<~9$$w3(e_Dl0Hl03EIi09LXn5?s{1aAM}-B+z`ng30uM zBE|nSmOYAfLOICX( zQQg!Z{6u_JBj(xv;p^JpP6h&yJb>DP-@vNh`8=v*{viu$xHDBa^NSHdBO*zoiRvAp zZvMTa`iFaKtA>0V)6`H@OuEUV4b=6lQLTg5;5twK{b^eVXPrdF_jZO#60Chq2>OKW zn!Pd91dsVG1Fk0~jPbx%>&!7ZfCQ@+#e%gCEq}n!a%ZD>Us?YHh3}IJ?&S2CjJyEeU8xNH}>X-h=)cq7y)QCvb=H*Ev z=4sC=YR1xP%>thlVsQNJ+MvKom?|P^E9<5kiFl%ttLA}L%RP%*SC{3bKlSk3pAW~x zm|I8GG;!+2-#kyGz5CI=PpMBa{+C_671CN9*aWnuC^>Jab6vuCx} z4Q6bmZ26s}uPS;DKlJtuV86Z|=3zh(5FA^Uusx?mn_Hpg?0-IXrBDJ{rC>B-0~%c_pP1gudf0W*2i zZp8NsmT9N(%g(BM~Qsa9L&ZfBQD9>e}OOsQfKmS1f(ppdlAqZP-MNrE(|Dp78{Y68 zHPZ5MPq$ny{BVEc+al$)a|+^ebN7p5aW)CAWla9E7FY-8?e`eB39a*Wrt=zI?r{%) zEbPA|M{cl$s7kls+;O=3I}0sF1iA84;Gkgc!8~RggTQmpo$YP)+S6Xt{L`<^Y-^=b z>iSyP%BsmDSsevyJcB8nPwj{h74!8uAEe*SYoQNJC1d51hgCsQcOT8IwMxdNVJG(a zq0)D9?77Sx-RY#V8Epq(#xw5W{xi`1yrx;=`%6vp^Ht%Bvy}3v>8ua1@m&5Iwi_>T zbQiU+v8YMGE6y;OOJM2ibH{nT=2Y9tms!_-8{x2cBm03*XJ=hh6g&m}B-8^85J3F1 zH9xKZqa53V6G`Hi`#xDbFORm#H8Bbdq}(mm)+O*8qv&4G-HnNFtG4f{IrvcuJpBB2 zwI?iEu%bp=%!GI1?V&-t@e!Q(sm zlEWR8MsvDPu2FsPgOwKSjg%Kn(T)0bf{r#tMxT<8qYJPRm!t;CuS$`erHc|m9a&BcGb*GW9XVdfbj zzaQsJ%qIG7b(ce^674wUH15q0+JrBD_`^r02Ng*P9EL_CVsGV>d_Mwnd~|rG-9G4X z=h-s2MyJT_xQrZ(so{ZxivH+TrmHt79~a0Ps8)IYPG_JYK$b6t^tWR`4<^>*M0&*?@b5_6aRRNK46L!5j2wnyI)BX|0C;ox>UL~G<7 zjoRam3U<+M0mVR!;a^mYvXD?Y9Yd^yZDUgPLUmPmo3ccK&FCL^x~8h!smeiS1hB9! z9adIQ|J3iwSu6E~+Yczzdu4^)%C{MH@GTqI>e^3*1+QosEjGbc&HPJQMJB|~I1|nI z8jDN{UqixpZAP<;slTxmNtG5}g2kW>GFc9raH)!YQ)DRVx8Mm0_~hVzt?bO4)^YLo z!R_n0Uo?(j&=Qc`?AGZ@!-ykC2R!HwX%Q#Vs$Ywjm2x3wKSm!kc+9=8#X@k!f( z-a@Kp^zwY)!V>v$g1vX76JDKs-bf?puG^pLM@vbO>y!C-&dS-D(H+kSY#uBFc*>o+ zu>Xaph(mooY0rQPH0xCiC0z%dzT_K)O|Bs@+n}~2m(T4R-9&d#asZ4JNd-N3wz8bu z;lkk22a5`y@hKq{u&|X1^%u=5LIy`{*M2A013OA2i5GbHqg^VaWsOuZ0$I#6s17S^ z8jaXP+n?PaE~^8Tyg-ns+V&vMj@yasU_04hu}+8-H(lC>I^k`;6P{=siM^{jCGlY)iz;btu=L_OeJ?6^<<)qAZCQk`A|9liB(JVH+7UhCIk zN@)fKMM=UWQ@!}U82JYeF0qHy+;0`*hQ=-T;(SL3{tM14Ov5{*rd>&Iz9j4otN%Vq z)B^Cr8R6X%)XK^^Dx@)@_TjZ2k~oH($1}n zKpX;;1(SrY?yr9o#`BZ?E3U|3`fC92wr31i)(O{^gr!^J-OkpwOq}`?&|#lXK~_Vf zbnlyd+16`T>3`1l<;ErKo;og5BfJa5CIM#TQ}JFFM9^FvgY`fAZ(067uUa_gje~m@ z{`~YH`eM4i;?|jXl(XvQpT{J?((Rlh3dsN6f}hPLU;L#X`d=~zBnSv7m*?AzT=1+3 zc9OnCFOPfnkP-VL*w;0K27Bqnb@ySXP?JUeY7uS2-_d+69^{DxGRD7sEMQMk2`?_U zOJt}9?i1W7WvRil)aB(Y8JMu{akv?%mJQ@jEvt2IO6gHU z;Zr()EuhahA-Kp1D8`>V?XSoLF+ck%&86{VPF-oCy z^_Mt*hoFG4;QW0N%}&kFc*jD4l^*aL-`q{fi{JQJUQFm-2HX2$X_&F>Ugo%Wpic8z z{F(Xr(`+VO)<~!MvtG)U`b)jE7q!vi?YY3|Ry5Rd=W%iRT%69{U~nRC1DAbBTxb{9 z!21iLH5rNXa@E*6!6@NbrnxJfAaH-(M^bzNld?uUW*p#Wp%SYRzU>4OBXF)vg_mAwhYf_SIY5$IWc2kL^>I@2uxRSqZ`}z*SBzlIHj#4TWGP&I3>BNJzrY4z zK>KyLfH|qdC#R4D(CS61L@tiZZg#!-g$+Gs=F`~Ri$ai_0i?!?N@8d>u~SBGZ|cOQWSXdq<9WvjRavRYwAg-z%B9bVPQ=~xY-unguly7V2nw@ z&8a7*Ck=mT5;wpTTVQJp6%NNEK;3EdEy4Pa!=>b!Wip z^9Xp6q$#;`JEP$4&+Tv-ys*ZzeLvr+)OM?SMH2( z4LZCXNjo;YBe#+fVCNA3NZt2At9|RU%DmY$YetytKpb5YU7mV4(a%s7al<&j3#MeB zOMb27-T$s6K-W7}4pYZ@{(~-E)}N&M&O&LPRm9WUl2jTXtGJ{8H6WLKWSq;q(8PpC zcoYzn3)G$CqKuC1SIV_Ej0$C*X*-ZDqn`|?5R~A!eu?0!l=Cex{u-b*CnKu8WO2+U zjNr&P%KtKKn;nQgBpVLQ?$wp?X)q$ljWc5^+jW=8Z2{@^IYqdSA=>Zz6i}CutU)lR zznu(QttiHc`FZTV_rofo7cA|WhwQdR)$`3ydWv?H0CK7^P*QoZ&?8vGK=WEL6o3u8 zR2O`8&B>9O0ccy!QRUMPPtdS?^l*=IjxD_GM1;Ls=mXL~@LO3ncNe=DF<7--ie_j` z=wPx%KdHD4t$iSU_j1sqi+@M6asGIoa5rO0f|{( zQ!M$Z<4riHn`Oqv>aPea+_&V^&brap&=GpY8lWxwg{|I+H-&=Z4m~R52`teixZa~X zUNi_a|0VsogdNjIGHT)kNWe2(-Sc7RNX}_u4LdZDx;4M#XVJtf>4$1)Pv&0`>Zh~$ z3aMvhCnY{_Q`J($%aRJ?y72^?>{`g@l$o+uq_}u6OlzL`DYO(}^T}HBQ;aP&8gBcK z)b6ZpT_%-w58P1d7yA)$>J?1$_qhv5lLrG-BYA3YRkky>IsI6u@XB!K;yj!ls5QkE z(`E+-F&cJ;O+dfSjPKU}ei_i~JW{OG+1;W&yBa~n;#{O=m(*iMTDAH^C;OAlCATSk zO69Y7_VtY|)}?V2y$#)0HG7k)M{O+eIw>EE*_Q4do5tBr8k91s6p}mis`c{MEe!vMT5;FT8iJfqPYnIP!)`-nweYJF_Z3x8yS-)%ZmlgK@-(H z94CDeIEei??P;bcbK0Q6$(>$>`G?l*gsTiQG3Gol2&&SSt6CQq>ISRJE zHNIWbnalQ4@qLLX5j7v8Ghl10y%fX4a*>Z1Z)&7{`dn{^GOpaBg3F;7lTr5l!~P>i zwB%%x#z5f=IfmaRJ+Jc~BG=@Z(7Sp5<6TXU{q{PZ;~nKUytPLufS|BPdXI1yD@D;_&bdS(D|APfR?4s?>&a%Tr2Qb2oZBP(_Jm*EY!%N>ECQ z)IuaJMX9LYWd&o-IQS+Wu2N{-;(b3Yq`@Eb<|1;t)Eb5(B35ld2iZz7hkh(h|8zoA+u*o)lB_4 zLmPAnP=xD6w4(LuXq(OODsKx`^1*5bW{|u40a)w4cKY71{DOkSgzDqP@mNZe{zCH_ zx(2`z^&WVb9ScSy>`b?xeO^at6){??Ii25R#U_so-~l(aq(agTg$--dw0ShTw49z7 zzFgETUj@oOC%vMVlA%{K=*Jb06m%cXG9JtxfHfmIQZW_zd39p#fJcLNa)9gr zm*}_2rxx|~tCSTrE4<&Zl2x{3Wg?{L>+V+{7u#h-2LvfC1f9$Ti7Q6*91VRF4b!jXo{*tAc{<3%Qg49kUtOM!GF{gSrnSA zpDlC0Rd)>I1-xBVr*ksD>31`wLRsWXjCUgf#tw&v-&Ye)xekZrQoL5hO{D~F<)ZQA zoRv>`0|bpG`q1h==#sMRO_+N(FPL;;1r6=($I#yBzGK=Y@;t>o6X;opzDrrMk0p|r zZfX=8E%;QBKgK<-VBT}moXi{PBDc(=xe-`;xJCWAAUDcuYVoFR2HY8KGCUsr6vM|? zq4|+WLb$73{6~Jrc_QKlM^jjH)#_$xaly)M?@RY=4=-GHQ7C-%P1u;mZh~oc&k_9K z2k{AFvNy%IqNoI`o(e}?6(PMoakRbGnR2>MN`<&QGAQwgWvJzQqSV8>2OH09*N@Av zCwmg)B2Zf*rc8q4#B;XNM`M<@|Dc~JG)%BH>8vhlqD~O2GAHe}m+n-2fhi`n2Y#}d zh6_QGFb(U~-_M7a{t^Gt{BECL*Y3tiMpW-H92LXCm1lA%YfIa0$Q;rVzXr&<3p891 zPIjJ&A^aXAgVyVP3W6Jk=eKSg>O>0llSPN!uG&L1-anIzbc@R2{&^TadY?Cm< zZ~Qt&Db1uHBZ(>Iy_GVjoy{=2`q-BtL^DdG@B=E*vb$RazJgSl_9o84FFjw)ur z1ELjFL{fcE5+Y^6{PIjD_>~3f8M$!pq^f4q_NKILI(s>7flUe}6l<8^@)2GMb7aWd zzm7hWM3VAoyvJ38V?5sX98FCl_>UIqc+Vs4&dyF>XqgAcVPsw0iE4k6mBpFcT3-2c zLax+FjF5mHwW{v5D1M%2Bd(R4eSWJEvc<#K$*&qbOsbP+H^>yad7)-MxN#mG%-NqA zodEj}Z@+G74_^1}`8kkk+^mi=&aAq5oqsN1o;p5~CO%!B^bjvFpmX=A=9-jAHvicS z&e4f!dF`EtXXogjTm0q6J&F+x7VDW;Jmz2dT19;IbB{IlH@-0SWF9v&@#{e%7_G>@{FZtz zT{nC38dh}Q!8HiL1ws9wzUHQ5;g5Ecl9GyenKi-BU;dNF{Uw{R{qEuBYg$VSkpd!O z9uNKz*y+nXn#1C;svmpZa-mCm#d7whB{Dz}0!XA2KP^e!S+fUCDp>+6BJ%8(aN^YE zEI)ADn{*ad2lorUz_XyS+@DHe3(U$JnO8VmUCo0x{EeIW8Q?SL?*lL_1WU_ksbR6e z^Ol7x&dtKYA}}!UNe=3%tDD={%ZjE$%LBxUI*npTc(a5xk#i_oCp-IkA~BCUtBdmX zaj|#X&f9UvnNd(KIDYQ**Njepm?_v}K?Mx$C=w`YY|2rs8)kc)WPN zd4dvwJax+bzN`j`~bA)|yhDB_JBeon)Ie&TfVmVxa4W~OUw=02avA2(GkW&=FVZ6huPnu z7Sx~5iJ_actJe%~Vn}H|;eOW|Ey_jlqL;0@1>KhFv0W>FH8EN*0@9jB0QnHVFb z0PObM=G$^+g@j54{dIg`@fOJ^lA`n}$z~y%ABPg=klpx4++W)R5XRXekg*$3FDCG0 zE9|-+;KeiqgZ115iwW4<-`7tU(C(wmwamGCI2-h)#b0 z#$?iWR{E8#`W4(zuF#kV#L;pQMY|^~wU3pBGaL}lf;5}roIBmF@mm%)%$DkN2u}!J zVyX_tT)afom#GpTClGPuotqx)e$~{%{xfwJO<1lP25d zW^?u%e+{3&^=X&_`5MSYjZPlzttOTtH)R_i{TkomPN%W$$)0g4yZSrP*k%vmnKI>6 zX_qpQyYFXyMy`j?p-Qt$Q;nUjt4As?)N9fdbp5C~FgJ0NZD@-ZAL%cXn(;NXamk0X z-lF@OSwu)AUradeN6970@dkCsU_-+f6Gcdc9!JIr#j~Q1+I4vhBfLS5bwEE`_PKQi zJXu|tiizMv-G5uYJ^xnjv_|&40xL?(#dQFY3Lv9LMj81!R$8DpQ^Zdm04L6NO+%1HJU0VBr#NaypP8V zBe#p>58u)MCMDIG6!l$604`JMJtyTXh)2sS@MA1miZ-Z>P-nqstD~uSxZl)eB&JT8 z%+V#QB-V9{=AuHEEm7b@2)un_<{?Y$M497!*Uiq9s_v<&sc+xDg_28yL3wC%onh_h zj1u!Ce+3Wr8_9w${GmEm@}~W#2FJORn90s0ycvbA$tu#%`9TJvJCVsdYlP~s>u4_9 z`dWZmN2+wV%`a~d-&Gn0^IU*+RFHeH-Tz&5s!W5-ZcvZ?{l$jn;=W1I#mQ#rL=XO- zAtx{I#b_x59br+5)j)aaI#%f({X8c#SjZ3o3%j4Vzo8 zFGNp28MKvm@lBE^T84HHwJt0zE!k{Ul$Uex^ViK4mtNh@{b5EP#auIN2Q|Ut|TFQWUek=uM1SjI)Oz#fQ?zDQQVBd-ZN*x0bzojjJ$*hoZ*Ry&y6=X}i-|Q)ckb zqLnYmx^OkHr~00(1#{I(c~5n8kD~$AS)u+v?pCis_FiWmR)%(U1Q>66c&@O>tpULD ztTvpaxV(ruiTktIvOTkc$*3LQ-7ChghJ-prl=QcT^^ePN!G~h4tNQE7STTDlpfH_S z$l+ff!3HHEtY%XZGPdn!QX{`A;uiUbY894G@+-Rm1;qyCIo73n?#==VDk5(&p%=2* zLxwBJWmzU=>836-x8)N=uxZxVgL}irT+3E{H3NEJF?8yvnoq5`0Pl&Nq;vpkyU#eF z<0N6Jx4sb&TrvPIMPdX~z5GeNOypA;JG8S@Crn8cgxL}wv3`G_*a-g~fSC1!v-@1@o zwq9{o8Npv~=G+}RgLPgv6fl`B#kuUfBlL^6T0%#ZLAB5p9=e{~sQJRvhimI6wf_Eh zLIOyV>gW5?0a9C2BWyHbSb>%7oLF#DZ72%PEF8n9Tb~v0YG@wU1%$@kCF8Z|8CQ1} zTDt9!S|k{C&zMNqD<$pgXxS14FUw6Ilc51&Vc$g?s^`ot@^SJ$0qPKZqq~wfq})vs zwYB_sXy{{gOirpV{|-)oOdTb0-s@xy2m;fKY8yD)0x63nFkRRKrVmpFl^^t9$lFfQ zvu=rvFoirBe&12XQim7Jj8AmOO!E-m!qwl5fGFB*vX`uWQL+qYl8vWvmEpOvSBryR z$ubZpygOV?J1-s>uc8x3Gq#y`V>$3jrg`B9d~F*1&~}k<`s&r4vtoA9M+i`e?Az^^ zR{*FhbqJpzOm=R0;NTVYF*kzym_Tmw0fl%*J&$Y(Zv1HH9o~smkyP(ii#Q6qZtAKG zMF#R2{cxPHzTMv9YSjk1^zy#d*W>cO9^TK)QCgBCgI1vy-fh|hBsE&_{Ktbwt0pTK ztae@r1e~XrQW93Mk$?*a;>?8uv*smm;m99{EbJ{zk75Pw?d-=qAQMb;t&XeTh>D4q z^R1GPpXhoEKe?;ow>LJnOH*bm0UC6T;vba%{SIGciaC_6TzuilHei`#ieb6>14pG? z`+uE1pKI2s&U+g998Yjp`O7oUmA!+dZdZqQ^H$92D@<{oFi-=12?7#oK`?b_9=-K5cW#SAw-DnB>l2 zZ@bYkNuki=#N3gq_BV}aCbkiEyLOpk>b$5?f|3P%-tFDId9BNG0#J%LD5-~ORwmc2 zefDdo&)|8Q8mfqo-k2jOcYJr=y(~Oa1mFR{jSFYiSky)NeQsy8H{cDBmdfiB+!Ml? zmGy;r;Y;j&2hhNek7=l>#(vDy9q?P9gi>@i6+~&nm{MzXwsIm|@B07kf-D5qdAkF@ zp6onsGtLDpe+xoS&MaEM`B{@YisSkow|Fb0J!j0QZII_`xgMg2^x{a59vO@L_HK4& zL~6R9cfwYAD>DNJ%{d6q$TY2BfWcv-bv?amhxcLg<<@fkxrLFG$G_zzDm2-e;igulBxvGm+?YbphGlyS{wM zEB0aO#^F%i=~iT)rYqC?_;_#}S5{hpUAFE=W{<=l9g|PE5K18WLz(~Pq4Ue*;2b_( zw2dp|4XNBL_7Gt2^#Lf>2~1a!|mBs0Es=9P4O~cwkM!tY3IznCOZzs z%~ip{4==mZi?RJ5kN~!4MiFjz!_olEi)wjFGj41!1KtC`*mOg}AG4g=Z_9Q?Q-=WTKUm3=!DxH_(T2jpag#%-T1Cw!G|@ynvaBVB#+kJ!IK5{2r&!0b_l z?;THd|NoC)4Uv=v z2{|fdkF0EpjLbOpOo;52y-ElP*~dy&h*M-`CE3~Aamb#>9>@MZ&pCCyE(SUs8x{Q!X5FWAYKA@!|Wargo+>4+B7adDQnKK+v5D1+aqB2(Un(9{UY?W zos(g59g)_lxvbfd8X_7CwT7cd(!9w|U5rQI1w1~mc|JA5Z4m-r0Fh8t4baXOPuH#4 zkH=GIXJ-LTvTwc0=E=94|L)H403nc9Y1zcwvX`o$x=xt{Ai~(%$^MYzMF<4Kkg2iI z)|hde!7?4)Dv!4!h0{qG)z=l8PNSrZd~R|t>kr5;9jgfRx8=_&=s@JtJP8u4wn!z5 zuMQQoEy|V#4(B-=zMGEda(|Jh&MBhyZdxOkTZvsq|487Dbd>Rl zDlJ!+e{`N-%5i%zSu?m7Fg%r-Raj(q4Gq?E@c#M=W)mrM-UJIVQDkSx2MAx`p8Ge- zV8!TNK$4016reCc`rGi~EqSnhTnnkr>s|1*t!xAlic*=XGwSveS`;m#<3zr-#}QG& zz6c1Ib1O-UDCD|lz140}U3gjn;LVbnMIEQMLgu4DA1bArX|d70>O@_IA{iZetX9m? zpSPKlUKbhas8CE8!mgE~aLu(DR&7s8ZQ>Lf(%wrLdPtbKdlk!Jku}~<;uFer0=R8d zUI&idyF0!$J7q9BB&vBoMGDZiFYqR>9Q}Oi*XL3G?)1345CJ*Y)CYSxmflT{rm&5M z$yIRhszFnT5|eD+y8WflX~~#1lJr1c!k;7jwIE}v*TbPPvY%| zo`C6jd&G9yMGRrHM|GZ*&rKfw#-3c)xCpAjnSvI~yb#C8RCR1%n$#DOPsqK$*l_n? zIa4ByE$7*egVQ@?HIkb~bS1ZLUQB1Y5qEV#=rU8Bu;4AZ+Y)r6wZ$48T0 zBn$>Ki;&jnJ6gIL%~yTt8X|`c%meM}GN9iVFN`leeJKqv2qBK%W0ER13VJblyki`n z$tb(xguNaH{6o;_DvvERbpgn?edT0#GqAwWczg06`E?m6bjroe{XF3*NsQezAoN~B zY!a}W)=?Ix_afsV?_m@Qp%B{ik$k4$+2HxhCRq65XXXlrzsw za~4|2jq4XfAy(PLMkYK|f-SFWL1hu~?&4r46MZg9xi`dYEY&dUnIKdW#$Os`iV$`P z_%4JZJX8d3OW>XwuqjMG>z|jn!nH7;ud`R5f-!RfqS4Z7C+=Z4s5LCHwZ_Hc-J)I~ zv-m+e!|(fWK|JpJ@Dn%DEx%G&Om!B;r}m?`}VU3yU&5r;MSZh%@wSF z`@j4YmTSQWZg1Lj)G}z-SoM%biE=-IYqmd^AQ3+sP@*K~KHCA>9!ZnIv8=ploar7@ zW_Sc0Zzs;M*lWqKXpF0tDYmMz+Dn8kaSR_cEUX7$3lCimf~Hv3NftX0|6N2Zm9%>?^!*JD;E>KpoTNFALYMBW0@i{MzR9osL$qC~; z;5gNSa^^490?-@t)H2n{@wpZir;v@LhWA%4&A?wpU2g)Nmse7 za>EPf`U+IAzhQZ-zOu3s;78wI;%JC{nq6d`ccN~v$NPosjTT}^#p~_eJnvd~OYWN= z@4_i0%Um69q5w5OUzjBGYdKbPk4@-1Fh#8L8+8rKEC#G(Z_oPnsq!w}C+ntly+IVcAuov%MF10VA z$68gShsv|tdLuQ%PPgU z@NH7TJrhWf1eFxt=^YoEHk8)X zgZHj74Lxp!V~`j95>maeR9mVh%-Jn!{16Jx?xWL7wkN6#o}px@t1N=SQB4zu(t=&* zb)PO6LHMTEIn3Fn@du?AOvqXh&y~zfO$9XP46DecQqV0sn-Wcr`k=HtKEMLfc^LB3ZktMB$F~g&0PHsRH2h zf9R$d18{x4jza0;`N+70SqIj!@g+t|A~-Z}1tdETb51c26F}w+#`eZSMM#K@%EE(( z3#5xd1=Xt(`SNV5u8ZoW+ydtRbl7(-#^e0HXM`GJ!3V>!rD}FT;gsju4_(?cWZrKE ziXTp^Q9q4aNFdEtw@|yVc@OBAOTM{TTZ2(K?tdvv~}P;EZ<|T~@t^L-HOFG|iH@^dMcq_;i5L zzCl2!skcwTCexxw1~p?oE^qhhTG;H*tso8R7OX7i2h*44)?z&9tlv|Sfq$O&9IBzV z=w2X9+ju-M-2+gt!Vfw@#EdHH-N!kI!%)6+-&g?R|E2FI;=gl6JRP6wQEMbwsNIXC zyPk_0&2B_Pge73m+|hoS777mMcWGE8;(JR%z`O95rF9{S5eYof(}dBVl~Z0mrEzwX zI;kZlPr^uVRG=hXdr;MI<%1v&oqGjxVmin-Dl3XbSB8i6@5d;}%WE4Ytl%{{!m|me z=A%ZVGzSI-;>tYMO;^R%cbDu}ki@&YtLO(imvTKnCz#0d=MR2m_n?t-;}>g3RP-5&oF;6IAd6-+JcmLx>DrHT*&;Auo%H9olnZr*D@9c;3NyYU8<2} zL^{6r32T?a`-z-u@88YqVkFt!Ow^udpdC4Q5MKFk@h6W4P*|zcR^nn7ULMrE?jJJLa4&ElC9xLns(`Coy}zb2SZ z#ADZT=heivU$Uo59Hzz9y0m0=^=5kbEn}C_Ivi#)c>c$Ng%z6+{_j%{zO3UmvyEti zraJ@!S>s@q$h36afctWf$x8_rWAULIluV_@j>IIyB(TJx#s=CW!KtR6jw{IH7j`u@ zi^w+=?g0~FPYdyx`Om>mP>J)NK_S$~=E|JURj?j);jk|_G9k-$OGl#VAx&JY!fj6? zOY^;6S%Uwx@H*j&TfejbSh#~5wmzI_S$=FtfgPezALkB+y z-Z$}Z^lXwdfmEo|2zi-%5_i$T!k)QN$LQAXjOJ7BB}{$X9W8#$R2Gx=_pAT2h$8Dc zPDBA#QY^zr_M^<~b1-6JVxS5KZ8czNz@I0btZIaMOA7USX=)$sIc=dQ_PWR!=uS2P zj(wnl$AFo98@~TUux-HU()QE1GFZhkjS_6y(fUw)icO?Z*FA>HRIqa5`e? z%4i81^L?7{2s_1sM@qj=)^G68+gs#?Pj;gbE+sAg?qyXit?oK%&hpJEhjakyC$O+( z*|95JRzW$1&+imUnCO1(W8h=^tF>TFU_q& zsRM(94O25xH-E3A!Hi=n8r&NIM8sqSqJWP&$vGB2_}MrL8~C!Zhj^hEL=RYmAcGtu zrg#?}V?Ess(l`_6D&kF<=k$C*xbsX|p|xUf z7o%9}54$rr2Ov6QW63mZzzkLy8udkcLZ%?sjma@hDPhDRfEcBGGgx_dHAgF0nc;W5 z0|bN+Ny_-6tVovz3i56RQ!wZxu!>Drhl*wh(&D9Dlb3+-AqkB9m=Sgp-u0vYwp+cG ze1?~TGg5nY5&{ob6?8b%Nag{6s4zNPV$aPe02|5N=P%n?2A~GG8M2%LAd$ZOIQa@l zk3XXYC75!!f_-+ewLPnBYA2wPk`0le_Ei#wK<8Qd0t3W9*lw@2Mi>}2F4h@tN79~@ z*ZZ7}E*J)61X{|DA7Ox=UzA{I9Cd$C2z}{^|264F3p7s%Bt@6HMmsneT6n>RnEaw^ zR9_e#rW9*`3OTp`|L9XMjs~7rpMNhz$bbK}eD+E%>#2*ijTg#ZAcCZb!;rj+Hs^1c z@;HwXw>?4ACaS!&!q??nA$)_k;RGBfh$6LA% zk<69kh7Av0RSccs9az*ZRH=*yFX{TcvP+a=*8LSnQo2hAI$$qw3}L~4*YD2HC%~8O zUFf+7AS0O|iUPW9zLQP&jC7^O^>;V82$P%@*mgu;1>xvLVq10f&(|jl{OTRV94Kf( zt#Y%Jt{W@1kfj{XQGOZpEYqLFtuek* z^({rQWOH~b3u$ON)wKTA+*`(wv^0wX_X4iCh#@)$qu$-I#S>j=YH9)-mdMWb zzNk?`&Js|^Cpq7_vXM&!pnRl5)W~G#9Ox!Ov~|ZNp!W(_F|-Z#%F zUw;DvITNrT%i~hWop_5qprn+G0!qqvQ`%M=BT|Twam#LD&kHqroZ}Eu_F#F_;6Kp1zb7! zYccl#HYRF7-gu9S2;p{F5l?i*Dd#P;-u|A93%A|UHn=BWLJNe*MbVXYy{ff%0B3Ie zn`e^^cLpV&A%S%y2jCc~-SIi)^BtnfITf#jZ|$+9;E4x-T{}?S`pmUAC0@9P^Jj;O z>OI_Jul%owB=$frE7IBOD#{ja1I)=zi<7Uxe0$=Q_5DNeVI$6o;Yjo^@F5DFN+|2P zM`O-8wVB?iG5&RQL>YgJsoIkmmHa^TQQ;CcuDLtv44yOdRzq}tPp*b*{|p7Az;ai z0K$}S{-XHW2EYh7*a{ z@@h((yJbBy_0?_2exit{KosV84MN_KsTnPa=Sn=4ts>~ykPQ5p_YAYb1!1kHNy$w} z8i7wp$QtUdA_WPe6ALX)(#C5X<*duN8POgo$a%>_Rsp^#bjZDbkXxTW^=$3JHLjk% z51c_>*n%W~d(PTZPLz>RgE5Pl{N5RvBf!HEp%zBRW6B-HZmgTf>t>PShW4!u+jj*}neSiT{N8CKwVFCNu-G?Xsr_o? zdS+a5YvjvTDLkRu%~vI8K7Qm*;b1>dV0}rz3K9Am!ASy(D`?y%Xex1g66JpDS4CWn zej5-j5N4WY6=BQG!Y9;Y5mgheYv*$N#S+Yt=QDuP<8NHP1B7p-Q6plN_irh$5cVrE zh}hb0srIiqIOhxM>In8$1r#_gdEL*(q8An-`NZUN;UnNY)Y3<{G9~gIM=LpSeCjkG zl#$OTSXwR#tsN^9lqe{S>|i4PXy(toAM%gHuA;Is3k+u;bqRp{<3(~gKtEBhX53+n z{RlBNXJAWy%2fy)_+$j$J(b>Y;`1J6=N3pMaZKkgi^nhAWyrm_P|Phbwxv{Hc$e)h z62^J_d1{W&c3^=(SjDbkkGL-7(j7&@Mp($Cel9X3UenL0idIlWhE?Yjg*K24Fx;fVAbr!x99xYfN&XTNpw<|z`y=>~c@#3p{gKN>sAQ96^)h5Na zBk(zYe?w44=+!s3yck_?TZ3DB`8251Be(3CL*PGninEubusi5eZc-pqpS683>juUM z^3Ua;#5Qa1DQ87rrZ7!Em5W+ea<|Bc7rYauWOf^eRc;4A9RvQ(WwBNJV* ztuAT;Q))~5dW`eZe|<|OsY}&#LVk%x&8rWSjXIfcY5IcI*;f2=ep?$Ff}}sH=(TV$ z9^!Sl?mvdZhU53EY89x36XN%TrT0PJ^v-r))GC+~A-F5B?H0NhRIcsonb-nH7wR5e zc@av`w9<;$(Ehdl{>__!JFagg{I0F~)gk^%X2K2J`Rjf4pfrv3f9{(ti!I}Kf$;2} zC&CpQ8~TgtP{^^^BZmL4R0o1}qlpvfjRaTMh17mI1Oz-X-gYJIztWKVE1O-RsK1A4 zt~um9Bj}O4C%)6*yQn%N&8pbW+Aej@UW41!)4%dNsO&_Zc*&vMURuB9Uruv1PBlEm}jGLs;n}Wvj;_fzrKk>ltl*JD`d3u zL@O(EppoA=CRoB0-5R;oLvU3t^$TG`==DWk@(C<+v$9)k{K&*hdJ1sl0 zOkC7dR8*HQUxq-sUpZQDI4_UgWBF@87q=yV*WEN~XVg$#@=wWt0^6B&?0^ZktjNJv z%BloVnx^DB>rdgm=ygH}ttb7Z$m((i2~y=-PVGvhB;7{u(uiq|=_6`Wyl&o;A}&dq z2r;66N3!XD6VFW7S@~D89~$v_D`pkH z|_EKDgU`QTn-m98YpKurJ{z$^`&0Xk1LVq}ylf z>;3cigoRnRgwkqXy|$@y-`{zYvLpQ6<=vH`pbhkr!i90CDEJrpXwgJ>4_(DtQ_r%X1 zb#3Zn#K6@KY{EV1zD{x8wLNohC>fDh4M^u)xY9uU%&G%qU_HG~vvjh1E@W1w(9XV` zNvk2Pu*0%RgJ|)`09H>qT*ag`&G9LMn6qnCTr~cJ3Nz_LHwIUuv8o;6556{Z2ZPA| zdYX?brvz9;^JKiXA6b3I+{p^?PI!ACD+}Z+;}UBW*Z$zwLM!qfy|;O1x{REMhle<~ zMjtBTvR`v7iI1Tl0H>~_{k!NlN_^LMo2prnPO?5-z*p4^buR)}0 zh#7aBZf-u^wp_Y0ySuVYrZ;A@0r6}DK`hnPo14xH*`~y!VXCRdoPiuR)-E3|K-F)O zB;prFaNJ=0E@YdQ+pk21V->&^12pL2 z!})MJa>lGw{1@p09X=tFq`sFLqEx`e62pq02|@q#uJigO?fWuymF2swgZgTfKbw z_eG45!8NG{zzic5UUIRdSTt|2npva3;aS|zO+LZigxC@5C1yd!MU<@eRtG?CS7m_(&0vhAvD2M4q%3D8ia3Sz zK_Oti*DDY7r`*PoQ99V}ikL}c4^w0Dbj_3XP2o+qShsR{VKp_isIV41fRVVv{y0tI z0|D;y0cyuVdp@g}6&#IYXPCGe=7o=s4@lvg8*Q@i=Cf@}0$i^N1wAzR)MBh?;idO$ zh?D8LjQQ7so$|nR9LL)wwDIP<=5KCTyos6q-g6;-bNjCG-mSKn3XHD^_Gj|q6dhJ{ zRVX03a)Qx`iSjX+eZETR<+py1;yqu@#CPy}M>bj(2zx#u@fEn37|N5KOBFreZh~)n zDXT4b%)i`R9)ri&ocrUr?JKQvxYs%J>!GTdoaqsTn7Zm73@LlH0?n_FM3EEd$rwz0GdTyu}uphgz zcT8hlJn6tZEL8;@ujvHnsAWXfxG-T;7>^2xuAR-k{R;2Hw|KR5up0^rpA2@(h`@aa zk4t9MONs0iUUAN9tGNUw)NEKHC@YlxB}MYO1-dN1wY({6vR)j&ldx47s!5#aJbXLS zaee3hDQaOW#TDj-=vZriZts^A_&W!_rY{$9;=BzI-$9v-$kq>WCxP{NIZJ9`-i1ZU zh+6X8`!t!JO0~0b@?|gc$jmOr+d=H4ny#`xeo4Y7=z(5rd`JG7%?jQ6?xS`MyI<$! z^IhwrWQ%#$Kg@6OKn84)}>2yvUA!W}ro zU`DK_jb+|vQ2%tV_2xXr3Pg{Ms%1=&xRS;n^V2ix?c`h2JjN5rqYtA?WZYnW>d@v=&Hjd6#;k#}#V=*vvv(qcGQtHf9n2x@y^UMc z&7jBD8~IVy0bKTDm6?7(JPxo@DL1)qHcuG3mVj|WdxsIY{Qs-eG6*#Oo0l@4k+oQC zj4kPQ&`=gwO%sU4?eQd|4bg?BXV{gE>+T5BN+u}@zZ5`1IAUu%O&QbFwdH+^hf6GZ zUQO$tMih41ys#sW;yrzTPWXvT)uC=KRu;Et?ts^slCKj8{3rQLpBq-N_8|NkvKt8l zF%f6Ql6MNZuEfsh#Zi@Z1Txu_My>Dy11bLHp{K`D_ zLmpG#hE1h4zyRnvyva7bT0TLne@HDVM~mb9z$L3OG+Ah}0cB;$H3Szi_7OX|L365 z6;$96!Gl9<1`pRO&;hFu?PII9ylY%+uqoj#F^nIyLAehTVGEDb)}kIhZ>2o%mghS@HZvs9>8xsa4g27PnUF z`5P?mFEbpXIqA*{CIv=jChNP+37XG5AOxR`xoqk^<)laS?OH`pf7^!Sd#iMrmsDgb zxjo;#xw(-Q{w_0Kp}k-we4r!e%b|dg`s2?iv>vGZ(gI)-J0PGDDEd&~3NV5aM>#de zYnb~%u~xS*2sXtGUMVhZ2ujn@5>7(sh!YGN9`(>b4vxieBf3w&uV+6%2tR#_6);k% zL-oP<+Y1x7;1@(!CUnA3F$75(g>CMfJBkhD&BDK`43=-jIvuQIby~`I)oOzVHzN?S zQirT*PmO*SzC?fsAaDar=pWH-{mfPn?%zeGRk;jT5Bs^TcuBsq5eG2H5n6n0nnC|c#;TFR0;$T0zQsVBPJ zGyGcziaxR$nq@3^C+w^D5t)vP<~&ZW`xUpq_s%|UU}!u>zd792)s-nZi>C6x;R-D9 zKihpU)@LD*S)HFw)XtxR|DEwNJZ818N z{N?y*J#&({s;IoC>A#SW!KlOYNI+H>*5nB0PgUK`N4^B>w`uk>4D|fiKpMDg3*#+D zem~-h+`1rGho6nB5tnJuEz{`!kYl@Md@?2!k;mu`<8WUlerijBwx;WaZEPQ2k~1f~ z(LvS+tG>TfA$=nY;QyC-cNnYEnlt;bm{1AMl=&&HT@{Mhg`B*Kz z12aGV#p{QFzAybhTVF7*Uf^!oxGZ?)mvgoiNq-%gAGF*4aAZy!Cm z&zlWNtKAVdm4R3#vA#v=Lt=Jxn@}NLx{Qj*6^YD{TJ-gV=!T1qDi&{sFKqoa*ev5* zy6w$UCv2(7Us2WPS>{ib>szYId0k5-{P;>+Oj~c0=UQHWPy{H zHCs`6`QE{zyZTpKr7&W4RP}!M>u0pI4X=j*Y0$8iT?!K{9`>(XPX&s>T0lvM)~~ai zz7SV#ueD@BlZti}mdN~3ZB$Z}A<@641oF1hD5_WAawc}yS_`CZJNBz+kV9*sUTVoa09Zk40dxN*iXCkl>uBKOkXY<&=C^ri}&GE6-iQVAzGG!i#$0g|_M8O>ge_8J(>L zowY0tX}rEBIM}U(8-0@hvpINrb zA7BrXkjQ=}A@whhGDoDpn((b5kWZA>s(ye1CytL`?nDdC(jmO}?~-Qd2A7_$MNq37 zcn3wL{f2$>;Ofoo%Lh*aoU_rhq~up_lXN#Ow~6Z8-G4ViYQwJx@RUl~sL2PDtoK_I zoN0U*DS%XEBVGEbW02~KF?Hfrh>E8Kj+vQ)ndhrxaFp*4H;i6$h4AojD3Ha1iF+xN z>{UtHTpcwzmT2UlzXZ~zR!8fEvI;@WU5lF||IZrSJApKko2nHXOmO-_5qq%kf<@a}ayiqN#M$@LFK=LwE2p z_$!;Es$tyeh4*FKGIS2xC$;Y2nxYFRAPN{>HD4hu%O?iwb<^{DtiV;w{$Ic&oT0g= z>Gj6$u}s7`g9Pogg>P;q8;#Xi!b3+#7i@;4OLSa7PmUm`SztzZd;V%@Kyzn5oeiSH zU5cBq`DtV8wZyAVZniSn$_Ns>SHM6wdzT{W%H^8d|btnD_-ABYa(vgBsPqL zb1dcp&*Yr!!Q8yt|H(`O!Ytili&wxb%J(DmvnA+H@=Io#x6Oz{&IqD`Tap#ymgGve z1ApNPU?c)xQvyMVnG<2?q5Xf|57(+QgUbt_J#cw{roOv>q6#3K5h%na>VRwY7$jpB z;~jJ@{1=O36!v!vf*A#|fRWT2wVrO9%};U_;Cq{%<@|OE zxzt-jWxPA1L(6Yo8=s_@@5`dwUmdCJOsx?ruL()i-CYrZ>~(Z{iknnPf-QD@djm|$ z*bN?ze=#70>jwwXsWT?7d)|*Z>tLJXGDLP2t{2xOK|qTJKD}=4cjIub=^oC^7dT!uU7Oby)i$}Zy08)z$Tk@@J+xV^vgK&A z$-P@rx^?keYUSHbUTbDnVkc?GYy1_iif0{Kgv$h&q}ux~pCW+)@0`bGZM&exC`7V0 zBxYi;Bb_3!Ra?BOM)~NlF38&3{j<}zOSc*>%gY3c0iKY35FU_2-reO`AmVK#OKIvm zZf^G)?>{P4tTL4vD+EBC8k-u@^W@!i2aUS&c*D^e#+6;yt2Gp68cCL=yl=&-@^i#j zI;d7t=J7eMpz)}Qd^c9~qQIhroFLINz2r(zPX9a>Bd{_%lt zq*J0o14^nUFGDoUJFT~tgx>!_$o999EU{U5e`mrIu4Ga$)Dc_i$V&zbYv5iN35RZ| zn|Po-Oo4Svl>S^JZao9@BeX%ARrU!c8}d5st!pbRL6hQR|A+aJV&2?w6*&llEaVl( zKim=cLL}~%07C&a;TRH11%iX>G~uwJz~_Hd3|ir;wba$Erv1Hb&;5c-HDe-=x6bcF z`VgGgqpxxeCHFo7(Bs(Hm2HshG=fH>r>3Mli7%Ofa8rz5^O7D(qiwnf>rBb98`E4b z=}b%CLQ9+lFuxMpaI@u9>~B~xZL@z_oq2gjflFbqF>dgy z_9khiAF+Ul@_@ra7dhC4^2)+oda$E$WQ~QTL|1_A2qf23H43%N0DqD30wvy{kbo0p zT@voe@3cODr+KPt)EnbF8ra;^SS)p&@N@Z_Tnbg|Q^y!^Ed>OHqrUq(m6q4`n5+E- zx=P0q)s9_;K_Q?G{5=^71!@SR#!DP-gYTx6V1(A`h(R8_zjX=x^4uWNGMuF<_OqQS z{Ne3v(I!3SXNS2_VO)21YNn%alJr#5-m?i$!JYIG0oeY!?T(Ds^!C%{f(ivLzsV9u z9g~C?ImCM#AU}qSqO52;E-p?G-FT_gX}7~0HeRg&*O>)e(~lp1>2ElO1eHS;Ooct- zxIg!#dD8cQ{=V~anafM?PRS7U=qqtPsez6-yCt0ouv?y}OHjv}UD%&E5u1E}!vbfX zJX?jSKiGW*{8r`I%eaMvzo%sbAV~6r>yLMg^V4?x_yx^(7~1edE*y+W1ZIfXw&y=5E)wB!1#d{8%h*6TS`8GWa%4E68b)W*1@QaxpVcpjlT2&bx{UoU zSUft?d{+sANh`U4X#NyCLq>yN&}}0qykE6=XgCB&DQ^DR2hLT` zAITNpH2AVDG(Ti&!PZn%?7UH1lKyocU096YC!D15c@EeDUe;E0_^70t$m#~NyX=Nl zoE}ZO?hg2}G4{zNnii-?*pH7y?)$7~Ky4qO2tT5KF(svM7VQVF@LVPe%F{gSn-24v8dNZ4S?6}mfP^TmO zV?k||ag139)`k-{7p6NTSkij=j!<|o_1qcPx0@3ayDR9134EiP3iHjm+D4wUFgDia zmKIklm2XyOo^Dc0uSsf?+2-&`YSs~v9LoO(r;oWXt~9RI$ZownUO1jjNin|+TUXWH z4vA&uBGdb}1LEU=g&@Xfq83Um1i??ij}b^P0S=j+qd_CaJ8t&pVbsF1O*k^=cMHgW zM%zaF;XJM24Y+m<SS4xCx>N z=cUVt@#Y8HE(fmMhXC*9kLTb*L< zQ2rB2R6=cWkF4eR`}W@0XMFKRbHs1D{3ETSkv7Cb!*bG7&oV2xxT~sV6JM~Z&v7r< zSw7{EdjfYx>zaUqR~dB{mbDl*vIRKOWWU5!f)!xs1pDiIMqtuvY#9n3ie*l67OdO; zxX!E~hbJG_x3L>mw?+r6g}ZrhZ`pL-GqPI-skA|6Y$H*Ol&DSkWYe3GwY{dMO>aND zwDiYhzhW$Q2w9KY(wBt5IOA~M3j*(t2Zgm)LVi{>7HU2d9l^;!c}+bsIHA$g)00ju z=b>HuJa*5(i+1u=6D|dej7_&L;Yk1JHuYA?_S5po1xa|j6-Oa6nRWFgZ)E$!%+|{idmovf6uWwDN!A@RV;b!F4su2gXJedb zCYKXvmE0^@!BAI^RfXr4n~ih+(-v-!PNJu+ySq2N0{-)?Pd-lDFf~jU$}cD=$j`6I z#{HQNTd+0>0B>Q%I9i4AF2<+p+@0@|-aM^vx>0wgPCwv}fomWEx)))va# z-eb#V6|}O+d+{EZd`I>HITS@X9gRteg4&-4+($l=uf0+6f0zOtBkC7E5~#nMmt>W&ZBBLXc` zvYkQtp|1xASj^!K(C5|ogsaw z+;Jo?7vN^dhxC$?(8XG!m)2&KRIC}m3W^s|&K$pJowKKZ(mJ&Nh1Oy0w{569vZdN8^ZbVNe$hd_{JE+9*Zy~3Vrl-@opr0@tOua{^0fLYii+X(YCBXo*(c=P$j54%fo z@gzXZCw0h=poG$h-5xD1Pn7`w zYk{BR6$WHQnbQaNXkVSn8K~9J{wm_j^#~sli}9Myy0fibXA3$TcY&w&kko5i7KzsIt%AllMr8tAFh~nq4>oqQ#<2E?^%}Z-dIqDd^=rk@gg0EEQpeH=2Bp0ws)jKRg zSAu4aO@b)z*8A?kQP8!n&Y!psjLif@rlR?(-}7})UXM~MZVP82c<=LeSnje5+)D6!1KpNpPZ91`cK{CwiH%2MR5ZV)p*1r$SFJ$%&0z(Co5qyP2S z|LvDYzH#8*~wP`fJe;T*KaJ8i*h&?7p!kt1utpQ$WqMkN5ZYtvRn)h`d2{nULIpE7i9blMn z;gP(#e}_jBHYXH@D9=cs>YQCzawn+UQzHe^J)J`)YdO|T8YzW8>DFjODssLo8yPo` zs^Tju8yS9#{~Lhw^z?P?4&b=Azvr30zq>ELKV(JixgD~%yEnWF1-!%(^X@i!n|^m2 z0Qidw9ereb7939jb1}&_>S)BQ`Vc6RgwBVXNs42Z-kD&%7-l69qkV?j!zh%J*Z2|x z^X{;;MSWc{cfs|4d9ud!^K-3nWHCn}24ooJQj410oStX@EolU7lNO?Z_$3Qfv5L@s1 z`}fGBl+*C9LF??31E;I}#ydwa7ba`*Y0zsk`2PF*_Bk6V_P>{5Uo>$p$#@WKIn+6f zmq3=}%yxXd|0>30RUkHE$8h(&x(lTHn43)XxNPX-7zbpeq<Ca9Y;Xqa}ic z#-6B==4ndB-^3;3JI-)F@$}OBg zWV5hRTTH;VYP8_cva_3-gC+Ws<#wW9F4t?<0Eag62{rB@l!oxjqbDeIC4oIP*UCo+ zoB3=*!e?FQkgR-{+vxfG5v58F3L2kF7(Ya7&#?hWZ((%1L)sCN3)VhM%SHwtMpRA4 z*n?Pzt9~znzF6Xbk3isq`sZ6ZHX5iTHQ!m~#md2Yx3%7NJj_+L31}9OunywXGzhb? zVvuxbz=kRCPaql^nEVDD#ui~vnkpNmQr~;NahVgNQb~LGzkO&o; z;80W~v_Ul^fwK95+{kGM z;q0I3VdC;s3P%!@z>l7T6+|VZrd1LEC3D#qk=RzD@9$Ao8(1qw16(o9K!zK|{XSFA9tKeB_Uy^HknVNIh6~Rl#uNyfL4?cW+?Agw zk*m$-3TpzyK@3mNp)bjG>a_!MS`bN1z$7ba!jl;xz30FUXV!9GX@Ht-Wl&CUDrX9Q zYkdca6Bs`UeLQ{S@pWou;uQxm^RA5td@6c!NGS%wZq>b>k!o+$v~%S{ITeCp4Bcx< z|A1*P(rx+Mbtm=T5B&!%IEdB=NZzbw7LT?74I0@qTT}@4;&lRuU7!nX!14M?3*&e# z05Jq|SH5`e#afd_ANh}<6^Qe&`G>9`EDVnjzO71_RQ&gDTf({IQfgChp$Q~>ea0qy zUHzbZbW6s;AcLx`h$jMdD4xhw#uJI@oRr;|W}cIr;CgA`^9#iVVfz7yI{WqYoBv?U8Nf4 zXp(Ep8@ksKnPhrcVi5ULbE^M`-Pl5H$CTtXUi6L<(ciS&ynt$7c~Rj+(7|0y2_GMn4OPlhm~ zgSdLj7O^Zkehpmd3FA5=KmM7Dh7Z6O%J+~*RWQjn{A0tB&n_(1qWG*OX3l*?&)iJDRhQ!DYbt%G8ptP3PJcdLpV&h* zEiBQiWEqvjM_HBi05ZxsWs<2eppyU8m%0ztD&G}=tnLeb6K?pfhzPIKR6a=Ahc)?@ zVbhRG+=JhXb)YqXV%Ld4z9zwK6Wuq9pRG~>lSDD6i#`XdYO=rD2?N0pbu>dCsxHW;P{OimxaX{2eaze2`!nJ zl+QSc^Ri8mDj6lx&H1iAOnJCW?zRl0;@^@grjni9v+A`$WKk+MgYu8|0ab|FjG_yIPB5L)EITA0Yt8f%qB*Ak}H&r!zd zHv?DGEVQb{GQztCn+zz*OjE~*B{WYMC+~H#L=c8@dlDENlt$iua22=Q9f0Z`yWDj` zTiq}tGv>oyf)uKsGgW+kb zOsJD|RdKI@3zTm3SP}I>1+Uka*91HJC}d0E^*(nt^Ih(Iw$8lIH*|>#OC)~ih^^(2 z!yezM@0OL(;Y8{nlV1lpI?`M}UbA=X6Z@e0sjDxeL}i}B9llCXy6WqDU;lLJ`0ij` z9eSevLa3ti+iRT390@5g!ZstW9^arUZHtQZnIam^&5`qWS_L02@)u?}Kmf$1n~<1j z>_5A?xj8*OJw9&Ky|^&a?I(Xl)mX17w^4ISDn#m5_r5>3#x6$XC$7<- zSYYsgIeh)DvCwt-YNECdy_iU&h}iW$)-n%APWfB%(t)n+s1A=ZCU{%O#u%j_-`Oxx|@L{aApp zqh5f{KchXcfw3c|(5ld=UkK5X_WG|QM~@Sny>ii9T87Y~3G1|e!MKk<13=7+kFwc-Y)xvW#9+XbO{Ovz~&C^|iRl3H$zIK+AFi9fa$y;5P-V+_wbZ`4> zgQ*h}5@@Fv>!+t5$FZ0y-?O1$t#DiZ0e)q*%Kr7`@$ZtDiNZp#t<~YyBVDw$)zjX(_G|CSx|D3rz z)Y#a__3+ht$OgAs3x~-21X+0zmF`lvoXwe$%KBtF1z~m8^GEEDH?{RDJKNbo<4tLM zCv2we*)~#H{$G3F9o1yky*nz79Sb5hKt(|jL8TJ{qS8cQ7!X8CRD=YjNbh0P8Bq~X z5s`!h1{9>1NH5VrL`p&lJro5AHAD#s5D2*kf(pU8zwfSf*ShPj_4&t)t_AOV&OZC> z{XEa!=e!8%5^}P{yww)HaIb0Xyk9t7_~sWoL}IN=Z39J}nq|7$U{w{lIVbLFdsPvu9Sw_NQ(_czf2BvKyhLpZ$h zpUtdH82&~1z{qrzgmXvE+}fpJf2OPcz>Ep#q^KXB~m_CnDX#sC{rB6#0dBl9(>(bs@&ks?QCC4hS4r8kI zdA)8vOmbqG?y_|aU-bG@A5Cvbof}mz_Q*{=^=;ca&K)u&OI&q~b8dxl`Tm^Q0AESdFrsg=yH0!hFs`p5t1aodx|Jg4_AZK<+M z93lFI!h?7TjJm?j8)9gQA(DN(tkr?1zf(Oy{I&a#5K`6(cHlsF_G9ASGjX!MLs||H z>EkS1ir&O7D&iW6Df<2u;ze+RMHQ>pBsWjLx_qYoUR9w4<~XPqT0r0PBd)o<--u?# zpSttI*H^5JUx<2ws|jMiX1JlR_iMOeJD^l8mE$)Og9a5EJTD1Q5icS9t-xg)bm_tREG<4PkU7> zUXwtLI%cPn7{VHHxD<{_-b~^oguj^9y>a!41LuTiwN_1db0WqbGL5neGBQ_e;CPza zK@2nGI?s28R^pPJpyz`U!(T`093@kI|8@@_T>ZYLP1EtxOT4;Wb(I1GZp**erEhvI zM6&3G9lj0~wqHiXf78NFp*GrsPm#~QMj96he{Pa}!5ECThorSNI@RuosMncza&goo-wNS+*9E!$2V z4tmqWD);(XPnCm?aM`@g!}ekvD(ui6tn_wjs*$K2CNI6gc#E;EJeq|&xg>M#)Z_+t zv+Z)V$Am?``mQG2In!>lb3PaBXo9yHd*&aJ*Q<`hD8yMgi$g{RYZPMmI~GPP^8zP( zY@qE-^f`(9M91BOZ(etHo$^&^pYt6;Z2ZZi_sS06(~54VoQ_Ly^M(V*heo8gcKKWF zV$|zsmn%3qj&C$Hv<!8iR2$UFzQ(xLLhv z!N1Sd`ET_3`timVxyUX@z2RX#Ns-p`^itnsCBY>CDDHm`fc$o6{ifhJ-V*YBKWi8} zeq547ltMi;wimm8^{#_#7K<73TwS1w>AGW5_1ADK;O1*TC-lYi6Gdu~MDM3#s=g zLS%1)NZBb3x4}+R=;GZ!XPl3j3v){O*_?(X4*kY)&Glm)1-GG>2Fi4joQrj{$Qu_u zg%?Zq4qC}R6>0<99bS6{fcEJ&kXD1pdTOfXhU|NK>xbv zS$v+yxN}t$`^j7_Oz<&$*VR+DTTO~Q7*6S8}QtG%jmXXHWvH_?`NXBE&AR~>>}S#WNMkb{%r(@ zXe>F3{m0hM?*l(gIBCg0Q#;3c-nQ(ULv~K)_}a!Kw=^R0 zm?FM5+hQV0?c82!z-XrRaC5+DpdRLEXnt*-!5&QTDBkT|_1@em;wE=bel++B*di1& zzTujYE9VNwgo?XODR@~XW}Ol1b5qA}hxfzU%QX-Sq}z!O~dVR6DeVghi$;c z7=3cRz$zO+E}#*)@%u2xRcx?3pI{&0%;8qi9tlAnkfXswPuul^khaEqK3DyWcF86R zXu)%1m|qGLp%y0ZP3rIUycVZ+lnT2s9n|b@v@|9T={69~8oDQhJim$7>NgoIwAV=8 zW|3Cg9As|m$2c5XHJ}R*B_0k=>MCWF>D*L30`FZf* zV9O!LMEUwqtxIj#Kx4!HFGQm6-EouLtI^4O1_OtyQZJL9sZ85A6b>*kZNI8S>Oe?Q zBtgHSnC6-402{U(K$fTVi0 zwnaIreNQcUEpD1^L)0h|_PHuL^H{jSp7@4iP1JFd@pqq3=$bZ@U}gyn4E17MV1L$c z%{u)c^1<7Q=_-(iRfUgd^Kd80KAc&bF{a6263aowtzT2KKS4_YE`?%x<&s{KZtHLG zU^?&4Pr|!xTLO9WgBMJ!^D`4qvpk1h>l>;BUcx5{Z?#alX$&{iubpXgFxnOJdLQ+C zB)Jry-eD3$Y;#JCZ}7B=V!oidW2w`_Rj*5N7|(o?RokIBRE?%tK-)bw{fs3!r#C zYE97VisQe{(ZFNLwb_XyH;oG;pJ_rI&lYu^_iQBr;|k{|bz+Z6#y_^!fx|BWz@Zdj zunj|&yLy>5>FAz79vC^lA-k`Er4#{N9Joa7=Mz_o>XnP<5!N{~hdYfCMxr38`>CUS zuX_9a?O6KL zGuEn;yZHbqA~ ZVgSTk5nW*SN6>wmpo9+RRR8oB*>!zd`gQL+*sd*{M-G50=4zx zr4Eq(95^n|cQh6en3gzg^TG}Vs>9z7WA1ky?khdq)zCxq+^Ab?*R5cLOHvmu3V@)G z9n6c-IJ7wOjY>b#tYinhtX}t%gcFujDjX$f)hQe_k(yH!<+nrlrX(5esdV}Dnb8A} zrr<$dQOfTD6Mt^G1QU?Cn1Gs?cJybcAS^)*JF(YO(`#>6!GJVn#Bv}MgP9%~DegV( zCL)5hj~6(&z5$29*xyoEGSVC_Q?gF_zmdEaJKQ`S3lijJ-n8{UF~t8#=Ji1rrFH+3 z8}elL;*bH-DS!xE;(KTTPya}V<4)vVhrK)#;zt|0$Qe@P!3!OlZ!Yrueyj;sWdKx> zC)q2H=Az?T_1P!BjD}c5>d*&XTfH7nOW96Hc)l21fV83XbU_*UeSu;L%5CPi54#c@ zTTn`7{+S6)JV$Fp4?!Y7s0{m0v8N~MTjeYa0~O$gFO3&vojKn2=Gtm*cDt~aE9m^l zZt3x4{fQ3tK^!LK8s@Q#whak8J&m)U4#pf>M1ALmCVrUfe$zs{k#uykb+3ak4djnT zH1>g?7wEFNRz}wKQc)nEn!ZmtoE{lk#*`fFic8a2q%zGpOb3LE`h7i?!4|Pf$8Jw@ zV*8-uJcruv3Wt{1+9`3Kd#{zIdkXrayL<@r1-wuromwutoyD~EK6kn=D?i-^F(x8L;h=D|= zOY0vW9|zreHw~_T6kg3oz<816;;2&3UHePAW}aT5hAj2u^Jlr6VbuJGS`mZ6Fz(h= zhr{9Um-d5A<#*Ny1$(pl!qBaG8AVLOQ|jN8 zJ|0<-UsNt8I(p+dm|2*FdZ7F7P<-)5R0h`nk*cr18%c1zj8KRB^{;E`?FWY;4_~I- z^eOBARN`H1K9@Ex81gK}7NyjMSO8SZd6l#zQiEO=e$PcwyMz#5MOLdX{_tct@7gtR z4_1MjwyN-EAL>~=Vo1<()Kgkf>4QnAN7q+vQ=$IV9M}VH7eT*%*ub=1Vp=F4Q##~1py3A#*?QS|E7bjNHStW zr7osfTW9%SE>J|IXMdcG2w>chHr=3r&ym4eS{JL>FsgzF@C8ZRK8N2+j0Epi%)AsQ zonm%>O}bgNKJL)J?Mt538dXJv{=pa-85tj!plM9{soX^27tC zkeoVl#=E~DY4v&#GXKR1<_Y4U>1u+TUXXTi7kf3~udT1f0@lte6aTZDOKQ;7#yTp~ z_y60Vc#N?gC9!8E&BkVq z=l|-4OKTU~)2MWhG@|?Z@i<*M?zfG2B1^5WlAKWC0<~N03D=Q2e z&w|x-{f;shrlSm64cFdO_hp8#3{?yb{Ycx$ z=UpRHaqcnD$jl;R^1cx#1~!U3hAs_-hAU|1R-GT*H=kIfmX1kT=$I9FbpACU?M)OeHvUhZDndA@EmujRjdm-zAh0 z;MSG}+`8)rZf)D*ExJcQuEmS&`S7B+zXMD+FPZh0omSjwoBe>(;hSzvWS!8UC+M8;W62+_&MqIx z?B~Z`n3H+1Z}j)D1rox~zS>)TM3AD1f58t!rbkl?woa<_eeXVw0t z({05pAeb}X*^HqAUsuI@K7vc0{+TkOC(yW6p@IUQ3fWcT#~r;w9la9H#0iIZzCmHD zi0_jS*H%M=(09)Uw%_v%P=*G%NbVjK$)%mww!J%e(A?Zpa?f+YyxO6~1v@bBA_4Ah zBX8jXfgceP0OQBU-up?!B}(6zNQ9cZsJLPD63Sf^s3S4^@17MC-h&yuR3BxUka9NA z#FIaxHaB<}>+YbU3f)6RyzWmmY$EHC2cxr0x4(!arJt|Pt}0X#cc4i?B1Cc%&(&UE zBreX863lvTY&Tfuv(v8hjEQcb7j;>0p7s_O)@toO8EGl{mYQV+l2`5 z;5+rkI;<@Y3;7R`(hmduOZoi&T?&CXv9)VUjX1l!F5!5AzP1$CRKk2eNmWI!I0J2p zo+rRpOL!t$JhyQ6`-)}Z5@`5dMu8QvQ=w&EE}E2sJWJy#v7qMf|IP>lJ{N>roteY$ zotkXn@E!<%ce!9x_|na{<$tpefckW7xVNv`e*Iod8z_qeB;!u1#H&&76CGTaRG#J- z{o{39z<5LGC%)li9Aj5nANn2yG*IWdVxkp~N1~}oJbQz0bh%8k$X6_yTWWVFmO~9i z6ZgAf#1hLH2hH^r++_D{sWj$6&Uu1_fioZtkGa%6;Op`2a_Cg6Bo59%txC17H)PLKesG~ z1ByUy%!BzGg*^aC0hEi2)O{PwuD`%Q+2&D8)MDTsACFh3U8K9 zZ@xR{?Df<@5oB?yMRdTI&$b(j3JQE?zg#Ox#3o05dRrb| z-biqvPrS#xa5IekPst8|&uUO8D2WeV79uX0ejA=5DW0yr zIYws3jYExQhH6UYzY>Pmja_ZMvqn^^q5_uEqs@5w_-sbP^|X_dr@hqXb>g2A-lbNh ziXlcH>e05znF*MN9hd3tMWZD@cTR3``MvGIA82=P#wqtEx3PgKeGJ6R-h&iw{k~#z z3TjBe-1A!f1)E;G23_&G9skCLx!woJBDaw1B_ap(2`F-Aa*);kwYLJa)7-h!9F%fz zO58BYZ0i@oNvTl2$vYCYig=aYsrXmqj#sYztkA;#OjIDr|SG=O3y3kE=9bcq}M%P`Yc}v z&esDq=;mWdfoDEi!AQkN{!H)wXo){FHLw17-yHk$iDg6Vtd)^)b~B))#|`z-etBq} zLHu&oZ7{&MopGCD9~dwax-_n)&TrbA@(xAMzO^dhW2Xj5iIIf46_k*W@bb}jW1N1d z`Lsh0rKA+_ww$0(j~*-QZ=#J`l$^40tJ}NzXokGP8p30!;+}h<({*2}f5|JVFo;V= zhPxj8XD~Q|EZ7o(mtj3dT-D* z)86&EGF2RUo{YXb%-hnIun;`=>{xK$iS2TrX+zw)4iLfzAjVEkNf82L<7qQ=eF@%s^KjVp zs2L}Ilvzg0hoQ)*v6ELrVG27hR6eLziYaFB4%NVX{~}j`U5bWsW=Z3BYsUm@ zF7&-O9Q)#Gsh`?(LNYMTZ6oUU`MeD^3E0i24RLhO#dT`wcgBclO*exUHa8XC?9W_4 z8x!IS**|CD1c?~X@Qk43h z_Er;a*wcjw{Z@1zvVVF;Mz>r{O9l+@%SawKeK~8r_8o~ZaW#*3hf&12&gb$S{YW9^ zf}LwvfpwLC4a}-VYsr?>{-%&GelZxjMf!3P;O&C6Ed4#LE zOM5WI_i-&h0opUTT^$Q!``4f6nrQl4uK8x7iQ^2$^kcDpeOP34E*Y&?s|DFj>&83h z*+e`~OV>TxyG-=YG+dY-V2tymgPGT;^V8w6S5_liiQJ%9VJ^Tm99y4?I*qgIW zTrpdXa?2dHCwSObE9C(s}ngk^1JLkt=W8b+7*)g5n{t1Gx@; zbj1-IZPilWyt!rJ>3=VKIuA!#v2x7^OAD}cxaV~y1`=wmSdwI$b)!}x%x-w!Zox2sqmEMwoHa6dOeDu35gEp*11(A30 zAdDT{VA6R0d#l7k++p7Y%!uefd6%`_OWHh?CGm04Pq;w;14XGL21D0_Y%*7|*k366@rE58uClCh6P>%nSdLD(pp5&GmtI)h&(H1DsUCWr$M1uy zQhLZLl+gPVM?6g2ZS+i^+$O4bEnJBwbo2Rgi5nbCH2y9T&$;wyamG+b0q7j>f45@^ zY`bN%ovRN0vMdR8!wnC^Yh|2Q9klJz(p}PQyB64VUd!?G4h&o3pwrHoL|$skCw_2C z<(MIIESy7POjQ~px5>Yp-tnJo%;gD=M2sVeM52f~(myeu0f4#0=9mn97sls1c1_xYQOTUQAwv?V6}5wc8p)1Vv&frYuTk@ry@oFh?q1^nLg3E}boaJQ83wXQVSzKf zQa5J5h6P6Ncsh3|gL?=Bbd!5{c(}T{HnF0yST$?^(I;7If$pw=;T;fm8tV)X4-(Bw zJm1iN;Zt@_GR*LiP@<^nz1G5A`Kg@APn9P>gdQxs^is{wUY;0z!?-0%ZE(Rypl|_Ee5Z4uzzn!6^-a3Q<+> zN6_c~IGq@E?`;1M1-?p!$j?6Y94`M{t#5eJ-osN+PI15cSYE7h$r=0Q_J4Tj5#<9g zKn!xK8utDS0YB3x16m9~S%BM3TC@oTK6Y+kXh`~#3CJL*&y8xhF_hfiy{lf`uHn{> z(}@-uyvg3;{%p0GKo{%2V9RX^%W+Rij%vN7?}ndE_$9~9_wp_CTzCQ2{YSTQIAqjv8YeIK`Ed?9=Yps z#~-|%7b{l!ZATA?2A3;t$2b!|Eh2PF!3Hl;v4tso%6dW8Jrp7w#b2&eD>Pye{ zUDM4Omx+lmkql%#4C)oJRlB(($I|QV5N2n}2`qv+M>knc4D%-zhRtnl1qSdwCg$;x z#BiZahHH4#-4!dnwsI%F;ahLknzbl()<8U+P6uUN7CvP>_fK3~#TN0U+JPU{O;yw22_1 zm5%FeHK`E|(O*s7UoYU}t~wZvZ4l=XCzlx^U=1OV2@hm~b5$e~DKWSfu>RhPu%LID z7QYfI8^JlTRL;sbDH5Wo_|yW>v2*PK;=KT2imZ$}3_&_x-WYW)K0-DyuQCdcaHV+Z z6K71prn(`LRVvE?ISuB{8BI9(trvjwXdvu8D6|KzS{4hv7QExeHzQ5+qhizoe33|z zPh+65gp_C)bS?9xhFip1IE^r{5ruw{&zQKR)A_ktHxXzn&Xz+P_*CfK1LtE*4aixi zOcK7j1i}>zFIgI*nV=ZccG^C0(zVJ2{-3EWZTwO39((A(9u0r@T;e5JW4v8`>$e!%u!@$6yu3v;DLmn0d1 z0e?}=cW*(fzTZQ_%I*PYp}g)pTlLPm)P7-}KCx^7ppz4#KRS5C3UqQVKH}DF^Hw4; zF)?tqKM?8qyFA$HYZ7W07Ee+}@*j99`irRgn8#Rc_$x;JQiMdUn9R050u7<2Txnfo zBvBW<)=$3s(osNO!_5tcXbooYcVyY(_=0f-D4iwcg)O*S&7%`|E$j@Tb9X2$8QsN5 zHidv5W`RsWX4R7OXhZ6>u7JnvT_DiWR==uuS>#O{32tg z7{e_S1Jd>>JU9cO$Gr9avr{Rx>Vb@*rn&6prB*Km7A^{!oy13&I3X(HSbLjd;heFa zhlQ+IN#D9fPSkv|sJ42mT-c8Gu8RA71p1WMKM~7vvXkHzIhrhZWDfU{ZnaQzdQmx? z1VNRk^fp`IRxU;BKyPPnYgI!qZ&SpA@6(W=z2d|f^0X3|2(ojO`iuwk0`34{XD7Y6 zjkpg{8usbSb3c(Ca(Ev)*i=PDiRdWap9gGUQvZ*<*^{RXvI3};|2S?9D|ol zK>YANMAy@}A^Zg(xrvs2Ix$fkP&dP*lEDo=ii8RQg1}70n`g@`t!P2h&@k(h$m<8RQ1YIWnb_aiJ*1)dW1NDdX1;+>$eY z+?9GB`z8a)NSTdob6%-h3QnmW-6q#f0)ujN7L~&XSU?*sff7tWE2__Y+6-+}eH$p~ zaG!UPf0O(I20Qz4jk?YqinsH7v?93i%(+C-=G}Sb;lyonVNtDJqyn%z0UT<|Kpt|E zF7Zm?*~ENn&!7ERErSOd-h`QXRdgxfZ2nIRz6=N*LX;)~M6u#ikCo9Y}m4e6dWVDv+}eFk|-)S#ch zX{8LzI)`Iv72xT?XoJTDhy;RbpfAkqegh0U0VGzi%c)*+Vc1KkFJ0@_qAJci&}f$C z&3l0ah)*a$`f0I#b2Dn50l!L>b_5C~Ra9?Do5fu1#$g+xzuLplzN!NmT_7yiU8K`^ z*K0r6I(RT62-xm(>;70Cj^CUqEH|OrGBed5;{|QAWKa({l@=GLV&SvyU%#Hk1?BU2 z?Je{5fM-HdGJpZWI}aBRmygD1Xl|VO|WTkDPlb7+euKz zrY}|4`C9rO^zW2e*s6h&T}7c_z%#cgk9*svAyzx&^187u!)FNSY|3oDvR+J{>d3}; z{1gFn%@Mt`CQa~bZ+?aR0uIq~=@Nr7K_A3{Vqy#!CnxkIrKy&jrcKo{Qa z(cBTGgl{Lncgbm2S@u`Q1bAM6a%KvaKig;hiz!!#Er=2N?0%5F#usHTDs0tZgqn9T z1hZ)^ispP$b(TmrcbnEHv~7@6uqCv`6YK|~b1ODQuO`rEDjF{EBJ!M5kl&mpihUU> zY+OLqhzn)#Y$2)Reyq<-K694X$`3wEgX&$q8zhRfFonb;ZbbnV9aA!#F&P-RO#B}K zf=D+n45RF?BR-z?QxT(#-cHz*%#Kbidi`(jqq4K@{;v;??z` ziOCUw{oR+!5$xe<6anXqkKU5A4E1DbQ3{1=wx#m6OeMM;scY3JI64?8`^k#xFJ$f( zt}MgpGWraphsmyA3XhL>Po1+Ykv||%r3)Dt?I0|_FSxMx%DMop?jAcoL2WC zn?lT2_H%JVNzvliAhwyv5MOl@ElZyHe0~2AsOJ|lZXaY3q5ctE zq}>QOluje9M|njwbxru>)u6~O^n`a)jxF$xe9*bvA1Gx7;Tc=qu0ufVpj}NTgG^dI zTkJQX*&j2F4Ql6v@&RN4-O|-G3la;pABDf@-^D-{o~C@AR%4HohJ5CNMk)w*$VXEI zbW2mPayoliBCRow6+Q}DQ%WsGJ+*2)`a`dtBXxNJXpw%qUF>I`A7h=zVOPQSp zU6qsN-o&#RPaS*oz9KIdLbp9a4>0uGoDb@5TlxNh6#sd}+^v6FF8iL3P!RYU<|`~b zv?6MFO%$j%m^cr34=*#;AE%}@Ys`B_%qgqvawdH3HR$}t?Y++nC2n+$?+#(rQ&wzN z>OK*$LvFfa$#oTT1IpChx8W%{2)Y#q`^7s$>?7O3y3T*E{THW^&q@E^aSKY^|u$(Hx$U<5ZR%aw`$-mw0oABm!c>K3M)eZiaK{m!3Y38c`zVr zx~F)h=`H&nt?$@(Jpi1d#{9*JH`>&ky6CdR+Z1A;Do-OCaIUV>fV_ax5eqb2|@N5kM2EyU^+|i zSoOH!tpLjX<^y#{0PICDuUo9*vo7_Y0-OYROL0MIDRP=gE%ItoKL#@iRKZVsEW_x) z^^ZRQs^clF{fDz)Xz?A}&!6U%XZM|oH34I(uW8Kvb*{@daCUiF4N%xQM7^(8?phpx zu0~Gl#h0(ezTYJ025L7qP|#ki&RJeZ<6Hai0LZ_O;JZ&6fgo~NarKf*9TtXm7`UpT zoNP|oin)t%Vgi>H4uGMw0Mpw1L3UHrD=@#O=-ax>mX25Y9W^_~Q>y^XrE#Dz=fCdrlZf!&==0y`^WWsfo8tbPy#9-Q{)>Hhg|7e4q4TXs z85ojBuZ4g08C*_LL5U(1AZ0EJ{xa5AU8~NSX-Y8z&4Wlfg#h{i$P_v;XgLrCM^k`q z`weQ*iB8+ad4((hj_V|TFbB8p+CsOVJ#i#i1u=3bs4@0@)zUw{B@s49-e#KIGFr53equw z8{PX8$p8PDf%5xT)~d}64bea0gst^+e(zoxV;vp980jH3^J4=hn=-755gskVwWX!) z0fueC!MFscfcs5-851&g8Cn6*L*^GUCNdnINSAa2t1_<;UreXK*hA)fE|FPONNJKe5vD`t2S+B#oMg?Q_k8rK0{{d zcOy@fC*1C$)$X)Xd_uc*YIyQ}wU+S5o1}97P9W`kqsV7ytKKhhh&LxTNd4Y^;X%I6 zTYe!w$EsX~Uwwi<9@m!;5>6SmFLe(dzFtWBC}(wo3fpLDcROWD=v)97o25l+oNkskrvmj)*#EI)4Ck*ZD zEYlc_&A2V9m*cZ?Cm;`Ab{`uorrMKm!_@Lz5@+x#dyieoFOtn z%x6A#%;u<=SlQNn%G@=a}%pZtsW-{_vN2;?zE&qq{C( z9;Sq9ojlkVGWvNqdy;9P_M0e#(_XIWzuAG#E|?)ErAtpe3+{WSu9ni9oFjhN?g{pn zU)DG2p4Bjk_V+OD{smn1;MLOLGUaGoyF=ZLGaZ=5hVh|jg?*^0$jeifQ*qNH!=j#? z?hVa(rR>K)yn)R5oU)|H>sHj-Yx}K+lT&6=)>WHQRp^(PGFNjn?>@h4TfHT-GVOrP zLsXMPwT_pdT!mYXuD*6$p-z8tv{#O)eA88|kPw`ZYtdrj@lN5%BNwCml~dzASHCt6 zCMQb18bVhf=~q)8-{yC)@{o5F-m*#6k3KA zhoAcOm4OsqIz{GeA^LSmdw?yLLla1;%E`Fot}QlwPFy1}J}(vV>|%hr3FKZtf`A?D zb`yt~b+0N&RTy8``uflheP^&Xcgcl2Yqz|zA&v66{f&F(b7-Aev*@~(A*1HCE9gQr zg(*`$>)^kVcbRI?hmH`R`v^Wd1j`lIM>0R1+^t6p@O60x_esH3&Zg{4zpt8dd#I81 zrbz^~E*V=cA>0~W!!c++Cn9cTl9q3JXLpPjZD^*%JZ^|Kc`i-Xl+^fF@Xh1qDpNga zrHJ>=tJa;w(HQ>sK6{SPgQ3_M*(~lLaT#P9m%J6;GeRof(t_s}h z*d;>|o0eqbAc}<(De|)8WkhN&G7p^j_!dIEiuUYW+Gk%Ok@>7HN5(lKzNsHIsiaqB zs%v@>R;%_f-!tHe?UNjryW~5?O$tG)2~7#vgFt<|l5Q!SDSumG#%BdCooR`~{c=%bgUE(oUnMN7$Q!}e5{ z48SZMaFLQMT5CtokOHHn*4Ruol`3K3?$c^%0PdR&+vL(ze-RyP^EKk)*_5_OI|ei} zJ#WbHuqppACs@WmNOV-&vD(7JIckyX6f7j@?jlF$&J;P2OkmlGTt3 zv-(}s4{r>P)qWEZY3{Pem!{rOqstLbJ*=#dxmABBKTkQA|71&=isgI%YAJd4G0)*} zDY48D*;H+-lq}sxdF_KIi3b1lTnoZn={tbdyIsy&(G@IoqW^k%!i_XI^lk9v^kj3S zX?R|9)vsn`0|j%8{slAxjYsR<2o(y<$oedM5El6)wqX4|GqZXrX0MBhL({Qt zdW<}60Xc0+lmo==A|`1k-t+5Kw%=tB75kSE`_GY|ye&QCp11^$yuSZp_?G}eu{ldx zgYH^TZWb>qm!YsjU9IUsWu6A^Rt{8R4Z-UYWA#w!n`9*cr&5w>_c3z~+^JIEX~^G6 zd&l#B_`@BimA@`cDMlOI4;gH|tZAcLw;j&5-(I9MAgy*Ddr!YM{Xpgg$^}Bn`JIup z;EOM#Q?iB`gvf&jDA(b^wO1V?B0Ua9H#wxuHf?KqapDT@G|Tr-&)bn}+=k=Fa!|$2 z<`FNvo5002`G-F|O8Ig#;*r7zTg)&$wYJXxtHR4igr~t7^+S4@1EEhrlW}4mVQ7zQt98~Sj6YfTzy%)~t&!ULsiq3R);r+rR>9bDKfi{lFIE8|X>?iN-?z%T8m#E!jU!}K?*(}m3@vC+& z?U%2R`Ry-T-Gi5Ge^2R^^uB)b?FGLyalQED!??Y;X!&!TX&Dq zkUQ~3Y5PS>os%bz*!QDvz)-$D-Y_>=i*t{2(f7mo{M&M_FesW01g{Tqg~^VksLEeW zzakDx2Ud4Tj-P)u{5VB|fG#;UYk1Kglw@WG|HbMBCTD8HLax9-$g0w*hu{RVerh`rU{z01t({t#yc zYsHPXh=>O(+(;9bUWZCC@;I;y4U;{;<5JO|#98^Fb6Ke5WJ|B~s%F0(ei>_u@39c6 z>8VE%)&hEXc2D(WPH+?Mjs4qp(x?Zcr`_fwi_^1>{7NBLL{9N;b%v&YQv)I&hnu~1 zeV|v*oVt&H$8a+&KBx5h9s-vf~E?C+-HkNQ@h+q+Ha`6*@<atdiHiH zIk%8m)7SpiQ4AxI>2@oJ_Jxu7+^dxN6?71MuX0rQCA!)!AtIS(w{mtm<+xUGpn)FQ zP3>PK|1ibyuUxZ5r+ZB{^W>vdBYhX2ZU0`on7TNsm(JTS2#x?_*ZKE3&r+PlQM=oB z+&T@^d}tB7ReH%#=Zf%ejMmOH!Pre^v!k@x^y36$gUfL%=MH7gAKg-jiJ!dXv31D+ zx%@QY@Rz*6={(pJ=*Cs4Z>-B*yM2A527R~%G?-{1Fdj+s z>pr@1{Heh6xHr{+A%gCeH3ZOFML$I+i?O$Qn*ZdL;JYfE)0B*violr)bq-zK@Pzzp ziIsl=hE&#VGP1%)*H&j*i499O<2g#bn4 z?o!5CdX1B_bmTH-d07TrruAtvhuRI!27(^P(y<`$@A>hwhhd!066#<1Ln<{B6-*8Q zzN$wfv{r9=cVPL@-GnB4f@Nk0V`c|i@Usliutc7FE^Mk-lruREdgSx)pp6MhN5^nx z`Z<$foXL1m_CN-Qm7zBV&EXT@KgWhA<^KTPR$tH3I|2u+mQ@=;S?4id=|l;Q4Z5=? vg90am=AJdzPlKE$chAmF;5l#z?^^o;r5{) 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 MT2ZQ4;=z;u0Yl)~JOBUy literal 0 HcmV?d00001 diff --git a/doc/image/form-edit.png b/doc/image/form-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..3ac6dc2dcbae4a966feadd5f180fa3525da15da4 GIT binary patch literal 166736 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 H`||$)$L1g* literal 0 HcmV?d00001 diff --git a/doc/image/logo.png b/doc/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..dab35ca83c55015dbdb3d29a4df296c3c2ffb5f3 GIT binary patch literal 4879 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 UMm%;fgNgx+^iB235l&J60dJiM9{>OV literal 0 HcmV?d00001 diff --git a/doc/image/message.png b/doc/image/message.png new file mode 100644 index 0000000000000000000000000000000000000000..3d13eef37b468d77c0ac0f379324b1082a740fb1 GIT binary patch literal 86066 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�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 literal 0 HcmV?d00001 diff --git a/doc/image/online-mb-code.png b/doc/image/online-mb-code.png new file mode 100644 index 0000000000000000000000000000000000000000..45a4973f560a076ab8335fd7b30dcb28b54fdbf8 GIT binary patch literal 149041 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

  • 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 XUiQ)Q_BiPr;1e2z3B0g9?)!fLIg5PB literal 0 HcmV?d00001 diff --git a/doc/image/online-mb-edit.png b/doc/image/online-mb-edit.png new file mode 100644 index 0000000000000000000000000000000000000000..6f3b3782323c451c31fcc7ba526f0363d6302763 GIT binary patch literal 185794 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

      (0AG)e2bfuEXY==&8IK#ps~XIpfWui1MN>~ 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 literal 0 HcmV?d00001 diff --git a/doc/image/online-mb-list.png b/doc/image/online-mb-list.png new file mode 100644 index 0000000000000000000000000000000000000000..0e1c03201a15e9f1cbfb243cbd5db8a6fd1cb196 GIT binary patch literal 149588 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�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 wL{{IQH4VdB1-H_&z_>5}0n@R#@c;k- literal 0 HcmV?d00001 diff --git a/doc/nginx.conf b/doc/nginx.conf new file mode 100644 index 0000000..60d74b7 --- /dev/null +++ b/doc/nginx.conf @@ -0,0 +1,66 @@ +worker_processes 1; + +events { + worker_connections 1024; +} + +http { + include mime.types; + default_type application/octet-stream; + sendfile on; + keepalive_timeout 65; + + server { + listen 80; + server_name localhost; + charset utf-8; + + # 前端根应用路径部署 + location / { + root /home/ruoyi/projects/ruoyi-ui; + try_files $uri $uri/ /index.html; + index index.html index.htm; + } + + # 前端子应用路径部署 + # 需要与env环境变量中的VITE_BASE_ROUTER路由基础路径保持一致 + # location /admin { + # alias /home/ruoyi/projects/ruoyi-ui; + # try_files $uri $uri/ /admin/index.html; + # index index.html index.htm; + # } + + # 后端接口代理 + location /prod-api/ { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://localhost:8080/; + } + + # 后端websocket代理 + location /websocket/ { + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "upgrade"; + proxy_set_header Host $host; + proxy_read_timeout 30000s; + proxy_pass http://localhost:8080/websocket; + } + + # 后端在线接口文档的请求路径 + location /v3/ { + proxy_set_header Host $http_host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header REMOTE-HOST $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + proxy_pass http://localhost:8080/v3/; + } + + error_page 500 502 503 504 /50x.html; + location = /50x.html { + root html; + } + } +} \ No newline at end of file diff --git a/html/ie.html b/html/ie.html new file mode 100644 index 0000000..cf6dcb7 --- /dev/null +++ b/html/ie.html @@ -0,0 +1,47 @@ + + + + + + 请升级您的浏览器 + + + + + + + +

      请升级您的浏览器,以便我们更好的为您提供服务!

      +

      您正在使用 Internet Explorer 的早期版本(IE11以下版本或使用该内核的浏览器)。这意味着在升级浏览器前,您将无法访问此网站。

      +
      +

      请注意:微软公司对Windows XP 及 Internet Explorer 早期版本的支持已经结束

      +
      ",customClass:"",onCreated:"",onMounted:""}},{type:"button",icon:"button",formItemFlag:!1,options:{name:"",label:"",columnWidth:"200px",size:"",displayStyle:"block",disabled:!1,hidden:!1,type:"",plain:!1,round:!1,circle:!1,icon:null,customClass:"",onCreated:"",onMounted:"",onClick:""}},{type:"divider",icon:"divider",formItemFlag:!1,options:{name:"",label:"",columnWidth:"200px",direction:"horizontal",contentPosition:"center",hidden:!1,customClass:"",onCreated:"",onMounted:""}}],advancedFields=[{type:"picture-upload",icon:"picture-upload-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",uploadURL:"",uploadTip:"",withCredentials:!1,multipleSelect:!1,showFileList:!0,limit:3,fileMaxSize:5,fileTypes:["jpg","jpeg","png"],customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onBeforeUpload:"",onUploadSuccess:"",onUploadError:"",onFileRemove:"",onValidate:""}},{type:"file-upload",icon:"file-upload-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",uploadURL:"",uploadTip:"",withCredentials:!1,multipleSelect:!1,showFileList:!0,limit:3,fileMaxSize:5,fileTypes:["doc","docx","xls","xlsx"],customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onBeforeUpload:"",onUploadSuccess:"",onUploadError:"",onFileRemove:"",onValidate:""}},{type:"rich-editor",icon:"rich-editor-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",placeholder:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",contentHeight:"200px",disabled:!1,hidden:!1,required:!1,requiredHint:"",customRule:"",customRuleHint:"",customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,minLength:null,maxLength:null,showWordLimit:!1,onCreated:"",onMounted:"",onValidate:""}},{type:"cascader",icon:"cascader-field",formItemFlag:!0,options:{name:"",label:"",labelAlign:"",defaultValue:"",placeholder:"",size:"",labelWidth:null,labelHidden:!1,columnWidth:"200px",disabled:!1,hidden:!1,clearable:!0,filterable:!1,multiple:!1,checkStrictly:!1,showAllLevels:!0,optionItems:[{label:"select 1",value:1,children:[{label:"child 1",value:11}]},{label:"select 2",value:2},{label:"select 3",value:3}],required:!1,requiredHint:"",customRule:"",customRuleHint:"",customClass:"",labelIconClass:null,labelIconPosition:"rear",labelTooltip:null,onCreated:"",onMounted:"",onChange:"",onFocus:"",onBlur:"",onValidate:""}}],customFields=[];function addContainerWidgetSchema(t){containers.push(t)}function addCustomWidgetSchema(t){customFields.push(t)}const formTemplates=[{title:"\u5355\u5217\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t1.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json1.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u591A\u5217\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t2.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json2.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u5206\u7EC4\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t3.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json3.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u6807\u7B7E\u9875\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t4.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json4.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u4E3B\u4ECE\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t5.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json5.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u54CD\u5E94\u5F0F\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t6.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json6.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u95EE\u5377\u8C03\u67E5\u8868",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t7.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json7.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."},{title:"\u56FA\u5B9A\u8868\u683C\u8868\u5355",imgUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/t8.png",jsonUrl:"https://ks3-cn-beijing.ksyuncs.com/vform-static/form-samples/json8.txt",description:"\u8868\u5355\u6A21\u677F\u8BE6\u7EC6\u8BF4\u660E..."}];var clipboard={exports:{}};/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,d){(function(p,m){t.exports=m()})(commonjsGlobal,function(){return function(){var e={686:function(g,s,c){c.d(s,{default:function(){return R}});var i=c(279),f=c.n(i),n=c(370),o=c.n(n),r=c(817),l=c.n(r);function a(B){try{return document.execCommand(B)}catch{return!1}}var u=function(D){var P=l()(D);return a("cut"),P},h=u;function $(B){var D=document.documentElement.getAttribute("dir")==="rtl",P=document.createElement("textarea");P.style.fontSize="12pt",P.style.border="0",P.style.padding="0",P.style.margin="0",P.style.position="absolute",P.style[D?"right":"left"]="-9999px";var j=window.pageYOffset||document.documentElement.scrollTop;return P.style.top="".concat(j,"px"),P.setAttribute("readonly",""),P.value=B,P}var v=function(D,P){var j=$(D);P.container.appendChild(j);var V=l()(j);return a("copy"),j.remove(),V},w=function(D){var P=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},j="";return typeof D=="string"?j=v(D,P):D instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(D==null?void 0:D.type)?j=v(D.value,P):(j=l()(D),a("copy")),j},y=w;function _(B){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?_=function(P){return typeof P}:_=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},_(B)}var b=function(){var D=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},P=D.action,j=P===void 0?"copy":P,V=D.container,W=D.target,H=D.text;if(j!=="copy"&&j!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(W!==void 0)if(W&&_(W)==="object"&&W.nodeType===1){if(j==="copy"&&W.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(j==="cut"&&(W.hasAttribute("readonly")||W.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(H)return y(H,{container:V});if(W)return j==="cut"?h(W):y(W,{container:V})},S=b;function M(B){return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?M=function(P){return typeof P}:M=function(P){return P&&typeof Symbol=="function"&&P.constructor===Symbol&&P!==Symbol.prototype?"symbol":typeof P},M(B)}function O(B,D){if(!(B instanceof D))throw new TypeError("Cannot call a class as a function")}function k(B,D){for(var P=0;P0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof V.action=="function"?V.action:this.defaultAction,this.target=typeof V.target=="function"?V.target:this.defaultTarget,this.text=typeof V.text=="function"?V.text:this.defaultText,this.container=M(V.container)==="object"?V.container:document.body}},{key:"listenClick",value:function(V){var W=this;this.listener=o()(V,"click",function(H){return W.onClick(H)})}},{key:"onClick",value:function(V){var W=V.delegateTarget||V.currentTarget,H=this.action(W)||"copy",z=S({action:H,container:this.container,target:this.target(W),text:this.text(W)});this.emit(z?"success":"error",{action:H,text:z,trigger:W,clearSelection:function(){W&&W.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(V){return F("action",V)}},{key:"defaultTarget",value:function(V){var W=F("target",V);if(W)return document.querySelector(W)}},{key:"defaultText",value:function(V){return F("text",V)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(V){var W=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return y(V,W)}},{key:"cut",value:function(V){return h(V)}},{key:"isSupported",value:function(){var V=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],W=typeof V=="string"?[V]:V,H=!!document.queryCommandSupported;return W.forEach(function(z){H=H&&!!document.queryCommandSupported(z)}),H}}]),P}(f()),R=I},828:function(g){var s=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var c=Element.prototype;c.matches=c.matchesSelector||c.mozMatchesSelector||c.msMatchesSelector||c.oMatchesSelector||c.webkitMatchesSelector}function i(f,n){for(;f&&f.nodeType!==s;){if(typeof f.matches=="function"&&f.matches(n))return f;f=f.parentNode}}g.exports=i},438:function(g,s,c){var i=c(828);function f(r,l,a,u,h){var $=o.apply(this,arguments);return r.addEventListener(a,$,h),{destroy:function(){r.removeEventListener(a,$,h)}}}function n(r,l,a,u,h){return typeof r.addEventListener=="function"?f.apply(null,arguments):typeof a=="function"?f.bind(null,document).apply(null,arguments):(typeof r=="string"&&(r=document.querySelectorAll(r)),Array.prototype.map.call(r,function($){return f($,l,a,u,h)}))}function o(r,l,a,u){return function(h){h.delegateTarget=i(h.target,l),h.delegateTarget&&u.call(r,h)}}g.exports=n},879:function(g,s){s.node=function(c){return c!==void 0&&c instanceof HTMLElement&&c.nodeType===1},s.nodeList=function(c){var i=Object.prototype.toString.call(c);return c!==void 0&&(i==="[object NodeList]"||i==="[object HTMLCollection]")&&"length"in c&&(c.length===0||s.node(c[0]))},s.string=function(c){return typeof c=="string"||c instanceof String},s.fn=function(c){var i=Object.prototype.toString.call(c);return i==="[object Function]"}},370:function(g,s,c){var i=c(879),f=c(438);function n(a,u,h){if(!a&&!u&&!h)throw new Error("Missing required arguments");if(!i.string(u))throw new TypeError("Second argument must be a String");if(!i.fn(h))throw new TypeError("Third argument must be a Function");if(i.node(a))return o(a,u,h);if(i.nodeList(a))return r(a,u,h);if(i.string(a))return l(a,u,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function o(a,u,h){return a.addEventListener(u,h),{destroy:function(){a.removeEventListener(u,h)}}}function r(a,u,h){return Array.prototype.forEach.call(a,function($){$.addEventListener(u,h)}),{destroy:function(){Array.prototype.forEach.call(a,function($){$.removeEventListener(u,h)})}}}function l(a,u,h){return f(document.body,a,u,h)}g.exports=n},817:function(g){function s(c){var i;if(c.nodeName==="SELECT")c.focus(),i=c.value;else if(c.nodeName==="INPUT"||c.nodeName==="TEXTAREA"){var f=c.hasAttribute("readonly");f||c.setAttribute("readonly",""),c.select(),c.setSelectionRange(0,c.value.length),f||c.removeAttribute("readonly"),i=c.value}else{c.hasAttribute("contenteditable")&&c.focus();var n=window.getSelection(),o=document.createRange();o.selectNodeContents(c),n.removeAllRanges(),n.addRange(o),i=n.toString()}return i}g.exports=s},279:function(g){function s(){}s.prototype={on:function(c,i,f){var n=this.e||(this.e={});return(n[c]||(n[c]=[])).push({fn:i,ctx:f}),this},once:function(c,i,f){var n=this;function o(){n.off(c,o),i.apply(f,arguments)}return o._=i,this.on(c,o,f)},emit:function(c){var i=[].slice.call(arguments,1),f=((this.e||(this.e={}))[c]||[]).slice(),n=0,o=f.length;for(n;n{t[e]=d[e]})},evalFn=function(t,d=null,e=null){return new Function("DSV","VFR","return "+t)(d,e)},addWindowResizeHandler=function(t){let d=window.onresize;typeof window.onresize!="function"?window.onresize=t:window.onresize=function(){d(),t()}},insertCustomCssToHead=function(t,d=""){let e=document.getElementsByTagName("head")[0],p=document.getElementById("vform-custom-css");p&&e.removeChild(p),d&&(p=document.getElementById("vform-custom-css-"+d),!!p&&e.removeChild(p));let m=document.createElement("style");m.type="text/css",m.rel="stylesheet",m.id=d?"vform-custom-css-"+d:"vform-custom-css";try{m.appendChild(document.createTextNode(t))}catch{m.styleSheet.cssText=t}e.appendChild(m)},insertGlobalFunctionsToHtml=function(t,d=""){let e=document.getElementsByTagName("body")[0],p=document.getElementById("v_form_global_functions");!!p&&e.removeChild(p),d&&(p=document.getElementById("v_form_global_functions-"+d),!!p&&e.removeChild(p));let m=document.createElement("script");m.id=d?"v_form_global_functions-"+d:"v_form_global_functions",m.type="text/javascript",m.innerHTML=t,e.appendChild(m)},loadRemoteScript=function(t,d){let e=encodeURIComponent(t);if(!document.getElementById(e)){let m=document.createElement("script");m.src=t,m.id=e,document.body.appendChild(m),m.onload=m.onreadystatechange=function(g,s){(s||!m.readyState||m.readyState==="loaded"||m.readyState==="complete")&&(m=m.onload=m.onreadystatechange=null,s||d())}}};function traverseFieldWidgets(t,d,e=null){!t||t.map(p=>{p.formItemFlag?d(p,e):p.type==="grid"?p.cols.map(m=>{traverseFieldWidgets(m.widgetList,d,p)}):p.type==="table"?p.rows.map(m=>{m.cols.map(g=>{traverseFieldWidgets(g.widgetList,d,p)})}):p.type==="tab"?p.tabs.map(m=>{traverseFieldWidgets(m.widgetList,d,p)}):(p.type==="sub-form"||p.category==="container")&&traverseFieldWidgets(p.widgetList,d,p)})}function traverseContainerWidgets(t,d){!t||t.map(e=>{e.category==="container"&&d(e),e.type==="grid"?e.cols.map(p=>{traverseContainerWidgets(p.widgetList,d)}):e.type==="table"?e.rows.map(p=>{p.cols.map(m=>{traverseContainerWidgets(m.widgetList,d)})}):e.type==="tab"?e.tabs.map(p=>{traverseContainerWidgets(p.widgetList,d)}):(e.type==="sub-form"||e.category==="container")&&traverseContainerWidgets(e.widgetList,d)})}function traverseAllWidgets(t,d){!t||t.map(e=>{d(e),e.type==="grid"?e.cols.map(p=>{d(p),traverseAllWidgets(p.widgetList,d)}):e.type==="table"?e.rows.map(p=>{p.cols.map(m=>{d(m),traverseAllWidgets(m.widgetList,d)})}):e.type==="tab"?e.tabs.map(p=>{traverseAllWidgets(p.widgetList,d)}):(e.type==="sub-form"||e.category==="container")&&traverseAllWidgets(e.widgetList,d)})}function handleWidgetForTraverse(t,d){t.category?traverseFieldWidgetsOfContainer(t,d):t.formItemFlag&&d(t)}function traverseFieldWidgetsOfContainer(t,d){t.type==="grid"?t.cols.forEach(e=>{e.widgetList.forEach(p=>{handleWidgetForTraverse(p,d)})}):t.type==="table"?t.rows.forEach(e=>{e.cols.forEach(p=>{p.widgetList.forEach(m=>{handleWidgetForTraverse(m,d)})})}):t.type==="tab"?t.tabs.forEach(e=>{e.widgetList.forEach(p=>{handleWidgetForTraverse(p,d)})}):t.type==="sub-form"?t.widgetList.forEach(e=>{handleWidgetForTraverse(e,d)}):t.category==="container"&&t.widgetList.forEach(e=>{handleWidgetForTraverse(e,d)})}function getAllFieldWidgets(t){if(!t)return[];let d=[];return traverseFieldWidgets(t,p=>{d.push({type:p.type,name:p.options.name,field:p})}),d}function getAllContainerWidgets(t){if(!t)return[];let d=[];return traverseContainerWidgets(t,p=>{d.push({type:p.type,name:p.options.name,container:p})}),d}function copyToClipboard(t,d,e,p,m){const g=new Clipboard(d.target,{text:()=>t});g.on("success",()=>{e.success(p),g.destroy()}),g.on("error",()=>{e.error(m),g.destroy()}),g.onClick(d)}function getQueryParam(t){let e=window.location.search.substring(1).split("&");for(let p=0;p{p=isDef(p)&&isDef(p[m])?p[m]:null}),p}let locale=require$$0$1.reactive({lang:localStorage.getItem("v_form_locale")||"zh-CN"});function createI18n(t){return{messages:t.messages,$st(d,...e){const p=get(this.messages[locale.lang],d);return typeof p=="function"?p(...e):p!==null?p:d},$st2(d,e){let p=this.messages[locale.lang];const m=get(p,d);return m!==null?m:get(p,e)},setLang(d){locale.lang=d}}}var enLocale={application:{"zh-CN":"\u7B80\u4F53\u4E2D\u6587","en-US":"English",productTitle:"Online Form Designer",github:"GitHub",document:"Docs",qqGroup:"WeChat Group",deployment:"Deployment",subscription:"Subscription"},designer:{componentLib:"Components",formLib:"Templates",containerTitle:"Container",dragHandlerHint:"drag container or field to layout center",dragAction:"drag",basicFieldTitle:"Basic Field",advancedFieldTitle:"Advanced Field",customFieldTitle:"Customized Field",noWidgetHint:"Please select a widget from the left list, drag and drop to this container.",widgetLabel:{grid:"Grid",table:"Table",tab:"Tab",section:"Section","sub-form":"SubForm","grid-col":"GridCol","table-cell":"TableCell","tab-pane":"TabPane","data-table":"DataTable",input:"Input",textarea:"Textarea",number:"InputNumber",radio:"Radio",checkbox:"Checkbox",select:"Select",time:"Time","time-range":"Time range",date:"Date","date-range":"Date range",switch:"Switch",rate:"Rate",color:"ColorPicker",slider:"Slider","static-text":"Text","html-text":"HTML",button:"Button",divider:"Divider","picture-upload":"Picture","file-upload":"File","rich-editor":"Rich Editor",cascader:"Cascader",slot:"Slot",custom:"Custom Component"},hint:{selectParentWidget:"Select parent of this widget",moveUpWidget:"Move up this widget",moveDownWidget:"Move down this widget",cloneWidget:"Clone this widget",insertRow:"Insert new row",insertColumn:"Insert new column",remove:"Remove this widget",cellSetting:"Cell setting",dragHandler:"Drag handler",copyField:"Copy field widget",onlyFieldWidgetAcceptable:"Only field widget can be dragged into sub-form",moveUpFirstChildHint:"First child can not be move up",moveDownLastChildHint:"Last child can not be move down",closePreview:"Close",copyJson:"Copy",saveFormJson:"Save As File",copyVueCode:"Copy Vue Code",copyHtmlCode:"Copy HTML Code",copyJsonSuccess:"Copy succeed",importJsonSuccess:"Import succeed",invalidJsonFormat:"Invalid JSON format",jsonVersionMismatch:"Version of JSON mismatch",copyJsonFail:"Copy failed",copyVueCodeSuccess:"Copy succeed",copyVueCodeFail:"Copy failed",copyHtmlCodeSuccess:"Copy succeed",copyHtmlCodeFail:"Copy failed",saveVueCode:"Save Vue File",saveHtmlCode:"Save Html File",getFormData:"Get Data",resetForm:"Reset",disableForm:"Disable",enableForm:"Enable",exportFormData:"Form Data",copyFormData:"Copy",saveFormData:"Save As File",copyVue2SFC:"Copy Vue2",copyVue3SFC:"Copy Vue3",copySFCFail:"Copy failed",copySFCSuccess:"Copy succeed",saveVue2SFC:"Save As Vue2",saveVue3SFC:"Save As Vue3",fileNameForSave:"File name:",saveFileTitle:"Save as File",fileNameInputPlaceholder:"Enter the file name",sampleLoadedSuccess:"Example loaded successfully",sampleLoadedFail:"Sample load failed",loadFormTemplate:"Load This",loadFormTemplateHint:"Are you sure to load this template?",loadFormTemplateSuccess:"Load form template success!",loadFormTemplateFailed:"Load form template failed.",currentNodeCannotBeSelected:"The current node cannot be selected.",widgetSetting:"Widget Config",formSetting:"Form Config",prompt:"Prompt",confirm:"OK",cancel:"Cancel",import:"Import",importJsonHint:"The code to be imported should have the following JSON format.",invalidOptionsData:"Invalid data of options:",lastPaneCannotBeDeleted:"The last pane cannot be deleted.",duplicateName:"Duplicate name: ",nameRequired:"Name required.",numberValidator:"Number",letterValidator:"Letter",letterAndNumberValidator:"LetterAndNumber",mobilePhoneValidator:"MobilePhone",emailValidator:"Email",urlValidator:"URL",noChineseValidator:"Non-Chinese",chineseValidator:"Chinese",rowspanNotConsistentForMergeEntireRow:"Cells in this row don't have the same rowspan, operation failed.",colspanNotConsistentForMergeEntireColumn:"Cells in this column don't have the same colspan, operation failed.",rowspanNotConsistentForDeleteEntireRow:"Cells in this row don't have the same rowspan, operation failed.",colspanNotConsistentForDeleteEntireColumn:"Cells in this column don't have the same colspan, operation failed.",lastColCannotBeDeleted:"The last col cannot be deleted.",lastRowCannotBeDeleted:"The last row cannot be deleted."},toolbar:{undoHint:"Undo",redoHint:"Redo",pcLayout:"PC",padLayout:"Pad",mobileLayout:"H5",nodeTreeHint:"Tree View Of Component Hierarchy",nodeTreeTitle:"Tree View Of Component Hierarchy",clear:"Clear",preview:"Preview",importJson:"Import",exportJson:"Export",exportCode:"Codes",generateCode:"Generate Code",generateSFC:"Generate SFC"},setting:{basicSetting:"Basic Setting",attributeSetting:"Attribute Setting",commonSetting:"Common Setting",advancedSetting:"Advanced Setting",eventSetting:"Event Setting",uniqueName:"Unique Name",editNameHelp:"Press enter to confirm the modification",label:"Label",displayType:"Type",defaultValue:"Default Value",placeholder:"Placeholder",startPlaceholder:"Start Placeholder",endPlaceholder:"End Placeholder",widgetColumnWidth:"Width",widgetSize:"Size",fontSize:"Font Size",textAlign:"Text Align",autoFullWidth:"Auto Full Width",showStops:"Show Stops",displayStyle:"Display Style",inlineLayout:"inline",blockLayout:"block",buttonStyle:"Show As Button",border:"Show Border",labelWidth:"Width Of Label",rows:"Rows",labelHidden:"Hide Label",required:"Required",requiredHint:"Failure Hint",validation:"Validation",validationHelp:"Regular expressions supported",validationHint:"Validation Hint",readonly:"Readonly",disabled:"Disabled",hidden:"Hidden",textContent:"Text",preWrap:"Line Wrap",htmlContent:"HTML",clearable:"Clearable",editable:"Editable",format:"Format",valueFormat:"Value Format",showPassword:"Show Reveal",filterable:"Filterable",allowCreate:"Allow Create",remote:"Remote Query",automaticDropdown:"Automatic Dropdown",multiple:"Multiple",multipleLimit:"Multiple Limit",checkStrictly:"Any Level Selectable",showAllLevels:"Show All Levels",contentPosition:"Content Position",plain:"Plain",round:"Round",circle:"Circle",icon:"Icon",optionsSetting:"Options Setting",addOption:"Add Option",importOptions:"Import Options",resetDefault:"Reset Default",uploadSetting:"Upload Setting",uploadURL:"Upload URL",uploadTip:"Tip Content",withCredentials:"Send Cookie",multipleSelect:"File Multi-select",showFileList:"Show File List",limit:"Max Upload Number",fileMaxSize:"Max Size(MB)",fileTypes:"Upload File Types",fileTypesHelp:"Allows to add more file types",headers:"Request Headers",cellWidth:"Width",cellHeight:"Height",wordBreak:"Line Wrap",gridColHeight:"Height Of Col(px)",gutter:"Gutter(px)",columnSetting:"Cols Setting",colsOfGrid:"Cols Of Grid:",colSpanTitle:"Spans Of Col",colOffsetTitle:"Offset Of Col",colPushTitle:"Push Of Col",colPullTitle:"Pull Of Col",addColumn:"Add Column",responsive:"Responsive",tabPaneSetting:"Tab Panes",addTabPane:"Add Tab Pane",paneActive:"Active",customLabelIcon:"Custom Label",labelIconClass:"Label Icon Class",labelIconPosition:"Label Icon Position",labelTooltip:"Label Tooltip",minValue:"Min Value",maxValue:"Max Value",precision:"Precision",step:"Step",controlsPosition:"Controls Position",minLength:"Min Length",maxLength:"Max Length",showWordLimit:"Show Word Limit",prefixIcon:"Prefix Icon",suffixIcon:"Suffix Icon",inputButton:"Input Button Setting",appendButton:"Append Button",appendButtonDisabled:"Button Disabled",appendButtonIcon:"Append Button Icon",buttonIcon:"Button Icon",switchWidth:"Width of Switch(px)",activeText:"Active Text",inactiveText:"Inactive Text",activeColor:"Active Color",inactiveColor:"Inactive Color",maxStars:"Stars Max Number",lowThreshold:"Low Threshold",highThreshold:"High Threshold",allowHalf:"Allow Half",showText:"Show Text",showScore:"Show Score",range:"Range",vertical:"Vertical",showBlankRow:"Show Blank Row",showRowNumber:"Show Row Number",contentHeight:"Content Area Height",insertColumnToLeft:"insert column to left",insertColumnToRight:"insert column to right",insertRowAbove:"insert row above",insertRowBelow:"insert row below",mergeLeftColumn:"merge left cell",mergeRightColumn:"merge right cell",mergeEntireRow:"merge entire row",mergeRowAbove:"merge cell above",mergeRowBelow:"merge cell below",mergeEntireColumn:"merge entire column",undoMergeCol:"undo merge column",undoMergeRow:"undo merge row",deleteEntireCol:"delete entire column",deleteEntireRow:"delete entire row",widgetName:"Unique Name",formSize:"Size",labelPosition:"Position Of Label",topPosition:"Top",leftPosition:"Left",labelAlign:"Label Align",leftAlign:"Left",centerAlign:"Center",rightAlign:"Right",formCss:"Form CSS",addCss:"Edit",customClass:"Custom Class",globalFunctions:"Global Functions",addEventHandler:"Edit",editWidgetEventHandler:"Edit Widget Event Handler",editFormEventHandler:"Edit Form Event Handler",formSFCSetting:"SFC Setting",formModelName:"Model Name",formRefName:"Ref Name",formRulesName:"Rules Name",syntaxCheckWarning:"Syntax error in the javascript codes, please check again!"}}},zhLocale={application:{"zh-CN":"\u7B80\u4F53\u4E2D\u6587","en-US":"English",productTitle:"\u8868\u5355\u8BBE\u8BA1\u5668",github:"GitHub",document:"\u6587\u6863",qqGroup:"\u6280\u672FWX\u7FA4",deployment:"\u79C1\u6709\u90E8\u7F72",subscription:"\u8BA2\u9605Pro"},designer:{componentLib:"\u7EC4\u4EF6\u5E93",formLib:"\u8868\u5355\u6A21\u677F",containerTitle:"\u5BB9\u5668",dragHandlerHint:"\u9F20\u6807\u62D6\u62FD\u5BB9\u5668\u7EC4\u4EF6\u6216\u5B57\u6BB5\u7EC4\u4EF6\u5E76\u653E\u7F6E\u4E8E\u8868\u5355\u4E2D",dragAction:"\u62D6\u52A8",basicFieldTitle:"\u57FA\u7840\u5B57\u6BB5",advancedFieldTitle:"\u9AD8\u7EA7\u5B57\u6BB5",customFieldTitle:"\u81EA\u5B9A\u4E49\u6269\u5C55\u5B57\u6BB5",noWidgetHint:"\u8BF7\u4ECE\u5DE6\u4FA7\u5217\u8868\u4E2D\u9009\u62E9\u4E00\u4E2A\u7EC4\u4EF6, \u7136\u540E\u7528\u9F20\u6807\u62D6\u52A8\u7EC4\u4EF6\u653E\u7F6E\u4E8E\u6B64\u5904.",widgetLabel:{grid:"\u6805\u683C",table:"\u8868\u683C",tab:"\u6807\u7B7E\u9875",section:"\u533A\u5757","sub-form":"\u5B50\u8868\u5355","grid-col":"\u6805\u683C\u5217","table-cell":"\u5355\u5143\u683C","tab-pane":"\u9009\u9879\u5361\u9875","data-table":"\u6570\u636E\u8868\u683C",input:"\u5355\u884C\u8F93\u5165",textarea:"\u591A\u884C\u8F93\u5165",number:"\u8BA1\u6570\u5668",radio:"\u5355\u9009\u9879",checkbox:"\u591A\u9009\u9879",select:"\u4E0B\u62C9\u9009\u9879",time:"\u65F6\u95F4","time-range":"\u65F6\u95F4\u8303\u56F4",date:"\u65E5\u671F","date-range":"\u65E5\u671F\u8303\u56F4",switch:"\u5F00\u5173",rate:"\u8BC4\u5206",color:"\u989C\u8272\u9009\u62E9\u5668",slider:"\u6ED1\u5757","static-text":"\u9759\u6001\u6587\u5B57","html-text":"HTML",button:"\u6309\u94AE",divider:"\u5206\u9694\u7EBF","picture-upload":"\u56FE\u7247","file-upload":"\u6587\u4EF6","rich-editor":"\u5BCC\u6587\u672C",cascader:"\u7EA7\u8054\u9009\u62E9",slot:"\u63D2\u69FD",custom:"Custom Component"},hint:{selectParentWidget:"\u9009\u4E2D\u7236\u7EC4\u4EF6",moveUpWidget:"\u4E0A\u79FB\u7EC4\u4EF6",moveDownWidget:"\u4E0B\u79FB\u7EC4\u4EF6",cloneWidget:"\u590D\u5236\u7EC4\u4EF6",insertRow:"\u63D2\u5165\u65B0\u884C",insertColumn:"\u63D2\u5165\u65B0\u5217",remove:"\u79FB\u9664\u7EC4\u4EF6",cellSetting:"\u5355\u5143\u683C\u64CD\u4F5C",dragHandler:"\u62D6\u62FD\u624B\u67C4",copyField:"\u590D\u5236\u5B57\u6BB5\u7EC4\u4EF6",onlyFieldWidgetAcceptable:"\u5B50\u8868\u5355\u53EA\u80FD\u63A5\u6536\u5B57\u6BB5\u7EC4\u4EF6",moveUpFirstChildHint:"\u5DF2\u7ECF\u79FB\u52A8\u5230\u6700\u4E0A\u9762",moveDownLastChildHint:"\u5DF2\u7ECF\u79FB\u52A8\u5230\u6700\u4E0B\u9762",closePreview:"\u5173\u95ED",copyJson:"\u590D\u5236JSON",saveFormJson:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",copyVueCode:"\u590D\u5236Vue\u4EE3\u7801",copyHtmlCode:"\u590D\u5236HTML\u4EE3\u7801",copyJsonSuccess:"\u590D\u5236JSON\u6210\u529F",importJsonSuccess:"\u5BFC\u5165JSON\u6210\u529F",invalidJsonFormat:"\u65E0\u6548\u7684\u8868\u5355JSON\u683C\u5F0F",jsonVersionMismatch:"\u8868\u5355JSON\u7248\u672C\u53F7\u4E0D\u5339\u914D",copyJsonFail:"\u590D\u5236JSON\u5931\u8D25",copyVueCodeSuccess:"\u590D\u5236Vue\u4EE3\u7801\u6210\u529F",copyVueCodeFail:"\u590D\u5236Vue\u4EE3\u7801\u5931\u8D25",copyHtmlCodeSuccess:"\u590D\u5236HTML\u4EE3\u7801\u6210\u529F",copyHtmlCodeFail:"\u590D\u5236HTML\u4EE3\u7801\u5931\u8D25",saveVueCode:"\u4FDD\u5B58Vue\u6587\u4EF6",saveHtmlCode:"\u4FDD\u5B58Html\u6587\u4EF6",getFormData:"\u83B7\u53D6\u6570\u636E",resetForm:"\u91CD\u7F6E\u8868\u5355",disableForm:"\u7981\u7528\u7F16\u8F91",enableForm:"\u6062\u590D\u7F16\u8F91",exportFormData:"\u8868\u5355\u6570\u636E",copyFormData:"\u590D\u5236JSON",saveFormData:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",copyVue2SFC:"\u590D\u5236Vue2\u4EE3\u7801",copyVue3SFC:"\u590D\u5236Vue3\u4EE3\u7801",copySFCFail:"\u590D\u5236SFC\u4EE3\u7801\u5931\u8D25",copySFCSuccess:"\u590D\u5236SFC\u4EE3\u7801\u6210\u529F",saveVue2SFC:"\u4FDD\u5B58\u4E3AVue2\u7EC4\u4EF6",saveVue3SFC:"\u4FDD\u5B58\u4E3AVue3\u7EC4\u4EF6",fileNameForSave:"\u6587\u4EF6\u540D\uFF1A",saveFileTitle:"\u4FDD\u5B58\u4E3A\u6587\u4EF6",fileNameInputPlaceholder:"\u8BF7\u8F93\u5165\u6587\u4EF6\u540D",sampleLoadedSuccess:"\u8868\u5355\u793A\u4F8B\u52A0\u8F7D\u6210\u529F",sampleLoadedFail:"\u8868\u5355\u793A\u4F8B\u52A0\u8F7D\u5931\u8D25",loadFormTemplate:"\u52A0\u8F7D\u6B64\u6A21\u677F",loadFormTemplateHint:"\u662F\u5426\u52A0\u8F7D\u8FD9\u4E2A\u6A21\u677F\uFF1F\u52A0\u8F7D\u540E\u4F1A\u8986\u76D6\u8BBE\u8BA1\u5668\u5F53\u524D\u8868\u5355\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u201C\u64A4\u9500\u201D\u529F\u80FD\u6062\u590D\u3002",loadFormTemplateSuccess:"\u8868\u5355\u6A21\u677F\u52A0\u8F7D\u6210\u529F",loadFormTemplateFailed:"\u8868\u5355\u6A21\u677F\u52A0\u8F7D\u5931\u8D25",currentNodeCannotBeSelected:"\u5F53\u524D\u7EC4\u4EF6\u8282\u70B9\u4E0D\u53EF\u9009\u62E9",widgetSetting:"\u7EC4\u4EF6\u8BBE\u7F6E",formSetting:"\u8868\u5355\u8BBE\u7F6E",prompt:"\u63D0\u793A",confirm:"\u786E\u5B9A",cancel:"\u53D6\u6D88",import:"\u5BFC\u5165",importJsonHint:"\u5BFC\u5165\u7684JSON\u5185\u5BB9\u987B\u7B26\u5408\u4E0B\u8FF0\u683C\u5F0F\uFF0C\u4EE5\u4FDD\u8BC1\u987A\u5229\u5BFC\u5165.",invalidOptionsData:"\u65E0\u6548\u7684\u9009\u9879\u6570\u636E:",lastPaneCannotBeDeleted:"\u4EC5\u5269\u4E00\u4E2A\u9009\u9879\u5361\u9875\u4E0D\u53EF\u5220\u9664.",duplicateName:"\u7EC4\u4EF6\u540D\u79F0\u5DF2\u5B58\u5728: ",nameRequired:"\u7EC4\u4EF6\u540D\u79F0\u4E0D\u53EF\u4E3A\u7A7A",numberValidator:"\u6570\u5B57",letterValidator:"\u5B57\u6BCD",letterAndNumberValidator:"\u6570\u5B57\u5B57\u6BCD",mobilePhoneValidator:"\u624B\u673A\u53F7\u7801",emailValidator:"\u90AE\u7BB1",urlValidator:"\u7F51\u5740",noChineseValidator:"\u975E\u4E2D\u6587\u5B57\u7B26",chineseValidator:"\u4EC5\u4E2D\u6587\u5B57\u7B26",rowspanNotConsistentForMergeEntireRow:"\u5B58\u5728\u884C\u9AD8\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u65E0\u6CD5\u5408\u5E76\u6574\u884C.",colspanNotConsistentForMergeEntireColumn:"\u5B58\u5728\u5217\u5BBD\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u65E0\u6CD5\u5408\u5E76\u6574\u5217.",rowspanNotConsistentForDeleteEntireRow:"\u5B58\u5728\u884C\u9AD8\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u4E0D\u53EF\u5220\u9664\u6574\u884C.",colspanNotConsistentForDeleteEntireColumn:"\u5B58\u5728\u5217\u5BBD\u4E0D\u4E00\u81F4\u7684\u5355\u5143\u683C, \u4E0D\u53EF\u5220\u9664\u6574\u5217.",lastColCannotBeDeleted:"\u6700\u540E\u4E00\u5217\u4E0D\u53EF\u5220\u9664.",lastRowCannotBeDeleted:"\u6700\u540E\u4E00\u884C\u4E0D\u53EF\u5220\u9664."},toolbar:{undoHint:"\u64A4\u9500",redoHint:"\u91CD\u505A",pcLayout:"PC",padLayout:"Pad",mobileLayout:"H5",nodeTreeHint:"\u7EC4\u4EF6\u5C42\u6B21\u7ED3\u6784\u6811",nodeTreeTitle:"\u7EC4\u4EF6\u5C42\u6B21\u7ED3\u6784\u6811",clear:"\u6E05\u7A7A",preview:"\u9884\u89C8",importJson:"\u5BFC\u5165JSON",exportJson:"\u5BFC\u51FAJSON",exportCode:"\u5BFC\u51FA\u4EE3\u7801",generateCode:"\u751F\u6210\u4EE3\u7801",generateSFC:"\u751F\u6210SFC"},setting:{basicSetting:"\u57FA\u672C\u5C5E\u6027",attributeSetting:"\u5C5E\u6027\u8BBE\u7F6E",commonSetting:"\u5E38\u89C1\u5C5E\u6027",advancedSetting:"\u9AD8\u7EA7\u5C5E\u6027",eventSetting:"\u4E8B\u4EF6\u5C5E\u6027",uniqueName:"\u552F\u4E00\u540D\u79F0",editNameHelp:"\u4FEE\u6539\u540D\u79F0\u540E\u9700\u6309\u56DE\u8F66\u786E\u8BA4",label:"\u6807\u7B7E",displayType:"\u663E\u793A\u7C7B\u578B",defaultValue:"\u9ED8\u8BA4\u503C",placeholder:"\u5360\u4F4D\u5185\u5BB9",startPlaceholder:"\u8D77\u59CB\u5360\u4F4D\u5185\u5BB9",endPlaceholder:"\u622A\u6B62\u5360\u4F4D\u5185\u5BB9",widgetColumnWidth:"\u7EC4\u4EF6\u5217\u5BBD",widgetSize:"\u7EC4\u4EF6\u5927\u5C0F",fontSize:"\u5B57\u4F53\u5927\u5C0F",textAlign:"\u6587\u5B57\u5BF9\u9F50",autoFullWidth:"\u81EA\u52A8\u62C9\u4F38\u5BBD\u5EA6",showStops:"\u663E\u793A\u95F4\u65AD\u70B9",displayStyle:"\u663E\u793A\u6837\u5F0F",inlineLayout:"\u884C\u5185",blockLayout:"\u5757",buttonStyle:"\u663E\u793A\u4E3A\u6309\u94AE",border:"\u5E26\u6709\u8FB9\u6846",labelWidth:"\u6807\u7B7E\u5BBD\u5EA6",rows:"\u884C\u6570",labelHidden:"\u9690\u85CF\u5B57\u6BB5\u6807\u7B7E",required:"\u5FC5\u586B\u5B57\u6BB5",requiredHint:"\u5FC5\u586B\u6821\u9A8C\u63D0\u793A",validation:"\u5B57\u6BB5\u6821\u9A8C",validationHelp:"\u652F\u6301\u8F93\u5165\u6B63\u5219\u8868\u8FBE\u5F0F",validationHint:"\u6821\u9A8C\u5931\u8D25\u63D0\u793A",readonly:"\u53EA\u8BFB",disabled:"\u7981\u7528",hidden:"\u9690\u85CF",textContent:"\u9759\u6001\u6587\u5B57",preWrap:"\u81EA\u52A8\u6362\u884C",htmlContent:"HTML",clearable:"\u53EF\u6E05\u9664",editable:"\u53EF\u8F93\u5165",format:"\u663E\u793A\u683C\u5F0F",valueFormat:"\u7ED1\u5B9A\u503C\u683C\u5F0F",showPassword:"\u53EF\u663E\u793A\u5BC6\u7801",filterable:"\u53EF\u641C\u7D22\u9009\u9879",allowCreate:"\u5141\u8BB8\u521B\u5EFA\u9009\u9879",remote:"\u53EF\u8FDC\u7A0B\u641C\u7D22",automaticDropdown:"\u81EA\u52A8\u5F39\u51FA\u9009\u9879",multiple:"\u9009\u9879\u53EF\u591A\u9009",multipleLimit:"\u591A\u9009\u6570\u91CF\u9650\u5236",checkStrictly:"\u4EFB\u610F\u7EA7\u8282\u70B9\u53EF\u9009",showAllLevels:"\u663E\u793A\u5B8C\u6574\u8DEF\u5F84",contentPosition:"\u6587\u5B57\u4F4D\u7F6E",plain:"\u6734\u7D20\u6309\u94AE",round:"\u5706\u89D2\u6309\u94AE",circle:"\u5706\u5F62\u6309\u94AE",icon:"\u56FE\u6807",optionsSetting:"\u9009\u9879\u8BBE\u7F6E",addOption:"\u589E\u52A0\u9009\u9879",importOptions:"\u5BFC\u5165\u9009\u9879",resetDefault:"\u91CD\u8BBE\u9009\u4E2D\u9879",uploadSetting:"\u4E0A\u4F20\u53C2\u6570\u8BBE\u7F6E",uploadURL:"\u4E0A\u4F20\u5730\u5740",uploadTip:"\u4E0A\u4F20\u63D0\u793A\u5185\u5BB9",withCredentials:"\u53D1\u9001cookie\u51ED\u8BC1",multipleSelect:"\u6587\u4EF6\u53EF\u591A\u9009",showFileList:"\u663E\u793A\u6587\u4EF6\u5217\u8868",limit:"\u6700\u5927\u4E0A\u4F20\u6570\u91CF",fileMaxSize:"\u6587\u4EF6\u5927\u5C0F\u9650\u5236(MB)",fileTypes:"\u4E0A\u4F20\u6587\u4EF6\u7C7B\u578B",fileTypesHelp:"\u652F\u6301\u6DFB\u52A0\u5176\u4ED6\u6587\u4EF6\u7C7B\u578B",headers:"\u4E0A\u4F20\u8BF7\u6C42\u5934",cellWidth:"\u5BBD\u5EA6",cellHeight:"\u9AD8\u5EA6",wordBreak:"\u6587\u5B57\u81EA\u52A8\u6362\u884C",gridColHeight:"\u6805\u683C\u5217\u7EDF\u4E00\u9AD8\u5EA6(px)",gutter:"\u6805\u683C\u95F4\u9694(px)",columnSetting:"\u6805\u683C\u5C5E\u6027\u8BBE\u7F6E",colsOfGrid:"\u5F53\u524D\u6805\u683C\u5217:",colSpanTitle:"\u6805\u683C\u5BBD\u5EA6",colOffsetTitle:"\u5DE6\u4FA7\u95F4\u9694\u683C\u6570",colPushTitle:"\u53F3\u79FB\u6805\u683C\u6570",colPullTitle:"\u5DE6\u79FB\u6805\u683C\u6570",addColumn:"\u589E\u52A0\u6805\u683C",responsive:"\u54CD\u5E94\u5F0F\u5E03\u5C40",tabPaneSetting:"\u9009\u9879\u5361\u8BBE\u7F6E",addTabPane:"\u589E\u52A0\u9009\u9879\u5361\u9875",paneActive:"\u6FC0\u6D3B",customLabelIcon:"\u5B9A\u5236\u5B57\u6BB5\u6807\u7B7E",labelIconClass:"\u6807\u7B7EIcon\u6837\u5F0F",labelIconPosition:"\u6807\u7B7EIcon\u4F4D\u7F6E",labelTooltip:"\u6807\u7B7E\u6587\u5B57\u63D0\u793A",minValue:"\u6700\u5C0F\u503C",maxValue:"\u6700\u5927\u503C",precision:"\u7CBE\u5EA6",step:"\u589E\u51CF\u6B65\u957F",controlsPosition:"\u63A7\u5236\u6309\u94AE\u4F4D\u7F6E",minLength:"\u6700\u5C0F\u957F\u5EA6",maxLength:"\u6700\u5927\u957F\u5EA6",showWordLimit:"\u663E\u793A\u5B57\u6570\u7EDF\u8BA1",prefixIcon:"\u5934\u90E8Icon",suffixIcon:"\u5C3E\u90E8Icon",inputButton:"\u8F93\u5165\u6846\u6309\u94AE\u8BBE\u7F6E",appendButton:"\u6DFB\u52A0\u540E\u7F6E\u6309\u94AE",appendButtonDisabled:"\u540E\u7F6E\u6309\u94AE\u7981\u7528",appendButtonIcon:"\u540E\u7F6E\u6309\u94AEIcon",buttonIcon:"\u6309\u94AEIcon",switchWidth:"\u5F00\u5173\u5BBD\u5EA6\uFF08\u50CF\u7D20\uFF09",activeText:"\u5F00\u542F\u65F6\u6587\u5B57\u63CF\u8FF0",inactiveText:"\u5173\u95ED\u65F6\u6587\u5B57\u63CF\u8FF0",activeColor:"\u5F00\u542F\u65F6\u80CC\u666F\u8272",inactiveColor:"\u5173\u95ED\u65F6\u80CC\u666F\u8272",maxStars:"\u6700\u5927\u8BC4\u5206\u503C",lowThreshold:"\u4F4E\u5206\u754C\u9650\u503C",highThreshold:"\u9AD8\u5206\u754C\u9650\u503C",allowHalf:"\u5141\u8BB8\u534A\u9009",showText:"\u663E\u793A\u8F85\u52A9\u6587\u5B57",showScore:"\u663E\u793A\u5F53\u524D\u5206\u6570",range:"\u662F\u5426\u4E3A\u8303\u56F4\u9009\u62E9",vertical:"\u662F\u5426\u7AD6\u5411\u663E\u793A",showBlankRow:"\u9ED8\u8BA4\u663E\u793A\u65B0\u884C",showRowNumber:"\u663E\u793A\u884C\u53F7",contentHeight:"\u5185\u5BB9\u533A\u9AD8\u5EA6",insertColumnToLeft:"\u63D2\u5165\u5DE6\u4FA7\u5217",insertColumnToRight:"\u63D2\u5165\u53F3\u4FA7\u5217",insertRowAbove:"\u63D2\u5165\u4E0A\u65B9\u884C",insertRowBelow:"\u63D2\u5165\u4E0B\u65B9\u884C",mergeLeftColumn:"\u5408\u5E76\u5DE6\u4FA7\u5355\u5143\u683C",mergeRightColumn:"\u5408\u5E76\u53F3\u4FA7\u5355\u5143\u683C",mergeEntireRow:"\u5408\u5E76\u6574\u884C",mergeRowAbove:"\u5408\u5E76\u4E0A\u65B9\u5355\u5143\u683C",mergeRowBelow:"\u5408\u5E76\u4E0B\u65B9\u5355\u5143\u683C",mergeEntireColumn:"\u5408\u5E76\u6574\u5217",undoMergeCol:"\u64A4\u9500\u5217\u5408\u5E76",undoMergeRow:"\u64A4\u9500\u884C\u5408\u5E76",deleteEntireCol:"\u5220\u9664\u6574\u5217",deleteEntireRow:"\u5220\u9664\u6574\u884C",widgetName:"\u7EC4\u4EF6\u552F\u4E00\u540D\u79F0",formSize:"\u5168\u5C40\u7EC4\u4EF6\u5927\u5C0F",labelPosition:"\u6807\u7B7E\u4F4D\u7F6E",topPosition:"\u9876\u90E8",leftPosition:"\u5DE6\u8FB9",labelAlign:"\u5B57\u6BB5\u6807\u7B7E\u5BF9\u9F50",leftAlign:"\u5C45\u5DE6",centerAlign:"\u5C45\u4E2D",rightAlign:"\u5C45\u53F3",formCss:"\u8868\u5355\u5168\u5C40CSS",addCss:"\u7F16\u5199CSS",customClass:"\u81EA\u5B9A\u4E49CSS\u6837\u5F0F",globalFunctions:"\u8868\u5355\u5168\u5C40\u51FD\u6570",addEventHandler:"\u7F16\u5199\u4EE3\u7801",editWidgetEventHandler:"\u7EC4\u4EF6\u4E8B\u4EF6\u5904\u7406",editFormEventHandler:"\u8868\u5355\u4E8B\u4EF6\u5904\u7406",formSFCSetting:"\u751F\u6210SFC\u8BBE\u7F6E",formModelName:"\u6570\u636E\u5BF9\u8C61\u540D\u79F0",formRefName:"\u5F15\u7528\u540D\u79F0",formRulesName:"\u9A8C\u8BC1\u89C4\u5219\u540D\u79F0",syntaxCheckWarning:"JS\u4EE3\u7801\u5B58\u5728\u8BED\u6CD5\u9519\u8BEF\uFF0C\u8BF7\u4ED4\u7EC6\u68C0\u67E5\uFF01"}}},enLocale_render={render:{hint:{prompt:"Prompt",confirm:"OK",cancel:"Cancel",selectPlaceholder:"Pick some item",timePlaceholder:"Select time",startTimePlaceholder:"Start time",endTimePlaceholder:"End time",datePlaceholder:"Select date",startDatePlaceholder:"Start date",endDatePlaceholder:"End date",blankCellContent:"--",uploadError:"Upload error: ",uploadExceed:"The maximum number(${uploadLimit}) of file uploads has been exceeded.",unsupportedFileType:"Unsupported format: ",fileSizeExceed:"File size out of limit: ",refNotFound:"Ref not found: ",fieldRequired:"Input value should be not null.",invalidNumber:"Invalid number format",selectFile:" File...",downloadFile:"Download",removeFile:"Remove",validationFailed:"Form validation failed",subFormAction:"Action",subFormAddAction:"Add",subFormAddActionHint:"add new row",insertSubFormRow:"insert new row",deleteSubFormRow:"delete this row",nonSubFormType:"The type of widget don't match sub-form"}}},zhLocale_render={render:{hint:{prompt:"\u63D0\u793A",confirm:"\u786E\u5B9A",cancel:"\u53D6\u6D88",selectPlaceholder:"\u8BF7\u9009\u62E9",timePlaceholder:"\u9009\u62E9\u65F6\u95F4",startTimePlaceholder:"\u8D77\u59CB\u65F6\u95F4",endTimePlaceholder:"\u622A\u6B62\u65F6\u95F4",datePlaceholder:"\u9009\u62E9\u65E5\u671F",startDatePlaceholder:"\u8D77\u59CB\u65E5\u671F",endDatePlaceholder:"\u622A\u6B62\u65E5\u671F",blankCellContent:"--",uploadError:"\u4E0A\u4F20\u9519\u8BEF: ",uploadExceed:"\u6700\u5927\u4E0A\u4F20\u6570\u91CF(${uploadLimit})\u5DF2\u8D85\u51FA.",unsupportedFileType:"\u4E0D\u652F\u6301\u683C\u5F0F: ",fileSizeExceed:"\u6587\u4EF6\u5927\u5C0F\u5DF2\u8D85\u51FA: ",refNotFound:"\u7EC4\u4EF6\u672A\u627E\u5230: ",fieldRequired:"\u5B57\u6BB5\u503C\u4E0D\u53EF\u4E3A\u7A7A",invalidNumber:"\u6570\u636E\u683C\u5F0F\u9519\u8BEF",selectFile:" \u9009\u62E9\u6587\u4EF6",downloadFile:"\u4E0B\u8F7D",removeFile:"\u79FB\u9664",validationFailed:"\u8868\u5355\u6570\u636E\u6821\u9A8C\u5931\u8D25",subFormAction:"\u64CD\u4F5C",subFormAddAction:"\u65B0\u589E",subFormAddActionHint:"\u65B0\u589E\u884C",insertSubFormRow:"\u63D2\u5165\u884C",deleteSubFormRow:"\u5220\u9664\u884C",nonSubFormType:"\u7EC4\u4EF6\u7C7B\u578B\u4E0D\u662F\u5B50\u8868\u5355"}}},enLocale_extension={extension:{widgetLabel:{card:"Card",alert:"Alert"},setting:{cardFolded:"Folded",cardShowFold:"Show Fold",cardWidth:"Width Of Card",cardShadow:"Shadow",alertTitle:"Title",alertType:"Type",description:"Description",closable:"Closable",closeText:"Text On Close Btn",center:"Center",showIcon:"Show Icon",effect:"Effect"}}},zhLocale_extension={extension:{widgetLabel:{card:"\u5361\u7247",alert:"\u63D0\u793A"},setting:{cardFolded:"\u662F\u5426\u6536\u8D77",cardShowFold:"\u663E\u793A\u6298\u53E0\u6309\u94AE",cardWidth:"\u5361\u7247\u5BBD\u5EA6",cardShadow:"\u663E\u793A\u9634\u5F71",alertTitle:"\u6807\u9898",alertType:"\u7C7B\u578B",description:"\u8F85\u52A9\u6027\u6587\u5B57",closable:"\u662F\u5426\u53EF\u5173\u95ED",closeText:"\u5173\u95ED\u6309\u94AE\u6587\u5B57",center:"\u6587\u5B57\u5C45\u4E2D",showIcon:"\u663E\u793A\u56FE\u6807",effect:"\u663E\u793A\u6548\u679C"}}};const langResources={"en-US":Se(Se(Se({something:{}},enLocale),enLocale_render),enLocale_extension),"zh-CN":Se(Se(Se({something:{}},zhLocale),zhLocale_render),zhLocale_extension)},i18n=createI18n({locale:localStorage.getItem("v_form_locale")||"zh-CN",messages:langResources}),changeLocale=function(t){i18n.setLang(t),localStorage.setItem("v_form_locale",t)},translate=function(t){return i18n.$st(t)};var i18n$1={methods:{i18nt(t){return i18n.$st(t)},i18n2t(t,d){return i18n.$st2(t,d)}}},index_vue_vue_type_style_index_0_scoped_true_lang$7="",_export_sfc=(t,d)=>{const e=t.__vccOpts||t;for(const[p,m]of d)e[p]=m;return e};const _sfc_main$31={name:"SvgIcon",props:{iconClass:{type:String,required:!0},className:{type:String},title:{type:String,default:""}},computed:{iconName(){return`#icon-${this.iconClass}`},svgClass(){return this.className?"svg-icon "+this.className:"svg-icon"}}},_hoisted_1$x=["xlink:href"],_hoisted_2$j={key:0};function _sfc_render$31(t,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("svg",{class:require$$0$1.normalizeClass(g.svgClass),"aria-hidden":"true"},[require$$0$1.createElementVNode("use",{"xlink:href":g.iconName},null,8,_hoisted_1$x),e.title?(require$$0$1.openBlock(),require$$0$1.createElementBlock("title",_hoisted_2$j,require$$0$1.toDisplayString(e.title),1)):require$$0$1.createCommentVNode("",!0)],2)}var SvgIcon=_export_sfc(_sfc_main$31,[["render",_sfc_render$31],["__scopeId","data-v-8002b89a"]]),index_vue_vue_type_style_index_0_scoped_true_lang$6="";const _sfc_main$30={name:"FieldPanel",mixins:[i18n$1],components:{SvgIcon},props:{designer:Object},inject:["getBannedWidgets","getDesignerConfig"],data(){return{designerConfig:this.getDesignerConfig(),firstTab:"componentLib",scrollerHeight:0,activeNames:["1","2","3","4"],containers:[],basicFields:[],advancedFields:[],customFields:[],formTemplates}},computed:{},created(){this.loadWidgets()},mounted(){this.scrollerHeight=window.innerHeight-56+"px",addWindowResizeHandler(()=>{this.$nextTick(()=>{this.scrollerHeight=window.innerHeight-56+"px"})})},methods:{isBanned(t){return this.getBannedWidgets().indexOf(t)>-1},showFormTemplates(){return this.designerConfig.formTemplates===void 0?!0:!!this.designerConfig.formTemplates},loadWidgets(){this.containers=containers.map(t=>ke(Se({key:generateId()},t),{displayName:this.i18n2t(`designer.widgetLabel.${t.type}`,`extension.widgetLabel.${t.type}`)})).filter(t=>!t.internal&&!this.isBanned(t.type)),this.basicFields=basicFields.map(t=>ke(Se({key:generateId()},t),{displayName:this.i18n2t(`designer.widgetLabel.${t.type}`,`extension.widgetLabel.${t.type}`)})).filter(t=>!this.isBanned(t.type)),this.advancedFields=advancedFields.map(t=>ke(Se({key:generateId()},t),{displayName:this.i18n2t(`designer.widgetLabel.${t.type}`,`extension.widgetLabel.${t.type}`)})).filter(t=>!this.isBanned(t.type)),this.customFields=customFields.map(t=>ke(Se({key:generateId()},t),{displayName:this.i18n2t(`designer.widgetLabel.${t.type}`,`extension.widgetLabel.${t.type}`)})).filter(t=>!this.isBanned(t.type))},handleContainerWidgetClone(t){return this.designer.copyNewContainerWidget(t)},handleFieldWidgetClone(t){return this.designer.copyNewFieldWidget(t)},checkContainerMove(t){return this.designer.checkWidgetMove(t)},checkFieldMove(t){return this.designer.checkFieldMove(t)},onContainerDragEnd(t){},addContainerByDbClick(t){this.designer.addContainerByDbClick(t)},addFieldByDbClick(t){this.designer.addFieldByDbClick(t)},loadFormTemplate(t){this.$confirm(this.i18nt("designer.hint.loadFormTemplateHint"),this.i18nt("render.hint.prompt"),{confirmButtonText:this.i18nt("render.hint.confirm"),cancelButtonText:this.i18nt("render.hint.cancel")}).then(()=>{axios.get(t).then(d=>{let e=!1;typeof d.data=="string"?e=this.designer.loadFormJson(JSON.parse(d.data)):d.data.constructor===Object&&(e=this.designer.loadFormJson(d.data)),e&&this.designer.emitHistoryChange(),this.$message.success(this.i18nt("designer.hint.loadFormTemplateSuccess"))}).catch(d=>{this.$message.error(this.i18nt("designer.hint.loadFormTemplateFailed")+":"+d)})}).catch(d=>{console.error(d)})}}},_hoisted_1$w={class:"panel-container"},_hoisted_2$i=["title","onDblclick"],_hoisted_3$e=["title","onDblclick"],_hoisted_4$e=["title","onDblclick"],_hoisted_5$c=["title","onDblclick"],_hoisted_6$c=["src"],_hoisted_7$9=["src"],_hoisted_8$7={class:"bottom clear-fix"},_hoisted_9$3={class:"ft-title"};function _sfc_render$30(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("draggable"),i=require$$0$1.resolveComponent("el-collapse-item"),f=require$$0$1.resolveComponent("el-collapse"),n=require$$0$1.resolveComponent("el-tab-pane"),o=require$$0$1.resolveComponent("el-popover"),r=require$$0$1.resolveComponent("el-button"),l=require$$0$1.resolveComponent("el-card"),a=require$$0$1.resolveComponent("el-tabs"),u=require$$0$1.resolveComponent("el-scrollbar");return require$$0$1.openBlock(),require$$0$1.createBlock(u,{class:"side-scroll-bar",style:require$$0$1.normalizeStyle({height:m.scrollerHeight})},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$w,[require$$0$1.createVNode(a,{modelValue:m.firstTab,"onUpdate:modelValue":d[1]||(d[1]=h=>m.firstTab=h),class:"no-bottom-margin indent-left-margin"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(n,{name:"componentLib"},{label:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":"el-set-up"}),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18nt("designer.componentLib")),1)])]),default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(f,{modelValue:m.activeNames,"onUpdate:modelValue":d[0]||(d[0]=h=>m.activeNames=h),class:"widget-collapse"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{name:"1",title:t.i18nt("designer.containerTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.containers,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},clone:g.handleContainerWidgetClone,"ghost-class":"ghost",sort:!1,move:g.checkContainerMove,onEnd:g.onContainerDragEnd},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"container-widget-item",title:h.displayName,onDblclick:$=>g.addContainerByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_2$i)]),_:1},8,["list","clone","move","onEnd"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"2",title:t.i18nt("designer.basicFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.basicFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:$=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_3$e)]),_:1},8,["list","move","clone"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"3",title:t.i18nt("designer.advancedFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.advancedFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:$=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_4$e)]),_:1},8,["list","move","clone"])]),_:1},8,["title"]),require$$0$1.createVNode(i,{name:"4",title:t.i18nt("designer.customFieldTitle")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{tag:"ul",list:m.customFields,"item-key":"key",group:{name:"dragGroup",pull:"clone",put:!1},move:g.checkFieldMove,clone:g.handleFieldWidgetClone,"ghost-class":"ghost",sort:!1},{item:require$$0$1.withCtx(({element:h})=>[require$$0$1.createElementVNode("li",{class:"field-widget-item",title:h.displayName,onDblclick:$=>g.addFieldByDbClick(h)},[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":h.icon,"class-name":"color-svg-icon"},null,8,["icon-class"]),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${h.type}`,`extension.widgetLabel.${h.type}`)),1)])],40,_hoisted_5$c)]),_:1},8,["list","move","clone"])]),_:1},8,["title"])]),_:1},8,["modelValue"])]),_:1}),g.showFormTemplates()?(require$$0$1.openBlock(),require$$0$1.createBlock(n,{key:0,name:"formLib",style:{padding:"8px"}},{label:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("span",null,[require$$0$1.createVNode(s,{"icon-class":"el-form-template"}),require$$0$1.createTextVNode(" "+require$$0$1.toDisplayString(t.i18nt("designer.formLib")),1)])]),default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(m.formTemplates,(h,$)=>(require$$0$1.openBlock(),require$$0$1.createBlock(l,{"bord-style":{padding:"0"},shadow:"hover",class:"ft-card"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(o,{placement:"right",trigger:"hover"},{reference:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("img",{src:h.imgUrl,style:{width:"200px"}},null,8,_hoisted_6$c)]),default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("img",{src:h.imgUrl,style:{height:"600px",width:"720px"}},null,8,_hoisted_7$9)]),_:2},1024),require$$0$1.createElementVNode("div",_hoisted_8$7,[require$$0$1.createElementVNode("span",_hoisted_9$3,"#"+require$$0$1.toDisplayString($+1)+" "+require$$0$1.toDisplayString(h.title),1),require$$0$1.createVNode(r,{link:"",type:"primary",class:"right-button",onClick:v=>g.loadFormTemplate(h.jsonUrl)},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.i18nt("designer.hint.loadFormTemplate")),1)]),_:2},1032,["onClick"])])]),_:2},1024))),256))]),_:1})):require$$0$1.createCommentVNode("",!0)]),_:1},8,["modelValue"])])]),_:1},8,["style"])}var WidgetPanel=_export_sfc(_sfc_main$30,[["render",_sfc_render$30],["__scopeId","data-v-b7a1a47c"]]),emitter={data(){return{vfEvents:{}}},methods:{emit$(t,d){this.vfEvents[t]&&this.vfEvents[t].forEach(e=>{e(d)})},on$(t,d){this.vfEvents[t]=this.vfEvents[t]||[],this.vfEvents[t].push(d)},off$(t,d){if(this.vfEvents[t]){if(d==null){this.vfEvents[t].length=0;return}for(let e=0;e{if(this.widgetRefList[m].$options.componentName===d){let s=this.widgetRefList[m];s.emit$.call(s,e,p)}}),this.refList&&Object.keys(this.refList).forEach(m=>{if(this.refList[m].$options.componentName===d){let s=this.refList[m];s.emit$.call(s,e,p)}})}}};const _sfc_main$2$={name:"container-item-wrapper",props:{widget:Object},computed:{customClass(){return this.widget.options.customClass?this.widget.options.customClass.join(" "):""}}};function _sfc_render$2$(t,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["container-wrapper",[g.customClass]])},[require$$0$1.renderSlot(t.$slots,"default")],2)}var ContainerItemWrapper=_export_sfc(_sfc_main$2$,[["render",_sfc_render$2$]]),__glob_0_0$3=Object.freeze(Object.defineProperty({__proto__:null,default:ContainerItemWrapper},Symbol.toStringTag,{value:"Module"})),refMixin={methods:{initRefList(){this.refList!==null&&!!this.widget.options.name&&(this.refList[this.widget.options.name]=this)},getWidgetRef(t,d){let e=this.refList[t];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+t),e},getFormRef(){return this.refList.v_form_ref},getComponentByContainer(t){return t.type==="grid"?"vf-grid-item":t.type+"-item"}}},staticContentWrapper_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2_={name:"static-content-wrapper",mixins:[i18n$1],components:{SvgIcon},props:{field:Object,designer:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designState:{type:Boolean,default:!1},displayStyle:{type:String,default:"block"},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},computed:{selected(){return!!this.designer&&this.field.id===this.designer.selectedId},customClass(){return this.field.options.customClass?this.field.options.customClass.join(" "):""}},methods:{selectField(t){this.designer&&(this.designer.setSelected(t),this.designer.emitEvent("field-selected",this.parentWidget))},selectParentWidget(){this.parentWidget?this.designer.setSelected(this.parentWidget):this.designer.clearSelected()},moveUpWidget(){this.designer.moveUpWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},moveDownWidget(){this.designer.moveDownWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},removeFieldWidget(){if(this.parentList){const t=this.designer.selectedWidgetName;let d=null;this.parentList.length===1?this.parentWidget&&(d=this.parentWidget):this.parentList.length===1+this.indexOfParentList?d=this.parentList[this.indexOfParentList-1]:d=this.parentList[this.indexOfParentList+1],this.$nextTick(()=>{this.parentList.splice(this.indexOfParentList,1),this.designer.setSelected(d),this.designer.formWidget.deleteWidgetRef(t),this.designer.emitHistoryChange()})}}}},_hoisted_1$v={key:0,class:"field-action"},_hoisted_2$h=["title"],_hoisted_3$d=["title"],_hoisted_4$d=["title"],_hoisted_5$b=["title"],_hoisted_6$b={key:1,class:"drag-handler background-opacity"},_hoisted_7$8=["title"],_hoisted_8$6={key:0};function _sfc_render$2_(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon");return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["field-wrapper",{"design-time-bottom-margin":!!this.designer}]),style:require$$0$1.normalizeStyle({display:e.displayStyle})},[!e.field.options.hidden||e.designState===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:0,class:require$$0$1.normalizeClass(["static-content-item",[g.selected?"selected":"",g.customClass]]),style:require$$0$1.normalizeStyle({display:e.displayStyle}),onClick:d[0]||(d[0]=require$$0$1.withModifiers(c=>g.selectField(e.field),["stop"]))},[require$$0$1.renderSlot(t.$slots,"default",{},void 0,!0)],6)):require$$0$1.createCommentVNode("",!0),this.designer?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$v,[require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.selectParentWidget"),onClick:d[1]||(d[1]=require$$0$1.withModifiers(c=>g.selectParentWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-back"})],8,_hoisted_2$h),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:0,title:t.i18nt("designer.hint.moveUpWidget"),onClick:d[2]||(d[2]=require$$0$1.withModifiers(c=>g.moveUpWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-move-up"})],8,_hoisted_3$d)):require$$0$1.createCommentVNode("",!0),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:1,title:t.i18nt("designer.hint.moveDownWidget"),onClick:d[3]||(d[3]=require$$0$1.withModifiers(c=>g.moveDownWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-move-down"})],8,_hoisted_4$d)):require$$0$1.createCommentVNode("",!0),require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.remove"),onClick:d[4]||(d[4]=require$$0$1.withModifiers((...c)=>g.removeFieldWidget&&g.removeFieldWidget(...c),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-delete"})],8,_hoisted_5$b)])):require$$0$1.createCommentVNode("",!0),e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_6$b,[require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.dragHandler")},[require$$0$1.createVNode(s,{"icon-class":"el-drag-move"})],8,_hoisted_7$8),require$$0$1.createElementVNode("i",null,require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${e.field.type}`,`extension.widgetLabel.${e.field.type}`)),1),e.field.options.hidden===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",_hoisted_8$6,[require$$0$1.createVNode(s,{"icon-class":"el-hide"})])):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)],64)):require$$0$1.createCommentVNode("",!0)],6)}var StaticContentWrapper=_export_sfc(_sfc_main$2_,[["render",_sfc_render$2_],["__scopeId","data-v-244033de"]]),__glob_0_19$1=Object.freeze(Object.defineProperty({__proto__:null,default:StaticContentWrapper},Symbol.toStringTag,{value:"Module"}));const getRegExp=function(t){return{number:"/^[-]?\\d+(\\.\\d+)?$/",letter:"/^[A-Za-z]+$/",letterAndNumber:"/^[A-Za-z0-9]+$/",mobilePhone:"/^[1][3-9][0-9]{9}$/",letterStartNumberIncluded:"/^[A-Za-z]+[A-Za-z\\d]*$/",noChinese:"/^[^\u4E00-\u9FA5]+$/",chinese:"/^[\u4E00-\u9FA5]+$/",email:"/^([-_A-Za-z0-9.]+)@([_A-Za-z0-9]+\\.)+[A-Za-z0-9]{2,3}$/",url:"/^([hH][tT]{2}[pP]:\\/\\/|[hH][tT]{2}[pP][sS]:\\/\\/)(([A-Za-z0-9-~]+)\\.)+([A-Za-z0-9-~\\/])+$/"}[t]},validateFn=function(validatorName,rule,value,callback,defaultErrorMsg){if(isNull(value)||value.length<=0){callback();return}const reg=eval(getRegExp(validatorName));if(reg.test(value))callback();else{let t=rule.errorMsg||defaultErrorMsg;callback(new Error(t))}},FormValidators={number(t,d,e){validateFn("number",t,d,e,"["+t.label+"]\u5305\u542B\u975E\u6570\u5B57\u5B57\u7B26")},letter(t,d,e){validateFn("letter",t,d,e,"["+t.label+"]\u5305\u542B\u975E\u5B57\u6BCD\u5B57\u7B26")},letterAndNumber(t,d,e){validateFn("letterAndNumber",t,d,e,"["+t.label+"]\u53EA\u80FD\u8F93\u5165\u5B57\u6BCD\u6216\u6570\u5B57")},mobilePhone(t,d,e){validateFn("mobilePhone",t,d,e,"["+t.label+"]\u624B\u673A\u53F7\u7801\u683C\u5F0F\u6709\u8BEF")},noBlankStart(t,d,e){},noBlankEnd(t,d,e){},letterStartNumberIncluded(t,d,e){validateFn("letterStartNumberIncluded",t,d,e,"["+t.label+"]\u5FC5\u987B\u4EE5\u5B57\u6BCD\u5F00\u5934\uFF0C\u53EF\u5305\u542B\u6570\u5B57")},noChinese(t,d,e){validateFn("noChinese",t,d,e,"["+t.label+"]\u4E0D\u53EF\u8F93\u5165\u4E2D\u6587\u5B57\u7B26")},chinese(t,d,e){validateFn("chinese",t,d,e,"["+t.label+"]\u53EA\u80FD\u8F93\u5165\u4E2D\u6587\u5B57\u7B26")},email(t,d,e){validateFn("email",t,d,e,"["+t.label+"]\u90AE\u7BB1\u683C\u5F0F\u6709\u8BEF")},url(t,d,e){validateFn("url",t,d,e,"["+t.label+"]URL\u683C\u5F0F\u6709\u8BEF")},regExp(rule,value,callback){if(isNull(value)||value.length<=0){callback();return}const pattern=eval(rule.regExp);if(pattern.test(value))callback();else{let t=rule.errorMsg||"["+rule.label+"]invalid value";callback(new Error(t))}}};function mitt(t){return{all:t=t||new Map,on:function(d,e){var p=t.get(d);p?p.push(e):t.set(d,[e])},off:function(d,e){var p=t.get(d);p&&(e?p.splice(p.indexOf(e)>>>0,1):t.set(d,[]))},emit:function(d,e){var p=t.get(d);p&&p.slice().map(function(m){m(e)}),(p=t.get("*"))&&p.slice().map(function(m){m(d,e)})}}}const instance=mitt(),eventBus={};eventBus.$on=instance.on,eventBus.$off=instance.off,eventBus.$emit=instance.emit;var fieldMixin={inject:["refList","getFormConfig","getGlobalDsv","globalOptionData","globalModel","getOptionData"],computed:{formConfig(){return this.getFormConfig()},widgetSize(){return this.field.options.size||"default"},subFormName(){return this.parentWidget?this.parentWidget.options.name:""},subFormItemFlag(){return this.parentWidget?this.parentWidget.type==="sub-form":!1},formModel:{cache:!1,get(){return this.globalModel.formModel}}},methods:{getPropName(){return this.subFormItemFlag&&!this.designState?this.subFormName+"."+this.subFormRowIndex+"."+this.field.options.name+"":this.field.options.name},initFieldModel(){if(!!this.field.formItemFlag){if(!!this.subFormItemFlag&&!this.designState){let t=this.formModel[this.subFormName];(t===void 0||t[this.subFormRowIndex]===void 0||t[this.subFormRowIndex][this.field.options.name]===void 0)&&this.field.options.defaultValue!==void 0?(this.fieldModel=this.field.options.defaultValue,t[this.subFormRowIndex][this.field.options.name]=this.field.options.defaultValue):t[this.subFormRowIndex][this.field.options.name]===void 0?(this.fieldModel=null,t[this.subFormRowIndex][this.field.options.name]=null):this.fieldModel=t[this.subFormRowIndex][this.field.options.name],setTimeout(()=>{this.handleOnChangeForSubForm(this.fieldModel,this.oldFieldValue,t,this.subFormRowId)},800),this.oldFieldValue=deepClone(this.fieldModel),this.initFileList();return}this.formModel[this.field.options.name]===void 0&&this.field.options.defaultValue!==void 0?this.fieldModel=this.field.options.defaultValue:this.formModel[this.field.options.name]===void 0?this.formModel[this.field.options.name]=null:this.fieldModel=this.formModel[this.field.options.name],this.oldFieldValue=deepClone(this.fieldModel),this.initFileList()}},initFileList(){this.field.type!=="picture-upload"&&this.field.type!=="file-upload"||this.designState===!0||this.fieldModel&&(Array.isArray(this.fieldModel)?this.fileList=deepClone(this.fieldModel):this.fileList.splice(0,0,deepClone(this.fieldModel)))},initEventHandler(){this.on$("setFormData",t=>{console.log("formModel of globalModel----------",this.globalModel.formModel),this.subFormItemFlag||this.setValue(t[this.field.options.name])}),this.on$("field-value-changed",t=>{if(this.subFormItemFlag){let d=this.formModel[this.subFormName];this.handleOnChangeForSubForm(t[0],t[1],d,this.subFormRowId)}else this.handleOnChange(t[0],t[1])}),this.on$("reloadOptionItems",t=>{(t.length===0||t.indexOf(this.field.options.name)>-1)&&this.initOptionItems(!0)})},handleOnCreated(){this.field.options.onCreated&&new Function(this.field.options.onCreated).call(this)},handleOnMounted(){this.field.options.onMounted&&new Function(this.field.options.onMounted).call(this)},registerToRefList(t){this.refList!==null&&!!this.field.options.name&&(this.subFormItemFlag&&!this.designState?(t&&delete this.refList[t+"@row"+this.subFormRowId],this.refList[this.field.options.name+"@row"+this.subFormRowId]=this):(t&&delete this.refList[t],this.refList[this.field.options.name]=this))},unregisterFromRefList(){if(this.refList!==null&&!!this.field.options.name){let t=this.field.options.name;this.subFormItemFlag&&!this.designState?delete this.refList[t+"@row"+this.subFormRowId]:delete this.refList[t]}},initOptionItems(t){if(!this.designState&&(this.field.type==="radio"||this.field.type==="checkbox"||this.field.type==="select"||this.field.type==="cascader")){const d=this.getOptionData();!!d&&d.hasOwnProperty(this.field.options.name)&&(t?this.reloadOptions(d[this.field.options.name]):this.loadOptions(d[this.field.options.name]))}},refreshDefaultValue(){this.designState===!0&&this.field.options.defaultValue!==void 0&&(this.fieldModel=this.field.options.defaultValue)},clearFieldRules(){!this.field.formItemFlag||this.rules.splice(0,this.rules.length)},buildFieldRules(){if(!(!this.field.formItemFlag&&this.field.options.hidden)){if(this.rules.splice(0,this.rules.length),this.field.options.required&&this.rules.push({required:!0,trigger:["blur"],message:this.field.options.requiredHint||this.i18nt("render.hint.fieldRequired")}),this.field.options.validation){let t=this.field.options.validation;FormValidators[t]?this.rules.push({validator:FormValidators[t],trigger:["blur","change"],label:this.field.options.label,errorMsg:this.field.options.validationHint}):this.rules.push({validator:FormValidators.regExp,trigger:["blur","change"],regExp:t,label:this.field.options.label,errorMsg:this.field.options.validationHint})}if(this.field.options.onValidate){let t=(d,e,p)=>new Function("rule","value","callback",this.field.options.onValidate).call(this,d,e,p);this.rules.push({validator:t,trigger:["blur","change"],label:this.field.options.label})}}},disableChangeValidate(){!this.rules||this.rules.forEach(t=>{t.trigger&&t.trigger.splice(0,t.trigger.length)})},enableChangeValidate(){!this.rules||this.rules.forEach(t=>{t.trigger&&(t.trigger.push("blur"),t.trigger.push("change"))})},disableOptionOfList(t,d){!!t&&t.length>0&&t.forEach(e=>{e.value===d&&(e.disabled=!0)})},enableOptionOfList(t,d){!!t&&t.length>0&&t.forEach(e=>{e.value===d&&(e.disabled=!1)})},emitFieldDataChange(t,d){this.emit$("field-value-changed",[t,d]),this.dispatch("VFormRender","fieldChange",[this.field.options.name,t,d,this.subFormName,this.subFormRowIndex])},syncUpdateFormModel(t){if(!this.designState)if(this.subFormItemFlag){let e=(this.formModel[this.subFormName]||[{}])[this.subFormRowIndex];e&&(e[this.field.options.name]=t)}else this.formModel[this.field.options.name]=t},handleChangeEvent(t){this.syncUpdateFormModel(t),this.emitFieldDataChange(t,this.oldFieldValue),this.oldFieldValue=deepClone(t),this.dispatch("VFormRender","fieldValidation",[this.getPropName()])},handleFocusCustomEvent(t){this.oldFieldValue=deepClone(this.fieldModel),this.field.options.onFocus&&new Function("event",this.field.options.onFocus).call(this,t)},handleBlurCustomEvent(t){this.field.options.onBlur&&new Function("event",this.field.options.onBlur).call(this,t)},handleInputCustomEvent(t){this.syncUpdateFormModel(t),this.dispatch("VFormRender","fieldValidation",[this.getPropName()]),this.field.options.onInput&&new Function("value",this.field.options.onInput).call(this,t)},emitAppendButtonClick(){this.designState||(this.field.options.onAppendButtonClick?new Function(this.field.options.onAppendButtonClick).call(this):this.dispatch("VFormRender","appendButtonClick",[this]))},handleOnChange(t,d){this.field.options.onChange&&new Function("value","oldValue",this.field.options.onChange).call(this,t,d)},handleOnChangeForSubForm(t,d,e,p){this.field.options.onChange&&new Function("value","oldValue","subFormData","rowId",this.field.options.onChange).call(this,t,d,e,p)},handleButtonWidgetClick(){this.designState||(this.field.options.onClick?new Function(this.field.options.onClick).call(this):this.dispatch("VFormRender","buttonClick",[this]))},remoteQuery(t){this.field.options.onRemoteQuery&&new Function("keyword",this.field.options.onRemoteQuery).call(this,t)},getFormRef(){return this.refList.v_form_ref},getWidgetRef(t,d){let e=this.refList[t];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+t),e},getFieldEditor(){return this.$refs.fieldEditor},setValue(t){if(this.field.formItemFlag){let d=deepClone(this.fieldModel);this.fieldModel=t,this.initFileList(),this.syncUpdateFormModel(t),this.emitFieldDataChange(t,d)}},getValue(){return this.fieldModel},resetField(){let t=this.field.options.defaultValue;this.setValue(t),this.$nextTick(()=>{}),(this.field.type==="picture-upload"||this.field.type==="file-upload")&&(this.$refs.fieldEditor.clearFiles(),this.fileList.splice(0,this.fileList.length))},setWidgetOption(t,d){this.field.options.hasOwnProperty(t)&&(this.field.options[t]=d)},setReadonly(t){this.field.options.readonly=t},setDisabled(t){this.field.options.disabled=t},setAppendButtonVisible(t){this.field.options.appendButton=t},setAppendButtonDisabled(t){this.field.options.appendButtonDisabled=t},setHidden(t){this.field.options.hidden=t,t?this.clearFieldRules():this.buildFieldRules()},setRequired(t){this.field.options.required=t,this.buildFieldRules()},setLabel(t){this.field.options.label=t},focus(){!!this.getFieldEditor()&&!!this.getFieldEditor().focus&&this.getFieldEditor().focus()},clearSelectedOptions(){this.field.type!=="checkbox"&&this.field.type!=="radio"&&this.field.type!=="select"||(this.field.type==="checkbox"||this.field.type==="select"&&this.field.options.multiple?this.fieldModel=[]:this.fieldModel="")},loadOptions(t){this.field.options.optionItems=deepClone(t)},reloadOptions(t){this.field.options.optionItems=deepClone(t)},disableOption(t){this.disableOptionOfList(this.field.options.optionItems,t)},enableOption(t){this.enableOptionOfList(this.field.options.optionItems,t)},getOptionItems(){return this.field.options.optionItems},setUploadHeader(t,d){this.uploadHeaders[t]=d},setUploadData(t,d){this.uploadData[t]=d},setToolbar(t){this.customToolbar=t},isSubFormItem(){return this.parentWidget?this.parentWidget.type==="sub-form":!1},addCssClass(t){this.field.options.customClass?this.field.options.customClass.push(t):this.field.options.customClass=[t]},removeCssClass(t){if(!this.field.options.customClass)return;let d=-1;this.field.options.customClass.map((e,p)=>{e===t&&(d=p)}),d>-1&&this.field.options.customClass.splice(d,1)}}},buttonWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2Z={name:"button-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2Z(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-button"),c=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,"design-state":e.designState,"display-style":e.field.options.displayStyle,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",type:e.field.options.type,size:t.widgetSize,plain:e.field.options.plain,round:e.field.options.round,circle:e.field.options.circle,icon:e.field.options.icon,disabled:e.field.options.disabled,onClick:t.handleButtonWidgetClick},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(e.field.options.label),1)]),_:1},8,["type","size","plain","round","circle","icon","disabled","onClick"])]),_:1},8,["designer","field","design-state","display-style","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var buttonWidget=_export_sfc(_sfc_main$2Z,[["render",_sfc_render$2Z],["__scopeId","data-v-3784bbc2"]]),__glob_0_0$2=Object.freeze(Object.defineProperty({__proto__:null,default:buttonWidget},Symbol.toStringTag,{value:"Module"})),formItemWrapper_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2Y={name:"form-item-wrapper",mixins:[i18n$1],components:{SvgIcon},props:{field:Object,designer:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""},rules:Array},inject:["getFormConfig"],computed:{formConfig(){return this.getFormConfig()},selected(){return!!this.designer&&this.field.id===this.designer.selectedId},label(){return this.field.options.labelHidden?"":this.field.options.label},labelWidth(){return this.field.options.labelHidden?0:this.field.options.labelWidth?this.field.options.labelWidth:this.designer?this.designer.formConfig.labelWidth:this.formConfig.labelWidth},labelAlign(){return this.field.options.labelAlign?this.field.options.labelAlign:this.designer?this.designer.formConfig.labelAlign||"label-left-align":this.formConfig.labelAlign||"label-left-align"},customClass(){return this.field.options.customClass?this.field.options.customClass.join(" "):""},subFormName(){return this.parentWidget?this.parentWidget.options.name:""},subFormItemFlag(){return this.parentWidget?this.parentWidget.type==="sub-form":!1}},created(){},methods:{selectField(t){this.designer&&(this.designer.setSelected(t),this.designer.emitEvent("field-selected",this.parentWidget))},selectParentWidget(){this.parentWidget?this.designer.setSelected(this.parentWidget):this.designer.clearSelected()},moveUpWidget(){this.designer.moveUpWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},moveDownWidget(){this.designer.moveDownWidget(this.parentList,this.indexOfParentList),this.designer.emitHistoryChange()},removeFieldWidget(){if(this.parentList){const t=this.designer.selectedWidgetName;let d=null;this.parentList.length===1?this.parentWidget&&(d=this.parentWidget):this.parentList.length===1+this.indexOfParentList?d=this.parentList[this.indexOfParentList-1]:d=this.parentList[this.indexOfParentList+1],this.$nextTick(()=>{this.parentList.splice(this.indexOfParentList,1),this.designer.setSelected(d),this.designer.formWidget.deleteWidgetRef(t),this.designer.emitHistoryChange()})}},getPropName(){return this.subFormItemFlag&&!this.designState?this.subFormName+"."+this.subFormRowIndex+"."+this.field.options.name+"":this.field.options.name}}},_hoisted_1$u={key:0,class:"custom-label"},_hoisted_2$g={key:0,class:"field-action"},_hoisted_3$c=["title"],_hoisted_4$c=["title"],_hoisted_5$a=["title"],_hoisted_6$a=["title"],_hoisted_7$7={key:1,class:"drag-handler background-opacity"},_hoisted_8$5=["title"],_hoisted_9$2={key:0};function _sfc_render$2Y(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-tooltip"),i=require$$0$1.resolveComponent("el-form-item");return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{class:require$$0$1.normalizeClass(["field-wrapper",{"design-time-bottom-margin":!!this.designer}])},[!!e.field.formItemFlag&&(!e.field.options.hidden||e.designState===!0)?(require$$0$1.openBlock(),require$$0$1.createBlock(i,{key:0,label:g.label,"label-width":g.labelWidth+"px",title:e.field.options.labelTooltip,rules:e.rules,prop:g.getPropName(),class:require$$0$1.normalizeClass([g.selected?"selected":"",g.labelAlign,g.customClass,e.field.options.required?"required":""]),onClick:d[0]||(d[0]=require$$0$1.withModifiers(f=>g.selectField(e.field),["stop"]))},{label:require$$0$1.withCtx(()=>[e.field.options.labelIconClass?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_1$u,[e.field.options.labelIconPosition==="front"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[e.field.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createVNode(c,{content:e.field.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])]),_:1},8,["content"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1)],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createVNode(s,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1)],64))],64)):e.field.options.labelIconPosition==="rear"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.field.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1),require$$0$1.createVNode(c,{content:e.field.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])]),_:1},8,["content"])],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(g.label),1),require$$0$1.createVNode(s,{"icon-class":e.field.options.labelIconClass},null,8,["icon-class"])],64))],64)):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.renderSlot(t.$slots,"default",{},void 0,!0)]),_:3},8,["label","label-width","title","rules","prop","class"])):require$$0$1.createCommentVNode("",!0),this.designer?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_2$g,[require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.selectParentWidget"),onClick:d[1]||(d[1]=require$$0$1.withModifiers(f=>g.selectParentWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-back"})],8,_hoisted_3$c),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:0,title:t.i18nt("designer.hint.moveUpWidget"),onClick:d[2]||(d[2]=require$$0$1.withModifiers(f=>g.moveUpWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-move-up"})],8,_hoisted_4$c)):require$$0$1.createCommentVNode("",!0),!!e.parentList&&e.parentList.length>1?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",{key:1,title:t.i18nt("designer.hint.moveDownWidget"),onClick:d[3]||(d[3]=require$$0$1.withModifiers(f=>g.moveDownWidget(e.field),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-move-down"})],8,_hoisted_5$a)):require$$0$1.createCommentVNode("",!0),require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.remove"),onClick:d[4]||(d[4]=require$$0$1.withModifiers((...f)=>g.removeFieldWidget&&g.removeFieldWidget(...f),["stop"]))},[require$$0$1.createVNode(s,{"icon-class":"el-delete"})],8,_hoisted_6$a)])):require$$0$1.createCommentVNode("",!0),e.designer.selectedId===e.field.id?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_7$7,[require$$0$1.createElementVNode("i",{title:t.i18nt("designer.hint.dragHandler")},[require$$0$1.createVNode(s,{"icon-class":"el-drag-move"})],8,_hoisted_8$5),require$$0$1.createElementVNode("i",null,require$$0$1.toDisplayString(t.i18n2t(`designer.widgetLabel.${e.field.type}`,`extension.widgetLabel.${e.field.type}`)),1),e.field.options.hidden===!0?(require$$0$1.openBlock(),require$$0$1.createElementBlock("i",_hoisted_9$2,[require$$0$1.createVNode(s,{"icon-class":"el-hide"})])):require$$0$1.createCommentVNode("",!0)])):require$$0$1.createCommentVNode("",!0)],64)):require$$0$1.createCommentVNode("",!0)],2)}var FormItemWrapper=_export_sfc(_sfc_main$2Y,[["render",_sfc_render$2Y],["__scopeId","data-v-6e673265"]]),__glob_0_8$1=Object.freeze(Object.defineProperty({__proto__:null,default:FormItemWrapper},Symbol.toStringTag,{value:"Module"})),cascaderWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2X={name:"cascader-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{showFullPath(){return this.field.options.showAllLevels===void 0||!!this.field.options.showAllLevels}},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$t={class:"full-width-input"};function _sfc_render$2X(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-cascader"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$t,[require$$0$1.createVNode(s,{ref:"fieldEditor",options:e.field.options.optionItems,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,size:t.widgetSize,clearable:e.field.options.clearable,filterable:e.field.options.filterable,placeholder:e.field.options.placeholder||t.i18nt("render.hint.selectPlaceholder"),"show-all-levels":g.showFullPath,props:{checkStrictly:e.field.options.checkStrictly,multiple:e.field.options.multiple,expandTrigger:"hover"},onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["options","modelValue","disabled","size","clearable","filterable","placeholder","show-all-levels","props","onFocus","onBlur","onChange"])])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var cascaderWidget=_export_sfc(_sfc_main$2X,[["render",_sfc_render$2X],["__scopeId","data-v-3ebbe3c0"]]),__glob_0_1$3=Object.freeze(Object.defineProperty({__proto__:null,default:cascaderWidget},Symbol.toStringTag,{value:"Module"})),checkboxWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2W={name:"checkbox-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2W(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-checkbox-button"),c=require$$0$1.resolveComponent("el-checkbox"),i=require$$0$1.resolveComponent("el-checkbox-group"),f=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(f,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=n=>m.fieldModel=n),disabled:e.field.options.disabled,size:t.widgetSize,onChange:t.handleChangeEvent},{default:require$$0$1.withCtx(()=>[e.field.options.buttonStyle?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.field.options.optionItems,(n,o)=>(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:o,label:n.value,disabled:n.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.label),1)]),_:2},1032,["label","disabled","border","style"]))),128)):(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},require$$0$1.renderList(e.field.options.optionItems,(n,o)=>(require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:o,label:n.value,disabled:n.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.label),1)]),_:2},1032,["label","disabled","border","style"]))),128))]),_:1},8,["modelValue","disabled","size","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var checkboxWidget=_export_sfc(_sfc_main$2W,[["render",_sfc_render$2W],["__scopeId","data-v-33320a4d"]]),__glob_0_2$3=Object.freeze(Object.defineProperty({__proto__:null,default:checkboxWidget},Symbol.toStringTag,{value:"Module"})),colorWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2V={name:"color-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2V(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-color-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),size:t.widgetSize,disabled:e.field.options.disabled,onChange:t.handleChangeEvent},null,8,["modelValue","size","disabled","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var colorWidget=_export_sfc(_sfc_main$2V,[["render",_sfc_render$2V],["__scopeId","data-v-5c8214c6"]]),__glob_0_3$3=Object.freeze(Object.defineProperty({__proto__:null,default:colorWidget},Symbol.toStringTag,{value:"Module"})),dateRangeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2U={name:"date-range-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2U(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-date-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""])},[require$$0$1.createVNode(s,{ref:"fieldEditor",type:e.field.options.type,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:t.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":e.field.options.valueFormat,"start-placeholder":e.field.options.startPlaceholder||t.i18nt("render.hint.startDatePlaceholder"),"end-placeholder":e.field.options.endPlaceholder||t.i18nt("render.hint.endDatePlaceholder"),onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["type","modelValue","disabled","readonly","size","clearable","editable","format","value-format","start-placeholder","end-placeholder","onFocus","onBlur","onChange"])],2)]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dateRangeWidget=_export_sfc(_sfc_main$2U,[["render",_sfc_render$2U],["__scopeId","data-v-9b0f3514"]]),__glob_0_4$3=Object.freeze(Object.defineProperty({__proto__:null,default:dateRangeWidget},Symbol.toStringTag,{value:"Module"})),dateWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2T={name:"date-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2T(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-date-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",type:e.field.options.type,modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""]),readonly:e.field.options.readonly,disabled:e.field.options.disabled,size:t.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":e.field.options.valueFormat,placeholder:e.field.options.placeholder||t.i18nt("render.hint.datePlaceholder"),onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["type","modelValue","class","readonly","disabled","size","clearable","editable","format","value-format","placeholder","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dateWidget=_export_sfc(_sfc_main$2T,[["render",_sfc_render$2T],["__scopeId","data-v-f05b3708"]]),__glob_0_5$3=Object.freeze(Object.defineProperty({__proto__:null,default:dateWidget},Symbol.toStringTag,{value:"Module"})),dividerWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2S={name:"divider-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2S(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-divider"),c=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",direction:"horizontal","content-position":e.field.options.contentPosition},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(e.field.options.label),1)]),_:1},8,["content-position"])]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var dividerWidget=_export_sfc(_sfc_main$2S,[["render",_sfc_render$2S],["__scopeId","data-v-208e9558"]]),__glob_0_6$3=Object.freeze(Object.defineProperty({__proto__:null,default:dividerWidget},Symbol.toStringTag,{value:"Module"})),fileUploadWidget_vue_vue_type_style_index_0_scoped_true_lang="";let selectFileText="'"+translate("render.hint.selectFile")+"'";const _sfc_main$2R={name:"file-upload-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{SvgIcon,FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:[],rules:[],uploadHeaders:{},uploadData:{key:""},fileList:[],uploadBtnHidden:!1,styleVariables:{"--select-file-action":selectFileText}}},computed:{realUploadURL(){let t=this.field.options.uploadURL;if(!!t&&(t.indexOf("DSV.")>-1||t.indexOf("DSV[")>-1)){let d=this.getGlobalDsv();return console.log("test DSV: ",d),evalFn(this.field.options.uploadURL,d)}return this.field.options.uploadURL}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handleFileExceed(){let t=this.field.options.limit;this.$message.warning(this.i18nt("render.hint.uploadExceed").replace("${uploadLimit}",t))},beforeFileUpload(t){let d=!1,e=t.name.substring(t.name.lastIndexOf(".")+1);if(!!this.field.options&&!!this.field.options.fileTypes){let g=this.field.options.fileTypes;g.length>0&&(d=g.some(s=>e.toLowerCase()===s.toLowerCase()))}if(!d)return this.$message.error(this.i18nt("render.hint.unsupportedFileType")+e),!1;let p=!1,m=5;return!!this.field.options&&!!this.field.options.fileMaxSize&&(m=this.field.options.fileMaxSize),p=t.size/1024/1024<=m,p?(this.uploadData.key=t.name,this.handleOnBeforeUpload(t)):(this.$message.error(this.i18nt("render.hint.fileSizeExceed")+m+"MB"),!1)},handleOnBeforeUpload(t){if(this.field.options.onBeforeUpload){let e=new Function("file",this.field.options.onBeforeUpload).call(this,t);return typeof e=="boolean"?e:!0}return!0},updateFieldModelAndEmitDataChangeForUpload(t,d,e){let p=deepClone(this.fieldModel);!!d&&!!d.name&&!!d.url?this.fieldModel.push({name:d.name,url:d.url}):!!e&&!!e.name&&!!e.url?this.fieldModel.push({name:e.name,url:e.url}):this.fieldModel=deepClone(t),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,p)},handleFileUpload(t,d,e){if(d.status==="success"){let p=null;this.field.options.onUploadSuccess&&(p=new Function("result","file","fileList",this.field.options.onUploadSuccess).call(this,t,d,e)),this.updateFieldModelAndEmitDataChangeForUpload(e,p,t),!!p&&!!p.name?d.name=p.name:d.name=d.name||t.name||t.fileName||t.filename,!!p&&!!p.url?d.url=p.url:d.url=d.url||t.url,this.fileList=deepClone(e),this.uploadBtnHidden=e.length>=this.field.options.limit}},updateFieldModelAndEmitDataChangeForRemove(t,d){let e=deepClone(this.fieldModel);this.fieldModel.splice(t,1),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,e)},removeUploadFile(t,d,e){let p=-1,m=null;this.fileList.forEach((g,s)=>{g.name===t&&(g.url===d||!!e&&g.uid===e)&&(p=s,m=g)}),p>=0&&(this.fileList.splice(p,1),this.updateFieldModelAndEmitDataChangeForRemove(p,this.fileList),this.uploadBtnHidden=this.fileList.length>=this.field.options.limit,this.field.options.onFileRemove&&new Function("file","fileList",this.field.options.onFileRemove).call(this,m,this.fileList))},handleUploadError(t,d,e){this.field.options.onUploadError?new Function("error","file","fileList",this.field.options.onUploadError).call(this,t,d,e):this.$message({message:this.i18nt("render.hint.uploadError")+t,duration:3e3,type:"error"})}}},_hoisted_1$s={key:0,class:"el-upload__tip"},_hoisted_2$f={class:"upload-file-list"},_hoisted_3$b=["title"],_hoisted_4$b=["href"],_hoisted_5$9=["title"],_hoisted_6$9=["title","onClick"];function _sfc_render$2R(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-upload"),i=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{ref:"fieldEditor",disabled:e.field.options.disabled,style:require$$0$1.normalizeStyle(m.styleVariables),class:require$$0$1.normalizeClass(["dynamicPseudoAfter",{hideUploadDiv:m.uploadBtnHidden}]),action:g.realUploadURL,headers:m.uploadHeaders,data:m.uploadData,"with-credentials":e.field.options.withCredentials,multiple:e.field.options.multipleSelect,"file-list":m.fileList,"show-file-list":e.field.options.showFileList,limit:e.field.options.limit,"on-exceed":g.handleFileExceed,"before-upload":g.beforeFileUpload,"on-success":g.handleFileUpload,"on-error":g.handleUploadError},{tip:require$$0$1.withCtx(()=>[e.field.options.uploadTip?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$s,require$$0$1.toDisplayString(e.field.options.uploadTip),1)):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":"el-plus"}),d[0]||(d[0]=require$$0$1.createElementVNode("i",{class:"el-icon-plus avatar-uploader-icon"},null,-1))]),file:require$$0$1.withCtx(({file:f})=>[require$$0$1.createElementVNode("div",_hoisted_2$f,[require$$0$1.createElementVNode("span",{class:"upload-file-name",title:f.name},require$$0$1.toDisplayString(f.name),9,_hoisted_3$b),require$$0$1.createElementVNode("a",{href:f.url,download:"",target:"_blank"},[require$$0$1.createElementVNode("span",{class:"el-icon-download file-action",title:t.i18nt("render.hint.downloadFile")},[require$$0$1.createVNode(s,{"icon-class":"el-download"})],8,_hoisted_5$9)],8,_hoisted_4$b),e.field.options.disabled?require$$0$1.createCommentVNode("",!0):(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",{key:0,class:"file-action",title:t.i18nt("render.hint.removeFile"),onClick:n=>g.removeUploadFile(f.name,f.url,f.uid)},[require$$0$1.createVNode(s,{"icon-class":"el-delete"})],8,_hoisted_6$9))])]),_:1},8,["disabled","style","action","headers","data","with-credentials","multiple","file-list","show-file-list","class","limit","on-exceed","before-upload","on-success","on-error"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var fileUploadWidget=_export_sfc(_sfc_main$2R,[["render",_sfc_render$2R],["__scopeId","data-v-335cf656"]]),__glob_0_7$1=Object.freeze(Object.defineProperty({__proto__:null,default:fileUploadWidget},Symbol.toStringTag,{value:"Module"})),htmlTextWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2Q={name:"html-text-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$r=["innerHTML"];function _sfc_render$2Q(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(s,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{ref:"fieldEditor",innerHTML:e.field.options.htmlContent},null,8,_hoisted_1$r)]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var htmlTextWidget=_export_sfc(_sfc_main$2Q,[["render",_sfc_render$2Q],["__scopeId","data-v-1ad6f874"]]),__glob_0_9$1=Object.freeze(Object.defineProperty({__proto__:null,default:htmlTextWidget},Symbol.toStringTag,{value:"Module"})),inputWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2P={name:"input-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,SvgIcon},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{inputType(){return this.field.options.type==="number"?"text":this.field.options.type}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2P(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-button"),i=require$$0$1.resolveComponent("el-input"),f=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(f,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=n=>m.fieldModel=n),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:t.widgetSize,class:"hide-spin-button",type:g.inputType,"show-password":e.field.options.showPassword,placeholder:e.field.options.placeholder,clearable:e.field.options.clearable,minlength:e.field.options.minLength,maxlength:e.field.options.maxLength,"show-word-limit":e.field.options.showWordLimit,"prefix-icon":e.field.options.prefixIcon,"suffix-icon":e.field.options.suffixIcon,onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onInput:t.handleInputCustomEvent,onChange:t.handleChangeEvent},require$$0$1.createSlots({_:2},[e.field.options.appendButton?{name:"append",fn:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{disabled:e.field.options.disabled||e.field.options.appendButtonDisabled,onClick:t.emitAppendButtonClick},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":e.field.options.buttonIcon},null,8,["icon-class"])]),_:1},8,["disabled","onClick"])]),key:"0"}:void 0]),1032,["modelValue","disabled","readonly","size","type","show-password","placeholder","clearable","minlength","maxlength","show-word-limit","prefix-icon","suffix-icon","onFocus","onBlur","onInput","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var inputWidget=_export_sfc(_sfc_main$2P,[["render",_sfc_render$2P],["__scopeId","data-v-35bcee25"]]),__glob_0_10$1=Object.freeze(Object.defineProperty({__proto__:null,default:inputWidget},Symbol.toStringTag,{value:"Module"})),numberWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2O={name:"number-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2O(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-input-number"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:"full-width-input",disabled:e.field.options.disabled,size:t.widgetSize,"controls-position":e.field.options.controlsPosition,placeholder:e.field.options.placeholder,min:e.field.options.min,max:e.field.options.max,precision:e.field.options.precision,step:e.field.options.step,onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["modelValue","disabled","size","controls-position","placeholder","min","max","precision","step","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var numberWidget=_export_sfc(_sfc_main$2O,[["render",_sfc_render$2O],["__scopeId","data-v-612b9efe"]]),__glob_0_11$1=Object.freeze(Object.defineProperty({__proto__:null,default:numberWidget},Symbol.toStringTag,{value:"Module"})),pictureUploadWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2N={name:"picture-upload-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,SvgIcon},data(){return{oldFieldValue:null,fieldModel:[],rules:[],uploadHeaders:{},uploadData:{key:""},fileList:[],fileListBeforeRemove:[],uploadBtnHidden:!1,previewIndex:1}},computed:{previewList(){return this.fileList.map(t=>t.url)},realUploadURL(){let t=this.field.options.uploadURL;if(!!t&&(t.indexOf("DSV.")>-1||t.indexOf("DSV[")>-1)){let d=this.getGlobalDsv();return console.log("test DSV: ",d),evalFn(this.field.options.uploadURL,d)}return this.field.options.uploadURL}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handlePictureExceed(){let t=this.field.options.limit;this.$message.warning(this.i18nt("render.hint.uploadExceed").replace("${uploadLimit}",t))},beforePictureUpload(t){let d=!1;if(!!this.field.options&&!!this.field.options.fileTypes){let m=this.field.options.fileTypes;m.length>0&&(d=m.some(g=>t.type==="image/"+g))}if(!d)return this.$message.error(this.i18nt("render.hint.unsupportedFileType")+t.type),!1;let e=!1,p=5;return!!this.field.options&&!!this.field.options.fileMaxSize&&(p=this.field.options.fileMaxSize),e=t.size/1024/1024<=p,e?(this.uploadData.key=t.name,this.handleOnBeforeUpload(t)):(this.$message.error(this.$("render.hint.fileSizeExceed")+p+"MB"),!1)},handleOnBeforeUpload(t){if(this.field.options.onBeforeUpload){let e=new Function("file",this.field.options.onBeforeUpload).call(this,t);return typeof e=="boolean"?e:!0}return!0},updateFieldModelAndEmitDataChangeForUpload(t,d,e){let p=deepClone(this.fieldModel);!!d&&!!d.name&&!!d.url?this.fieldModel.push({name:d.name,url:d.url}):!!e&&!!e.name&&!!e.url?this.fieldModel.push({name:e.name,url:e.url}):this.fieldModel=deepClone(t),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,p)},handlePictureUpload(t,d,e){if(d.status==="success"){let p=null;this.field.options.onUploadSuccess&&(p=new Function("result","file","fileList",this.field.options.onUploadSuccess).call(this,t,d,e)),this.updateFieldModelAndEmitDataChangeForUpload(e,p,t),this.fileList=deepClone(e),this.uploadBtnHidden=e.length>=this.field.options.limit}},updateFieldModelAndEmitDataChangeForRemove(t){let d=deepClone(this.fieldModel),e=-1;this.fileListBeforeRemove.map((p,m)=>{p.name===t.name&&(p.url===t.url||!!p.uid&&p.uid===t.uid)&&(e=m)}),e>-1&&this.fieldModel.splice(e,1),this.syncUpdateFormModel(this.fieldModel),this.emitFieldDataChange(this.fieldModel,d)},handleBeforeRemove(t){this.fileListBeforeRemove=deepClone(t)},handlePictureRemove(t){this.handleBeforeRemove(this.fileList),this.fileList.splice(this.fileList.indexOf(t),1),this.updateFieldModelAndEmitDataChangeForRemove(t);let d=deepClone(this.fileList);this.uploadBtnHidden=d.length>=this.field.options.limit,this.field.options.onFileRemove&&new Function("file","fileList",this.field.options.onFileRemove).call(this,t,d)},handleUploadError(t,d,e){this.field.options.onUploadError?new Function("error","file","fileList",this.field.options.onUploadError).call(this,t,d,e):this.$message({message:this.i18nt("render.hint.uploadError")+t,duration:3e3,type:"error"})},handlePictureCardPreview({url:t}){this.previewIndex=this.previewList.indexOf(t),this.$refs.imageRef.$el.children[0].click()}}},_hoisted_1$q={class:"el-upload-list__item-status-label"},_hoisted_2$e={class:"el-icon--upload-success",style:{color:"#FFF"}},_hoisted_3$a={class:"el-upload-list__item-actions"},_hoisted_4$a=["onClick"],_hoisted_5$8=["onClick"],_hoisted_6$8={key:0,class:"el-upload__tip"},_hoisted_7$6={class:"uploader-icon"};function _sfc_render$2N(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-image"),c=require$$0$1.resolveComponent("svg-icon"),i=require$$0$1.resolveComponent("el-upload"),f=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(f,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",disabled:e.field.options.disabled,action:g.realUploadURL,headers:m.uploadHeaders,data:m.uploadData,"with-credentials":e.field.options.withCredentials,multiple:e.field.options.multipleSelect,"file-list":m.fileList,"show-file-list":e.field.options.showFileList,"list-type":"picture-card",class:require$$0$1.normalizeClass({hideUploadDiv:m.uploadBtnHidden}),limit:e.field.options.limit,"on-exceed":g.handlePictureExceed,"before-upload":g.beforePictureUpload,"on-preview":g.handlePictureCardPreview,"on-success":g.handlePictureUpload,"on-error":g.handleUploadError},{file:require$$0$1.withCtx(({file:n})=>[require$$0$1.createVNode(s,{ref:"imageRef",style:{width:"100%",height:"100%"},src:n.url,"preview-src-list":g.previewList,"initial-index":m.previewIndex,fit:"cover","preview-teleported":""},null,8,["src","preview-src-list","initial-index"]),require$$0$1.createElementVNode("label",_hoisted_1$q,[require$$0$1.createElementVNode("i",_hoisted_2$e,[require$$0$1.createVNode(c,{class:"","icon-class":"el-check"})])]),require$$0$1.createElementVNode("span",_hoisted_3$a,[require$$0$1.createElementVNode("span",{class:"el-upload-list__item-preview",onClick:o=>g.handlePictureCardPreview(n)},[require$$0$1.createVNode(c,{"icon-class":"el-zoom-in"})],8,_hoisted_4$a),require$$0$1.createElementVNode("span",{class:"el-upload-list__item-delete",onClick:o=>g.handlePictureRemove(n)},[require$$0$1.createVNode(c,{"icon-class":"el-delete"})],8,_hoisted_5$8)])]),tip:require$$0$1.withCtx(()=>[e.field.options.uploadTip?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_6$8,require$$0$1.toDisplayString(e.field.options.uploadTip),1)):require$$0$1.createCommentVNode("",!0)]),default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_7$6,[require$$0$1.createVNode(c,{"icon-class":"el-plus"})])]),_:1},8,["disabled","action","headers","data","with-credentials","multiple","file-list","show-file-list","class","limit","on-exceed","before-upload","on-preview","on-success","on-error"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var pictureUploadWidget=_export_sfc(_sfc_main$2N,[["render",_sfc_render$2N],["__scopeId","data-v-6bdae02e"]]),__glob_0_12$1=Object.freeze(Object.defineProperty({__proto__:null,default:pictureUploadWidget},Symbol.toStringTag,{value:"Module"})),radioWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2M={name:"radio-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2M(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-radio-button"),c=require$$0$1.resolveComponent("el-radio"),i=require$$0$1.resolveComponent("el-radio-group"),f=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(f,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(i,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=n=>m.fieldModel=n),class:require$$0$1.normalizeClass({"radio-group-block":e.field.options.displayStyle==="block"}),disabled:e.field.options.disabled,size:t.widgetSize,onChange:t.handleChangeEvent},{default:require$$0$1.withCtx(()=>[e.field.options.buttonStyle?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.field.options.optionItems,(n,o)=>(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:o,value:n.value,disabled:n.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.label),1)]),_:2},1032,["value","disabled","border","style"]))),128)):(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},require$$0$1.renderList(e.field.options.optionItems,(n,o)=>(require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:o,value:n.value,disabled:n.disabled,border:e.field.options.border,style:require$$0$1.normalizeStyle({display:e.field.options.displayStyle})},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(n.label),1)]),_:2},1032,["value","disabled","border","style"]))),128))]),_:1},8,["modelValue","class","disabled","size","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var radioWidget=_export_sfc(_sfc_main$2M,[["render",_sfc_render$2M],["__scopeId","data-v-06d5ed13"]]),__glob_0_13$1=Object.freeze(Object.defineProperty({__proto__:null,default:radioWidget},Symbol.toStringTag,{value:"Module"})),rateWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2L={name:"rate-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2L(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-rate"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,max:e.field.options.max,"low-threshold":e.field.options.lowThreshold,"high-threshold":e.field.options.highThreshold,"allow-half":e.field.options.allowHalf,"show-text":e.field.options.showText,"show-score":e.field.options.showScore,onChange:t.handleChangeEvent},null,8,["modelValue","disabled","max","low-threshold","high-threshold","allow-half","show-text","show-score","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var rateWidget=_export_sfc(_sfc_main$2L,[["render",_sfc_render$2L],["__scopeId","data-v-29a21d5b"]]),__glob_0_14$1=Object.freeze(Object.defineProperty({__proto__:null,default:rateWidget},Symbol.toStringTag,{value:"Module"})),quill={exports:{}};/*! + * Quill Editor v1.3.7 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */(function(t,d){(function(p,m){t.exports=m()})(typeof self!="undefined"?self:commonjsGlobal,function(){return function(e){var p={};function m(g){if(p[g])return p[g].exports;var s=p[g]={i:g,l:!1,exports:{}};return e[g].call(s.exports,s,s.exports,m),s.l=!0,s.exports}return m.m=e,m.c=p,m.d=function(g,s,c){m.o(g,s)||Object.defineProperty(g,s,{configurable:!1,enumerable:!0,get:c})},m.n=function(g){var s=g&&g.__esModule?function(){return g.default}:function(){return g};return m.d(s,"a",s),s},m.o=function(g,s){return Object.prototype.hasOwnProperty.call(g,s)},m.p="",m(m.s=109)}([function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(17),s=m(18),c=m(19),i=m(45),f=m(46),n=m(47),o=m(48),r=m(49),l=m(12),a=m(32),u=m(33),h=m(31),$=m(1),v={Scope:$.Scope,create:$.create,find:$.find,query:$.query,register:$.register,Container:g.default,Format:s.default,Leaf:c.default,Embed:o.default,Scroll:i.default,Block:n.default,Inline:f.default,Text:r.default,Attributor:{Attribute:l.default,Class:a.default,Style:u.default,Store:h.default}};p.default=v},function(e,p,m){var g=this&&this.__extends||function(){var h=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function($,v){$.__proto__=v}||function($,v){for(var w in v)v.hasOwnProperty(w)&&($[w]=v[w])};return function($,v){h($,v);function w(){this.constructor=$}$.prototype=v===null?Object.create(v):(w.prototype=v.prototype,new w)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=function(h){g($,h);function $(v){var w=this;return v="[Parchment] "+v,w=h.call(this,v)||this,w.message=v,w.name=w.constructor.name,w}return $}(Error);p.ParchmentError=s;var c={},i={},f={},n={};p.DATA_KEY="__blot";var o;(function(h){h[h.TYPE=3]="TYPE",h[h.LEVEL=12]="LEVEL",h[h.ATTRIBUTE=13]="ATTRIBUTE",h[h.BLOT=14]="BLOT",h[h.INLINE=7]="INLINE",h[h.BLOCK=11]="BLOCK",h[h.BLOCK_BLOT=10]="BLOCK_BLOT",h[h.INLINE_BLOT=6]="INLINE_BLOT",h[h.BLOCK_ATTRIBUTE=9]="BLOCK_ATTRIBUTE",h[h.INLINE_ATTRIBUTE=5]="INLINE_ATTRIBUTE",h[h.ANY=15]="ANY"})(o=p.Scope||(p.Scope={}));function r(h,$){var v=a(h);if(v==null)throw new s("Unable to create "+h+" blot");var w=v,y=h instanceof Node||h.nodeType===Node.TEXT_NODE?h:w.create($);return new w(y,$)}p.create=r;function l(h,$){return $===void 0&&($=!1),h==null?null:h[p.DATA_KEY]!=null?h[p.DATA_KEY].blot:$?l(h.parentNode,$):null}p.find=l;function a(h,$){$===void 0&&($=o.ANY);var v;if(typeof h=="string")v=n[h]||c[h];else if(h instanceof Text||h.nodeType===Node.TEXT_NODE)v=n.text;else if(typeof h=="number")h&o.LEVEL&o.BLOCK?v=n.block:h&o.LEVEL&o.INLINE&&(v=n.inline);else if(h instanceof HTMLElement){var w=(h.getAttribute("class")||"").split(/\s+/);for(var y in w)if(v=i[w[y]],v)break;v=v||f[h.tagName]}return v==null?null:$&o.LEVEL&v.scope&&$&o.TYPE&v.scope?v:null}p.query=a;function u(){for(var h=[],$=0;$1)return h.map(function(y){return u(y)});var v=h[0];if(typeof v.blotName!="string"&&typeof v.attrName!="string")throw new s("Invalid definition");if(v.blotName==="abstract")throw new s("Cannot register abstract class");if(n[v.blotName||v.attrName]=v,typeof v.keyName=="string")c[v.keyName]=v;else if(v.className!=null&&(i[v.className]=v),v.tagName!=null){Array.isArray(v.tagName)?v.tagName=v.tagName.map(function(y){return y.toUpperCase()}):v.tagName=v.tagName.toUpperCase();var w=Array.isArray(v.tagName)?v.tagName:[v.tagName];w.forEach(function(y){(f[y]==null||v.className==null)&&(f[y]=v)})}return v}p.register=u},function(e,p,m){var g=m(51),s=m(11),c=m(3),i=m(20),f=String.fromCharCode(0),n=function(o){Array.isArray(o)?this.ops=o:o!=null&&Array.isArray(o.ops)?this.ops=o.ops:this.ops=[]};n.prototype.insert=function(o,r){var l={};return o.length===0?this:(l.insert=o,r!=null&&typeof r=="object"&&Object.keys(r).length>0&&(l.attributes=r),this.push(l))},n.prototype.delete=function(o){return o<=0?this:this.push({delete:o})},n.prototype.retain=function(o,r){if(o<=0)return this;var l={retain:o};return r!=null&&typeof r=="object"&&Object.keys(r).length>0&&(l.attributes=r),this.push(l)},n.prototype.push=function(o){var r=this.ops.length,l=this.ops[r-1];if(o=c(!0,{},o),typeof l=="object"){if(typeof o.delete=="number"&&typeof l.delete=="number")return this.ops[r-1]={delete:l.delete+o.delete},this;if(typeof l.delete=="number"&&o.insert!=null&&(r-=1,l=this.ops[r-1],typeof l!="object"))return this.ops.unshift(o),this;if(s(o.attributes,l.attributes)){if(typeof o.insert=="string"&&typeof l.insert=="string")return this.ops[r-1]={insert:l.insert+o.insert},typeof o.attributes=="object"&&(this.ops[r-1].attributes=o.attributes),this;if(typeof o.retain=="number"&&typeof l.retain=="number")return this.ops[r-1]={retain:l.retain+o.retain},typeof o.attributes=="object"&&(this.ops[r-1].attributes=o.attributes),this}}return r===this.ops.length?this.ops.push(o):this.ops.splice(r,0,o),this},n.prototype.chop=function(){var o=this.ops[this.ops.length-1];return o&&o.retain&&!o.attributes&&this.ops.pop(),this},n.prototype.filter=function(o){return this.ops.filter(o)},n.prototype.forEach=function(o){this.ops.forEach(o)},n.prototype.map=function(o){return this.ops.map(o)},n.prototype.partition=function(o){var r=[],l=[];return this.forEach(function(a){var u=o(a)?r:l;u.push(a)}),[r,l]},n.prototype.reduce=function(o,r){return this.ops.reduce(o,r)},n.prototype.changeLength=function(){return this.reduce(function(o,r){return r.insert?o+i.length(r):r.delete?o-r.delete:o},0)},n.prototype.length=function(){return this.reduce(function(o,r){return o+i.length(r)},0)},n.prototype.slice=function(o,r){o=o||0,typeof r!="number"&&(r=1/0);for(var l=[],a=i.iterator(this.ops),u=0;u0&&l.next(u.retain-h)}for(var $=new n(a);r.hasNext()||l.hasNext();)if(l.peekType()==="insert")$.push(l.next());else if(r.peekType()==="delete")$.push(r.next());else{var v=Math.min(r.peekLength(),l.peekLength()),w=r.next(v),y=l.next(v);if(typeof y.retain=="number"){var _={};typeof w.retain=="number"?_.retain=v:_.insert=w.insert;var b=i.attributes.compose(w.attributes,y.attributes,typeof w.retain=="number");if(b&&(_.attributes=b),$.push(_),!l.hasNext()&&s($.ops[$.ops.length-1],_)){var S=new n(r.rest());return $.concat(S).chop()}}else typeof y.delete=="number"&&typeof w.retain=="number"&&$.push(y)}return $.chop()},n.prototype.concat=function(o){var r=new n(this.ops.slice());return o.ops.length>0&&(r.push(o.ops[0]),r.ops=r.ops.concat(o.ops.slice(1))),r},n.prototype.diff=function(o,r){if(this.ops===o.ops)return new n;var l=[this,o].map(function(v){return v.map(function(w){if(w.insert!=null)return typeof w.insert=="string"?w.insert:f;var y=v===o?"on":"with";throw new Error("diff() called "+y+" non-document")}).join("")}),a=new n,u=g(l[0],l[1],r),h=i.iterator(this.ops),$=i.iterator(o.ops);return u.forEach(function(v){for(var w=v[1].length;w>0;){var y=0;switch(v[0]){case g.INSERT:y=Math.min($.peekLength(),w),a.push($.next(y));break;case g.DELETE:y=Math.min(w,h.peekLength()),h.next(y),a.delete(y);break;case g.EQUAL:y=Math.min(h.peekLength(),$.peekLength(),w);var _=h.next(y),b=$.next(y);s(_.insert,b.insert)?a.retain(y,i.attributes.diff(_.attributes,b.attributes)):a.push(b).delete(y);break}w-=y}}),a.chop()},n.prototype.eachLine=function(o,r){r=r||` +`;for(var l=i.iterator(this.ops),a=new n,u=0;l.hasNext();){if(l.peekType()!=="insert")return;var h=l.peek(),$=i.length(h)-l.peekLength(),v=typeof h.insert=="string"?h.insert.indexOf(r,$)-$:-1;if(v<0)a.push(l.next());else if(v>0)a.push(l.next(v));else{if(o(a,l.next(1).attributes||{},u)===!1)return;u+=1,a=new n}}a.length()>0&&o(a,{},u)},n.prototype.transform=function(o,r){if(r=!!r,typeof o=="number")return this.transformPosition(o,r);for(var l=i.iterator(this.ops),a=i.iterator(o.ops),u=new n;l.hasNext()||a.hasNext();)if(l.peekType()==="insert"&&(r||a.peekType()!=="insert"))u.retain(i.length(l.next()));else if(a.peekType()==="insert")u.push(a.next());else{var h=Math.min(l.peekLength(),a.peekLength()),$=l.next(h),v=a.next(h);if($.delete)continue;v.delete?u.push(v):u.retain(h,i.attributes.transform($.attributes,v.attributes,r))}return u.chop()},n.prototype.transformPosition=function(o,r){r=!!r;for(var l=i.iterator(this.ops),a=0;l.hasNext()&&a<=o;){var u=l.peekLength(),h=l.peekType();if(l.next(),h==="delete"){o-=Math.min(u,o-a);continue}else h==="insert"&&(a0&&(C1&&arguments[1]!==void 0?arguments[1]:!1;if(x&&(C===0||C>=this.length()-S)){var L=this.clone();return C===0?(this.parent.insertBefore(L,this),this):(this.parent.insertBefore(L,this.next),L)}else{var q=s(T.prototype.__proto__||Object.getPrototypeOf(T.prototype),"split",this).call(this,C,x);return this.cache={},q}}}]),T}(r.default.Block);O.blotName="block",O.tagName="P",O.defaultChild="break",O.allowedChildren=[h.default,r.default.Embed,v.default];function k(A){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};return A==null||(typeof A.formats=="function"&&(T=(0,i.default)(T,A.formats())),A.parent==null||A.parent.blotName=="scroll"||A.parent.statics.scope!==A.statics.scope)?T:k(A.parent,T)}p.bubbleFormats=k,p.BlockEmbed=M,p.default=O},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.overload=p.expandConfig=void 0;var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(F){return typeof F}:function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},s=function(){function F(I,R){var B=[],D=!0,P=!1,j=void 0;try{for(var V=I[Symbol.iterator](),W;!(D=(W=V.next()).done)&&(B.push(W.value),!(R&&B.length===R));D=!0);}catch(H){P=!0,j=H}finally{try{!D&&V.return&&V.return()}finally{if(P)throw j}}return B}return function(I,R){if(Array.isArray(I))return I;if(Symbol.iterator in Object(I))return F(I,R);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function F(I,R){for(var B=0;B2&&arguments[2]!==void 0?arguments[2]:!1;if(typeof R!="string"){var j=R.attrName||R.blotName;typeof j=="string"?this.register("formats/"+j,R,B):Object.keys(R).forEach(function(V){D.register(V,R[V],B)})}else this.imports[R]!=null&&!P&&E.warn("Overwriting "+R+" with",B),this.imports[R]=B,(R.startsWith("blots/")||R.startsWith("formats/"))&&B.blotName!=="abstract"?$.default.register(B):R.startsWith("modules")&&typeof B.register=="function"&&B.register()}}]);function F(I){var R=this,B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(T(this,F),this.options=x(I,B),this.container=this.options.container,this.container==null)return E.error("Invalid Quill container",I);this.options.debug&&F.debug(this.options.debug);var D=this.container.innerHTML.trim();this.container.classList.add("ql-container"),this.container.innerHTML="",this.container.__quill=this,this.root=this.addContainer("ql-editor"),this.root.classList.add("ql-blank"),this.root.setAttribute("data-gramm",!1),this.scrollingContainer=this.options.scrollingContainer||this.root,this.emitter=new l.default,this.scroll=$.default.create(this.root,{emitter:this.emitter,whitelist:this.options.formats}),this.editor=new o.default(this.scroll),this.selection=new w.default(this.scroll,this.emitter),this.theme=new this.options.theme(this,this.options),this.keyboard=this.theme.addModule("keyboard"),this.clipboard=this.theme.addModule("clipboard"),this.history=this.theme.addModule("history"),this.theme.init(),this.emitter.on(l.default.events.EDITOR_CHANGE,function(j){j===l.default.events.TEXT_CHANGE&&R.root.classList.toggle("ql-blank",R.editor.isBlank())}),this.emitter.on(l.default.events.SCROLL_UPDATE,function(j,V){var W=R.selection.lastRange,H=W&&W.length===0?W.index:void 0;L.call(R,function(){return R.editor.update(null,V,H)},j)});var P=this.clipboard.convert(`
      `+D+"


      ");this.setContents(P),this.history.clear(),this.options.placeholder&&this.root.setAttribute("data-placeholder",this.options.placeholder),this.options.readOnly&&this.disable()}return c(F,[{key:"addContainer",value:function(R){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;if(typeof R=="string"){var D=R;R=document.createElement("div"),R.classList.add(D)}return this.container.insertBefore(R,B),R}},{key:"blur",value:function(){this.selection.setRange(null)}},{key:"deleteText",value:function(R,B,D){var P=this,j=q(R,B,D),V=s(j,4);return R=V[0],B=V[1],D=V[3],L.call(this,function(){return P.editor.deleteText(R,B)},D,R,-1*B)}},{key:"disable",value:function(){this.enable(!1)}},{key:"enable",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.scroll.enable(R),this.container.classList.toggle("ql-disabled",!R)}},{key:"focus",value:function(){var R=this.scrollingContainer.scrollTop;this.selection.focus(),this.scrollingContainer.scrollTop=R,this.scrollIntoView()}},{key:"format",value:function(R,B){var D=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:l.default.sources.API;return L.call(this,function(){var j=D.getSelection(!0),V=new f.default;if(j==null)return V;if($.default.query(R,$.default.Scope.BLOCK))V=D.editor.formatLine(j.index,j.length,A({},R,B));else{if(j.length===0)return D.selection.format(R,B),V;V=D.editor.formatText(j.index,j.length,A({},R,B))}return D.setSelection(j,l.default.sources.SILENT),V},P)}},{key:"formatLine",value:function(R,B,D,P,j){var V=this,W=void 0,H=q(R,B,D,P,j),z=s(H,4);return R=z[0],B=z[1],W=z[2],j=z[3],L.call(this,function(){return V.editor.formatLine(R,B,W)},j,R,0)}},{key:"formatText",value:function(R,B,D,P,j){var V=this,W=void 0,H=q(R,B,D,P,j),z=s(H,4);return R=z[0],B=z[1],W=z[2],j=z[3],L.call(this,function(){return V.editor.formatText(R,B,W)},j,R,0)}},{key:"getBounds",value:function(R){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=void 0;typeof R=="number"?D=this.selection.getBounds(R,B):D=this.selection.getBounds(R.index,R.length);var P=this.container.getBoundingClientRect();return{bottom:D.bottom-P.top,height:D.height,left:D.left-P.left,right:D.right-P.left,top:D.top-P.top,width:D.width}}},{key:"getContents",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.getLength()-R,D=q(R,B),P=s(D,2);return R=P[0],B=P[1],this.editor.getContents(R,B)}},{key:"getFormat",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:this.getSelection(!0),B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return typeof R=="number"?this.editor.getFormat(R,B):this.editor.getFormat(R.index,R.length)}},{key:"getIndex",value:function(R){return R.offset(this.scroll)}},{key:"getLength",value:function(){return this.scroll.length()}},{key:"getLeaf",value:function(R){return this.scroll.leaf(R)}},{key:"getLine",value:function(R){return this.scroll.line(R)}},{key:"getLines",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE;return typeof R!="number"?this.scroll.lines(R.index,R.length):this.scroll.lines(R,B)}},{key:"getModule",value:function(R){return this.theme.modules[R]}},{key:"getSelection",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!1;return R&&this.focus(),this.update(),this.selection.getRange()[0]}},{key:"getText",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:this.getLength()-R,D=q(R,B),P=s(D,2);return R=P[0],B=P[1],this.editor.getText(R,B)}},{key:"hasFocus",value:function(){return this.selection.hasFocus()}},{key:"insertEmbed",value:function(R,B,D){var P=this,j=arguments.length>3&&arguments[3]!==void 0?arguments[3]:F.sources.API;return L.call(this,function(){return P.editor.insertEmbed(R,B,D)},j,R)}},{key:"insertText",value:function(R,B,D,P,j){var V=this,W=void 0,H=q(R,0,D,P,j),z=s(H,4);return R=z[0],W=z[2],j=z[3],L.call(this,function(){return V.editor.insertText(R,B,W)},j,R,B.length)}},{key:"isEnabled",value:function(){return!this.container.classList.contains("ql-disabled")}},{key:"off",value:function(){return this.emitter.off.apply(this.emitter,arguments)}},{key:"on",value:function(){return this.emitter.on.apply(this.emitter,arguments)}},{key:"once",value:function(){return this.emitter.once.apply(this.emitter,arguments)}},{key:"pasteHTML",value:function(R,B,D){this.clipboard.dangerouslyPasteHTML(R,B,D)}},{key:"removeFormat",value:function(R,B,D){var P=this,j=q(R,B,D),V=s(j,4);return R=V[0],B=V[1],D=V[3],L.call(this,function(){return P.editor.removeFormat(R,B)},D,R)}},{key:"scrollIntoView",value:function(){this.selection.scrollIntoView(this.scrollingContainer)}},{key:"setContents",value:function(R){var B=this,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l.default.sources.API;return L.call(this,function(){R=new f.default(R);var P=B.getLength(),j=B.editor.deleteText(0,P),V=B.editor.applyDelta(R),W=V.ops[V.ops.length-1];W!=null&&typeof W.insert=="string"&&W.insert[W.insert.length-1]===` +`&&(B.editor.deleteText(B.getLength()-1,1),V.delete(1));var H=j.compose(V);return H},D)}},{key:"setSelection",value:function(R,B,D){if(R==null)this.selection.setRange(null,B||F.sources.API);else{var P=q(R,B,D),j=s(P,4);R=j[0],B=j[1],D=j[3],this.selection.setRange(new v.Range(R,B),D),D!==l.default.sources.SILENT&&this.selection.scrollIntoView(this.scrollingContainer)}}},{key:"setText",value:function(R){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l.default.sources.API,D=new f.default().insert(R);return this.setContents(D,B)}},{key:"update",value:function(){var R=arguments.length>0&&arguments[0]!==void 0?arguments[0]:l.default.sources.USER,B=this.scroll.update(R);return this.selection.update(R),B}},{key:"updateContents",value:function(R){var B=this,D=arguments.length>1&&arguments[1]!==void 0?arguments[1]:l.default.sources.API;return L.call(this,function(){return R=new f.default(R),B.editor.applyDelta(R,D)},D,!0)}}]),F}();C.DEFAULTS={bounds:null,formats:null,modules:{},placeholder:"",readOnly:!1,scrollingContainer:null,strict:!0,theme:"default"},C.events=l.default.events,C.sources=l.default.sources,C.version="1.3.7",C.imports={delta:f.default,parchment:$.default,"core/module":u.default,"core/theme":O.default};function x(F,I){if(I=(0,_.default)(!0,{container:F,modules:{clipboard:!0,keyboard:!0,history:!0}},I),!I.theme||I.theme===C.DEFAULTS.theme)I.theme=O.default;else if(I.theme=C.import("themes/"+I.theme),I.theme==null)throw new Error("Invalid theme "+I.theme+". Did you register it?");var R=(0,_.default)(!0,{},I.theme.DEFAULTS);[R,I].forEach(function(P){P.modules=P.modules||{},Object.keys(P.modules).forEach(function(j){P.modules[j]===!0&&(P.modules[j]={})})});var B=Object.keys(R.modules).concat(Object.keys(I.modules)),D=B.reduce(function(P,j){var V=C.import("modules/"+j);return V==null?E.error("Cannot load "+j+" module. Are you sure you registered it?"):P[j]=V.DEFAULTS||{},P},{});return I.modules!=null&&I.modules.toolbar&&I.modules.toolbar.constructor!==Object&&(I.modules.toolbar={container:I.modules.toolbar}),I=(0,_.default)(!0,{},C.DEFAULTS,{modules:D},R,I),["bounds","container","scrollingContainer"].forEach(function(P){typeof I[P]=="string"&&(I[P]=document.querySelector(I[P]))}),I.modules=Object.keys(I.modules).reduce(function(P,j){return I.modules[j]&&(P[j]=I.modules[j]),P},{}),I}function L(F,I,R,B){if(this.options.strict&&!this.isEnabled()&&I===l.default.sources.USER)return new f.default;var D=R==null?null:this.getSelection(),P=this.editor.delta,j=F();if(D!=null&&(R===!0&&(R=D.index),B==null?D=N(D,j,I):B!==0&&(D=N(D,R,B,I)),this.setSelection(D,l.default.sources.SILENT)),j.length()>0){var V,W=[l.default.events.TEXT_CHANGE,j,P,I];if((V=this.emitter).emit.apply(V,[l.default.events.EDITOR_CHANGE].concat(W)),I!==l.default.sources.SILENT){var H;(H=this.emitter).emit.apply(H,W)}}return j}function q(F,I,R,B,D){var P={};return typeof F.index=="number"&&typeof F.length=="number"?typeof I!="number"?(D=B,B=R,R=I,I=F.length,F=F.index):(I=F.length,F=F.index):typeof I!="number"&&(D=B,B=R,R=I,I=0),(typeof R=="undefined"?"undefined":g(R))==="object"?(P=R,D=B):typeof R=="string"&&(B!=null?P[R]=B:D=R),D=D||l.default.sources.API,[F,I,P,D]}function N(F,I,R,B){if(F==null)return null;var D=void 0,P=void 0;if(I instanceof f.default){var j=[F.index,F.index+F.length].map(function(z){return I.transformPosition(z,B!==l.default.sources.USER)}),V=s(j,2);D=V[0],P=V[1]}else{var W=[F.index,F.index+F.length].map(function(z){return z=0?z+R:Math.max(I,z+R)}),H=s(W,2);D=H[0],P=H[1]}return new v.Range(D,P-D)}p.expandConfig=x,p.overload=q,p.default=C},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function h($,v){for(var w=0;w0){var y=this.parent.isolate(this.offset(),this.length());this.moveChildren(y),y.wrap(this)}}}],[{key:"compare",value:function(w,y){var _=$.order.indexOf(w),b=$.order.indexOf(y);return _>=0||b>=0?_-b:w===y?0:w1?b-1:0),M=1;M1&&arguments[1]!==void 0?arguments[1]:{};g(this,c),this.quill=i,this.options=f};s.DEFAULTS={},p.default=s},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=["error","warn","log","info"],s="warn";function c(f){if(g.indexOf(f)<=g.indexOf(s)){for(var n,o=arguments.length,r=Array(o>1?o-1:0),l=1;l0&&typeof r[0]!="number")}function o(r,l,a){var u,h;if(f(r)||f(l)||r.prototype!==l.prototype)return!1;if(c(r))return c(l)?(r=g.call(r),l=g.call(l),i(r,l,a)):!1;if(n(r)){if(!n(l)||r.length!==l.length)return!1;for(u=0;u=0;u--)if($[u]!=v[u])return!1;for(u=$.length-1;u>=0;u--)if(h=$[u],!i(r[h],l[h],a))return!1;return typeof r==typeof l}},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(1),s=function(){function c(i,f,n){n===void 0&&(n={}),this.attrName=i,this.keyName=f;var o=g.Scope.TYPE&g.Scope.ATTRIBUTE;n.scope!=null?this.scope=n.scope&g.Scope.LEVEL|o:this.scope=g.Scope.ATTRIBUTE,n.whitelist!=null&&(this.whitelist=n.whitelist)}return c.keys=function(i){return[].map.call(i.attributes,function(f){return f.name})},c.prototype.add=function(i,f){return this.canAdd(i,f)?(i.setAttribute(this.keyName,f),!0):!1},c.prototype.canAdd=function(i,f){var n=g.query(i,g.Scope.BLOT&(this.scope|g.Scope.TYPE));return n==null?!1:this.whitelist==null?!0:typeof f=="string"?this.whitelist.indexOf(f.replace(/["']/g,""))>-1:this.whitelist.indexOf(f)>-1},c.prototype.remove=function(i){i.removeAttribute(this.keyName)},c.prototype.value=function(i){var f=i.getAttribute(this.keyName);return this.canAdd(i,f)&&f?f:""},c}();p.default=s},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.Code=void 0;var g=function(){function M(O,k){var A=[],T=!0,E=!1,C=void 0;try{for(var x=O[Symbol.iterator](),L;!(T=(L=x.next()).done)&&(A.push(L.value),!(k&&A.length===k));T=!0);}catch(q){E=!0,C=q}finally{try{!T&&x.return&&x.return()}finally{if(E)throw C}}return A}return function(O,k){if(Array.isArray(O))return O;if(Symbol.iterator in Object(O))return M(O,k);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function M(O,k){for(var A=0;A=A+T)){var L=this.newlineIndex(A,!0)+1,q=x-L+1,N=this.isolate(L,q),F=N.next;N.format(E,C),F instanceof O&&F.formatAt(0,A-L+T-q,E,C)}}}},{key:"insertAt",value:function(A,T,E){if(E==null){var C=this.descendant($.default,A),x=g(C,2),L=x[0],q=x[1];L.insertAt(q,T)}}},{key:"length",value:function(){var A=this.domNode.textContent.length;return this.domNode.textContent.endsWith(` +`)?A:A+1}},{key:"newlineIndex",value:function(A){var T=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1;if(T)return this.domNode.textContent.slice(0,A).lastIndexOf(` +`);var E=this.domNode.textContent.slice(A).indexOf(` +`);return E>-1?A+E:-1}},{key:"optimize",value:function(A){this.domNode.textContent.endsWith(` +`)||this.appendChild(o.default.create("text",` +`)),c(O.prototype.__proto__||Object.getPrototypeOf(O.prototype),"optimize",this).call(this,A);var T=this.next;T!=null&&T.prev===this&&T.statics.blotName===this.statics.blotName&&this.statics.formats(this.domNode)===T.statics.formats(T.domNode)&&(T.optimize(A),T.moveChildren(this),T.remove())}},{key:"replace",value:function(A){c(O.prototype.__proto__||Object.getPrototypeOf(O.prototype),"replace",this).call(this,A),[].slice.call(this.domNode.querySelectorAll("*")).forEach(function(T){var E=o.default.find(T);E==null?T.parentNode.removeChild(T):E instanceof o.default.Embed?E.remove():E.unwrap()})}}],[{key:"create",value:function(A){var T=c(O.__proto__||Object.getPrototypeOf(O),"create",this).call(this,A);return T.setAttribute("spellcheck",!1),T}},{key:"formats",value:function(){return!0}}]),O}(l.default);S.blotName="code-block",S.tagName="PRE",S.TAB=" ",p.Code=b,p.default=S},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(F){return typeof F}:function(F){return F&&typeof Symbol=="function"&&F.constructor===Symbol&&F!==Symbol.prototype?"symbol":typeof F},s=function(){function F(I,R){var B=[],D=!0,P=!1,j=void 0;try{for(var V=I[Symbol.iterator](),W;!(D=(W=V.next()).done)&&(B.push(W.value),!(R&&B.length===R));D=!0);}catch(H){P=!0,j=H}finally{try{!D&&V.return&&V.return()}finally{if(P)throw j}}return B}return function(I,R){if(Array.isArray(I))return I;if(Symbol.iterator in Object(I))return F(I,R);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function F(I,R){for(var B=0;B=P&&!z.endsWith(` +`)&&(D=!0),B.scroll.insertAt(j,z);var U=B.scroll.line(j),Z=s(U,2),ne=Z[0],re=Z[1],ue=(0,A.default)({},(0,v.bubbleFormats)(ne));if(ne instanceof w.default){var fe=ne.descendant(l.default.Leaf,re),ye=s(fe,1),_e=ye[0];ue=(0,A.default)(ue,(0,v.bubbleFormats)(_e))}H=o.default.attributes.diff(ue,H)||{}}else if(g(V.insert)==="object"){var X=Object.keys(V.insert)[0];if(X==null)return j;B.scroll.insertAt(j,X,V.insert[X])}P+=W}return Object.keys(H).forEach(function(Q){B.scroll.formatAt(j,W,Q,H[Q])}),j+W},0),R.reduce(function(j,V){return typeof V.delete=="number"?(B.scroll.deleteAt(j,V.delete),j):j+(V.retain||V.insert.length||1)},0),this.scroll.batchEnd(),this.update(R)}},{key:"deleteText",value:function(R,B){return this.scroll.deleteAt(R,B),this.update(new f.default().retain(R).delete(B))}},{key:"formatLine",value:function(R,B){var D=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return this.scroll.update(),Object.keys(P).forEach(function(j){if(!(D.scroll.whitelist!=null&&!D.scroll.whitelist[j])){var V=D.scroll.lines(R,Math.max(B,1)),W=B;V.forEach(function(H){var z=H.length();if(!(H instanceof u.default))H.format(j,P[j]);else{var U=R-H.offset(D.scroll),Z=H.newlineIndex(U+W)-U+1;H.formatAt(U,Z,j,P[j])}W-=z})}}),this.scroll.optimize(),this.update(new f.default().retain(R).retain(B,(0,S.default)(P)))}},{key:"formatText",value:function(R,B){var D=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return Object.keys(P).forEach(function(j){D.scroll.formatAt(R,B,j,P[j])}),this.update(new f.default().retain(R).retain(B,(0,S.default)(P)))}},{key:"getContents",value:function(R,B){return this.delta.slice(R,R+B)}},{key:"getDelta",value:function(){return this.scroll.lines().reduce(function(R,B){return R.concat(B.delta())},new f.default)}},{key:"getFormat",value:function(R){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,D=[],P=[];B===0?this.scroll.path(R).forEach(function(V){var W=s(V,1),H=W[0];H instanceof w.default?D.push(H):H instanceof l.default.Leaf&&P.push(H)}):(D=this.scroll.lines(R,B),P=this.scroll.descendants(l.default.Leaf,R,B));var j=[D,P].map(function(V){if(V.length===0)return{};for(var W=(0,v.bubbleFormats)(V.shift());Object.keys(W).length>0;){var H=V.shift();if(H==null)return W;W=q((0,v.bubbleFormats)(H),W)}return W});return A.default.apply(A.default,j)}},{key:"getText",value:function(R,B){return this.getContents(R,B).filter(function(D){return typeof D.insert=="string"}).map(function(D){return D.insert}).join("")}},{key:"insertEmbed",value:function(R,B,D){return this.scroll.insertAt(R,B,D),this.update(new f.default().retain(R).insert(E({},B,D)))}},{key:"insertText",value:function(R,B){var D=this,P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};return B=B.replace(/\r\n/g,` +`).replace(/\r/g,` +`),this.scroll.insertAt(R,B),Object.keys(P).forEach(function(j){D.scroll.formatAt(R,B.length,j,P[j])}),this.update(new f.default().retain(R).insert(B,(0,S.default)(P)))}},{key:"isBlank",value:function(){if(this.scroll.children.length==0)return!0;if(this.scroll.children.length>1)return!1;var R=this.scroll.children.head;return R.statics.blotName!==w.default.blotName||R.children.length>1?!1:R.children.head instanceof _.default}},{key:"removeFormat",value:function(R,B){var D=this.getText(R,B),P=this.scroll.line(R+B),j=s(P,2),V=j[0],W=j[1],H=0,z=new f.default;V!=null&&(V instanceof u.default?H=V.newlineIndex(W)-W+1:H=V.length()-W,z=V.delta().slice(W,W+H-1).insert(` +`));var U=this.getContents(R,B+H),Z=U.diff(new f.default().insert(D).concat(z)),ne=new f.default().retain(R).concat(Z);return this.applyDelta(ne)}},{key:"update",value:function(R){var B=arguments.length>1&&arguments[1]!==void 0?arguments[1]:[],D=arguments.length>2&&arguments[2]!==void 0?arguments[2]:void 0,P=this.delta;if(B.length===1&&B[0].type==="characterData"&&B[0].target.data.match(x)&&l.default.find(B[0].target)){var j=l.default.find(B[0].target),V=(0,v.bubbleFormats)(j),W=j.offset(this.scroll),H=B[0].oldValue.replace($.default.CONTENTS,""),z=new f.default().insert(H),U=new f.default().insert(j.value()),Z=new f.default().retain(W).concat(z.diff(U,D));R=Z.reduce(function(ne,re){return re.insert?ne.insert(re.insert,V):ne.push(re)},new f.default),this.delta=P.compose(R)}else this.delta=this.getDelta(),(!R||!(0,O.default)(P.compose(R),this.delta))&&(R=P.diff(this.delta,D));return R}}]),F}();function q(F,I){return Object.keys(I).reduce(function(R,B){return F[B]==null||(I[B]===F[B]?R[B]=I[B]:Array.isArray(I[B])?I[B].indexOf(F[B])<0&&(R[B]=I[B].concat([F[B]])):R[B]=[I[B],F[B]]),R},{})}function N(F){return F.reduce(function(I,R){if(R.insert===1){var B=(0,S.default)(R.attributes);return delete B.image,I.insert({image:R.attributes.image},B)}if(R.attributes!=null&&(R.attributes.list===!0||R.attributes.bullet===!0)&&(R=(0,S.default)(R),R.attributes.list?R.attributes.list="ordered":(R.attributes.list="bullet",delete R.attributes.bullet)),typeof R.insert=="string"){var D=R.insert.replace(/\r\n/g,` +`).replace(/\r/g,` +`);return I.insert(D,R.attributes)}return I.push(R)},new f.default)}p.default=L},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.Range=void 0;var g=function(){function M(O,k){var A=[],T=!0,E=!1,C=void 0;try{for(var x=O[Symbol.iterator](),L;!(T=(L=x.next()).done)&&(A.push(L.value),!(k&&A.length===k));T=!0);}catch(q){E=!0,C=q}finally{try{!T&&x.return&&x.return()}finally{if(E)throw C}}return A}return function(O,k){if(Array.isArray(O))return O;if(Symbol.iterator in Object(O))return M(O,k);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function(){function M(O,k){for(var A=0;A1&&arguments[1]!==void 0?arguments[1]:0;w(this,M),this.index=O,this.length=k},b=function(){function M(O,k){var A=this;w(this,M),this.emitter=k,this.scroll=O,this.composing=!1,this.mouseDown=!1,this.root=this.scroll.domNode,this.cursor=i.default.create("cursor",this),this.lastRange=this.savedRange=new _(0,0),this.handleComposition(),this.handleDragging(),this.emitter.listenDOM("selectionchange",document,function(){A.mouseDown||setTimeout(A.update.bind(A,a.default.sources.USER),1)}),this.emitter.on(a.default.events.EDITOR_CHANGE,function(T,E){T===a.default.events.TEXT_CHANGE&&E.length()>0&&A.update(a.default.sources.SILENT)}),this.emitter.on(a.default.events.SCROLL_BEFORE_UPDATE,function(){if(!!A.hasFocus()){var T=A.getNativeRange();T!=null&&T.start.node!==A.cursor.textNode&&A.emitter.once(a.default.events.SCROLL_UPDATE,function(){try{A.setNativeRange(T.start.node,T.start.offset,T.end.node,T.end.offset)}catch{}})}}),this.emitter.on(a.default.events.SCROLL_OPTIMIZE,function(T,E){if(E.range){var C=E.range,x=C.startNode,L=C.startOffset,q=C.endNode,N=C.endOffset;A.setNativeRange(x,L,q,N)}}),this.update(a.default.sources.SILENT)}return s(M,[{key:"handleComposition",value:function(){var k=this;this.root.addEventListener("compositionstart",function(){k.composing=!0}),this.root.addEventListener("compositionend",function(){if(k.composing=!1,k.cursor.parent){var A=k.cursor.restore();if(!A)return;setTimeout(function(){k.setNativeRange(A.startNode,A.startOffset,A.endNode,A.endOffset)},1)}})}},{key:"handleDragging",value:function(){var k=this;this.emitter.listenDOM("mousedown",document.body,function(){k.mouseDown=!0}),this.emitter.listenDOM("mouseup",document.body,function(){k.mouseDown=!1,k.update(a.default.sources.USER)})}},{key:"focus",value:function(){this.hasFocus()||(this.root.focus(),this.setRange(this.savedRange))}},{key:"format",value:function(k,A){if(!(this.scroll.whitelist!=null&&!this.scroll.whitelist[k])){this.scroll.update();var T=this.getNativeRange();if(!(T==null||!T.native.collapsed||i.default.query(k,i.default.Scope.BLOCK))){if(T.start.node!==this.cursor.textNode){var E=i.default.find(T.start.node,!1);if(E==null)return;if(E instanceof i.default.Leaf){var C=E.split(T.start.offset);E.parent.insertBefore(this.cursor,C)}else E.insertBefore(this.cursor,T.start.node);this.cursor.attach()}this.cursor.format(k,A),this.scroll.optimize(),this.setNativeRange(this.cursor.textNode,this.cursor.textNode.data.length),this.update()}}}},{key:"getBounds",value:function(k){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,T=this.scroll.length();k=Math.min(k,T-1),A=Math.min(k+A,T-1)-k;var E=void 0,C=this.scroll.leaf(k),x=g(C,2),L=x[0],q=x[1];if(L==null)return null;var N=L.position(q,!0),F=g(N,2);E=F[0],q=F[1];var I=document.createRange();if(A>0){I.setStart(E,q);var R=this.scroll.leaf(k+A),B=g(R,2);if(L=B[0],q=B[1],L==null)return null;var D=L.position(q,!0),P=g(D,2);return E=P[0],q=P[1],I.setEnd(E,q),I.getBoundingClientRect()}else{var j="left",V=void 0;return E instanceof Text?(q0&&(j="right")),{bottom:V.top+V.height,height:V.height,left:V[j],right:V[j],top:V.top,width:0}}}},{key:"getNativeRange",value:function(){var k=document.getSelection();if(k==null||k.rangeCount<=0)return null;var A=k.getRangeAt(0);if(A==null)return null;var T=this.normalizeNative(A);return y.info("getNativeRange",T),T}},{key:"getRange",value:function(){var k=this.getNativeRange();if(k==null)return[null,null];var A=this.normalizedToRange(k);return[A,k]}},{key:"hasFocus",value:function(){return document.activeElement===this.root}},{key:"normalizedToRange",value:function(k){var A=this,T=[[k.start.node,k.start.offset]];k.native.collapsed||T.push([k.end.node,k.end.offset]);var E=T.map(function(L){var q=g(L,2),N=q[0],F=q[1],I=i.default.find(N,!0),R=I.offset(A.scroll);return F===0?R:I instanceof i.default.Container?R+I.length():R+I.index(N,F)}),C=Math.min(Math.max.apply(Math,v(E)),this.scroll.length()-1),x=Math.min.apply(Math,[C].concat(v(E)));return new _(x,C-x)}},{key:"normalizeNative",value:function(k){if(!S(this.root,k.startContainer)||!k.collapsed&&!S(this.root,k.endContainer))return null;var A={start:{node:k.startContainer,offset:k.startOffset},end:{node:k.endContainer,offset:k.endOffset},native:k};return[A.start,A.end].forEach(function(T){for(var E=T.node,C=T.offset;!(E instanceof Text)&&E.childNodes.length>0;)if(E.childNodes.length>C)E=E.childNodes[C],C=0;else if(E.childNodes.length===C)E=E.lastChild,C=E instanceof Text?E.data.length:E.childNodes.length+1;else break;T.node=E,T.offset=C}),A}},{key:"rangeToNative",value:function(k){var A=this,T=k.collapsed?[k.index]:[k.index,k.index+k.length],E=[],C=this.scroll.length();return T.forEach(function(x,L){x=Math.min(C-1,x);var q=void 0,N=A.scroll.leaf(x),F=g(N,2),I=F[0],R=F[1],B=I.position(R,L!==0),D=g(B,2);q=D[0],R=D[1],E.push(q,R)}),E.length<2&&(E=E.concat(E)),E}},{key:"scrollIntoView",value:function(k){var A=this.lastRange;if(A!=null){var T=this.getBounds(A.index,A.length);if(T!=null){var E=this.scroll.length()-1,C=this.scroll.line(Math.min(A.index,E)),x=g(C,1),L=x[0],q=L;if(A.length>0){var N=this.scroll.line(Math.min(A.index+A.length,E)),F=g(N,1);q=F[0]}if(!(L==null||q==null)){var I=k.getBoundingClientRect();T.topI.bottom&&(k.scrollTop+=T.bottom-I.bottom)}}}}},{key:"setNativeRange",value:function(k,A){var T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:k,E=arguments.length>3&&arguments[3]!==void 0?arguments[3]:A,C=arguments.length>4&&arguments[4]!==void 0?arguments[4]:!1;if(y.info("setNativeRange",k,A,T,E),!(k!=null&&(this.root.parentNode==null||k.parentNode==null||T.parentNode==null))){var x=document.getSelection();if(x!=null)if(k!=null){this.hasFocus()||this.root.focus();var L=(this.getNativeRange()||{}).native;if(L==null||C||k!==L.startContainer||A!==L.startOffset||T!==L.endContainer||E!==L.endOffset){k.tagName=="BR"&&(A=[].indexOf.call(k.parentNode.childNodes,k),k=k.parentNode),T.tagName=="BR"&&(E=[].indexOf.call(T.parentNode.childNodes,T),T=T.parentNode);var q=document.createRange();q.setStart(k,A),q.setEnd(T,E),x.removeAllRanges(),x.addRange(q)}}else x.removeAllRanges(),this.root.blur(),document.body.focus()}}},{key:"setRange",value:function(k){var A=arguments.length>1&&arguments[1]!==void 0?arguments[1]:!1,T=arguments.length>2&&arguments[2]!==void 0?arguments[2]:a.default.sources.API;if(typeof A=="string"&&(T=A,A=!1),y.info("setRange",k),k!=null){var E=this.rangeToNative(k);this.setNativeRange.apply(this,v(E).concat([A]))}else this.setNativeRange(null);this.update(T)}},{key:"update",value:function(){var k=arguments.length>0&&arguments[0]!==void 0?arguments[0]:a.default.sources.USER,A=this.lastRange,T=this.getRange(),E=g(T,2),C=E[0],x=E[1];if(this.lastRange=C,this.lastRange!=null&&(this.savedRange=this.lastRange),!(0,r.default)(A,this.lastRange)){var L;!this.composing&&x!=null&&x.native.collapsed&&x.start.node!==this.cursor.textNode&&this.cursor.restore();var q=[a.default.events.SELECTION_CHANGE,(0,n.default)(this.lastRange),(0,n.default)(A),k];if((L=this.emitter).emit.apply(L,[a.default.events.EDITOR_CHANGE].concat(q)),k!==a.default.sources.SILENT){var N;(N=this.emitter).emit.apply(N,q)}}}}]),M}();function S(M,O){try{O.parentNode}catch{return!1}return O instanceof Text&&(O=O.parentNode),M.contains(O)}p.Range=_,p.default=b},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function a(u,h){for(var $=0;$0&&(l+=1),[this.parent.domNode,l]},n.prototype.value=function(){var o;return o={},o[this.statics.blotName]=this.statics.value(this.domNode)||!0,o},n.scope=c.Scope.INLINE_BLOT,n}(s.default);p.default=i},function(e,p,m){var g=m(11),s=m(3),c={attributes:{compose:function(f,n,o){typeof f!="object"&&(f={}),typeof n!="object"&&(n={});var r=s(!0,{},n);o||(r=Object.keys(r).reduce(function(a,u){return r[u]!=null&&(a[u]=r[u]),a},{}));for(var l in f)f[l]!==void 0&&n[l]===void 0&&(r[l]=f[l]);return Object.keys(r).length>0?r:void 0},diff:function(f,n){typeof f!="object"&&(f={}),typeof n!="object"&&(n={});var o=Object.keys(f).concat(Object.keys(n)).reduce(function(r,l){return g(f[l],n[l])||(r[l]=n[l]===void 0?null:n[l]),r},{});return Object.keys(o).length>0?o:void 0},transform:function(f,n,o){if(typeof f!="object")return n;if(typeof n=="object"){if(!o)return n;var r=Object.keys(n).reduce(function(l,a){return f[a]===void 0&&(l[a]=n[a]),l},{});return Object.keys(r).length>0?r:void 0}}},iterator:function(f){return new i(f)},length:function(f){return typeof f.delete=="number"?f.delete:typeof f.retain=="number"?f.retain:typeof f.insert=="string"?f.insert.length:1}};function i(f){this.ops=f,this.index=0,this.offset=0}i.prototype.hasNext=function(){return this.peekLength()<1/0},i.prototype.next=function(f){f||(f=1/0);var n=this.ops[this.index];if(n){var o=this.offset,r=c.length(n);if(f>=r-o?(f=r-o,this.index+=1,this.offset=0):this.offset+=f,typeof n.delete=="number")return{delete:f};var l={};return n.attributes&&(l.attributes=n.attributes),typeof n.retain=="number"?l.retain=f:typeof n.insert=="string"?l.insert=n.insert.substr(o,f):l.insert=n.insert,l}else return{retain:1/0}},i.prototype.peek=function(){return this.ops[this.index]},i.prototype.peekLength=function(){return this.ops[this.index]?c.length(this.ops[this.index])-this.offset:1/0},i.prototype.peekType=function(){return this.ops[this.index]?typeof this.ops[this.index].delete=="number"?"delete":typeof this.ops[this.index].retain=="number"?"retain":"insert":"retain"},i.prototype.rest=function(){if(this.hasNext()){if(this.offset===0)return this.ops.slice(this.index);var f=this.offset,n=this.index,o=this.next(),r=this.ops.slice(this.index);return this.offset=f,this.index=n,[o].concat(r)}else return[]},e.exports=c},function(e,p){var m=function(){function g(u,h){return h!=null&&u instanceof h}var s;try{s=Map}catch{s=function(){}}var c;try{c=Set}catch{c=function(){}}var i;try{i=Promise}catch{i=function(){}}function f(u,h,$,v,w){typeof h=="object"&&($=h.depth,v=h.prototype,w=h.includeNonEnumerable,h=h.circular);var y=[],_=[],b=typeof Buffer!="undefined";typeof h=="undefined"&&(h=!0),typeof $=="undefined"&&($=1/0);function S(M,O){if(M===null)return null;if(O===0)return M;var k,A;if(typeof M!="object")return M;if(g(M,s))k=new s;else if(g(M,c))k=new c;else if(g(M,i))k=new i(function(I,R){M.then(function(B){I(S(B,O-1))},function(B){R(S(B,O-1))})});else if(f.__isArray(M))k=[];else if(f.__isRegExp(M))k=new RegExp(M.source,a(M)),M.lastIndex&&(k.lastIndex=M.lastIndex);else if(f.__isDate(M))k=new Date(M.getTime());else{if(b&&Buffer.isBuffer(M))return Buffer.allocUnsafe?k=Buffer.allocUnsafe(M.length):k=new Buffer(M.length),M.copy(k),k;g(M,Error)?k=Object.create(M):typeof v=="undefined"?(A=Object.getPrototypeOf(M),k=Object.create(A)):(k=Object.create(v),A=v)}if(h){var T=y.indexOf(M);if(T!=-1)return _[T];y.push(M),_.push(k)}g(M,s)&&M.forEach(function(I,R){var B=S(R,O-1),D=S(I,O-1);k.set(B,D)}),g(M,c)&&M.forEach(function(I){var R=S(I,O-1);k.add(R)});for(var E in M){var C;A&&(C=Object.getOwnPropertyDescriptor(A,E)),!(C&&C.set==null)&&(k[E]=S(M[E],O-1))}if(Object.getOwnPropertySymbols)for(var x=Object.getOwnPropertySymbols(M),E=0;E0){if(q instanceof r.BlockEmbed||R instanceof r.BlockEmbed){this.optimize();return}if(q instanceof $.default){var B=q.newlineIndex(q.length(),!0);if(B>-1&&(q=q.split(B+1),q===R)){this.optimize();return}}else if(R instanceof $.default){var D=R.newlineIndex(0);D>-1&&R.split(D+1)}var P=R.children.head instanceof u.default?null:R.children.head;q.moveChildren(R,P),q.remove()}this.optimize()}},{key:"enable",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:!0;this.domNode.setAttribute("contenteditable",E)}},{key:"formatAt",value:function(E,C,x,L){this.whitelist!=null&&!this.whitelist[x]||(c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"formatAt",this).call(this,E,C,x,L),this.optimize())}},{key:"insertAt",value:function(E,C,x){if(!(x!=null&&this.whitelist!=null&&!this.whitelist[C])){if(E>=this.length())if(x==null||f.default.query(C,f.default.Scope.BLOCK)==null){var L=f.default.create(this.statics.defaultChild);this.appendChild(L),x==null&&C.endsWith(` +`)&&(C=C.slice(0,-1)),L.insertAt(0,C,x)}else{var q=f.default.create(C,x);this.appendChild(q)}else c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"insertAt",this).call(this,E,C,x);this.optimize()}}},{key:"insertBefore",value:function(E,C){if(E.statics.scope===f.default.Scope.INLINE_BLOT){var x=f.default.create(this.statics.defaultChild);x.appendChild(E),E=x}c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"insertBefore",this).call(this,E,C)}},{key:"leaf",value:function(E){return this.path(E).pop()||[null,-1]}},{key:"line",value:function(E){return E===this.length()?this.line(E-1):this.descendant(M,E)}},{key:"lines",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:Number.MAX_VALUE,x=function L(q,N,F){var I=[],R=F;return q.children.forEachAt(N,F,function(B,D,P){M(B)?I.push(B):B instanceof f.default.Container&&(I=I.concat(L(B,D,R))),R-=P}),I};return x(this,E,C)}},{key:"optimize",value:function(){var E=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],C=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};this.batch!==!0&&(c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"optimize",this).call(this,E,C),E.length>0&&this.emitter.emit(o.default.events.SCROLL_OPTIMIZE,E,C))}},{key:"path",value:function(E){return c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"path",this).call(this,E).slice(1)}},{key:"update",value:function(E){if(this.batch!==!0){var C=o.default.sources.USER;typeof E=="string"&&(C=E),Array.isArray(E)||(E=this.observer.takeRecords()),E.length>0&&this.emitter.emit(o.default.events.SCROLL_BEFORE_UPDATE,C,E),c(A.prototype.__proto__||Object.getPrototypeOf(A.prototype),"update",this).call(this,E.concat([])),E.length>0&&this.emitter.emit(o.default.events.SCROLL_UPDATE,C,E)}}}]),A}(f.default.Scroll);O.blotName="scroll",O.className="ql-editor",O.tagName="DIV",O.defaultChild="block",O.allowedChildren=[l.default,r.BlockEmbed,w.default],p.default=O},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.SHORTKEY=p.default=void 0;var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(V){return typeof V}:function(V){return V&&typeof Symbol=="function"&&V.constructor===Symbol&&V!==Symbol.prototype?"symbol":typeof V},s=function(){function V(W,H){var z=[],U=!0,Z=!1,ne=void 0;try{for(var re=W[Symbol.iterator](),ue;!(U=(ue=re.next()).done)&&(z.push(ue.value),!(H&&z.length===H));U=!0);}catch(fe){Z=!0,ne=fe}finally{try{!U&&re.return&&re.return()}finally{if(Z)throw ne}}return z}return function(W,H){if(Array.isArray(W))return W;if(Symbol.iterator in Object(W))return V(W,H);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),c=function(){function V(W,H){for(var z=0;z1&&arguments[1]!==void 0?arguments[1]:{},Z=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{},ne=j(z);if(ne==null||ne.key==null)return x.warn("Attempted to add invalid keyboard binding",ne);typeof U=="function"&&(U={handler:U}),typeof Z=="function"&&(Z={handler:Z}),ne=(0,l.default)(ne,U,Z),this.bindings[ne.key]=this.bindings[ne.key]||[],this.bindings[ne.key].push(ne)}},{key:"listen",value:function(){var z=this;this.quill.root.addEventListener("keydown",function(U){if(!U.defaultPrevented){var Z=U.which||U.keyCode,ne=(z.bindings[Z]||[]).filter(function(G){return W.match(U,G)});if(ne.length!==0){var re=z.quill.getSelection();if(!(re==null||!z.quill.hasFocus())){var ue=z.quill.getLine(re.index),fe=s(ue,2),ye=fe[0],_e=fe[1],X=z.quill.getLeaf(re.index),Q=s(X,2),ie=Q[0],ae=Q[1],te=re.length===0?[ie,ae]:z.quill.getLeaf(re.index+re.length),ge=s(te,2),$e=ge[0],be=ge[1],J=ie instanceof w.default.Text?ie.value().slice(0,ae):"",se=$e instanceof w.default.Text?$e.value().slice(be):"",le={collapsed:re.length===0,empty:re.length===0&&ye.length()<=1,format:z.quill.getFormat(re),offset:_e,prefix:J,suffix:se},K=ne.some(function(G){if(G.collapsed!=null&&G.collapsed!==le.collapsed||G.empty!=null&&G.empty!==le.empty||G.offset!=null&&G.offset!==le.offset)return!1;if(Array.isArray(G.format)){if(G.format.every(function(Y){return le.format[Y]==null}))return!1}else if(g(G.format)==="object"&&!Object.keys(G.format).every(function(Y){return G.format[Y]===!0?le.format[Y]!=null:G.format[Y]===!1?le.format[Y]==null:(0,o.default)(G.format[Y],le.format[Y])}))return!1;return G.prefix!=null&&!G.prefix.test(le.prefix)||G.suffix!=null&&!G.suffix.test(le.suffix)?!1:G.handler.call(z,re,le)!==!0});K&&U.preventDefault()}}}})}}]),W}(O.default);q.keys={BACKSPACE:8,TAB:9,ENTER:13,ESCAPE:27,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46},q.DEFAULTS={bindings:{bold:P("bold"),italic:P("italic"),underline:P("underline"),indent:{key:q.keys.TAB,format:["blockquote","indent","list"],handler:function(W,H){if(H.collapsed&&H.offset!==0)return!0;this.quill.format("indent","+1",_.default.sources.USER)}},outdent:{key:q.keys.TAB,shiftKey:!0,format:["blockquote","indent","list"],handler:function(W,H){if(H.collapsed&&H.offset!==0)return!0;this.quill.format("indent","-1",_.default.sources.USER)}},"outdent backspace":{key:q.keys.BACKSPACE,collapsed:!0,shiftKey:null,metaKey:null,ctrlKey:null,altKey:null,format:["indent","list"],offset:0,handler:function(W,H){H.format.indent!=null?this.quill.format("indent","-1",_.default.sources.USER):H.format.list!=null&&this.quill.format("list",!1,_.default.sources.USER)}},"indent code-block":D(!0),"outdent code-block":D(!1),"remove tab":{key:q.keys.TAB,shiftKey:!0,collapsed:!0,prefix:/\t$/,handler:function(W){this.quill.deleteText(W.index-1,1,_.default.sources.USER)}},tab:{key:q.keys.TAB,handler:function(W){this.quill.history.cutoff();var H=new u.default().retain(W.index).delete(W.length).insert(" ");this.quill.updateContents(H,_.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(W.index+1,_.default.sources.SILENT)}},"list empty enter":{key:q.keys.ENTER,collapsed:!0,format:["list"],empty:!0,handler:function(W,H){this.quill.format("list",!1,_.default.sources.USER),H.format.indent&&this.quill.format("indent",!1,_.default.sources.USER)}},"checklist enter":{key:q.keys.ENTER,collapsed:!0,format:{list:"checked"},handler:function(W){var H=this.quill.getLine(W.index),z=s(H,2),U=z[0],Z=z[1],ne=(0,l.default)({},U.formats(),{list:"checked"}),re=new u.default().retain(W.index).insert(` +`,ne).retain(U.length()-Z-1).retain(1,{list:"unchecked"});this.quill.updateContents(re,_.default.sources.USER),this.quill.setSelection(W.index+1,_.default.sources.SILENT),this.quill.scrollIntoView()}},"header enter":{key:q.keys.ENTER,collapsed:!0,format:["header"],suffix:/^$/,handler:function(W,H){var z=this.quill.getLine(W.index),U=s(z,2),Z=U[0],ne=U[1],re=new u.default().retain(W.index).insert(` +`,H.format).retain(Z.length()-ne-1).retain(1,{header:null});this.quill.updateContents(re,_.default.sources.USER),this.quill.setSelection(W.index+1,_.default.sources.SILENT),this.quill.scrollIntoView()}},"list autofill":{key:" ",collapsed:!0,format:{list:!1},prefix:/^\s*?(\d+\.|-|\*|\[ ?\]|\[x\])$/,handler:function(W,H){var z=H.prefix.length,U=this.quill.getLine(W.index),Z=s(U,2),ne=Z[0],re=Z[1];if(re>z)return!0;var ue=void 0;switch(H.prefix.trim()){case"[]":case"[ ]":ue="unchecked";break;case"[x]":ue="checked";break;case"-":case"*":ue="bullet";break;default:ue="ordered"}this.quill.insertText(W.index," ",_.default.sources.USER),this.quill.history.cutoff();var fe=new u.default().retain(W.index-re).delete(z+1).retain(ne.length()-2-re).retain(1,{list:ue});this.quill.updateContents(fe,_.default.sources.USER),this.quill.history.cutoff(),this.quill.setSelection(W.index-z,_.default.sources.SILENT)}},"code exit":{key:q.keys.ENTER,collapsed:!0,format:["code-block"],prefix:/\n\n$/,suffix:/^\s+$/,handler:function(W){var H=this.quill.getLine(W.index),z=s(H,2),U=z[0],Z=z[1],ne=new u.default().retain(W.index+U.length()-Z-2).retain(1,{"code-block":null}).delete(1);this.quill.updateContents(ne,_.default.sources.USER)}},"embed left":N(q.keys.LEFT,!1),"embed left shift":N(q.keys.LEFT,!0),"embed right":N(q.keys.RIGHT,!1),"embed right shift":N(q.keys.RIGHT,!0)}};function N(V,W){var H,z=V===q.keys.LEFT?"prefix":"suffix";return H={key:V,shiftKey:W,altKey:null},A(H,z,/^$/),A(H,"handler",function(Z){var ne=Z.index;V===q.keys.RIGHT&&(ne+=Z.length+1);var re=this.quill.getLeaf(ne),ue=s(re,1),fe=ue[0];return fe instanceof w.default.Embed?(V===q.keys.LEFT?W?this.quill.setSelection(Z.index-1,Z.length+1,_.default.sources.USER):this.quill.setSelection(Z.index-1,_.default.sources.USER):W?this.quill.setSelection(Z.index,Z.length+1,_.default.sources.USER):this.quill.setSelection(Z.index+Z.length+1,_.default.sources.USER),!1):!0}),H}function F(V,W){if(!(V.index===0||this.quill.getLength()<=1)){var H=this.quill.getLine(V.index),z=s(H,1),U=z[0],Z={};if(W.offset===0){var ne=this.quill.getLine(V.index-1),re=s(ne,1),ue=re[0];if(ue!=null&&ue.length()>1){var fe=U.formats(),ye=this.quill.getFormat(V.index-1,1);Z=$.default.attributes.diff(fe,ye)||{}}}var _e=/[\uD800-\uDBFF][\uDC00-\uDFFF]$/.test(W.prefix)?2:1;this.quill.deleteText(V.index-_e,_e,_.default.sources.USER),Object.keys(Z).length>0&&this.quill.formatLine(V.index-_e,_e,Z,_.default.sources.USER),this.quill.focus()}}function I(V,W){var H=/^[\uD800-\uDBFF][\uDC00-\uDFFF]/.test(W.suffix)?2:1;if(!(V.index>=this.quill.getLength()-H)){var z={},U=0,Z=this.quill.getLine(V.index),ne=s(Z,1),re=ne[0];if(W.offset>=re.length()-1){var ue=this.quill.getLine(V.index+1),fe=s(ue,1),ye=fe[0];if(ye){var _e=re.formats(),X=this.quill.getFormat(V.index,1);z=$.default.attributes.diff(_e,X)||{},U=ye.length()}}this.quill.deleteText(V.index,H,_.default.sources.USER),Object.keys(z).length>0&&this.quill.formatLine(V.index+U-1,H,z,_.default.sources.USER)}}function R(V){var W=this.quill.getLines(V),H={};if(W.length>1){var z=W[0].formats(),U=W[W.length-1].formats();H=$.default.attributes.diff(U,z)||{}}this.quill.deleteText(V,_.default.sources.USER),Object.keys(H).length>0&&this.quill.formatLine(V.index,1,H,_.default.sources.USER),this.quill.setSelection(V.index,_.default.sources.SILENT),this.quill.focus()}function B(V,W){var H=this;V.length>0&&this.quill.scroll.deleteAt(V.index,V.length);var z=Object.keys(W.format).reduce(function(U,Z){return w.default.query(Z,w.default.Scope.BLOCK)&&!Array.isArray(W.format[Z])&&(U[Z]=W.format[Z]),U},{});this.quill.insertText(V.index,` +`,z,_.default.sources.USER),this.quill.setSelection(V.index+1,_.default.sources.SILENT),this.quill.focus(),Object.keys(W.format).forEach(function(U){z[U]==null&&(Array.isArray(W.format[U])||U!=="link"&&H.quill.format(U,W.format[U],_.default.sources.USER))})}function D(V){return{key:q.keys.TAB,shiftKey:!V,format:{"code-block":!0},handler:function(H){var z=w.default.query("code-block"),U=H.index,Z=H.length,ne=this.quill.scroll.descendant(z,U),re=s(ne,2),ue=re[0],fe=re[1];if(ue!=null){var ye=this.quill.getIndex(ue),_e=ue.newlineIndex(fe,!0)+1,X=ue.newlineIndex(ye+fe+Z),Q=ue.domNode.textContent.slice(_e,X).split(` +`);fe=0,Q.forEach(function(ie,ae){V?(ue.insertAt(_e+fe,z.TAB),fe+=z.TAB.length,ae===0?U+=z.TAB.length:Z+=z.TAB.length):ie.startsWith(z.TAB)&&(ue.deleteAt(_e+fe,z.TAB.length),fe-=z.TAB.length,ae===0?U-=z.TAB.length:Z-=z.TAB.length),fe+=ie.length+1}),this.quill.update(_.default.sources.USER),this.quill.setSelection(U,Z,_.default.sources.SILENT)}}}}function P(V){return{key:V[0].toUpperCase(),shortKey:!0,handler:function(H,z){this.quill.format(V,!z.format[V],_.default.sources.USER)}}}function j(V){if(typeof V=="string"||typeof V=="number")return j({key:V});if((typeof V=="undefined"?"undefined":g(V))==="object"&&(V=(0,f.default)(V,!1)),typeof V.key=="string")if(q.keys[V.key.toUpperCase()]!=null)V.key=q.keys[V.key.toUpperCase()];else if(V.key.length===1)V.key=V.key.toUpperCase().charCodeAt(0);else return null;return V.shortKey&&(V[L]=V.shortKey,delete V.shortKey),V}p.default=q,p.SHORTKEY=L},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function $(v,w){var y=[],_=!0,b=!1,S=void 0;try{for(var M=v[Symbol.iterator](),O;!(_=(O=M.next()).done)&&(y.push(O.value),!(w&&y.length===w));_=!0);}catch(k){b=!0,S=k}finally{try{!_&&M.return&&M.return()}finally{if(b)throw S}}return y}return function(v,w){if(Array.isArray(v))return v;if(Symbol.iterator in Object(v))return $(v,w);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function $(v,w,y){v===null&&(v=Function.prototype);var _=Object.getOwnPropertyDescriptor(v,w);if(_===void 0){var b=Object.getPrototypeOf(v);return b===null?void 0:$(b,w,y)}else{if("value"in _)return _.value;var S=_.get;return S===void 0?void 0:S.call(y)}},c=function(){function $(v,w){for(var y=0;y-1}p.default=l,p.sanitize=a},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(h){return typeof h}:function(h){return h&&typeof Symbol=="function"&&h.constructor===Symbol&&h!==Symbol.prototype?"symbol":typeof h},s=function(){function h($,v){for(var w=0;w1&&arguments[1]!==void 0?arguments[1]:!1,y=this.container.querySelector(".ql-selected");if(v!==y&&(y!=null&&y.classList.remove("ql-selected"),v!=null&&(v.classList.add("ql-selected"),this.select.selectedIndex=[].indexOf.call(v.parentNode.children,v),v.hasAttribute("data-value")?this.label.setAttribute("data-value",v.getAttribute("data-value")):this.label.removeAttribute("data-value"),v.hasAttribute("data-label")?this.label.setAttribute("data-label",v.getAttribute("data-label")):this.label.removeAttribute("data-label"),w))){if(typeof Event=="function")this.select.dispatchEvent(new Event("change"));else if((typeof Event=="undefined"?"undefined":g(Event))==="object"){var _=document.createEvent("Event");_.initEvent("change",!0,!0),this.select.dispatchEvent(_)}this.close()}}},{key:"update",value:function(){var v=void 0;if(this.select.selectedIndex>-1){var w=this.container.querySelector(".ql-picker-options").children[this.select.selectedIndex];v=this.select.options[this.select.selectedIndex],this.selectItem(w)}else this.selectItem(null);var y=v!=null&&v!==this.select.querySelector("option[selected]");this.label.classList.toggle("ql-active",y)}}]),h}();p.default=u},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(0),s=x(g),c=m(5),i=x(c),f=m(4),n=x(f),o=m(16),r=x(o),l=m(25),a=x(l),u=m(24),h=x(u),$=m(35),v=x($),w=m(6),y=x(w),_=m(22),b=x(_),S=m(7),M=x(S),O=m(55),k=x(O),A=m(42),T=x(A),E=m(23),C=x(E);function x(L){return L&&L.__esModule?L:{default:L}}i.default.register({"blots/block":n.default,"blots/block/embed":f.BlockEmbed,"blots/break":r.default,"blots/container":a.default,"blots/cursor":h.default,"blots/embed":v.default,"blots/inline":y.default,"blots/scroll":b.default,"blots/text":M.default,"modules/clipboard":k.default,"modules/history":T.default,"modules/keyboard":C.default}),s.default.register(n.default,r.default,h.default,y.default,b.default,M.default),p.default=i.default},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(1),s=function(){function c(i){this.domNode=i,this.domNode[g.DATA_KEY]={blot:this}}return Object.defineProperty(c.prototype,"statics",{get:function(){return this.constructor},enumerable:!0,configurable:!0}),c.create=function(i){if(this.tagName==null)throw new g.ParchmentError("Blot definition missing tagName");var f;return Array.isArray(this.tagName)?(typeof i=="string"&&(i=i.toUpperCase(),parseInt(i).toString()===i&&(i=parseInt(i))),typeof i=="number"?f=document.createElement(this.tagName[i-1]):this.tagName.indexOf(i)>-1?f=document.createElement(i):f=document.createElement(this.tagName[0])):f=document.createElement(this.tagName),this.className&&f.classList.add(this.className),f},c.prototype.attach=function(){this.parent!=null&&(this.scroll=this.parent.scroll)},c.prototype.clone=function(){var i=this.domNode.cloneNode(!1);return g.create(i)},c.prototype.detach=function(){this.parent!=null&&this.parent.removeChild(this),delete this.domNode[g.DATA_KEY]},c.prototype.deleteAt=function(i,f){var n=this.isolate(i,f);n.remove()},c.prototype.formatAt=function(i,f,n,o){var r=this.isolate(i,f);if(g.query(n,g.Scope.BLOT)!=null&&o)r.wrap(n,o);else if(g.query(n,g.Scope.ATTRIBUTE)!=null){var l=g.create(this.statics.scope);r.wrap(l),l.format(n,o)}},c.prototype.insertAt=function(i,f,n){var o=n==null?g.create("text",f):g.create(f,n),r=this.split(i);this.parent.insertBefore(o,r)},c.prototype.insertInto=function(i,f){f===void 0&&(f=null),this.parent!=null&&this.parent.children.remove(this);var n=null;i.children.insertBefore(this,f),f!=null&&(n=f.domNode),(this.domNode.parentNode!=i.domNode||this.domNode.nextSibling!=n)&&i.domNode.insertBefore(this.domNode,n),this.parent=i,this.attach()},c.prototype.isolate=function(i,f){var n=this.split(i);return n.split(f),n},c.prototype.length=function(){return 1},c.prototype.offset=function(i){return i===void 0&&(i=this.parent),this.parent==null||this==i?0:this.parent.children.offset(this)+this.parent.offset(i)},c.prototype.optimize=function(i){this.domNode[g.DATA_KEY]!=null&&delete this.domNode[g.DATA_KEY].mutations},c.prototype.remove=function(){this.domNode.parentNode!=null&&this.domNode.parentNode.removeChild(this.domNode),this.detach()},c.prototype.replace=function(i){i.parent!=null&&(i.parent.insertBefore(this,i.next),i.remove())},c.prototype.replaceWith=function(i,f){var n=typeof i=="string"?g.create(i,f):i;return n.replace(this),n},c.prototype.split=function(i,f){return i===0?this:this.next},c.prototype.update=function(i,f){},c.prototype.wrap=function(i,f){var n=typeof i=="string"?g.create(i,f):i;return this.parent!=null&&this.parent.insertBefore(n,this.next),n.appendChild(this),n},c.blotName="abstract",c}();p.default=s},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(12),s=m(32),c=m(33),i=m(1),f=function(){function n(o){this.attributes={},this.domNode=o,this.build()}return n.prototype.attribute=function(o,r){r?o.add(this.domNode,r)&&(o.value(this.domNode)!=null?this.attributes[o.attrName]=o:delete this.attributes[o.attrName]):(o.remove(this.domNode),delete this.attributes[o.attrName])},n.prototype.build=function(){var o=this;this.attributes={};var r=g.default.keys(this.domNode),l=s.default.keys(this.domNode),a=c.default.keys(this.domNode);r.concat(l).concat(a).forEach(function(u){var h=i.query(u,i.Scope.ATTRIBUTE);h instanceof g.default&&(o.attributes[h.attrName]=h)})},n.prototype.copy=function(o){var r=this;Object.keys(this.attributes).forEach(function(l){var a=r.attributes[l].value(r.domNode);o.format(l,a)})},n.prototype.move=function(o){var r=this;this.copy(o),Object.keys(this.attributes).forEach(function(l){r.attributes[l].remove(r.domNode)}),this.attributes={}},n.prototype.values=function(){var o=this;return Object.keys(this.attributes).reduce(function(r,l){return r[l]=o.attributes[l].value(o.domNode),r},{})},n}();p.default=f},function(e,p,m){var g=this&&this.__extends||function(){var f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])};return function(n,o){f(n,o);function r(){this.constructor=n}n.prototype=o===null?Object.create(o):(r.prototype=o.prototype,new r)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(12);function c(f,n){var o=f.getAttribute("class")||"";return o.split(/\s+/).filter(function(r){return r.indexOf(n+"-")===0})}var i=function(f){g(n,f);function n(){return f!==null&&f.apply(this,arguments)||this}return n.keys=function(o){return(o.getAttribute("class")||"").split(/\s+/).map(function(r){return r.split("-").slice(0,-1).join("-")})},n.prototype.add=function(o,r){return this.canAdd(o,r)?(this.remove(o),o.classList.add(this.keyName+"-"+r),!0):!1},n.prototype.remove=function(o){var r=c(o,this.keyName);r.forEach(function(l){o.classList.remove(l)}),o.classList.length===0&&o.removeAttribute("class")},n.prototype.value=function(o){var r=c(o,this.keyName)[0]||"",l=r.slice(this.keyName.length+1);return this.canAdd(o,l)?l:""},n}(s.default);p.default=i},function(e,p,m){var g=this&&this.__extends||function(){var f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])};return function(n,o){f(n,o);function r(){this.constructor=n}n.prototype=o===null?Object.create(o):(r.prototype=o.prototype,new r)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(12);function c(f){var n=f.split("-"),o=n.slice(1).map(function(r){return r[0].toUpperCase()+r.slice(1)}).join("");return n[0]+o}var i=function(f){g(n,f);function n(){return f!==null&&f.apply(this,arguments)||this}return n.keys=function(o){return(o.getAttribute("style")||"").split(";").map(function(r){var l=r.split(":");return l[0].trim()})},n.prototype.add=function(o,r){return this.canAdd(o,r)?(o.style[c(this.keyName)]=r,!0):!1},n.prototype.remove=function(o){o.style[c(this.keyName)]="",o.getAttribute("style")||o.removeAttribute("style")},n.prototype.value=function(o){var r=o.style[c(this.keyName)];return this.canAdd(o,r)?r:""},n}(s.default);p.default=i},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function i(f,n){for(var o=0;oO&&this.stack.undo.length>0){var k=this.stack.undo.pop();M=M.compose(k.undo),b=k.redo.compose(b)}else this.lastRecorded=O;this.stack.undo.push({redo:b,undo:M}),this.stack.undo.length>this.options.maxStack&&this.stack.undo.shift()}}},{key:"redo",value:function(){this.change("redo","undo")}},{key:"transform",value:function(b){this.stack.undo.forEach(function(S){S.undo=b.transform(S.undo,!0),S.redo=b.transform(S.redo,!0)}),this.stack.redo.forEach(function(S){S.undo=b.transform(S.undo,!0),S.redo=b.transform(S.redo,!0)})}},{key:"undo",value:function(){this.change("undo","redo")}}]),y}(o.default);h.DEFAULTS={delay:1e3,maxStack:100,userOnly:!1};function $(w){var y=w.ops[w.ops.length-1];return y==null?!1:y.insert!=null?typeof y.insert=="string"&&y.insert.endsWith(` +`):y.attributes!=null?Object.keys(y.attributes).some(function(_){return c.default.query(_,c.default.Scope.BLOCK)!=null}):!1}function v(w){var y=w.reduce(function(b,S){return b+=S.delete||0,b},0),_=w.length()-y;return $(w)&&(_-=1),_}p.default=h,p.getLastChangeIndex=v},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.BaseTooltip=void 0;var g=function(){function B(D,P){for(var j=0;j0&&arguments[0]!==void 0?arguments[0]:"link",V=arguments.length>1&&arguments[1]!==void 0?arguments[1]:null;this.root.classList.remove("ql-hidden"),this.root.classList.add("ql-editing"),V!=null?this.textbox.value=V:j!==this.root.getAttribute("data-mode")&&(this.textbox.value=""),this.position(this.quill.getBounds(this.quill.selection.savedRange)),this.textbox.select(),this.textbox.setAttribute("placeholder",this.textbox.getAttribute("data-"+j)||""),this.root.setAttribute("data-mode",j)}},{key:"restoreFocus",value:function(){var j=this.quill.scrollingContainer.scrollTop;this.quill.focus(),this.quill.scrollingContainer.scrollTop=j}},{key:"save",value:function(){var j=this.textbox.value;switch(this.root.getAttribute("data-mode")){case"link":{var V=this.quill.root.scrollTop;this.linkRange?(this.quill.formatText(this.linkRange,"link",j,r.default.sources.USER),delete this.linkRange):(this.restoreFocus(),this.quill.format("link",j,r.default.sources.USER)),this.quill.root.scrollTop=V;break}case"video":j=I(j);case"formula":{if(!j)break;var W=this.quill.getSelection(!0);if(W!=null){var H=W.index+W.length;this.quill.insertEmbed(H,this.root.getAttribute("data-mode"),j,r.default.sources.USER),this.root.getAttribute("data-mode")==="formula"&&this.quill.insertText(H+1," ",r.default.sources.USER),this.quill.setSelection(H+2,r.default.sources.USER)}break}}this.textbox.value="",this.hide()}}]),D}(M.default);function I(B){var D=B.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtube\.com\/watch.*v=([a-zA-Z0-9_-]+)/)||B.match(/^(?:(https?):\/\/)?(?:(?:www|m)\.)?youtu\.be\/([a-zA-Z0-9_-]+)/);return D?(D[1]||"https")+"://www.youtube.com/embed/"+D[2]+"?showinfo=0":(D=B.match(/^(?:(https?):\/\/)?(?:www\.)?vimeo\.com\/(\d+)/))?(D[1]||"https")+"://player.vimeo.com/video/"+D[2]+"/":B}function R(B,D){var P=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!1;D.forEach(function(j){var V=document.createElement("option");j===P?V.setAttribute("selected","selected"):V.setAttribute("value",j),B.appendChild(V)})}p.BaseTooltip=F,p.default=N},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function s(){this.head=this.tail=null,this.length=0}return s.prototype.append=function(){for(var c=[],i=0;i1&&this.append.apply(this,c.slice(1))},s.prototype.contains=function(c){for(var i,f=this.iterator();i=f();)if(i===c)return!0;return!1},s.prototype.insertBefore=function(c,i){!c||(c.next=i,i!=null?(c.prev=i.prev,i.prev!=null&&(i.prev.next=c),i.prev=c,i===this.head&&(this.head=c)):this.tail!=null?(this.tail.next=c,c.prev=this.tail,this.tail=c):(c.prev=null,this.head=this.tail=c),this.length+=1)},s.prototype.offset=function(c){for(var i=0,f=this.head;f!=null;){if(f===c)return i;i+=f.length(),f=f.next}return-1},s.prototype.remove=function(c){!this.contains(c)||(c.prev!=null&&(c.prev.next=c.next),c.next!=null&&(c.next.prev=c.prev),c===this.head&&(this.head=c.next),c===this.tail&&(this.tail=c.prev),this.length-=1)},s.prototype.iterator=function(c){return c===void 0&&(c=this.head),function(){var i=c;return c!=null&&(c=c.next),i}},s.prototype.find=function(c,i){i===void 0&&(i=!1);for(var f,n=this.iterator();f=n();){var o=f.length();if(ca?f(l,c-a,Math.min(i,a+h-c)):f(l,0,Math.min(h,c+i-a)),a+=h}},s.prototype.map=function(c){return this.reduce(function(i,f){return i.push(c(f)),i},[])},s.prototype.reduce=function(c,i){for(var f,n=this.iterator();f=n();)i=c(i,f);return i},s}();p.default=g},function(e,p,m){var g=this&&this.__extends||function(){var o=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(r,l){r.__proto__=l}||function(r,l){for(var a in l)l.hasOwnProperty(a)&&(r[a]=l[a])};return function(r,l){o(r,l);function a(){this.constructor=r}r.prototype=l===null?Object.create(l):(a.prototype=l.prototype,new a)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(17),c=m(1),i={attributes:!0,characterData:!0,characterDataOldValue:!0,childList:!0,subtree:!0},f=100,n=function(o){g(r,o);function r(l){var a=o.call(this,l)||this;return a.scroll=a,a.observer=new MutationObserver(function(u){a.update(u)}),a.observer.observe(a.domNode,i),a.attach(),a}return r.prototype.detach=function(){o.prototype.detach.call(this),this.observer.disconnect()},r.prototype.deleteAt=function(l,a){this.update(),l===0&&a===this.length()?this.children.forEach(function(u){u.remove()}):o.prototype.deleteAt.call(this,l,a)},r.prototype.formatAt=function(l,a,u,h){this.update(),o.prototype.formatAt.call(this,l,a,u,h)},r.prototype.insertAt=function(l,a,u){this.update(),o.prototype.insertAt.call(this,l,a,u)},r.prototype.optimize=function(l,a){var u=this;l===void 0&&(l=[]),a===void 0&&(a={}),o.prototype.optimize.call(this,a);for(var h=[].slice.call(this.observer.takeRecords());h.length>0;)l.push(h.pop());for(var $=function(_,b){b===void 0&&(b=!0),!(_==null||_===u)&&_.domNode.parentNode!=null&&(_.domNode[c.DATA_KEY].mutations==null&&(_.domNode[c.DATA_KEY].mutations=[]),b&&$(_.parent))},v=function(_){_.domNode[c.DATA_KEY]==null||_.domNode[c.DATA_KEY].mutations==null||(_ instanceof s.default&&_.children.forEach(v),_.optimize(a))},w=l,y=0;w.length>0;y+=1){if(y>=f)throw new Error("[Parchment] Maximum optimize iterations reached");for(w.forEach(function(_){var b=c.find(_.target,!0);b!=null&&(b.domNode===_.target&&(_.type==="childList"?($(c.find(_.previousSibling,!1)),[].forEach.call(_.addedNodes,function(S){var M=c.find(S,!1);$(M,!1),M instanceof s.default&&M.children.forEach(function(O){$(O,!1)})})):_.type==="attributes"&&$(b.prev)),$(b))}),this.children.forEach(v),w=[].slice.call(this.observer.takeRecords()),h=w.slice();h.length>0;)l.push(h.pop())}},r.prototype.update=function(l,a){var u=this;a===void 0&&(a={}),l=l||this.observer.takeRecords(),l.map(function(h){var $=c.find(h.target,!0);return $==null?null:$.domNode[c.DATA_KEY].mutations==null?($.domNode[c.DATA_KEY].mutations=[h],$):($.domNode[c.DATA_KEY].mutations.push(h),null)}).forEach(function(h){h==null||h===u||h.domNode[c.DATA_KEY]==null||h.update(h.domNode[c.DATA_KEY].mutations||[],a)}),this.domNode[c.DATA_KEY].mutations!=null&&o.prototype.update.call(this,this.domNode[c.DATA_KEY].mutations,a),this.optimize(l,a)},r.blotName="scroll",r.defaultChild="block",r.scope=c.Scope.BLOCK_BLOT,r.tagName="DIV",r}(s.default);p.default=n},function(e,p,m){var g=this&&this.__extends||function(){var n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(o,r){o.__proto__=r}||function(o,r){for(var l in r)r.hasOwnProperty(l)&&(o[l]=r[l])};return function(o,r){n(o,r);function l(){this.constructor=o}o.prototype=r===null?Object.create(r):(l.prototype=r.prototype,new l)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(18),c=m(1);function i(n,o){if(Object.keys(n).length!==Object.keys(o).length)return!1;for(var r in n)if(n[r]!==o[r])return!1;return!0}var f=function(n){g(o,n);function o(){return n!==null&&n.apply(this,arguments)||this}return o.formats=function(r){if(r.tagName!==o.tagName)return n.formats.call(this,r)},o.prototype.format=function(r,l){var a=this;r===this.statics.blotName&&!l?(this.children.forEach(function(u){u instanceof s.default||(u=u.wrap(o.blotName,!0)),a.attributes.copy(u)}),this.unwrap()):n.prototype.format.call(this,r,l)},o.prototype.formatAt=function(r,l,a,u){if(this.formats()[a]!=null||c.query(a,c.Scope.ATTRIBUTE)){var h=this.isolate(r,l);h.format(a,u)}else n.prototype.formatAt.call(this,r,l,a,u)},o.prototype.optimize=function(r){n.prototype.optimize.call(this,r);var l=this.formats();if(Object.keys(l).length===0)return this.unwrap();var a=this.next;a instanceof o&&a.prev===this&&i(l,a.formats())&&(a.moveChildren(this),a.remove())},o.blotName="inline",o.scope=c.Scope.INLINE_BLOT,o.tagName="SPAN",o}(s.default);p.default=f},function(e,p,m){var g=this&&this.__extends||function(){var f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])};return function(n,o){f(n,o);function r(){this.constructor=n}n.prototype=o===null?Object.create(o):(r.prototype=o.prototype,new r)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(18),c=m(1),i=function(f){g(n,f);function n(){return f!==null&&f.apply(this,arguments)||this}return n.formats=function(o){var r=c.query(n.blotName).tagName;if(o.tagName!==r)return f.formats.call(this,o)},n.prototype.format=function(o,r){c.query(o,c.Scope.BLOCK)!=null&&(o===this.statics.blotName&&!r?this.replaceWith(n.blotName):f.prototype.format.call(this,o,r))},n.prototype.formatAt=function(o,r,l,a){c.query(l,c.Scope.BLOCK)!=null?this.format(l,a):f.prototype.formatAt.call(this,o,r,l,a)},n.prototype.insertAt=function(o,r,l){if(l==null||c.query(r,c.Scope.INLINE)!=null)f.prototype.insertAt.call(this,o,r,l);else{var a=this.split(o),u=c.create(r,l);a.parent.insertBefore(u,a)}},n.prototype.update=function(o,r){navigator.userAgent.match(/Trident/)?this.build():f.prototype.update.call(this,o,r)},n.blotName="block",n.scope=c.Scope.BLOCK_BLOT,n.tagName="P",n}(s.default);p.default=i},function(e,p,m){var g=this&&this.__extends||function(){var i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(f,n){f.__proto__=n}||function(f,n){for(var o in n)n.hasOwnProperty(o)&&(f[o]=n[o])};return function(f,n){i(f,n);function o(){this.constructor=f}f.prototype=n===null?Object.create(n):(o.prototype=n.prototype,new o)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(19),c=function(i){g(f,i);function f(){return i!==null&&i.apply(this,arguments)||this}return f.formats=function(n){},f.prototype.format=function(n,o){i.prototype.formatAt.call(this,0,this.length(),n,o)},f.prototype.formatAt=function(n,o,r,l){n===0&&o===this.length()?this.format(r,l):i.prototype.formatAt.call(this,n,o,r,l)},f.prototype.formats=function(){return this.statics.formats(this.domNode)},f}(s.default);p.default=c},function(e,p,m){var g=this&&this.__extends||function(){var f=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(n,o){n.__proto__=o}||function(n,o){for(var r in o)o.hasOwnProperty(r)&&(n[r]=o[r])};return function(n,o){f(n,o);function r(){this.constructor=n}n.prototype=o===null?Object.create(o):(r.prototype=o.prototype,new r)}}();Object.defineProperty(p,"__esModule",{value:!0});var s=m(19),c=m(1),i=function(f){g(n,f);function n(o){var r=f.call(this,o)||this;return r.text=r.statics.value(r.domNode),r}return n.create=function(o){return document.createTextNode(o)},n.value=function(o){var r=o.data;return r.normalize&&(r=r.normalize()),r},n.prototype.deleteAt=function(o,r){this.domNode.data=this.text=this.text.slice(0,o)+this.text.slice(o+r)},n.prototype.index=function(o,r){return this.domNode===o?r:-1},n.prototype.insertAt=function(o,r,l){l==null?(this.text=this.text.slice(0,o)+r+this.text.slice(o),this.domNode.data=this.text):f.prototype.insertAt.call(this,o,r,l)},n.prototype.length=function(){return this.text.length},n.prototype.optimize=function(o){f.prototype.optimize.call(this,o),this.text=this.statics.value(this.domNode),this.text.length===0?this.remove():this.next instanceof n&&this.next.prev===this&&(this.insertAt(this.length(),this.next.value()),this.next.remove())},n.prototype.position=function(o,r){return[this.domNode,o]},n.prototype.split=function(o,r){if(r===void 0&&(r=!1),!r){if(o===0)return this;if(o===this.length())return this.next}var l=c.create(this.domNode.splitText(o));return this.parent.insertBefore(l,this.next),this.text=this.statics.value(this.domNode),l},n.prototype.update=function(o,r){var l=this;o.some(function(a){return a.type==="characterData"&&a.target===l.domNode})&&(this.text=this.statics.value(this.domNode))},n.prototype.value=function(){return this.text},n.blotName="text",n.scope=c.Scope.INLINE_BLOT,n}(s.default);p.default=i},function(e,p,m){var g=document.createElement("div");if(g.classList.toggle("test-class",!1),g.classList.contains("test-class")){var s=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(c,i){return arguments.length>1&&!this.contains(c)==!i?i:s.call(this,c)}}String.prototype.startsWith||(String.prototype.startsWith=function(c,i){return i=i||0,this.substr(i,c.length)===c}),String.prototype.endsWith||(String.prototype.endsWith=function(c,i){var f=this.toString();(typeof i!="number"||!isFinite(i)||Math.floor(i)!==i||i>f.length)&&(i=f.length),i-=c.length;var n=f.indexOf(c,i);return n!==-1&&n===i}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(i){if(this===null)throw new TypeError("Array.prototype.find called on null or undefined");if(typeof i!="function")throw new TypeError("predicate must be a function");for(var f=Object(this),n=f.length>>>0,o=arguments[1],r,l=0;l_.length?y:_,M=y.length>_.length?_:y,O=S.indexOf(M);if(O!=-1)return b=[[g,S.substring(0,O)],[s,M],[g,S.substring(O+M.length)]],y.length>_.length&&(b[0][0]=b[2][0]=m),b;if(M.length==1)return[[m,y],[g,_]];var k=l(y,_);if(k){var A=k[0],T=k[1],E=k[2],C=k[3],x=k[4],L=c(A,E),q=c(T,C);return L.concat([[s,x]],q)}return f(y,_)}function f(y,_){for(var b=y.length,S=_.length,M=Math.ceil((b+S)/2),O=M,k=2*M,A=new Array(k),T=new Array(k),E=0;Eb)q+=2;else if(P>S)L+=2;else if(x){var j=O+C-R;if(j>=0&&j=V)return n(y,_,D,P)}}}for(var W=-I+N;W<=I-F;W+=2){var j=O+W,V;W==-I||W!=I&&T[j-1]b)F+=2;else if(H>S)N+=2;else if(!x){var B=O+C-W;if(B>=0&&B=V)return n(y,_,D,P)}}}}return[[m,y],[g,_]]}function n(y,_,b,S){var M=y.substring(0,b),O=_.substring(0,S),k=y.substring(b),A=_.substring(S),T=c(M,O),E=c(k,A);return T.concat(E)}function o(y,_){if(!y||!_||y.charAt(0)!=_.charAt(0))return 0;for(var b=0,S=Math.min(y.length,_.length),M=S,O=0;b_.length?y:_,S=y.length>_.length?_:y;if(b.length<4||S.length*2=q.length?[D,P,j,V,B]:null}var O=M(b,S,Math.ceil(b.length/4)),k=M(b,S,Math.ceil(b.length/2)),A;if(!O&&!k)return null;k?O?A=O[4].length>k[4].length?O:k:A=k:A=O;var T,E,C,x;y.length>_.length?(T=A[0],E=A[1],C=A[2],x=A[3]):(C=A[0],x=A[1],T=A[2],E=A[3]);var L=A[4];return[T,E,C,x,L]}function a(y){y.push([s,""]);for(var _=0,b=0,S=0,M="",O="",k;_1?(b!==0&&S!==0&&(k=o(O,M),k!==0&&(_-b-S>0&&y[_-b-S-1][0]==s?y[_-b-S-1][1]+=O.substring(0,k):(y.splice(0,0,[s,O.substring(0,k)]),_++),O=O.substring(k),M=M.substring(k)),k=r(O,M),k!==0&&(y[_][1]=O.substring(O.length-k)+y[_][1],O=O.substring(0,O.length-k),M=M.substring(0,M.length-k))),b===0?y.splice(_-S,b+S,[g,O]):S===0?y.splice(_-b,b+S,[m,M]):y.splice(_-b-S,b+S,[m,M],[g,O]),_=_-b-S+(b?1:0)+(S?1:0)+1):_!==0&&y[_-1][0]==s?(y[_-1][1]+=y[_][1],y.splice(_,1)):_++,S=0,b=0,M="",O="";break}y[y.length-1][1]===""&&y.pop();var A=!1;for(_=1;_0&&S.splice(M+2,0,[k[0],A]),w(S,M,3)}else return y}function v(y){for(var _=!1,b=function(k){return k.charCodeAt(0)>=56320&&k.charCodeAt(0)<=57343},S=function(k){return k.charCodeAt(k.length-1)>=55296&&k.charCodeAt(k.length-1)<=56319},M=2;M0&&O.push(y[M]);return O}function w(y,_,b){for(var S=_+b-1;S>=0&&S>=_-1;S--)if(S+1\r?\n +\<"),this.convert();var te=this.quill.getFormat(this.quill.selection.savedRange.index);if(te[S.default.blotName]){var ge=this.container.innerText;return this.container.innerHTML="",new o.default().insert(ge,E({},S.default.blotName,te[S.default.blotName]))}var $e=this.prepareMatching(),be=s($e,2),J=be[0],se=be[1],le=W(this.container,J,se);return j(le,` +`)&&le.ops[le.ops.length-1].attributes==null&&(le=le.compose(new o.default().retain(le.length()-1).delete(1))),q.log("convert",this.container.innerHTML,le),this.container.innerHTML="",le}},{key:"dangerouslyPasteHTML",value:function(ae,te){var ge=arguments.length>2&&arguments[2]!==void 0?arguments[2]:u.default.sources.API;if(typeof ae=="string")this.quill.setContents(this.convert(ae),te),this.quill.setSelection(0,u.default.sources.SILENT);else{var $e=this.convert(te);this.quill.updateContents(new o.default().retain(ae).concat($e),ge),this.quill.setSelection(ae+$e.length(),u.default.sources.SILENT)}}},{key:"onPaste",value:function(ae){var te=this;if(!(ae.defaultPrevented||!this.quill.isEnabled())){var ge=this.quill.getSelection(),$e=new o.default().retain(ge.index),be=this.quill.scrollingContainer.scrollTop;this.container.focus(),this.quill.selection.update(u.default.sources.SILENT),setTimeout(function(){$e=$e.concat(te.convert()).delete(ge.length),te.quill.updateContents($e,u.default.sources.USER),te.quill.setSelection($e.length()-ge.length,u.default.sources.SILENT),te.quill.scrollingContainer.scrollTop=be,te.quill.focus()},1)}}},{key:"prepareMatching",value:function(){var ae=this,te=[],ge=[];return this.matchers.forEach(function($e){var be=s($e,2),J=be[0],se=be[1];switch(J){case Node.TEXT_NODE:ge.push(se);break;case Node.ELEMENT_NODE:te.push(se);break;default:[].forEach.call(ae.container.querySelectorAll(J),function(le){le[N]=le[N]||[],le[N].push(se)});break}}),[te,ge]}}]),Q}(w.default);B.DEFAULTS={matchers:[],matchVisual:!0};function D(X,Q,ie){return(typeof Q=="undefined"?"undefined":g(Q))==="object"?Object.keys(Q).reduce(function(ae,te){return D(ae,te,Q[te])},X):X.reduce(function(ae,te){return te.attributes&&te.attributes[Q]?ae.push(te):ae.insert(te.insert,(0,f.default)({},E({},Q,ie),te.attributes))},new o.default)}function P(X){if(X.nodeType!==Node.ELEMENT_NODE)return{};var Q="__ql-computed-style";return X[Q]||(X[Q]=window.getComputedStyle(X))}function j(X,Q){for(var ie="",ae=X.ops.length-1;ae>=0&&ie.length-1}function W(X,Q,ie){return X.nodeType===X.TEXT_NODE?ie.reduce(function(ae,te){return te(X,ae)},new o.default):X.nodeType===X.ELEMENT_NODE?[].reduce.call(X.childNodes||[],function(ae,te){var ge=W(te,Q,ie);return te.nodeType===X.ELEMENT_NODE&&(ge=Q.reduce(function($e,be){return be(te,$e)},ge),ge=(te[N]||[]).reduce(function($e,be){return be(te,$e)},ge)),ae.concat(ge)},new o.default):new o.default}function H(X,Q,ie){return D(ie,X,!0)}function z(X,Q){var ie=l.default.Attributor.Attribute.keys(X),ae=l.default.Attributor.Class.keys(X),te=l.default.Attributor.Style.keys(X),ge={};return ie.concat(ae).concat(te).forEach(function($e){var be=l.default.query($e,l.default.Scope.ATTRIBUTE);be!=null&&(ge[be.attrName]=be.value(X),ge[be.attrName])||(be=I[$e],be!=null&&(be.attrName===$e||be.keyName===$e)&&(ge[be.attrName]=be.value(X)||void 0),be=R[$e],be!=null&&(be.attrName===$e||be.keyName===$e)&&(be=R[$e],ge[be.attrName]=be.value(X)||void 0))}),Object.keys(ge).length>0&&(Q=D(Q,ge)),Q}function U(X,Q){var ie=l.default.query(X);if(ie==null)return Q;if(ie.prototype instanceof l.default.Embed){var ae={},te=ie.value(X);te!=null&&(ae[ie.blotName]=te,Q=new o.default().insert(ae,ie.formats(X)))}else typeof ie.formats=="function"&&(Q=D(Q,ie.blotName,ie.formats(X)));return Q}function Z(X,Q){return j(Q,` +`)||Q.insert(` +`),Q}function ne(){return new o.default}function re(X,Q){var ie=l.default.query(X);if(ie==null||ie.blotName!=="list-item"||!j(Q,` +`))return Q;for(var ae=-1,te=X.parentNode;!te.classList.contains("ql-clipboard");)(l.default.query(te)||{}).blotName==="list"&&(ae+=1),te=te.parentNode;return ae<=0?Q:Q.compose(new o.default().retain(Q.length()-1).retain(1,{indent:ae}))}function ue(X,Q){return j(Q,` +`)||(V(X)||Q.length()>0&&X.nextSibling&&V(X.nextSibling))&&Q.insert(` +`),Q}function fe(X,Q){if(V(X)&&X.nextElementSibling!=null&&!j(Q,` + +`)){var ie=X.offsetHeight+parseFloat(P(X).marginTop)+parseFloat(P(X).marginBottom);X.nextElementSibling.offsetTop>X.offsetTop+ie*1.5&&Q.insert(` +`)}return Q}function ye(X,Q){var ie={},ae=X.style||{};return ae.fontStyle&&P(X).fontStyle==="italic"&&(ie.italic=!0),ae.fontWeight&&(P(X).fontWeight.startsWith("bold")||parseInt(P(X).fontWeight)>=700)&&(ie.bold=!0),Object.keys(ie).length>0&&(Q=D(Q,ie)),parseFloat(ae.textIndent||0)>0&&(Q=new o.default().insert(" ").concat(Q)),Q}function _e(X,Q){var ie=X.data;if(X.parentNode.tagName==="O:P")return Q.insert(ie.trim());if(ie.trim().length===0&&X.parentNode.classList.contains("ql-clipboard"))return Q;if(!P(X.parentNode).whiteSpace.startsWith("pre")){var ae=function(ge,$e){return $e=$e.replace(/[^\u00a0]/g,""),$e.length<1&&ge?" ":$e};ie=ie.replace(/\r\n/g," ").replace(/\n/g," "),ie=ie.replace(/\s\s+/g,ae.bind(ae,!0)),(X.previousSibling==null&&V(X.parentNode)||X.previousSibling!=null&&V(X.previousSibling))&&(ie=ie.replace(/^\s+/,ae.bind(ae,!1))),(X.nextSibling==null&&V(X.parentNode)||X.nextSibling!=null&&V(X.nextSibling))&&(ie=ie.replace(/\s+$/,ae.bind(ae,!1)))}return Q.insert(ie)}p.default=B,p.matchAttributor=z,p.matchBlot=U,p.matchNewline=ue,p.matchSpacing=fe,p.matchText=_e},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function a(u,h){for(var $=0;$ '},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function a(u,h){for(var $=0;$l.right&&(u=l.right-a.right,this.root.style.left=o+u+"px"),a.leftl.bottom){var h=a.bottom-a.top,$=n.bottom-n.top+h;this.root.style.top=r-$+"px",this.root.classList.add("ql-flip")}return u}},{key:"show",value:function(){this.root.classList.remove("ql-editing"),this.root.classList.remove("ql-hidden")}}]),i}();p.default=c},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function k(A,T){var E=[],C=!0,x=!1,L=void 0;try{for(var q=A[Symbol.iterator](),N;!(C=(N=q.next()).done)&&(E.push(N.value),!(T&&E.length===T));C=!0);}catch(F){x=!0,L=F}finally{try{!C&&q.return&&q.return()}finally{if(x)throw L}}return E}return function(A,T){if(Array.isArray(A))return A;if(Symbol.iterator in Object(A))return k(A,T);throw new TypeError("Invalid attempt to destructure non-iterable instance")}}(),s=function k(A,T,E){A===null&&(A=Function.prototype);var C=Object.getOwnPropertyDescriptor(A,T);if(C===void 0){var x=Object.getPrototypeOf(A);return x===null?void 0:k(x,T,E)}else{if("value"in C)return C.value;var L=C.get;return L===void 0?void 0:L.call(E)}},c=function(){function k(A,T){for(var E=0;E','','',''].join(""),p.default=M},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(29),s=te(g),c=m(36),i=m(38),f=m(64),n=m(65),o=te(n),r=m(66),l=te(r),a=m(67),u=te(a),h=m(37),$=m(26),v=m(39),w=m(40),y=m(56),_=te(y),b=m(68),S=te(b),M=m(27),O=te(M),k=m(69),A=te(k),T=m(70),E=te(T),C=m(71),x=te(C),L=m(72),q=te(L),N=m(73),F=te(N),I=m(13),R=te(I),B=m(74),D=te(B),P=m(75),j=te(P),V=m(57),W=te(V),H=m(41),z=te(H),U=m(28),Z=te(U),ne=m(59),re=te(ne),ue=m(60),fe=te(ue),ye=m(61),_e=te(ye),X=m(108),Q=te(X),ie=m(62),ae=te(ie);function te(ge){return ge&&ge.__esModule?ge:{default:ge}}s.default.register({"attributors/attribute/direction":i.DirectionAttribute,"attributors/class/align":c.AlignClass,"attributors/class/background":h.BackgroundClass,"attributors/class/color":$.ColorClass,"attributors/class/direction":i.DirectionClass,"attributors/class/font":v.FontClass,"attributors/class/size":w.SizeClass,"attributors/style/align":c.AlignStyle,"attributors/style/background":h.BackgroundStyle,"attributors/style/color":$.ColorStyle,"attributors/style/direction":i.DirectionStyle,"attributors/style/font":v.FontStyle,"attributors/style/size":w.SizeStyle},!0),s.default.register({"formats/align":c.AlignClass,"formats/direction":i.DirectionClass,"formats/indent":f.IndentClass,"formats/background":h.BackgroundStyle,"formats/color":$.ColorStyle,"formats/font":v.FontClass,"formats/size":w.SizeClass,"formats/blockquote":o.default,"formats/code-block":R.default,"formats/header":l.default,"formats/list":u.default,"formats/bold":_.default,"formats/code":I.Code,"formats/italic":S.default,"formats/link":O.default,"formats/script":A.default,"formats/strike":E.default,"formats/underline":x.default,"formats/image":q.default,"formats/video":F.default,"formats/list/item":a.ListItem,"modules/formula":D.default,"modules/syntax":j.default,"modules/toolbar":W.default,"themes/bubble":Q.default,"themes/snow":ae.default,"ui/icons":z.default,"ui/picker":Z.default,"ui/icon-picker":fe.default,"ui/color-picker":re.default,"ui/tooltip":_e.default},!0),p.default=s.default},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.IndentClass=void 0;var g=function(){function u(h,$){for(var v=0;v<$.length;v++){var w=$[v];w.enumerable=w.enumerable||!1,w.configurable=!0,"value"in w&&(w.writable=!0),Object.defineProperty(h,w.key,w)}}return function(h,$,v){return $&&u(h.prototype,$),v&&u(h,v),h}}(),s=function u(h,$,v){h===null&&(h=Function.prototype);var w=Object.getOwnPropertyDescriptor(h,$);if(w===void 0){var y=Object.getPrototypeOf(h);return y===null?void 0:u(y,$,v)}else{if("value"in w)return w.value;var _=w.get;return _===void 0?void 0:_.call(v)}},c=m(0),i=f(c);function f(u){return u&&u.__esModule?u:{default:u}}function n(u,h){if(!(u instanceof h))throw new TypeError("Cannot call a class as a function")}function o(u,h){if(!u)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return h&&(typeof h=="object"||typeof h=="function")?h:u}function r(u,h){if(typeof h!="function"&&h!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof h);u.prototype=Object.create(h&&h.prototype,{constructor:{value:u,enumerable:!1,writable:!0,configurable:!0}}),h&&(Object.setPrototypeOf?Object.setPrototypeOf(u,h):u.__proto__=h)}var l=function(u){r(h,u);function h(){return n(this,h),o(this,(h.__proto__||Object.getPrototypeOf(h)).apply(this,arguments))}return g(h,[{key:"add",value:function(v,w){if(w==="+1"||w==="-1"){var y=this.value(v)||0;w=w==="+1"?y+1:y-1}return w===0?(this.remove(v),!0):s(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"add",this).call(this,v,w)}},{key:"canAdd",value:function(v,w){return s(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"canAdd",this).call(this,v,w)||s(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"canAdd",this).call(this,v,parseInt(w))}},{key:"value",value:function(v){return parseInt(s(h.prototype.__proto__||Object.getPrototypeOf(h.prototype),"value",this).call(this,v))||void 0}}]),h}(i.default.Attributor.Class),a=new l("indent","ql-indent",{scope:i.default.Scope.BLOCK,whitelist:[1,2,3,4,5,6,7,8]});p.IndentClass=a},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(4),s=c(g);function c(r){return r&&r.__esModule?r:{default:r}}function i(r,l){if(!(r instanceof l))throw new TypeError("Cannot call a class as a function")}function f(r,l){if(!r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l&&(typeof l=="object"||typeof l=="function")?l:r}function n(r,l){if(typeof l!="function"&&l!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof l);r.prototype=Object.create(l&&l.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),l&&(Object.setPrototypeOf?Object.setPrototypeOf(r,l):r.__proto__=l)}var o=function(r){n(l,r);function l(){return i(this,l),f(this,(l.__proto__||Object.getPrototypeOf(l)).apply(this,arguments))}return l}(s.default);o.blotName="blockquote",o.tagName="blockquote",p.default=o},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function l(a,u){for(var h=0;h0&&this.children.tail.format(S,M)}},{key:"formats",value:function(){return a({},this.statics.blotName,this.statics.formats(this.domNode))}},{key:"insertBefore",value:function(S,M){if(S instanceof v)s(_.prototype.__proto__||Object.getPrototypeOf(_.prototype),"insertBefore",this).call(this,S,M);else{var O=M==null?this.length():M.offset(this),k=this.split(O);k.parent.insertBefore(S,k)}}},{key:"optimize",value:function(S){s(_.prototype.__proto__||Object.getPrototypeOf(_.prototype),"optimize",this).call(this,S);var M=this.next;M!=null&&M.prev===this&&M.statics.blotName===this.statics.blotName&&M.domNode.tagName===this.domNode.tagName&&M.domNode.getAttribute("data-checked")===this.domNode.getAttribute("data-checked")&&(M.moveChildren(this),M.remove())}},{key:"replace",value:function(S){if(S.statics.blotName!==this.statics.blotName){var M=i.default.create(this.statics.defaultChild);S.moveChildren(M),this.appendChild(M)}s(_.prototype.__proto__||Object.getPrototypeOf(_.prototype),"replace",this).call(this,S)}}]),_}(r.default);w.blotName="list",w.scope=i.default.Scope.BLOCK_BLOT,w.tagName=["OL","UL"],w.defaultChild="list-item",w.allowedChildren=[v],p.ListItem=v,p.default=w},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=m(56),s=c(g);function c(r){return r&&r.__esModule?r:{default:r}}function i(r,l){if(!(r instanceof l))throw new TypeError("Cannot call a class as a function")}function f(r,l){if(!r)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return l&&(typeof l=="object"||typeof l=="function")?l:r}function n(r,l){if(typeof l!="function"&&l!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof l);r.prototype=Object.create(l&&l.prototype,{constructor:{value:r,enumerable:!1,writable:!0,configurable:!0}}),l&&(Object.setPrototypeOf?Object.setPrototypeOf(r,l):r.__proto__=l)}var o=function(r){n(l,r);function l(){return i(this,l),f(this,(l.__proto__||Object.getPrototypeOf(l)).apply(this,arguments))}return l}(s.default);o.blotName="italic",o.tagName=["EM","I"],p.default=o},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function a(u,h){for(var $=0;$-1?y?this.domNode.setAttribute(w,y):this.domNode.removeAttribute(w):s($.prototype.__proto__||Object.getPrototypeOf($.prototype),"format",this).call(this,w,y)}}],[{key:"create",value:function(w){var y=s($.__proto__||Object.getPrototypeOf($),"create",this).call(this,w);return typeof w=="string"&&y.setAttribute("src",this.sanitize(w)),y}},{key:"formats",value:function(w){return a.reduce(function(y,_){return w.hasAttribute(_)&&(y[_]=w.getAttribute(_)),y},{})}},{key:"match",value:function(w){return/\.(jpe?g|gif|png)$/.test(w)||/^data:image\/.+;base64/.test(w)}},{key:"sanitize",value:function(w){return(0,f.sanitize)(w,["http","https","data"])?w:"//:0"}},{key:"value",value:function(w){return w.getAttribute("src")}}]),$}(i.default.Embed);u.blotName="image",u.tagName="IMG",p.default=u},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0});var g=function(){function h($,v){for(var w=0;w-1?y?this.domNode.setAttribute(w,y):this.domNode.removeAttribute(w):s($.prototype.__proto__||Object.getPrototypeOf($.prototype),"format",this).call(this,w,y)}}],[{key:"create",value:function(w){var y=s($.__proto__||Object.getPrototypeOf($),"create",this).call(this,w);return y.setAttribute("frameborder","0"),y.setAttribute("allowfullscreen",!0),y.setAttribute("src",this.sanitize(w)),y}},{key:"formats",value:function(w){return a.reduce(function(y,_){return w.hasAttribute(_)&&(y[_]=w.getAttribute(_)),y},{})}},{key:"sanitize",value:function(w){return f.default.sanitize(w)}},{key:"value",value:function(w){return w.getAttribute("src")}}]),$}(c.BlockEmbed);u.blotName="video",u.className="ql-video",u.tagName="IFRAME",p.default=u},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.FormulaBlot=void 0;var g=function(){function w(y,_){for(var b=0;b<_.length;b++){var S=_[b];S.enumerable=S.enumerable||!1,S.configurable=!0,"value"in S&&(S.writable=!0),Object.defineProperty(y,S.key,S)}}return function(y,_,b){return _&&w(y.prototype,_),b&&w(y,b),y}}(),s=function w(y,_,b){y===null&&(y=Function.prototype);var S=Object.getOwnPropertyDescriptor(y,_);if(S===void 0){var M=Object.getPrototypeOf(y);return M===null?void 0:w(M,_,b)}else{if("value"in S)return S.value;var O=S.get;return O===void 0?void 0:O.call(b)}},c=m(35),i=l(c),f=m(5),n=l(f),o=m(9),r=l(o);function l(w){return w&&w.__esModule?w:{default:w}}function a(w,y){if(!(w instanceof y))throw new TypeError("Cannot call a class as a function")}function u(w,y){if(!w)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return y&&(typeof y=="object"||typeof y=="function")?y:w}function h(w,y){if(typeof y!="function"&&y!==null)throw new TypeError("Super expression must either be null or a function, not "+typeof y);w.prototype=Object.create(y&&y.prototype,{constructor:{value:w,enumerable:!1,writable:!0,configurable:!0}}),y&&(Object.setPrototypeOf?Object.setPrototypeOf(w,y):w.__proto__=y)}var $=function(w){h(y,w);function y(){return a(this,y),u(this,(y.__proto__||Object.getPrototypeOf(y)).apply(this,arguments))}return g(y,null,[{key:"create",value:function(b){var S=s(y.__proto__||Object.getPrototypeOf(y),"create",this).call(this,b);return typeof b=="string"&&(window.katex.render(b,S,{throwOnError:!1,errorColor:"#f00"}),S.setAttribute("data-value",b)),S}},{key:"value",value:function(b){return b.getAttribute("data-value")}}]),y}(i.default);$.blotName="formula",$.className="ql-formula",$.tagName="SPAN";var v=function(w){h(y,w),g(y,null,[{key:"register",value:function(){n.default.register($,!0)}}]);function y(){a(this,y);var _=u(this,(y.__proto__||Object.getPrototypeOf(y)).call(this));if(window.katex==null)throw new Error("Formula module requires KaTeX.");return _}return y}(r.default);p.FormulaBlot=$,p.default=v},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.CodeToken=p.CodeBlock=void 0;var g=function(){function b(S,M){for(var O=0;O0||this.cachedText==null)&&(this.domNode.innerHTML=O(k),this.domNode.normalize(),this.attach()),this.cachedText=k)}}]),S}(a.default);w.className="ql-syntax";var y=new i.default.Attributor.Class("token","hljs",{scope:i.default.Scope.INLINE}),_=function(b){v(S,b),g(S,null,[{key:"register",value:function(){n.default.register(y,!0),n.default.register(w,!0)}}]);function S(M,O){h(this,S);var k=$(this,(S.__proto__||Object.getPrototypeOf(S)).call(this,M,O));if(typeof k.options.highlight!="function")throw new Error("Syntax module requires highlight.js. Please include the library on the page before Quill.");var A=null;return k.quill.on(n.default.events.SCROLL_OPTIMIZE,function(){clearTimeout(A),A=setTimeout(function(){k.highlight(),A=null},k.options.interval)}),k.highlight(),k}return g(S,[{key:"highlight",value:function(){var O=this;if(!this.quill.selection.composing){this.quill.update(n.default.sources.USER);var k=this.quill.getSelection();this.quill.scroll.descendants(w).forEach(function(A){A.highlight(O.options.highlight)}),this.quill.update(n.default.sources.SILENT),k!=null&&this.quill.setSelection(k,n.default.sources.SILENT)}}}]),S}(r.default);_.DEFAULTS={highlight:function(){return window.hljs==null?null:function(b){var S=window.hljs.highlightAuto(b);return S.value}}(),interval:1e3},p.CodeBlock=w,p.CodeToken=y,p.default=_},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p){e.exports=' '},function(e,p,m){Object.defineProperty(p,"__esModule",{value:!0}),p.default=p.BubbleTooltip=void 0;var g=function S(M,O,k){M===null&&(M=Function.prototype);var A=Object.getOwnPropertyDescriptor(M,O);if(A===void 0){var T=Object.getPrototypeOf(M);return T===null?void 0:S(T,O,k)}else{if("value"in A)return A.value;var E=A.get;return E===void 0?void 0:E.call(k)}},s=function(){function S(M,O){for(var k=0;k0&&x===n.default.sources.USER){A.show(),A.root.style.left="0px",A.root.style.width="",A.root.style.width=A.root.offsetWidth+"px";var L=A.quill.getLines(E.index,E.length);if(L.length===1)A.position(A.quill.getBounds(E));else{var q=L[L.length-1],N=A.quill.getIndex(q),F=Math.min(q.length()-1,E.index+E.length-N),I=A.quill.getBounds(new l.Range(N,F));A.position(I)}}else document.activeElement!==A.textbox&&A.quill.hasFocus()&&A.hide()}),A}return s(M,[{key:"listen",value:function(){var k=this;g(M.prototype.__proto__||Object.getPrototypeOf(M.prototype),"listen",this).call(this),this.root.querySelector(".ql-close").addEventListener("click",function(){k.root.classList.remove("ql-editing")}),this.quill.on(n.default.events.SCROLL_OPTIMIZE,function(){setTimeout(function(){if(!k.root.classList.contains("ql-hidden")){var A=k.quill.getSelection();A!=null&&k.position(k.quill.getBounds(A))}},1)})}},{key:"cancel",value:function(){this.show()}},{key:"position",value:function(k){var A=g(M.prototype.__proto__||Object.getPrototypeOf(M.prototype),"position",this).call(this,k),T=this.root.querySelector(".ql-tooltip-arrow");if(T.style.marginLeft="",A===0)return A;T.style.marginLeft=-1*A-T.offsetWidth/2+"px"}}]),M}(o.BaseTooltip);b.TEMPLATE=['','
      ','','',"
      "].join(""),p.BubbleTooltip=b,p.default=_},function(e,p,m){e.exports=m(63)}]).default})})(quill);var Quill=getDefaultExportFromCjs(quill.exports),quill_core="",quill_snow="",quill_bubble="";const defaultOptions={theme:"snow",boundary:document.body,modules:{toolbar:[["bold","italic","underline","strike"],["blockquote","code-block"],[{header:1},{header:2}],[{list:"ordered"},{list:"bullet"}],[{script:"sub"},{script:"super"}],[{indent:"-1"},{indent:"+1"}],[{direction:"rtl"}],[{size:["small",!1,"large","huge"]}],[{header:[1,2,3,4,5,6,!1]}],[{color:[]},{background:[]}],[{font:[]}],[{align:[]}],["clean"],["link","image","video"]]},placeholder:"Insert content here ...",readOnly:!1},_sfc_main$2K={name:"quill-editor",props:{content:String,value:String,disabled:{type:Boolean,default:!1},options:{type:Object,required:!1,default:()=>({})}},emits:["ready","change","input","blur","focus","update:value"],setup(t,d){const e={editorOption:{},quill:null};let p="";require$$0$1.watch(()=>t.value,c=>{e.quill&&(c&&c!==p?(p=c,e.quill.pasteHTML(c)):c||e.quill.setText(""))}),require$$0$1.watch(()=>t.content,c=>{e.quill&&(c&&c!==p?(p=c,e.quill.pasteHTML(c)):c||e.quill.setText(""))}),require$$0$1.watch(()=>t.disabled,c=>{e.quill&&e.quill.enable(!c)});const m=require$$0$1.ref(null),g=(c,i)=>{for(const f in i)!c[f]||f!=="modules"?c[f]=i[f]:g(c[f],i[f]);return c},s=()=>{m.value&&(e.editorOption=g(defaultOptions,t.options),e.editorOption.readOnly=!!t.disabled,e.quill=new Quill(m.value,e.editorOption),t.value&&e.quill.pasteHTML(t.value),e.quill.on("selection-change",c=>{c?d.emit("focus",e.quill):d.emit("blur",e.quill)}),e.quill.on("text-change",()=>{t.disabled&&e.quill.enable(!1);let c=m.value.children[0].innerHTML;const i=e.quill,f=e.quill.getText();c==="


      "&&(c=""),p=c,d.emit("update:value",p),d.emit("change",{html:c,text:f,quill:i})}),d.emit("ready",e.quill))};return require$$0$1.onBeforeUnmount(()=>{const c=m.value.previousSibling;c&&c.className.indexOf("ql-toolbar")>-1&&c.parentNode.removeChild(c)}),require$$0$1.onMounted(()=>{s()}),require$$0$1.onUnmounted(()=>{e.quill=null}),{editor:m}}},_hoisted_1$p={ref:"editor"};function _sfc_render$2K(t,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("section",_hoisted_1$p,null,512)}var quillEditor=_export_sfc(_sfc_main$2K,[["render",_sfc_render$2K]]);quillEditor.install=function(t){t.component(quillEditor.name,quillEditor)};var richEditorWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2J={name:"rich-editor-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper,quillEditor},data(){return{oldFieldValue:null,fieldModel:null,rules:[],customToolbar:[],valueChangedFlag:!1}},computed:{editorOption(){return{placeholder:this.field.options.placeholder,modules:{}}}},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{handleRichEditorChangeEvent(){this.valueChangedFlag=!0,this.syncUpdateFormModel(this.fieldModel)},handleRichEditorFocusEvent(){this.oldFieldValue=deepClone(this.fieldModel)},handleRichEditorBlurEvent(){this.valueChangedFlag&&(this.emitFieldDataChange(this.fieldModel,this.oldFieldValue),this.valueChangedFlag=!1)}}};function _sfc_render$2J(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("quill-editor"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",null,[require$$0$1.createVNode(s,{value:m.fieldModel,"onUpdate:value":d[0]||(d[0]=i=>m.fieldModel=i),options:g.editorOption,disabled:e.field.options.disabled,onBlur:g.handleRichEditorBlurEvent,onFocus:g.handleRichEditorFocusEvent,onChange:g.handleRichEditorChangeEvent,style:require$$0$1.normalizeStyle(e.field.options.contentHeight?`height: ${e.field.options.contentHeight};`:"")},null,8,["value","options","disabled","onBlur","onFocus","onChange","style"])])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var richEditorWidget=_export_sfc(_sfc_main$2J,[["render",_sfc_render$2J],["__scopeId","data-v-697b5022"]]),__glob_0_15$1=Object.freeze(Object.defineProperty({__proto__:null,default:richEditorWidget},Symbol.toStringTag,{value:"Module"})),selectWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2I={name:"select-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{allowDefaultFirstOption(){return!!this.field.options.filterable&&!!this.field.options.allowCreate},remoteMethod(){if(!!this.field.options.remote&&!!this.field.options.onRemoteQuery)return this.remoteQuery}},beforeCreate(){},created(){this.initOptionItems(),this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2I(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-option"),c=require$$0$1.resolveComponent("el-select"),i=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(c,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=f=>m.fieldModel=f),class:"full-width-input",disabled:e.field.options.disabled,size:t.widgetSize,clearable:e.field.options.clearable,filterable:e.field.options.filterable,"allow-create":e.field.options.allowCreate,"default-first-option":g.allowDefaultFirstOption,"automatic-dropdown":e.field.options.automaticDropdown,multiple:e.field.options.multiple,"multiple-limit":e.field.options.multipleLimit,placeholder:e.field.options.placeholder||t.i18nt("render.hint.selectPlaceholder"),remote:e.field.options.remote,"remote-method":g.remoteMethod,onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.field.options.optionItems,f=>(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:f.value,label:f.label,value:f.value,disabled:f.disabled},null,8,["label","value","disabled"]))),128))]),_:1},8,["modelValue","disabled","size","clearable","filterable","allow-create","default-first-option","automatic-dropdown","multiple","multiple-limit","placeholder","remote","remote-method","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var selectWidget=_export_sfc(_sfc_main$2I,[["render",_sfc_render$2I],["__scopeId","data-v-3a0f316d"]]),__glob_0_16$1=Object.freeze(Object.defineProperty({__proto__:null,default:selectWidget},Symbol.toStringTag,{value:"Module"})),sliderWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2H={name:"slider-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2H(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-slider"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,"show-stops":e.field.options.showStops,min:e.field.options.min,max:e.field.options.max,step:e.field.options.step,range:e.field.options.range,vertical:e.field.options.vertical,onChange:t.handleChangeEvent},null,8,["modelValue","disabled","show-stops","min","max","step","range","vertical","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var sliderWidget=_export_sfc(_sfc_main$2H,[["render",_sfc_render$2H],["__scopeId","data-v-0de324ac"]]),__glob_0_17$1=Object.freeze(Object.defineProperty({__proto__:null,default:sliderWidget},Symbol.toStringTag,{value:"Module"})),slotWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2G={name:"slot-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}},_hoisted_1$o={key:0,class:"slot-title"};function _sfc_render$2G(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(s,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.designState?"slot-wrapper-design":"slot-wrapper-render"])},[require$$0$1.renderSlot(t.$slots,e.field.options.name,{formModel:t.formModel},void 0,!0),e.designState?(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$o,require$$0$1.toDisplayString(e.field.options.label),1)):require$$0$1.createCommentVNode("",!0)],2)]),_:3},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var slotWidget=_export_sfc(_sfc_main$2G,[["render",_sfc_render$2G],["__scopeId","data-v-95f13fca"]]),__glob_0_18$1=Object.freeze(Object.defineProperty({__proto__:null,default:slotWidget},Symbol.toStringTag,{value:"Module"})),staticTextWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2F={name:"static-text-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{StaticContentWrapper},computed:{},beforeCreate(){},created(){this.registerToRefList(),this.initEventHandler(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2F(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("static-content-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(s,{designer:e.designer,field:e.field,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{ref:"fieldEditor",style:require$$0$1.normalizeStyle(e.field.options.fontSize?`font-size: ${e.field.options.fontSize};`:"")},[require$$0$1.createElementVNode("pre",{style:require$$0$1.normalizeStyle({"white-space":e.field.options.preWrap?"pre-wrap":"pre","text-align":e.field.options.textAlign?e.field.options.textAlign:"left"})},require$$0$1.toDisplayString(e.field.options.textContent),5)],4)]),_:1},8,["designer","field","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var staticTextWidget=_export_sfc(_sfc_main$2F,[["render",_sfc_render$2F],["__scopeId","data-v-9a1dfacc"]]),__glob_0_20$1=Object.freeze(Object.defineProperty({__proto__:null,default:staticTextWidget},Symbol.toStringTag,{value:"Module"})),switchWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2E={name:"switch-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2E(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-switch"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,"active-text":e.field.options.activeText,"inactive-text":e.field.options.inactiveText,"active-color":e.field.options.activeColor,"inactive-color":e.field.options.inactiveColor,width:e.field.options.switchWidth,onChange:t.handleChangeEvent},null,8,["modelValue","disabled","active-text","inactive-text","active-color","inactive-color","width","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var switchWidget=_export_sfc(_sfc_main$2E,[["render",_sfc_render$2E],["__scopeId","data-v-22bb2b91"]]),__glob_0_21$1=Object.freeze(Object.defineProperty({__proto__:null,default:switchWidget},Symbol.toStringTag,{value:"Module"})),textareaWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2D={name:"textarea-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2D(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-input"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{type:"textarea",ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:t.widgetSize,placeholder:e.field.options.placeholder,rows:e.field.options.rows,minlength:e.field.options.minLength,maxlength:e.field.options.maxLength,"show-word-limit":e.field.options.showWordLimit,onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onInput:t.handleInputCustomEvent,onChange:t.handleChangeEvent},null,8,["modelValue","disabled","readonly","size","placeholder","rows","minlength","maxlength","show-word-limit","onFocus","onBlur","onInput","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var textareaWidget=_export_sfc(_sfc_main$2D,[["render",_sfc_render$2D],["__scopeId","data-v-4cec7068"]]),__glob_0_22$1=Object.freeze(Object.defineProperty({__proto__:null,default:textareaWidget},Symbol.toStringTag,{value:"Module"})),timeRangeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2C={name:"time-range-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2C(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-time-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",{class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""])},[require$$0$1.createVNode(s,{ref:"fieldEditor","is-range":"",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"full-width-input":""]),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:t.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":"HH:mm:ss","start-placeholder":e.field.options.startPlaceholder||t.i18nt("render.hint.startTimePlaceholder"),"end-placeholder":e.field.options.endPlaceholder||t.i18nt("render.hint.endTimePlaceholder"),onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["modelValue","class","disabled","readonly","size","clearable","editable","format","start-placeholder","end-placeholder","onFocus","onBlur","onChange"])],2)]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var timeRangeWidget=_export_sfc(_sfc_main$2C,[["render",_sfc_render$2C],["__scopeId","data-v-8d758ba4"]]),__glob_0_23$1=Object.freeze(Object.defineProperty({__proto__:null,default:timeRangeWidget},Symbol.toStringTag,{value:"Module"})),timeWidget_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2B={name:"time-widget",componentName:"FieldWidget",mixins:[emitter,fieldMixin,i18n$1],props:{field:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,designer:Object,designState:{type:Boolean,default:!1},subFormRowIndex:{type:Number,default:-1},subFormColIndex:{type:Number,default:-1},subFormRowId:{type:String,default:""}},components:{FormItemWrapper},data(){return{oldFieldValue:null,fieldModel:null,rules:[]}},computed:{},beforeCreate(){},created(){this.initFieldModel(),this.registerToRefList(),this.initEventHandler(),this.buildFieldRules(),this.handleOnCreated()},mounted(){this.handleOnMounted()},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2B(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-time-picker"),c=require$$0$1.resolveComponent("form-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{designer:e.designer,field:e.field,rules:m.rules,"design-state":e.designState,"parent-widget":e.parentWidget,"parent-list":e.parentList,"index-of-parent-list":e.indexOfParentList,"sub-form-row-index":e.subFormRowIndex,"sub-form-col-index":e.subFormColIndex,"sub-form-row-id":e.subFormRowId},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{ref:"fieldEditor",modelValue:m.fieldModel,"onUpdate:modelValue":d[0]||(d[0]=i=>m.fieldModel=i),class:require$$0$1.normalizeClass([e.field.options.autoFullWidth?"auto-full-width":""]),disabled:e.field.options.disabled,readonly:e.field.options.readonly,size:t.widgetSize,clearable:e.field.options.clearable,editable:e.field.options.editable,format:e.field.options.format,"value-format":"HH:mm:ss",placeholder:e.field.options.placeholder||t.i18nt("render.hint.timePlaceholder"),onFocus:t.handleFocusCustomEvent,onBlur:t.handleBlurCustomEvent,onChange:t.handleChangeEvent},null,8,["modelValue","class","disabled","readonly","size","clearable","editable","format","placeholder","onFocus","onBlur","onChange"])]),_:1},8,["designer","field","rules","design-state","parent-widget","parent-list","index-of-parent-list","sub-form-row-index","sub-form-col-index","sub-form-row-id"])}var timeWidget=_export_sfc(_sfc_main$2B,[["render",_sfc_render$2B],["__scopeId","data-v-2dd889c0"]]),__glob_0_24$1=Object.freeze(Object.defineProperty({__proto__:null,default:timeWidget},Symbol.toStringTag,{value:"Module"}));let comps$1={};const modules$3={"./button-widget.vue":__glob_0_0$2,"./cascader-widget.vue":__glob_0_1$3,"./checkbox-widget.vue":__glob_0_2$3,"./color-widget.vue":__glob_0_3$3,"./date-range-widget.vue":__glob_0_4$3,"./date-widget.vue":__glob_0_5$3,"./divider-widget.vue":__glob_0_6$3,"./file-upload-widget.vue":__glob_0_7$1,"./form-item-wrapper.vue":__glob_0_8$1,"./html-text-widget.vue":__glob_0_9$1,"./input-widget.vue":__glob_0_10$1,"./number-widget.vue":__glob_0_11$1,"./picture-upload-widget.vue":__glob_0_12$1,"./radio-widget.vue":__glob_0_13$1,"./rate-widget.vue":__glob_0_14$1,"./rich-editor-widget.vue":__glob_0_15$1,"./select-widget.vue":__glob_0_16$1,"./slider-widget.vue":__glob_0_17$1,"./slot-widget.vue":__glob_0_18$1,"./static-content-wrapper.vue":__glob_0_19$1,"./static-text-widget.vue":__glob_0_20$1,"./switch-widget.vue":__glob_0_21$1,"./textarea-widget.vue":__glob_0_22$1,"./time-range-widget.vue":__glob_0_23$1,"./time-widget.vue":__glob_0_24$1};for(const t in modules$3){let d=modules$3[t].default.name;comps$1[d]=modules$3[t].default}var gridColItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2A={name:"GridColItem",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin],components:Se({},comps$1),props:{widget:Object,parentWidget:Object,parentList:Array,indexOfParentList:Number,colHeight:{type:String,default:null}},inject:["refList","globalModel","getFormConfig","previewState"],data(){return{layoutProps:{span:this.widget.options.span,md:this.widget.options.md||12,sm:this.widget.options.sm||12,xs:this.widget.options.xs||12,offset:this.widget.options.offset||0,push:this.widget.options.push||0,pull:this.widget.options.pull||0}}},computed:{formConfig(){return this.getFormConfig()},customClass(){return this.widget.options.customClass||""},colHeightStyle(){return this.colHeight?{height:this.colHeight+"px"}:{}}},created(){this.initLayoutProps(),this.initRefList()},methods:{initLayoutProps(){if(this.widget.options.responsive)if(this.previewState){this.layoutProps.md=void 0,this.layoutProps.sm=void 0,this.layoutProps.xs=void 0;let t=this.formConfig.layoutType;t==="H5"?this.layoutProps.span=this.widget.options.xs||12:t==="Pad"?this.layoutProps.span=this.widget.options.sm||12:this.layoutProps.span=this.widget.options.md||12}else this.layoutProps.span=void 0;else this.layoutProps.md=void 0,this.layoutProps.sm=void 0,this.layoutProps.xs=void 0}}},_hoisted_1$n={class:"blank-cell"},_hoisted_2$d={class:"invisible-content"};function _sfc_render$2A(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-col");return require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createBlock(s,require$$0$1.mergeProps({class:["grid-cell",[g.customClass]]},m.layoutProps,{style:g.colHeightStyle,key:e.widget.id}),{default:require$$0$1.withCtx(()=>[!!e.widget.widgetList&&e.widget.widgetList.length>0?(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},require$$0$1.renderList(e.widget.widgetList,(c,i)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[c.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(t.getComponentByContainer(c)),{widget:c,key:i,"parent-list":e.widget.widgetList,"index-of-parent-list":i,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),f=>({name:f,fn:require$$0$1.withCtx(n=>[require$$0$1.renderSlot(t.$slots,f,require$$0$1.mergeProps({ref_for:!0},n),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(c.type+"-widget"),{field:c,designer:null,key:i,"parent-list":e.widget.widgetList,"index-of-parent-list":i,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),f=>({name:f,fn:require$$0$1.withCtx(n=>[require$$0$1.renderSlot(t.$slots,f,require$$0$1.mergeProps({ref_for:!0},n),void 0,!0)])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256)):(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:1},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$n,[require$$0$1.createElementVNode("span",_hoisted_2$d,require$$0$1.toDisplayString(t.i18nt("render.hint.blankCellContent")),1)])]),_:1}))]),_:3},16,["class","style"])),[[require$$0$1.vShow,!e.widget.options.hidden]])}var GridColItem=_export_sfc(_sfc_main$2A,[["render",_sfc_render$2A],["__scopeId","data-v-9332ab84"]]),__glob_0_1$2=Object.freeze(Object.defineProperty({__proto__:null,default:GridColItem},Symbol.toStringTag,{value:"Module"})),containerItemMixin={inject:["getFormConfig","getGlobalDsv"],computed:{customClass(){return this.widget.options.customClass||""},formModel:{cache:!1,get(){return this.globalModel.formModel}}},mounted(){this.callSetHidden()},methods:{unregisterFromRefList(){if(this.refList!==null&&!!this.widget.options.name){let t=this.widget.options.name;delete this.refList[t]}},callSetHidden(){this.widget.options.hidden===!0&&this.setHidden(!0)},setHidden(t){this.widget.options.hidden=t;let d=e=>{let p=e.options.name,m=this.getWidgetRef(p);t&&!!m&&!!m.clearFieldRules&&m.clearFieldRules(),!t&&!!m&&!!m.buildFieldRules&&m.buildFieldRules()};traverseFieldWidgetsOfContainer(this.widget,d)},activeTab(t){t>=0&&t{d.options.active=e===t,e===t&&(this.activeTabName=d.options.name)})},disableTab(t){t>=0&&t=0&&t=0&&t=0&&t{let e=d.options.name+"@row"+this.rowIdData[t],p=this.getWidgetRef(e);p&&p.setDisabled(!0)})},enableSubFormRow(t){this.widget.widgetList.forEach(d=>{let e=d.options.name+"@row"+this.rowIdData[t],p=this.getWidgetRef(e);p&&p.setDisabled(!1)})},disableSubForm(){this.rowIdData.length>0&&this.rowIdData.forEach((t,d)=>{this.disableSubFormRow(d)}),this.actionDisabled=!0},enableSubForm(){this.rowIdData.length>0&&this.rowIdData.forEach((t,d)=>{this.enableSubFormRow(d)}),this.actionDisabled=!1},resetSubForm(){if(this.widget.type==="sub-form"){let t=this.formModel[this.widget.options.name];t&&(t.splice(0,t.length),this.rowIdData.splice(0,this.rowIdData.length)),this.widget.options.showBlankRow&&this.addSubFormRow()}},getSubFormValues(t=!0){if(this.widget.type==="sub-form")return this.formModel[this.widget.options.name];this.$message.error(this.i18nt("render.hint.nonSubFormType"))},addCssClass(t){this.widget.options.customClass?this.widget.options.customClass.push(t):this.widget.options.customClass=[t]},removeCssClass(t){if(!this.widget.options.customClass)return;let d=-1;this.widget.options.customClass.map((e,p)=>{e===t&&(d=p)}),d>-1&&this.widget.options.customClass.splice(d,1)}}};const _sfc_main$2z={name:"vf-grid-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:{ContainerItemWrapper,GridColItem},props:{widget:Object},inject:["refList","sfRefList","globalModel"],created(){this.initRefList()},mounted(){},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2z(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("grid-col-item"),c=require$$0$1.resolveComponent("el-row"),i=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createBlock(c,{key:e.widget.id,gutter:e.widget.options.gutter,class:require$$0$1.normalizeClass(["grid-container",[t.customClass]]),ref:e.widget.id},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.cols,(f,n)=>(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:n,widget:f,"parent-list":e.widget.cols,"index-of-parent-list":n,"parent-widget":e.widget,"col-height":e.widget.options.colHeight},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),o=>({name:o,fn:require$$0$1.withCtx(r=>[require$$0$1.renderSlot(t.$slots,o,require$$0$1.mergeProps({ref_for:!0},r))])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget","col-height"]))),128))]),_:3},8,["gutter","class"])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var gridItem=_export_sfc(_sfc_main$2z,[["render",_sfc_render$2z]]),__glob_0_2$2=Object.freeze(Object.defineProperty({__proto__:null,default:gridItem},Symbol.toStringTag,{value:"Module"})),subFormItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2y={name:"sub-form-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:ke(Se({ContainerItemWrapper},comps$1),{SvgIcon}),props:{widget:Object},inject:["refList","sfRefList","globalModel"],data(){return{rowIdData:[],fieldSchemaData:[],actionDisabled:!1}},created(){this.initRefList(),this.registerSubFormToRefList(),this.initRowIdData(!0),this.initFieldSchemaData(),this.initEventHandler()},mounted(){this.handleSubFormFirstRowAdd()},beforeUnmount(){this.unregisterFromRefList()},methods:{getLabelAlign(t,d){return d.options.labelAlign||t.options.labelAlign},registerSubFormToRefList(){this.widget.type==="sub-form"&&(this.sfRefList[this.widget.options.name]=this)},initRowIdData(t){if(this.widget.type==="sub-form"){this.rowIdData.splice(0,this.rowIdData.length);let d=this.formModel[this.widget.options.name];!!d&&d.length>0&&(d.forEach(()=>{this.rowIdData.push("id"+generateId())}),t&&setTimeout(()=>{this.handleSubFormRowChange(d)},800))}},addToRowIdData(){this.rowIdData.push("id"+generateId())},insertToRowIdData(t){this.rowIdData.splice(t,0,"id"+generateId())},deleteFromRowIdData(t){this.rowIdData.splice(t,1)},getRowIdData(){return this.rowIdData},getWidgetRefOfSubForm(t,d){let e=t+"@row"+this.rowIdData[d];return this.getWidgetRef(e)},initFieldSchemaData(){if(this.widget.type!=="sub-form")return;let t=this.rowIdData.length;if(this.fieldSchemaData.splice(0,this.fieldSchemaData.length),t>0)for(let d=0;d{e.push(this.cloneFieldSchema(p))}),this.fieldSchemaData.push(e)}},addToFieldSchemaData(t){let d=[];this.widget.widgetList.forEach(e=>{d.push(this.cloneFieldSchema(e))}),t===void 0?this.fieldSchemaData.push(d):this.fieldSchemaData.splice(t,0,d)},deleteFromFieldSchemaData(t){this.fieldSchemaData.splice(t,1)},cloneFieldSchema(t){let d=deepClone(t);return d.id=t.type+generateId(),d},initEventHandler(){this.widget.type==="sub-form"&&this.on$("setFormData",t=>{this.initRowIdData(!1),this.initFieldSchemaData();let d=t[this.widget.options.name]||[];setTimeout(()=>{this.handleSubFormRowChange(d)},800)})},handleSubFormFirstRowAdd(){if(this.widget.type==="sub-form"&&!!this.widget.options.showBlankRow&&this.rowIdData.length===1){let t=this.formModel[this.widget.options.name]||[];this.handleSubFormRowAdd(t,this.rowIdData[0]),this.handleSubFormRowChange(t)}},addSubFormRow(){let t={};this.widget.widgetList.forEach(e=>{e.formItemFlag&&(t[e.options.name]=e.options.defaultValue)});let d=this.formModel[this.widget.options.name]||[];d.push(t),this.addToRowIdData(),this.addToFieldSchemaData(),this.handleSubFormRowAdd(d,this.rowIdData[d.length-1]),this.handleSubFormRowChange(d)},insertSubFormRow(t){let d={};this.widget.widgetList.forEach(p=>{p.formItemFlag&&(d[p.options.name]=p.options.defaultValue)});let e=this.formModel[this.widget.options.name]||[];e.splice(t,0,d),this.insertToRowIdData(t),this.addToFieldSchemaData(t),this.handleSubFormRowInsert(e,this.rowIdData[t]),this.handleSubFormRowChange(e)},deleteSubFormRow(t){this.$confirm(this.i18nt("render.hint.deleteSubFormRow")+"?",this.i18nt("render.hint.prompt"),{confirmButtonText:this.i18nt("render.hint.confirm"),cancelButtonText:this.i18nt("render.hint.cancel")}).then(()=>{let d=this.formModel[this.widget.options.name]||[],e=deepClone(d[t]);d.splice(t,1),this.deleteFromRowIdData(t),this.deleteFromFieldSchemaData(t),this.handleSubFormRowDelete(d,e),this.handleSubFormRowChange(d)}).catch(()=>{})},handleSubFormRowChange(t){this.widget.options.onSubFormRowChange&&new Function("subFormData",this.widget.options.onSubFormRowChange).call(this,t)},handleSubFormRowAdd(t,d){this.widget.options.onSubFormRowAdd&&new Function("subFormData","newRowId",this.widget.options.onSubFormRowAdd).call(this,t,d)},handleSubFormRowInsert(t,d){this.widget.options.onSubFormRowInsert&&new Function("subFormData","newRowId",this.widget.options.onSubFormRowInsert).call(this,t,d)},handleSubFormRowDelete(t,d){this.widget.options.onSubFormRowDelete&&new Function("subFormData","deletedDataRow",this.widget.options.onSubFormRowDelete).call(this,t,d)}}},_hoisted_1$m={class:"action-header-column"},_hoisted_2$c={class:"action-label"},_hoisted_3$9={key:0,class:"custom-label"},_hoisted_4$9=["title"],_hoisted_5$7={class:"sub-form-action-column hide-label"},_hoisted_6$7={class:"action-button-column"},_hoisted_7$5={key:0,class:"row-number-span"};function _sfc_render$2y(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("svg-icon"),c=require$$0$1.resolveComponent("el-button"),i=require$$0$1.resolveComponent("el-tooltip"),f=require$$0$1.resolveComponent("el-row"),n=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(n,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"sub-form-container"},[require$$0$1.createVNode(f,{class:"header-row"},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_1$m,[require$$0$1.createElementVNode("span",_hoisted_2$c,require$$0$1.toDisplayString(t.i18nt("render.hint.subFormAction")),1),require$$0$1.createVNode(c,{disabled:m.actionDisabled,round:"",type:"primary",size:"small",class:"action-button",onClick:g.addSubFormRow,title:t.i18nt("render.hint.subFormAddActionHint")},{default:require$$0$1.withCtx(()=>[require$$0$1.createTextVNode(require$$0$1.toDisplayString(t.i18nt("render.hint.subFormAddAction")),1),require$$0$1.createVNode(s,{"icon-class":"el-plus"})]),_:1},8,["disabled","onClick","title"])]),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,o=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:o.id+"thc",class:require$$0$1.normalizeClass(["field-header-column",[g.getLabelAlign(e.widget,o),o.options.required?"is-required":""]]),style:require$$0$1.normalizeStyle({width:o.options.columnWidth})},[o.options.labelIconClass?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_3$9,[o.options.labelIconPosition==="front"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[o.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createVNode(i,{content:o.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":o.options.labelIconClass},null,8,["icon-class"])]),_:2},1032,["content"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(o.options.label),1)],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createVNode(s,{"icon-class":o.options.labelIconClass},null,8,["icon-class"]),require$$0$1.createTextVNode(require$$0$1.toDisplayString(o.options.label),1)],64))],64)):o.options.labelIconPosition==="rear"?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[o.options.labelTooltip?(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:0},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(o.options.label),1),require$$0$1.createVNode(i,{content:o.options.labelTooltip,effect:"light"},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":o.options.labelIconClass},null,8,["icon-class"])]),_:2},1032,["content"])],64)):(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,{key:1},[require$$0$1.createTextVNode(require$$0$1.toDisplayString(o.options.label),1),require$$0$1.createVNode(s,{"icon-class":o.options.labelIconClass},null,8,["icon-class"])],64))],64)):require$$0$1.createCommentVNode("",!0)])):(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",{key:1,title:o.options.labelTooltip},require$$0$1.toDisplayString(o.options.label),9,_hoisted_4$9))],6))),128))]),_:1}),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(m.rowIdData,(o,r)=>(require$$0$1.openBlock(),require$$0$1.createBlock(f,{class:"sub-form-row",key:o},{default:require$$0$1.withCtx(()=>[require$$0$1.createElementVNode("div",_hoisted_5$7,[require$$0$1.createElementVNode("div",_hoisted_6$7,[require$$0$1.createVNode(c,{disabled:m.actionDisabled,circle:"",onClick:l=>g.insertSubFormRow(r),title:t.i18nt("render.hint.insertSubFormRow")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":"el-plus"})]),_:2},1032,["disabled","onClick","title"]),require$$0$1.createVNode(c,{disabled:m.actionDisabled,circle:"",onClick:l=>g.deleteSubFormRow(r),title:t.i18nt("render.hint.deleteSubFormRow")},{default:require$$0$1.withCtx(()=>[require$$0$1.createVNode(s,{"icon-class":"el-delete"})]),_:2},1032,["disabled","onClick","title"]),e.widget.options.showRowNumber?(require$$0$1.openBlock(),require$$0$1.createElementBlock("span",_hoisted_7$5,"#"+require$$0$1.toDisplayString(r+1),1)):require$$0$1.createCommentVNode("",!0)])]),(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,(l,a)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:l.id+"tc"+o,class:"sub-form-table-column hide-label",style:require$$0$1.normalizeStyle({width:l.options.columnWidth})},[(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(l.type+"-widget"),{field:m.fieldSchemaData[r][a],key:m.fieldSchemaData[r][a].id,"parent-list":e.widget.widgetList,"index-of-parent-list":a,"parent-widget":e.widget,"sub-form-row-id":o,"sub-form-row-index":r,"sub-form-col-index":a},null,8,["field","parent-list","index-of-parent-list","parent-widget","sub-form-row-id","sub-form-row-index","sub-form-col-index"]))],4))),128))]),_:2},1024))),128))])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:1},8,["widget"])}var subFormItem=_export_sfc(_sfc_main$2y,[["render",_sfc_render$2y],["__scopeId","data-v-2eb559e6"]]),__glob_0_3$2=Object.freeze(Object.defineProperty({__proto__:null,default:subFormItem},Symbol.toStringTag,{value:"Module"}));const _sfc_main$2x={name:"tab-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:Se({ContainerItemWrapper},comps$1),props:{widget:Object},inject:["refList","sfRefList","globalModel"],data(){return{activeTabName:""}},computed:{visibleTabs(){return this.widget.tabs.filter(t=>!t.options.hidden)}},created(){this.initRefList()},mounted(){this.initActiveTab()},beforeUnmount(){this.unregisterFromRefList()},methods:{initActiveTab(){if(this.widget.type==="tab"&&this.widget.tabs.length>0){let t=this.widget.tabs.filter(d=>d.options.active===!0);t.length>0?this.activeTabName=t[0].options.name:this.activeTabName=this.widget.tabs[0].options.name}}}};function _sfc_render$2x(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-tab-pane"),c=require$$0$1.resolveComponent("el-tabs"),i=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(i,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"tab-container"},[require$$0$1.createVNode(c,{modelValue:m.activeTabName,"onUpdate:modelValue":d[0]||(d[0]=f=>m.activeTabName=f),type:e.widget.displayType,ref:e.widget.id,class:require$$0$1.normalizeClass([t.customClass])},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(g.visibleTabs,(f,n)=>(require$$0$1.openBlock(),require$$0$1.createBlock(s,{key:n,label:f.options.label,disabled:f.options.disabled,name:f.options.name},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(f.widgetList,(o,r)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[o.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(t.getComponentByContainer(o)),{widget:o,key:r,"parent-list":f.widgetList,"index-of-parent-list":r,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),l=>({name:l,fn:require$$0$1.withCtx(a=>[require$$0$1.renderSlot(t.$slots,l,require$$0$1.mergeProps({ref_for:!0},a))])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(o.type+"-widget"),{field:o,key:r,"parent-list":f.widgetList,"index-of-parent-list":r,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),l=>({name:l,fn:require$$0$1.withCtx(a=>[require$$0$1.renderSlot(t.$slots,l,require$$0$1.mergeProps({ref_for:!0},a))])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256))]),_:2},1032,["label","disabled","name"]))),128))]),_:3},8,["modelValue","type","class"])])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var tabItem=_export_sfc(_sfc_main$2x,[["render",_sfc_render$2x]]),__glob_0_4$2=Object.freeze(Object.defineProperty({__proto__:null,default:tabItem},Symbol.toStringTag,{value:"Module"})),tableCellItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2w={name:"TableCellItem",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin],components:Se({},comps$1),props:{widget:Object,rowIndex:Number,colIndex:Number},inject:["refList","globalModel"],computed:{customClass(){return this.widget.options.customClass||""}},created(){},methods:{}},_hoisted_1$l=["colspan","rowspan"];function _sfc_render$2w(t,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("td",{class:require$$0$1.normalizeClass(["table-cell",[g.customClass]]),colspan:e.widget.options.colspan||1,rowspan:e.widget.options.rowspan||1,style:require$$0$1.normalizeStyle({width:e.widget.options.cellWidth+" !important"||"",height:e.widget.options.cellHeight+" !important"||"","word-break":e.widget.options.wordBreak?"break-all":"normal"})},[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.widgetList,(s,c)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[s.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(t.getComponentByContainer(s)),{widget:s,key:c,"parent-list":e.widget.widgetList,"index-of-parent-list":c,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),i=>({name:i,fn:require$$0$1.withCtx(f=>[require$$0$1.renderSlot(t.$slots,i,require$$0$1.mergeProps({ref_for:!0},f),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list","parent-widget"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(s.type+"-widget"),{field:s,key:c,"parent-list":e.widget.widgetList,"index-of-parent-list":c,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),i=>({name:i,fn:require$$0$1.withCtx(f=>[require$$0$1.renderSlot(t.$slots,i,require$$0$1.mergeProps({ref_for:!0},f),void 0,!0)])}))]),1032,["field","parent-list","index-of-parent-list","parent-widget"]))],64))),256))],14,_hoisted_1$l)}var TableCellItem=_export_sfc(_sfc_main$2w,[["render",_sfc_render$2w],["__scopeId","data-v-1825ed0b"]]),__glob_0_5$2=Object.freeze(Object.defineProperty({__proto__:null,default:TableCellItem},Symbol.toStringTag,{value:"Module"})),tableItem_vue_vue_type_style_index_0_scoped_true_lang="";const _sfc_main$2v={name:"table-item",componentName:"ContainerItem",mixins:[emitter,i18n$1,refMixin,containerItemMixin],components:{ContainerItemWrapper,TableCellItem},props:{widget:Object},inject:["refList","sfRefList","globalModel"],created(){this.initRefList()},mounted(){},beforeUnmount(){this.unregisterFromRefList()},methods:{}};function _sfc_render$2v(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("table-cell-item"),c=require$$0$1.resolveComponent("container-item-wrapper");return require$$0$1.openBlock(),require$$0$1.createBlock(c,{widget:e.widget},{default:require$$0$1.withCtx(()=>[require$$0$1.withDirectives((require$$0$1.openBlock(),require$$0$1.createElementBlock("div",{key:e.widget.id,class:"table-container"},[require$$0$1.createElementVNode("table",{ref:e.widget.id,class:require$$0$1.normalizeClass(["table-layout",[t.customClass]])},[require$$0$1.createElementVNode("tbody",null,[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(e.widget.rows,(i,f)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock("tr",{key:i.id},[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(i.cols,(n,o)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[n.merged?require$$0$1.createCommentVNode("",!0):(require$$0$1.openBlock(),require$$0$1.createBlock(s,{widget:n,key:o,"parent-list":e.widget.cols,"row-index":f,"col-index":o,"parent-widget":e.widget},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),r=>({name:r,fn:require$$0$1.withCtx(l=>[require$$0$1.renderSlot(t.$slots,r,require$$0$1.mergeProps({ref_for:!0},l),void 0,!0)])}))]),1032,["widget","parent-list","row-index","col-index","parent-widget"]))],64))),256))]))),128))])],2)])),[[require$$0$1.vShow,!e.widget.options.hidden]])]),_:3},8,["widget"])}var tableItem=_export_sfc(_sfc_main$2v,[["render",_sfc_render$2v],["__scopeId","data-v-dfc6ca8e"]]),__glob_0_6$2=Object.freeze(Object.defineProperty({__proto__:null,default:tableItem},Symbol.toStringTag,{value:"Module"}));const modules$2={"./container-item-wrapper.vue":__glob_0_0$3,"./grid-col-item.vue":__glob_0_1$2,"./grid-item.vue":__glob_0_2$2,"./sub-form-item.vue":__glob_0_3$2,"./tab-item.vue":__glob_0_4$2,"./table-cell-item.vue":__glob_0_5$2,"./table-item.vue":__glob_0_6$2};var ContainerItems={install(t){for(const d in modules$2){let e=modules$2[d].default.name;t.component(e,modules$2[d].default)}}},index_vue_vue_type_style_index_0_scoped_true_lang$5="";const _sfc_main$2u={name:"VFormRender",componentName:"VFormRender",mixins:[emitter,i18n$1],components:Se({},comps$1),props:{formJson:{type:Object,default:()=>buildDefaultFormJson()},formData:{type:Object,default:()=>({})},optionData:{type:Object,default:()=>({})},previewState:{type:Boolean,default:!1},globalDsv:{type:Object,default:()=>({})}},provide(){return{refList:this.widgetRefList,sfRefList:this.subFormRefList,getFormConfig:()=>this.formJsonObj.formConfig,getGlobalDsv:()=>this.globalDsv,globalOptionData:this.optionData,getOptionData:()=>this.optionData,globalModel:{formModel:this.formDataModel},previewState:this.previewState}},data(){return{formJsonObj:this.formJson,formDataModel:{},widgetRefList:{},subFormRefList:{},formId:null,externalComponents:{}}},computed:{formConfig(){return this.formJsonObj.formConfig},widgetList(){return this.formJsonObj.widgetList},labelPosition(){return!!this.formConfig&&!!this.formConfig.labelPosition?this.formConfig.labelPosition:"left"},labelWidth(){return!!this.formConfig&&!!this.formConfig.labelWidth?this.formConfig.labelWidth+"px":"80px"},size(){return!!this.formConfig&&!!this.formConfig.size?this.formConfig.size:"default"},customClass(){return!!this.formConfig&&!!this.formConfig.customClass?this.formConfig.customClass:""}},watch:{},created(){this.buildFormModel(this.formJsonObj?this.formJsonObj.widgetList:null),this.initFormObject()},mounted(){this.initLocale(),this.handleOnMounted()},methods:{initFormObject(t=!0){this.formId="vfRender"+generateId(),t&&this.insertCustomStyleAndScriptNode(),this.addFieldChangeEventHandler(),this.addFieldValidateEventHandler(),this.registerFormToRefList(),this.handleOnCreated()},getContainerWidgetName(t){return t.type==="grid"?"vf-grid-item":t.type+"-item"},getWidgetName(t){return t.type+"-widget"},initLocale(){let t=localStorage.getItem("v_form_locale")||"zh-CN";this.changeLanguage(t)},insertCustomStyleAndScriptNode(){!!this.formConfig&&!!this.formConfig.cssCode&&insertCustomCssToHead(this.formConfig.cssCode,this.previewState?"":this.formId),!!this.formConfig&&!!this.formConfig.functions&&insertGlobalFunctionsToHtml(this.formConfig.functions,this.previewState?"":this.formId)},buildFormModel(t){!!t&&t.length>0&&t.forEach(d=>{this.buildDataFromWidget(d)})},buildDataFromWidget(t){if(t.category==="container")if(t.type==="grid")!!t.cols&&t.cols.length>0&&t.cols.forEach(d=>{this.buildDataFromWidget(d)});else if(t.type==="table")!!t.rows&&t.rows.length>0&&t.rows.forEach(d=>{!!d.cols&&d.cols.length>0&&d.cols.forEach(e=>{this.buildDataFromWidget(e)})});else if(t.type==="tab")!!t.tabs&&t.tabs.length>0&&t.tabs.forEach(d=>{!!d.widgetList&&d.widgetList.length>0&&d.widgetList.forEach(e=>{this.buildDataFromWidget(e)})});else if(t.type==="sub-form"){let d=t.options.name;if(this.formData.hasOwnProperty(d)){let e=this.formData[d];this.formDataModel[d]=deepClone(e)}else{let e={};t.options.showBlankRow?(t.widgetList.forEach(p=>{p.formItemFlag&&(e[p.options.name]=p.options.defaultValue)}),this.formDataModel[d]=[e]):this.formDataModel[d]=[]}}else t.type==="grid-col"||t.type==="table-cell"?!!t.widgetList&&t.widgetList.length>0&&t.widgetList.forEach(d=>{this.buildDataFromWidget(d)}):!!t.widgetList&&t.widgetList.length>0&&t.widgetList.forEach(d=>{this.buildDataFromWidget(d)});else if(t.formItemFlag)if(!this.formData.hasOwnProperty(t.options.name))this.formDataModel[t.options.name]=t.options.defaultValue;else{let d=this.formData[t.options.name];this.formDataModel[t.options.name]=deepClone(d)}},addFieldChangeEventHandler(){this.off$("fieldChange"),this.on$("fieldChange",(t,d,e,p,m)=>{this.handleFieldDataChange(t,d,e,p,m),this.$emit("formChange",t,d,e,this.formDataModel,p,m)})},addFieldValidateEventHandler(){this.off$("fieldValidation"),this.on$("fieldValidation",t=>{this.$refs.renderForm.validateField(t)})},registerFormToRefList(){this.widgetRefList.v_form_ref=this},handleFieldDataChange(t,d,e,p,m){!!this.formConfig&&!!this.formConfig.onFormDataChange&&new Function("fieldName","newValue","oldValue","formModel","subFormName","subFormRowIndex",this.formConfig.onFormDataChange).call(this,t,d,e,this.formDataModel,p,m)},handleOnCreated(){!!this.formConfig&&!!this.formConfig.onFormCreated&&new Function(this.formConfig.onFormCreated).call(this)},handleOnMounted(){!!this.formConfig&&!!this.formConfig.onFormMounted&&new Function(this.formConfig.onFormMounted).call(this)},findWidgetAndSetDisabled(t,d){let e=this.getWidgetRef(t);e?e.setDisabled(d):this.findWidgetOfSubFormAndSetDisabled(t,d)},findWidgetOfSubFormAndSetDisabled(t,d){this.findWidgetNameInSubForm(t).forEach(e=>{let p=this.getWidgetRef(e);p&&p.setDisabled(d)})},findWidgetAndSetHidden(t,d){let e=this.getWidgetRef(t);e?e.setHidden(d):this.findWidgetOfSubFormAndSetHidden(t,d)},findWidgetOfSubFormAndSetHidden(t,d){this.findWidgetNameInSubForm(t).forEach(e=>{let p=this.getWidgetRef(e);p&&p.setHidden(d)})},findWidgetNameInSubForm(t){let d=[],e=null,p=(m,g)=>{!!m.options&&m.options.name===t&&(e=g.options.name)};if(traverseFieldWidgets(this.widgetList,p),e){let m=this.getWidgetRef(e);if(m){let g=m.getRowIdData();!!g&&g.length>0&&g.forEach(s=>{d.push(t+"@row"+s)})}}return d},changeLanguage(t){changeLocale(t)},getNativeForm(){return this.$refs.renderForm},getFormRef(){return this},getWidgetRef(t,d=!1){let e=this.widgetRefList[t];return!e&&!!d&&this.$message.error(this.i18nt("render.hint.refNotFound")+t),e},clearFormDataModel(){for(let t in this.formDataModel)delete this.formDataModel[t]},setFormJson(t){if(t)if(typeof t=="string"||t.constructor===Object){let d=null;if(typeof t=="string"?d=JSON.parse(t):d=t,!d.formConfig||!d.widgetList){this.$message.error("Invalid format of form json.");return}this.clearFormDataModel(),this.buildFormModel(d.widgetList),this.formJsonObj.formConfig=d.formConfig,this.formJsonObj.widgetList=d.widgetList,this.insertCustomStyleAndScriptNode(),this.$nextTick(()=>{this.initFormObject(!1),this.handleOnMounted()})}else this.$message.error("Set form json failed.")},reloadOptionData(t){let d=[];!!t&&typeof t=="string"?d=[t]:!!t&&Array.isArray(t)&&(d=[...t]),this.broadcast("FieldWidget","reloadOptionItems",d)},getFormData(t=!0){if(!t)return this.formDataModel;let d=function(){},e=new window.Promise(function(p,m){d=function(g,s){s?m(s):p(g)}});return this.$refs.renderForm.validate(p=>{p?d(this.formDataModel):d(this.formDataModel,this.i18nt("render.hint.validationFailed"))}),e},setFormData(t){Object.keys(this.formDataModel).forEach(d=>{!!t&&t.hasOwnProperty(d)&&(this.formDataModel[d]=deepClone(t[d]))}),this.broadcast("ContainerItem","setFormData",this.formDataModel),this.broadcast("FieldWidget","setFormData",this.formDataModel)},getFieldValue(t){let d=this.getWidgetRef(t);if(!!d&&!!d.getValue)return d.getValue();if(!d){let e=[];return this.findWidgetNameInSubForm(t).forEach(p=>{let m=this.getWidgetRef(p);!!m&&!!m.getValue&&e.push(m.getValue())}),e}},setFieldValue(t,d){let e=this.getWidgetRef(t);!!e&&!!e.setValue&&e.setValue(d),e||this.findWidgetNameInSubForm(t).forEach(p=>{let m=this.getWidgetRef(p);!!m&&!!m.setValue&&m.setValue(d)})},getSubFormValues(t,d=!0){return this.subFormRefList[t].getSubFormValues(d)},disableForm(){Object.keys(this.widgetRefList).forEach(d=>{let e=this.getWidgetRef(d);if(e)if(!!e.widget&&e.widget.type==="sub-form")e.disableSubForm();else{//!!foundW.setDisabled && foundW.setDisabled(true) +e.setDisabled&&e.setDisabled(!0)}})},enableForm(){Object.keys(this.widgetRefList).forEach(d=>{let e=this.getWidgetRef(d);if(e)if(!!e.widget&&e.widget.type==="sub-form")e.enableSubForm();else{//!!foundW.setDisabled && foundW.setDisabled(false) +e.setDisabled&&e.setDisabled(!1)}})},resetForm(){Object.keys(this.subFormRefList).forEach(e=>{this.subFormRefList[e].resetSubForm&&this.subFormRefList[e].resetSubForm()}),Object.keys(this.widgetRefList).forEach(e=>{let p=this.getWidgetRef(e);!!p&&!p.subFormItemFlag&&!!p.resetField&&p.resetField()}),this.$nextTick(()=>{this.clearValidate()})},clearValidate(t){this.$refs.renderForm.clearValidate(t)},validateForm(t){this.$refs.renderForm.validate(d=>{t(d)})},validateFields(){},disableWidgets(t){t&&(typeof t=="string"?this.findWidgetAndSetDisabled(t,!0):Array.isArray(t)&&t.forEach(d=>{this.findWidgetAndSetDisabled(d,!0)}))},enableWidgets(t){t&&(typeof t=="string"?this.findWidgetAndSetDisabled(t,!1):Array.isArray(t)&&t.forEach(d=>{this.findWidgetAndSetDisabled(d,!1)}))},hideWidgets(t){t&&(typeof t=="string"?this.findWidgetAndSetHidden(t,!0):Array.isArray(t)&&t.forEach(d=>{this.findWidgetAndSetHidden(d,!0)}))},showWidgets(t){t&&(typeof t=="string"?this.findWidgetAndSetHidden(t,!1):Array.isArray(t)&&t.forEach(d=>{this.findWidgetAndSetHidden(d,!1)}))},getFieldWidgets(){return getAllFieldWidgets(this.formJsonObj.widgetList)},getContainerWidgets(){return getAllContainerWidgets(this.formJsonObj.widgetList)},addEC(t,d){this.externalComponents[t]=d},hasEC(t){return this.externalComponents.hasOwnProperty(t)},getEC(t){return this.externalComponents[t]},getGlobalDsv(){return this.globalDsv}}};function _sfc_render$2u(t,d,e,p,m,g){const s=require$$0$1.resolveComponent("el-form");return require$$0$1.openBlock(),require$$0$1.createBlock(s,{"label-position":g.labelPosition,size:g.size,class:require$$0$1.normalizeClass([[g.customClass],"render-form"]),"label-width":g.labelWidth,"validate-on-rule-change":!1,model:m.formDataModel,ref:"renderForm",onSubmit:d[0]||(d[0]=require$$0$1.withModifiers(()=>{},["prevent"]))},{default:require$$0$1.withCtx(()=>[(require$$0$1.openBlock(!0),require$$0$1.createElementBlock(require$$0$1.Fragment,null,require$$0$1.renderList(g.widgetList,(c,i)=>(require$$0$1.openBlock(),require$$0$1.createElementBlock(require$$0$1.Fragment,null,[c.category==="container"?(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(g.getContainerWidgetName(c)),{widget:c,key:c.id,"parent-list":g.widgetList,"index-of-parent-list":i,"parent-widget":null},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),f=>({name:f,fn:require$$0$1.withCtx(n=>[require$$0$1.renderSlot(t.$slots,f,require$$0$1.mergeProps({ref_for:!0},n),void 0,!0)])}))]),1032,["widget","parent-list","index-of-parent-list"])):(require$$0$1.openBlock(),require$$0$1.createBlock(require$$0$1.resolveDynamicComponent(g.getWidgetName(c)),{field:c,"form-model":m.formDataModel,designer:null,key:c.id,"parent-list":g.widgetList,"index-of-parent-list":i,"parent-widget":null},require$$0$1.createSlots({_:2},[require$$0$1.renderList(Object.keys(t.$slots),f=>({name:f,fn:require$$0$1.withCtx(n=>[require$$0$1.renderSlot(t.$slots,f,require$$0$1.mergeProps({ref_for:!0},n),void 0,!0)])}))]),1032,["field","form-model","parent-list","index-of-parent-list"]))],64))),256))]),_:3},8,["label-position","size","class","label-width","model"])}var VFormRender=_export_sfc(_sfc_main$2u,[["render",_sfc_render$2u],["__scopeId","data-v-544703a2"]]),ace$2={exports:{}};(function(t,d){(function(){var e="ace",p=function(){return this}();!p&&typeof window!="undefined"&&(p=window);var m=function(n,o,r){if(typeof n!="string"){m.original?m.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=o),m.modules[n]||(m.payloads[n]=r,m.modules[n]=null)};m.modules={},m.payloads={};var g=function(n,o,r){if(typeof o=="string"){var l=i(n,o);if(l!=null)return r&&r(),l}else if(Object.prototype.toString.call(o)==="[object Array]"){for(var a=[],u=0,h=o.length;ui.length)&&(c=i.length),c-=s.length;var f=i.indexOf(s,c);return f!==-1&&f===c}),String.prototype.repeat||g(String.prototype,"repeat",function(s){for(var c="",i=this;s>0;)s&1&&(c+=i),(s>>=1)&&(i+=i);return c}),String.prototype.includes||g(String.prototype,"includes",function(s,c){return this.indexOf(s,c)!=-1}),Object.assign||(Object.assign=function(s){if(s==null)throw new TypeError("Cannot convert undefined or null to object");for(var c=Object(s),i=1;i>>0,f=arguments[1],n=f>>0,o=n<0?Math.max(i+n,0):Math.min(n,i),r=arguments[2],l=r===void 0?i:r>>0,a=l<0?Math.max(i+l,0):Math.min(l,i);o0;)i&1&&(f+=c),(i>>=1)&&(c+=c);return f};var g=/^\s\s*/,s=/\s\s*$/;p.stringTrimLeft=function(c){return c.replace(g,"")},p.stringTrimRight=function(c){return c.replace(s,"")},p.copyObject=function(c){var i={};for(var f in c)i[f]=c[f];return i},p.copyArray=function(c){for(var i=[],f=0,n=c.length;f65535?2:1}}),ace.define("ace/lib/useragent",["require","exports","module"],function(e,p,m){p.OS={LINUX:"LINUX",MAC:"MAC",WINDOWS:"WINDOWS"},p.getOS=function(){return p.isMac?p.OS.MAC:p.isLinux?p.OS.LINUX:p.OS.WINDOWS};var g=typeof navigator=="object"?navigator:{},s=(/mac|win|linux/i.exec(g.platform)||["other"])[0].toLowerCase(),c=g.userAgent||"",i=g.appName||"";p.isWin=s=="win",p.isMac=s=="mac",p.isLinux=s=="linux",p.isIE=i=="Microsoft Internet Explorer"||i.indexOf("MSAppHost")>=0?parseFloat((c.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((c.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),p.isOldIE=p.isIE&&p.isIE<9,p.isGecko=p.isMozilla=c.match(/ Gecko\/\d+/),p.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",p.isWebKit=parseFloat(c.split("WebKit/")[1])||void 0,p.isChrome=parseFloat(c.split(" Chrome/")[1])||void 0,p.isSafari=parseFloat(c.split(" Safari/")[1])&&!p.isChrome||void 0,p.isEdge=parseFloat(c.split(" Edge/")[1])||void 0,p.isAIR=c.indexOf("AdobeAIR")>=0,p.isAndroid=c.indexOf("Android")>=0,p.isChromeOS=c.indexOf(" CrOS ")>=0,p.isIOS=/iPad|iPhone|iPod/.test(c)&&!window.MSStream,p.isIOS&&(p.isMac=!0),p.isMobile=p.isIOS||p.isAndroid}),ace.define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,p,m){var g=e("./useragent"),s="http://www.w3.org/1999/xhtml";p.buildDom=function r(l,a,u){if(typeof l=="string"&&l){var h=document.createTextNode(l);return a&&a.appendChild(h),h}if(!Array.isArray(l))return l&&l.appendChild&&a&&a.appendChild(l),l;if(typeof l[0]!="string"||!l[0]){for(var $=[],v=0;v=1.5:!0,g.isChromeOS&&(p.HI_DPI=!1),typeof document!="undefined"){var o=document.createElement("div");p.HI_DPI&&o.style.transform!==void 0&&(p.HAS_CSS_TRANSFORMS=!0),!g.isEdge&&typeof o.style.animationName!="undefined"&&(p.HAS_CSS_ANIMATION=!0),o=null}p.HAS_CSS_TRANSFORMS?p.translate=function(r,l,a){r.style.transform="translate("+Math.round(l)+"px, "+Math.round(a)+"px)"}:p.translate=function(r,l,a){r.style.top=Math.round(a)+"px",r.style.left=Math.round(l)+"px"}}),ace.define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,p,m){/* +* based on code from: +* +* @license RequireJS text 0.25.0 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved. +* Available via the MIT or new BSD license. +* see: http://github.com/jrburke/requirejs for details +*/var g=e("./dom");p.get=function(s,c){var i=new XMLHttpRequest;i.open("GET",s,!0),i.onreadystatechange=function(){i.readyState===4&&c(i.responseText)},i.send(null)},p.loadScript=function(s,c){var i=g.getDocumentHead(),f=document.createElement("script");f.src=s,i.appendChild(f),f.onload=f.onreadystatechange=function(n,o){(o||!f.readyState||f.readyState=="loaded"||f.readyState=="complete")&&(f=f.onload=f.onreadystatechange=null,o||c())}},p.qualifyURL=function(s){var c=document.createElement("a");return c.href=s,c.href}}),ace.define("ace/lib/oop",["require","exports","module"],function(e,p,m){p.inherits=function(g,s){g.super_=s,g.prototype=Object.create(s.prototype,{constructor:{value:g,enumerable:!1,writable:!0,configurable:!0}})},p.mixin=function(g,s){for(var c in s)g[c]=s[c];return g},p.implement=function(g,s){p.mixin(g,s)}}),ace.define("ace/lib/event_emitter",["require","exports","module"],function(e,p,m){var g={},s=function(){this.propagationStopped=!0},c=function(){this.defaultPrevented=!0};g._emit=g._dispatchEvent=function(i,f){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[i]||[],o=this._defaultHandlers[i];if(!(!n.length&&!o)){(typeof f!="object"||!f)&&(f={}),f.type||(f.type=i),f.stopPropagation||(f.stopPropagation=s),f.preventDefault||(f.preventDefault=c),n=n.slice();for(var r=0;r1&&($=u[u.length-2]);var w=f[a+"Path"];return w==null?w=f.basePath:h=="/"&&(a=h=""),w&&w.slice(-1)!="/"&&(w+="/"),w+a+h+$+this.get("suffix")},p.setModuleUrl=function(l,a){return f.$moduleUrls[l]=a};var n=function(l,a){if(l==="ace/theme/textmate"||l==="./theme/textmate")return a(null,e("./theme/textmate"));if(o)return o(l,a);console.error("loader is not configured")},o;p.setLoader=function(l){o=l},p.dynamicModules=Object.create(null),p.$loading={},p.$loaded={},p.loadModule=function(l,a){var u;if(Array.isArray(l))var h=l[0],$=l[1];else if(typeof l=="string")var $=l;var v=function(w){if(w&&!p.$loading[$])return a&&a(w);if(p.$loading[$]||(p.$loading[$]=[]),p.$loading[$].push(a),!(p.$loading[$].length>1)){var y=function(){n($,function(_,b){b&&(p.$loaded[$]=b),p._emit("load.module",{name:$,module:b});var S=p.$loading[$];p.$loading[$]=null,S.forEach(function(M){M&&M(b)})})};if(!p.get("packaged"))return y();s.loadScript(p.moduleUrl($,h),y),r()}};if(p.dynamicModules[$])p.dynamicModules[$]().then(function(w){w.default?v(w.default):v(w)});else{try{u=this.$require($)}catch{}v(u||p.$loaded[$])}},p.$require=function(l){if(typeof m.require=="function"){var a="require";return m[a](l)}},p.setModuleLoader=function(l,a){p.dynamicModules[l]=a};var r=function(){!f.basePath&&!f.workerPath&&!f.modePath&&!f.themePath&&!Object.keys(f.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),r=function(){})};p.version="1.41.0"}),ace.define("ace/loader_build",["require","exports","module","ace/lib/fixoldbrowsers","ace/config"],function(e,p,m){e("./lib/fixoldbrowsers");var g=e("./config");g.setLoader(function(f,n){e([f],function(o){n(null,o)})});var s=function(){return this||typeof window!="undefined"&&window}();m.exports=function(f){g.init=c,g.$require=e,f.require=e},c(!0);function c(f){if(!(!s||!s.document)){g.set("packaged",f||e.packaged||m.packaged||s.define&&(void 0).packaged);var n={},o="",r=document.currentScript||document._currentScript,l=r&&r.ownerDocument||document;r&&r.src&&(o=r.src.split(/[?#]/)[0].split("/").slice(0,-1).join("/")||"");for(var a=l.getElementsByTagName("script"),u=0;u ["+this.end.row+"/"+this.end.column+"]"},s.prototype.contains=function(c,i){return this.compare(c,i)==0},s.prototype.compareRange=function(c){var i,f=c.end,n=c.start;return i=this.compare(f.row,f.column),i==1?(i=this.compare(n.row,n.column),i==1?2:i==0?1:0):i==-1?-2:(i=this.compare(n.row,n.column),i==-1?-1:i==1?42:0)},s.prototype.comparePoint=function(c){return this.compare(c.row,c.column)},s.prototype.containsRange=function(c){return this.comparePoint(c.start)==0&&this.comparePoint(c.end)==0},s.prototype.intersects=function(c){var i=this.compareRange(c);return i==-1||i==0||i==1},s.prototype.isEnd=function(c,i){return this.end.row==c&&this.end.column==i},s.prototype.isStart=function(c,i){return this.start.row==c&&this.start.column==i},s.prototype.setStart=function(c,i){typeof c=="object"?(this.start.column=c.column,this.start.row=c.row):(this.start.row=c,this.start.column=i)},s.prototype.setEnd=function(c,i){typeof c=="object"?(this.end.column=c.column,this.end.row=c.row):(this.end.row=c,this.end.column=i)},s.prototype.inside=function(c,i){return this.compare(c,i)==0?!(this.isEnd(c,i)||this.isStart(c,i)):!1},s.prototype.insideStart=function(c,i){return this.compare(c,i)==0?!this.isEnd(c,i):!1},s.prototype.insideEnd=function(c,i){return this.compare(c,i)==0?!this.isStart(c,i):!1},s.prototype.compare=function(c,i){return!this.isMultiLine()&&c===this.start.row?ithis.end.column?1:0:cthis.end.row?1:this.start.row===c?i>=this.start.column?0:-1:this.end.row===c?i<=this.end.column?0:1:0},s.prototype.compareStart=function(c,i){return this.start.row==c&&this.start.column==i?-1:this.compare(c,i)},s.prototype.compareEnd=function(c,i){return this.end.row==c&&this.end.column==i?1:this.compare(c,i)},s.prototype.compareInside=function(c,i){return this.end.row==c&&this.end.column==i?1:this.start.row==c&&this.start.column==i?-1:this.compare(c,i)},s.prototype.clipRows=function(c,i){if(this.end.row>i)var f={row:i+1,column:0};else if(this.end.rowi)var n={row:i+1,column:0};else if(this.start.row1?(M++,M>4&&(M=1)):M=1,s.isIE){var x=Math.abs(C.clientX-O)>5||Math.abs(C.clientY-k)>5;(!A||x)&&(M=1),A&&clearTimeout(A),A=setTimeout(function(){A=null},y[M-1]||600),M==1&&(O=C.clientX,k=C.clientY)}if(C._clicks=M,_[b]("mousedown",C),M>4)M=0;else if(M>1)return _[b](T[M],C)}Array.isArray(w)||(w=[w]),w.forEach(function(C){l(C,"mousedown",E,S)})};function u(w){return 0|(w.ctrlKey?1:0)|(w.altKey?2:0)|(w.shiftKey?4:0)|(w.metaKey?8:0)}p.getModifierString=function(w){return g.KEY_MODS[u(w)]};function h(w,y,_){var b=u(y);if(!_&&y.code&&(_=g.$codeToKeyCode[y.code]||_),!s.isMac&&c){if(y.getModifierState&&(y.getModifierState("OS")||y.getModifierState("Win"))&&(b|=8),c.altGr)if((3&b)!=3)c.altGr=0;else return;if(_===18||_===17){var S=y.location;if(_===17&&S===1)c[_]==1&&(i=y.timeStamp);else if(_===18&&b===3&&S===2){var M=y.timeStamp-i;M<50&&(c.altGr=!0)}}}if(_ in g.MODIFIER_KEYS&&(_=-1),!(!b&&_===13&&y.location===3&&(w(y,b,-_),y.defaultPrevented))){if(s.isChromeOS&&b&8){if(w(y,b,_),y.defaultPrevented)return;b&=~8}return!b&&!(_ in g.FUNCTION_KEYS)&&!(_ in g.PRINTABLE_KEYS)?!1:w(y,b,_)}}p.addCommandKeyListener=function(w,y,_){var b=null;l(w,"keydown",function(S){c[S.keyCode]=(c[S.keyCode]||0)+1;var M=h(y,S,S.keyCode);return b=S.defaultPrevented,M},_),l(w,"keypress",function(S){b&&(S.ctrlKey||S.altKey||S.shiftKey||S.metaKey)&&(p.stopEvent(S),b=null)},_),l(w,"keyup",function(S){c[S.keyCode]=null},_),c||($(),l(window,"focus",$))};function $(){c=Object.create(null)}if(typeof window=="object"&&window.postMessage&&!s.isOldIE){var v=1;p.nextTick=function(w,y){y=y||window;var _="zero-timeout-message-"+v++,b=function(S){S.data==_&&(p.stopPropagation(S),a(y,"message",b),w())};l(y,"message",b),y.postMessage(_,"*")}}p.$idleBlocked=!1,p.onIdle=function(w,y){return setTimeout(function _(){p.$idleBlocked?setTimeout(_,100):w()},y)},p.$idleBlockId=null,p.blockIdle=function(w){p.$idleBlockId&&clearTimeout(p.$idleBlockId),p.$idleBlocked=!0,p.$idleBlockId=setTimeout(function(){p.$idleBlocked=!1},w||100)},p.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),p.nextFrame?p.nextFrame=p.nextFrame.bind(window):p.nextFrame=function(w){setTimeout(w,17)}}),ace.define("ace/clipboard",["require","exports","module"],function(e,p,m){var g;m.exports={lineMode:!1,pasteCancelled:function(){return g&&g>Date.now()-50?!0:g=!1},cancel:function(){g=Date.now()}}}),ace.define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/config","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(e,p,m){var g=e("../lib/event"),s=e("../config").nls,c=e("../lib/useragent"),i=e("../lib/dom"),f=e("../lib/lang"),n=e("../clipboard"),o=c.isChrome<18,r=c.isIE,l=c.isChrome>63,a=400,u=e("../lib/keys"),h=u.KEY_MODS,$=c.isIOS,v=$?/\s/:/\n/,w=c.isMobile,y;y=function(_,b){var S=i.createElement("textarea");S.className="ace_text-input",S.setAttribute("wrap","off"),S.setAttribute("autocorrect","off"),S.setAttribute("autocapitalize","off"),S.setAttribute("spellcheck","false"),S.style.opacity="0",_.insertBefore(S,_.firstChild),this.setHost=function(J){b=J};var M=!1,O=!1,k=!1,A=!1,T="";w||(S.style.fontSize="1px");var E=!1,C=!1,x="",L=0,q=0,N=0,F=Number.MAX_SAFE_INTEGER,I=Number.MIN_SAFE_INTEGER,R=0;try{var B=document.activeElement===S}catch{}this.setNumberOfExtraLines=function(J){if(F=Number.MAX_SAFE_INTEGER,I=Number.MIN_SAFE_INTEGER,J<0){R=0;return}R=J},this.setAriaLabel=function(){var J="";if(b.$textInputAriaLabel&&(J+="".concat(b.$textInputAriaLabel,", ")),b.session){var se=b.session.selection.cursor.row;J+=s("text-input.aria-label","Cursor at row $0",[se+1])}S.setAttribute("aria-label",J)},this.setAriaOptions=function(J){J.activeDescendant?(S.setAttribute("aria-haspopup","true"),S.setAttribute("aria-autocomplete",J.inline?"both":"list"),S.setAttribute("aria-activedescendant",J.activeDescendant)):(S.setAttribute("aria-haspopup","false"),S.setAttribute("aria-autocomplete","both"),S.removeAttribute("aria-activedescendant")),J.role&&S.setAttribute("role",J.role),J.setLabel&&(S.setAttribute("aria-roledescription",s("text-input.aria-roledescription","editor")),this.setAriaLabel())},this.setAriaOptions({role:"textbox"}),g.addListener(S,"blur",function(J){C||(b.onBlur(J),B=!1)},b),g.addListener(S,"focus",function(J){if(!C){if(B=!0,c.isEdge)try{if(!document.hasFocus())return}catch{}b.onFocus(J),c.isEdge?setTimeout(P):P()}},b),this.$focusScroll=!1,this.focus=function(){if(this.setAriaOptions({setLabel:b.renderer.enableKeyboardAccessibility}),T||l||this.$focusScroll=="browser")return S.focus({preventScroll:!0});var J=S.style.top;S.style.position="fixed",S.style.top="0px";try{var se=S.getBoundingClientRect().top!=0}catch{return}var le=[];if(se)for(var K=S.parentElement;K&&K.nodeType==1;)le.push(K),K.setAttribute("ace_nocontext","true"),!K.parentElement&&K.getRootNode?K=K.getRootNode().host:K=K.parentElement;S.focus({preventScroll:!0}),se&&le.forEach(function(G){G.removeAttribute("ace_nocontext")}),setTimeout(function(){S.style.position="",S.style.top=="0px"&&(S.style.top=J)},0)},this.blur=function(){S.blur()},this.isFocused=function(){return B},b.on("beforeEndOperation",function(){var J=b.curOp,se=J&&J.command&&J.command.name;if(se!="insertstring"){var le=se&&(J.docChanged||J.selectionChanged);k&&le&&(x=S.value="",X()),P()}}),b.on("changeSelection",this.setAriaLabel);var D=function(J,se){for(var le=se,K=1;K<=J-F&&K<2*R+1;K++)le+=b.session.getLine(J-K).length+1;return le},P=$?function(J){if(!(!B||M&&!J||A)){J||(J="");var se=` + ab`+J+`cde fg +`;se!=S.value&&(S.value=x=se);var le=4,K=4+(J.length||(b.selection.isEmpty()?0:1));(L!=le||q!=K)&&S.setSelectionRange(le,K),L=le,q=K}}:function(){if(!(k||A)&&!(!B&&!H)){k=!0;var J=0,se=0,le="";if(b.session){var K=b.selection,G=K.getRange(),Y=K.cursor.row;Y===I+1?(F=I+1,I=F+2*R):Y===F-1?(I=F-1,F=I-2*R):(YI+1)&&(F=Y>R?Y-R:0,I=Y>R?Y+R:2*R);for(var ee=[],oe=F;oe<=I;oe++)ee.push(b.session.getLine(oe));if(le=ee.join(` +`),J=D(G.start.row,G.start.column),se=D(G.end.row,G.end.column),G.start.rowI){var ce=b.session.getLine(I+1);se=G.end.row>I+1?ce.length:G.end.column,se+=le.length+1,le=le+` +`+ce}else w&&Y>0&&(le=` +`+le,se+=1,J+=1);le.length>a&&(J=x.length&&J.value===x&&x&&J.selectionEnd!==q},V=function(J){k||(M?M=!1:j(S)?(b.selectAll(),P()):w&&S.selectionStart!=L&&P())},W=null;this.setInputHandler=function(J){W=J},this.getInputHandler=function(){return W};var H=!1,z=function(J,se){if(H&&(H=!1),O)return P(),J&&b.onPaste(J),O=!1,"";for(var le=S.selectionStart,K=S.selectionEnd,G=L,Y=x.length-q,ee=J,oe=J.length-le,de=J.length-K,ce=0;G>0&&x[ce]==J[ce];)ce++,G--;for(ee=ee.slice(ce),ce=1;Y>0&&x.length-ce>L-1&&x[x.length-ce]==J[J.length-ce];)ce++,Y--;oe-=ce-1,de-=ce-1;var ve=ee.length-ce+1;if(ve<0&&(G=-ve,ve=0),ee=ee.slice(0,ve),!se&&!ee&&!oe&&!G&&!Y&&!de)return"";A=!0;var xe=!1;return c.isAndroid&&ee==". "&&(ee=" ",xe=!0),ee&&!G&&!Y&&!oe&&!de||E?b.onTextInput(ee):b.onTextInput(ee,{extendLeft:G,extendRight:Y,restoreStart:oe,restoreEnd:de}),A=!1,x=J,L=le,q=K,N=de,xe?` +`:ee},U=function(J){if(k)return _e();if(J&&J.inputType){if(J.inputType=="historyUndo")return b.execCommand("undo");if(J.inputType=="historyRedo")return b.execCommand("redo")}var se=S.value,le=z(se,!0);(se.length>a+100||v.test(le)||w&&L<1&&L==q)&&P()},Z=function(J,se,le){var K=J.clipboardData||window.clipboardData;if(!(!K||o)){var G=r||le?"Text":"text/plain";try{return se?K.setData(G,se)!==!1:K.getData(G)}catch(Y){if(!le)return Z(Y,se,!0)}}},ne=function(J,se){var le=b.getCopyText();if(!le)return g.preventDefault(J);Z(J,le)?($&&(P(le),M=le,setTimeout(function(){M=!1},10)),se?b.onCut():b.onCopy(),g.preventDefault(J)):(M=!0,S.value=le,S.select(),setTimeout(function(){M=!1,P(),se?b.onCut():b.onCopy()}))},re=function(J){ne(J,!0)},ue=function(J){ne(J,!1)},fe=function(J){var se=Z(J);n.pasteCancelled()||(typeof se=="string"?(se&&b.onPaste(se,J),c.isIE&&setTimeout(P),g.preventDefault(J)):(S.value="",O=!0))};g.addCommandKeyListener(S,function(J,se,le){if(!k)return b.onCommandKey(J,se,le)},b),g.addListener(S,"select",V,b),g.addListener(S,"input",U,b),g.addListener(S,"cut",re,b),g.addListener(S,"copy",ue,b),g.addListener(S,"paste",fe,b),(!("oncut"in S)||!("oncopy"in S)||!("onpaste"in S))&&g.addListener(_,"keydown",function(J){if(!(c.isMac&&!J.metaKey||!J.ctrlKey))switch(J.keyCode){case 67:ue(J);break;case 86:fe(J);break;case 88:re(J);break}},b);var ye=function(J){if(!(k||!b.onCompositionStart||b.$readOnly)&&(k={},!E)){J.data&&(k.useTextareaForIME=!1),setTimeout(_e,0),b._signal("compositionStart"),b.on("mousedown",Q);var se=b.getSelectionRange();se.end.row=se.start.row,se.end.column=se.start.column,k.markerRange=se,k.selectionStart=L,b.onCompositionStart(k),k.useTextareaForIME?(x=S.value="",L=0,q=0):(S.msGetInputContext&&(k.context=S.msGetInputContext()),S.getInputContext&&(k.context=S.getInputContext()))}},_e=function(){if(!(!k||!b.onCompositionUpdate||b.$readOnly)){if(E)return Q();if(k.useTextareaForIME)b.onCompositionUpdate(S.value);else{var J=S.value;z(J),k.markerRange&&(k.context&&(k.markerRange.start.column=k.selectionStart=k.context.compositionStartOffset),k.markerRange.end.column=k.markerRange.start.column+q-k.selectionStart+N)}}},X=function(J){!b.onCompositionEnd||b.$readOnly||(k=!1,b.onCompositionEnd(),b.off("mousedown",Q),J&&U())};function Q(){C=!0,S.blur(),S.focus(),C=!1}var ie=f.delayedCall(_e,50).schedule.bind(null,null);function ae(J){J.keyCode==27&&S.value.lengthq&&x[de]==` +`?ce=u.end:oeq&&x.slice(0,de).split(` +`).length>2?ce=u.down:de>q&&x[de-1]==" "?(ce=u.right,ve=h.option):(de>q||de==q&&q!=L&&oe==de)&&(ce=u.right),oe!==de&&(ve|=h.shift),ce){var xe=se.onCommandKey({},ve,ce);if(!xe&&se.commands){ce=u.keyCodeToString(ce);var me=se.commands.findKeyCommand(ve,ce);me&&se.execCommand(me)}L=oe,q=de,P("")}}};document.addEventListener("selectionchange",Y),se.on("destroy",function(){document.removeEventListener("selectionchange",Y)})}this.destroy=function(){S.parentElement&&S.parentElement.removeChild(S)}},p.TextInput=y,p.$setUserAgentForTests=function(_,b){w=_,$=b}}),ace.define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,p,m){var g=e("../lib/useragent"),s=0,c=550,i=function(){function o(r){r.$clickSelection=null;var l=r.editor;l.setDefaultHandler("mousedown",this.onMouseDown.bind(r)),l.setDefaultHandler("dblclick",this.onDoubleClick.bind(r)),l.setDefaultHandler("tripleclick",this.onTripleClick.bind(r)),l.setDefaultHandler("quadclick",this.onQuadClick.bind(r)),l.setDefaultHandler("mousewheel",this.onMouseWheel.bind(r));var a=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];a.forEach(function(u){r[u]=this[u]},this),r.selectByLines=this.extendSelectionBy.bind(r,"getLineRange"),r.selectByWords=this.extendSelectionBy.bind(r,"getWordRange")}return o.prototype.onMouseDown=function(r){var l=r.inSelection(),a=r.getDocumentPosition();this.mousedownEvent=r;var u=this.editor,h=r.getButton();if(h!==0){var $=u.getSelectionRange(),v=$.isEmpty();(v||h==1)&&u.selection.moveToPosition(a),h==2&&(u.textInput.onContextMenu(r.domEvent),g.isMozilla||r.preventDefault());return}if(this.mousedownEvent.time=Date.now(),l&&!u.isFocused()&&(u.focus(),this.$focusTimeout&&!this.$clickSelection&&!u.inMultiSelectMode)){this.setState("focusWait"),this.captureMouse(r);return}return this.captureMouse(r),this.startSelect(a,r.domEvent._clicks>1),r.preventDefault()},o.prototype.startSelect=function(r,l){r=r||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var a=this.editor;!this.mousedownEvent||(this.mousedownEvent.getShiftKey()?a.selection.selectToPosition(r):l||a.selection.moveToPosition(r),l||this.select(),a.setStyle("ace_selecting"),this.setState("select"))},o.prototype.select=function(){var r,l=this.editor,a=l.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var u=this.$clickSelection.comparePoint(a);if(u==-1)r=this.$clickSelection.end;else if(u==1)r=this.$clickSelection.start;else{var h=n(this.$clickSelection,a);a=h.cursor,r=h.anchor}l.selection.setSelectionAnchor(r.row,r.column)}l.selection.selectToPosition(a),l.renderer.scrollCursorIntoView()},o.prototype.extendSelectionBy=function(r){var l,a=this.editor,u=a.renderer.screenToTextCoordinates(this.x,this.y),h=a.selection[r](u.row,u.column);if(this.$clickSelection){var $=this.$clickSelection.comparePoint(h.start),v=this.$clickSelection.comparePoint(h.end);if($==-1&&v<=0)l=this.$clickSelection.end,(h.end.row!=u.row||h.end.column!=u.column)&&(u=h.start);else if(v==1&&$>=0)l=this.$clickSelection.start,(h.start.row!=u.row||h.start.column!=u.column)&&(u=h.end);else if($==-1&&v==1)u=h.end,l=h.start;else{var w=n(this.$clickSelection,u);u=w.cursor,l=w.anchor}a.selection.setSelectionAnchor(l.row,l.column)}a.selection.selectToPosition(u),a.renderer.scrollCursorIntoView()},o.prototype.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting")},o.prototype.focusWait=function(){var r=f(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),l=Date.now();(r>s||l-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},o.prototype.onDoubleClick=function(r){var l=r.getDocumentPosition(),a=this.editor,u=a.session,h=u.getBracketRange(l);h?(h.isEmpty()&&(h.start.column--,h.end.column++),this.setState("select")):(h=a.selection.getWordRange(l.row,l.column),this.setState("selectByWords")),this.$clickSelection=h,this.select()},o.prototype.onTripleClick=function(r){var l=r.getDocumentPosition(),a=this.editor;this.setState("selectByLines");var u=a.getSelectionRange();u.isMultiLine()&&u.contains(l.row,l.column)?(this.$clickSelection=a.selection.getLineRange(u.start.row),this.$clickSelection.end=a.selection.getLineRange(u.end.row).end):this.$clickSelection=a.selection.getLineRange(l.row),this.select()},o.prototype.onQuadClick=function(r){var l=this.editor;l.selectAll(),this.$clickSelection=l.getSelectionRange(),this.setState("selectAll")},o.prototype.onMouseWheel=function(r){if(!r.getAccelKey()){r.getShiftKey()&&r.wheelY&&!r.wheelX&&(r.wheelX=r.wheelY,r.wheelY=0);var l=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var a=this.$lastScroll,u=r.domEvent.timeStamp,h=u-a.t,$=h?r.wheelX/h:a.vx,v=h?r.wheelY/h:a.vy;h=1&&l.renderer.isScrollableBy(r.wheelX*r.speed,0)&&(y=!0),w<=1&&l.renderer.isScrollableBy(0,r.wheelY*r.speed)&&(y=!0),y)a.allowed=u;else if(u-a.allowedc.clientHeight;i||s.preventDefault()}}),ace.define("ace/tooltip",["require","exports","module","ace/lib/dom","ace/lib/event","ace/range","ace/lib/scroll"],function(e,p,m){var g=this&&this.__extends||function(){var u=function(h,$){return u=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(v,w){v.__proto__=w}||function(v,w){for(var y in w)Object.prototype.hasOwnProperty.call(w,y)&&(v[y]=w[y])},u(h,$)};return function(h,$){if(typeof $!="function"&&$!==null)throw new TypeError("Class extends value "+String($)+" is not a constructor or null");u(h,$);function v(){this.constructor=h}h.prototype=$===null?Object.create($):(v.prototype=$.prototype,new v)}}(),s=this&&this.__values||function(u){var h=typeof Symbol=="function"&&Symbol.iterator,$=h&&u[h],v=0;if($)return $.call(u);if(u&&typeof u.length=="number")return{next:function(){return u&&v>=u.length&&(u=void 0),{value:u&&u[v++],done:!u}}};throw new TypeError(h?"Object is not iterable.":"Symbol.iterator is not defined.")},c=e("./lib/dom");e("./lib/event");var i=e("./range").Range,f=e("./lib/scroll").preventParentScroll,n="ace_tooltip",o=function(){function u(h){this.isOpen=!1,this.$element=null,this.$parentNode=h}return u.prototype.$init=function(){return this.$element=c.createElement("div"),this.$element.className=n,this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},u.prototype.getElement=function(){return this.$element||this.$init()},u.prototype.setText=function(h){this.getElement().textContent=h},u.prototype.setHtml=function(h){this.getElement().innerHTML=h},u.prototype.setPosition=function(h,$){this.getElement().style.left=h+"px",this.getElement().style.top=$+"px"},u.prototype.setClassName=function(h){c.addCssClass(this.getElement(),h)},u.prototype.setTheme=function(h){this.$element.className=n+" "+(h.isDark?"ace_dark ":"")+(h.cssClass||"")},u.prototype.show=function(h,$,v){h!=null&&this.setText(h),$!=null&&v!=null&&this.setPosition($,v),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},u.prototype.hide=function(h){this.isOpen&&(this.getElement().style.display="none",this.getElement().className=n,this.isOpen=!1)},u.prototype.getHeight=function(){return this.getElement().offsetHeight},u.prototype.getWidth=function(){return this.getElement().offsetWidth},u.prototype.destroy=function(){this.isOpen=!1,this.$element&&this.$element.parentNode&&this.$element.parentNode.removeChild(this.$element)},u}(),r=function(){function u(){this.popups=[]}return u.prototype.addPopup=function(h){this.popups.push(h),this.updatePopups()},u.prototype.removePopup=function(h){var $=this.popups.indexOf(h);$!==-1&&(this.popups.splice($,1),this.updatePopups())},u.prototype.updatePopups=function(){var h,$,v,w;this.popups.sort(function(T,E){return E.priority-T.priority});var y=[];try{for(var _=s(this.popups),b=_.next();!b.done;b=_.next()){var S=b.value,M=!0;try{for(var O=(v=void 0,s(y)),k=O.next();!k.done;k=O.next()){var A=k.value;if(this.doPopupsOverlap(A,S)){M=!1;break}}}catch(T){v={error:T}}finally{try{k&&!k.done&&(w=O.return)&&w.call(O)}finally{if(v)throw v.error}}M?y.push(S):S.hide()}}catch(T){h={error:T}}finally{try{b&&!b.done&&($=_.return)&&$.call(_)}finally{if(h)throw h.error}}},u.prototype.doPopupsOverlap=function(h,$){var v=h.getElement().getBoundingClientRect(),w=$.getElement().getBoundingClientRect();return v.leftw.left&&v.topw.top},u}(),l=new r;p.popupManager=l,p.Tooltip=o;var a=function(u){g(h,u);function h($){$===void 0&&($=document.body);var v=u.call(this,$)||this;v.timeout=void 0,v.lastT=0,v.idleTime=350,v.lastEvent=void 0,v.onMouseOut=v.onMouseOut.bind(v),v.onMouseMove=v.onMouseMove.bind(v),v.waitForHover=v.waitForHover.bind(v),v.hide=v.hide.bind(v);var w=v.getElement();return w.style.whiteSpace="pre-wrap",w.style.pointerEvents="auto",w.addEventListener("mouseout",v.onMouseOut),w.tabIndex=-1,w.addEventListener("blur",function(){w.contains(document.activeElement)||this.hide()}.bind(v)),w.addEventListener("wheel",f),v}return h.prototype.addToEditor=function($){$.on("mousemove",this.onMouseMove),$.on("mousedown",this.hide),$.renderer.getMouseEventTarget().addEventListener("mouseout",this.onMouseOut,!0)},h.prototype.removeFromEditor=function($){$.off("mousemove",this.onMouseMove),$.off("mousedown",this.hide),$.renderer.getMouseEventTarget().removeEventListener("mouseout",this.onMouseOut,!0),this.timeout&&(clearTimeout(this.timeout),this.timeout=null)},h.prototype.onMouseMove=function($,v){this.lastEvent=$,this.lastT=Date.now();var w=v.$mouseHandler.isMousePressed;if(this.isOpen){var y=this.lastEvent&&this.lastEvent.getDocumentPosition();(!this.range||!this.range.contains(y.row,y.column)||w||this.isOutsideOfText(this.lastEvent))&&this.hide()}this.timeout||w||(this.lastEvent=$,this.timeout=setTimeout(this.waitForHover,this.idleTime))},h.prototype.waitForHover=function(){this.timeout&&clearTimeout(this.timeout);var $=Date.now()-this.lastT;if(this.idleTime-$>10){this.timeout=setTimeout(this.waitForHover,this.idleTime-$);return}this.timeout=null,this.lastEvent&&!this.isOutsideOfText(this.lastEvent)&&this.$gatherData(this.lastEvent,this.lastEvent.editor)},h.prototype.isOutsideOfText=function($){var v=$.editor,w=$.getDocumentPosition(),y=v.session.getLine(w.row);if(w.column==y.length){var _=v.renderer.pixelToScreenCoordinates($.clientX,$.clientY),b=v.session.documentToScreenPosition(w.row,w.column);if(b.column!=_.column||b.row!=_.row)return!0}return!1},h.prototype.setDataProvider=function($){this.$gatherData=$},h.prototype.showForRange=function($,v,w,y){var _=10;if(!(y&&y!=this.lastEvent)&&!(this.isOpen&&document.activeElement==this.getElement())){var b=$.renderer;this.isOpen||(l.addPopup(this),this.$registerCloseEvents(),this.setTheme(b.theme)),this.isOpen=!0,this.addMarker(v,$.session),this.range=i.fromPoints(v.start,v.end);var S=b.textToScreenCoordinates(v.start.row,v.start.column),M=b.scroller.getBoundingClientRect();S.pageX=u.length&&(u=void 0),{value:u&&u[v++],done:!u}}};throw new TypeError(h?"Object is not iterable.":"Symbol.iterator is not defined.")},c=e("../lib/dom"),i=e("../lib/event"),f=e("../tooltip").Tooltip,n=e("../config").nls,o=5,r=3;p.GUTTER_TOOLTIP_LEFT_OFFSET=o,p.GUTTER_TOOLTIP_TOP_OFFSET=r;function l(u){var h=u.editor,$=h.renderer.$gutterLayer,v=new a(h,!0);u.editor.setDefaultHandler("guttermousedown",function(M){if(!(!h.isFocused()||M.getButton()!=0)){var O=$.getRegion(M);if(O!="foldWidgets"){var k=M.getDocumentPosition().row,A=h.session.selection;if(M.getShiftKey())A.selectTo(k,0);else{if(M.domEvent.detail==2)return h.selectAll(),M.preventDefault();u.$clickSelection=h.selection.getLineRange(k)}return u.setState("selectByLines"),u.captureMouse(M),M.preventDefault()}}});var w,y;function _(){var M=y.getDocumentPosition().row,O=h.session.getLength();if(M==O){var k=h.renderer.pixelToScreenCoordinates(0,y.y).row,A=y.$pos;if(k>h.session.documentToScreenRow(A.row,A.column))return b()}if(v.showTooltip(M),!!v.isOpen)if(h.on("mousewheel",b),h.on("changeSession",b),window.addEventListener("keydown",b,!0),u.$tooltipFollowsMouse)S(y);else{var T=y.getGutterRow(),E=$.$lines.get(T);if(E){var C=E.element.querySelector(".ace_gutter_annotation"),x=C.getBoundingClientRect(),L=v.getElement().style;L.left=x.right-o+"px",L.top=x.bottom-r+"px"}else S(y)}}function b(M){M&&M.type==="keydown"&&(M.ctrlKey||M.metaKey)||M&&M.type==="mouseout"&&(!M.relatedTarget||v.getElement().contains(M.relatedTarget))||(w&&(w=clearTimeout(w)),v.isOpen&&(v.hideTooltip(),h.off("mousewheel",b),h.off("changeSession",b),window.removeEventListener("keydown",b,!0)))}function S(M){v.setPosition(M.x,M.y)}u.editor.setDefaultHandler("guttermousemove",function(M){var O=M.domEvent.target||M.domEvent.srcElement;if(c.hasCssClass(O,"ace_fold-widget")||c.hasCssClass(O,"ace_custom-widget"))return b();v.isOpen&&u.$tooltipFollowsMouse&&S(M),y=M,!w&&(w=setTimeout(function(){w=null,y&&!u.isMousePressed&&_()},50))}),i.addListener(h.renderer.$gutter,"mouseout",function(M){y=null,!!v.isOpen&&(w=setTimeout(function(){w=null,b(M)},50))},h)}p.GutterHandler=l;var a=function(u){g(h,u);function h($,v){v===void 0&&(v=!1);var w=u.call(this,$.container)||this;w.editor=$,w.visibleTooltipRow;var y=w.getElement();return y.setAttribute("role","tooltip"),y.style.pointerEvents="auto",v&&(w.onMouseOut=w.onMouseOut.bind(w),y.addEventListener("mouseout",w.onMouseOut)),w}return h.prototype.onMouseOut=function($){!this.isOpen||!$.relatedTarget||this.getElement().contains($.relatedTarget)||$&&$.currentTarget.contains($.relatedTarget)||this.hideTooltip()},h.prototype.setPosition=function($,v){var w=window.innerWidth||document.documentElement.clientWidth,y=window.innerHeight||document.documentElement.clientHeight,_=this.getWidth(),b=this.getHeight();$+=15,v+=15,$+_>w&&($-=$+_-w),v+b>y&&(v-=20+b),f.prototype.setPosition.call(this,$,v)},Object.defineProperty(h,"annotationLabels",{get:function(){return{error:{singular:n("gutter-tooltip.aria-label.error.singular","error"),plural:n("gutter-tooltip.aria-label.error.plural","errors")},security:{singular:n("gutter-tooltip.aria-label.security.singular","security finding"),plural:n("gutter-tooltip.aria-label.security.plural","security findings")},warning:{singular:n("gutter-tooltip.aria-label.warning.singular","warning"),plural:n("gutter-tooltip.aria-label.warning.plural","warnings")},info:{singular:n("gutter-tooltip.aria-label.info.singular","information message"),plural:n("gutter-tooltip.aria-label.info.plural","information messages")},hint:{singular:n("gutter-tooltip.aria-label.hint.singular","suggestion"),plural:n("gutter-tooltip.aria-label.hint.plural","suggestions")}}},enumerable:!1,configurable:!0}),h.prototype.showTooltip=function($){var v,w=this.editor.renderer.$gutterLayer,y=w.$annotations[$],_;y?_={displayText:Array.from(y.displayText),type:Array.from(y.type)}:_={displayText:[],type:[]};var b=w.session.getFoldLine($);if(b&&w.$showFoldedAnnotations){for(var S={error:[],security:[],warning:[],info:[],hint:[]},M={error:1,security:2,warning:3,info:4,hint:5},O,k=$+1;k<=b.end.row;k++)if(!!w.$annotations[k])for(var A=0;An?T=null:j-T>=f&&(a.renderer.scrollCursorIntoView(),T=null)}}function x(D,P){var j=Date.now(),V=a.renderer.layerConfig.lineHeight,W=a.renderer.layerConfig.characterWidth,H=a.renderer.scroller.getBoundingClientRect(),z={x:{left:w-H.left,right:H.right-w},y:{top:y-H.top,bottom:H.bottom-y}},U=Math.min(z.x.left,z.x.right),Z=Math.min(z.y.top,z.y.bottom),ne={row:D.row,column:D.column};U/W<=2&&(ne.column+=z.x.left=i&&a.renderer.scrollCursorIntoView(ne):A=j:A=null}function L(){var D=S;S=a.renderer.screenToTextCoordinates(w,y),C(S,D),x(S,D)}function q(){b=a.selection.toOrientedRange(),v=a.session.addMarker(b,"ace_selection",a.getSelectionStyle()),a.clearSelection(),a.isFocused()&&a.renderer.$cursorLayer.setBlinking(!1),clearInterval(_),L(),_=setInterval(L,20),M=0,s.addListener(document,"mousemove",I)}function N(){clearInterval(_),a.session.removeMarker(v),v=null,a.selection.fromOrientedRange(b),a.isFocused()&&!k&&a.$resetCursorStyle(),b=null,S=null,M=0,A=null,T=null,s.removeListener(document,"mousemove",I)}var F=null;function I(){F==null&&(F=setTimeout(function(){F!=null&&v&&N()},20))}function R(D){var P=D.types;return!P||Array.prototype.some.call(P,function(j){return j=="text/plain"||j=="Text"})}function B(D){var P=["copy","copymove","all","uninitialized"],j=["move","copymove","linkmove","all","uninitialized"],V=c.isMac?D.altKey:D.ctrlKey,W="uninitialized";try{W=D.dataTransfer.effectAllowed.toLowerCase()}catch{}var H="none";return V&&P.indexOf(W)>=0?H="copy":j.indexOf(W)>=0?H="move":P.indexOf(W)>=0&&(H="copy"),H}}(function(){this.dragWait=function(){var l=Date.now()-this.mousedownEvent.time;l>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var l=this.editor.container;l.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(l){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var l=this.editor,a=l.container;a.draggable=!0,l.renderer.$cursorLayer.setBlinking(!1),l.setStyle("ace_dragging");var u=c.isWin?"default":"move";l.renderer.setCursorStyle(u),this.setState("dragReady")},this.onMouseDrag=function(l){var a=this.editor.container;if(c.isIE&&this.state=="dragReady"){var u=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);u>3&&a.dragDrop()}if(this.state==="dragWait"){var u=r(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);u>0&&(a.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(l){if(!!this.$dragEnabled){this.mousedownEvent=l;var a=this.editor,u=l.inSelection(),h=l.getButton(),$=l.domEvent.detail||1;if($===1&&h===0&&u){if(l.editor.inMultiSelectMode&&(l.getAccelKey()||l.getShiftKey()))return;this.mousedownEvent.time=Date.now();var v=l.domEvent.target||l.domEvent.srcElement;if("unselectable"in v&&(v.unselectable="on"),a.getDragDelay()){if(c.isWebKit){this.cancelDrag=!0;var w=a.container;w.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(l,this.onMouseDrag.bind(this)),l.defaultPrevented=!0}}}}).call(o.prototype);function r(l,a,u,h){return Math.sqrt(Math.pow(u-l,2)+Math.pow(h-a,2))}p.DragdropHandler=o}),ace.define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(e,p,m){var g=e("./mouse_event").MouseEvent,s=e("../lib/event"),c=e("../lib/dom");p.addTouchListeners=function(i,f){var n="scroll",o,r,l,a,u,h,$=0,v,w=0,y=0,_=0,b,S;function M(){var C=window.navigator&&window.navigator.clipboard,x=!1,L=function(){var F=f.getCopyText(),I=f.session.getUndoManager().hasUndo();S.replaceChild(c.buildDom(x?["span",!F&&q("selectall")&&["span",{class:"ace_mobile-button",action:"selectall"},"Select All"],F&&q("copy")&&["span",{class:"ace_mobile-button",action:"copy"},"Copy"],F&&q("cut")&&["span",{class:"ace_mobile-button",action:"cut"},"Cut"],C&&q("paste")&&["span",{class:"ace_mobile-button",action:"paste"},"Paste"],I&&q("undo")&&["span",{class:"ace_mobile-button",action:"undo"},"Undo"],q("find")&&["span",{class:"ace_mobile-button",action:"find"},"Find"],q("openCommandPalette")&&["span",{class:"ace_mobile-button",action:"openCommandPalette"},"Palette"]]:["span"]),S.firstChild)},q=function(F){return f.commands.canExecute(F,f)},N=function(F){var I=F.target.getAttribute("action");if(I=="more"||!x)return x=!x,L();I=="paste"?C.readText().then(function(R){f.execCommand(I,R)}):I&&((I=="cut"||I=="copy")&&(C?C.writeText(f.getCopyText()):document.execCommand("copy")),f.execCommand(I)),S.firstChild.style.display="none",x=!1,I!="openCommandPalette"&&f.focus()};S=c.buildDom(["div",{class:"ace_mobile-menu",ontouchstart:function(F){n="menu",F.stopPropagation(),F.preventDefault(),f.textInput.focus()},ontouchend:function(F){F.stopPropagation(),F.preventDefault(),N(F)},onclick:N},["span"],["span",{class:"ace_mobile-button",action:"more"},"..."]],f.container)}function O(){if(!f.getOption("enableMobileMenu")){S&&k();return}S||M();var C=f.selection.cursor,x=f.renderer.textToScreenCoordinates(C.row,C.column),L=f.renderer.textToScreenCoordinates(0,0).pageX,q=f.renderer.scrollLeft,N=f.container.getBoundingClientRect();S.style.top=x.pageY-N.top-3+"px",x.pageX-N.left=2?f.selection.getLineRange(v.row):f.session.getBracketRange(v);C&&!C.isEmpty()?f.selection.setRange(C):f.selection.selectWord(),n="wait"}s.addListener(i,"contextmenu",function(C){if(!!b){var x=f.textInput.getElement();x.focus()}},f),s.addListener(i,"touchstart",function(C){var x=C.touches;if(u||x.length>1){clearTimeout(u),u=null,l=-1,n="zoom";return}b=f.$mouseHandler.isMousePressed=!0;var L=f.renderer.layerConfig.lineHeight,q=f.renderer.layerConfig.lineHeight,N=C.timeStamp;a=N;var F=x[0],I=F.clientX,R=F.clientY;Math.abs(o-I)+Math.abs(r-R)>L&&(l=-1),o=C.clientX=I,r=C.clientY=R,y=_=0;var B=new g(C,f);if(v=B.getDocumentPosition(),N-l<500&&x.length==1&&!$)w++,C.preventDefault(),C.button=0,T();else{w=0;var D=f.selection.cursor,P=f.selection.isEmpty()?D:f.selection.anchor,j=f.renderer.$cursorLayer.getPixelPosition(D,!0),V=f.renderer.$cursorLayer.getPixelPosition(P,!0),W=f.renderer.scroller.getBoundingClientRect(),H=f.renderer.layerConfig.offset,z=f.renderer.scrollLeft,U=function(re,ue){return re=re/q,ue=ue/L-.75,re*re+ue*ue};if(C.clientXne?"cursor":"anchor"),ne<3.5?n="anchor":Z<3.5?n="cursor":n="scroll",u=setTimeout(A,450)}l=N},f),s.addListener(i,"touchend",function(C){b=f.$mouseHandler.isMousePressed=!1,h&&clearInterval(h),n=="zoom"?(n="",$=0):u?(f.selection.moveToPosition(v),$=0,O()):n=="scroll"?(E(),k()):O(),clearTimeout(u),u=null},f),s.addListener(i,"touchmove",function(C){u&&(clearTimeout(u),u=null);var x=C.touches;if(!(x.length>1||n=="zoom")){var L=x[0],q=o-L.clientX,N=r-L.clientY;if(n=="wait")if(q*q+N*N>4)n="cursor";else return C.preventDefault();o=L.clientX,r=L.clientY,C.clientX=L.clientX,C.clientY=L.clientY;var F=C.timeStamp,I=F-a;if(a=F,n=="scroll"){var R=new g(C,f);R.speed=1,R.wheelX=q,R.wheelY=N,10*Math.abs(q)0)if(ne==16){for(fe=ue;fe-1){for(fe=ue;fe=0&&V[X]==b;X--)P[X]=g}}}function I(D,P,j){if(!(s=D){for(H=W+1;H=D;)H++;for(z=W,U=H-1;z=P.length||(H=j[V-1])!=h&&H!=$||(z=P[V+1])!=h&&z!=$?v:(c&&(z=$),z==H?z:v);case M:return H=V>0?j[V-1]:w,H==h&&V+10&&j[V-1]==h)return h;if(c)return v;for(Z=V+1,U=P.length;Z=1425&&ne<=2303||ne==64286;if(H=P[Z],re&&(H==u||H==_))return u}return V<1||(H=P[V-1])==w?v:j[V-1];case w:return c=!1,i=!0,g;case y:return f=!0,v;case A:case T:case C:case x:case E:c=!1;case L:return v}}function B(D){var P=D.charCodeAt(0),j=P>>8;return j==0?P>191?a:q[P]:j==5?/[\u0591-\u05f4]/.test(D)?u:a:j==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(D)?k:/[\u0660-\u0669\u066b-\u066c]/.test(D)?$:P==1642?O:/[\u06f0-\u06f9]/.test(D)?h:_:j==32&&P<=8287?N[P&255]:j==254&&P>=65136?_:v}p.L=a,p.R=u,p.EN=h,p.ON_R=3,p.AN=4,p.R_H=5,p.B=6,p.RLE=7,p.DOT="\xB7",p.doBidiReorder=function(D,P,j){if(D.length<2)return{};var V=D.split(""),W=new Array(V.length),H=new Array(V.length),z=[];g=j?l:r,F(V,z,V.length,P);for(var U=0;U_&&P[U]0&&V[U-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(V[U])&&(z[U-1]=z[U]=p.R_H,U++);V[V.length-1]===p.DOT&&(z[V.length-1]=p.B),V[0]==="\u202B"&&(z[0]=p.RLE);for(var U=0;U=0&&(n=this.session.$docRowCache[r])}return n},f.prototype.getSplitIndex=function(){var n=0,o=this.session.$screenRowCache;if(o.length)for(var r,l=this.session.$getRowCacheIndex(o,this.currentRow);this.currentRow-n>0&&(r=this.session.$getRowCacheIndex(o,this.currentRow-n-1),r===l);)l=r,n++;else n=this.currentRow;return n},f.prototype.updateRowLine=function(n,o){n===void 0&&(n=this.getDocumentRow());var r=n===this.session.getLength()-1,l=r?this.EOF:this.EOL;if(this.wrapIndent=0,this.line=this.session.getLine(n),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE,this.session.$useWrapMode){var a=this.session.$wrapData[n];a&&(o===void 0&&(o=this.getSplitIndex()),o>0&&a.length?(this.wrapIndent=a.indent,this.wrapOffset=this.wrapIndent*this.charWidths[g.L],this.line=oo?this.session.getOverwrite()?n:n-1:o,l=g.getVisualFromLogicalIdx(r,this.bidiMap),a=this.bidiMap.bidiLevels,u=0;!this.session.getOverwrite()&&n<=o&&a[l]%2!=0&&l++;for(var h=0;ho&&a[l]%2==0&&(u+=this.charWidths[a[l]]),this.wrapIndent&&(u+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(u+=this.rtlLineOffset),u},f.prototype.getSelections=function(n,o){var r=this.bidiMap,l=r.bidiLevels,a,u=[],h=0,$=Math.min(n,o)-this.wrapIndent,v=Math.max(n,o)-this.wrapIndent,w=!1,y=!1,_=0;this.wrapIndent&&(h+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var b,S=0;S=$&&br+u/2;){if(r+=u,l===a.length-1){u=0;break}u=this.charWidths[a[++l]]}return l>0&&a[l-1]%2!=0&&a[l]%2==0?(n0&&a[l-1]%2==0&&a[l]%2!=0?o=1+(n>r?this.bidiMap.logicalFromVisual[l]:this.bidiMap.logicalFromVisual[l-1]):this.isRtlDir&&l===a.length-1&&u===0&&a[l-1]%2==0||!this.isRtlDir&&l===0&&a[l]%2!=0?o=1+this.bidiMap.logicalFromVisual[l]:(l>0&&a[l-1]%2!=0&&u!==0&&l--,o=this.bidiMap.logicalFromVisual[l]),o===0&&this.isRtlDir&&o++,o+this.wrapIndent},f}();p.BidiHandler=i}),ace.define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,p,m){var g=e("./lib/oop"),s=e("./lib/lang"),c=e("./lib/event_emitter").EventEmitter,i=e("./range").Range,f=function(){function n(o){this.session=o,this.doc=o.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var r=this;this.cursor.on("change",function(l){r.$cursorChanged=!0,r.$silent||r._emit("changeCursor"),!r.$isEmpty&&!r.$silent&&r._emit("changeSelection"),!r.$keepDesiredColumnOnChange&&l.old.column!=l.value.column&&(r.$desiredColumn=null)}),this.anchor.on("change",function(){r.$anchorChanged=!0,!r.$isEmpty&&!r.$silent&&r._emit("changeSelection")})}return n.prototype.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},n.prototype.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},n.prototype.getCursor=function(){return this.lead.getPosition()},n.prototype.setAnchor=function(o,r){this.$isEmpty=!1,this.anchor.setPosition(o,r)},n.prototype.getAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},n.prototype.getSelectionLead=function(){return this.lead.getPosition()},n.prototype.isBackwards=function(){var o=this.anchor,r=this.lead;return o.row>r.row||o.row==r.row&&o.column>r.column},n.prototype.getRange=function(){var o=this.anchor,r=this.lead;return this.$isEmpty?i.fromPoints(r,r):this.isBackwards()?i.fromPoints(r,o):i.fromPoints(o,r)},n.prototype.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},n.prototype.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},n.prototype.setRange=function(o,r){var l=r?o.end:o.start,a=r?o.start:o.end;this.$setSelection(l.row,l.column,a.row,a.column)},n.prototype.$setSelection=function(o,r,l,a){if(!this.$silent){var u=this.$isEmpty,h=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(o,r),this.cursor.setPosition(l,a),this.$isEmpty=!i.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||u!=this.$isEmpty||h)&&this._emit("changeSelection")}},n.prototype.$moveSelection=function(o){var r=this.lead;this.$isEmpty&&this.setSelectionAnchor(r.row,r.column),o.call(this)},n.prototype.selectTo=function(o,r){this.$moveSelection(function(){this.moveCursorTo(o,r)})},n.prototype.selectToPosition=function(o){this.$moveSelection(function(){this.moveCursorToPosition(o)})},n.prototype.moveTo=function(o,r){this.clearSelection(),this.moveCursorTo(o,r)},n.prototype.moveToPosition=function(o){this.clearSelection(),this.moveCursorToPosition(o)},n.prototype.selectUp=function(){this.$moveSelection(this.moveCursorUp)},n.prototype.selectDown=function(){this.$moveSelection(this.moveCursorDown)},n.prototype.selectRight=function(){this.$moveSelection(this.moveCursorRight)},n.prototype.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},n.prototype.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},n.prototype.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},n.prototype.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},n.prototype.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},n.prototype.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},n.prototype.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},n.prototype.getWordRange=function(o,r){if(typeof r=="undefined"){var l=o||this.lead;o=l.row,r=l.column}return this.session.getWordRange(o,r)},n.prototype.selectWord=function(){this.setSelectionRange(this.getWordRange())},n.prototype.selectAWord=function(){var o=this.getCursor(),r=this.session.getAWordRange(o.row,o.column);this.setSelectionRange(r)},n.prototype.getLineRange=function(o,r){var l=typeof o=="number"?o:this.lead.row,a,u=this.session.getFoldLine(l);return u?(l=u.start.row,a=u.end.row):a=l,r===!0?new i(l,0,a,this.session.getLine(a).length):new i(l,0,a+1,0)},n.prototype.selectLine=function(){this.setSelectionRange(this.getLineRange())},n.prototype.moveCursorUp=function(){this.moveCursorBy(-1,0)},n.prototype.moveCursorDown=function(){this.moveCursorBy(1,0)},n.prototype.wouldMoveIntoSoftTab=function(o,r,l){var a=o.column,u=o.column+r;return l<0&&(a=o.column-r,u=o.column),this.session.isTabStop(o)&&this.doc.getLine(o.row).slice(a,u).split(" ").length-1==r},n.prototype.moveCursorLeft=function(){var o=this.lead.getPosition(),r;if(r=this.session.getFoldAt(o.row,o.column,-1))this.moveCursorTo(r.start.row,r.start.column);else if(o.column===0)o.row>0&&this.moveCursorTo(o.row-1,this.doc.getLine(o.row-1).length);else{var l=this.session.getTabSize();this.wouldMoveIntoSoftTab(o,l,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-l):this.moveCursorBy(0,-1)}},n.prototype.moveCursorRight=function(){var o=this.lead.getPosition(),r;if(r=this.session.getFoldAt(o.row,o.column,1))this.moveCursorTo(r.end.row,r.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(r.column=a)}}this.moveCursorTo(r.row,r.column)},n.prototype.moveCursorFileEnd=function(){var o=this.doc.getLength()-1,r=this.doc.getLine(o).length;this.moveCursorTo(o,r)},n.prototype.moveCursorFileStart=function(){this.moveCursorTo(0,0)},n.prototype.moveCursorLongWordRight=function(){var o=this.lead.row,r=this.lead.column,l=this.doc.getLine(o),a=l.substring(r);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var u=this.session.getFoldAt(o,r,1);if(u){this.moveCursorTo(u.end.row,u.end.column);return}if(this.session.nonTokenRe.exec(a)&&(r+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,a=l.substring(r)),r>=l.length){this.moveCursorTo(o,l.length),this.moveCursorRight(),o0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(u)&&(r-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(o,r)},n.prototype.$shortWordEndIndex=function(o){var r=0,l,a=/\s/,u=this.session.tokenRe;if(u.lastIndex=0,this.session.tokenRe.exec(o))r=this.session.tokenRe.lastIndex;else{for(;(l=o[r])&&a.test(l);)r++;if(r<1){for(u.lastIndex=0;(l=o[r])&&!u.test(l);)if(u.lastIndex=0,r++,a.test(l))if(r>2){r--;break}else{for(;(l=o[r])&&a.test(l);)r++;if(r>2)break}}}return u.lastIndex=0,r},n.prototype.moveCursorShortWordRight=function(){var o=this.lead.row,r=this.lead.column,l=this.doc.getLine(o),a=l.substring(r),u=this.session.getFoldAt(o,r,1);if(u)return this.moveCursorTo(u.end.row,u.end.column);if(r==l.length){var h=this.doc.getLength();do o++,a=this.doc.getLine(o);while(o0&&/^\s*$/.test(a));r=a.length,/\s+$/.test(a)||(a="")}var u=s.stringReverse(a),h=this.$shortWordEndIndex(u);return this.moveCursorTo(o,r-h)},n.prototype.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},n.prototype.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},n.prototype.moveCursorBy=function(o,r){var l=this.session.documentToScreenPosition(this.lead.row,this.lead.column),a;if(r===0&&(o!==0&&(this.session.$bidiHandler.isBidiRow(l.row,this.lead.row)?(a=this.session.$bidiHandler.getPosLeft(l.column),l.column=Math.round(a/this.session.$bidiHandler.charWidths[0])):a=l.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?l.column=this.$desiredColumn:this.$desiredColumn=l.column),o!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var u=this.session.lineWidgets[this.lead.row];o<0?o-=u.rowsAbove||0:o>0&&(o+=u.rowCount-(u.rowsAbove||0))}var h=this.session.screenToDocumentPosition(l.row+o,l.column,a);o!==0&&r===0&&h.row===this.lead.row&&h.column===this.lead.column,this.moveCursorTo(h.row,h.column+r,r===0)},n.prototype.moveCursorToPosition=function(o){this.moveCursorTo(o.row,o.column)},n.prototype.moveCursorTo=function(o,r,l){var a=this.session.getFoldAt(o,r,1);a&&(o=a.start.row,r=a.start.column),this.$keepDesiredColumnOnChange=!0;var u=this.session.getLine(o);/[\uDC00-\uDFFF]/.test(u.charAt(r))&&u.charAt(r-1)&&(this.lead.row==o&&this.lead.column==r+1?r=r-1:r=r+1),this.lead.setPosition(o,r),this.$keepDesiredColumnOnChange=!1,l||(this.$desiredColumn=null)},n.prototype.moveCursorToScreen=function(o,r,l){var a=this.session.screenToDocumentPosition(o,r);this.moveCursorTo(a.row,a.column,l)},n.prototype.detach=function(){this.lead.detach(),this.anchor.detach()},n.prototype.fromOrientedRange=function(o){this.setSelectionRange(o,o.cursor==o.start),this.$desiredColumn=o.desiredColumn||this.$desiredColumn},n.prototype.toOrientedRange=function(o){var r=this.getRange();return o?(o.start.column=r.start.column,o.start.row=r.start.row,o.end.column=r.end.column,o.end.row=r.end.row):o=r,o.cursor=this.isBackwards()?o.start:o.end,o.desiredColumn=this.$desiredColumn,o},n.prototype.getRangeOfMovements=function(o){var r=this.getCursor();try{o(this);var l=this.getCursor();return i.fromPoints(r,l)}catch{return i.fromPoints(r,r)}finally{this.moveCursorToPosition(r)}},n.prototype.toJSON=function(){if(this.rangeCount)var o=this.ranges.map(function(r){var l=r.clone();return l.isBackwards=r.cursor==r.start,l});else{var o=this.getRange();o.isBackwards=this.isBackwards()}return o},n.prototype.fromJSON=function(o){if(o.start==null)if(this.rangeList&&o.length>1){this.toSingleRange(o[0]);for(var r=o.length;r--;){var l=i.fromPoints(o[r].start,o[r].end);o[r].isBackwards&&(l.cursor=l.start),this.addRange(l,!0)}return}else o=o[0];this.rangeList&&this.toSingleRange(o),this.setSelectionRange(o,o.isBackwards)},n.prototype.isEqual=function(o){if((o.length||this.rangeCount)&&o.length!=this.rangeCount)return!1;if(!o.length||!this.ranges)return this.getRange().isEqual(o);for(var r=this.ranges.length;r--;)if(!this.ranges[r].isEqual(o[r]))return!1;return!0},n}();f.prototype.setSelectionAnchor=f.prototype.setAnchor,f.prototype.getSelectionAnchor=f.prototype.getAnchor,f.prototype.setSelectionRange=f.prototype.setRange,g.implement(f.prototype,c),p.Selection=f}),ace.define("ace/tokenizer",["require","exports","module","ace/lib/report_error"],function(e,p,m){var g=e("./lib/report_error").reportError,s=2e3,c=function(){function i(f){this.splitRegex,this.states=f,this.regExps={},this.matchMappings={};for(var n in this.states){for(var o=this.states[n],r=[],l=0,a=this.matchMappings[n]={defaultToken:"text"},u="g",h=[],$=0;$1?v.onMatch=this.$applyToken:v.onMatch=v.token),y>1&&(/\\\d/.test(v.regex)?w=v.regex.replace(/\\([0-9]+)/g,function(_,b){return"\\"+(parseInt(b,10)+l+1)}):(y=1,w=this.removeCapturingGroups(v.regex)),!v.splitRegex&&typeof v.token!="string"&&h.push(v)),a[l]=$,l+=y,r.push(w),v.onMatch||(v.onMatch=null)}}r.length||(a[0]=0,r.push("$")),h.forEach(function(_){_.splitRegex=this.createSplitterRegexp(_.regex,u)},this),this.regExps[n]=new RegExp("("+r.join(")|(")+")|($)",u)}}return i.prototype.$setMaxTokenCount=function(f){s=f|0},i.prototype.$applyToken=function(f){var n=this.splitRegex.exec(f).slice(1),o=this.token.apply(this,n);if(typeof o=="string")return[{type:o,value:f}];for(var r=[],l=0,a=o.length;lv){var O=f.substring(v,M-S.length);y.type==_?y.value+=O:(y.type&&$.push(y),y={type:_,value:O})}for(var k=0;ks){for(w>2*f.length&&this.reportError("infinite loop with in ace tokenizer",{startState:n,line:f});v1&&o[0]!==r&&o.unshift("#tmp",r),{tokens:$,state:o.length?o:r}},i}();c.prototype.reportError=g,p.Tokenizer=c}),ace.define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/deep_copy"],function(e,p,m){var g=e("../lib/deep_copy").deepCopy,s;s=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}},function(){this.addRules=function(f,n){if(!n){for(var o in f)this.$rules[o]=f[o];return}for(var o in f){for(var r=f[o],l=0;l=this.$rowTokens.length;){if(this.$row+=1,i||(i=this.$session.getLength()),this.$row>=i)return this.$row=i-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},c.prototype.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},c.prototype.getCurrentTokenRow=function(){return this.$row},c.prototype.getCurrentTokenColumn=function(){var i=this.$rowTokens,f=this.$tokenIndex,n=i[f].start;if(n!==void 0)return n;for(n=0;f>0;)f-=1,n+=i[f].value.length;return n},c.prototype.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},c.prototype.getCurrentTokenRange=function(){var i=this.$rowTokens[this.$tokenIndex],f=this.getCurrentTokenColumn();return new g(this.$row,f,this.$row,f+i.value.length)},c}();p.TokenIterator=s}),ace.define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,p,m){var g=e("../../lib/oop"),s=e("../behaviour").Behaviour,c=e("../../token_iterator").TokenIterator,i=e("../../lib/lang"),f=["text","paren.rparen","rparen","paren","punctuation.operator"],n=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],o,r={},l={'"':'"',"'":"'"},a=function($){var v=-1;if($.multiSelect&&(v=$.selection.index,r.rangeCount!=$.multiSelect.rangeCount&&(r={rangeCount:$.multiSelect.rangeCount})),r[v])return o=r[v];o=r[v]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},u=function($,v,w,y){var _=$.end.row-$.start.row;return{text:w+v+y,selection:[0,$.start.column+1,_,$.end.column+(_?0:1)]}},h;h=function($){$=$||{},this.add("braces","insertion",function(v,w,y,_,b){var S=y.getCursorPosition(),M=_.doc.getLine(S.row);if(b=="{"){a(y);var O=y.getSelectionRange(),k=_.doc.getTextRange(O),A=_.getTokenAt(S.row,S.column);if(k!==""&&k!=="{"&&y.getWrapBehavioursEnabled())return u(O,k,"{","}");if(A&&/(?:string)\.quasi|\.xml/.test(A.type)){var T=[/tag\-(?:open|name)/,/attribute\-name/];return T.some(function(F){return F.test(A.type)})||/(string)\.quasi/.test(A.type)&&A.value[S.column-A.start-1]!=="$"?void 0:(h.recordAutoInsert(y,_,"}"),{text:"{}",selection:[1,1]})}else if(h.isSaneInsertion(y,_))return/[\]\}\)]/.test(M[S.column])||y.inMultiSelectMode||$.braces?(h.recordAutoInsert(y,_,"}"),{text:"{}",selection:[1,1]}):(h.recordMaybeInsert(y,_,"{"),{text:"{",selection:[1,1]})}else if(b=="}"){a(y);var E=M.substring(S.column,S.column+1);if(E=="}"){var C=_.$findOpeningBracket("}",{column:S.column+1,row:S.row});if(C!==null&&h.isAutoInsertedClosing(S,M,b))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else if(b==` +`||b==`\r +`){a(y);var x="";h.isMaybeInsertedClosing(S,M)&&(x=i.stringRepeat("}",o.maybeInsertedBrackets),h.clearMaybeInsertedClosing());var E=M.substring(S.column,S.column+1);if(E==="}"){var L=_.findMatchingBracket({row:S.row,column:S.column+1},"}");if(!L)return null;var q=this.$getIndent(_.getLine(L.row))}else if(x)var q=this.$getIndent(M);else{h.clearMaybeInsertedClosing();return}var N=q+_.getTabString();return{text:` +`+N+` +`+q+x,selection:[1,N.length,1,N.length]}}else h.clearMaybeInsertedClosing()}),this.add("braces","deletion",function(v,w,y,_,b){var S=_.doc.getTextRange(b);if(!b.isMultiLine()&&S=="{"){a(y);var M=_.doc.getLine(b.start.row),O=M.substring(b.end.column,b.end.column+1);if(O=="}")return b.end.column++,b;o.maybeInsertedBrackets--}}),this.add("parens","insertion",function(v,w,y,_,b){if(b=="("){a(y);var S=y.getSelectionRange(),M=_.doc.getTextRange(S);if(M!==""&&y.getWrapBehavioursEnabled())return u(S,M,"(",")");if(h.isSaneInsertion(y,_))return h.recordAutoInsert(y,_,")"),{text:"()",selection:[1,1]}}else if(b==")"){a(y);var O=y.getCursorPosition(),k=_.doc.getLine(O.row),A=k.substring(O.column,O.column+1);if(A==")"){var T=_.$findOpeningBracket(")",{column:O.column+1,row:O.row});if(T!==null&&h.isAutoInsertedClosing(O,k,b))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(v,w,y,_,b){var S=_.doc.getTextRange(b);if(!b.isMultiLine()&&S=="("){a(y);var M=_.doc.getLine(b.start.row),O=M.substring(b.start.column+1,b.start.column+2);if(O==")")return b.end.column++,b}}),this.add("brackets","insertion",function(v,w,y,_,b){if(b=="["){a(y);var S=y.getSelectionRange(),M=_.doc.getTextRange(S);if(M!==""&&y.getWrapBehavioursEnabled())return u(S,M,"[","]");if(h.isSaneInsertion(y,_))return h.recordAutoInsert(y,_,"]"),{text:"[]",selection:[1,1]}}else if(b=="]"){a(y);var O=y.getCursorPosition(),k=_.doc.getLine(O.row),A=k.substring(O.column,O.column+1);if(A=="]"){var T=_.$findOpeningBracket("]",{column:O.column+1,row:O.row});if(T!==null&&h.isAutoInsertedClosing(O,k,b))return h.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(v,w,y,_,b){var S=_.doc.getTextRange(b);if(!b.isMultiLine()&&S=="["){a(y);var M=_.doc.getLine(b.start.row),O=M.substring(b.start.column+1,b.start.column+2);if(O=="]")return b.end.column++,b}}),this.add("string_dquotes","insertion",function(v,w,y,_,b){var S=_.$mode.$quotes||l;if(b.length==1&&S[b]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(b)!=-1)return;a(y);var M=b,O=y.getSelectionRange(),k=_.doc.getTextRange(O);if(k!==""&&(k.length!=1||!S[k])&&y.getWrapBehavioursEnabled())return u(O,k,M,M);if(!k){var A=y.getCursorPosition(),T=_.doc.getLine(A.row),E=T.substring(A.column-1,A.column),C=T.substring(A.column,A.column+1),x=_.getTokenAt(A.row,A.column),L=_.getTokenAt(A.row,A.column+1);if(E=="\\"&&x&&/escape/.test(x.type))return null;var q=x&&/string|escape/.test(x.type),N=!L||/string|escape/.test(L.type),F;if(C==M)F=q!==N,F&&/string\.end/.test(L.type)&&(F=!1);else{if(q&&!N||q&&N)return null;var I=_.$mode.tokenRe;I.lastIndex=0;var R=I.test(E);I.lastIndex=0;var B=I.test(C),D=_.$mode.$pairQuotesAfter,P=D&&D[M]&&D[M].test(E);if(!P&&R||B||C&&!/[\s;,.})\]\\]/.test(C))return null;var j=T[A.column-2];if(E==M&&(j==M||I.test(j)))return null;F=!0}return{text:F?M+M:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(v,w,y,_,b){var S=_.$mode.$quotes||l,M=_.doc.getTextRange(b);if(!b.isMultiLine()&&S.hasOwnProperty(M)){a(y);var O=_.doc.getLine(b.start.row),k=O.substring(b.start.column+1,b.start.column+2);if(k==M)return b.end.column++,b}}),$.closeDocComment!==!1&&this.add("doc comment end","insertion",function(v,w,y,_,b){if(v==="doc-start"&&(b===` +`||b===`\r +`)&&y.selection.isEmpty()){var S=y.getCursorPosition();if(S.column===0)return;for(var M=_.doc.getLine(S.row),O=_.doc.getLine(S.row+1),k=_.getTokens(S.row),A=0,T=0;T=S.column){if(A===S.column){if(!/\.doc/.test(E.type))return;if(/\*\//.test(E.value)){var C=k[T+1];if(!C||!/\.doc/.test(C.type))return}}var x=S.column-(A-E.value.length),L=E.value.indexOf("*/"),q=E.value.indexOf("/**",L>-1?L+2:0);if(q!==-1&&x>q&&x=L&&x<=q||!/\.doc/.test(E.type))return;break}}var N=this.$getIndent(M);if(/\s*\*/.test(O))return/^\s*\*/.test(M)?{text:b+N+"* ",selection:[1,2+N.length,1,2+N.length]}:{text:b+N+" * ",selection:[1,3+N.length,1,3+N.length]};if(/\/\*\*/.test(M.substring(0,S.column)))return{text:b+N+" * "+b+" "+N+"*/",selection:[1,4+N.length,1,4+N.length]}}})},h.isSaneInsertion=function($,v){var w=$.getCursorPosition(),y=new c(v,w.row,w.column);if(!this.$matchTokenType(y.getCurrentToken()||"text",f)){if(/[)}\]]/.test($.session.getLine(w.row)[w.column]))return!0;var _=new c(v,w.row,w.column+1);if(!this.$matchTokenType(_.getCurrentToken()||"text",f))return!1}return y.stepForward(),y.getCurrentTokenRow()!==w.row||this.$matchTokenType(y.getCurrentToken()||"text",n)},h.$matchTokenType=function($,v){return v.indexOf($.type||$)>-1},h.recordAutoInsert=function($,v,w){var y=$.getCursorPosition(),_=v.doc.getLine(y.row);this.isAutoInsertedClosing(y,_,o.autoInsertedLineEnd[0])||(o.autoInsertedBrackets=0),o.autoInsertedRow=y.row,o.autoInsertedLineEnd=w+_.substr(y.column),o.autoInsertedBrackets++},h.recordMaybeInsert=function($,v,w){var y=$.getCursorPosition(),_=v.doc.getLine(y.row);this.isMaybeInsertedClosing(y,_)||(o.maybeInsertedBrackets=0),o.maybeInsertedRow=y.row,o.maybeInsertedLineStart=_.substr(0,y.column)+w,o.maybeInsertedLineEnd=_.substr(y.column),o.maybeInsertedBrackets++},h.isAutoInsertedClosing=function($,v,w){return o.autoInsertedBrackets>0&&$.row===o.autoInsertedRow&&w===o.autoInsertedLineEnd[0]&&v.substr($.column)===o.autoInsertedLineEnd},h.isMaybeInsertedClosing=function($,v){return o.maybeInsertedBrackets>0&&$.row===o.maybeInsertedRow&&v.substr($.column)===o.maybeInsertedLineEnd&&v.substr(0,$.column)==o.maybeInsertedLineStart},h.popAutoInsertedClosing=function(){o.autoInsertedLineEnd=o.autoInsertedLineEnd.substr(1),o.autoInsertedBrackets--},h.clearMaybeInsertedClosing=function(){o&&(o.maybeInsertedBrackets=0,o.maybeInsertedRow=-1)},g.inherits(h,s),p.CstyleBehaviour=h}),ace.define("ace/unicode",["require","exports","module"],function(e,p,m){for(var g=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],s=0,c=[],i=0;i2?j%b!=b-1:j%b==0}}else{if(!this.blockComment)return!1;var M=this.blockComment.start,O=this.blockComment.end,k=new RegExp("^(\\s*)(?:"+n.escapeRegExp(M)+")"),A=new RegExp("(?:"+n.escapeRegExp(O)+")\\s*$"),T=function(F,I){C(F,I)||(!w||/\S/.test(F))&&(v.insertInLine({row:I,column:F.length},O),v.insertInLine({row:I,column:_},M))},E=function(F,I){var R;(R=F.match(A))&&v.removeInLine(I,F.length-R[0].length,F.length),(R=F.match(k))&&v.removeInLine(I,R[1].length,R[0].length)},C=function(F,I){if(k.test(F))return!0;for(var R=u.getTokens(I),B=0;BF.length&&(N=F.length)}),_==1/0&&(_=N,w=!1,y=!1),S&&_%b!=0&&(_=Math.floor(_/b)*b),q(y?E:T)},this.toggleBlockComment=function(a,u,h,$){var v=this.blockComment;if(!!v){!v.start&&v[0]&&(v=v[0]);var w=new o(u,$.row,$.column),y=w.getCurrentToken();u.selection;var _=u.selection.toOrientedRange(),b,S;if(y&&/comment/.test(y.type)){for(var M,O;y&&/comment/.test(y.type);){var k=y.value.indexOf(v.start);if(k!=-1){var A=w.getCurrentTokenRow(),T=w.getCurrentTokenColumn()+k;M=new r(A,T,A,T+v.start.length);break}y=w.stepBackward()}for(var w=new o(u,$.row,$.column),y=w.getCurrentToken();y&&/comment/.test(y.type);){var k=y.value.indexOf(v.end);if(k!=-1){var A=w.getCurrentTokenRow(),T=w.getCurrentTokenColumn()+k;O=new r(A,T,A,T+v.end.length);break}y=w.stepForward()}O&&u.remove(O),M&&(u.remove(M),b=M.start.row,S=-v.start.length)}else S=v.start.length,b=h.start.row,u.insert(h.end,v.end),u.insert(h.start,v.start);_.start.row==b&&(_.start.column+=S),_.end.row==b&&(_.end.column+=S),u.selection.fromOrientedRange(_)}},this.getNextLineIndent=function(a,u,h){return this.$getIndent(u)},this.checkOutdent=function(a,u,h){return!1},this.autoOutdent=function(a,u,h){},this.$getIndent=function(a){return a.match(/^\s*/)[0]},this.createWorker=function(a){return null},this.createModeDelegates=function(a){this.$embeds=[],this.$modes={};for(var u in a)if(a[u]){var h=a[u],$=h.prototype.$id,v=g.$modes[$];v||(g.$modes[$]=v=new h),g.$modes[u]||(g.$modes[u]=v),this.$embeds.push(u),this.$modes[u]=v}for(var w=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"],y=function(b){(function(S){var M=w[b],O=S[M];S[w[b]]=function(){return this.$delegator(M,arguments,O)}})(_)},_=this,u=0;uf[n].column&&n++,l.unshift(n,0),f.splice.apply(f,l),this.$updateRows()}}},c.prototype.$updateRows=function(){var i=this.session.lineWidgets;if(!!i){var f=!0;i.forEach(function(n,o){if(n)for(f=!1,n.row=o;n.$oldWidget;)n.$oldWidget.row=o,n=n.$oldWidget}),f&&(this.session.lineWidgets=null)}},c.prototype.$registerLineWidget=function(i){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var f=this.session.lineWidgets[i.row];return f&&(i.$oldWidget=f,f.el&&f.el.parentNode&&(f.el.parentNode.removeChild(f.el),f._inDocument=!1)),this.session.lineWidgets[i.row]=i,i},c.prototype.addLineWidget=function(i){if(this.$registerLineWidget(i),i.session=this.session,!this.editor)return i;var f=this.editor.renderer;i.html&&!i.el&&(i.el=g.createElement("div"),i.el.innerHTML=i.html),i.text&&!i.el&&(i.el=g.createElement("div"),i.el.textContent=i.text),i.el&&(g.addCssClass(i.el,"ace_lineWidgetContainer"),i.className&&g.addCssClass(i.el,i.className),i.el.style.position="absolute",i.el.style.zIndex="5",f.container.appendChild(i.el),i._inDocument=!0,i.coverGutter||(i.el.style.zIndex="3"),i.pixelHeight==null&&(i.pixelHeight=i.el.offsetHeight)),i.rowCount==null&&(i.rowCount=i.pixelHeight/f.layerConfig.lineHeight);var n=this.session.getFoldAt(i.row,0);if(i.$fold=n,n){var o=this.session.lineWidgets;i.row==n.end.row&&!o[n.start.row]?o[n.start.row]=i:i.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:i.row}}}),this.$updateRows(),this.renderWidgets(null,f),this.onWidgetChanged(i),i},c.prototype.removeLineWidget=function(i){if(i._inDocument=!1,i.session=null,i.el&&i.el.parentNode&&i.el.parentNode.removeChild(i.el),i.editor&&i.editor.destroy)try{i.editor.destroy()}catch{}if(this.session.lineWidgets){var f=this.session.lineWidgets[i.row];if(f==i)this.session.lineWidgets[i.row]=i.$oldWidget,i.$oldWidget&&this.onWidgetChanged(i.$oldWidget);else for(;f;){if(f.$oldWidget==i){f.$oldWidget=i.$oldWidget;break}f=f.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:i.row}}}),this.$updateRows()},c.prototype.getWidgetsAtRow=function(i){for(var f=this.session.lineWidgets,n=f&&f[i],o=[];n;)o.push(n),n=n.$oldWidget;return o},c.prototype.onWidgetChanged=function(i){this.session._changedWidgets.push(i),this.editor&&this.editor.renderer.updateFull()},c.prototype.measureWidgets=function(i,f){var n=this.session._changedWidgets,o=f.layerConfig;if(!(!n||!n.length)){for(var r=1/0,l=0;l0&&!o[r];)r--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,f.$cursorLayer.config=n;for(var a=r;a<=l;a++){var u=o[a];if(!(!u||!u.el)){if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,f.container.appendChild(u.el));var h=f.$cursorLayer.getPixelPosition({row:a,column:0},!0).top;u.coverLine||(h+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=h-n.offset+"px";var $=u.coverGutter?0:f.gutterWidth;u.fixedWidth||($-=f.scrollLeft),u.el.style.left=$+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=f.scrollBar.getWidth()+"px":u.el.style.right=""}}}},c}();p.LineWidgets=s}),ace.define("ace/apply_delta",["require","exports","module"],function(e,p,m){p.applyDelta=function(g,s,c){var i=s.start.row,f=s.start.column,n=g[i]||"";switch(s.action){case"insert":var o=s.lines;if(o.length===1)g[i]=n.substring(0,f)+s.lines[0]+n.substring(f);else{var r=[i,1].concat(s.lines);g.splice.apply(g,r),g[i]=n.substring(0,f)+g[i],g[i+s.lines.length-1]+=n.substring(f)}break;case"remove":var l=s.end.column,a=s.end.row;i===a?g[i]=n.substring(0,f)+n.substring(l):g.splice(i,a-i+1,n.substring(0,f)+g[a].substring(l));break}}}),ace.define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,p,m){var g=e("./lib/oop"),s=e("./lib/event_emitter").EventEmitter,c=function(){function n(o,r,l){this.$onChange=this.onChange.bind(this),this.attach(o),typeof r!="number"?this.setPosition(r.row,r.column):this.setPosition(r,l)}return n.prototype.getPosition=function(){return this.$clipPositionToDocument(this.row,this.column)},n.prototype.getDocument=function(){return this.document},n.prototype.onChange=function(o){if(!(o.start.row==o.end.row&&o.start.row!=this.row)&&!(o.start.row>this.row)){var r=f(o,{row:this.row,column:this.column},this.$insertRight);this.setPosition(r.row,r.column,!0)}},n.prototype.setPosition=function(o,r,l){var a;if(l?a={row:o,column:r}:a=this.$clipPositionToDocument(o,r),!(this.row==a.row&&this.column==a.column)){var u={row:this.row,column:this.column};this.row=a.row,this.column=a.column,this._signal("change",{old:u,value:a})}},n.prototype.detach=function(){this.document.off("change",this.$onChange)},n.prototype.attach=function(o){this.document=o||this.document,this.document.on("change",this.$onChange)},n.prototype.$clipPositionToDocument=function(o,r){var l={};return o>=this.document.getLength()?(l.row=Math.max(0,this.document.getLength()-1),l.column=this.document.getLine(l.row).length):o<0?(l.row=0,l.column=0):(l.row=o,l.column=Math.min(this.document.getLine(l.row).length,Math.max(0,r))),r<0&&(l.column=0),l},n}();c.prototype.$insertRight=!1,g.implement(c.prototype,s);function i(n,o,r){var l=r?n.column<=o.column:n.column=a&&(r=a-1,l=void 0);var u=this.getLine(r);return l==null&&(l=u.length),l=Math.min(Math.max(l,0),u.length),{row:r,column:l}},o.prototype.clonePos=function(r){return{row:r.row,column:r.column}},o.prototype.pos=function(r,l){return{row:r,column:l}},o.prototype.$clipPosition=function(r){var l=this.getLength();return r.row>=l?(r.row=Math.max(0,l-1),r.column=this.getLine(l-1).length):(r.row=Math.max(0,r.row),r.column=Math.min(Math.max(r.column,0),this.getLine(r.row).length)),r},o.prototype.insertFullLines=function(r,l){r=Math.min(Math.max(r,0),this.getLength());var a=0;r0,u=l=0&&this.applyDelta({start:this.pos(r,this.getLine(r).length),end:this.pos(r+1,0),action:"remove",lines:["",""]})},o.prototype.replace=function(r,l){if(r instanceof i||(r=i.fromPoints(r.start,r.end)),l.length===0&&r.isEmpty())return r.start;if(l==this.getTextRange(r))return r.end;this.remove(r);var a;return l?a=this.insert(r.start,l):a=r.start,a},o.prototype.applyDeltas=function(r){for(var l=0;l=0;l--)this.revertDelta(r[l])},o.prototype.applyDelta=function(r,l){var a=r.action=="insert";(a?r.lines.length<=1&&!r.lines[0]:!i.comparePoints(r.start,r.end))||(a&&r.lines.length>2e4?this.$splitAndapplyLargeDelta(r,2e4):(s(this.$lines,r,l),this._signal("change",r)))},o.prototype.$safeApplyDelta=function(r){var l=this.$lines.length;(r.action=="remove"&&r.start.row20){o.running=setTimeout(o.$worker,20);break}}o.currentLine=l,a==-1&&(a=l),h<=a&&o.fireUpdateEvent(h,a)}}}return i.prototype.setTokenizer=function(f){this.tokenizer=f,this.lines=[],this.states=[],this.start(0)},i.prototype.setDocument=function(f){this.doc=f,this.lines=[],this.states=[],this.stop()},i.prototype.fireUpdateEvent=function(f,n){var o={first:f,last:n};this._signal("update",{data:o})},i.prototype.start=function(f){this.currentLine=Math.min(f||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},i.prototype.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},i.prototype.$updateOnChange=function(f){var n=f.start.row,o=f.end.row-n;if(o===0)this.lines[n]=null;else if(f.action=="remove")this.lines.splice(n,o+1,null),this.states.splice(n,o+1,null);else{var r=Array(o+1);r.unshift(n,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(n,this.currentLine,this.doc.getLength()),this.stop()},i.prototype.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},i.prototype.getTokens=function(f){return this.lines[f]||this.$tokenizeRow(f)},i.prototype.getState=function(f){return this.currentLine==f&&this.$tokenizeRow(f),this.states[f]||"start"},i.prototype.$tokenizeRow=function(f){var n=this.doc.getLine(f),o=this.states[f-1],r=this.tokenizer.getLineTokens(n,o,f);return this.states[f]+""!=r.state+""?(this.states[f]=r.state,this.lines[f+1]=null,this.currentLine>f+1&&(this.currentLine=f+1)):this.currentLine==f&&(this.currentLine=f+1),this.lines[f]=r.tokens},i.prototype.cleanup=function(){this.running=!1,this.lines=[],this.states=[],this.currentLine=0,this.removeAllListeners()},i}();g.implement(c.prototype,s),p.BackgroundTokenizer=c}),ace.define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/range"],function(e,p,m){var g=e("./lib/lang"),s=e("./range").Range,c=function(){function i(f,n,o){o===void 0&&(o="text"),this.setRegexp(f),this.clazz=n,this.type=o,this.docLen=0}return i.prototype.setRegexp=function(f){this.regExp+""!=f+""&&(this.regExp=f,this.cache=[])},i.prototype.update=function(f,n,o,r){if(!!this.regExp){for(var l=r.firstRow,a=r.lastRow,u={},h=o.$editor&&o.$editor.$search,$=h&&h.$isMultilineSearch(o.$editor.getLastSearchOptions()),v=l;v<=a;v++){var w=this.cache[v];if(w==null||o.getValue().length!=this.docLen){if($){w=[];var y=h.$multiLineForward(o,this.regExp,v,a);if(y){var _=y.endRow<=a?y.endRow-1:a;_>v&&(v=_),w.push(new s(y.startRow,y.startCol,y.endRow,y.endCol))}w.length>this.MAX_RANGES&&(w=w.slice(0,this.MAX_RANGES))}else w=g.getMatchOffsets(o.getLine(v),this.regExp),w.length>this.MAX_RANGES&&(w=w.slice(0,this.MAX_RANGES)),w=w.map(function(O){return new s(v,O.offset,v,O.offset+O.length)});this.cache[v]=w.length?w:""}if(w.length!==0)for(var b=w.length;b--;){var S=w[b].toScreenRange(o),M=S.toString();u[M]||(u[M]=!0,n.drawSingleLineMarker(f,S,this.clazz,r))}}this.docLen=o.getValue().length}},i}();c.prototype.MAX_RANGES=500,p.SearchHighlight=c}),ace.define("ace/undomanager",["require","exports","module","ace/range"],function(e,p,m){var g=function(){function _(){this.$keepRedoStack,this.$maxRev=0,this.$fromUndo=!1,this.$undoDepth=1/0,this.reset()}return _.prototype.addSession=function(b){this.$session=b},_.prototype.add=function(b,S,M){if(!this.$fromUndo&&b!=this.$lastDelta){if(this.$keepRedoStack||(this.$redoStack.length=0),S===!1||!this.lastDeltas){this.lastDeltas=[];var O=this.$undoStack.length;O>this.$undoDepth-1&&this.$undoStack.splice(0,O-this.$undoDepth+1),this.$undoStack.push(this.lastDeltas),b.id=this.$rev=++this.$maxRev}(b.action=="remove"||b.action=="insert")&&(this.$lastDelta=b),this.lastDeltas.push(b)}},_.prototype.addSelection=function(b,S){this.selections.push({value:b,rev:S||this.$rev})},_.prototype.startNewGroup=function(){return this.lastDeltas=null,this.$rev},_.prototype.markIgnored=function(b,S){S==null&&(S=this.$rev+1);for(var M=this.$undoStack,O=M.length;O--;){var k=M[O][0];if(k.id<=b)break;k.id0},_.prototype.canRedo=function(){return this.$redoStack.length>0},_.prototype.bookmark=function(b){b==null&&(b=this.$rev),this.mark=b},_.prototype.isAtBookmark=function(){return this.$rev===this.mark},_.prototype.toJSON=function(){return{$redoStack:this.$redoStack,$undoStack:this.$undoStack}},_.prototype.fromJSON=function(b){this.reset(),this.$undoStack=b.$undoStack,this.$redoStack=b.$redoStack},_.prototype.$prettyPrint=function(b){return b?o(b):o(this.$undoStack)+` +--- +`+o(this.$redoStack)},_}();g.prototype.hasUndo=g.prototype.canUndo,g.prototype.hasRedo=g.prototype.canRedo,g.prototype.isClean=g.prototype.isAtBookmark,g.prototype.markClean=g.prototype.bookmark;function s(_,b){for(var S=b;S--;){var M=_[S];if(M&&!M[0].ignore){for(;S"+_.end.row+":"+_.end.column}function l(_,b){var S=_.action=="insert",M=b.action=="insert";if(S&&M)if(i(b.start,_.end)>=0)h(b,_,-1);else if(i(b.start,_.start)<=0)h(_,b,1);else return null;else if(S&&!M)if(i(b.start,_.end)>=0)h(b,_,-1);else if(i(b.end,_.start)<=0)h(_,b,-1);else return null;else if(!S&&M)if(i(b.start,_.start)>=0)h(b,_,1);else if(i(b.start,_.start)<=0)h(_,b,1);else return null;else if(!S&&!M)if(i(b.start,_.start)>=0)h(b,_,1);else if(i(b.end,_.start)<=0)h(_,b,-1);else return null;return[b,_]}function a(_,b){for(var S=_.length;S--;)for(var M=0;M=0?h(_,b,-1):(i(_.start,b.start)<=0||h(_,c.fromPoints(b.start,_.start),-1),h(b,_,1));else if(!S&&M)i(b.start,_.end)>=0?h(b,_,-1):(i(b.start,_.start)<=0||h(b,c.fromPoints(_.start,b.start),-1),h(_,b,1));else if(!S&&!M)if(i(b.start,_.end)>=0)h(b,_,-1);else if(i(b.end,_.start)<=0)h(_,b,-1);else{var O,k;return i(_.start,b.start)<0&&(O=_,_=v(_,b.start)),i(_.end,b.end)>0&&(k=v(_,b.end)),$(b.end,_.start,_.end,-1),k&&!O&&(_.lines=k.lines,_.start=k.start,_.end=k.end,k=_),[b,O,k].filter(Boolean)}return[b,_]}function h(_,b,S){$(_.start,b.start,b.end,S),$(_.end,b.start,b.end,S)}function $(_,b,S,M){_.row==(M==1?b:S).row&&(_.column+=M*(S.column-b.column)),_.row+=M*(S.row-b.row)}function v(_,b){var S=_.lines,M=_.end;_.end=f(b);var O=_.end.row-_.start.row,k=S.splice(O,S.length),A=O?b.column:b.column-_.start.column;S.push(k[0].substring(0,A)),k[0]=k[0].substr(A);var T={start:f(b),end:M,lines:k,action:_.action};return T}function w(_,b){b=n(b);for(var S=_.length;S--;){for(var M=_[S],O=0;Othis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(i),this.folds.sort(function(f,n){return-f.range.compareEnd(n.start.row,n.start.column)}),this.range.compareEnd(i.start.row,i.start.column)>0?(this.end.row=i.end.row,this.end.column=i.end.column):this.range.compareStart(i.end.row,i.end.column)<0&&(this.start.row=i.start.row,this.start.column=i.start.column)}else if(i.start.row==this.end.row)this.folds.push(i),this.end.row=i.end.row,this.end.column=i.end.column;else if(i.end.row==this.start.row)this.folds.unshift(i),this.start.row=i.start.row,this.start.column=i.start.column;else throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");i.foldLine=this},c.prototype.containsRow=function(i){return i>=this.start.row&&i<=this.end.row},c.prototype.walk=function(i,f,n){var o=0,r=this.folds,l,a,u,h=!0;f==null&&(f=this.end.row,n=this.end.column);for(var $=0;$0)){var h=s(f,a.start);return u===0?n&&h!==0?-l-2:l:h>0||h===0&&!n?l:-l-1}}return-l-1},i.prototype.add=function(f){var n=!f.isEmpty(),o=this.pointIndex(f.start,n);o<0&&(o=-o-1);var r=this.pointIndex(f.end,n,o);return r<0?r=-r-1:r++,this.ranges.splice(o,r-o,f)},i.prototype.addList=function(f){for(var n=[],o=f.length;o--;)n.push.apply(n,this.add(f[o]));return n},i.prototype.substractPoint=function(f){var n=this.pointIndex(f);if(n>=0)return this.ranges.splice(n,1)},i.prototype.merge=function(){var f=[],n=this.ranges;n=n.sort(function(u,h){return s(u.start,h.start)});for(var o=n[0],r,l=1;l=0},i.prototype.containsPoint=function(f){return this.pointIndex(f)>=0},i.prototype.rangeAtPoint=function(f){var n=this.pointIndex(f);if(n>=0)return this.ranges[n]},i.prototype.clipRows=function(f,n){var o=this.ranges;if(o[0].start.row>n||o[o.length-1].start.row=r)break}if(f.action=="insert")for(var v=l-r,w=-n.column+o.column;ur)break;if($.start.row==r&&$.start.column>=n.column&&($.start.column==n.column&&this.$bias<=0||($.start.column+=w,$.start.row+=v)),$.end.row==r&&$.end.column>=n.column){if($.end.column==n.column&&this.$bias<0)continue;$.end.column==n.column&&w>0&&u$.start.column&&$.end.column==a[u+1].start.column&&($.end.column-=w),$.end.column+=w,$.end.row+=v}}else for(var v=r-l,w=n.column-o.column;ul)break;$.end.rown.column)&&($.end.column=n.column,$.end.row=n.row):($.end.column+=w,$.end.row+=v):$.end.row>l&&($.end.row+=v),$.start.rown.column)&&($.start.column=n.column,$.start.row=n.row):($.start.column+=w,$.start.row+=v):$.start.row>l&&($.start.row+=v)}if(v!=0&&u=o)return u;if(u.end.row>o)return null}return null},this.getNextFoldLine=function(o,r){var l=this.$foldData,a=0;for(r&&(a=l.indexOf(r)),a==-1&&(a=0),a;a=o)return u}return null},this.getFoldedRowCount=function(o,r){for(var l=this.$foldData,a=r-o+1,u=0;u=r){v=o?a-=r-v:a=0);break}else $>=o&&(v>=o?a-=$-v:a-=$-o+1)}return a},this.$addFoldLine=function(o){return this.$foldData.push(o),this.$foldData.sort(function(r,l){return r.start.row-l.start.row}),o},this.addFold=function(o,r){var l=this.$foldData,a=!1,u;o instanceof c?u=o:(u=new c(r,o),u.collapseChildren=r.collapseChildren),this.$clipRangeToDocument(u.range);var h=u.start.row,$=u.start.column,v=u.end.row,w=u.end.column,y=this.getFoldAt(h,$,1),_=this.getFoldAt(v,w,-1);if(y&&_==y)return y.addSubFold(u);y&&!y.range.isStart(h,$)&&this.removeFold(y),_&&!_.range.isEnd(v,w)&&this.removeFold(_);var b=this.getFoldsInRange(u.range);b.length>0&&(this.removeFolds(b),u.collapseChildren||b.forEach(function(k){u.addSubFold(k)}));for(var S=0;S0&&this.foldAll(o.start.row+1,o.end.row,o.collapseChildren-1),o.subFolds=[]},this.expandFolds=function(o){o.forEach(function(r){this.expandFold(r)},this)},this.unfold=function(o,r){var l,a;if(o==null)l=new g(0,0,this.getLength(),0),r==null&&(r=!0);else if(typeof o=="number")l=new g(o,0,o,this.getLine(o).length);else if("row"in o)l=g.fromPoints(o,o);else{if(Array.isArray(o))return a=[],o.forEach(function(h){a=a.concat(this.unfold(h))},this),a;l=o}a=this.getFoldsInRangeList(l);for(var u=a;a.length==1&&g.comparePoints(a[0].start,l.start)<0&&g.comparePoints(a[0].end,l.end)>0;)this.expandFolds(a),a=this.getFoldsInRangeList(l);if(r!=!1?this.removeFolds(a):this.expandFolds(a),u.length)return u},this.isRowFolded=function(o,r){return!!this.getFoldLine(o,r)},this.getRowFoldEnd=function(o,r){var l=this.getFoldLine(o,r);return l?l.end.row:o},this.getRowFoldStart=function(o,r){var l=this.getFoldLine(o,r);return l?l.start.row:o},this.getFoldDisplayLine=function(o,r,l,a,u){a==null&&(a=o.start.row),u==null&&(u=0),r==null&&(r=o.end.row),l==null&&(l=this.getLine(r).length);var h=this.doc,$="";return o.walk(function(v,w,y,_){if(!(wy)break;while(u&&$.test(u.type));u=a.stepBackward()}else u=a.getCurrentToken();return v.end.row=a.getCurrentTokenRow(),v.end.column=a.getCurrentTokenColumn(),v.start.row==v.end.row&&v.start.column>v.end.column?void 0:v}},this.foldAll=function(o,r,l,a){l==null&&(l=1e5);var u=this.foldWidgets;if(!!u){r=r||this.getLength(),o=o||0;for(var h=o;h=o&&(h=$.end.row,$.collapseChildren=l,this.addFold("...",$))}}},this.foldToLevel=function(o){for(this.foldAll();o-- >0;)this.unfold(null,!1)},this.foldAllComments=function(){var o=this;this.foldAll(null,null,null,function(r){for(var l=o.getTokens(r),a=0;a=0;){var h=l[a];if(h==null&&(h=l[a]=this.getFoldWidget(a)),h=="start"){var $=this.getFoldWidgetRange(a);if(u||(u=$),$&&$.end.row>=o)break}a--}return{range:a!==-1&&$,firstRange:u}},this.onFoldWidgetClick=function(o,r){r instanceof f&&(r=r.domEvent);var l={children:r.shiftKey,all:r.ctrlKey||r.metaKey,siblings:r.altKey},a=this.$toggleFoldWidget(o,l);if(!a){var u=r.target||r.srcElement;u&&/ace_fold-widget/.test(u.className)&&(u.className+=" ace_invalid")}},this.$toggleFoldWidget=function(o,r){if(!!this.getFoldWidget){var l=this.getFoldWidget(o),a=this.getLine(o),u=l==="end"?-1:1,h=this.getFoldAt(o,u===-1?0:a.length,u);if(h)return r.children||r.all?this.removeFold(h):this.expandFold(h),h;var $=this.getFoldWidgetRange(o,!0);if($&&!$.isMultiLine()&&(h=this.getFoldAt($.start.row,$.start.column,1),h&&$.isEqual(h.range)))return this.removeFold(h),h;if(r.siblings){var v=this.getParentFoldRangeData(o);if(v.range)var w=v.range.start.row+1,y=v.range.end.row;this.foldAll(w,y,r.all?1e4:0)}else r.children?(y=$?$.end.row:this.getLength(),this.foldAll(o+1,y,r.all?1e4:0)):$&&(r.all&&($.collapseChildren=1e4),this.addFold("...",$));return $}},this.toggleFoldWidget=function(o){var r=this.selection.getCursor().row;r=this.getRowFoldStart(r);var l=this.$toggleFoldWidget(r,{});if(!l){var a=this.getParentFoldRangeData(r,!0);if(l=a.range||a.firstRange,l){r=l.start.row;var u=this.getFoldAt(r,this.getLine(r).length,1);u?this.removeFold(u):this.addFold("...",l)}}},this.updateFoldWidgets=function(o){var r=o.start.row,l=o.end.row-r;if(l===0)this.foldWidgets[r]=null;else if(o.action=="remove")this.foldWidgets.splice(r,l+1,null);else{var a=Array(l+1);a.unshift(r,1),this.foldWidgets.splice.apply(this.foldWidgets,a)}},this.tokenizerUpdateFoldWidgets=function(o){var r=o.data;r.first!=r.last&&this.foldWidgets.length>r.first&&this.foldWidgets.splice(r.first,this.foldWidgets.length)}}p.Folding=n}),ace.define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,p,m){var g=e("../token_iterator").TokenIterator,s=e("../range").Range;function c(){this.findMatchingBracket=function(i,f){if(i.column==0)return null;var n=f||this.getLine(i.row).charAt(i.column-1);if(n=="")return null;var o=n.match(/([\(\[\{])|([\)\]\}])/);return o?o[1]?this.$findClosingBracket(o[1],i):this.$findOpeningBracket(o[2],i):null},this.getBracketRange=function(i){var f=this.getLine(i.row),n=!0,o,r=f.charAt(i.column-1),l=r&&r.match(/([\(\[\{])|([\)\]\}])/);if(l||(r=f.charAt(i.column),i={row:i.row,column:i.column+1},l=r&&r.match(/([\(\[\{])|([\)\]\}])/),n=!1),!l)return null;if(l[1]){var a=this.$findClosingBracket(l[1],i);if(!a)return null;o=s.fromPoints(i,a),n||(o.end.column++,o.start.column--),o.cursor=o.end}else{var a=this.$findOpeningBracket(l[2],i);if(!a)return null;o=s.fromPoints(a,i),n||(o.start.column++,o.end.column--),o.cursor=o.start}return o},this.getMatchingBracketRanges=function(i,f){var n=this.getLine(i.row),o=/([\(\[\{])|([\)\]\}])/,r=!f&&n.charAt(i.column-1),l=r&&r.match(o);if(l||(r=(f===void 0||f)&&n.charAt(i.column),i={row:i.row,column:i.column+1},l=r&&r.match(o)),!l)return null;var a=new s(i.row,i.column-1,i.row,i.column),u=l[1]?this.$findClosingBracket(l[1],i):this.$findOpeningBracket(l[2],i);if(!u)return[a];var h=new s(u.row,u.column,u.row,u.column+1);return[a,h]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(i,f,n){var o=this.$brackets[i],r=1,l=new g(this,f.row,f.column),a=l.getCurrentToken();if(a||(a=l.stepForward()),!!a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)").replace(/-close\b/,"-(close|open)")+")+"));for(var u=f.column-l.getCurrentTokenColumn()-2,h=a.value;;){for(;u>=0;){var $=h.charAt(u);if($==o){if(r-=1,r==0)return{row:l.getCurrentTokenRow(),column:u+l.getCurrentTokenColumn()}}else $==i&&(r+=1);u-=1}do a=l.stepBackward();while(a&&!n.test(a.type));if(a==null)break;h=a.value,u=h.length-1}return null}},this.$findClosingBracket=function(i,f,n){var o=this.$brackets[i],r=1,l=new g(this,f.row,f.column),a=l.getCurrentToken();if(a||(a=l.stepForward()),!!a){n||(n=new RegExp("(\\.?"+a.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)").replace(/-open\b/,"-(close|open)")+")+"));for(var u=f.column-l.getCurrentTokenColumn();;){for(var h=a.value,$=h.length;u<$;){var v=h.charAt(u);if(v==o){if(r-=1,r==0)return{row:l.getCurrentTokenRow(),column:u+l.getCurrentTokenColumn()}}else v==i&&(r+=1);u+=1}do a=l.stepForward();while(a&&!n.test(a.type));if(a==null)break;u=0}return null}},this.getMatchingTags=function(i){var f=new g(this,i.row,i.column),n=this.$findTagName(f);if(!!n){var o=f.stepBackward();return o.value==="<"?this.$findClosingTag(f,n):this.$findOpeningTag(f,n)}},this.$findTagName=function(i){var f=i.getCurrentToken(),n=!1,o=!1;if(f&&f.type.indexOf("tag-name")===-1)do o?f=i.stepBackward():f=i.stepForward(),f&&(f.value==="/>"?o=!0:f.type.indexOf("tag-name")!==-1&&(n=!0));while(f&&!n);return f},this.$findClosingTag=function(i,f){var n,o=f.value,r=f.value,l=0,a=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);f=i.stepForward();var u=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+f.value.length),h=!1;do{if(n=f,n.type.indexOf("tag-close")!==-1&&!h){var $=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);h=!0}if(f=i.stepForward(),f){if(f.value===">"&&!h){var $=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);h=!0}if(f.type.indexOf("tag-name")!==-1){if(o=f.value,r===o){if(n.value==="<")l++;else if(n.value==="")var y=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);else return}}}else if(r===o&&f.value==="/>"&&(l--,l<0))var v=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+2),w=v,y=w,$=new s(u.end.row,u.end.column,u.end.row,u.end.column+1)}}while(f&&l>=0);if(a&&$&&v&&y&&u&&w)return{openTag:new s(a.start.row,a.start.column,$.end.row,$.end.column),closeTag:new s(v.start.row,v.start.column,y.end.row,y.end.column),openTagName:u,closeTagName:w}},this.$findOpeningTag=function(i,f){var n=i.getCurrentToken(),o=f.value,r=0,l=i.getCurrentTokenRow(),a=i.getCurrentTokenColumn(),u=a+2,h=new s(l,a,l,u);i.stepForward();var $=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+f.value.length);if(f.type.indexOf("tag-close")===-1&&(f=i.stepForward()),!(!f||f.value!==">")){var v=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);i.stepBackward(),i.stepBackward();do if(f=n,l=i.getCurrentTokenRow(),a=i.getCurrentTokenColumn(),u=a+f.value.length,n=i.stepBackward(),f){if(f.type.indexOf("tag-name")!==-1){if(o===f.value)if(n.value==="<"){if(r++,r>0){var w=new s(l,a,l,u),y=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1);do f=i.stepForward();while(f&&f.value!==">");var _=new s(i.getCurrentTokenRow(),i.getCurrentTokenColumn(),i.getCurrentTokenRow(),i.getCurrentTokenColumn()+1)}}else n.value===""){for(var b=0,S=n;S;){if(S.type.indexOf("tag-name")!==-1&&S.value===o){r--;break}else if(S.value==="<")break;S=i.stepBackward(),b++}for(var M=0;Mx&&(this.$docRowCache.splice(x,C),this.$screenRowCache.splice(x,C))},T.prototype.$getRowCacheIndex=function(E,C){for(var x=0,L=E.length-1;x<=L;){var q=x+L>>1,N=E[q];if(C>N)x=q+1;else if(C=C));N++);return L=x[N],L?(L.index=N,L.start=q-L.value.length,L):null},T.prototype.setUndoManager=function(E){if(this.$undoManager=E,this.$informUndoManager&&this.$informUndoManager.cancel(),E){var C=this;E.addSession(this),this.$syncInformUndoManager=function(){C.$informUndoManager.cancel(),C.mergeUndoDeltas=!1},this.$informUndoManager=s.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},T.prototype.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},T.prototype.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},T.prototype.getTabString=function(){return this.getUseSoftTabs()?s.stringRepeat(" ",this.getTabSize()):" "},T.prototype.setUseSoftTabs=function(E){this.setOption("useSoftTabs",E)},T.prototype.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},T.prototype.setTabSize=function(E){this.setOption("tabSize",E)},T.prototype.getTabSize=function(){return this.$tabSize},T.prototype.isTabStop=function(E){return this.$useSoftTabs&&E.column%this.$tabSize==0},T.prototype.setNavigateWithinSoftTabs=function(E){this.setOption("navigateWithinSoftTabs",E)},T.prototype.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},T.prototype.setOverwrite=function(E){this.setOption("overwrite",E)},T.prototype.getOverwrite=function(){return this.$overwrite},T.prototype.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},T.prototype.addGutterDecoration=function(E,C){this.$decorations[E]||(this.$decorations[E]=""),this.$decorations[E]+=" "+C,this._signal("changeBreakpoint",{})},T.prototype.removeGutterCustomWidget=function(E){this.$editor&&this.$editor.renderer.$gutterLayer.$removeCustomWidget(E)},T.prototype.addGutterCustomWidget=function(E,C){this.$editor&&this.$editor.renderer.$gutterLayer.$addCustomWidget(E,C)},T.prototype.removeGutterDecoration=function(E,C){this.$decorations[E]=(this.$decorations[E]||"").replace(" "+C,""),this._signal("changeBreakpoint",{})},T.prototype.getBreakpoints=function(){return this.$breakpoints},T.prototype.setBreakpoints=function(E){this.$breakpoints=[];for(var C=0;C0&&(L=!!x.charAt(C-1).match(this.tokenRe)),L||(L=!!x.charAt(C).match(this.tokenRe)),L)var q=this.tokenRe;else if(/^\s+$/.test(x.slice(C-1,C+1)))var q=/\s/;else var q=this.nonTokenRe;var N=C;if(N>0){do N--;while(N>=0&&x.charAt(N).match(q));N++}for(var F=C;FE&&(E=C.screenWidth)}),this.lineWidgetWidth=E},T.prototype.$computeWidth=function(E){if(this.$modified||E){if(this.$modified=!1,this.$useWrapMode)return this.screenWidth=this.$wrapLimit;for(var C=this.doc.getAllLines(),x=this.$rowLengthCache,L=0,q=0,N=this.$foldData[q],F=N?N.start.row:1/0,I=C.length,R=0;RF){if(R=N.end.row+1,R>=I)break;N=this.$foldData[q++],F=N?N.start.row:1/0}x[R]==null&&(x[R]=this.$getStringScreenWidth(C[R])[0]),x[R]>L&&(L=x[R])}this.screenWidth=L}},T.prototype.getLine=function(E){return this.doc.getLine(E)},T.prototype.getLines=function(E,C){return this.doc.getLines(E,C)},T.prototype.getLength=function(){return this.doc.getLength()},T.prototype.getTextRange=function(E){return this.doc.getTextRange(E||this.selection.getRange())},T.prototype.insert=function(E,C){return this.doc.insert(E,C)},T.prototype.remove=function(E){return this.doc.remove(E)},T.prototype.removeFullLines=function(E,C){return this.doc.removeFullLines(E,C)},T.prototype.undoChanges=function(E,C){if(!!E.length){this.$fromUndo=!0;for(var x=E.length-1;x!=-1;x--){var L=E[x];L.action=="insert"||L.action=="remove"?this.doc.revertDelta(L):L.folds&&this.addFolds(L.folds)}!C&&this.$undoSelect&&(E.selectionBefore?this.selection.fromJSON(E.selectionBefore):this.selection.setRange(this.$getUndoSelection(E,!0))),this.$fromUndo=!1}},T.prototype.redoChanges=function(E,C){if(!!E.length){this.$fromUndo=!0;for(var x=0;xE.end.column&&(N.start.column+=I),N.end.row==E.end.row&&N.end.column>E.end.column&&(N.end.column+=I)),F&&N.start.row>=E.end.row&&(N.start.row+=F,N.end.row+=F)}if(N.end=this.insert(N.start,L),q.length){var R=E.start,B=N.start,F=B.row-R.row,I=B.column-R.column;this.addFolds(q.map(function(j){return j=j.clone(),j.start.row==R.row&&(j.start.column+=I),j.end.row==R.row&&(j.end.column+=I),j.start.row+=F,j.end.row+=F,j}))}return N},T.prototype.indentRows=function(E,C,x){x=x.replace(/\t/g,this.getTabString());for(var L=E;L<=C;L++)this.doc.insertInLine({row:L,column:0},x)},T.prototype.outdentRows=function(E){for(var C=E.collapseRows(),x=new r(0,0,0,0),L=this.getTabSize(),q=C.start.row;q<=C.end.row;++q){var N=this.getLine(q);x.start.row=q,x.end.row=q;for(var F=0;F0){var L=this.getRowFoldEnd(C+x);if(L>this.doc.getLength()-1)return 0;var q=L-C}else{E=this.$clipRowToDocument(E),C=this.$clipRowToDocument(C);var q=C-E+1}var N=new r(E,0,C,Number.MAX_VALUE),F=this.getFoldsInRange(N).map(function(R){return R=R.clone(),R.start.row+=q,R.end.row+=q,R}),I=x==0?this.doc.getLines(E,C):this.doc.removeFullLines(E,C);return this.doc.insertFullLines(E+q,I),F.length&&this.addFolds(F),q},T.prototype.moveLinesUp=function(E,C){return this.$moveLines(E,C,-1)},T.prototype.moveLinesDown=function(E,C){return this.$moveLines(E,C,1)},T.prototype.duplicateLines=function(E,C){return this.$moveLines(E,C,0)},T.prototype.$clipRowToDocument=function(E){return Math.max(0,Math.min(E,this.doc.getLength()-1))},T.prototype.$clipColumnToRow=function(E,C){return C<0?0:Math.min(this.doc.getLine(E).length,C)},T.prototype.$clipPositionToDocument=function(E,C){if(C=Math.max(0,C),E<0)E=0,C=0;else{var x=this.doc.getLength();E>=x?(E=x-1,C=this.doc.getLine(x-1).length):C=Math.min(this.doc.getLine(E).length,C)}return{row:E,column:C}},T.prototype.$clipRangeToDocument=function(E){E.start.row<0?(E.start.row=0,E.start.column=0):E.start.column=this.$clipColumnToRow(E.start.row,E.start.column);var C=this.doc.getLength()-1;return E.end.row>C?(E.end.row=C,E.end.column=this.doc.getLine(C).length):E.end.column=this.$clipColumnToRow(E.end.row,E.end.column),E},T.prototype.setUseWrapMode=function(E){if(E!=this.$useWrapMode){if(this.$useWrapMode=E,this.$modified=!0,this.$resetRowCache(0),E){var C=this.getLength();this.$wrapData=Array(C),this.$updateWrapData(0,C-1)}this._signal("changeWrapMode")}},T.prototype.getUseWrapMode=function(){return this.$useWrapMode},T.prototype.setWrapLimitRange=function(E,C){(this.$wrapLimitRange.min!==E||this.$wrapLimitRange.max!==C)&&(this.$wrapLimitRange={min:E,max:C},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode"))},T.prototype.adjustWrapLimit=function(E,C){var x=this.$wrapLimitRange;x.max<0&&(x={min:C,max:C});var L=this.$constrainWrapLimit(E,x.min,x.max);return L!=this.$wrapLimit&&L>1?(this.$wrapLimit=L,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},T.prototype.$constrainWrapLimit=function(E,C,x){return C&&(E=Math.max(C,E)),x&&(E=Math.min(x,E)),E},T.prototype.getWrapLimit=function(){return this.$wrapLimit},T.prototype.setWrapLimit=function(E){this.setWrapLimitRange(E,E)},T.prototype.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},T.prototype.$updateInternalDataOnChange=function(E){var C=this.$useWrapMode,x=E.action,L=E.start,q=E.end,N=L.row,F=q.row,I=F-N,R=null;if(this.$updating=!0,I!=0)if(x==="remove"){this[C?"$wrapData":"$rowLengthCache"].splice(N,I);var B=this.$foldData;R=this.getFoldsInRange(E),this.removeFolds(R);var D=this.getFoldLine(q.row),P=0;if(D){D.addRemoveChars(q.row,q.column,L.column-q.column),D.shiftRow(-I);var j=this.getFoldLine(N);j&&j!==D&&(j.merge(D),D=j),P=B.indexOf(D)+1}for(P;P=q.row&&D.shiftRow(-I)}F=N}else{var V=Array(I);V.unshift(N,0);var W=C?this.$wrapData:this.$rowLengthCache;W.splice.apply(W,V);var B=this.$foldData,D=this.getFoldLine(N),P=0;if(D){var H=D.range.compareInside(L.row,L.column);H==0?(D=D.split(L.row,L.column),D&&(D.shiftRow(I),D.addRemoveChars(F,0,q.column-L.column))):H==-1&&(D.addRemoveChars(N,0,q.column-L.column),D.shiftRow(I)),P=B.indexOf(D)+1}for(P;P=N&&D.shiftRow(I)}}else{I=Math.abs(E.start.column-E.end.column),x==="remove"&&(R=this.getFoldsInRange(E),this.removeFolds(R),I=-I);var D=this.getFoldLine(N);D&&D.addRemoveChars(N,L.column,I)}return C&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,C?this.$updateWrapData(N,F):this.$updateRowLengthCache(N,F),R},T.prototype.$updateRowLengthCache=function(E,C){this.$rowLengthCache[E]=null,this.$rowLengthCache[C]=null},T.prototype.$updateWrapData=function(E,C){var x=this.doc.getAllLines(),L=this.getTabSize(),q=this.$wrapData,N=this.$wrapLimit,F,I,R=E;for(C=Math.min(C,x.length-1);R<=C;)I=this.getFoldLine(R,I),I?(F=[],I.walk(function(B,D,P,j){var V;if(B!=null){V=this.$getDisplayTokens(B,F.length),V[0]=_;for(var W=1;WC-j;){var V=N+C-j;if(E[V-1]>=M&&E[V]>=M){P(V);continue}if(E[V]==_||E[V]==b){for(V;V!=N-1&&E[V]!=_;V--);if(V>N){P(V);continue}for(V=N+C,V;V>2)),N-1);V>W&&E[V]<_;)V--;if(I){for(;V>W&&E[V]<_;)V--;for(;V>W&&E[V]==S;)V--}else for(;V>W&&E[V]W){P(++V);continue}V=N+C,E[V]==y&&V--,P(V-j)}return L},T.prototype.$getDisplayTokens=function(E,C){var x=[],L;C=C||0;for(var q=0;q39&&N<48||N>57&&N<64?x.push(S):N>=4352&&A(N)?x.push(w,y):x.push(w)}return x},T.prototype.$getStringScreenWidth=function(E,C,x){if(C==0)return[0,0];C==null&&(C=1/0),x=x||0;var L,q;for(q=0;q=4352&&A(L)?x+=2:x+=1,!(x>C));q++);return[x,q]},T.prototype.getRowLength=function(E){var C=1;return this.lineWidgets&&(C+=this.lineWidgets[E]&&this.lineWidgets[E].rowCount||0),!this.$useWrapMode||!this.$wrapData[E]?C:this.$wrapData[E].length+C},T.prototype.getRowLineCount=function(E){return!this.$useWrapMode||!this.$wrapData[E]?1:this.$wrapData[E].length+1},T.prototype.getRowWrapIndent=function(E){if(this.$useWrapMode){var C=this.screenToDocumentPosition(E,Number.MAX_VALUE),x=this.$wrapData[C.row];return x.length&&x[0]=0)var I=B[D],q=this.$docRowCache[D],j=E>B[P-1];else var j=!P;for(var V=this.getLength()-1,W=this.getNextFoldLine(q),H=W?W.start.row:1/0;I<=E&&(R=this.getRowLength(q),!(I+R>E||q>=V));)I+=R,q++,q>H&&(q=W.end.row+1,W=this.getNextFoldLine(q,W),H=W?W.start.row:1/0),j&&(this.$docRowCache.push(q),this.$screenRowCache.push(I));if(W&&W.start.row<=q)L=this.getFoldDisplayLine(W),q=W.start.row;else{if(I+R<=E||q>V)return{row:V,column:this.getLine(V).length};L=this.getLine(q),W=null}var z=0,U=Math.floor(E-I);if(this.$useWrapMode){var Z=this.$wrapData[q];Z&&(F=Z[U],U>0&&Z.length&&(z=Z.indent,N=Z[U-1]||Z[Z.length-1],L=L.substring(N)))}return x!==void 0&&this.$bidiHandler.isBidiRow(I+U,q,U)&&(C=this.$bidiHandler.offsetToCol(x)),N+=this.$getStringScreenWidth(L,C-z)[1],this.$useWrapMode&&N>=F&&(N=F-1),W?W.idxToPosition(N):{row:q,column:N}},T.prototype.documentToScreenPosition=function(E,C){if(typeof C=="undefined")var x=this.$clipPositionToDocument(E.row,E.column);else x=this.$clipPositionToDocument(E,C);E=x.row,C=x.column;var L=0,q=null,N=null;N=this.getFoldAt(E,C,1),N&&(E=N.start.row,C=N.start.column);var F,I=0,R=this.$docRowCache,B=this.$getRowCacheIndex(R,E),D=R.length;if(D&&B>=0)var I=R[B],L=this.$screenRowCache[B],P=E>R[D-1];else var P=!D;for(var j=this.getNextFoldLine(I),V=j?j.start.row:1/0;I=V){if(F=j.end.row+1,F>E)break;j=this.getNextFoldLine(F,j),V=j?j.start.row:1/0}else F=I+1;L+=this.getRowLength(I),I=F,P&&(this.$docRowCache.push(I),this.$screenRowCache.push(L))}var W="";j&&I>=V?(W=this.getFoldDisplayLine(j,E,C),q=j.start.row):(W=this.getLine(E).substring(0,C),q=E);var H=0;if(this.$useWrapMode){var z=this.$wrapData[q];if(z){for(var U=0;W.length>=z[U];)L++,U++;W=W.substring(z[U-1]||0,W.length),H=U>0?z.indent:0}}return this.lineWidgets&&this.lineWidgets[I]&&this.lineWidgets[I].rowsAbove&&(L+=this.lineWidgets[I].rowsAbove),{row:L,column:H+this.$getStringScreenWidth(W)[0]}},T.prototype.documentToScreenColumn=function(E,C){return this.documentToScreenPosition(E,C).column},T.prototype.documentToScreenRow=function(E,C){return this.documentToScreenPosition(E,C).row},T.prototype.getScreenLength=function(){var E=0,C=null;if(this.$useWrapMode)for(var q=this.$wrapData.length,N=0,L=0,C=this.$foldData[L++],F=C?C.start.row:1/0;NF&&(N=C.end.row+1,C=this.$foldData[L++],F=C?C.start.row:1/0)}else{E=this.getLength();for(var x=this.$foldData,L=0;Lx));N++);return[L,N]})},T.prototype.getPrecedingCharacter=function(){var E=this.selection.getCursor();if(E.column===0)return E.row===0?"":this.doc.getNewLineCharacter();var C=this.getLine(E.row);return C[E.column-1]},T.prototype.destroy=function(){this.destroyed||(this.bgTokenizer.setDocument(null),this.bgTokenizer.cleanup(),this.destroyed=!0),this.endOperation(),this.$stopWorker(),this.removeAllListeners(),this.doc&&this.doc.off("change",this.$onChange),this.selection&&(this.selection.off("changeCursor",this.$onSelectionChange),this.selection.off("changeSelection",this.$onSelectionChange)),this.selection.detach()},T}();v.$uid=0,v.prototype.$modes=i.$modes,v.prototype.getValue=v.prototype.toString,v.prototype.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},v.prototype.$overwrite=!1,v.prototype.$mode=null,v.prototype.$modeId=null,v.prototype.$scrollTop=0,v.prototype.$scrollLeft=0,v.prototype.$wrapLimit=80,v.prototype.$useWrapMode=!1,v.prototype.$wrapLimitRange={min:null,max:null},v.prototype.lineWidgets=null,v.prototype.isFullWidth=A,g.implement(v.prototype,f);var w=1,y=2,_=3,b=4,S=9,M=10,O=11,k=12;function A(T){return T<4352?!1:T>=4352&&T<=4447||T>=4515&&T<=4519||T>=4602&&T<=4607||T>=9001&&T<=9002||T>=11904&&T<=11929||T>=11931&&T<=12019||T>=12032&&T<=12245||T>=12272&&T<=12283||T>=12288&&T<=12350||T>=12353&&T<=12438||T>=12441&&T<=12543||T>=12549&&T<=12589||T>=12593&&T<=12686||T>=12688&&T<=12730||T>=12736&&T<=12771||T>=12784&&T<=12830||T>=12832&&T<=12871||T>=12880&&T<=13054||T>=13056&&T<=19903||T>=19968&&T<=42124||T>=42128&&T<=42182||T>=43360&&T<=43388||T>=44032&&T<=55203||T>=55216&&T<=55238||T>=55243&&T<=55291||T>=63744&&T<=64255||T>=65040&&T<=65049||T>=65072&&T<=65106||T>=65108&&T<=65126||T>=65128&&T<=65131||T>=65281&&T<=65376||T>=65504&&T<=65510}e("./edit_session/folding").Folding.call(v.prototype),e("./edit_session/bracket_match").BracketMatch.call(v.prototype),i.defineOptions(v.prototype,"session",{wrap:{set:function(T){if(!T||T=="off"?T=!1:T=="free"?T=!0:T=="printMargin"?T=-1:typeof T=="string"&&(T=parseInt(T,10)||!1),this.$wrap!=T)if(this.$wrap=T,!T)this.setUseWrapMode(!1);else{var E=typeof T=="number"?T:null;this.setWrapLimitRange(E,E),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(T){T=T=="auto"?this.$mode.type!="text":T!="text",T!=this.$wrapAsCode&&(this.$wrapAsCode=T,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(T){this.$useWorker=T,this.$stopWorker(),T&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(T){T=parseInt(T),T>0&&this.$tabSize!==T&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=T,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(T){this.setFoldStyle(T)},handlesSet:!0},overwrite:{set:function(T){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(T){this.doc.setNewLineMode(T)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(T){this.setMode(T)},get:function(){return this.$modeId},handlesSet:!0}}),p.EditSession=v}),ace.define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,p,m){var g=e("./lib/lang"),s=e("./lib/oop"),c=e("./range").Range,i=function(){function r(){this.$options={}}return r.prototype.set=function(l){return s.mixin(this.$options,l),this},r.prototype.getOptions=function(){return g.copyObject(this.$options)},r.prototype.setOptions=function(l){this.$options=l},r.prototype.find=function(l){var a=this.$options,u=this.$matchIterator(l,a);if(!u)return!1;var h=null;return u.forEach(function($,v,w,y){return h=new c($,v,w,y),v==y&&a.start&&a.start.start&&a.skipCurrent!=!1&&h.isEqual(a.start)?(h=null,!1):!0}),h},r.prototype.findAll=function(l){var a=this.$options;if(!a.needle)return[];this.$assembleRegExp(a);var u=a.range,h=u?l.getLines(u.start.row,u.end.row):l.doc.getAllLines(),$=[],v=a.re;if(a.$isMultiLine){var w=v.length,y=h.length-w,_;e:for(var b=v.offset||0;b<=y;b++){for(var S=0;Sk||($.push(_=new c(b,k,b+w-1,A)),w>2&&(b=b+w-2))}}else for(var T,E=0;EE&&(E=x),$.push(new c(T.startRow,T.startCol,T.endRow,T.endCol))}}else{T=g.getMatchOffsets(h[E],v);for(var S=0;SN&&$[S].end.row==F;)S--;for($=$.slice(E,S+1),E=0,S=$.length;E=$){u+="\\";break}var w=l.charCodeAt(h);switch(w){case a.Backslash:u+="\\";break;case a.n:u+=` +`;break;case a.t:u+=" ";break}continue}if(v===a.DollarSign){if(h++,h>=$){u+="$";break}var y=l.charCodeAt(h);if(y===a.DollarSign){u+="$$";continue}if(y===a.Digit0||y===a.Ampersand){u+="$&";continue}if(a.Digit1<=y&&y<=a.Digit9){u+="$"+l[h];continue}}u+=l[h]}return u||l},r.prototype.replace=function(l,a){var u=this.$options,h=this.$assembleRegExp(u);if(u.$isMultiLine)return a;if(!!h){var $=this.$isMultilineSearch(u);$&&(l=l.replace(/\r\n|\r|\n/g,` +`));var v=h.exec(l);if(!v||!$&&v[0].length!=l.length)return null;if(a=u.regExp?this.parseReplaceString(a):a.replace(/\$/g,"$$$$"),a=l.replace(h,a),u.preserveCase){a=a.split("");for(var w=Math.min(l.length,l.length);w--;){var y=l[w];y&&y.toLowerCase()!=y?a[w]=a[w].toUpperCase():a[w]=a[w].toLowerCase()}a=a.join("")}return a}},r.prototype.$assembleRegExp=function(l,a){if(l.needle instanceof RegExp)return l.re=l.needle;var u=l.needle;if(!l.needle)return l.re=!1;l.regExp||(u=g.escapeRegExp(u));var h=l.caseSensitive?"gm":"gmi";try{new RegExp(u,"u"),l.$supportsUnicodeFlag=!0,h+="u"}catch{l.$supportsUnicodeFlag=!1}if(l.wholeWord&&(u=f(u,l)),l.$isMultiLine=!a&&/[\n\r]/.test(u),l.$isMultiLine)return l.re=this.$assembleMultilineRegExp(u,h);try{var $=new RegExp(u,h)}catch{$=!1}return l.re=$},r.prototype.$assembleMultilineRegExp=function(l,a){for(var u=l.replace(/\r\n|\r|\n/g,`$ +^`).split(` +`),h=[],$=0;$h);y++){var _=l.getLine(w++);$=$==null?_:$+` +`+_}var b=a.exec($);if(a.lastIndex=0,b){var S=$.slice(0,b.index).split(` +`),M=b[0].split(` +`),O=u+S.length-1,k=S[S.length-1].length,A=O+M.length-1,T=M.length==1?k+M[0].length:M[M.length-1].length;return{startRow:O,startCol:k,endRow:A,endCol:T}}}return null},r.prototype.$multiLineBackward=function(l,a,u,h,$){for(var v,w=o(l,h),y=l.getLine(h).length-u,_=h;_>=$;){for(var b=0;b=$;b++){var S=l.getLine(_--);v=v==null?S:S+` +`+v}var M=n(v,a,y);if(M){var O=v.slice(0,M.index).split(` +`),k=M[0].split(` +`),A=_+O.length,T=O[O.length-1].length,E=A+k.length-1,C=k.length==1?T+k[0].length:k[k.length-1].length;return{startRow:A,startCol:T,endRow:E,endCol:C}}}return null},r.prototype.$matchIterator=function(l,a){var u=this.$assembleRegExp(a);if(!u)return!1;var h=this.$isMultilineSearch(a),$=this.$multiLineForward,v=this.$multiLineBackward,w=a.backwards==!0,y=a.skipCurrent!=!1,_=u.unicode,b=a.range,S=a.start;S||(S=b?b[w?"end":"start"]:l.selection.getRange()),S.start&&(S=S[y!=w?"end":"start"]);var M=b?b.start.row:0,O=b?b.end.row:l.getLength()-1;if(w)var k=function(E){var C=S.row;if(!T(C,S.column,E)){for(C--;C>=M;C--)if(T(C,Number.MAX_VALUE,E))return;if(a.wrap!=!1){for(C=O,M=S.row;C>=M;C--)if(T(C,Number.MAX_VALUE,E))return}}};else var k=function(C){var x=S.row;if(!T(x,S.column,C)){for(x=x+1;x<=O;x++)if(T(x,0,C))return;if(a.wrap!=!1){for(x=M,O=S.row;x<=O;x++)if(T(x,0,C))return}}};if(a.$isMultiLine)var A=u.length,T=function(E,C,x){var L=w?E-A+1:E;if(!(L<0||L+A>l.getLength())){var q=l.getLine(L),N=q.search(u[0]);if(!(!w&&NC)&&x(L,N,L+A-1,I))return!0}}};else if(w)var T=function(C,x,L){if(h){var q=v(l,u,x,C,M);if(!q)return!1;if(L(q.startRow,q.startCol,q.endRow,q.endCol))return!0}else{var N=l.getLine(C),F=[],I,R=0;for(u.lastIndex=0;I=u.exec(N);){var B=I[0].length;if(R=I.index,!B){if(R>=N.length)break;u.lastIndex=R+=g.skipEmptyMatch(N,R,_)}if(I.index+B>x)break;F.push(I.index,B)}for(var D=F.length-1;D>=0;D-=2){var P=F[D-1],B=F[D];if(L(C,P,C,P+B))return!0}}};else var T=function(C,x,L){if(u.lastIndex=x,h){var q=$(l,u,C,O);if(q){var N=q.endRow<=O?q.endRow-1:O;N>C&&(C=N)}if(!q)return!1;if(L(q.startRow,q.startCol,q.endRow,q.endCol))return!0}else for(var F=l.getLine(C),I,R;R=u.exec(F);){var B=R[0].length;if(I=R.index,L(C,I,C,I+B))return!0;if(!B&&(u.lastIndex=I+=g.skipEmptyMatch(F,I,_),I>=F.length))return!1}};return{forEach:k}},r}();function f(r,l){var a=g.supportsLookbehind();function u(w,y){y===void 0&&(y=!0);var _=a&&l.$supportsUnicodeFlag?new RegExp("[\\p{L}\\p{N}_]","u"):new RegExp("\\w");return _.test(w)||l.regExp?a&&l.$supportsUnicodeFlag?y?"(?<=^|[^\\p{L}\\p{N}_])":"(?=[^\\p{L}\\p{N}_]|$)":"\\b":""}var h=Array.from(r),$=h[0],v=h[h.length-1];return u($)+r+u(v,!1)}function n(r,l,a){for(var u=null,h=0;h<=r.length;){l.lastIndex=h;var $=l.exec(r);if(!$)break;var v=$.index+$[0].length;if(v>r.length-a)break;(!u||v>u.index+u[0].length)&&(u=$),h=$.index+1}return u}function o(r,l){var a=5e3,u={row:l,column:0},h=r.doc.positionToIndex(u),$=h+a,v=r.doc.indexToPosition($),w=v.row;return w+1}p.Search=i}),ace.define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,p,m){var g=this&&this.__extends||function(){var r=function(l,a){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(u,h){u.__proto__=h}||function(u,h){for(var $ in h)Object.prototype.hasOwnProperty.call(h,$)&&(u[$]=h[$])},r(l,a)};return function(l,a){if(typeof a!="function"&&a!==null)throw new TypeError("Class extends value "+String(a)+" is not a constructor or null");r(l,a);function u(){this.constructor=l}l.prototype=a===null?Object.create(a):(u.prototype=a.prototype,new u)}}(),s=e("../lib/keys"),c=e("../lib/useragent"),i=s.KEY_MODS,f=function(){function r(l,a){this.$init(l,a,!1)}return r.prototype.$init=function(l,a,u){this.platform=a||(c.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(l),this.$singleCommand=u},r.prototype.addCommand=function(l){this.commands[l.name]&&this.removeCommand(l),this.commands[l.name]=l,l.bindKey&&this._buildKeyHash(l)},r.prototype.removeCommand=function(l,a){var u=l&&(typeof l=="string"?l:l.name);l=this.commands[u],a||delete this.commands[u];var h=this.commandKeyBinding;for(var $ in h){var v=h[$];if(v==l)delete h[$];else if(Array.isArray(v)){var w=v.indexOf(l);w!=-1&&(v.splice(w,1),v.length==1&&(h[$]=v[0]))}}},r.prototype.bindKey=function(l,a,u){if(typeof l=="object"&&l&&(u==null&&(u=l.position),l=l[this.platform]),!!l){if(typeof a=="function")return this.addCommand({exec:a,bindKey:l,name:a.name||l});l.split("|").forEach(function(h){var $="";if(h.indexOf(" ")!=-1){var v=h.split(/\s+/);h=v.pop(),v.forEach(function(_){var b=this.parseKeys(_),S=i[b.hashId]+b.key;$+=($?" ":"")+S,this._addCommandToBinding($,"chainKeys")},this),$+=" "}var w=this.parseKeys(h),y=i[w.hashId]+w.key;this._addCommandToBinding($+y,a,u)},this)}},r.prototype._addCommandToBinding=function(l,a,u){var h=this.commandKeyBinding,$;if(!a)delete h[l];else if(!h[l]||this.$singleCommand)h[l]=a;else{Array.isArray(h[l])?($=h[l].indexOf(a))!=-1&&h[l].splice($,1):h[l]=[h[l]],typeof u!="number"&&(u=n(a));var v=h[l];for($=0;$u)break}v.splice($,0,a)}},r.prototype.addCommands=function(l){l&&Object.keys(l).forEach(function(a){var u=l[a];if(!!u){if(typeof u=="string")return this.bindKey(u,a);typeof u=="function"&&(u={exec:u}),typeof u=="object"&&(u.name||(u.name=a),this.addCommand(u))}},this)},r.prototype.removeCommands=function(l){Object.keys(l).forEach(function(a){this.removeCommand(l[a])},this)},r.prototype.bindKeys=function(l){Object.keys(l).forEach(function(a){this.bindKey(a,l[a])},this)},r.prototype._buildKeyHash=function(l){this.bindKey(l.bindKey,l)},r.prototype.parseKeys=function(l){var a=l.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(y){return y}),u=a.pop(),h=s[u];if(s.FUNCTION_KEYS[h])u=s.FUNCTION_KEYS[h].toLowerCase();else if(a.length){if(a.length==1&&a[0]=="shift")return{key:u.toUpperCase(),hashId:-1}}else return{key:u,hashId:-1};for(var $=0,v=a.length;v--;){var w=s.KEY_MODS[a[v]];if(w==null)return typeof console!="undefined"&&console.error("invalid modifier "+a[v]+" in "+l),!1;$|=w}return{key:u,hashId:$}},r.prototype.findKeyCommand=function(l,a){var u=i[l]+a;return this.commandKeyBinding[u]},r.prototype.handleKeyboard=function(l,a,u,h){if(!(h<0)){var $=i[a]+u,v=this.commandKeyBinding[$];return l.$keyChain&&(l.$keyChain+=" "+$,v=this.commandKeyBinding[l.$keyChain]||v),v&&(v=="chainKeys"||v[v.length-1]=="chainKeys")?(l.$keyChain=l.$keyChain||$,{command:"null"}):(l.$keyChain&&((!a||a==4)&&u.length==1?l.$keyChain=l.$keyChain.slice(0,-$.length-1):(a==-1||h>0)&&(l.$keyChain="")),{command:v})}},r.prototype.getStatusText=function(l,a){return a.$keyChain||""},r}();function n(r){return typeof r=="object"&&r.bindKey&&r.bindKey.position||(r.isDefault?-100:0)}var o=function(r){g(l,r);function l(a,u){var h=r.call(this,a,u)||this;return h.$singleCommand=!0,h}return l}(f);o.call=function(r,l,a){f.prototype.$init.call(r,l,a,!0)},f.call=function(r,l,a){f.prototype.$init.call(r,l,a,!1)},p.HashHandler=o,p.MultiHashHandler=f}),ace.define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var n=function(o,r){return n=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(l,a){l.__proto__=a}||function(l,a){for(var u in a)Object.prototype.hasOwnProperty.call(a,u)&&(l[u]=a[u])},n(o,r)};return function(o,r){if(typeof r!="function"&&r!==null)throw new TypeError("Class extends value "+String(r)+" is not a constructor or null");n(o,r);function l(){this.constructor=o}o.prototype=r===null?Object.create(r):(l.prototype=r.prototype,new l)}}(),s=e("../lib/oop"),c=e("../keyboard/hash_handler").MultiHashHandler,i=e("../lib/event_emitter").EventEmitter,f=function(n){g(o,n);function o(r,l){var a=n.call(this,l,r)||this;return a.byName=a.commands,a.setDefaultHandler("exec",function(u){return u.args?u.command.exec(u.editor,u.args,u.event,!1):u.command.exec(u.editor,{},u.event,!0)}),a}return o.prototype.exec=function(r,l,a){if(Array.isArray(r)){for(var u=r.length;u--;)if(this.exec(r[u],l,a))return!0;return!1}typeof r=="string"&&(r=this.commands[r]);var h={editor:l,command:r,args:a};return this.canExecute(r,l)?(h.returnValue=this._emit("exec",h),this._signal("afterExec",h),h.returnValue!==!1):(this._signal("commandUnavailable",h),!1)},o.prototype.canExecute=function(r,l){return typeof r=="string"&&(r=this.commands[r]),!(!r||l&&l.$readOnly&&!r.readOnly||this.$checkCommandState!=!1&&r.isAvailable&&!r.isAvailable(l))},o.prototype.toggleRecording=function(r){if(!this.$inReplay)return r&&r._emit("changeStatus"),this.recording?(this.macro.pop(),this.off("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(l){this.macro.push([l.command,l.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},o.prototype.replay=function(r){if(!(this.$inReplay||!this.macro)){if(this.recording)return this.toggleRecording(r);try{this.$inReplay=!0,this.macro.forEach(function(l){typeof l=="string"?this.exec(l,r):this.exec(l[0],r,l[1])},this)}finally{this.$inReplay=!1}}},o.prototype.trimMacro=function(r){return r.map(function(l){return typeof l[0]!="string"&&(l[0]=l[0].name),l[1]||(l=l[0]),l})},o}(c);s.implement(f.prototype,i),p.CommandManager=f}),ace.define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,p,m){var g=e("../lib/lang"),s=e("../config"),c=e("../range").Range;function i(n,o){return{win:n,mac:o}}p.commands=[{name:"showSettingsMenu",description:"Show settings menu",bindKey:i("Ctrl-,","Command-,"),exec:function(n){s.loadModule("ace/ext/settings_menu",function(o){o.init(n),n.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",description:"Go to next error",bindKey:i("Alt-E","F4"),exec:function(n){s.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(n,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",description:"Go to previous error",bindKey:i("Alt-Shift-E","Shift-F4"),exec:function(n){s.loadModule("ace/ext/error_marker",function(o){o.showErrorMarker(n,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:i("Ctrl-A","Command-A"),exec:function(n){n.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:i(null,"Ctrl-L"),exec:function(n){n.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:i("Ctrl-L","Command-L"),exec:function(n,o){typeof o=="number"&&!isNaN(o)&&n.gotoLine(o),n.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:i("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(n){n.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:i("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(n){n.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",description:"Toggle fold widget",bindKey:i("F2","F2"),exec:function(n){n.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",description:"Toggle parent fold widget",bindKey:i("Alt-F2","Alt-F2"),exec:function(n){n.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(n){n.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldAllComments",description:"Fold all comments",bindKey:i(null,"Ctrl-Command-Option-0"),exec:function(n){n.session.foldAllComments()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:i("Alt-0","Command-Option-0"),exec:function(n){n.session.foldAll(),n.session.unfold(n.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:i("Alt-Shift-0","Command-Option-Shift-0"),exec:function(n){n.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:i("Ctrl-K","Command-G"),exec:function(n){n.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:i("Ctrl-Shift-K","Command-Shift-G"),exec:function(n){n.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:i("Alt-K","Ctrl-G"),exec:function(n){n.selection.isEmpty()?n.selection.selectWord():n.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:i("Alt-Shift-K","Ctrl-Shift-G"),exec:function(n){n.selection.isEmpty()?n.selection.selectWord():n.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:i("Ctrl-F","Command-F"),exec:function(n){s.loadModule("ace/ext/searchbox",function(o){o.Search(n)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(n){n.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:i("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(n){n.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:i("Ctrl-Home","Command-Home|Command-Up"),exec:function(n){n.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:i("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(n){n.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:i("Up","Up|Ctrl-P"),exec:function(n,o){n.navigateUp(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:i("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(n){n.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:i("Ctrl-End","Command-End|Command-Down"),exec:function(n){n.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:i("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(n){n.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:i("Down","Down|Ctrl-N"),exec:function(n,o){n.navigateDown(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:i("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(n){n.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:i("Ctrl-Left","Option-Left"),exec:function(n){n.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:i("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(n){n.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:i("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(n){n.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:i("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(n){n.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:i("Left","Left|Ctrl-B"),exec:function(n,o){n.navigateLeft(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:i("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(n){n.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:i("Ctrl-Right","Option-Right"),exec:function(n){n.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:i("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(n){n.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:i("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(n){n.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:i("Shift-Right","Shift-Right"),exec:function(n){n.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:i("Right","Right|Ctrl-F"),exec:function(n,o){n.navigateRight(o.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(n){n.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:i(null,"Option-PageDown"),exec:function(n){n.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:i("PageDown","PageDown|Ctrl-V"),exec:function(n){n.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(n){n.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:i(null,"Option-PageUp"),exec:function(n){n.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(n){n.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:i("Ctrl-Up",null),exec:function(n){n.renderer.scrollBy(0,-2*n.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:i("Ctrl-Down",null),exec:function(n){n.renderer.scrollBy(0,2*n.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(n){n.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(n){n.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:i("Ctrl-Alt-E","Command-Option-E"),exec:function(n){n.commands.toggleRecording(n)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:i("Ctrl-Shift-E","Command-Shift-E"),exec:function(n){n.commands.replay(n)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:i("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(n){n.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:i("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(n){n.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:i("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(n){n.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:i(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(n){},readOnly:!0},{name:"cut",description:"Cut",exec:function(n){var o=n.$copyWithEmptySelection&&n.selection.isEmpty(),r=o?n.selection.getLineRange():n.selection.getRange();n._emit("cut",r),r.isEmpty()||n.session.remove(r),n.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(n,o){n.$handlePaste(o)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:i("Ctrl-D","Command-D"),exec:function(n){n.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:i("Ctrl-Shift-D","Command-Shift-D"),exec:function(n){n.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:i("Ctrl-Alt-S","Command-Alt-S"),exec:function(n){n.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:i("Ctrl-/","Command-/"),exec:function(n){n.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:i("Ctrl-Shift-/","Command-Shift-/"),exec:function(n){n.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:i("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(n){n.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:i("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(n){n.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:i("Ctrl-H","Command-Option-F"),exec:function(n){s.loadModule("ace/ext/searchbox",function(o){o.Search(n,!0)})}},{name:"undo",description:"Undo",bindKey:i("Ctrl-Z","Command-Z"),exec:function(n){n.undo()}},{name:"redo",description:"Redo",bindKey:i("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(n){n.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:i("Alt-Shift-Up","Command-Option-Up"),exec:function(n){n.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:i("Alt-Up","Option-Up"),exec:function(n){n.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:i("Alt-Shift-Down","Command-Option-Down"),exec:function(n){n.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:i("Alt-Down","Option-Down"),exec:function(n){n.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:i("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(n){n.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:i("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(n){n.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:i("Shift-Delete",null),exec:function(n){if(n.selection.isEmpty())n.remove("left");else return!1},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:i("Alt-Backspace","Command-Backspace"),exec:function(n){n.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:i("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(n){n.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:i("Ctrl-Shift-Backspace",null),exec:function(n){var o=n.selection.getRange();o.start.column=0,n.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:i("Ctrl-Shift-Delete",null),exec:function(n){var o=n.selection.getRange();o.end.column=Number.MAX_VALUE,n.session.remove(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:i("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(n){n.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:i("Ctrl-Delete","Alt-Delete"),exec:function(n){n.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:i("Shift-Tab","Shift-Tab"),exec:function(n){n.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:i("Tab","Tab"),exec:function(n){n.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:i("Ctrl-[","Ctrl-["),exec:function(n){n.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:i("Ctrl-]","Ctrl-]"),exec:function(n){n.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(n,o){n.insert(o)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(n,o){n.insert(g.stringRepeat(o.text||"",o.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:i(null,"Ctrl-O"),exec:function(n){n.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:i("Alt-Shift-X","Ctrl-T"),exec:function(n){n.transposeLetters()},multiSelectAction:function(n){n.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:i("Ctrl-U","Ctrl-U"),exec:function(n){n.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:i("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(n){n.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"autoindent",description:"Auto Indent",bindKey:i(null,null),exec:function(n){n.autoIndent()},scrollIntoView:"animate"},{name:"expandtoline",description:"Expand to line",bindKey:i("Ctrl-Shift-L","Command-Shift-L"),exec:function(n){var o=n.selection.getRange();o.start.column=o.end.column=0,o.end.row++,n.selection.setRange(o,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"openlink",bindKey:i("Ctrl+F3","F3"),exec:function(n){n.openLink()}},{name:"joinlines",description:"Join lines",bindKey:i(null,null),exec:function(n){for(var o=n.selection.isBackwards(),r=o?n.selection.getSelectionLead():n.selection.getSelectionAnchor(),l=o?n.selection.getSelectionAnchor():n.selection.getSelectionLead(),a=n.session.doc.getLine(r.row).length,u=n.session.doc.getTextRange(n.selection.getRange()),h=u.replace(/\n\s*/," ").length,$=n.session.doc.getLine(r.row),v=r.row+1;v<=l.row+1;v++){var w=g.stringTrimLeft(g.stringTrimRight(n.session.doc.getLine(v)));w.length!==0&&(w=" "+w),$+=w}l.row+10?(n.selection.moveCursorTo(r.row,r.column),n.selection.selectTo(r.row,r.column+h)):(a=n.session.doc.getLine(r.row).length>a?a+1:a,n.selection.moveCursorTo(r.row,a))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:i(null,null),exec:function(n){var o=n.session.doc.getLength()-1,r=n.session.doc.getLine(o).length,l=n.selection.rangeList.ranges,a=[];l.length<1&&(l=[n.selection.getRange()]);for(var u=0;u0||n+o=0&&this.$isCustomWidgetVisible(n-o))return n-o;if(n+o<=this.lines.getLength()-1&&this.$isCustomWidgetVisible(n+o))return n+o;if(n-o>=0&&this.$isFoldWidgetVisible(n-o))return n-o;if(n+o<=this.lines.getLength()-1&&this.$isFoldWidgetVisible(n+o))return n+o}return null},f.prototype.$findNearestAnnotation=function(n){if(this.$isAnnotationVisible(n))return n;for(var o=0;n-o>0||n+o=0&&this.$isAnnotationVisible(n-o))return n-o;if(n+o<=this.lines.getLength()-1&&this.$isAnnotationVisible(n+o))return n+o}return null},f.prototype.$focusFoldWidget=function(n){if(n!=null){var o=this.$getFoldWidget(n);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},f.prototype.$focusCustomWidget=function(n){if(n!=null){var o=this.$getCustomWidget(n);o&&(o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus())}},f.prototype.$focusAnnotation=function(n){if(n!=null){var o=this.$getAnnotation(n);o.classList.add(this.editor.renderer.keyboardFocusClassName),o.focus()}},f.prototype.$blurFoldWidget=function(n){var o=this.$getFoldWidget(n);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},f.prototype.$blurCustomWidget=function(n){var o=this.$getCustomWidget(n);o&&(o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur())},f.prototype.$blurAnnotation=function(n){var o=this.$getAnnotation(n);o.classList.remove(this.editor.renderer.keyboardFocusClassName),o.blur()},f.prototype.$moveFoldWidgetUp=function(){for(var n=this.activeRowIndex;n>0;)if(n--,this.$isFoldWidgetVisible(n)||this.$isCustomWidgetVisible(n)){this.$blurFoldWidget(this.activeRowIndex),this.$blurCustomWidget(this.activeRowIndex),this.activeRowIndex=n,this.$isFoldWidgetVisible(n)?this.$focusFoldWidget(this.activeRowIndex):this.$focusCustomWidget(this.activeRowIndex);return}},f.prototype.$moveFoldWidgetDown=function(){for(var n=this.activeRowIndex;n0;)if(n--,this.$isAnnotationVisible(n)){this.$blurAnnotation(this.activeRowIndex),this.activeRowIndex=n,this.$focusAnnotation(this.activeRowIndex);return}},f.prototype.$moveAnnotationDown=function(){for(var n=this.activeRowIndex;n=C.length&&(C=void 0),{value:C&&C[q++],done:!C}}};throw new TypeError(x?"Object is not iterable.":"Symbol.iterator is not defined.")},s=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/lang"),f=e("./lib/useragent"),n=e("./keyboard/textinput").TextInput,o=e("./mouse/mouse_handler").MouseHandler,r=e("./mouse/fold_handler").FoldHandler,l=e("./keyboard/keybinding").KeyBinding,a=e("./edit_session").EditSession,u=e("./search").Search,h=e("./range").Range,$=e("./lib/event_emitter").EventEmitter,v=e("./commands/command_manager").CommandManager,w=e("./commands/default_commands").commands,y=e("./config"),_=e("./token_iterator").TokenIterator,b=e("./keyboard/gutter_handler").GutterKeyboardHandler,S=e("./config").nls,M=e("./clipboard"),O=e("./lib/keys"),k=e("./lib/event"),A=e("./tooltip").HoverTooltip,T=function(){function C(x,L,q){this.id="editor"+ ++C.$uid,this.session,this.$toDestroy=[];var N=x.getContainerElement();this.container=N,this.renderer=x,this.commands=new v(f.isMac?"mac":"win",w),typeof document=="object"&&(this.textInput=new n(x.getTextAreaContainer(),this),this.renderer.textarea=this.textInput.getElement(),this.$mouseHandler=new o(this),new r(this)),this.keyBinding=new l(this),this.$search=new u().set({wrap:!0}),this.$historyTracker=this.$historyTracker.bind(this),this.commands.on("exec",this.$historyTracker),this.$initOperationListeners(),this._$emitInputEvent=i.delayedCall(function(){this._signal("input",{}),this.session&&!this.session.destroyed&&this.session.bgTokenizer.scheduleStart()}.bind(this)),this.on("change",function(F,I){I._$emitInputEvent.schedule(31)}),this.setSession(L||q&&q.session||new a("")),y.resetOptions(this),q&&this.setOptions(q),y._signal("editor",this)}return C.prototype.$initOperationListeners=function(){this.commands.on("exec",this.startOperation.bind(this),!0),this.commands.on("afterExec",this.endOperation.bind(this),!0)},C.prototype.startOperation=function(x){this.session.startOperation(x)},C.prototype.endOperation=function(x){this.session.endOperation(x)},C.prototype.onStartOperation=function(x){this.curOp=this.session.curOp,this.curOp.scrollTop=this.renderer.scrollTop,this.prevOp=this.session.prevOp,x||(this.previousCommand=null)},C.prototype.onEndOperation=function(x){if(this.curOp&&this.session){if(x&&x.returnValue===!1){this.curOp=null;return}if(this._signal("beforeEndOperation"),!this.curOp)return;var L=this.curOp.command,q=L&&L.scrollIntoView;if(q){switch(q){case"center-animate":q="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var N=this.selection.getRange(),F=this.renderer.layerConfig;(N.start.row>=F.lastRow||N.end.row<=F.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break}q=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.$lastSel=this.session.selection.toJSON(),this.prevOp=this.curOp,this.curOp=null}},C.prototype.$historyTracker=function(x){if(!!this.$mergeUndoDeltas){var L=this.prevOp,q=this.$mergeableCommands,N=L.command&&x.command.name==L.command.name;if(x.command.name=="insertstring"){var F=x.args;this.mergeNextCommand===void 0&&(this.mergeNextCommand=!0),N=N&&this.mergeNextCommand&&(!/\s/.test(F)||/\s/.test(L.args)),this.mergeNextCommand=!0}else N=N&&q.indexOf(x.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(N=!1),N?this.session.mergeUndoDeltas=!0:q.indexOf(x.command.name)!==-1&&(this.sequenceStartTime=Date.now())}},C.prototype.setKeyboardHandler=function(x,L){if(x&&typeof x=="string"&&x!="ace"){this.$keybindingId=x;var q=this;y.loadModule(["keybinding",x],function(N){q.$keybindingId==x&&q.keyBinding.setKeyboardHandler(N&&N.handler),L&&L()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(x),L&&L()},C.prototype.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},C.prototype.setSession=function(x){if(this.session!=x){this.curOp&&this.endOperation(),this.curOp={};var L=this.session;if(L){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange),this.session.off("startOperation",this.$onStartOperation),this.session.off("endOperation",this.$onEndOperation);var q=this.session.getSelection();q.off("changeCursor",this.$onCursorChange),q.off("changeSelection",this.$onSelectionChange)}this.session=x,x?(this.$onDocumentChange=this.onDocumentChange.bind(this),x.on("change",this.$onDocumentChange),this.renderer.setSession(x),this.$onChangeMode=this.onChangeMode.bind(this),x.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),x.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),x.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),x.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),x.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),x.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=x.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.$onStartOperation=this.onStartOperation.bind(this),this.session.on("startOperation",this.$onStartOperation),this.$onEndOperation=this.onEndOperation.bind(this),this.session.on("endOperation",this.$onEndOperation),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(x)),this._signal("changeSession",{session:x,oldSession:L}),this.curOp=null,L&&L._signal("changeEditor",{oldEditor:this}),L&&(L.$editor=null),x&&x._signal("changeEditor",{editor:this}),x&&(x.$editor=this),x&&!x.destroyed&&x.bgTokenizer.scheduleStart()}},C.prototype.getSession=function(){return this.session},C.prototype.setValue=function(x,L){return this.session.doc.setValue(x),L?L==1?this.navigateFileEnd():L==-1&&this.navigateFileStart():this.selectAll(),x},C.prototype.getValue=function(){return this.session.getValue()},C.prototype.getSelection=function(){return this.selection},C.prototype.resize=function(x){this.renderer.onResize(x)},C.prototype.setTheme=function(x,L){this.renderer.setTheme(x,L)},C.prototype.getTheme=function(){return this.renderer.getTheme()},C.prototype.setStyle=function(x,L){this.renderer.setStyle(x,L)},C.prototype.unsetStyle=function(x){this.renderer.unsetStyle(x)},C.prototype.getFontSize=function(){return this.getOption("fontSize")||c.computedStyle(this.container).fontSize},C.prototype.setFontSize=function(x){this.setOption("fontSize",x)},C.prototype.$highlightBrackets=function(){if(!this.$highlightPending){var x=this;this.$highlightPending=!0,setTimeout(function(){x.$highlightPending=!1;var L=x.session;if(!(!L||L.destroyed)){L.$bracketHighlight&&(L.$bracketHighlight.markerIds.forEach(function(j){L.removeMarker(j)}),L.$bracketHighlight=null);var q=x.getCursorPosition(),N=x.getKeyboardHandler(),F=N&&N.$getDirectionForHighlight&&N.$getDirectionForHighlight(x),I=L.getMatchingBracketRanges(q,F);if(!I){var R=new _(L,q.row,q.column),B=R.getCurrentToken();if(B&&/\b(?:tag-open|tag-name)/.test(B.type)){var D=L.getMatchingTags(q);D&&(I=[D.openTagName.isEmpty()?D.openTag:D.openTagName,D.closeTagName.isEmpty()?D.closeTag:D.closeTagName])}}if(!I&&L.$mode.getMatching&&(I=L.$mode.getMatching(x.session)),!I){x.getHighlightIndentGuides()&&x.renderer.$textLayer.$highlightIndentGuide();return}var P="ace_bracket";Array.isArray(I)?I.length==1&&(P="ace_error_bracket"):I=[I],I.length==2&&(h.comparePoints(I[0].end,I[1].start)==0?I=[h.fromPoints(I[0].start,I[1].end)]:h.comparePoints(I[0].start,I[1].end)==0&&(I=[h.fromPoints(I[1].start,I[0].end)])),L.$bracketHighlight={ranges:I,markerIds:I.map(function(j){return L.addMarker(j,P,"text")})},x.getHighlightIndentGuides()&&x.renderer.$textLayer.$highlightIndentGuide()}},50)}},C.prototype.focus=function(){this.textInput.focus()},C.prototype.isFocused=function(){return this.textInput.isFocused()},C.prototype.blur=function(){this.textInput.blur()},C.prototype.onFocus=function(x){this.$isFocused||(this.$isFocused=!0,this.renderer.showCursor(),this.renderer.visualizeFocus(),this._emit("focus",x))},C.prototype.onBlur=function(x){!this.$isFocused||(this.$isFocused=!1,this.renderer.hideCursor(),this.renderer.visualizeBlur(),this._emit("blur",x))},C.prototype.$cursorChange=function(){this.renderer.updateCursor(),this.$highlightBrackets(),this.$updateHighlightActiveLine()},C.prototype.onDocumentChange=function(x){var L=this.session.$useWrapMode,q=x.start.row==x.end.row?x.end.row:1/0;this.renderer.updateLines(x.start.row,q,L),this._signal("change",x),this.$cursorChange()},C.prototype.onTokenizerUpdate=function(x){var L=x.data;this.renderer.updateLines(L.first,L.last)},C.prototype.onScrollTopChange=function(){this.renderer.scrollToY(this.session.getScrollTop())},C.prototype.onScrollLeftChange=function(){this.renderer.scrollToX(this.session.getScrollLeft())},C.prototype.onCursorChange=function(){this.$cursorChange(),this._signal("changeSelection")},C.prototype.$updateHighlightActiveLine=function(){var x=this.getSession(),L;if(this.$highlightActiveLine&&((this.$selectionStyle!="line"||!this.selection.isMultiLine())&&(L=this.getCursorPosition()),this.renderer.theme&&this.renderer.theme.$selectionColorConflict&&!this.selection.isEmpty()&&(L=!1),this.renderer.$maxLines&&this.session.getLength()===1&&!(this.renderer.$minLines>1)&&(L=!1)),x.$highlightLineMarker&&!L)x.removeMarker(x.$highlightLineMarker.id),x.$highlightLineMarker=null;else if(!x.$highlightLineMarker&&L){var q=new h(L.row,L.column,L.row,1/0);q.id=x.addMarker(q,"ace_active-line","screenLine"),x.$highlightLineMarker=q}else L&&(x.$highlightLineMarker.start.row=L.row,x.$highlightLineMarker.end.row=L.row,x.$highlightLineMarker.start.column=L.column,x._signal("changeBackMarker"))},C.prototype.onSelectionChange=function(x){var L=this.session;if(L.$selectionMarker&&L.removeMarker(L.$selectionMarker),L.$selectionMarker=null,this.selection.isEmpty())this.$updateHighlightActiveLine();else{var q=this.selection.getRange(),N=this.getSelectionStyle();L.$selectionMarker=L.addMarker(q,"ace_selection",N)}var F=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(F),this._signal("changeSelection")},C.prototype.$getSelectionHighLightRegexp=function(){var x=this.session,L=this.getSelectionRange();if(!(L.isEmpty()||L.isMultiLine())){var q=L.start.column,N=L.end.column,F=x.getLine(L.start.row),I=F.substring(q,N);if(!(I.length>5e3||!/[\w\d]/.test(I))){var R=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:I}),B=F.substring(q-1,N+1);if(!!R.test(B))return R}}},C.prototype.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},C.prototype.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},C.prototype.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},C.prototype.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},C.prototype.onChangeMode=function(x){this.renderer.updateText(),this._emit("changeMode",x)},C.prototype.onChangeWrapLimit=function(){this.renderer.updateFull()},C.prototype.onChangeWrapMode=function(){this.renderer.onResize(!0)},C.prototype.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},C.prototype.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},C.prototype.getCopyText=function(){var x=this.getSelectedText(),L=this.session.doc.getNewLineCharacter(),q=!1;if(!x&&this.$copyWithEmptySelection){q=!0;for(var N=this.selection.getAllRanges(),F=0;Fj.search(/\S|$/)){var B=j.substr(F.column).search(/\S|$/);q.doc.removeInLine(F.row,F.column,F.column+B)}}this.clearSelection();var D=F.column,P=q.getState(F.row),j=q.getLine(F.row),V=N.checkOutdent(P,j,x);if(q.insert(F,x),I&&I.selection&&(I.selection.length==2?this.selection.setSelectionRange(new h(F.row,D+I.selection[0],F.row,D+I.selection[1])):this.selection.setSelectionRange(new h(F.row+I.selection[0],I.selection[1],F.row+I.selection[2],I.selection[3]))),this.$enableAutoIndent){if(q.getDocument().isNewLine(x)){var W=N.getNextLineIndent(P,j.slice(0,F.column),q.getTabString());q.insert({row:F.row+1,column:0},W)}V&&N.autoOutdent(P,q,F.row)}},C.prototype.autoIndent=function(){for(var x=this.session,L=x.getMode(),q=this.selection.isEmpty()?[new h(0,0,x.doc.getLength()-1,0)]:this.selection.getAllRanges(),N="",F="",I="",R=x.getTabString(),B=0;B0&&(N=x.getState(j-1),F=x.getLine(j-1),I=L.getNextLineIndent(N,F,R));var V=x.getLine(j),W=L.$getIndent(V);if(I!==W){if(W.length>0){var H=new h(j,0,j,W.length);x.remove(H)}I.length>0&&x.insert({row:j,column:0},I)}L.autoOutdent(N,x,j)}},C.prototype.onTextInput=function(x,L){if(!L)return this.keyBinding.onTextInput(x);this.startOperation({command:{name:"insertstring"}});var q=this.applyComposition.bind(this,x,L);this.selection.rangeCount?this.forEachSelection(q):q(),this.endOperation()},C.prototype.applyComposition=function(x,L){if(L.extendLeft||L.extendRight){var q=this.selection.getRange();q.start.column-=L.extendLeft,q.end.column+=L.extendRight,q.start.column<0&&(q.start.row--,q.start.column+=this.session.getLine(q.start.row).length+1),this.selection.setRange(q),!x&&!q.isEmpty()&&this.remove()}if((x||!this.selection.isEmpty())&&this.insert(x,!0),L.restoreStart||L.restoreEnd){var q=this.selection.getRange();q.start.column-=L.restoreStart,q.end.column-=L.restoreEnd,this.selection.setRange(q)}},C.prototype.onCommandKey=function(x,L,q){return this.keyBinding.onCommandKey(x,L,q)},C.prototype.setOverwrite=function(x){this.session.setOverwrite(x)},C.prototype.getOverwrite=function(){return this.session.getOverwrite()},C.prototype.toggleOverwrite=function(){this.session.toggleOverwrite()},C.prototype.setScrollSpeed=function(x){this.setOption("scrollSpeed",x)},C.prototype.getScrollSpeed=function(){return this.getOption("scrollSpeed")},C.prototype.setDragDelay=function(x){this.setOption("dragDelay",x)},C.prototype.getDragDelay=function(){return this.getOption("dragDelay")},C.prototype.setSelectionStyle=function(x){this.setOption("selectionStyle",x)},C.prototype.getSelectionStyle=function(){return this.getOption("selectionStyle")},C.prototype.setHighlightActiveLine=function(x){this.setOption("highlightActiveLine",x)},C.prototype.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},C.prototype.setHighlightGutterLine=function(x){this.setOption("highlightGutterLine",x)},C.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},C.prototype.setHighlightSelectedWord=function(x){this.setOption("highlightSelectedWord",x)},C.prototype.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},C.prototype.setAnimatedScroll=function(x){this.renderer.setAnimatedScroll(x)},C.prototype.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},C.prototype.setShowInvisibles=function(x){this.renderer.setShowInvisibles(x)},C.prototype.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},C.prototype.setDisplayIndentGuides=function(x){this.renderer.setDisplayIndentGuides(x)},C.prototype.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},C.prototype.setHighlightIndentGuides=function(x){this.renderer.setHighlightIndentGuides(x)},C.prototype.getHighlightIndentGuides=function(){return this.renderer.getHighlightIndentGuides()},C.prototype.setShowPrintMargin=function(x){this.renderer.setShowPrintMargin(x)},C.prototype.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},C.prototype.setPrintMarginColumn=function(x){this.renderer.setPrintMarginColumn(x)},C.prototype.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},C.prototype.setReadOnly=function(x){this.setOption("readOnly",x)},C.prototype.getReadOnly=function(){return this.getOption("readOnly")},C.prototype.setBehavioursEnabled=function(x){this.setOption("behavioursEnabled",x)},C.prototype.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},C.prototype.setWrapBehavioursEnabled=function(x){this.setOption("wrapBehavioursEnabled",x)},C.prototype.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},C.prototype.setShowFoldWidgets=function(x){this.setOption("showFoldWidgets",x)},C.prototype.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},C.prototype.setFadeFoldWidgets=function(x){this.setOption("fadeFoldWidgets",x)},C.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},C.prototype.remove=function(x){this.selection.isEmpty()&&(x=="left"?this.selection.selectLeft():this.selection.selectRight());var L=this.getSelectionRange();if(this.getBehavioursEnabled()){var q=this.session,N=q.getState(L.start.row),F=q.getMode().transformAction(N,"deletion",this,q,L);if(L.end.column===0){var I=q.getTextRange(L);if(I[I.length-1]==` +`){var R=q.getLine(L.end.row);/^\s+$/.test(R)&&(L.end.column=R.length)}}F&&(L=F)}this.session.remove(L),this.clearSelection()},C.prototype.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},C.prototype.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},C.prototype.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},C.prototype.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var x=this.getSelectionRange();x.start.column==x.end.column&&x.start.row==x.end.row&&(x.end.column=0,x.end.row++),this.session.remove(x),this.clearSelection()},C.prototype.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var x=this.getCursorPosition();this.insert(` +`),this.moveCursorToPosition(x)},C.prototype.setGhostText=function(x,L){this.renderer.setGhostText(x,L)},C.prototype.removeGhostText=function(){this.renderer.removeGhostText()},C.prototype.transposeLetters=function(){if(!!this.selection.isEmpty()){var x=this.getCursorPosition(),L=x.column;if(L!==0){var q=this.session.getLine(x.row),N,F;LB.toLowerCase()?1:0});for(var F=new h(0,0,0,0),N=x.first;N<=x.last;N++){var I=L.getLine(N);F.start.row=N,F.end.row=N,F.end.column=I.length,L.replace(F,q[N-x.first])}},C.prototype.toggleCommentLines=function(){var x=this.session.getState(this.getCursorPosition().row),L=this.$getSelectedRows();this.session.getMode().toggleCommentLines(x,this.session,L.first,L.last)},C.prototype.toggleBlockComment=function(){var x=this.getCursorPosition(),L=this.session.getState(x.row),q=this.getSelectionRange();this.session.getMode().toggleBlockComment(L,this.session,q,x)},C.prototype.getNumberAt=function(x,L){var q=/[\-]?[0-9]+(?:\.[0-9]+)?/g;q.lastIndex=0;for(var N=this.session.getLine(x);q.lastIndex=L){var I={value:F[0],start:F.index,end:F.index+F[0].length};return I}}return null},C.prototype.modifyNumber=function(x){var L=this.selection.getCursor().row,q=this.selection.getCursor().column,N=new h(L,q-1,L,q),F=this.session.getTextRange(N);if(!isNaN(parseFloat(F))&&isFinite(F)){var I=this.getNumberAt(L,q);if(I){var R=I.value.indexOf(".")>=0?I.start+I.value.indexOf(".")+1:I.end,B=I.start+I.value.length-R,D=parseFloat(I.value);D*=Math.pow(10,B),R!==I.end&&q=R&&I<=B&&(q=ne,D.selection.clearSelection(),D.moveCursorTo(x,R+N),D.selection.selectTo(x,B+N)),R=B});for(var P=this.$toggleWordPairs,j,V=0;V=B&&R<=D&&W.match(/((?:https?|ftp):\/\/[\S]+)/)){P=W.replace(/[\s:.,'";}\]]+$/,"");break}B=D}}catch(H){q={error:H}}finally{try{V&&!V.done&&(N=j.return)&&N.call(j)}finally{if(q)throw q.error}}return P},C.prototype.openLink=function(){var x=this.selection.getCursor(),L=this.findLinkAt(x.row,x.column);return L&&window.open(L,"_blank"),L!=null},C.prototype.removeLines=function(){var x=this.$getSelectedRows();this.session.removeFullLines(x.first,x.last),this.clearSelection()},C.prototype.duplicateSelection=function(){var x=this.selection,L=this.session,q=x.getRange(),N=x.isBackwards();if(q.isEmpty()){var F=q.start.row;L.duplicateLines(F,F)}else{var I=N?q.start:q.end,R=L.insert(I,L.getTextRange(q));q.start=I,q.end=R,x.setSelectionRange(q,N)}},C.prototype.moveLinesDown=function(){this.$moveLines(1,!1)},C.prototype.moveLinesUp=function(){this.$moveLines(-1,!1)},C.prototype.moveText=function(x,L,q){return this.session.moveText(x,L,q)},C.prototype.copyLinesUp=function(){this.$moveLines(-1,!0)},C.prototype.copyLinesDown=function(){this.$moveLines(1,!0)},C.prototype.$moveLines=function(x,L){var q,N,F=this.selection;if(!F.inMultiSelectMode||this.inVirtualSelectionMode){var I=F.toOrientedRange();q=this.$getSelectedRows(I),N=this.session.$moveLines(q.first,q.last,L?0:x),L&&x==-1&&(N=0),I.moveBy(N,0),F.fromOrientedRange(I)}else{var R=F.rangeList.ranges;F.rangeList.detach(this.session),this.inVirtualSelectionMode=!0;for(var B=0,D=0,P=R.length,j=0;jH+1)break;H=z.last}for(j--,B=this.session.$moveLines(W,H,L?0:x),L&&x==-1&&(V=j+1);V<=j;)R[V].moveBy(B,0),V++;L||(B=0),D+=B}F.fromOrientedRange(F.ranges[0]),F.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},C.prototype.$getSelectedRows=function(x){return x=(x||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(x.start.row),last:this.session.getRowFoldEnd(x.end.row)}},C.prototype.onCompositionStart=function(x){this.renderer.showComposition(x)},C.prototype.onCompositionUpdate=function(x){this.renderer.setCompositionText(x)},C.prototype.onCompositionEnd=function(){this.renderer.hideComposition()},C.prototype.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},C.prototype.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},C.prototype.isRowVisible=function(x){return x>=this.getFirstVisibleRow()&&x<=this.getLastVisibleRow()},C.prototype.isRowFullyVisible=function(x){return x>=this.renderer.getFirstFullyVisibleRow()&&x<=this.renderer.getLastFullyVisibleRow()},C.prototype.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},C.prototype.$moveByPage=function(x,L){var q=this.renderer,N=this.renderer.layerConfig,F=x*Math.floor(N.height/N.lineHeight);L===!0?this.selection.$moveSelection(function(){this.moveCursorBy(F,0)}):L===!1&&(this.selection.moveCursorBy(F,0),this.selection.clearSelection());var I=q.scrollTop;q.scrollBy(0,F*N.lineHeight),L!=null&&q.scrollCursorIntoView(null,.5),q.animateScrolling(I)},C.prototype.selectPageDown=function(){this.$moveByPage(1,!0)},C.prototype.selectPageUp=function(){this.$moveByPage(-1,!0)},C.prototype.gotoPageDown=function(){this.$moveByPage(1,!1)},C.prototype.gotoPageUp=function(){this.$moveByPage(-1,!1)},C.prototype.scrollPageDown=function(){this.$moveByPage(1)},C.prototype.scrollPageUp=function(){this.$moveByPage(-1)},C.prototype.scrollToRow=function(x){this.renderer.scrollToRow(x)},C.prototype.scrollToLine=function(x,L,q,N){this.renderer.scrollToLine(x,L,q,N)},C.prototype.centerSelection=function(){var x=this.getSelectionRange(),L={row:Math.floor(x.start.row+(x.end.row-x.start.row)/2),column:Math.floor(x.start.column+(x.end.column-x.start.column)/2)};this.renderer.alignCursor(L,.5)},C.prototype.getCursorPosition=function(){return this.selection.getCursor()},C.prototype.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},C.prototype.getSelectionRange=function(){return this.selection.getRange()},C.prototype.selectAll=function(){this.selection.selectAll()},C.prototype.clearSelection=function(){this.selection.clearSelection()},C.prototype.moveCursorTo=function(x,L){this.selection.moveCursorTo(x,L)},C.prototype.moveCursorToPosition=function(x){this.selection.moveCursorToPosition(x)},C.prototype.jumpToMatching=function(x,L){var q=this.getCursorPosition(),N=new _(this.session,q.row,q.column),F=N.getCurrentToken(),I=0;F&&F.type.indexOf("tag-name")!==-1&&(F=N.stepBackward());var R=F||N.stepForward();if(!!R){var B,D=!1,P={},j=q.column-R.start,V,W={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(R.value.match(/[{}()\[\]]/g)){for(;j1?P[R.value]++:F.value==="=0;--I)this.$tryReplace(q[I],x)&&N++;return this.selection.setSelectionRange(F),N},C.prototype.$tryReplace=function(x,L){var q=this.session.getTextRange(x);return L=this.$search.replace(q,L),L!==null?(x.end=this.session.replace(x,L),x):null},C.prototype.getLastSearchOptions=function(){return this.$search.getOptions()},C.prototype.find=function(x,L,q){L||(L={}),typeof x=="string"||x instanceof RegExp?L.needle=x:typeof x=="object"&&s.mixin(L,x);var N=this.selection.getRange();L.needle==null&&(x=this.session.getTextRange(N)||this.$search.$options.needle,x||(N=this.session.getWordRange(N.start.row,N.start.column),x=this.session.getTextRange(N)),this.$search.set({needle:x})),this.$search.set(L),L.start||this.$search.set({start:N});var F=this.$search.find(this.session);if(L.preventScroll)return F;if(F)return this.revealRange(F,q),F;L.backwards?N.start=N.end:N.end=N.start,this.selection.setRange(N)},C.prototype.findNext=function(x,L){this.find({skipCurrent:!0,backwards:!1},x,L)},C.prototype.findPrevious=function(x,L){this.find(x,{skipCurrent:!0,backwards:!0},L)},C.prototype.revealRange=function(x,L){this.session.unfold(x),this.selection.setSelectionRange(x);var q=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(x.start,x.end,.5),L!==!1&&this.renderer.animateScrolling(q)},C.prototype.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},C.prototype.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},C.prototype.destroy=function(){this.$toDestroy&&(this.$toDestroy.forEach(function(x){x.destroy()}),this.$toDestroy=null),this.$mouseHandler&&this.$mouseHandler.destroy(),this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.removeAllListeners()},C.prototype.setAutoScrollEditorIntoView=function(x){if(!!x){var L,q=this,N=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var F=this.$scrollAnchor;F.style.cssText="position:absolute",this.container.insertBefore(F,this.container.firstChild);var I=this.on("changeSelection",function(){N=!0}),R=this.renderer.on("beforeRender",function(){N&&(L=q.renderer.container.getBoundingClientRect())}),B=this.renderer.on("afterRender",function(){if(N&&L&&(q.isFocused()||q.searchBox&&q.searchBox.isFocused())){var D=q.renderer,P=D.$cursorLayer.$pixelPos,j=D.layerConfig,V=P.top-j.offset;P.top>=0&&V+L.top<0?N=!0:P.topwindow.innerHeight?N=!1:N=null,N!=null&&(F.style.top=V+"px",F.style.left=P.left+"px",F.style.height=j.lineHeight+"px",F.scrollIntoView(N)),N=L=null}});this.setAutoScrollEditorIntoView=function(D){D||(delete this.setAutoScrollEditorIntoView,this.off("changeSelection",I),this.renderer.off("afterRender",B),this.renderer.off("beforeRender",R))}}},C.prototype.$resetCursorStyle=function(){var x=this.$cursorStyle||"ace",L=this.renderer.$cursorLayer;!L||(L.setSmoothBlinking(/smooth/.test(x)),L.isBlinking=!this.$readOnly&&x!="wide",c.setCssClass(L.element,"ace_slim-cursors",/slim/.test(x)))},C.prototype.prompt=function(x,L,q){var N=this;y.loadModule("ace/ext/prompt",function(F){F.prompt(N,x,L,q)})},C}();T.$uid=0,T.prototype.curOp=null,T.prototype.prevOp={},T.prototype.$mergeableCommands=["backspace","del","insertstring"],T.prototype.$toggleWordPairs=[["first","last"],["true","false"],["yes","no"],["width","height"],["top","bottom"],["right","left"],["on","off"],["x","y"],["get","set"],["max","min"],["horizontal","vertical"],["show","hide"],["add","remove"],["up","down"],["before","after"],["even","odd"],["in","out"],["inside","outside"],["next","previous"],["increase","decrease"],["attach","detach"],["&&","||"],["==","!="]],s.implement(T.prototype,$),y.defineOptions(T.prototype,"editor",{selectionStyle:{set:function(C){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:C})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(C){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(C){var x=this;this.textInput.setReadOnly(C),this.$resetCursorStyle(),this.$readOnlyCallback||(this.$readOnlyCallback=function(q){var N=!1;if(q&&q.type=="keydown"){if(N=q&&q.key&&q.key.length==1&&!q.ctrlKey&&!q.metaKey,!N)return}else q&&q.type!=="exec"&&(N=!0);if(N){x.hoverTooltip||(x.hoverTooltip=new A);var F=c.createElement("div");F.textContent=S("editor.tooltip.disable-editing","Editing is disabled"),x.hoverTooltip.isOpen||x.hoverTooltip.showForRange(x,x.getSelectionRange(),F)}else x.hoverTooltip&&x.hoverTooltip.isOpen&&x.hoverTooltip.hide()});var L=this.textInput.getElement();C?(k.addListener(L,"keydown",this.$readOnlyCallback,this),this.commands.on("exec",this.$readOnlyCallback),this.commands.on("commandUnavailable",this.$readOnlyCallback)):(k.removeListener(L,"keydown",this.$readOnlyCallback),this.commands.off("exec",this.$readOnlyCallback),this.commands.off("commandUnavailable",this.$readOnlyCallback),this.hoverTooltip&&(this.hoverTooltip.destroy(),this.hoverTooltip=null))},initialValue:!1},copyWithEmptySelection:{set:function(C){this.textInput.setCopyWithEmptySelection(C)},initialValue:!1},cursorStyle:{set:function(C){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},enableAutoIndent:{initialValue:!0},autoScrollEditorIntoView:{set:function(C){this.setAutoScrollEditorIntoView(C)}},keyboardHandler:{set:function(C){this.setKeyboardHandler(C)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(C){this.session.setValue(C)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(C){this.setSession(C)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(C){this.renderer.$gutterLayer.setShowLineNumbers(C),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),C&&this.$relativeLineNumbers?E.attach(this):E.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(C){this.$showLineNumbers&&C?E.attach(this):E.detach(this)}},placeholder:{set:function(C){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var x=this.session&&(this.renderer.$composition||this.session.getLength()>1||this.session.getLine(0).length>0);if(x&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),c.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!x&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),c.addCssClass(this.container,"ace_hasPlaceholder");var L=c.createElement("div");L.className="ace_placeholder",L.textContent=this.$placeholder||"",this.renderer.placeholderNode=L,this.renderer.content.appendChild(this.renderer.placeholderNode)}else!x&&this.renderer.placeholderNode&&(this.renderer.placeholderNode.textContent=this.$placeholder||"")}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},enableKeyboardAccessibility:{set:function(C){var x={name:"blurTextInput",description:"Set focus to the editor content div to allow tabbing through the page",bindKey:"Esc",exec:function(N){N.blur(),N.renderer.scroller.focus()},readOnly:!0},L=function(N){if(N.target==this.renderer.scroller&&N.keyCode===O.enter){N.preventDefault();var F=this.getCursorPosition().row;this.isRowVisible(F)||this.scrollToLine(F,!0,!0),this.focus()}},q;C?(this.renderer.enableKeyboardAccessibility=!0,this.renderer.keyboardFocusClassName="ace_keyboard-focus",this.textInput.getElement().setAttribute("tabindex",-1),this.textInput.setNumberOfExtraLines(f.isWin?3:0),this.renderer.scroller.setAttribute("tabindex",0),this.renderer.scroller.setAttribute("role","group"),this.renderer.scroller.setAttribute("aria-roledescription",S("editor.scroller.aria-roledescription","editor")),this.renderer.scroller.classList.add(this.renderer.keyboardFocusClassName),this.renderer.scroller.setAttribute("aria-label",S("editor.scroller.aria-label","Editor content, press Enter to start editing, press Escape to exit")),this.renderer.scroller.addEventListener("keyup",L.bind(this)),this.commands.addCommand(x),this.renderer.$gutter.setAttribute("tabindex",0),this.renderer.$gutter.setAttribute("aria-hidden",!1),this.renderer.$gutter.setAttribute("role","group"),this.renderer.$gutter.setAttribute("aria-roledescription",S("editor.gutter.aria-roledescription","editor gutter")),this.renderer.$gutter.setAttribute("aria-label",S("editor.gutter.aria-label","Editor gutter, press Enter to interact with controls using arrow keys, press Escape to exit")),this.renderer.$gutter.classList.add(this.renderer.keyboardFocusClassName),this.renderer.content.setAttribute("aria-hidden",!0),q||(q=new b(this)),q.addListener(),this.textInput.setAriaOptions({setLabel:!0})):(this.renderer.enableKeyboardAccessibility=!1,this.textInput.getElement().setAttribute("tabindex",0),this.textInput.setNumberOfExtraLines(0),this.renderer.scroller.setAttribute("tabindex",-1),this.renderer.scroller.removeAttribute("role"),this.renderer.scroller.removeAttribute("aria-roledescription"),this.renderer.scroller.classList.remove(this.renderer.keyboardFocusClassName),this.renderer.scroller.removeAttribute("aria-label"),this.renderer.scroller.removeEventListener("keyup",L.bind(this)),this.commands.removeCommand(x),this.renderer.content.removeAttribute("aria-hidden"),this.renderer.$gutter.setAttribute("tabindex",-1),this.renderer.$gutter.setAttribute("aria-hidden",!0),this.renderer.$gutter.removeAttribute("role"),this.renderer.$gutter.removeAttribute("aria-roledescription"),this.renderer.$gutter.removeAttribute("aria-label"),this.renderer.$gutter.classList.remove(this.renderer.keyboardFocusClassName),q&&q.removeListener())},initialValue:!1},textInputAriaLabel:{set:function(C){this.$textInputAriaLabel=C},initialValue:""},enableMobileMenu:{set:function(C){this.$enableMobileMenu=C},initialValue:!0},customScrollbar:"renderer",hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",highlightIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",useResizeObserver:"renderer",useSvgGutterIcons:"renderer",showFoldedAnnotations:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var E={getText:function(C,x){return(Math.abs(C.selection.lead.row-x)||x+1+(x<9?"\xB7":""))+""},getWidth:function(C,x,L){return Math.max(x.toString().length,(L.lastRow+1).toString().length,2)*L.characterWidth},update:function(C,x){x.renderer.$loop.schedule(x.renderer.CHANGE_GUTTER)},attach:function(C){C.renderer.$gutterLayer.$renderer=this,C.on("changeSelection",this.update),this.update(null,C)},detach:function(C){C.renderer.$gutterLayer.$renderer==this&&(C.renderer.$gutterLayer.$renderer=null),C.off("changeSelection",this.update),this.update(null,C)}};p.Editor=T}),ace.define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,p,m){var g=e("../lib/dom"),s=function(){function c(i,f){this.element=i,this.canvasHeight=f||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0}return c.prototype.moveContainer=function(i){g.translate(this.element,0,-(i.firstRowScreen*i.lineHeight%this.canvasHeight)-i.offset*this.$offsetCoefficient)},c.prototype.pageChanged=function(i,f){return Math.floor(i.firstRowScreen*i.lineHeight/this.canvasHeight)!==Math.floor(f.firstRowScreen*f.lineHeight/this.canvasHeight)},c.prototype.computeLineTop=function(i,f,n){var o=f.firstRowScreen*f.lineHeight,r=Math.floor(o/this.canvasHeight),l=n.documentToScreenRow(i,0)*f.lineHeight;return l-r*this.canvasHeight},c.prototype.computeLineHeight=function(i,f,n){return f.lineHeight*n.getRowLineCount(i)},c.prototype.getLength=function(){return this.cells.length},c.prototype.get=function(i){return this.cells[i]},c.prototype.shift=function(){this.$cacheCell(this.cells.shift())},c.prototype.pop=function(){this.$cacheCell(this.cells.pop())},c.prototype.push=function(i){if(Array.isArray(i)){this.cells.push.apply(this.cells,i);for(var f=g.createFragment(this.element),n=0;nw&&(b=v.end.row+1,v=u.getNextFoldLine(b,v),w=v?v.start.row:1/0),b>$){for(;this.$lines.getLength()>_+1;)this.$lines.pop();break}y=this.$lines.get(++_),y?y.row=b:(y=this.$lines.createCell(b,a,this.session,r),this.$lines.push(y)),this.$renderCell(y,a,v,b),b++}this._signal("afterRender"),this.$updateGutterWidth(a)},l.prototype.$updateGutterWidth=function(a){var u=this.session,h=u.gutterRenderer||this.$renderer,$=u.$firstLineNumber,v=this.$lines.last()?this.$lines.last().text:"";(this.$fixedWidth||u.$useWrapMode)&&(v=u.getLength()+$-1);var w=h?h.getWidth(u,v,a):v.toString().length*a.characterWidth,y=this.$padding||this.$computePadding();w+=y.left+y.right,w!==this.gutterWidth&&!isNaN(w)&&(this.gutterWidth=w,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",w))},l.prototype.$updateCursorRow=function(){if(!!this.$highlightGutterLine){var a=this.session.selection.getCursor();this.$cursorRow!==a.row&&(this.$cursorRow=a.row)}},l.prototype.updateLineHighlight=function(){if(!!this.$highlightGutterLine){var a=this.session.selection.cursor.row;if(this.$cursorRow=a,!(this.$cursorCell&&this.$cursorCell.row==a)){this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var u=this.$lines.cells;this.$cursorCell=null;for(var h=0;h=this.$cursorRow){if($.row>this.$cursorRow){var v=this.session.getFoldLine(this.$cursorRow);if(h>0&&v&&v.start.row==u[h-1].row)$=u[h-1];else break}$.element.className="ace_gutter-active-line "+$.element.className,this.$cursorCell=$;break}}}}},l.prototype.scrollLines=function(a){var u=this.config;if(this.config=a,this.$updateCursorRow(),this.$lines.pageChanged(u,a))return this.update(a);this.$lines.moveContainer(a);var h=Math.min(a.lastRow+a.gutterOffset,this.session.getLength()-1),$=this.oldLastRow;if(this.oldLastRow=h,!u||$0;v--)this.$lines.shift();if($>h)for(var v=this.session.getFoldedRowCount(h+1,$);v>0;v--)this.$lines.pop();a.firstRow$&&this.$lines.push(this.$renderLines(a,$+1,h)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(a)},l.prototype.$renderLines=function(a,u,h){for(var $=[],v=u,w=this.session.getNextFoldLine(v),y=w?w.start.row:1/0;v>y&&(v=w.end.row+1,w=this.session.getNextFoldLine(v,w),y=w?w.start.row:1/0),!(v>h);){var _=this.$lines.createCell(v,a,this.session,r);this.$renderCell(_,a,w,v),$.push(_),v++}return $},l.prototype.$renderCell=function(a,u,h,$){var v=a.element,w=this.session,y=v.childNodes[0],_=v.childNodes[1],b=v.childNodes[2],S=v.childNodes[3],M=b.firstChild,O=w.$firstLineNumber,k=w.$breakpoints,A=w.$decorations,T=w.gutterRenderer||this.$renderer,E=this.$showFoldWidgets&&w.foldWidgets,C=h?h.start.row:Number.MAX_VALUE,x=u.lineHeight+"px",L=this.$useSvgGutterIcons?"ace_gutter-cell_svg-icons ":"ace_gutter-cell ",q=this.$useSvgGutterIcons?"ace_icon_svg":"ace_icon",N=(T?T.getText(w,$):$+O).toString();if(this.$highlightGutterLine&&($==this.$cursorRow||h&&$=C&&this.$cursorRow<=h.end.row)&&(L+="ace_gutter-active-line ",this.$cursorCell!=a&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=a)),k[$]&&(L+=k[$]),A[$]&&(L+=A[$]),this.$annotations[$]&&$!==C&&(L+=this.$annotations[$].className),E){var F=E[$];F==null&&(F=E[$]=w.getFoldWidget($))}if(F){var I="ace_fold-widget ace_"+F,R=F=="start"&&$==C&&$h.right-u.right)return"foldWidgets"},l}();o.prototype.$fixedWidth=!1,o.prototype.$highlightGutterLine=!0,o.prototype.$renderer="",o.prototype.$showLineNumbers=!0,o.prototype.$showFoldWidgets=!0,s.implement(o.prototype,i);function r(l){var a=document.createTextNode("");l.appendChild(a);var u=g.createElement("span");l.appendChild(u);var h=g.createElement("span");l.appendChild(h);var $=g.createElement("span");return h.appendChild($),l}p.Gutter=o}),ace.define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,p,m){var g=e("../range").Range,s=e("../lib/dom"),c=function(){function f(n){this.element=s.createElement("div"),this.element.className="ace_layer ace_marker-layer",n.appendChild(this.element)}return f.prototype.setPadding=function(n){this.$padding=n},f.prototype.setSession=function(n){this.session=n},f.prototype.setMarkers=function(n){this.markers=n},f.prototype.elt=function(n,o){var r=this.i!=-1&&this.element.childNodes[this.i];r?this.i++:(r=document.createElement("div"),this.element.appendChild(r),this.i=-1),r.style.cssText=o,r.className=n},f.prototype.update=function(n){if(!!n){this.config=n,this.i=0;var o;for(var r in this.markers){var l=this.markers[r];if(!l.range){l.update(o,this,this.session,n);continue}var a=l.range.clipRows(n.firstRow,n.lastRow);if(!a.isEmpty())if(a=a.toScreenRange(this.session),l.renderer){var u=this.$getTop(a.start.row,n),h=this.$padding+a.start.column*n.characterWidth;l.renderer(o,a,h,u,n)}else l.type=="fullLine"?this.drawFullLineMarker(o,a,l.clazz,n):l.type=="screenLine"?this.drawScreenLineMarker(o,a,l.clazz,n):a.isMultiLine()?l.type=="text"?this.drawTextMarker(o,a,l.clazz,n):this.drawMultiLineMarker(o,a,l.clazz,n):this.drawSingleLineMarker(o,a,l.clazz+" ace_start ace_br15",n)}if(this.i!=-1)for(;this.i_,v==$),l,v==$?0:1,a)},f.prototype.drawMultiLineMarker=function(n,o,r,l,a){var u=this.$padding,h=l.lineHeight,$=this.$getTop(o.start.row,l),v=u+o.start.column*l.characterWidth;if(a=a||"",this.session.$bidiHandler.isBidiRow(o.start.row)){var w=o.clone();w.end.row=w.start.row,w.end.column=this.session.getLine(w.start.row).length,this.drawBidiSingleLineMarker(n,w,r+" ace_br1 ace_start",l,null,a)}else this.elt(r+" ace_br1 ace_start","height:"+h+"px;right:"+u+"px;top:"+$+"px;left:"+v+"px;"+(a||""));if(this.session.$bidiHandler.isBidiRow(o.end.row)){var w=o.clone();w.start.row=w.end.row,w.start.column=0,this.drawBidiSingleLineMarker(n,w,r+" ace_br12",l,null,a)}else{$=this.$getTop(o.end.row,l);var y=o.end.column*l.characterWidth;this.elt(r+" ace_br12","height:"+h+"px;width:"+y+"px;top:"+$+"px;left:"+u+"px;"+(a||""))}if(h=(o.end.row-o.start.row-1)*l.lineHeight,!(h<=0)){$=this.$getTop(o.start.row+1,l);var _=(o.start.column?1:0)|(o.end.column?0:8);this.elt(r+(_?" ace_br"+_:""),"height:"+h+"px;right:"+u+"px;top:"+$+"px;left:"+u+"px;"+(a||""))}},f.prototype.drawSingleLineMarker=function(n,o,r,l,a,u){if(this.session.$bidiHandler.isBidiRow(o.start.row))return this.drawBidiSingleLineMarker(n,o,r,l,a,u);var h=l.lineHeight,$=(o.end.column+(a||0)-o.start.column)*l.characterWidth,v=this.$getTop(o.start.row,l),w=this.$padding+o.start.column*l.characterWidth;this.elt(r,"height:"+h+"px;width:"+$+"px;top:"+v+"px;left:"+w+"px;"+(u||""))},f.prototype.drawBidiSingleLineMarker=function(n,o,r,l,a,u){var h=l.lineHeight,$=this.$getTop(o.start.row,l),v=this.$padding,w=this.session.$bidiHandler.getSelections(o.start.column,o.end.column);w.forEach(function(y){this.elt(r,"height:"+h+"px;width:"+(y.width+(a||0))+"px;top:"+$+"px;left:"+(v+y.left)+"px;"+(u||""))},this)},f.prototype.drawFullLineMarker=function(n,o,r,l,a){var u=this.$getTop(o.start.row,l),h=l.lineHeight;o.start.row!=o.end.row&&(h+=this.$getTop(o.end.row,l)-u),this.elt(r,"height:"+h+"px;top:"+u+"px;left:0;right:0;"+(a||""))},f.prototype.drawScreenLineMarker=function(n,o,r,l,a){var u=this.$getTop(o.start.row,l),h=l.lineHeight;this.elt(r,"height:"+h+"px;top:"+u+"px;left:0;right:0;"+(a||""))},f}();c.prototype.$padding=0;function i(f,n,o,r){return(f?1:0)|(n?2:0)|(o?4:0)|(r?8:0)}p.Marker=c}),ace.define("ace/layer/text_util",["require","exports","module"],function(e,p,m){var g=new Set(["text","rparen","lparen"]);p.isTextToken=function(s){return g.has(s)}}),ace.define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter","ace/config","ace/layer/text_util"],function(e,p,m){var g=e("../lib/oop"),s=e("../lib/dom"),c=e("../lib/lang"),i=e("./lines").Lines,f=e("../lib/event_emitter").EventEmitter,n=e("../config").nls,o=e("./text_util").isTextToken,r=function(){function l(a){this.dom=s,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",a.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new i(this.element)}return l.prototype.$updateEolChar=function(){var a=this.session.doc,u=a.getNewLineCharacter()==` +`&&a.getNewLineMode()!="windows",h=u?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=h)return this.EOL_CHAR=h,!0},l.prototype.setPadding=function(a){this.$padding=a,this.element.style.margin="0 "+a+"px"},l.prototype.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},l.prototype.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},l.prototype.$setFontMetrics=function(a){this.$fontMetrics=a,this.$fontMetrics.on("changeCharacterSize",function(u){this._signal("changeCharacterSize",u)}.bind(this)),this.$pollSizeChanges()},l.prototype.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},l.prototype.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},l.prototype.setSession=function(a){this.session=a,a&&this.$computeTabString()},l.prototype.setShowInvisibles=function(a){return this.showInvisibles==a?!1:(this.showInvisibles=a,typeof a=="string"?(this.showSpaces=/tab/i.test(a),this.showTabs=/space/i.test(a),this.showEOL=/eol/i.test(a)):this.showSpaces=this.showTabs=this.showEOL=a,this.$computeTabString(),!0)},l.prototype.setDisplayIndentGuides=function(a){return this.displayIndentGuides==a?!1:(this.displayIndentGuides=a,this.$computeTabString(),!0)},l.prototype.setHighlightIndentGuides=function(a){return this.$highlightIndentGuides===a?!1:(this.$highlightIndentGuides=a,a)},l.prototype.$computeTabString=function(){var a=this.session.getTabSize();this.tabSize=a;for(var u=this.$tabStrings=[0],h=1;hM&&(b=S.end.row+1,S=this.session.getNextFoldLine(b,S),M=S?S.start.row:1/0),!(b>v);){var O=w[y++];if(O){this.dom.removeChildren(O),this.$renderLine(O,b,b==M?S:!1),_&&(O.style.top=this.$lines.computeLineTop(b,a,this.session)+"px");var k=a.lineHeight*this.session.getRowLength(b)+"px";O.style.height!=k&&(_=!0,O.style.height=k)}b++}if(_)for(;y0;v--)this.$lines.shift();if(u.lastRow>a.lastRow)for(var v=this.session.getFoldedRowCount(a.lastRow+1,u.lastRow);v>0;v--)this.$lines.pop();a.firstRowu.lastRow&&this.$lines.push(this.$renderLinesFragment(a,u.lastRow+1,a.lastRow)),this.$highlightIndentGuide()},l.prototype.$renderLinesFragment=function(a,u,h){for(var $=[],v=u,w=this.session.getNextFoldLine(v),y=w?w.start.row:1/0;v>y&&(v=w.end.row+1,w=this.session.getNextFoldLine(v,w),y=w?w.start.row:1/0),!(v>h);){var _=this.$lines.createCell(v,a,this.session),b=_.element;this.dom.removeChildren(b),s.setStyle(b.style,"height",this.$lines.computeLineHeight(v,a,this.session)+"px"),s.setStyle(b.style,"top",this.$lines.computeLineTop(v,a,this.session)+"px"),this.$renderLine(b,v,v==y?w:!1),this.$useLineGroups()?b.className="ace_line_group":b.className="ace_line",$.push(_),v++}return $},l.prototype.update=function(a){this.$lines.moveContainer(a),this.config=a;for(var u=a.firstRow,h=a.lastRow,$=this.$lines;$.getLength();)$.pop();$.push(this.$renderLinesFragment(a,u,h))},l.prototype.$renderToken=function(a,u,h,$){for(var v=this,w=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC\u2066\u2067\u2068\u202A\u202B\u202D\u202E\u202C\u2069\u2060\u2061\u2062\u2063\u2064\u206A\u206B\u206B\u206C\u206D\u206E\u206F]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,y=this.dom.createFragment(this.element),_,b=0;_=w.exec($);){var S=_[1],M=_[2],O=_[3],k=_[4],A=_[5];if(!(!v.showSpaces&&M)){var T=b!=_.index?$.slice(b,_.index):"";if(b=_.index+_[0].length,T&&y.appendChild(this.dom.createTextNode(T,this.element)),S){var E=v.session.getScreenTabSize(u+_.index);y.appendChild(v.$tabStrings[E].cloneNode(!0)),u+=E-1}else if(M)if(v.showSpaces){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space",C.textContent=c.stringRepeat(v.SPACE_CHAR,M.length),y.appendChild(C)}else y.appendChild(this.dom.createTextNode(M,this.element));else if(O){var C=this.dom.createElement("span");C.className="ace_invisible ace_invisible_space ace_invalid",C.textContent=c.stringRepeat(v.SPACE_CHAR,O.length),y.appendChild(C)}else if(k){u+=1;var C=this.dom.createElement("span");C.style.width=v.config.characterWidth*2+"px",C.className=v.showSpaces?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",C.textContent=v.showSpaces?v.SPACE_CHAR:k,y.appendChild(C)}else if(A){u+=1;var C=this.dom.createElement("span");C.style.width=v.config.characterWidth*2+"px",C.className="ace_cjk",C.textContent=A,y.appendChild(C)}}}if(y.appendChild(this.dom.createTextNode(b?$.slice(b):$,this.element)),o(h.type))a.appendChild(y);else{var x="ace_"+h.type.replace(/\./g," ace_"),C=this.dom.createElement("span");h.type=="fold"&&(C.style.width=h.value.length*this.config.characterWidth+"px",C.setAttribute("title",n("inline-fold.closed.title","Unfold code"))),C.className=x,C.appendChild(y),a.appendChild(C)}return u+$.length},l.prototype.renderIndentGuide=function(a,u,h){var $=u.search(this.$indentGuideRe);if($<=0||$>=h)return u;if(u[0]==" "){$-=$%this.tabSize;for(var v=$/this.tabSize,w=0;ww[y].start.row?this.$highlightIndentGuideMarker.dir=-1:this.$highlightIndentGuideMarker.dir=1;break}}if(!this.$highlightIndentGuideMarker.end&&a[u.row]!==""&&u.column===a[u.row].length){this.$highlightIndentGuideMarker.dir=1;for(var y=u.row+1;y0)$=a.element.childNodes[0];else return;var v=$.childNodes;if(v){var w=v[u-1];w&&w.classList&&w.classList.contains("ace_indent-guide")&&w.classList.add("ace_indent-guide-active")}}},l.prototype.$renderHighlightIndentGuide=function(){if(!!this.$lines){var a=this.$lines.cells;this.$clearActiveIndentGuide();var u=this.$highlightIndentGuideMarker.indentLevel;if(u!==0)if(this.$highlightIndentGuideMarker.dir===1)for(var h=0;h=this.$highlightIndentGuideMarker.start+1){if($.row>=this.$highlightIndentGuideMarker.end)break;this.$setIndentGuideActive($,u)}}else for(var h=a.length-1;h>=0;h--){var $=a[h];if(this.$highlightIndentGuideMarker.end&&$.row=w;)y=this.$renderToken(_,y,S,M.substring(0,w-$)),M=M.substring(w-$),$=w,_=this.$createLineElement(),a.appendChild(_),_.appendChild(this.dom.createTextNode(c.stringRepeat("\xA0",h.indent),this.element)),v++,y=0,w=h[v]||Number.MAX_VALUE;M.length!=0&&($+=M.length,y=this.$renderToken(_,y,S,M))}}h[h.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(_,y,null,"",!0)},l.prototype.$renderSimpleLine=function(a,u){for(var h=0,$=0;$this.MAX_LINE_LENGTH)return this.$renderOverflowMessage(a,h,v,w);h=this.$renderToken(a,h,v,w)}}},l.prototype.$renderOverflowMessage=function(a,u,h,$,v){h&&this.$renderToken(a,u,h,$.slice(0,this.MAX_LINE_LENGTH-u));var w=this.dom.createElement("span");w.className="ace_inline_button ace_keyword ace_toggle_wrap",w.textContent=v?"":"",a.appendChild(w)},l.prototype.$renderLine=function(a,u,h){if(!h&&h!=!1&&(h=this.session.getFoldLine(u)),h)var $=this.$getFoldLineTokens(u,h);else var $=this.session.getTokens(u);var v=a;if($.length){var w=this.session.getRowSplitData(u);if(w&&w.length){this.$renderWrappedLine(a,$,w);var v=a.lastChild}else{var v=a;this.$useLineGroups()&&(v=this.$createLineElement(),a.appendChild(v)),this.$renderSimpleLine(v,$)}}else this.$useLineGroups()&&(v=this.$createLineElement(),a.appendChild(v));if(this.showEOL&&v){h&&(u=h.end.row);var y=this.dom.createElement("span");y.className="ace_invisible ace_invisible_eol",y.textContent=u==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,v.appendChild(y)}},l.prototype.$getFoldLineTokens=function(a,u){var h=this.session,$=[];function v(y,_,b){for(var S=0,M=0;M+y[S].value.length<_;)if(M+=y[S].value.length,S++,S==y.length)return;if(M!=_){var O=y[S].value.substring(_-M);O.length>b-_&&(O=O.substring(0,b-_)),$.push({type:y[S].type,value:O}),M=_+O.length,S+=1}for(;Mb?$.push({type:y[S].type,value:O.substring(0,b-M)}):$.push(y[S]),M+=O.length,S+=1}}var w=h.getTokens(a);return u.walk(function(y,_,b,S,M){y!=null?$.push({type:"fold",value:y}):(M&&(w=h.getTokens(_)),w.length&&v(w,S,b))},u.end.row,this.session.getLine(u.end.row).length),$},l.prototype.$useLineGroups=function(){return this.session.getUseWrapMode()},l}();r.prototype.EOF_CHAR="\xB6",r.prototype.EOL_CHAR_LF="\xAC",r.prototype.EOL_CHAR_CRLF="\xA4",r.prototype.EOL_CHAR=r.prototype.EOL_CHAR_LF,r.prototype.TAB_CHAR="\u2014",r.prototype.SPACE_CHAR="\xB7",r.prototype.$padding=0,r.prototype.MAX_LINE_LENGTH=1e4,r.prototype.showInvisibles=!1,r.prototype.showSpaces=!1,r.prototype.showTabs=!1,r.prototype.showEOL=!1,r.prototype.displayIndentGuides=!0,r.prototype.$highlightIndentGuides=!0,r.prototype.$tabStrings=[],r.prototype.destroy={},r.prototype.onChangeTabSize=r.prototype.$computeTabString,g.implement(r.prototype,f),p.Text=r}),ace.define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,p,m){var g=e("../lib/dom"),s=function(){function c(i){this.element=g.createElement("div"),this.element.className="ace_layer ace_cursor-layer",i.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),g.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)}return c.prototype.$updateOpacity=function(i){for(var f=this.cursors,n=f.length;n--;)g.setStyle(f[n].style,"opacity",i?"":"0")},c.prototype.$startCssAnimation=function(){for(var i=this.cursors,f=i.length;f--;)i[f].style.animationDuration=this.blinkInterval+"ms";this.$isAnimating=!0,setTimeout(function(){this.$isAnimating&&g.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},c.prototype.$stopCssAnimation=function(){this.$isAnimating=!1,g.removeCssClass(this.element,"ace_animate-blinking")},c.prototype.setPadding=function(i){this.$padding=i},c.prototype.setSession=function(i){this.session=i},c.prototype.setBlinking=function(i){i!=this.isBlinking&&(this.isBlinking=i,this.restartTimer())},c.prototype.setBlinkInterval=function(i){i!=this.blinkInterval&&(this.blinkInterval=i,this.restartTimer())},c.prototype.setSmoothBlinking=function(i){i!=this.smoothBlinking&&(this.smoothBlinking=i,g.setCssClass(this.element,"ace_smooth-blinking",i),this.$updateCursors(!0),this.restartTimer())},c.prototype.addCursor=function(){var i=g.createElement("div");return i.className="ace_cursor",this.element.appendChild(i),this.cursors.push(i),i},c.prototype.removeCursor=function(){if(this.cursors.length>1){var i=this.cursors.pop();return i.parentNode.removeChild(i),i}},c.prototype.hideCursor=function(){this.isVisible=!1,g.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},c.prototype.showCursor=function(){this.isVisible=!0,g.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},c.prototype.restartTimer=function(){var i=this.$updateCursors;if(clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&(this.$isSmoothBlinking=!1,g.removeCssClass(this.element,"ace_smooth-blinking")),i(!0),!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}if(this.smoothBlinking&&(this.$isSmoothBlinking=!0,setTimeout(function(){this.$isSmoothBlinking&&g.addCssClass(this.element,"ace_smooth-blinking")}.bind(this))),g.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var f=function(){this.timeoutId=setTimeout(function(){i(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){i(!0),f()},this.blinkInterval),f()}},c.prototype.getPixelPosition=function(i,f){if(!this.config||!this.session)return{left:0,top:0};i||(i=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(i),o=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,i.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),r=(n.row-(f?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:o,top:r}},c.prototype.isCursorInView=function(i,f){return i.top>=0&&i.topi.height+i.offset||l.top<0)&&n>1)){var a=this.cursors[o++]||this.addCursor(),u=a.style;this.drawCursor?this.drawCursor(a,l,i,f[n],this.session):this.isCursorInView(l,i)?(g.setStyle(u,"display","block"),g.translate(a,l.left,l.top),g.setStyle(u,"width",Math.round(i.characterWidth)+"px"),g.setStyle(u,"height",i.lineHeight+"px")):g.setStyle(u,"display","none")}}for(;this.cursors.length>o;)this.removeCursor();var h=this.session.getOverwrite();this.$setOverwrite(h),this.$pixelPos=l,this.restartTimer()},c.prototype.$setOverwrite=function(i){i!=this.overwrite&&(this.overwrite=i,i?g.addCssClass(this.element,"ace_overwrite-cursors"):g.removeCssClass(this.element,"ace_overwrite-cursors"))},c.prototype.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)},c}();s.prototype.$padding=0,s.prototype.drawCursor=null,p.Cursor=s}),ace.define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var a=function(u,h){return a=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function($,v){$.__proto__=v}||function($,v){for(var w in v)Object.prototype.hasOwnProperty.call(v,w)&&($[w]=v[w])},a(u,h)};return function(u,h){if(typeof h!="function"&&h!==null)throw new TypeError("Class extends value "+String(h)+" is not a constructor or null");a(u,h);function $(){this.constructor=u}u.prototype=h===null?Object.create(h):($.prototype=h.prototype,new $)}}(),s=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/event"),f=e("./lib/event_emitter").EventEmitter,n=32768,o=function(){function a(u,h){this.element=c.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+h,this.inner=c.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\xA0",this.element.appendChild(this.inner),u.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,i.addListener(this.element,"scroll",this.onScroll.bind(this)),i.addListener(this.element,"mousedown",i.preventDefault)}return a.prototype.setVisible=function(u){this.element.style.display=u?"":"none",this.isVisible=u,this.coeff=1},a}();s.implement(o.prototype,f);var r=function(a){g(u,a);function u(h,$){var v=a.call(this,h,"-v")||this;return v.scrollTop=0,v.scrollHeight=0,$.$scrollbarWidth=v.width=c.scrollbarWidth(h.ownerDocument),v.inner.style.width=v.element.style.width=(v.width||15)+5+"px",v.$minWidth=0,v}return u.prototype.onScroll=function(){if(!this.skipEvent){if(this.scrollTop=this.element.scrollTop,this.coeff!=1){var h=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-h)/(this.coeff-h)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},u.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},u.prototype.setHeight=function(h){this.element.style.height=h+"px"},u.prototype.setScrollHeight=function(h){this.scrollHeight=h,h>n?(this.coeff=n/h,h=n):this.coeff!=1&&(this.coeff=1),this.inner.style.height=h+"px"},u.prototype.setScrollTop=function(h){this.scrollTop!=h&&(this.skipEvent=!0,this.scrollTop=h,this.element.scrollTop=h*this.coeff)},u}(o);r.prototype.setInnerHeight=r.prototype.setScrollHeight;var l=function(a){g(u,a);function u(h,$){var v=a.call(this,h,"-h")||this;return v.scrollLeft=0,v.height=$.$scrollbarWidth,v.inner.style.height=v.element.style.height=(v.height||15)+5+"px",v}return u.prototype.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},u.prototype.getHeight=function(){return this.isVisible?this.height:0},u.prototype.setWidth=function(h){this.element.style.width=h+"px"},u.prototype.setInnerWidth=function(h){this.inner.style.width=h+"px"},u.prototype.setScrollWidth=function(h){this.inner.style.width=h+"px"},u.prototype.setScrollLeft=function(h){this.scrollLeft!=h&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=h)},u}(o);p.ScrollBar=r,p.ScrollBarV=r,p.ScrollBarH=l,p.VScrollBar=r,p.HScrollBar=l}),ace.define("ace/scrollbar_custom",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,p,m){var g=this&&this.__extends||function(){var l=function(a,u){return l=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(h,$){h.__proto__=$}||function(h,$){for(var v in $)Object.prototype.hasOwnProperty.call($,v)&&(h[v]=$[v])},l(a,u)};return function(a,u){if(typeof u!="function"&&u!==null)throw new TypeError("Class extends value "+String(u)+" is not a constructor or null");l(a,u);function h(){this.constructor=a}a.prototype=u===null?Object.create(u):(h.prototype=u.prototype,new h)}}(),s=e("./lib/oop"),c=e("./lib/dom"),i=e("./lib/event"),f=e("./lib/event_emitter").EventEmitter;c.importCssString(`.ace_editor>.ace_sb-v div, .ace_editor>.ace_sb-h div{ + position: absolute; + background: rgba(128, 128, 128, 0.6); + -moz-box-sizing: border-box; + box-sizing: border-box; + border: 1px solid #bbb; + border-radius: 2px; + z-index: 8; +} +.ace_editor>.ace_sb-v, .ace_editor>.ace_sb-h { + position: absolute; + z-index: 6; + background: none; + overflow: hidden!important; +} +.ace_editor>.ace_sb-v { + z-index: 6; + right: 0; + top: 0; + width: 12px; +} +.ace_editor>.ace_sb-v div { + z-index: 8; + right: 0; + width: 100%; +} +.ace_editor>.ace_sb-h { + bottom: 0; + left: 0; + height: 12px; +} +.ace_editor>.ace_sb-h div { + bottom: 0; + height: 100%; +} +.ace_editor>.ace_sb_grabbed { + z-index: 8; + background: #000; +}`,"ace_scrollbar.css",!1);var n=function(){function l(a,u){this.element=c.createElement("div"),this.element.className="ace_sb"+u,this.inner=c.createElement("div"),this.inner.className="",this.element.appendChild(this.inner),this.VScrollWidth=12,this.HScrollHeight=12,a.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,i.addMultiMouseDownListener(this.element,[500,300,300],this,"onMouseDown")}return l.prototype.setVisible=function(a){this.element.style.display=a?"":"none",this.isVisible=a,this.coeff=1},l}();s.implement(n.prototype,f);var o=function(l){g(a,l);function a(u,h){var $=l.call(this,u,"-v")||this;return $.scrollTop=0,$.scrollHeight=0,$.parent=u,$.width=$.VScrollWidth,$.renderer=h,$.inner.style.width=$.element.style.width=($.width||15)+"px",$.$minWidth=0,$}return a.prototype.onMouseDown=function(u,h){if(u==="mousedown"&&!(i.getButton(h)!==0||h.detail===2)){if(h.target===this.inner){var $=this,v=h.clientY,w=function(k){v=k.clientY},y=function(){clearInterval(M)},_=h.clientY,b=this.thumbTop,S=function(){if(v!==void 0){var k=$.scrollTopFromThumbTop(b+v-_);k!==$.scrollTop&&$._emit("scroll",{data:k})}};i.capture(this.inner,w,y);var M=setInterval(S,20);return i.preventDefault(h)}var O=h.clientY-this.element.getBoundingClientRect().top-this.thumbHeight/2;return this._emit("scroll",{data:this.scrollTopFromThumbTop(O)}),i.preventDefault(h)}},a.prototype.getHeight=function(){return this.height},a.prototype.scrollTopFromThumbTop=function(u){var h=u*(this.pageHeight-this.viewHeight)/(this.slideHeight-this.thumbHeight);return h=h>>0,h<0?h=0:h>this.pageHeight-this.viewHeight&&(h=this.pageHeight-this.viewHeight),h},a.prototype.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},a.prototype.setHeight=function(u){this.height=Math.max(0,u),this.slideHeight=this.height,this.viewHeight=this.height,this.setScrollHeight(this.pageHeight,!0)},a.prototype.setScrollHeight=function(u,h){this.pageHeight===u&&!h||(this.pageHeight=u,this.thumbHeight=this.slideHeight*this.viewHeight/this.pageHeight,this.thumbHeight>this.slideHeight&&(this.thumbHeight=this.slideHeight),this.thumbHeight<15&&(this.thumbHeight=15),this.inner.style.height=this.thumbHeight+"px",this.scrollTop>this.pageHeight-this.viewHeight&&(this.scrollTop=this.pageHeight-this.viewHeight,this.scrollTop<0&&(this.scrollTop=0),this._emit("scroll",{data:this.scrollTop})))},a.prototype.setScrollTop=function(u){this.scrollTop=u,u<0&&(u=0),this.thumbTop=u*(this.slideHeight-this.thumbHeight)/(this.pageHeight-this.viewHeight),this.inner.style.top=this.thumbTop+"px"},a}(n);o.prototype.setInnerHeight=o.prototype.setScrollHeight;var r=function(l){g(a,l);function a(u,h){var $=l.call(this,u,"-h")||this;return $.scrollLeft=0,$.scrollWidth=0,$.height=$.HScrollHeight,$.inner.style.height=$.element.style.height=($.height||12)+"px",$.renderer=h,$}return a.prototype.onMouseDown=function(u,h){if(u==="mousedown"&&!(i.getButton(h)!==0||h.detail===2)){if(h.target===this.inner){var $=this,v=h.clientX,w=function(k){v=k.clientX},y=function(){clearInterval(M)},_=h.clientX,b=this.thumbLeft,S=function(){if(v!==void 0){var k=$.scrollLeftFromThumbLeft(b+v-_);k!==$.scrollLeft&&$._emit("scroll",{data:k})}};i.capture(this.inner,w,y);var M=setInterval(S,20);return i.preventDefault(h)}var O=h.clientX-this.element.getBoundingClientRect().left-this.thumbWidth/2;return this._emit("scroll",{data:this.scrollLeftFromThumbLeft(O)}),i.preventDefault(h)}},a.prototype.getHeight=function(){return this.isVisible?this.height:0},a.prototype.scrollLeftFromThumbLeft=function(u){var h=u*(this.pageWidth-this.viewWidth)/(this.slideWidth-this.thumbWidth);return h=h>>0,h<0?h=0:h>this.pageWidth-this.viewWidth&&(h=this.pageWidth-this.viewWidth),h},a.prototype.setWidth=function(u){this.width=Math.max(0,u),this.element.style.width=this.width+"px",this.slideWidth=this.width,this.viewWidth=this.width,this.setScrollWidth(this.pageWidth,!0)},a.prototype.setScrollWidth=function(u,h){this.pageWidth===u&&!h||(this.pageWidth=u,this.thumbWidth=this.slideWidth*this.viewWidth/this.pageWidth,this.thumbWidth>this.slideWidth&&(this.thumbWidth=this.slideWidth),this.thumbWidth<15&&(this.thumbWidth=15),this.inner.style.width=this.thumbWidth+"px",this.scrollLeft>this.pageWidth-this.viewWidth&&(this.scrollLeft=this.pageWidth-this.viewWidth,this.scrollLeft<0&&(this.scrollLeft=0),this._emit("scroll",{data:this.scrollLeft})))},a.prototype.setScrollLeft=function(u){this.scrollLeft=u,u<0&&(u=0),this.thumbLeft=u*(this.slideWidth-this.thumbWidth)/(this.pageWidth-this.viewWidth),this.inner.style.left=this.thumbLeft+"px"},a}(n);r.prototype.setInnerWidth=r.prototype.setScrollWidth,p.ScrollBar=o,p.ScrollBarV=o,p.ScrollBarH=r,p.VScrollBar=o,p.HScrollBar=r}),ace.define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,p,m){var g=e("./lib/event"),s=function(){function c(i,f){this.onRender=i,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=f||window;var n=this;this._flush=function(o){n.pending=!1;var r=n.changes;if(r&&(g.blockIdle(100),n.changes=0,n.onRender(r)),n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}}return c.prototype.schedule=function(i){this.changes=this.changes|i,this.changes&&!this.pending&&(g.nextFrame(this._flush),this.pending=!0)},c.prototype.clear=function(i){var f=this.changes;return this.changes=0,f},c}();p.RenderLoop=s}),ace.define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,p,m){var g=e("../lib/oop"),s=e("../lib/dom"),c=e("../lib/lang"),i=e("../lib/event"),f=e("../lib/useragent"),n=e("../lib/event_emitter").EventEmitter,o=512,r=typeof ResizeObserver=="function",l=200,a=function(){function u(h){this.el=s.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=s.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=s.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),h.appendChild(this.el),this.$measureNode.textContent=c.stringRepeat("X",o),this.$characterSize={width:0,height:0},r?this.$addObserver():this.checkForSizeChanges()}return u.prototype.$setMeasureNodeStyles=function(h,$){h.width=h.height="auto",h.left=h.top="0px",h.visibility="hidden",h.position="absolute",h.whiteSpace="pre",f.isIE<8?h["font-family"]="inherit":h.font="inherit",h.overflow=$?"hidden":"visible"},u.prototype.checkForSizeChanges=function(h){if(h===void 0&&(h=this.$measureSizes()),h&&(this.$characterSize.width!==h.width||this.$characterSize.height!==h.height)){this.$measureNode.style.fontWeight="bold";var $=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=h,this.charSizes=Object.create(null),this.allowBoldFonts=$&&$.width===h.width&&$.height===h.height,this._emit("changeCharacterSize",{data:h})}},u.prototype.$addObserver=function(){var h=this;this.$observer=new window.ResizeObserver(function($){h.checkForSizeChanges()}),this.$observer.observe(this.$measureNode)},u.prototype.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var h=this;return this.$pollSizeChangesTimer=i.onIdle(function $(){h.checkForSizeChanges(),i.onIdle($,500)},500)},u.prototype.setPolling=function(h){h?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},u.prototype.$measureSizes=function(h){var $={height:(h||this.$measureNode).clientHeight,width:(h||this.$measureNode).clientWidth/o};return $.width===0||$.height===0?null:$},u.prototype.$measureCharWidth=function(h){this.$main.textContent=c.stringRepeat(h,o);var $=this.$main.getBoundingClientRect();return $.width/o},u.prototype.getCharacterWidth=function(h){var $=this.charSizes[h];return $===void 0&&($=this.charSizes[h]=this.$measureCharWidth(h)/this.$characterSize.width),$},u.prototype.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},u.prototype.$getZoom=function(h){return!h||!h.parentElement?1:(Number(window.getComputedStyle(h).zoom)||1)*this.$getZoom(h.parentElement)},u.prototype.$initTransformMeasureNodes=function(){var h=function($,v){return["div",{style:"position: absolute;top:"+$+"px;left:"+v+"px;"}]};this.els=s.buildDom([h(0,0),h(l,0),h(0,l),h(l,l)],this.el)},u.prototype.transformCoordinates=function(h,$){if(h){var v=this.$getZoom(this.el);h=b(1/v,h)}function w(I,R,B){var D=I[1]*R[0]-I[0]*R[1];return[(-R[1]*B[0]+R[0]*B[1])/D,(+I[1]*B[0]-I[0]*B[1])/D]}function y(I,R){return[I[0]-R[0],I[1]-R[1]]}function _(I,R){return[I[0]+R[0],I[1]+R[1]]}function b(I,R){return[I*R[0],I*R[1]]}this.els||this.$initTransformMeasureNodes();function S(I){var R=I.getBoundingClientRect();return[R.left,R.top]}var M=S(this.els[0]),O=S(this.els[1]),k=S(this.els[2]),A=S(this.els[3]),T=w(y(A,O),y(A,k),y(_(O,k),_(A,M))),E=b(1+T[0],y(O,M)),C=b(1+T[1],y(k,M));if($){var x=$,L=T[0]*x[0]/l+T[1]*x[1]/l+1,q=_(b(x[0],E),b(x[1],C));return _(b(1/L/l,q),M)}var N=y(h,M),F=w(y(E,b(T[0],N)),y(C,b(T[1],N)),N);return b(l,F)},u}();a.prototype.$characterSize={width:0,height:0},g.implement(a.prototype,n),p.FontMetrics=a}),ace.define("ace/css/editor-css",["require","exports","module"],function(e,p,m){m.exports=` +.ace_br1 {border-top-left-radius : 3px;} +.ace_br2 {border-top-right-radius : 3px;} +.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;} +.ace_br4 {border-bottom-right-radius: 3px;} +.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;} +.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;} +.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;} +.ace_br8 {border-bottom-left-radius : 3px;} +.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;} +.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;} +.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;} +.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} +.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} +.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} +.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;} + + +.ace_editor { + position: relative; + overflow: hidden; + padding: 0; + font: 12px/normal 'Monaco', 'Menlo', 'Ubuntu Mono', 'Consolas', 'Source Code Pro', 'source-code-pro', monospace; + direction: ltr; + text-align: left; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); + forced-color-adjust: none; +} + +.ace_scroller { + position: absolute; + overflow: hidden; + top: 0; + bottom: 0; + background-color: inherit; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + cursor: text; +} + +.ace_content { + position: absolute; + box-sizing: border-box; + min-width: 100%; + contain: style size layout; + font-variant-ligatures: no-common-ligatures; +} +.ace_invisible { + font-variant-ligatures: none; +} + +.ace_keyboard-focus:focus { + box-shadow: inset 0 0 0 2px #5E9ED6; + outline: none; +} + +.ace_dragging .ace_scroller:before{ + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + content: ''; + background: rgba(250, 250, 250, 0.01); + z-index: 1000; +} +.ace_dragging.ace_dark .ace_scroller:before{ + background: rgba(0, 0, 0, 0.01); +} + +.ace_gutter { + position: absolute; + overflow : hidden; + width: auto; + top: 0; + bottom: 0; + left: 0; + cursor: default; + z-index: 4; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + contain: style size layout; +} + +.ace_gutter-active-line { + position: absolute; + left: 0; + right: 0; +} + +.ace_scroller.ace_scroll-left:after { + content: ""; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset; + pointer-events: none; +} + +.ace_gutter-cell, .ace_gutter-cell_svg-icons { + position: absolute; + top: 0; + left: 0; + right: 0; + padding-left: 19px; + padding-right: 6px; + background-repeat: no-repeat; +} + +.ace_gutter-cell_svg-icons .ace_gutter_annotation { + margin-left: -14px; + float: left; +} + +.ace_gutter-cell .ace_gutter_annotation { + margin-left: -19px; + float: left; +} + +.ace_gutter-cell.ace_error, .ace_icon.ace_error, .ace_icon.ace_error_fold, .ace_gutter-cell.ace_security, .ace_icon.ace_security, .ace_icon.ace_security_fold { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: 2px center; +} + +.ace_gutter-cell.ace_warning, .ace_icon.ace_warning, .ace_icon.ace_warning_fold { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: 2px center; +} + +.ace_gutter-cell.ace_info, .ace_icon.ace_info, .ace_gutter-cell.ace_hint, .ace_icon.ace_hint { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII="); + background-repeat: no-repeat; + background-position: 2px center; +} + +.ace_dark .ace_gutter-cell.ace_info, .ace_dark .ace_icon.ace_info, .ace_dark .ace_gutter-cell.ace_hint, .ace_dark .ace_icon.ace_hint { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC"); +} + +.ace_icon_svg.ace_error { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJyZWQiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KPGNpcmNsZSBmaWxsPSJub25lIiBjeD0iOCIgY3k9IjgiIHI9IjciIHN0cm9rZS1saW5lam9pbj0icm91bmQiLz4KPGxpbmUgeDE9IjExIiB5MT0iNSIgeDI9IjUiIHkyPSIxMSIvPgo8bGluZSB4MT0iMTEiIHkxPSIxMSIgeDI9IjUiIHkyPSI1Ii8+CjwvZz4KPC9zdmc+"); + background-color: crimson; +} +.ace_icon_svg.ace_security { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0iZGFya29yYW5nZSIgZmlsbD0ibm9uZSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgogICAgICAgIDxwYXRoIGNsYXNzPSJzdHJva2UtbGluZWpvaW4tcm91bmQiIGQ9Ik04IDE0LjgzMDdDOCAxNC44MzA3IDIgMTIuOTA0NyAyIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOEM3Ljk4OTk5IDEuMzQ5MTggMTAuNjkgMy4yNjU0OCAxNCAzLjI2NTQ4VjguMDg5OTJDMTQgMTIuOTA0NyA4IDE0LjgzMDcgOCAxNC44MzA3WiIvPgogICAgICAgIDxwYXRoIGQ9Ik0yIDguMDg5OTJWMy4yNjU0OEM1LjMxIDMuMjY1NDggNy45ODk5OSAxLjM0OTE4IDcuOTg5OTkgMS4zNDkxOCIvPgogICAgICAgIDxwYXRoIGQ9Ik0xMy45OSA4LjA4OTkyVjMuMjY1NDhDMTAuNjggMy4yNjU0OCA4IDEuMzQ5MTggOCAxLjM0OTE4Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggNFY5Ii8+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTggMTBWMTIiLz4KICAgIDwvZz4KPC9zdmc+"); + background-color: crimson; +} +.ace_icon_svg.ace_warning { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJkYXJrb3JhbmdlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+Cjxwb2x5Z29uIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGZpbGw9Im5vbmUiIHBvaW50cz0iOCAxIDE1IDE1IDEgMTUgOCAxIi8+CjxyZWN0IHg9IjgiIHk9IjEyIiB3aWR0aD0iMC4wMSIgaGVpZ2h0PSIwLjAxIi8+CjxsaW5lIHgxPSI4IiB5MT0iNiIgeDI9IjgiIHkyPSIxMCIvPgo8L2c+Cjwvc3ZnPg=="); + background-color: darkorange; +} +.ace_icon_svg.ace_info { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiI+CjxnIHN0cm9rZS13aWR0aD0iMiIgc3Ryb2tlPSJibHVlIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CjxjaXJjbGUgZmlsbD0ibm9uZSIgY3g9IjgiIGN5PSI4IiByPSI3IiBzdHJva2UtbGluZWpvaW49InJvdW5kIi8+Cjxwb2x5bGluZSBwb2ludHM9IjggMTEgOCA4Ii8+Cjxwb2x5bGluZSBwb2ludHM9IjkgOCA2IDgiLz4KPGxpbmUgeDE9IjEwIiB5MT0iMTEiIHgyPSI2IiB5Mj0iMTEiLz4KPHJlY3QgeD0iOCIgeT0iNSIgd2lkdGg9IjAuMDEiIGhlaWdodD0iMC4wMSIvPgo8L2c+Cjwvc3ZnPg=="); + background-color: royalblue; +} +.ace_icon_svg.ace_hint { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMTYiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgICA8ZyBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZT0ic2lsdmVyIiBmaWxsPSJub25lIiBzaGFwZS1yZW5kZXJpbmc9Imdlb21ldHJpY1ByZWNpc2lvbiI+CiAgICAgICAgPHBhdGggY2xhc3M9InN0cm9rZS1saW5lam9pbi1yb3VuZCIgZD0iTTYgMTRIMTAiLz4KICAgICAgICA8cGF0aCBkPSJNOCAxMUg5QzkgOS40NzAwMiAxMiA4LjU0MDAyIDEyIDUuNzYwMDJDMTIuMDIgNC40MDAwMiAxMS4zOSAzLjM2MDAyIDEwLjQzIDIuNjcwMDJDOSAxLjY0MDAyIDcuMDAwMDEgMS42NDAwMiA1LjU3MDAxIDIuNjcwMDJDNC42MTAwMSAzLjM2MDAyIDMuOTggNC40MDAwMiA0IDUuNzYwMDJDNCA4LjU0MDAyIDcuMDAwMDEgOS40NzAwMiA3LjAwMDAxIDExSDhaIi8+CiAgICA8L2c+Cjwvc3ZnPg=="); + background-color: silver; +} + +.ace_icon_svg.ace_error_fold { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSI+CiAgPHBhdGggZD0ibSAxOC45Mjk4NTEsNy44Mjk4MDc2IGMgMC4xNDYzNTMsNi4zMzc0NjA0IC02LjMyMzE0Nyw3Ljc3Nzg0NDQgLTcuNDc3OTEyLDcuNzc3ODQ0NCAtMi4xMDcyNzI2LC0wLjEyODc1IDUuMTE3Njc4LDAuMzU2MjQ5IDUuMDUxNjk4LC03Ljg3MDA2MTggLTAuNjA0NjcyLC04LjAwMzk3MzQ5IC03LjA3NzI3MDYsLTcuNTYzMTE4OSAtNC44NTczLC03LjQzMDM5NTU2IDEuNjA2LC0wLjExNTE0MjI1IDYuODk3NDg1LDEuMjYyNTQ1OTYgNy4yODM1MTQsNy41MjI2MTI5NiB6IiBmaWxsPSJjcmltc29uIiBzdHJva2Utd2lkdGg9IjIiLz4KICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0ibSA4LjExNDc1NjIsMi4wNTI5ODI4IGMgMy4zNDkxNjk4LDAgNi4wNjQxMzI4LDIuNjc2ODYyNyA2LjA2NDEzMjgsNS45Nzg5NTMgMCwzLjMwMjExMjIgLTIuNzE0OTYzLDUuOTc4OTIwMiAtNi4wNjQxMzI4LDUuOTc4OTIwMiAtMy4zNDkxNDczLDAgLTYuMDY0MTc3MiwtMi42NzY4MDggLTYuMDY0MTc3MiwtNS45Nzg5MjAyIDAuMDA1MzksLTMuMjk5ODg2MSAyLjcxNzI2NTYsLTUuOTczNjQwOCA2LjA2NDE3NzIsLTUuOTc4OTUzIHogbSAwLC0xLjczNTgyNzE5IGMgLTQuMzIxNDgzNiwwIC03LjgyNDc0MDM4LDMuNDU0MDE4NDkgLTcuODI0NzQwMzgsNy43MTQ3ODAxOSAwLDQuMjYwNzI4MiAzLjUwMzI1Njc4LDcuNzE0NzQ1MiA3LjgyNDc0MDM4LDcuNzE0NzQ1MiA0LjMyMTQ0OTgsMCA3LjgyNDY5OTgsLTMuNDU0MDE3IDcuODI0Njk5OCwtNy43MTQ3NDUyIDAsLTIuMDQ2MDkxNCAtMC44MjQzOTIsLTQuMDA4MzY3MiAtMi4yOTE3NTYsLTUuNDU1MTc0NiBDIDEyLjE4MDIyNSwxLjEyOTk2NDggMTAuMTkwMDEzLDAuMzE3MTU1NjEgOC4xMTQ3NTYyLDAuMzE3MTU1NjEgWiBNIDYuOTM3NDU2Myw4LjI0MDU5ODUgNC42NzE4Njg1LDEwLjQ4NTg1MiA2LjAwODY4MTQsMTEuODc2NzI4IDguMzE3MDAzNSw5LjYwMDc5MTEgMTAuNjI1MzM3LDExLjg3NjcyOCAxMS45NjIxMzgsMTAuNDg1ODUyIDkuNjk2NTUwOCw4LjI0MDU5ODUgMTEuOTYyMTM4LDYuMDA2ODA2NiAxMC41NzMyNDYsNC42Mzc0MzM1IDguMzE3MDAzNSw2Ljg3MzQyOTcgNi4wNjA3NjA3LDQuNjM3NDMzNSA0LjY3MTg2ODUsNi4wMDY4MDY2IFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4="); + background-color: crimson; +} +.ace_icon_svg.ace_security_fold { + -webkit-mask-image: url("data:image/svg+xml;base64,CjxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMTcgMTQiIGZpbGw9Im5vbmUiPgogICAgPHBhdGggZD0iTTEwLjAwMDEgMTMuNjk5MkMxMC4wMDAxIDEzLjY5OTIgMTEuOTI0MSAxMy40NzYzIDEzIDEyLjY5OTJDMTQuNDEzOSAxMS42NzgxIDE2IDEwLjUgMTYuMTI1MSA2LjgxMTI2VjIuNTg5ODdDMTYuMTI1MSAyLjU0NzY4IDE2LjEyMjEgMi41MDYxOSAxNi4xMTY0IDIuNDY1NTlWMS43MTQ4NUgxNS4yNDE0TDE1LjIzMDcgMS43MTQ4NEwxNC42MjUxIDEuNjk5MjJWNi44MTEyM0MxNC42MjUxIDguNTEwNjEgMTQuNjI1MSA5LjQ2NDYxIDEyLjc4MjQgMTEuNzIxQzEyLjE1ODYgMTIuNDg0OCAxMC4wMDAxIDEzLjY5OTIgMTAuMDAwMSAxMy42OTkyWiIgZmlsbD0iY3JpbXNvbiIgc3Ryb2tlLXdpZHRoPSIyIi8+CiAgICA8cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGNsaXAtcnVsZT0iZXZlbm9kZCIgZD0iTTcuMzM2MDkgMC4zNjc0NzVDNy4wMzIxNCAwLjE1MjY1MiA2LjYyNTQ4IDAuMTUzNjE0IDYuMzIyNTMgMC4zNjk5OTdMNi4zMDg2OSAwLjM3OTU1NEM2LjI5NTUzIDAuMzg4NTg4IDYuMjczODggMC40MDMyNjYgNi4yNDQxNyAwLjQyMjc4OUM2LjE4NDcxIDAuNDYxODYgNi4wOTMyMSAwLjUyMDE3MSA1Ljk3MzEzIDAuNTkxMzczQzUuNzMyNTEgMC43MzQwNTkgNS4zNzk5IDAuOTI2ODY0IDQuOTQyNzkgMS4xMjAwOUM0LjA2MTQ0IDEuNTA5NyAyLjg3NTQxIDEuODgzNzcgMS41ODk4NCAxLjg4Mzc3SDAuNzE0ODQ0VjIuNzU4NzdWNi45ODAxNUMwLjcxNDg0NCA5LjQ5Mzc0IDIuMjg4NjYgMTEuMTk3MyAzLjcwMjU0IDEyLjIxODVDNC40MTg0NSAxMi43MzU1IDUuMTI4NzQgMTMuMTA1MyA1LjY1NzMzIDEzLjM0NTdDNS45MjI4NCAxMy40NjY0IDYuMTQ1NjYgMTMuNTU1OSA2LjMwNDY1IDEzLjYxNjFDNi4zODQyMyAxMy42NDYyIDYuNDQ4MDUgMTMuNjY5IDYuNDkzNDkgMTMuNjg0OEM2LjUxNjIyIDEzLjY5MjcgNi41MzQzOCAxMy42OTg5IDYuNTQ3NjQgMTMuNzAzM0w2LjU2MzgyIDEzLjcwODdMNi41NjkwOCAxMy43MTA0TDYuNTcwOTkgMTMuNzExTDYuODM5ODQgMTMuNzUzM0w2LjU3MjQyIDEzLjcxMTVDNi43NDYzMyAxMy43NjczIDYuOTMzMzUgMTMuNzY3MyA3LjEwNzI3IDEzLjcxMTVMNy4xMDg3IDEzLjcxMUw3LjExMDYxIDEzLjcxMDRMNy4xMTU4NyAxMy43MDg3TDcuMTMyMDUgMTMuNzAzM0M3LjE0NTMxIDEzLjY5ODkgNy4xNjM0NiAxMy42OTI3IDcuMTg2MTkgMTMuNjg0OEM3LjIzMTY0IDEzLjY2OSA3LjI5NTQ2IDEzLjY0NjIgNy4zNzUwMyAxMy42MTYxQzcuNTM0MDMgMTMuNTU1OSA3Ljc1Njg1IDEzLjQ2NjQgOC4wMjIzNiAxMy4zNDU3QzguNTUwOTUgMTMuMTA1MyA5LjI2MTIzIDEyLjczNTUgOS45NzcxNSAxMi4yMTg1QzExLjM5MSAxMS4xOTczIDEyLjk2NDggOS40OTM3NyAxMi45NjQ4IDYuOTgwMThWMi43NTg4QzEyLjk2NDggMi43MTY2IDEyLjk2MTkgMi42NzUxMSAxMi45NTYxIDIuNjM0NTFWMS44ODM3N0gxMi4wODExQzEyLjA3NzUgMS44ODM3NyAxMi4wNzQgMS44ODM3NyAxMi4wNzA0IDEuODgzNzdDMTAuNzk3OSAxLjg4MDA0IDkuNjE5NjIgMS41MTEwMiA4LjczODk0IDEuMTI0ODZDOC43MzUzNCAxLjEyMzI3IDguNzMxNzQgMS4xMjE2OCA4LjcyODE0IDEuMTIwMDlDOC4yOTEwMyAwLjkyNjg2NCA3LjkzODQyIDAuNzM0MDU5IDcuNjk3NzkgMC41OTEzNzNDNy41Nzc3MiAwLjUyMDE3MSA3LjQ4NjIyIDAuNDYxODYgNy40MjY3NiAwLjQyMjc4OUM3LjM5NzA1IDAuNDAzMjY2IDcuMzc1MzkgMC4zODg1ODggNy4zNjIyNCAwLjM3OTU1NEw3LjM0ODk2IDAuMzcwMzVDNy4zNDg5NiAwLjM3MDM1IDcuMzQ4NDcgMC4zNzAwMiA3LjM0NTYzIDAuMzc0MDU0TDcuMzM3NzkgMC4zNjg2NTlMNy4zMzYwOSAwLjM2NzQ3NVpNOC4wMzQ3MSAyLjcyNjkxQzguODYwNCAzLjA5MDYzIDkuOTYwNjYgMy40NjMwOSAxMS4yMDYxIDMuNTg5MDdWNi45ODAxNUgxMS4yMTQ4QzExLjIxNDggOC42Nzk1MyAxMC4xNjM3IDkuOTI1MDcgOC45NTI1NCAxMC43OTk4QzguMzU1OTUgMTEuMjMwNiA3Ljc1Mzc0IDExLjU0NTQgNy4yOTc5NiAxMS43NTI3QzcuMTE2NzEgMTEuODM1MSA2Ljk2MDYyIDExLjg5OTYgNi44Mzk4NCAxMS45NDY5QzYuNzE5MDYgMTEuODk5NiA2LjU2Mjk3IDExLjgzNTEgNi4zODE3MyAxMS43NTI3QzUuOTI1OTUgMTEuNTQ1NCA1LjMyMzczIDExLjIzMDYgNC43MjcxNSAxMC43OTk4QzMuNTE2MDMgOS45MjUwNyAyLjQ2NDg0IDguNjc5NTUgMi40NjQ4NCA2Ljk4MDE4VjMuNTg5MDlDMy43MTczOCAzLjQ2MjM5IDQuODIzMDggMy4wODYzOSA1LjY1MDMzIDIuNzIwNzFDNi4xNDIyOCAyLjUwMzI0IDYuNTQ0ODUgMi4yODUzNyA2LjgzMjU0IDIuMTE2MjRDNy4xMjE4MSAyLjI4NTM1IDcuNTI3IDIuNTAzNTIgOC4wMjE5NiAyLjcyMTMxQzguMDI2MiAyLjcyMzE3IDguMDMwNDUgMi43MjUwNCA4LjAzNDcxIDIuNzI2OTFaTTUuOTY0ODQgMy40MDE0N1Y3Ljc3NjQ3SDcuNzE0ODRWMy40MDE0N0g1Ljk2NDg0Wk01Ljk2NDg0IDEwLjQwMTVWOC42NTE0N0g3LjcxNDg0VjEwLjQwMTVINS45NjQ4NFoiIGZpbGw9ImNyaW1zb24iIHN0cm9rZS13aWR0aD0iMiIvPgo8L3N2Zz4="); + background-color: crimson; +} +.ace_icon_svg.ace_warning_fold { + -webkit-mask-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAyMCAxNiIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNC43NzY5IDE0LjczMzdMOC42NTE5MiAyLjQ4MzY5QzguMzI5NDYgMS44Mzg3NyA3LjQwOTEzIDEuODM4NzcgNy4wODY2NyAyLjQ4MzY5TDAuOTYxNjY5IDE0LjczMzdDMC42NzA3NzUgMTUuMzE1NSAxLjA5MzgzIDE2IDEuNzQ0MjkgMTZIMTMuOTk0M0MxNC42NDQ4IDE2IDE1LjA2NzggMTUuMzE1NSAxNC43NzY5IDE0LjczMzdaTTMuMTYwMDcgMTQuMjVMNy44NjkyOSA0LjgzMTU2TDEyLjU3ODUgMTQuMjVIMy4xNjAwN1pNOC43NDQyOSAxMS42MjVWMTMuMzc1SDYuOTk0MjlWMTEuNjI1SDguNzQ0MjlaTTYuOTk0MjkgMTAuNzVWNy4yNUg4Ljc0NDI5VjEwLjc1SDYuOTk0MjlaIiBmaWxsPSIjRUM3MjExIi8+CjxwYXRoIGQ9Ik0xMS4xOTkxIDIuOTUyMzhDMTAuODgwOSAyLjMxNDY3IDEwLjM1MzcgMS44MDUyNiA5LjcwNTUgMS41MDlMMTEuMDQxIDEuMDY5NzhDMTEuNjg4MyAwLjk0OTgxNCAxMi4zMzcgMS4yNzI2MyAxMi42MzE3IDEuODYxNDFMMTcuNjEzNiAxMS44MTYxQzE4LjM1MjcgMTMuMjkyOSAxNy41OTM4IDE1LjA4MDQgMTYuMDE4IDE1LjU3NDVDMTYuNDA0NCAxNC40NTA3IDE2LjMyMzEgMTMuMjE4OCAxNS43OTI0IDEyLjE1NTVMMTEuMTk5MSAyLjk1MjM4WiIgZmlsbD0iI0VDNzIxMSIvPgo8L3N2Zz4="); + background-color: darkorange; +} + +.ace_scrollbar { + contain: strict; + position: absolute; + right: 0; + bottom: 0; + z-index: 6; +} + +.ace_scrollbar-inner { + position: absolute; + cursor: text; + left: 0; + top: 0; +} + +.ace_scrollbar-v{ + overflow-x: hidden; + overflow-y: scroll; + top: 0; +} + +.ace_scrollbar-h { + overflow-x: scroll; + overflow-y: hidden; + left: 0; +} + +.ace_print-margin { + position: absolute; + height: 100%; +} + +.ace_text-input { + position: absolute; + z-index: 0; + width: 0.5em; + height: 1em; + opacity: 0; + background: transparent; + -moz-appearance: none; + appearance: none; + border: none; + resize: none; + outline: none; + overflow: hidden; + font: inherit; + padding: 0 1px; + margin: 0 -1px; + contain: strict; + -ms-user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + user-select: text; + /*with \`pre-line\` chrome inserts   instead of space*/ + white-space: pre!important; +} +.ace_text-input.ace_composition { + background: transparent; + color: inherit; + z-index: 1000; + opacity: 1; +} +.ace_composition_placeholder { color: transparent } +.ace_composition_marker { + border-bottom: 1px solid; + position: absolute; + border-radius: 0; + margin-top: 1px; +} + +[ace_nocontext=true] { + transform: none!important; + filter: none!important; + clip-path: none!important; + mask : none!important; + contain: none!important; + perspective: none!important; + mix-blend-mode: initial!important; + z-index: auto; +} + +.ace_layer { + z-index: 1; + position: absolute; + overflow: hidden; + /* workaround for chrome bug https://github.com/ajaxorg/ace/issues/2312*/ + word-wrap: normal; + white-space: pre; + height: 100%; + width: 100%; + box-sizing: border-box; + /* setting pointer-events: auto; on node under the mouse, which changes + during scroll, will break mouse wheel scrolling in Safari */ + pointer-events: none; +} + +.ace_gutter-layer { + position: relative; + width: auto; + text-align: right; + pointer-events: auto; + height: 1000000px; + contain: style size layout; +} + +.ace_text-layer { + font: inherit !important; + position: absolute; + height: 1000000px; + width: 1000000px; + contain: style size layout; +} + +.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group { + contain: style size layout; + position: absolute; + top: 0; + left: 0; + right: 0; +} + +.ace_hidpi .ace_text-layer, +.ace_hidpi .ace_gutter-layer, +.ace_hidpi .ace_content, +.ace_hidpi .ace_gutter { + contain: strict; +} +.ace_hidpi .ace_text-layer > .ace_line, +.ace_hidpi .ace_text-layer > .ace_line_group { + contain: strict; +} + +.ace_cjk { + display: inline-block; + text-align: center; +} + +.ace_cursor-layer { + z-index: 4; +} + +.ace_cursor { + z-index: 4; + position: absolute; + box-sizing: border-box; + border-left: 2px solid; + /* workaround for smooth cursor repaintng whole screen in chrome */ + transform: translatez(0); +} + +.ace_multiselect .ace_cursor { + border-left-width: 1px; +} + +.ace_slim-cursors .ace_cursor { + border-left-width: 1px; +} + +.ace_overwrite-cursors .ace_cursor { + border-left-width: 0; + border-bottom: 1px solid; +} + +.ace_hidden-cursors .ace_cursor { + opacity: 0.2; +} + +.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor { + opacity: 0; +} + +.ace_smooth-blinking .ace_cursor { + transition: opacity 0.18s; +} + +.ace_animate-blinking .ace_cursor { + animation-duration: 1000ms; + animation-timing-function: step-end; + animation-name: blink-ace-animate; + animation-iteration-count: infinite; +} + +.ace_animate-blinking.ace_smooth-blinking .ace_cursor { + animation-duration: 1000ms; + animation-timing-function: ease-in-out; + animation-name: blink-ace-animate-smooth; +} + +@keyframes blink-ace-animate { + from, to { opacity: 1; } + 60% { opacity: 0; } +} + +@keyframes blink-ace-animate-smooth { + from, to { opacity: 1; } + 45% { opacity: 1; } + 60% { opacity: 0; } + 85% { opacity: 0; } +} + +.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack { + position: absolute; + z-index: 3; +} + +.ace_marker-layer .ace_selection { + position: absolute; + z-index: 5; +} + +.ace_marker-layer .ace_bracket { + position: absolute; + z-index: 6; +} + +.ace_marker-layer .ace_error_bracket { + position: absolute; + border-bottom: 1px solid #DE5555; + border-radius: 0; +} + +.ace_marker-layer .ace_active-line { + position: absolute; + z-index: 2; +} + +.ace_marker-layer .ace_selected-word { + position: absolute; + z-index: 4; + box-sizing: border-box; +} + +.ace_line .ace_fold { + box-sizing: border-box; + + display: inline-block; + height: 11px; + margin-top: -2px; + vertical-align: middle; + + background-image: + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII="); + background-repeat: no-repeat, repeat-x; + background-position: center center, top left; + color: transparent; + + border: 1px solid black; + border-radius: 2px; + + cursor: pointer; + pointer-events: auto; +} + +.ace_dark .ace_fold { +} + +.ace_fold:hover{ + background-image: + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="), + url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC"); +} + +.ace_tooltip { + background-color: #f5f5f5; + border: 1px solid gray; + border-radius: 1px; + box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3); + color: black; + padding: 3px 4px; + position: fixed; + z-index: 999999; + box-sizing: border-box; + cursor: default; + white-space: pre-wrap; + word-wrap: break-word; + line-height: normal; + font-style: normal; + font-weight: normal; + letter-spacing: normal; + pointer-events: none; + overflow: auto; + max-width: min(33em, 66vw); + overscroll-behavior: contain; +} +.ace_tooltip pre { + white-space: pre-wrap; +} + +.ace_tooltip.ace_dark { + background-color: #636363; + color: #fff; +} + +.ace_tooltip:focus { + outline: 1px solid #5E9ED6; +} + +.ace_icon { + display: inline-block; + width: 18px; + vertical-align: top; +} + +.ace_icon_svg { + display: inline-block; + width: 12px; + vertical-align: top; + -webkit-mask-repeat: no-repeat; + -webkit-mask-size: 12px; + -webkit-mask-position: center; +} + +.ace_folding-enabled > .ace_gutter-cell, .ace_folding-enabled > .ace_gutter-cell_svg-icons { + padding-right: 13px; +} + +.ace_fold-widget, .ace_custom-widget { + box-sizing: border-box; + + margin: 0 -12px 0 1px; + display: none; + width: 11px; + vertical-align: top; + + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg=="); + background-repeat: no-repeat; + background-position: center; + + border-radius: 3px; + + border: 1px solid transparent; + cursor: pointer; +} + +.ace_custom-widget { + background: none; +} + +.ace_folding-enabled .ace_fold-widget { + display: inline-block; +} + +.ace_fold-widget.ace_end { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg=="); +} + +.ace_fold-widget.ace_closed { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA=="); +} + +.ace_fold-widget:hover { + border: 1px solid rgba(0, 0, 0, 0.3); + background-color: rgba(255, 255, 255, 0.2); + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7); +} + +.ace_fold-widget:active { + border: 1px solid rgba(0, 0, 0, 0.4); + background-color: rgba(0, 0, 0, 0.05); + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8); +} +/** + * Dark version for fold widgets + */ +.ace_dark .ace_fold-widget { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC"); +} +.ace_dark .ace_fold-widget.ace_end { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget.ace_closed { + background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg=="); +} +.ace_dark .ace_fold-widget:hover { + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); + background-color: rgba(255, 255, 255, 0.1); +} +.ace_dark .ace_fold-widget:active { + box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2); +} + +.ace_inline_button { + border: 1px solid lightgray; + display: inline-block; + margin: -1px 8px; + padding: 0 5px; + pointer-events: auto; + cursor: pointer; +} +.ace_inline_button:hover { + border-color: gray; + background: rgba(200,200,200,0.2); + display: inline-block; + pointer-events: auto; +} + +.ace_fold-widget.ace_invalid { + background-color: #FFB4B4; + border-color: #DE5555; +} + +.ace_fade-fold-widgets .ace_fold-widget { + transition: opacity 0.4s ease 0.05s; + opacity: 0; +} + +.ace_fade-fold-widgets:hover .ace_fold-widget { + transition: opacity 0.05s ease 0.05s; + opacity:1; +} + +.ace_underline { + text-decoration: underline; +} + +.ace_bold { + font-weight: bold; +} + +.ace_nobold .ace_bold { + font-weight: normal; +} + +.ace_italic { + font-style: italic; +} + + +.ace_error-marker { + background-color: rgba(255, 0, 0,0.2); + position: absolute; + z-index: 9; +} + +.ace_highlight-marker { + background-color: rgba(255, 255, 0,0.2); + position: absolute; + z-index: 8; +} + +.ace_mobile-menu { + position: absolute; + line-height: 1.5; + border-radius: 4px; + -ms-user-select: none; + -moz-user-select: none; + -webkit-user-select: none; + user-select: none; + background: white; + box-shadow: 1px 3px 2px grey; + border: 1px solid #dcdcdc; + color: black; +} +.ace_dark > .ace_mobile-menu { + background: #333; + color: #ccc; + box-shadow: 1px 3px 2px grey; + border: 1px solid #444; + +} +.ace_mobile-button { + padding: 2px; + cursor: pointer; + overflow: hidden; +} +.ace_mobile-button:hover { + background-color: #eee; + opacity:1; +} +.ace_mobile-button:active { + background-color: #ddd; +} + +.ace_placeholder { + position: relative; + font-family: arial; + transform: scale(0.9); + transform-origin: left; + white-space: pre; + opacity: 0.7; + margin: 0 10px; + z-index: 1; +} + +.ace_ghost_text { + opacity: 0.5; + font-style: italic; +} + +.ace_ghost_text_container > div { + white-space: pre; +} + +.ghost_text_line_wrapped::after { + content: "\u21A9"; + position: absolute; +} + +.ace_lineWidgetContainer.ace_ghost_text { + margin: 0px 4px +} + +.ace_screenreader-only { + position:absolute; + left:-10000px; + top:auto; + width:1px; + height:1px; + overflow:hidden; +} + +.ace_hidden_token { + display: none; +}`}),ace.define("ace/layer/decorators",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter"],function(e,p,m){var g=e("../lib/dom"),s=e("../lib/oop"),c=e("../lib/event_emitter").EventEmitter,i=function(){function f(n,o){this.parentEl=n,this.canvas=g.createElement("canvas"),this.renderer=o,this.pixelRatio=1,this.maxHeight=o.layerConfig.maxHeight,this.lineHeight=o.layerConfig.lineHeight,this.minDecorationHeight=2*this.pixelRatio|0,this.halfMinDecorationHeight=this.minDecorationHeight/2|0,this.canvas.style.top=0+"px",this.canvas.style.right=0+"px",this.canvas.style.zIndex=7+"px",this.canvas.style.position="absolute",this.colors={},this.colors.dark={error:"rgba(255, 18, 18, 1)",warning:"rgba(18, 136, 18, 1)",info:"rgba(18, 18, 136, 1)"},this.colors.light={error:"rgb(255,51,51)",warning:"rgb(32,133,72)",info:"rgb(35,68,138)"},this.setDimensions(),n.element.appendChild(this.canvas)}return f.prototype.$updateDecorators=function(n){var o=this.renderer.theme.isDark===!0?this.colors.dark:this.colors.light;this.setDimensions(n);var r=this.canvas.getContext("2d");function l(O,k){return O.priorityk.priority?1:0}var a=this.renderer.session.$annotations;if(r.clearRect(0,0,this.canvas.width,this.canvas.height),a){var u={info:1,warning:2,error:3};a.forEach(function(O){O.priority=u[O.type]||null}),a=a.sort(l);for(var h=0;hthis.canvasHeight&&(S=this.canvasHeight-this.halfMinDecorationHeight),y=Math.round(S-this.halfMinDecorationHeight),_=Math.round(S+this.halfMinDecorationHeight)}r.fillStyle=o[a[h].type]||null,r.fillRect(0,w,this.canvasWidth,_-y)}}var M=this.renderer.session.selection.getCursor();if(M){var v=this.compensateFoldRows(M.row),w=Math.round((M.row-v)*this.lineHeight*this.heightRatio);r.fillStyle="rgba(0, 0, 0, 0.5)",r.fillRect(0,w,this.canvasWidth,2)}},f.prototype.compensateFoldRows=function(n){var o=this.renderer.session.$foldData,r=0;if(o&&o.length>0)for(var l=0;lo[l].start.row&&n=o[l].end.row&&(r+=o[l].end.row-o[l].start.row);return r},f.prototype.compensateLineWidgets=function(n){var o=this.renderer.session.widgetManager;if(o){var r=0;return o.lineWidgets.forEach(function(l,a){n>a&&(r+=l.rowCount||0)}),r-1}return 0},f.prototype.setDimensions=function(n){n?(this.maxHeight=n.maxHeight,this.lineHeight=n.lineHeight,this.canvasHeight=n.height,this.maxHeightk&&(this.$changedLines.firstRow=k),this.$changedLines.lastRowthis.layerConfig.lastRow||this.$loop.schedule(this.CHANGE_LINES)},O.prototype.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},O.prototype.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},O.prototype.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},O.prototype.updateFull=function(k){k?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},O.prototype.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},O.prototype.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},O.prototype.onResize=function(k,A,T,E){if(!(this.resizing>2)){this.resizing>0?this.resizing++:this.resizing=k?1:0;var C=this.container;E||(E=C.clientHeight||C.scrollHeight),!E&&this.$maxLines&&this.lineHeight>1&&(!C.style.height||C.style.height=="0px")&&(C.style.height="1px",E=C.clientHeight||C.scrollHeight),T||(T=C.clientWidth||C.scrollWidth);var x=this.$updateCachedSize(k,A,T,E);if(this.$resizeTimer&&this.$resizeTimer.cancel(),!this.$size.scrollerHeight||!T&&!E)return this.resizing=0;k&&(this.$gutterLayer.$padding=null),k?this.$renderChanges(x|this.$changes,!0):this.$loop.schedule(x|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.$customScrollbar&&this.$updateCustomScrollbar(!0)}},O.prototype.$updateCachedSize=function(k,A,T,E){E-=this.$extraHeight||0;var C=0,x=this.$size,L={width:x.width,height:x.height,scrollerHeight:x.scrollerHeight,scrollerWidth:x.scrollerWidth};if(E&&(k||x.height!=E)&&(x.height=E,C|=this.CHANGE_SIZE,x.scrollerHeight=x.height,this.$horizScroll&&(x.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.setHeight(x.scrollerHeight),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",C=C|this.CHANGE_SCROLL),T&&(k||x.width!=T)){C|=this.CHANGE_SIZE,x.width=T,A==null&&(A=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=A,s.setStyle(this.scrollBarH.element.style,"left",A+"px"),s.setStyle(this.scroller.style,"left",A+this.margin.left+"px"),x.scrollerWidth=Math.max(0,T-A-this.scrollBarV.getWidth()-this.margin.h),s.setStyle(this.$gutter.style,"left",this.margin.left+"px");var q=this.scrollBarV.getWidth()+"px";s.setStyle(this.scrollBarH.element.style,"right",q),s.setStyle(this.scroller.style,"right",q),s.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight()),this.scrollBarH.setWidth(x.scrollerWidth),(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||k)&&(C|=this.CHANGE_FULL)}return x.$dirty=!T||!E,C&&this._signal("resize",L),C},O.prototype.onGutterResize=function(k){var A=this.$showGutter?k:0;A!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,A,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},O.prototype.adjustWrapLimit=function(){var k=this.$size.scrollerWidth-this.$padding*2,A=Math.floor(k/this.characterWidth);return this.session.adjustWrapLimit(A,this.$showPrintMargin&&this.$printMarginColumn)},O.prototype.setAnimatedScroll=function(k){this.setOption("animatedScroll",k)},O.prototype.getAnimatedScroll=function(){return this.$animatedScroll},O.prototype.setShowInvisibles=function(k){this.setOption("showInvisibles",k),this.session.$bidiHandler.setShowInvisibles(k)},O.prototype.getShowInvisibles=function(){return this.getOption("showInvisibles")},O.prototype.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},O.prototype.setDisplayIndentGuides=function(k){this.setOption("displayIndentGuides",k)},O.prototype.getHighlightIndentGuides=function(){return this.getOption("highlightIndentGuides")},O.prototype.setHighlightIndentGuides=function(k){this.setOption("highlightIndentGuides",k)},O.prototype.setShowPrintMargin=function(k){this.setOption("showPrintMargin",k)},O.prototype.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},O.prototype.setPrintMarginColumn=function(k){this.setOption("printMarginColumn",k)},O.prototype.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},O.prototype.getShowGutter=function(){return this.getOption("showGutter")},O.prototype.setShowGutter=function(k){return this.setOption("showGutter",k)},O.prototype.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},O.prototype.setFadeFoldWidgets=function(k){this.setOption("fadeFoldWidgets",k)},O.prototype.setHighlightGutterLine=function(k){this.setOption("highlightGutterLine",k)},O.prototype.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},O.prototype.$updatePrintMargin=function(){if(!(!this.$showPrintMargin&&!this.$printMarginEl)){if(!this.$printMarginEl){var k=s.createElement("div");k.className="ace_layer ace_print-margin-layer",this.$printMarginEl=s.createElement("div"),this.$printMarginEl.className="ace_print-margin",k.appendChild(this.$printMarginEl),this.content.insertBefore(k,this.content.firstChild)}var A=this.$printMarginEl.style;A.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",A.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()}},O.prototype.getContainerElement=function(){return this.container},O.prototype.getMouseEventTarget=function(){return this.scroller},O.prototype.getTextAreaContainer=function(){return this.container},O.prototype.$moveTextAreaToCursor=function(){if(!this.$isMousePressed){var k=this.textarea.style,A=this.$composition;if(!this.$keepTextAreaAtCursor&&!A){s.translate(this.textarea,-100,0);return}var T=this.$cursorLayer.$pixelPos;if(!!T){A&&A.markerRange&&(T=this.$cursorLayer.getPixelPosition(A.markerRange.start,!0));var E=this.layerConfig,C=T.top,x=T.left;C-=E.offset;var L=A&&A.useTextareaForIME||b.isMobile?this.lineHeight:1;if(C<0||C>E.height-L){s.translate(this.textarea,0,0);return}var q=1,N=this.$size.height-L;if(!A)C+=this.lineHeight;else if(A.useTextareaForIME){var F=this.textarea.value;q=this.characterWidth*this.session.$getStringScreenWidth(F)[0]}else C+=this.lineHeight+2;x-=this.scrollLeft,x>this.$size.scrollerWidth-q&&(x=this.$size.scrollerWidth-q),x+=this.gutterWidth+this.margin.left,s.setStyle(k,"height",L+"px"),s.setStyle(k,"width",q+"px"),s.translate(this.textarea,Math.min(x,this.$size.scrollerWidth-q),Math.min(C,N))}}},O.prototype.getFirstVisibleRow=function(){return this.layerConfig.firstRow},O.prototype.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},O.prototype.getLastFullyVisibleRow=function(){var k=this.layerConfig,A=k.lastRow,T=this.session.documentToScreenRow(A,0)*k.lineHeight;return T-this.session.getScrollTop()>k.height-k.lineHeight?A-1:A},O.prototype.getLastVisibleRow=function(){return this.layerConfig.lastRow},O.prototype.setPadding=function(k){this.$padding=k,this.$textLayer.setPadding(k),this.$cursorLayer.setPadding(k),this.$markerFront.setPadding(k),this.$markerBack.setPadding(k),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},O.prototype.setScrollMargin=function(k,A,T,E){var C=this.scrollMargin;C.top=k|0,C.bottom=A|0,C.right=E|0,C.left=T|0,C.v=C.top+C.bottom,C.h=C.left+C.right,C.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-C.top),this.updateFull()},O.prototype.setMargin=function(k,A,T,E){var C=this.margin;C.top=k|0,C.bottom=A|0,C.right=E|0,C.left=T|0,C.v=C.top+C.bottom,C.h=C.left+C.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},O.prototype.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},O.prototype.setHScrollBarAlwaysVisible=function(k){this.setOption("hScrollBarAlwaysVisible",k)},O.prototype.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},O.prototype.setVScrollBarAlwaysVisible=function(k){this.setOption("vScrollBarAlwaysVisible",k)},O.prototype.$updateScrollBarV=function(){var k=this.layerConfig.maxHeight,A=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(k-=(A-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>k-A&&(k=this.scrollTop+A,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(k+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},O.prototype.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},O.prototype.freeze=function(){this.$frozen=!0},O.prototype.unfreeze=function(){this.$frozen=!1},O.prototype.$renderChanges=function(k,A){if(this.$changes&&(k|=this.$changes,this.$changes=0),!this.session||!this.container.offsetWidth||this.$frozen||!k&&!A){this.$changes|=k;return}if(this.$size.$dirty)return this.$changes|=k,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",k),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var T=this.layerConfig;if(k&this.CHANGE_FULL||k&this.CHANGE_SIZE||k&this.CHANGE_TEXT||k&this.CHANGE_LINES||k&this.CHANGE_SCROLL||k&this.CHANGE_H_SCROLL){if(k|=this.$computeLayerConfig()|this.$loop.clear(),T.firstRow!=this.layerConfig.firstRow&&T.firstRowScreen==this.layerConfig.firstRowScreen){var E=this.scrollTop+(T.firstRow-Math.max(this.layerConfig.firstRow,0))*this.lineHeight;E>0&&(this.scrollTop=E,k=k|this.CHANGE_SCROLL,k|=this.$computeLayerConfig()|this.$loop.clear())}T=this.layerConfig,this.$updateScrollBarV(),k&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),s.translate(this.content,-this.scrollLeft,-T.offset);var C=T.width+2*this.$padding+"px",x=T.minHeight+"px";s.setStyle(this.content.style,"width",C),s.setStyle(this.content.style,"height",x)}if(k&this.CHANGE_H_SCROLL&&(s.translate(this.content,-this.scrollLeft,-T.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller ":"ace_scroller ace_scroll-left ",this.enableKeyboardAccessibility&&(this.scroller.className+=this.keyboardFocusClassName)),k&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(T),this.$showGutter&&this.$gutterLayer.update(T),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T),this.$markerBack.update(T),this.$markerFront.update(T),this.$cursorLayer.update(T),this.$moveTextAreaToCursor(),this._signal("afterRender",k);return}if(k&this.CHANGE_SCROLL){this.$changedLines=null,k&this.CHANGE_TEXT||k&this.CHANGE_LINES?this.$textLayer.update(T):this.$textLayer.scrollLines(T),this.$showGutter&&(k&this.CHANGE_GUTTER||k&this.CHANGE_LINES?this.$gutterLayer.update(T):this.$gutterLayer.scrollLines(T)),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T),this.$markerBack.update(T),this.$markerFront.update(T),this.$cursorLayer.update(T),this.$moveTextAreaToCursor(),this._signal("afterRender",k);return}k&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(T),this.$showGutter&&this.$gutterLayer.update(T),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T)):k&this.CHANGE_LINES?((this.$updateLines()||k&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(T),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T)):k&this.CHANGE_TEXT||k&this.CHANGE_GUTTER?(this.$showGutter&&this.$gutterLayer.update(T),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T)):k&this.CHANGE_CURSOR&&(this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(T),this.$customScrollbar&&this.$scrollDecorator.$updateDecorators(T)),k&this.CHANGE_CURSOR&&(this.$cursorLayer.update(T),this.$moveTextAreaToCursor()),k&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(T),k&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(T),this._signal("afterRender",k)},O.prototype.$autosize=function(){var k=this.session.getScreenLength()*this.lineHeight,A=this.$maxLines*this.lineHeight,T=Math.min(A,Math.max((this.$minLines||1)*this.lineHeight,k))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(T+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&T>this.$maxPixelHeight&&(T=this.$maxPixelHeight);var E=T<=2*this.lineHeight,C=!E&&k>A;if(T!=this.desiredHeight||this.$size.height!=this.desiredHeight||C!=this.$vScroll){C!=this.$vScroll&&(this.$vScroll=C,this.scrollBarV.setVisible(C));var x=this.container.clientWidth;this.container.style.height=T+"px",this.$updateCachedSize(!0,this.$gutterWidth,x,T),this.desiredHeight=T,this._signal("autosize")}},O.prototype.$computeLayerConfig=function(){var k=this.session,A=this.$size,T=A.height<=2*this.lineHeight,E=this.session.getScreenLength(),C=E*this.lineHeight,x=this.$getLongestLine(),L=!T&&(this.$hScrollBarAlwaysVisible||A.scrollerWidth-x-2*this.$padding<0),q=this.$horizScroll!==L;q&&(this.$horizScroll=L,this.scrollBarH.setVisible(L));var N=this.$vScroll;this.$maxLines&&this.lineHeight>1&&(this.$autosize(),T=A.height<=2*this.lineHeight);var F=A.scrollerHeight+this.lineHeight,I=!this.$maxLines&&this.$scrollPastEnd?(A.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;C+=I;var R=this.scrollMargin;this.session.setScrollTop(Math.max(-R.top,Math.min(this.scrollTop,C-A.scrollerHeight+R.bottom))),this.session.setScrollLeft(Math.max(-R.left,Math.min(this.scrollLeft,x+2*this.$padding-A.scrollerWidth+R.right)));var B=!T&&(this.$vScrollBarAlwaysVisible||A.scrollerHeight-C+I<0||this.scrollTop>R.top),D=N!==B;D&&(this.$vScroll=B,this.scrollBarV.setVisible(B));var P=this.scrollTop%this.lineHeight,j=Math.ceil(F/this.lineHeight)-1,V=Math.max(0,Math.round((this.scrollTop-P)/this.lineHeight)),W=V+j,H,z,U=this.lineHeight;V=k.screenToDocumentRow(V,0);var Z=k.getFoldLine(V);Z&&(V=Z.start.row),H=k.documentToScreenRow(V,0),z=k.getRowLength(V)*U,W=Math.min(k.screenToDocumentRow(W,0),k.getLength()-1),F=A.scrollerHeight+k.getRowLength(W)*U+z,P=this.scrollTop-H*U;var ne=0;return(this.layerConfig.width!=x||q)&&(ne=this.CHANGE_H_SCROLL),(q||D)&&(ne|=this.$updateCachedSize(!0,this.gutterWidth,A.width,A.height),this._signal("scrollbarVisibilityChanged"),D&&(x=this.$getLongestLine())),this.layerConfig={width:x,padding:this.$padding,firstRow:V,firstRowScreen:H,lastRow:W,lineHeight:U,characterWidth:this.characterWidth,minHeight:F,maxHeight:C,offset:P,gutterOffset:U?Math.max(0,Math.ceil((P+A.height-A.scrollerHeight)/U)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(x-this.$padding),ne},O.prototype.$updateLines=function(){if(!!this.$changedLines){var k=this.$changedLines.firstRow,A=this.$changedLines.lastRow;this.$changedLines=null;var T=this.layerConfig;if(!(k>T.lastRow+1)&&!(Athis.$textLayer.MAX_LINE_LENGTH&&(k=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(k*this.characterWidth))},O.prototype.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},O.prototype.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},O.prototype.addGutterDecoration=function(k,A){this.$gutterLayer.addGutterDecoration(k,A)},O.prototype.removeGutterDecoration=function(k,A){this.$gutterLayer.removeGutterDecoration(k,A)},O.prototype.updateBreakpoints=function(k){this._rows=k,this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.setAnnotations=function(k){this.$gutterLayer.setAnnotations(k),this.$loop.schedule(this.CHANGE_GUTTER)},O.prototype.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},O.prototype.hideCursor=function(){this.$cursorLayer.hideCursor()},O.prototype.showCursor=function(){this.$cursorLayer.showCursor()},O.prototype.scrollSelectionIntoView=function(k,A,T){this.scrollCursorIntoView(k,T),this.scrollCursorIntoView(A,T)},O.prototype.scrollCursorIntoView=function(k,A,T){if(this.$size.scrollerHeight!==0){var E=this.$cursorLayer.getPixelPosition(k),C=E.left,x=E.top,L=T&&T.top||0,q=T&&T.bottom||0;this.$scrollAnimation&&(this.$stopAnimation=!0);var N=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;N+L>x?(A&&N+L>x+this.lineHeight&&(x-=A*this.$size.scrollerHeight),x===0&&(x=-this.scrollMargin.top),this.session.setScrollTop(x)):N+this.$size.scrollerHeight-q=1-this.scrollMargin.top||A>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom||k<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left||k>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},O.prototype.pixelToScreenCoordinates=function(k,A){var T;if(this.$hasCssTransforms){T={top:0,left:0};var E=this.$fontMetrics.transformCoordinates([k,A]);k=E[1]-this.gutterWidth-this.margin.left,A=E[0]}else T=this.scroller.getBoundingClientRect();var C=k+this.scrollLeft-T.left-this.$padding,x=C/this.characterWidth,L=Math.floor((A+this.scrollTop-T.top)/this.lineHeight),q=this.$blockCursor?Math.floor(x):Math.round(x);return{row:L,column:q,side:x-q>0?1:-1,offsetX:C}},O.prototype.screenToTextCoordinates=function(k,A){var T;if(this.$hasCssTransforms){T={top:0,left:0};var E=this.$fontMetrics.transformCoordinates([k,A]);k=E[1]-this.gutterWidth-this.margin.left,A=E[0]}else T=this.scroller.getBoundingClientRect();var C=k+this.scrollLeft-T.left-this.$padding,x=C/this.characterWidth,L=this.$blockCursor?Math.floor(x):Math.round(x),q=Math.floor((A+this.scrollTop-T.top)/this.lineHeight);return this.session.screenToDocumentPosition(q,Math.max(L,0),C)},O.prototype.textToScreenCoordinates=function(k,A){var T=this.scroller.getBoundingClientRect(),E=this.session.documentToScreenPosition(k,A),C=this.$padding+(this.session.$bidiHandler.isBidiRow(E.row,k)?this.session.$bidiHandler.getPosLeft(E.column):Math.round(E.column*this.characterWidth)),x=E.row*this.lineHeight;return{pageX:T.left+C-this.scrollLeft,pageY:T.top+x-this.scrollTop}},O.prototype.visualizeFocus=function(){s.addCssClass(this.container,"ace_focus")},O.prototype.visualizeBlur=function(){s.removeCssClass(this.container,"ace_focus")},O.prototype.showComposition=function(k){this.$composition=k,k.cssText||(k.cssText=this.textarea.style.cssText),k.useTextareaForIME==null&&(k.useTextareaForIME=this.$useTextareaForIME),this.$useTextareaForIME?(s.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):k.markerId=this.session.addMarker(k.markerRange,"ace_composition_marker","text")},O.prototype.setCompositionText=function(k){var A=this.session.selection.cursor;this.addToken(k,"composition_placeholder",A.row,A.column),this.$moveTextAreaToCursor()},O.prototype.hideComposition=function(){if(!!this.$composition){this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),s.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText;var k=this.session.selection.cursor;this.removeExtraToken(k.row,k.column),this.$composition=null,this.$cursorLayer.element.style.display=""}},O.prototype.setGhostText=function(k,A){var T=this.session.selection.cursor,E=A||{row:T.row,column:T.column};this.removeGhostText();var C=this.$calculateWrappedTextChunks(k,E);this.addToken(C[0].text,"ghost_text",E.row,E.column),this.$ghostText={text:k,position:{row:E.row,column:E.column}};var x=s.createElement("div");if(C.length>1){var L=this.hideTokensAfterPosition(E.row,E.column),q;C.slice(1).forEach(function(D){var P=s.createElement("div"),j=s.createElement("span");j.className="ace_ghost_text",D.wrapped&&(P.className="ghost_text_line_wrapped"),D.text.length===0&&(D.text=" "),j.appendChild(s.createTextNode(D.text)),P.appendChild(j),x.appendChild(P),q=P}),L.forEach(function(D){var P=s.createElement("span");S(D.type)||(P.className="ace_"+D.type.replace(/\./g," ace_")),P.appendChild(s.createTextNode(D.value)),q.appendChild(P)}),this.$ghostTextWidget={el:x,row:E.row,column:E.column,className:"ace_ghost_text_container"},this.session.widgetManager.addLineWidget(this.$ghostTextWidget);var N=this.$cursorLayer.getPixelPosition(E,!0),F=this.container,I=F.getBoundingClientRect().height,R=C.length*this.lineHeight,B=R0){var F=0;N.push(C[L].length);for(var I=0;I1||Math.abs(k.$size.height-E)>1?k.$resizeTimer.delay():k.$resizeTimer.cancel()}),this.$resizeObserver.observe(this.container)}},O}();M.prototype.CHANGE_CURSOR=1,M.prototype.CHANGE_MARKER=2,M.prototype.CHANGE_GUTTER=4,M.prototype.CHANGE_SCROLL=8,M.prototype.CHANGE_LINES=16,M.prototype.CHANGE_TEXT=32,M.prototype.CHANGE_SIZE=64,M.prototype.CHANGE_MARKER_BACK=128,M.prototype.CHANGE_MARKER_FRONT=256,M.prototype.CHANGE_FULL=512,M.prototype.CHANGE_H_SCROLL=1024,M.prototype.$changes=0,M.prototype.$padding=null,M.prototype.$frozen=!1,M.prototype.STEPS=8,g.implement(M.prototype,w),i.defineOptions(M.prototype,"renderer",{useResizeObserver:{set:function(O){!O&&this.$resizeObserver?(this.$resizeObserver.disconnect(),this.$resizeTimer.cancel(),this.$resizeTimer=this.$resizeObserver=null):O&&!this.$resizeObserver&&this.$addResizeObserver()}},animatedScroll:{initialValue:!1},showInvisibles:{set:function(O){this.$textLayer.setShowInvisibles(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(O){typeof O=="number"&&(this.$printMarginColumn=O),this.$showPrintMargin=!!O,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(O){this.$gutter.style.display=O?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},useSvgGutterIcons:{set:function(O){this.$gutterLayer.$useSvgGutterIcons=O},initialValue:!1},showFoldedAnnotations:{set:function(O){this.$gutterLayer.$showFoldedAnnotations=O},initialValue:!1},fadeFoldWidgets:{set:function(O){s.setCssClass(this.$gutter,"ace_fade-fold-widgets",O)},initialValue:!1},showFoldWidgets:{set:function(O){this.$gutterLayer.setShowFoldWidgets(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(O){this.$textLayer.setDisplayIndentGuides(O)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightIndentGuides:{set:function(O){this.$textLayer.setHighlightIndentGuides(O)==!0?this.$textLayer.$highlightIndentGuide():this.$textLayer.$clearActiveIndentGuide(this.$textLayer.$lines.cells)},initialValue:!0},highlightGutterLine:{set:function(O){this.$gutterLayer.setHighlightGutterLine(O),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},hScrollBarAlwaysVisible:{set:function(O){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(O){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(O){typeof O=="number"&&(O=O+"px"),this.container.style.fontSize=O,this.updateFontSize()},initialValue:12},fontFamily:{set:function(O){this.container.style.fontFamily=O,this.updateFontSize()}},maxLines:{set:function(O){this.updateFull()}},minLines:{set:function(O){this.$minLines<562949953421311||(this.$minLines=0),this.updateFull()}},maxPixelHeight:{set:function(O){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(O){O=+O||0,this.$scrollPastEnd!=O&&(this.$scrollPastEnd=O,this.$loop.schedule(this.CHANGE_SCROLL))},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(O){this.$gutterLayer.$fixedWidth=!!O,this.$loop.schedule(this.CHANGE_GUTTER)}},customScrollbar:{set:function(O){this.$updateCustomScrollbar(O)},initialValue:!1},theme:{set:function(O){this.setTheme(O)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0},hasCssTransforms:{},useTextareaForIME:{initialValue:!b.isMobile&&!b.isIE}}),p.VirtualRenderer=M}),ace.define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,p,m){var g=e("../lib/oop"),s=e("../lib/net"),c=e("../lib/event_emitter").EventEmitter,i=e("../config");function f(l){var a="importScripts('"+s.qualifyURL(l)+"');";try{return new Blob([a],{type:"application/javascript"})}catch{var u=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,h=new u;return h.append(a),h.getBlob("application/javascript")}}function n(l){if(typeof Worker=="undefined")return{postMessage:function(){},terminate:function(){}};if(i.get("loadWorkerFromBlob")){var a=f(l),u=window.URL||window.webkitURL,h=u.createObjectURL(a);return new Worker(h)}return new Worker(l)}var o=function(l){l.postMessage||(l=this.$createWorkerFromOldConfig.apply(this,arguments)),this.$worker=l,this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){g.implement(this,c),this.$createWorkerFromOldConfig=function(l,a,u,h,$){if(e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl),i.get("packaged")||!e.toUrl)h=h||i.moduleUrl(a,"worker");else{var v=this.$normalizePath;h=h||v(e.toUrl("ace/worker/worker.js",null,"_"));var w={};l.forEach(function(y){w[y]=v(e.toUrl(y,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}return this.$worker=n(h),$&&this.send("importScripts",$),this.$worker.postMessage({init:!0,tlns:w,module:a,classname:u}),this.$worker},this.onMessage=function(l){var a=l.data;switch(a.type){case"event":this._signal(a.name,{data:a.data});break;case"call":var u=this.callbacks[a.id];u&&(u(a.data),delete this.callbacks[a.id]);break;case"error":this.reportError(a.data);break;case"log":window.console&&console.log&&console.log.apply(console,a.data);break}},this.reportError=function(l){window.console&&console.error&&console.error(l)},this.$normalizePath=function(l){return s.qualifyURL(l)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker.onerror=function(l){l.preventDefault()},this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(l,a){this.$worker.postMessage({command:l,args:a})},this.call=function(l,a,u){if(u){var h=this.callbackId++;this.callbacks[h]=u,a.push(h)}this.send(l,a)},this.emit=function(l,a){try{a.data&&a.data.err&&(a.data.err={message:a.data.err.message,stack:a.data.err.stack,code:a.data.err.code}),this.$worker&&this.$worker.postMessage({event:l,data:{data:a.data}})}catch(u){console.error(u.stack)}},this.attachToDocument=function(l){this.$doc&&this.terminate(),this.$doc=l,this.call("setValue",[l.getValue()]),l.on("change",this.changeListener,!0)},this.changeListener=function(l){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),l.action=="insert"?this.deltaQueue.push(l.start,l.lines):this.deltaQueue.push(l.start,l.end)},this.$sendDeltaQueue=function(){var l=this.deltaQueue;!l||(this.deltaQueue=null,l.length>50&&l.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:l}))}}).call(o.prototype);var r=function(l,a,u){var h=null,$=!1,v=Object.create(c),w=[],y=new o({messageBuffer:w,terminate:function(){},postMessage:function(b){w.push(b),!!h&&($?setTimeout(_):_())}});y.setEmitSync=function(b){$=b};var _=function(){var b=w.shift();b.command?h[b.command].apply(h,b.args):b.event&&v._signal(b.event,b.data)};return v.postMessage=function(b){y.onMessage({data:b})},v.callback=function(b,S){this.postMessage({type:"call",id:S,data:b})},v.emit=function(b,S){this.postMessage({type:"event",name:b,data:S})},i.loadModule(["worker",a],function(b){for(h=new b[u](v);w.length;)_()}),y};p.UIWorkerClient=r,p.WorkerClient=o,p.createWorker=n}),ace.define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,p,m){var g=e("./range").Range,s=e("./lib/event_emitter").EventEmitter,c=e("./lib/oop"),i=function(){function f(n,o,r,l,a,u){var h=this;this.length=o,this.session=n,this.doc=n.getDocument(),this.mainClass=a,this.othersClass=u,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate,!0),this.$others=l,this.$onCursorChange=function(){setTimeout(function(){h.onCursorChange()})},this.$pos=r;var $=n.getUndoManager().$undoStack||n.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=$.length,this.setup(),n.selection.on("changeCursor",this.$onCursorChange)}return f.prototype.setup=function(){var n=this,o=this.doc,r=this.session;this.selectionBefore=r.selection.toJSON(),r.selection.inMultiSelectMode&&r.selection.toSingleRange(),this.pos=o.createAnchor(this.$pos.row,this.$pos.column);var l=this.pos;l.$insertRight=!0,l.detach(),l.markerId=r.addMarker(new g(l.row,l.column,l.row,l.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(a){var u=o.createAnchor(a.row,a.column);u.$insertRight=!0,u.detach(),n.others.push(u)}),r.setUndoSelect(!1)},f.prototype.showOtherMarkers=function(){if(!this.othersActive){var n=this.session,o=this;this.othersActive=!0,this.others.forEach(function(r){r.markerId=n.addMarker(new g(r.row,r.column,r.row,r.column+o.length),o.othersClass,null,!1)})}},f.prototype.hideOtherMarkers=function(){if(!!this.othersActive){this.othersActive=!1;for(var n=0;n=this.pos.column&&o.start.column<=this.pos.column+this.length+1,a=o.start.column-this.pos.column;if(this.updateAnchors(n),l&&(this.length+=r),l&&!this.session.$fromUndo){if(n.action==="insert")for(var u=this.others.length-1;u>=0;u--){var h=this.others[u],$={row:h.row,column:h.column+a};this.doc.insertMergedLines($,n.lines)}else if(n.action==="remove")for(var u=this.others.length-1;u>=0;u--){var h=this.others[u],$={row:h.row,column:h.column+a};this.doc.remove(new g($.row,$.column,$.row,$.column-r))}}this.$updating=!1,this.updateMarkers()}},f.prototype.updateAnchors=function(n){this.pos.onChange(n);for(var o=this.others.length;o--;)this.others[o].onChange(n);this.updateMarkers()},f.prototype.updateMarkers=function(){if(!this.$updating){var n=this,o=this.session,r=function(a,u){o.removeMarker(a.markerId),a.markerId=o.addMarker(new g(a.row,a.column,a.row,a.column+n.length),u,null,!1)};r(this.pos,this.mainClass);for(var l=this.others.length;l--;)r(this.others[l],this.othersClass)}},f.prototype.onCursorChange=function(n){if(!(this.$updating||!this.session)){var o=this.session.selection.getCursor();o.row===this.pos.row&&o.column>=this.pos.column&&o.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",n)):(this.hideOtherMarkers(),this._emit("cursorLeave",n))}},f.prototype.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.off("change",this.$onUpdate),this.session.selection.off("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},f.prototype.cancel=function(){if(this.$undoStackDepth!==-1){for(var n=this.session.getUndoManager(),o=(n.$undoStack||n.$undostack).length-this.$undoStackDepth,r=0;r1?s.multiSelect.joinSelections():s.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(s){s.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(s){s.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(s){s.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],p.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(s){s.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(s){return s&&s.inMultiSelectMode}}];var g=e("../keyboard/hash_handler").HashHandler;p.keyboardHandler=new g(p.multiSelectCommands)}),ace.define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,p,m){var g=e("./range_list").RangeList,s=e("./range").Range,c=e("./selection").Selection,i=e("./mouse/multi_select_handler").onMouseDown,f=e("./lib/event"),n=e("./lib/lang"),o=e("./commands/multi_select_commands");p.commands=o.defaultCommands.concat(o.multiSelectCommands);var r=e("./search").Search,l=new r;function a(y,_,b){return l.$options.wrap=!0,l.$options.needle=_,l.$options.backwards=b==-1,l.find(y)}var u=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(u.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(y,_){if(!!y){if(!this.inMultiSelectMode&&this.rangeCount===0){var b=this.toOrientedRange();if(this.rangeList.add(b),this.rangeList.add(y),this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),_||this.fromOrientedRange(y);this.rangeList.removeAll(),this.rangeList.add(b),this.$onAddRange(b)}y.cursor||(y.cursor=y.end);var S=this.rangeList.add(y);return this.$onAddRange(y),S.length&&this.$onRemoveRange(S),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),_||this.fromOrientedRange(y)}},this.toSingleRange=function(y){y=y||this.ranges[0];var _=this.rangeList.removeAll();_.length&&this.$onRemoveRange(_),y&&this.fromOrientedRange(y)},this.substractPoint=function(y){var _=this.rangeList.substractPoint(y);if(_)return this.$onRemoveRange(_),_[0]},this.mergeOverlappingRanges=function(){var y=this.rangeList.merge();y.length&&this.$onRemoveRange(y)},this.$onAddRange=function(y){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(y),this._signal("addRange",{range:y})},this.$onRemoveRange=function(y){if(this.rangeCount=this.rangeList.ranges.length,this.rangeCount==1&&this.inMultiSelectMode){var _=this.rangeList.ranges.pop();y.push(_),this.rangeCount=0}for(var b=y.length;b--;){var S=this.ranges.indexOf(y[b]);this.ranges.splice(S,1)}this._signal("removeRange",{ranges:y}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),_=_||this.ranges[0],_&&!_.isEqual(this.getRange())&&this.fromOrientedRange(_)},this.$initRangeList=function(){this.rangeList||(this.rangeList=new g,this.ranges=[],this.rangeCount=0)},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){for(var y=this.ranges.length?this.ranges:[this.getRange()],_=[],b=0;b1){var y=this.rangeList.ranges,_=y[y.length-1],b=s.fromPoints(y[0].start,_.end);this.toSingleRange(),this.setSelectionRange(b,_.cursor==_.start)}else{var S=this.session.documentToScreenPosition(this.cursor),M=this.session.documentToScreenPosition(this.anchor),O=this.rectangularRangeBlock(S,M);O.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(y,_,b){var S=[],M=y.column<_.column;if(M)var O=y.column,k=_.column,A=y.offsetX,T=_.offsetX;else var O=_.column,k=y.column,A=_.offsetX,T=y.offsetX;var E=y.row<_.row;if(E)var C=y.row,x=_.row;else var C=_.row,x=y.row;O<0&&(O=0),C<0&&(C=0),C==x&&(b=!0);for(var L,q=C;q<=x;q++){var N=s.fromPoints(this.session.screenToDocumentPosition(q,O,A),this.session.screenToDocumentPosition(q,k,T));if(N.isEmpty()){if(L&&$(N.end,L))break;L=N.end}N.cursor=M?N.start:N.end,S.push(N)}if(E&&S.reverse(),!b){for(var F=S.length-1;S[F].isEmpty()&&F>0;)F--;if(F>0)for(var I=0;S[I].isEmpty();)I++;for(var R=F;R>=I;R--)S[R].isEmpty()&&S.splice(R,1)}return S}}.call(c.prototype);var h=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(y){y.cursor||(y.cursor=y.end);var _=this.getSelectionStyle();return y.marker=this.session.addMarker(y,"ace_selection",_),this.session.$selectionMarkers.push(y),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,y},this.removeSelectionMarker=function(y){if(!!y.marker){this.session.removeMarker(y.marker);var _=this.session.$selectionMarkers.indexOf(y);_!=-1&&this.session.$selectionMarkers.splice(_,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length}},this.removeSelectionMarkers=function(y){for(var _=this.session.$selectionMarkers,b=y.length;b--;){var S=y[b];if(!!S.marker){this.session.removeMarker(S.marker);var M=_.indexOf(S);M!=-1&&_.splice(M,1)}}this.session.selectionMarkerCount=_.length},this.$onAddRange=function(y){this.addSelectionMarker(y.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(y){this.removeSelectionMarkers(y.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(y){this.inMultiSelectMode||(this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(o.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers())},this.$onSingleSelect=function(y){this.session.multiSelect.inVirtualMode||(this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(o.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection"))},this.$onMultiSelectExec=function(y){var _=y.command,b=y.editor;if(!!b.multiSelect){if(_.multiSelectAction)_.multiSelectAction=="forEach"?S=b.forEachSelection(_,y.args):_.multiSelectAction=="forEachLine"?S=b.forEachSelection(_,y.args,!0):_.multiSelectAction=="single"?(b.exitMultiSelectMode(),S=_.exec(b,y.args||{})):S=_.multiSelectAction(b,y.args||{});else{var S=_.exec(b,y.args||{});b.multiSelect.addRange(b.multiSelect.toOrientedRange()),b.multiSelect.mergeOverlappingRanges()}return S}},this.forEachSelection=function(y,_,b){if(!this.inVirtualSelectionMode){var S=b&&b.keepOrder,M=b==!0||b&&b.$byLines,O=this.session,k=this.selection,A=k.rangeList,T=(S?k:A).ranges,E;if(!T.length)return y.exec?y.exec(this,_||{}):y(this,_||{});var C=k._eventRegistry;k._eventRegistry={};var x=new c(O);this.inVirtualSelectionMode=!0;for(var L=T.length;L--;){if(M)for(;L>0&&T[L].start.row==T[L-1].end.row;)L--;x.fromOrientedRange(T[L]),x.index=L,this.selection=O.selection=x;var q=y.exec?y.exec(this,_||{}):y(this,_||{});!E&&q!==void 0&&(E=q),x.toOrientedRange(T[L])}x.detach(),this.selection=O.selection=k,this.inVirtualSelectionMode=!1,k._eventRegistry=C,k.mergeOverlappingRanges(),k.ranges[0]&&k.fromOrientedRange(k.ranges[0]);var N=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),N&&N.from==N.to&&this.renderer.animateScrolling(N.from),E}},this.exitMultiSelectMode=function(){!this.inMultiSelectMode||this.inVirtualSelectionMode||this.multiSelect.toSingleRange()},this.getSelectedText=function(){var y="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){for(var _=this.multiSelect.rangeList.ranges,b=[],S=0;S<_.length;S++)b.push(this.session.getTextRange(_[S]));var M=this.session.getDocument().getNewLineCharacter();y=b.join(M),y.length==(b.length-1)*M.length&&(y="")}else this.selection.isEmpty()||(y=this.session.getTextRange(this.getSelectionRange()));return y},this.$checkMultiselectChange=function(y,_){if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var b=this.multiSelect.ranges[0];if(this.multiSelect.isEmpty()&&_==this.multiSelect.anchor)return;var S=_==this.multiSelect.anchor?b.cursor==b.start?b.end:b.start:b.cursor;S.row!=_.row||this.session.$clipPositionToDocument(S.row,S.column).column!=_.column?this.multiSelect.toSingleRange(this.multiSelect.toOrientedRange()):this.multiSelect.mergeOverlappingRanges()}},this.findAll=function(y,_,b){if(_=_||{},_.needle=y||_.needle,_.needle==null){var S=this.selection.isEmpty()?this.selection.getWordRange():this.selection.getRange();_.needle=this.session.getTextRange(S)}this.$search.set(_);var M=this.$search.findAll(this.session);if(!M.length)return 0;var O=this.multiSelect;b||O.toSingleRange(M[0]);for(var k=M.length;k--;)O.addRange(M[k],!0);return S&&O.rangeList.rangeAtPoint(S.start)&&O.addRange(S,!0),M.length},this.selectMoreLines=function(y,_){var b=this.selection.toOrientedRange(),S=b.cursor==b.end,M=this.session.documentToScreenPosition(b.cursor);this.selection.$desiredColumn&&(M.column=this.selection.$desiredColumn);var O=this.session.screenToDocumentPosition(M.row+y,M.column);if(b.isEmpty())var A=O;else var k=this.session.documentToScreenPosition(S?b.end:b.start),A=this.session.screenToDocumentPosition(k.row+y,k.column);if(S){var T=s.fromPoints(O,A);T.cursor=T.start}else{var T=s.fromPoints(A,O);T.cursor=T.end}if(T.desiredColumn=M.column,!this.selection.inMultiSelectMode)this.selection.addRange(b);else if(_)var E=b.cursor;this.selection.addRange(T),E&&this.selection.substractPoint(E)},this.transposeSelections=function(y){for(var _=this.session,b=_.multiSelect,S=b.ranges,M=S.length;M--;){var O=S[M];if(O.isEmpty()){var k=_.getWordRange(O.start.row,O.start.column);O.start.row=k.start.row,O.start.column=k.start.column,O.end.row=k.end.row,O.end.column=k.end.column}}b.mergeOverlappingRanges();for(var A=[],M=S.length;M--;){var O=S[M];A.unshift(_.getTextRange(O))}y<0?A.unshift(A.pop()):A.push(A.shift());for(var M=S.length;M--;){var O=S[M],T=O.clone();_.replace(O,A[M]),O.start.row=T.start.row,O.start.column=T.start.column}b.fromOrientedRange(b.ranges[0])},this.selectMore=function(y,_,b){var S=this.session,M=S.multiSelect,O=M.toOrientedRange();if(!(O.isEmpty()&&(O=S.getWordRange(O.start.row,O.start.column),O.cursor=y==-1?O.start:O.end,this.multiSelect.addRange(O),b))){var k=S.getTextRange(O),A=a(S,k,y);A&&(A.cursor=y==-1?A.start:A.end,this.session.unfold(A),this.multiSelect.addRange(A),this.renderer.scrollCursorIntoView(null,.5)),_&&this.multiSelect.substractPoint(O.cursor)}},this.alignCursors=function(){var y=this.session,_=y.multiSelect,b=_.ranges,S=-1,M=b.filter(function(F){if(F.cursor.row==S)return!0;S=F.cursor.row});if(!b.length||M.length==b.length-1){var O=this.selection.getRange(),k=O.start.row,A=O.end.row,T=k==A;if(T){var E=this.session.getLength(),C;do C=this.session.getLine(A);while(/[=:]/.test(C)&&++A0);k<0&&(k=0),A>=E&&(A=E-1)}var x=this.session.removeFullLines(k,A);x=this.$reAlignText(x,T),this.session.insert({row:k,column:0},x.join(` +`)+` +`),T||(O.start.column=0,O.end.column=x[x.length-1].length),this.selection.setRange(O)}else{M.forEach(function(F){_.substractPoint(F.cursor)});var L=0,q=1/0,N=b.map(function(F){var I=F.cursor,R=y.getLine(I.row),B=R.substr(I.column).search(/\S/g);return B==-1&&(B=0),I.column>L&&(L=I.column),BD?y.insert(R,n.stringRepeat(" ",B-D)):y.remove(new s(R.row,R.column,R.row,R.column-B+D)),F.start.column=F.end.column=L,F.start.row=F.end.row=R.row,F.cursor=F.end}),_.fromOrientedRange(b[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(y,_){var b=!0,S=!0,M,O,k;return y.map(function(x){var L=x.match(/(\s*)(.*?)(\s*)([=:].*)/);return L?M==null?(M=L[1].length,O=L[2].length,k=L[3].length,L):(M+O+k!=L[1].length+L[2].length+L[3].length&&(S=!1),M!=L[1].length&&(b=!1),M>L[1].length&&(M=L[1].length),OL[3].length&&(k=L[3].length),L):[x]}).map(_?T:b?S?E:T:C);function A(x){return n.stringRepeat(" ",x)}function T(x){return x[2]?A(M)+x[2]+A(O-x[2].length+k)+x[4].replace(/^([=:])\s+/,"$1 "):x[0]}function E(x){return x[2]?A(M+O-x[2].length)+x[2]+A(k)+x[4].replace(/^([=:])\s+/,"$1 "):x[0]}function C(x){return x[2]?A(M)+x[2]+A(k)+x[4].replace(/^([=:])\s+/,"$1 "):x[0]}}}).call(h.prototype);function $(y,_){return y.row==_.row&&y.column==_.column}p.onSessionChange=function(y){var _=y.session;_&&!_.multiSelect&&(_.$selectionMarkers=[],_.selection.$initRangeList(),_.multiSelect=_.selection),this.multiSelect=_&&_.multiSelect;var b=y.oldSession;b&&(b.multiSelect.off("addRange",this.$onAddRange),b.multiSelect.off("removeRange",this.$onRemoveRange),b.multiSelect.off("multiSelect",this.$onMultiSelect),b.multiSelect.off("singleSelect",this.$onSingleSelect),b.multiSelect.lead.off("change",this.$checkMultiselectChange),b.multiSelect.anchor.off("change",this.$checkMultiselectChange)),_&&(_.multiSelect.on("addRange",this.$onAddRange),_.multiSelect.on("removeRange",this.$onRemoveRange),_.multiSelect.on("multiSelect",this.$onMultiSelect),_.multiSelect.on("singleSelect",this.$onSingleSelect),_.multiSelect.lead.on("change",this.$checkMultiselectChange),_.multiSelect.anchor.on("change",this.$checkMultiselectChange)),_&&this.inMultiSelectMode!=_.selection.inMultiSelectMode&&(_.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())};function v(y){y.$multiselectOnSessionChange||(y.$onAddRange=y.$onAddRange.bind(y),y.$onRemoveRange=y.$onRemoveRange.bind(y),y.$onMultiSelect=y.$onMultiSelect.bind(y),y.$onSingleSelect=y.$onSingleSelect.bind(y),y.$multiselectOnSessionChange=p.onSessionChange.bind(y),y.$checkMultiselectChange=y.$checkMultiselectChange.bind(y),y.$multiselectOnSessionChange(y),y.on("changeSession",y.$multiselectOnSessionChange),y.on("mousedown",i),y.commands.addCommands(o.defaultCommands),w(y))}function w(y){if(!y.textInput)return;var _=y.textInput.getElement(),b=!1;f.addListener(_,"keydown",function(M){var O=M.keyCode==18&&!(M.ctrlKey||M.shiftKey||M.metaKey);y.$blockSelectEnabled&&O?b||(y.renderer.setMouseCursor("crosshair"),b=!0):b&&S()},y),f.addListener(_,"keyup",S,y),f.addListener(_,"blur",S,y);function S(M){b&&(y.renderer.setMouseCursor(""),b=!1)}}p.MultiSelect=v,e("./config").defineOptions(h.prototype,"editor",{enableMultiselect:{set:function(y){v(this),y?this.on("mousedown",i):this.off("mousedown",i)},value:!0},enableBlockSelect:{set:function(y){this.$blockSelectEnabled=y},value:!0}})}),ace.define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,p,m){var g=e("../../range").Range,s=p.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(c,i,f){var n=c.getLine(f);return this.foldingStartMarker.test(n)?"start":i=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(n)?"end":""},this.getFoldWidgetRange=function(c,i,f){return null},this.indentationBlock=function(c,i,f){var n=/\S/,o=c.getLine(i),r=o.search(n);if(r!=-1){for(var l=f||o.length,a=c.getLength(),u=i,h=i;++iu){var w=c.getLine(h).length;return new g(u,l,h,w)}}},this.openingBracketBlock=function(c,i,f,n,o){var r={row:f,column:n+1},l=c.$findClosingBracket(i,r,o);if(!!l){var a=c.foldWidgets[l.row];return a==null&&(a=c.getFoldWidget(l.row)),a=="start"&&l.row>r.row&&(l.row--,l.column=c.getLine(l.row).length),g.fromPoints(r,l)}},this.closingBracketBlock=function(c,i,f,n,o){var r={row:f,column:n},l=c.$findOpeningBracket(i,r);if(!!l)return l.column++,r.column--,g.fromPoints(l,r)}}).call(s.prototype)}),ace.define("ace/ext/error_marker",["require","exports","module","ace/lib/dom","ace/range","ace/config"],function(e,p,m){var g=e("../lib/dom"),s=e("../range").Range,c=e("../config").nls;function i(n,o,r){for(var l=0,a=n.length-1;l<=a;){var u=l+a>>1,h=r(o,n[u]);if(h>0)l=u+1;else if(h<0)a=u-1;else return u}return-(l+1)}function f(n,o,r){var l=n.getAnnotations().sort(s.comparePoints);if(!!l.length){var a=i(l,{row:o,column:-1},s.comparePoints);a<0&&(a=-a-1),a>=l.length?a=r>0?0:l.length-1:a===0&&r<0&&(a=l.length-1);var u=l[a];if(!(!u||!r)){if(u.row===o){do u=l[a+=r];while(u&&u.row===o);if(!u)return l.slice()}var h=[];o=u.row;do h[r<0?"unshift":"push"](u),u=l[a+=r];while(u&&u.row==o);return h.length&&h}}}p.showErrorMarker=function(n,o){var r=n.session,l=n.getCursorPosition(),a=l.row,u=r.widgetManager.getWidgetsAtRow(a).filter(function(M){return M.type=="errorMarker"})[0];u?u.destroy():a-=o;var h=f(r,a,o),$;if(h){var v=h[0];l.column=(v.pos&&typeof v.column!="number"?v.pos.sc:v.column)||0,l.row=v.row,$=n.renderer.$gutterLayer.$annotations[l.row]}else{if(u)return;$={displayText:[c("error-marker.good-state","Looks good!")],className:"ace_ok"}}n.session.unfold(l.row),n.selection.moveToPosition(l);var w={row:l.row,fixedWidth:!0,coverGutter:!0,el:g.createElement("div"),type:"errorMarker"},y=w.el.appendChild(g.createElement("div")),_=w.el.appendChild(g.createElement("div"));_.className="error_widget_arrow "+$.className;var b=n.renderer.$cursorLayer.getPixelPosition(l).left;_.style.left=b+n.renderer.gutterWidth-5+"px",w.el.className="error_widget_wrapper",y.className="error_widget "+$.className,$.displayText.forEach(function(M,O){y.appendChild(g.createTextNode(M)),O<$.displayText.length-1&&y.appendChild(g.createElement("br"))}),y.appendChild(g.createElement("div"));var S=function(M,O,k){if(O===0&&(k==="esc"||k==="return"))return w.destroy(),{command:"null"}};w.destroy=function(){n.$mouseHandler.isMousePressed||(n.keyBinding.removeKeyboardHandler(S),r.widgetManager.removeLineWidget(w),n.off("changeSelection",w.destroy),n.off("changeSession",w.destroy),n.off("mouseup",w.destroy),n.off("change",w.destroy))},n.keyBinding.addKeyboardHandler(S),n.on("changeSelection",w.destroy),n.on("changeSession",w.destroy),n.on("mouseup",w.destroy),n.on("change",w.destroy),n.session.widgetManager.addLineWidget(w),w.el.onmousedown=n.focus.bind(n),n.renderer.scrollCursorIntoView(null,.5,{bottom:w.el.offsetHeight})},g.importCssString(` + .error_widget_wrapper { + background: inherit; + color: inherit; + border:none + } + .error_widget { + border-top: solid 2px; + border-bottom: solid 2px; + margin: 5px 0; + padding: 10px 40px; + white-space: pre-wrap; + } + .error_widget.ace_error, .error_widget_arrow.ace_error{ + border-color: #ff5a5a + } + .error_widget.ace_warning, .error_widget_arrow.ace_warning{ + border-color: #F1D817 + } + .error_widget.ace_info, .error_widget_arrow.ace_info{ + border-color: #5a5a5a + } + .error_widget.ace_ok, .error_widget_arrow.ace_ok{ + border-color: #5aaa5a + } + .error_widget_arrow { + position: absolute; + border: solid 5px; + border-top-color: transparent!important; + border-right-color: transparent!important; + border-left-color: transparent!important; + top: -5px; + } +`,"error_marker.css",!1)}),ace.define("ace/ace",["require","exports","module","ace/lib/dom","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config","ace/loader_build"],function(e,p,m){e("./loader_build")(p);var g=e("./lib/dom"),s=e("./range").Range,c=e("./editor").Editor,i=e("./edit_session").EditSession,f=e("./undomanager").UndoManager,n=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),p.config=e("./config"),p.edit=function(r,l){if(typeof r=="string"){var a=r;if(r=document.getElementById(a),!r)throw new Error("ace.edit can't find div #"+a)}if(r&&r.env&&r.env.editor instanceof c)return r.env.editor;var u="";if(r&&/input|textarea/i.test(r.tagName)){var h=r;u=h.value,r=g.createElement("pre"),h.parentNode.replaceChild(r,h)}else r&&(u=r.textContent,r.innerHTML="");var $=p.createEditSession(u),v=new c(new n(r),$,l),w={document:$,editor:v,onResize:v.resize.bind(v,null)};return h&&(w.textarea=h),v.on("destroy",function(){w.editor.container.env=null}),v.container.env=v.env=w,v},p.createEditSession=function(r,l){var a=new i(r,l);return a.setUndoManager(new f),a},p.Range=s,p.Editor=c,p.EditSession=i,p.UndoManager=f,p.VirtualRenderer=n;var o=p.config.version;p.version=o}),function(){ace.require(["ace/ace"],function(e){e&&(e.config.init(!0),e.define=ace.define);var p=function(){return this}();!p&&typeof window!="undefined"&&(p=window),!p&&typeof self!="undefined"&&(p=self),p.ace||(p.ace=e);for(var m in e)e.hasOwnProperty(m)&&(p.ace[m]=e[m]);p.ace.default=p.ace,t&&(t.exports=p.ace)})}()})(ace$2);var ace$1=ace$2.exports,themeSqlserver={exports:{}};(function(t,d){ace.define("ace/theme/sqlserver-css",["require","exports","module"],function(e,p,m){m.exports=`.ace-sqlserver .ace_gutter { + background: #ebebeb; + color: #333; + overflow: hidden; +} + +.ace-sqlserver .ace_print-margin { + width: 1px; + background: #e8e8e8; +} + +.ace-sqlserver { + background-color: #FFFFFF; + color: black; +} + +.ace-sqlserver .ace_identifier { + color: black; +} + +.ace-sqlserver .ace_keyword { + color: #0000FF; +} + +.ace-sqlserver .ace_numeric { + color: black; +} + +.ace-sqlserver .ace_storage { + color: #11B7BE; +} + +.ace-sqlserver .ace_keyword.ace_operator, +.ace-sqlserver .ace_lparen, +.ace-sqlserver .ace_rparen, +.ace-sqlserver .ace_punctuation { + color: #808080; +} + +.ace-sqlserver .ace_set.ace_statement { + color: #0000FF; + text-decoration: underline; +} + +.ace-sqlserver .ace_cursor { + color: black; +} + +.ace-sqlserver .ace_invisible { + color: rgb(191, 191, 191); +} + +.ace-sqlserver .ace_constant.ace_buildin { + color: rgb(88, 72, 246); +} + +.ace-sqlserver .ace_constant.ace_language { + color: #979797; +} + +.ace-sqlserver .ace_constant.ace_library { + color: rgb(6, 150, 14); +} + +.ace-sqlserver .ace_invalid { + background-color: rgb(153, 0, 0); + color: white; +} + +.ace-sqlserver .ace_support.ace_function { + color: #FF00FF; +} + +.ace-sqlserver .ace_support.ace_constant { + color: rgb(6, 150, 14); +} + +.ace-sqlserver .ace_class { + color: #008080; +} + +.ace-sqlserver .ace_support.ace_other { + color: #6D79DE; +} + +.ace-sqlserver .ace_variable.ace_parameter { + font-style: italic; + color: #FD971F; +} + +.ace-sqlserver .ace_comment { + color: #008000; +} + +.ace-sqlserver .ace_constant.ace_numeric { + color: black; +} + +.ace-sqlserver .ace_variable { + color: rgb(49, 132, 149); +} + +.ace-sqlserver .ace_xml-pe { + color: rgb(104, 104, 91); +} + +.ace-sqlserver .ace_support.ace_storedprocedure { + color: #800000; +} + +.ace-sqlserver .ace_heading { + color: rgb(12, 7, 255); +} + +.ace-sqlserver .ace_list { + color: rgb(185, 6, 144); +} + +.ace-sqlserver .ace_marker-layer .ace_selection { + background: rgb(181, 213, 255); +} + +.ace-sqlserver .ace_marker-layer .ace_step { + background: rgb(252, 255, 0); +} + +.ace-sqlserver .ace_marker-layer .ace_stack { + background: rgb(164, 229, 101); +} + +.ace-sqlserver .ace_marker-layer .ace_bracket { + margin: -1px 0 0 -1px; + border: 1px solid rgb(192, 192, 192); +} + +.ace-sqlserver .ace_marker-layer .ace_active-line { + background: rgba(0, 0, 0, 0.07); +} + +.ace-sqlserver .ace_gutter-active-line { + background-color: #dcdcdc; +} + +.ace-sqlserver .ace_marker-layer .ace_selected-word { + background: rgb(250, 250, 255); + border: 1px solid rgb(200, 200, 250); +} + +.ace-sqlserver .ace_meta.ace_tag { + color: #0000FF; +} + +.ace-sqlserver .ace_string.ace_regex { + color: #FF0000; +} + +.ace-sqlserver .ace_string { + color: #FF0000; +} + +.ace-sqlserver .ace_entity.ace_other.ace_attribute-name { + color: #994409; +} + +.ace-sqlserver .ace_indent-guide { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y; +} + +.ace-sqlserver .ace_indent-guide-active { + background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAIGNIUk0AAHolAACAgwAA+f8AAIDpAAB1MAAA6mAAADqYAAAXb5JfxUYAAAAZSURBVHjaYvj///9/hivKyv8BAAAA//8DACLqBhbvk+/eAAAAAElFTkSuQmCC") right repeat-y; +} +`}),ace.define("ace/theme/sqlserver",["require","exports","module","ace/theme/sqlserver-css","ace/lib/dom"],function(e,p,m){p.isDark=!1,p.cssClass="ace-sqlserver",p.cssText=e("./sqlserver-css");var g=e("../lib/dom");g.importCssString(p.cssText,p.cssClass,!1)}),function(){ace.require(["ace/theme/sqlserver"],function(e){t&&(t.exports=e)})}()})(themeSqlserver);var modeJavascript={exports:{}};(function(t,d){ace.define("ace/mode/jsdoc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,c=function(){this.$rules={start:[{token:["comment.doc.tag","comment.doc.text","lparen.doc"],regex:"(@(?:param|member|typedef|property|namespace|var|const|callback))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:["rparen.doc","text.doc","variable.parameter.doc","lparen.doc","variable.parameter.doc","rparen.doc"],regex:/(})(\s*)(?:([\w=:\/\.]+)|(?:(\[)([\w=:\/\.\-\'\" ]+)(\])))/,next:"pop"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","lparen.doc"],regex:"(@(?:returns?|yields|type|this|suppress|public|protected|private|package|modifies|implements|external|exception|throws|enum|define|extends))(\\s*)({)",push:[{token:"lparen.doc",regex:"{",push:[{include:"doc-syntax"},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"}]},{token:"rparen.doc",regex:"}|(?=$)",next:"pop"},{include:"doc-syntax"},{defaultToken:"text.doc"}]},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:'(@(?:alias|memberof|instance|module|name|lends|namespace|external|this|template|requires|param|implements|function|extends|typedef|mixes|constructor|var|memberof\\!|event|listens|exports|class|constructs|interface|emits|fires|throws|const|callback|borrows|augments))(\\s+)(\\w[\\w#.:/~"\\-]*)?'},{token:["comment.doc.tag","text.doc","variable.parameter.doc"],regex:"(@method)(\\s+)(\\w[\\w.\\(\\)]*)"},{token:"comment.doc.tag",regex:"@access\\s+(?:private|public|protected)"},{token:"comment.doc.tag",regex:"@kind\\s+(?:class|constant|event|external|file|function|member|mixin|module|namespace|typedef)"},{token:"comment.doc.tag",regex:"@\\w+(?=\\s|$)"},c.getTagRule(),{defaultToken:"comment.doc.body",caseInsensitive:!0}],"doc-syntax":[{token:"operator.doc",regex:/[|:]/},{token:"paren.doc",regex:/[\[\]]/}]},this.normalizeRules()};g.inherits(c,s),c.getTagRule=function(i){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},c.getStartRule=function(i){return{token:"comment.doc",regex:/\/\*\*(?!\/)/,next:i}},c.getEndRule=function(i){return{token:"comment.doc",regex:"\\*\\/",next:i}},p.JsDocCommentHighlightRules=c}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/jsdoc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,p,m){function g(){var r=n.replace("\\d","\\d\\-"),l={onMatch:function(u,h,$){var v=u.charAt(1)=="/"?2:1;return v==1?(h!=this.nextState?$.unshift(this.next,this.nextState,0):$.unshift(this.next),$[2]++):v==2&&h==this.nextState&&($[1]--,(!$[1]||$[1]<0)&&($.shift(),$.shift())),[{type:"meta.tag.punctuation."+(v==1?"":"end-")+"tag-open.xml",value:u.slice(0,v)},{type:"meta.tag.tag-name.xml",value:u.substr(v)}]},regex:"))",next:"jsxAttributes",nextState:"jsx"};this.$rules.start.unshift(l);var a={regex:"{",token:"paren.quasi.start",push:"start"};this.$rules.jsx=[a,l,{include:"reference"},{defaultToken:"string.xml"}],this.$rules.jsxAttributes=[{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",onMatch:function(u,h,$){return h==$[0]&&$.shift(),u.length==2&&($[0]==this.nextState&&$[1]--,(!$[1]||$[1]<0)&&$.splice(0,2)),this.next=$[0]||"start",[{type:this.token,value:u}]},nextState:"jsx"},a,s("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:r},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},l],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function s(r){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:r||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:r||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var c=e("../lib/oop"),i=e("./jsdoc_comment_highlight_rules").JsDocCommentHighlightRules,f=e("./text_highlight_rules").TextHighlightRules,n="[a-zA-Z\\$_\xA1-\uFFFF][a-zA-Z\\d\\$_\xA1-\uFFFF]*",o=function(r){var l={"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Symbol|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static|constructor","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},a=this.createKeywordMapper(l,"identifier"),u="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",h="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)",$="(function)(\\s*)(\\*?)",v={token:["identifier","text","paren.lparen"],regex:"(\\b(?!"+Object.values(l).join("|")+"\\b)"+n+")(\\s*)(\\()"};this.$rules={no_regex:[i.getStartRule("doc-start"),s("no_regex"),v,{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(=)(\\s*)"+$+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))("+n+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","storage.type","text","paren.lparen"],regex:"("+n+")(\\s*)(:)(\\s*)"+$+"(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)"+$+"(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:`from(?=\\s*('|"))`},{token:"keyword",regex:"(?:"+u+")\\b",next:"start"},{token:"support.constant",regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|debug|time|trace|timeEnd|assert)\b/},{token:a,regex:n},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:"keyword.operator",regex:/=/},{token:["storage.type","text","storage.type","text","paren.lparen"],regex:$+"(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","storage.type","text","text","entity.name.function","text","paren.lparen"],regex:"(function)(?:(?:(\\s*)(\\*)(\\s*))|(\\s+))(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:"prototype"},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|lter|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward|rEach)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:n},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),s("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],default_parameter:[{token:"string",regex:"'(?=.)",push:[{token:"string",regex:"'|$",next:"pop"},{include:"qstring"}]},{token:"string",regex:'"(?=.)',push:[{token:"string",regex:'"|$',next:"pop"},{include:"qqstring"}]},{token:"constant.language",regex:"null|Infinity|NaN|undefined"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:"punctuation.operator",regex:",",next:"function_arguments"},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],function_arguments:[s("function_arguments"),{token:"variable.parameter",regex:n},{token:"punctuation.operator",regex:","},{token:"text",regex:"\\s+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:h},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:h},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]},(!r||!r.noES6)&&(this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(w,y,_){if(this.next=w=="{"?this.nextState:"",w=="{"&&_.length)_.unshift("start",y);else if(w=="}"&&_.length&&(_.shift(),this.next=_.shift(),this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1))return"paren.quasi.end";return w=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:h},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]},{token:["variable.parameter","text"],regex:"("+n+")(\\s*)(?=\\=>)"},{token:"paren.lparen",regex:"(\\()(?=[^\\(]+\\s*=>)",next:"function_arguments"},{token:"variable.language",regex:"(?:(?:(?:Weak)?(?:Set|Map))|Promise)\\b"}),this.$rules.function_arguments.unshift({token:"keyword.operator",regex:"=",next:"default_parameter"},{token:"keyword.operator",regex:"\\.{3}"}),this.$rules.property.unshift({token:"support.function",regex:"(findIndex|repeat|startsWith|endsWith|includes|isSafeInteger|trunc|cbrt|log2|log10|sign|then|catch|finally|resolve|reject|race|any|all|allSettled|keys|entries|isInteger)\\b(?=\\()"},{token:"constant.language",regex:"(?:MAX_SAFE_INTEGER|MIN_SAFE_INTEGER|EPSILON)\\b"}),(!r||r.jsx!=0)&&g.call(this)),this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};c.inherits(o,f),p.JavaScriptHighlightRules=o}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,s=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var f=c.getLine(i),n=f.match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=c.findMatchingBracket({row:i,column:o});if(!r||r.row==i)return 0;var l=this.$getIndent(c.getLine(r.row));c.replace(new g(i,0,i,o-1),l)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(s.prototype),p.MatchingBraceOutdent=s}),ace.define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator"],function(e,p,m){function g(n,o){return n&&n.type.lastIndexOf(o+".xml")>-1}var s=e("../../lib/oop"),c=e("../behaviour").Behaviour,i=e("../../token_iterator").TokenIterator,f=function(){this.add("string_dquotes","insertion",function(n,o,r,l,a){if(a=='"'||a=="'"){var u=a,h=l.doc.getTextRange(r.getSelectionRange());if(h!==""&&h!=="'"&&h!='"'&&r.getWrapBehavioursEnabled())return{text:u+h+u,selection:!1};var $=r.getCursorPosition(),v=l.doc.getLine($.row),w=v.substring($.column,$.column+1),y=new i(l,$.row,$.column),_=y.getCurrentToken();if(w==u&&(g(_,"attribute-value")||g(_,"string")))return{text:"",selection:[1,1]};if(_||(_=y.stepBackward()),!_)return;for(;g(_,"tag-whitespace")||g(_,"whitespace");)_=y.stepBackward();var b=!w||w.match(/\s/);if(g(_,"attribute-equals")&&(b||w==">")||g(_,"decl-attribute-equals")&&(b||w=="?"))return{text:u+u,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(n,o,r,l,a){var u=l.doc.getTextRange(a);if(!a.isMultiLine()&&(u=='"'||u=="'")){var h=l.doc.getLine(a.start.row),$=h.substring(a.start.column+1,a.start.column+2);if($==u)return a.end.column++,a}}),this.add("autoclosing","insertion",function(n,o,r,l,a){if(a==">"){var u=r.getSelectionRange().start,h=new i(l,u.row,u.column),$=h.getCurrentToken()||h.stepBackward();if(!$||!(g($,"tag-name")||g($,"tag-whitespace")||g($,"attribute-name")||g($,"attribute-equals")||g($,"attribute-value"))||g($,"reference.attribute-value"))return;if(g($,"attribute-value")){var v=h.getCurrentTokenColumn()+$.value.length;if(u.column/.test(l.getLine(u.row).slice(u.column)))return;for(;!g($,"tag-name");)if($=h.stepBackward(),$.value=="<"){$=h.stepForward();break}var y=h.getCurrentTokenRow(),_=h.getCurrentTokenColumn();if(g(h.stepBackward(),"end-tag-open"))return;var b=$.value;return y==u.row&&(b=b.substring(0,u.column-_)),this.voidElements&&this.voidElements.hasOwnProperty(b.toLowerCase())?void 0:{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(n,o,r,l,a){if(a==` +`){var u=r.getCursorPosition(),h=l.getLine(u.row),$=new i(l,u.row,u.column),v=$.getCurrentToken();if(g(v,"")&&v.type.indexOf("tag-close")!==-1){if(v.value=="/>")return;for(;v&&v.type.indexOf("tag-name")===-1;)v=$.stepBackward();if(!v)return;var w=v.value,y=$.getCurrentTokenRow();if(v=$.stepBackward(),!v||v.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[w]||!this.voidElements){var _=l.getTokenAt(u.row,u.column+1),h=l.getLine(y),b=this.$getIndent(h),S=b+l.getTabString();return _&&_.value===""){var h=l.getSelectionRange().start,$=new s(a,h.row,h.column),v=$.getCurrentToken()||$.stepBackward();if(!v)return;if(v.value=="<")return{text:">",selection:[1,1]}}})};g.inherits(f,c),p.JavaScriptBehaviour=f}),ace.define("ace/mode/folding/xml",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){function g(o,r){return o&&o.type&&o.type.lastIndexOf(r+".xml")>-1}var s=e("../../lib/oop"),c=e("../../range").Range,i=e("./fold_mode").FoldMode,f=p.FoldMode=function(o,r){i.call(this),this.voidElements=o||{},this.optionalEndTags=s.mixin({},this.voidElements),r&&s.mixin(this.optionalEndTags,r)};s.inherits(f,i);var n=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(o,r,l){var a=this._getFirstTagInLine(o,l);return a?a.closing||!a.tagName&&a.selfClosing?r==="markbeginend"?"end":"":!a.tagName||a.selfClosing||this.voidElements.hasOwnProperty(a.tagName.toLowerCase())||this._findEndTagInLine(o,l,a.tagName,a.end.column)?"":"start":this.getCommentFoldWidget(o,l)},this.getCommentFoldWidget=function(o,r){return/comment/.test(o.getState(r))&&/";break}return a}if(g(h,"tag-close"))return a.selfClosing=h.value=="/>",a;a.start.column+=h.value.length}return null},this._findEndTagInLine=function(o,r,l,a){for(var u=o.getTokens(r),h=0,$=0;$$)break;var v=this.getFoldWidgetRange(f,"all",n);if(v){if(v.start.row<=l)break;if(v.isMultiLine())n=v.end.row;else if(r==$)break}u=n}}return new s(l,a,u,f.getLine(u).length)},this.getCommentRegionBlock=function(f,n,o){for(var r=n.search(/\s*$/),l=f.getLength(),a=o,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++oa)return new s(a,r,v,n.length)}}.call(i.prototype)}),ace.define("ace/mode/folding/javascript",["require","exports","module","ace/lib/oop","ace/mode/folding/xml","ace/mode/folding/cstyle"],function(e,p,m){var g=e("../../lib/oop"),s=e("./xml").FoldMode,c=e("./cstyle").FoldMode,i=p.FoldMode=function(f){f&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+f.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+f.end))),this.xmlFoldMode=new s};g.inherits(i,c),function(){this.getFoldWidgetRangeBase=this.getFoldWidgetRange,this.getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(f,n,o){var r=this.getFoldWidgetBase(f,n,o);return r||this.xmlFoldMode.getFoldWidget(f,n,o)},this.getFoldWidgetRange=function(f,n,o,r){var l=this.getFoldWidgetRangeBase(f,n,o,r);return l||this.xmlFoldMode.getFoldWidgetRange(f,n,o)}}.call(i.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/javascript","ace/mode/folding/javascript"],function(e,p,m){var g=e("../lib/oop"),s=e("./text").Mode,c=e("./javascript_highlight_rules").JavaScriptHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,f=e("../worker/worker_client").WorkerClient,n=e("./behaviour/javascript").JavaScriptBehaviour,o=e("./folding/javascript").FoldMode,r=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=new n,this.foldingRules=new o};g.inherits(r,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.$pairQuotesAfter={"`":/\w/},this.getNextLineIndent=function(l,a,u){var h=this.$getIndent(a),$=this.getTokenizer().getLineTokens(a,l),v=$.tokens,w=$.state;if(v.length&&v[v.length-1].type=="comment")return h;if(l=="start"||l=="no_regex"){var y=a.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);y&&(h+=u)}else if(l=="doc-start"&&(w=="start"||w=="no_regex"))return"";return h},this.checkOutdent=function(l,a,u){return this.$outdent.checkOutdent(a,u)},this.autoOutdent=function(l,a,u){this.$outdent.autoOutdent(a,u)},this.createWorker=function(l){var a=new f(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return a.attachToDocument(l.getDocument()),a.on("annotate",function(u){l.setAnnotations(u.data)}),a.on("terminate",function(){l.clearAnnotations()}),a},this.$id="ace/mode/javascript",this.snippetFileId="ace/snippets/javascript"}.call(r.prototype),p.Mode=r}),function(){ace.require(["ace/mode/javascript"],function(e){t&&(t.exports=e)})}()})(modeJavascript);var modeJson={exports:{}};(function(t,d){ace.define("ace/mode/json_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop"),s=e("./text_highlight_rules").TextHighlightRules,c=function(){this.$rules={start:[{token:"variable",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]\\s*(?=:)'},{token:"string",regex:'"',next:"string"},{token:"constant.numeric",regex:"0[xX][0-9a-fA-F]+\\b"},{token:"constant.numeric",regex:"[+-]?\\d+(?:(?:\\.\\d*)?(?:[eE][+-]?\\d+)?)?\\b"},{token:"constant.language.boolean",regex:"(?:true|false)\\b"},{token:"text",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:"comment",regex:"\\/\\/.*$"},{token:"comment.start",regex:"\\/\\*",next:"comment"},{token:"paren.lparen",regex:"[[({]"},{token:"paren.rparen",regex:"[\\])}]"},{token:"punctuation.operator",regex:/[,]/},{token:"text",regex:"\\s+"}],string:[{token:"constant.language.escape",regex:/\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|["\\\/bfnrt])/},{token:"string",regex:'"|$',next:"start"},{defaultToken:"string"}],comment:[{token:"comment.end",regex:"\\*\\/",next:"start"},{defaultToken:"comment"}]}};g.inherits(c,s),p.JsonHighlightRules=c}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,s=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var f=c.getLine(i),n=f.match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=c.findMatchingBracket({row:i,column:o});if(!r||r.row==i)return 0;var l=this.$getIndent(c.getLine(r.row));c.replace(new g(i,0,i,o-1),l)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(s.prototype),p.MatchingBraceOutdent=s}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){var g=e("../../lib/oop"),s=e("../../range").Range,c=e("./fold_mode").FoldMode,i=p.FoldMode=function(f){f&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+f.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+f.end)))};g.inherits(i,c),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(f,n,o){var r=f.getLine(o);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var l=this._getFoldWidgetBase(f,n,o);return!l&&this.startRegionRe.test(r)?"start":l},this.getFoldWidgetRange=function(f,n,o,r){var l=f.getLine(o);if(this.startRegionRe.test(l))return this.getCommentRegionBlock(f,l,o);var a=l.match(this.foldingStartMarker);if(a){var u=a.index;if(a[1])return this.openingBracketBlock(f,a[1],o,u);var h=f.getCommentFoldRange(o,u+a[0].length,1);return h&&!h.isMultiLine()&&(r?h=this.getSectionRange(f,o):n!="all"&&(h=null)),h}if(n!=="markbegin"){var a=l.match(this.foldingStopMarker);if(a){var u=a.index+a[0].length;return a[1]?this.closingBracketBlock(f,a[1],o,u):f.getCommentFoldRange(o,u,-1)}}},this.getSectionRange=function(f,n){var o=f.getLine(n),r=o.search(/\S/),l=n,a=o.length;n+=1;for(var u=n,h=f.getLength();++n$)break;var v=this.getFoldWidgetRange(f,"all",n);if(v){if(v.start.row<=l)break;if(v.isMultiLine())n=v.end.row;else if(r==$)break}u=n}}return new s(l,a,u,f.getLine(u).length)},this.getCommentRegionBlock=function(f,n,o){for(var r=n.search(/\s*$/),l=f.getLength(),a=o,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++oa)return new s(a,r,v,n.length)}}.call(i.prototype)}),ace.define("ace/mode/json",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/json_highlight_rules","ace/mode/matching_brace_outdent","ace/mode/folding/cstyle","ace/worker/worker_client"],function(e,p,m){var g=e("../lib/oop"),s=e("./text").Mode,c=e("./json_highlight_rules").JsonHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,f=e("./folding/cstyle").FoldMode,n=e("../worker/worker_client").WorkerClient,o=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=this.$defaultBehaviour,this.foldingRules=new f};g.inherits(o,s),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(r,l,a){var u=this.$getIndent(l);if(r=="start"){var h=l.match(/^.*[\{\(\[]\s*$/);h&&(u+=a)}return u},this.checkOutdent=function(r,l,a){return this.$outdent.checkOutdent(l,a)},this.autoOutdent=function(r,l,a){this.$outdent.autoOutdent(l,a)},this.createWorker=function(r){var l=new n(["ace"],"ace/mode/json_worker","JsonWorker");return l.attachToDocument(r.getDocument()),l.on("annotate",function(a){r.setAnnotations(a.data)}),l.on("terminate",function(){r.clearAnnotations()}),l},this.$id="ace/mode/json"}.call(o.prototype),p.Mode=o}),function(){ace.require(["ace/mode/json"],function(e){t&&(t.exports=e)})}()})(modeJson);var modeCss={exports:{}};(function(t,d){ace.define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,p,m){var g=e("../lib/oop");e("../lib/lang");var s=e("./text_highlight_rules").TextHighlightRules,c=p.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",i=p.supportFunction="rgb|rgba|url|attr|counter|counters",f=p.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|flex-end|flex-start|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",n=p.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",o=p.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",r=p.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",l=p.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",a=p.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",u=function(){var h=this.createKeywordMapper({"support.function":i,"support.constant":f,"support.type":c,"support.constant.color":n,"support.constant.fonts":o},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:r},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+r+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:r},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:l},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:a},{include:"url"},{token:h,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{token:"paren.lparen",regex:"\\{"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};g.inherits(u,s),p.CssHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,p,m){var g=e("../range").Range,s=function(){};(function(){this.checkOutdent=function(c,i){return/^\s+$/.test(c)?/^\s*\}/.test(i):!1},this.autoOutdent=function(c,i){var f=c.getLine(i),n=f.match(/^(\s*\})/);if(!n)return 0;var o=n[1].length,r=c.findMatchingBracket({row:i,column:o});if(!r||r.row==i)return 0;var l=this.$getIndent(c.getLine(r.row));c.replace(new g(i,0,i,o-1),l)},this.$getIndent=function(c){return c.match(/^\s*/)[0]}}).call(s.prototype),p.MatchingBraceOutdent=s}),ace.define("ace/mode/css_completions",["require","exports","module"],function(e,p,m){var g={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,double:2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{default:1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},float:{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,static:1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},s=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var c=document.createElement("c").style;for(var i in c)if(typeof c[i]=="string"){var f=i.replace(/[A-Z]/g,function(n){return"-"+n.toLowerCase()});g.hasOwnProperty(f)||(g[f]=1)}}this.completionsDefined=!0},this.getCompletions=function(c,i,f,n){if(this.completionsDefined||this.defineCompletions(),c==="ruleset"||i.$mode.$id=="ace/mode/scss"){var o=i.getLine(f.row).substr(0,f.column),r=/\([^)]*$/.test(o);return r&&(o=o.substr(o.lastIndexOf("(")+1)),/:[^;]+$/.test(o)?(/([\w\-]+):[^:]*$/.test(o),this.getPropertyValueCompletions(c,i,f,n)):this.getPropertyCompletions(c,i,f,n,r)}return[]},this.getPropertyCompletions=function(c,i,f,n,o){o=o||!1;var r=Object.keys(g);return r.map(function(l){return{caption:l,snippet:l+": $0"+(o?"":";"),meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(c,i,f,n){var o=i.getLine(f.row).substr(0,f.column),r=(/([\w\-]+):[^:]*$/.exec(o)||{})[1];if(!r)return[];var l=[];return r in g&&typeof g[r]=="object"&&(l=Object.keys(g[r])),l.map(function(a){return{caption:a,snippet:a,meta:"property value",score:1e6}})}}).call(s.prototype),p.CssCompletions=s}),ace.define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,p,m){var g=e("../../lib/oop");e("../behaviour").Behaviour;var s=e("./cstyle").CstyleBehaviour,c=e("../../token_iterator").TokenIterator,i=function(){this.inherit(s),this.add("colon","insertion",function(f,n,o,r,l){if(l===":"&&o.selection.isEmpty()){var a=o.getCursorPosition(),u=new c(r,a.row,a.column),h=u.getCurrentToken();if(h&&h.value.match(/\s+/)&&(h=u.stepBackward()),h&&h.type==="support.type"){var $=r.doc.getLine(a.row),v=$.substring(a.column,a.column+1);if(v===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test($.substring(a.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(f,n,o,r,l){var a=r.doc.getTextRange(l);if(!l.isMultiLine()&&a===":"){var u=o.getCursorPosition(),h=new c(r,u.row,u.column),$=h.getCurrentToken();if($&&$.value.match(/\s+/)&&($=h.stepBackward()),$&&$.type==="support.type"){var v=r.doc.getLine(l.start.row),w=v.substring(l.end.column,l.end.column+1);if(w===";")return l.end.column++,l}}}),this.add("semicolon","insertion",function(f,n,o,r,l){if(l===";"&&o.selection.isEmpty()){var a=o.getCursorPosition(),u=r.doc.getLine(a.row),h=u.substring(a.column,a.column+1);if(h===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(f,n,o,r,l){if(l==="!"&&o.selection.isEmpty()){var a=o.getCursorPosition(),u=r.doc.getLine(a.row);if(/^\s*(;|}|$)/.test(u.substring(a.column)))return{text:"!important",selection:[10,10]}}})};g.inherits(i,s),p.CssBehaviour=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,p,m){var g=e("../../lib/oop"),s=e("../../range").Range,c=e("./fold_mode").FoldMode,i=p.FoldMode=function(f){f&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+f.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+f.end)))};g.inherits(i,c),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(f,n,o){var r=f.getLine(o);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var l=this._getFoldWidgetBase(f,n,o);return!l&&this.startRegionRe.test(r)?"start":l},this.getFoldWidgetRange=function(f,n,o,r){var l=f.getLine(o);if(this.startRegionRe.test(l))return this.getCommentRegionBlock(f,l,o);var a=l.match(this.foldingStartMarker);if(a){var u=a.index;if(a[1])return this.openingBracketBlock(f,a[1],o,u);var h=f.getCommentFoldRange(o,u+a[0].length,1);return h&&!h.isMultiLine()&&(r?h=this.getSectionRange(f,o):n!="all"&&(h=null)),h}if(n!=="markbegin"){var a=l.match(this.foldingStopMarker);if(a){var u=a.index+a[0].length;return a[1]?this.closingBracketBlock(f,a[1],o,u):f.getCommentFoldRange(o,u,-1)}}},this.getSectionRange=function(f,n){var o=f.getLine(n),r=o.search(/\S/),l=n,a=o.length;n+=1;for(var u=n,h=f.getLength();++n$)break;var v=this.getFoldWidgetRange(f,"all",n);if(v){if(v.start.row<=l)break;if(v.isMultiLine())n=v.end.row;else if(r==$)break}u=n}}return new s(l,a,u,f.getLine(u).length)},this.getCommentRegionBlock=function(f,n,o){for(var r=n.search(/\s*$/),l=f.getLength(),a=o,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,h=1;++oa)return new s(a,r,v,n.length)}}.call(i.prototype)}),ace.define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,p,m){var g=e("../lib/oop"),s=e("./text").Mode,c=e("./css_highlight_rules").CssHighlightRules,i=e("./matching_brace_outdent").MatchingBraceOutdent,f=e("../worker/worker_client").WorkerClient,n=e("./css_completions").CssCompletions,o=e("./behaviour/css").CssBehaviour,r=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=c,this.$outdent=new i,this.$behaviour=new o,this.$completer=new n,this.foldingRules=new r};g.inherits(l,s),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(a,u,h){var $=this.$getIndent(u),v=this.getTokenizer().getLineTokens(u,a).tokens;if(v.length&&v[v.length-1].type=="comment")return $;var w=u.match(/^.*\{\s*$/);return w&&($+=h),$},this.checkOutdent=function(a,u,h){return this.$outdent.checkOutdent(u,h)},this.autoOutdent=function(a,u,h){this.$outdent.autoOutdent(u,h)},this.getCompletions=function(a,u,h,$){return this.$completer.getCompletions(a,u,h,$)},this.createWorker=function(a){var u=new f(["ace"],"ace/mode/css_worker","Worker");return u.attachToDocument(a.getDocument()),u.on("annotate",function(h){a.setAnnotations(h.data)}),u.on("terminate",function(){a.clearAnnotations()}),u},this.$id="ace/mode/css",this.snippetFileId="ace/snippets/css"}.call(l.prototype),p.Mode=l}),function(){ace.require(["ace/mode/css"],function(e){t&&(t.exports=e)})}()})(modeCss);var extLanguage_tools={exports:{}};(function(t,d){ace.define("ace/snippets",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event_emitter","ace/lib/lang","ace/range","ace/range_list","ace/keyboard/hash_handler","ace/tokenizer","ace/clipboard","ace/editor"],function(e,p,m){function g(b){var S=new Date().toLocaleString("en-us",b);return S.length==1?"0"+S:S}var s=e("./lib/dom"),c=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,f=e("./lib/lang"),n=e("./range").Range,o=e("./range_list").RangeList,r=e("./keyboard/hash_handler").HashHandler,l=e("./tokenizer").Tokenizer,a=e("./clipboard"),u={CURRENT_WORD:function(b){return b.session.getTextRange(b.session.getWordRange())},SELECTION:function(b,S,M){var O=b.session.getTextRange();return M?O.replace(/\n\r?([ \t]*\S)/g,` +`+M+"$1"):O},CURRENT_LINE:function(b){return b.session.getLine(b.getCursorPosition().row)},PREV_LINE:function(b){return b.session.getLine(b.getCursorPosition().row-1)},LINE_INDEX:function(b){return b.getCursorPosition().row},LINE_NUMBER:function(b){return b.getCursorPosition().row+1},SOFT_TABS:function(b){return b.session.getUseSoftTabs()?"YES":"NO"},TAB_SIZE:function(b){return b.session.getTabSize()},CLIPBOARD:function(b){return a.getText&&a.getText()},FILENAME:function(b){return/[^/\\]*$/.exec(this.FILEPATH(b))[0]},FILENAME_BASE:function(b){return/[^/\\]*$/.exec(this.FILEPATH(b))[0].replace(/\.[^.]*$/,"")},DIRECTORY:function(b){return this.FILEPATH(b).replace(/[^/\\]*$/,"")},FILEPATH:function(b){return"/not implemented.txt"},WORKSPACE_NAME:function(){return"Unknown"},FULLNAME:function(){return"Unknown"},BLOCK_COMMENT_START:function(b){var S=b.session.$mode||{};return S.blockComment&&S.blockComment.start||""},BLOCK_COMMENT_END:function(b){var S=b.session.$mode||{};return S.blockComment&&S.blockComment.end||""},LINE_COMMENT:function(b){var S=b.session.$mode||{};return S.lineCommentStart||""},CURRENT_YEAR:g.bind(null,{year:"numeric"}),CURRENT_YEAR_SHORT:g.bind(null,{year:"2-digit"}),CURRENT_MONTH:g.bind(null,{month:"numeric"}),CURRENT_MONTH_NAME:g.bind(null,{month:"long"}),CURRENT_MONTH_NAME_SHORT:g.bind(null,{month:"short"}),CURRENT_DATE:g.bind(null,{day:"2-digit"}),CURRENT_DAY_NAME:g.bind(null,{weekday:"long"}),CURRENT_DAY_NAME_SHORT:g.bind(null,{weekday:"short"}),CURRENT_HOUR:g.bind(null,{hour:"2-digit",hour12:!1}),CURRENT_MINUTE:g.bind(null,{minute:"2-digit"}),CURRENT_SECOND:g.bind(null,{second:"2-digit"})};u.SELECTED_TEXT=u.SELECTION;var h=function(){function b(){this.snippetMap={},this.snippetNameMap={},this.variables=u}return b.prototype.getTokenizer=function(){return b.$tokenizer||this.createTokenizer()},b.prototype.createTokenizer=function(){function S(k){return k=k.substr(1),/^\d+$/.test(k)?[{tabstopId:parseInt(k,10)}]:[{text:k}]}function M(k){return"(?:[^\\\\"+k+"]|\\\\.)"}var O={regex:"/("+M("/")+"+)/",onMatch:function(k,A,T){var E=T[0];return E.fmtString=!0,E.guard=k.slice(1,-1),E.flag="",""},next:"formatString"};return b.$tokenizer=new l({start:[{regex:/\\./,onMatch:function(k,A,T){var E=k[1];return(E=="}"&&T.length||"`$\\".indexOf(E)!=-1)&&(k=E),[k]}},{regex:/}/,onMatch:function(k,A,T){return[T.length?T.shift():k]}},{regex:/\$(?:\d+|\w+)/,onMatch:S},{regex:/\$\{[\dA-Z_a-z]+/,onMatch:function(k,A,T){var E=S(k.substr(1));return T.unshift(E[0]),E},next:"snippetVar"},{regex:/\n/,token:"newline",merge:!1}],snippetVar:[{regex:"\\|"+M("\\|")+"*\\|",onMatch:function(k,A,T){var E=k.slice(1,-1).replace(/\\[,|\\]|,/g,function(C){return C.length==2?C[1]:"\0"}).split("\0").map(function(C){return{value:C}});return T[0].choices=E,[E[0]]},next:"start"},O,{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"start"}],formatString:[{regex:/:/,onMatch:function(k,A,T){return T.length&&T[0].expectElse?(T[0].expectElse=!1,T[0].ifEnd={elseEnd:T[0]},[T[0].ifEnd]):":"}},{regex:/\\./,onMatch:function(k,A,T){var E=k[1];return E=="}"&&T.length||"`$\\".indexOf(E)!=-1?k=E:E=="n"?k=` +`:E=="t"?k=" ":"ulULE".indexOf(E)!=-1&&(k={changeCase:E,local:E>"a"}),[k]}},{regex:"/\\w*}",onMatch:function(k,A,T){var E=T.shift();return E&&(E.flag=k.slice(1,-1)),this.next=E&&E.tabstopId?"start":"",[E||k]},next:"start"},{regex:/\$(?:\d+|\w+)/,onMatch:function(k,A,T){return[{text:k.slice(1)}]}},{regex:/\${\w+/,onMatch:function(k,A,T){var E={text:k.slice(2)};return T.unshift(E),[E]},next:"formatStringVar"},{regex:/\n/,token:"newline",merge:!1},{regex:/}/,onMatch:function(k,A,T){var E=T.shift();return this.next=E&&E.tabstopId?"start":"",[E||k]},next:"start"}],formatStringVar:[{regex:/:\/\w+}/,onMatch:function(k,A,T){var E=T[0];return E.formatFunction=k.slice(2,-1),[T.shift()]},next:"formatString"},O,{regex:/:[\?\-+]?/,onMatch:function(k,A,T){k[1]=="+"&&(T[0].ifEnd=T[0]),k[1]=="?"&&(T[0].expectElse=!0)},next:"formatString"},{regex:"([^:}\\\\]|\\\\.)*:?",token:"",next:"formatString"}]}),b.$tokenizer},b.prototype.tokenizeTmSnippet=function(S,M){return this.getTokenizer().getLineTokens(S,M).tokens.map(function(O){return O.value||O})},b.prototype.getVariableValue=function(S,M,O){if(/^\d+$/.test(M))return(this.variables.__||{})[M]||"";if(/^[A-Z]\d+$/.test(M))return(this.variables[M[0]+"__"]||{})[M.substr(1)]||"";if(M=M.replace(/^TM_/,""),!this.variables.hasOwnProperty(M))return"";var k=this.variables[M];return typeof k=="function"&&(k=this.variables[M](S,M,O)),k==null?"":k},b.prototype.tmStrFormat=function(S,M,O){if(!M.fmt)return S;var k=M.flag||"",A=M.guard;A=new RegExp(A,k.replace(/[^gim]/g,""));var T=typeof M.fmt=="string"?this.tokenizeTmSnippet(M.fmt,"formatString"):M.fmt,E=this,C=S.replace(A,function(){var x=E.variables.__;E.variables.__=[].slice.call(arguments);for(var L=E.resolveVariables(T,O),q="E",N=0;N=0&&C.splice(x,1)}}var k=this.snippetMap,A=this.snippetNameMap;S.content?O(S):Array.isArray(S)&&S.forEach(O)},b.prototype.parseSnippetFile=function(S){S=S.replace(/\r/g,"");for(var M=[],O={},k=/^#.*|^({[\s\S]*})\s*$|^(\S+) (.*)$|^((?:\n*\t.*)+)/gm,A;A=k.exec(S);){if(A[1])try{O=JSON.parse(A[1]),M.push(O)}catch{}if(A[4])O.content=A[4].replace(/^\t/gm,""),M.push(O),O={};else{var T=A[2],E=A[3];if(T=="regex"){var C=/\/((?:[^\/\\]|\\.)*)|$/g;O.guard=C.exec(E)[1],O.trigger=C.exec(E)[1],O.endTrigger=C.exec(E)[1],O.endGuard=C.exec(E)[1]}else T=="snippet"?(O.tabTrigger=E.match(/^\S*/)[0],O.name||(O.name=E)):T&&(O[T]=E)}}return M},b.prototype.getSnippetByName=function(S,M){var O=this.snippetNameMap,k;return this.getActiveScopes(M).some(function(A){var T=O[A];return T&&(k=T[S]),!!k},this),k},b}();c.implement(h.prototype,i);var $=function(b,S,M){function O(V){for(var W=[],H=0;H1?(P=W[W.length-1].length,D+=W.length-1):P+=V.length,j+=V}else V&&(V.start?V.end={row:D,column:P}:V.start={row:D,column:P})}),{text:j,tabstops:x,tokens:C}},v=function(){function b(S){if(this.index=0,this.ranges=[],this.tabstops=[],S.tabstopManager)return S.tabstopManager;S.tabstopManager=this,this.$onChange=this.onChange.bind(this),this.$onChangeSelection=f.delayedCall(this.onChangeSelection.bind(this)).schedule,this.$onChangeSession=this.onChangeSession.bind(this),this.$onAfterExec=this.onAfterExec.bind(this),this.attach(S)}return b.prototype.attach=function(S){this.$openTabstops=null,this.selectedTabstop=null,this.editor=S,this.session=S.session,this.editor.on("change",this.$onChange),this.editor.on("changeSelection",this.$onChangeSelection),this.editor.on("changeSession",this.$onChangeSession),this.editor.commands.on("afterExec",this.$onAfterExec),this.editor.keyBinding.addKeyboardHandler(this.keyboardHandler)},b.prototype.detach=function(){this.tabstops.forEach(this.removeTabstopMarkers,this),this.ranges.length=0,this.tabstops.length=0,this.selectedTabstop=null,this.editor.off("change",this.$onChange),this.editor.off("changeSelection",this.$onChangeSelection),this.editor.off("changeSession",this.$onChangeSession),this.editor.commands.off("afterExec",this.$onAfterExec),this.editor.keyBinding.removeKeyboardHandler(this.keyboardHandler),this.editor.tabstopManager=null,this.session=null,this.editor=null},b.prototype.onChange=function(S){for(var M=S.action[0]=="r",O=this.selectedTabstop||{},k=O.parents||{},A=this.tabstops.slice(),T=0;T2&&(this.tabstops.length&&E.push(E.splice(2,1)[0]),this.tabstops.splice.apply(this.tabstops,E))},b.prototype.addTabstopMarkers=function(S){var M=this.session;S.forEach(function(O){O.markerId||(O.markerId=M.addMarker(O,"ace_snippet-marker","text"))})},b.prototype.removeTabstopMarkers=function(S){var M=this.session;S.forEach(function(O){M.removeMarker(O.markerId),O.markerId=null})},b.prototype.updateTabstopMarkers=function(){if(!!this.selectedTabstop){var S=this.selectedTabstop.snippetId;this.selectedTabstop.index===0&&S--,this.tabstops.forEach(function(M){M.snippetId===S?this.addTabstopMarkers(M):this.removeTabstopMarkers(M)},this)}},b.prototype.removeRange=function(S){var M=S.tabstop.indexOf(S);M!=-1&&S.tabstop.splice(M,1),M=this.ranges.indexOf(S),M!=-1&&this.ranges.splice(M,1),M=S.tabstop.rangeList.ranges.indexOf(S),M!=-1&&S.tabstop.splice(M,1),this.session.removeMarker(S.markerId),S.tabstop.length||(M=this.tabstops.indexOf(S.tabstop),M!=-1&&this.tabstops.splice(M,1),this.tabstops.length||this.detach())},b}();v.prototype.keyboardHandler=new r,v.prototype.keyboardHandler.bindKeys({Tab:function(b){p.snippetManager&&p.snippetManager.expandWithTab(b)||(b.tabstopManager.tabNext(1),b.renderer.scrollCursorIntoView())},"Shift-Tab":function(b){b.tabstopManager.tabNext(-1),b.renderer.scrollCursorIntoView()},Esc:function(b){b.tabstopManager.detach()}});var w=function(b,S){b.row==0&&(b.column+=S.column),b.row+=S.row},y=function(b,S){b.row==S.row&&(b.column-=S.column),b.row-=S.row};s.importCssString(` +.ace_snippet-marker { + -moz-box-sizing: border-box; + box-sizing: border-box; + background: rgba(194, 193, 208, 0.09); + border: 1px dotted rgba(211, 208, 235, 0.62); + position: absolute; +}`,"snippets.css",!1),p.snippetManager=new h;var _=e("./editor").Editor;(function(){this.insertSnippet=function(b,S){return p.snippetManager.insertSnippet(this,b,S)},this.expandSnippet=function(b){return p.snippetManager.expandWithTab(this,b)}}).call(_.prototype)}),ace.define("ace/autocomplete/popup",["require","exports","module","ace/virtual_renderer","ace/editor","ace/range","ace/lib/event","ace/lib/lang","ace/lib/dom","ace/config","ace/lib/useragent"],function(e,p,m){var g=e("../virtual_renderer").VirtualRenderer,s=e("../editor").Editor,c=e("../range").Range,i=e("../lib/event"),f=e("../lib/lang"),n=e("../lib/dom"),o=e("../config").nls,r=e("./../lib/useragent"),l=function(w){return"suggest-aria-id:".concat(w)},a=r.isSafari?"menu":"listbox",u=r.isSafari?"menuitem":"option",h=r.isSafari?"aria-current":"aria-selected",$=function(w){var y=new g(w);y.$maxLines=4;var _=new s(y);return _.setHighlightActiveLine(!1),_.setShowPrintMargin(!1),_.renderer.setShowGutter(!1),_.renderer.setHighlightGutterLine(!1),_.$mouseHandler.$focusTimeout=0,_.$highlightTagPending=!0,_},v=function(){function w(y){var _=n.createElement("div"),b=$(_);y&&y.appendChild(_),_.style.display="none",b.renderer.content.style.cursor="default",b.renderer.setStyle("ace_autocomplete"),b.renderer.$textLayer.element.setAttribute("role",a),b.renderer.$textLayer.element.setAttribute("aria-roledescription",o("autocomplete.popup.aria-roledescription","Autocomplete suggestions")),b.renderer.$textLayer.element.setAttribute("aria-label",o("autocomplete.popup.aria-label","Autocomplete suggestions")),b.renderer.textarea.setAttribute("aria-hidden","true"),b.setOption("displayIndentGuides",!1),b.setOption("dragDelay",150);var S=function(){};b.focus=S,b.$isFocused=!0,b.renderer.$cursorLayer.restartTimer=S,b.renderer.$cursorLayer.element.style.opacity="0",b.renderer.$maxLines=8,b.renderer.$keepTextAreaAtCursor=!1,b.setHighlightActiveLine(!1),b.session.highlight(""),b.session.$searchHighlight.clazz="ace_highlight-marker",b.on("mousedown",function(C){var x=C.getDocumentPosition();b.selection.moveToPosition(x),k.start.row=k.end.row=x.row,C.stop()});var M,O=new c(-1,0,-1,1/0),k=new c(-1,0,-1,1/0);k.id=b.session.addMarker(k,"ace_active-line","fullLine"),b.setSelectOnHover=function(C){C?O.id&&(b.session.removeMarker(O.id),O.id=null):O.id=b.session.addMarker(O,"ace_line-hover","fullLine")},b.setSelectOnHover(!1),b.on("mousemove",function(C){if(!M){M=C;return}if(!(M.x==C.x&&M.y==C.y)){M=C,M.scrollTop=b.renderer.scrollTop,b.isMouseOver=!0;var x=M.getDocumentPosition().row;O.start.row!=x&&(O.id||b.setRow(x),T(x))}}),b.renderer.on("beforeRender",function(){if(M&&O.start.row!=-1){M.$pos=null;var C=M.getDocumentPosition().row;O.id||b.setRow(C),T(C,!0)}}),b.renderer.on("afterRender",function(){for(var C=b.renderer.$textLayer,x=C.config.firstRow,L=C.config.lastRow;x<=L;x++){var q=C.element.childNodes[x-C.config.firstRow];q.setAttribute("role",u),q.setAttribute("aria-roledescription",o("autocomplete.popup.item.aria-roledescription","item")),q.setAttribute("aria-setsize",b.data.length),q.setAttribute("aria-describedby","doc-tooltip"),q.setAttribute("aria-posinset",x+1);var N=b.getData(x);if(N){var F="".concat(N.caption||N.value).concat(N.meta?", ".concat(N.meta):"");q.setAttribute("aria-label",F)}var I=q.querySelectorAll(".ace_completion-highlight");I.forEach(function(R){R.setAttribute("role","mark")})}}),b.renderer.on("afterRender",function(){var C=b.getRow(),x=b.renderer.$textLayer,L=x.element.childNodes[C-x.config.firstRow],q=document.activeElement;if(L!==b.selectedNode&&b.selectedNode&&(n.removeCssClass(b.selectedNode,"ace_selected"),b.selectedNode.removeAttribute(h),b.selectedNode.removeAttribute("id")),q.removeAttribute("aria-activedescendant"),b.selectedNode=L,L){var N=l(C);n.addCssClass(L,"ace_selected"),L.id=N,x.element.setAttribute("aria-activedescendant",N),q.setAttribute("aria-activedescendant",N),L.setAttribute(h,"true")}});var A=function(){T(-1)},T=function(C,x){C!==O.start.row&&(O.start.row=O.end.row=C,x||b.session._emit("changeBackMarker"),b._emit("changeHoverMarker"))};b.getHoveredRow=function(){return O.start.row},i.addListener(b.container,"mouseout",function(){b.isMouseOver=!1,A()}),b.on("hide",A),b.on("changeSelection",A),b.session.doc.getLength=function(){return b.data.length},b.session.doc.getLine=function(C){var x=b.data[C];return typeof x=="string"?x:x&&x.value||""};var E=b.session.bgTokenizer;return E.$tokenizeRow=function(C){function x(V,W){V&&q.push({type:(L.className||"")+(W||""),value:V})}var L=b.data[C],q=[];if(!L)return q;typeof L=="string"&&(L={value:L});for(var N=L.caption||L.value||L.name,F=N.toLowerCase(),I=(b.filterText||"").toLowerCase(),R=0,B=0,D=0;D<=I.length;D++)if(D!=B&&(L.matchMask&1<=D?L="bottom":L="top"),L==="top"?(P.bottom=C.top-this.$borderSize,P.top=P.bottom-D):L==="bottom"&&(P.top=C.top+x+this.$borderSize,P.bottom=P.top+D);var W=P.top>=0&&P.bottom<=I;if(!q&&!W)return!1;W?B.$maxPixelHeight=null:L==="top"?B.$maxPixelHeight=V:B.$maxPixelHeight=j,L==="top"?(N.style.top="",N.style.bottom=I+F-P.bottom+"px",b.isTopdown=!1):(N.style.top=P.top+"px",N.style.bottom="",b.isTopdown=!0),N.style.display="";var H=C.left;return H+N.offsetWidth>R&&(H=R-N.offsetWidth),N.style.left=H+"px",N.style.right="",b.isOpen||(b.isOpen=!0,this._signal("show"),M=null),b.anchorPos=C,b.anchor=L,!0},b.show=function(C,x,L){this.tryShow(C,x,L?"bottom":void 0,!0)},b.goTo=function(C){var x=this.getRow(),L=this.session.getLength()-1;switch(C){case"up":x=x<=0?L:x-1;break;case"down":x=x>=L?-1:x+1;break;case"start":x=0;break;case"end":x=L}this.setRow(x)},b.getTextLeftOffset=function(){return this.$borderSize+this.renderer.$padding+this.$imageSize},b.$imageSize=0,b.$borderSize=1,b}return w}();n.importCssString(` +.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { + background-color: #CAD6FA; + z-index: 1; +} +.ace_dark.ace_editor.ace_autocomplete .ace_marker-layer .ace_active-line { + background-color: #3a674e; +} +.ace_editor.ace_autocomplete .ace_line-hover { + border: 1px solid #abbffe; + margin-top: -1px; + background: rgba(233,233,253,0.4); + position: absolute; + z-index: 2; +} +.ace_dark.ace_editor.ace_autocomplete .ace_line-hover { + border: 1px solid rgba(109, 150, 13, 0.8); + background: rgba(58, 103, 78, 0.62); +} +.ace_completion-meta { + opacity: 0.5; + margin-left: 0.9em; +} +.ace_completion-message { + margin-left: 0.9em; + color: blue; +} +.ace_editor.ace_autocomplete .ace_completion-highlight{ + color: #2d69c7; +} +.ace_dark.ace_editor.ace_autocomplete .ace_completion-highlight{ + color: #93ca12; +} +.ace_editor.ace_autocomplete { + width: 300px; + z-index: 200000; + border: 1px lightgray solid; + position: fixed; + box-shadow: 2px 3px 5px rgba(0,0,0,.2); + line-height: 1.4; + background: #fefefe; + color: #111; +} +.ace_dark.ace_editor.ace_autocomplete { + border: 1px #484747 solid; + box-shadow: 2px 3px 5px rgba(0, 0, 0, 0.51); + line-height: 1.4; + background: #25282c; + color: #c1c1c1; +} +.ace_autocomplete .ace_text-layer { + width: calc(100% - 8px); +} +.ace_autocomplete .ace_line { + display: flex; + align-items: center; +} +.ace_autocomplete .ace_line > * { + min-width: 0; + flex: 0 0 auto; +} +.ace_autocomplete .ace_line .ace_ { + flex: 0 1 auto; + overflow: hidden; + text-overflow: ellipsis; +} +.ace_autocomplete .ace_completion-spacer { + flex: 1; +} +.ace_autocomplete.ace_loading:after { + content: ""; + position: absolute; + top: 0px; + height: 2px; + width: 8%; + background: blue; + z-index: 100; + animation: ace_progress 3s infinite linear; + animation-delay: 300ms; + transform: translateX(-100%) scaleX(1); +} +@keyframes ace_progress { + 0% { transform: translateX(-100%) scaleX(1) } + 50% { transform: translateX(625%) scaleX(2) } + 100% { transform: translateX(1500%) scaleX(3) } +} +@media (prefers-reduced-motion) { + .ace_autocomplete.ace_loading:after { + transform: translateX(625%) scaleX(2); + animation: none; + } +} +`,"autocompletion.css",!1),p.AcePopup=v,p.$singleLineEditor=$,p.getAriaId=l}),ace.define("ace/autocomplete/inline_screenreader",["require","exports","module"],function(e,p,m){var g=function(){function s(c){this.editor=c,this.screenReaderDiv=document.createElement("div"),this.screenReaderDiv.classList.add("ace_screenreader-only"),this.editor.container.appendChild(this.screenReaderDiv)}return s.prototype.setScreenReaderContent=function(c){for(!this.popup&&this.editor.completer&&this.editor.completer.popup&&(this.popup=this.editor.completer.popup,this.popup.renderer.on("afterRender",function(){var f=this.popup.getRow(),n=this.popup.renderer.$textLayer,o=n.element.childNodes[f-n.config.firstRow];if(o){for(var r="doc-tooltip ",l=0;l=0&&i.test(s[n]);n--)f.push(s[n]);return f.reverse().join("")},p.retrieveFollowingIdentifier=function(s,c,i){i=i||g;for(var f=[],n=c;n0)for(var b=this.popup.getFirstVisibleRow();b<=this.popup.getLastVisibleRow();b++){var S=this.popup.getData(b);S&&(!_||S.hideInlinePreview)&&this.$seen(S)}},y.prototype.$onPopupShow=function(_){this.$onPopupChange(_),this.stickySelection=!1,this.stickySelectionDelay>=0&&this.stickySelectionTimer.schedule(this.stickySelectionDelay)},y.prototype.observeLayoutChanges=function(){if(!(this.$elements||!this.editor)){window.addEventListener("resize",this.onLayoutChange,{passive:!0}),window.addEventListener("wheel",this.mousewheelListener);for(var _=this.editor.container.parentNode,b=[];_;)b.push(_),_.addEventListener("scroll",this.onLayoutChange,{passive:!0}),_=_.parentNode;this.$elements=b}},y.prototype.unObserveLayoutChanges=function(){var _=this;window.removeEventListener("resize",this.onLayoutChange,{passive:!0}),window.removeEventListener("wheel",this.mousewheelListener),this.$elements&&this.$elements.forEach(function(b){b.removeEventListener("scroll",_.onLayoutChange,{passive:!0})}),this.$elements=null},y.prototype.onLayoutChange=function(){if(!this.popup.isOpen)return this.unObserveLayoutChanges();this.$updatePopupPosition(),this.updateDocTooltip()},y.prototype.$updatePopupPosition=function(){var _=this.editor,b=_.renderer,S=b.layerConfig.lineHeight,M=b.$cursorLayer.getPixelPosition(this.base,!0);M.left-=this.popup.getTextLeftOffset();var O=_.container.getBoundingClientRect();M.top+=O.top-b.layerConfig.offset,M.left+=O.left-_.renderer.scrollLeft,M.left+=b.gutterWidth;var k={top:M.top,left:M.left};b.$ghostText&&b.$ghostTextWidget&&this.base.row===b.$ghostText.position.row&&(k.top+=b.$ghostTextWidget.el.offsetHeight);var A=_.container.getBoundingClientRect().bottom-S,T=Athis.filterText&&_.lastIndexOf(this.filterText,0)===0)var b=this.filtered;else var b=this.all;this.filterText=_,b=this.filterCompletions(b,this.filterText),b=b.sort(function(M,O){return O.exactMatch-M.exactMatch||O.$score-M.$score||(M.caption||M.value).localeCompare(O.caption||O.value)});var S=null;b=b.filter(function(M){var O=M.snippet||M.caption||M.value;return O===S?!1:(S=O,!0)}),this.filtered=b},y.prototype.filterCompletions=function(_,b){var S=[],M=b.toUpperCase(),O=b.toLowerCase();e:for(var k=0,A;A=_[k];k++){if(A.skipFilter){A.$score=A.score,S.push(A);continue}var T=!this.ignoreCaption&&A.caption||A.value||A.snippet;if(!!T){var E=-1,C=0,x=0,L,q;if(this.exactMatch){if(b!==T.substr(0,b.length))continue e}else{var N=T.toLowerCase().indexOf(O);if(N>-1)x=N;else for(var F=0;F=0&&(R<0||I0&&(E===-1&&(x+=10),x+=q,C|=1<",i.escapeHTML(M.caption),"

      自 2016 年 1 月 12 日起,Microsoft 不再为 IE 11 以下版本提供相应支持和更新。没有关键的浏览器安全更新,您的电脑可能易受有害病毒、间谍软件和其他恶意软件的攻击,它们可以窃取或损害您的业务数据和信息。请参阅 微软对 Internet Explorer 早期版本的支持将于 2016 年 1 月 12 日结束的说明

      +
      +

      您可以选择更先进的浏览器

      +

      推荐使用以下浏览器的最新版本。如果您的电脑已有以下浏览器的最新版本则直接使用该浏览器访问即可。

      + +
      + + \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 0000000..e024604 --- /dev/null +++ b/index.html @@ -0,0 +1,215 @@ + + + + + + + + + + 天然气工具集 + + + + + +
      +
      +
      +
      +
      +
      正在加载系统资源,请耐心等待
      +
      +
      + + + + \ No newline at end of file diff --git a/lib/vform/designer.style.css b/lib/vform/designer.style.css new file mode 100644 index 0000000..7482780 --- /dev/null +++ b/lib/vform/designer.style.css @@ -0,0 +1,16 @@ +@charset "UTF-8";.primary-color[data-v-8002b89a]{color:#409eff}.background-opacity[data-v-8002b89a]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-8002b89a]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-8002b89a]{margin-top:8px}.el-form-item--medium .el-radio[data-v-8002b89a]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-8002b89a]{margin-top:8px}.el-form-item--small .el-radio[data-v-8002b89a]{line-height:32px!important}.el-form-item--small .el-rate[data-v-8002b89a]{margin-top:6px}.el-form-item--mini .el-radio[data-v-8002b89a]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-8002b89a]{margin-top:4px}.el-card[data-v-8002b89a]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-8002b89a]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-8002b89a],.auto-full-width.el-date-editor.el-input__inner[data-v-8002b89a]{width:100%!important}[data-v-8002b89a]::-webkit-scrollbar{width:8px;height:8px}[data-v-8002b89a]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8002b89a]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8002b89a]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-8002b89a]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.svg-icon[data-v-8002b89a]{width:1.1em;height:1.1em;margin-left:.35em;margin-right:.35em;vertical-align:-.15em;fill:currentColor;overflow:hidden;display:inline-block}.primary-color[data-v-b7a1a47c]{color:#409eff}.background-opacity[data-v-b7a1a47c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-b7a1a47c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-b7a1a47c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-b7a1a47c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-b7a1a47c]{margin-top:8px}.el-form-item--small .el-radio[data-v-b7a1a47c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-b7a1a47c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-b7a1a47c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-b7a1a47c]{margin-top:4px}.el-card[data-v-b7a1a47c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-b7a1a47c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-b7a1a47c],.auto-full-width.el-date-editor.el-input__inner[data-v-b7a1a47c]{width:100%!important}[data-v-b7a1a47c]::-webkit-scrollbar{width:8px;height:8px}[data-v-b7a1a47c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b7a1a47c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-b7a1a47c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-b7a1a47c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.color-svg-icon[data-v-b7a1a47c]{-webkit-font-smoothing:antialiased;color:#7c7d82}.side-scroll-bar[data-v-b7a1a47c] .el-scrollbar__wrap{overflow-x:hidden}div.panel-container[data-v-b7a1a47c]{padding-bottom:10px}.no-bottom-margin[data-v-b7a1a47c] .el-tabs__header{margin-bottom:0}.indent-left-margin[data-v-b7a1a47c] .el-tabs__nav{margin-left:20px}.el-collapse-item[data-v-b7a1a47c] ul>li{list-style:none}.widget-collapse[data-v-b7a1a47c]{border-top-width:0}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__header{margin-left:8px;font-style:italic;font-weight:700}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content{padding-bottom:6px}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul{padding-left:10px;margin:0;margin-block-start:0;margin-block-end:.25em;padding-inline-start:10px}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul:after{content:"";display:block;clear:both}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .container-widget-item,.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .field-widget-item{display:inline-block;height:32px;line-height:32px;width:98px;float:left;margin:2px 6px 6px 0;cursor:move;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background:#fff;border:1px solid #e8e9eb;border-radius:4px;padding:0 8px}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .container-widget-item:hover,.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .field-widget-item:hover{background:#F1F2F3;border-color:#409eff}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .container-widget-item:hover .color-svg-icon,.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .field-widget-item:hover .color-svg-icon{color:#409eff}.widget-collapse[data-v-b7a1a47c] .el-collapse-item__content ul .drag-handler{position:absolute;top:0;left:160px;background-color:#ddd;border-radius:5px;padding-right:5px;font-size:11px;color:#666}.el-card.ft-card[data-v-b7a1a47c]{border:1px solid #8896B3}.ft-card[data-v-b7a1a47c]{margin-bottom:10px}.ft-card .bottom[data-v-b7a1a47c]{margin-top:10px;line-height:12px}.ft-card .ft-title[data-v-b7a1a47c]{font-size:13px;font-weight:700}.ft-card .right-button[data-v-b7a1a47c]{padding:0;float:right}.ft-card .clear-fix[data-v-b7a1a47c]:before,.ft-card .clear-fix[data-v-b7a1a47c]:after{display:table;content:""}.ft-card .clear-fix[data-v-b7a1a47c]:after{clear:both}.primary-color[data-v-244033de]{color:#409eff}.background-opacity[data-v-244033de]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-244033de]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-244033de]{margin-top:8px}.el-form-item--medium .el-radio[data-v-244033de]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-244033de]{margin-top:8px}.el-form-item--small .el-radio[data-v-244033de]{line-height:32px!important}.el-form-item--small .el-rate[data-v-244033de]{margin-top:6px}.el-form-item--mini .el-radio[data-v-244033de]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-244033de]{margin-top:4px}.el-card[data-v-244033de]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-244033de]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-244033de],.auto-full-width.el-date-editor.el-input__inner[data-v-244033de]{width:100%!important}[data-v-244033de]::-webkit-scrollbar{width:8px;height:8px}[data-v-244033de]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-244033de]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-244033de]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-244033de]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.design-time-bottom-margin[data-v-244033de]{margin-bottom:5px}.field-wrapper[data-v-244033de]{position:relative}.field-wrapper .field-action[data-v-244033de]{position:absolute;bottom:0;right:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.field-wrapper .field-action i[data-v-244033de]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.field-wrapper .drag-handler[data-v-244033de]{position:absolute;top:0;left:-1px;height:20px;line-height:20px;z-index:9}.field-wrapper .drag-handler i[data-v-244033de]{font-size:12px;font-style:normal;color:#fff;margin:4px;cursor:move}.field-wrapper .drag-handler[data-v-244033de]:hover{background:#409EFF}.field-action[data-v-244033de] .svg-icon,.drag-handler[data-v-244033de] .svg-icon{margin-left:.1em;margin-right:.1em}.static-content-item[data-v-244033de]{min-height:20px;display:flex;align-items:center}.static-content-item[data-v-244033de] .el-divider--horizontal{margin:0}.el-form-item.selected[data-v-244033de],.static-content-item.selected[data-v-244033de]{outline:2px solid #409EFF}.primary-color[data-v-3784bbc2]{color:#409eff}.background-opacity[data-v-3784bbc2]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-3784bbc2]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-3784bbc2]{margin-top:8px}.el-form-item--medium .el-radio[data-v-3784bbc2]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-3784bbc2]{margin-top:8px}.el-form-item--small .el-radio[data-v-3784bbc2]{line-height:32px!important}.el-form-item--small .el-rate[data-v-3784bbc2]{margin-top:6px}.el-form-item--mini .el-radio[data-v-3784bbc2]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-3784bbc2]{margin-top:4px}.el-card[data-v-3784bbc2]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-3784bbc2]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-3784bbc2],.auto-full-width.el-date-editor.el-input__inner[data-v-3784bbc2]{width:100%!important}[data-v-3784bbc2]::-webkit-scrollbar{width:8px;height:8px}[data-v-3784bbc2]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3784bbc2]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3784bbc2]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-3784bbc2]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-6e673265]{color:#409eff}.background-opacity[data-v-6e673265]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6e673265]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6e673265]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6e673265]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6e673265]{margin-top:8px}.el-form-item--small .el-radio[data-v-6e673265]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6e673265]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6e673265]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6e673265]{margin-top:4px}.el-card[data-v-6e673265]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6e673265]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6e673265],.auto-full-width.el-date-editor.el-input__inner[data-v-6e673265]{width:100%!important}[data-v-6e673265]::-webkit-scrollbar{width:8px;height:8px}[data-v-6e673265]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6e673265]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6e673265]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-6e673265]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.design-time-bottom-margin[data-v-6e673265]{margin-bottom:5px}.field-wrapper[data-v-6e673265]{position:relative}.field-wrapper .field-action[data-v-6e673265]{position:absolute;bottom:0;right:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.field-wrapper .field-action i[data-v-6e673265]{font-size:14px;color:#fff;margin:0 3px;cursor:pointer}.field-wrapper .drag-handler[data-v-6e673265]{position:absolute;top:0;left:-1px;height:20px;line-height:20px;z-index:9}.field-wrapper .drag-handler i[data-v-6e673265]{font-size:12px;font-style:normal;color:#fff;margin:4px;cursor:move}.field-wrapper .drag-handler[data-v-6e673265]:hover{background:#409EFF}.field-action[data-v-6e673265] .svg-icon,.drag-handler[data-v-6e673265] .svg-icon{margin-left:0;margin-right:0}.el-form-item[data-v-6e673265]{position:relative}.el-form-item[data-v-6e673265] .el-form-item__label{white-space:nowrap;text-overflow:ellipsis}.el-form-item span.custom-label i[data-v-6e673265]{margin:0 3px}.el-form-item[data-v-6e673265] .hide-spin-button input::-webkit-outer-spin-button,.el-form-item[data-v-6e673265] .hide-spin-button input::-webkit-inner-spin-button{-webkit-appearance:none!important}.el-form-item[data-v-6e673265] .hide-spin-button input[type=number]{-moz-appearance:textfield}.required[data-v-6e673265] .el-form-item__label:before{content:"*";color:#f56c6c;margin-right:4px}.static-content-item[data-v-6e673265]{min-height:20px;display:flex;align-items:center}.static-content-item[data-v-6e673265] .el-divider--horizontal{margin:0}.el-form-item.selected[data-v-6e673265],.static-content-item.selected[data-v-6e673265]{outline:2px solid #409EFF}[data-v-6e673265] .label-left-align .el-form-item__label{text-align:left;justify-content:flex-start!important}[data-v-6e673265] .label-center-align .el-form-item__label{text-align:center;justify-content:center!important}[data-v-6e673265] .label-right-align .el-form-item__label{text-align:right;justify-content:flex-end!important}.primary-color[data-v-3ebbe3c0]{color:#409eff}.background-opacity[data-v-3ebbe3c0]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-3ebbe3c0]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-3ebbe3c0]{margin-top:8px}.el-form-item--medium .el-radio[data-v-3ebbe3c0]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-3ebbe3c0]{margin-top:8px}.el-form-item--small .el-radio[data-v-3ebbe3c0]{line-height:32px!important}.el-form-item--small .el-rate[data-v-3ebbe3c0]{margin-top:6px}.el-form-item--mini .el-radio[data-v-3ebbe3c0]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-3ebbe3c0]{margin-top:4px}.el-card[data-v-3ebbe3c0]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-3ebbe3c0]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-3ebbe3c0],.auto-full-width.el-date-editor.el-input__inner[data-v-3ebbe3c0]{width:100%!important}[data-v-3ebbe3c0]::-webkit-scrollbar{width:8px;height:8px}[data-v-3ebbe3c0]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3ebbe3c0]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3ebbe3c0]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-3ebbe3c0]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-3ebbe3c0],.full-width-input[data-v-3ebbe3c0] .el-cascader{width:100%!important}.primary-color[data-v-33320a4d]{color:#409eff}.background-opacity[data-v-33320a4d]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-33320a4d]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-33320a4d]{margin-top:8px}.el-form-item--medium .el-radio[data-v-33320a4d]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-33320a4d]{margin-top:8px}.el-form-item--small .el-radio[data-v-33320a4d]{line-height:32px!important}.el-form-item--small .el-rate[data-v-33320a4d]{margin-top:6px}.el-form-item--mini .el-radio[data-v-33320a4d]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-33320a4d]{margin-top:4px}.el-card[data-v-33320a4d]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-33320a4d]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-33320a4d],.auto-full-width.el-date-editor.el-input__inner[data-v-33320a4d]{width:100%!important}[data-v-33320a4d]::-webkit-scrollbar{width:8px;height:8px}[data-v-33320a4d]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-33320a4d]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-33320a4d]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-33320a4d]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-5c8214c6]{color:#409eff}.background-opacity[data-v-5c8214c6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5c8214c6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5c8214c6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5c8214c6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5c8214c6]{margin-top:8px}.el-form-item--small .el-radio[data-v-5c8214c6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5c8214c6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5c8214c6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5c8214c6]{margin-top:4px}.el-card[data-v-5c8214c6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5c8214c6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5c8214c6],.auto-full-width.el-date-editor.el-input__inner[data-v-5c8214c6]{width:100%!important}[data-v-5c8214c6]::-webkit-scrollbar{width:8px;height:8px}[data-v-5c8214c6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5c8214c6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5c8214c6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-5c8214c6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-5c8214c6]{width:100%!important}.primary-color[data-v-9b0f3514]{color:#409eff}.background-opacity[data-v-9b0f3514]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-9b0f3514]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-9b0f3514]{margin-top:8px}.el-form-item--medium .el-radio[data-v-9b0f3514]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-9b0f3514]{margin-top:8px}.el-form-item--small .el-radio[data-v-9b0f3514]{line-height:32px!important}.el-form-item--small .el-rate[data-v-9b0f3514]{margin-top:6px}.el-form-item--mini .el-radio[data-v-9b0f3514]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-9b0f3514]{margin-top:4px}.el-card[data-v-9b0f3514]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-9b0f3514]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-9b0f3514],.auto-full-width.el-date-editor.el-input__inner[data-v-9b0f3514]{width:100%!important}[data-v-9b0f3514]::-webkit-scrollbar{width:8px;height:8px}[data-v-9b0f3514]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9b0f3514]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9b0f3514]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-9b0f3514]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-9b0f3514]{width:100%!important}.auto-full-width[data-v-9b0f3514]{width:100%}.auto-full-width[data-v-9b0f3514] .el-range-editor{width:100%!important}.primary-color[data-v-f05b3708]{color:#409eff}.background-opacity[data-v-f05b3708]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-f05b3708]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-f05b3708]{margin-top:8px}.el-form-item--medium .el-radio[data-v-f05b3708]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-f05b3708]{margin-top:8px}.el-form-item--small .el-radio[data-v-f05b3708]{line-height:32px!important}.el-form-item--small .el-rate[data-v-f05b3708]{margin-top:6px}.el-form-item--mini .el-radio[data-v-f05b3708]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-f05b3708]{margin-top:4px}.el-card[data-v-f05b3708]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-f05b3708]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-f05b3708],.auto-full-width.el-date-editor.el-input__inner[data-v-f05b3708]{width:100%!important}[data-v-f05b3708]::-webkit-scrollbar{width:8px;height:8px}[data-v-f05b3708]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-f05b3708]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-f05b3708]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-f05b3708]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-f05b3708]{width:100%!important}.primary-color[data-v-208e9558]{color:#409eff}.background-opacity[data-v-208e9558]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-208e9558]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-208e9558]{margin-top:8px}.el-form-item--medium .el-radio[data-v-208e9558]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-208e9558]{margin-top:8px}.el-form-item--small .el-radio[data-v-208e9558]{line-height:32px!important}.el-form-item--small .el-rate[data-v-208e9558]{margin-top:6px}.el-form-item--mini .el-radio[data-v-208e9558]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-208e9558]{margin-top:4px}.el-card[data-v-208e9558]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-208e9558]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-208e9558],.auto-full-width.el-date-editor.el-input__inner[data-v-208e9558]{width:100%!important}[data-v-208e9558]::-webkit-scrollbar{width:8px;height:8px}[data-v-208e9558]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-208e9558]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-208e9558]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-208e9558]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-335cf656]{color:#409eff}.background-opacity[data-v-335cf656]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-335cf656]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-335cf656]{margin-top:8px}.el-form-item--medium .el-radio[data-v-335cf656]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-335cf656]{margin-top:8px}.el-form-item--small .el-radio[data-v-335cf656]{line-height:32px!important}.el-form-item--small .el-rate[data-v-335cf656]{margin-top:6px}.el-form-item--mini .el-radio[data-v-335cf656]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-335cf656]{margin-top:4px}.el-card[data-v-335cf656]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-335cf656]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-335cf656],.auto-full-width.el-date-editor.el-input__inner[data-v-335cf656]{width:100%!important}[data-v-335cf656]::-webkit-scrollbar{width:8px;height:8px}[data-v-335cf656]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-335cf656]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-335cf656]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-335cf656]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-335cf656]{width:100%!important}.dynamicPseudoAfter[data-v-335cf656] .el-upload.el-upload--text{color:#409eff;font-size:12px}.dynamicPseudoAfter[data-v-335cf656] .el-upload.el-upload--text .el-icon-plus:after{content:var(--select-file-action)}.hideUploadDiv[data-v-335cf656] div.el-upload--picture-card,.hideUploadDiv[data-v-335cf656] div.el-upload--text,.hideUploadDiv[data-v-335cf656] div.el-upload__tip{display:none}.upload-file-list[data-v-335cf656]{font-size:12px}.upload-file-list .file-action[data-v-335cf656]{color:#409eff;margin-left:5px;margin-right:5px;cursor:pointer}.primary-color[data-v-1ad6f874]{color:#409eff}.background-opacity[data-v-1ad6f874]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-1ad6f874]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-1ad6f874]{margin-top:8px}.el-form-item--medium .el-radio[data-v-1ad6f874]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-1ad6f874]{margin-top:8px}.el-form-item--small .el-radio[data-v-1ad6f874]{line-height:32px!important}.el-form-item--small .el-rate[data-v-1ad6f874]{margin-top:6px}.el-form-item--mini .el-radio[data-v-1ad6f874]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-1ad6f874]{margin-top:4px}.el-card[data-v-1ad6f874]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-1ad6f874]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-1ad6f874],.auto-full-width.el-date-editor.el-input__inner[data-v-1ad6f874]{width:100%!important}[data-v-1ad6f874]::-webkit-scrollbar{width:8px;height:8px}[data-v-1ad6f874]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1ad6f874]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1ad6f874]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-1ad6f874]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-35bcee25]{color:#409eff}.background-opacity[data-v-35bcee25]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-35bcee25]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-35bcee25]{margin-top:8px}.el-form-item--medium .el-radio[data-v-35bcee25]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-35bcee25]{margin-top:8px}.el-form-item--small .el-radio[data-v-35bcee25]{line-height:32px!important}.el-form-item--small .el-rate[data-v-35bcee25]{margin-top:6px}.el-form-item--mini .el-radio[data-v-35bcee25]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-35bcee25]{margin-top:4px}.el-card[data-v-35bcee25]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-35bcee25]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-35bcee25],.auto-full-width.el-date-editor.el-input__inner[data-v-35bcee25]{width:100%!important}[data-v-35bcee25]::-webkit-scrollbar{width:8px;height:8px}[data-v-35bcee25]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-35bcee25]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-35bcee25]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-35bcee25]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-612b9efe]{color:#409eff}.background-opacity[data-v-612b9efe]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-612b9efe]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-612b9efe]{margin-top:8px}.el-form-item--medium .el-radio[data-v-612b9efe]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-612b9efe]{margin-top:8px}.el-form-item--small .el-radio[data-v-612b9efe]{line-height:32px!important}.el-form-item--small .el-rate[data-v-612b9efe]{margin-top:6px}.el-form-item--mini .el-radio[data-v-612b9efe]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-612b9efe]{margin-top:4px}.el-card[data-v-612b9efe]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-612b9efe]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-612b9efe],.auto-full-width.el-date-editor.el-input__inner[data-v-612b9efe]{width:100%!important}[data-v-612b9efe]::-webkit-scrollbar{width:8px;height:8px}[data-v-612b9efe]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-612b9efe]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-612b9efe]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-612b9efe]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-612b9efe]{width:100%!important}.primary-color[data-v-6bdae02e]{color:#409eff}.background-opacity[data-v-6bdae02e]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6bdae02e]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6bdae02e]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6bdae02e]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6bdae02e]{margin-top:8px}.el-form-item--small .el-radio[data-v-6bdae02e]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6bdae02e]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6bdae02e]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6bdae02e]{margin-top:4px}.el-card[data-v-6bdae02e]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6bdae02e]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6bdae02e],.auto-full-width.el-date-editor.el-input__inner[data-v-6bdae02e]{width:100%!important}[data-v-6bdae02e]::-webkit-scrollbar{width:8px;height:8px}[data-v-6bdae02e]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6bdae02e]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6bdae02e]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-6bdae02e]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-6bdae02e]{width:100%!important}.hideUploadDiv[data-v-6bdae02e] div.el-upload--picture-card,.hideUploadDiv[data-v-6bdae02e] div.el-upload--text,.hideUploadDiv[data-v-6bdae02e] div.el-upload__tip{display:none}.uploader-icon[data-v-6bdae02e]{height:100%;display:flex;color:#8c939d;font-size:28px;justify-content:center;align-items:center}.primary-color[data-v-06d5ed13]{color:#409eff}.background-opacity[data-v-06d5ed13]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-06d5ed13]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-06d5ed13]{margin-top:8px}.el-form-item--medium .el-radio[data-v-06d5ed13]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-06d5ed13]{margin-top:8px}.el-form-item--small .el-radio[data-v-06d5ed13]{line-height:32px!important}.el-form-item--small .el-rate[data-v-06d5ed13]{margin-top:6px}.el-form-item--mini .el-radio[data-v-06d5ed13]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-06d5ed13]{margin-top:4px}.el-card[data-v-06d5ed13]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-06d5ed13]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-06d5ed13],.auto-full-width.el-date-editor.el-input__inner[data-v-06d5ed13]{width:100%!important}[data-v-06d5ed13]::-webkit-scrollbar{width:8px;height:8px}[data-v-06d5ed13]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-06d5ed13]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-06d5ed13]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-06d5ed13]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-block[data-v-06d5ed13]{display:block!important}.primary-color[data-v-29a21d5b]{color:#409eff}.background-opacity[data-v-29a21d5b]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-29a21d5b]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-29a21d5b]{margin-top:8px}.el-form-item--medium .el-radio[data-v-29a21d5b]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-29a21d5b]{margin-top:8px}.el-form-item--small .el-radio[data-v-29a21d5b]{line-height:32px!important}.el-form-item--small .el-rate[data-v-29a21d5b]{margin-top:6px}.el-form-item--mini .el-radio[data-v-29a21d5b]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-29a21d5b]{margin-top:4px}.el-card[data-v-29a21d5b]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-29a21d5b]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-29a21d5b],.auto-full-width.el-date-editor.el-input__inner[data-v-29a21d5b]{width:100%!important}[data-v-29a21d5b]::-webkit-scrollbar{width:8px;height:8px}[data-v-29a21d5b]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-29a21d5b]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-29a21d5b]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-29a21d5b]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-29a21d5b]{width:100%!important}/*! +* Quill Editor v1.3.7 +* https://quilljs.com/ +* Copyright (c) 2014, Jason Chen +* Copyright (c) 2013, salesforce.com +*/.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}/*! + * Quill Editor v1.3.7 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-snow.ql-toolbar:after,.ql-snow .ql-toolbar:after{clear:both;content:"";display:table}.ql-snow.ql-toolbar button,.ql-snow .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-snow.ql-toolbar button svg,.ql-snow .ql-toolbar button svg{float:left;height:100%}.ql-snow.ql-toolbar button:active:hover,.ql-snow .ql-toolbar button:active:hover{outline:none}.ql-snow.ql-toolbar input.ql-image[type=file],.ql-snow .ql-toolbar input.ql-image[type=file]{display:none}.ql-snow.ql-toolbar button:hover,.ql-snow .ql-toolbar button:hover,.ql-snow.ql-toolbar button:focus,.ql-snow .ql-toolbar button:focus,.ql-snow.ql-toolbar button.ql-active,.ql-snow .ql-toolbar button.ql-active,.ql-snow.ql-toolbar .ql-picker-label:hover,.ql-snow .ql-toolbar .ql-picker-label:hover,.ql-snow.ql-toolbar .ql-picker-label.ql-active,.ql-snow .ql-toolbar .ql-picker-label.ql-active,.ql-snow.ql-toolbar .ql-picker-item:hover,.ql-snow .ql-toolbar .ql-picker-item:hover,.ql-snow.ql-toolbar .ql-picker-item.ql-selected,.ql-snow .ql-toolbar .ql-picker-item.ql-selected{color:#06c}.ql-snow.ql-toolbar button:hover .ql-fill,.ql-snow .ql-toolbar button:hover .ql-fill,.ql-snow.ql-toolbar button:focus .ql-fill,.ql-snow .ql-toolbar button:focus .ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-snow.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-snow.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#06c}.ql-snow.ql-toolbar button:hover .ql-stroke,.ql-snow .ql-toolbar button:hover .ql-stroke,.ql-snow.ql-toolbar button:focus .ql-stroke,.ql-snow .ql-toolbar button:focus .ql-stroke,.ql-snow.ql-toolbar button.ql-active .ql-stroke,.ql-snow .ql-toolbar button.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-snow.ql-toolbar button:hover .ql-stroke-miter,.ql-snow .ql-toolbar button:hover .ql-stroke-miter,.ql-snow.ql-toolbar button:focus .ql-stroke-miter,.ql-snow .ql-toolbar button:focus .ql-stroke-miter,.ql-snow.ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar button.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-snow.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-snow .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#06c}@media (pointer: coarse){.ql-snow.ql-toolbar button:hover:not(.ql-active),.ql-snow .ql-toolbar button:hover:not(.ql-active){color:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#444}.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-snow.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-snow .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#444}}.ql-snow,.ql-snow *{box-sizing:border-box}.ql-snow .ql-hidden{display:none}.ql-snow .ql-out-bottom,.ql-snow .ql-out-top{visibility:hidden}.ql-snow .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-snow .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-snow .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-snow .ql-formats{display:inline-block;vertical-align:middle}.ql-snow .ql-formats:after{clear:both;content:"";display:table}.ql-snow .ql-stroke{fill:none;stroke:#444;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-snow .ql-stroke-miter{fill:none;stroke:#444;stroke-miterlimit:10;stroke-width:2}.ql-snow .ql-fill,.ql-snow .ql-stroke.ql-fill{fill:#444}.ql-snow .ql-empty{fill:none}.ql-snow .ql-even{fill-rule:evenodd}.ql-snow .ql-thin,.ql-snow .ql-stroke.ql-thin{stroke-width:1}.ql-snow .ql-transparent{opacity:.4}.ql-snow .ql-direction svg:last-child{display:none}.ql-snow .ql-direction.ql-active svg:last-child{display:inline}.ql-snow .ql-direction.ql-active svg:first-child{display:none}.ql-snow .ql-editor h1{font-size:2em}.ql-snow .ql-editor h2{font-size:1.5em}.ql-snow .ql-editor h3{font-size:1.17em}.ql-snow .ql-editor h4{font-size:1em}.ql-snow .ql-editor h5{font-size:.83em}.ql-snow .ql-editor h6{font-size:.67em}.ql-snow .ql-editor a{text-decoration:underline}.ql-snow .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-snow .ql-editor code,.ql-snow .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-snow .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-snow .ql-editor code{font-size:85%;padding:2px 4px}.ql-snow .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-snow .ql-editor img{max-width:100%}.ql-snow .ql-picker{color:#444;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-snow .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-snow .ql-picker-label:before{display:inline-block;line-height:22px}.ql-snow .ql-picker-options{background-color:#fff;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-snow .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-snow .ql-picker.ql-expanded .ql-picker-label{color:#ccc;z-index:2}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#ccc}.ql-snow .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-snow .ql-color-picker,.ql-snow .ql-icon-picker{width:28px}.ql-snow .ql-color-picker .ql-picker-label,.ql-snow .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-label svg,.ql-snow .ql-icon-picker .ql-picker-label svg{right:4px}.ql-snow .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-snow .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-snow .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-snow .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-snow .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-snow .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-snow .ql-picker.ql-header{width:98px}.ql-snow .ql-picker.ql-header .ql-picker-label:before,.ql-snow .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-snow .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-snow .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-snow .ql-picker.ql-font{width:108px}.ql-snow .ql-picker.ql-font .ql-picker-label:before,.ql-snow .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-snow .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-snow .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-snow .ql-picker.ql-size{width:98px}.ql-snow .ql-picker.ql-size .ql-picker-label:before,.ql-snow .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-snow .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-snow .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-snow .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-snow .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-toolbar.ql-snow{border:1px solid #ccc;box-sizing:border-box;font-family:Helvetica Neue,Helvetica,Arial,sans-serif;padding:8px}.ql-toolbar.ql-snow .ql-formats{margin-right:15px}.ql-toolbar.ql-snow .ql-picker-label{border:1px solid transparent}.ql-toolbar.ql-snow .ql-picker-options{border:1px solid transparent;box-shadow:#0003 0 2px 8px}.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-label,.ql-toolbar.ql-snow .ql-picker.ql-expanded .ql-picker-options{border-color:#ccc}.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item.ql-selected,.ql-toolbar.ql-snow .ql-color-picker .ql-picker-item:hover{border-color:#000}.ql-toolbar.ql-snow+.ql-container.ql-snow{border-top:0px}.ql-snow .ql-tooltip{background-color:#fff;border:1px solid #ccc;box-shadow:0 0 5px #ddd;color:#444;padding:5px 12px;white-space:nowrap}.ql-snow .ql-tooltip:before{content:"Visit URL:";line-height:26px;margin-right:8px}.ql-snow .ql-tooltip input[type=text]{display:none;border:1px solid #ccc;font-size:13px;height:26px;margin:0;padding:3px 5px;width:170px}.ql-snow .ql-tooltip a.ql-preview{display:inline-block;max-width:200px;overflow-x:hidden;text-overflow:ellipsis;vertical-align:top}.ql-snow .ql-tooltip a.ql-action:after{border-right:1px solid #ccc;content:"Edit";margin-left:16px;padding-right:8px}.ql-snow .ql-tooltip a.ql-remove:before{content:"Remove";margin-left:8px}.ql-snow .ql-tooltip a{line-height:26px}.ql-snow .ql-tooltip.ql-editing a.ql-preview,.ql-snow .ql-tooltip.ql-editing a.ql-remove{display:none}.ql-snow .ql-tooltip.ql-editing input[type=text]{display:inline-block}.ql-snow .ql-tooltip.ql-editing a.ql-action:after{border-right:0px;content:"Save";padding-right:0}.ql-snow .ql-tooltip[data-mode=link]:before{content:"Enter link:"}.ql-snow .ql-tooltip[data-mode=formula]:before{content:"Enter formula:"}.ql-snow .ql-tooltip[data-mode=video]:before{content:"Enter video:"}.ql-snow a{color:#06c}.ql-container.ql-snow{border:1px solid #ccc}/*! + * Quill Editor v1.3.7 + * https://quilljs.com/ + * Copyright (c) 2014, Jason Chen + * Copyright (c) 2013, salesforce.com + */.ql-container{box-sizing:border-box;font-family:Helvetica,Arial,sans-serif;font-size:13px;height:100%;margin:0;position:relative}.ql-container.ql-disabled .ql-tooltip{visibility:hidden}.ql-container.ql-disabled .ql-editor ul[data-checked]>li:before{pointer-events:none}.ql-clipboard{left:-100000px;height:1px;overflow-y:hidden;position:absolute;top:50%}.ql-clipboard p{margin:0;padding:0}.ql-editor{box-sizing:border-box;line-height:1.42;height:100%;outline:none;overflow-y:auto;padding:12px 15px;tab-size:4;-moz-tab-size:4;text-align:left;white-space:pre-wrap;word-wrap:break-word}.ql-editor>*{cursor:text}.ql-editor p,.ql-editor ol,.ql-editor ul,.ql-editor pre,.ql-editor blockquote,.ql-editor h1,.ql-editor h2,.ql-editor h3,.ql-editor h4,.ql-editor h5,.ql-editor h6{margin:0;padding:0;counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol,.ql-editor ul{padding-left:1.5em}.ql-editor ol>li,.ql-editor ul>li{list-style-type:none}.ql-editor ul>li:before{content:"\2022"}.ql-editor ul[data-checked=true],.ql-editor ul[data-checked=false]{pointer-events:none}.ql-editor ul[data-checked=true]>li *,.ql-editor ul[data-checked=false]>li *{pointer-events:all}.ql-editor ul[data-checked=true]>li:before,.ql-editor ul[data-checked=false]>li:before{color:#777;cursor:pointer;pointer-events:all}.ql-editor ul[data-checked=true]>li:before{content:"\2611"}.ql-editor ul[data-checked=false]>li:before{content:"\2610"}.ql-editor li:before{display:inline-block;white-space:nowrap;width:1.2em}.ql-editor li:not(.ql-direction-rtl):before{margin-left:-1.5em;margin-right:.3em;text-align:right}.ql-editor li.ql-direction-rtl:before{margin-left:.3em;margin-right:-1.5em}.ql-editor ol li:not(.ql-direction-rtl),.ql-editor ul li:not(.ql-direction-rtl){padding-left:1.5em}.ql-editor ol li.ql-direction-rtl,.ql-editor ul li.ql-direction-rtl{padding-right:1.5em}.ql-editor ol li{counter-reset:list-1 list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9;counter-increment:list-0}.ql-editor ol li:before{content:counter(list-0,decimal) ". "}.ql-editor ol li.ql-indent-1{counter-increment:list-1}.ql-editor ol li.ql-indent-1:before{content:counter(list-1,lower-alpha) ". "}.ql-editor ol li.ql-indent-1{counter-reset:list-2 list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-2{counter-increment:list-2}.ql-editor ol li.ql-indent-2:before{content:counter(list-2,lower-roman) ". "}.ql-editor ol li.ql-indent-2{counter-reset:list-3 list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-3{counter-increment:list-3}.ql-editor ol li.ql-indent-3:before{content:counter(list-3,decimal) ". "}.ql-editor ol li.ql-indent-3{counter-reset:list-4 list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-4{counter-increment:list-4}.ql-editor ol li.ql-indent-4:before{content:counter(list-4,lower-alpha) ". "}.ql-editor ol li.ql-indent-4{counter-reset:list-5 list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-5{counter-increment:list-5}.ql-editor ol li.ql-indent-5:before{content:counter(list-5,lower-roman) ". "}.ql-editor ol li.ql-indent-5{counter-reset:list-6 list-7 list-8 list-9}.ql-editor ol li.ql-indent-6{counter-increment:list-6}.ql-editor ol li.ql-indent-6:before{content:counter(list-6,decimal) ". "}.ql-editor ol li.ql-indent-6{counter-reset:list-7 list-8 list-9}.ql-editor ol li.ql-indent-7{counter-increment:list-7}.ql-editor ol li.ql-indent-7:before{content:counter(list-7,lower-alpha) ". "}.ql-editor ol li.ql-indent-7{counter-reset:list-8 list-9}.ql-editor ol li.ql-indent-8{counter-increment:list-8}.ql-editor ol li.ql-indent-8:before{content:counter(list-8,lower-roman) ". "}.ql-editor ol li.ql-indent-8{counter-reset:list-9}.ql-editor ol li.ql-indent-9{counter-increment:list-9}.ql-editor ol li.ql-indent-9:before{content:counter(list-9,decimal) ". "}.ql-editor .ql-indent-1:not(.ql-direction-rtl){padding-left:3em}.ql-editor li.ql-indent-1:not(.ql-direction-rtl){padding-left:4.5em}.ql-editor .ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:3em}.ql-editor li.ql-indent-1.ql-direction-rtl.ql-align-right{padding-right:4.5em}.ql-editor .ql-indent-2:not(.ql-direction-rtl){padding-left:6em}.ql-editor li.ql-indent-2:not(.ql-direction-rtl){padding-left:7.5em}.ql-editor .ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:6em}.ql-editor li.ql-indent-2.ql-direction-rtl.ql-align-right{padding-right:7.5em}.ql-editor .ql-indent-3:not(.ql-direction-rtl){padding-left:9em}.ql-editor li.ql-indent-3:not(.ql-direction-rtl){padding-left:10.5em}.ql-editor .ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:9em}.ql-editor li.ql-indent-3.ql-direction-rtl.ql-align-right{padding-right:10.5em}.ql-editor .ql-indent-4:not(.ql-direction-rtl){padding-left:12em}.ql-editor li.ql-indent-4:not(.ql-direction-rtl){padding-left:13.5em}.ql-editor .ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:12em}.ql-editor li.ql-indent-4.ql-direction-rtl.ql-align-right{padding-right:13.5em}.ql-editor .ql-indent-5:not(.ql-direction-rtl){padding-left:15em}.ql-editor li.ql-indent-5:not(.ql-direction-rtl){padding-left:16.5em}.ql-editor .ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:15em}.ql-editor li.ql-indent-5.ql-direction-rtl.ql-align-right{padding-right:16.5em}.ql-editor .ql-indent-6:not(.ql-direction-rtl){padding-left:18em}.ql-editor li.ql-indent-6:not(.ql-direction-rtl){padding-left:19.5em}.ql-editor .ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:18em}.ql-editor li.ql-indent-6.ql-direction-rtl.ql-align-right{padding-right:19.5em}.ql-editor .ql-indent-7:not(.ql-direction-rtl){padding-left:21em}.ql-editor li.ql-indent-7:not(.ql-direction-rtl){padding-left:22.5em}.ql-editor .ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:21em}.ql-editor li.ql-indent-7.ql-direction-rtl.ql-align-right{padding-right:22.5em}.ql-editor .ql-indent-8:not(.ql-direction-rtl){padding-left:24em}.ql-editor li.ql-indent-8:not(.ql-direction-rtl){padding-left:25.5em}.ql-editor .ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:24em}.ql-editor li.ql-indent-8.ql-direction-rtl.ql-align-right{padding-right:25.5em}.ql-editor .ql-indent-9:not(.ql-direction-rtl){padding-left:27em}.ql-editor li.ql-indent-9:not(.ql-direction-rtl){padding-left:28.5em}.ql-editor .ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:27em}.ql-editor li.ql-indent-9.ql-direction-rtl.ql-align-right{padding-right:28.5em}.ql-editor .ql-video{display:block;max-width:100%}.ql-editor .ql-video.ql-align-center{margin:0 auto}.ql-editor .ql-video.ql-align-right{margin:0 0 0 auto}.ql-editor .ql-bg-black{background-color:#000}.ql-editor .ql-bg-red{background-color:#e60000}.ql-editor .ql-bg-orange{background-color:#f90}.ql-editor .ql-bg-yellow{background-color:#ff0}.ql-editor .ql-bg-green{background-color:#008a00}.ql-editor .ql-bg-blue{background-color:#06c}.ql-editor .ql-bg-purple{background-color:#93f}.ql-editor .ql-color-white{color:#fff}.ql-editor .ql-color-red{color:#e60000}.ql-editor .ql-color-orange{color:#f90}.ql-editor .ql-color-yellow{color:#ff0}.ql-editor .ql-color-green{color:#008a00}.ql-editor .ql-color-blue{color:#06c}.ql-editor .ql-color-purple{color:#93f}.ql-editor .ql-font-serif{font-family:Georgia,Times New Roman,serif}.ql-editor .ql-font-monospace{font-family:Monaco,Courier New,monospace}.ql-editor .ql-size-small{font-size:.75em}.ql-editor .ql-size-large{font-size:1.5em}.ql-editor .ql-size-huge{font-size:2.5em}.ql-editor .ql-direction-rtl{direction:rtl;text-align:inherit}.ql-editor .ql-align-center{text-align:center}.ql-editor .ql-align-justify{text-align:justify}.ql-editor .ql-align-right{text-align:right}.ql-editor.ql-blank:before{color:#0009;content:attr(data-placeholder);font-style:italic;left:15px;pointer-events:none;position:absolute;right:15px}.ql-bubble.ql-toolbar:after,.ql-bubble .ql-toolbar:after{clear:both;content:"";display:table}.ql-bubble.ql-toolbar button,.ql-bubble .ql-toolbar button{background:none;border:none;cursor:pointer;display:inline-block;float:left;height:24px;padding:3px 5px;width:28px}.ql-bubble.ql-toolbar button svg,.ql-bubble .ql-toolbar button svg{float:left;height:100%}.ql-bubble.ql-toolbar button:active:hover,.ql-bubble .ql-toolbar button:active:hover{outline:none}.ql-bubble.ql-toolbar input.ql-image[type=file],.ql-bubble .ql-toolbar input.ql-image[type=file]{display:none}.ql-bubble.ql-toolbar button:hover,.ql-bubble .ql-toolbar button:hover,.ql-bubble.ql-toolbar button:focus,.ql-bubble .ql-toolbar button:focus,.ql-bubble.ql-toolbar button.ql-active,.ql-bubble .ql-toolbar button.ql-active,.ql-bubble.ql-toolbar .ql-picker-label:hover,.ql-bubble .ql-toolbar .ql-picker-label:hover,.ql-bubble.ql-toolbar .ql-picker-label.ql-active,.ql-bubble .ql-toolbar .ql-picker-label.ql-active,.ql-bubble.ql-toolbar .ql-picker-item:hover,.ql-bubble .ql-toolbar .ql-picker-item:hover,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected{color:#fff}.ql-bubble.ql-toolbar button:hover .ql-fill,.ql-bubble .ql-toolbar button:hover .ql-fill,.ql-bubble.ql-toolbar button:focus .ql-fill,.ql-bubble .ql-toolbar button:focus .ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-fill,.ql-bubble.ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:focus .ql-stroke.ql-fill,.ql-bubble.ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke.ql-fill,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke.ql-fill{fill:#fff}.ql-bubble.ql-toolbar button:hover .ql-stroke,.ql-bubble .ql-toolbar button:hover .ql-stroke,.ql-bubble.ql-toolbar button:focus .ql-stroke,.ql-bubble .ql-toolbar button:focus .ql-stroke,.ql-bubble.ql-toolbar button.ql-active .ql-stroke,.ql-bubble .ql-toolbar button.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke,.ql-bubble.ql-toolbar button:hover .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover .ql-stroke-miter,.ql-bubble.ql-toolbar button:focus .ql-stroke-miter,.ql-bubble .ql-toolbar button:focus .ql-stroke-miter,.ql-bubble.ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar button.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-label.ql-active .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item:hover .ql-stroke-miter,.ql-bubble.ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter,.ql-bubble .ql-toolbar .ql-picker-item.ql-selected .ql-stroke-miter{stroke:#fff}@media (pointer: coarse){.ql-bubble.ql-toolbar button:hover:not(.ql-active),.ql-bubble .ql-toolbar button:hover:not(.ql-active){color:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-fill,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke.ql-fill{fill:#ccc}.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke,.ql-bubble.ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter,.ql-bubble .ql-toolbar button:hover:not(.ql-active) .ql-stroke-miter{stroke:#ccc}}.ql-bubble,.ql-bubble *{box-sizing:border-box}.ql-bubble .ql-hidden{display:none}.ql-bubble .ql-out-bottom,.ql-bubble .ql-out-top{visibility:hidden}.ql-bubble .ql-tooltip{position:absolute;transform:translateY(10px)}.ql-bubble .ql-tooltip a{cursor:pointer;text-decoration:none}.ql-bubble .ql-tooltip.ql-flip{transform:translateY(-10px)}.ql-bubble .ql-formats{display:inline-block;vertical-align:middle}.ql-bubble .ql-formats:after{clear:both;content:"";display:table}.ql-bubble .ql-stroke{fill:none;stroke:#ccc;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}.ql-bubble .ql-stroke-miter{fill:none;stroke:#ccc;stroke-miterlimit:10;stroke-width:2}.ql-bubble .ql-fill,.ql-bubble .ql-stroke.ql-fill{fill:#ccc}.ql-bubble .ql-empty{fill:none}.ql-bubble .ql-even{fill-rule:evenodd}.ql-bubble .ql-thin,.ql-bubble .ql-stroke.ql-thin{stroke-width:1}.ql-bubble .ql-transparent{opacity:.4}.ql-bubble .ql-direction svg:last-child{display:none}.ql-bubble .ql-direction.ql-active svg:last-child{display:inline}.ql-bubble .ql-direction.ql-active svg:first-child{display:none}.ql-bubble .ql-editor h1{font-size:2em}.ql-bubble .ql-editor h2{font-size:1.5em}.ql-bubble .ql-editor h3{font-size:1.17em}.ql-bubble .ql-editor h4{font-size:1em}.ql-bubble .ql-editor h5{font-size:.83em}.ql-bubble .ql-editor h6{font-size:.67em}.ql-bubble .ql-editor a{text-decoration:underline}.ql-bubble .ql-editor blockquote{border-left:4px solid #ccc;margin-bottom:5px;margin-top:5px;padding-left:16px}.ql-bubble .ql-editor code,.ql-bubble .ql-editor pre{background-color:#f0f0f0;border-radius:3px}.ql-bubble .ql-editor pre{white-space:pre-wrap;margin-bottom:5px;margin-top:5px;padding:5px 10px}.ql-bubble .ql-editor code{font-size:85%;padding:2px 4px}.ql-bubble .ql-editor pre.ql-syntax{background-color:#23241f;color:#f8f8f2;overflow:visible}.ql-bubble .ql-editor img{max-width:100%}.ql-bubble .ql-picker{color:#ccc;display:inline-block;float:left;font-size:14px;font-weight:500;height:24px;position:relative;vertical-align:middle}.ql-bubble .ql-picker-label{cursor:pointer;display:inline-block;height:100%;padding-left:8px;padding-right:2px;position:relative;width:100%}.ql-bubble .ql-picker-label:before{display:inline-block;line-height:22px}.ql-bubble .ql-picker-options{background-color:#444;display:none;min-width:100%;padding:4px 8px;position:absolute;white-space:nowrap}.ql-bubble .ql-picker-options .ql-picker-item{cursor:pointer;display:block;padding-bottom:5px;padding-top:5px}.ql-bubble .ql-picker.ql-expanded .ql-picker-label{color:#777;z-index:2}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-fill{fill:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-label .ql-stroke{stroke:#777}.ql-bubble .ql-picker.ql-expanded .ql-picker-options{display:block;margin-top:-1px;top:100%;z-index:1}.ql-bubble .ql-color-picker,.ql-bubble .ql-icon-picker{width:28px}.ql-bubble .ql-color-picker .ql-picker-label,.ql-bubble .ql-icon-picker .ql-picker-label{padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-label svg,.ql-bubble .ql-icon-picker .ql-picker-label svg{right:4px}.ql-bubble .ql-icon-picker .ql-picker-options{padding:4px 0}.ql-bubble .ql-icon-picker .ql-picker-item{height:24px;width:24px;padding:2px 4px}.ql-bubble .ql-color-picker .ql-picker-options{padding:3px 5px;width:152px}.ql-bubble .ql-color-picker .ql-picker-item{border:1px solid transparent;float:left;height:16px;margin:2px;padding:0;width:16px}.ql-bubble .ql-picker:not(.ql-color-picker):not(.ql-icon-picker) svg{position:absolute;margin-top:-9px;right:0;top:50%;width:18px}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-font .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-label[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-label]:not([data-label=""]):before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-label]:not([data-label=""]):before{content:attr(data-label)}.ql-bubble .ql-picker.ql-header{width:98px}.ql-bubble .ql-picker.ql-header .ql-picker-label:before,.ql-bubble .ql-picker.ql-header .ql-picker-item:before{content:"Normal"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="1"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{content:"Heading 1"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="2"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{content:"Heading 2"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="3"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{content:"Heading 3"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="4"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{content:"Heading 4"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="5"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{content:"Heading 5"}.ql-bubble .ql-picker.ql-header .ql-picker-label[data-value="6"]:before,.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{content:"Heading 6"}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="1"]:before{font-size:2em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="2"]:before{font-size:1.5em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="3"]:before{font-size:1.17em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="4"]:before{font-size:1em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="5"]:before{font-size:.83em}.ql-bubble .ql-picker.ql-header .ql-picker-item[data-value="6"]:before{font-size:.67em}.ql-bubble .ql-picker.ql-font{width:108px}.ql-bubble .ql-picker.ql-font .ql-picker-label:before,.ql-bubble .ql-picker.ql-font .ql-picker-item:before{content:"Sans Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=serif]:before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{content:"Serif"}.ql-bubble .ql-picker.ql-font .ql-picker-label[data-value=monospace]:before,.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{content:"Monospace"}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=serif]:before{font-family:Georgia,Times New Roman,serif}.ql-bubble .ql-picker.ql-font .ql-picker-item[data-value=monospace]:before{font-family:Monaco,Courier New,monospace}.ql-bubble .ql-picker.ql-size{width:98px}.ql-bubble .ql-picker.ql-size .ql-picker-label:before,.ql-bubble .ql-picker.ql-size .ql-picker-item:before{content:"Normal"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=small]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{content:"Small"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=large]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{content:"Large"}.ql-bubble .ql-picker.ql-size .ql-picker-label[data-value=huge]:before,.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{content:"Huge"}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=small]:before{font-size:10px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=large]:before{font-size:18px}.ql-bubble .ql-picker.ql-size .ql-picker-item[data-value=huge]:before{font-size:32px}.ql-bubble .ql-color-picker.ql-background .ql-picker-item{background-color:#fff}.ql-bubble .ql-color-picker.ql-color .ql-picker-item{background-color:#000}.ql-bubble .ql-toolbar .ql-formats{margin:8px 12px 8px 0}.ql-bubble .ql-toolbar .ql-formats:first-child{margin-left:12px}.ql-bubble .ql-color-picker svg{margin:1px}.ql-bubble .ql-color-picker .ql-picker-item.ql-selected,.ql-bubble .ql-color-picker .ql-picker-item:hover{border-color:#fff}.ql-bubble .ql-tooltip{background-color:#444;border-radius:25px;color:#fff}.ql-bubble .ql-tooltip-arrow{border-left:6px solid transparent;border-right:6px solid transparent;content:" ";display:block;left:50%;margin-left:-6px;position:absolute}.ql-bubble .ql-tooltip:not(.ql-flip) .ql-tooltip-arrow{border-bottom:6px solid #444;top:-6px}.ql-bubble .ql-tooltip.ql-flip .ql-tooltip-arrow{border-top:6px solid #444;bottom:-6px}.ql-bubble .ql-tooltip.ql-editing .ql-tooltip-editor{display:block}.ql-bubble .ql-tooltip.ql-editing .ql-formats{visibility:hidden}.ql-bubble .ql-tooltip-editor{display:none}.ql-bubble .ql-tooltip-editor input[type=text]{background:transparent;border:none;color:#fff;font-size:13px;height:100%;outline:none;padding:10px 20px;position:absolute;width:100%}.ql-bubble .ql-tooltip-editor a{top:10px;position:absolute;right:20px}.ql-bubble .ql-tooltip-editor a:before{color:#ccc;content:"\d7";font-size:16px;font-weight:700}.ql-container.ql-bubble:not(.ql-disabled) a{position:relative;white-space:nowrap}.ql-container.ql-bubble:not(.ql-disabled) a:before{background-color:#444;border-radius:15px;top:-5px;font-size:12px;color:#fff;content:attr(href);font-weight:400;overflow:hidden;padding:5px 15px;text-decoration:none;z-index:1}.ql-container.ql-bubble:not(.ql-disabled) a:after{border-top:6px solid #444;border-left:6px solid transparent;border-right:6px solid transparent;top:0;content:" ";height:0;width:0}.ql-container.ql-bubble:not(.ql-disabled) a:before,.ql-container.ql-bubble:not(.ql-disabled) a:after{left:0;margin-left:50%;position:absolute;transform:translate(-50%,-100%);transition:visibility 0s ease .2s;visibility:hidden}.ql-container.ql-bubble:not(.ql-disabled) a:hover:before,.ql-container.ql-bubble:not(.ql-disabled) a:hover:after{visibility:visible}.primary-color[data-v-697b5022]{color:#409eff}.background-opacity[data-v-697b5022]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-697b5022]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-697b5022]{margin-top:8px}.el-form-item--medium .el-radio[data-v-697b5022]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-697b5022]{margin-top:8px}.el-form-item--small .el-radio[data-v-697b5022]{line-height:32px!important}.el-form-item--small .el-rate[data-v-697b5022]{margin-top:6px}.el-form-item--mini .el-radio[data-v-697b5022]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-697b5022]{margin-top:4px}.el-card[data-v-697b5022]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-697b5022]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-697b5022],.auto-full-width.el-date-editor.el-input__inner[data-v-697b5022]{width:100%!important}[data-v-697b5022]::-webkit-scrollbar{width:8px;height:8px}[data-v-697b5022]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-697b5022]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-697b5022]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-697b5022]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-697b5022]{width:100%!important}.primary-color[data-v-3a0f316d]{color:#409eff}.background-opacity[data-v-3a0f316d]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-3a0f316d]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-3a0f316d]{margin-top:8px}.el-form-item--medium .el-radio[data-v-3a0f316d]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-3a0f316d]{margin-top:8px}.el-form-item--small .el-radio[data-v-3a0f316d]{line-height:32px!important}.el-form-item--small .el-rate[data-v-3a0f316d]{margin-top:6px}.el-form-item--mini .el-radio[data-v-3a0f316d]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-3a0f316d]{margin-top:4px}.el-card[data-v-3a0f316d]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-3a0f316d]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-3a0f316d],.auto-full-width.el-date-editor.el-input__inner[data-v-3a0f316d]{width:100%!important}[data-v-3a0f316d]::-webkit-scrollbar{width:8px;height:8px}[data-v-3a0f316d]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3a0f316d]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3a0f316d]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-3a0f316d]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-3a0f316d]{width:100%!important}.primary-color[data-v-0de324ac]{color:#409eff}.background-opacity[data-v-0de324ac]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0de324ac]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0de324ac]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0de324ac]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0de324ac]{margin-top:8px}.el-form-item--small .el-radio[data-v-0de324ac]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0de324ac]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0de324ac]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0de324ac]{margin-top:4px}.el-card[data-v-0de324ac]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0de324ac]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0de324ac],.auto-full-width.el-date-editor.el-input__inner[data-v-0de324ac]{width:100%!important}[data-v-0de324ac]::-webkit-scrollbar{width:8px;height:8px}[data-v-0de324ac]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0de324ac]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0de324ac]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-0de324ac]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-0de324ac]{width:100%!important}.primary-color[data-v-95f13fca]{color:#409eff}.background-opacity[data-v-95f13fca]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-95f13fca]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-95f13fca]{margin-top:8px}.el-form-item--medium .el-radio[data-v-95f13fca]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-95f13fca]{margin-top:8px}.el-form-item--small .el-radio[data-v-95f13fca]{line-height:32px!important}.el-form-item--small .el-rate[data-v-95f13fca]{margin-top:6px}.el-form-item--mini .el-radio[data-v-95f13fca]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-95f13fca]{margin-top:4px}.el-card[data-v-95f13fca]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-95f13fca]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-95f13fca],.auto-full-width.el-date-editor.el-input__inner[data-v-95f13fca]{width:100%!important}[data-v-95f13fca]::-webkit-scrollbar{width:8px;height:8px}[data-v-95f13fca]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-95f13fca]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-95f13fca]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-95f13fca]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.slot-wrapper-design[data-v-95f13fca]{width:100%;min-height:26px;background:linear-gradient(45deg,#ccc 25%,#eee 0,#eee 50%,#ccc 0,#ccc 75%,#eee 0);background-size:20px 20px;text-align:center}.slot-wrapper-design .slot-title[data-v-95f13fca]{font-size:13px}.primary-color[data-v-9a1dfacc]{color:#409eff}.background-opacity[data-v-9a1dfacc]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-9a1dfacc]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-9a1dfacc]{margin-top:8px}.el-form-item--medium .el-radio[data-v-9a1dfacc]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-9a1dfacc]{margin-top:8px}.el-form-item--small .el-radio[data-v-9a1dfacc]{line-height:32px!important}.el-form-item--small .el-rate[data-v-9a1dfacc]{margin-top:6px}.el-form-item--mini .el-radio[data-v-9a1dfacc]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-9a1dfacc]{margin-top:4px}.el-card[data-v-9a1dfacc]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-9a1dfacc]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-9a1dfacc],.auto-full-width.el-date-editor.el-input__inner[data-v-9a1dfacc]{width:100%!important}[data-v-9a1dfacc]::-webkit-scrollbar{width:8px;height:8px}[data-v-9a1dfacc]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9a1dfacc]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9a1dfacc]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-9a1dfacc]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-22bb2b91]{color:#409eff}.background-opacity[data-v-22bb2b91]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-22bb2b91]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-22bb2b91]{margin-top:8px}.el-form-item--medium .el-radio[data-v-22bb2b91]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-22bb2b91]{margin-top:8px}.el-form-item--small .el-radio[data-v-22bb2b91]{line-height:32px!important}.el-form-item--small .el-rate[data-v-22bb2b91]{margin-top:6px}.el-form-item--mini .el-radio[data-v-22bb2b91]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-22bb2b91]{margin-top:4px}.el-card[data-v-22bb2b91]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-22bb2b91]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-22bb2b91],.auto-full-width.el-date-editor.el-input__inner[data-v-22bb2b91]{width:100%!important}[data-v-22bb2b91]::-webkit-scrollbar{width:8px;height:8px}[data-v-22bb2b91]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-22bb2b91]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-22bb2b91]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-22bb2b91]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-22bb2b91]{width:100%!important}.primary-color[data-v-4cec7068]{color:#409eff}.background-opacity[data-v-4cec7068]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-4cec7068]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-4cec7068]{margin-top:8px}.el-form-item--medium .el-radio[data-v-4cec7068]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-4cec7068]{margin-top:8px}.el-form-item--small .el-radio[data-v-4cec7068]{line-height:32px!important}.el-form-item--small .el-rate[data-v-4cec7068]{margin-top:6px}.el-form-item--mini .el-radio[data-v-4cec7068]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-4cec7068]{margin-top:4px}.el-card[data-v-4cec7068]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-4cec7068]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-4cec7068],.auto-full-width.el-date-editor.el-input__inner[data-v-4cec7068]{width:100%!important}[data-v-4cec7068]::-webkit-scrollbar{width:8px;height:8px}[data-v-4cec7068]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4cec7068]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4cec7068]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-4cec7068]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.primary-color[data-v-8d758ba4]{color:#409eff}.background-opacity[data-v-8d758ba4]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-8d758ba4]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-8d758ba4]{margin-top:8px}.el-form-item--medium .el-radio[data-v-8d758ba4]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-8d758ba4]{margin-top:8px}.el-form-item--small .el-radio[data-v-8d758ba4]{line-height:32px!important}.el-form-item--small .el-rate[data-v-8d758ba4]{margin-top:6px}.el-form-item--mini .el-radio[data-v-8d758ba4]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-8d758ba4]{margin-top:4px}.el-card[data-v-8d758ba4]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-8d758ba4]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-8d758ba4],.auto-full-width.el-date-editor.el-input__inner[data-v-8d758ba4]{width:100%!important}[data-v-8d758ba4]::-webkit-scrollbar{width:8px;height:8px}[data-v-8d758ba4]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8d758ba4]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-8d758ba4]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-8d758ba4]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-8d758ba4]{width:100%!important}.auto-full-width[data-v-8d758ba4]{width:100%}.auto-full-width[data-v-8d758ba4] .el-range-editor{width:100%!important}.primary-color[data-v-2dd889c0]{color:#409eff}.background-opacity[data-v-2dd889c0]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-2dd889c0]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-2dd889c0]{margin-top:8px}.el-form-item--medium .el-radio[data-v-2dd889c0]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-2dd889c0]{margin-top:8px}.el-form-item--small .el-radio[data-v-2dd889c0]{line-height:32px!important}.el-form-item--small .el-rate[data-v-2dd889c0]{margin-top:6px}.el-form-item--mini .el-radio[data-v-2dd889c0]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-2dd889c0]{margin-top:4px}.el-card[data-v-2dd889c0]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-2dd889c0]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-2dd889c0],.auto-full-width.el-date-editor.el-input__inner[data-v-2dd889c0]{width:100%!important}[data-v-2dd889c0]::-webkit-scrollbar{width:8px;height:8px}[data-v-2dd889c0]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2dd889c0]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2dd889c0]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-2dd889c0]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.full-width-input[data-v-2dd889c0]{width:100%!important}.primary-color[data-v-9332ab84]{color:#409eff}.background-opacity[data-v-9332ab84]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-9332ab84]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-9332ab84]{margin-top:8px}.el-form-item--medium .el-radio[data-v-9332ab84]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-9332ab84]{margin-top:8px}.el-form-item--small .el-radio[data-v-9332ab84]{line-height:32px!important}.el-form-item--small .el-rate[data-v-9332ab84]{margin-top:6px}.el-form-item--mini .el-radio[data-v-9332ab84]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-9332ab84]{margin-top:4px}.el-card[data-v-9332ab84]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-9332ab84]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-9332ab84],.auto-full-width.el-date-editor.el-input__inner[data-v-9332ab84]{width:100%!important}[data-v-9332ab84]::-webkit-scrollbar{width:8px;height:8px}[data-v-9332ab84]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9332ab84]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-9332ab84]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-9332ab84]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.blank-cell[data-v-9332ab84]{font-style:italic;color:#ccc}.blank-cell span.invisible-content[data-v-9332ab84]{opacity:0}.primary-color[data-v-2eb559e6]{color:#409eff}.background-opacity[data-v-2eb559e6]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-2eb559e6]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-2eb559e6]{margin-top:8px}.el-form-item--medium .el-radio[data-v-2eb559e6]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-2eb559e6]{margin-top:8px}.el-form-item--small .el-radio[data-v-2eb559e6]{line-height:32px!important}.el-form-item--small .el-rate[data-v-2eb559e6]{margin-top:6px}.el-form-item--mini .el-radio[data-v-2eb559e6]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-2eb559e6]{margin-top:4px}.el-card[data-v-2eb559e6]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-2eb559e6]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-2eb559e6],.auto-full-width.el-date-editor.el-input__inner[data-v-2eb559e6]{width:100%!important}[data-v-2eb559e6]::-webkit-scrollbar{width:8px;height:8px}[data-v-2eb559e6]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2eb559e6]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2eb559e6]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-2eb559e6]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.sub-form-container[data-v-2eb559e6]{margin-bottom:8px;text-align:left}.sub-form-container[data-v-2eb559e6] .el-row.header-row{padding-bottom:0}.sub-form-container[data-v-2eb559e6] .el-row.sub-form-row{padding-top:3px;padding-bottom:3px}.sub-form-container[data-v-2eb559e6] .el-row.sub-form-row .row-number-span{margin-left:16px}div.action-header-column[data-v-2eb559e6]{display:inline-block;width:120px}div.action-header-column .action-label[data-v-2eb559e6]{margin-right:12px}div.action-header-column .action-button[data-v-2eb559e6]{padding-left:8px;padding-right:8px}div.field-header-column[data-v-2eb559e6]{display:inline-block}div.field-header-column span.custom-label i[data-v-2eb559e6]{margin:0 3px}div.field-header-column.is-required[data-v-2eb559e6]:before{content:"*";color:#f56c6c;margin-right:4px}div.label-center-left[data-v-2eb559e6]{text-align:left}div.label-center-align[data-v-2eb559e6]{text-align:center}div.label-right-align[data-v-2eb559e6]{text-align:right}div.sub-form-action-column[data-v-2eb559e6]{display:inline-block;width:120px}div.sub-form-action-column[data-v-2eb559e6] .el-form-item{margin-bottom:0}div.sub-form-action-column[data-v-2eb559e6] .el-button{font-size:14px;padding:0;background:#DCDFE6;border:4px solid #DCDFE6}div.sub-form-action-column.hide-label[data-v-2eb559e6] .el-form-item__label{display:none}div.sub-form-table-column[data-v-2eb559e6]{display:inline-block}div.sub-form-table-column[data-v-2eb559e6] .el-form-item{margin-left:4px;margin-right:4px;margin-bottom:0}div.sub-form-table-column[data-v-2eb559e6] .el-form-item__content{margin-left:0!important}div.sub-form-table-column.hide-label[data-v-2eb559e6] .el-form-item__label{display:none}.primary-color[data-v-1825ed0b]{color:#409eff}.background-opacity[data-v-1825ed0b]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-1825ed0b]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-1825ed0b]{margin-top:8px}.el-form-item--medium .el-radio[data-v-1825ed0b]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-1825ed0b]{margin-top:8px}.el-form-item--small .el-radio[data-v-1825ed0b]{line-height:32px!important}.el-form-item--small .el-rate[data-v-1825ed0b]{margin-top:6px}.el-form-item--mini .el-radio[data-v-1825ed0b]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-1825ed0b]{margin-top:4px}.el-card[data-v-1825ed0b]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-1825ed0b]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-1825ed0b],.auto-full-width.el-date-editor.el-input__inner[data-v-1825ed0b]{width:100%!important}[data-v-1825ed0b]::-webkit-scrollbar{width:8px;height:8px}[data-v-1825ed0b]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1825ed0b]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-1825ed0b]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-1825ed0b]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}td.table-cell[data-v-1825ed0b]{display:table-cell;height:36px;border:1px solid #e5e5e5}.primary-color[data-v-dfc6ca8e]{color:#409eff}.background-opacity[data-v-dfc6ca8e]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-dfc6ca8e]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-dfc6ca8e]{margin-top:8px}.el-form-item--medium .el-radio[data-v-dfc6ca8e]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-dfc6ca8e]{margin-top:8px}.el-form-item--small .el-radio[data-v-dfc6ca8e]{line-height:32px!important}.el-form-item--small .el-rate[data-v-dfc6ca8e]{margin-top:6px}.el-form-item--mini .el-radio[data-v-dfc6ca8e]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-dfc6ca8e]{margin-top:4px}.el-card[data-v-dfc6ca8e]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-dfc6ca8e]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-dfc6ca8e],.auto-full-width.el-date-editor.el-input__inner[data-v-dfc6ca8e]{width:100%!important}[data-v-dfc6ca8e]::-webkit-scrollbar{width:8px;height:8px}[data-v-dfc6ca8e]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-dfc6ca8e]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-dfc6ca8e]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-dfc6ca8e]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}div.table-container table.table-layout[data-v-dfc6ca8e]{width:100%;table-layout:fixed;border-collapse:collapse}.primary-color[data-v-544703a2]{color:#409eff}.background-opacity[data-v-544703a2]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-544703a2]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-544703a2]{margin-top:8px}.el-form-item--medium .el-radio[data-v-544703a2]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-544703a2]{margin-top:8px}.el-form-item--small .el-radio[data-v-544703a2]{line-height:32px!important}.el-form-item--small .el-rate[data-v-544703a2]{margin-top:6px}.el-form-item--mini .el-radio[data-v-544703a2]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-544703a2]{margin-top:4px}.el-card[data-v-544703a2]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-544703a2]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-544703a2],.auto-full-width.el-date-editor.el-input__inner[data-v-544703a2]{width:100%!important}[data-v-544703a2]::-webkit-scrollbar{width:8px;height:8px}[data-v-544703a2]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-544703a2]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-544703a2]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-544703a2]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-form[data-v-544703a2] .el-row{padding:8px}.primary-color[data-v-71442268]{color:#409eff}.background-opacity[data-v-71442268]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-71442268]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-71442268]{margin-top:8px}.el-form-item--medium .el-radio[data-v-71442268]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-71442268]{margin-top:8px}.el-form-item--small .el-radio[data-v-71442268]{line-height:32px!important}.el-form-item--small .el-rate[data-v-71442268]{margin-top:6px}.el-form-item--mini .el-radio[data-v-71442268]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-71442268]{margin-top:4px}.el-card[data-v-71442268]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-71442268]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-71442268],.auto-full-width.el-date-editor.el-input__inner[data-v-71442268]{width:100%!important}[data-v-71442268]::-webkit-scrollbar{width:8px;height:8px}[data-v-71442268]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-71442268]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-71442268]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-71442268]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.ace-editor[data-v-71442268]{min-height:300px}.primary-color[data-v-5e4c412c]{color:#409eff}.background-opacity[data-v-5e4c412c]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5e4c412c]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5e4c412c]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5e4c412c]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5e4c412c]{margin-top:8px}.el-form-item--small .el-radio[data-v-5e4c412c]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5e4c412c]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5e4c412c]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5e4c412c]{margin-top:4px}.el-card[data-v-5e4c412c]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5e4c412c]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5e4c412c],.auto-full-width.el-date-editor.el-input__inner[data-v-5e4c412c]{width:100%!important}[data-v-5e4c412c]::-webkit-scrollbar{width:8px;height:8px}[data-v-5e4c412c]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5e4c412c]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5e4c412c]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-5e4c412c]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.toolbar-container[data-v-5e4c412c]{display:flex;justify-content:space-between}.toolbar-container .right-toolbar[data-v-5e4c412c]{display:flex;justify-content:flex-end}.toolbar-container .right-toolbar .right-toolbar-con[data-v-5e4c412c]{display:flex;align-items:center}.toolbar-container .right-toolbar .right-toolbar-con .menu[data-v-5e4c412c]{height:42px;font-size:14px;display:flex;align-items:center}.toolbar-container .right-toolbar .right-toolbar-con .menu+.menu[data-v-5e4c412c]{margin-left:15px}.toolbar-container .right-toolbar[data-v-5e4c412c] .svg-icon{margin-left:0;margin-right:.05em}.toolbar-container .left-toolbar[data-v-5e4c412c]{display:flex;margin-top:4px;font-size:16px}.el-button i[data-v-5e4c412c]{margin-right:3px}.small-padding-dialog[data-v-5e4c412c] .el-dialog__header{background:#f1f2f3}.small-padding-dialog[data-v-5e4c412c] .el-dialog__body{padding:12px 15px}.small-padding-dialog[data-v-5e4c412c] .el-dialog__body .el-alert.alert-padding{padding:0 10px}.small-padding-dialog[data-v-5e4c412c] .ace-container{border:1px solid #DCDFE6}.dialog-title-light-bg[data-v-5e4c412c] .el-dialog__header{background:#f1f2f3}.no-box-shadow[data-v-5e4c412c]{box-shadow:none}.no-padding.el-tabs--border-card[data-v-5e4c412c] .el-tabs__content{padding:0}.form-render-wrapper.h5-layout[data-v-5e4c412c]{margin:0 auto;width:420px;border-radius:15px;box-shadow:0 0 1px 10px #495060;height:calc(100vh - 175px);overflow-y:auto;overflow-x:hidden}.form-render-wrapper.pad-layout[data-v-5e4c412c]{margin:0 auto;width:960px;border-radius:15px;box-shadow:0 0 1px 10px #495060;height:calc(100vh - 175px);overflow-y:auto;overflow-x:hidden}.node-tree-drawer[data-v-5e4c412c] .el-drawer{padding:10px;overflow:auto}.node-tree-drawer[data-v-5e4c412c] .el-drawer__header{margin-bottom:12px;padding:5px 5px 0}.node-tree-drawer[data-v-5e4c412c] .el-drawer__body{padding-left:5px}[data-v-5e4c412c] .node-tree .el-tree-node{position:relative;padding-left:12px}[data-v-5e4c412c] .node-tree .el-tree-node__content{padding-left:0!important}[data-v-5e4c412c] .node-tree .el-tree-node__expand-icon.is-leaf{display:none}[data-v-5e4c412c] .node-tree .el-tree-node__children{padding-left:12px;overflow:visible!important}[data-v-5e4c412c] .node-tree .el-tree-node :last-child:before{height:38px}[data-v-5e4c412c] .node-tree .el-tree>.el-tree-node:before{border-left:none}[data-v-5e4c412c] .node-tree .el-tree>.el-tree-node:after{border-top:none}[data-v-5e4c412c] .node-tree .el-tree-node:before{content:"";left:-4px;position:absolute;right:auto;border-width:1px}[data-v-5e4c412c] .node-tree .el-tree-node:after{content:"";left:-4px;position:absolute;right:auto;border-width:1px}[data-v-5e4c412c] .node-tree .el-tree-node:before{border-left:1px dashed #4386c6;bottom:0px;height:100%;top:-10px;width:1px}[data-v-5e4c412c] .node-tree .el-tree-node:after{border-top:1px dashed #4386c6;height:20px;top:12px;width:16px}[data-v-5e4c412c] .node-tree .el-tree-node.is-current>.el-tree-node__content{background:#c2d6ea!important}[data-v-5e4c412c] .node-tree .el-tree-node__expand-icon{margin-left:-3px;padding:6px 6px 6px 0;font-size:16px}.primary-color[data-v-2b4eb610]{color:#409eff}.background-opacity[data-v-2b4eb610]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-2b4eb610]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-2b4eb610]{margin-top:8px}.el-form-item--medium .el-radio[data-v-2b4eb610]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-2b4eb610]{margin-top:8px}.el-form-item--small .el-radio[data-v-2b4eb610]{line-height:32px!important}.el-form-item--small .el-rate[data-v-2b4eb610]{margin-top:6px}.el-form-item--mini .el-radio[data-v-2b4eb610]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-2b4eb610]{margin-top:4px}.el-card[data-v-2b4eb610]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-2b4eb610]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-2b4eb610],.auto-full-width.el-date-editor.el-input__inner[data-v-2b4eb610]{width:100%!important}[data-v-2b4eb610]::-webkit-scrollbar{width:8px;height:8px}[data-v-2b4eb610]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2b4eb610]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-2b4eb610]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-2b4eb610]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-2b4eb610] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-78d1cf52]{color:#409eff}.background-opacity[data-v-78d1cf52]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-78d1cf52]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-78d1cf52]{margin-top:8px}.el-form-item--medium .el-radio[data-v-78d1cf52]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-78d1cf52]{margin-top:8px}.el-form-item--small .el-radio[data-v-78d1cf52]{line-height:32px!important}.el-form-item--small .el-rate[data-v-78d1cf52]{margin-top:6px}.el-form-item--mini .el-radio[data-v-78d1cf52]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-78d1cf52]{margin-top:4px}.el-card[data-v-78d1cf52]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-78d1cf52]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-78d1cf52],.auto-full-width.el-date-editor.el-input__inner[data-v-78d1cf52]{width:100%!important}[data-v-78d1cf52]::-webkit-scrollbar{width:8px;height:8px}[data-v-78d1cf52]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78d1cf52]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-78d1cf52]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-78d1cf52]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.option-items-pane[data-v-78d1cf52]{width:100%}.option-items-pane ul[data-v-78d1cf52]{padding-inline-start:6px;padding-left:6px}li.ghost[data-v-78d1cf52]{background:#fff;border:2px dotted #409EFF}.drag-option[data-v-78d1cf52]{cursor:move}.small-padding-dialog[data-v-78d1cf52] .el-dialog__body{padding:10px 15px}.dialog-footer .el-button[data-v-78d1cf52]{width:100px}.full-width-input[data-v-78d1cf52],.full-width-input[data-v-78d1cf52] .el-cascader{width:100%!important}.primary-color[data-v-ff435ad4]{color:#409eff}.background-opacity[data-v-ff435ad4]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-ff435ad4]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-ff435ad4]{margin-top:8px}.el-form-item--medium .el-radio[data-v-ff435ad4]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-ff435ad4]{margin-top:8px}.el-form-item--small .el-radio[data-v-ff435ad4]{line-height:32px!important}.el-form-item--small .el-rate[data-v-ff435ad4]{margin-top:6px}.el-form-item--mini .el-radio[data-v-ff435ad4]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-ff435ad4]{margin-top:4px}.el-card[data-v-ff435ad4]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-ff435ad4]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-ff435ad4],.auto-full-width.el-date-editor.el-input__inner[data-v-ff435ad4]{width:100%!important}[data-v-ff435ad4]::-webkit-scrollbar{width:8px;height:8px}[data-v-ff435ad4]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-ff435ad4]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-ff435ad4]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-ff435ad4]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-ff435ad4] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-5998270e]{color:#409eff}.background-opacity[data-v-5998270e]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5998270e]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5998270e]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5998270e]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5998270e]{margin-top:8px}.el-form-item--small .el-radio[data-v-5998270e]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5998270e]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5998270e]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5998270e]{margin-top:4px}.el-card[data-v-5998270e]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5998270e]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5998270e],.auto-full-width.el-date-editor.el-input__inner[data-v-5998270e]{width:100%!important}[data-v-5998270e]::-webkit-scrollbar{width:8px;height:8px}[data-v-5998270e]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5998270e]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5998270e]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-5998270e]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}li.col-item[data-v-5998270e]{list-style:none}li.col-item span.col-span-title[data-v-5998270e]{display:inline-block;font-size:13px;width:120px}li.col-item .col-delete-button[data-v-5998270e]{margin-left:6px}.primary-color[data-v-195592c2]{color:#409eff}.background-opacity[data-v-195592c2]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-195592c2]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-195592c2]{margin-top:8px}.el-form-item--medium .el-radio[data-v-195592c2]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-195592c2]{margin-top:8px}.el-form-item--small .el-radio[data-v-195592c2]{line-height:32px!important}.el-form-item--small .el-rate[data-v-195592c2]{margin-top:6px}.el-form-item--mini .el-radio[data-v-195592c2]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-195592c2]{margin-top:4px}.el-card[data-v-195592c2]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-195592c2]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-195592c2],.auto-full-width.el-date-editor.el-input__inner[data-v-195592c2]{width:100%!important}[data-v-195592c2]::-webkit-scrollbar{width:8px;height:8px}[data-v-195592c2]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-195592c2]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-195592c2]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-195592c2]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.radio-group-custom[data-v-195592c2] .el-radio-button__inner{padding-left:12px;padding-right:12px}.primary-color[data-v-3f8b79a4]{color:#409eff}.background-opacity[data-v-3f8b79a4]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-3f8b79a4]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-3f8b79a4]{margin-top:8px}.el-form-item--medium .el-radio[data-v-3f8b79a4]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-3f8b79a4]{margin-top:8px}.el-form-item--small .el-radio[data-v-3f8b79a4]{line-height:32px!important}.el-form-item--small .el-rate[data-v-3f8b79a4]{margin-top:6px}.el-form-item--mini .el-radio[data-v-3f8b79a4]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-3f8b79a4]{margin-top:4px}.el-card[data-v-3f8b79a4]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-3f8b79a4]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-3f8b79a4],.auto-full-width.el-date-editor.el-input__inner[data-v-3f8b79a4]{width:100%!important}[data-v-3f8b79a4]::-webkit-scrollbar{width:8px;height:8px}[data-v-3f8b79a4]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3f8b79a4]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-3f8b79a4]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-3f8b79a4]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}li.col-item[data-v-3f8b79a4]{list-style:none}li.col-item span.col-span-title[data-v-3f8b79a4]{display:inline-block;font-size:13px;width:120px}li.col-item .col-delete-button[data-v-3f8b79a4]{margin-left:6px}.panes-setting ul[data-v-3f8b79a4]{padding-inline-start:0;padding-left:0;margin:0}.panes-setting .drag-option[data-v-3f8b79a4]{cursor:move}.panes-setting li.ghost[data-v-3f8b79a4]{background:#fff;border:2px dotted #409EFF}.html-content-editor[data-v-a8d84c8e]{font-size:13px}.primary-color[data-v-70f556a1]{color:#409eff}.background-opacity[data-v-70f556a1]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-70f556a1]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-70f556a1]{margin-top:8px}.el-form-item--medium .el-radio[data-v-70f556a1]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-70f556a1]{margin-top:8px}.el-form-item--small .el-radio[data-v-70f556a1]{line-height:32px!important}.el-form-item--small .el-rate[data-v-70f556a1]{margin-top:6px}.el-form-item--mini .el-radio[data-v-70f556a1]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-70f556a1]{margin-top:4px}.el-card[data-v-70f556a1]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-70f556a1]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-70f556a1],.auto-full-width.el-date-editor.el-input__inner[data-v-70f556a1]{width:100%!important}[data-v-70f556a1]::-webkit-scrollbar{width:8px;height:8px}[data-v-70f556a1]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-70f556a1]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-70f556a1]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-70f556a1]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.setting-form[data-v-70f556a1] .el-form-item__label{font-size:13px;overflow:hidden;white-space:nowrap}.setting-form[data-v-70f556a1] .el-form-item--small.el-form-item{margin-bottom:10px}.setting-form .radio-group-custom[data-v-70f556a1] .el-radio-button__inner{padding-left:12px;padding-right:12px}.setting-form .custom-divider.el-divider--horizontal[data-v-70f556a1]{margin:10px 0}.setting-collapse[data-v-70f556a1] .el-collapse-item__content{padding-bottom:6px}.setting-collapse[data-v-70f556a1] .el-collapse-item__header{font-style:italic;font-weight:700}.small-padding-dialog[data-v-70f556a1] .el-dialog__body{padding:6px 15px 12px}.primary-color[data-v-5cdeebbc]{color:#409eff}.background-opacity[data-v-5cdeebbc]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-5cdeebbc]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-5cdeebbc]{margin-top:8px}.el-form-item--medium .el-radio[data-v-5cdeebbc]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-5cdeebbc]{margin-top:8px}.el-form-item--small .el-radio[data-v-5cdeebbc]{line-height:32px!important}.el-form-item--small .el-rate[data-v-5cdeebbc]{margin-top:6px}.el-form-item--mini .el-radio[data-v-5cdeebbc]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-5cdeebbc]{margin-top:4px}.el-card[data-v-5cdeebbc]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-5cdeebbc]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-5cdeebbc],.auto-full-width.el-date-editor.el-input__inner[data-v-5cdeebbc]{width:100%!important}[data-v-5cdeebbc]::-webkit-scrollbar{width:8px;height:8px}[data-v-5cdeebbc]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5cdeebbc]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-5cdeebbc]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-5cdeebbc]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.panel-container[data-v-5cdeebbc]{padding:0 8px}.setting-scrollbar[data-v-5cdeebbc] .el-scrollbar__wrap{overflow-x:hidden}.setting-collapse[data-v-5cdeebbc] .el-collapse-item__content{padding-bottom:6px}.setting-collapse[data-v-5cdeebbc] .el-collapse-item__header{font-style:italic;font-weight:700}.setting-form[data-v-5cdeebbc] .el-form-item__label{font-size:13px;overflow:hidden;white-space:nowrap}.setting-form[data-v-5cdeebbc] .el-form-item--small.el-form-item{margin-bottom:10px}[data-v-5cdeebbc] .hide-spin-button input::-webkit-outer-spin-button,[data-v-5cdeebbc] .hide-spin-button input::-webkit-inner-spin-button{-webkit-appearance:none!important}[data-v-5cdeebbc] .hide-spin-button input[type=number]{-moz-appearance:textfield}[data-v-5cdeebbc] .custom-divider.el-divider--horizontal{margin:10px 0}[data-v-5cdeebbc] .custom-divider-margin-top.el-divider--horizontal{margin:20px 0}.small-padding-dialog[data-v-5cdeebbc] .el-dialog__body{padding:6px 15px 12px}.primary-color[data-v-0d08f778]{color:#409eff}.background-opacity[data-v-0d08f778]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0d08f778]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0d08f778]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0d08f778]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0d08f778]{margin-top:8px}.el-form-item--small .el-radio[data-v-0d08f778]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0d08f778]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0d08f778]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0d08f778]{margin-top:4px}.el-card[data-v-0d08f778]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0d08f778]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0d08f778],.auto-full-width.el-date-editor.el-input__inner[data-v-0d08f778]{width:100%!important}[data-v-0d08f778]::-webkit-scrollbar{width:8px;height:8px}[data-v-0d08f778]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0d08f778]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0d08f778]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-0d08f778]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.container-wrapper[data-v-0d08f778]{position:relative;margin-bottom:5px}.container-wrapper .container-action[data-v-0d08f778]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999}.container-wrapper .container-action i[data-v-0d08f778]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.container-wrapper .drag-handler[data-v-0d08f778]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.container-wrapper .drag-handler i[data-v-0d08f778]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:move}.container-action[data-v-0d08f778] .svg-icon,.drag-handler[data-v-0d08f778] .svg-icon{margin-left:.1em;margin-right:.1em}.primary-color[data-v-28e126df]{color:#409eff}.background-opacity[data-v-28e126df]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-28e126df]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-28e126df]{margin-top:8px}.el-form-item--medium .el-radio[data-v-28e126df]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-28e126df]{margin-top:8px}.el-form-item--small .el-radio[data-v-28e126df]{line-height:32px!important}.el-form-item--small .el-rate[data-v-28e126df]{margin-top:6px}.el-form-item--mini .el-radio[data-v-28e126df]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-28e126df]{margin-top:4px}.el-card[data-v-28e126df]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-28e126df]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-28e126df],.auto-full-width.el-date-editor.el-input__inner[data-v-28e126df]{width:100%!important}[data-v-28e126df]::-webkit-scrollbar{width:8px;height:8px}[data-v-28e126df]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-28e126df]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-28e126df]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-28e126df]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.grid-cell[data-v-28e126df]{min-height:38px!important;padding:3px;outline:1px dashed #336699;position:relative}.grid-cell .form-widget-list[data-v-28e126df]{min-height:28px}.grid-cell .grid-col-action[data-v-28e126df]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999}.grid-cell .grid-col-action i[data-v-28e126df]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.grid-cell .grid-col-handler[data-v-28e126df]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.grid-cell .grid-col-handler i[data-v-28e126df]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:default}.grid-col-action[data-v-28e126df] .svg-icon,.grid-col-handler[data-v-28e126df] .svg-icon{margin-left:.1em;margin-right:.1em}.primary-color[data-v-6170ad3a]{color:#409eff}.background-opacity[data-v-6170ad3a]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-6170ad3a]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-6170ad3a]{margin-top:8px}.el-form-item--medium .el-radio[data-v-6170ad3a]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-6170ad3a]{margin-top:8px}.el-form-item--small .el-radio[data-v-6170ad3a]{line-height:32px!important}.el-form-item--small .el-rate[data-v-6170ad3a]{margin-top:6px}.el-form-item--mini .el-radio[data-v-6170ad3a]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-6170ad3a]{margin-top:4px}.el-card[data-v-6170ad3a]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-6170ad3a]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-6170ad3a],.auto-full-width.el-date-editor.el-input__inner[data-v-6170ad3a]{width:100%!important}[data-v-6170ad3a]::-webkit-scrollbar{width:8px;height:8px}[data-v-6170ad3a]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6170ad3a]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-6170ad3a]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-6170ad3a]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-row.grid-container[data-v-6170ad3a]{min-height:50px;outline:1px dashed #336699}.el-row.grid-container .form-widget-list[data-v-6170ad3a]{min-height:28px}.grid-container.selected[data-v-6170ad3a],.grid-cell.selected[data-v-6170ad3a]{outline:2px solid #409EFF!important}.primary-color[data-v-31c69563]{color:#409eff}.background-opacity[data-v-31c69563]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-31c69563]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-31c69563]{margin-top:8px}.el-form-item--medium .el-radio[data-v-31c69563]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-31c69563]{margin-top:8px}.el-form-item--small .el-radio[data-v-31c69563]{line-height:32px!important}.el-form-item--small .el-rate[data-v-31c69563]{margin-top:6px}.el-form-item--mini .el-radio[data-v-31c69563]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-31c69563]{margin-top:4px}.el-card[data-v-31c69563]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-31c69563]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-31c69563],.auto-full-width.el-date-editor.el-input__inner[data-v-31c69563]{width:100%!important}[data-v-31c69563]::-webkit-scrollbar{width:8px;height:8px}[data-v-31c69563]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-31c69563]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-31c69563]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-31c69563]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.sub-form-container[data-v-31c69563]{min-height:120px;padding:8px;border:1px dashed #336699;background-color:#fafafa;position:relative}.sub-form-container .sub-form-header[data-v-31c69563]{display:flex;align-items:center;margin-bottom:8px;padding-bottom:8px;border-bottom:1px solid #ddd;background-color:#f5f5f5;min-height:32px}.sub-form-container .sub-form-header .action-header-column[data-v-31c69563]{width:120px;padding:0 8px;font-weight:700;color:#666}.sub-form-container .sub-form-header .action-header-column .action-label[data-v-31c69563]{font-size:12px}.sub-form-container .sub-form-header .field-header-column[data-v-31c69563]{flex:1;padding:0 8px;font-weight:700;color:#333;min-width:120px}.sub-form-container .sub-form-header .field-header-column .custom-label[data-v-31c69563]{font-size:12px}.sub-form-container .sub-form-header .field-header-column.is-required .custom-label[data-v-31c69563]:before{content:"*";color:#f56c6c;margin-right:4px}.sub-form-container .sub-form-header .field-header-column.label-center[data-v-31c69563]{text-align:center}.sub-form-container .sub-form-header .field-header-column.label-left[data-v-31c69563]{text-align:left}.sub-form-container .sub-form-header .field-header-column.label-right[data-v-31c69563]{text-align:right}.sub-form-container .sub-form-body[data-v-31c69563]{min-height:40px;margin-bottom:8px}.sub-form-container .sub-form-body .sub-form-drag-area[data-v-31c69563]{display:flex;flex-wrap:wrap;gap:8px;min-height:40px;padding:8px;border:1px dashed #ccc;background-color:#fff;border-radius:4px}.sub-form-container .sub-form-body .sub-form-drag-area .sub-form-field-item[data-v-31c69563]{flex:1;min-width:120px;padding:4px;border:1px solid #e4e7ed;border-radius:4px;background-color:#f9f9f9}.sub-form-container .sub-form-body .sub-form-empty-tip[data-v-31c69563]{text-align:center;padding:20px;color:#999;font-style:italic;font-size:14px;border:1px dashed #ccc;background-color:#fff;border-radius:4px}.sub-form-container .sub-form-sample-row[data-v-31c69563]{display:flex;align-items:center;padding:8px 0;border-top:1px solid #ddd;background-color:#f9f9f9}.sub-form-container .sub-form-sample-row .sample-action-column[data-v-31c69563]{width:120px;padding:0 8px;text-align:center}.sub-form-container .sub-form-sample-row .sample-field-column[data-v-31c69563]{flex:1;padding:0 8px;min-width:120px;text-align:center}.sub-form-container .sub-form-sample-row .sample-field-column .sample-data[data-v-31c69563]{font-size:12px;color:#999;font-style:italic}.sub-form-container.selected[data-v-31c69563]{border:2px solid #409EFF!important}.ghost[data-v-31c69563]{opacity:.5}.primary-color[data-v-026c4dcc]{color:#409eff}.background-opacity[data-v-026c4dcc]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-026c4dcc]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-026c4dcc]{margin-top:8px}.el-form-item--medium .el-radio[data-v-026c4dcc]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-026c4dcc]{margin-top:8px}.el-form-item--small .el-radio[data-v-026c4dcc]{line-height:32px!important}.el-form-item--small .el-rate[data-v-026c4dcc]{margin-top:6px}.el-form-item--mini .el-radio[data-v-026c4dcc]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-026c4dcc]{margin-top:4px}.el-card[data-v-026c4dcc]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-026c4dcc]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-026c4dcc],.auto-full-width.el-date-editor.el-input__inner[data-v-026c4dcc]{width:100%!important}[data-v-026c4dcc]::-webkit-scrollbar{width:8px;height:8px}[data-v-026c4dcc]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-026c4dcc]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-026c4dcc]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-026c4dcc]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.tab-container[data-v-026c4dcc]{margin:2px}.tab-container .form-widget-list[data-v-026c4dcc],.tab-container[data-v-026c4dcc] .el-tabs__content{min-height:28px}.tab-container.selected[data-v-026c4dcc]{outline:2px solid #409EFF!important}.primary-color[data-v-e45f7f74]{color:#409eff}.background-opacity[data-v-e45f7f74]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-e45f7f74]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-e45f7f74]{margin-top:8px}.el-form-item--medium .el-radio[data-v-e45f7f74]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-e45f7f74]{margin-top:8px}.el-form-item--small .el-radio[data-v-e45f7f74]{line-height:32px!important}.el-form-item--small .el-rate[data-v-e45f7f74]{margin-top:6px}.el-form-item--mini .el-radio[data-v-e45f7f74]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-e45f7f74]{margin-top:4px}.el-card[data-v-e45f7f74]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-e45f7f74]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-e45f7f74],.auto-full-width.el-date-editor.el-input__inner[data-v-e45f7f74]{width:100%!important}[data-v-e45f7f74]::-webkit-scrollbar{width:8px;height:8px}[data-v-e45f7f74]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e45f7f74]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-e45f7f74]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-e45f7f74]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.table-cell[data-v-e45f7f74]{border:1px dashed #336699;display:table-cell;position:relative}.table-cell .draggable-div[data-v-e45f7f74]{position:relative;height:100%}.table-cell .form-widget-list[data-v-e45f7f74]{border:1px dashed #336699;margin:3px;min-height:28px}.table-cell .table-cell-action[data-v-e45f7f74]{position:absolute;bottom:0;right:-2px;height:28px;line-height:28px;background:#409EFF;z-index:999;display:flex;align-items:center}.table-cell .table-cell-action i[data-v-e45f7f74]{font-size:14px;color:#fff;margin:0 5px;cursor:pointer}.table-cell .table-cell-handler[data-v-e45f7f74]{position:absolute;top:-2px;left:-2px;height:22px;line-height:22px;background:#409EFF;z-index:9}.table-cell .table-cell-handler i[data-v-e45f7f74]{font-size:14px;font-style:normal;color:#fff;margin:4px;cursor:default}.table-cell-action[data-v-e45f7f74] .svg-icon,.table-cell-handler[data-v-e45f7f74] .svg-icon{margin-left:.1em;margin-right:.1em}.table-cell.selected[data-v-e45f7f74]{outline:2px solid #409EFF!important}.primary-color[data-v-4520ae21]{color:#409eff}.background-opacity[data-v-4520ae21]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-4520ae21]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-4520ae21]{margin-top:8px}.el-form-item--medium .el-radio[data-v-4520ae21]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-4520ae21]{margin-top:8px}.el-form-item--small .el-radio[data-v-4520ae21]{line-height:32px!important}.el-form-item--small .el-rate[data-v-4520ae21]{margin-top:6px}.el-form-item--mini .el-radio[data-v-4520ae21]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-4520ae21]{margin-top:4px}.el-card[data-v-4520ae21]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-4520ae21]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-4520ae21],.auto-full-width.el-date-editor.el-input__inner[data-v-4520ae21]{width:100%!important}[data-v-4520ae21]::-webkit-scrollbar{width:8px;height:8px}[data-v-4520ae21]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4520ae21]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4520ae21]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-4520ae21]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}div.table-container[data-v-4520ae21]{padding:5px;border:1px dashed #336699;box-sizing:border-box}div.table-container table.table-layout[data-v-4520ae21]{width:100%;text-align:center;border-collapse:collapse;table-layout:fixed}div.table-container table.table-layout[data-v-4520ae21] td{height:48px;border:1px dashed #336699;padding:3px;display:table-cell}div.table-container table.table-layout .form-widget-list[data-v-4520ae21]{border:1px dashed #336699;min-height:36px}.table-container.selected[data-v-4520ae21]{outline:2px solid #409EFF!important}.primary-color[data-v-4b9ac57a]{color:#409eff}.background-opacity[data-v-4b9ac57a]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-4b9ac57a]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-4b9ac57a]{margin-top:8px}.el-form-item--medium .el-radio[data-v-4b9ac57a]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-4b9ac57a]{margin-top:8px}.el-form-item--small .el-radio[data-v-4b9ac57a]{line-height:32px!important}.el-form-item--small .el-rate[data-v-4b9ac57a]{margin-top:6px}.el-form-item--mini .el-radio[data-v-4b9ac57a]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-4b9ac57a]{margin-top:4px}.el-card[data-v-4b9ac57a]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-4b9ac57a]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-4b9ac57a],.auto-full-width.el-date-editor.el-input__inner[data-v-4b9ac57a]{width:100%!important}[data-v-4b9ac57a]::-webkit-scrollbar{width:8px;height:8px}[data-v-4b9ac57a]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4b9ac57a]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-4b9ac57a]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-4b9ac57a]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.container-scroll-bar[data-v-4b9ac57a] .el-scrollbar__wrap,.container-scroll-bar[data-v-4b9ac57a] .el-scrollbar__view{overflow-x:hidden}.form-widget-container[data-v-4b9ac57a]{padding:10px;background:#f1f2f3;overflow-x:hidden;overflow-y:auto}.form-widget-container .el-form.full-height-width[data-v-4b9ac57a]{height:100%;padding:3px;background:#ffffff}.form-widget-container .el-form.full-height-width .no-widget-hint[data-v-4b9ac57a]{position:absolute;left:0;right:0;top:0;bottom:0;height:100%;display:flex;align-items:center;justify-content:center;text-align:center;font-size:18px;color:#999}.form-widget-container .el-form.full-height-width .form-widget-list[data-v-4b9ac57a]{min-height:calc(100vh - 124px);padding:3px}.form-widget-container .el-form.Pad-layout[data-v-4b9ac57a]{margin:0 auto;max-width:960px;border-radius:15px;box-shadow:0 0 1px 10px #495060}.form-widget-container .el-form.H5-layout[data-v-4b9ac57a]{margin:0 auto;width:420px;border-radius:15px;box-shadow:0 0 1px 10px #495060}.form-widget-container .el-form.widget-form[data-v-4b9ac57a] .el-row{padding:2px;border:1px dashed rgba(170,170,170,.75)}.grid-cell[data-v-4b9ac57a]{min-height:30px;border-right:1px dotted #cccccc}.fade-enter-active[data-v-4b9ac57a],.fade-leave-active[data-v-4b9ac57a]{transition:opacity .5s}.fade-enter[data-v-4b9ac57a],.fade-leave-to[data-v-4b9ac57a]{opacity:0}.primary-color[data-v-0da83bce]{color:#409eff}.background-opacity[data-v-0da83bce]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0da83bce]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0da83bce]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0da83bce]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0da83bce]{margin-top:8px}.el-form-item--small .el-radio[data-v-0da83bce]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0da83bce]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0da83bce]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0da83bce]{margin-top:4px}.el-card[data-v-0da83bce]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0da83bce]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0da83bce],.auto-full-width.el-date-editor.el-input__inner[data-v-0da83bce]{width:100%!important}[data-v-0da83bce]::-webkit-scrollbar{width:8px;height:8px}[data-v-0da83bce]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0da83bce]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0da83bce]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-0da83bce]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.el-container.main-container[data-v-0da83bce]{background:#fff}.el-container.main-container[data-v-0da83bce] aside{margin:0;padding:0;background:inherit}.el-container.full-height[data-v-0da83bce]{height:100%;overflow-y:hidden}.el-container.center-layout-container[data-v-0da83bce]{min-width:680px;border-left:2px dotted #EBEEF5;border-right:2px dotted #EBEEF5}.el-header.main-header[data-v-0da83bce]{border-bottom:2px dotted #EBEEF5;height:48px!important;line-height:48px!important;min-width:800px}div.main-title[data-v-0da83bce]{font-size:18px;color:#242424;display:flex;align-items:center;justify-items:center}div.main-title img[data-v-0da83bce]{cursor:pointer;width:36px;height:36px}div.main-title span.bold[data-v-0da83bce]{font-size:20px;font-weight:700;margin:0 6px}div.main-title span.version-span[data-v-0da83bce]{font-size:14px;color:#101f1c;margin-left:6px}.float-left[data-v-0da83bce]{float:left}.float-right[data-v-0da83bce]{float:right}.el-dropdown-link[data-v-0da83bce]{margin-right:12px;cursor:pointer}div.external-link[data-v-0da83bce]{display:flex;align-items:center}div.external-link a[data-v-0da83bce]{font-size:13px;text-decoration:none;margin-right:10px;color:#606266}.el-header.toolbar-header[data-v-0da83bce]{font-size:14px;border-bottom:1px dotted #CCCCCC;height:42px!important}.el-aside.side-panel[data-v-0da83bce]{width:260px!important;overflow-y:hidden}.el-main.form-widget-main[data-v-0da83bce]{padding:0;position:relative;overflow-x:hidden}.container-scroll-bar[data-v-0da83bce] .el-scrollbar__wrap,.container-scroll-bar[data-v-0da83bce] .el-scrollbar__view{overflow-x:hidden}@font-face{font-family:iconfont;src:url(data:font/ttf;base64,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) format("truetype")}.iconfont{font-family:iconfont!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-insertcolumn:before{content:"\e753"}.icon-insertrow:before{content:"\e754"}.icon-hide:before{content:"\e76b"}.icon-drag:before{content:"\e61d"}.primary-color[data-v-0fd62e9e]{color:#409eff}.background-opacity[data-v-0fd62e9e]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-0fd62e9e]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-0fd62e9e]{margin-top:8px}.el-form-item--medium .el-radio[data-v-0fd62e9e]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-0fd62e9e]{margin-top:8px}.el-form-item--small .el-radio[data-v-0fd62e9e]{line-height:32px!important}.el-form-item--small .el-rate[data-v-0fd62e9e]{margin-top:6px}.el-form-item--mini .el-radio[data-v-0fd62e9e]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-0fd62e9e]{margin-top:4px}.el-card[data-v-0fd62e9e]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-0fd62e9e]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-0fd62e9e],.auto-full-width.el-date-editor.el-input__inner[data-v-0fd62e9e]{width:100%!important}[data-v-0fd62e9e]::-webkit-scrollbar{width:8px;height:8px}[data-v-0fd62e9e]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0fd62e9e]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-0fd62e9e]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-0fd62e9e]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}.card-container.selected[data-v-0fd62e9e]{outline:2px solid #409EFF!important}.card-container[data-v-0fd62e9e]{margin:3px}.card-container .form-widget-list[data-v-0fd62e9e]{min-height:28px}[data-v-0fd62e9e] .el-card__header{padding:10px 12px}.folded[data-v-0fd62e9e] .el-card__body{display:none}.clear-fix[data-v-0fd62e9e]:before,.clear-fix[data-v-0fd62e9e]:after{display:table;content:""}.clear-fix[data-v-0fd62e9e]:after{clear:both}.float-right[data-v-0fd62e9e]{float:right}.primary-color[data-v-52275f84]{color:#409eff}.background-opacity[data-v-52275f84]{background:rgba(64,158,255,.6)}.form-widget-list .ghost[data-v-52275f84]{content:"";font-size:0;height:3px;box-sizing:border-box;background:#409EFF;border:2px solid #409EFF;outline-width:0;padding:0;overflow:hidden}.el-form-item .el-rate[data-v-52275f84]{margin-top:8px}.el-form-item--medium .el-radio[data-v-52275f84]{line-height:36px!important}.el-form-item--medium .el-rate[data-v-52275f84]{margin-top:8px}.el-form-item--small .el-radio[data-v-52275f84]{line-height:32px!important}.el-form-item--small .el-rate[data-v-52275f84]{margin-top:6px}.el-form-item--mini .el-radio[data-v-52275f84]{line-height:28px!important}.el-form-item--mini .el-rate[data-v-52275f84]{margin-top:4px}.el-card[data-v-52275f84]{margin-top:3px;margin-bottom:3px}input[type=password][data-v-52275f84]::-ms-reveal{display:none}.auto-full-width.el-date-editor.el-input[data-v-52275f84],.auto-full-width.el-date-editor.el-input__inner[data-v-52275f84]{width:100%!important}[data-v-52275f84]::-webkit-scrollbar{width:8px;height:8px}[data-v-52275f84]::-webkit-scrollbar-track{width:8px;background:rgba(16,31,28,.1);-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-52275f84]::-webkit-scrollbar-thumb{background-color:#101f1c59;background-clip:padding-box;min-height:28px;-webkit-border-radius:2em;-moz-border-radius:2em;border-radius:2em}[data-v-52275f84]::-webkit-scrollbar-thumb:hover{background-color:#101f1cd9}[data-v-52275f84]{scrollbar-color:#e5e5e5 #f7f7f9;scrollbar-width:thin}[data-v-52275f84] .el-card__header{padding:10px 12px}.folded[data-v-52275f84] .el-card__body{display:none}.clear-fix[data-v-52275f84]:before,.clear-fix[data-v-52275f84]:after{display:table;content:""}.clear-fix[data-v-52275f84]:after{clear:both}.float-right[data-v-52275f84]{float:right} diff --git a/lib/vform/designer.umd.js b/lib/vform/designer.umd.js new file mode 100644 index 0000000..3a1e877 --- /dev/null +++ b/lib/vform/designer.umd.js @@ -0,0 +1,1678 @@ +var qe=Object.defineProperty,Ne=Object.defineProperties;var Re=Object.getOwnPropertyDescriptors;var Oe=Object.getOwnPropertySymbols;var Fe=Object.prototype.hasOwnProperty,Ie=Object.prototype.propertyIsEnumerable;var Le=(t,d,e)=>d in t?qe(t,d,{enumerable:!0,configurable:!0,writable:!0,value:e}):t[d]=e,Se=(t,d)=>{for(var e in d||(d={}))Fe.call(d,e)&&Le(t,e,d[e]);if(Oe)for(var e of Oe(d))Ie.call(d,e)&&Le(t,e,d[e]);return t},ke=(t,d)=>Ne(t,Re(d));(function(t,d){typeof exports=="object"&&typeof module!="undefined"?module.exports=d(require("vue")):typeof define=="function"&&define.amd?define(["vue"],d):(t=typeof globalThis!="undefined"?globalThis:t||self,t.VFormDesigner=d(t.Vue))})(this,function(require$$0$1){"use strict";function _interopDefaultLegacy(t){return t&&typeof t=="object"&&"default"in t?t:{default:t}}var require$$0__default=_interopDefaultLegacy(require$$0$1),commonjsGlobal=typeof globalThis!="undefined"?globalThis:typeof window!="undefined"?window:typeof global!="undefined"?global:typeof self!="undefined"?self:{};function getDefaultExportFromCjs(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,"default")?t.default:t}var axios$2={exports:{}},bind$2=function(d,e){return function(){for(var m=new Array(arguments.length),g=0;g=0)return;p==="set-cookie"?e[p]=(e[p]?e[p]:[]).concat([m]):e[p]=e[p]?e[p]+", "+m:m}}),e},utils$7=utils$d,isURLSameOrigin$1=utils$7.isStandardBrowserEnv()?function(){var d=/(msie|trident)/i.test(navigator.userAgent),e=document.createElement("a"),p;function m(g){var s=g;return d&&(e.setAttribute("href",s),s=e.href),e.setAttribute("href",s),{href:e.href,protocol:e.protocol?e.protocol.replace(/:$/,""):"",host:e.host,search:e.search?e.search.replace(/^\?/,""):"",hash:e.hash?e.hash.replace(/^#/,""):"",hostname:e.hostname,port:e.port,pathname:e.pathname.charAt(0)==="/"?e.pathname:"/"+e.pathname}}return p=m(window.location.href),function(s){var c=utils$7.isString(s)?m(s):s;return c.protocol===p.protocol&&c.host===p.host}}():function(){return function(){return!0}}();function Cancel$3(t){this.message=t}Cancel$3.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},Cancel$3.prototype.__CANCEL__=!0;var Cancel_1=Cancel$3,utils$6=utils$d,settle=settle$1,cookies=cookies$1,buildURL$1=buildURL$2,buildFullPath=buildFullPath$1,parseHeaders=parseHeaders$1,isURLSameOrigin=isURLSameOrigin$1,createError=createError$2,defaults$5=defaults_1,Cancel$2=Cancel_1,xhr=function(d){return new Promise(function(p,m){var g=d.data,s=d.headers,c=d.responseType,i;function f(){d.cancelToken&&d.cancelToken.unsubscribe(i),d.signal&&d.signal.removeEventListener("abort",i)}utils$6.isFormData(g)&&delete s["Content-Type"];var n=new XMLHttpRequest;if(d.auth){var o=d.auth.username||"",r=d.auth.password?unescape(encodeURIComponent(d.auth.password)):"";s.Authorization="Basic "+btoa(o+":"+r)}var l=buildFullPath(d.baseURL,d.url);n.open(d.method.toUpperCase(),buildURL$1(l,d.params,d.paramsSerializer),!0),n.timeout=d.timeout;function a(){if(!!n){var h="getAllResponseHeaders"in n?parseHeaders(n.getAllResponseHeaders()):null,$=!c||c==="text"||c==="json"?n.responseText:n.response,v={data:$,status:n.status,statusText:n.statusText,headers:h,config:d,request:n};settle(function(y){p(y),f()},function(y){m(y),f()},v),n=null}}if("onloadend"in n?n.onloadend=a:n.onreadystatechange=function(){!n||n.readyState!==4||n.status===0&&!(n.responseURL&&n.responseURL.indexOf("file:")===0)||setTimeout(a)},n.onabort=function(){!n||(m(createError("Request aborted",d,"ECONNABORTED",n)),n=null)},n.onerror=function(){m(createError("Network Error",d,null,n)),n=null},n.ontimeout=function(){var $=d.timeout?"timeout of "+d.timeout+"ms exceeded":"timeout exceeded",v=d.transitional||defaults$5.transitional;d.timeoutErrorMessage&&($=d.timeoutErrorMessage),m(createError($,d,v.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",n)),n=null},utils$6.isStandardBrowserEnv()){var u=(d.withCredentials||isURLSameOrigin(l))&&d.xsrfCookieName?cookies.read(d.xsrfCookieName):void 0;u&&(s[d.xsrfHeaderName]=u)}"setRequestHeader"in n&&utils$6.forEach(s,function($,v){typeof g=="undefined"&&v.toLowerCase()==="content-type"?delete s[v]:n.setRequestHeader(v,$)}),utils$6.isUndefined(d.withCredentials)||(n.withCredentials=!!d.withCredentials),c&&c!=="json"&&(n.responseType=d.responseType),typeof d.onDownloadProgress=="function"&&n.addEventListener("progress",d.onDownloadProgress),typeof d.onUploadProgress=="function"&&n.upload&&n.upload.addEventListener("progress",d.onUploadProgress),(d.cancelToken||d.signal)&&(i=function(h){!n||(m(!h||h&&h.type?new Cancel$2("canceled"):h),n.abort(),n=null)},d.cancelToken&&d.cancelToken.subscribe(i),d.signal&&(d.signal.aborted?i():d.signal.addEventListener("abort",i))),g||(g=null),n.send(g)})},utils$5=utils$d,normalizeHeaderName=normalizeHeaderName$1,enhanceError=enhanceError$2,DEFAULT_CONTENT_TYPE={"Content-Type":"application/x-www-form-urlencoded"};function setContentTypeIfUnset(t,d){!utils$5.isUndefined(t)&&utils$5.isUndefined(t["Content-Type"])&&(t["Content-Type"]=d)}function getDefaultAdapter(){var t;return(typeof XMLHttpRequest!="undefined"||typeof process!="undefined"&&Object.prototype.toString.call(process)==="[object process]")&&(t=xhr),t}function stringifySafely(t,d,e){if(utils$5.isString(t))try{return(d||JSON.parse)(t),utils$5.trim(t)}catch(p){if(p.name!=="SyntaxError")throw p}return(e||JSON.stringify)(t)}var defaults$4={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:getDefaultAdapter(),transformRequest:[function(d,e){return normalizeHeaderName(e,"Accept"),normalizeHeaderName(e,"Content-Type"),utils$5.isFormData(d)||utils$5.isArrayBuffer(d)||utils$5.isBuffer(d)||utils$5.isStream(d)||utils$5.isFile(d)||utils$5.isBlob(d)?d:utils$5.isArrayBufferView(d)?d.buffer:utils$5.isURLSearchParams(d)?(setContentTypeIfUnset(e,"application/x-www-form-urlencoded;charset=utf-8"),d.toString()):utils$5.isObject(d)||e&&e["Content-Type"]==="application/json"?(setContentTypeIfUnset(e,"application/json"),stringifySafely(d)):d}],transformResponse:[function(d){var e=this.transitional||defaults$4.transitional,p=e&&e.silentJSONParsing,m=e&&e.forcedJSONParsing,g=!p&&this.responseType==="json";if(g||m&&utils$5.isString(d)&&d.length)try{return JSON.parse(d)}catch(s){if(g)throw s.name==="SyntaxError"?enhanceError(s,this,"E_JSON_PARSE"):s}return d}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(d){return d>=200&&d<300},headers:{common:{Accept:"application/json, text/plain, */*"}}};utils$5.forEach(["delete","get","head"],function(d){defaults$4.headers[d]={}}),utils$5.forEach(["post","put","patch"],function(d){defaults$4.headers[d]=utils$5.merge(DEFAULT_CONTENT_TYPE)});var defaults_1=defaults$4,utils$4=utils$d,defaults$3=defaults_1,transformData$1=function(d,e,p){var m=this||defaults$3;return utils$4.forEach(p,function(s){d=s.call(m,d,e)}),d},isCancel$1=function(d){return!!(d&&d.__CANCEL__)},utils$3=utils$d,transformData=transformData$1,isCancel=isCancel$1,defaults$2=defaults_1,Cancel$1=Cancel_1;function throwIfCancellationRequested(t){if(t.cancelToken&&t.cancelToken.throwIfRequested(),t.signal&&t.signal.aborted)throw new Cancel$1("canceled")}var dispatchRequest$1=function(d){throwIfCancellationRequested(d),d.headers=d.headers||{},d.data=transformData.call(d,d.data,d.headers,d.transformRequest),d.headers=utils$3.merge(d.headers.common||{},d.headers[d.method]||{},d.headers),utils$3.forEach(["delete","get","head","post","put","patch","common"],function(m){delete d.headers[m]});var e=d.adapter||defaults$2.adapter;return e(d).then(function(m){return throwIfCancellationRequested(d),m.data=transformData.call(d,m.data,m.headers,d.transformResponse),m},function(m){return isCancel(m)||(throwIfCancellationRequested(d),m&&m.response&&(m.response.data=transformData.call(d,m.response.data,m.response.headers,d.transformResponse))),Promise.reject(m)})},utils$2=utils$d,mergeConfig$2=function(d,e){e=e||{};var p={};function m(n,o){return utils$2.isPlainObject(n)&&utils$2.isPlainObject(o)?utils$2.merge(n,o):utils$2.isPlainObject(o)?utils$2.merge({},o):utils$2.isArray(o)?o.slice():o}function g(n){if(utils$2.isUndefined(e[n])){if(!utils$2.isUndefined(d[n]))return m(void 0,d[n])}else return m(d[n],e[n])}function s(n){if(!utils$2.isUndefined(e[n]))return m(void 0,e[n])}function c(n){if(utils$2.isUndefined(e[n])){if(!utils$2.isUndefined(d[n]))return m(void 0,d[n])}else return m(void 0,e[n])}function i(n){if(n in e)return m(d[n],e[n]);if(n in d)return m(void 0,d[n])}var f={url:s,method:s,data:s,baseURL:c,transformRequest:c,transformResponse:c,paramsSerializer:c,timeout:c,timeoutMessage:c,withCredentials:c,adapter:c,responseType:c,xsrfCookieName:c,xsrfHeaderName:c,onUploadProgress:c,onDownloadProgress:c,decompress:c,maxContentLength:c,maxBodyLength:c,transport:c,httpAgent:c,httpsAgent:c,cancelToken:c,socketPath:c,responseEncoding:c,validateStatus:i};return utils$2.forEach(Object.keys(d).concat(Object.keys(e)),function(o){var r=f[o]||g,l=r(o);utils$2.isUndefined(l)&&r!==i||(p[o]=l)}),p},data={version:"0.24.0"},VERSION=data.version,validators$1={};["object","boolean","number","function","string","symbol"].forEach(function(t,d){validators$1[t]=function(p){return typeof p===t||"a"+(d<1?"n ":" ")+t}});var deprecatedWarnings={};validators$1.transitional=function(d,e,p){function m(g,s){return"[Axios v"+VERSION+"] Transitional option '"+g+"'"+s+(p?". "+p:"")}return function(g,s,c){if(d===!1)throw new Error(m(s," has been removed"+(e?" in "+e:"")));return e&&!deprecatedWarnings[s]&&(deprecatedWarnings[s]=!0,console.warn(m(s," has been deprecated since v"+e+" and will be removed in the near future"))),d?d(g,s,c):!0}};function assertOptions(t,d,e){if(typeof t!="object")throw new TypeError("options must be an object");for(var p=Object.keys(t),m=p.length;m-- >0;){var g=p[m],s=d[g];if(s){var c=t[g],i=c===void 0||s(c,g,t);if(i!==!0)throw new TypeError("option "+g+" must be "+i);continue}if(e!==!0)throw Error("Unknown option "+g)}}var validator$1={assertOptions,validators:validators$1},utils$1=utils$d,buildURL=buildURL$2,InterceptorManager=InterceptorManager_1,dispatchRequest=dispatchRequest$1,mergeConfig$1=mergeConfig$2,validator=validator$1,validators=validator.validators;function Axios$1(t){this.defaults=t,this.interceptors={request:new InterceptorManager,response:new InterceptorManager}}Axios$1.prototype.request=function(d){typeof d=="string"?(d=arguments[1]||{},d.url=arguments[0]):d=d||{},d=mergeConfig$1(this.defaults,d),d.method?d.method=d.method.toLowerCase():this.defaults.method?d.method=this.defaults.method.toLowerCase():d.method="get";var e=d.transitional;e!==void 0&&validator.assertOptions(e,{silentJSONParsing:validators.transitional(validators.boolean),forcedJSONParsing:validators.transitional(validators.boolean),clarifyTimeoutError:validators.transitional(validators.boolean)},!1);var p=[],m=!0;this.interceptors.request.forEach(function(r){typeof r.runWhen=="function"&&r.runWhen(d)===!1||(m=m&&r.synchronous,p.unshift(r.fulfilled,r.rejected))});var g=[];this.interceptors.response.forEach(function(r){g.push(r.fulfilled,r.rejected)});var s;if(!m){var c=[dispatchRequest,void 0];for(Array.prototype.unshift.apply(c,p),c=c.concat(g),s=Promise.resolve(d);c.length;)s=s.then(c.shift(),c.shift());return s}for(var i=d;p.length;){var f=p.shift(),n=p.shift();try{i=f(i)}catch(o){n(o);break}}try{s=dispatchRequest(i)}catch(o){return Promise.reject(o)}for(;g.length;)s=s.then(g.shift(),g.shift());return s},Axios$1.prototype.getUri=function(d){return d=mergeConfig$1(this.defaults,d),buildURL(d.url,d.params,d.paramsSerializer).replace(/^\?/,"")},utils$1.forEach(["delete","get","head","options"],function(d){Axios$1.prototype[d]=function(e,p){return this.request(mergeConfig$1(p||{},{method:d,url:e,data:(p||{}).data}))}}),utils$1.forEach(["post","put","patch"],function(d){Axios$1.prototype[d]=function(e,p,m){return this.request(mergeConfig$1(m||{},{method:d,url:e,data:p}))}});var Axios_1=Axios$1,Cancel=Cancel_1;function CancelToken(t){if(typeof t!="function")throw new TypeError("executor must be a function.");var d;this.promise=new Promise(function(m){d=m});var e=this;this.promise.then(function(p){if(!!e._listeners){var m,g=e._listeners.length;for(m=0;mhtml text
      ","
      ",i.escapeHTML(r(M.snippet))].join(""))},id:"snippetCompleter"},a=[l,n,o];p.setCompleters=function(M){a.length=0,M&&a.push.apply(a,M)},p.addCompleter=function(M){a.push(M)},p.textCompleter=n,p.keyWordCompleter=o,p.snippetCompleter=l;var u={name:"expandSnippet",exec:function(M){return g.expandWithTab(M)},bindKey:"Tab"},h=function(M,O){$(O.session.$mode)},$=function(M){typeof M=="string"&&(M=c.$modes[M]),!!M&&(g.files||(g.files={}),v(M.$id,M.snippetFileId),M.modes&&M.modes.forEach($))},v=function(M,O){!O||!M||g.files[M]||(g.files[M]={},c.loadModule(O,function(k){!k||(g.files[M]=k,!k.snippets&&k.snippetText&&(k.snippets=g.parseSnippetFile(k.snippetText)),g.register(k.snippets||[],k.scope),k.includeScopes&&(g.snippetMap[k.scope].includeScopes=k.includeScopes,k.includeScopes.forEach(function(A){$("ace/mode/"+A)})))}))},w=function(M){var O=M.editor,k=O.completer&&O.completer.activated;if(M.command.name==="backspace")k&&!f.getCompletionPrefix(O)&&O.completer.detach();else if(M.command.name==="insertstring"&&!k){y=M;var A=M.editor.$liveAutocompletionDelay;A?_.delay(A):b(M)}},y,_=i.delayedCall(function(){b(y)},0),b=function(M){var O=M.editor,k=f.getCompletionPrefix(O),A=M.args,T=f.triggerAutocomplete(O,A);if(k&&k.length>=O.$liveAutocompletionThreshold||T){var E=s.for(O);E.autoShown=!0,E.showPopup(O)}},S=e("../editor").Editor;e("../config").defineOptions(S.prototype,"editor",{enableBasicAutocompletion:{set:function(M){M?(this.completers||(this.completers=Array.isArray(M)?M:a),this.commands.addCommand(s.startCommand)):this.commands.removeCommand(s.startCommand)},value:!1},enableLiveAutocompletion:{set:function(M){M?(this.completers||(this.completers=Array.isArray(M)?M:a),this.commands.on("afterExec",w)):this.commands.off("afterExec",w)},value:!1},liveAutocompletionDelay:{initialValue:0},liveAutocompletionThreshold:{initialValue:0},enableSnippets:{set:function(M){M?(this.commands.addCommand(u),this.on("changeMode",h),h(null,this)):(this.commands.removeCommand(u),this.off("changeMode",h))},value:!1}})}),function(){ace.require(["ace/ext/language_tools"],function(e){t&&(t.exports=e)})}()})(extLanguage_tools);const VARIANT_FORM_VERSION="3.0.10",MOCK_CASE_URL="https://ks3-cn-beijing.ksyuncs.com/vform-static/vcase/",ACE_BASE_PATH="https://ks3-cn-beijing.ksyun.com/vform2021/ace-mini",BEAUTIFIER_PATH="https://ks3-cn-beijing.ksyun.com/vform2021/js-beautify/1.14.0/beautifier.min.js";var index_vue_vue_type_style_index_0_scoped_true_lang$4="";const _sfc_main$2t={name:"CodeEditor",props:{modelValue:{type:String},readonly:{type:Boolean,default:!1},mode:{type:String,default:"javascript"},userWorker:{type:Boolean,default:!0}},emits:["update:modelValue"],mounted(){ace$1.config.set("basePath",ACE_BASE_PATH),this.addAutoCompletion(ace$1),this.aceEditor=ace$1.edit(this.$refs.ace,{maxLines:20,minLines:5,fontSize:12,theme:this.themePath,mode:this.modePath,tabSize:2,readOnly:this.readonly,highlightActiveLine:!0,value:this.codeValue}),this.aceEditor.setOptions({enableBasicAutocompletion:!0,enableSnippets:!0,enableLiveAutocompletion:!0}),this.mode==="json"?this.setJsonMode():this.mode==="css"&&this.setCssMode(),this.userWorker||this.aceEditor.getSession().setUseWorker(!1),this.aceEditor.getSession().on("change",t=>{this.$emit("update:modelValue",this.aceEditor.getValue())})},data(){return{aceEditor:null,themePath:"ace/theme/sqlserver",modePath:"ace/mode/javascript",codeValue:this.modelValue}},watch:{},methods:{addAutoCompletion(t){let d=[{meta:"\u83B7\u53D6VFormRender\u7EC4\u4EF6",caption:"getFormRef",value:"this.getFormRef()",score:1},{meta:"\u83B7\u53D6\u5BB9\u5668\u6216\u5B57\u6BB5\u7EC4\u4EF6",caption:"getWidgetRef",value:"this.getWidgetRef(widgetName, showError)",score:1},{meta:"\u8BBE\u7F6E\u662F\u5426\u9690\u85CF\u5BB9\u5668",caption:"setHidden",value:"this.setHidden(true)",score:1},{meta:"\u8BBE\u7F6E\u662F\u5426\u7981\u7528\u5BB9\u5668\uFF08\u5305\u542B\u5BB9\u5668\u5185\u90E8\u7EC4\u4EF6\uFF09",caption:"setDisabled",value:"this.setDisabled(true)",score:1},{meta:"\u83B7\u53D6\u5F53\u524D\u6FC0\u6D3BTab\u9875\u7B7E\u7D22\u5F15",caption:"getActiveTabIndex",value:"this.getActiveTabIndex()",score:1},{meta:"\u6FC0\u6D3BTab\u9875\u7B7E\u6307\u5B9A\u9875",caption:"activeTab",value:"this.activeTab(tabIndex)",score:1},{meta:"\u7981\u7528Tab\u9875\u7B7E\u6307\u5B9A\u9875",caption:"disableTab",value:"this.disableTab(tabIndex)",score:1},{meta:"\u6062\u590DTab\u9875\u7B7E\u6307\u5B9A\u9875",caption:"enableTab",value:"this.enableTab(tabIndex)",score:1},{meta:"\u9690\u85CFTab\u9875\u7B7E\u6307\u5B9A\u9875",caption:"hideTab",value:"this.hideTab(tabIndex)",score:1},{meta:"\u663E\u793ATab\u9875\u7B7E\u6307\u5B9A\u9875",caption:"showTab",value:"this.showTab(tabIndex)",score:1},{meta:"\u7981\u7528\u5B50\u8868\u5355\u6307\u5B9A\u884C",caption:"disableSubFormRow",value:"this.disableSubFormRow(rowIndex)",score:1},{meta:"\u6062\u590D\u5B50\u8868\u5355\u6307\u5B9A\u884C",caption:"enableSubFormRow",value:"this.enableSubFormRow(rowIndex)",score:1},{meta:"\u7981\u7528\u5B50\u8868\u5355",caption:"disableSubForm",value:"this.disableSubForm()",score:1},{meta:"\u6062\u590D\u5B50\u8868\u5355",caption:"enableSubForm",value:"this.enableSubForm()",score:1},{meta:"\u91CD\u7F6E\u5B50\u8868\u5355\u6570\u636E\u4E3A\u7A7A",caption:"resetSubForm",value:"this.resetSubForm()",score:1},{meta:"\u83B7\u53D6\u5B50\u8868\u5355\u6570\u636E",caption:"getSubFormValues",value:"this.getSubFormValues()",score:1},{meta:"\u8BBE\u7F6E\u5B50\u8868\u5355\u6570\u636E",caption:"setSubFormValues",value:"this.setSubFormValues()",score:1}];t.require("ace/ext/language_tools").addCompleter({identifierRegexps:[/[a-zA-Z_0-9\$\.\u00A2-\uFFFF]/],getCompletions:function(p,m,g,s,c){return console.log(s),s.length===0?c(null,[]):s==="this."?c(null,d.map(i=>({caption:s+i.caption,value:i.value,meta:i.meta,score:i.score}))):c(null,d)}})},setJsonMode(){this.aceEditor.getSession().setMode("ace/mode/json")},setCssMode(){this.aceEditor.getSession().setMode("ace/mode/css")},getEditorAnnotations(){return this.aceEditor.getSession().getAnnotations()},setValue(t){this.aceEditor.getSession().setValue(t)}}},_hoisted_1$k={class:"ace-container"},_hoisted_2$b={class:"ace-editor",ref:"ace"};function _sfc_render$2t(t,d,e,p,m,g){return require$$0$1.openBlock(),require$$0$1.createElementBlock("div",_hoisted_1$k,[require$$0$1.createElementVNode("div",_hoisted_2$b,null,512)])}var CodeEditor=_export_sfc(_sfc_main$2t,[["render",_sfc_render$2t],["__scopeId","data-v-71442268"]]);const generateCode=function(t,d="vue"){let e=JSON.stringify(t);return d==="html"?` + + + + + VForm Demo + + + + + + +
      + + + Submit +
      + + diff --git a/src/annotation/Api.ts b/src/annotation/Api.ts new file mode 100644 index 0000000..3079e65 --- /dev/null +++ b/src/annotation/Api.ts @@ -0,0 +1,60 @@ + +import request, { download } from '@/utils/request' +type Nullish = { + [P in keyof T]: T[P] | null; +}; +export type RequestPageType = Nullish & { + pageNum: number, + pageSize: number, + params: { [key: string]: string } +} +export type ResponseResultType = { + code: number + data: T + msg: string +} +export type ResponseTableType = { + code: number + msg: string + rows: Array + total: number +} +export type ApiServiceType = { + list: (query: RequestPageType) => Promise> + get: (id: number | string) => Promise> + add: (data: T) => Promise> + update: (data: T) => Promise> + del: (id: number | string | Array) => Promise> + export: (query: RequestPageType) => Promise +} +export function Page(target: new (...args: any[]) => T): RequestPageType { + const o: Nullish = new target(); + for (const key in o) { + o[key] = null + } + return { + pageNum: 1, + pageSize: 10, + params: {}, + ...o + }; +} + +export function ApiService(target: new (...args: any[]) => T): ApiServiceType { + return target.prototype.api +} + +export default function Api(url: string) { + const serviceName = url.split('/').pop(); + return function (target: any) { + const api: ApiServiceType = { + list: (query: RequestPageType) => request({ url: url + '/list', method: 'get', params: query }), + get: (id: number | string) => request({ url: url + '/' + id, method: 'get' }), + add: (data: T) => request({ url, method: 'post', data }), + update: (data: T) => request({ url, method: 'put', data }), + del: (id: number | string | Array) => request({ url: url + '/' + id, method: 'delete' }), + export: (query: RequestPageType) => download(url + '/export', query, `${serviceName}_${new Date().getTime()}.xlsx`) + }; + target.prototype.api = api; + } +} diff --git a/src/annotation/Schema.ts b/src/annotation/Schema.ts new file mode 100644 index 0000000..ed09171 --- /dev/null +++ b/src/annotation/Schema.ts @@ -0,0 +1,48 @@ +import { Component } from "vue"; + +export default function Schema(name: string): (target: any, attr: any) => void; +export default function Schema(options: SchemaType): (target: any, attr: any) => void; +export default function Schema(value: SchemaType | string) { + return function (target: any, attr: any) { + if (target.schema == undefined) target.schema = {} + if (typeof value === 'string') target.schema[attr] = { name: value, components: {}, attr }; + else { + target.schema[attr] = value; + } + } +} +export interface SchemaType { + name: string, + attr: keyof T & string, + components: { [key: string]: (...args: any[]) => Component } +} +export function getSchema(target: T | (new (...args: any[]) => T), prop: P): SchemaType { + const constructor = typeof target === 'function' ? target : target.constructor + const schemaObj = constructor.prototype.schema + if (!!schemaObj) { + const schema: SchemaType = schemaObj[prop] + if (!!schema) return schema + else throw new Error(`${constructor.name}'s ${prop} have not @schema`) + } else { + throw new Error(`${constructor.name} have not @schema`) + } +} + +export function getSchemas(target: T | (new (...args: any[]) => T), ...props: P[]): SchemaType[] { + const constructor = typeof target === 'function' ? target : target.constructor + const schemaObj: { [key: string]: SchemaType } = constructor.prototype.schema + if (!!schemaObj) { + if (props.length > 0) { + return props.map((prop) => schemaObj[prop]).filter(schema => !!schema) + } else { + return Object.values(schemaObj) + } + } else { + throw new Error(`${constructor.name} have not @schema`) + } +} + +export function getSchemaName(target: any, prop: string): string { + const schema = getSchema(target, prop) + return schema.name +} diff --git a/src/annotation/SchemaComponent.ts b/src/annotation/SchemaComponent.ts new file mode 100644 index 0000000..04225dd --- /dev/null +++ b/src/annotation/SchemaComponent.ts @@ -0,0 +1,27 @@ +import { Component } from "vue"; +import { getSchema, getSchemas } from "./Schema"; + +export default function SchemaComponent(value: string, component: Component) { + return function (target: any, attr: any) { + target.schema[attr].components[value] = component + } +} + + +export function getSchemaComponent(target: any, prop: string, elName: string, ...args: any[]): Component { + const schema = getSchema(target, prop) + const component = schema.components[elName] + return component(args) +} + +/** + * 获取某个类的所有标签名为elName的组件 + * @param target 类 + * @param elName 标签名 + * @returns 组件列表 + */ +export function getSchemaComponents(target: any, elName: string): { name: string, attr: string, component: (...args: any[]) => Component }[] { + const schema = getSchemas(target) + return schema.map(s => ({ name: s.name, component: s.components[elName], attr: s.attr })).filter(s => s.component) +} + diff --git a/src/api/file/info.js b/src/api/file/info.js new file mode 100644 index 0000000..51458b1 --- /dev/null +++ b/src/api/file/info.js @@ -0,0 +1,130 @@ +import request from '@/utils/request' +import { getToken } from '@/utils/auth'; + +// 查询文件信息列表 +export function listInfo(query) { + return request({ + url: '/file/info/list', + method: 'get', + params: query + }) +} + +// 查询文件信息详细 +export function getInfo(fileId) { + return request({ + url: '/file/info/' + fileId, + method: 'get' + }) +} + +// 新增文件信息 +export function addInfo(data) { + return request({ + url: '/file/info', + method: 'post', + data: data + }) +} + +// 修改文件信息 +export function updateInfo(data) { + return request({ + url: '/file/info', + method: 'put', + data: data + }) +} + +// 删除文件信息 +export function delInfo(fileId) { + return request({ + url: '/file/info/' + fileId, + method: 'delete' + }) +} + +// 统一上传接口 +export function uploadFileUnified({ storageType, clientName, file }) { + const formData = new FormData(); + formData.append('file', file); + return request({ + url: `/file/${storageType}/${clientName}/upload`, + method: 'post', + headers: { 'Content-Type': 'multipart/form-data', Authorization: 'Bearer ' + getToken() }, + data: formData + }); +} + +// 统一下载接口(返回文件流) +export function downloadFileUnified({ storageType, clientName, filePath }) { + return request({ + url: `/file/${storageType}/${clientName}/download`, + method: 'get', + params: { filePath }, + responseType: 'blob', + headers: { Authorization: 'Bearer ' + getToken() } + }); +} + +// 获取所有可用存储渠道及其client列表 +export function getClientList() { + return request({ + url: '/file/client-list', + method: 'get' + }); +} + +/** + * 初始化分片上传 + */ +export function initMultipartUpload(params) { + return request({ + url: '/file/initUpload', + method: 'post', + params: { + fileName: params.fileName, + fileSize: params.fileSize, + } + }); +} + +/** + * 上传文件分片 + */ +export function uploadFileChunk(uploadId, filePath, partNumber, chunk) { + const formData = new FormData(); + formData.append('chunk', chunk); + return request({ + url: '/file/uploadChunk', + method: 'post', + params: { + uploadId, + filePath, + partNumber + }, + data: formData, + headers: { + 'Content-Type': 'multipart/form-data', + repeatSubmit: false + } + }); +} + +/** + * 完成分片上传 + */ +export function completeMultipartUpload(params) { + const { uploadId, filePath, fileSize, fileName, partETags } = params; + return request({ + url: '/file/completeUpload', + method: 'post', + params: { + uploadId, + filePath, + fileSize, + fileName + }, + data: partETags + }); +} diff --git a/src/api/flowable/definition.js b/src/api/flowable/definition.js new file mode 100644 index 0000000..5fd93ff --- /dev/null +++ b/src/api/flowable/definition.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +// 查询流程定义列表 +export function listDefinition(query) { + return request({ + url: '/flowable/definition/list', + method: 'get', + params: query + }) +} + +// 部署流程实例 +export function definitionStart(procDefId, data) { + return request({ + url: '/flowable/definition/start/' + procDefId, + method: 'post', + data: data + }) +} + +// 获取流程变量 +export function getProcessVariables(taskId) { + return request({ + url: '/flowable/task/processVariables/' + taskId, + method: 'get' + }) +} + +// 激活/挂起流程 +export function updateState(params) { + return request({ + url: '/flowable/definition/updateState', + method: 'put', + params: params + }) +} + +// 指定流程办理人员列表 +export function userList(query) { + return request({ + url: '/flowable/definition/userList', + method: 'get', + params: query + }) +} + +// 指定流程办理组列表 +export function roleList(query) { + return request({ + url: '/flowable/definition/roleList', + method: 'get', + params: query + }) +} + +// 指定流程表达式 +export function expList(query) { + return request({ + url: '/flowable/definition/expList', + method: 'get', + params: query + }) +} + +// 读取xml文件 +export function readXml(deployId) { + return request({ + url: '/flowable/definition/readXml/' + deployId, + method: 'get' + }) +} + +// 读取image文件 +export function readImage(deployId) { + return request({ + url: '/flowable/definition/readImage/' + deployId, + method: 'get' + }) +} + +// 获取流程执行节点 +export function getFlowViewer(procInsId, executionId) { + return request({ + url: '/flowable/task/flowViewer/' + procInsId + '/' + executionId, + method: 'get' + }) +} + +// 流程节点数据 +export function flowXmlAndNode(query) { + return request({ + url: '/flowable/task/flowXmlAndNode', + method: 'get', + params: query + }) +} + +// 读取xml文件 +export function saveXml(data) { + return request({ + url: '/flowable/definition/save', + method: 'post', + data: data + }) +} + +// 删除流程定义 +export function delDeployment(deployId) { + return request({ + url: '/flowable/definition/' + deployId, + method: 'delete', + }) +} diff --git a/src/api/flowable/expression.js b/src/api/flowable/expression.js new file mode 100644 index 0000000..4a6ed96 --- /dev/null +++ b/src/api/flowable/expression.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程达式列表 +export function listExpression(query) { + return request({ + url: '/system/expression/list', + method: 'get', + params: query + }) +} + +// 查询流程达式详细 +export function getExpression(id) { + return request({ + url: '/system/expression/' + id, + method: 'get' + }) +} + +// 新增流程达式 +export function addExpression(data) { + return request({ + url: '/system/expression', + method: 'post', + data: data + }) +} + +// 修改流程达式 +export function updateExpression(data) { + return request({ + url: '/system/expression', + method: 'put', + data: data + }) +} + +// 删除流程达式 +export function delExpression(id) { + return request({ + url: '/system/expression/' + id, + method: 'delete' + }) +} diff --git a/src/api/flowable/finished.js b/src/api/flowable/finished.js new file mode 100644 index 0000000..f24cc1b --- /dev/null +++ b/src/api/flowable/finished.js @@ -0,0 +1,58 @@ +import request from '@/utils/request' + +// 查询已办任务列表 +export function finishedList(query) { + return request({ + url: '/flowable/task/finishedList', + method: 'get', + params: query + }) +} + +// 任务流转记录 +export function flowRecord(query) { + return request({ + url: '/flowable/task/flowRecord', + method: 'get', + params: query + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} + +// 删除流程定义 +export function delDeployment(id) { + return request({ + url: '/flowable/instance/delete/' + id, + method: 'delete' + }) +} + +// 撤回流程 +export function revokeProcess(data) { + return request({ + url: '/flowable/task/revokeProcess', + method: 'post', + data: data + }) +} + +// 导入流程文件 +export function importDeployment(name, category, file) { + const formData = new FormData(); + if (name) formData.append('name', name); + if (category) formData.append('category', category); + formData.append('file', file); + + return request({ + url: '/flowable/definition/import', + method: 'post', + data: formData + }); +} diff --git a/src/api/flowable/form.js b/src/api/flowable/form.js new file mode 100644 index 0000000..46b74fd --- /dev/null +++ b/src/api/flowable/form.js @@ -0,0 +1,68 @@ +import request from '@/utils/request' + +// 查询流程表单列表 +export function listForm(query) { + return request({ + url: '/form/template/list', + method: 'get', + params: query + }) +} +export function listAllForm(query) { + return request({ + url: '/form/template/list', + method: 'get', + params: query + }) +} + +// 查询流程表单详细 +export function getForm(formId) { + return request({ + url: '/form/template/' + formId, + method: 'get' + }) +} + +// 新增流程表单 +export function addForm(data) { + return request({ + url: '/flowable/form', + method: 'post', + data: data + }) +} + +// 修改流程表单 +export function updateForm(data) { + return request({ + url: '/flowable/form', + method: 'put', + data: data + }) +} +// 挂载表单 +export function addDeployForm(data) { + return request({ + url: '/flowable/definition/addDeployForm', + method: 'post', + data: data + }) +} + +// 删除流程表单 +export function delForm(formId) { + return request({ + url: '/form/template/' + formId, + method: 'delete' + }) +} + +// 导出流程表单 +export function exportForm(query) { + return request({ + url: '/form/template/export', + method: 'get', + params: query + }) +} diff --git a/src/api/flowable/listener.js b/src/api/flowable/listener.js new file mode 100644 index 0000000..cec029c --- /dev/null +++ b/src/api/flowable/listener.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程监听列表 +export function listListener(query) { + return request({ + url: '/system/listener/list', + method: 'get', + params: query + }) +} + +// 查询流程监听详细 +export function getListener(id) { + return request({ + url: '/system/listener/' + id, + method: 'get' + }) +} + +// 新增流程监听 +export function addListener(data) { + return request({ + url: '/system/listener', + method: 'post', + data: data + }) +} + +// 修改流程监听 +export function updateListener(data) { + return request({ + url: '/system/listener', + method: 'put', + data: data + }) +} + +// 删除流程监听 +export function delListener(id) { + return request({ + url: '/system/listener/' + id, + method: 'delete' + }) +} diff --git a/src/api/flowable/process.js b/src/api/flowable/process.js new file mode 100644 index 0000000..950d2a7 --- /dev/null +++ b/src/api/flowable/process.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +// 我的发起的流程 +export function myProcessList(query) { + return request({ + url: '/flowable/task/myProcess', + method: 'get', + params: query + }) +} + +export function flowFormData(query) { + return request({ + url: '/flowable/task/flowFormData', + method: 'get', + params: query + }) +} + +export function flowTaskInfo(query) { + return request({ + url: '/flowable/task/flowTaskInfo', + method: 'get', + params: query + }) +} + +// 完成任务 +export function complete(data) { + return request({ + url: '/flowable/task/complete', + method: 'post', + data: data + }) +} + +// 取消申请 +export function stopProcess(data) { + return request({ + url: '/flowable/task/stopProcess', + method: 'post', + data: data + }) +} + +// 驳回任务 +export function rejectTask(data) { + return request({ + url: '/flowable/task/reject', + method: 'post', + data: data + }) +} + +// 可退回任务列表 +export function returnList(data) { + return request({ + url: '/flowable/task/returnList', + method: 'post', + data: data + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} diff --git a/src/api/flowable/todo.js b/src/api/flowable/todo.js new file mode 100644 index 0000000..8369dbe --- /dev/null +++ b/src/api/flowable/todo.js @@ -0,0 +1,101 @@ +import request from '@/utils/request'; + +// 查询待办任务列表 +export function todoList(query) { + return request({ + url: '/flowable/task/todoList', + method: 'get', + params: query + }) +} + +// 完成任务 +export function complete(data) { + return request({ + url: '/flowable/task/complete', + method: 'post', + data: data + }) +} + +// 委派任务 +export function delegate(data) { + return request({ + url: '/flowable/task/delegate', + method: 'post', + data: data + }) +} + +// 退回任务 +export function returnTask(data) { + return request({ + url: '/flowable/task/return', + method: 'post', + data: data + }) +} + +// 驳回任务 +export function rejectTask(data) { + return request({ + url: '/flowable/task/reject', + method: 'post', + data: data + }) +} + +// 可退回任务列表 +export function returnList(data) { + return request({ + url: '/flowable/task/returnList', + method: 'post', + data: data + }) +} + +// 下一节点 +export function getNextFlowNode(data) { + return request({ + url: '/flowable/task/nextFlowNode', + method: 'post', + data: data + }) +} + +// 下一节点 +export function getNextFlowNodeByStart(data) { + return request({ + url: '/flowable/task/nextFlowNodeByStart', + method: 'post', + data: data + }) +} + +// 部署流程实例 +export function deployStart(deployId) { + return request({ + url: '/flowable/process/startFlow/' + deployId, + method: 'get', + }) +} + +// 删除流程定义 +export function delDeployment(id) { + return request({ + url: '/flowable/task/delete', + data: { + taskId: id + }, + method: 'delete' + }) +} + +// 流程节点表单 +export function flowTaskForm(query) { + return request({ + url: '/flowable/task/flowTaskForm', + method: 'get', + params: query + }) +} diff --git a/src/api/form/data.js b/src/api/form/data.js new file mode 100644 index 0000000..b012682 --- /dev/null +++ b/src/api/form/data.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询单数据列表 +export function listData(query) { + return request({ + url: '/form/data/list', + method: 'get', + params: query + }) +} + +// 查询单数据详细 +export function getData(dataId) { + return request({ + url: '/form/data/' + dataId, + method: 'get' + }) +} + +// 新增单数据 +export function addData(data) { + return request({ + url: '/form/data', + method: 'post', + data: data + }) +} + +// 修改单数据 +export function updateData(data) { + return request({ + url: '/form/data', + method: 'put', + data: data + }) +} + +// 删除单数据 +export function delData(dataId) { + return request({ + url: '/form/data/' + dataId, + method: 'delete' + }) +} diff --git a/src/api/form/template.js b/src/api/form/template.js new file mode 100644 index 0000000..29ac881 --- /dev/null +++ b/src/api/form/template.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询单模板列表 +export function listTemplate(query) { + return request({ + url: '/form/template/list', + method: 'get', + params: query + }) +} + +// 查询单模板详细 +export function getTemplate(formId) { + return request({ + url: '/form/template/' + formId, + method: 'get' + }) +} + +// 新增单模板 +export function addTemplate(data) { + return request({ + url: '/form/template', + method: 'post', + data: data + }) +} + +// 修改单模板 +export function updateTemplate(data) { + return request({ + url: '/form/template', + method: 'put', + data: data + }) +} + +// 删除单模板 +export function delTemplate(formId) { + return request({ + url: '/form/template/' + formId, + method: 'delete' + }) +} diff --git a/src/api/login.js b/src/api/login.js new file mode 100644 index 0000000..64030ab --- /dev/null +++ b/src/api/login.js @@ -0,0 +1,113 @@ +import request from '@/utils/request' + +// 登录方法 +export function login(data) { + return request({ + url: '/login', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 注册方法 +export function register(data) { + return request({ + url: '/register', + headers: { + isToken: false + }, + method: 'post', + data: data + }) +} + +// 获取用户详细信息 +export function getInfo() { + return request({ + url: '/getInfo', + method: 'get' + }) +} + +// 退出方法 +export function logout() { + return request({ + url: '/logout', + method: 'post' + }) +} + +// 获取验证码 +export function getCodeImg() { + return request({ + url: '/captchaImage', + headers: { + isToken: false + }, + method: 'get', + timeout: 20000 + }) +} + +export function sendEmailCode(data, type = 'register') { + return request({ + url: `/auth/mail/send/${type}`, + headers: { + isToken: false + }, + method: 'post', + timeout: 20000, + data, + params: { + autoRegister: data.autoRegister + }, + }) +} + +export function verifyEmailCode(data, type = 'register') { + return request({ + url: `/auth/mail/verify/${type}`, + headers: { + isToken: false + }, + method: 'post', + timeout: 20000, + data, + params: { + autoRegister: data.autoRegister + }, + }) +} + +export function sendPhoneCode(data, type = 'register') { + return request({ + url: `/auth/dySms/send/${type}`, + headers: { + isToken: false + }, + method: 'post', + timeout: 20000, + data, + params: { + autoRegister: data.autoRegister + }, + }) +} + +export function verifyPhoneCode(data, type = 'register') { + return request({ + url: `/auth/dySms/verify/${type}`, + headers: { + isToken: false + }, + method: 'post', + timeout: 20000, + data, + params: { + autoRegister: data.autoRegister + }, + }) +} \ No newline at end of file diff --git a/src/api/menu.js b/src/api/menu.js new file mode 100644 index 0000000..faef101 --- /dev/null +++ b/src/api/menu.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取路由 +export const getRouters = () => { + return request({ + url: '/getRouters', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/modelMessage/messageSystem.js b/src/api/modelMessage/messageSystem.js new file mode 100644 index 0000000..e0b3677 --- /dev/null +++ b/src/api/modelMessage/messageSystem.js @@ -0,0 +1,70 @@ +import request from '@/utils/request' + +// 查询消息管理列表 +export function listMessageSystem(query) { + return request({ + url: '/modelMessage/messageSystem/list', + method: 'get', + params: query + }) +} + +// 查询消息管理详细 +export function getMessageSystem(messageId) { + return request({ + url: '/modelMessage/messageSystem/' + messageId, + method: 'get' + }) +} + +// 修改消息管理 +export function updateMessageSystem(data) { + return request({ + url: '/modelMessage/messageSystem', + method: 'put', + data: data + }) +} + +// 删除消息管理 +export function delMessageSystem(messageId) { + return request({ + url: '/modelMessage/messageSystem/' + messageId, + method: 'delete' + }) +} + +// 统一查询系统资源信息(角色、部门、用户) +export function getSystemResource(type, id, sendMode) { + const params = { type }; + if (id !== null && id !== undefined) { + params.id = id; + } + if (sendMode !== null && sendMode !== undefined) { + params.sendMode = sendMode; + } + + return request({ + url: '/modelMessage/messageSystem/systemResource', + method: 'get', + params: params + }); +} + +//点击信息详情状态调整为已读 +export function getUpdate(messageId) { + return request({ + url: '/modelMessage/messageSystem/' + messageId, + method: 'post' + }) +} + +// 批量发送消息 +export function batchAddMessage(data) { + return request({ + url: '/modelMessage/messageSystem', + method: 'post', + data: data, + headers: { 'isRepeatSubmit': false } + }) +} diff --git a/src/api/modelMessage/template.js b/src/api/modelMessage/template.js new file mode 100644 index 0000000..00af09f --- /dev/null +++ b/src/api/modelMessage/template.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询模版管理列表 +export function listTemplate(query) { + return request({ + url: '/modelMessage/template/list', + method: 'get', + params: query + }) +} + +// 查询模版管理详细 +export function getTemplate(templateId) { + return request({ + url: '/modelMessage/template/' + templateId, + method: 'get' + }) +} + +// 新增模版管理 +export function addTemplate(data) { + return request({ + url: '/modelMessage/template', + method: 'post', + data: data + }) +} + +// 修改模版管理 +export function updateTemplate(data) { + return request({ + url: '/modelMessage/template', + method: 'put', + data: data + }) +} + +// 删除模版管理 +export function delTemplate(templateId) { + return request({ + url: '/modelMessage/template/' + templateId, + method: 'delete' + }) +} + +// 查询模版签名 +export function selecTemplates() { + return request({ + url: '/modelMessage/template/selecTemplates', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/modelMessage/variable.js b/src/api/modelMessage/variable.js new file mode 100644 index 0000000..76ceb37 --- /dev/null +++ b/src/api/modelMessage/variable.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询变量管理列表 +export function listVariable(query) { + return request({ + url: '/modelMessage/variable/list', + method: 'get', + params: query + }) +} + +// 查询变量管理详细 +export function getVariable(variableId) { + return request({ + url: '/modelMessage/variable/' + variableId, + method: 'get' + }) +} + +// 新增变量管理 +export function addVariable(data) { + return request({ + url: '/modelMessage/variable', + method: 'post', + data: data + }) +} + +// 修改变量管理 +export function updateVariable(data) { + return request({ + url: '/modelMessage/variable', + method: 'put', + data: data + }) +} + +// 删除变量管理 +export function delVariable(variableId) { + return request({ + url: '/modelMessage/variable/' + variableId, + method: 'delete' + }) +} + +// 查询变量 +export function selectVariable() { + return request({ + url: '/modelMessage/variable/selectMessageVariable', + method: 'get' + }) +} diff --git a/src/api/monitor/cache.js b/src/api/monitor/cache.js new file mode 100644 index 0000000..72c5f6a --- /dev/null +++ b/src/api/monitor/cache.js @@ -0,0 +1,57 @@ +import request from '@/utils/request' + +// 查询缓存详细 +export function getCache() { + return request({ + url: '/monitor/cache', + method: 'get' + }) +} + +// 查询缓存名称列表 +export function listCacheName() { + return request({ + url: '/monitor/cache/getNames', + method: 'get' + }) +} + +// 查询缓存键名列表 +export function listCacheKey(cacheName) { + return request({ + url: '/monitor/cache/getKeys/' + cacheName, + method: 'get' + }) +} + +// 查询缓存内容 +export function getCacheValue(cacheName, cacheKey) { + return request({ + url: '/monitor/cache/getValue/' + cacheName + '/' + cacheKey, + method: 'get' + }) +} + +// 清理指定名称缓存 +export function clearCacheName(cacheName) { + return request({ + url: '/monitor/cache/clearCacheName/' + cacheName, + method: 'delete' + }) +} + +// 清理指定键名缓存 +export function clearCacheKey(cacheKey) { + return request({ + url: '/monitor/cache/clearCacheKey/' + cacheKey, + method: 'delete' + }) +} + +// 清理全部缓存 +export function clearCacheAll() { + return request({ + url: '/monitor/cache/clearCacheAll', + method: 'delete' + }) +} diff --git a/src/api/monitor/job.js b/src/api/monitor/job.js new file mode 100644 index 0000000..3815569 --- /dev/null +++ b/src/api/monitor/job.js @@ -0,0 +1,71 @@ +import request from '@/utils/request' + +// 查询定时任务调度列表 +export function listJob(query) { + return request({ + url: '/monitor/job/list', + method: 'get', + params: query + }) +} + +// 查询定时任务调度详细 +export function getJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'get' + }) +} + +// 新增定时任务调度 +export function addJob(data) { + return request({ + url: '/monitor/job', + method: 'post', + data: data + }) +} + +// 修改定时任务调度 +export function updateJob(data) { + return request({ + url: '/monitor/job', + method: 'put', + data: data + }) +} + +// 删除定时任务调度 +export function delJob(jobId) { + return request({ + url: '/monitor/job/' + jobId, + method: 'delete' + }) +} + +// 任务状态修改 +export function changeJobStatus(jobId, status) { + const data = { + jobId, + status + } + return request({ + url: '/monitor/job/changeStatus', + method: 'put', + data: data + }) +} + + +// 定时任务立即执行一次 +export function runJob(jobId, jobGroup) { + const data = { + jobId, + jobGroup + } + return request({ + url: '/monitor/job/run', + method: 'put', + data: data + }) +} \ No newline at end of file diff --git a/src/api/monitor/jobLog.js b/src/api/monitor/jobLog.js new file mode 100644 index 0000000..6e0be61 --- /dev/null +++ b/src/api/monitor/jobLog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询调度日志列表 +export function listJobLog(query) { + return request({ + url: '/monitor/jobLog/list', + method: 'get', + params: query + }) +} + +// 删除调度日志 +export function delJobLog(jobLogId) { + return request({ + url: '/monitor/jobLog/' + jobLogId, + method: 'delete' + }) +} + +// 清空调度日志 +export function cleanJobLog() { + return request({ + url: '/monitor/jobLog/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/logininfor.js b/src/api/monitor/logininfor.js new file mode 100644 index 0000000..4d112b7 --- /dev/null +++ b/src/api/monitor/logininfor.js @@ -0,0 +1,34 @@ +import request from '@/utils/request' + +// 查询登录日志列表 +export function list(query) { + return request({ + url: '/monitor/logininfor/list', + method: 'get', + params: query + }) +} + +// 删除登录日志 +export function delLogininfor(infoId) { + return request({ + url: '/monitor/logininfor/' + infoId, + method: 'delete' + }) +} + +// 解锁用户登录状态 +export function unlockLogininfor(userName) { + return request({ + url: '/monitor/logininfor/unlock/' + userName, + method: 'get' + }) +} + +// 清空登录日志 +export function cleanLogininfor() { + return request({ + url: '/monitor/logininfor/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/online.js b/src/api/monitor/online.js new file mode 100644 index 0000000..bd22137 --- /dev/null +++ b/src/api/monitor/online.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + +// 查询在线用户列表 +export function list(query) { + return request({ + url: '/monitor/online/list', + method: 'get', + params: query + }) +} + +// 强退用户 +export function forceLogout(tokenId) { + return request({ + url: '/monitor/online/' + tokenId, + method: 'delete' + }) +} diff --git a/src/api/monitor/operlog.js b/src/api/monitor/operlog.js new file mode 100644 index 0000000..a04bca8 --- /dev/null +++ b/src/api/monitor/operlog.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 查询操作日志列表 +export function list(query) { + return request({ + url: '/monitor/operlog/list', + method: 'get', + params: query + }) +} + +// 删除操作日志 +export function delOperlog(operId) { + return request({ + url: '/monitor/operlog/' + operId, + method: 'delete' + }) +} + +// 清空操作日志 +export function cleanOperlog() { + return request({ + url: '/monitor/operlog/clean', + method: 'delete' + }) +} diff --git a/src/api/monitor/server.js b/src/api/monitor/server.js new file mode 100644 index 0000000..e1f9ca2 --- /dev/null +++ b/src/api/monitor/server.js @@ -0,0 +1,9 @@ +import request from '@/utils/request' + +// 获取服务信息 +export function getServer() { + return request({ + url: '/monitor/server', + method: 'get' + }) +} \ No newline at end of file diff --git a/src/api/ngtools/NGCalcTools.js b/src/api/ngtools/NGCalcTools.js new file mode 100644 index 0000000..78ca658 --- /dev/null +++ b/src/api/ngtools/NGCalcTools.js @@ -0,0 +1,26 @@ +import request from '@/utils/request' + +// 天然气物性参数计算 +export function calcNGPar(data) { + return request({ + url: '/NGCalcTools/ngCalc', + method: 'post', + data: data, + headers: { + 'Content-Type': 'application/json' + } + }) +} +// 天然气流量计算 +export function calcFlow(data) { + return request({ + url: '/flowCalTools/flowCalc', + method: 'post', + data: data, + headers: { + 'Content-Type': 'application/json' + } + }) +} + + \ No newline at end of file diff --git a/src/api/ngtools/components.js b/src/api/ngtools/components.js new file mode 100644 index 0000000..1346dd2 --- /dev/null +++ b/src/api/ngtools/components.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询天然气组分列表 +export function listComponents(query) { + return request({ + url: '/ngtools/components/list', + method: 'get', + params: query + }) +} + +// 查询天然气组分详细 +export function getComponents(id) { + return request({ + url: '/ngtools/components/' + id, + method: 'get' + }) +} + +// 新增天然气组分 +export function addComponents(data) { + return request({ + url: '/ngtools/components', + method: 'post', + data: data + }) +} + +// 修改天然气组分 +export function updateComponents(data) { + return request({ + url: '/ngtools/components', + method: 'put', + data: data + }) +} + +// 删除天然气组分 +export function delComponents(id) { + return request({ + url: '/ngtools/components/' + id, + method: 'delete' + }) +} diff --git a/src/api/ngtools/meterpar.js b/src/api/ngtools/meterpar.js new file mode 100644 index 0000000..72f2b0c --- /dev/null +++ b/src/api/ngtools/meterpar.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流量计参数列表 +export function listMeterpar(query) { + return request({ + url: '/ngtools/meterpar/list', + method: 'get', + params: query + }) +} + +// 查询流量计参数详细 +export function getMeterpar(id) { + return request({ + url: '/ngtools/meterpar/' + id, + method: 'get' + }) +} + +// 新增流量计参数 +export function addMeterpar(data) { + return request({ + url: '/ngtools/meterpar', + method: 'post', + data: data + }) +} + +// 修改流量计参数 +export function updateMeterpar(data) { + return request({ + url: '/ngtools/meterpar', + method: 'put', + data: data + }) +} + +// 删除流量计参数 +export function delMeterpar(id) { + return request({ + url: '/ngtools/meterpar/' + id, + method: 'delete' + }) +} diff --git a/src/api/ngtools/meterresult.js b/src/api/ngtools/meterresult.js new file mode 100644 index 0000000..cf583ba --- /dev/null +++ b/src/api/ngtools/meterresult.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流量计算结果列表 +export function listMeterresult(query) { + return request({ + url: '/ngtools/meterresult/list', + method: 'get', + params: query + }) +} + +// 查询流量计算结果详细 +export function getMeterresult(id) { + return request({ + url: '/ngtools/meterresult/' + id, + method: 'get' + }) +} + +// 新增流量计算结果 +export function addMeterresult(data) { + return request({ + url: '/ngtools/meterresult', + method: 'post', + data: data + }) +} + +// 修改流量计算结果 +export function updateMeterresult(data) { + return request({ + url: '/ngtools/meterresult', + method: 'put', + data: data + }) +} + +// 删除流量计算结果 +export function delMeterresult(id) { + return request({ + url: '/ngtools/meterresult/' + id, + method: 'delete' + }) +} diff --git a/src/api/ngtools/ngpar.js b/src/api/ngtools/ngpar.js new file mode 100644 index 0000000..b02d006 --- /dev/null +++ b/src/api/ngtools/ngpar.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询天然气物性参数列表 +export function listNgpar(query) { + return request({ + url: '/ngtools/ngpar/list', + method: 'get', + params: query + }) +} + +// 查询天然气物性参数详细 +export function getNgpar(id) { + return request({ + url: '/ngtools/ngpar/' + id, + method: 'get' + }) +} + +// 新增天然气物性参数 +export function addNgpar(data) { + return request({ + url: '/ngtools/ngpar', + method: 'post', + data: data + }) +} + +// 修改天然气物性参数 +export function updateNgpar(data) { + return request({ + url: '/ngtools/ngpar', + method: 'put', + data: data + }) +} + +// 删除天然气物性参数 +export function delNgpar(id) { + return request({ + url: '/ngtools/ngpar/' + id, + method: 'delete' + }) +} diff --git a/src/api/online/db.js b/src/api/online/db.js new file mode 100644 index 0000000..5968f03 --- /dev/null +++ b/src/api/online/db.js @@ -0,0 +1,18 @@ +import request from '@/utils/request' + + +export function listDbTable(params) { + return request({ + url: '/online/db/table/list', + method: 'get', + params: params + }) +} + +export function listDbColumn(tableName) { + return request({ + url: '/online/db/column/list', + method: 'get', + params: { tableName } + }) +} \ No newline at end of file diff --git a/src/api/online/mb.js b/src/api/online/mb.js new file mode 100644 index 0000000..15c91e7 --- /dev/null +++ b/src/api/online/mb.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询mybatis在线接口列表 +export function listMb(query) { + return request({ + url: '/online/mb/list', + method: 'get', + params: query + }) +} + +// 查询mybatis在线接口详细 +export function getMb(mbId) { + return request({ + url: '/online/mb/' + mbId, + method: 'get' + }) +} + +// 新增mybatis在线接口 +export function addMb(data) { + return request({ + url: '/online/mb', + method: 'post', + data: data + }) +} + +// 修改mybatis在线接口 +export function updateMb(data) { + return request({ + url: '/online/mb', + method: 'put', + data: data + }) +} + +// 删除mybatis在线接口 +export function delMb(mbId) { + return request({ + url: '/online/mb/' + mbId, + method: 'delete' + }) +} diff --git a/src/api/pay/invoice.js b/src/api/pay/invoice.js new file mode 100644 index 0000000..b8a6de4 --- /dev/null +++ b/src/api/pay/invoice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询发票列表 +export function listInvoice(query) { + return request({ + url: '/pay/invoice/list', + method: 'get', + params: query + }) +} + +// 查询发票详细 +export function getInvoice(invoiceId) { + return request({ + url: '/pay/invoice/' + invoiceId, + method: 'get' + }) +} + +// 新增发票 +export function addInvoice(data) { + return request({ + url: '/pay/invoice', + method: 'post', + data: data + }) +} + +// 修改发票 +export function updateInvoice(data) { + return request({ + url: '/pay/invoice', + method: 'put', + data: data + }) +} + +// 删除发票 +export function delInvoice(invoiceId) { + return request({ + url: '/pay/invoice/' + invoiceId, + method: 'delete' + }) +} diff --git a/src/api/pay/order.js b/src/api/pay/order.js new file mode 100644 index 0000000..b6eae43 --- /dev/null +++ b/src/api/pay/order.js @@ -0,0 +1,62 @@ +import request from '@/utils/request' + +// 查询订单列表 +export function listOrder(query) { + return request({ + url: '/pay/order/list', + method: 'get', + params: query + }) +} + +// 查询订单详细 +export function getOrder(orderId) { + return request({ + url: '/pay/order/' + orderId, + method: 'get' + }) +} + +// 新增订单 +export function addOrder(data) { + return request({ + url: '/pay/order', + method: 'post', + data: data + }) +} + +// 修改订单 +export function updateOrder(data) { + return request({ + url: '/pay/order', + method: 'put', + data: data + }) +} + +// 删除订单 +export function delOrder(orderId) { + return request({ + url: '/pay/order/' + orderId, + method: 'delete' + }) +} + +// 退款订单 +export function refundOrder(orderNumber, data) { + return request({ + url: `/pay/refund/${orderNumber}`, + method: 'post', + data: data + }) +} + +// 更新订单状态 +export function updateOrderStatus(orderNumber, data) { + return request({ + url: `/pay/query/${orderNumber}`, + method: 'post', + data: data + }) +} diff --git a/src/api/system/config.js b/src/api/system/config.js new file mode 100644 index 0000000..a404d82 --- /dev/null +++ b/src/api/system/config.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询参数列表 +export function listConfig(query) { + return request({ + url: '/system/config/list', + method: 'get', + params: query + }) +} + +// 查询参数详细 +export function getConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'get' + }) +} + +// 根据参数键名查询参数值 +export function getConfigKey(configKey) { + return request({ + url: '/system/config/configKey/' + configKey, + method: 'get' + }) +} + +// 新增参数配置 +export function addConfig(data) { + return request({ + url: '/system/config', + method: 'post', + data: data + }) +} + +// 修改参数配置 +export function updateConfig(data) { + return request({ + url: '/system/config', + method: 'put', + data: data + }) +} + +// 删除参数配置 +export function delConfig(configId) { + return request({ + url: '/system/config/' + configId, + method: 'delete' + }) +} + +// 刷新参数缓存 +export function refreshCache() { + return request({ + url: '/system/config/refreshCache', + method: 'delete' + }) +} diff --git a/src/api/system/convert.js b/src/api/system/convert.js new file mode 100644 index 0000000..b5187f2 --- /dev/null +++ b/src/api/system/convert.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询单位换算列表 +export function listConvert(query) { + return request({ + url: '/system/convert/list', + method: 'get', + params: query + }) +} + +// 查询单位换算详细 +export function getConvert(id) { + return request({ + url: '/system/convert/' + id, + method: 'get' + }) +} + +// 新增单位换算 +export function addConvert(data) { + return request({ + url: '/system/convert', + method: 'post', + data: data + }) +} + +// 修改单位换算 +export function updateConvert(data) { + return request({ + url: '/system/convert', + method: 'put', + data: data + }) +} + +// 删除单位换算 +export function delConvert(id) { + return request({ + url: '/system/convert/' + id, + method: 'delete' + }) +} diff --git a/src/api/system/dept.js b/src/api/system/dept.js new file mode 100644 index 0000000..fc943cd --- /dev/null +++ b/src/api/system/dept.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询部门列表 +export function listDept(query) { + return request({ + url: '/system/dept/list', + method: 'get', + params: query + }) +} + +// 查询部门列表(排除节点) +export function listDeptExcludeChild(deptId) { + return request({ + url: '/system/dept/list/exclude/' + deptId, + method: 'get' + }) +} + +// 查询部门详细 +export function getDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'get' + }) +} + +// 新增部门 +export function addDept(data) { + return request({ + url: '/system/dept', + method: 'post', + data: data + }) +} + +// 修改部门 +export function updateDept(data) { + return request({ + url: '/system/dept', + method: 'put', + data: data + }) +} + +// 删除部门 +export function delDept(deptId) { + return request({ + url: '/system/dept/' + deptId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/dict/data.js b/src/api/system/dict/data.js new file mode 100644 index 0000000..6c9eb79 --- /dev/null +++ b/src/api/system/dict/data.js @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// 查询字典数据列表 +export function listData(query) { + return request({ + url: '/system/dict/data/list', + method: 'get', + params: query + }) +} + +// 查询字典数据详细 +export function getData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'get' + }) +} + +// 根据字典类型查询字典数据信息 +export function getDicts(dictType) { + return request({ + url: '/system/dict/data/type/' + dictType, + method: 'get' + }) +} + +// 新增字典数据 +export function addData(data) { + return request({ + url: '/system/dict/data', + method: 'post', + data: data + }) +} + +// 修改字典数据 +export function updateData(data) { + return request({ + url: '/system/dict/data', + method: 'put', + data: data + }) +} + +// 删除字典数据 +export function delData(dictCode) { + return request({ + url: '/system/dict/data/' + dictCode, + method: 'delete' + }) +} diff --git a/src/api/system/dict/type.js b/src/api/system/dict/type.js new file mode 100644 index 0000000..a0254ba --- /dev/null +++ b/src/api/system/dict/type.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询字典类型列表 +export function listType(query) { + return request({ + url: '/system/dict/type/list', + method: 'get', + params: query + }) +} + +// 查询字典类型详细 +export function getType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'get' + }) +} + +// 新增字典类型 +export function addType(data) { + return request({ + url: '/system/dict/type', + method: 'post', + data: data + }) +} + +// 修改字典类型 +export function updateType(data) { + return request({ + url: '/system/dict/type', + method: 'put', + data: data + }) +} + +// 删除字典类型 +export function delType(dictId) { + return request({ + url: '/system/dict/type/' + dictId, + method: 'delete' + }) +} + +// 刷新字典缓存 +export function refreshCache() { + return request({ + url: '/system/dict/type/refreshCache', + method: 'delete' + }) +} + +// 获取字典选择框列表 +export function optionselect() { + return request({ + url: '/system/dict/type/optionselect', + method: 'get' + }) +} diff --git a/src/api/system/expression.js b/src/api/system/expression.js new file mode 100644 index 0000000..4a6ed96 --- /dev/null +++ b/src/api/system/expression.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程达式列表 +export function listExpression(query) { + return request({ + url: '/system/expression/list', + method: 'get', + params: query + }) +} + +// 查询流程达式详细 +export function getExpression(id) { + return request({ + url: '/system/expression/' + id, + method: 'get' + }) +} + +// 新增流程达式 +export function addExpression(data) { + return request({ + url: '/system/expression', + method: 'post', + data: data + }) +} + +// 修改流程达式 +export function updateExpression(data) { + return request({ + url: '/system/expression', + method: 'put', + data: data + }) +} + +// 删除流程达式 +export function delExpression(id) { + return request({ + url: '/system/expression/' + id, + method: 'delete' + }) +} diff --git a/src/api/system/listener.js b/src/api/system/listener.js new file mode 100644 index 0000000..cec029c --- /dev/null +++ b/src/api/system/listener.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询流程监听列表 +export function listListener(query) { + return request({ + url: '/system/listener/list', + method: 'get', + params: query + }) +} + +// 查询流程监听详细 +export function getListener(id) { + return request({ + url: '/system/listener/' + id, + method: 'get' + }) +} + +// 新增流程监听 +export function addListener(data) { + return request({ + url: '/system/listener', + method: 'post', + data: data + }) +} + +// 修改流程监听 +export function updateListener(data) { + return request({ + url: '/system/listener', + method: 'put', + data: data + }) +} + +// 删除流程监听 +export function delListener(id) { + return request({ + url: '/system/listener/' + id, + method: 'delete' + }) +} diff --git a/src/api/system/menu.js b/src/api/system/menu.js new file mode 100644 index 0000000..f6415c6 --- /dev/null +++ b/src/api/system/menu.js @@ -0,0 +1,60 @@ +import request from '@/utils/request' + +// 查询菜单列表 +export function listMenu(query) { + return request({ + url: '/system/menu/list', + method: 'get', + params: query + }) +} + +// 查询菜单详细 +export function getMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'get' + }) +} + +// 查询菜单下拉树结构 +export function treeselect() { + return request({ + url: '/system/menu/treeselect', + method: 'get' + }) +} + +// 根据角色ID查询菜单下拉树结构 +export function roleMenuTreeselect(roleId) { + return request({ + url: '/system/menu/roleMenuTreeselect/' + roleId, + method: 'get' + }) +} + +// 新增菜单 +export function addMenu(data) { + return request({ + url: '/system/menu', + method: 'post', + data: data + }) +} + +// 修改菜单 +export function updateMenu(data) { + return request({ + url: '/system/menu', + method: 'put', + data: data + }) +} + +// 删除菜单 +export function delMenu(menuId) { + return request({ + url: '/system/menu/' + menuId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/notice.js b/src/api/system/notice.js new file mode 100644 index 0000000..c274ea5 --- /dev/null +++ b/src/api/system/notice.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询公告列表 +export function listNotice(query) { + return request({ + url: '/system/notice/list', + method: 'get', + params: query + }) +} + +// 查询公告详细 +export function getNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'get' + }) +} + +// 新增公告 +export function addNotice(data) { + return request({ + url: '/system/notice', + method: 'post', + data: data + }) +} + +// 修改公告 +export function updateNotice(data) { + return request({ + url: '/system/notice', + method: 'put', + data: data + }) +} + +// 删除公告 +export function delNotice(noticeId) { + return request({ + url: '/system/notice/' + noticeId, + method: 'delete' + }) +} \ No newline at end of file diff --git a/src/api/system/oauth.js b/src/api/system/oauth.js new file mode 100644 index 0000000..f11184f --- /dev/null +++ b/src/api/system/oauth.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询第三方认证列表 +export function listOauth(query) { + return request({ + url: '/system/oauth/list', + method: 'get', + params: query + }) +} + +// 查询第三方认证详细 +export function getOauth(id) { + return request({ + url: '/system/oauth/' + id, + method: 'get' + }) +} + +// 新增第三方认证 +export function addOauth(data) { + return request({ + url: '/system/oauth', + method: 'post', + data: data + }) +} + +// 修改第三方认证 +export function updateOauth(data) { + return request({ + url: '/system/oauth', + method: 'put', + data: data + }) +} + +// 删除第三方认证 +export function delOauth(id) { + return request({ + url: '/system/oauth/' + id, + method: 'delete' + }) +} diff --git a/src/api/system/post.js b/src/api/system/post.js new file mode 100644 index 0000000..1a8e9ca --- /dev/null +++ b/src/api/system/post.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询岗位列表 +export function listPost(query) { + return request({ + url: '/system/post/list', + method: 'get', + params: query + }) +} + +// 查询岗位详细 +export function getPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'get' + }) +} + +// 新增岗位 +export function addPost(data) { + return request({ + url: '/system/post', + method: 'post', + data: data + }) +} + +// 修改岗位 +export function updatePost(data) { + return request({ + url: '/system/post', + method: 'put', + data: data + }) +} + +// 删除岗位 +export function delPost(postId) { + return request({ + url: '/system/post/' + postId, + method: 'delete' + }) +} diff --git a/src/api/system/role.js b/src/api/system/role.js new file mode 100644 index 0000000..f13e6f4 --- /dev/null +++ b/src/api/system/role.js @@ -0,0 +1,119 @@ +import request from '@/utils/request' + +// 查询角色列表 +export function listRole(query) { + return request({ + url: '/system/role/list', + method: 'get', + params: query + }) +} + +// 查询角色详细 +export function getRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'get' + }) +} + +// 新增角色 +export function addRole(data) { + return request({ + url: '/system/role', + method: 'post', + data: data + }) +} + +// 修改角色 +export function updateRole(data) { + return request({ + url: '/system/role', + method: 'put', + data: data + }) +} + +// 角色数据权限 +export function dataScope(data) { + return request({ + url: '/system/role/dataScope', + method: 'put', + data: data + }) +} + +// 角色状态修改 +export function changeRoleStatus(roleId, status) { + const data = { + roleId, + status + } + return request({ + url: '/system/role/changeStatus', + method: 'put', + data: data + }) +} + +// 删除角色 +export function delRole(roleId) { + return request({ + url: '/system/role/' + roleId, + method: 'delete' + }) +} + +// 查询角色已授权用户列表 +export function allocatedUserList(query) { + return request({ + url: '/system/role/authUser/allocatedList', + method: 'get', + params: query + }) +} + +// 查询角色未授权用户列表 +export function unallocatedUserList(query) { + return request({ + url: '/system/role/authUser/unallocatedList', + method: 'get', + params: query + }) +} + +// 取消用户授权角色 +export function authUserCancel(data) { + return request({ + url: '/system/role/authUser/cancel', + method: 'put', + data: data + }) +} + +// 批量取消用户授权角色 +export function authUserCancelAll(data) { + return request({ + url: '/system/role/authUser/cancelAll', + method: 'put', + params: data + }) +} + +// 授权用户选择 +export function authUserSelectAll(data) { + return request({ + url: '/system/role/authUser/selectAll', + method: 'put', + params: data + }) +} + +// 根据角色ID查询部门树结构 +export function deptTreeSelect(roleId) { + return request({ + url: '/system/role/deptTree/' + roleId, + method: 'get' + }) +} diff --git a/src/api/system/treeDict.js b/src/api/system/treeDict.js new file mode 100644 index 0000000..8317e69 --- /dev/null +++ b/src/api/system/treeDict.js @@ -0,0 +1,44 @@ +import request from '@/utils/request' + +// 查询树形字典列表 +export function listTreeDict(query) { + return request({ + url: '/system/treeDict/list', + method: 'get', + params: query + }) +} + +// 查询树形字典详细 +export function getTreeDict(id) { + return request({ + url: '/system/treeDict/' + id, + method: 'get' + }) +} + +// 新增树形字典 +export function addTreeDict(data) { + return request({ + url: '/system/treeDict', + method: 'post', + data: data + }) +} + +// 修改树形字典 +export function updateTreeDict(data) { + return request({ + url: '/system/treeDict', + method: 'put', + data: data + }) +} + +// 删除树形字典 +export function delTreeDict(id) { + return request({ + url: '/system/treeDict/' + id, + method: 'delete' + }) +} diff --git a/src/api/system/user.js b/src/api/system/user.js new file mode 100644 index 0000000..7f79f9c --- /dev/null +++ b/src/api/system/user.js @@ -0,0 +1,138 @@ +import request from '@/utils/request' +import { parseStrEmpty } from "@/utils/ruoyi"; + +// 查询用户列表 +export function listUser(query) { + return request({ + url: '/system/user/list', + method: 'get', + params: query + }) +} + +// 查询用户详细 +export function getUser(userId) { + return request({ + url: '/system/user/' + parseStrEmpty(userId), + method: 'get' + }) +} + +// 新增用户 +export function addUser(data) { + return request({ + url: '/system/user', + method: 'post', + data: data + }) +} + +// 修改用户 +export function updateUser(data) { + return request({ + url: '/system/user', + method: 'put', + data: data + }) +} + +// 删除用户 +export function delUser(userId) { + return request({ + url: '/system/user/' + userId, + method: 'delete' + }) +} + +// 用户密码重置 +export function resetUserPwd(userId, password) { + const data = { + userId, + password + } + return request({ + url: '/system/user/resetPwd', + method: 'put', + data: data + }) +} + +// 用户状态修改 +export function changeUserStatus(userId, status) { + const data = { + userId, + status + } + return request({ + url: '/system/user/changeStatus', + method: 'put', + data: data + }) +} + +// 查询用户个人信息 +export function getUserProfile() { + return request({ + url: '/system/user/profile', + method: 'get' + }) +} + +// 修改用户个人信息 +export function updateUserProfile(data) { + return request({ + url: '/system/user/profile', + method: 'put', + data: data + }) +} + +// 用户密码重置 +export function updateUserPwd(oldPassword, newPassword) { + const data = { + oldPassword, + newPassword + } + return request({ + url: '/system/user/profile/updatePwd', + method: 'put', + params: data + }) +} + +// 用户头像上传 +export function uploadAvatar(data) { + return request({ + url: '/system/user/profile/avatar', + method: 'post', + data: data, + headers: { + 'Content-Type': 'multipart/form-data' + } + }) +} + +// 查询授权角色 +export function getAuthRole(userId) { + return request({ + url: '/system/user/authRole/' + userId, + method: 'get' + }) +} + +// 保存授权角色 +export function updateAuthRole(data) { + return request({ + url: '/system/user/authRole', + method: 'put', + params: data + }) +} + +// 查询部门下拉树结构 +export function deptTreeSelect() { + return request({ + url: '/system/user/deptTree', + method: 'get' + }) +} diff --git a/src/api/tool/gen.js b/src/api/tool/gen.js new file mode 100644 index 0000000..a3b6927 --- /dev/null +++ b/src/api/tool/gen.js @@ -0,0 +1,88 @@ +import request from '@/utils/request' + +// 查询生成表数据 +export function listTable(query) { + return request({ + url: '/tool/gen/list', + method: 'get', + params: query + }) +} +// 查询db数据库列表 +export function listDbTable(query) { + return request({ + url: '/tool/gen/db/list', + method: 'get', + params: query + }) +} + +// 查询表详细信息 +/** + * @returns { Promise> } + */ +export function getGenTable(tableId) { + return request({ + url: '/tool/gen/' + tableId, + method: 'get' + }) +} + +// 修改代码生成信息 +export function updateGenTable(data) { + return request({ + url: '/tool/gen', + method: 'put', + data: data + }) +} + +// 导入表 +export function importTable(data) { + return request({ + url: '/tool/gen/importTable', + method: 'post', + params: data + }) +} + +// 创建表 +export function createTable(data) { + return request({ + url: '/tool/gen/createTable', + method: 'post', + params: data + }) +} + +// 预览生成代码 +export function previewTable(tableId) { + return request({ + url: '/tool/gen/preview/' + tableId, + method: 'get' + }) +} + +// 删除表数据 +export function delTable(tableId) { + return request({ + url: '/tool/gen/' + tableId, + method: 'delete' + }) +} + +// 生成代码(自定义路径) +export function genCode(tableName) { + return request({ + url: '/tool/gen/genCode/' + tableName, + method: 'get' + }) +} + +// 同步数据库 +export function synchDb(tableName) { + return request({ + url: '/tool/gen/synchDb/' + tableName, + method: 'get' + }) +} diff --git a/src/assets/401_images/401.gif b/src/assets/401_images/401.gif new file mode 100644 index 0000000000000000000000000000000000000000..cd6e0d9433421b3f29d0ec0c40f755e354728000 GIT binary patch literal 164227 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⋘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 GY5fOuZZib{ literal 0 HcmV?d00001 diff --git a/src/assets/404_images/404.png b/src/assets/404_images/404.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8e2305cc973ad2121403aee4bf08728f76c461 GIT binary patch literal 98071 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 literal 0 HcmV?d00001 diff --git a/src/assets/404_images/404_cloud.png b/src/assets/404_images/404_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..c6281d09013e0a2c5f8e699a0a6038d9480291e5 GIT binary patch literal 4766 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 literal 0 HcmV?d00001 diff --git a/src/assets/icons/svg/404.svg b/src/assets/icons/svg/404.svg new file mode 100644 index 0000000..6df5019 --- /dev/null +++ b/src/assets/icons/svg/404.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/bug.svg b/src/assets/icons/svg/bug.svg new file mode 100644 index 0000000..05a150d --- /dev/null +++ b/src/assets/icons/svg/bug.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/build.svg b/src/assets/icons/svg/build.svg new file mode 100644 index 0000000..97c4688 --- /dev/null +++ b/src/assets/icons/svg/build.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/button.svg b/src/assets/icons/svg/button.svg new file mode 100644 index 0000000..904fddc --- /dev/null +++ b/src/assets/icons/svg/button.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/cascader.svg b/src/assets/icons/svg/cascader.svg new file mode 100644 index 0000000..e256024 --- /dev/null +++ b/src/assets/icons/svg/cascader.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/chart.svg b/src/assets/icons/svg/chart.svg new file mode 100644 index 0000000..27728fb --- /dev/null +++ b/src/assets/icons/svg/chart.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/checkbox.svg b/src/assets/icons/svg/checkbox.svg new file mode 100644 index 0000000..013fd3a --- /dev/null +++ b/src/assets/icons/svg/checkbox.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/clipboard.svg b/src/assets/icons/svg/clipboard.svg new file mode 100644 index 0000000..90923ff --- /dev/null +++ b/src/assets/icons/svg/clipboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/code.svg b/src/assets/icons/svg/code.svg new file mode 100644 index 0000000..5f9c5ab --- /dev/null +++ b/src/assets/icons/svg/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/color.svg b/src/assets/icons/svg/color.svg new file mode 100644 index 0000000..44a81aa --- /dev/null +++ b/src/assets/icons/svg/color.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/component.svg b/src/assets/icons/svg/component.svg new file mode 100644 index 0000000..29c3458 --- /dev/null +++ b/src/assets/icons/svg/component.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/dashboard.svg b/src/assets/icons/svg/dashboard.svg new file mode 100644 index 0000000..5317d37 --- /dev/null +++ b/src/assets/icons/svg/dashboard.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/date-range.svg b/src/assets/icons/svg/date-range.svg new file mode 100644 index 0000000..fda571e --- /dev/null +++ b/src/assets/icons/svg/date-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/date.svg b/src/assets/icons/svg/date.svg new file mode 100644 index 0000000..52dc73e --- /dev/null +++ b/src/assets/icons/svg/date.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/dict.svg b/src/assets/icons/svg/dict.svg new file mode 100644 index 0000000..4849377 --- /dev/null +++ b/src/assets/icons/svg/dict.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/documentation.svg b/src/assets/icons/svg/documentation.svg new file mode 100644 index 0000000..7043122 --- /dev/null +++ b/src/assets/icons/svg/documentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/download.svg b/src/assets/icons/svg/download.svg new file mode 100644 index 0000000..c896951 --- /dev/null +++ b/src/assets/icons/svg/download.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/drag.svg b/src/assets/icons/svg/drag.svg new file mode 100644 index 0000000..4185d3c --- /dev/null +++ b/src/assets/icons/svg/drag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/druid.svg b/src/assets/icons/svg/druid.svg new file mode 100644 index 0000000..a2b4b4e --- /dev/null +++ b/src/assets/icons/svg/druid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/edit.svg b/src/assets/icons/svg/edit.svg new file mode 100644 index 0000000..d26101f --- /dev/null +++ b/src/assets/icons/svg/edit.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/education.svg b/src/assets/icons/svg/education.svg new file mode 100644 index 0000000..7bfb01d --- /dev/null +++ b/src/assets/icons/svg/education.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/email.svg b/src/assets/icons/svg/email.svg new file mode 100644 index 0000000..74d25e2 --- /dev/null +++ b/src/assets/icons/svg/email.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/enter.svg b/src/assets/icons/svg/enter.svg new file mode 100644 index 0000000..f7cabf2 --- /dev/null +++ b/src/assets/icons/svg/enter.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/example.svg b/src/assets/icons/svg/example.svg new file mode 100644 index 0000000..46f42b5 --- /dev/null +++ b/src/assets/icons/svg/example.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/excel.svg b/src/assets/icons/svg/excel.svg new file mode 100644 index 0000000..74d97b8 --- /dev/null +++ b/src/assets/icons/svg/excel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/exit-fullscreen.svg b/src/assets/icons/svg/exit-fullscreen.svg new file mode 100644 index 0000000..485c128 --- /dev/null +++ b/src/assets/icons/svg/exit-fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/eye-open.svg b/src/assets/icons/svg/eye-open.svg new file mode 100644 index 0000000..88dcc98 --- /dev/null +++ b/src/assets/icons/svg/eye-open.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/eye.svg b/src/assets/icons/svg/eye.svg new file mode 100644 index 0000000..16ed2d8 --- /dev/null +++ b/src/assets/icons/svg/eye.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/form.svg b/src/assets/icons/svg/form.svg new file mode 100644 index 0000000..dcbaa18 --- /dev/null +++ b/src/assets/icons/svg/form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/fullscreen.svg b/src/assets/icons/svg/fullscreen.svg new file mode 100644 index 0000000..0e86b6f --- /dev/null +++ b/src/assets/icons/svg/fullscreen.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/gitee.svg b/src/assets/icons/svg/gitee.svg new file mode 100644 index 0000000..04ec158 --- /dev/null +++ b/src/assets/icons/svg/gitee.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/github.svg b/src/assets/icons/svg/github.svg new file mode 100644 index 0000000..db0a0d4 --- /dev/null +++ b/src/assets/icons/svg/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/guide.svg b/src/assets/icons/svg/guide.svg new file mode 100644 index 0000000..b271001 --- /dev/null +++ b/src/assets/icons/svg/guide.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/icon.svg b/src/assets/icons/svg/icon.svg new file mode 100644 index 0000000..82be8ee --- /dev/null +++ b/src/assets/icons/svg/icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/input.svg b/src/assets/icons/svg/input.svg new file mode 100644 index 0000000..ab91381 --- /dev/null +++ b/src/assets/icons/svg/input.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/international.svg b/src/assets/icons/svg/international.svg new file mode 100644 index 0000000..e9b56ee --- /dev/null +++ b/src/assets/icons/svg/international.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/job.svg b/src/assets/icons/svg/job.svg new file mode 100644 index 0000000..2a93a25 --- /dev/null +++ b/src/assets/icons/svg/job.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/language.svg b/src/assets/icons/svg/language.svg new file mode 100644 index 0000000..0082b57 --- /dev/null +++ b/src/assets/icons/svg/language.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/link.svg b/src/assets/icons/svg/link.svg new file mode 100644 index 0000000..48197ba --- /dev/null +++ b/src/assets/icons/svg/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/list.svg b/src/assets/icons/svg/list.svg new file mode 100644 index 0000000..20259ed --- /dev/null +++ b/src/assets/icons/svg/list.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/lock.svg b/src/assets/icons/svg/lock.svg new file mode 100644 index 0000000..74fee54 --- /dev/null +++ b/src/assets/icons/svg/lock.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/log.svg b/src/assets/icons/svg/log.svg new file mode 100644 index 0000000..d879d33 --- /dev/null +++ b/src/assets/icons/svg/log.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/logininfor.svg b/src/assets/icons/svg/logininfor.svg new file mode 100644 index 0000000..267f844 --- /dev/null +++ b/src/assets/icons/svg/logininfor.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/message.svg b/src/assets/icons/svg/message.svg new file mode 100644 index 0000000..14ca817 --- /dev/null +++ b/src/assets/icons/svg/message.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/money.svg b/src/assets/icons/svg/money.svg new file mode 100644 index 0000000..c1580de --- /dev/null +++ b/src/assets/icons/svg/money.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/monitor.svg b/src/assets/icons/svg/monitor.svg new file mode 100644 index 0000000..bc308cb --- /dev/null +++ b/src/assets/icons/svg/monitor.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/more-up.svg b/src/assets/icons/svg/more-up.svg new file mode 100644 index 0000000..d30ac11 --- /dev/null +++ b/src/assets/icons/svg/more-up.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/nested.svg b/src/assets/icons/svg/nested.svg new file mode 100644 index 0000000..06713a8 --- /dev/null +++ b/src/assets/icons/svg/nested.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/number.svg b/src/assets/icons/svg/number.svg new file mode 100644 index 0000000..ad5ce9a --- /dev/null +++ b/src/assets/icons/svg/number.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/online.svg b/src/assets/icons/svg/online.svg new file mode 100644 index 0000000..330a202 --- /dev/null +++ b/src/assets/icons/svg/online.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/password.svg b/src/assets/icons/svg/password.svg new file mode 100644 index 0000000..6c64def --- /dev/null +++ b/src/assets/icons/svg/password.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/pdf.svg b/src/assets/icons/svg/pdf.svg new file mode 100644 index 0000000..957aa0c --- /dev/null +++ b/src/assets/icons/svg/pdf.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/people.svg b/src/assets/icons/svg/people.svg new file mode 100644 index 0000000..2bd54ae --- /dev/null +++ b/src/assets/icons/svg/people.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/peoples.svg b/src/assets/icons/svg/peoples.svg new file mode 100644 index 0000000..aab852e --- /dev/null +++ b/src/assets/icons/svg/peoples.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/phone.svg b/src/assets/icons/svg/phone.svg new file mode 100644 index 0000000..ab8e8c4 --- /dev/null +++ b/src/assets/icons/svg/phone.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/post.svg b/src/assets/icons/svg/post.svg new file mode 100644 index 0000000..2922c61 --- /dev/null +++ b/src/assets/icons/svg/post.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/qq.svg b/src/assets/icons/svg/qq.svg new file mode 100644 index 0000000..ee13d4e --- /dev/null +++ b/src/assets/icons/svg/qq.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/question.svg b/src/assets/icons/svg/question.svg new file mode 100644 index 0000000..cf75bd4 --- /dev/null +++ b/src/assets/icons/svg/question.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/radio.svg b/src/assets/icons/svg/radio.svg new file mode 100644 index 0000000..0cde345 --- /dev/null +++ b/src/assets/icons/svg/radio.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/rate.svg b/src/assets/icons/svg/rate.svg new file mode 100644 index 0000000..aa3b14d --- /dev/null +++ b/src/assets/icons/svg/rate.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/redis-list.svg b/src/assets/icons/svg/redis-list.svg new file mode 100644 index 0000000..98a15b2 --- /dev/null +++ b/src/assets/icons/svg/redis-list.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/redis.svg b/src/assets/icons/svg/redis.svg new file mode 100644 index 0000000..2f1d62d --- /dev/null +++ b/src/assets/icons/svg/redis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/row.svg b/src/assets/icons/svg/row.svg new file mode 100644 index 0000000..0780992 --- /dev/null +++ b/src/assets/icons/svg/row.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/search.svg b/src/assets/icons/svg/search.svg new file mode 100644 index 0000000..84233dd --- /dev/null +++ b/src/assets/icons/svg/search.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/select.svg b/src/assets/icons/svg/select.svg new file mode 100644 index 0000000..d628382 --- /dev/null +++ b/src/assets/icons/svg/select.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/server.svg b/src/assets/icons/svg/server.svg new file mode 100644 index 0000000..eb287e3 --- /dev/null +++ b/src/assets/icons/svg/server.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/shopping.svg b/src/assets/icons/svg/shopping.svg new file mode 100644 index 0000000..87513e7 --- /dev/null +++ b/src/assets/icons/svg/shopping.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/size.svg b/src/assets/icons/svg/size.svg new file mode 100644 index 0000000..ddb25b8 --- /dev/null +++ b/src/assets/icons/svg/size.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/skill.svg b/src/assets/icons/svg/skill.svg new file mode 100644 index 0000000..a3b7312 --- /dev/null +++ b/src/assets/icons/svg/skill.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/slider.svg b/src/assets/icons/svg/slider.svg new file mode 100644 index 0000000..fbe4f39 --- /dev/null +++ b/src/assets/icons/svg/slider.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/star.svg b/src/assets/icons/svg/star.svg new file mode 100644 index 0000000..6cf86e6 --- /dev/null +++ b/src/assets/icons/svg/star.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/swagger.svg b/src/assets/icons/svg/swagger.svg new file mode 100644 index 0000000..05d4e7b --- /dev/null +++ b/src/assets/icons/svg/swagger.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/switch.svg b/src/assets/icons/svg/switch.svg new file mode 100644 index 0000000..0ba61e3 --- /dev/null +++ b/src/assets/icons/svg/switch.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/system.svg b/src/assets/icons/svg/system.svg new file mode 100644 index 0000000..5992593 --- /dev/null +++ b/src/assets/icons/svg/system.svg @@ -0,0 +1,2 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tab.svg b/src/assets/icons/svg/tab.svg new file mode 100644 index 0000000..b4b48e4 --- /dev/null +++ b/src/assets/icons/svg/tab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/table.svg b/src/assets/icons/svg/table.svg new file mode 100644 index 0000000..0e3dc9d --- /dev/null +++ b/src/assets/icons/svg/table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/textarea.svg b/src/assets/icons/svg/textarea.svg new file mode 100644 index 0000000..2709f29 --- /dev/null +++ b/src/assets/icons/svg/textarea.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/theme.svg b/src/assets/icons/svg/theme.svg new file mode 100644 index 0000000..5982a2f --- /dev/null +++ b/src/assets/icons/svg/theme.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/time-range.svg b/src/assets/icons/svg/time-range.svg new file mode 100644 index 0000000..13c1202 --- /dev/null +++ b/src/assets/icons/svg/time-range.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/time.svg b/src/assets/icons/svg/time.svg new file mode 100644 index 0000000..b376e32 --- /dev/null +++ b/src/assets/icons/svg/time.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tool.svg b/src/assets/icons/svg/tool.svg new file mode 100644 index 0000000..48e0e35 --- /dev/null +++ b/src/assets/icons/svg/tool.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tree-table.svg b/src/assets/icons/svg/tree-table.svg new file mode 100644 index 0000000..8aafdb8 --- /dev/null +++ b/src/assets/icons/svg/tree-table.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/tree.svg b/src/assets/icons/svg/tree.svg new file mode 100644 index 0000000..dd4b7dd --- /dev/null +++ b/src/assets/icons/svg/tree.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/upload.svg b/src/assets/icons/svg/upload.svg new file mode 100644 index 0000000..bae49c0 --- /dev/null +++ b/src/assets/icons/svg/upload.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/user.svg b/src/assets/icons/svg/user.svg new file mode 100644 index 0000000..0ba0716 --- /dev/null +++ b/src/assets/icons/svg/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/validCode.svg b/src/assets/icons/svg/validCode.svg new file mode 100644 index 0000000..cfb1021 --- /dev/null +++ b/src/assets/icons/svg/validCode.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/wechat.svg b/src/assets/icons/svg/wechat.svg new file mode 100644 index 0000000..c586e55 --- /dev/null +++ b/src/assets/icons/svg/wechat.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/icons/svg/zip.svg b/src/assets/icons/svg/zip.svg new file mode 100644 index 0000000..f806fc4 --- /dev/null +++ b/src/assets/icons/svg/zip.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/assets/images/dark.svg b/src/assets/images/dark.svg new file mode 100644 index 0000000..f646bd7 --- /dev/null +++ b/src/assets/images/dark.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/light.svg b/src/assets/images/light.svg new file mode 100644 index 0000000..ab7cc08 --- /dev/null +++ b/src/assets/images/light.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/assets/images/profile.jpg b/src/assets/images/profile.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b3a940b21cc9dcea01e62d94e243eebcf76d96bc GIT binary patch literal 81131 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 z≺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 literal 0 HcmV?d00001 diff --git a/src/assets/logo/logo.png b/src/assets/logo/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2be05aab9e0c0a4cef61dc086b0cd718ec6294e0 GIT binary patch literal 20919 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 literal 0 HcmV?d00001 diff --git a/src/assets/styles/btn.scss b/src/assets/styles/btn.scss new file mode 100644 index 0000000..d7e95d5 --- /dev/null +++ b/src/assets/styles/btn.scss @@ -0,0 +1,100 @@ +@use 'variables.module.scss'; + +@mixin colorBtn($color) { + background: $color; + + &:hover { + color: $color; + + &:before, + &:after { + background: $color; + } + } +} + +.blue-btn { + @include colorBtn(variables.$blue) +} + +.light-blue-btn { + @include colorBtn(variables.$light-blue) +} + +.red-btn { + @include colorBtn(variables.$red) +} + +.pink-btn { + @include colorBtn(variables.$pink) +} + +.green-btn { + @include colorBtn(variables.$green) +} + +.tiffany-btn { + @include colorBtn(variables.$tiffany) +} + +.yellow-btn { + @include colorBtn(variables.$yellow) +} + +.pan-btn { + font-size: 14px; + color: #fff; + padding: 14px 36px; + border-radius: 8px; + border: none; + outline: none; + transition: 600ms ease all; + position: relative; + display: inline-block; + + &:hover { + background: #fff; + + &:before, + &:after { + width: 100%; + transition: 600ms ease all; + } + } + + &:before, + &:after { + content: ''; + position: absolute; + top: 0; + right: 0; + height: 2px; + width: 0; + transition: 400ms ease all; + } + + &::after { + right: inherit; + top: inherit; + left: 0; + bottom: 0; + } +} + +.custom-button { + display: inline-block; + line-height: 1; + white-space: nowrap; + cursor: pointer; + background: #fff; + color: #fff; + -webkit-appearance: none; + appearance: none; + text-align: center; + box-sizing: border-box; + outline: 0; + margin: 0; + padding: 10px 15px; + font-size: 14px; + border-radius: 4px; +} diff --git a/src/assets/styles/element-ui.scss b/src/assets/styles/element-ui.scss new file mode 100644 index 0000000..acf61a4 --- /dev/null +++ b/src/assets/styles/element-ui.scss @@ -0,0 +1,141 @@ +// cover some element-ui styles +.el-breadcrumb__inner, +.el-breadcrumb__inner a { + font-weight: 400 !important; +} + +.small-padding { + .cell { + padding-left: 5px; + padding-right: 5px; + } +} + +.fixed-width { + .el-button--mini { + padding: 7px 10px; + width: 60px; + } +} + +.status-col { + .cell { + padding: 0 10px; + text-align: center; + + .el-tag { + margin-right: 0px; + } + } +} + +// 优化上传组件 +.upload-container { + .el-upload { + width: 100%; + + .el-upload-dragger { + width: 100%; + height: 200px; + } + } +} + +// 修改 el-dropdown 样式 +.el-dropdown-menu { + padding: 6px; + border-radius: 10px; + border: none; + + .el-dropdown-menu__item { + padding: 6px 16px; + border-radius: 6px; + } +} + +.el-menu--collapse > div > .el-submenu > .el-submenu__title .el-submenu__icon-arrow { + display: none; +} + +.el-dropdown .el-dropdown-link { + color: var(--el-color-primary) !important; +} + +// 优化菜单折叠展开动画(提升动画流畅度) +.el-menu.el-menu--inline { + transition: max-height 0.26s cubic-bezier(0.4, 0, 0.2, 1) !important; +} + +// 优化菜单 item hover 动画(提升鼠标跟手感) +.el-sub-menu__title, +.el-menu-item { + transition: background-color 0s !important; +} + +// el-message 样式调整 +.el-message { + background-color: var(--art-main-bg-color) !important; + border: 0 !important; + box-shadow: + 0 6px 16px 0 rgba(0, 0, 0, 0.08), + 0 3px 6px -4px rgba(0, 0, 0, 0.12), + 0 9px 28px 8px rgba(0, 0, 0, 0.05) !important; + + p { + color: #515a6e !important; + font-size: 13px; + } +} + +// el-checkbox 样式调整 +.el-checkbox-group { + &.el-table-filter__checkbox-group label.el-checkbox { + height: 17px !important; + + .el-checkbox__label { + font-weight: 400 !important; + } + } +} + +.el-checkbox { + .el-checkbox__inner { + width: 18px; + height: 18px; + border-radius: 4px; + + &::before { + content: ""; + height: 3px !important; + top: 6px !important; + background-color: #fff !important; + transform: scale(0.6) !important; + } + + &::after { + width: 4px; + height: 8px; + left: 0; + right: 0; + top: 0; + bottom: 4px; + margin: auto; + border: 2px solid var(--el-checkbox-checked-icon-color); + border-left: 0; + border-top: 0; + } + } +} + +// 修改 el-message-box 样式 +.el-message-box { + padding: 25px 20px; +} + +.el-form--inline { + .el-form-item { + .el-select { + min-width: 120px; + } + } +} diff --git a/src/assets/styles/index.scss b/src/assets/styles/index.scss new file mode 100644 index 0000000..fa208c0 --- /dev/null +++ b/src/assets/styles/index.scss @@ -0,0 +1,212 @@ +@use "variables.module.scss"; +@use "mixin.scss"; +@use "transition.scss"; +@use "element-ui.scss"; +@use "sidebar.scss"; +@use "btn.scss"; +@use "ruoyi.scss"; + +body { + height: 100%; + margin: 0; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + text-rendering: optimizeLegibility; + font-family: + Helvetica Neue, + Helvetica, + PingFang SC, + Hiragino Sans GB, + Microsoft YaHei, + Arial, + sans-serif; + background-color: variables.$page-background-color; +} + +label { + font-weight: 700; +} + +html { + height: 100%; + box-sizing: border-box; +} + +#app { + height: 100%; +} + +*, +*:before, +*:after { + box-sizing: inherit; +} + +.no-padding { + padding: 0px !important; +} + +.padding-content { + padding: 4px 0; +} + +a:focus, +a:active { + outline: none; +} + +a, +a:focus, +a:hover { + cursor: pointer; + color: inherit; + text-decoration: none; +} + +div:focus { + outline: none; +} + +.fr { + float: right; +} + +.fl { + float: left; +} + +.pr-5 { + padding-right: 5px; +} + +.pl-5 { + padding-left: 5px; +} + +.block { + display: block; +} + +.pointer { + cursor: pointer; +} + +.inlineBlock { + display: block; +} + +.clearfix { + &:after { + visibility: hidden; + display: block; + font-size: 0; + content: " "; + clear: both; + height: 0; + } +} + +aside { + background: #eef1f6; + padding: 8px 24px; + margin-bottom: 20px; + border-radius: 2px; + display: block; + line-height: 32px; + font-size: 16px; + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", + "Droid Sans", "Helvetica Neue", sans-serif; + color: #2c3e50; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + a { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } + } +} + +//main-container全局样式 +.app-container { + padding: 20px; + + .el-card { + --el-card-border-radius: 0.75rem; + } +} + +.components-container { + margin: 30px 50px; + position: relative; +} + +.pagination-container { + margin-top: 30px; +} + +.text-center { + text-align: center; +} + +.sub-navbar { + height: 50px; + line-height: 50px; + position: relative; + width: 100%; + text-align: right; + padding-right: 20px; + transition: 600ms ease position; + background: linear-gradient( + 90deg, + rgba(32, 182, 249, 1) 0%, + rgba(32, 182, 249, 1) 0%, + rgba(33, 120, 241, 1) 100%, + rgba(33, 120, 241, 1) 100% + ); + + .subtitle { + font-size: 20px; + color: #fff; + } + + &.draft { + background: #d0d0d0; + } + + &.deleted { + background: #d0d0d0; + } +} + +.link-type, +.link-type:focus { + color: #337ab7; + cursor: pointer; + + &:hover { + color: rgb(32, 160, 255); + } +} + +.filter-container { + padding-bottom: 10px; + + .filter-item { + display: inline-block; + vertical-align: middle; + margin-bottom: 10px; + } +} + +//refine vue-multiselect plugin +.multiselect { + line-height: 16px; +} + +.multiselect--active { + z-index: 1000 !important; +} diff --git a/src/assets/styles/mixin.scss b/src/assets/styles/mixin.scss new file mode 100644 index 0000000..faf8053 --- /dev/null +++ b/src/assets/styles/mixin.scss @@ -0,0 +1,98 @@ +/** + * 清除浮动的Mixin + * + * 用途:用于清除元素内部子元素浮动导致的布局问题 + * 使用方法:在需要清除浮动的元素上使用 @include clearfix; + */ +@mixin clearfix { + &:after { + content: ""; + display: table; + clear: both; + } +} + +/** + * 定义一个混入以自定义滚动条样式 + * 此混入旨在改善用户界面的视觉效果,通过修改滚动条的颜色和形状以更好地适应设计风格 + */ +@mixin scrollBar { + // 自定义滚动条轨道的颜色 + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + // 设置滚动条的宽度 + &::-webkit-scrollbar { + width: 6px; + } + + // 自定义滚动条手柄的样式,包括颜色和圆角 + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } +} + +/** + * 定义一个mixin名为relative,用于设置元素的定位方式及其尺寸 + * 此mixin主要用于简化元素的定位和尺寸设置,使其在父容器中占据全部空间 + */ +@mixin relative { + position: relative; + width: 100%; + height: 100%; +} + +/** + * 创建一个宽度为指定百分比的居中样式 + * + * @param {number} $pct - 元素的宽度 + * + * 此 mixin 用于生成具有指定宽度并居中的元素样式 + * 它通过设置 width、position 和 margin 属性来实现居中效果 + */ +@mixin pct($pct) { + width: #{$pct}; + position: relative; + margin: 0 auto; +} + +/** + * 生成一个三角形的mixin + * + * @param $width 三角形的宽度 + * @param $height 三角形的高度 + * @param $color 三角形的颜色 + * @param $direction 三角形的方向,可以是up, right, down, left + */ +@mixin triangle($width, $height, $color, $direction) { + $width: $width/2; + $color-border-style: $height solid $color; + $transparent-border-style: $width solid transparent; + height: 0; + width: 0; + + // 根据传入的方向参数,设置不同的边框样式 + @if $direction==up { + // 向上的三角形,底部边框为有色,左右边框为透明 + border-bottom: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } @else if $direction==right { + // 向右的三角形,左边框为有色,上下边框为透明 + border-left: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } @else if $direction==down { + // 向下的三角形,顶部边框为有色,左右边框为透明 + border-top: $color-border-style; + border-left: $transparent-border-style; + border-right: $transparent-border-style; + } @else if $direction==left { + // 向左的三角形,右边框为有色,上下边框为透明 + border-right: $color-border-style; + border-top: $transparent-border-style; + border-bottom: $transparent-border-style; + } +} diff --git a/src/assets/styles/ruoyi.scss b/src/assets/styles/ruoyi.scss new file mode 100644 index 0000000..6e65a73 --- /dev/null +++ b/src/assets/styles/ruoyi.scss @@ -0,0 +1,293 @@ +/** + * 通用css样式布局处理 + * Copyright (c) 2019 ruoyi + */ + +/** 基础通用 **/ +.pt5 { + padding-top: 5px; +} +.pr5 { + padding-right: 5px; +} +.pb5 { + padding-bottom: 5px; +} +.mt5 { + margin-top: 5px; +} +.mr5 { + margin-right: 5px; +} +.mb5 { + margin-bottom: 5px; +} +.mb8 { + margin-bottom: 8px; +} +.ml5 { + margin-left: 5px; +} +.mt10 { + margin-top: 10px; +} +.mr10 { + margin-right: 10px; +} +.mb10 { + margin-bottom: 10px; +} +.ml10 { + margin-left: 10px; +} +.mt20 { + margin-top: 20px; +} +.mr20 { + margin-right: 20px; +} +.mb20 { + margin-bottom: 20px; +} +.ml20 { + margin-left: 20px; +} + +.h1, +.h2, +.h3, +.h4, +.h5, +.h6, +h1, +h2, +h3, +h4, +h5, +h6 { + font-family: inherit; + font-weight: 500; + line-height: 1.1; + color: inherit; +} + +.el-form .el-form-item__label { + font-weight: 700; +} +.el-dialog:not(.is-fullscreen) { + margin-top: 6vh !important; +} + +.el-dialog.scrollbar .el-dialog__body { + overflow: auto; + overflow-x: hidden; + max-height: 70vh; + padding: 10px 20px 0; +} + +.el-table { + .el-table__header-wrapper, + .el-table__fixed-header-wrapper { + th { + word-break: break-word; + color: #515a6e; + height: 40px !important; + font-size: 13px; + } + } + .el-table__body-wrapper { + .el-button [class*="el-icon-"] + span { + margin-left: 1px; + } + } +} + +/** 表单布局 **/ +.form-header { + font-size: 15px; + color: #6379bb; + border-bottom: 1px solid #ddd; + margin: 8px 10px 25px 10px; + padding-bottom: 5px; +} + +/** 表格布局 **/ +.pagination-container { + // position: relative; + height: 25px; + margin-bottom: 10px; + margin-top: 15px; + padding: 10px 20px !important; +} + +/* tree border */ +.tree-border { + margin-top: 5px; + border: 1px solid #e5e6e7; + background: #ffffff none; + border-radius: 4px; + width: 100%; +} + +.pagination-container .el-pagination { + right: 0; + position: absolute; +} + +@media (max-width: 768px) { + .pagination-container .el-pagination > .el-pagination__jump { + display: none !important; + } + .pagination-container .el-pagination > .el-pagination__sizes { + display: none !important; + } +} + +.el-table .fixed-width .el-button--small { + padding-left: 0; + padding-right: 0; + width: inherit; +} + +/** 表格更多操作下拉样式 */ +.el-table .el-dropdown-link { + cursor: pointer; + color: #409eff; + margin-left: 10px; +} + +.el-table .el-dropdown, +.el-icon-arrow-down { + font-size: 12px; +} + +.el-tree-node__content > .el-checkbox { + margin-right: 8px; +} + +.list-group-striped > .list-group-item { + border-left: 0; + border-right: 0; + border-radius: 0; + padding-left: 0; + padding-right: 0; +} + +.list-group { + padding-left: 0px; + list-style: none; +} + +.list-group-item { + border-bottom: 1px solid #e7eaec; + border-top: 1px solid #e7eaec; + margin-bottom: -1px; + padding: 11px 0px; + font-size: 13px; +} + +.pull-right { + float: right !important; +} + +.el-card__header { + padding: 14px 15px 7px !important; + min-height: 40px; +} + +.el-card__body { + padding: 15px 20px 20px 20px !important; +} + +.card-box { + padding-right: 15px; + padding-left: 15px; + margin-bottom: 10px; +} + +/* button color */ +.el-button--cyan.is-active, +.el-button--cyan:active { + background: #20b2aa; + border-color: #20b2aa; + color: #ffffff; +} + +.el-button--cyan:focus, +.el-button--cyan:hover { + background: #48d1cc; + border-color: #48d1cc; + color: #ffffff; +} + +.el-button--cyan { + background-color: #20b2aa; + border-color: #20b2aa; + color: #ffffff; +} + +/* text color */ +.text-navy { + color: #1ab394; +} + +.text-primary { + color: inherit; +} + +.text-success { + color: #1c84c6; +} + +.text-info { + color: #23c6c8; +} + +.text-warning { + color: #f8ac59; +} + +.text-danger { + color: #ed5565; +} + +.text-muted { + color: #888888; +} + +/* image */ +.img-circle { + border-radius: 50%; +} + +.img-lg { + width: 120px; + height: 120px; +} + +.avatar-upload-preview { + position: absolute; + top: 50%; + transform: translate(50%, -50%); + width: 200px; + height: 200px; + border-radius: 50%; + box-shadow: 0 0 4px #ccc; + overflow: hidden; +} + +/* 拖拽列样式 */ +.sortable-ghost { + opacity: 0.8; + color: #fff !important; + background: #42b983 !important; +} + +/* 表格右侧工具栏样式 */ +.top-right-btn { + margin-left: auto; +} + +.search-card { + padding: 18px 15px 0 15px !important; +} diff --git a/src/assets/styles/sidebar.scss b/src/assets/styles/sidebar.scss new file mode 100644 index 0000000..1b62a43 --- /dev/null +++ b/src/assets/styles/sidebar.scss @@ -0,0 +1,263 @@ +@use "variables.module"; + +.el-popper { + .nest-menu { + --el-menu-item-height: 40px; + --el-menu-sub-item-height: var(--el-menu-item-height); + width: calc(variables.$base-sidebar-width - 20px) !important; + + & .el-sub-menu .el-menu-item, + & .el-sub-menu .el-sub-menu__title, + .el-menu-item { + border-radius: 5px; + margin: 2px auto; + width: calc(variables.$base-sidebar-width - 40px) !important; + + .svg-icon { + margin-right: 16px; + } + } + } +} + +#app { + .main-container { + min-height: 100%; + transition: margin-left 0.28s; + margin-left: variables.$base-sidebar-width; + position: relative; + } + + .sidebarHide { + margin-left: 0 !important; + } + + .el-menu--collapse .el-menu .el-sub-menu { + min-width: variables.$base-sidebar-width !important; + } + + /** 侧边栏容器 */ + .sidebar-container { + height: 100%; + width: variables.$base-sidebar-width; + background-color: variables.$base-menu-background; + position: fixed; + font-size: 0px; + top: 0; + bottom: 0; + left: 0; + z-index: 1001; + overflow: hidden; + border-right: 1px solid #e6e6e6; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.1); + transition: width 0.26s cubic-bezier(0.4, 0, 0.2, 1); + + // reset element-ui css + .horizontal-collapse-transition { + transition: + 0s width ease-in-out, + 0s padding-left ease-in-out, + 0s padding-right ease-in-out; + } + + .scrollbar-wrapper { + overflow-x: hidden !important; + } + + .el-scrollbar__bar.is-vertical { + right: 0px; + } + + .el-scrollbar { + height: 100%; + } + + &.has-logo { + .el-scrollbar { + height: calc(100% - 50px); + } + } + + .is-horizontal { + display: none; + } + + a { + display: inline-block; + width: 100%; + overflow: hidden; + } + + .el-menu { + --el-menu-item-height: 46px; + --el-menu-sub-item-height: var(--el-menu-item-height); + border: none; + height: 100%; + width: 100%; + .el-sub-menu, + .el-menu-item { + overflow: hidden !important; + text-overflow: ellipsis !important; + white-space: nowrap !important; + .svg-icon { + margin-right: 16px; + } + + .menu-title { + max-width: calc(100% - 40px); + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + } + } + + & .submenu-title-noDropdown.el-menu-item, + & .el-sub-menu .el-menu-item, + & .el-sub-menu .el-sub-menu__title { + border-radius: 5px; + margin: 2px auto; + max-width: calc(variables.$base-sidebar-width - 20px) !important; + + &:hover { + background-color: rgba(0, 0, 0, 0.06); + } + + &.is-active { + &:hover { + background-color: var(--el-color-primary-light-9) !important; + } + } + } + + & .el-menu-item.is-active { + background-color: var(--el-color-primary-light-9); + } + } + + & .theme-dark { + & .submenu-title-noDropdown.el-menu-item, + & .el-sub-menu .el-menu-item, + & .el-sub-menu .el-sub-menu__title { + &.is-active { + &:hover { + background-color: var(--el-color-primary-light-9) !important; + } + } + } + & .is-active > .el-sub-menu__title { + color: variables.$base-menu-color-active !important; + } + } + } + + .hideSidebar { + .sidebar-container { + width: variables.$hide-sidebar-width !important; + .el-menu { + .el-sub-menu, + .el-menu-item { + .svg-icon { + margin-right: 0px; + } + } + + & .submenu-title-noDropdown.el-menu-item, + & .el-sub-menu .el-menu-item, + & .el-sub-menu .el-sub-menu__title { + max-width: calc(variables.$hide-sidebar-width - 10px) !important; + } + } + } + + .main-container { + margin-left: variables.$hide-sidebar-width; + } + + .el-menu--collapse { + .el-sub-menu { + & > .el-sub-menu__title { + & > span { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + & > i { + height: 0; + width: 0; + overflow: hidden; + visibility: hidden; + display: inline-block; + } + } + } + } + } + + // 针对移动端的响应式布局 + .mobile { + .main-container { + margin-left: 0px; + } + + .sidebar-container { + transition: transform 0.28s; + width: variables.$base-sidebar-width !important; + } + + &.hideSidebar { + .sidebar-container { + pointer-events: none; + transition-duration: 0.3s; + transform: translate3d(-(variables.$base-sidebar-width), 0, 0); + } + } + } + + .withoutAnimation { + .main-container, + .sidebar-container { + transition: none; + } + } +} + +// 当菜单隐藏时 +.el-menu--vertical { + & > .el-menu { + .svg-icon { + margin-right: 16px; + } + } + + .nest-menu .el-sub-menu > .el-sub-menu__title, + .el-menu-item { + &:hover { + background-color: rgba(0, 0, 0, 0.06) !important; + } + } + + // 子菜单太长时会出现滚动条 + > .el-menu--popup { + max-height: 100vh; + overflow-y: auto; + + &::-webkit-scrollbar-track-piece { + background: #d3dce6; + } + + &::-webkit-scrollbar { + width: 6px; + } + + &::-webkit-scrollbar-thumb { + background: #99a9bf; + border-radius: 20px; + } + } +} diff --git a/src/assets/styles/transition.scss b/src/assets/styles/transition.scss new file mode 100644 index 0000000..8546099 --- /dev/null +++ b/src/assets/styles/transition.scss @@ -0,0 +1,108 @@ +@use "sass:map"; + +/* + Vue 3 过渡类名规则: + - .v-enter-from: 进入动画的开始状态。 + - .v-enter-active: 进入动画的激活状态。 + - .v-enter-to: 进入动画的结束状态。 (Vue 2 的 .v-enter-to) + - .v-leave-from: 离开动画的开始状态。 + - .v-leave-active: 离开动画的激活状态。 + - .v-leave-to: 离开动画的结束状态。 (Vue 2 的 .v-leave-to) + + 注意: 'v' 是 组件 name 属性的默认值。 + 如果 , 那么类名将是 .fade-enter-from 等。 + 在 Vue 2 中,进入的起始类是 .v-enter,在 Vue 3 中是 .v-enter-from。 +*/ +// global transition css + +/* 淡入淡出(fade) */ +.fade-enter-active, +.fade-leave-active { + transition: opacity 0.28s; +} + +.fade-enter-from, +.fade-leave-active { + opacity: 0; +} + +// 淡入淡出带位移(支持四方向,Sass 简写) +$fade-transform-map: ( + "": ( + x: -30px, + y: 0, + out-x: 30px, + out-y: 0 + ), + "-left": ( + x: -30px, + y: 0, + out-x: 30px, + out-y: 0 + ), + // 默认左进右出 + "-right": + ( + x: 30px, + y: 0, + out-x: -30px, + out-y: 0 + ), + // 右进左出 + "-down": + ( + x: 0, + y: -30px, + out-x: 0, + out-y: 30px + ), + // 上进下出 + "-up": + ( + x: 0, + y: 30px, + out-x: 0, + out-y: -30px + ) + // 下进上出 +); + +@each $suffix, $val in $fade-transform-map { + .fade-transform#{$suffix}-enter-active, + .fade-transform#{$suffix}-leave-active { + transition: all 0.5s; + } + .fade-transform#{$suffix}-enter-from { + opacity: 0; + transform: translateX(map.get($val, x)) translateY(map.get($val, y)); + } + .fade-transform#{$suffix}-enter-to, + .fade-transform#{$suffix}-leave-from { + opacity: 1; + transform: translateX(0) translateY(0); + } + .fade-transform#{$suffix}-leave-to { + opacity: 0; + transform: translateX(map.get($val, out-x)) translateY(map.get($val, out-y)); + } +} + +/* 面包屑过度(breadcrumb transition) */ +.breadcrumb-enter-active, +.breadcrumb-leave-active { + transition: all 0.5s; +} + +.breadcrumb-enter-from, +.breadcrumb-leave-active { + opacity: 0; + transform: translateX(20px); +} + +.breadcrumb-move { + transition: all 0.5s; +} + +.breadcrumb-leave-active { + position: absolute; +} diff --git a/src/assets/styles/variables.module.scss b/src/assets/styles/variables.module.scss new file mode 100644 index 0000000..aee2e97 --- /dev/null +++ b/src/assets/styles/variables.module.scss @@ -0,0 +1,77 @@ +// base color +$blue: #324157; +$light-blue: #3a71a8; +$red: #c03639; +$pink: #e65d6e; +$green: #30b08f; +$tiffany: #4ab7bd; +$yellow: #fec171; +$panGreen: #30b08f; + +// 默认菜单主题风格 +$base-menu-color: #bfcbd9; +$base-menu-color-active: #f4f4f5; +$base-menu-background: #304156; +$base-logo-title-color: #ffffff; + +$base-menu-light-color: rgba(0, 0, 0, 0.7); +$base-menu-light-background: #ffffff; +$base-logo-light-title-color: #001529; + +$base-sub-menu-background: #1f2d3d; +$base-sub-menu-hover: #001528; + +// 自定义暗色菜单风格 +/** +$base-menu-color:hsla(0,0%,100%,.65); +$base-menu-color-active:#fff; +$base-menu-background:#001529; +$base-logo-title-color: #ffffff; + +$base-menu-light-color:rgba(0,0,0,.70); +$base-menu-light-background:#ffffff; +$base-logo-light-title-color: #001529; + +$base-sub-menu-background:#000c17; +$base-sub-menu-hover:#001528; +*/ + +$color-primary: #409eff; +$color-success: #67c23a; +$color-warning: #e6a23c; +$color-danger: #f56c6c; +$color-info: #909399; + +$page-background-color: #fafbfc; + +// 侧边栏相关配置 +$base-sidebar-width: 240px; +$hide-sidebar-width: 64px; + +// 顶部导航栏相关配置 +$navbar-height: 50px; +$navbar-color: $page-background-color; // (颜色与page不相同时会自动显示阴影) + +// 标签视图相关配置 +$tags-view-height: 44px; +$tags-view-color: $page-background-color; // (颜色与page不相同时会自动显示阴影) + +// the :export directive is the magic sauce for webpack +// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass +:export { + menuColor: $base-menu-color; + menuLightColor: $base-menu-light-color; + menuColorActive: $base-menu-color-active; + menuBackground: $base-menu-background; + menuLightBackground: $base-menu-light-background; + subMenuBackground: $base-sub-menu-background; + subMenuHover: $base-sub-menu-hover; + sideBarWidth: $base-sidebar-width; + logoTitleColor: $base-logo-title-color; + logoLightTitleColor: $base-logo-light-title-color; + primaryColor: $color-primary; + successColor: $color-success; + dangerColor: $color-danger; + infoColor: $color-info; + warningColor: $color-warning; +} diff --git a/src/components/Crontab/day.vue b/src/components/Crontab/day.vue new file mode 100644 index 0000000..7f8117a --- /dev/null +++ b/src/components/Crontab/day.vue @@ -0,0 +1,174 @@ + + + + \ No newline at end of file diff --git a/src/components/Crontab/hour.vue b/src/components/Crontab/hour.vue new file mode 100644 index 0000000..53154fa --- /dev/null +++ b/src/components/Crontab/hour.vue @@ -0,0 +1,127 @@ + + + + + \ No newline at end of file diff --git a/src/components/Crontab/index.vue b/src/components/Crontab/index.vue new file mode 100644 index 0000000..9ff4505 --- /dev/null +++ b/src/components/Crontab/index.vue @@ -0,0 +1,317 @@ + + + + + \ No newline at end of file diff --git a/src/components/Crontab/min.vue b/src/components/Crontab/min.vue new file mode 100644 index 0000000..0deb94c --- /dev/null +++ b/src/components/Crontab/min.vue @@ -0,0 +1,126 @@ + + + + \ No newline at end of file diff --git a/src/components/Crontab/month.vue b/src/components/Crontab/month.vue new file mode 100644 index 0000000..d1a1512 --- /dev/null +++ b/src/components/Crontab/month.vue @@ -0,0 +1,141 @@ + + + + + \ No newline at end of file diff --git a/src/components/Crontab/result.vue b/src/components/Crontab/result.vue new file mode 100644 index 0000000..5a812ee --- /dev/null +++ b/src/components/Crontab/result.vue @@ -0,0 +1,540 @@ + + + \ No newline at end of file diff --git a/src/components/Crontab/second.vue b/src/components/Crontab/second.vue new file mode 100644 index 0000000..c6088d2 --- /dev/null +++ b/src/components/Crontab/second.vue @@ -0,0 +1,128 @@ + + + + + \ No newline at end of file diff --git a/src/components/Crontab/week.vue b/src/components/Crontab/week.vue new file mode 100644 index 0000000..46e944c --- /dev/null +++ b/src/components/Crontab/week.vue @@ -0,0 +1,197 @@ + + + + + \ No newline at end of file diff --git a/src/components/Crontab/year.vue b/src/components/Crontab/year.vue new file mode 100644 index 0000000..2128d55 --- /dev/null +++ b/src/components/Crontab/year.vue @@ -0,0 +1,149 @@ + + + + + \ No newline at end of file diff --git a/src/components/DictTag/index.vue b/src/components/DictTag/index.vue new file mode 100644 index 0000000..f4778fd --- /dev/null +++ b/src/components/DictTag/index.vue @@ -0,0 +1,36 @@ + + + + + \ No newline at end of file diff --git a/src/components/Editor/index.vue b/src/components/Editor/index.vue new file mode 100644 index 0000000..2235476 --- /dev/null +++ b/src/components/Editor/index.vue @@ -0,0 +1,307 @@ + + + + + diff --git a/src/components/Hamburger/index.vue b/src/components/Hamburger/index.vue new file mode 100644 index 0000000..dfd8732 --- /dev/null +++ b/src/components/Hamburger/index.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/HeaderSearch/index.vue b/src/components/HeaderSearch/index.vue new file mode 100644 index 0000000..a1931c0 --- /dev/null +++ b/src/components/HeaderSearch/index.vue @@ -0,0 +1,244 @@ + + + + + \ No newline at end of file diff --git a/src/components/IconSelect/index.vue b/src/components/IconSelect/index.vue new file mode 100644 index 0000000..d69c26a --- /dev/null +++ b/src/components/IconSelect/index.vue @@ -0,0 +1,70 @@ + + + \ No newline at end of file diff --git a/src/components/IconSelect/requireIcons.ts b/src/components/IconSelect/requireIcons.ts new file mode 100644 index 0000000..82fb85d --- /dev/null +++ b/src/components/IconSelect/requireIcons.ts @@ -0,0 +1,8 @@ +let icons: string[] = [] +const modules = import.meta.glob('./../../assets/icons/svg/*.svg'); +for (const path in modules) { + const p = path.split('assets/icons/svg/')[1].split('.svg')[0]; + icons.push(p); +} + +export default icons \ No newline at end of file diff --git a/src/components/ImagePreview/index.vue b/src/components/ImagePreview/index.vue new file mode 100644 index 0000000..4587be9 --- /dev/null +++ b/src/components/ImagePreview/index.vue @@ -0,0 +1,91 @@ + + + diff --git a/src/components/JsBarcodeView/index.vue b/src/components/JsBarcodeView/index.vue new file mode 100644 index 0000000..bce5bc9 --- /dev/null +++ b/src/components/JsBarcodeView/index.vue @@ -0,0 +1,25 @@ + + \ No newline at end of file diff --git a/src/components/NGTools/NGCom.vue b/src/components/NGTools/NGCom.vue new file mode 100644 index 0000000..fe6f725 --- /dev/null +++ b/src/components/NGTools/NGCom.vue @@ -0,0 +1,265 @@ + + + + + diff --git a/src/components/NGTools/NGResult.vue b/src/components/NGTools/NGResult.vue new file mode 100644 index 0000000..683543c --- /dev/null +++ b/src/components/NGTools/NGResult.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/src/components/NGTools/meterPar.vue b/src/components/NGTools/meterPar.vue new file mode 100644 index 0000000..12eed84 --- /dev/null +++ b/src/components/NGTools/meterPar.vue @@ -0,0 +1,478 @@ + + + + diff --git a/src/components/NGTools/meterResult.vue b/src/components/NGTools/meterResult.vue new file mode 100644 index 0000000..09e3b14 --- /dev/null +++ b/src/components/NGTools/meterResult.vue @@ -0,0 +1,231 @@ + + + + diff --git a/src/components/Pagination/index.vue b/src/components/Pagination/index.vue new file mode 100644 index 0000000..3333e6a --- /dev/null +++ b/src/components/Pagination/index.vue @@ -0,0 +1,59 @@ + + + \ No newline at end of file diff --git a/src/components/ParentView/index.vue b/src/components/ParentView/index.vue new file mode 100644 index 0000000..98240ae --- /dev/null +++ b/src/components/ParentView/index.vue @@ -0,0 +1,3 @@ + diff --git a/src/components/Process/README.md b/src/components/Process/README.md new file mode 100644 index 0000000..0439e31 --- /dev/null +++ b/src/components/Process/README.md @@ -0,0 +1,181 @@ + +## 界面布局结构 +- palette(工具栏) :提供拖拽工具、框选工具、连线工具、基本图元等 +- contextPad(上下文面板):可以理解为快捷面板 +- propertiesPanel(属性面板):定义流程图中图形元素属性 +- shape(图形) 是所有图形的基类(比如Connection,Root) + +## 导入与导出 +```` +## 导入 +// 异步方式(推荐) +let result = await bpmnModeler.importXML(xml) + +// 回调方式 +bpmnModeler.importXML(xml, (result) => {} ) + +### 导出xml +// 异步方式 +let { xml } = await bpmnModeler.saveXML() + +// 回调方式 +bpmnModeler.saveXML({ format: false },({ xml }) => {}) + +// 格式化导出的xml +let { xml } = await bpmnModeler.saveXML({ format: true }) + +### 导出svg +// 异步方式 +let { svg } = await bpmnModeler.saveSVG() + +// 回调方式 +bpmnModeler.saveXML(( { svg } )=>{ }) + +## 导入的生命周期事件如下: +import.parse.start (即将从xml读取模型) +import.parse.complete (模型读取完成) +import.render.start (图形导入开始) +import.render.complete (图形导入完成) +import.done (一切都完成) + +```` + +## 内部模块/供应商/服务 + +- eventBus - 事件总线,管理bpmn实例中所有事件 +- canvas - 画布,管理svg元素、连线/图形的添加/删除、缩放等 +- commandStack - 命令堆栈,管理bpmn内部所有命令操作,提供撤销、重做功能等 +- elementRegistry - 元素注册表,管理bpmn内部所有元素 +- moddle - 模型管理,用于管理bpmn的xml结构 +- modeling - 建模器,绘图时用到,提供用于更新画布上元素的 API(移动、删除) + +```` +## 获取一个模块 + +// 第一个参数为模块名称,第二参数表示是否严格模式 +bpmnModeler.get("模块名称",false) + +```` + +## 事件总线 - eventBus +```` +## 获取事件总线模块 +let eventBus = bpmnModeler.get("eventBus") + +## 监听事件 +// 监听事件 +eventBus.on('element.changed', (ev) => {}) + +// 监听多个事件 +eventBus.on( + ['shape.added', 'connection.added', 'shape.removed', 'connection.removed'], + (ev) => { + } +) + +// 设置优先级 +eventBus.on('element.changed', 100, (ev) => {}) + +// 传入上下文 +eventBus.on('element.changed', (ev) => {}, that) + +// 使用所有参数 +eventBus.on('事件名称', 优先级(可选), 回调函数, 上下文(可选)) + +## 只监听一次事件 + +// 用法同on +eventBus.once('事件名称', 优先级(可选), 回调函数, 上下文(可选)) + +## 取消监听事件 +// 取消监听 +eventBus.off('element.changed', callback) + +// 取消监听多个事件 +eventBus.off(['shape.added', 'connection.added', 'shape.removed', 'connection.removed'], callback) + +## 触发事件 +eventBus.fire('element.changed', data) + +```` + +## 画布 - canvas + +```` +## 获取画布模块 +let canvas = bpmnModeler.get("canvas") + +## 缩放 + +/** + * + * @param {'fit-viewport' | 'fit-content' | number} lvl + * @param {'auto'|{ x: number, y: number }} center + */ +function zoom(lvl, center) { + let canvas = bpmnModeler.get('canvas') + canvas.zoom(lvl, center) +} + +// 适应容器缩放 +zoom('fit-canvas','auto') + +// 完全显示内容 +zoom('fit-content','auto') + +## 对齐(选择多个元素使用shift+鼠标左键) +/** + * 获取当前选集并对齐 + * @param {'left'|'right'|'top'|'bottom'|'middle'|'center'} mode + */ +function align(mode) { + const align = bpmnModeler.get('alignElements') + const selection = bpmnModeler.get('selection') + const elements = selection.get() + if (!elements || elements.length === 0) { + return + } + + align.trigger(elements, mode) +} + +```` + +## 元素注册表 - elementRegistry +```` +## 获取元素注册表模块 +let elementRegistry = bpmnModeler.get('elementRegistry') + +## 遍历所有元素 +elementRegistry.forEach((shape, svgElement) => { }) + +## 获取指定元素 +let shape = elementRegistry.get(元素id或者SVGElement) + +## 获取过滤后的元素 +let shapes = elementRegistry.filter((shape) => shape.type === 'bpmn:Task') + +## 更新元素ID +elementRegistry.updateId(shape, "123xxxxsssd") + +## 删除一个元素 +elementRegistry .remove(传入SVGElement) + +## 模型 - moddle +基本上没有用到,具体类型定义见此 + +## 建模器 - modeling +获取建模器模块 +let modeling= bpmnModeler.get('modeling') + +## 修改元素显示文本(常用) +modeling.updateLabel(shape, '审核') + +## 修改元素属性(常用) +modeling.updateProperties(shape, { 属性名称: 属性值 }) + +## 对齐元素集合 +const selection = bpmnModeler.get('selection') +const elements = selection.get() +modeling.updateProperties(selection, 'left') +```` \ No newline at end of file diff --git a/src/components/Process/common/bpmnUtils.js b/src/components/Process/common/bpmnUtils.js new file mode 100644 index 0000000..ae6d267 --- /dev/null +++ b/src/components/Process/common/bpmnUtils.js @@ -0,0 +1,124 @@ +import { NodeName } from '../lang/zh' + +// 创建监听器实例 +export function createListenerObject(moddle, options, isTask, prefix) { + const listenerObj = Object.create(null); + listenerObj.event = options.event; + isTask && (listenerObj.id = options.id); // 任务监听器特有的 id 字段 + switch (options.listenerType) { + case "scriptListener": + listenerObj.type = "script" + listenerObj.script = createScriptObject(moddle, options, prefix); + break; + case "expressionListener": + listenerObj.expression = options.expression; + break; + case "delegateExpressionListener": + listenerObj.delegateExpression = options.delegateExpression; + break; + default: + listenerObj.class = options.class; + } + // 注入字段 + if (options.fields) { + listenerObj.fields = options.fields.map(field => { + return createFieldObject(moddle, field, prefix); + }); + } + // 任务监听器的 定时器 设置 + if (isTask && options.event === "timeout" && !!options.eventDefinitionType) { + const timeDefinition = moddle.create("bpmn:FormalExpression", { + body: options.eventTimeDefinitions + }); + const TimerEventDefinition = moddle.create("bpmn:TimerEventDefinition", { + id: `TimerEventDefinition_${uuid(8)}`, + [`time${options.eventDefinitionType.replace(/^\S/, s => s.toUpperCase())}`]: timeDefinition + }); + listenerObj.eventDefinitions = [TimerEventDefinition]; + } + return moddle.create(`${prefix}:${isTask ? "TaskListener" : "ExecutionListener"}`, listenerObj); +} + +// 处理内置流程监听器 +export function createSystemListenerObject(moddle, options, isTask, prefix) { + const listenerObj = Object.create(null); + listenerObj.event = options.eventType; + listenerObj.listenerType = options.valueType; + switch (options.valueType) { + case "scriptListener": + listenerObj.type = "script" + listenerObj.script = createScriptObject(moddle, options, prefix); + break; + case "expressionListener": + listenerObj.expression = options.expression; + break; + case "delegateExpressionListener": + listenerObj.delegateExpression = options.delegateExpression ?? options.value; + break; + default: + listenerObj.class = options.value; + } + return moddle.create(`${prefix}:${isTask ? "TaskListener" : "ExecutionListener"}`, listenerObj); +} + +// 转换成字段 +export function changeListenerObject(options) { + const listenerObj = Object.create(null); + listenerObj.event = options.eventType; + listenerObj.listenerType = options.valueType; + switch (options.valueType) { + case "scriptListener": + listenerObj.type = "script" + listenerObj.script = createScriptObject(moddle, options, prefix); + break; + case "expressionListener": + listenerObj.expression = options.expression; + break; + case "delegateExpressionListener": + listenerObj.delegateExpression = options.delegateExpression ?? options.value; + break; + default: + listenerObj.class = options.value; + } + return listenerObj; +} + +// 创建 监听器的注入字段 实例 +export function createFieldObject(moddle, option, prefix) { + const { name, fieldType, string, expression } = option; + const fieldConfig = fieldType === "string" ? { name, string } : { name, expression }; + return moddle.create(`${prefix}:Field`, fieldConfig); +} + +// 创建脚本实例 +export function createScriptObject(moddle, options, prefix) { + const { scriptType, scriptFormat, value, resource } = options; + const scriptConfig = scriptType === "inlineScript" ? { scriptFormat, value } : { scriptFormat, resource }; + // scriptConfig.language = scriptFormat; + return moddle.create(`${prefix}:Script`, scriptConfig); +} + +// 更新元素扩展属性 +export function updateElementExtensions(moddle, modeling, element, extensionList) { + const extensions = moddle.create("bpmn:ExtensionElements", { + values: extensionList + }); + modeling.updateProperties(element, { + extensionElements: extensions + }); +} + +// 创建一个id +export function uuid(length = 8, chars) { + let result = ""; + let charsString = chars || "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"; + for (let i = length; i > 0; --i) { + result += charsString[Math.floor(Math.random() * charsString.length)]; + } + return result; +} + +// 转换流程节点名称 +export function translateNodeName(node) { + return NodeName[node]; +} diff --git a/src/components/Process/common/global.js b/src/components/Process/common/global.js new file mode 100644 index 0000000..f791992 --- /dev/null +++ b/src/components/Process/common/global.js @@ -0,0 +1,17 @@ +// 全局流程相关变量 +const modelerStore = { + 'userList': [], + 'roleList': [], + 'expList': [], + 'modeler': null, + 'modeling': null, + 'moddle': null, + 'canvas': null, + 'bpmnFactory': null, + 'elRegistry': null, + 'element': null, + +} +export default { + modelerStore, +} diff --git a/src/components/Process/common/index.js b/src/components/Process/common/index.js new file mode 100644 index 0000000..8db46bd --- /dev/null +++ b/src/components/Process/common/index.js @@ -0,0 +1,17 @@ +import Viewer from "bpmn-js/lib/Viewer"; +import ZoomScrollModule from "diagram-js/lib/navigation/zoomscroll"; +import MoveCanvasModule from "diagram-js/lib/navigation/movecanvas"; + +export class CustomViewer extends Viewer { + constructor(options) { + super(options); + } + + static get _modules() { + return [ + ...Viewer.prototype._modules, + ZoomScrollModule, + MoveCanvasModule + ]; + } +} \ No newline at end of file diff --git a/src/components/Process/common/packed-config.js b/src/components/Process/common/packed-config.js new file mode 100644 index 0000000..0812fda --- /dev/null +++ b/src/components/Process/common/packed-config.js @@ -0,0 +1,1769 @@ +function getAugmentedNamespace(n) { + var f = n.default; + if (typeof f == "function") { + var a = function () { + return f.apply(this, arguments); + }; + a.prototype = f.prototype; + } else a = {}; + Object.defineProperty(a, '__esModule', { value: true }); + Object.keys(n).forEach(function (k) { + var d = Object.getOwnPropertyDescriptor(n, k); + Object.defineProperty(a, k, d.get ? d : { + enumerable: true, + get: function () { + return n[k]; + } + }); + }); + return a; +} + +/** + * A rule that checks that sequence flows outgoing from a + * conditional forking gateway or activity are + * either default flows _or_ have a condition attached + */ + +var conditionalFlows = function () { + + function check(node, reporter) { + + if (!isConditionalForking(node)) { + return; + } + + const outgoing = node.outgoing || []; + + outgoing.forEach((flow) => { + const missingCondition = ( + !hasCondition$2(flow) && + !isDefaultFlow$1(node, flow) + ); + + if (missingCondition) { + reporter.report(flow.id, 'Sequence flow is missing condition', ['conditionExpression']); + } + }); + } + + return { + check + }; + +}; + + +// helpers ///////////////////////////// + +function isConditionalForking(node) { + + const defaultFlow = node['default']; + const outgoing = node.outgoing || []; + + return defaultFlow || outgoing.find(hasCondition$2); +} + +function hasCondition$2(flow) { + return !!flow.conditionExpression; +} + +function isDefaultFlow$1(node, flow) { + return node['default'] === flow; +} + +/** + * Checks whether node is of specific bpmn type. + * + * @param {ModdleElement} node + * @param {String} type + * + * @return {Boolean} + */ +function is$g(node, type) { + + if (type.indexOf(':') === -1) { + type = 'bpmn:' + type; + } + + return ( + (typeof node.$instanceOf === 'function') + ? node.$instanceOf(type) + : node.$type === type + ); +} + +/** + * Checks whether node has any of the specified types. + * + * @param {ModdleElement} node + * @param {Array} types + * + * @return {Boolean} + */ +function isAny$6(node, types) { + return types.some(function (type) { + return is$g(node, type); + }); +} + +var index_esm$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + is: is$g, + isAny: isAny$6 +}); + +var require$$0 = /*@__PURE__*/getAugmentedNamespace(index_esm$1); + +const { + is: is$f, + isAny: isAny$5 +} = require$$0; + + +/** + * A rule that checks the presence of an end event per scope. + */ +var endEventRequired = function () { + + function hasEndEvent(node) { + const flowElements = node.flowElements || []; + + return ( + flowElements.some(node => is$f(node, 'bpmn:EndEvent')) + ); + } + + function check(node, reporter) { + + if (!isAny$5(node, [ + 'bpmn:Process', + 'bpmn:SubProcess' + ])) { + return; + } + + if (!hasEndEvent(node)) { + const type = is$f(node, 'bpmn:SubProcess') ? 'Sub process' : 'Process'; + + reporter.report(node.id, type + ' is missing end event'); + } + } + + return { check }; +}; + +const { + is: is$e +} = require$$0; + +/** + * A rule that checks that start events inside an event sub-process + * are typed. + */ +var eventSubProcessTypedStartEvent = function () { + + function check(node, reporter) { + + if (!is$e(node, 'bpmn:SubProcess') || !node.triggeredByEvent) { + return; + } + + const flowElements = node.flowElements || []; + + flowElements.forEach(function (flowElement) { + + if (!is$e(flowElement, 'bpmn:StartEvent')) { + return false; + } + + const eventDefinitions = flowElement.eventDefinitions || []; + + if (eventDefinitions.length === 0) { + reporter.report(flowElement.id, 'Start event is missing event definition', ['eventDefinitions']); + } + }); + } + + return { + check + }; + +}; + +const { + isAny: isAny$4 +} = require$$0; + +/** + * A rule that checks that no fake join is modeled by attempting + * to give a task or event join semantics. + * + * Users should model a parallel joining gateway + * to achieve the desired behavior. + */ +var fakeJoin = function () { + + function check(node, reporter) { + + if (!isAny$4(node, [ + 'bpmn:Task', + 'bpmn:Event' + ])) { + return; + } + + const incoming = node.incoming || []; + + if (incoming.length > 1) { + reporter.report(node.id, 'Incoming flows do not join'); + } + } + + return { + check + }; + +}; + +const { + is: is$d, + isAny: isAny$3 +} = require$$0; + + +/** + * A rule that checks the presence of a label. + */ +var labelRequired = function () { + + function check(node, reporter) { + + if (isAny$3(node, [ + 'bpmn:ParallelGateway', + 'bpmn:EventBasedGateway' + ])) { + return; + } + + // ignore joining gateways + if (is$d(node, 'bpmn:Gateway') && !isForking(node)) { + return; + } + + if (is$d(node, 'bpmn:BoundaryEvent')) { + return; + } + + // ignore sub-processes + if (is$d(node, 'bpmn:SubProcess')) { + + // TODO(nikku): better ignore expanded sub-processes only + return; + } + + // ignore sequence flow without condition + if (is$d(node, 'bpmn:SequenceFlow') && !hasCondition$1(node)) { + return; + } + + // ignore data objects and artifacts for now + if (isAny$3(node, [ + 'bpmn:FlowNode', + 'bpmn:SequenceFlow', + 'bpmn:Participant', + 'bpmn:Lane' + ])) { + + const name = (node.name || '').trim(); + + if (name.length === 0) { + reporter.report(node.id, 'Element is missing label/name', ['name']); + } + } + } + + return { check }; +}; + + +// helpers //////////////////////// + +function isForking(node) { + const outgoing = node.outgoing || []; + + return outgoing.length > 1; +} + +function hasCondition$1(node) { + return node.conditionExpression; +} + +/** + * Flatten array, one level deep. + * + * @param {Array} arr + * + * @return {Array} + */ +function flatten$1(arr) { + return Array.prototype.concat.apply([], arr); +} + +var nativeToString = Object.prototype.toString; +var nativeHasOwnProperty = Object.prototype.hasOwnProperty; +function isUndefined(obj) { + return obj === undefined; +} +function isDefined(obj) { + return obj !== undefined; +} +function isNil(obj) { + return obj == null; +} +function isArray(obj) { + return nativeToString.call(obj) === '[object Array]'; +} +function isObject(obj) { + return nativeToString.call(obj) === '[object Object]'; +} +function isNumber(obj) { + return nativeToString.call(obj) === '[object Number]'; +} +function isFunction(obj) { + var tag = nativeToString.call(obj); + return tag === '[object Function]' || tag === '[object AsyncFunction]' || tag === '[object GeneratorFunction]' || tag === '[object AsyncGeneratorFunction]' || tag === '[object Proxy]'; +} +function isString(obj) { + return nativeToString.call(obj) === '[object String]'; +} +/** + * Ensure collection is an array. + * + * @param {Object} obj + */ + +function ensureArray(obj) { + if (isArray(obj)) { + return; + } + + throw new Error('must supply array'); +} +/** + * Return true, if target owns a property with the given key. + * + * @param {Object} target + * @param {String} key + * + * @return {Boolean} + */ + +function has(target, key) { + return nativeHasOwnProperty.call(target, key); +} + +/** + * Find element in collection. + * + * @param {Array|Object} collection + * @param {Function|Object} matcher + * + * @return {Object} + */ + +function find(collection, matcher) { + matcher = toMatcher(matcher); + var match; + forEach(collection, function (val, key) { + if (matcher(val, key)) { + match = val; + return false; + } + }); + return match; +} +/** + * Find element index in collection. + * + * @param {Array|Object} collection + * @param {Function} matcher + * + * @return {Object} + */ + +function findIndex(collection, matcher) { + matcher = toMatcher(matcher); + var idx = isArray(collection) ? -1 : undefined; + forEach(collection, function (val, key) { + if (matcher(val, key)) { + idx = key; + return false; + } + }); + return idx; +} +/** + * Find element in collection. + * + * @param {Array|Object} collection + * @param {Function} matcher + * + * @return {Array} result + */ + +function filter(collection, matcher) { + var result = []; + forEach(collection, function (val, key) { + if (matcher(val, key)) { + result.push(val); + } + }); + return result; +} +/** + * Iterate over collection; returning something + * (non-undefined) will stop iteration. + * + * @param {Array|Object} collection + * @param {Function} iterator + * + * @return {Object} return result that stopped the iteration + */ + +function forEach(collection, iterator) { + var val, result; + + if (isUndefined(collection)) { + return; + } + + var convertKey = isArray(collection) ? toNum : identity; + + for (var key in collection) { + if (has(collection, key)) { + val = collection[key]; + result = iterator(val, convertKey(key)); + + if (result === false) { + return val; + } + } + } +} +/** + * Return collection without element. + * + * @param {Array} arr + * @param {Function} matcher + * + * @return {Array} + */ + +function without(arr, matcher) { + if (isUndefined(arr)) { + return []; + } + + ensureArray(arr); + matcher = toMatcher(matcher); + return arr.filter(function (el, idx) { + return !matcher(el, idx); + }); +} +/** + * Reduce collection, returning a single result. + * + * @param {Object|Array} collection + * @param {Function} iterator + * @param {Any} result + * + * @return {Any} result returned from last iterator + */ + +function reduce(collection, iterator, result) { + forEach(collection, function (value, idx) { + result = iterator(result, value, idx); + }); + return result; +} +/** + * Return true if every element in the collection + * matches the criteria. + * + * @param {Object|Array} collection + * @param {Function} matcher + * + * @return {Boolean} + */ + +function every(collection, matcher) { + return !!reduce(collection, function (matches, val, key) { + return matches && matcher(val, key); + }, true); +} +/** + * Return true if some elements in the collection + * match the criteria. + * + * @param {Object|Array} collection + * @param {Function} matcher + * + * @return {Boolean} + */ + +function some(collection, matcher) { + return !!find(collection, matcher); +} +/** + * Transform a collection into another collection + * by piping each member through the given fn. + * + * @param {Object|Array} collection + * @param {Function} fn + * + * @return {Array} transformed collection + */ + +function map(collection, fn) { + var result = []; + forEach(collection, function (val, key) { + result.push(fn(val, key)); + }); + return result; +} +/** + * Get the collections keys. + * + * @param {Object|Array} collection + * + * @return {Array} + */ + +function keys(collection) { + return collection && Object.keys(collection) || []; +} +/** + * Shorthand for `keys(o).length`. + * + * @param {Object|Array} collection + * + * @return {Number} + */ + +function size(collection) { + return keys(collection).length; +} +/** + * Get the values in the collection. + * + * @param {Object|Array} collection + * + * @return {Array} + */ + +function values(collection) { + return map(collection, function (val) { + return val; + }); +} +/** + * Group collection members by attribute. + * + * @param {Object|Array} collection + * @param {Function} extractor + * + * @return {Object} map with { attrValue => [ a, b, c ] } + */ + +function groupBy(collection, extractor) { + var grouped = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {}; + extractor = toExtractor(extractor); + forEach(collection, function (val) { + var discriminator = extractor(val) || '_'; + var group = grouped[discriminator]; + + if (!group) { + group = grouped[discriminator] = []; + } + + group.push(val); + }); + return grouped; +} +function uniqueBy(extractor) { + extractor = toExtractor(extractor); + var grouped = {}; + + for (var _len = arguments.length, collections = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + collections[_key - 1] = arguments[_key]; + } + + forEach(collections, function (c) { + return groupBy(c, extractor, grouped); + }); + var result = map(grouped, function (val, key) { + return val[0]; + }); + return result; +} +var unionBy = uniqueBy; +/** + * Sort collection by criteria. + * + * @param {Object|Array} collection + * @param {String|Function} extractor + * + * @return {Array} + */ + +function sortBy(collection, extractor) { + extractor = toExtractor(extractor); + var sorted = []; + forEach(collection, function (value, key) { + var disc = extractor(value, key); + var entry = { + d: disc, + v: value + }; + + for (var idx = 0; idx < sorted.length; idx++) { + var d = sorted[idx].d; + + if (disc < d) { + sorted.splice(idx, 0, entry); + return; + } + } // not inserted, append (!) + + + sorted.push(entry); + }); + return map(sorted, function (e) { + return e.v; + }); +} +/** + * Create an object pattern matcher. + * + * @example + * + * const matcher = matchPattern({ id: 1 }); + * + * let element = find(elements, matcher); + * + * @param {Object} pattern + * + * @return {Function} matcherFn + */ + +function matchPattern(pattern) { + return function (el) { + return every(pattern, function (val, key) { + return el[key] === val; + }); + }; +} + +function toExtractor(extractor) { + return isFunction(extractor) ? extractor : function (e) { + return e[extractor]; + }; +} + +function toMatcher(matcher) { + return isFunction(matcher) ? matcher : function (e) { + return e === matcher; + }; +} + +function identity(arg) { + return arg; +} + +function toNum(arg) { + return Number(arg); +} + +/** + * Debounce fn, calling it only once if the given time + * elapsed between calls. + * + * Lodash-style the function exposes methods to `#clear` + * and `#flush` to control internal behavior. + * + * @param {Function} fn + * @param {Number} timeout + * + * @return {Function} debounced function + */ +function debounce(fn, timeout) { + var timer; + var lastArgs; + var lastThis; + var lastNow; + + function fire(force) { + var now = Date.now(); + var scheduledDiff = force ? 0 : lastNow + timeout - now; + + if (scheduledDiff > 0) { + return schedule(scheduledDiff); + } + + fn.apply(lastThis, lastArgs); + clear(); + } + + function schedule(timeout) { + timer = setTimeout(fire, timeout); + } + + function clear() { + if (timer) { + clearTimeout(timer); + } + + timer = lastNow = lastArgs = lastThis = undefined; + } + + function flush() { + if (timer) { + fire(true); + } + + clear(); + } + + function callback() { + lastNow = Date.now(); + + for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = arguments[_key]; + } + + lastArgs = args; + lastThis = this; // ensure an execution is scheduled + + if (!timer) { + schedule(timeout); + } + } + + callback.flush = flush; + callback.cancel = clear; + return callback; +} +/** + * Throttle fn, calling at most once + * in the given interval. + * + * @param {Function} fn + * @param {Number} interval + * + * @return {Function} throttled function + */ + +function throttle(fn, interval) { + var throttling = false; + return function () { + if (throttling) { + return; + } + + fn.apply(void 0, arguments); + throttling = true; + setTimeout(function () { + throttling = false; + }, interval); + }; +} +/** + * Bind function against target . + * + * @param {Function} fn + * @param {Object} target + * + * @return {Function} bound function + */ + +function bind(fn, target) { + return fn.bind(target); +} + +function _typeof(obj) { + "@babel/helpers - typeof"; + + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); +} + +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +/** + * Convenience wrapper for `Object.assign`. + * + * @param {Object} target + * @param {...Object} others + * + * @return {Object} the target + */ + +function assign(target) { + for (var _len = arguments.length, others = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + others[_key - 1] = arguments[_key]; + } + + return _extends.apply(void 0, [target].concat(others)); +} +/** + * Sets a nested property of a given object to the specified value. + * + * This mutates the object and returns it. + * + * @param {Object} target The target of the set operation. + * @param {(string|number)[]} path The path to the nested value. + * @param {any} value The value to set. + */ + +function set(target, path, value) { + var currentTarget = target; + forEach(path, function (key, idx) { + if (typeof key !== 'number' && typeof key !== 'string') { + throw new Error('illegal key type: ' + _typeof(key) + '. Key should be of type number or string.'); + } + + if (key === 'constructor') { + throw new Error('illegal key: constructor'); + } + + if (key === '__proto__') { + throw new Error('illegal key: __proto__'); + } + + var nextKey = path[idx + 1]; + var nextTarget = currentTarget[key]; + + if (isDefined(nextKey) && isNil(nextTarget)) { + nextTarget = currentTarget[key] = isNaN(+nextKey) ? {} : []; + } + + if (isUndefined(nextKey)) { + if (isUndefined(value)) { + delete currentTarget[key]; + } else { + currentTarget[key] = value; + } + } else { + currentTarget = nextTarget; + } + }); + return target; +} +/** + * Gets a nested property of a given object. + * + * @param {Object} target The target of the get operation. + * @param {(string|number)[]} path The path to the nested value. + * @param {any} [defaultValue] The value to return if no value exists. + */ + +function get(target, path, defaultValue) { + var currentTarget = target; + forEach(path, function (key) { + // accessing nil property yields + if (isNil(currentTarget)) { + currentTarget = undefined; + return false; + } + + currentTarget = currentTarget[key]; + }); + return isUndefined(currentTarget) ? defaultValue : currentTarget; +} +/** + * Pick given properties from the target object. + * + * @param {Object} target + * @param {Array} properties + * + * @return {Object} target + */ + +function pick(target, properties) { + var result = {}; + var obj = Object(target); + forEach(properties, function (prop) { + if (prop in obj) { + result[prop] = target[prop]; + } + }); + return result; +} +/** + * Pick all target properties, excluding the given ones. + * + * @param {Object} target + * @param {Array} properties + * + * @return {Object} target + */ + +function omit(target, properties) { + var result = {}; + var obj = Object(target); + forEach(obj, function (prop, key) { + if (properties.indexOf(key) === -1) { + result[key] = prop; + } + }); + return result; +} +/** + * Recursively merge `...sources` into given target. + * + * Does support merging objects; does not support merging arrays. + * + * @param {Object} target + * @param {...Object} sources + * + * @return {Object} the target + */ + +function merge(target) { + for (var _len2 = arguments.length, sources = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) { + sources[_key2 - 1] = arguments[_key2]; + } + + if (!sources.length) { + return target; + } + + forEach(sources, function (source) { + // skip non-obj sources, i.e. null + if (!source || !isObject(source)) { + return; + } + + forEach(source, function (sourceVal, key) { + if (key === '__proto__') { + return; + } + + var targetVal = target[key]; + + if (isObject(sourceVal)) { + if (!isObject(targetVal)) { + // override target[key] with object + targetVal = {}; + } + + target[key] = merge(targetVal, sourceVal); + } else { + target[key] = sourceVal; + } + }); + }); + return target; +} + +var index_esm = /*#__PURE__*/Object.freeze({ + __proto__: null, + assign: assign, + bind: bind, + debounce: debounce, + ensureArray: ensureArray, + every: every, + filter: filter, + find: find, + findIndex: findIndex, + flatten: flatten$1, + forEach: forEach, + get: get, + groupBy: groupBy, + has: has, + isArray: isArray, + isDefined: isDefined, + isFunction: isFunction, + isNil: isNil, + isNumber: isNumber, + isObject: isObject, + isString: isString, + isUndefined: isUndefined, + keys: keys, + map: map, + matchPattern: matchPattern, + merge: merge, + omit: omit, + pick: pick, + reduce: reduce, + set: set, + size: size, + some: some, + sortBy: sortBy, + throttle: throttle, + unionBy: unionBy, + uniqueBy: uniqueBy, + values: values, + without: without +}); + +var require$$1 = /*@__PURE__*/getAugmentedNamespace(index_esm); + +const { + is: is$c +} = require$$0; + +const { + flatten +} = require$$1; + +/** + * A rule that checks that there is no BPMNDI information missing for elements, + * which require BPMNDI. + */ +var noBpmndi = function () { + + function check(node, reporter) { + + if (!is$c(node, 'bpmn:Definitions')) { + return false; + } + + // (1) Construct array of all BPMN elements + const bpmnElements = getAllBpmnElements(node.rootElements); + + // (2) Filter BPMN elements without visual representation + const visualBpmnElements = bpmnElements.filter(hasVisualRepresentation); + + // (3) Construct array of BPMNDI references + const diBpmnReferences = getAllDiBpmnReferences(node); + + // (4) Report elements without BPMNDI + visualBpmnElements.forEach((element) => { + if (diBpmnReferences.indexOf(element.id) === -1) { + reporter.report(element.id, 'Element is missing bpmndi'); + } + }); + } + + return { + check + }; + +}; + + +// helpers ///////////////////////////// + +/** + * Get all BPMN elements within a bpmn:Definitions node + * + * @param {array} rootElements - An array of Moddle rootElements + * @return {array} A flat array with all BPMN elements, each represented with { id: elementId, $type: elementType } + * + */ +function getAllBpmnElements(rootElements) { + return flatten(rootElements.map((rootElement) => { + const laneSet = + rootElement.laneSets && rootElement.laneSets[0] || rootElement.childLaneSet; + + // Include + // * flowElements (e.g., tasks, sequenceFlows), + // * nested flowElements, + // * participants, + // * artifacts (groups), + // * laneSets + // * nested laneSets + // * childLaneSets + // * nested childLaneSets + // * messageFlows + const elements = flatten([].concat( + rootElement.flowElements || [], + (rootElement.flowElements && getAllBpmnElements(rootElement.flowElements.filter(hasFlowElements))) || [], + rootElement.participants || [], + rootElement.artifacts || [], + laneSet && laneSet.lanes || [], + laneSet && laneSet.lanes && getAllBpmnElements(laneSet.lanes.filter(hasChildLaneSet)) || [], + rootElement.messageFlows || [] + )); + + if (elements.length > 0) { + return elements.map((element) => { + + return { + id: element.id, + $type: element.$type + }; + }); + } else { + + // We are not interested in the rest here (DI) + return []; + } + })); +} + +/** + * Get all BPMN elements within a bpmn:Definitions node + * + * @param {ModdleElement} definitionsNode - A moddleElement representing the + * bpmn:Definitions element + * @return {array} A flat array with all BPMNDI element ids part of + * this bpmn:Definitions node + * + */ +function getAllDiBpmnReferences(definitionsNode) { + return flatten( + definitionsNode.diagrams.map((diagram) => { + + const diElements = diagram.plane.planeElement || []; + + return diElements.map((element) => { + + return element.bpmnElement.id; + }); + }) + ); +} + +function hasVisualRepresentation(element) { + const noVisRepresentation = ['bpmn:DataObject']; + + return noVisRepresentation.includes(element.$type) ? false : true; +} + +function hasFlowElements(element) { + return element.flowElements ? true : false; +} + +function hasChildLaneSet(element) { + return element.childLaneSet ? true : false; +} + +var helper = {}; + +const { + is: is$b +} = require$$0; + +/** + * Create a checker that disallows the given element type. + * + * @param {String} type + * + * @return {Function} ruleImpl + */ +function disallowNodeType$2(type) { + + return function () { + + function check(node, reporter) { + + if (is$b(node, type)) { + reporter.report(node.id, 'Element has disallowed type <' + type + '>'); + } + } + + return { + check + }; + + }; + +} + +helper.disallowNodeType = disallowNodeType$2; + +const disallowNodeType$1 = helper.disallowNodeType; + +var noComplexGateway = disallowNodeType$1('bpmn:ComplexGateway'); + +const { + isAny: isAny$2, + is: is$a +} = require$$0; + + +/** + * A rule that verifies that there exists no disconnected + * flow elements, i.e. elements without incoming + * _or_ outgoing sequence flows + */ +var noDisconnected = function () { + + function check(node, reporter) { + + if (!isAny$2(node, [ + 'bpmn:Task', + 'bpmn:Gateway', + 'bpmn:SubProcess', + 'bpmn:Event' + ]) || node.triggeredByEvent) { + return; + } + + // compensation activity and boundary events are + // linked visually via associations. If these associations + // exist we are fine, too + if (isCompensationLinked(node)) { + return; + } + + const incoming = node.incoming || []; + const outgoing = node.outgoing || []; + + if (!incoming.length && !outgoing.length) { + reporter.report(node.id, 'Element is not connected'); + } + } + + return { + check + }; +}; + + +// helpers ///////////////// + +function isCompensationBoundary(node) { + + var eventDefinitions = node.eventDefinitions; + + if (!is$a(node, 'bpmn:BoundaryEvent')) { + return false; + } + + if (!eventDefinitions || eventDefinitions.length !== 1) { + return false; + } + + return is$a(eventDefinitions[0], 'bpmn:CompensateEventDefinition'); +} + +function isCompensationActivity(node) { + return node.isForCompensation; +} + +function isCompensationLinked(node) { + var source = isCompensationBoundary(node); + var target = isCompensationActivity(node); + + // TODO(nikku): check, whether compensation association exists + return source || target; +} + +const { + is: is$9 +} = require$$0; + +/** + * A rule that verifies that there are no disconnected + * flow elements, i.e. elements without incoming + * _or_ outgoing sequence flows + */ +var noDuplicateSequenceFlows = function () { + + const keyed = {}; + + const outgoingReported = {}; + const incomingReported = {}; + + function check(node, reporter) { + + if (!is$9(node, 'bpmn:SequenceFlow')) { + return; + } + + const key = flowKey(node); + + if (key in keyed) { + reporter.report(node.id, 'SequenceFlow is a duplicate'); + + const sourceId = node.sourceRef.id; + const targetId = node.targetRef.id; + + if (!outgoingReported[sourceId]) { + reporter.report(sourceId, 'Duplicate outgoing sequence flows'); + + outgoingReported[sourceId] = true; + } + + if (!incomingReported[targetId]) { + reporter.report(targetId, 'Duplicate incoming sequence flows'); + + incomingReported[targetId] = true; + } + } else { + keyed[key] = node; + } + } + + return { + check + }; + +}; + + +// helpers ///////////////// + +function flowKey(flow) { + const conditionExpression = flow.conditionExpression; + + const condition = conditionExpression ? conditionExpression.body : ''; + const source = flow.sourceRef ? flow.sourceRef.id : flow.id; + const target = flow.targetRef ? flow.targetRef.id : flow.id; + + return source + '#' + target + '#' + condition; +} + +const { + is: is$8 +} = require$$0; + + +/** + * A rule that checks, whether a gateway forks and joins + * at the same time. + */ +var noGatewayJoinFork = function () { + + function check(node, reporter) { + + if (!is$8(node, 'bpmn:Gateway')) { + return; + } + + const incoming = node.incoming || []; + const outgoing = node.outgoing || []; + + if (incoming.length > 1 && outgoing.length > 1) { + reporter.report(node.id, 'Gateway forks and joins'); + } + } + + return { + check + }; + +}; + +const { + isAny: isAny$1 +} = require$$0; + + +/** + * A rule that checks that no implicit split is modeled + * starting from a task. + * + * users should model the parallel splitting gateway + * explicitly instead. + */ +var noImplicitSplit = function () { + + function check(node, reporter) { + + if (!isAny$1(node, [ + 'bpmn:Task', + 'bpmn:Event' + ])) { + return; + } + + const outgoing = node.outgoing || []; + + const outgoingWithoutCondition = outgoing.filter((flow) => { + return !hasCondition(flow) && !isDefaultFlow(node, flow); + }); + + if (outgoingWithoutCondition.length > 1) { + reporter.report(node.id, 'Flow splits implicitly'); + } + } + + return { + check + }; + +}; + + +// helpers ///////////////////////////// + +function hasCondition(flow) { + return !!flow.conditionExpression; +} + +function isDefaultFlow(node, flow) { + return node['default'] === flow; +} + +const disallowNodeType = helper.disallowNodeType; + +var noInclusiveGateway = disallowNodeType('bpmn:InclusiveGateway'); + +const { + is: is$7 +} = require$$0; + +/** + * A rule that checks whether not more than one blank start event + * exists per scope. + */ +var singleBlankStartEvent = function () { + + function check(node, reporter) { + + if (!is$7(node, 'bpmn:FlowElementsContainer')) { + return; + } + + const flowElements = node.flowElements || []; + + const blankStartEvents = flowElements.filter(function (flowElement) { + + if (!is$7(flowElement, 'bpmn:StartEvent')) { + return false; + } + + const eventDefinitions = flowElement.eventDefinitions || []; + + return eventDefinitions.length === 0; + }); + + if (blankStartEvents.length > 1) { + const type = is$7(node, 'bpmn:SubProcess') ? 'Sub process' : 'Process'; + + reporter.report(node.id, type + ' has multiple blank start events'); + } + } + + return { + check + }; + +}; + +const { + is: is$6 +} = require$$0; + + +/** + * A rule that verifies that an event contains maximum one event definition. + */ +var singleEventDefinition = function () { + + function check(node, reporter) { + + if (!is$6(node, 'bpmn:Event')) { + return; + } + + const eventDefinitions = node.eventDefinitions || []; + + if (eventDefinitions.length > 1) { + reporter.report(node.id, 'Event has multiple event definitions', ['eventDefinitions']); + } + } + + return { + check + }; + +}; + +const { + is: is$5, + isAny +} = require$$0; + + +/** + * A rule that checks for the presence of a start event per scope. + */ +var startEventRequired = function () { + + function hasStartEvent(node) { + const flowElements = node.flowElements || []; + + return ( + flowElements.some(node => is$5(node, 'bpmn:StartEvent')) + ); + } + + function check(node, reporter) { + + if (!isAny(node, [ + 'bpmn:Process', + 'bpmn:SubProcess' + ])) { + return; + } + + if (!hasStartEvent(node)) { + const type = is$5(node, 'bpmn:SubProcess') ? 'Sub process' : 'Process'; + + reporter.report(node.id, type + ' is missing start event'); + } + } + + return { check }; +}; + +const { + is: is$4 +} = require$$0; + + +/** + * A rule that checks that start events inside a normal sub-processes + * are blank (do not have an event definition). + */ +var subProcessBlankStartEvent = function () { + + function check(node, reporter) { + + if (!is$4(node, 'bpmn:SubProcess') || node.triggeredByEvent) { + return; + } + + const flowElements = node.flowElements || []; + + flowElements.forEach(function (flowElement) { + + if (!is$4(flowElement, 'bpmn:StartEvent')) { + return false; + } + + const eventDefinitions = flowElement.eventDefinitions || []; + + if (eventDefinitions.length > 0) { + reporter.report(flowElement.id, 'Start event must be blank', ['eventDefinitions']); + } + }); + } + + return { + check + }; + +}; + +const { + is: is$3 +} = require$$0; + +/** + * A rule that checks, whether a gateway has only one source and target. + * + * Those gateways are superfluous since they don't do anything. + */ +var superfluousGateway = function () { + + function check(node, reporter) { + + if (!is$3(node, 'bpmn:Gateway')) { + return; + } + + const incoming = node.incoming || []; + const outgoing = node.outgoing || []; + + if (incoming.length === 1 && outgoing.length === 1) { + reporter.report(node.id, 'Gateway is superfluous. It only has one source and target.'); + } + } + + return { + check + }; + +}; + +const { + is: is$2 +} = require$$0; + + +/** + * Rule that reports missing targetNamespace on bpmn:Definitions. + */ +var targetNamespace = function () { + + function check(node, reporter) { + if (is$2(node, 'bpmn:Definitions') && !node.targetNamespace) { + reporter.report(node.id, 'Element is missing targetNamespace'); + } + } + + return { + check: check + }; +}; + +const { + is: is$1 +} = require$$0; + + +/** + * Rule that reports manual tasks being used. + */ +var noManualTask = function () { + + function check(node, reporter) { + if (is$1(node, 'bpmn:ManualTask')) { + reporter.report(node.id, 'Element has disallowed type bpmn:ManualTask'); + } + } + + return { + check: check + }; +}; + +const { + is +} = require$$0; + + +/** + * 校验任务节点是否设置任务处理人 + */ +var checkNodeUser = function () { + + function check(node, reporter) { + if (is(node, 'bpmn:Task')) { + const assignee = (node.assignee || '').trim(); + const candidateUsers = (node.candidateUsers || '').trim(); + const candidateGroups = (node.candidateGroups || '').trim(); + + if (assignee.length === 0 && candidateUsers.length === 0 && candidateGroups.length === 0) { + reporter.report(node.id, '任务节点未设置人员信息'); + } + + const buttons = node.extensionElements?.values?.filter(ex => { + return ex.$type === `flowable:Buttons`; + }) ?? []; + const selectButtons = buttons.reduce((pre, current) => pre.concat(current.values), []); + if (buttons.length === 0 || selectButtons.length === 0) { + reporter.report(node.id, '任务节点未配置按钮信息'); + } + } + } + + return { + check: check + }; +}; + +const cache = {}; + +/** + * A resolver that caches rules and configuration as part of the bundle, + * making them accessible in the browser. + * + * @param {Object} cache + */ +function Resolver() { } + +Resolver.prototype.resolveRule = function (pkg, ruleName) { + + const rule = cache[pkg + '/' + ruleName]; + + if (!rule) { + throw new Error('cannot resolve rule <' + pkg + '/' + ruleName + '>'); + } + + return rule; +}; + +Resolver.prototype.resolveConfig = function (pkg, configName) { + throw new Error( + 'cannot resolve config <' + configName + '> in <' + pkg + '>' + ); +}; + +const resolver = new Resolver(); + +const rules = { + "conditional-flows": "error", + "end-event-required": "error", + "event-sub-process-typed-start-event": "error", + "fake-join": "warn", + "label-required": "warn", + "no-bpmndi": "error", + "no-complex-gateway": "error", + "no-disconnected": "error", + "no-duplicate-sequence-flows": "error", + "no-gateway-join-fork": "error", + "no-implicit-split": "error", + "no-inclusive-gateway": "error", + "single-blank-start-event": "error", + "single-event-definition": "error", + "start-event-required": "error", + "sub-process-blank-start-event": "error", + "superfluous-gateway": "warn", + "custom/target-namespace": "error", + "custom/no-manual-task": "warn", + "custom/check-node-user": "error" +}; + +const config = { + rules: rules +}; + +const bundle = { + resolver: resolver, + config: config +}; +cache['bpmnlint/conditional-flows'] = conditionalFlows; +cache['bpmnlint/end-event-required'] = endEventRequired; +cache['bpmnlint/event-sub-process-typed-start-event'] = eventSubProcessTypedStartEvent; +cache['bpmnlint/fake-join'] = fakeJoin; +cache['bpmnlint/label-required'] = labelRequired; +cache['bpmnlint/no-bpmndi'] = noBpmndi; +cache['bpmnlint/no-complex-gateway'] = noComplexGateway; +cache['bpmnlint/no-disconnected'] = noDisconnected; +cache['bpmnlint/no-duplicate-sequence-flows'] = noDuplicateSequenceFlows; +cache['bpmnlint/no-gateway-join-fork'] = noGatewayJoinFork; +cache['bpmnlint/no-implicit-split'] = noImplicitSplit; +cache['bpmnlint/no-inclusive-gateway'] = noInclusiveGateway; +cache['bpmnlint/single-blank-start-event'] = singleBlankStartEvent; +cache['bpmnlint/single-event-definition'] = singleEventDefinition; +cache['bpmnlint/start-event-required'] = startEventRequired; +cache['bpmnlint/sub-process-blank-start-event'] = subProcessBlankStartEvent; +cache['bpmnlint/superfluous-gateway'] = superfluousGateway; +cache['bpmnlint-plugin-custom/target-namespace'] = targetNamespace; +cache['bpmnlint-plugin-custom/no-manual-task'] = noManualTask; +cache['bpmnlint-plugin-custom/check-node-user'] = checkNodeUser; + +export { config, bundle as default, resolver }; diff --git a/src/components/Process/customPanel/CustomContextPad.js b/src/components/Process/customPanel/CustomContextPad.js new file mode 100644 index 0000000..6209cb5 --- /dev/null +++ b/src/components/Process/customPanel/CustomContextPad.js @@ -0,0 +1,527 @@ +/** + * 自定义任务弹窗节点 + */ +import { + assign, + forEach, + isArray, + every +} from 'min-dash'; + +import { + is +} from 'bpmn-js/lib/util/ModelUtil'; + +import { + isExpanded, + isEventSubProcess +} from 'bpmn-js/lib/util/DiUtil'; + +import { + isAny +} from 'bpmn-js/lib/features/modeling/util/ModelingUtil'; + +import { + getChildLanes +} from 'bpmn-js/lib/features/modeling/util/LaneUtil'; + +import { + hasPrimaryModifier +} from 'diagram-js/lib/util/Mouse'; + + +/** + * A provider for BPMN 2.0 elements context pad + */ +export default function ContextPadProvider( + config, injector, eventBus, + contextPad, modeling, elementFactory, + connect, create, popupMenu, + canvas, rules, translate) { + + config = config || {}; + + contextPad.registerProvider(this); + + this._contextPad = contextPad; + + this._modeling = modeling; + + this._elementFactory = elementFactory; + this._connect = connect; + this._create = create; + this._popupMenu = popupMenu; + this._canvas = canvas; + this._rules = rules; + this._translate = translate; + + if (config.autoPlace !== false) { + this._autoPlace = injector.get('autoPlace', false); + } + + eventBus.on('create.end', 250, function(event) { + var context = event.context, + shape = context.shape; + + if (!hasPrimaryModifier(event) || !contextPad.isOpen(shape)) { + return; + } + + var entries = contextPad.getEntries(shape); + + if (entries.replace) { + entries.replace.action.click(event, shape); + } + }); +} + +ContextPadProvider.$inject = [ + 'config.contextPad', + 'injector', + 'eventBus', + 'contextPad', + 'modeling', + 'elementFactory', + 'connect', + 'create', + 'popupMenu', + 'canvas', + 'rules', + 'translate' +]; + +ContextPadProvider.prototype.getMultiElementContextPadEntries = function(elements) { + var modeling = this._modeling; + + var actions = {}; + + if (this._isDeleteAllowed(elements)) { + assign(actions, { + 'delete': { + group: 'edit', + className: 'bpmn-icon-trash', + title: this._translate('Remove'), + action: { + click: function(event, elements) { + modeling.removeElements(elements.slice()); + } + } + } + }); + } + + return actions; +}; + +/** + * @param {djs.model.Base[]} elements + * @return {boolean} + */ +ContextPadProvider.prototype._isDeleteAllowed = function(elements) { + + var baseAllowed = this._rules.allowed('elements.delete', { + elements: elements + }); + + if (isArray(baseAllowed)) { + return every(baseAllowed, function(element) { + return includes(baseAllowed, element); + }); + } + + return baseAllowed; +}; + +ContextPadProvider.prototype.getContextPadEntries = function(element) { + var contextPad = this._contextPad, + modeling = this._modeling, + + elementFactory = this._elementFactory, + connect = this._connect, + create = this._create, + popupMenu = this._popupMenu, + rules = this._rules, + autoPlace = this._autoPlace, + translate = this._translate; + + var actions = {}; + + if (element.type === 'label') { + return actions; + } + + var businessObject = element.businessObject; + + function startConnect(event, element) { + connect.start(event, element); + } + + function removeElement(e, element) { + modeling.removeElements([ element ]); + } + + function getReplaceMenuPosition(element) { + + var Y_OFFSET = 5; + + var pad = contextPad.getPad(element).html; + + var padRect = pad.getBoundingClientRect(); + + var pos = { + x: padRect.left, + y: padRect.bottom + Y_OFFSET + }; + + return pos; + } + + + /** + * Create an append action + * + * @param {string} type + * @param {string} className + * @param {string} [title] + * @param {Object} [options] + * + * @return {Object} descriptor + */ + function appendAction(type, className, title, options) { + + if (typeof title !== 'string') { + options = title; + title = translate('Append {type}', { type: type.replace(/^bpmn:/, '') }); + } + + function appendStart(event, element) { + + var shape = elementFactory.createShape(assign({ type: type }, options)); + create.start(event, shape, { + source: element + }); + } + + + var append = autoPlace ? function(event, element) { + var shape = elementFactory.createShape(assign({ type: type }, options)); + + autoPlace.append(element, shape); + } : appendStart; + + + return { + group: 'model', + className: className, + title: title, + action: { + dragstart: appendStart, + click: append + } + }; + } + + function splitLaneHandler(count) { + + return function(event, element) { + + // actual split + modeling.splitLane(element, count); + + // refresh context pad after split to + // get rid of split icons + contextPad.open(element, true); + }; + } + + + if (isAny(businessObject, [ 'bpmn:Lane', 'bpmn:Participant' ]) && isExpanded(element)) { + + var childLanes = getChildLanes(element); + + assign(actions, { + 'lane-insert-above': { + group: 'lane-insert-above', + className: 'bpmn-icon-lane-insert-above', + title: translate('Add Lane above'), + action: { + click: function(event, element) { + modeling.addLane(element, 'top'); + } + } + } + }); + + if (childLanes.length < 2) { + + if (element.height >= 120) { + assign(actions, { + 'lane-divide-two': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-two', + title: translate('Divide into two Lanes'), + action: { + click: splitLaneHandler(2) + } + } + }); + } + + if (element.height >= 180) { + assign(actions, { + 'lane-divide-three': { + group: 'lane-divide', + className: 'bpmn-icon-lane-divide-three', + title: translate('Divide into three Lanes'), + action: { + click: splitLaneHandler(3) + } + } + }); + } + } + + assign(actions, { + 'lane-insert-below': { + group: 'lane-insert-below', + className: 'bpmn-icon-lane-insert-below', + title: translate('Add Lane below'), + action: { + click: function(event, element) { + modeling.addLane(element, 'bottom'); + } + } + } + }); + + } + + if (is(businessObject, 'bpmn:FlowNode')) { + + if (is(businessObject, 'bpmn:EventBasedGateway')) { + + assign(actions, { + 'append.receive-task': appendAction( + 'bpmn:ReceiveTask', + 'bpmn-icon-receive-task', + translate('Append ReceiveTask') + ), + 'append.message-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-message', + translate('Append MessageIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:MessageEventDefinition' } + ), + 'append.timer-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-timer', + translate('Append TimerIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:TimerEventDefinition' } + ), + 'append.condition-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-condition', + translate('Append ConditionIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:ConditionalEventDefinition' } + ), + 'append.signal-intermediate-event': appendAction( + 'bpmn:IntermediateCatchEvent', + 'bpmn-icon-intermediate-event-catch-signal', + translate('Append SignalIntermediateCatchEvent'), + { eventDefinitionType: 'bpmn:SignalEventDefinition' } + ) + }); + } else + + if (isEventType(businessObject, 'bpmn:BoundaryEvent', 'bpmn:CompensateEventDefinition')) { + + assign(actions, { + 'append.compensation-activity': + appendAction( + 'bpmn:Task', + 'bpmn-icon-task', + translate('Append compensation activity'), + { + isForCompensation: true + } + ) + }); + } else + + if (!is(businessObject, 'bpmn:EndEvent') && + !businessObject.isForCompensation && + !isEventType(businessObject, 'bpmn:IntermediateThrowEvent', 'bpmn:LinkEventDefinition') && + !isEventSubProcess(businessObject)) { + + assign(actions, { + 'append.end-event': appendAction( + 'bpmn:EndEvent', + 'bpmn-icon-end-event-none', + translate('Append EndEvent') + ), + 'append.gateway': appendAction( + 'bpmn:ExclusiveGateway', + 'bpmn-icon-gateway-none', + translate('Append Gateway') + ), + 'append.append-user-task': appendAction( + 'bpmn:UserTask', + 'bpmn-icon-user-task', + '添加用户任务' + ), + 'append.intermediate-event': appendAction( + 'bpmn:IntermediateThrowEvent', + 'bpmn-icon-intermediate-event-none', + translate('Append Intermediate/Boundary Event') + ) + }); + } + } + + if (!popupMenu.isEmpty(element, 'bpmn-replace')) { + + // Replace menu entry + assign(actions, { + 'replace': { + group: 'edit', + className: 'bpmn-icon-screw-wrench', + title: translate('Change type'), + action: { + click: function(event, element) { + + var position = assign(getReplaceMenuPosition(element), { + cursor: { x: event.x, y: event.y } + }); + + popupMenu.open(element, 'bpmn-replace', position, { + title: translate('Change element'), + width: 300, + search: true + }); + } + } + } + }); + } + + if (is(businessObject, 'bpmn:SequenceFlow')) { + assign(actions, { + 'append.text-annotation': appendAction( + 'bpmn:TextAnnotation', + 'bpmn-icon-text-annotation' + ) + }); + } + + if ( + isAny(businessObject, [ + 'bpmn:FlowNode', + 'bpmn:InteractionNode', + 'bpmn:DataObjectReference', + 'bpmn:DataStoreReference', + ]) + ) { + assign(actions, { + 'append.text-annotation': appendAction( + 'bpmn:TextAnnotation', + 'bpmn-icon-text-annotation' + ), + + 'connect': { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate( + 'Connect using ' + + (businessObject.isForCompensation + ? '' + : 'Sequence/MessageFlow or ') + + 'Association' + ), + action: { + click: startConnect, + dragstart: startConnect, + }, + }, + }); + } + + if (is(businessObject, 'bpmn:TextAnnotation')) { + assign(actions, { + 'connect': { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate('Connect using Association'), + action: { + click: startConnect, + dragstart: startConnect, + }, + }, + }); + } + + if (isAny(businessObject, [ 'bpmn:DataObjectReference', 'bpmn:DataStoreReference' ])) { + assign(actions, { + 'connect': { + group: 'connect', + className: 'bpmn-icon-connection-multi', + title: translate('Connect using DataInputAssociation'), + action: { + click: startConnect, + dragstart: startConnect + } + } + }); + } + + if (is(businessObject, 'bpmn:Group')) { + assign(actions, { + 'append.text-annotation': appendAction('bpmn:TextAnnotation', 'bpmn-icon-text-annotation') + }); + } + + // delete element entry, only show if allowed by rules + var deleteAllowed = rules.allowed('elements.delete', { elements: [ element ] }); + + if (isArray(deleteAllowed)) { + + // was the element returned as a deletion candidate? + deleteAllowed = deleteAllowed[0] === element; + } + + if (deleteAllowed) { + assign(actions, { + 'delete': { + group: 'edit', + className: 'bpmn-icon-trash', + title: translate('Remove'), + action: { + click: removeElement + } + } + }); + } + + return actions; +}; + + +// helpers ///////// + +function isEventType(eventBo, type, definition) { + + var isType = eventBo.$instanceOf(type); + var isDefinition = false; + + var definitions = eventBo.eventDefinitions || []; + forEach(definitions, function(def) { + if (def.$type === definition) { + isDefinition = true; + } + }); + + return isType && isDefinition; +} + +function includes(array, item) { + return array.indexOf(item) !== -1; +} diff --git a/src/components/Process/customPanel/CustomPalette.js b/src/components/Process/customPanel/CustomPalette.js new file mode 100644 index 0000000..ee7f328 --- /dev/null +++ b/src/components/Process/customPanel/CustomPalette.js @@ -0,0 +1,145 @@ +/** + * 自定义左侧工具栏 + */ +import { assign } from "min-dash"; + +export default function CustomPalette( + palette, + create, + elementFactory, + handTool, + lassoTool, + spaceTool, + globalConnect, + translate +) { + this.create = create; + this.elementFactory = elementFactory; + this.handTool = handTool; + this.lassoTool = lassoTool; + this.spaceTool = spaceTool; + this.globalConnect = globalConnect; + this.translate = translate; + + palette.registerProvider(this); +} + +CustomPalette.$inject = [ + "palette", + "create", + "elementFactory", + "handTool", + "lassoTool", + "spaceTool", + "globalConnect", + "translate" +]; + +CustomPalette.prototype.getPaletteEntries = function (element) { + const { + create, + elementFactory, + handTool, + lassoTool, + spaceTool, + globalConnect, + translate + } = this; + + function createAction(type, group, className, title, options) { + function createListener(event) { + var shape = elementFactory.createShape(assign({ type: type }, options)); + + if (options) { + shape.businessObject.di.isExpanded = options.isExpanded; + } + + create.start(event, shape); + } + + var shortType = type.replace(/^bpmn:/, ""); + + return { + group: group, + className: className, + title: title || translate("Create {type}", { type: shortType }), + action: { + dragstart: createListener, + click: createListener + } + }; + } + + return { + 'hand-tool': { + group: 'tools', + className: 'bpmn-icon-hand-tool', + title: '激活抓手工具', + action: { + click: function(event) { + handTool.activateHand(event); + } + } + }, + "lasso-tool": { + group: "tools", + className: "bpmn-icon-lasso-tool", + title: "激活套索工具", + action: { + click: function (event) { + lassoTool.activateSelection(event); + } + } + }, + 'space-tool': { + group: 'tools', + className: 'bpmn-icon-space-tool', + title: translate('Activate the create/remove space tool'), + action: { + click: function(event) { + spaceTool.activateSelection(event); + } + } + }, + 'global-connect-tool': { + group: 'tools', + className: 'bpmn-icon-connection-multi', + title: translate('Activate the global connect tool'), + action: { + click: function(event) { + globalConnect.start(event); + } + } + }, + + "tool-separator": { + group: "tools", + separator: true + }, + + "create.start-event": createAction( + "bpmn:StartEvent", + "event", + "bpmn-icon-start-event-none", + "创建开始节点" + ), + "create.end-event": createAction( + "bpmn:EndEvent", + "event", + "bpmn-icon-end-event-none", + "创建结束节点" + ), + "create.user-task": createAction( + "bpmn:UserTask", + "activity", + "bpmn-icon-user-task", + "创建用户任务" + ), + "create.exclusive-gateway": createAction( + "bpmn:ExclusiveGateway", + "gateway", + "bpmn-icon-gateway-xor", + "创建排他网关" + ) + }; +}; diff --git a/src/components/Process/customPanel/customTranslate.js b/src/components/Process/customPanel/customTranslate.js new file mode 100644 index 0000000..1d58ae2 --- /dev/null +++ b/src/components/Process/customPanel/customTranslate.js @@ -0,0 +1,32 @@ +import translations from '../lang/zh' + +// export default function customTranslate(template, replacements) { +// replacements = replacements || {} +// +// // Translate +// template = translations[template] || template +// +// // Replace +// return template.replace(/{([^}]+)}/g, function(_, key) { +// var str = replacements[key] +// if ( +// translations[replacements[key]] !== null && +// translations[replacements[key]] !== 'undefined' +// ) { +// str = translations[replacements[key]] +// } +// return str || '{' + key + '}' +// }) +// } + +export default function customTranslate(template, replacements) { + replacements = replacements || {}; + + // Translate + template = translations[template] || template; + + // Replace + return template.replace(/{([^}]+)}/g, function(_, key) { + return replacements[key] || '{' + key + '}'; + }); +} diff --git a/src/components/Process/customPanel/index.js b/src/components/Process/customPanel/index.js new file mode 100644 index 0000000..c49c3e5 --- /dev/null +++ b/src/components/Process/customPanel/index.js @@ -0,0 +1,8 @@ +import CustomContextPad from './CustomContextPad'; +import CustomPalette from "./CustomPalette"; + +export default { + __init__: [ 'paletteProvider','contextPadProvider'], + paletteProvider: [ 'type', CustomPalette ], + contextPadProvider: [ 'type', CustomContextPad ], +}; diff --git a/src/components/Process/designer.vue b/src/components/Process/designer.vue new file mode 100644 index 0000000..d7f3d9a --- /dev/null +++ b/src/components/Process/designer.vue @@ -0,0 +1,186 @@ + + + + + diff --git a/src/components/Process/flowable/flowable.json b/src/components/Process/flowable/flowable.json new file mode 100644 index 0000000..35e33e9 --- /dev/null +++ b/src/components/Process/flowable/flowable.json @@ -0,0 +1,1256 @@ +{ + "name": "Flowable", + "uri": "http://flowable.org/bpmn", + "prefix": "flowable", + "xml": { + "tagAlias": "lowerCase" + }, + "associations": [], + "types": [ + { + "name": "InOutBinding", + "superClass": ["Element"], + "isAbstract": true, + "properties": [ + { + "name": "source", + "isAttr": true, + "type": "String" + }, + { + "name": "sourceExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "target", + "isAttr": true, + "type": "String" + }, + { + "name": "businessKey", + "isAttr": true, + "type": "String" + }, + { + "name": "local", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "variables", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "In", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "Out", + "superClass": ["InOutBinding"], + "meta": { + "allowedIn": ["bpmn:CallActivity"] + } + }, + { + "name": "AsyncCapable", + "isAbstract": true, + "extends": ["bpmn:Activity", "bpmn:Gateway", "bpmn:Event"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncBefore", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "asyncAfter", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "exclusive", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "JobPriorized", + "isAbstract": true, + "extends": ["bpmn:Process", "flowable:AsyncCapable"], + "properties": [ + { + "name": "jobPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "SignalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:SignalEventDefinition"], + "properties": [ + { + "name": "async", + "isAttr": true, + "type": "Boolean", + "default": false + } + ] + }, + { + "name": "ErrorEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ErrorEventDefinition"], + "properties": [ + { + "name": "errorCodeVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "errorMessageVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Error", + "isAbstract": true, + "extends": ["bpmn:Error"], + "properties": [ + { + "name": "flowable:errorMessage", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "PotentialStarter", + "superClass": ["Element"], + "properties": [ + { + "name": "resourceAssignmentExpression", + "type": "bpmn:ResourceAssignmentExpression" + } + ] + }, + { + "name": "FormSupported", + "isAbstract": true, + "extends": ["bpmn:StartEvent", "bpmn:UserTask"], + "properties": [ + { + "name": "formHandlerClass", + "isAttr": true, + "type": "String" + }, + { + "name": "formKey", + "isAttr": true, + "type": "String" + }, + { + "name": "formType", + "isAttr": true, + "type": "String" + }, + { + "name": "formReadOnly", + "isAttr": true, + "type": "Boolean", + "default": false + }, + { + "name": "formInit", + "isAttr": true, + "type": "Boolean", + "default": true + } + ] + }, + { + "name": "TemplateSupported", + "isAbstract": true, + "extends": ["bpmn:Process", "bpmn:FlowElement"], + "properties": [ + { + "name": "modelerTemplate", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Initiator", + "isAbstract": true, + "extends": ["bpmn:StartEvent"], + "properties": [ + { + "name": "initiator", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ScriptTask", + "isAbstract": true, + "extends": ["bpmn:ScriptTask"], + "properties": [ + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Process", + "isAbstract": true, + "extends": ["bpmn:Process"], + "properties": [ + { + "name": "candidateStarterGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateStarterUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "versionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "historyTimeToLive", + "isAttr": true, + "type": "String" + }, + { + "name": "isStartableInTasklist", + "isAttr": true, + "type": "Boolean", + "default": true + }, + { + "name": "processCategory", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "EscalationEventDefinition", + "isAbstract": true, + "extends": ["bpmn:EscalationEventDefinition"], + "properties": [ + { + "name": "escalationCodeVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FormalExpression", + "isAbstract": true, + "extends": ["bpmn:FormalExpression"], + "properties": [ + { + "name": "resource", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignable", + "extends": ["bpmn:UserTask"], + "properties": [ + { + "name": "assignee", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateUsers", + "isAttr": true, + "type": "String" + }, + { + "name": "candidateGroups", + "isAttr": true, + "type": "String" + }, + { + "name": "dueDate", + "isAttr": true, + "type": "String" + }, + { + "name": "followUpDate", + "isAttr": true, + "type": "String" + }, + { + "name": "priority", + "isAttr": true, + "type": "String" + }, + { + "name": "userType", + "isAttr": true, + "type": "String" + }, + { + "name": "dataType", + "isAttr": true, + "type": "String" + }, + { + "name": "expId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Assignee", + "supperClass": "Element", + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "viewId", + "type": "Number", + "isAttr": true + } + ] + }, + { + "name": "CallActivity", + "extends": ["bpmn:CallActivity"], + "properties": [ + { + "name": "calledElementBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "calledElementVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementVersionTag", + "isAttr": true, + "type": "String" + }, + { + "name": "calledElementTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "caseRef", + "isAttr": true, + "type": "String" + }, + { + "name": "caseBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "caseVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "caseTenantId", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingClass", + "isAttr": true, + "type": "String" + }, + { + "name": "variableMappingDelegateExpression", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ServiceTaskLike", + "extends": [ + "bpmn:ServiceTask", + "bpmn:BusinessRuleTask", + "bpmn:SendTask", + "bpmn:MessageEventDefinition" + ], + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "resultVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "DmnCapable", + "extends": ["bpmn:BusinessRuleTask"], + "properties": [ + { + "name": "decisionRef", + "isAttr": true, + "type": "String" + }, + { + "name": "decisionRefBinding", + "isAttr": true, + "type": "String", + "default": "latest" + }, + { + "name": "decisionRefVersion", + "isAttr": true, + "type": "String" + }, + { + "name": "mapDecisionResult", + "isAttr": true, + "type": "String", + "default": "resultList" + }, + { + "name": "decisionRefTenantId", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "ExternalCapable", + "extends": ["flowable:ServiceTaskLike"], + "properties": [ + { + "name": "type", + "isAttr": true, + "type": "String" + }, + { + "name": "topic", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "TaskPriorized", + "extends": ["bpmn:Process", "flowable:ExternalCapable"], + "properties": [ + { + "name": "taskPriority", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Properties", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Property", + "isMany": true + } + ] + }, + { + "name": "Property", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Buttons", + "superClass": ["Element"], + "meta": { + "allowedIn": ["*"] + }, + "properties": [ + { + "name": "values", + "type": "Button", + "isMany": true + } + ] + }, + { + "name": "Button", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "Integer", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "code", + "type": "String", + "isAttr": true + }, + { + "name": "icon", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "size", + "type": "String", + "isAttr": true + }, + { + "name": "click", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "Assignee", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "condition", + "type": "String", + "isAttr": true + }, + { + "name": "operationType", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + }, + { + "name": "Connector", + "superClass": ["Element"], + "meta": { + "allowedIn": ["flowable:ServiceTaskLike"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + } + ] + }, + { + "name": "InputOutput", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:FlowNode", "flowable:Connector"] + }, + "properties": [ + { + "name": "inputOutput", + "type": "InputOutput" + }, + { + "name": "connectorId", + "type": "String" + }, + { + "name": "inputParameters", + "isMany": true, + "type": "InputParameter" + }, + { + "name": "outputParameters", + "isMany": true, + "type": "OutputParameter" + } + ] + }, + { + "name": "InputOutputParameter", + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "InputOutputParameterDefinition", + "isAbstract": true + }, + { + "name": "List", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "items", + "isMany": true, + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Map", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "entries", + "isMany": true, + "type": "Entry" + } + ] + }, + { + "name": "Entry", + "properties": [ + { + "name": "key", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + }, + { + "name": "definition", + "type": "InputOutputParameterDefinition" + } + ] + }, + { + "name": "Value", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "id", + "isAttr": true, + "type": "String" + }, + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Script", + "superClass": ["InputOutputParameterDefinition"], + "properties": [ + { + "name": "scriptFormat", + "isAttr": true, + "type": "String" + }, + { + "name": "resource", + "isAttr": true, + "type": "String" + }, + { + "name": "value", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "Field", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "flowable:ServiceTaskLike", + "flowable:ExecutionListener", + "flowable:TaskListener", + "bpmn:ServiceTask" + ] + }, + "properties": [ + { + "name": "name", + "isAttr": true, + "type": "String" + }, + { + "name": "expression", + "type": "String" + }, + { + "name": "stringValue", + "isAttr": true, + "type": "String" + }, + { + "name": "string", + "type": "String" + }, + { + "name": "htmlVar", + "type": "Expression" + } + ] + }, + { + "name": "ChildField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "InputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "OutputParameter", + "superClass": ["InputOutputParameter"] + }, + { + "name": "Collectable", + "isAbstract": true, + "extends": ["bpmn:MultiInstanceLoopCharacteristics"], + "superClass": ["flowable:AsyncCapable"], + "properties": [ + { + "name": "collection", + "isAttr": true, + "type": "String" + }, + { + "name": "elementVariable", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "FailedJobRetryTimeCycle", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "flowable:AsyncCapable", + "bpmn:MultiInstanceLoopCharacteristics" + ] + }, + "properties": [ + { + "name": "body", + "isBody": true, + "type": "String" + } + ] + }, + { + "name": "ExecutionListener", + "superClass": ["Element"], + "meta": { + "allowedIn": [ + "bpmn:Task", + "bpmn:ServiceTask", + "bpmn:UserTask", + "bpmn:BusinessRuleTask", + "bpmn:ScriptTask", + "bpmn:ReceiveTask", + "bpmn:ManualTask", + "bpmn:ExclusiveGateway", + "bpmn:SequenceFlow", + "bpmn:ParallelGateway", + "bpmn:InclusiveGateway", + "bpmn:EventBasedGateway", + "bpmn:StartEvent", + "bpmn:IntermediateCatchEvent", + "bpmn:IntermediateThrowEvent", + "bpmn:EndEvent", + "bpmn:BoundaryEvent", + "bpmn:CallActivity", + "bpmn:SubProcess", + "bpmn:Process" + ] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "listenerType", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "TaskListener", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:UserTask"] + }, + "properties": [ + { + "name": "expression", + "isAttr": true, + "type": "String" + }, + { + "name": "class", + "isAttr": true, + "type": "String" + }, + { + "name": "delegateExpression", + "isAttr": true, + "type": "String" + }, + { + "name": "event", + "isAttr": true, + "type": "String" + }, + { + "name": "script", + "type": "Script" + }, + { + "name": "fields", + "type": "Field", + "isMany": true + } + ] + }, + { + "name": "FormProperty", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "required", + "type": "String", + "isAttr": true + }, + { + "name": "readable", + "type": "String", + "isAttr": true + }, + { + "name": "writable", + "type": "String", + "isAttr": true + }, + { + "name": "variable", + "type": "String", + "isAttr": true + }, + { + "name": "expression", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "default", + "type": "String", + "isAttr": true + }, + { + "name": "values", + "type": "Value", + "isMany": true + }, + { + "name": "children", + "type": "ChildField", + "isMany": true + }, + { + "name": "extensionElements", + "type": "bpmn:ExtensionElements", + "isMany": true + } + ] + }, + { + "name": "FormData", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:StartEvent", "bpmn:UserTask"] + }, + "properties": [ + { + "name": "fields", + "type": "FormField", + "isMany": true + }, + { + "name": "businessKey", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "FormField", + "superClass": ["Element"], + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "label", + "type": "String", + "isAttr": true + }, + { + "name": "type", + "type": "String", + "isAttr": true + }, + { + "name": "datePattern", + "type": "String", + "isAttr": true + }, + { + "name": "defaultValue", + "type": "String", + "isAttr": true + }, + { + "name": "properties", + "type": "Properties" + }, + { + "name": "validation", + "type": "Validation" + }, + { + "name": "values", + "type": "Value", + "isMany": true + } + ] + }, + { + "name": "Validation", + "superClass": ["Element"], + "properties": [ + { + "name": "constraints", + "type": "Constraint", + "isMany": true + } + ] + }, + { + "name": "Constraint", + "superClass": ["Element"], + "properties": [ + { + "name": "name", + "type": "String", + "isAttr": true + }, + { + "name": "config", + "type": "String", + "isAttr": true + } + ] + }, + { + "name": "ConditionalEventDefinition", + "isAbstract": true, + "extends": ["bpmn:ConditionalEventDefinition"], + "properties": [ + { + "name": "variableName", + "isAttr": true, + "type": "String" + }, + { + "name": "variableEvent", + "isAttr": true, + "type": "String" + } + ] + }, + { + "name": "Condition", + "superClass": ["Element"], + "meta": { + "allowedIn": ["bpmn:SequenceFlow"] + }, + "properties": [ + { + "name": "id", + "type": "String", + "isAttr": true + }, + { + "name": "field", + "type": "String", + "isAttr": true + }, + { + "name": "compare", + "type": "String", + "isAttr": true + }, + { + "name": "value", + "type": "String", + "isAttr": true + }, + { + "name": "logic", + "type": "String", + "isAttr": true + }, + { + "name": "sort", + "type": "Integer", + "isAttr": true + } + ] + } + ], + "emumerations": [] +} diff --git a/src/components/Process/flowable/init.js b/src/components/Process/flowable/init.js new file mode 100644 index 0000000..2f118d2 --- /dev/null +++ b/src/components/Process/flowable/init.js @@ -0,0 +1,33 @@ + +function randomStr() { + return Math.random().toString(36).slice(-8) +} + +export default function() { + return ` + + + + + + + + + + + + + + + + ` +} diff --git a/src/components/Process/index.vue b/src/components/Process/index.vue new file mode 100644 index 0000000..636ae34 --- /dev/null +++ b/src/components/Process/index.vue @@ -0,0 +1,351 @@ + + + + + diff --git a/src/components/Process/lang/zh.js b/src/components/Process/lang/zh.js new file mode 100644 index 0000000..b3333a1 --- /dev/null +++ b/src/components/Process/lang/zh.js @@ -0,0 +1,277 @@ +// https://github.com/bpmn-io/bpmn-js-i18n/blob/master/translations/zn.js +export default { + // Labels + 'Activate the global connect tool': '激活全局连接工具', + 'Append {type}': '添加 {type}', + 'Append Task': '添加任务', + 'Append Gateway': '添加网关', + 'Append EndEvent': '添加结束事件', + 'Append StartEvent': '添加开始事件', + "Append Intermediate/Boundary Event": '添加边界事件', + 'Add Lane above': '在上面添加道', + 'Divide into two Lanes': '分割成两个道', + 'Divide into three Lanes': '分割成三个道', + 'Add Lane below': '在下面添加道', + 'Append compensation activity': '追加补偿活动', + 'Change type': '修改类型', + 'Connect using Association': '使用关联连接', + 'Connect using Sequence/MessageFlow or Association': '使用顺序/消息流或者关联连接', + 'Connect using DataInputAssociation': '使用数据输入关联连接', + 'Remove': '移除', + 'Activate the hand tool': '激活抓手工具', + 'Activate the lasso tool': '激活套索工具', + 'Activate the create/remove space tool': '激活创建/删除空间工具', + 'Create expanded SubProcess': '创建扩展子过程', + 'Create IntermediateThrowEvent/BoundaryEvent': '创建中间抛出事件/边界事件', + 'Create Pool/Participant': '创建池/参与者', + 'Parallel Multi Instance': '并行多重事件', + 'Sequential Multi Instance': '时序多重事件', + 'DataObjectReference': '数据对象参考', + 'DataStoreReference': '数据存储参考', + 'Loop': '循环', + 'Ad-hoc': '即席', + 'Create {type}': '创建 {type}', + 'Task': '任务', + 'Send Task': '发送任务', + 'Receive Task': '接收任务', + 'User Task': '用户任务', + 'Manual Task': '手工任务', + 'Business Rule Task': '业务规则任务', + 'Service Task': '服务任务', + 'Script Task': '脚本任务', + 'Call Activity': '调用活动', + 'Sub Process (collapsed)': '子流程(折叠的)', + 'Sub Process (expanded)': '子流程(展开的)', + 'Start Event': '开始事件', + 'StartEvent': '开始事件', + 'Intermediate Throw Event': '中间事件', + 'End Event': '结束事件', + 'EndEvent': '结束事件', + 'Create Gateway': '创建网关', + 'Create Intermediate/Boundary Event': '创建中间/边界事件', + 'Message Start Event': '消息开始事件', + 'Timer Start Event': '定时开始事件', + 'Conditional Start Event': '条件开始事件', + 'Signal Start Event': '信号开始事件', + 'Error Start Event': '错误开始事件', + 'Escalation Start Event': '升级开始事件', + 'Compensation Start Event': '补偿开始事件', + 'Message Start Event (non-interrupting)': '消息开始事件(非中断)', + 'Timer Start Event (non-interrupting)': '定时开始事件(非中断)', + 'Conditional Start Event (non-interrupting)': '条件开始事件(非中断)', + 'Signal Start Event (non-interrupting)': '信号开始事件(非中断)', + 'Escalation Start Event (non-interrupting)': '升级开始事件(非中断)', + 'Message Intermediate Catch Event': '消息中间捕获事件', + 'Message Intermediate Throw Event': '消息中间抛出事件', + 'Timer Intermediate Catch Event': '定时中间捕获事件', + 'Escalation Intermediate Throw Event': '升级中间抛出事件', + 'Conditional Intermediate Catch Event': '条件中间捕获事件', + 'Link Intermediate Catch Event': '链接中间捕获事件', + 'Link Intermediate Throw Event': '链接中间抛出事件', + 'Compensation Intermediate Throw Event': '补偿中间抛出事件', + 'Signal Intermediate Catch Event': '信号中间捕获事件', + 'Signal Intermediate Throw Event': '信号中间抛出事件', + 'Message End Event': '消息结束事件', + 'Escalation End Event': '定时结束事件', + 'Error End Event': '错误结束事件', + 'Cancel End Event': '取消结束事件', + 'Compensation End Event': '补偿结束事件', + 'Signal End Event': '信号结束事件', + 'Terminate End Event': '终止结束事件', + 'Message Boundary Event': '消息边界事件', + 'Message Boundary Event (non-interrupting)': '消息边界事件(非中断)', + 'Timer Boundary Event': '定时边界事件', + 'Timer Boundary Event (non-interrupting)': '定时边界事件(非中断)', + 'Escalation Boundary Event': '升级边界事件', + 'Escalation Boundary Event (non-interrupting)': '升级边界事件(非中断)', + 'Conditional Boundary Event': '条件边界事件', + 'Conditional Boundary Event (non-interrupting)': '条件边界事件(非中断)', + 'Error Boundary Event': '错误边界事件', + 'Cancel Boundary Event': '取消边界事件', + 'Signal Boundary Event': '信号边界事件', + 'Signal Boundary Event (non-interrupting)': '信号边界事件(非中断)', + 'Compensation Boundary Event': '补偿边界事件', + 'Exclusive Gateway': '互斥网关', + 'Parallel Gateway': '并行网关', + 'Inclusive Gateway': '相容网关', + 'Complex Gateway': '复杂网关', + 'Event based Gateway': '事件网关', + 'Transaction': '转运', + 'Sub Process': '子流程', + 'Event Sub Process': '事件子流程', + 'Collapsed Pool': '折叠池', + 'Expanded Pool': '展开池', + // Errors + 'no parent for {element} in {parent}': '在{parent}里,{element}没有父类', + 'no shape type specified': '没有指定的形状类型', + 'flow elements must be children of pools/participants': '流元素必须是池/参与者的子类', + 'out of bounds release': 'out of bounds release', + 'more than {count} child lanes': '子道大于{count} ', + 'element required': '元素不能为空', + 'diagram not part of Definitions': '流程图不符合bpmn规范', + 'no diagram to display': '没有可展示的流程图', + 'no process or collaboration to display': '没有可展示的流程/协作', + 'element {element} referenced by {referenced}#{property} not yet drawn': '由{referenced}#{property}引用的{element}元素仍未绘制', + 'already rendered {element}': '{element} 已被渲染', + 'failed to import {element}': '导入{element}失败', + // 属性面板的参数 + 'Id': '标识', + 'Name': '名称', + 'General': '常规', + 'Details': '详情', + 'Message Name': '消息名称', + 'Message': '消息', + 'Initiator': '创建者', + 'Asynchronous Continuations': '持续异步', + 'Asynchronous Before': '异步前', + 'Asynchronous After': '异步后', + 'Job Configuration': '工作配置', + 'Exclusive': '排除', + 'Job Priority': '工作优先级', + 'Retry Time Cycle': '重试时间周期', + 'Documentation': '文档', + 'Element Documentation': '元素文档', + 'History Configuration': '历史配置', + 'History Time To Live': '历史的生存时间', + 'Forms': '表单', + 'Form Key': '表单key', + 'Form Fields': '表单字段', + 'Business Key': '业务key', + 'Form Field': '表单字段', + 'ID': '编号', + 'Type': '类型', + 'Label': '名称', + 'Default Value': '默认值', + 'Validation': '校验', + 'Add Constraint': '添加约束', + 'Config': '配置', + 'Properties': '属性', + 'Add Property': '添加属性', + 'Value': '值', + 'Listeners': '监听器', + 'Execution Listener': '执行监听', + 'Event Type': '事件类型', + 'Listener Type': '监听器类型', + 'Java Class': 'Java类', + 'Expression': '表达式', + 'Must provide a value': '必须提供一个值', + 'Delegate Expression': '代理表达式', + 'Script': '脚本', + 'Script Format': '脚本格式', + 'Script Type': '脚本类型', + 'Inline Script': '内联脚本', + 'External Script': '外部脚本', + 'Resource': '资源', + 'Field Injection': '字段注入', + 'Extensions': '扩展', + 'Input/Output': '输入/输出', + 'Input Parameters': '输入参数', + 'Output Parameters': '输出参数', + 'Parameters': '参数', + 'Output Parameter': '输出参数', + 'Timer Definition Type': '定时器定义类型', + 'Timer Definition': '定时器定义', + 'Date': '日期', + 'Duration': '持续', + 'Cycle': '循环', + 'Signal': '信号', + 'Signal Name': '信号名称', + 'Escalation': '升级', + 'Error': '错误', + 'Link Name': '链接名称', + 'Condition': '条件名称', + 'Variable Name': '变量名称', + 'Variable Event': '变量事件', + 'Specify more than one variable change event as a comma separated list.': '多个变量事件以逗号隔开', + 'Wait for Completion': '等待完成', + 'Activity Ref': '活动参考', + 'Version Tag': '版本标签', + 'Executable': '可执行文件', + 'External Task Configuration': '扩展任务配置', + 'Task Priority': '任务优先级', + 'External': '外部', + 'Connector': '连接器', + 'Must configure Connector': '必须配置连接器', + 'Connector Id': '连接器编号', + 'Implementation': '实现方式', + 'Field Injections': '字段注入', + 'Fields': '字段', + 'Result Variable': '结果变量', + 'Topic': '主题', + 'Configure Connector': '配置连接器', + 'Input Parameter': '输入参数', + 'Assignee': '代理人', + 'Candidate Users': '候选用户', + 'Candidate Groups': '候选组', + 'Due Date': '到期时间', + 'Follow Up Date': '跟踪日期', + 'Priority': '优先级', + 'The follow up date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'The due date as an EL expression (e.g. ${someDate} or an ISO date (e.g. 2015-06-26T09:54:00)': '跟踪日期必须符合EL表达式,如: ${someDate} ,或者一个ISO标准日期,如:2015-06-26T09:54:00', + 'Variables': '变量', + // 流程校验器翻译字段 + '{errors} Errors, {warnings} Warnings': '{errors} 错误, {warnings} 警告', + 'Element is missing label/name': '元素未设置 label 标签', + 'Sequence flow is missing condition': '检查从条件分叉网关或任务节点传出的序列流是否为默认流或具有附加条件', + 'is missing end event': '检查每个流程范围内是否存在结束事件', + 'Start event is missing event definition': '检查流程中是否具有开始事件', + 'Incoming flows do not join': '检查事件或者任务节点是否具有隐式的流转规则,默认事件和任务只能有一个流入条件', + 'Element has disallowed type': '元素具有不允许的类型', + 'Element is missing bpmndi': '检查可见的元素是否都具有对应的 DI 标签', + 'Element is not connected': '检查节点是否正常连接', + 'SequenceFlow is a duplicate': 'SequenceFlow重复', + 'Duplicate outgoing sequence flows': '重复的传出序列流', + 'Duplicate incoming sequence flows': '重复的传入序列流', + 'Gateway forks and joins': '检查网关是否同时有多个流入和流出规则', + 'Flow splits implicitly': '检查网关或者任务节点是否有多个流出路径且没有配置条件', + 'has multiple blank start events': '检查流程内是否有多个开始事件', + 'Event has multiple event definitions': '验证事件是否包含有超过一个事件定义的规则', + 'is missing start event': '检查流程内是否存在开始事件', + 'Process is missing end event': '检查流程内是否存在结束事件', + 'Start event must be blank': '检查子流程的开始事件是否具有启动条件', + 'Gateway is superfluous. It only has one source and target.': '检查网关是否同时只有一个流入和流出路径,否则需要移除', +} + +// +// export const NodeName = { +// 'bpmn:Process': '流程', +// 'bpmn:StartEvent': '开始事件', +// 'bpmn:IntermediateThrowEvent': '中间事件', +// 'bpmn:Task': '任务', +// 'bpmn:SendTask': '发送任务', +// 'bpmn:ReceiveTask': '接收任务', +// 'bpmn:UserTask': '用户任务', +// 'bpmn:ManualTask': '手工任务', +// 'bpmn:BusinessRuleTask': '业务规则任务', +// 'bpmn:ServiceTask': '服务任务', +// 'bpmn:ScriptTask': '脚本任务', +// 'bpmn:EndEvent': '结束事件', +// 'bpmn:SequenceFlow': '流程线', +// 'bpmn:ExclusiveGateway': '互斥网关', +// 'bpmn:ParallelGateway': '并行网关', +// 'bpmn:InclusiveGateway': '相容网关', +// 'bpmn:ComplexGateway': '复杂网关', +// 'bpmn:EventBasedGateway': '事件网关' +// } + + +export const NodeName = { + 'Process': '流程', + 'StartEvent': '开始事件', + 'IntermediateThrowEvent': '中间事件', + 'Task': '任务', + 'SendTask': '发送任务', + 'ReceiveTask': '接收任务', + 'UserTask': '用户任务', + 'ManualTask': '手工任务', + 'BusinessRuleTask': '业务规则任务', + 'ServiceTask': '服务任务', + 'ScriptTask': '脚本任务', + 'EndEvent': '结束事件', + 'SequenceFlow': '流程线', + 'ExclusiveGateway': '互斥网关', + 'ParallelGateway': '并行网关', + 'InclusiveGateway': '相容网关', + 'ComplexGateway': '复杂网关', + 'EventBasedGateway': '事件网关' +} diff --git a/src/components/Process/panel/ButtonsPanel.vue b/src/components/Process/panel/ButtonsPanel.vue new file mode 100644 index 0000000..eea4d46 --- /dev/null +++ b/src/components/Process/panel/ButtonsPanel.vue @@ -0,0 +1,139 @@ + + + diff --git a/src/components/Process/panel/PropertiesPanel.vue b/src/components/Process/panel/PropertiesPanel.vue new file mode 100644 index 0000000..dd02fee --- /dev/null +++ b/src/components/Process/panel/PropertiesPanel.vue @@ -0,0 +1,139 @@ + + + diff --git a/src/components/Process/panel/commonPanel.vue b/src/components/Process/panel/commonPanel.vue new file mode 100644 index 0000000..8574eb6 --- /dev/null +++ b/src/components/Process/panel/commonPanel.vue @@ -0,0 +1,139 @@ + + + diff --git a/src/components/Process/panel/conditionPanel.vue b/src/components/Process/panel/conditionPanel.vue new file mode 100644 index 0000000..1ef1878 --- /dev/null +++ b/src/components/Process/panel/conditionPanel.vue @@ -0,0 +1,175 @@ + + + diff --git a/src/components/Process/panel/executionListener.vue b/src/components/Process/panel/executionListener.vue new file mode 100644 index 0000000..6cdb994 --- /dev/null +++ b/src/components/Process/panel/executionListener.vue @@ -0,0 +1,464 @@ + + + + + diff --git a/src/components/Process/panel/formPanel.vue b/src/components/Process/panel/formPanel.vue new file mode 100644 index 0000000..92c9604 --- /dev/null +++ b/src/components/Process/panel/formPanel.vue @@ -0,0 +1,78 @@ + + + diff --git a/src/components/Process/panel/multiInstance.vue b/src/components/Process/panel/multiInstance.vue new file mode 100644 index 0000000..56e7f66 --- /dev/null +++ b/src/components/Process/panel/multiInstance.vue @@ -0,0 +1,236 @@ + + + + diff --git a/src/components/Process/panel/otherPanel.vue b/src/components/Process/panel/otherPanel.vue new file mode 100644 index 0000000..09e234a --- /dev/null +++ b/src/components/Process/panel/otherPanel.vue @@ -0,0 +1,65 @@ + + + diff --git a/src/components/Process/panel/taskListener.vue b/src/components/Process/panel/taskListener.vue new file mode 100644 index 0000000..8c55477 --- /dev/null +++ b/src/components/Process/panel/taskListener.vue @@ -0,0 +1,501 @@ + + + + diff --git a/src/components/Process/panel/taskPanel.vue b/src/components/Process/panel/taskPanel.vue new file mode 100644 index 0000000..84bfd23 --- /dev/null +++ b/src/components/Process/panel/taskPanel.vue @@ -0,0 +1,407 @@ + + + \ No newline at end of file diff --git a/src/components/Process/style/flow-viewer.scss b/src/components/Process/style/flow-viewer.scss new file mode 100644 index 0000000..2c90d25 --- /dev/null +++ b/src/components/Process/style/flow-viewer.scss @@ -0,0 +1,183 @@ +.my-header { + display: flex; + flex-direction: row; + justify-content: space-between; +} + +.flowMsgPopover { + display: none; +} + +.tipBox { + width: 180px; + background: #fff; + border-radius: 4px; + border: 1px solid #ebeef5; + padding: 12px; + + p{ + line-height: 28px; + margin:0; + padding:0; + } +} + +.cell-item { + display: flex; + align-items: center; +} + +// bpmn 画布 logo +//.bjs-powered-by { +// display: none; +//} +.view-mode { + .el-header, .el-aside, .djs-palette, .bjs-powered-by { + display: none; + } + + .el-loading-mask { + background-color: initial; + } + + .el-loading-spinner { + display: none; + } +} + +.containers { + width: 100%; + height: 100%; + + .canvas { + width: 100%; + height: 100%; + background: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDAiIGhlaWdodD0iNDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGRlZnM+PHBhdHRlcm4gaWQ9ImEiIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcGF0dGVyblVuaXRzPSJ1c2VyU3BhY2VPblVzZSI+PHBhdGggZD0iTTAgMTBoNDBNMTAgMHY0ME0wIDIwaDQwTTIwIDB2NDBNMCAzMGg0ME0zMCAwdjQwIiBmaWxsPSJub25lIiBzdHJva2U9IiNlMGUwZTAiIG9wYWNpdHk9Ii4yIi8+PHBhdGggZD0iTTQwIDBIMHY0MCIgZmlsbD0ibm9uZSIgc3Ryb2tlPSIjZTBlMGUwIi8+PC9wYXR0ZXJuPjwvZGVmcz48cmVjdCB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmaWxsPSJ1cmwoI2EpIi8+PC9zdmc+") + } + + .panel { + position: absolute; + right: 0; + top: 50px; + width: 300px; + } + + .load { + margin-right: 10px; + } + + .djs-palette { + left: 0px !important; + top: 0px; + border-top: none; + } + + .djs-container svg { + min-height: 650px; + } + + .overlays-div { + font-size: 10px; + color: red; + width: 100px; + top: -20px !important; + } + + .flow-viewer { + position: relative; + padding: 0; + } + + .flow-viewer .button-group { + display: flex; + position: absolute; + width: auto; + height: auto; + top: 10px; + right: 10px; + } + + // 流程线 + .highlight.djs-shape .djs-visual > :nth-child(1) { + fill: #56bb56 !important; + stroke: #56bb56 !important; + fill-opacity: 0.2 !important; + } + + .highlight.djs-shape .djs-visual > :nth-child(2) { + fill: #56bb56 !important; + } + + .highlight.djs-shape .djs-visual > path { + fill: #56bb56 !important; + fill-opacity: 0.2 !important; + stroke: #56bb56 !important; + } + + .highlight.djs-connection > .djs-visual > path { + stroke: #56bb56 !important; + } + + .highlight-todo.djs-connection > .djs-visual > path { + stroke: #eab24a !important; + stroke-dasharray: 4px !important; + fill-opacity: 0.2 !important; + } + + .highlight-todo.djs-shape .djs-visual > :nth-child(1) { + stroke-dasharray: 5, 5; + stroke-dashoffset: 500; + stroke: #eab24a !important; + fill: rgba(252, 211, 127, 0.2) !important; + } + + @keyframes draw { + 100% { + stroke-dashoffset: 0; + } + } + + .process-status { + position: absolute; + width: auto; + height: auto; + + display: flex; + float: right; + top: 10px; + left: 10px; + font-size: 12px; + + .intro { + color: #303133; + margin-top: 5px; + } + + .finish { + background-color: #E8FFEA; + padding: 4px; + border: 1px solid rgba(0, 180, 42, 0.1); + border-radius: 3px; + color: #56bb56; + margin-right: 8px; + } + + .processing { + background-color: #fcf5ea; + padding: 4px; + border: 1px solid #fce9c7; + border-radius: 3px; + color: #eab24a; + margin-right: 8px; + } + + .todo { + padding: 4px; + background: #ECEDEE; + border: 1px solid rgba(204, 204, 204, 0.1); + border-radius: 3px; + color: #666666; + margin-right: 5px; + } + } +} diff --git a/src/components/Process/style/process-panel.scss b/src/components/Process/style/process-panel.scss new file mode 100644 index 0000000..c41fccc --- /dev/null +++ b/src/components/Process/style/process-panel.scss @@ -0,0 +1,123 @@ +//.process-panel__container { +// box-sizing: border-box; +// padding: 0 8px; +// border-left: 1px solid #eeeeee; +// box-shadow: 0 0 8px #cccccc; +// max-height: 100%; +// overflow-y: scroll; +//} +.panel-tab__title { + font-weight: 600; + padding: 0 8px; + font-size: 1.1em; + line-height: 1.2em; + i { + margin-right: 8px; + font-size: 1.2em; + } +} +.panel-tab__content { + width: 100%; + box-sizing: border-box; + //border-top: 1px solid #eeeeee; + padding: 8px 16px; + .panel-tab__content--title { + display: flex; + justify-content: space-between; + padding-bottom: 8px; + span { + flex: 1; + text-align: left; + } + } +} +.element-property { + width: 100%; + display: flex; + align-items: flex-start; + margin: 8px 0; + .element-property__label { + display: block; + width: 90px; + text-align: right; + overflow: hidden; + padding-right: 12px; + line-height: 32px; + font-size: 14px; + box-sizing: border-box; + } + .element-property__value { + flex: 1; + line-height: 32px; + } + .el-form-item { + width: 100%; + margin-bottom: 0; + padding-bottom: 18px; + } +} +.list-property { + flex-direction: column; + .element-listener-item { + width: 100%; + display: inline-grid; + grid-template-columns: 16px auto 32px 32px; + grid-column-gap: 8px; + } + .element-listener-item + .element-listener-item { + margin-top: 8px; + } +} +.listener-filed__title { + width: 100%; + justify-content: space-between; + align-items: center; + margin-top: 0; + span { + font-size: 14px; + } + i { + margin-right: 8px; + } +} +.element-drawer__button { + margin-top: 8px; + display: inline-flex; + justify-content: space-around; +} +.element-drawer__button > .el-button { + width: 100%; +} + +.element-drawer__button_save { + margin-top: 8px; + width: 100%; + display: inline-flex; + justify-content: space-around; +} +.element-drawer__button_save > .el-button { + width: 100%; +} + +.el-collapse-item__content { + padding-bottom: 0; +} +.el-input.is-disabled .el-input__inner { + color: #999999; +} +.el-form-item.el-form-item--mini { + margin-bottom: 0; + & + .el-form-item { + margin-top: 16px; + } +} +.el-drawer__header{ + margin-bottom: 0; + border-bottom: 1px solid #e8e8e8; + padding: 16px 16px 8px 16px; + font-size: 18px; + color: #303133; +} +.el-drawer__body{ + padding: 10px; +} diff --git a/src/components/Process/viewer/index.vue b/src/components/Process/viewer/index.vue new file mode 100644 index 0000000..8f476aa --- /dev/null +++ b/src/components/Process/viewer/index.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/src/components/QRCodeView/index.d.ts b/src/components/QRCodeView/index.d.ts new file mode 100644 index 0000000..aa04b8e --- /dev/null +++ b/src/components/QRCodeView/index.d.ts @@ -0,0 +1 @@ +declare module 'qrcode'; \ No newline at end of file diff --git a/src/components/QRCodeView/index.vue b/src/components/QRCodeView/index.vue new file mode 100644 index 0000000..f043cf7 --- /dev/null +++ b/src/components/QRCodeView/index.vue @@ -0,0 +1,71 @@ + + + \ No newline at end of file diff --git a/src/components/RightToolbar/index.vue b/src/components/RightToolbar/index.vue new file mode 100644 index 0000000..bb29c3a --- /dev/null +++ b/src/components/RightToolbar/index.vue @@ -0,0 +1,155 @@ + + + \ No newline at end of file diff --git a/src/components/Schema/form.vue b/src/components/Schema/form.vue new file mode 100644 index 0000000..de04c45 --- /dev/null +++ b/src/components/Schema/form.vue @@ -0,0 +1,23 @@ + + \ No newline at end of file diff --git a/src/components/Schema/index.ts b/src/components/Schema/index.ts new file mode 100644 index 0000000..24a2776 --- /dev/null +++ b/src/components/Schema/index.ts @@ -0,0 +1,4 @@ +import SchemaForm from "./form.vue"; +import SchemaTable from "./table.vue"; + +export { SchemaForm, SchemaTable }; \ No newline at end of file diff --git a/src/components/Schema/table.vue b/src/components/Schema/table.vue new file mode 100644 index 0000000..424d2aa --- /dev/null +++ b/src/components/Schema/table.vue @@ -0,0 +1,27 @@ + + \ No newline at end of file diff --git a/src/components/Screenfull/index.vue b/src/components/Screenfull/index.vue new file mode 100644 index 0000000..c899bf1 --- /dev/null +++ b/src/components/Screenfull/index.vue @@ -0,0 +1,20 @@ + + + \ No newline at end of file diff --git a/src/components/SizeSelect/index.vue b/src/components/SizeSelect/index.vue new file mode 100644 index 0000000..61ffa2c --- /dev/null +++ b/src/components/SizeSelect/index.vue @@ -0,0 +1,42 @@ + + + \ No newline at end of file diff --git a/src/components/SvgIcon/index.vue b/src/components/SvgIcon/index.vue new file mode 100644 index 0000000..3c2db42 --- /dev/null +++ b/src/components/SvgIcon/index.vue @@ -0,0 +1,39 @@ + + + + + diff --git a/src/components/TransitionVisible/index.vue b/src/components/TransitionVisible/index.vue new file mode 100644 index 0000000..b66fbca --- /dev/null +++ b/src/components/TransitionVisible/index.vue @@ -0,0 +1,209 @@ + + + diff --git a/src/components/TreeSelect/index.vue b/src/components/TreeSelect/index.vue new file mode 100644 index 0000000..6b5445f --- /dev/null +++ b/src/components/TreeSelect/index.vue @@ -0,0 +1,145 @@ + + + + + \ No newline at end of file diff --git a/src/components/UploadComponents/ChunkUpload/TaskQueue.ts b/src/components/UploadComponents/ChunkUpload/TaskQueue.ts new file mode 100644 index 0000000..3178099 --- /dev/null +++ b/src/components/UploadComponents/ChunkUpload/TaskQueue.ts @@ -0,0 +1,246 @@ +import { nextTick } from "vue"; + +export type TaskFn = (signal?: AbortSignal) => Promise; +export type ErrorMode = 'continue' | 'abort'; + +export interface TaskQueueOptions { + concurrency?: number; // 并发数,默认 4 + errorMode?: ErrorMode; // 出错策略:继续 or 中止 + autoStart?: boolean; // add 时是否自动启动,默认 true +} + +export interface AddTaskOptions { + priority?: number; // 优先级,数值越大越先执行,默认 0 + signal?: AbortSignal; // 任务级取消信号 + timeout?: number; // 单任务超时(ms) + id?: string; // 任务标识,便于调试 +} + +class AbortError extends Error { + name = 'AbortError'; + constructor(message = 'Aborted') { + super(message); + } +} + +interface QueueItem { + id?: string; + priority: number; + fn: TaskFn; + resolve: (v: T) => void; + reject: (e: unknown) => void; + signal?: AbortSignal; + timeout?: number; + addedAt: number; +} + +export class TaskQueue { + /** 最大并发数 */ + private concurrency!: number; // 在构造函数中设置 + + /** 当前正在执行的任务数 */ + private runningCount = 0; + + /** 待执行任务队列(使用 unknown 以避免泛型入队时的类型不兼容) */ + private taskQueue: QueueItem[] = []; + + /** 出错策略 */ + private errorMode: ErrorMode = 'abort'; + + /** 自动启动 */ + private autoStart: boolean = true; + + /** 是否暂停调度 */ + private paused = false; + + /** 是否已中止(如因错误或手动 abort) */ + private aborted = false; + private abortReason?: string; + + /** 错误收集(errorMode=continue 时有用) */ + private errors: unknown[] = []; + + /** empty/idle 等待者 */ + private emptyWaiters: Array<() => void> = []; + private idleWaiters: Array<() => void> = []; + + constructor(options: number | TaskQueueOptions = 4) { + if (typeof options === 'number') { + this.concurrency = Math.max(1, options); + this.errorMode = 'abort'; + this.autoStart = true; + } else { + this.concurrency = Math.max(1, options.concurrency ?? 4); + this.errorMode = options.errorMode ?? 'abort'; + this.autoStart = options.autoStart ?? true; + } + } + + // 状态只读属性 + get size() { return this.taskQueue.length; } + get pending() { return this.runningCount; } + get isPaused() { return this.paused; } + get isAborted() { return this.aborted; } + get collectedErrors() { return this.errors.slice(); } + + /** + * 添加任务(必须是函数),返回该任务自身的 Promise。 + */ + public add(fn: TaskFn, opts: AddTaskOptions = {}): Promise { + return new Promise((resolve, reject) => { + if (this.aborted) { + reject(new AbortError(this.abortReason || 'Queue aborted')); + return; + } + + const item: QueueItem = { + id: opts.id, + priority: opts.priority ?? 0, + fn, + resolve, + reject, + signal: opts.signal, + timeout: opts.timeout, + addedAt: Date.now(), + }; + + this.enqueue(item as unknown as QueueItem); + if (this.autoStart && !this.paused) this.runNext(); + }); + } + + /** 批量添加 */ + public addAll(fns: Array>, opts?: AddTaskOptions): Promise[] { + return fns.map((fn) => this.add(fn, opts)); + } + + /** 等待队列空(无排队任务) */ + public onEmpty(): Promise { + if (this.size === 0) return Promise.resolve(); + return new Promise((resolve) => this.emptyWaiters.push(resolve)); + } + + /** 等待完全空闲(无排队、无运行中) => 等待所有任务完成 */ + public waitAll(): Promise { + if (this.size === 0 && this.runningCount === 0) return Promise.resolve(); + return new Promise((resolve) => this.idleWaiters.push(resolve)); + } + + /** 暂停调度 */ + public pause() { this.paused = true; } + + /** 恢复调度 */ + public resume() { + if (!this.paused) return; + this.paused = false; + this.runNext(); + } + + /** 手动中止:清空剩余队列并拒绝它们 */ + public abort(reason = 'Aborted by user') { + if (this.aborted) return; + this.aborted = true; + this.abortReason = reason; + this.clear(new AbortError(reason)); + } + + /** 清空待执行任务(不影响已在运行中的任务) */ + public clear(err: unknown = new AbortError('Cleared')) { + const pending = this.taskQueue.splice(0, this.taskQueue.length); + for (const item of pending) item.reject(err); + this.notifyEmptyIfNeeded(); + this.notifyIdleIfNeeded(); + } + + /** 动态调整并发度 */ + public setConcurrency(n: number) { + this.concurrency = Math.max(1, n | 0); + this.runNext(); + } + + /** 修改错误策略 */ + public setErrorMode(mode: ErrorMode) { this.errorMode = mode; } + + /** 入队(按优先级降序,稳定插入) */ + private enqueue(item: QueueItem) { + const idx = this.taskQueue.findIndex((q) => q.priority < item.priority); + if (idx === -1) this.taskQueue.push(item); + else this.taskQueue.splice(idx, 0, item); + } + + /** 调度下一批任务(在下一帧启动) */ + private runNext() { + if (this.paused || this.aborted) return; + + while (this.runningCount < this.concurrency && this.taskQueue.length > 0) { + const item = this.taskQueue.shift()!; + if (this.taskQueue.length === 0) this.notifyEmptyIfNeeded(); + + this.runningCount++; + nextTick(() => { + this.execute(item) + .catch(() => { /* 错误在 execute 中处理 */ }) + .finally(() => { + this.runningCount--; + if (!this.aborted) this.runNext(); + this.notifyIdleIfNeeded(); + }); + }); + } + } + + /** 实际执行(处理 signal、timeout、错误策略) */ + private async execute(item: QueueItem): Promise { + if (item.signal?.aborted) { + item.reject(new AbortError('Task aborted before start')); + return; + } + + let timer: number | undefined; + const onAbort = () => { + if (timer) clearTimeout(timer); + item.reject(new AbortError('Task aborted')); + }; + if (item.signal) item.signal.addEventListener('abort', onAbort, { once: true }); + + if (item.timeout && item.timeout > 0) { + timer = window.setTimeout(() => { + item.reject(new Error(`Task timeout after ${item.timeout}ms`)); + }, item.timeout); + } + + try { + const result = await item.fn(item.signal); + if (timer) clearTimeout(timer); + (item.resolve as (v: unknown) => void)(result); + } catch (err) { + if (timer) clearTimeout(timer); + this.errors.push(err); + item.reject(err); + + if (this.errorMode === 'abort' && !this.aborted) { + this.aborted = true; + this.abortReason = 'Aborted due to previous error'; + this.clear(err instanceof Error ? err : new Error(String(err))); + } + } finally { + if (item.signal) item.signal.removeEventListener('abort', onAbort); + } + } + + private notifyEmptyIfNeeded() { + if (this.taskQueue.length === 0 && this.emptyWaiters.length) { + const callbacks = this.emptyWaiters.splice(0, this.emptyWaiters.length); + for (const cb of callbacks) cb(); + } + } + + private notifyIdleIfNeeded() { + if (this.taskQueue.length === 0 && this.runningCount === 0 && this.idleWaiters.length) { + const callbacks = this.idleWaiters.splice(0, this.idleWaiters.length); + for (const cb of callbacks) cb(); + } + } +} + +export default TaskQueue; \ No newline at end of file diff --git a/src/components/UploadComponents/ChunkUpload/index.ts b/src/components/UploadComponents/ChunkUpload/index.ts new file mode 100644 index 0000000..11cf516 --- /dev/null +++ b/src/components/UploadComponents/ChunkUpload/index.ts @@ -0,0 +1,87 @@ +import { completeMultipartUpload, initMultipartUpload, uploadFileChunk } from "@/api/file/info"; +import TaskQueue from "./TaskQueue"; +import { computed, ref } from "vue"; + +type Chunk = { + partNumber: number; + chunk: Blob; +}; + +export function useChunkUpload(file?: File, options?: { chunkSize?: number; concurrency?: number }) { + const chunkBytes = options?.chunkSize || 5 * 1024 * 1024; // 5MB + const maxConcurrency = options?.concurrency || 3; // 最大并发数 + let uploadId: string | null = null; + let filePath: string | null = null; + let chunks: Chunk[] = []; + let partETags: { partNumber: number; etag: string }[] = []; + + const totalChunks = ref(0); + const uploadedChunks = ref(0); + const uploadPercentage = computed(() => { + if (totalChunks.value === 0) return 0; + return Math.round((uploadedChunks.value / totalChunks.value) * 100); + }); + const uploadMessage = ref(''); + const uploadStatus = ref<'' | 'success' | 'warning' | 'exception'>(''); + async function startUpload() { + uploadMessage.value = '开始初始化上传...'; + uploadStatus.value = ''; + if (!file) throw new Error('未选择文件'); + chunks = []; + partETags = []; + const fileName = file.name; + const fileSize = file.size; + uploadedChunks.value = 0; + const { data } = await initMultipartUpload({ fileName, fileSize }); + uploadId = data.uploadId; + filePath = data.filePath; + + uploadMessage.value = '初始化成功,开始上传分片...'; + for (let i = 0; i < file.size; i += chunkBytes) { + chunks.push({ + partNumber: i + 1, + chunk: file.slice(i, i + chunkBytes) + }); + } + + totalChunks.value = chunks.length; + + const taskQueue = new TaskQueue(maxConcurrency); + chunks.forEach((chunk) => taskQueue.add(async () => { + try { + const { data: chunkResponse } = await uploadFileChunk(uploadId, filePath, chunk.partNumber, chunk.chunk); + if (!chunkResponse || !chunkResponse.etag) { + throw new Error('服务器返回的分片信息无效'); + } + partETags.push({ partNumber: chunk.partNumber, etag: chunkResponse.etag }); + uploadedChunks.value = partETags.length; + uploadMessage.value = `上传分片 ${uploadedChunks.value} / ${totalChunks.value}...`; + } catch (error: any) { + console.error('分片上传失败:', error); + throw new Error(`分片 ${chunk.partNumber} 上传失败: ${error.message}`); + } + })); + await taskQueue.waitAll(); + + uploadMessage.value = '正在合并分片...'; + const formattedPartETags = partETags.map(item => ({ partNumber: item.partNumber, ETag: item.etag })); + await completeMultipartUpload({ + uploadId: uploadId, + filePath: filePath, + fileSize: file.size, + fileName: file.name, + partETags: formattedPartETags, + }); + + uploadMessage.value = '上传完成'; + uploadStatus.value = 'success'; + } + return { + startUpload, + uploadPercentage, + uploadStatus, + uploadMessage, + uploadedChunks, + totalChunks + } +} \ No newline at end of file diff --git a/src/components/UploadComponents/ChunkUpload/index.vue b/src/components/UploadComponents/ChunkUpload/index.vue new file mode 100644 index 0000000..50ed3cd --- /dev/null +++ b/src/components/UploadComponents/ChunkUpload/index.vue @@ -0,0 +1,229 @@ + + + \ No newline at end of file diff --git a/src/components/UploadComponents/FileUpload/index.vue b/src/components/UploadComponents/FileUpload/index.vue new file mode 100644 index 0000000..54973f5 --- /dev/null +++ b/src/components/UploadComponents/FileUpload/index.vue @@ -0,0 +1,211 @@ + + + + + diff --git a/src/components/UploadComponents/ImageUpload/index.vue b/src/components/UploadComponents/ImageUpload/index.vue new file mode 100644 index 0000000..79f165f --- /dev/null +++ b/src/components/UploadComponents/ImageUpload/index.vue @@ -0,0 +1,207 @@ + + + + + \ No newline at end of file diff --git a/src/components/flow/ElInputTag/index.vue b/src/components/flow/ElInputTag/index.vue new file mode 100644 index 0000000..2de5a43 --- /dev/null +++ b/src/components/flow/ElInputTag/index.vue @@ -0,0 +1,191 @@ + + + + + + diff --git a/src/components/flow/Expression/index.vue b/src/components/flow/Expression/index.vue new file mode 100644 index 0000000..6409481 --- /dev/null +++ b/src/components/flow/Expression/index.vue @@ -0,0 +1,129 @@ + + + diff --git a/src/components/flow/Role/index.vue b/src/components/flow/Role/index.vue new file mode 100644 index 0000000..f64b6a1 --- /dev/null +++ b/src/components/flow/Role/index.vue @@ -0,0 +1,179 @@ + + + + diff --git a/src/components/flow/User/index.vue b/src/components/flow/User/index.vue new file mode 100644 index 0000000..81b743d --- /dev/null +++ b/src/components/flow/User/index.vue @@ -0,0 +1,222 @@ + + + + diff --git a/src/components/iFrame/index.vue b/src/components/iFrame/index.vue new file mode 100644 index 0000000..30de127 --- /dev/null +++ b/src/components/iFrame/index.vue @@ -0,0 +1,28 @@ + diff --git a/src/layout/components/Navbar/Breadcrumb.vue b/src/layout/components/Navbar/Breadcrumb.vue new file mode 100644 index 0000000..2a7d37b --- /dev/null +++ b/src/layout/components/Navbar/Breadcrumb.vue @@ -0,0 +1,102 @@ + + + \ No newline at end of file diff --git a/src/layout/components/Navbar/RuoYi/Doc/index.vue b/src/layout/components/Navbar/RuoYi/Doc/index.vue new file mode 100644 index 0000000..51f13cb --- /dev/null +++ b/src/layout/components/Navbar/RuoYi/Doc/index.vue @@ -0,0 +1,13 @@ + + + \ No newline at end of file diff --git a/src/layout/components/Navbar/RuoYi/Git/gitee.vue b/src/layout/components/Navbar/RuoYi/Git/gitee.vue new file mode 100644 index 0000000..ec50a56 --- /dev/null +++ b/src/layout/components/Navbar/RuoYi/Git/gitee.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/layout/components/Navbar/RuoYi/Git/github.vue b/src/layout/components/Navbar/RuoYi/Git/github.vue new file mode 100644 index 0000000..28953d4 --- /dev/null +++ b/src/layout/components/Navbar/RuoYi/Git/github.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/layout/components/Navbar/TopNav.vue b/src/layout/components/Navbar/TopNav.vue new file mode 100644 index 0000000..1e8a0c4 --- /dev/null +++ b/src/layout/components/Navbar/TopNav.vue @@ -0,0 +1,252 @@ +/** +* TopNav组件 +* +* 功能说明: +* 1. 顶部导航栏组件,支持显示一级菜单和更多菜单折叠 +* 2. 支持两种菜单来源: +* - 仅显示后端动态路由(关闭TopNav导入本地路由时) +* - 混合显示本地路由和后端动态路由(开启TopNav导入本地路由时) +* 3. 特殊处理: +* - 空路径("")或根路径("/"):显示其第一个子路由为顶级菜单 +* - isTopMenu: 将该路由的第一个子路由显示为顶级菜单 +* +* 配置说明: +* 1. 在系统设置中可配置: +* - 开启/关闭TopNav +* - 开启/关闭TopNav导入本地路由 +* 2. 路由配置中可使用meta.isTopMenu控制菜单行为 +*/ + + + + diff --git a/src/layout/components/Navbar/index.vue b/src/layout/components/Navbar/index.vue new file mode 100644 index 0000000..522a434 --- /dev/null +++ b/src/layout/components/Navbar/index.vue @@ -0,0 +1,213 @@ + + + + + + diff --git a/src/layout/components/Settings/index.vue b/src/layout/components/Settings/index.vue new file mode 100644 index 0000000..203cc83 --- /dev/null +++ b/src/layout/components/Settings/index.vue @@ -0,0 +1,267 @@ + + + + + + + \ No newline at end of file diff --git a/src/layout/components/Sidebar/Link.vue b/src/layout/components/Sidebar/Link.vue new file mode 100644 index 0000000..3eb3c9f --- /dev/null +++ b/src/layout/components/Sidebar/Link.vue @@ -0,0 +1,32 @@ + + + + diff --git a/src/layout/components/Sidebar/Logo.vue b/src/layout/components/Sidebar/Logo.vue new file mode 100644 index 0000000..fc5e552 --- /dev/null +++ b/src/layout/components/Sidebar/Logo.vue @@ -0,0 +1,82 @@ + + + + \ No newline at end of file diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue new file mode 100644 index 0000000..01deffd --- /dev/null +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -0,0 +1,96 @@ + + diff --git a/src/layout/components/Sidebar/index.vue b/src/layout/components/Sidebar/index.vue new file mode 100644 index 0000000..b805c67 --- /dev/null +++ b/src/layout/components/Sidebar/index.vue @@ -0,0 +1,47 @@ + + diff --git a/src/layout/components/TagsView/ScrollPane.vue b/src/layout/components/TagsView/ScrollPane.vue new file mode 100644 index 0000000..4be4c8e --- /dev/null +++ b/src/layout/components/TagsView/ScrollPane.vue @@ -0,0 +1,104 @@ + + + + + \ No newline at end of file diff --git a/src/layout/components/TagsView/index.vue b/src/layout/components/TagsView/index.vue new file mode 100644 index 0000000..75f295c --- /dev/null +++ b/src/layout/components/TagsView/index.vue @@ -0,0 +1,332 @@ + + + + \ No newline at end of file diff --git a/src/layout/components/index.ts b/src/layout/components/index.ts new file mode 100644 index 0000000..d353dc8 --- /dev/null +++ b/src/layout/components/index.ts @@ -0,0 +1,5 @@ +export { default as AppMain } from './AppMain.vue' +export { default as Navbar } from './Navbar/index.vue' +export { default as Settings } from './Settings/index.vue' +export { default as TagsView } from './TagsView/index.vue' +export { default as Sidebar } from './Sidebar/index.vue' diff --git a/src/layout/index.vue b/src/layout/index.vue new file mode 100644 index 0000000..73e4e43 --- /dev/null +++ b/src/layout/index.vue @@ -0,0 +1,112 @@ + + + \ No newline at end of file diff --git a/src/main.ts b/src/main.ts new file mode 100644 index 0000000..0724c96 --- /dev/null +++ b/src/main.ts @@ -0,0 +1,34 @@ +import { createApp } from 'vue' + +import 'element-plus/dist/index.css' +import '@/assets/styles/index.scss' // global css + +import App from './App.vue' +const app = createApp(App) + +import { download } from '@/utils/request' +import { useDict } from '@/utils/dict' +import { parseTime, resetForm, addDateRange, handleTree, selectDictLabel, selectDictLabels } from '@/utils/ruoyi' +// 全局方法挂载 +app.config.globalProperties.useDict = useDict +app.config.globalProperties.download = download +app.config.globalProperties.parseTime = parseTime +app.config.globalProperties.resetForm = resetForm +app.config.globalProperties.handleTree = handleTree +app.config.globalProperties.addDateRange = addDateRange +app.config.globalProperties.selectDictLabel = selectDictLabel +app.config.globalProperties.selectDictLabels = selectDictLabels + + +import router from './router' // 引入路由 +import store from './store' // 引入状态管理 +import plugins from './plugins' // 引入插件 +import directive from './directive' // 引入指令 +import compomemts from './components' // 引入全局组件 +app.use(router).use(store).use(plugins).use(directive).use(compomemts) + +import VForm3 from '@lib/vform/designer.umd.js' //引入VForm 3库 +import '@lib/vform/designer.style.css' //引入VForm3样式 +app.use(VForm3) + +app.mount('#app') \ No newline at end of file diff --git a/src/plugins/auth.ts b/src/plugins/auth.ts new file mode 100644 index 0000000..960de37 --- /dev/null +++ b/src/plugins/auth.ts @@ -0,0 +1,84 @@ +import useUserStore from "@/store/modules/user"; + +function authPermission(permission: string): boolean { + const all_permission = "*:*:*"; + const permissions = useUserStore().permissions; + if (permission && permission.length > 0) { + return permissions.some((v) => { + return all_permission === v || v === permission; + }); + } else { + return false; + } +} + +function authRole(role: string): boolean { + const super_admin = "admin"; + const roles = useUserStore().roles; + if (role && role.length > 0) { + return roles.some((v) => { + return super_admin === v || v === role; + }); + } else { + return false; + } +} + +export default { + /** + * 验证用户是否具备某权限 + * @param permission 权限符 + * @returns + */ + hasPermi(permission: string): boolean { + return authPermission(permission); + }, + /** + * 验证用户是否含有指定权限,只需包含其中一个 + * @param permissions 权限符数组 + * @returns + */ + hasPermiOr(permissions: Array): boolean { + return permissions.some((item) => { + return authPermission(item); + }); + }, + /** + * 验证用户是否含有指定权限,必须全部拥有 + * @param permissions 权限符数组 + * @returns + */ + hasPermiAnd(permissions: Array): boolean { + return permissions.every((item) => { + return authPermission(item); + }); + }, + /** + * 验证用户是否具备某角色 + * @param role 角色 + * @returns + */ + hasRole(role: string): boolean { + return authRole(role); + }, + /** + * 验证用户是否含有指定角色,只需包含其中一个 + * @param roles 角色数组 + * @returns + */ + hasRoleOr(roles: Array): boolean { + return roles.some((item) => { + return authRole(item); + }); + }, + /** + * 验证用户是否含有指定角色,必须全部拥有 + * @param roles 角色数组 + * @returns + */ + hasRoleAnd(roles: Array): boolean { + return roles.every((item) => { + return authRole(item); + }); + }, +}; diff --git a/src/plugins/bus.ts b/src/plugins/bus.ts new file mode 100644 index 0000000..b2c5074 --- /dev/null +++ b/src/plugins/bus.ts @@ -0,0 +1,28 @@ +const event: { [key: string]: Function } = {} +/** 事件句柄 */ +export default { + /** 绑定一个事件 */ + $on(eventName: string, eventFun: Function) { + if (event.hasOwnProperty(eventName)) { + throw new Error(`存在事件 => ${eventName}`) + } else { + event[eventName] = eventFun + } + }, + /** 解绑一个事件 */ + $off(eventName: keyof typeof event) { + if (event.hasOwnProperty(eventName)) { + delete event[eventName] + } else { + throw new Error(`不存在事件 => ${eventName}`) + } + }, + /** 触发一个事件 */ + $emit(eventName: keyof typeof event, ...args: any):T { + if (event.hasOwnProperty(eventName)) { + return event[eventName](...args) + } else { + throw new Error(`不存在事件 => ${eventName}`) + } + } +} diff --git a/src/plugins/cache.ts b/src/plugins/cache.ts new file mode 100644 index 0000000..723eca4 --- /dev/null +++ b/src/plugins/cache.ts @@ -0,0 +1,77 @@ +const sessionCache = { + set (key:string, value:any) { + if (!sessionStorage) { + return + } + if (key != null && value != null) { + sessionStorage.setItem(key, value) + } + }, + get (key:string) { + if (!sessionStorage) { + return null + } + if (key == null) { + return null + } + return sessionStorage.getItem(key) + }, + setJSON (key:string, jsonValue:any) { + if (jsonValue != null) { + this.set(key, JSON.stringify(jsonValue)) + } + }, + getJSON (key:string) { + const value = this.get(key) + if (value != null) { + return JSON.parse(value) + } + }, + remove (key:string) { + sessionStorage.removeItem(key); + } +} +const localCache = { + set (key:string, value:any) { + if (!localStorage) { + return + } + if (key != null && value != null) { + localStorage.setItem(key, value) + } + }, + get (key:string|null) { + if (!localStorage) { + return null + } + if (key == null) { + return null + } + return localStorage.getItem(key) + }, + setJSON (key:string, jsonValue:any) { + if (jsonValue != null) { + this.set(key, JSON.stringify(jsonValue)) + } + }, + getJSON (key:string) { + const value = this.get(key) + if (value != null) { + return JSON.parse(value) + } + }, + remove (key:string) { + localStorage.removeItem(key); + } +} + +export default { + /** + * 会话级缓存 + */ + session: sessionCache, + /** + * 本地缓存 + */ + local: localCache +} diff --git a/src/plugins/download.ts b/src/plugins/download.ts new file mode 100644 index 0000000..967e7db --- /dev/null +++ b/src/plugins/download.ts @@ -0,0 +1,72 @@ +import axios from 'axios' +import { ElMessage } from 'element-plus' +import { saveAs } from 'file-saver' +import { getToken } from '@/utils/auth' +import errorCode from '@/utils/errorCode' +import { blobValidate } from '@/utils/ruoyi' + +const baseURL = import.meta.env.VITE_APP_BASE_API + +export default { + name(name: string, isDelete = true) { + var url = baseURL + "/file/download?fileName=" + encodeURIComponent(name) + "&delete=" + isDelete + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(async (res) => { + const isLogin = await blobValidate(res.data); + if (isLogin) { + const blob = new Blob([res.data]) + this.saveAs(blob, decodeURIComponent(res.headers['download-filename']), undefined) + } else { + this.printErrMsg(res.data); + } + }) + }, + resource(resource: string) { + var url = baseURL + "/file/download/resource?resource=" + encodeURIComponent(resource); + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(async (res) => { + const isLogin = await blobValidate(res.data); + if (isLogin) { + const blob = new Blob([res.data]) + this.saveAs(blob, decodeURIComponent(res.headers['download-filename']), undefined) + } else { + this.printErrMsg(res.data); + } + }) + }, + zip(url: string, name: string) { + var url = baseURL + url + axios({ + method: 'get', + url: url, + responseType: 'blob', + headers: { 'Authorization': 'Bearer ' + getToken() } + }).then(async (res) => { + const isLogin = await blobValidate(res.data); + if (isLogin) { + const blob = new Blob([res.data], { type: 'application/zip' }) + this.saveAs(blob, name, undefined) + } else { + this.printErrMsg(res.data); + } + }) + }, + saveAs(text: string | Blob, name: string, opts: any) { + saveAs(text, name, opts); + }, + async printErrMsg(data: Blob) { + const resText = await data.text(); + const rspObj = JSON.parse(resText); + const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] + ElMessage.error(errMsg); + } +} + diff --git a/src/plugins/index.ts b/src/plugins/index.ts new file mode 100644 index 0000000..6967e6a --- /dev/null +++ b/src/plugins/index.ts @@ -0,0 +1,33 @@ +import Tab from './tab' +import Auth from './auth' +import Cache from './cache' +import Modal from './modal' +import Download from './download' +import Bus from './bus'; +import Socket from './socketclient' +import type { App } from 'vue' + +export const tab = Tab; +export const auth = Auth; +export const modal = Modal; +export const bus = Bus +export const socket = Socket +export const download = Download +export const cache = Cache + +export default function installPlugins(app: App) { + // 页签操作 + app.config.globalProperties.$tab = tab + // 认证对象 + app.config.globalProperties.$auth = auth + // 缓存对象 + app.config.globalProperties.$cache = cache + // 模态框对象 + app.config.globalProperties.$modal = modal + // 全局事件总线 + app.config.globalProperties.$bus = bus + // socket对象 + app.config.globalProperties.$socket = socket + // 下载文件 + app.config.globalProperties.$download = download +} diff --git a/src/plugins/modal.ts b/src/plugins/modal.ts new file mode 100644 index 0000000..aa26523 --- /dev/null +++ b/src/plugins/modal.ts @@ -0,0 +1,82 @@ +import { ElMessage, ElMessageBox, ElNotification, ElLoading, MessageParamsWithType, ElMessageBoxOptions, NotificationParamsTyped } from 'element-plus' + +let loadingInstance:any; + +export default { + // 消息提示 + msg(content:MessageParamsWithType) { + ElMessage.info(content) + }, + // 错误消息 + msgError(content:MessageParamsWithType) { + ElMessage.error(content) + }, + // 成功消息 + msgSuccess(content:MessageParamsWithType) { + ElMessage.success(content) + }, + // 警告消息 + msgWarning(content:MessageParamsWithType) { + ElMessage.warning(content) + }, + // 弹出提示 + alert(content:ElMessageBoxOptions['message']) { + ElMessageBox.alert(content, "系统提示") + }, + // 错误提示 + alertError(content:ElMessageBoxOptions['message']) { + ElMessageBox.alert(content, "系统提示", { type: 'error' }) + }, + // 成功提示 + alertSuccess(content:ElMessageBoxOptions['message']) { + ElMessageBox.alert(content, "系统提示", { type: 'success' }) + }, + // 警告提示 + alertWarning(content:ElMessageBoxOptions['message']) { + ElMessageBox.alert(content, "系统提示", { type: 'warning' }) + }, + // 通知提示 + notify(content:NotificationParamsTyped | undefined) { + ElNotification.info(content) + }, + // 错误通知 + notifyError(content:NotificationParamsTyped | undefined) { + ElNotification.error(content); + }, + // 成功通知 + notifySuccess(content:NotificationParamsTyped | undefined) { + ElNotification.success(content) + }, + // 警告通知 + notifyWarning(content:NotificationParamsTyped | undefined) { + ElNotification.warning(content) + }, + // 确认窗体 + confirm(content:ElMessageBoxOptions['message']) { + return ElMessageBox.confirm(content, "系统提示", { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: "warning", + }) + }, + // 提交内容 + prompt(content:ElMessageBoxOptions['message']) { + return ElMessageBox.prompt(content, "系统提示", { + confirmButtonText: '确定', + cancelButtonText: '取消', + type: "warning", + }) + }, + // 打开遮罩层 + loading(content:string) { + loadingInstance = ElLoading.service({ + lock: true, + text: content, + background: "rgba(0, 0, 0, 0.7)", + }) + }, + // 关闭遮罩层 + closeLoading() { + loadingInstance.close(); + } +} diff --git a/src/plugins/socketclient.ts b/src/plugins/socketclient.ts new file mode 100644 index 0000000..d40902d --- /dev/null +++ b/src/plugins/socketclient.ts @@ -0,0 +1,126 @@ +import { Message } from '@/types/Message'; +import { getToken } from '@/utils/auth' +import { StrUtil } from '@/utils/StrUtil'; +let _socket: WebSocket; +let _callback: { [key: string]: (data: any) => void } = {} +type ConnectSocketOption = { + url: string | URL, headers?: { + isToken?: boolean + } +} + + +export default { + /** + * 连接websocket + * 最简单的用法就是传入{url:"ws://demo"} + * 当连接成功后触发回调函数 + */ + connect(options: ConnectSocketOption) { + return new Promise(( + resolve: (client: WebSocket, en: Event) => void, + ) => { + const isToken = (options.headers || {}).isToken === false + let authorization = "" + if (getToken() && !isToken) { + authorization = 'Bearer ' + getToken() + } + if (_socket !== undefined) { + _socket.close() + } + _socket = new WebSocket(options.url + `?Authorization=${encodeURIComponent(authorization)}`); + _socket.onopen = (event: Event) => resolve(_socket, event); + this.onMessage(() => { }); + }) + }, + /** + * 关闭连接 + * @returns 关闭连接的Promise,回调函数只会运行一次 + */ + close() { + return new Promise((resolve) => { + let onclose = _socket.onclose + _socket.onclose = res => { + resolve(res) + _socket.onclose = onclose + } + _socket.close() + }) + }, + /** + * 发送信息 + * @param msg 消息,会被处理成json字符串 + * @returns + */ + send(msg: Message) { + _socket.send(JSON.stringify(msg)) + }, + /** + * 发送信息,可以异步回调 + * @param msg 消息,会被处理成json字符串 + * @returns + */ + asyncSend(msg: Message) { + return new Promise((resolve, reject) => { + _callback[msg.messageId] = resolve + _socket.send(JSON.stringify(msg)) + }) + }, + /** + * 监听事件 + * @param event 要监听的事件 + * @returns 在回调函数中处理事件 + */ + on(event: string, callback: (data: any) => void) { + _callback[event] = callback + }, + /** + * 取消监听事件 + * @param event 要取消监听的事件 + */ + off(event: string) { + delete _callback[event] + }, + /** + * 定义默认监听事件 + * @param callback 默认监听事件的处理函数 + */ + onMessage(callback: (data: Message) => void) { + _socket.onmessage = res => { + let uuid: string | undefined; + try { + let data: Message = JSON.parse(res.data) + uuid = data.messageId + const event = data.subject + if (StrUtil.isNotEmpty(uuid) && !!_callback[uuid]) { + _callback[uuid](data) + } else if (StrUtil.isNotEmpty(event) && !!_callback[event]) { + _callback[event](data) + } else { + callback(data); + } + } catch (error) { + console.error("WebSocket JSON parse error:", error); + console.error("Received data:", res.data); + } finally { + if (uuid && _callback[uuid]) { + delete _callback[uuid] + } + } + } + }, + /** + * 定义异常事件 + * @param callback 默认异常事件的处理函数 + */ + onError(callback: ((client: WebSocket, en: Event) => void)) { + _socket.onerror = (event) => callback(_socket, event); + }, + /** + * 定义关闭事件 + * @param callback 默认关闭事件的处理函数 + */ + onClose(callback: (client: WebSocket, en: Event) => void) { + _socket.onclose = (event) => callback(_socket, event); + } +}; \ No newline at end of file diff --git a/src/plugins/tab.ts b/src/plugins/tab.ts new file mode 100644 index 0000000..355d972 --- /dev/null +++ b/src/plugins/tab.ts @@ -0,0 +1,108 @@ +import useTagsViewStore from '@/store/modules/tagsView' +import { router } from '@/router' +import { RouteLocationNormalizedLoaded, RouteLocationRaw } from 'vue-router'; +import { RoutesAlias } from '@/router/routesAlias'; + +export default { + /** + * 刷新当前tab页签 + * @param {Object | undefined} obj - 页签对象,包含name、path和query等信息。如果未传入,则自动获取当前页签信息。 + */ + async refreshPage(obj: any | undefined) { + const { path, query, matched } = router.currentRoute.value; + if (obj === undefined) { + matched.forEach((m) => { + if (m.components && m.components.default && m.components.default.name) { + if (!['Layout', 'ParentView'].includes(m.components.default.name)) { + obj = { name: m.components.default.name, path: path, query: query }; + } + } + }); + } + await useTagsViewStore().delCachedView(obj); + const { path: path_1, query: query_1 } = obj; + router.replace({ + path: '/redirect' + path_1, + query: query_1 + }); + }, + + /** + * 关闭当前tab页签,并打开新页签 + * @param {RouteLocationRaw} obj - 新页签的路由信息。 + * @returns {Promise} 路由跳转的Promise对象。 + */ + closeOpenPage(obj: RouteLocationRaw) { + useTagsViewStore().delView(router.currentRoute.value); + if (obj !== undefined) { + return router.push(obj); + } + }, + + /** + * 关闭指定的tab页签 + * @param {RouteLocationNormalizedLoaded | undefined} obj - 要关闭的页签对象。如果未传入,则关闭当前页签。 + * @returns {Promise} 包含删除结果的Promise对象。 + */ + async closePage(obj: RouteLocationNormalizedLoaded | undefined) { + if (obj === undefined) { + const res = await useTagsViewStore().delView(router.currentRoute.value); + await router.push(res.lastPath || RoutesAlias.Home); + return res; + } + return useTagsViewStore().delView(obj); + }, + + /** + * 关闭所有tab页签 + * @returns {Promise} 包含删除结果的Promise对象。 + */ + closeAllPage() { + return useTagsViewStore().delAllViews(); + }, + + /** + * 关闭左侧的tab页签 + * @param {RouteLocationNormalizedLoaded | undefined | null} obj - 基准页签对象。如果未传入,则以当前页签为基准。 + * @returns {Promise} 包含删除结果的Promise对象。 + */ + closeLeftPage(obj: RouteLocationNormalizedLoaded | undefined | null) { + return useTagsViewStore().delLeftTags(obj || router.currentRoute.value); + }, + + /** + * 关闭右侧的tab页签 + * @param {RouteLocationNormalizedLoaded | undefined | null} obj - 基准页签对象。如果未传入,则以当前页签为基准。 + * @returns {Promise} 包含删除结果的Promise对象。 + */ + closeRightPage(obj: RouteLocationNormalizedLoaded | undefined | null) { + return useTagsViewStore().delRightTags(obj || router.currentRoute.value); + }, + + /** + * 关闭其他tab页签 + * @param {RouteLocationNormalizedLoaded | undefined | null} obj - 保留的页签对象。如果未传入,则保留当前页签。 + * @returns {Promise} 包含删除结果的Promise对象。 + */ + closeOtherPage(obj: RouteLocationNormalizedLoaded | undefined | null) { + return useTagsViewStore().delOthersViews(obj || router.currentRoute.value); + }, + + /** + * 打开新的tab页签 + * @param {RouteLocationRaw} url - 新页签的路由信息。 + * @returns {Promise} 路由跳转的Promise对象。 + */ + openPage(url: RouteLocationRaw) { + return router.push(url); + }, + + /** + * 修改tab页签信息 + * @param {RouteLocationNormalizedLoaded} obj - 要修改的页签对象。 + * @returns {Promise} 包含更新结果的Promise对象。 + */ + updatePage(obj: RouteLocationNormalizedLoaded) { + return useTagsViewStore().updateVisitedView(obj); + } +} diff --git a/src/router/guards/afterEach.ts b/src/router/guards/afterEach.ts new file mode 100644 index 0000000..b23ac1c --- /dev/null +++ b/src/router/guards/afterEach.ts @@ -0,0 +1,9 @@ +import { Router } from 'vue-router' +import NProgress from 'nprogress' + +/** 路由全局后置守卫 */ +export function setupAfterEachGuard(router: Router) { + router.afterEach(() => { + NProgress.done() + }) +} \ No newline at end of file diff --git a/src/router/guards/beforeEach.ts b/src/router/guards/beforeEach.ts new file mode 100644 index 0000000..9ba7d2f --- /dev/null +++ b/src/router/guards/beforeEach.ts @@ -0,0 +1,58 @@ +import type { Router } from 'vue-router' + +import { ElMessage } from 'element-plus' +import NProgress from 'nprogress' +import 'nprogress/nprogress.css' +import { getToken } from '@/utils/auth' +import { isHttp } from '@/utils/validate' +import { isRelogin } from '@/utils/request' +import useUserStore from '@/store/modules/user' +import useSettingsStore from '@/store/modules/settings' +import usePermissionStore from '@/store/modules/permission' +import { isPathMatch } from '@/utils/validate' +import { RoutesAlias } from '../routesAlias' + +const whiteList: string[] = [RoutesAlias.Login, RoutesAlias.Register] +const isWhiteList = (path: string) => whiteList.some(pattern => isPathMatch(pattern, path)) + +/** + * 路由全局前置守卫 + * 处理进度条、获取菜单列表、动态路由注册、404 检查、工作标签页及页面标题设置 + */ +export function setupBeforeEachGuard(router: Router): void { + router.beforeEach((to, from, next) => { + let title: string = typeof to.meta.title === 'function' ? to.meta.title(to) : to.meta.title ?? '' + useSettingsStore().setTitle(title) + NProgress.start() + if (isWhiteList(to.path)) { + next() + } else if (getToken()) { + if (useUserStore().roles.length === 0) { + isRelogin.show = true + // 判断当前用户是否已拉取完user_info信息 + useUserStore().getInfo().then(() => { + isRelogin.show = false + usePermissionStore().generateRoutes().then(accessRoutes => { + // 根据roles权限生成可访问的路由表 + accessRoutes.forEach(route => { + if (!isHttp(route.path)) { + router.addRoute(route) // 动态添加可访问路由表 + } + }) + next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 + }) + }).catch(err => { + useUserStore().logOut().then(() => { + ElMessage.error(err.message) + next({ path: RoutesAlias.Home }) + }) + }) + } else { + next() + } + } else { + if (to.fullPath) next(`${RoutesAlias.Login}?redirect=${to.fullPath}`) + else next(RoutesAlias.Login) + } + }) +} \ No newline at end of file diff --git a/src/router/index.ts b/src/router/index.ts new file mode 100644 index 0000000..21b4a81 --- /dev/null +++ b/src/router/index.ts @@ -0,0 +1,27 @@ +import { createWebHistory, createRouter, createWebHashHistory } from 'vue-router' +import { constantRoutes } from './routes/staticRoutes' +import { configureNProgress } from './utils/utils' +import { setupBeforeEachGuard } from './guards/beforeEach' +import { setupAfterEachGuard } from './guards/afterEach' +import type { App } from 'vue' + +export const router = createRouter({ + // createWebHistory createWebHashHistory + history: createWebHistory(import.meta.env.VITE_BASE_ROUTER), + routes: constantRoutes, + scrollBehavior(to, from, savedPosition) { + if (savedPosition) { + return savedPosition + } else { + return { top: 0 } + } + }, +}); + +// 初始化路由 +export default function initRouter(app: App): void { + configureNProgress() // 顶部进度条 + setupBeforeEachGuard(router) // 路由前置守卫 + setupAfterEachGuard(router) // 路由后置守卫 + app.use(router) +} diff --git a/src/router/routes/asyncRoutes.ts b/src/router/routes/asyncRoutes.ts new file mode 100644 index 0000000..903116f --- /dev/null +++ b/src/router/routes/asyncRoutes.ts @@ -0,0 +1,75 @@ +import { RouteItem } from '@/types/route' +const Layout = () => import('@/layout/index.vue') +// 动态路由,基于用户权限动态去加载,配置详情请参见RouteItem定义 +export const dynamicRoutes: RouteItem[] = [ + { + path: '/system/user-auth', + component: Layout, + hidden: true, + permissions: ['system:user:edit'], + children: [ + { + path: 'role/:userId(\\d+)', + component: () => import('@/views/system/user/authRole.vue'), + name: 'AuthRole', + meta: { title: '分配角色', activeMenu: '/system/user' } + } + ] + }, + { + path: '/system/role-auth', + component: Layout, + hidden: true, + permissions: ['system:role:edit'], + children: [ + { + path: 'user/:roleId(\\d+)', + component: () => import('@/views/system/role/authUser.vue'), + name: 'AuthUser', + meta: { title: '分配用户', activeMenu: '/system/role' } + } + ] + }, + { + path: '/system/dict-data', + component: Layout, + hidden: true, + permissions: ['system:dict:list'], + children: [ + { + path: 'index/:dictId(\\d+)', + component: () => import('@/views/system/dict/data.vue'), + name: 'DictData', + meta: { title: '字典数据', activeMenu: '/system/dict' } + } + ] + }, + { + path: '/monitor/job-log', + component: Layout, + hidden: true, + permissions: ['monitor:job:list'], + children: [ + { + path: 'index/:jobId(\\d+)', + component: () => import('@/views/monitor/job/log.vue'), + name: 'JobLog', + meta: { title: '调度日志', activeMenu: '/monitor/job' } + } + ] + }, + { + path: '/tool/gen-edit', + component: Layout, + hidden: true, + permissions: ['tool:gen:edit'], + children: [ + { + path: 'index/:tableId(\\d+)', + component: () => import('@/views/tool/gen/edit/index.vue'), + name: 'GenEdit', + meta: { title: '修改生成配置', activeMenu: '/tool/gen' } + } + ] + } +] \ No newline at end of file diff --git a/src/router/routes/staticRoutes.ts b/src/router/routes/staticRoutes.ts new file mode 100644 index 0000000..6d683de --- /dev/null +++ b/src/router/routes/staticRoutes.ts @@ -0,0 +1,134 @@ +import { RouteItem } from '@/types/route' +const Layout = () => import('@/layout/index.vue') + +// 公共路由,配置详情请参见RouteItem定义 +export const constantRoutes: RouteItem[] = [ + { + path: '/redirect', + component: Layout, + hidden: true, + children: [ + { + path: '/redirect/:path(.*)', + component: () => import('@/views/redirect/index.vue') + } + ] + }, + { + path: '/auth', + component: () => import('@/views/auth/index.vue'), + hidden: true, + children: [ + { + path: 'login', + name: 'Login', + component: () => import('@/views/auth/login.vue'), + hidden: true + }, + { + path: 'register', + name: 'Register', + component: () => import('@/views/auth/register.vue'), + hidden: true + } + ] + }, + { + path: "/:pathMatch(.*)*", + component: () => import('@/views/error/404.vue'), + hidden: true + }, + { + path: '/401', + component: () => import('@/views/error/401.vue'), + hidden: true + }, + { + path: '', + component: Layout, + redirect: '/index', + children: [ + { + path: '/index', + component: () => import('@/views/index.vue'), + name: 'Index', + meta: { title: '首页', icon: 'dashboard', affix: true } + } + ] + }, + { + path: '/laboratory', + component: Layout, + meta: { title: '实验室', icon: 'dashboard' }, + children: [ + { + path: 'threeTest', + component: () => import('@/views/three/gltfmode.vue'), + name: 'threeTest', + meta: { title: 'three实验室', icon: 'dashboard' } + }, + { + path: "websocket", + component: () => import('@/views/websocket.vue'), + name: 'websocket', + meta: { title: 'websocket实验室', icon: 'dashboard' } + }, + ] + }, + { + path: '/user', + component: Layout, + hidden: true, + redirect: 'noredirect', + children: [ + { + path: 'profile', + component: () => import('@/views/system/user/profile/index.vue'), + name: 'Profile', + meta: { title: '个人中心', icon: 'user' } + } + ] + }, + { + path: '/flowable', + component: Layout, + hidden: true, + children: [ + { + path: 'definition/model/', + component: () => import('@/views/flowable/definition/model.vue'), + name: 'Model', + hidden: true, + meta: { title: '流程设计', icon: '' } + }, + { + path: 'task/finished/detail/index', + component: () => import('@/views/flowable/task/finished/detail/index.vue'), + name: 'FinishedRecord', + hidden: true, + meta: { title: '流程详情', icon: '' } + }, + { + path: 'task/myProcess/detail/index', + component: () => import('@/views/flowable/task/myProcess/detail/index.vue'), + name: 'MyProcessRecord', + hidden: true, + meta: { title: '流程详情', icon: '' } + }, + { + path: 'task/myProcess/send/index', + component: () => import('@/views/flowable/task/myProcess/send/index.vue'), + name: 'SendRecord', + hidden: true, + meta: { title: '流程发起', icon: '' } + }, + { + path: 'task/todo/detail/index', + component: () => import('@/views/flowable/task/todo/detail/index.vue'), + name: 'TodoRecord', + hidden: true, + meta: { title: '流程处理', icon: '' } + } + ] + }, +] \ No newline at end of file diff --git a/src/router/routesAlias.ts b/src/router/routesAlias.ts new file mode 100644 index 0000000..621fec9 --- /dev/null +++ b/src/router/routesAlias.ts @@ -0,0 +1,8 @@ +/** + * 路由别名,方便快速找到页面,同时可以用作路由跳转 + */ +export enum RoutesAlias { + Home = '/index', // 首页 + Login = '/auth/login', // 登录 + Register = '/auth/register', // 注册 +} \ No newline at end of file diff --git a/src/router/utils/utils.ts b/src/router/utils/utils.ts new file mode 100644 index 0000000..0f9f6d2 --- /dev/null +++ b/src/router/utils/utils.ts @@ -0,0 +1,12 @@ +import NProgress from 'nprogress' + +/** 顶部进度条配置 */ +export const configureNProgress = () => { + NProgress.configure({ + easing: 'ease', + speed: 600, + showSpinner: false, + trickleSpeed: 200, + parent: 'body' + }) +} \ No newline at end of file diff --git a/src/settings.ts b/src/settings.ts new file mode 100644 index 0000000..778f948 --- /dev/null +++ b/src/settings.ts @@ -0,0 +1,80 @@ +import { getConfigKey } from '@/api/system/config' +interface Setting { + title: string; + theme: string; + sideTheme: string; + showSettings: boolean; + topNav: boolean; + tagsView: boolean; + fixedHeader: boolean; + sidebarLogo: boolean; + dynamicTitle: boolean; + footerVisible: boolean; + footerContent: string; + errorLog: string | string[]; + initDbSetting: () => Promise; +} +const setting = { + /** 网页标题 */ + title: import.meta.env.VITE_APP_TITLE, + /** 主题色 */ + theme: '#409EFF', + /** 侧边栏主题 深色主题theme-dark,浅色主题theme-light */ + sideTheme: 'theme-dark', + /** 是否系统布局配置 */ + showSettings: false, + /** 是否显示顶部导航 */ + topNav: false, + /** 是否显示 tagsView */ + tagsView: true, + /** 是否固定头部 */ + fixedHeader: false, + /** 是否显示logo */ + sidebarLogo: true, + /** 是否显示动态标题 */ + dynamicTitle: false, + /** 是否显示底部版权 */ + footerVisible: true, + /** 底部版权文本内容 */ + footerContent: 'Copyright © 2018-2025 RuoYi-Geek. All Rights Reserved.', + + /** + * @type {string | array} 'production' | ['production', 'development'] + * @description 需要显示错误日志组件的环境。 + * 默认只在生产环境中使用。 + * 如果你也想在开发环境中使用,可以传 ['production', 'development']。 + */ + errorLog: 'production', + + /** + * 获取后端配置的设置 + * @returns Promise + */ + async initDbSetting(): Promise { + const config = (key: string, type: any) => getConfigKey(key).then(res => { + if (type === String) { + return res.msg + } else if (type === Number) { + return +res.msg + } else if (type === Boolean) { + return res.msg === 'true' + } else if (type === Array) { + return res.msg.split(',') + } else { + return new type(res.msg) + } + }) + return { + theme: await config("sys.index.theme", String), + sideTheme: await config("sys.index.sideTheme", String), + topNav: await config("sys.index.topNav", Boolean), + tagsView: await config("sys.index.tagsView", Boolean), + fixedHeader: await config("sys.index.fixedHeader", Boolean), + sidebarLogo: await config("sys.index.sidebarLogo", Boolean), + dynamicTitle: await config("sys.index.dynamicTitle", Boolean), + } as Setting; + } +} + + +export default setting \ No newline at end of file diff --git a/src/store/index.ts b/src/store/index.ts new file mode 100644 index 0000000..d477079 --- /dev/null +++ b/src/store/index.ts @@ -0,0 +1,11 @@ +import { createPinia } from "pinia" +import type { App } from "vue" + +export const store = createPinia() + +/** + * 初始化 Store + */ +export default function initStore(app: App): void { + app.use(store) +} \ No newline at end of file diff --git a/src/store/modules/app.ts b/src/store/modules/app.ts new file mode 100644 index 0000000..4761748 --- /dev/null +++ b/src/store/modules/app.ts @@ -0,0 +1,46 @@ +import { defineStore } from 'pinia'; + +const useAppStore = defineStore( + 'app', + { + state: () => ({ + sidebar: { + opened: localStorage.getItem('sidebarStatus') ? !!localStorage.getItem('sidebarStatus') : true, + withoutAnimation: false, + hide: false + }, + device: 'desktop', + size: (localStorage.getItem('size') || 'default') as 'large' | 'default' | 'small' + }), + actions: { + toggleSideBar(withoutAnimation: boolean) { + if (this.sidebar.hide) { + return false; + } + this.sidebar.opened = !this.sidebar.opened + this.sidebar.withoutAnimation = withoutAnimation + if (this.sidebar.opened) { + localStorage.setItem('sidebarStatus', '1') + } else { + localStorage.setItem('sidebarStatus', '0') + } + }, + closeSideBar(withoutAnimation: boolean) { + localStorage.setItem('sidebarStatus', '0') + this.sidebar.opened = false + this.sidebar.withoutAnimation = withoutAnimation + }, + toggleDevice(device: string) { + this.device = device + }, + setSize(size: 'large' | 'default' | 'small') { + this.size = size; + localStorage.setItem('size', size) + }, + toggleSideBarHide(status: boolean) { + this.sidebar.hide = status + } + } + }) + +export default useAppStore diff --git a/src/store/modules/dict.ts b/src/store/modules/dict.ts new file mode 100644 index 0000000..909fd98 --- /dev/null +++ b/src/store/modules/dict.ts @@ -0,0 +1,59 @@ +import { defineStore } from "pinia"; + +const useDictStore = defineStore( + 'dict', + { + state: () => ({ + dict: new Array<{key: DictKey, value: Array}>() + }), + actions: { + // 获取字典 + getDict(_key: DictKey) { + if (_key == null && _key == "") { + return null; + } + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].key == _key) { + return this.dict[i].value; + } + } + } catch (e) { + return null; + } + }, + // 设置字典 + setDict(_key: DictKey, value:Array) { + if (_key !== null && _key !== "") { + this.dict.push({ + key: _key, + value: value + }); + } + }, + // 删除字典 + removeDict(_key: DictKey) { + var bln = false; + try { + for (let i = 0; i < this.dict.length; i++) { + if (this.dict[i].key == _key) { + this.dict.splice(i, 1); + return true; + } + } + } catch (e) { + bln = false; + } + return bln; + }, + // 清空字典 + cleanDict() { + this.dict = new Array(); + }, + // 初始字典 + initDict() { + } + } + }) + +export default useDictStore diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts new file mode 100644 index 0000000..c1cf34d --- /dev/null +++ b/src/store/modules/permission.ts @@ -0,0 +1,178 @@ +import auth from '@/plugins/auth' +import { router } from '@/router' +import { getRouters } from '@/api/menu' +import Layout from '@/layout/index.vue' +import ParentView from '@/components/ParentView/index.vue' +import InnerLink from '@/layout/components/InnerLink/index.vue' +import { defineStore } from 'pinia' +import type { Component } from 'vue' +import { RouteItem } from '@/types/route' +import { constantRoutes } from '@/router/routes/staticRoutes' +import { dynamicRoutes } from '@/router/routes/asyncRoutes' +import { deepClone } from '@/utils' + +// 匹配views里面所有的.vue文件 +const modules = import.meta.glob('./../../views/**/*.vue') + +// 定义 store 状态接口 +interface PermissionState { + routes: RouteItem[] + addRoutes: RouteItem[] + defaultRoutes: RouteItem[] + topbarRouters: RouteItem[] + sidebarRouters: RouteItem[] +} + +/** + * 权限管理模块 + * + * 路由生成说明: + * 1. generateRoutes方法负责生成所有路由: + * - 从后端获取动态路由数据 + * - 处理动态路由数据(过滤、转换组件等) + * - 根据设置决定TopNav菜单的数据来源 + * + * 2. TopNav菜单数据生成规则: + * - 启用TopNav导入本地路由:constantRoutes + defaultRoutes + * - 关闭TopNav导入本地路由:仅使用defaultRoutes + * - 通过settingsStore.topNavMixMenu控制 + */ + +const usePermissionStore = defineStore( + 'permission', + { + state: (): PermissionState => ({ + routes: [], + addRoutes: [], + defaultRoutes: [], + topbarRouters: [], + sidebarRouters: [] + }), + actions: { + setRoutes(routes: RouteItem[]) { + this.routes = [...constantRoutes, ...routes]; + }, + setDefaultRoutes(routes: RouteItem[]) { + this.defaultRoutes = deepClone(routes); + }, + setTopbarRoutes(routes: RouteItem[]) { + this.topbarRouters = deepClone(routes); + }, + setSidebarRouters(routes: RouteItem[]) { + this.sidebarRouters = deepClone(routes); + }, + generateRoutes(): Promise { + return new Promise(resolve => { + // 向后端请求路由数据 + getRouters().then(res => { + const sidebarRoutes = constantRoutes.concat(filterAsyncRouter(deepClone(res.data))) + const rewriteRoutes = filterAsyncRouter(deepClone(res.data), true) + const asyncRoutes = filterDynamicRoutes(dynamicRoutes) + asyncRoutes.forEach(route => { router.addRoute(route) }) + this.setRoutes(rewriteRoutes) + this.setSidebarRouters(sidebarRoutes) + this.setDefaultRoutes(sidebarRoutes) + this.setTopbarRoutes(sidebarRoutes) + resolve(rewriteRoutes) + }) + }) + } + } + }) + +// 遍历后台传来的路由字符串,转换为组件对象 +function filterAsyncRouter(asyncRouterMap: RouteItem[], type = false): RouteItem[] { + return asyncRouterMap.filter(route => { + // 确保route有hidden属性 + if (route.hidden === undefined) { + route.hidden = false; + } + + if (type && route.children) { + route.children = filterChildren(route.children) + } + if (route.component) { + // Layout ParentView 组件特殊处理 + if (typeof route.component === 'string') { + if (route.component === 'Layout') { + route.component = Layout + } else if (route.component === 'ParentView') { + route.component = ParentView + } else if (route.component === 'InnerLink') { + route.component = InnerLink + } else { + route.component = loadView(route.component) + } + } + } + if (route.children != null && route.children && route.children.length) { + route.children = filterAsyncRouter(route.children, type) + } else { + delete route['children'] + delete route['redirect'] + } + return true + }) +} +/** + * 递归过滤并处理路由子项,将所有子路由展平为一个数组,并根据父路由调整路径。 + * 如果遇到组件为 'ParentView' 的路由,会将其子路由的路径拼接父路由路径,并继续递归处理。 + * + * @param childrenMap 路由子项数组 + * @param lastRouter 上一级父路由(可选),用于路径拼接 + * @returns 处理后的路由子项数组 + */ +function filterChildren(childrenMap: RouteItem[], lastRouter?: RouteItem): RouteItem[] { + const children: RouteItem[] = [] + childrenMap.forEach((el) => { + const item = { ...el, hidden: false } // 确保hidden属性存在 + if (el.children && el.children.length) { + if (el.component === 'ParentView' && !lastRouter) { + el.children.forEach((c: RouteItem) => { + c.path = el.path + '/' + c.path + if (c.children && c.children.length) { + children.push(...filterChildren(c.children, c)) + return + } + children.push(c) + }) + return + } + } + if (lastRouter && lastRouter.path) { + item.path = lastRouter.path + '/' + item.path + } + children.push(item) + }) + return children +} + +// 动态路由遍历,验证是否具备权限 +function filterDynamicRoutes(routes: readonly RouteItem[]): RouteItem[] { + const res: RouteItem[] = [] + routes.forEach(route => { + if (route.permissions) { + if (auth.hasPermiOr(route.permissions)) { + res.push(route) + } + } else if (route.roles) { + if (auth.hasRoleOr(route.roles)) { + res.push(route) + } + } + }) + return res +} + +const loadView = (view: string): (() => Promise) => { + let res: (() => Promise) | undefined + for (const path in modules) { + const dir = path.split('views/')[1].split('.vue')[0] + if (dir === view) { + res = modules[path] as () => Promise + } + } + return res || (() => Promise.resolve({} as Component)) +} + +export default usePermissionStore diff --git a/src/store/modules/settings.ts b/src/store/modules/settings.ts new file mode 100644 index 0000000..1aef725 --- /dev/null +++ b/src/store/modules/settings.ts @@ -0,0 +1,56 @@ +import defaultSettings from '@/settings' +import { useDynamicTitle } from '@/utils/dynamicTitle' +import { defineStore } from 'pinia' +import { handleThemeStyle } from '@/utils/theme' +const { theme, sideTheme, showSettings, topNav, tagsView, fixedHeader, sidebarLogo, dynamicTitle, footerVisible, footerContent, initDbSetting } = defaultSettings + +const storageSetting: typeof defaultSettings = JSON.parse( + localStorage.getItem('layout-setting') || '{}' +) + +const useSettingsStore = defineStore('settings', { + state: () => ({ + title: '', + theme: '#11A983', + sideTheme: 'theme-light', + showSettings: showSettings, + topNav: false, + tagsView: true, + fixedHeader: true, + sidebarLogo: true, + dynamicTitle: true, + footerVisible: footerVisible, + footerContent: footerContent, + inited: false + }), + actions: { + async initSetting() { + if (this.inited) return + const config = await initDbSetting() + this.theme = storageSetting.theme ?? config.theme ?? theme + this.sideTheme = storageSetting.sideTheme ?? config.sideTheme ?? sideTheme + this.topNav = storageSetting.topNav ?? config.topNav ?? topNav + this.tagsView = storageSetting.tagsView ?? config.tagsView ?? tagsView + this.fixedHeader = storageSetting.fixedHeader ?? config.fixedHeader ?? fixedHeader + this.sidebarLogo = storageSetting.sidebarLogo ?? config.sidebarLogo ?? sidebarLogo + this.dynamicTitle = storageSetting.dynamicTitle ?? config.dynamicTitle ?? dynamicTitle + this.inited = true + handleThemeStyle(this.theme) + }, + // 修改布局设置 + changeSetting(data: { key: keyof typeof storageSetting, value: any }) { + const { key, value } = data + if (this.hasOwnProperty(key)) { + //@ts-ignore + this[key] = value + } + }, + // 设置网页标题 + setTitle(title: string) { + this.title = title + useDynamicTitle(); + } + } +}) + +export default useSettingsStore diff --git a/src/store/modules/tagsView.ts b/src/store/modules/tagsView.ts new file mode 100644 index 0000000..c14f818 --- /dev/null +++ b/src/store/modules/tagsView.ts @@ -0,0 +1,205 @@ +import { RouteLocationItem } from "@/types/route"; +import { defineStore } from "pinia"; +import { RouteLocationNormalizedLoaded, RouteLocationNormalizedLoadedGeneric, RouteRecordName } from "vue-router"; +type MatchPattern = string | RegExp; +const useTagsViewStore = defineStore("tags-view", { + state: () => ({ + visitedViews: Array(), + cachedViews: Array(), + iframeViews: Array(), + }), + actions: { + addView(view: RouteLocationItem) { + if (typeof view.meta?.group === 'function') view.meta.group = view.meta.group(view) + if (typeof view.meta?.title === 'function') view.meta.title = view.meta.title(view) + this.addVisitedView(view); + this.addCachedView(view); + }, + addIframeView(view: RouteLocationNormalizedLoadedGeneric) { + if (this.iframeViews.some((v) => v.path === view.path)) return; + this.iframeViews.push( + Object.assign({}, view, { + title: view.meta.title ? view.meta.title + '' : "no-name", + }) + ); + }, + addVisitedView(view: RouteLocationItem) { + if (this.visitedViews.some((v) => v.path === view.path)) return; + const _view = view.meta?.group ? this.visitedViews.find((v) => v.meta?.group == view.meta?.group) : undefined + if (_view) { + Object.assign(_view, view); + } else { + this.visitedViews.push( + Object.assign({}, view, { + title: view.meta?.title || "no-name", + }) + ); + } + }, + addCachedView(view: RouteLocationItem) { + if (this.cachedViews.includes(String(view.name))) return; + if (!view.meta?.noCache) { + this.cachedViews.push(String(view.name)); + } + }, + delView(view: RouteLocationItem) { + return new Promise<{ + visitedViews: RouteLocationItem[], + cachedViews: MatchPattern[], + lastPath: string | undefined + }>((resolve) => { + this.delVisitedView(view); + this.delCachedView(view); + resolve({ + visitedViews: [...this.visitedViews], + cachedViews: [...this.cachedViews], + lastPath: this.visitedViews[this.visitedViews.length - 1]?.path, + }); + }); + }, + delVisitedView(view: RouteLocationNormalizedLoadedGeneric) { + return new Promise((resolve) => { + for (const [i, v] of this.visitedViews.entries()) { + if (v.path === view.path) { + this.visitedViews.splice(i, 1); + break; + } + } + this.iframeViews = this.iframeViews.filter( + (item) => item.path !== view.path + ); + resolve([...this.visitedViews]); + }); + }, + delIframeView(view: RouteLocationNormalizedLoaded) { + return new Promise((resolve) => { + this.iframeViews = this.iframeViews.filter( + (item) => item.path !== view.path + ); + resolve([...this.iframeViews]); + }); + }, + delCachedView(view: RouteLocationItem) { + return new Promise((resolve) => { + const index = this.cachedViews.indexOf(String(view.name)); + index > -1 && this.cachedViews.splice(index, 1); + resolve([...this.cachedViews]); + }); + }, + delOthersViews(view: RouteLocationItem) { + return new Promise((resolve) => { + this.delOthersVisitedViews(view); + this.delOthersCachedViews(view); + resolve({ + visitedViews: [...this.visitedViews], + cachedViews: [...this.cachedViews], + }); + }); + }, + delOthersVisitedViews(view: RouteLocationItem) { + return new Promise((resolve) => { + this.visitedViews = this.visitedViews.filter((v) => { + return v.meta?.affix || v.path === view.path; + }); + this.iframeViews = this.iframeViews.filter( + (item) => item.path === view.path + ); + resolve([...this.visitedViews]); + }); + }, + delOthersCachedViews(view: RouteLocationItem) { + return new Promise((resolve) => { + const index = this.cachedViews.indexOf(String(view.name)); + if (index > -1) { + this.cachedViews = this.cachedViews.slice(index, index + 1); + } else { + this.cachedViews = []; + } + resolve([...this.cachedViews]); + }); + }, + delAllViews() { + return new Promise<{ + visitedViews: RouteLocationItem[], + cachedViews: MatchPattern[] + }>((resolve) => { + this.delAllVisitedViews(); + this.delAllCachedViews(); + resolve({ + visitedViews: [...this.visitedViews], + cachedViews: [...this.cachedViews], + }); + }); + }, + delAllVisitedViews() { + return new Promise((resolve) => { + const affixTags = this.visitedViews.filter((tag) => tag.meta?.affix); + this.visitedViews = affixTags; + this.iframeViews = []; + resolve([...this.visitedViews]); + }); + }, + delAllCachedViews() { + return new Promise((resolve) => { + this.cachedViews = []; + resolve([...this.cachedViews]); + }); + }, + updateVisitedView(view: RouteLocationNormalizedLoaded) { + for (let v of this.visitedViews) { + if (v.path === view.path) { + v = Object.assign(v, view); + break; + } + } + }, + delRightTags(view: RouteLocationNormalizedLoaded) { + return new Promise((resolve) => { + const index = this.visitedViews.findIndex((v) => v.path === view.path); + if (index === -1) { + return; + } + this.visitedViews = this.visitedViews.filter((item, idx) => { + if (idx <= index || (item.meta && item.meta.affix)) { + return true; + } + const i = this.cachedViews.indexOf(String(item.name)); + if (i > -1) { + this.cachedViews.splice(i, 1); + } + if (item.meta?.link) { + const fi = this.iframeViews.findIndex((v) => v.path === item.path); + this.iframeViews.splice(fi, 1); + } + return false; + }); + resolve([...this.visitedViews]); + }); + }, + delLeftTags(view: RouteLocationNormalizedLoaded) { + return new Promise((resolve) => { + const index = this.visitedViews.findIndex((v) => v.path === view.path); + if (index === -1) { + return; + } + this.visitedViews = this.visitedViews.filter((item, idx) => { + if (idx >= index || (item.meta && item.meta.affix)) { + return true; + } + const i = this.cachedViews.indexOf(String(item.name)); + if (i > -1) { + this.cachedViews.splice(i, 1); + } + if (item.meta?.link) { + const fi = this.iframeViews.findIndex((v) => v.path === item.path); + this.iframeViews.splice(fi, 1); + } + return false; + }); + resolve([...this.visitedViews]); + }); + }, + }, +}); + +export default useTagsViewStore; diff --git a/src/store/modules/user.ts b/src/store/modules/user.ts new file mode 100644 index 0000000..7d0b1ec --- /dev/null +++ b/src/store/modules/user.ts @@ -0,0 +1,109 @@ +import { login, logout, getInfo, register, verifyPhoneCode, verifyEmailCode } from '@/api/login' +import { getToken, setToken, removeToken } from '@/utils/auth' +import defAva from '@/assets/images/profile.jpg' +import { defineStore } from 'pinia' +import { LoginForm, RegisterForm, RoleInfo, UserInfo } from '@/types/user' +import { ElMessageBox } from 'element-plus' +import { router } from '@/router' + +const useUserStore = defineStore( + 'user', + { + state: () => ({ + token: getToken(), + name: '', + nickName: '', + avatar: '', + roleName: '', + deptName: '', + loginDate: '', + roles: [] as string[], + permissions: [] as string[], + isDefaultModifyPwd: null as boolean | null, + isPasswordExpired: null as boolean | null + }), + actions: { + // 登录 + login(userInfo: LoginForm, method: 'password' | 'phone' | 'email' = 'password') { + let handel = { + 'password': login, + 'phone': (userInfo: LoginForm) => verifyPhoneCode(userInfo, 'login'), + 'email': (userInfo: LoginForm) => verifyEmailCode(userInfo, 'login') + } + return new Promise((resolve, reject) => { + handel[method](userInfo).then((res: any) => { + const token = res.token ?? res.data ?? res.msg + setToken(token) + this.token = token + resolve(null) + }).catch(error => { + reject(error) + }) + }) + }, + register(registerForm: RegisterForm, method: 'password' | 'phone' | 'email' = 'password') { + let handle = { + 'password': register, + 'phone': (registerForm: RegisterForm) => verifyPhoneCode(registerForm, 'register'), + 'email': (registerForm: RegisterForm) => verifyEmailCode(registerForm, 'register') + } + return handle[method](registerForm) + }, + // 获取用户信息 + getInfo() { + return new Promise<{ user: UserInfo, roles: RoleInfo[], permissions: string[] }>((resolve, reject) => { + getInfo().then((res: any) => { + const user = res.user + if (res.roles && res.roles.length > 0) { // 验证返回的roles是否是一个非空数组 + this.roles = res.roles + this.permissions = res.permissions + } else { + this.roles = ['ROLE_DEFAULT'] + } + this.name = user.userName + this.nickName = user.nickName + this.roleName = (user.roles || [])[0] ? user.roles[0].roleName : '普通角色' + this.deptName = user.dept ? user.dept.deptName : '暂无部门' + this.loginDate = user.loginDate + if (user.avatar == "" || user.avatar == null) { + this.avatar = defAva + } else { + this.avatar = user.avatar.startsWith('http') ? user.avatar : import.meta.env.VITE_APP_BASE_API + user.avatar; + } + /* 初始密码提示 */ + if (res.isDefaultModifyPwd && this.isPasswordExpired === null) { + this.isPasswordExpired = res.isPasswordExpired + ElMessageBox.confirm('您的密码还是初始密码,请修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { + router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } }) + }).catch(() => { }) + } + if (!res.isDefaultModifyPwd && res.isPasswordExpired && this.isPasswordExpired === null) { + this.isDefaultModifyPwd = res.isDefaultModifyPwd + ElMessageBox.confirm('您的密码已过期,请尽快修改密码!', '安全提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { + router.push({ name: 'Profile', params: { activeTab: 'resetPwd' } }) + }).catch(() => { }) + } + resolve(res) + }).catch(error => { + reject(error) + }) + }) + }, + // 退出系统 + logOut() { + return new Promise((resolve, reject) => { + logout().then(() => { + this.token = '' + this.roles = [] + this.permissions = [] + removeToken() + resolve(null) + }).catch(error => { + reject(error) + }) + }) + } + } + }) + +export default useUserStore diff --git a/src/types/Message.ts b/src/types/Message.ts new file mode 100644 index 0000000..29f921b --- /dev/null +++ b/src/types/Message.ts @@ -0,0 +1,76 @@ +import * as UUID from "uuid"; + +export class Message { + /** 消息唯一标识符 */ + messageId: string; + /** 发送者标识 */ + sender: string; + /** 接收者标识 */ + receiver: string; + /** 消息时间戳 */ + timestamp: string | number | Date; + /** 消息类型(如命令、聊天、日志、事件等) */ + type: MessageType; + /** 消息主题或事件名称 */ + subject: string; + /** 消息内容 */ + content: string; + /** 消息数据负载 */ + payload: Record; + /** 元数据,用于存储额外的信息 */ + metadata: Record; + /** 消息状态(如成功、失败、重试等) */ + status: string; + /** 重试次数 */ + retryCount: number; + /** 最大重试次数 */ + maxRetries: number; + /** 重试间隔 */ + retryInterval: string; + + constructor() { + this.messageId = UUID.v4(); + this.sender = ''; + this.receiver = ''; + this.timestamp = new Date(); + this.type = MessageType.MESSAGE; + this.content = ''; + this.subject = ''; + this.payload = {}; + this.metadata = {}; + this.status = ''; + this.retryCount = 0; + this.maxRetries = 3; + this.retryInterval = '1000ms'; + } +} + +export enum MessageType { + EVENT = 'event', + MESSAGE = 'message', + ASYNC_MESSAGE = 'asyncMessage', +} + +export function createMessage(receiver: string, params: Partial): Message { + const message = new Message(); + Object.assign(message, params); + message.type = MessageType.MESSAGE; + message.receiver = receiver; + return message; +} + +export function createEventMessage(eventName: string, params: Partial): Message { + const message = new Message(); + Object.assign(message, params); + message.type = MessageType.EVENT; + message.subject = eventName; + return message; +} + +export function createAsyncMessage(receiver: string, params: Partial): Message { + const message = new Message(); + Object.assign(message, params); + message.type = MessageType.ASYNC_MESSAGE; + message.receiver = receiver; + return message; +} \ No newline at end of file diff --git a/src/types/dict.ts b/src/types/dict.ts new file mode 100644 index 0000000..cec7515 --- /dev/null +++ b/src/types/dict.ts @@ -0,0 +1,26 @@ +type DictKey = string | null; +type Dict = { + createBy: string, + createTime: string, + updateBy: string | null, + updateTime: string | null, + remark: string | null, + dictName: string, + dictCode: string, + dictSort: number, + dictLabel: string, + dictValue: string, + dictType: string, + cssClass: null | string, + listClass: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text', + isDefault: "N" | "Y", + status: "0" | "1", + default: boolean +} + +type DictValue = { + label: string, + value: string, + elTagType: 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'text', + elTagClass: string | null +} diff --git a/src/types/request.ts b/src/types/request.ts new file mode 100644 index 0000000..cb8e321 --- /dev/null +++ b/src/types/request.ts @@ -0,0 +1,39 @@ +import { AxiosInstance, AxiosPromise, AxiosRequestHeaders, AxiosResponse, Method } from 'axios' + +export type GeekRequestConfig = { + /** 请求地址 */ + url?: string, + /** get请求映射params参数 */ + method?: Method | string, + /** 请求数据 */ + data?: any, + /** get请求映射params参数 */ + params?: any, + headers?: { + /** 是否需要防止数据重复提交 */ + repeatSubmit?: boolean, + /** 是否需要设置 token */ + isToken?: boolean, + } | AxiosRequestHeaders +} + +export type GeekResponse = { + code: number; + msg: string; + data: T; + total: number; + rows: Array +} + +export type GeekResponseForList = { + code: number; + msg: string; + total: number; + rows: Array +} + +export type GeekResponseForData = { + code: number; + msg: string; + data: T; +} \ No newline at end of file diff --git a/src/types/route.ts b/src/types/route.ts new file mode 100644 index 0000000..b64bec3 --- /dev/null +++ b/src/types/route.ts @@ -0,0 +1,56 @@ +import { Component } from "vue" +import { LocationQueryRaw, RouteLocationNormalized, RouteRecordRaw } from "vue-router" + +type RouteMeta = { + noCache?: boolean + title?: string | ((route: RouteItem) => string) + icon?: string + breadcrumb?: boolean + activeMenu?: string + group?: string | ((route: RouteItem) => string) + transition?: string + isTopMenu?: boolean + [key: string]: any +} + + +/** + * Note: 路由配置项 + * + * hidden: true // 当设置 true 的时候该路由不会再侧边栏出现 如401,login等页面,或者如一些编辑页面/edit/1 + * alwaysShow: true // 当你一个路由下面的 children 声明的路由大于1个时,自动会变成嵌套的模式--如组件页面 + * // 只有一个时,会将那个子路由当做根路由显示在侧边栏--如引导页面 + * // 若你想不管路由下面的 children 声明的个数都显示你的根路由 + * // 你可以设置 alwaysShow: true,这样它就会忽略之前定义的规则,一直显示根路由 + * redirect: noRedirect // 当设置 noRedirect 的时候该路由在面包屑导航中不可被点击 + * name:'router-name' // 设定路由的名字,一定要填写不然使用时会出现各种问题 + * query: '{"id": 1, "name": "ry"}' // 访问路由的默认传递参数 + * roles: ['admin', 'common'] // 访问路由的角色权限 + * permissions: ['a:a:a', 'b:b:b'] // 访问路由的菜单权限 + * meta : { + noCache: true // 如果设置为true,则不会被 缓存(默认 false) + title: 'title' // 设置该路由在侧边栏和面包屑中展示的名字,可以是route对象里面的内容:(route)=>route.query.xx + icon: 'svg-name' // 设置该路由的图标,对应路径src/assets/icons/svg + breadcrumb: false // 如果设置为false,则不会在breadcrumb面包屑中显示 + activeMenu: '/system/user' // 当路由设置了该属性,则会高亮相对应的侧边栏。 + group:"group" // 当路由设置了该属性,则相同组的路由共用一个tab标签,可以是route对象里面的内容:(route)=>route.query.xx + transition:"fade-transform" // 设置该路由的切换动画,默认淡出,不需要动画可以填none,动画需要自己在transition.scss中定义 + isTopMenu: true // 当设置为true时,该路由的第一个子路由会在TopNav模式下显示为顶级菜单 + } + */ + +export type RouteItem = RouteRecordRaw & { + path: string + component?: Component | string + redirect?: string + name?: string + query?: LocationQueryRaw + roles?: string[] + permissions?: string[] + hidden?: boolean + alwaysShow?: boolean + meta?: RouteMeta + children?: RouteItem[] +} + +export type RouteLocationItem = RouteLocationNormalized & RouteMeta \ No newline at end of file diff --git a/src/types/user.ts b/src/types/user.ts new file mode 100644 index 0000000..e637498 --- /dev/null +++ b/src/types/user.ts @@ -0,0 +1,53 @@ +export interface LoginForm { + username: string + password: string + code: string + uuid: string + email: string + phonenumber: string + rememberMe?: boolean + autoRegister?: boolean +} + +export interface RegisterForm { + username: string + password: string + code: string + uuid: string + email: string + phonenumber: string +} + + +export interface DeptInfo { + deptId: number; + deptName: string; + ancestors?: string; + leader?: string; + orderNum?: number; + parentId?: number; + status?: string; +} + +export interface RoleInfo { + roleId: number; + roleName: string; + roleKey?: string; + status?: string; +} + +export interface UserInfo { + userId: number; + userName: string; + nickName: string; + avatar: string | null; + dept: DeptInfo; + roles: RoleInfo[]; + phonenumber?: string; + email?: string; + loginDate?: string; + loginIp?: string; + createTime?: string; + status?: string; + remark?: string; +} \ No newline at end of file diff --git a/src/utils/StrUtil.ts b/src/utils/StrUtil.ts new file mode 100644 index 0000000..d59c9a8 --- /dev/null +++ b/src/utils/StrUtil.ts @@ -0,0 +1,737 @@ +/** + * 字符串工具类 + **/ +export const StrUtil = { + /** + * 字符串是否为空白 空白的定义如下:
      + * 1、为null
      + * 2、为不可见字符(如空格)
      + * 3、""
      + * + * @param str 被检测的字符串 + * @return boolean 是否为空 + */ + isBlank: function (str: string) { + return str === undefined || str == null || this.trim(str) === ""; + + }, + /** + * 字符串是否为非空白 空白的定义如下:
      + * 1、不为null
      + * 2、不为不可见字符(如空格)
      + * 3、不为""
      + * + * @param str 被检测的字符串 + * @return boolean 是否为非空 + */ + isNotBlank: function (str: string) { + // == 代表相同,=== 代表严格相同 + return false === StrUtil.isBlank(str); + }, + /** + * 字符串是否为空,空的定义如下:
      + * 1、为null
      + * 2、为""
      + * + * @param str 被检测的字符串 + * @return boolean 是否为空 + */ + isEmpty: function (str: string) { + return str == null || str === ""; + + }, + /** + * 字符串是否为非空白 空白的定义如下:
      + * 1、不为null
      + * 2、不为""
      + * + * @param str 被检测的字符串 + * @return boolean 是否为非空 + */ + isNotEmpty: function (str: string) { + return !StrUtil.isEmpty(str); + }, + /** + * 空对象转字符串 + * + * @param str 被检查的字符串 + * @return string 原字符串或者空串 + */ + nullToStr: function (str: string) { + if (StrUtil.isEmpty(str)) { + return ""; + } + return str; + }, + /** + * 空格截取 + * + * @param str 截取的字符串 + * @return string + */ + trim: function (str: string) { + if (str == null) { + return ""; + } + return str.toString().replace(/(^\s*)|(\s*$)|\r|\n/g, ""); + }, + /** + * 比较两个字符串(大小写敏感) + * + * @param str 字符串 + * @param that 比较的字符串 + * @return boolean + */ + equals: function (str: string, that: string) { + return str === that; + }, + /** + * 比较两个字符串(大小写不敏感) + * + * @param str 字符串 + * @param that 比较的字符串 + * @return boolean + */ + equalsIgnoreCase: function (str: string, that: string) { + return String(str).toUpperCase() === String(that).toUpperCase(); + }, + /** + * 将字符串按指定字符分割 + * + * @param str 字符串 + * @param sep 比较的字符串 + * @param maxLen 最大长度 + * @return string[] 分割后的数组 + */ + split: function (str: string, sep: string, maxLen?: number) { + if (StrUtil.isEmpty(str)) { + return null; + } + const value = String(str).split(sep); + return maxLen ? value.slice(0, maxLen - 1) : value; + }, + /** + * 字符串格式化(%s ) + * + * @param str 字符串 + * @return 格式化后的字符串 + */ + sprintf: function (str: string) { + let args = arguments, flag = true, i = 1; + str = str.replace(/%s/g, function () { + const arg = args[i++]; + if (typeof arg === 'undefined') { + flag = false; + return ''; + } + return arg; + }); + return flag ? str : ''; + }, + /** + * 判断字符串是否是以start开头 + * + * @param str 字符串 + * @param start 开始的字符串 + * @return boolean + */ + startWith: function (str: string, start: string) { + const reg = new RegExp("^" + start); + return reg.test(str); + }, + /** + * 判断字符串是否是以end结尾 + * + * @param str 字符串 + * @param end 结尾的字符串 + * @return boolean + */ + endWith: function (str: string, end: string) { + const reg = new RegExp(end + "$"); + return reg.test(str); + }, + /** + * 判断字符串是否包含指定的字符 + * + * @param input 字符串 + * @param searchStr 搜索的字符串 + * @return boolean + */ + contains: function (input: string, searchStr: string) { + if (this.isEmpty(input) || this.isEmpty(searchStr)) { + return false; + } + return input.indexOf(searchStr) !== -1; + }, + /** + * 检查字符串中是否包含空格 + * @param input 输入字符串 + * @returns boolean + */ + containsWhitespace: function (input: string) { + return this.contains(input, ' '); + }, + /** + * 生成指定个数的字符 + * @param ch 字符 + * @param repeatTimes 重复次数 + * @returns string + */ + repeat: function (ch: string, repeatTimes: number) { + let result = ""; + for (let i = 0; i < repeatTimes; i++) { + result += ch; + } + return result; + }, + /** + * 删除字符串中的空格 + * @param input 输入字符串 + * @returns string + */ + deleteWhitespace: function (input: string) { + return input.replace(/\s+/g, ''); + }, + /** + * 删除字符串中的空格 + * @param input 输入字符串 + * @returns string + */ + rightPad: function (input: string, size: number, padStr: string) { + return input + this.repeat(padStr, size); + }, + /** + * 在字符串左边填充指定字符,直到达到指定长度 + * @param input 输入字符串 + * @param size 目标长度 + * @param padStr 填充字符 + * @returns string + */ + leftPad: function (input: string, size: number, padStr: string) { + return this.repeat(padStr, size) + input; + }, + /** + * 首小写字母转大写 + * @param input 输入字符串 + * @returns string + */ + capitalize: function (input: string) { + let strLen = 0; + if (input == null || (strLen = input.length) === 0) { + return input; + } + return input.replace(/^[a-z]/, function (matchStr) { + return matchStr.toLocaleUpperCase(); + }); + }, + /** + * 首大写字母转小写 + * @param input 输入字符串 + * @returns string + */ + uncapitalize: function (input: string) { + let strLen = 0; + if (input == null || (strLen = input.length) === 0) { + return input; + } + return input.replace(/^[A-Z]/, function (matchStr) { + return matchStr.toLocaleLowerCase(); + }); + }, + /** + * 大写转小写,小写转大写 + * @param input 输入字符串 + * @returns string + */ + swapCase: function (input: string) { + return input.replace(/[a-z]/ig, function (matchStr) { + if (matchStr >= 'A' && matchStr <= 'Z') { + return matchStr.toLocaleLowerCase(); + } else if (matchStr >= 'a' && matchStr <= 'z') { + return matchStr.toLocaleUpperCase(); + } + return matchStr; + }); + }, + /** + * 下划线转驼峰法 + * @param input 输入字符串 + * @returns string + */ + camelCase: function (input: string) { + return input.replace(/_[a-z]/g, str1 => str1.substr(-1).toUpperCase()); + }, + /** + * 标题命名法 + * @param input 输入字符串 + * @returns string + */ + titleCase: function (input: string) { + return input.replace(/( |^)[a-z]/g, L => L.toUpperCase()); + }, + /** + * 统计含有的子字符串的个数 + * @param input 输入字符串 + * @param sub 子字符串 + * @returns number + */ + countMatches: function (input: string, sub: string) { + if (this.isEmpty(input) || this.isEmpty(sub)) { + return 0; + } + let count = 0; + let index = 0; + while ((index = input.indexOf(sub, index)) !== -1) { + index += sub.length; + count++; + } + return count; + }, + /** + * 只包含字母 + * @param input 输入字符串 + * @returns boolean + */ + isAlpha: function (input: string) { + return /^[a-z]+$/i.test(input); + }, + /** + * 只包含字母、空格 + * @param input 输入字符串 + * @returns boolean + */ + isAlphaSpace: function (input: string) { + return /^[a-z\s]*$/i.test(input); + }, + /** + * 只包含字母、数字 + * @param input 输入字符串 + * @returns boolean + */ + isAlphanumeric: function (input: string) { + return /^[a-z0-9]+$/i.test(input); + }, + /** + * 只包含字母、数字和空格 + * @param input 输入字符串 + * @returns boolean + */ + isAlphanumericSpace: function (input: string) { + return /^[a-z0-9\s]*$/i.test(input); + }, + /** + * 只包含数字 + * @param input 输入字符串 + * @returns boolean + */ + isNumeric: function (input: string) { + return /^(?:[1-9]\d*|0)(?:\.\d+)?$/.test(input); + }, + /** + * 小数 + * @param input 输入字符串 + * @returns boolean + */ + isDecimal: function (input: string) { + return /^[-+]?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + /** + * 负小数 + * @param input 输入字符串 + * @returns boolean + */ + isNegativeDecimal: function (input: string) { + return /^\-?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + /** + * 正小数 + * @param input 输入字符串 + * @returns boolean + */ + isPositiveDecimal: function (input: string) { + return /^\+?(?:0|[1-9]\d*)\.\d+$/.test(input); + }, + /** + * 整数 + * @param input 输入字符串 + * @returns boolean + */ + isInteger: function (input: string) { + return /^[-+]?(?:0|[1-9]\d*)$/.test(input); + }, + /** + * 正整数 + * @param input 输入字符串 + * @returns boolean + */ + isPositiveInteger: function (input: string) { + return /^\+?(?:0|[1-9]\d*)$/.test(input); + }, + /** + * 负整数 + * @param input 输入字符串 + * @returns boolean + */ + isNegativeInteger: function (input: string) { + return /^\-?(?:0|[1-9]\d*)$/.test(input); + }, + /** + * 只包含数字和空格 + * @param input 输入字符串 + * @returns boolean + */ + isNumericSpace: function (input: string) { + return /^[\d\s]*$/.test(input); + }, + /** + * 只包含空白 + * @param input 输入字符串 + * @returns boolean + */ + isWhitespace: function (input: string) { + return /^\s*$/.test(input); + }, + // 是否全是小写字母 + isAllLowerCase: function (input: string) { + return /^[a-z]+$/.test(input); + }, + /** + * 是否全是大写字母 + * @param input 输入字符串 + * @returns boolean + */ + isAllUpperCase: function (input: string) { + return /^[A-Z]+$/.test(input); + }, + /** + * 默认字符串 + * @param input 输入字符串 + * @param defaultStr 默认字符串 + * @returns string + */ + defaultString: function (input: string, defaultStr: string) { + return input == null ? defaultStr : input; + }, + /** + * 如果为空白,默认字符串 + * @param input 输入字符串 + * @param defaultStr 默认字符串 + * @returns string + */ + defaultIfBlank: function (input: string, defaultStr: string) { + return this.isBlank(input) ? defaultStr : input; + }, + /** + * 如果为空,默认字符串 + * @param input 输入字符串 + * @param defaultStr 默认字符串 + * @returns string + */ + defaultIfEmpty: function (input: string, defaultStr: string) { + return this.isEmpty(input) ? defaultStr : input; + }, + /** + * 字符串反转 + * @param input 输入字符串 + * @returns string + */ + reverse: function (input: string) { + if (this.isBlank(input)) { + input; + } + return input.split("").reverse().join(""); + }, + /** + * 删掉特殊字符(英文状态下) + * @param input 输入字符串 + * @returns string + */ + removeSpecialCharacter: function (input: string) { + return input.replace(/[!-/:-@\[-`{-~]/g, ""); + }, + /** + * 只包含特殊字符、数字和字母(不包括空格,若想包括空格,改为[ -~]) + * @param input 输入字符串 + * @returns boolean + */ + isSpecialCharacterAlphanumeric: function (input: string) { + return /^[!-~]+$/.test(input); + }, + /** + * 校验时排除某些字符串,即不能包含某些字符串 + * @param {Object} conditions:里面有多个属性,如下: + * + * @param {String} matcherFlag 匹配标识 + * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; + * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; + * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; + * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; + * 100:所有字符; + * @param {Array} excludeStrArr 排除的字符串,数组格式 + * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 + * @param {Boolean} ignoreCase 是否忽略大小写 + * conditions={matcherFlag:"0",excludeStrArr:[],length:"",ignoreCase:true} + */ + isPatternMustExcludeSomeStr: function (input: string, conditions: any) { + //参数 + const matcherFlag = conditions.matcherFlag; + const excludeStrArr = conditions.excludeStrArr; + const length = conditions.length; + const ignoreCase = conditions.ignoreCase; + //拼正则 + const size = excludeStrArr.length; + let regex = (size === 0) ? "^" : "^(?!.*(?:{0}))"; + let subPattern = ""; + for (let i = 0; i < size; i++) { + excludeStrArr[i] = this.escapeMetacharacterOfStr(excludeStrArr[i]); + subPattern += excludeStrArr[i]; + if (i !== size - 1) { + subPattern += "|"; + } + } + regex = this.format(regex, [subPattern]); + switch (matcherFlag) { + case '0': + regex += "\\d"; + break; + case '1': + regex += "[a-zA-Z]"; + break; + case '2': + regex += "[a-z]"; + break; + case '3': + regex += "[A-Z]"; + break; + case '4': + regex += "[!-/:-@\[-`{-~]"; + break; + case '5': + regex += "[\u4E00-\u9FA5]"; + break; + case '6': + regex += "[a-zA-Z0-9]"; + break; + case '7': + regex += "[a-z0-9]"; + break; + case '8': + regex += "[A-Z0-9]"; + break; + case '9': + regex += "[!-~]"; + break; + case '10': + regex += "[0-9\u4E00-\u9FA5]"; + break; + case '11': + regex += "[a-z!-/:-@\[-`{-~]"; + break; + case '12': + regex += "[A-Z!-/:-@\[-`{-~]"; + break; + case '13': + regex += "[a-zA-Z!-/:-@\[-`{-~]"; + break; + case '14': + regex += "[a-z\u4E00-\u9FA5]"; + break; + case '15': + regex += "[A-Z\u4E00-\u9FA5]"; + break; + case '16': + regex += "[a-zA-Z\u4E00-\u9FA5]"; + break; + case '17': + regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '18': + regex += "[\u4E00-\u9FA5!-~]"; + break; + case '19': + regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '20': + regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '100': + regex += "[\s\S]"; + break; + default: + alert(matcherFlag + ":This type is not supported!"); + } + regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; + regex += "$"; + const pattern = new RegExp(regex, ignoreCase ? "i" : ""); + return pattern.test(input); + }, + /** + * @param {String} message + * @param {Array} arr + * 消息格式化 + */ + format: function (message: string, arr: Array) { + return message.replace(/{(\d+)}/g, function (matchStr, group1) { + return arr[group1]; + }); + }, + /** + * 把连续出现多次的字母字符串进行压缩。如输入:aaabbbbcccccd 输出:3a4b5cd + * @param {String} input + * @param {Boolean} ignoreCase : true or false + */ + compressRepeatedStr: function (input: string, ignoreCase: boolean) { + const pattern = new RegExp("([a-z])\\1+", ignoreCase ? "ig" : "g"); + return input.replace(pattern, function (matchStr, group1) { + return matchStr.length + group1; + }); + }, + /** + * 校验必须同时包含某些字符串 + * @param {String} input + * @param {Object} conditions:里面有多个属性,如下: + * + * @param {String} matcherFlag 匹配标识 + * 0:数字;1:字母;2:小写字母;3:大写字母;4:特殊字符,指英文状态下的标点符号及括号等;5:中文; + * 6:数字和字母;7:数字和小写字母;8:数字和大写字母;9:数字、字母和特殊字符;10:数字和中文; + * 11:小写字母和特殊字符;12:大写字母和特殊字符;13:字母和特殊字符;14:小写字母和中文;15:大写字母和中文; + * 16:字母和中文;17:特殊字符、和中文;18:特殊字符、字母和中文;19:特殊字符、小写字母和中文;20:特殊字符、大写字母和中文; + * 100:所有字符; + * @param {Array} excludeStrArr 排除的字符串,数组格式 + * @param {String} length 长度,可为空。1,2表示长度1到2之间;10,表示10个以上字符;5表示长度为5 + * @param {Boolean} ignoreCase 是否忽略大小写 + * conditions={matcherFlag:"0",containStrArr:[],length:"",ignoreCase:true} + * + */ + isPatternMustContainSomeStr: function (input: string, conditions: { + matcherFlag: string, + containStrArr: Array, + length: string, + ignoreCase: boolean + }) { + //参数 + const matcherFlag = conditions.matcherFlag; + const containStrArr = conditions.containStrArr; + const length = conditions.length; + const ignoreCase = conditions.ignoreCase; + //创建正则 + const size = containStrArr.length; + let regex = "^"; + let subPattern = ""; + for (let i = 0; i < size; i++) { + containStrArr[i] = this.escapeMetacharacterOfStr(containStrArr[i]); + subPattern += "(?=.*" + containStrArr[i] + ")"; + } + regex += subPattern; + switch (matcherFlag) { + case '0': + regex += "\\d"; + break; + case '1': + regex += "[a-zA-Z]"; + break; + case '2': + regex += "[a-z]"; + break; + case '3': + regex += "[A-Z]"; + break; + case '4': + regex += "[!-/:-@\[-`{-~]"; + break; + case '5': + regex += "[\u4E00-\u9FA5]"; + break; + case '6': + regex += "[a-zA-Z0-9]"; + break; + case '7': + regex += "[a-z0-9]"; + break; + case '8': + regex += "[A-Z0-9]"; + break; + case '9': + regex += "[!-~]"; + break; + case '10': + regex += "[0-9\u4E00-\u9FA5]"; + break; + case '11': + regex += "[a-z!-/:-@\[-`{-~]"; + break; + case '12': + regex += "[A-Z!-/:-@\[-`{-~]"; + break; + case '13': + regex += "[a-zA-Z!-/:-@\[-`{-~]"; + break; + case '14': + regex += "[a-z\u4E00-\u9FA5]"; + break; + case '15': + regex += "[A-Z\u4E00-\u9FA5]"; + break; + case '16': + regex += "[a-zA-Z\u4E00-\u9FA5]"; + break; + case '17': + regex += "[\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '18': + regex += "[\u4E00-\u9FA5!-~]"; + break; + case '19': + regex += "[a-z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '20': + regex += "[A-Z\u4E00-\u9FA5!-/:-@\[-`{-~]"; + break; + case '100': + regex += "[\s\S]"; + break; + default: + alert(matcherFlag + ":This type is not supported!"); + } + regex += this.isNotBlank(length) ? "{" + length + "}" : "+"; + regex += "$"; + const pattern = new RegExp(regex, ignoreCase ? "i" : ""); + return pattern.test(input); + }, + /** + * 中文校验 + * @param input 输入字符串 + * @returns boolean + */ + isChinese: function (input: string) { + return /^[\u4E00-\u9FA5]+$/.test(input); + }, + /** + * 去掉中文字符 + * @param input 输入字符串 + * @returns string + */ + removeChinese: function (input: string) { + return input.replace(/[\u4E00-\u9FA5]+/gm, ""); + }, + /** + * 转义元字符 + * @param input 输入字符串 + * @returns string + */ + escapeMetacharacter: function (input: string) { + const metacharacter = "^$()*+.[]|\\-?{}|"; + if (metacharacter.indexOf(input) >= 0) { + input = "\\" + input; + } + return input; + }, + /** + * 转义字符串中的元字符 + * @param input 输入字符串 + * @returns string + */ + escapeMetacharacterOfStr: function (input: string) { + return input.replace(/[\^\$\*\+\.\|\\\-\?\{\}\|]/gm, "\\$&"); + } +}; diff --git a/src/utils/auth.ts b/src/utils/auth.ts new file mode 100644 index 0000000..795cd0a --- /dev/null +++ b/src/utils/auth.ts @@ -0,0 +1,15 @@ +import Cookies from 'js-cookie' + +const TokenKey = 'Admin-Token' + +export function getToken() { + return localStorage.getItem(TokenKey) +} + +export function setToken(token: string) { + return localStorage.setItem(TokenKey, token) +} + +export function removeToken() { + return localStorage.removeItem(TokenKey) +} diff --git a/src/utils/dict.ts b/src/utils/dict.ts new file mode 100644 index 0000000..430cec7 --- /dev/null +++ b/src/utils/dict.ts @@ -0,0 +1,28 @@ +import useDictStore from '@/store/modules/dict' +import { getDicts } from '@/api/system/dict/data' +import { toRefs, ref, Ref } from 'vue'; + +/** + * 获取字典数据 + */ +export function useDict(...args: T) { + const res = ref({} as Record>); + args.forEach((dictType) => { + res.value[dictType] = []; + const dicts = useDictStore().getDict(dictType); + if (dicts) { + res.value[dictType] = dicts; + } else { + getDicts(dictType).then((resp: { data: Array }) => { + res.value[dictType] = resp.data.map(p => ({ + label: p.dictLabel, + value: p.dictValue, + elTagType: p.listClass, + elTagClass: p.cssClass + })); + useDictStore().setDict(dictType, res.value[dictType]); + }); + } + }); + return toRefs(res.value) as { [K in T[number]]: Ref> }; +} \ No newline at end of file diff --git a/src/utils/drag.ts b/src/utils/drag.ts new file mode 100644 index 0000000..dbd4d93 --- /dev/null +++ b/src/utils/drag.ts @@ -0,0 +1,42 @@ +/** + * 拖拽函数 + * @param onDraging 拖拽时触发的函数 + * @param beforeStop 拖拽结束前触发的函数 + * @returns 用于启动拖动的函数 + */ +export function drag(onDraging: (arg: { x: number, y: number, dx: number, dy: number }) => void, beforeStop?: Function) { + let initialX: null | number = null; + let initialY: null | number = null; + function doDrag(event: MouseEvent) { + if (initialX === null || initialY === null) { + initialX = event.clientX; + initialY = event.clientY; + } + fun.event = event; + onDraging({ + x: event.clientX, + y: event.clientY, + dx: event.clientX - initialX, + dy: event.clientY - initialY, + }) + initialX = event.clientX; + initialY = event.clientY; + } + function stopDrag() { + if (beforeStop) { + beforeStop() + } + initialX = null; + initialY = null; + window.removeEventListener("mousemove", doDrag); + window.removeEventListener("mouseup", stopDrag) + } + const fun = () => { + window.addEventListener("mousemove", doDrag); + window.addEventListener("mouseup", stopDrag); + } + fun.stopDrag = stopDrag + fun.onDraging = onDraging + fun.event = {} as any + return fun +} \ No newline at end of file diff --git a/src/utils/dynamicTitle.ts b/src/utils/dynamicTitle.ts new file mode 100644 index 0000000..8f0c2f0 --- /dev/null +++ b/src/utils/dynamicTitle.ts @@ -0,0 +1,15 @@ +import defaultSettings from '@/settings' +import useSettingsStore from '@/store/modules/settings' +import { StrUtil } from './StrUtil'; + +/** + * 动态修改标题 + */ +export function useDynamicTitle() { + const settingsStore = useSettingsStore(); + if (settingsStore.dynamicTitle && StrUtil.isNotBlank(settingsStore.title)) { + document.title = settingsStore.title + ' - ' + defaultSettings.title; + } else { + document.title = defaultSettings.title; + } +} \ No newline at end of file diff --git a/src/utils/errorCode.ts b/src/utils/errorCode.ts new file mode 100644 index 0000000..62f1d25 --- /dev/null +++ b/src/utils/errorCode.ts @@ -0,0 +1,6 @@ +export default { + '401': '认证失败,无法访问系统资源', + '403': '当前操作没有权限', + '404': '访问资源不存在', + 'default': '系统未知错误,请反馈给管理员' +} as { [key: string]: any } diff --git a/src/utils/index.js b/src/utils/index.js new file mode 100644 index 0000000..bdc11ac --- /dev/null +++ b/src/utils/index.js @@ -0,0 +1,387 @@ +import { parseTime } from './ruoyi' + +/** + * 表格时间格式化 + */ +export function formatDate(cellValue) { + if (cellValue == null || cellValue == "") return ""; + var date = new Date(cellValue) + var year = date.getFullYear() + var month = date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1 + var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + var hours = date.getHours() < 10 ? '0' + date.getHours() : date.getHours() + var minutes = date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes() + var seconds = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds() + return year + '-' + month + '-' + day + ' ' + hours + ':' + minutes + ':' + seconds +} + +/** + * 获取传入时间与当前时间的相差时间 + * @param {number} time 输入的时间 + * @param {string} option 与parseTime相同 + * @returns {string} 刚刚、1分钟前、1小时前、1天前、具体格式化的时间 + */ +export function formatTime(time, option) { + if (('' + time).length === 10) { + time = parseInt(time) * 1000 + } else { + time = +time + } + const d = new Date(time) + const now = Date.now() + + const diff = (now - d) / 1000 + + if (diff < 30) { + return '刚刚' + } else if (diff < 3600) { + // less 1 hour + return Math.ceil(diff / 60) + '分钟前' + } else if (diff < 3600 * 24) { + return Math.ceil(diff / 3600) + '小时前' + } else if (diff < 3600 * 24 * 2) { + return '1天前' + } + if (option) { + return parseTime(time, option) + } else { + return ( + d.getMonth() + + 1 + + '月' + + d.getDate() + + '日' + + d.getHours() + + '时' + + d.getMinutes() + + '分' + ) + } +} + +/** + * @param {string} url + * @returns {Object} + */ +export function getQueryObject(url) { + url = url == null ? window.location.href : url + const search = url.substring(url.lastIndexOf('?') + 1) + const obj = {} + const reg = /([^?&=]+)=([^?&=]*)/g + search.replace(reg, (rs, $1, $2) => { + const name = decodeURIComponent($1) + let val = decodeURIComponent($2) + val = String(val) + obj[name] = val + return rs + }) + return obj +} + +/** + * @param {string} input value + * @returns {number} output value + */ +export function byteLength(str) { + // returns the byte length of an utf8 string + let s = str.length + for (var i = str.length - 1; i >= 0; i--) { + const code = str.charCodeAt(i) + if (code > 0x7f && code <= 0x7ff) s++ + else if (code > 0x7ff && code <= 0xffff) s += 2 + if (code >= 0xDC00 && code <= 0xDFFF) i-- + } + return s +} + +/** + * 清空数组里面的空值 + * @param {Array} actual + * @returns {Array} + */ +export function cleanArray(actual) { + const newArray = [] + for (let i = 0; i < actual.length; i++) { + if (actual[i]) { + newArray.push(actual[i]) + } + } + return newArray +} + +/** + * 将对象转化为请求参数 + * @param {Object} json 复杂度在请求参数允许下的对象 + * @returns {Array} + */ +export function param(json) { + if (!json) return '' + return cleanArray( + Object.keys(json).map(key => { + if (json[key] === undefined) return '' + return encodeURIComponent(key) + '=' + encodeURIComponent(json[key]) + }) + ).join('&') +} + +/** + * 将请求参数转化为对象 + * @param {string} url 需要解析的url + * @returns {Object} 解析后的对象 + */ +export function param2Obj(url) { + const search = decodeURIComponent(url.split('?')[1]).replace(/\+/g, ' ') + if (!search) { + return {} + } + const obj = {} + const searchArr = search.split('&') + searchArr.forEach(v => { + const index = v.indexOf('=') + if (index !== -1) { + const name = v.substring(0, index) + const val = v.substring(index + 1, v.length) + obj[name] = val + } + }) + return obj +} + +/** + * 提取html中的文本 + * @param {string} val 要被提取的html片段 + * @returns {string} + */ +export function html2Text(val) { + const div = document.createElement('div') + div.innerHTML = val + return div.textContent || div.innerText +} + +/** + * 合并对象或数组。将source对象的属性合并到target对象中。如果source是数组,则返回source的浅拷贝。 + * @param {Object} target 目标对象 + * @param {(Object|Array)} source 来源对象 + * @returns {Object} 合并后的对象 + */ +export function objectMerge(target, source) { + if (typeof target !== 'object') { + target = {} + } + if (Array.isArray(source)) { + return source.slice() + } + Object.keys(source).forEach(property => { + const sourceProperty = source[property] + if (typeof sourceProperty === 'object') { + target[property] = objectMerge(target[property], sourceProperty) + } else { + target[property] = sourceProperty + } + }) + return target +} + +/** + * 为指定元素切换指定的类名,若类名存在则移除类名,若类名不存在则添加类名。 + * @param {HTMLElement} element - 需要操作类名的DOM元素。 + * @param {string} className - 需要切换的类名。 + * @returns {void} 不返回任何内容。 + */ +export function toggleClass(element, className) { + if (!element || !className) { + return + } + let classString = element.className + const nameIndex = classString.indexOf(className) + if (nameIndex === -1) { + classString += '' + className + } else { + classString = + classString.substr(0, nameIndex) + + classString.substr(nameIndex + className.length) + } + element.className = classString +} + +/** + * @param {string} type + * @returns {Date} + */ +export function getTime(type) { + if (type === 'start') { + return new Date().getTime() - 3600 * 1000 * 24 * 90 + } else { + return new Date(new Date().toDateString()) + } +} + +/** + * 函数防抖动封装 + * 函数防抖是一种优化策略,用于限制函数调用的频率,即在一定时间间隔内只调用一次函数。 + * @param {Function} func 要被防抖的函数 + * @param {number} wait 防抖时间间隔,单位为毫秒。 + * @param {boolean} immediate 是否在第一次调用时立即执行,而不是等待。 + * @return {Function} 返回一个经过防抖处理的函数。 + */ +export function debounce(func, wait, immediate) { + let timeout, args, context, timestamp, result + + const later = function () { + // 据上一次触发时间间隔 + const last = +new Date() - timestamp + + // 上次被包装函数被调用时间间隔 last 小于设定时间间隔 wait + if (last < wait && last > 0) { + timeout = setTimeout(later, wait - last) + } else { + timeout = null + // 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用 + if (!immediate) { + result = func.apply(context, args) + if (!timeout) context = args = null + } + } + } + + return function (...args) { + context = this + timestamp = +new Date() + const callNow = immediate && !timeout + // 如果延时不存在,重新设定延时 + if (!timeout) timeout = setTimeout(later, wait) + if (callNow) { + result = func.apply(context, args) + context = args = null + } + + return result + } +} + +/** + * 这只是deep copy的一个简单版本 + * 有很多边缘案例bug + * 如果要使用完美的深度拷贝,请使用lodash的_.cloneDeep + * @template T + * @param {T} source + * @returns {T} + */ +export function deepClone(source) { + if (!source && typeof source !== 'object') { + throw new Error('error arguments', 'deepClone') + } + const targetObj = source.constructor === Array ? [] : {} + Object.keys(source).forEach(keys => { + if (source[keys] && typeof source[keys] === 'object') { + targetObj[keys] = deepClone(source[keys]) + } else { + targetObj[keys] = source[keys] + } + }) + return targetObj +} + +/** + * 除数组中的重复元素并返回新数组 + * @param {Array} arr + * @returns {Array} + */ +export function uniqueArr(arr) { + return Array.from(new Set(arr)) +} + +/** + * 生成一个唯一的字符串 + * @returns {string} + */ +export function createUniqueString() { + const timestamp = +new Date() + '' + const randomNum = parseInt((1 + Math.random()) * 65536) + '' + return (+(randomNum + timestamp)).toString(32) +} + +/** + * 判断一个元素是否包含某个class + * @param {HTMLElement} elm + * @param {string} cls + * @returns {boolean} + */ +export function hasClass(ele, cls) { + return !!ele.className.match(new RegExp('(\\s|^)' + cls + '(\\s|$)')) +} + +/** + * 给一个元素添加一个class + * @param {HTMLElement} elm + * @param {string} cls + */ +export function addClass(ele, cls) { + if (!hasClass(ele, cls)) ele.className += ' ' + cls +} + +/** + * 删除一个元素的给定class + * @param {HTMLElement} elm + * @param {string} cls + */ +export function removeClass(ele, cls) { + if (hasClass(ele, cls)) { + const reg = new RegExp('(\\s|^)' + cls + '(\\s|$)') + ele.className = ele.className.replace(reg, ' ') + } +} + +export function makeMap(str, expectsLowerCase) { + const map = Object.create(null) + const list = str.split(',') + for (let i = 0; i < list.length; i++) { + map[list[i]] = true + } + return expectsLowerCase + ? val => map[val.toLowerCase()] + : val => map[val] +} + +export const exportDefault = 'export default ' + +export const beautifierConf = { + html: { + indent_size: '2', + indent_char: ' ', + max_preserve_newlines: '-1', + preserve_newlines: false, + keep_array_indentation: false, + break_chained_methods: false, + indent_scripts: 'separate', + brace_style: 'end-expand', + space_before_conditional: true, + unescape_strings: false, + jslint_happy: false, + end_with_newline: true, + wrap_line_length: '110', + indent_inner_html: true, + comma_first: false, + e4x: true, + indent_empty_lines: true + }, + js: { + indent_size: '2', + indent_char: ' ', + max_preserve_newlines: '-1', + preserve_newlines: false, + keep_array_indentation: false, + break_chained_methods: false, + indent_scripts: 'normal', + brace_style: 'end-expand', + space_before_conditional: true, + unescape_strings: false, + jslint_happy: true, + end_with_newline: true, + wrap_line_length: '110', + indent_inner_html: true, + comma_first: false, + e4x: true, + indent_empty_lines: true + } +} \ No newline at end of file diff --git a/src/utils/jsencrypt.ts b/src/utils/jsencrypt.ts new file mode 100644 index 0000000..67f1e2f --- /dev/null +++ b/src/utils/jsencrypt.ts @@ -0,0 +1,30 @@ +import JSEncrypt from 'jsencrypt/bin/jsencrypt.min' + +// 密钥对生成 http://web.chacuo.net/netrsakeypair + +const publicKey = 'MFwwDQYJKoZIhvcNAQEBBQADSwAwSAJBAKoR8mX0rGKLqzcWmOzbfj64K8ZIgOdH\n' + + 'nzkXSOVOZbFu/TJhZ7rFAN+eaGkl3C4buccQd/EjEsj9ir7ijT7h96MCAwEAAQ==' + +const privateKey = 'MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAqhHyZfSsYourNxaY\n' + + '7Nt+PrgrxkiA50efORdI5U5lsW79MmFnusUA355oaSXcLhu5xxB38SMSyP2KvuKN\n' + + 'PuH3owIDAQABAkAfoiLyL+Z4lf4Myxk6xUDgLaWGximj20CUf+5BKKnlrK+Ed8gA\n' + + 'kM0HqoTt2UZwA5E2MzS4EI2gjfQhz5X28uqxAiEA3wNFxfrCZlSZHb0gn2zDpWow\n' + + 'cSxQAgiCstxGUoOqlW8CIQDDOerGKH5OmCJ4Z21v+F25WaHYPxCFMvwxpcw99Ecv\n' + + 'DQIgIdhDTIqD2jfYjPTY8Jj3EDGPbH2HHuffvflECt3Ek60CIQCFRlCkHpi7hthh\n' + + 'YhovyloRYsM+IS9h/0BzlEAuO0ktMQIgSPT3aFAgJYwKpqRYKlLDVcflZFCKY7u3\n' + + 'UP8iWi1Qw0Y=' + +// 加密 +export function encrypt(txt: string): string { + const encryptor = new JSEncrypt() + encryptor.setPublicKey(publicKey) // 设置公钥 + return encryptor.encrypt(txt) // 对数据进行加密 +} + +// 解密 +export function decrypt(txt: string): string { + const encryptor = new JSEncrypt() + encryptor.setPrivateKey(privateKey) // 设置私钥 + return encryptor.decrypt(txt) // 对数据进行解密 +} + diff --git a/src/utils/permission.ts b/src/utils/permission.ts new file mode 100644 index 0000000..95c66b6 --- /dev/null +++ b/src/utils/permission.ts @@ -0,0 +1,51 @@ +import useUserStore from '@/store/modules/user' + +/** + * 字符权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkPermi(value: Array) { + if (value && value instanceof Array && value.length > 0) { + const permissions = useUserStore().permissions + const permissionDatas = value + const all_permission = "*:*:*"; + + const hasPermission = permissions.some(permission => { + return all_permission === permission || permissionDatas.includes(permission) + }) + + if (!hasPermission) { + return false + } + return true + } else { + console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`) + return false + } +} + +/** + * 角色权限校验 + * @param {Array} value 校验值 + * @returns {Boolean} + */ +export function checkRole(value: Array) { + if (value && value instanceof Array && value.length > 0) { + const roles = useUserStore().roles + const permissionRoles = value + const super_admin = "admin"; + + const hasRole = roles.some(role => { + return super_admin === role || permissionRoles.includes(role) + }) + + if (!hasRole) { + return false + } + return true + } else { + console.error(`need roles! Like checkRole="['admin','editor']"`) + return false + } +} \ No newline at end of file diff --git a/src/utils/request.ts b/src/utils/request.ts new file mode 100644 index 0000000..5699464 --- /dev/null +++ b/src/utils/request.ts @@ -0,0 +1,164 @@ +import axios, { AxiosRequestConfig, AxiosRequestHeaders, AxiosResponse, InternalAxiosRequestConfig } from 'axios' +import { ElNotification, ElMessageBox, ElMessage, ElLoading } from 'element-plus' +import { getToken } from '@/utils/auth' +import errorCode from '@/utils/errorCode' +import { tansParams, blobValidate } from '@/utils/ruoyi' +import cache from '@/plugins/cache' +import { saveAs } from 'file-saver' +import useUserStore from '@/store/modules/user' +import { router } from '@/router' + +let downloadLoadingInstance: any; +// 是否显示重新登录 +export let isRelogin = { show: false }; +//@ts-ignore +axios.defaults.headers['Content-Type'] = 'application/json;charset=utf-8' +import { GeekRequestConfig, GeekResponse } from '@/types/request' +import { RoutesAlias } from '@/router/routesAlias' +// 创建axios实例 +const service = axios.create({ + // axios中请求配置有baseURL选项,表示请求URL公共部分 + baseURL: import.meta.env.VITE_APP_BASE_API, + // 超时 + timeout: 10000 +}) + +// request拦截器 +service.interceptors.request.use((config) => { + // 是否需要设置 token + const isToken = (config.headers ?? {}).isToken === false + // 是否需要防止数据重复提交 + const isRepeatSubmit = (config.headers ?? {}).repeatSubmit === false + if (getToken() && !isToken) { + // 让每个请求携带自定义token 请根据实际情况自行修改 + config.headers['Authorization'] = 'Bearer ' + getToken() + } + // get请求映射params参数 + if (config.method === 'get' && config.params) { + let url = config.url + '?' + tansParams(config.params); + url = url.slice(0, -1); + config.params = {}; + config.url = url; + } + if (!isRepeatSubmit && (config.method === 'post' || config.method === 'put')) { + const requestObj = { + url: config.url, + data: typeof config.data === 'object' ? JSON.stringify(config.data) : config.data, + time: new Date().getTime() + } + const sessionObj = cache.session.getJSON('sessionObj') + if (sessionObj === undefined || sessionObj === null || sessionObj === '') { + cache.session.setJSON('sessionObj', requestObj) + } else { + const s_url = sessionObj.url; // 请求地址 + const s_data = sessionObj.data; // 请求数据 + const s_time = sessionObj.time; // 请求时间 + const interval = 1000; // 间隔时间(ms),小于此时间视为重复提交 + if (s_data === requestObj.data && requestObj.time - s_time < interval && s_url === requestObj.url) { + const message = '数据正在处理,请勿重复提交'; + console.warn(`[${s_url}]: ` + message) + return Promise.reject(new Error(message)) + } else { + cache.session.setJSON('sessionObj', requestObj) + } + } + } + return config +}, error => { + Promise.reject(error) +}) + +// 响应拦截器 +// (value: V) => V | Promise) | null) | null, options?: AxiosInterceptorOptions +service.interceptors.response.use((res: AxiosResponse, any>) => { + // 未设置状态码则默认成功状态 + const code = String(res.data.code || 200); + //获取错误信息 + const msg = errorCode[code] || res.data.msg || errorCode['default'] + // 二进制数据则直接返回 + if (res.request.responseType === 'blob' || res.request.responseType === 'arraybuffer') { + return res + } + if (code === '401') { + if (!isRelogin.show) { + isRelogin.show = true; + ElMessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => { + isRelogin.show = false; + useUserStore().logOut().then(() => { + location.href = router.resolve(RoutesAlias.Home).href; + }) + }).catch(() => { + isRelogin.show = false; + }); + } + return Promise.reject(new Error('无效的会话,或者会话已过期,请重新登录。')) + } else if (code === '500') { + ElMessage({ message: msg, type: 'error' }) + return Promise.reject(new Error(msg)) + } else if (code === '601') { + ElMessage({ message: msg, type: 'warning' }) + return Promise.reject(new Error(msg)) + } else if (code !== '200') { + ElNotification.error({ title: msg }) + return Promise.reject('error') + } else { + return Promise.resolve(res) + } +}, + error => { + let { message } = error; + if (message == "Network Error") { + message = "后端接口连接异常"; + } else if (message.includes("timeout")) { + message = "系统接口请求超时"; + } else if (message.includes("Request failed with status code")) { + message = "系统接口" + message.substr(message.length - 3) + "异常"; + } + ElMessage({ message: message, type: 'error', duration: 5 * 1000 }) + return Promise.reject(error) + } +) + +// 通用下载方法 +export async function download(url: string, params: any, filename: string, config?: any) { + downloadLoadingInstance = ElLoading.service({ text: "正在下载数据,请稍候", background: "rgba(0, 0, 0, 0.7)", }) + try { + const res = await service.post(url, params, { + transformRequest: [(params_1) => { return tansParams(params_1) }], + headers: { 'Content-Type': 'application/x-www-form-urlencoded' }, + responseType: 'blob', + ...config + }) + const data: Blob = res.data + const isLogin = await blobValidate(data) + if (isLogin) { + const blob = new Blob([data]) + saveAs(blob, filename) + } else { + const resText = await data.text() + const rspObj: GeekResponse = JSON.parse(resText) + const errMsg = errorCode[rspObj.code] || rspObj.msg || errorCode['default'] + ElMessage.error(errMsg) + } + downloadLoadingInstance.close() + } catch (r) { + console.error(r) + ElMessage.error('下载文件出现错误,请联系管理员!') + downloadLoadingInstance.close() + } +} +const request = (config: GeekRequestConfig) => service>>(config).then(res => res.data) +export function postAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'POST', headers: { isToken }, }) +} +export function getAction(url: string, params?: any, isToken: boolean = true) { + return request({ params, url, method: 'GET', headers: { isToken }, }) +} +export function putAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'PUT', headers: { isToken }, }) +} +export function deleteAction(url: string, data?: any, isToken: boolean = true) { + return request({ data, url, method: 'DELETE', headers: { isToken }, }) +} + +export default request diff --git a/src/utils/ruoyi.js b/src/utils/ruoyi.js new file mode 100644 index 0000000..0f8c5f2 --- /dev/null +++ b/src/utils/ruoyi.js @@ -0,0 +1,253 @@ + + +/** + * 通用js方法封装处理 + * Copyright (c) 2019 ruoyi + */ + +// 日期格式化 +export function parseTime(time, pattern) { + if (arguments.length === 0 || !time) { + return null + } + const format = pattern || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + if ((typeof time === 'string') && (/^[0-9]+$/.test(time))) { + time = parseInt(time) + } else if (typeof time === 'string') { + time = time.replace(new RegExp(/-/gm), '/').replace('T', ' ').replace(new RegExp(/\.[\d]{3}/gm), ''); + } + if ((typeof time === 'number') && (time.toString().length === 10)) { + time = time * 1000 + } + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { + let value = formatObj[key] + // Note: getDay() returns 0 on Sunday + if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value] } + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) + return time_str +} + +// 表单重置 +export function resetForm(refName) { + if (this.$refs[refName]) { + this.$refs[refName].resetFields(); + } +} + +// 添加日期范围 +export function addDateRange(params, dateRange, propName) { + let search = params; + search.params = typeof (search.params) === 'object' && search.params !== null && !Array.isArray(search.params) ? search.params : {}; + dateRange = Array.isArray(dateRange) ? dateRange : []; + if (typeof (propName) === 'undefined') { + search.params['beginTime'] = dateRange[0]; + search.params['endTime'] = dateRange[1]; + } else { + search.params['begin' + propName] = dateRange[0]; + search.params['end' + propName] = dateRange[1]; + } + return search; +} + +// 回显数据字典 +export function selectDictLabel(datas, value) { + if (value === undefined) { + return ""; + } + var actions = []; + Object.keys(datas).some((key) => { + if (datas[key].value == ('' + value)) { + actions.push(datas[key].label); + return true; + } + }) + if (actions.length === 0) { + actions.push(value); + } + return actions.join(''); +} + +// 回显数据字典(字符串数组) +export function selectDictLabels(datas, value, separator) { + if (value === undefined || value.length === 0) { + return ""; + } + if (Array.isArray(value)) { + value = value.join(","); + } + var actions = []; + var currentSeparator = undefined === separator ? "," : separator; + var temp = value.split(currentSeparator); + Object.keys(value.split(currentSeparator)).some((val) => { + var match = false; + Object.keys(datas).some((key) => { + if (datas[key].value == ('' + temp[val])) { + actions.push(datas[key].label + currentSeparator); + match = true; + } + }) + if (!match) { + actions.push(temp[val] + currentSeparator); + } + }) + return actions.join('').substring(0, actions.join('').length - 1); +} + +// 字符串格式化(%s ) +export function sprintf(str, ...args) { + var flag = true, i = 0; + str = str.replace(/%s/g, function () { + var arg = args[i++]; + if (typeof arg === 'undefined') { + flag = false; + return ''; + } + return arg; + }); + return flag ? str : ''; +} + +// 转换字符串,undefined,null等转化为"" +export function parseStrEmpty(str) { + if (!str || str == "undefined" || str == "null") { + return ""; + } + return str; +} + +// 数据合并 +export function mergeRecursive(source, target) { + for (var p in target) { + try { + if (target[p].constructor == Object) { + source[p] = mergeRecursive(source[p], target[p]); + } else { + source[p] = target[p]; + } + } catch (e) { + source[p] = target[p]; + } + } + return source; +}; + +/** + * 构造树型结构数据 + * @param {*} data 数据源 + * @param {string} [id='id'] id字段,可选,默认 'id' + * @param {string} [parentId='parentId'] 父节点字段,可选,默认 'parentId' + * @param {string} [children='children'] 孩子节点字段,可选,默认 'children' + * @return {Array}>} 树型结构数据 + */ +export function handleTree(data, id, parentId, children) { + let config = { + id: id || 'id', + parentId: parentId || 'parentId', + childrenList: children || 'children' + }; + + var childrenListMap = {}; + var nodeIds = {}; + var tree = []; + + for (let d of data) { + let parentId = d[config.parentId]; + if (childrenListMap[parentId] == null) { + childrenListMap[parentId] = []; + } + nodeIds[d[config.id]] = d; + childrenListMap[parentId].push(d); + } + + for (let d of data) { + let parentId = d[config.parentId]; + if (nodeIds[parentId] == null) { + tree.push(d); + } + } + + for (let t of tree) { + adaptToChildrenList(t); + } + + function adaptToChildrenList(o) { + if (childrenListMap[o[config.id]] !== null) { + o[config.childrenList] = childrenListMap[o[config.id]]; + } + if (o[config.childrenList]) { + for (let c of o[config.childrenList]) { + adaptToChildrenList(c); + } + } + } + return tree; +} + +/** +* 参数处理 +* @param {*} params 参数 +*/ +export function tansParams(params) { + let result = '' + for (const propName of Object.keys(params)) { + const value = params[propName]; + var part = encodeURIComponent(propName) + "="; + if (value !== null && value !== "" && typeof (value) !== "undefined") { + if (typeof value === 'object') { + for (const key of Object.keys(value)) { + if (value[key] !== null && value[key] !== "" && typeof (value[key]) !== 'undefined') { + let params = propName + '[' + key + ']'; + var subPart = encodeURIComponent(params) + "="; + result += subPart + encodeURIComponent(value[key]) + "&"; + } + } + } else { + result += part + encodeURIComponent(value) + "&"; + } + } + } + return result +} + + +// 返回项目路径 +export function getNormalPath(p) { + if (p.length === 0 || !p || p == 'undefined') { + return p + }; + let res = p.replace('//', '/') + if (res[res.length - 1] === '/') { + return res.slice(0, res.length - 1) + } + return res; +} + +// 验证是否为blob格式 +export async function blobValidate(data) { + try { + const text = await data.text(); + JSON.parse(text); + return false; + } catch (error) { + return true; + } +} \ No newline at end of file diff --git a/src/utils/scroll-to.ts b/src/utils/scroll-to.ts new file mode 100644 index 0000000..a4c61b1 --- /dev/null +++ b/src/utils/scroll-to.ts @@ -0,0 +1,62 @@ +const easeInOutQuad = function (t: number, b: number, c: number, d: number) { + t /= d / 2 + if (t < 1) { + return c / 2 * t * t + b + } + t-- + return -c / 2 * (t * (t - 2) - 1) + b +} + +// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts +const requestAnimFrame = (function () { + return window.requestAnimationFrame + || (window as any).webkitRequestAnimationFrame + || (window as any).mozRequestAnimationFrame + || function (callback) { window.setTimeout(callback, 1000 / 60) } +})() + +/** + * Because it's so fucking difficult to detect the scrolling element, just move them all + * @param {number} amount + */ +function move(amount: number) { + document.documentElement.scrollTop = amount; + (document.body.parentNode as HTMLElement).scrollTop = amount; + document.body.scrollTop = amount; +} + +function position() { + return document.documentElement.scrollTop + || (document.body.parentNode as HTMLElement).scrollTop + || document.body.scrollTop +} + +/** + * @param {number} to + * @param {number} duration + */ +export function scrollTo(to: number, duration: number) { + + return new Promise((resolve) => { + const start = position() + const change = to - start + const increment = 20 + let currentTime = 0 + duration = (typeof (duration) === 'undefined') ? 500 : duration + const animateScroll = function () { + // increment the time + currentTime += increment + // find the value with the quadratic in-out easing function + const val = easeInOutQuad(currentTime, start, change, duration) + // move the document.body + move(val) + // do the animation unless its over + if (currentTime < duration) { + requestAnimFrame(animateScroll) + } else { + resolve() + } + } + animateScroll() + }) +} diff --git a/src/utils/theme.ts b/src/utils/theme.ts new file mode 100644 index 0000000..fe2d642 --- /dev/null +++ b/src/utils/theme.ts @@ -0,0 +1,49 @@ +// 处理主题样式 +export function handleThemeStyle(theme:string) { + document.documentElement.style.setProperty('--el-color-primary', theme) + for (let i = 1; i <= 9; i++) { + document.documentElement.style.setProperty(`--el-color-primary-light-${i}`, `${getLightColor(theme, i / 10)}`) + } + for (let i = 1; i <= 9; i++) { + document.documentElement.style.setProperty(`--el-color-primary-dark-${i}`, `${getDarkColor(theme, i / 10)}`) + } +} + +// hex颜色转rgb颜色 +export function hexToRgb(str:string) { + str = str.replace('#', '') + let hexs:any = str.match(/../g) + for (let i = 0; i < 3; i++) { + hexs[i] = parseInt(hexs[i], 16) + } + return hexs +} + +// rgb颜色转Hex颜色 +export function rgbToHex(r:number|string, g:number|string, b:number|string) { + let hexs = [r.toString(16), g.toString(16), b.toString(16)] + for (let i = 0; i < 3; i++) { + if (hexs[i].length == 1) { + hexs[i] = `0${hexs[i]}` + } + } + return `#${hexs.join('')}` +} + +// 变浅颜色值 +export function getLightColor(color:any, level:number) { + let rgb = hexToRgb(color) + for (let i = 0; i < 3; i++) { + rgb[i] = Math.floor((255 - rgb[i]) * level + rgb[i]) + } + return rgbToHex(rgb[0], rgb[1], rgb[2]) +} + +// 变深颜色值 +export function getDarkColor(color:any, level:number) { + let rgb = hexToRgb(color) + for (let i = 0; i < 3; i++) { + rgb[i] = Math.floor(rgb[i] * (1 - level)) + } + return rgbToHex(rgb[0], rgb[1], rgb[2]) +} diff --git a/src/utils/validate.ts b/src/utils/validate.ts new file mode 100644 index 0000000..1aceaa4 --- /dev/null +++ b/src/utils/validate.ts @@ -0,0 +1,106 @@ +/** + * 路径匹配器 + * @param {string} pattern + * @param {string} path + * @returns {Boolean} + */ +export function isPathMatch(pattern:string, path:string) { + const regexPattern = pattern.replace(/\//g, '\\/').replace(/\*\*/g, '.*').replace(/\*/g, '[^\\/]*') + const regex = new RegExp(`^${regexPattern}$`) + return regex.test(path) +} + + +/** + * 判断url是否是http或https + * @param {string} url + * @returns {Boolean} + */ +export function isHttp(url: string) { + return url.indexOf('http://') !== -1 || url.indexOf('https://') !== -1 +} + +/** + * 判断path是否为外链 + * @param {string} path + * @returns {Boolean} + */ +export function isExternal(path: string) { + return /^(https?:|mailto:|tel:)/.test(path) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUsername(str: string) { + const valid_map = ['admin', 'editor'] + return valid_map.indexOf(str.trim()) >= 0 +} + +/** + * @param {string} url + * @returns {Boolean} + */ +export function validURL(url: string) { + const reg = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/ + return reg.test(url) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validLowerCase(str: string) { + const reg = /^[a-z]+$/ + return reg.test(str) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validUpperCase(str: string) { + const reg = /^[A-Z]+$/ + return reg.test(str) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function validAlphabets(str: string) { + const reg = /^[A-Za-z]+$/ + return reg.test(str) +} + +/** + * @param {string} email + * @returns {Boolean} + */ +export function validEmail(email: string) { + const reg = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/ + return reg.test(email) +} + +/** + * @param {string} str + * @returns {Boolean} + */ +export function isString(str: string | String) { + if (typeof str === 'string' || str instanceof String) { + return true + } + return false +} + +/** + * @param {Array} arg + * @returns {Boolean} + */ +export function isArray(arg: string) { + if (typeof Array.isArray === 'undefined') { + return Object.prototype.toString.call(arg) === '[object Array]' + } + return Array.isArray(arg) +} diff --git a/src/views/auth/index.vue b/src/views/auth/index.vue new file mode 100644 index 0000000..f1b2e17 --- /dev/null +++ b/src/views/auth/index.vue @@ -0,0 +1,372 @@ + + + diff --git a/src/views/auth/login.vue b/src/views/auth/login.vue new file mode 100644 index 0000000..5934fcc --- /dev/null +++ b/src/views/auth/login.vue @@ -0,0 +1,245 @@ + + + + diff --git a/src/views/auth/oauth.vue b/src/views/auth/oauth.vue new file mode 100644 index 0000000..0d2d7f6 --- /dev/null +++ b/src/views/auth/oauth.vue @@ -0,0 +1,171 @@ + + + \ No newline at end of file diff --git a/src/views/auth/register.vue b/src/views/auth/register.vue new file mode 100644 index 0000000..89c74b2 --- /dev/null +++ b/src/views/auth/register.vue @@ -0,0 +1,248 @@ + + + + diff --git a/src/views/error/401.vue b/src/views/error/401.vue new file mode 100644 index 0000000..1ba3792 --- /dev/null +++ b/src/views/error/401.vue @@ -0,0 +1,82 @@ + + + + + diff --git a/src/views/error/404.vue b/src/views/error/404.vue new file mode 100644 index 0000000..f205303 --- /dev/null +++ b/src/views/error/404.vue @@ -0,0 +1,227 @@ + + + + + diff --git a/src/views/flowable/definition/index.vue b/src/views/flowable/definition/index.vue new file mode 100644 index 0000000..d07325d --- /dev/null +++ b/src/views/flowable/definition/index.vue @@ -0,0 +1,465 @@ + + + \ No newline at end of file diff --git a/src/views/flowable/definition/model.vue b/src/views/flowable/definition/model.vue new file mode 100644 index 0000000..f1d754f --- /dev/null +++ b/src/views/flowable/definition/model.vue @@ -0,0 +1,150 @@ + + + diff --git a/src/views/flowable/expression/index.vue b/src/views/flowable/expression/index.vue new file mode 100644 index 0000000..3ce98b5 --- /dev/null +++ b/src/views/flowable/expression/index.vue @@ -0,0 +1,254 @@ + + + diff --git a/src/views/flowable/listener/index.vue b/src/views/flowable/listener/index.vue new file mode 100644 index 0000000..abcf114 --- /dev/null +++ b/src/views/flowable/listener/index.vue @@ -0,0 +1,292 @@ + + + diff --git a/src/views/flowable/task/finished/detail/index.vue b/src/views/flowable/task/finished/detail/index.vue new file mode 100644 index 0000000..1ee4a37 --- /dev/null +++ b/src/views/flowable/task/finished/detail/index.vue @@ -0,0 +1,200 @@ + + + + diff --git a/src/views/flowable/task/finished/index.vue b/src/views/flowable/task/finished/index.vue new file mode 100644 index 0000000..6c0de6f --- /dev/null +++ b/src/views/flowable/task/finished/index.vue @@ -0,0 +1,195 @@ + + + diff --git a/src/views/flowable/task/myProcess/detail/index.vue b/src/views/flowable/task/myProcess/detail/index.vue new file mode 100644 index 0000000..a114477 --- /dev/null +++ b/src/views/flowable/task/myProcess/detail/index.vue @@ -0,0 +1,196 @@ + + + + diff --git a/src/views/flowable/task/myProcess/index.vue b/src/views/flowable/task/myProcess/index.vue new file mode 100644 index 0000000..00ca4bb --- /dev/null +++ b/src/views/flowable/task/myProcess/index.vue @@ -0,0 +1,293 @@ + + + diff --git a/src/views/flowable/task/myProcess/send/index.vue b/src/views/flowable/task/myProcess/send/index.vue new file mode 100644 index 0000000..85fbe39 --- /dev/null +++ b/src/views/flowable/task/myProcess/send/index.vue @@ -0,0 +1,251 @@ + + + + diff --git a/src/views/flowable/task/todo/detail/index.vue b/src/views/flowable/task/todo/detail/index.vue new file mode 100644 index 0000000..e399a4f --- /dev/null +++ b/src/views/flowable/task/todo/detail/index.vue @@ -0,0 +1,450 @@ + + + + diff --git a/src/views/flowable/task/todo/index.vue b/src/views/flowable/task/todo/index.vue new file mode 100644 index 0000000..60d948d --- /dev/null +++ b/src/views/flowable/task/todo/index.vue @@ -0,0 +1,181 @@ + + + diff --git a/src/views/form/data/index.vue b/src/views/form/data/index.vue new file mode 100644 index 0000000..844b3fe --- /dev/null +++ b/src/views/form/data/index.vue @@ -0,0 +1,239 @@ + + + diff --git a/src/views/form/template/index.vue b/src/views/form/template/index.vue new file mode 100644 index 0000000..9a53cf5 --- /dev/null +++ b/src/views/form/template/index.vue @@ -0,0 +1,285 @@ + + + diff --git a/src/views/index.vue b/src/views/index.vue new file mode 100644 index 0000000..a0c00e3 --- /dev/null +++ b/src/views/index.vue @@ -0,0 +1,659 @@ + + + + + diff --git a/src/views/modelMessage/messageSystem/components/addMessage.vue b/src/views/modelMessage/messageSystem/components/addMessage.vue new file mode 100644 index 0000000..b5cce8d --- /dev/null +++ b/src/views/modelMessage/messageSystem/components/addMessage.vue @@ -0,0 +1,267 @@ + + + \ No newline at end of file diff --git a/src/views/modelMessage/messageSystem/components/recipientSelector.vue b/src/views/modelMessage/messageSystem/components/recipientSelector.vue new file mode 100644 index 0000000..bae4976 --- /dev/null +++ b/src/views/modelMessage/messageSystem/components/recipientSelector.vue @@ -0,0 +1,257 @@ + + + diff --git a/src/views/modelMessage/messageSystem/index.vue b/src/views/modelMessage/messageSystem/index.vue new file mode 100644 index 0000000..5b556f0 --- /dev/null +++ b/src/views/modelMessage/messageSystem/index.vue @@ -0,0 +1,182 @@ + + + \ No newline at end of file diff --git a/src/views/modelMessage/template/components/TemplateFormDialog.vue b/src/views/modelMessage/template/components/TemplateFormDialog.vue new file mode 100644 index 0000000..2d0d655 --- /dev/null +++ b/src/views/modelMessage/template/components/TemplateFormDialog.vue @@ -0,0 +1,183 @@ + + + diff --git a/src/views/modelMessage/template/index.vue b/src/views/modelMessage/template/index.vue new file mode 100644 index 0000000..3e38133 --- /dev/null +++ b/src/views/modelMessage/template/index.vue @@ -0,0 +1,226 @@ + + + \ No newline at end of file diff --git a/src/views/modelMessage/variable/components/VariableFormDialog.vue b/src/views/modelMessage/variable/components/VariableFormDialog.vue new file mode 100644 index 0000000..7aed860 --- /dev/null +++ b/src/views/modelMessage/variable/components/VariableFormDialog.vue @@ -0,0 +1,132 @@ + + + diff --git a/src/views/modelMessage/variable/index.vue b/src/views/modelMessage/variable/index.vue new file mode 100644 index 0000000..c47c902 --- /dev/null +++ b/src/views/modelMessage/variable/index.vue @@ -0,0 +1,241 @@ + + + \ No newline at end of file diff --git a/src/views/monitor/cache/index.vue b/src/views/monitor/cache/index.vue new file mode 100644 index 0000000..aadbcf4 --- /dev/null +++ b/src/views/monitor/cache/index.vue @@ -0,0 +1,131 @@ + + + diff --git a/src/views/monitor/cache/list.vue b/src/views/monitor/cache/list.vue new file mode 100644 index 0000000..3c09db5 --- /dev/null +++ b/src/views/monitor/cache/list.vue @@ -0,0 +1,168 @@ + + + diff --git a/src/views/monitor/druid/index.vue b/src/views/monitor/druid/index.vue new file mode 100644 index 0000000..13736ec --- /dev/null +++ b/src/views/monitor/druid/index.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/views/monitor/job/index.vue b/src/views/monitor/job/index.vue new file mode 100644 index 0000000..f4b9c21 --- /dev/null +++ b/src/views/monitor/job/index.vue @@ -0,0 +1,434 @@ + + + diff --git a/src/views/monitor/job/log.vue b/src/views/monitor/job/log.vue new file mode 100644 index 0000000..0dd2c07 --- /dev/null +++ b/src/views/monitor/job/log.vue @@ -0,0 +1,225 @@ + + + diff --git a/src/views/monitor/logininfor/index.vue b/src/views/monitor/logininfor/index.vue new file mode 100644 index 0000000..c97a91f --- /dev/null +++ b/src/views/monitor/logininfor/index.vue @@ -0,0 +1,179 @@ + + + diff --git a/src/views/monitor/online/index.vue b/src/views/monitor/online/index.vue new file mode 100644 index 0000000..67f7014 --- /dev/null +++ b/src/views/monitor/online/index.vue @@ -0,0 +1,98 @@ + + + diff --git a/src/views/monitor/operlog/index.vue b/src/views/monitor/operlog/index.vue new file mode 100644 index 0000000..63d91f9 --- /dev/null +++ b/src/views/monitor/operlog/index.vue @@ -0,0 +1,234 @@ + + + diff --git a/src/views/monitor/server/index.vue b/src/views/monitor/server/index.vue new file mode 100644 index 0000000..172443c --- /dev/null +++ b/src/views/monitor/server/index.vue @@ -0,0 +1,187 @@ + + + diff --git a/src/views/ngtools/FlowCal/index.vue b/src/views/ngtools/FlowCal/index.vue new file mode 100644 index 0000000..5ff2283 --- /dev/null +++ b/src/views/ngtools/FlowCal/index.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/src/views/ngtools/components/index.vue b/src/views/ngtools/components/index.vue new file mode 100644 index 0000000..05768ab --- /dev/null +++ b/src/views/ngtools/components/index.vue @@ -0,0 +1,444 @@ + + + diff --git a/src/views/ngtools/meterpar/index.vue b/src/views/ngtools/meterpar/index.vue new file mode 100644 index 0000000..f21d90f --- /dev/null +++ b/src/views/ngtools/meterpar/index.vue @@ -0,0 +1,815 @@ + + + diff --git a/src/views/ngtools/meterresult/index.vue b/src/views/ngtools/meterresult/index.vue new file mode 100644 index 0000000..a72f245 --- /dev/null +++ b/src/views/ngtools/meterresult/index.vue @@ -0,0 +1,399 @@ + + + diff --git a/src/views/ngtools/ngpar/index.vue b/src/views/ngtools/ngpar/index.vue new file mode 100644 index 0000000..0393727 --- /dev/null +++ b/src/views/ngtools/ngpar/index.vue @@ -0,0 +1,693 @@ + + + diff --git a/src/views/online/db/index.vue b/src/views/online/db/index.vue new file mode 100644 index 0000000..3b16442 --- /dev/null +++ b/src/views/online/db/index.vue @@ -0,0 +1,53 @@ + + + \ No newline at end of file diff --git a/src/views/online/mb/index.vue b/src/views/online/mb/index.vue new file mode 100644 index 0000000..9b91b07 --- /dev/null +++ b/src/views/online/mb/index.vue @@ -0,0 +1,400 @@ + + + \ No newline at end of file diff --git a/src/views/online/mb/mybatis-input.vue b/src/views/online/mb/mybatis-input.vue new file mode 100644 index 0000000..f6e2c4a --- /dev/null +++ b/src/views/online/mb/mybatis-input.vue @@ -0,0 +1,238 @@ + + + \ No newline at end of file diff --git a/src/views/online/mb/online-preview.vue b/src/views/online/mb/online-preview.vue new file mode 100644 index 0000000..c7364fa --- /dev/null +++ b/src/views/online/mb/online-preview.vue @@ -0,0 +1,165 @@ + + + + \ No newline at end of file diff --git a/src/views/pay/invoice/index.vue b/src/views/pay/invoice/index.vue new file mode 100644 index 0000000..847fe6b --- /dev/null +++ b/src/views/pay/invoice/index.vue @@ -0,0 +1,146 @@ + + \ No newline at end of file diff --git a/src/views/pay/order/index.vue b/src/views/pay/order/index.vue new file mode 100644 index 0000000..b1a1327 --- /dev/null +++ b/src/views/pay/order/index.vue @@ -0,0 +1,202 @@ + + \ No newline at end of file diff --git a/src/views/pay/paytest/index.vue b/src/views/pay/paytest/index.vue new file mode 100644 index 0000000..1690c71 --- /dev/null +++ b/src/views/pay/paytest/index.vue @@ -0,0 +1,82 @@ + + + \ No newline at end of file diff --git a/src/views/redirect/index.vue b/src/views/redirect/index.vue new file mode 100644 index 0000000..a469960 --- /dev/null +++ b/src/views/redirect/index.vue @@ -0,0 +1,14 @@ + + + \ No newline at end of file diff --git a/src/views/system/config/index.vue b/src/views/system/config/index.vue new file mode 100644 index 0000000..cd66df2 --- /dev/null +++ b/src/views/system/config/index.vue @@ -0,0 +1,253 @@ + + + diff --git a/src/views/system/convert/index.vue b/src/views/system/convert/index.vue new file mode 100644 index 0000000..3af9985 --- /dev/null +++ b/src/views/system/convert/index.vue @@ -0,0 +1,352 @@ + + + diff --git a/src/views/system/dept/index.vue b/src/views/system/dept/index.vue new file mode 100644 index 0000000..dc3050e --- /dev/null +++ b/src/views/system/dept/index.vue @@ -0,0 +1,248 @@ + + + diff --git a/src/views/system/dict/data.vue b/src/views/system/dict/data.vue new file mode 100644 index 0000000..2ec62c0 --- /dev/null +++ b/src/views/system/dict/data.vue @@ -0,0 +1,306 @@ + + + diff --git a/src/views/system/dict/index.vue b/src/views/system/dict/index.vue new file mode 100644 index 0000000..8d6d45e --- /dev/null +++ b/src/views/system/dict/index.vue @@ -0,0 +1,258 @@ + + + diff --git a/src/views/system/file/index.vue b/src/views/system/file/index.vue new file mode 100644 index 0000000..f0caafe --- /dev/null +++ b/src/views/system/file/index.vue @@ -0,0 +1,258 @@ + + + \ No newline at end of file diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue new file mode 100644 index 0000000..767a587 --- /dev/null +++ b/src/views/system/menu/index.vue @@ -0,0 +1,440 @@ + + + diff --git a/src/views/system/notice/index.vue b/src/views/system/notice/index.vue new file mode 100644 index 0000000..560a73b --- /dev/null +++ b/src/views/system/notice/index.vue @@ -0,0 +1,248 @@ + + + diff --git a/src/views/system/oauth/index.vue b/src/views/system/oauth/index.vue new file mode 100644 index 0000000..5ce82ab --- /dev/null +++ b/src/views/system/oauth/index.vue @@ -0,0 +1,133 @@ + + \ No newline at end of file diff --git a/src/views/system/post/index.vue b/src/views/system/post/index.vue new file mode 100644 index 0000000..11013d6 --- /dev/null +++ b/src/views/system/post/index.vue @@ -0,0 +1,238 @@ + + + diff --git a/src/views/system/role/authUser.vue b/src/views/system/role/authUser.vue new file mode 100644 index 0000000..66b5f5e --- /dev/null +++ b/src/views/system/role/authUser.vue @@ -0,0 +1,172 @@ + + + + diff --git a/src/views/system/role/index.vue b/src/views/system/role/index.vue new file mode 100644 index 0000000..cba4481 --- /dev/null +++ b/src/views/system/role/index.vue @@ -0,0 +1,489 @@ + + + diff --git a/src/views/system/role/selectUser.vue b/src/views/system/role/selectUser.vue new file mode 100644 index 0000000..9be1ec9 --- /dev/null +++ b/src/views/system/role/selectUser.vue @@ -0,0 +1,140 @@ + + + diff --git a/src/views/system/user/authRole.vue b/src/views/system/user/authRole.vue new file mode 100644 index 0000000..fc42bc6 --- /dev/null +++ b/src/views/system/user/authRole.vue @@ -0,0 +1,120 @@ + + + diff --git a/src/views/system/user/index.vue b/src/views/system/user/index.vue new file mode 100644 index 0000000..4ae28ce --- /dev/null +++ b/src/views/system/user/index.vue @@ -0,0 +1,534 @@ + + + diff --git a/src/views/system/user/profile/index.vue b/src/views/system/user/profile/index.vue new file mode 100644 index 0000000..f60557c --- /dev/null +++ b/src/views/system/user/profile/index.vue @@ -0,0 +1,105 @@ + + + diff --git a/src/views/system/user/profile/resetEmail.vue b/src/views/system/user/profile/resetEmail.vue new file mode 100644 index 0000000..838ac84 --- /dev/null +++ b/src/views/system/user/profile/resetEmail.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/views/system/user/profile/resetPhone.vue b/src/views/system/user/profile/resetPhone.vue new file mode 100644 index 0000000..1b5819c --- /dev/null +++ b/src/views/system/user/profile/resetPhone.vue @@ -0,0 +1,50 @@ + + + \ No newline at end of file diff --git a/src/views/system/user/profile/resetPwd.vue b/src/views/system/user/profile/resetPwd.vue new file mode 100644 index 0000000..a8a7677 --- /dev/null +++ b/src/views/system/user/profile/resetPwd.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/views/system/user/profile/userAvatar.vue b/src/views/system/user/profile/userAvatar.vue new file mode 100644 index 0000000..f60b45b --- /dev/null +++ b/src/views/system/user/profile/userAvatar.vue @@ -0,0 +1,159 @@ + + + + + \ No newline at end of file diff --git a/src/views/system/user/profile/userInfo.vue b/src/views/system/user/profile/userInfo.vue new file mode 100644 index 0000000..23a5722 --- /dev/null +++ b/src/views/system/user/profile/userInfo.vue @@ -0,0 +1,62 @@ + + + diff --git a/src/views/three/ModelPanel.vue b/src/views/three/ModelPanel.vue new file mode 100644 index 0000000..d7893a9 --- /dev/null +++ b/src/views/three/ModelPanel.vue @@ -0,0 +1,95 @@ + + + \ No newline at end of file diff --git a/src/views/three/OperatePanel.vue b/src/views/three/OperatePanel.vue new file mode 100644 index 0000000..2330a68 --- /dev/null +++ b/src/views/three/OperatePanel.vue @@ -0,0 +1,67 @@ + + \ No newline at end of file diff --git a/src/views/three/Panel.vue b/src/views/three/Panel.vue new file mode 100644 index 0000000..078bc7d --- /dev/null +++ b/src/views/three/Panel.vue @@ -0,0 +1,103 @@ + + + \ No newline at end of file diff --git a/src/views/three/SelectedPanel.vue b/src/views/three/SelectedPanel.vue new file mode 100644 index 0000000..56ddd9d --- /dev/null +++ b/src/views/three/SelectedPanel.vue @@ -0,0 +1,102 @@ + + \ No newline at end of file diff --git a/src/views/three/ThreePanel.vue b/src/views/three/ThreePanel.vue new file mode 100644 index 0000000..33adb74 --- /dev/null +++ b/src/views/three/ThreePanel.vue @@ -0,0 +1,79 @@ + + + + \ No newline at end of file diff --git a/src/views/three/director.ts b/src/views/three/director.ts new file mode 100644 index 0000000..611e9f1 --- /dev/null +++ b/src/views/three/director.ts @@ -0,0 +1,92 @@ +import { ref, shallowReactive, watch } from "vue"; +import { Director, TreeNode } from "./three-plus/ThreeHelper"; +import * as THREE from 'three' +import { explodeModel, initExplodeModel } from "./three-plus/ExplodeControls"; +const director = new Director({ + width: window.innerWidth, + height: window.innerHeight, +}) +function initFastKey() { + document.addEventListener('keydown', (e) => { + console.log(e.altKey); + if (e.key === 'Escape') { + e.preventDefault(); + unselectObject() + } + if (e.key === 'Backspace') { + e.preventDefault(); + if (transform.object) { + let o = director.getObjectBySingleUUID(transform.object.uuid) + if (o) { + if (o.parent) { + o.parent.remove(o) + } else { + director.scene.remove(o) + } + refreshThree() + } + } + } + }) +} +export function initDirector(dom: HTMLElement) { + dom.appendChild(director.renderer.domElement) + initFastKey() + director.scene.background = new THREE.TextureLoader().load("/glb/bg.jpeg") + director.switchAxesHelper(true) + director.switchGridHelper(true) + director.switchStats(true) + director.startRender() +} + +export default director + + +const transform = shallowReactive<{ + mode: "translate" | "rotate" | "scale", + object: THREE.Object3D | null, + explode: number +}>({ + object: null, + mode: 'translate', + explode: 0, +}) + +export function selectObject(object: THREE.Object3D) { + transform.object = object + director.controls.selectControls.outlinePass.selectedObjects = [transform.object] + director.controls.dragControls.objects = [transform.object] + initExplodeModel(transform.object) +} +export function selectNode(object: THREE.Object3D) { + transform.object = object + director.controls.selectControls.outlinePass.selectedObjects = [transform.object] + director.controls.transformControls.attach(transform.object) + director.controls.selectControls.enabled = false + director.controls.dragControls.enabled = false + director.scene.add(director.controls.transformControls.getHelper()) + initExplodeModel(transform.object) +} +export function unselectObject() { + transform.object = null + director.controls.selectControls.outlinePass.selectedObjects = [] + director.controls.transformControls.detach() + director.controls.selectControls.enabled = true + director.controls.dragControls.enabled = true + director.scene.remove(director.controls.transformControls.getHelper()) +} +watch(() => transform.mode, () => { + if (!director) return + director.controls.transformControls.setMode(transform.mode) +}) +watch(() => transform.explode, value => { + if (!director || !transform.object) return + explodeModel(transform.object, value) +}) +export { transform } + +export const modelthree = ref(new Array()) +export function refreshThree() { + if (!director) return + modelthree.value = director.generateTreeData() +} \ No newline at end of file diff --git a/src/views/three/gltfmode.vue b/src/views/three/gltfmode.vue new file mode 100644 index 0000000..a89bb65 --- /dev/null +++ b/src/views/three/gltfmode.vue @@ -0,0 +1,68 @@ + + + + \ No newline at end of file diff --git a/src/views/three/three-plus/CapsControls.ts b/src/views/three/three-plus/CapsControls.ts new file mode 100644 index 0000000..71d0513 --- /dev/null +++ b/src/views/three/three-plus/CapsControls.ts @@ -0,0 +1,623 @@ +import * as THREE from 'three' +import { loadModel, MeshBasicMaterialToShaderMaterial } from './utils'; +import { setToNormalizedDeviceCoordinates, MeshStandardMaterialToShaderMaterial } from './utils'; + +type AxisKey = "x1" | "y1" | "z1" | "x2" | "y2" | "z2"; + +class Geometry extends THREE.BufferGeometry { + public vertices: THREE.Vector3[] = []; + constructor() { + super(); + this.name = "Geometry" + } + + push(...args: THREE.Vector3[]) { + this.vertices = this.vertices.concat(args); + const points = this.vertices.flatMap(v => [v.x, v.y, v.z]); + const positionAttribute = new THREE.Float32BufferAttribute(points, 3); + this.setAttribute('position', positionAttribute); + } + + set dynamic(value: boolean) { + this.attributes.position.needsUpdate = value; + } + + get dynamic() { + return this.attributes.position.needsUpdate; + } + + set verticesNeedUpdate(value: boolean) { + const points = this.vertices.flatMap(v => [v.x, v.y, v.z]); + const positionAttribute = new THREE.Float32BufferAttribute(points, 3); + this.setAttribute('position', positionAttribute); + this.attributes.position.needsUpdate = value; + } + + get verticesNeedUpdate() { + return this.attributes.position.needsUpdate; + } + + computeLineDistances() { + const positions = this.attributes.position.array; + if (positions.length === 0) return; + + const lineDistances = [0]; + let totalDistance = 0; + + for (let i = 1; i < positions.length / 3; i++) { + const x1 = positions[(i - 1) * 3]; + const y1 = positions[(i - 1) * 3 + 1]; + const z1 = positions[(i - 1) * 3 + 2]; + + const x2 = positions[i * 3]; + const y2 = positions[i * 3 + 1]; + const z2 = positions[i * 3 + 2]; + + const dx = x2 - x1; + const dy = y2 - y1; + const dz = z2 - z1; + + const distance = Math.sqrt(dx * dx + dy * dy + dz * dz); + totalDistance += distance; + lineDistances.push(totalDistance); + } + + const lineDistancesAttribute = new THREE.Float32BufferAttribute(lineDistances, 1); + this.setAttribute('lineDistance', lineDistancesAttribute); + } +} +class PlaneGeometry extends Geometry { + constructor(v0: THREE.Vector3, v1: THREE.Vector3, v2: THREE.Vector3, v3: THREE.Vector3) { + super(); + this.name = "PlaneGeometry"; + super.push(v0, v1, v2, v3); + + const indices = [ + 0, 1, 2, + 0, 2, 3 + ]; + const indexAttribute = new THREE.Uint16BufferAttribute(indices, 1); + this.setIndex(indexAttribute); + + super.computeVertexNormals(); + } +} +class CapsMesh extends THREE.Mesh { + constructor( + geometry: PlaneGeometry, + material: THREE.ShaderMaterial, + public axis: AxisKey, + public guardian: SelectionBoxFace + ) { + super(geometry, material); + this.name = 'CapsMesh' + } +} +class SelectionBoxFace { + lines: SelectionBoxLine[] = [] + constructor(axis: AxisKey, v0: THREE.Vector3, v1: THREE.Vector3, v2: THREE.Vector3, v3: THREE.Vector3, selection: Selection) { + const frontFaceGeometry = new PlaneGeometry(v0, v1, v2, v3); + frontFaceGeometry.name = "frontFaceGeometry" + frontFaceGeometry.dynamic = true; + selection.meshGeometries.push(frontFaceGeometry); + + const frontFaceMesh = new CapsMesh(frontFaceGeometry, CAPS.MATERIAL.Invisible, axis, this); + frontFaceMesh.name = "frontFaceMesh" + frontFaceMesh.userData.isCanSelect = false; + selection.touchMeshes.add(frontFaceMesh); + selection.selectables.push(frontFaceMesh); + + const backFaceGeometry = new PlaneGeometry(v3, v2, v1, v0); + backFaceGeometry.name = "backFaceGeometry" + backFaceGeometry.userData.isCanSelect = false; + backFaceGeometry.dynamic = true; + selection.meshGeometries.push(backFaceGeometry); + + const backFaceMesh = new THREE.Mesh(backFaceGeometry, CAPS.MATERIAL.BoxBackFace); + backFaceMesh.name = "backFaceMesh" + backFaceMesh.userData.isCanSelect = false; + selection.displayMeshes.add(backFaceMesh); + } + + rayOver() { + this.highlightLines(true); + } + + rayOut() { + this.highlightLines(false); + } + + highlightLines(b: boolean) { + for (let i = 0; i < this.lines.length; i++) { + this.lines[i].setHighlight(b); + } + } +} +class SelectionBoxLine { + line: THREE.LineSegments; + constructor(v0: THREE.Vector3, v1: THREE.Vector3, f0: SelectionBoxFace, f1: SelectionBoxFace, selection: Selection) { + const lineGeometry = new Geometry(); + lineGeometry.name = "lineGeometry" + lineGeometry.push(v0, v1); + // 手动计算线段距离 + lineGeometry.computeLineDistances(); + lineGeometry.dynamic = true; + selection.lineGeometries.push(lineGeometry); + + this.line = new THREE.LineSegments(lineGeometry, CAPS.MATERIAL.BoxWireframe); + this.line.name = "LineSegments" + this.line.userData.isCanSelect = false; + selection.displayMeshes.add(this.line); + + f0.lines.push(this); + f1.lines.push(this); + } + + setHighlight(b: boolean) { + this.line.material = b ? CAPS.MATERIAL.BoxWireActive : CAPS.MATERIAL.BoxWireframe; + } +} +class Selection { + faces: SelectionBoxFace[] = []; + box: THREE.BoxGeometry = new THREE.BoxGeometry(1, 1, 1); + boxMesh: THREE.Mesh; + vertices: THREE.Vector3[]; + touchMeshes: THREE.Object3D = new THREE.Object3D(); + displayMeshes: THREE.Object3D = new THREE.Object3D(); + meshGeometries: PlaneGeometry[] = []; + lineGeometries: Geometry[] = []; + selectables: THREE.Mesh[] = []; + + constructor(public limitLow: THREE.Vector3, public limitHigh: THREE.Vector3) { + this.touchMeshes.name = "touchMeshes" + this.displayMeshes.name = "displayMeshes" + this.boxMesh = new THREE.Mesh(this.box, CAPS.MATERIAL.cap()); + this.boxMesh.name = "boxMesh"; + this.vertices = [ + new THREE.Vector3(), new THREE.Vector3(), + new THREE.Vector3(), new THREE.Vector3(), + new THREE.Vector3(), new THREE.Vector3(), + new THREE.Vector3(), new THREE.Vector3() + ]; + this.updateVertices(); + const v = this.vertices; + const f = this.faces; + this.faces.push(new SelectionBoxFace('y1', v[0], v[1], v[5], v[4], this)); + this.faces.push(new SelectionBoxFace('z1', v[0], v[2], v[3], v[1], this)); + this.faces.push(new SelectionBoxFace('x1', v[0], v[4], v[6], v[2], this)); + this.faces.push(new SelectionBoxFace('x2', v[7], v[5], v[1], v[3], this)); + this.faces.push(new SelectionBoxFace('y2', v[7], v[3], v[2], v[6], this)); + this.faces.push(new SelectionBoxFace('z2', v[7], v[6], v[4], v[5], this)); + + const l0 = new SelectionBoxLine(v[0], v[1], f[0], f[1], this); + const l1 = new SelectionBoxLine(v[0], v[2], f[1], f[2], this); + const l2 = new SelectionBoxLine(v[0], v[4], f[0], f[2], this); + const l3 = new SelectionBoxLine(v[1], v[3], f[1], f[3], this); + const l4 = new SelectionBoxLine(v[1], v[5], f[0], f[3], this); + const l5 = new SelectionBoxLine(v[2], v[3], f[1], f[4], this); + const l6 = new SelectionBoxLine(v[2], v[6], f[2], f[4], this); + const l7 = new SelectionBoxLine(v[3], v[7], f[3], f[4], this); + const l8 = new SelectionBoxLine(v[4], v[5], f[0], f[5], this); + const l9 = new SelectionBoxLine(v[4], v[6], f[2], f[5], this); + const l10 = new SelectionBoxLine(v[5], v[7], f[3], f[5], this); + const l11 = new SelectionBoxLine(v[6], v[7], f[4], f[5], this); + + this.setBox(); + this.setUniforms(); + } + + updateVertices() { + this.vertices[0].set(this.limitLow.x, this.limitLow.y, this.limitLow.z); + this.vertices[1].set(this.limitHigh.x, this.limitLow.y, this.limitLow.z); + this.vertices[2].set(this.limitLow.x, this.limitHigh.y, this.limitLow.z); + this.vertices[3].set(this.limitHigh.x, this.limitHigh.y, this.limitLow.z); + this.vertices[4].set(this.limitLow.x, this.limitLow.y, this.limitHigh.z); + this.vertices[5].set(this.limitHigh.x, this.limitLow.y, this.limitHigh.z); + this.vertices[6].set(this.limitLow.x, this.limitHigh.y, this.limitHigh.z); + this.vertices[7].set(this.limitHigh.x, this.limitHigh.y, this.limitHigh.z); + } + + updateGeometries() { + for (let i = 0; i < this.meshGeometries.length; i++) { + this.meshGeometries[i].verticesNeedUpdate = true; + this.meshGeometries[i].computeBoundingSphere(); + this.meshGeometries[i].computeBoundingBox(); + } + for (let i = 0; i < this.lineGeometries.length; i++) { + this.lineGeometries[i].verticesNeedUpdate = true; + } + } + + setBox() { + const width = new THREE.Vector3(); + width.subVectors(this.limitHigh, this.limitLow); + + this.boxMesh.scale.copy(width); + width.multiplyScalar(0.5).add(this.limitLow); + this.boxMesh.position.copy(width); + } + + setUniforms() { + const uniforms = CAPS.UNIFORMS.clipping; + uniforms.clippingLow.value.copy(this.limitLow); + uniforms.clippingHigh.value.copy(this.limitHigh); + } + + setValue(axis: AxisKey, value: number) { + const buffer = 0.4; + const limit = 14; + + if (axis === 'x1') { + this.limitLow.x = Math.max(-limit, Math.min(this.limitHigh.x - buffer, value)); + } else if (axis === 'x2') { + this.limitHigh.x = Math.max(this.limitLow.x + buffer, Math.min(limit, value)); + } else if (axis === 'y1') { + this.limitLow.y = Math.max(-limit, Math.min(this.limitHigh.y - buffer, value)); + } else if (axis === 'y2') { + this.limitHigh.y = Math.max(this.limitLow.y + buffer, Math.min(limit, value)); + } else if (axis === 'z1') { + this.limitLow.z = Math.max(-limit, Math.min(this.limitHigh.z - buffer, value)); + } else if (axis === 'z2') { + this.limitHigh.z = Math.max(this.limitLow.z + buffer, Math.min(limit, value)); + } + + this.setBox(); + this.setUniforms(); + + this.updateVertices(); + this.updateGeometries(); + } +} +class Simulation { + capsScene: THREE.Scene = new THREE.Scene(); + backStencil: THREE.Scene = new THREE.Scene(); + frontStencil: THREE.Scene = new THREE.Scene(); + selection: Selection; + capGroup: THREE.Group = new THREE.Group(); + showCaps: boolean = true + visible: boolean = true + constructor( + public scene: THREE.Scene, + public camera: THREE.PerspectiveCamera, + public renderer: THREE.WebGLRenderer, + public controls: THREE.Controls<{}>, + + ) { + this.selection = new Selection( + new THREE.Vector3(-7, -14, -14), + new THREE.Vector3(14, 9, 3) + ); + this.init(); + } + + init() { + this.camera.position.set(20, 20, 30); + this.camera.lookAt(new THREE.Vector3(0, 0, 0)); + this.capsScene.add(this.selection.boxMesh); + this.capGroup.add(this.selection.displayMeshes); + this.capGroup.add(this.selection.touchMeshes); + this.capGroup.name = "CapHelper"; + this.scene.add(this.capGroup); + this.picking(); // must come before + } + + initScene(collada: THREE.Object3D) { + const setMaterial = (node: THREE.Object3D, material: THREE.ShaderMaterial | ((...age: any[]) => THREE.ShaderMaterial)) => { + if (node instanceof THREE.Mesh || node instanceof THREE.Line) { + if (typeof material === 'function') { + node.material = material(node.material); + } else { + node.material = material; + } + } + if (node.children) node.children.forEach(n => setMaterial(n, material)) + }; + const scale = 0.3 + const back = collada.clone(); + setMaterial(back, CAPS.MATERIAL.backStencil); + back.scale.set(scale, scale, scale); + back.updateMatrix(); + this.backStencil.add(back); + + const front = collada.clone(); + setMaterial(front, CAPS.MATERIAL.frontStencil); + front.scale.set(scale, scale, scale); + front.updateMatrix(); + this.frontStencil.add(front); + + const cloneCollada = collada.clone() + setMaterial(cloneCollada, CAPS.MATERIAL.sheet); + cloneCollada.scale.set(scale, scale, scale); + cloneCollada.updateMatrix(); + this.scene.add(cloneCollada); + this.scene.remove(collada) + + return { back, front, cloneCollada, collada } + } + + picking() { + let intersected: CapsMesh | null = null; + const mouse = new THREE.Vector2(); + const ray = new THREE.Raycaster(); + + const normals = { + x1: new THREE.Vector3(-1, 0, 0), + x2: new THREE.Vector3(1, 0, 0), + y1: new THREE.Vector3(0, -1, 0), + y2: new THREE.Vector3(0, 1, 0), + z1: new THREE.Vector3(0, 0, -1), + z2: new THREE.Vector3(0, 0, 1) + }; + + const CapPlane = new THREE.Mesh(new THREE.PlaneGeometry(100, 100, 4, 4), CAPS.MATERIAL.Invisible); + CapPlane.name = "CapPlane" + CapPlane.userData.isCanSelect = false; + this.capGroup.add(CapPlane); + + const targeting = (event: MouseEvent | TouchEvent) => { + if (!this.visible) return + setToNormalizedDeviceCoordinates(mouse, event, window); + ray.setFromCamera(mouse, this.camera); + const intersects = ray.intersectObjects(this.selection.selectables); + if (intersects.length > 0) { + console.log("targeting", intersects); + const candidate = intersects[0].object as CapsMesh; + if (intersected !== candidate) { + if (intersected !== null) { + intersected.guardian.rayOut(); + } + candidate.guardian.rayOver(); + intersected = candidate; + this.renderer.domElement.style.cursor = 'pointer'; + } + } else if (intersected !== null) { + intersected.guardian.rayOut(); + intersected = null; + this.renderer.domElement.style.cursor = 'auto'; + } + }; + + const beginDrag = (event: MouseEvent | TouchEvent) => { + if (!this.visible) return + setToNormalizedDeviceCoordinates(mouse, event, window); + ray.setFromCamera(mouse, this.camera); + const intersects = ray.intersectObjects(this.selection.selectables); + if (intersects.length > 0) { + event.preventDefault(); + event.stopPropagation(); + this.controls.enabled = false; + const intersectionPoint = intersects[0].point; + const object = intersects[0].object as CapsMesh + const axis = object.axis; + if (axis === 'x1' || axis === 'x2') { + intersectionPoint.setX(0); + } else if (axis === 'y1' || axis === 'y2') { + intersectionPoint.setY(0); + } else if (axis === 'z1' || axis === 'z2') { + intersectionPoint.setZ(0); + } + CapPlane.position.copy(intersectionPoint); + const newNormal = this.camera.position.clone().sub( + this.camera.position.clone().projectOnVector(normals[axis]) + ); + CapPlane.lookAt(newNormal.add(intersectionPoint)); + this.renderer.domElement.style.cursor = 'move'; + const continueDrag = (event: MouseEvent | TouchEvent) => { + event.preventDefault(); + event.stopPropagation(); + setToNormalizedDeviceCoordinates(mouse, event, window); + ray.setFromCamera(mouse, this.camera); + const intersects = ray.intersectObject(CapPlane); + if (intersects.length > 0) { + let value: number = NaN; + if (axis === 'x1' || axis === 'x2') { + value = intersects[0].point.x; + } else if (axis === 'y1' || axis === 'y2') { + value = intersects[0].point.y; + } else if (axis === 'z1' || axis === 'z2') { + value = intersects[0].point.z; + } + this.selection.setValue(axis, value); + } + }; + const endDrag = () => { + this.controls.enabled = true; + this.renderer.domElement.style.cursor = 'pointer'; + document.removeEventListener('mousemove', continueDrag, true); + document.removeEventListener('touchmove', continueDrag, true); + document.removeEventListener('mouseup', endDrag, false); + document.removeEventListener('touchend', endDrag, false); + document.removeEventListener('touchcancel', endDrag, false); + document.removeEventListener('touchleave', endDrag, false); + }; + + document.addEventListener('mousemove', continueDrag, true); + document.addEventListener('touchmove', continueDrag, true); + document.addEventListener('mouseup', endDrag, false); + document.addEventListener('touchend', endDrag, false); + document.addEventListener('touchcancel', endDrag, false); + document.addEventListener('touchleave', endDrag, false); + } + + }; + this.renderer.domElement.addEventListener('mousemove', targeting, true); + this.renderer.domElement.addEventListener('mousedown', beginDrag, false); + this.renderer.domElement.addEventListener('touchstart', beginDrag, false); + } + update() { + this.renderer.render(this.backStencil, this.camera); + this.renderer.render(this.capsScene, this.camera); + this.renderer.render(this.frontStencil, this.camera); + } +} +import vertexClipping from './glsl/CapsControls/vertexClipping.glsl' +import vertex from './glsl/CapsControls/vertex.glsl' +import fragment from './glsl/CapsControls/fragment.glsl' +import fragmentClipping from './glsl/CapsControls/fragmentClipping.glsl' +import fragmentClippingFront from './glsl/CapsControls/fragmentClippingFront.glsl' +import invisibleVertexShader from './glsl/CapsControls/invisibleVertexShader.glsl' +import invisibleFragmentShader from './glsl/CapsControls/invisibleFragmentShader.glsl' +const CAPS = { + SHADER: { + vertex, + vertexClipping, + fragment, + fragmentClipping, + fragmentClippingFront, + invisibleVertexShader, + invisibleFragmentShader, + }, + Simulation, + UNIFORMS: { + clipping: { + color: { type: "c", value: new THREE.Color(0x3d9ecb) }, + clippingLow: { type: "v3", value: new THREE.Vector3(0, 0, 0) }, + clippingHigh: { type: "v3", value: new THREE.Vector3(0, 0, 0) } + }, + caps: { + color: { type: "c", value: new THREE.Color(0xf83610) } + } + }, + SCHEDULE: { + postpone: (callback: Function, context: any, wait: number) => { + return (...args: any[]) => { + setTimeout(() => { + callback.apply(context, args); + }, wait); + }; + }, + }, + MATERIAL: { + BoxBackFace: new THREE.MeshBasicMaterial({ color: 0xEEDDCC, transparent: true }), + BoxWireframe: new THREE.LineBasicMaterial({ color: 0x000000, linewidth: 2 }), + BoxWireActive: new THREE.LineBasicMaterial({ color: 0xf83610, linewidth: 4 }), + cap: () => { + return new THREE.ShaderMaterial({ + uniforms: CAPS.UNIFORMS.caps, + vertexShader: CAPS.SHADER.vertex, + fragmentShader: CAPS.SHADER.fragment + }) + }, + sheet: (material?: THREE.Material): THREE.ShaderMaterial => { + const shaderMaterial = new THREE.ShaderMaterial({ + // 设置默认值 + uniforms: { + ...CAPS.UNIFORMS.clipping, + color: { value: new THREE.Color(0xffffff) }, // 默认白色 + roughness: { value: 0.5 }, + metalness: { value: 0.5 }, + emissive: { value: new THREE.Color(0x000000) }, + opacity: { value: 1.0 }, + envMap: { value: null }, + envMapIntensity: { value: 1.0 }, + lightMap: { value: null }, + lightMapIntensity: { value: 1.0 }, + aoMap: { value: null }, + aoMapIntensity: { value: 1.0 }, + bumpMap: { value: null }, + bumpScale: { value: 1 }, + normalMap: { value: null }, + normalScale: { value: new THREE.Vector2(1, 1) }, + displacementMap: { value: null }, + displacementScale: { value: 1 }, + displacementBias: { value: 0 }, + specularMap: { value: null }, + alphaMap: { value: null }, + map: { value: null }, + }, + vertexShader: CAPS.SHADER.vertexClipping, + fragmentShader: CAPS.SHADER.fragmentClipping, + }); + if (material) { + if (material instanceof THREE.MeshStandardMaterial) { + MeshStandardMaterialToShaderMaterial(material, shaderMaterial) + } else if (material instanceof THREE.MeshBasicMaterial) { + MeshBasicMaterialToShaderMaterial(material, shaderMaterial) + } else { + console.warn("不支持的材质类型:", material.constructor.name) + } + } + return shaderMaterial; + }, + backStencil: {} as THREE.ShaderMaterial, + frontStencil: {} as THREE.ShaderMaterial, + Invisible: {} as THREE.ShaderMaterial + } +} + +CAPS.MATERIAL.backStencil = new THREE.ShaderMaterial({ + uniforms: CAPS.UNIFORMS.clipping, + vertexShader: CAPS.SHADER.vertexClipping, + fragmentShader: CAPS.SHADER.fragmentClippingFront, + colorWrite: false, + depthWrite: false, + side: THREE.BackSide +}) + +CAPS.MATERIAL.frontStencil = new THREE.ShaderMaterial({ + uniforms: CAPS.UNIFORMS.clipping, + vertexShader: CAPS.SHADER.vertexClipping, + fragmentShader: CAPS.SHADER.fragmentClippingFront, + colorWrite: false, + depthWrite: false, +}) +CAPS.MATERIAL.Invisible = new THREE.ShaderMaterial({ + vertexShader: CAPS.SHADER.invisibleVertexShader, + fragmentShader: CAPS.SHADER.invisibleFragmentShader +}) +export default class CapsControls extends THREE.Controls<{}> { + public simulation: Simulation + private set visible(b: boolean) { + if (b) { + this.scene.add(this.simulation.capGroup) + this.simulation.visible = true + } else { + if (this._initSceneOpt) { + this.simulation.frontStencil.remove(this._initSceneOpt.front) + this.simulation.backStencil.remove(this._initSceneOpt.back) + this.simulation.scene.remove(this._initSceneOpt.cloneCollada) + this.simulation.scene.add(this._initSceneOpt.collada) + } + this.scene.remove(this.simulation.capGroup) + this.simulation.visible = false + } + } + private get visible() { + return this.simulation.visible + } + private _initSceneOpt?: { + back: THREE.Object3D; + front: THREE.Object3D; + cloneCollada: THREE.Object3D; + collada: THREE.Object3D; + } + set objects(obj: THREE.Object3D) { + if (this._initSceneOpt) { + this.simulation.frontStencil.remove(this._initSceneOpt.front) + this.simulation.backStencil.remove(this._initSceneOpt.back) + this.simulation.scene.remove(this._initSceneOpt.cloneCollada) + this.simulation.scene.add(this._initSceneOpt.collada) + } + this.scene.remove(obj) + this._initSceneOpt = this.simulation.initScene(obj) + } + constructor( + public scene: THREE.Scene, + public camera: THREE.PerspectiveCamera, + public renderer: THREE.WebGLRenderer, + public controls: THREE.Controls<{}> + ) { + super(camera, renderer.domElement) + this.simulation = new Simulation( + this.scene, + this.camera, + this.renderer, + this.controls + ) + } + + public update(): void { + if (this.visible != this.enabled) this.visible = this.enabled + this.simulation.update() + } +} \ No newline at end of file diff --git a/src/views/three/three-plus/ExplodeControls.ts b/src/views/three/three-plus/ExplodeControls.ts new file mode 100644 index 0000000..356e144 --- /dev/null +++ b/src/views/three/three-plus/ExplodeControls.ts @@ -0,0 +1,58 @@ +import * as THREE from 'three' +import { getWorldCenterPosition } from './utils'; +export class ExplodeControls extends THREE.Controls<{}> { + constructor(object: THREE.Object3D) { + super(object, null) + } +} +// 初始化爆炸数据保存到每个mesh的userdata上 +export function initExplodeModel(modelObject: THREE.Object3D) { + if (!modelObject) return; + + // 计算模型中心 + const explodeBox = new THREE.Box3(); + explodeBox.setFromObject(modelObject); + const explodeCenter = getWorldCenterPosition(explodeBox); + + const meshBox = new THREE.Box3(); + modelObject.userData.canExplode = true; + // 遍历整个模型,保存数据到userData上,以便爆炸函数使用 + modelObject.traverse(function (value: any) { + if (value.isLine || value.isSprite) return; + if (value.isMesh) { + meshBox.setFromObject(value); + const meshCenter = getWorldCenterPosition(meshBox); + // 爆炸方向 + value.userData.canExplode = true; + value.userData.worldDir = new THREE.Vector3() + .subVectors(meshCenter, explodeCenter) + .normalize(); + // 爆炸距离 mesh中心点到爆炸中心点的距离 + value.userData.worldDistance = new THREE.Vector3().subVectors(meshCenter, explodeCenter); + // 原始坐标 + value.userData.originPosition = value.getWorldPosition(new THREE.Vector3()); + // mesh中心点 + value.userData.meshCenter = meshCenter.clone(); + value.userData.explodeCenter = explodeCenter.clone(); + } + }); +} + +// 模型爆炸函数 +export function explodeModel(model: THREE.Object3D, scalar: number) { + model.traverse(function (value) { + // @ts-ignore + if (!value.isMesh || !value.userData.originPosition) return; + const distance = value.userData.worldDir + .clone() + .multiplyScalar(value.userData.worldDistance.length() * scalar); + const offset = new THREE.Vector3().subVectors( + value.userData.meshCenter, + value.userData.originPosition + ); + const center = value.userData.explodeCenter; + const newPos = new THREE.Vector3().copy(center).add(distance).sub(offset); + const localPosition = value.parent?.worldToLocal(newPos.clone()); + localPosition && value.position.copy(localPosition); + }); +}; \ No newline at end of file diff --git a/src/views/three/three-plus/SelectControls.ts b/src/views/three/three-plus/SelectControls.ts new file mode 100644 index 0000000..2045663 --- /dev/null +++ b/src/views/three/three-plus/SelectControls.ts @@ -0,0 +1,41 @@ +import * as THREE from 'three' +import { OutlinePass } from 'three/examples/jsm/postprocessing/OutlinePass'; +export class SelectControls extends THREE.Controls<{}> { + public outlinePass: OutlinePass + onSelect?: (obj: THREE.Object3D, event: MouseEvent) => void + constructor(scene: THREE.Scene, camera: THREE.Camera, domElement?: HTMLElement | null) { + super(camera, domElement) + if (!this.domElement) throw new Error("domElement is null") + const v2 = new THREE.Vector2(this.domElement.offsetWidth, this.domElement.offsetHeight); + this.outlinePass = new OutlinePass(v2, scene, camera); + this.outlinePass.edgeStrength = 2; // 描边宽度 + this.outlinePass.edgeGlow = 0.3; // 边缘发光强度 + this.outlinePass.visibleEdgeColor.set(new THREE.Color(0, 255, 0)); // 红色描边 + this.domElement.addEventListener("click", (event: MouseEvent) => { + if (!this.enabled) return + if (!this.domElement) throw new Error("domElement is null") + const rect = this.domElement.getBoundingClientRect(); + const mouse = new THREE.Vector2( + ((event.clientX - rect.left) / rect.width) * 2 - 1, + -((event.clientY - rect.top) / rect.height) * 2 + 1 + ); + const raycaster = new THREE.Raycaster(); + raycaster.setFromCamera(mouse, camera); + const intersects = raycaster.intersectObjects(scene.children, true); + for (let intersect of intersects) { + let obj3D = intersect.object + if (obj3D.type == 'GridHelper' || obj3D.type == 'AxesHelper' || obj3D.type == 'TransformControlsPlane') { + continue + } + if (obj3D.userData.isCanSelect === false) { + continue + } + this.outlinePass.selectedObjects = [obj3D] + console.log(obj3D); + if (this.onSelect) this.onSelect(obj3D, event) + return + } + }) + } + +} \ No newline at end of file diff --git a/src/views/three/three-plus/ThreeHelper.ts b/src/views/three/three-plus/ThreeHelper.ts new file mode 100644 index 0000000..a5b9d3b --- /dev/null +++ b/src/views/three/three-plus/ThreeHelper.ts @@ -0,0 +1,223 @@ +import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls' +import { EffectComposer } from 'three/examples/jsm/postprocessing/EffectComposer.js'; +import * as THREE from 'three' +import { RenderPass } from 'three/examples/jsm/postprocessing/RenderPass'; +import Stats from 'three/examples/jsm/libs/stats.module.js' +import { SelectControls } from './SelectControls'; +import CapsControls from './CapsControls'; +import { DragControls } from 'three/examples/jsm/controls/DragControls'; +import { TransformControls } from 'three/examples/jsm/controls/TransformControls' + +interface DirectorOption { + /** canvas DOM */ + canvas?: HTMLCanvasElement | THREE.OffscreenCanvas, + /** 宽度 */ + width: number, + /** 高度 */ + height: number, + /** 渲染之后 */ + afterRender?: Function, + FPS?: number +} +export interface TreeNode { + label: string; + id: string; + children: TreeNode[]; + type: string +} + +export class Director { + /** 场景 */ + scene = new THREE.Scene() + /** 相机 */ + camera = new THREE.PerspectiveCamera() + /** 时钟 */ + clock = new THREE.Clock() + /** 渲染器 */ + renderer: THREE.WebGLRenderer + /** 轨道控制器 */ + controls: { + orbitControls: THREE.Controls<{}> + selectControls: SelectControls + capsControls: CapsControls + dragControls: DragControls + transformControls: TransformControls + } + /** 渲染组合器 */ + composer: EffectComposer + /** FPS */ + wait: number = 0 + /** 环境光 */ + ambientLight: THREE.AmbientLight = new THREE.AmbientLight(0xffffff, 2) + /** 辅助坐标 */ + axesHelper: THREE.AxesHelper = new THREE.AxesHelper(100) + showAxesHelper: boolean = false + /** 辅助网格 */ + gridHelper: THREE.GridHelper = new THREE.GridHelper(100, 100) + showGridHelper: boolean = false + /** 状态监控 */ + stats: Stats = new Stats() + /** 窗口大小 */ + width: number + height: number + + get FPS() { + return this.wait + } + set FPS(fps: number) { + this.wait = 1 / fps + } + constructor(options: DirectorOption) { + this.width = options.width + this.height = options.height + this.camera.position.z = 10 + this.camera.position.y = 2 + this.scene.add(this.ambientLight) + this.renderer = new THREE.WebGLRenderer({ + antialias: true, + alpha: true, + canvas: options.canvas + }); + this.renderer.setSize(options.width, options.height) + this.renderer.setClearColor(0xffffff); + this.renderer.setPixelRatio(window.devicePixelRatio); + + const renderPass = new RenderPass(this.scene, this.camera); + const orbitControls = new OrbitControls(this.camera, this.renderer.domElement) + this.composer = new EffectComposer(this.renderer); + const selectControls = new SelectControls(this.scene, this.camera, this.renderer.domElement) + const capsControls = new CapsControls(this.scene, this.camera, this.renderer, orbitControls) + capsControls.enabled = false + const dragControls = new DragControls([], this.camera, this.renderer.domElement) + dragControls.addEventListener('dragstart', () => this.controls.orbitControls.enabled = false) + dragControls.addEventListener('dragend', () => this.controls.orbitControls.enabled = true) + const transformControls = new TransformControls(this.camera, this.renderer.domElement); + transformControls.addEventListener('dragging-changed', function (event) { + orbitControls.enabled = !event.value; + }) + this.controls = { orbitControls, selectControls, capsControls, dragControls, transformControls } + this.composer.addPass(renderPass); + this.composer.addPass(selectControls.outlinePass); + this.FPS = options.FPS || 30 + this.renderer.setPixelRatio(window.devicePixelRatio); + this.renderer.setSize(window.innerWidth, window.innerHeight); + this.renderer.setClearColor(0xffffff); + this.renderer.autoClear = false; + + this.stats.dom.style.position = 'absolute' + this.stats.dom.style.left = '' + this.stats.dom.style.right = '0px' + + const onWindowResize = () => { + this.width = window.innerWidth + this.height = window.innerHeight + this.renderer.setSize(this.width, this.height) + this.renderer.setPixelRatio(window.devicePixelRatio) + this.composer.setSize(this.width, this.height) + this.composer.setPixelRatio(window.devicePixelRatio) + this.camera.aspect = this.width / this.height + this.camera.updateProjectionMatrix() + } + window.addEventListener('resize', onWindowResize, false); + } + startRender(onRander?: (FPS: number) => void) { + let timeS = 0; + let realFPS = 0; + const animate = () => { + let T = this.clock.getDelta(); + timeS = timeS + T; + if (timeS >= this.wait) { + if (onRander) onRander(realFPS) + this.renderer.clear(); + this.stats.update() + Object.values(this.controls).forEach(controls => controls.update(T)) + this.composer.render(); + realFPS = 1 / timeS + timeS = 0; + } + requestAnimationFrame(animate) + } + animate() + + } + switchAxesHelper(show: boolean) { + if (show && !this.showAxesHelper) { + this.scene.add(this.axesHelper) + this.showAxesHelper = false + } else { + this.scene.remove(this.axesHelper) + } + } + switchGridHelper(show: boolean) { + if (show && !this.showGridHelper) { + this.scene.add(this.gridHelper) + this.showGridHelper = true + } else { + this.scene.remove(this.gridHelper) + this.showGridHelper = false + } + } + switchStats(show: boolean) { + if (show) { + this.renderer.domElement.parentElement!.appendChild(this.stats.dom) + } else { + this.renderer.domElement.parentElement!.removeChild(this.stats.dom) + } + } + generateTreeData() { + function _generateTreeData(node: THREE.Object3D, parent: TreeNode | null = null) { + const treeItem = { + label: node.name || node.type, + id: `${parent ? parent.id + '.' : ''}${node.uuid}`, // 使用唯一标识符作为id + type: node.type, + children: new Array() + } + if (node.children && node.children.length > 0) { + for (let child of node.children) { + treeItem.children.push(_generateTreeData(child, treeItem)); + } + } + return treeItem; + } + return _generateTreeData(this.scene).children + } + getObjectByUUID(uuidPath: string) { + const uuids = uuidPath.split('.'); + let currentObject: THREE.Object3D = this.scene; + for (let i = 1; i < uuids.length; i++) { + const uuid = uuids[i]; + let found = null; + if (currentObject.children) { + for (let j = 0; j < currentObject.children.length; j++) { + const child = currentObject.children[j]; + if (child.uuid === uuid) { + found = child; + break; + } + } + } + if (!found) { + console.log(`未找到具有UUID ${uuid} 的对象`); + return null; + } + currentObject = found; + } + return currentObject; + } + getObjectBySingleUUID(uuid: string): THREE.Object3D | null { + const traverseScene = (node: THREE.Object3D): THREE.Object3D | null => { + if (node.uuid === uuid) { + return node; + } + for (let i = 0; i < node.children.length; i++) { + const found = traverseScene(node.children[i]); + if (found) { + return found; + } + } + return null; + }; + + return traverseScene(this.scene); + } +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/fragment.glsl b/src/views/three/three-plus/glsl/CapsControls/fragment.glsl new file mode 100644 index 0000000..ee7ac2b --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/fragment.glsl @@ -0,0 +1,9 @@ +uniform vec3 color; +varying vec3 pixelNormal; + +void main(void) { + float shade = (3.0 * pow(abs(pixelNormal.y), 2.0) + 2.0 * pow(abs(pixelNormal.z), 2.0) + 1.0 * pow(abs(pixelNormal.x), 2.0)) / 3.0; + + gl_FragColor = vec4(color * shade, 1.0); + +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/fragmentClipping.glsl b/src/views/three/three-plus/glsl/CapsControls/fragmentClipping.glsl new file mode 100644 index 0000000..fa91705 --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/fragmentClipping.glsl @@ -0,0 +1,30 @@ +uniform vec3 color; +uniform vec3 clippingLow; +uniform vec3 clippingHigh; +uniform sampler2D map; + +varying vec3 pixelNormal; +varying vec4 worldPosition; +varying vec2 vUv; // 纹理坐标 + +uniform float opacity; // 透明度 + +void main(void) { + + float shade = (3.0 * pow(abs(pixelNormal.y), 2.0) + 2.0 * pow(abs(pixelNormal.z), 2.0) + 1.0 * pow(abs(pixelNormal.x), 2.0)) / 3.0; + + + if(worldPosition.x < clippingLow.x || worldPosition.x > clippingHigh.x || worldPosition.y < clippingLow.y || worldPosition.y > clippingHigh.y || worldPosition.z < clippingLow.z || worldPosition.z > clippingHigh.z) { + + discard; + + } else { + vec4 textureColor = texture2D(map, vUv); + if(textureColor.a > 0.1) { + gl_FragColor = vec4(textureColor.rgb * shade, textureColor.a * 1.0); + } else { + gl_FragColor = vec4(color * shade, 1.0); + } + } + +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/fragmentClippingFront.glsl b/src/views/three/three-plus/glsl/CapsControls/fragmentClippingFront.glsl new file mode 100644 index 0000000..14468cb --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/fragmentClippingFront.glsl @@ -0,0 +1,23 @@ +uniform vec3 color; +uniform vec3 clippingLow; +uniform vec3 clippingHigh; + +varying vec3 pixelNormal; +varying vec4 worldPosition; +varying vec3 camPosition; + +void main(void) { + + float shade = (3.0 * pow(abs(pixelNormal.y), 2.0) + 2.0 * pow(abs(pixelNormal.z), 2.0) + 1.0 * pow(abs(pixelNormal.x), 2.0)) / 3.0; + + if(worldPosition.x < clippingLow.x && camPosition.x < clippingLow.x || worldPosition.x > clippingHigh.x && camPosition.x > clippingHigh.x || worldPosition.y < clippingLow.y && camPosition.y < clippingLow.y || worldPosition.y > clippingHigh.y && camPosition.y > clippingHigh.y || worldPosition.z < clippingLow.z && camPosition.z < clippingLow.z || worldPosition.z > clippingHigh.z && camPosition.z > clippingHigh.z) { + + discard; + + } else { + + gl_FragColor = vec4(color * shade, 1.0); + + } + +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/invisibleFragmentShader.glsl b/src/views/three/three-plus/glsl/CapsControls/invisibleFragmentShader.glsl new file mode 100644 index 0000000..c92fd72 --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/invisibleFragmentShader.glsl @@ -0,0 +1,4 @@ +void main(void) { + gl_FragColor = vec4(0.0, 0.0, 0.0, 1.0); + discard; +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/invisibleVertexShader.glsl b/src/views/three/three-plus/glsl/CapsControls/invisibleVertexShader.glsl new file mode 100644 index 0000000..a25c50c --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/invisibleVertexShader.glsl @@ -0,0 +1,4 @@ +void main() { + vec4 mvPosition = modelViewMatrix * vec4(position, 1.0); + gl_Position = projectionMatrix * mvPosition; +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/vertex.glsl b/src/views/three/three-plus/glsl/CapsControls/vertex.glsl new file mode 100644 index 0000000..b25aebf --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/vertex.glsl @@ -0,0 +1,9 @@ +uniform vec3 color; +varying vec3 pixelNormal; + +void main() { + + pixelNormal = normal; + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + +} \ No newline at end of file diff --git a/src/views/three/three-plus/glsl/CapsControls/vertexClipping.glsl b/src/views/three/three-plus/glsl/CapsControls/vertexClipping.glsl new file mode 100644 index 0000000..d86bbf8 --- /dev/null +++ b/src/views/three/three-plus/glsl/CapsControls/vertexClipping.glsl @@ -0,0 +1,17 @@ +uniform vec3 clippingLow; +uniform vec3 clippingHigh; + +varying vec3 pixelNormal; +varying vec4 worldPosition; +varying vec3 camPosition; + +varying vec2 vUv; // 纹理坐标 +void main() { + vUv = uv; + pixelNormal = normal; + worldPosition = modelMatrix * vec4(position, 1.0); + camPosition = cameraPosition; + + gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0); + +} \ No newline at end of file diff --git a/src/views/three/three-plus/utils.ts b/src/views/three/three-plus/utils.ts new file mode 100644 index 0000000..6a19010 --- /dev/null +++ b/src/views/three/three-plus/utils.ts @@ -0,0 +1,183 @@ +import * as THREE from 'three' +import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader' +import { DRACOLoader } from 'three/examples/jsm/loaders/DRACOLoader'; +import { OBJLoader } from 'three/examples/jsm/loaders/OBJLoader' +import { MTLLoader } from 'three/examples/jsm/loaders/MTLLoader' +import { FBXLoader } from 'three/examples/jsm/loaders/FBXLoader' + +/** + * 将事件坐标转换为标准化设备坐标系(NDC) + * + * @param vector 接收坐标转换结果的Vector2对象 + * @param event 触发的鼠标或触摸事件 + * @param window 窗口对象 + */ +export function setToNormalizedDeviceCoordinates( + vector: THREE.Vector2, + event: MouseEvent | TouchEvent, + window: Window +) { + vector.x = event instanceof MouseEvent ? event.clientX : (event.touches && event.touches[0].clientX); + vector.y = event instanceof MouseEvent ? event.clientY : (event.touches && event.touches[0].clientY); + vector.x = (vector.x / window.innerWidth) * 2 - 1; + vector.y = - (vector.y / window.innerHeight) * 2 + 1; +} + +/** + * gltf/glb fbx obj+mtl(材质) + * @param model + * @param type + * @returns + */ +export function loadModel(model: { gltf?: string, obj?: string, mtl?: string, fbx?: string }, type: "gltf" | "glb" | "obj" | "fbx", onProgress?: (progress: ProgressEvent) => void): Promise { + return new Promise((resolve, reject,) => { + if ((type == "gltf" || type == "glb") && !!model.gltf) { + const gltfloader = new GLTFLoader() + const dracoLoader = new DRACOLoader(); + dracoLoader.setDecoderPath('/draco/gltf/'); + dracoLoader.setDecoderConfig({ type: "js" }); + dracoLoader.preload(); + gltfloader.setDRACOLoader(dracoLoader); + gltfloader.load( + model.gltf, + load => { + console.log(load); + resolve(load.scene) + }, + progress => { + if (onProgress) onProgress(progress) + }, + error => { + console.log(error); + } + ) + } else if (type == "obj" && !!model.obj) { + if (!!model.mtl) { + const mtlLoader = new MTLLoader() + mtlLoader.load(model.mtl, (mtl) => { + mtl.preload() + const objLoader = new OBJLoader() + objLoader.setMaterials(mtl) + if (!!model.obj) { + objLoader.load(model.obj, resolve) + } + }) + } else { + const objLoader = new OBJLoader() + objLoader.load(model.obj, resolve) + } + } else if (type == "fbx" && !!model.fbx) { + const fbxLoader = new FBXLoader() + fbxLoader.load(model.fbx, resolve) + } + }) +} + +export function getWorldCenterPosition(box: THREE.Box3, scalar = 0.5): THREE.Vector3 { + return new THREE.Vector3().addVectors(box.max, box.min).multiplyScalar(scalar); +} + +export function MeshStandardMaterialToShaderMaterial(msm: THREE.MeshStandardMaterial, sm: THREE.ShaderMaterial) { + // 迁移基础属性 + if (msm.color) { + sm.uniforms['color'].value.copy(msm.color); + } + sm.uniforms['roughness'].value = msm.roughness; + sm.uniforms['metalness'].value = msm.metalness; + if (msm.emissive) { + sm.uniforms['emissive'].value.copy(msm.emissive); + } + + // 迁移纹理属性 + if (msm.map) { + sm.uniforms['map'].value = msm.map; + } + + if (msm.envMap) { + sm.uniforms['envMap'].value = msm.envMap; + sm.uniforms['envMapIntensity'].value = msm.envMapIntensity; + } + + if (msm.lightMap) { + sm.uniforms['lightMap'].value = msm.lightMap; + sm.uniforms['lightMapIntensity'].value = msm.lightMapIntensity; + } + + if (msm.aoMap) { + sm.uniforms['aoMap'].value = msm.aoMap; + sm.uniforms['aoMapIntensity'].value = msm.aoMapIntensity; + } + + if (msm.bumpMap) { + sm.uniforms['bumpMap'].value = msm.bumpMap; + sm.uniforms['bumpScale'].value = msm.bumpScale; + } + + if (msm.normalMap) { + sm.uniforms['normalMap'].value = msm.normalMap; + sm.uniforms['normalScale'].value.copy(msm.normalScale); + } + + if (msm.displacementMap) { + sm.uniforms['displacementMap'].value = msm.displacementMap; + sm.uniforms['displacementScale'].value = msm.displacementScale; + sm.uniforms['displacementBias'].value = msm.displacementBias; + } + + if (msm.alphaMap) { + sm.uniforms['alphaMap'].value = msm.alphaMap; + } + + // 确保其他属性也被正确设置 + sm.side = msm.side; + sm.transparent = msm.transparent; + sm.opacity = msm.opacity; + sm.depthTest = msm.depthTest; + sm.depthWrite = msm.depthWrite; + sm.blending = msm.blending; + sm.alphaTest = msm.alphaTest; + sm.blendSrc = msm.blendSrc; + sm.blendDst = msm.blendDst; + sm.blendEquation = msm.blendEquation; + sm.dithering = msm.dithering; + sm.premultipliedAlpha = msm.premultipliedAlpha; + sm.visible = msm.visible; + sm.toneMapped = msm.toneMapped; +} + +export function MeshBasicMaterialToShaderMaterial(basicMat: THREE.MeshBasicMaterial, shaderMat: THREE.ShaderMaterial) { + console.log(basicMat); + + // 迁移基础属性 + if (basicMat.color) { + shaderMat.uniforms['color'].value.copy(basicMat.color); + } + shaderMat.uniforms['opacity'].value = basicMat.opacity; + + // 迁移纹理属性 + if (basicMat.map) { + shaderMat.uniforms['map'].value = basicMat.map; + } + if (basicMat.alphaMap) { + shaderMat.uniforms['alphaMap'].value = basicMat.alphaMap; + } + // 确保其他属性也被正确设置 + shaderMat.side = basicMat.side; + shaderMat.transparent = basicMat.transparent; + shaderMat.depthTest = basicMat.depthTest; + shaderMat.depthWrite = basicMat.depthWrite; + shaderMat.blending = basicMat.blending; + shaderMat.alphaTest = basicMat.alphaTest; + shaderMat.blendSrc = basicMat.blendSrc; + shaderMat.blendDst = basicMat.blendDst; + shaderMat.blendEquation = basicMat.blendEquation; + shaderMat.dithering = basicMat.dithering; + shaderMat.premultipliedAlpha = basicMat.premultipliedAlpha; + shaderMat.visible = basicMat.visible; + shaderMat.toneMapped = basicMat.toneMapped; + shaderMat.wireframe = basicMat.wireframe; + shaderMat.wireframeLinewidth = basicMat.wireframeLinewidth; + shaderMat.fog = basicMat.fog; + // 设置 needsUpdate 标志为 true 以确保着色器和uniforms得到更新 + shaderMat.needsUpdate = true; +} \ No newline at end of file diff --git a/src/views/tool/build/index.vue b/src/views/tool/build/index.vue new file mode 100644 index 0000000..b673d41 --- /dev/null +++ b/src/views/tool/build/index.vue @@ -0,0 +1,92 @@ + + + \ No newline at end of file diff --git a/src/views/tool/gen/components/createTable.vue b/src/views/tool/gen/components/createTable.vue new file mode 100644 index 0000000..c4b3ad5 --- /dev/null +++ b/src/views/tool/gen/components/createTable.vue @@ -0,0 +1,327 @@ + + + diff --git a/src/views/tool/gen/components/importTable.vue b/src/views/tool/gen/components/importTable.vue new file mode 100644 index 0000000..35efd61 --- /dev/null +++ b/src/views/tool/gen/components/importTable.vue @@ -0,0 +1,111 @@ + + diff --git a/src/views/tool/gen/edit/basicInfoForm.vue b/src/views/tool/gen/edit/basicInfoForm.vue new file mode 100644 index 0000000..eb18a82 --- /dev/null +++ b/src/views/tool/gen/edit/basicInfoForm.vue @@ -0,0 +1,52 @@ + + diff --git a/src/views/tool/gen/edit/editTableForm.vue b/src/views/tool/gen/edit/editTableForm.vue new file mode 100644 index 0000000..9351bec --- /dev/null +++ b/src/views/tool/gen/edit/editTableForm.vue @@ -0,0 +1,182 @@ + + \ No newline at end of file diff --git a/src/views/tool/gen/edit/genInfoForm.vue b/src/views/tool/gen/edit/genInfoForm.vue new file mode 100644 index 0000000..b172c27 --- /dev/null +++ b/src/views/tool/gen/edit/genInfoForm.vue @@ -0,0 +1,259 @@ + + + \ No newline at end of file diff --git a/src/views/tool/gen/edit/index.ts b/src/views/tool/gen/edit/index.ts new file mode 100644 index 0000000..42053c4 --- /dev/null +++ b/src/views/tool/gen/edit/index.ts @@ -0,0 +1,332 @@ +import { getGenTable, updateGenTable } from "@/api/tool/gen"; +import { modal } from "@/plugins"; +import { createGlobalState } from "@vueuse/core"; +import { ref } from "vue"; + +export class BaseEntity { + /** 搜索值 */ + searchValue!: string; + + /** 创建者 */ + createBy!: string; + + /** 创建时间 */ + createTime!: string; + + /** 更新者 */ + updateBy!: string; + + /** 更新时间 */ + updateTime!: string; + + /** 备注 */ + remark!: string; + + /** 请求参数 */ + params!: Record; +} + +export class GenTableVo extends BaseEntity { + /** 业务表 */ + table!: GenTable; + + /** 业务表的列 */ + columns!: GenColumn[]; + + /** 关联信息 */ + joinTablesMate!: GenJoin[]; + + /** 参与关联的表 */ + joinTables!: GenTable[]; + + /** 参与关联的列 */ + joinColumns!: GenColumn[]; + + getAllGenTables(): GenTable[] { + const allGenTables: GenTable[] = []; + allGenTables.push(this.table); + if (this.joinTables) { + allGenTables.push(...this.joinTables); + } + return allGenTables; + } + + getAllGenColumns(): GenColumn[] { + const allGenColumns: GenColumn[] = []; + if (this.columns) { + allGenColumns.push(...this.columns); + } + if (this.joinColumns) { + allGenColumns.push(...this.joinColumns); + } + return allGenColumns; + } + + getTableMap(): Record { + const tableMap: Record = {}; + if (this.table) { + tableMap[this.table.tableId] = this.table; + } + if (this.joinTables) { + for (const genTable of this.joinTables) { + if (genTable) { + tableMap[genTable.tableId] = genTable; + } + } + } + return tableMap; + } + + getTableAliasMap(): Record { + const tableMap: Record = {}; + if (this.table) { + tableMap[this.table.tableId] = this.table.tableAlias; + } + if (this.joinTablesMate) { + for (const genTable of this.joinTablesMate) { + if (genTable) { + tableMap[genTable.leftTableId] = genTable.leftTableAlias; + tableMap[genTable.rightTableId] = genTable.rightTableAlias; + } + } + } + return tableMap; + } + + getColumnMap(): Record { + const columnMap: Record = {}; + const genTables = this.getAllGenTables(); + for (const genTable of genTables) { + for (const genTableColumn of genTable.columns) { + columnMap[genTableColumn.columnId] = genTableColumn; + } + } + return columnMap; + } +} + +export class GenJoin extends BaseEntity { + /** 表编号 */ + tableId!: number; + + leftTableId!: number; + + /** 关联表编号 */ + rightTableId!: number; + + /** 新引入的表 */ + newTableId!: number; + + /** 主表别名 */ + leftTableAlias!: string; + + /** 关联表别名 */ + rightTableAlias!: string; + + /** 主表外键 */ + leftTableFk!: number; + + /** 关联表外键 */ + rightTableFk!: number; + + /** 连接类型 */ + joinType!: string; + + /** 关联字段 */ + joinColumns!: string[]; + + orderNum!: number; +} + +export class GenTable extends BaseEntity { + /** 编号 */ + tableId!: number; + + /** 表名称 */ + tableName!: string; + + /** 表别名 */ + tableAlias!: string; + + /** 表描述 */ + tableComment!: string; + + /** 关联父表的表名 */ + subTableName!: string; + + /** 本表关联父表的外键名 */ + subTableFkName!: string; + + /** 实体类名称(首字母大写) */ + className!: string; + + /** 使用的模板(crud单表操作 tree树表操作 sub主子表操作) */ + tplCategory!: string; + + /** 前端类型(element-ui模版 element-plus模版) */ + tplWebType!: string; + + /** 生成包路径 */ + packageName!: string; + + /** 生成模块名 */ + moduleName!: string; + + /** 生成业务名 */ + businessName!: string; + + /** 生成功能名 */ + functionName!: string; + + /** 生成作者 */ + functionAuthor!: string; + + /** 生成代码方式(0zip压缩包 1自定义路径) */ + genType!: string; + + /** 生成路径(不填默认项目路径) */ + genPath!: string; + + /** 主键信息 */ + pkColumn!: GenColumn; + + /** 子表信息 */ + subTable!: GenTable; + + /** 表列信息 */ + columns!: GenColumn[]; + + /** 其它生成选项 */ + options!: string; + + /** 树编码字段 */ + treeCode!: string; + + /** 树父编码字段 */ + treeParentCode!: string; + + /** 树名称字段 */ + treeName!: string; + + /** 上级菜单ID字段 */ + parentMenuId!: string; + + /** 上级菜单名称字段 */ + parentMenuName!: string; + + /** 是否含有关联字段 */ + haveSubColumn!: string; +} + +export class GenColumn extends BaseEntity { + /** 编号 */ + columnId!: number; + + /** 归属表编号 */ + tableId!: number; + + /** 列名称 */ + columnName!: string; + + /** 列描述 */ + columnComment!: string; + + /** 列类型 */ + columnType!: string; + + /** JAVA类型 */ + javaType!: string; + + /** JAVA字段名 */ + javaField!: string; + + /** 是否主键(1是) */ + isPk!: string; + + /** 是否自增(1是) */ + isIncrement!: string; + + /** 是否必填(1是) */ + isRequired!: string; + + /** 是否为插入字段(1是) */ + isInsert!: string; + + /** 是否编辑字段(1是) */ + isEdit!: string; + + /** 是否列表字段(1是) */ + isList!: string; + + /** 是否查询字段(1是) */ + isQuery!: string; + + /** 查询方式(EQ等于、NE不等于、GT大于、LT小于、LIKE模糊、BETWEEN范围) */ + queryType!: string; + + /** + * 显示类型(input文本框、textarea文本域、select下拉框、checkbox复选框、radio单选框、datetime日期控件、image图片上传控件、upload文件上传控件、editor富文本控件) + */ + htmlType!: string; + + /** 字典类型 */ + dictType!: string; + + /** 排序 */ + sort!: number; + + /** 关联表名称 */ + subColumnTableName!: string; + + /** 关联字段名称 */ + subColumnFkName!: string; + + /** 映射字段名称 */ + subColumnName!: string; + + /** 映射字段Java字段名 */ + subColumnJavaField!: string; + + /** 映射字段Java类型 */ + subColumnJavaType!: string; +} + +export const genTableState = createGlobalState(() => { + const info = ref(new GenTable()); + const tables = ref([]); + const joins = ref([]); + const columns = ref([]); + const tableDict = ref({}); + + const initGenTableVo = (tableId: string) => { + getGenTable(tableId).then(res => { + columns.value = res.data.columns; + info.value = res.data.table; + tables.value = res.data.joinTables; + joins.value = res.data.joinTablesMate; + }); + } + const updateGenTableVo = () => { + const genTable = Object.assign({}, info.value); + genTable.columns = columns.value; + genTable.params = { + treeCode: info.value.treeCode, + treeName: info.value.treeName, + treeParentCode: info.value.treeParentCode, + parentMenuId: info.value.parentMenuId + }; + updateGenTable({ + table: genTable, + columns: columns.value, + joinTables: tables.value, + joinColumns: [], + joinTablesMate: joins.value + }).then(res => { + modal.msgSuccess(res.msg); + if (res.code === 200) { + close(); + } + }); + } + return { info, tables, joins, columns, tableDict, initGenTableVo, updateGenTableVo }; +}) \ No newline at end of file diff --git a/src/views/tool/gen/edit/index.vue b/src/views/tool/gen/edit/index.vue new file mode 100644 index 0000000..bab2c65 --- /dev/null +++ b/src/views/tool/gen/edit/index.vue @@ -0,0 +1,76 @@ + + \ No newline at end of file diff --git a/src/views/tool/gen/edit/joinTableForm.vue b/src/views/tool/gen/edit/joinTableForm.vue new file mode 100644 index 0000000..8830876 --- /dev/null +++ b/src/views/tool/gen/edit/joinTableForm.vue @@ -0,0 +1,179 @@ + + + \ No newline at end of file diff --git a/src/views/tool/gen/index.vue b/src/views/tool/gen/index.vue new file mode 100644 index 0000000..6be1255 --- /dev/null +++ b/src/views/tool/gen/index.vue @@ -0,0 +1,242 @@ + + + diff --git a/src/views/tool/swagger/index.vue b/src/views/tool/swagger/index.vue new file mode 100644 index 0000000..a44fa71 --- /dev/null +++ b/src/views/tool/swagger/index.vue @@ -0,0 +1,9 @@ + + + diff --git a/src/views/websocket.vue b/src/views/websocket.vue new file mode 100644 index 0000000..aff2d67 --- /dev/null +++ b/src/views/websocket.vue @@ -0,0 +1,339 @@ + + + \ No newline at end of file diff --git a/tsconfig.json b/tsconfig.json new file mode 100644 index 0000000..3064d67 --- /dev/null +++ b/tsconfig.json @@ -0,0 +1,31 @@ +{ + "include": ["src/**/*", "src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"], + "exclude": ["node_modules", "dist", "**/*.js"], + "compilerOptions": { + "types":["vite/client"], + "target": "ES2022", + "experimentalDecorators": true, + "noImplicitAny":true, + "importHelpers": true, + "strict": true, + "forceConsistentCasingInFileNames": true, + "downlevelIteration":true, + "outDir": "dist/compiled", + "allowSyntheticDefaultImports": true, + "allowJs": true, + "jsx": "preserve", + "moduleResolution": "node", + "module": "ES2022", + "lib": ["ES2022", "dom"], + "declaration": true, + "baseUrl": ".", + "paths": { + "@": ["src"], + "@/*": ["src/*"], + "@lib": ["lib"], + "@lib/*": ["lib/*"], + "vue": ["node_modules/vue"], + "tslib" : ["node_modules/tslib/tslib.d.ts"] + } + } +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..f81b4eb --- /dev/null +++ b/vite.config.js @@ -0,0 +1,78 @@ +import { defineConfig, loadEnv } from 'vite' +import path from 'path' +import createVitePlugins from './vite/plugins' +// https://vitejs.dev/config/ +export default defineConfig(({ mode, command }) => { + const env = loadEnv(mode, process.cwd()) + const { VITE_APP_ENV, VITE_BASE_ROUTER } = env + return { + // 部署生产环境和开发环境下的URL。 + // 默认情况下,vite 会假设你的应用是被部署在一个域名的根路径上 + // 例如 https://www.ruoyi.vip/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在 https://www.ruoyi.vip/admin/,则设置 baseUrl 为 /admin/。 + base: VITE_APP_ENV === 'production' ? VITE_BASE_ROUTER : VITE_BASE_ROUTER, + plugins: createVitePlugins(env, command === 'build'), + resolve: { + // https://cn.vitejs.dev/config/#resolve-alias + alias: { + // 设置路径 + '~': path.resolve(__dirname, './'), + // 设置别名 + '@': path.resolve(__dirname, './src'), + '@lib': path.resolve(__dirname, './lib'), + }, + // https://cn.vitejs.dev/config/#resolve-extensions + extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json', '.vue'] + }, + // vite 相关配置 + server: { + port: 80, + host: true, + open: false, // 启动时是否启动自动打开浏览器 + proxy: { + // https://cn.vitejs.dev/config/#server-proxy + '/dev-api': { + target: 'http://localhost:9090', + changeOrigin: true, + rewrite: (p) => p.replace(/^\/dev-api/, '') + }, + '/v3': { + target: 'http://localhost:9090', + changeOrigin: true, + rewrite: (p) => p.replace(/^\/dev-api/, '') + } + } + }, + //fix:error:stdin>:7356:1: warning: "@charset" must be the first rule in the file + css: { + preprocessorOptions: { + scss: { + api: 'modern-compiler' + } + }, + postcss: { + plugins: [ + { + postcssPlugin: 'internal:charset-removal', + AtRule: { + charset: (atRule) => { + if (atRule.name === 'charset') { + atRule.remove(); + } + } + } + } + ] + } + }, + optimizeDeps: { + include: [ + '@lib/vform/designer.umd.js', + ] + }, + build: { + commonjsOptions: { + include: /node_modules|lib/ + } + } + } +}) diff --git a/vite/plugins/auto-import.js b/vite/plugins/auto-import.js new file mode 100644 index 0000000..a5d3576 --- /dev/null +++ b/vite/plugins/auto-import.js @@ -0,0 +1,12 @@ +import autoImport from 'unplugin-auto-import/vite' + +export default function createAutoImport() { + return autoImport({ + imports: [ + 'vue', + 'vue-router', + 'pinia' + ], + dts: false + }) +} diff --git a/vite/plugins/compression.js b/vite/plugins/compression.js new file mode 100644 index 0000000..e90aaec --- /dev/null +++ b/vite/plugins/compression.js @@ -0,0 +1,28 @@ +import compression from 'vite-plugin-compression' + +export default function createCompression(env) { + const { VITE_BUILD_COMPRESS } = env + const plugin = [] + if (VITE_BUILD_COMPRESS) { + const compressList = VITE_BUILD_COMPRESS.split(',') + if (compressList.includes('gzip')) { + // http://doc.ruoyi.vip/ruoyi-vue/other/faq.html#使用gzip解压缩静态文件 + plugin.push( + compression({ + ext: '.gz', + deleteOriginFile: false + }) + ) + } + if (compressList.includes('brotli')) { + plugin.push( + compression({ + ext: '.br', + algorithm: 'brotliCompress', + deleteOriginFile: false + }) + ) + } + } + return plugin +} diff --git a/vite/plugins/index.js b/vite/plugins/index.js new file mode 100644 index 0000000..b65044d --- /dev/null +++ b/vite/plugins/index.js @@ -0,0 +1,16 @@ +import vue from '@vitejs/plugin-vue' + +import createAutoImport from './auto-import' +import createSvgIcon from './svg-icon' +import createCompression from './compression' +import createSetupExtend from './setup-extend' +import glsl from "vite-plugin-glsl"; + +export default function createVitePlugins(viteEnv, isBuild = false) { + const vitePlugins = [vue(),glsl()] + vitePlugins.push(createAutoImport()) + vitePlugins.push(createSetupExtend()) + vitePlugins.push(createSvgIcon(isBuild)) + isBuild && vitePlugins.push(...createCompression(viteEnv)) + return vitePlugins +} diff --git a/vite/plugins/setup-extend.js b/vite/plugins/setup-extend.js new file mode 100644 index 0000000..a4980f3 --- /dev/null +++ b/vite/plugins/setup-extend.js @@ -0,0 +1,5 @@ +import setupExtend from 'vite-plugin-vue-setup-extend' + +export default function createSetupExtend() { + return setupExtend() +} diff --git a/vite/plugins/svg-icon.js b/vite/plugins/svg-icon.js new file mode 100644 index 0000000..30a4140 --- /dev/null +++ b/vite/plugins/svg-icon.js @@ -0,0 +1,10 @@ +import { createSvgIconsPlugin } from 'vite-plugin-svg-icons' +import path from 'path' + +export default function createSvgIcon(isBuild) { + return createSvgIconsPlugin({ + iconDirs: [path.resolve(process.cwd(), 'src/assets/icons/svg')], + symbolId: 'icon-[dir]-[name]', + svgoOptions: isBuild + }) +}
  • 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