From 4d80b819948366cb0754369b1bea5e0e83cf6af1 Mon Sep 17 00:00:00 2001 From: Helius <wangdoubleone@gmail.com> Date: Thu, 16 Sep 2021 14:46:55 +0800 Subject: [PATCH] init --- src/main/java/cc/mrbird/febs/common/authentication/ShiroRealm.java | 115 src/main/java/cc/mrbird/febs/common/exception/RedisConnectException.java | 15 src/main/resources/static/febs/css/eleTree.css | 1 src/main/resources/static/febs/images/avatar/20180414165909.jpg | 0 src/main/resources/templates/febs/views/others/eximport/eximportResult.html | 141 src/main/resources/static/layui/images/face/19.gif | 0 src/main/resources/static/febs/images/avatar/BiazfanxmamNRoxxVxka.png | 0 src/main/java/cc/mrbird/febs/monitor/controller/ViewController.java | 88 src/main/java/cc/mrbird/febs/common/aspect/LimitAspect.java | 93 src/main/resources/generator/templates/mapper.ftl | 14 src/main/resources/static/layui/images/face/27.gif | 0 src/main/java/cc/mrbird/febs/system/service/impl/MenuServiceImpl.java | 142 src/main/java/cc/mrbird/febs/system/service/IDeptService.java | 59 src/main/resources/static/layui/images/face/43.gif | 0 src/main/resources/application-dev.yml | 43 src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg | 0 src/main/resources/static/febs/images/avatar/cnrhVkzwxjPwAaCfPbdc.png | 0 src/main/resources/static/layui/images/face/35.gif | 0 src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java | 8 src/main/resources/static/layui/images/face/0.gif | 0 src/main/resources/static/febs/images/avatar/20180414170003.jpg | 0 src/main/java/cc/mrbird/febs/common/validator/MobileValidator.java | 35 src/main/resources/templates/febs/views/system/menu/menu.html | 337 src/main/resources/static/febs/lay/modules/loadBar.js | 85 src/main/java/cc/mrbird/febs/monitor/entity/JvmInfo.java | 70 src/main/resources/static/layui/images/face/12.gif | 0 src/main/resources/templates/febs/views/others/eximport/eximport.html | 90 src/main/java/cc/mrbird/febs/monitor/configure/FebsMonitorConfigure.java | 18 src/main/resources/static/febs/lay/modules/dropdown.js | 154 src/main/java/cc/mrbird/febs/monitor/controller/FebsActuatorController.java | 72 src/main/java/cc/mrbird/febs/system/service/impl/UserDataPermissionServiceImpl.java | 43 src/main/resources/static/febs/images/avatar/a3b10296862e40edb811418d64455d00.jpeg | 0 src/main/resources/static/febs/images/avatar/496b3ace787342f7954b7045b8b06804.jpeg | 0 src/main/resources/templates/febs/views/job/job.html | 285 pom.xml | 226 src/main/resources/static/layui/images/face/66.gif | 0 src/main/resources/generator/templates/entity.ftl | 67 src/main/resources/templates/febs/views/others/map/gaodeMap.html | 36 src/main/java/cc/mrbird/febs/generator/entity/GeneratorConstant.java | 68 src/main/java/cc/mrbird/febs/common/annotation/ControllerEndpoint.java | 17 src/main/resources/static/layui/images/face/7.gif | 0 src/main/resources/templates/febs/views/others/febs/icon.html | 4299 +++++++ src/main/java/cc/mrbird/febs/generator/helper/GeneratorHelper.java | 142 src/main/java/cc/mrbird/febs/system/entity/RoleMenu.java | 30 src/main/resources/static/layui/font/iconfont.eot | 0 src/main/resources/static/layui/images/face/51.gif | 0 src/main/java/cc/mrbird/febs/system/controller/RoleController.java | 78 src/main/resources/static/layui/lay/modules/mobile.js | 2 src/main/java/cc/mrbird/febs/system/entity/Dept.java | 67 src/main/java/cc/mrbird/febs/common/service/RedisService.java | 562 src/main/resources/static/layui/images/face/58.gif | 0 src/main/java/cc/mrbird/febs/generator/mapper/GeneratorMapper.java | 22 src/main/resources/application.yml | 37 src/main/resources/static/febs/images/avatar/19034103295190235.jpg | 0 src/main/java/cc/mrbird/febs/generator/service/IGeneratorConfigService.java | 25 src/main/resources/static/febs/images/avatar/20180414165942.jpg | 0 src/main/java/cc/mrbird/febs/common/entity/FebsConstant.java | 54 src/main/resources/static/layui/lay/modules/slider.js | 2 src/main/resources/static/layui/images/face/36.gif | 0 src/main/resources/static/layui/lay/modules/laydate.js | 2 src/main/java/cc/mrbird/febs/system/controller/UserController.java | 137 src/main/resources/static/layui/images/face/18.gif | 0 src/main/resources/static/febs/images/avatar/jZUIxmJycoymBprLOUbT.png | 0 src/main/resources/static/layui/images/face/52.gif | 0 LICENSE | 201 src/main/java/cc/mrbird/febs/common/interceptor/DataPermissionInterceptor.java | 129 src/main/resources/static/febs/images/error/500.svg | 208 src/main/resources/static/febs/images/error/403.svg | 508 src/main/resources/templates/febs/views/system/user/userUpdate.html | 216 src/main/resources/static/layui/images/face/42.gif | 0 src/main/resources/static/layui/lay/modules/jquery.js | 5 src/main/resources/static/layui/images/face/67.gif | 0 src/main/resources/static/febs/images/side-bar-light.svg | 40 src/main/resources/static/layui/images/face/1.gif | 0 src/main/resources/templates/febs/views/others/febs/formGroup.html | 287 src/main/java/cc/mrbird/febs/system/service/impl/RoleMenuServiceImpl.java | 33 src/main/java/cc/mrbird/febs/common/entity/DesensitizationType.java | 40 src/main/resources/static/layui/images/face/57.gif | 0 src/main/resources/static/febs/images/avatar/20180414165947.jpg | 0 src/main/resources/static/layui/images/face/6.gif | 0 src/main/java/cc/mrbird/febs/common/configure/FebsConfigure.java | 96 src/main/resources/static/febs/lay/extends/apexcharts.min.js | 9 src/main/java/cc/mrbird/febs/common/service/ValidateCodeService.java | 80 src/main/java/cc/mrbird/febs/system/controller/DeptController.java | 79 src/main/resources/generator/templates/controller.ftl | 96 src/main/resources/templates/febs/views/monitor/httpTrace.html | 137 src/main/resources/static/febs/images/avatar/empty.jpg | 0 src/main/resources/templates/febs/views/index.html | 428 src/main/resources/static/layui/font/iconfont.woff | 0 src/main/java/cc/mrbird/febs/system/mapper/UserMapper.java | 43 src/main/resources/mapper/generator/GeneratorMapper.xml | 41 src/main/resources/templates/febs/views/error/404.html | 25 src/main/resources/static/febs/lay/modules/view.js | 549 src/main/resources/static/layui/images/face/20.gif | 0 src/main/java/cc/mrbird/febs/system/mapper/UserDataPermissionMapper.java | 11 src/main/resources/generator/templates/serviceImpl.ftl | 66 src/main/resources/static/febs/images/avatar/20180414165821.jpg | 0 src/main/resources/static/layui/css/modules/layer/default/icon.png | 0 src/main/java/cc/mrbird/febs/common/utils/IpUtil.java | 32 src/main/java/cc/mrbird/febs/system/entity/UserRole.java | 30 src/main/java/cc/mrbird/febs/common/handler/GlobalExceptionHandler.java | 138 src/main/resources/templates/febs/views/others/apex/area.html | 756 + src/main/java/cc/mrbird/febs/monitor/entity/TomcatInfo.java | 58 src/main/resources/templates/febs/views/generator/configure.html | 168 src/main/resources/static/febs/lay/modules/api.js | 5 src/main/resources/static/layui/lay/modules/laypage.js | 2 src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java | 195 src/main/resources/static/layui/images/face/53.gif | 0 log/info/info.2021-09-16.log | 303 src/main/resources/static/layui/images/face/10.gif | 0 src/main/resources/templates/febs/views/job/jobAdd.html | 78 src/main/resources/static/febs/images/background.svg | 69 src/main/java/cc/mrbird/febs/system/service/IUserDataPermissionService.java | 36 src/main/resources/static/layui/images/face/61.gif | 0 src/main/java/cc/mrbird/febs/others/mapper/DataPermissionTestMapper.java | 13 src/main/java/cc/mrbird/febs/system/mapper/UserRoleMapper.java | 11 src/main/resources/static/layui/images/face/25.gif | 0 src/main/java/cc/mrbird/febs/generator/mapper/GeneratorConfigMapper.java | 11 src/main/java/cc/mrbird/febs/common/entity/ImageType.java | 18 src/main/resources/static/layui/images/face/68.gif | 0 src/main/resources/generator/templates/mapperXml.ftl | 5 src/main/resources/static/febs/images/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg | 0 src/main/resources/static/febs/images/avatar/a43456282d684e0b9319cf332f8ac468.jpeg | 0 src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorConfigServiceImpl.java | 32 src/main/java/cc/mrbird/febs/common/annotation/Helper.java | 18 src/main/resources/static/layui/font/iconfont.ttf | 0 src/main/resources/static/febs/font/iconfont.ttf | 0 src/main/resources/static/febs/images/avatar/ubnKSIfAJTxIgXOKlciN.png | 0 src/main/resources/static/layui/images/face/41.gif | 0 src/main/java/cc/mrbird/febs/system/entity/User.java | 214 src/main/resources/static/febs/images/favicon.ico | 0 src/main/resources/static/layui/images/face/9.gif | 0 src/main/resources/static/layui/images/face/49.gif | 0 src/main/resources/static/febs/images/side-bar-dark.svg | 40 src/main/java/cc/mrbird/febs/monitor/entity/SystemLog.java | 87 src/main/resources/templates/error/404.html | 42 src/main/resources/static/febs/images/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg | 0 src/main/resources/static/febs/images/avatar/20180414165955.jpg | 0 src/main/resources/static/layui/images/face/13.gif | 0 src/main/resources/static/layui/images/face/56.gif | 0 src/main/resources/static/febs/images/avatar/20180414165920.jpg | 0 src/main/java/cc/mrbird/febs/system/service/IRoleService.java | 70 src/main/java/cc/mrbird/febs/system/controller/ViewController.java | 179 src/main/resources/templates/febs/views/others/febs/tools.html | 238 src/main/resources/static/febs/lay/extends/treeSelect.js | 1 src/main/resources/static/layui/lay/modules/flow.js | 2 src/main/resources/static/febs/images/avatar/20180414165754.jpg | 0 src/main/java/cc/mrbird/febs/monitor/controller/LoginLogController.java | 58 src/main/java/cc/mrbird/febs/common/exception/GeneratorException.java | 15 src/main/resources/static/layui/images/face/34.gif | 0 src/main/java/cc/mrbird/febs/common/properties/ValidateCodeProperties.java | 39 src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java | 239 src/main/resources/static/febs/images/avatar/20180414165927.jpg | 0 src/main/resources/templates/febs/views/system/dept/dept.html | 245 src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a16.jpg | 0 src/main/resources/static/layui/images/face/28.gif | 0 src/main/java/cc/mrbird/febs/common/utils/FileUtil.java | 165 src/main/java/cc/mrbird/febs/common/entity/QueryRequest.java | 36 src/main/resources/mapper/system/LoginLogMapper.xml | 35 src/main/resources/templates/febs/views/monitor/online.html | 137 src/main/resources/static/layui/images/face/60.gif | 0 src/main/java/cc/mrbird/febs/others/service/impl/EximportServiceImpl.java | 42 src/main/resources/static/layui/lay/modules/transfer.js | 2 src/main/resources/static/layui/images/face/69.gif | 0 src/main/java/cc/mrbird/febs/common/properties/ShiroProperties.java | 18 src/main/resources/static/febs/images/avatar/20180414165827.jpg | 0 src/main/resources/templates/febs/views/system/user/userProfile.html | 204 src/main/java/cc/mrbird/febs/generator/controller/GeneratorConfigController.java | 47 src/main/resources/static/layui/images/face/26.gif | 0 src/main/resources/templates/error/500.html | 42 src/main/resources/static/febs/images/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg | 0 src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg | 0 src/main/resources/static/febs/font/iconfont.svg | 1622 ++ src/main/resources/static/layui/images/face/8.gif | 0 src/main/java/cc/mrbird/febs/common/entity/MenuTree.java | 33 src/main/resources/static/febs/images/avatar/20180414165855.jpg | 0 src/main/resources/static/layui/font/iconfont.svg | 485 src/main/java/cc/mrbird/febs/system/service/IUserService.java | 115 src/main/resources/templates/febs/views/system/user/profileUpdate.html | 110 src/main/java/cc/mrbird/febs/common/annotation/IsCron.java | 25 src/main/java/cc/mrbird/febs/others/service/IDataPermissionTestService.java | 21 src/main/java/cc/mrbird/febs/system/mapper/DeptMapper.java | 10 src/main/java/cc/mrbird/febs/system/mapper/RoleMenuMapper.java | 10 src/main/resources/static/layui/images/face/54.gif | 0 src/main/java/cc/mrbird/febs/system/mapper/MenuMapper.java | 28 src/main/resources/static/febs/lay/data/dataSeries.js | 1793 +++ src/main/resources/static/layui/images/face/11.gif | 0 src/main/resources/static/febs/index.js | 8 src/main/resources/static/layui/lay/modules/util.js | 2 src/main/resources/templates/febs/views/others/apex/bar.html | 631 + src/main/java/cc/mrbird/febs/common/entity/Regexp.java | 15 src/main/resources/static/febs/images/avatar/WhxKECPNujWoWEFNdnJE.png | 0 src/main/resources/static/febs/images/logo.png | 0 src/main/java/cc/mrbird/febs/generator/entity/GeneratorConfig.java | 123 src/main/resources/static/layui/images/face/48.gif | 0 src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java | 8 src/main/resources/static/layui/lay/modules/rate.js | 2 src/main/resources/templates/febs/views/system/user/avatar.html | 90 src/main/resources/static/febs/images/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg | 0 src/main/java/cc/mrbird/febs/common/annotation/DataPermission.java | 36 src/main/resources/static/febs/images/avatar/20180414165840.jpg | 0 src/main/java/cc/mrbird/febs/system/mapper/RoleMapper.java | 33 src/main/java/cc/mrbird/febs/generator/entity/Table.java | 30 src/main/resources/ValidationMessages.properties | 6 src/main/resources/static/layui/css/layui.css | 2 src/main/resources/static/layui/images/face/33.gif | 0 src/main/resources/static/febs/font/iconfont.woff | 0 src/main/resources/static/febs/images/avatar/20180414165834.jpg | 0 src/main/java/cc/mrbird/febs/generator/controller/ViewController.java | 37 src/main/java/cc/mrbird/febs/system/entity/Menu.java | 112 src/main/java/cc/mrbird/febs/system/controller/MenuController.java | 83 src/main/resources/febs.properties | 43 src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg | 0 src/main/resources/templates/febs/views/system/user/userAdd.html | 180 src/main/java/cc/mrbird/febs/common/annotation/Desensitization.java | 27 src/main/resources/static/febs/css/login.css | 1 src/main/resources/static/febs/css/apexcharts.min.css | 1 src/main/java/cc/mrbird/febs/monitor/service/ISessionService.java | 26 src/main/resources/static/febs/font/iconfont.eot | 0 src/main/resources/templates/febs/views/error/500.html | 23 src/main/resources/static/layui/css/modules/layer/default/loading-0.gif | 0 src/main/resources/static/febs/css/formSelects-v4.css | 174 src/main/resources/static/layui/css/modules/layer/default/icon-ext.png | 0 src/main/resources/templates/febs/views/job/jobUpdate.html | 109 src/main/resources/templates/febs/views/system/user/userDetail.html | 72 src/main/java/cc/mrbird/febs/common/controller/BaseController.java | 49 src/main/resources/static/layui/images/face/55.gif | 0 src/main/resources/static/layui/font/iconfont.woff2 | 0 src/main/java/cc/mrbird/febs/common/annotation/Limit.java | 47 src/main/resources/static/layui/images/face/71.gif | 0 src/main/java/cc/mrbird/febs/others/controller/ViewController.java | 104 sql/febs_base.sql | 621 + src/main/java/cc/mrbird/febs/generator/entity/Column.java | 30 src/main/java/cc/mrbird/febs/monitor/entity/LoginLog.java | 168 src/main/resources/static/layui/lay/modules/layedit.js | 2 src/main/java/cc/mrbird/febs/common/xss/XssFilter.java | 71 src/main/resources/static/layui/images/face/40.gif | 0 src/main/resources/static/layui/images/face/23.gif | 0 src/main/resources/static/layui/css/layui.mobile.css | 2 src/main/resources/templates/febs/views/others/apex/column.html | 480 src/main/resources/templates/error/403.html | 40 src/main/resources/static/layui/layui.js | 2 src/main/java/cc/mrbird/febs/common/configure/RedisConfigure.java | 46 src/main/resources/static/layui/css/modules/code.css | 2 src/main/resources/static/layui/images/face/39.gif | 0 src/main/java/cc/mrbird/febs/common/utils/FebsUtil.java | 117 sql/febs_quartz.sql | 158 src/main/java/cc/mrbird/febs/common/validator/CronValidator.java | 28 src/main/resources/static/layui/images/face/47.gif | 0 src/main/resources/generator/templates/service.ftl | 55 src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java | 47 src/main/resources/static/layui/images/face/62.gif | 0 src/main/java/cc/mrbird/febs/monitor/service/ILoginLogService.java | 68 src/main/resources/static/layui/images/face/32.gif | 0 src/main/java/cc/mrbird/febs/common/interceptor/DesensitizationInterceptor.java | 114 src/main/resources/static/febs/images/avatar/20180414165914.jpg | 0 src/main/java/cc/mrbird/febs/mall/entity/MallMember.java | 37 src/main/resources/static/layui/lay/modules/upload.js | 2 src/main/resources/static/layui/images/face/15.gif | 0 src/main/resources/templates/febs/views/layout.html | 180 src/main/resources/templates/febs/views/others/apex/mix.html | 374 src/main/java/cc/mrbird/febs/system/controller/LoginController.java | 102 src/main/resources/static/layui/lay/modules/code.js | 2 src/main/java/cc/mrbird/febs/monitor/controller/SessionController.java | 44 src/main/resources/static/febs/lay/modules/febs.js | 671 + src/main/java/cc/mrbird/febs/common/entity/LimitType.java | 15 src/main/java/cc/mrbird/febs/monitor/service/ILogService.java | 48 src/main/java/cc/mrbird/febs/common/properties/SwaggerProperties.java | 19 src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorServiceImpl.java | 42 src/main/resources/mapper/system/MenuMapper.xml | 53 src/main/java/cc/mrbird/febs/system/service/IUserRoleService.java | 26 src/main/resources/templates/febs/views/others/apex/line.html | 923 + src/main/resources/static/layui/images/face/70.gif | 0 src/main/java/cc/mrbird/febs/generator/controller/GeneratorController.java | 101 src/main/resources/static/febs/images/avatar/20180414165936.jpg | 0 src/main/resources/static/layui/lay/modules/colorpicker.js | 2 src/main/java/cc/mrbird/febs/common/entity/FebsResponse.java | 44 src/main/resources/static/febs/lay/modules/validate.js | 87 src/main/java/cc/mrbird/febs/common/converter/TimeConverter.java | 32 src/main/java/cc/mrbird/febs/others/service/impl/DataPermissionTestServiceImpl.java | 29 src/main/resources/templates/febs/views/error/403.html | 23 src/main/resources/static/layui/images/face/24.gif | 0 src/main/resources/static/layui/lay/modules/laytpl.js | 2 .gitignore | 44 src/main/resources/static/layui/images/face/14.gif | 0 src/main/resources/static/layui/images/face/31.gif | 0 src/main/java/cc/mrbird/febs/common/aspect/ControllerEndpointAspect.java | 70 src/main/java/cc/mrbird/febs/monitor/service/impl/LogServiceImpl.java | 141 src/main/resources/static/febs/images/avatar/20180414165815.jpg | 0 src/main/resources/templates/febs/views/monitor/tomcatInfo.html | 152 src/main/resources/static/layui/lay/modules/element.js | 2 src/main/java/cc/mrbird/febs/generator/service/IGeneratorService.java | 43 src/main/resources/ip2region/ip2region.db | 0 src/main/resources/static/layui/css/modules/laydate/default/laydate.css | 2 src/main/java/cc/mrbird/febs/common/utils/JsoupUtil.java | 39 src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg | 0 src/main/java/cc/mrbird/febs/others/mapper/EximportMapper.java | 11 src/main/java/cc/mrbird/febs/common/entity/DeptTree.java | 37 src/main/resources/templates/febs/views/others/apex/radar.html | 152 src/main/resources/templates/febs/views/monitor/serverInfo.html | 125 src/main/java/cc/mrbird/febs/system/service/impl/RoleServiceImpl.java | 113 src/main/resources/static/layui/images/face/29.gif | 0 src/main/resources/templates/febs/views/monitor/jvmInfo.html | 179 src/main/resources/mapper/system/UserMapper.xml | 152 src/main/resources/static/layui/images/face/46.gif | 0 src/main/java/cc/mrbird/febs/common/annotation/FebsEndPoint.java | 18 src/main/java/cc/mrbird/febs/common/annotation/IsMobile.java | 25 src/main/resources/templates/febs/views/monitor/swagger.html | 12 src/main/resources/static/layui/images/face/63.gif | 0 src/main/java/cc/mrbird/febs/monitor/endpoint/FebsHttpTraceEndpoint.java | 37 src/main/resources/static/layui/images/face/2.gif | 0 src/main/java/cc/mrbird/febs/common/utils/DateUtil.java | 49 src/main/resources/mapper/system/RoleMapper.xml | 52 src/main/java/cc/mrbird/febs/common/exception/LimitAccessException.java | 15 src/main/resources/application-prod.yml | 49 src/main/resources/static/layui/layui.all.js | 5 src/main/java/cc/mrbird/febs/common/authentication/ShiroHelper.java | 20 src/main/resources/spy.properties | 13 src/main/java/cc/mrbird/febs/others/controller/EximportController.java | 123 src/main/java/cc/mrbird/febs/system/entity/Test.java | 19 src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java | 79 src/main/resources/static/layui/lay/modules/table.js | 2 src/main/java/cc/mrbird/febs/common/utils/SortUtil.java | 129 src/main/resources/static/febs/images/avatar/8f5b60ef00714a399ee544d331231820.jpeg | 0 src/main/resources/application-test.yml | 43 src/main/resources/static/layui/lay/modules/layer.js | 2 src/main/resources/static/febs/config.js | 18 src/main/resources/static/layui/images/face/37.gif | 0 src/main/java/cc/mrbird/febs/common/utils/Md5Util.java | 21 src/main/java/cc/mrbird/febs/others/entity/DataPermissionTest.java | 60 src/main/resources/static/febs/images/error/404.svg | 314 src/main/resources/static/layui/css/modules/layer/default/layer.css | 2 src/main/resources/templates/febs/views/generator/generator.html | 131 src/main/java/cc/mrbird/febs/generator/entity/FieldType.java | 13 src/main/resources/static/febs/images/avatar/default.jpg | 0 src/main/resources/templates/febs/views/system/user/user.html | 315 src/main/java/cc/mrbird/febs/common/properties/FebsProperties.java | 24 src/main/java/cc/mrbird/febs/system/service/IRoleMenuService.java | 26 src/main/java/cc/mrbird/febs/common/configure/P6spySqlFormatConfigure.java | 21 src/main/java/cc/mrbird/febs/FebsShiroApplication.java | 25 src/main/java/cc/mrbird/febs/system/service/IMenuService.java | 66 src/main/resources/templates/febs/views/system/user/passwordUpdate.html | 56 src/main/resources/static/layui/lay/modules/form.js | 2 src/main/java/cc/mrbird/febs/monitor/entity/FebsHttpTrace.java | 37 src/main/java/cc/mrbird/febs/common/exception/FileDownloadException.java | 14 src/main/resources/static/layui/lay/modules/tree.js | 2 src/main/resources/static/layui/images/face/30.gif | 0 src/main/resources/static/febs/images/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg | 0 src/main/resources/static/layui/lay/modules/carousel.js | 2 src/main/java/cc/mrbird/febs/monitor/entity/ActiveUser.java | 61 src/main/java/cc/mrbird/febs/monitor/entity/ServerInfo.java | 46 src/main/java/cc/mrbird/febs/system/service/impl/UserRoleServiceImpl.java | 32 src/main/java/cc/mrbird/febs/common/authentication/ShiroSessionListener.java | 29 src/main/resources/static/layui/images/face/17.gif | 0 src/main/resources/static/layui/images/face/21.gif | 0 src/main/resources/static/layui/images/face/64.gif | 0 src/main/java/cc/mrbird/febs/mall/service/MallMemberService.java | 8 src/main/resources/static/layui/images/face/45.gif | 0 src/main/java/cc/mrbird/febs/common/exception/FebsException.java | 15 src/main/java/cc/mrbird/febs/common/configure/MybatisPlusConfigure.java | 50 src/main/resources/static/layui/images/face/5.gif | 0 src/main/java/cc/mrbird/febs/monitor/endpoint/FebsMetricsEndpoint.java | 212 src/main/java/cc/mrbird/febs/common/aspect/BaseAspectSupport.java | 36 src/main/java/cc/mrbird/febs/system/service/impl/DeptServiceImpl.java | 119 src/main/resources/static/febs/images/avatar/20180414165846.jpg | 0 src/main/resources/static/layui/css/modules/layer/default/loading-1.gif | 0 src/main/java/cc/mrbird/febs/system/entity/UserDataPermission.java | 19 src/main/resources/templates/febs/views/job/jobLog.html | 209 src/main/resources/static/febs/lay/extends/formSelects-v4.min.js | 1 src/main/resources/static/layui/images/face/44.gif | 0 src/main/resources/static/febs/images/avatar/gaOngJwsRYRaVAuXXcmB.png | 0 src/main/java/cc/mrbird/febs/common/utils/AddressUtil.java | 67 src/main/resources/templates/febs/views/monitor/loginLog.html | 184 src/main/java/cc/mrbird/febs/common/xss/XssHttpServletRequestWrapper.java | 86 src/main/resources/static/layui/images/face/3.gif | 0 src/main/java/cc/mrbird/febs/others/service/IEximportService.java | 32 src/main/java/cc/mrbird/febs/common/utils/TreeUtil.java | 104 src/main/resources/static/febs/images/avatar/964e40b005724165b8cf772355796c8c.jpeg | 0 src/main/java/cc/mrbird/febs/others/entity/Eximport.java | 47 src/main/resources/logback-spring.xml | 54 src/main/java/cc/mrbird/febs/common/utils/HttpContextUtil.java | 20 src/main/java/cc/mrbird/febs/monitor/service/impl/LoginLogServiceImpl.java | 90 src/main/resources/static/layui/images/face/38.gif | 0 src/main/java/cc/mrbird/febs/monitor/service/impl/SessionServiceImpl.java | 76 src/main/java/cc/mrbird/febs/system/entity/Role.java | 67 src/main/resources/templates/febs/views/others/datapermission/test.html | 41 src/main/resources/templates/febs/views/system/role/role.html | 284 log/error/error.2021-09-16.log | 176 src/main/java/cc/mrbird/febs/monitor/controller/LogController.java | 58 src/main/java/cc/mrbird/febs/monitor/mapper/LoginLogMapper.java | 43 src/main/java/cc/mrbird/febs/others/controller/DataPermissionTestController.java | 37 src/main/resources/banner.txt | 9 src/main/resources/templates/febs/views/monitor/log.html | 207 src/main/java/cc/mrbird/febs/monitor/helper/FebsActuatorHelper.java | 214 src/main/resources/static/febs/images/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg | 0 src/main/resources/static/layui/images/face/22.gif | 0 src/main/resources/static/layui/images/face/65.gif | 0 src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a10.jpg | 0 src/main/java/cc/mrbird/febs/common/entity/BaseEntity.java | 30 src/main/resources/templates/febs/views/others/febs/form.html | 211 src/main/resources/static/layui/images/face/50.gif | 0 src/main/resources/static/layui/images/face/4.gif | 0 src/main/resources/templates/febs/views/others/febs/others.html | 74 src/main/resources/templates/index.html | 41 src/main/resources/static/febs/css/febs.css | 1 src/main/resources/static/layui/images/face/16.gif | 0 src/main/java/cc/mrbird/febs/monitor/mapper/LogMapper.java | 11 src/main/resources/static/layui/css/modules/layer/default/loading-2.gif | 0 src/main/resources/static/layui/images/face/59.gif | 0 src/main/resources/static/febs/lay/extends/eleTree.js | 1418 ++ src/main/resources/templates/febs/views/login.html | 213 411 files changed, 34,344 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index 32858aa..7a94c4a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,12 +1,38 @@ -*.class +HELP.md +target/ +logs/ +!.mvn/wrapper/maven-wrapper.jar +!**/src/main/** +!**/src/test/** -# Mobile Tools for Java (J2ME) -.mtj.tmp/ +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache -# Package Files # -*.jar -*.war -*.ear +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr -# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml -hs_err_pid* +.DS_Store + +.mvn +mvnw +mvnw.cmd + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +build/ + +### VS Code ### +.vscode/ diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/log/error/error.2021-09-16.log b/log/error/error.2021-09-16.log new file mode 100644 index 0000000..a6f542a --- /dev/null +++ b/log/error/error.2021-09-16.log @@ -0,0 +1,176 @@ +2021-09-16 11:23:17 ERROR main org.springframework.boot.SpringApplication Application run failed +org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'shiroFilterFactoryBean' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: BeanPostProcessor before instantiation of bean failed; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authorizationAttributeSourceAdvisor' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: Unsatisfied dependency expressed through method 'authorizationAttributeSourceAdvisor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: Unsatisfied dependency expressed through method 'securityManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroRealm': Unsatisfied dependency expressed through method 'setMenuService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/service/impl/MenuServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:512) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) + at org.springframework.context.support.PostProcessorRegistrationDelegate.registerBeanPostProcessors(PostProcessorRegistrationDelegate.java:240) + at org.springframework.context.support.AbstractApplicationContext.registerBeanPostProcessors(AbstractApplicationContext.java:722) + at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:535) + at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141) + at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747) + at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397) + at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) + at org.springframework.boot.builder.SpringApplicationBuilder.run(SpringApplicationBuilder.java:140) + at cc.mrbird.febs.FebsShiroApplication.main(FebsShiroApplication.java:22) +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'authorizationAttributeSourceAdvisor' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: Unsatisfied dependency expressed through method 'authorizationAttributeSourceAdvisor' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: Unsatisfied dependency expressed through method 'securityManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroRealm': Unsatisfied dependency expressed through method 'setMenuService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/service/impl/MenuServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:207) + at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:91) + at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:109) + at org.springframework.aop.aspectj.annotation.AnnotationAwareAspectJAutoProxyCreator.findCandidateAdvisors(AnnotationAwareAspectJAutoProxyCreator.java:92) + at org.springframework.aop.aspectj.autoproxy.AspectJAwareAdvisorAutoProxyCreator.shouldSkip(AspectJAwareAdvisorAutoProxyCreator.java:101) + at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessBeforeInstantiation(AbstractAutoProxyCreator.java:251) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:1141) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.resolveBeforeInstantiation(AbstractAutowireCapableBeanFactory.java:1114) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:506) + ... 13 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'securityManager' defined in class path resource [cc/mrbird/febs/common/authentication/ShiroConfig.class]: Unsatisfied dependency expressed through method 'securityManager' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroRealm': Unsatisfied dependency expressed through method 'setMenuService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/service/impl/MenuServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:539) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 30 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'shiroRealm': Unsatisfied dependency expressed through method 'setMenuService' parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/service/impl/MenuServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:723) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 44 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'menuServiceImpl' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/service/impl/MenuServiceImpl.class]: Unsatisfied dependency expressed through constructor parameter 0; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:798) + at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:228) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:1358) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1204) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredMethodElement.inject(AutowiredAnnotationBeanPostProcessor.java:715) + ... 58 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuServiceImpl': Unsatisfied dependency expressed through field 'baseMapper'; nested exception is org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:643) + at org.springframework.beans.factory.annotation.InjectionMetadata.inject(InjectionMetadata.java:130) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor.postProcessProperties(AutowiredAnnotationBeanPostProcessor.java:399) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1422) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:885) + at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:789) + ... 71 common frames omitted +Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'roleMenuMapper' defined in file [/Users/helius/code/xc-mall/target/classes/cc/mrbird/febs/system/mapper/RoleMenuMapper.class]: Unsatisfied dependency expressed through bean property 'sqlSessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1526) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1406) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:594) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor$AutowiredFieldElement.inject(AutowiredAnnotationBeanPostProcessor.java:640) + ... 85 common frames omitted +Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sqlSessionFactory' defined in class path resource [com/baomidou/mybatisplus/autoconfigure/MybatisPlusAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:656) + at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:636) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1338) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1177) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:557) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:517) + at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:323) + at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222) + at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:321) + at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) + at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1287) + at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1207) + at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireByType(AbstractAutowireCapableBeanFactory.java:1511) + ... 96 common frames omitted +Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.apache.ibatis.session.SqlSessionFactory]: Factory method 'sqlSessionFactory' threw exception; nested exception is org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185) + at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:651) + ... 109 common frames omitted +Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:595) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.afterPropertiesSet(MybatisSqlSessionFactoryBean.java:430) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.getObject(MybatisSqlSessionFactoryBean.java:628) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration.sqlSessionFactory(MybatisPlusAutoConfiguration.java:214) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$1422477e.CGLIB$sqlSessionFactory$2(<generated>) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$1422477e$$FastClassBySpringCGLIB$$52630a38.invoke(<generated>) + at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244) + at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:331) + at com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$1422477e.sqlSessionFactory(<generated>) + at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) + at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) + at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) + at java.lang.reflect.Method.invoke(Method.java:498) + at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154) + ... 110 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error parsing Mapper XML. The XML location is 'file [/Users/helius/code/xc-mall/target/classes/mapper/job/JobMapper.xml]'. Cause: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:122) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.parse(XMLMapperBuilder.java:94) + at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:593) + ... 123 common frames omitted +Caused by: org.apache.ibatis.builder.BuilderException: Error resolving class. Cause: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:118) + at org.apache.ibatis.builder.xml.XMLStatementBuilder.parseStatementNode(XMLStatementBuilder.java:102) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:137) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.buildStatementFromContext(XMLMapperBuilder.java:130) + at org.apache.ibatis.builder.xml.XMLMapperBuilder.configurationElement(XMLMapperBuilder.java:120) + ... 125 common frames omitted +Caused by: org.apache.ibatis.type.TypeException: Could not resolve type alias 'job'. Cause: java.lang.ClassNotFoundException: Cannot find class: job + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:120) + at org.apache.ibatis.builder.BaseBuilder.resolveAlias(BaseBuilder.java:149) + at org.apache.ibatis.builder.BaseBuilder.resolveClass(BaseBuilder.java:116) + ... 129 common frames omitted +Caused by: java.lang.ClassNotFoundException: Cannot find class: job + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:200) + at org.apache.ibatis.io.ClassLoaderWrapper.classForName(ClassLoaderWrapper.java:89) + at org.apache.ibatis.io.Resources.classForName(Resources.java:261) + at org.apache.ibatis.type.TypeAliasRegistry.resolveAlias(TypeAliasRegistry.java:116) + ... 131 common frames omitted diff --git a/log/info/info.2021-09-16.log b/log/info/info.2021-09-16.log new file mode 100644 index 0000000..3d0639d --- /dev/null +++ b/log/info/info.2021-09-16.log @@ -0,0 +1,303 @@ +2021-09-16 11:23:14 INFO main cc.mrbird.febs.FebsShiroApplication Starting FebsShiroApplication on heliusdeMBP with PID 22685 (/Users/helius/code/xc-mall/target/classes started by helius in /Users/helius/code/xc-mall) +2021-09-16 11:23:14 INFO main cc.mrbird.febs.FebsShiroApplication The following profiles are active: dev +2021-09-16 11:23:15 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode! +2021-09-16 11:23:15 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2021-09-16 11:23:15 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31ms. Found 0 Redis repository interfaces. +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$3fe84bb5] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDatasourceAnnotationAdvisor' of type [com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'febsProperties' of type [cc.mrbird.febs.common.properties.FebsProperties$$EnhancerBySpringCGLIB$$4120fa60] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'shiroConfig' of type [cc.mrbird.febs.common.authentication.ShiroConfig$$EnhancerBySpringCGLIB$$41d9dc8d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatisPlusConfigure' of type [cc.mrbird.febs.common.configure.MybatisPlusConfigure$$EnhancerBySpringCGLIB$$3db78111] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataPermissionInterceptor' of type [cc.mrbird.febs.common.interceptor.DataPermissionInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'desensitizationInterceptor' of type [cc.mrbird.febs.common.interceptor.DesensitizationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$1422477e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSourceCreator' of type [com.baomidou.dynamic.datasource.creator.DataSourceCreator] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDataSourceProvider' of type [com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:16 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource detect P6SPY plugin and enabled it +2021-09-16 11:23:16 INFO main com.zaxxer.hikari.HikariDataSource base - Starting... +2021-09-16 11:23:17 INFO main com.zaxxer.hikari.HikariDataSource base - Start completed. +2021-09-16 11:23:17 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource [base] wrap p6spy plugin +2021-09-16 11:23:17 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource - load a datasource named [base] success +2021-09-16 11:23:17 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource initial loaded [1] datasource,primary datasource named [base] +2021-09-16 11:23:17 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSource' of type [com.baomidou.dynamic.datasource.DynamicRoutingDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:17 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:17 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:17 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource start closing .... +2021-09-16 11:23:17 INFO main com.zaxxer.hikari.HikariDataSource base - Shutdown initiated... +2021-09-16 11:23:17 INFO main com.zaxxer.hikari.HikariDataSource base - Shutdown completed. +2021-09-16 11:23:17 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource all closed success,bye +2021-09-16 11:23:17 INFO main org.springframework.boot.autoconfigure.logging.ConditionEvaluationReportLoggingListener + +Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled. +2021-09-16 11:23:40 INFO main cc.mrbird.febs.FebsShiroApplication Starting FebsShiroApplication on heliusdeMBP with PID 22697 (/Users/helius/code/xc-mall/target/classes started by helius in /Users/helius/code/xc-mall) +2021-09-16 11:23:40 INFO main cc.mrbird.febs.FebsShiroApplication The following profiles are active: dev +2021-09-16 11:23:41 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode! +2021-09-16 11:23:41 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2021-09-16 11:23:41 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 25ms. Found 0 Redis repository interfaces. +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$e3a2f24e] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDatasourceAnnotationAdvisor' of type [com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'febsProperties' of type [cc.mrbird.febs.common.properties.FebsProperties$$EnhancerBySpringCGLIB$$e4dba0f9] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'shiroConfig' of type [cc.mrbird.febs.common.authentication.ShiroConfig$$EnhancerBySpringCGLIB$$e5948326] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatisPlusConfigure' of type [cc.mrbird.febs.common.configure.MybatisPlusConfigure$$EnhancerBySpringCGLIB$$e17227aa] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataPermissionInterceptor' of type [cc.mrbird.febs.common.interceptor.DataPermissionInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'desensitizationInterceptor' of type [cc.mrbird.febs.common.interceptor.DesensitizationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$b7dcee17] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSourceCreator' of type [com.baomidou.dynamic.datasource.creator.DataSourceCreator] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDataSourceProvider' of type [com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:42 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource detect P6SPY plugin and enabled it +2021-09-16 11:23:42 INFO main com.zaxxer.hikari.HikariDataSource base - Starting... +2021-09-16 11:23:43 INFO main com.zaxxer.hikari.HikariDataSource base - Start completed. +2021-09-16 11:23:43 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource [base] wrap p6spy plugin +2021-09-16 11:23:43 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource - load a datasource named [base] success +2021-09-16 11:23:43 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource initial loaded [1] datasource,primary datasource named [base] +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSource' of type [com.baomidou.dynamic.datasource.DynamicRoutingDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuMapper' of type [com.sun.proxy.$Proxy117] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuServiceImpl' of type [cc.mrbird.febs.system.service.impl.RoleMenuServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuMapper' of type [com.sun.proxy.$Proxy119] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuServiceImpl' of type [cc.mrbird.febs.system.service.impl.MenuServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleMapper' of type [com.sun.proxy.$Proxy121] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleServiceImpl' of type [cc.mrbird.febs.system.service.impl.UserRoleServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionMapper' of type [com.sun.proxy.$Proxy123] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionService' of type [cc.mrbird.febs.system.service.impl.UserDataPermissionServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userMapper' of type [com.sun.proxy.$Proxy125] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userServiceImpl' of type [cc.mrbird.febs.system.service.impl.UserServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMapper' of type [com.sun.proxy.$Proxy128] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:43 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleServiceImpl' of type [cc.mrbird.febs.system.service.impl.RoleServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'shiroRealm' of type [cc.mrbird.febs.common.authentication.ShiroRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'redisSessionDAO' of type [org.crazycake.shiro.RedisSessionDAO] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sessionManager' of type [org.apache.shiro.web.session.mgt.DefaultWebSessionManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:23:44 INFO main org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8080 (http) +2021-09-16 11:23:44 INFO main org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8080"] +2021-09-16 11:23:44 INFO main org.apache.catalina.core.StandardService Starting service [Tomcat] +2021-09-16 11:23:44 INFO main org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/9.0.31] +2021-09-16 11:23:44 INFO main org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext +2021-09-16 11:23:44 INFO main org.springframework.web.context.ContextLoader Root WebApplicationContext: initialization completed in 4119 ms +2021-09-16 11:23:45 INFO main cc.mrbird.febs.common.xss.XssFilter ------------ xss filter init ------------ +2021-09-16 11:23:46 INFO main org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver Exposing 2 endpoint(s) beneath base path '/actuator' +2021-09-16 11:23:46 INFO main springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] +2021-09-16 11:23:46 INFO main org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Initializing ExecutorService +2021-09-16 11:23:46 INFO main org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Initializing ExecutorService 'febsAsyncThreadPool' +2021-09-16 11:23:46 INFO main org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping Adding welcome page template: index +2021-09-16 11:23:47 INFO main org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor +2021-09-16 11:23:47 INFO main org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2021-09-16 11:23:47 INFO main org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created. +2021-09-16 11:23:47 INFO main org.quartz.simpl.RAMJobStore RAMJobStore initialized. +2021-09-16 11:23:47 INFO main org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2021-09-16 11:23:47 INFO main org.quartz.impl.StdSchedulerFactory Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. +2021-09-16 11:23:47 INFO main org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2 +2021-09-16 11:23:47 INFO main org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@7e20f4e3 +2021-09-16 11:23:47 INFO main springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper Context refreshed +2021-09-16 11:23:47 INFO main springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper Found 1 custom documentation plugin(s) +2021-09-16 11:23:47 INFO main springfox.documentation.spring.web.scanners.ApiListingReferenceScanner Scanning for api listing references +2021-09-16 11:23:47 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: getDeptTreeUsingGET_1 +2021-09-16 11:23:47 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_1 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_2 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_3 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_4 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_5 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_6 +2021-09-16 11:23:48 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: indexUsingGET_1 +2021-09-16 11:23:48 INFO main org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now +2021-09-16 11:23:48 INFO main org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED started. +2021-09-16 11:23:48 INFO main org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8080"] +2021-09-16 11:23:48 INFO main org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8080 (http) with context path '' +2021-09-16 11:23:48 INFO main cc.mrbird.febs.FebsShiroApplication Started FebsShiroApplication in 8.381 seconds (JVM running for 9.123) +2021-09-16 11:23:48 INFO main io.lettuce.core.EpollProvider Starting without optional epoll library +2021-09-16 11:23:48 INFO main io.lettuce.core.KqueueProvider Starting without optional kqueue library +2021-09-16 11:23:48 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner __ ___ _ ___ _ ____ _____ ____ +2021-09-16 11:23:48 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner / /` / / \ | |\/| | |_) | | | |_ | | | |_ +2021-09-16 11:23:48 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner \_\_, \_\_/ |_| | |_| |_|__ |_|__ |_| |_|__ +2021-09-16 11:23:48 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner +2021-09-16 11:23:48 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner FEBS 权限系统启动完毕,地址:http://192.168.0.10:8080/login +2021-09-16 11:23:49 INFO RMI TCP Connection(1)-192.168.0.10 org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet' +2021-09-16 11:23:49 INFO RMI TCP Connection(1)-192.168.0.10 org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet' +2021-09-16 11:23:49 INFO RMI TCP Connection(1)-192.168.0.10 org.springframework.web.servlet.DispatcherServlet Completed initialization in 12 ms +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED paused. +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED shutting down. +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED paused. +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete. +2021-09-16 11:23:53 INFO SpringContextShutdownHook org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Shutting down ExecutorService 'febsAsyncThreadPool' +2021-09-16 11:23:53 INFO SpringContextShutdownHook com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource start closing .... +2021-09-16 11:23:53 INFO SpringContextShutdownHook com.zaxxer.hikari.HikariDataSource base - Shutdown initiated... +2021-09-16 11:23:53 INFO SpringContextShutdownHook com.zaxxer.hikari.HikariDataSource base - Shutdown completed. +2021-09-16 11:23:53 INFO SpringContextShutdownHook com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource all closed success,bye +2021-09-16 11:37:49 INFO main cc.mrbird.febs.FebsShiroApplication Starting FebsShiroApplication on heliusdeMBP with PID 22898 (/Users/helius/code/xc-mall/target/classes started by helius in /Users/helius/code/xc-mall) +2021-09-16 11:37:49 INFO main cc.mrbird.febs.FebsShiroApplication The following profiles are active: dev +2021-09-16 11:37:51 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Multiple Spring Data modules found, entering strict repository configuration mode! +2021-09-16 11:37:51 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Bootstrapping Spring Data Redis repositories in DEFAULT mode. +2021-09-16 11:37:51 INFO main org.springframework.data.repository.config.RepositoryConfigurationDelegate Finished Spring Data repository scanning in 31ms. Found 0 Redis repository interfaces. +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource.dynamic-com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration' of type [com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration$$EnhancerBySpringCGLIB$$d0ce47b4] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dsProcessor' of type [com.baomidou.dynamic.datasource.processor.DsHeaderProcessor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDatasourceAnnotationAdvisor' of type [com.baomidou.dynamic.datasource.aop.DynamicDataSourceAnnotationAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'febsProperties' of type [cc.mrbird.febs.common.properties.FebsProperties$$EnhancerBySpringCGLIB$$d206f65f] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'shiroConfig' of type [cc.mrbird.febs.common.authentication.ShiroConfig$$EnhancerBySpringCGLIB$$d2bfd88c] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatis-plus-com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'mybatisPlusConfigure' of type [cc.mrbird.febs.common.configure.MybatisPlusConfigure$$EnhancerBySpringCGLIB$$ce9d7d10] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataPermissionInterceptor' of type [cc.mrbird.febs.common.interceptor.DataPermissionInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'desensitizationInterceptor' of type [cc.mrbird.febs.common.interceptor.DesensitizationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'paginationInterceptor' of type [com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration' of type [com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration$$EnhancerBySpringCGLIB$$a508437d] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSourceCreator' of type [com.baomidou.dynamic.datasource.creator.DataSourceCreator] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dynamicDataSourceProvider' of type [com.baomidou.dynamic.datasource.provider.YmlDynamicDataSourceProvider] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:52 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource detect P6SPY plugin and enabled it +2021-09-16 11:37:52 INFO main com.zaxxer.hikari.HikariDataSource base - Starting... +2021-09-16 11:37:53 INFO main com.zaxxer.hikari.HikariDataSource base - Start completed. +2021-09-16 11:37:53 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource [base] wrap p6spy plugin +2021-09-16 11:37:53 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource - load a datasource named [base] success +2021-09-16 11:37:53 INFO main com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource initial loaded [1] datasource,primary datasource named [base] +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'dataSource' of type [com.baomidou.dynamic.datasource.DynamicRoutingDataSource] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'spring.datasource-org.springframework.boot.autoconfigure.jdbc.DataSourceProperties' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceProperties] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker' of type [org.springframework.boot.autoconfigure.jdbc.DataSourceInitializerInvoker] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sqlSessionFactory' of type [org.apache.ibatis.session.defaults.DefaultSqlSessionFactory] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sqlSessionTemplate' of type [org.mybatis.spring.SqlSessionTemplate] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuMapper' of type [com.sun.proxy.$Proxy117] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMenuServiceImpl' of type [cc.mrbird.febs.system.service.impl.RoleMenuServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuMapper' of type [com.sun.proxy.$Proxy119] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'menuServiceImpl' of type [cc.mrbird.febs.system.service.impl.MenuServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleMapper' of type [com.sun.proxy.$Proxy121] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userRoleServiceImpl' of type [cc.mrbird.febs.system.service.impl.UserRoleServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionMapper' of type [com.sun.proxy.$Proxy123] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userDataPermissionService' of type [cc.mrbird.febs.system.service.impl.UserDataPermissionServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userMapper' of type [com.sun.proxy.$Proxy125] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'userServiceImpl' of type [cc.mrbird.febs.system.service.impl.UserServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMapper' of type [org.mybatis.spring.mapper.MapperFactoryBean] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleMapper' of type [com.sun.proxy.$Proxy128] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'roleServiceImpl' of type [cc.mrbird.febs.system.service.impl.RoleServiceImpl] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'shiroRealm' of type [cc.mrbird.febs.common.authentication.ShiroRealm] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'redisSessionDAO' of type [org.crazycake.shiro.RedisSessionDAO] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'sessionManager' of type [org.apache.shiro.web.session.mgt.DefaultWebSessionManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'securityManager' of type [org.apache.shiro.web.mgt.DefaultWebSecurityManager] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:53 INFO main org.springframework.context.support.PostProcessorRegistrationDelegate$BeanPostProcessorChecker Bean 'authorizationAttributeSourceAdvisor' of type [org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor] is not eligible for getting processed by all BeanPostProcessors (for example: not eligible for auto-proxying) +2021-09-16 11:37:54 INFO main org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat initialized with port(s): 8080 (http) +2021-09-16 11:37:54 INFO main org.apache.coyote.http11.Http11NioProtocol Initializing ProtocolHandler ["http-nio-8080"] +2021-09-16 11:37:54 INFO main org.apache.catalina.core.StandardService Starting service [Tomcat] +2021-09-16 11:37:54 INFO main org.apache.catalina.core.StandardEngine Starting Servlet engine: [Apache Tomcat/9.0.31] +2021-09-16 11:37:54 INFO main org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring embedded WebApplicationContext +2021-09-16 11:37:54 INFO main org.springframework.web.context.ContextLoader Root WebApplicationContext: initialization completed in 4799 ms +2021-09-16 11:37:55 INFO main cc.mrbird.febs.common.xss.XssFilter ------------ xss filter init ------------ +2021-09-16 11:37:56 INFO main org.springframework.boot.actuate.endpoint.web.EndpointLinksResolver Exposing 2 endpoint(s) beneath base path '/actuator' +2021-09-16 11:37:56 INFO main springfox.documentation.spring.web.PropertySourcedRequestMappingHandlerMapping Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2Controller#getDocumentation(String, HttpServletRequest)] +2021-09-16 11:37:56 INFO main org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Initializing ExecutorService +2021-09-16 11:37:56 INFO main org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Initializing ExecutorService 'febsAsyncThreadPool' +2021-09-16 11:37:56 INFO main org.springframework.boot.autoconfigure.web.servlet.WelcomePageHandlerMapping Adding welcome page template: index +2021-09-16 11:37:57 INFO main org.quartz.impl.StdSchedulerFactory Using default implementation for ThreadExecutor +2021-09-16 11:37:57 INFO main org.quartz.core.SchedulerSignalerImpl Initialized Scheduler Signaller of type: class org.quartz.core.SchedulerSignalerImpl +2021-09-16 11:37:57 INFO main org.quartz.core.QuartzScheduler Quartz Scheduler v.2.3.2 created. +2021-09-16 11:37:57 INFO main org.quartz.simpl.RAMJobStore RAMJobStore initialized. +2021-09-16 11:37:57 INFO main org.quartz.core.QuartzScheduler Scheduler meta-data: Quartz Scheduler (v2.3.2) 'quartzScheduler' with instanceId 'NON_CLUSTERED' + Scheduler class: 'org.quartz.core.QuartzScheduler' - running locally. + NOT STARTED. + Currently in standby mode. + Number of jobs executed: 0 + Using thread pool 'org.quartz.simpl.SimpleThreadPool' - with 10 threads. + Using job-store 'org.quartz.simpl.RAMJobStore' - which does not support persistence. and is not clustered. + +2021-09-16 11:37:57 INFO main org.quartz.impl.StdSchedulerFactory Quartz scheduler 'quartzScheduler' initialized from an externally provided properties instance. +2021-09-16 11:37:57 INFO main org.quartz.impl.StdSchedulerFactory Quartz scheduler version: 2.3.2 +2021-09-16 11:37:57 INFO main org.quartz.core.QuartzScheduler JobFactory set to: org.springframework.scheduling.quartz.SpringBeanJobFactory@16ef1160 +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper Context refreshed +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper Found 1 custom documentation plugin(s) +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.scanners.ApiListingReferenceScanner Scanning for api listing references +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: getDeptTreeUsingGET_1 +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_1 +2021-09-16 11:37:57 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_2 +2021-09-16 11:37:58 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_3 +2021-09-16 11:37:58 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_4 +2021-09-16 11:37:58 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_5 +2021-09-16 11:37:58 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: exportUsingGET_6 +2021-09-16 11:37:58 INFO main springfox.documentation.spring.web.readers.operation.CachingOperationNameGenerator Generating unique operation named: indexUsingGET_1 +2021-09-16 11:37:58 INFO main org.springframework.scheduling.quartz.SchedulerFactoryBean Starting Quartz Scheduler now +2021-09-16 11:37:58 INFO main org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED started. +2021-09-16 11:37:58 INFO main org.apache.coyote.http11.Http11NioProtocol Starting ProtocolHandler ["http-nio-8080"] +2021-09-16 11:37:58 INFO main org.springframework.boot.web.embedded.tomcat.TomcatWebServer Tomcat started on port(s): 8080 (http) with context path '' +2021-09-16 11:37:58 INFO main cc.mrbird.febs.FebsShiroApplication Started FebsShiroApplication in 9.48 seconds (JVM running for 10.404) +2021-09-16 11:37:58 INFO main io.lettuce.core.EpollProvider Starting without optional epoll library +2021-09-16 11:37:58 INFO main io.lettuce.core.KqueueProvider Starting without optional kqueue library +2021-09-16 11:37:58 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner __ ___ _ ___ _ ____ _____ ____ +2021-09-16 11:37:58 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner / /` / / \ | |\/| | |_) | | | |_ | | | |_ +2021-09-16 11:37:58 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner \_\_, \_\_/ |_| | |_| |_|__ |_|__ |_| |_|__ +2021-09-16 11:37:58 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner +2021-09-16 11:37:58 INFO main cc.mrbird.febs.common.runner.FebsStartedUpRunner FEBS 权限系统启动完毕,地址:http://192.168.0.10:8080/login +2021-09-16 11:37:58 INFO RMI TCP Connection(3)-192.168.0.10 org.apache.catalina.core.ContainerBase.[Tomcat].[localhost].[/] Initializing Spring DispatcherServlet 'dispatcherServlet' +2021-09-16 11:37:58 INFO RMI TCP Connection(3)-192.168.0.10 org.springframework.web.servlet.DispatcherServlet Initializing Servlet 'dispatcherServlet' +2021-09-16 11:37:58 INFO RMI TCP Connection(3)-192.168.0.10 org.springframework.web.servlet.DispatcherServlet Completed initialization in 11 ms +2021-09-16 11:38:28 INFO http-nio-8080-exec-1 org.apache.shiro.session.mgt.AbstractValidatingSessionManager Enabling session validation scheduler... +2021-09-16 11:38:29 INFO http-nio-8080-exec-3 cc.mrbird.febs.common.aspect.LimitAspect IP:192.168.0.10 第 1 次访问key为 [limit_get_captcha192.168.0.10],描述为 [获取验证码] 的接口 +2021-09-16 11:38:38 INFO http-nio-8080-exec-7 cc.mrbird.febs.common.aspect.LimitAspect IP:192.168.0.10 第 2 次访问key为 [limit_get_captcha192.168.0.10],描述为 [获取验证码] 的接口 +2021-09-16 11:38:48 INFO http-nio-8080-exec-8 cc.mrbird.febs.common.aspect.LimitAspect IP:192.168.0.10 第 1 次访问key为 [limit_login192.168.0.10],描述为 [登录接口] 的接口 +2021-09-16 11:38:48 INFO http-nio-8080-exec-8 p6spy 2021-09-16 11:38:48 | 耗时 32 ms | SQL 语句: +SELECT u.user_id userId, u.username, u.email, u.mobile, u.password, u.status, u.create_time createTime, u.ssex sex, u.dept_id deptId, u.last_login_time lastLoginTime, u.modify_time modifyTime, u.description, u.avatar, u.theme, u.is_tab isTab, d.dept_name deptName, GROUP_CONCAT(r.role_id) roleId, GROUP_CONCAT(r.ROLE_NAME) roleName FROM t_user u LEFT JOIN t_dept d ON (u.dept_id = d.dept_id) LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id) LEFT JOIN t_role r ON r.role_id = ur.role_id WHERE u.username = 'mrbird' GROUP BY u.username, u.user_id, u.email, u.mobile, u.password, u.status, u.create_time, u.ssex, u.dept_id, u.last_login_time, u.modify_time, u.description, u.avatar, u.theme, u.is_tab; +2021-09-16 11:38:48 INFO http-nio-8080-exec-8 p6spy 2021-09-16 11:38:48 | 耗时 26 ms | SQL 语句: +SELECT USER_ID, dept_id FROM t_user_data_permission WHERE (USER_ID = '1'); +2021-09-16 11:38:48 INFO http-nio-8080-exec-8 p6spy 2021-09-16 11:38:48 | 耗时 58 ms | SQL 语句: +INSERT INTO t_login_log (USERNAME, LOGIN_TIME, LOCATION, IP, `SYSTEM`, BROWSER) VALUES ('mrbird', '2021-09-16T11:38:48.452+0800', '内网IP|0|0|内网IP|内网IP', '192.168.0.10', 'Mac OS X 10_15_6', 'Chrome 93'); +2021-09-16 11:38:48 INFO http-nio-8080-exec-9 p6spy 2021-09-16 11:38:48 | 耗时 27 ms | SQL 语句: +SELECT r.* FROM t_role r LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) WHERE u.username = 'MrBird'; +2021-09-16 11:38:48 INFO http-nio-8080-exec-9 p6spy 2021-09-16 11:38:48 | 耗时 28 ms | SQL 语句: +SELECT m.perms FROM t_role r LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) LEFT JOIN t_role_menu rm ON (rm.role_id = r.role_id) LEFT JOIN t_menu m ON (m.menu_id = rm.menu_id) WHERE u.username = 'MrBird' AND m.perms IS NOT NULL AND m.perms <> ''; +2021-09-16 11:38:48 INFO http-nio-8080-exec-9 p6spy 2021-09-16 11:38:48 | 耗时 27 ms | SQL 语句: +SELECT u.user_id userId, u.username, u.email, u.mobile, u.password, u.status, u.create_time createTime, u.ssex sex, u.dept_id deptId, u.last_login_time lastLoginTime, u.modify_time modifyTime, u.description, u.avatar, u.theme, u.is_tab isTab, d.dept_name deptName, GROUP_CONCAT(r.role_id) roleId, GROUP_CONCAT(r.ROLE_NAME) roleName FROM t_user u LEFT JOIN t_dept d ON (u.dept_id = d.dept_id) LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id) LEFT JOIN t_role r ON r.role_id = ur.role_id WHERE u.username = 'MrBird' GROUP BY u.username, u.user_id, u.email, u.mobile, u.password, u.status, u.create_time, u.ssex, u.dept_id, u.last_login_time, u.modify_time, u.description, u.avatar, u.theme, u.is_tab; +2021-09-16 11:38:50 INFO http-nio-8080-exec-9 p6spy 2021-09-16 11:38:50 | 耗时 28 ms | SQL 语句: +SELECT m.* FROM t_menu m WHERE m.type <> 1 AND m.MENU_ID IN (SELECT DISTINCT rm.menu_id FROM t_role_menu rm LEFT JOIN t_role r ON (rm.role_id = r.role_id) LEFT JOIN t_user_role ur ON (ur.role_id = r.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) WHERE u.username = 'MrBird') ORDER BY m.order_num; +2021-09-16 11:38:50 INFO http-nio-8080-exec-6 p6spy 2021-09-16 11:38:50 | 耗时 25 ms | SQL 语句: +SELECT count(1) FROM t_login_log; +2021-09-16 11:38:51 INFO http-nio-8080-exec-6 p6spy 2021-09-16 11:38:51 | 耗时 26 ms | SQL 语句: +SELECT count(1) FROM t_login_log WHERE login_time BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY); +2021-09-16 11:38:51 INFO Febs-Async-Thread1 p6spy 2021-09-16 11:38:51 | 耗时 55 ms | SQL 语句: +UPDATE t_user SET LAST_LOGIN_TIME = '2021-09-16T11:38:50.953+0800' WHERE (USERNAME = 'MrBird'); +2021-09-16 11:38:51 INFO http-nio-8080-exec-6 p6spy 2021-09-16 11:38:51 | 耗时 26 ms | SQL 语句: +SELECT count(DISTINCT (ip)) FROM t_login_log WHERE login_time BETWEEN CURDATE() AND DATE_ADD(CURDATE(), INTERVAL 1 DAY); +2021-09-16 11:38:51 INFO http-nio-8080-exec-6 p6spy 2021-09-16 11:38:51 | 耗时 26 ms | SQL 语句: +SELECT date_format(l.login_time, '%m-%d') days, count(1) count FROM (SELECT * FROM t_login_log WHERE date_sub(curdate(), INTERVAL 10 day) <= date(login_time)) AS l WHERE 1 = 1 GROUP BY days; +2021-09-16 11:38:51 INFO http-nio-8080-exec-6 p6spy 2021-09-16 11:38:51 | 耗时 25 ms | SQL 语句: +SELECT date_format(l.login_time, '%m-%d') days, count(1) count FROM (SELECT * FROM t_login_log WHERE date_sub(curdate(), INTERVAL 10 day) <= date(login_time)) AS l WHERE 1 = 1 AND l.username = 'MrBird' GROUP BY days; +2021-09-16 11:38:58 INFO http-nio-8080-exec-5 p6spy 2021-09-16 11:38:58 | 耗时 26 ms | SQL 语句: +SELECT r.* FROM t_role r LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) WHERE u.username = 'MrBird'; +2021-09-16 11:38:59 INFO http-nio-8080-exec-5 p6spy 2021-09-16 11:38:59 | 耗时 27 ms | SQL 语句: +SELECT m.perms FROM t_role r LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) LEFT JOIN t_user u ON (u.user_id = ur.user_id) LEFT JOIN t_role_menu rm ON (rm.role_id = r.role_id) LEFT JOIN t_menu m ON (m.menu_id = rm.menu_id) WHERE u.username = 'MrBird' AND m.perms IS NOT NULL AND m.perms <> ''; +2021-09-16 11:38:59 INFO http-nio-8080-exec-5 p6spy 2021-09-16 11:38:59 | 耗时 26 ms | SQL 语句: +SELECT u.user_id userId, u.username, u.email, u.mobile, u.password, u.status, u.create_time createTime, u.ssex sex, u.dept_id deptId, u.last_login_time lastLoginTime, u.modify_time modifyTime, u.description, u.avatar, u.theme, u.is_tab isTab, d.dept_name deptName, GROUP_CONCAT(r.role_id) roleId, GROUP_CONCAT(r.ROLE_NAME) roleName FROM t_user u LEFT JOIN t_dept d ON (u.dept_id = d.dept_id) LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id) LEFT JOIN t_role r ON r.role_id = ur.role_id WHERE u.username = 'MrBird' GROUP BY u.username, u.user_id, u.email, u.mobile, u.password, u.status, u.create_time, u.ssex, u.dept_id, u.last_login_time, u.modify_time, u.description, u.avatar, u.theme, u.is_tab; +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED paused. +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.springframework.scheduling.quartz.SchedulerFactoryBean Shutting down Quartz Scheduler +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED shutting down. +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED paused. +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.quartz.core.QuartzScheduler Scheduler quartzScheduler_$_NON_CLUSTERED shutdown complete. +2021-09-16 11:40:31 INFO SpringContextShutdownHook org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor Shutting down ExecutorService 'febsAsyncThreadPool' +2021-09-16 11:40:31 INFO SpringContextShutdownHook com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource start closing .... +2021-09-16 11:40:31 INFO SpringContextShutdownHook com.zaxxer.hikari.HikariDataSource base - Shutdown initiated... +2021-09-16 11:40:31 INFO SpringContextShutdownHook com.zaxxer.hikari.HikariDataSource base - Shutdown completed. +2021-09-16 11:40:31 INFO SpringContextShutdownHook com.baomidou.dynamic.datasource.DynamicRoutingDataSource dynamic-datasource all closed success,bye diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..a84b44e --- /dev/null +++ b/pom.xml @@ -0,0 +1,226 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <groupId>com.xcong</groupId> + <artifactId>xc-mall</artifactId> + <version>1.0</version> + <name>xc-mall</name> + + <parent> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-parent</artifactId> + <version>2.2.5.RELEASE</version> + <relativePath/> <!-- lookup parent from repository --> + </parent> + + <properties> + <java.version>1.8</java.version> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> + <mybatis.plus.version>3.3.1</mybatis.plus.version> + <swagger.ui>2.9.2</swagger.ui> + <tomcat.version>9.0.31</tomcat.version> + </properties> + + <dependencies> + <!-- Spring系列 --> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-web</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-aop</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-thymeleaf</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-data-redis</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-cache</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-configuration-processor</artifactId> + <optional>true</optional> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-actuator</artifactId> + </dependency> + <dependency> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-starter-actuator</artifactId> + </dependency> + <!-- redis连接池 --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-pool2</artifactId> + </dependency> + + <!-- 任务调度 --> + <dependency> + <groupId>org.quartz-scheduler</groupId> + <artifactId>quartz</artifactId> + </dependency> + + <!-- MyBatis增强插件 --> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-boot-starter</artifactId> + <version>${mybatis.plus.version}</version> + </dependency> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>mybatis-plus-generator</artifactId> + <version>${mybatis.plus.version}</version> + </dependency> + <dependency> + <groupId>com.baomidou</groupId> + <artifactId>dynamic-datasource-spring-boot-starter</artifactId> + <version>3.0.0</version> + </dependency> + + <!-- freemaker模板引擎,用于定义代码生成模板 --> + <dependency> + <groupId>org.freemarker</groupId> + <artifactId>freemarker</artifactId> + <version>2.3.28</version> + </dependency> + + <!-- 控制台 SQL日志打印插件 --> + <dependency> + <groupId>p6spy</groupId> + <artifactId>p6spy</artifactId> + <version>3.8.1</version> + </dependency> + + <!-- mysql驱动 --> + <dependency> + <groupId>mysql</groupId> + <artifactId>mysql-connector-java</artifactId> + <scope>runtime</scope> + </dependency> + + <!-- shiro --> + <dependency> + <groupId>org.apache.shiro</groupId> + <artifactId>shiro-spring</artifactId> + <version>1.4.2</version> + </dependency> + <dependency> + <groupId>org.crazycake</groupId> + <artifactId>shiro-redis</artifactId> + <version>3.2.3</version> + <!-- 排除最新3.1.0版本,引用2.9.0版本,https://github.com/alexxiyang/shiro-redis/issues/113 --> + <exclusions> + <exclusion> + <groupId>redis.clients</groupId> + <artifactId>jedis</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>redis.clients</groupId> + <artifactId>jedis</artifactId> + <version>2.9.0</version> + </dependency> + <dependency> + <groupId>com.github.theborakompanioni</groupId> + <artifactId>thymeleaf-extras-shiro</artifactId> + <version>2.0.0</version> + </dependency> + + <!-- IP定位插件 --> + <dependency> + <groupId>org.lionsoul</groupId> + <artifactId>ip2region</artifactId> + <version>1.7.2</version> + </dependency> + + <!-- commons工具 --> + <dependency> + <groupId>org.apache.commons</groupId> + <artifactId>commons-lang3</artifactId> + </dependency> + <dependency> + <groupId>commons-io</groupId> + <artifactId>commons-io</artifactId> + <version>2.6</version> + </dependency> + + <!-- google guava --> + <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + <version>27.0-jre</version> + </dependency> + + <!-- Excel导入导出插件 --> + <dependency> + <groupId>com.wuwenze</groupId> + <artifactId>ExcelKit</artifactId> + <version>2.0.72</version> + </dependency> + + <!-- lombok --> + <dependency> + <groupId>org.projectlombok</groupId> + <artifactId>lombok</artifactId> + <optional>true</optional> + </dependency> + + <!-- fastjson --> + <dependency> + <groupId>com.alibaba</groupId> + <artifactId>fastjson</artifactId> + <version>1.2.70</version> + </dependency> + + <!-- 验证码生成插件 --> + <dependency> + <groupId>com.github.whvcse</groupId> + <artifactId>easy-captcha</artifactId> + <version>1.6.2</version> + </dependency> + + <!-- xss过滤 --> + <dependency> + <groupId>org.jsoup</groupId> + <artifactId>jsoup</artifactId> + <version>1.12.1</version> + </dependency> + + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger2</artifactId> + <version>${swagger.ui}</version> + </dependency> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger-ui</artifactId> + <version>${swagger.ui}</version> + </dependency> + + <dependency> + <groupId>xml-apis</groupId> + <artifactId>xml-apis</artifactId> + <version>1.4.01</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <groupId>org.springframework.boot</groupId> + <artifactId>spring-boot-maven-plugin</artifactId> + </plugin> + </plugins> + </build> +</project> diff --git a/sql/febs_base.sql b/sql/febs_base.sql new file mode 100644 index 0000000..37878c5 --- /dev/null +++ b/sql/febs_base.sql @@ -0,0 +1,621 @@ +/* + Navicat Premium Data Transfer + + Source Server : localhost_mysql_5.7 + Source Server Type : MySQL + Source Server Version : 50726 + Source Host : localhost:3306 + Source Schema : febs_base + + Target Server Type : MySQL + Target Server Version : 50726 + File Encoding : 65001 + + Date: 04/12/2019 16:48:56 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for t_dept +-- ---------------------------- +DROP TABLE IF EXISTS `t_dept`; +CREATE TABLE `t_dept` ( + `DEPT_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '部门ID', + `PARENT_ID` bigint(20) NOT NULL COMMENT '上级部门ID', + `DEPT_NAME` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '部门名称', + `ORDER_NUM` bigint(20) NULL DEFAULT NULL COMMENT '排序', + `CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `MODIFY_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`DEPT_ID`) USING BTREE, + KEY `t_dept_parent_id` (`PARENT_ID`), + KEY `t_dept_dept_name` (`DEPT_NAME`) +) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '部门表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_dept +-- ---------------------------- +INSERT INTO `t_dept` VALUES (1, 0, '开发部', 1, '2019-06-14 20:56:41', NULL); +INSERT INTO `t_dept` VALUES (2, 1, '开发一部', 1, '2019-06-14 20:58:46', NULL); +INSERT INTO `t_dept` VALUES (3, 1, '开发二部', 2, '2019-06-14 20:58:56', NULL); +INSERT INTO `t_dept` VALUES (4, 0, '采购部', 2, '2019-06-14 20:59:56', NULL); +INSERT INTO `t_dept` VALUES (5, 0, '财务部', 3, '2019-06-14 21:00:08', NULL); +INSERT INTO `t_dept` VALUES (6, 0, '销售部', 4, '2019-06-14 21:00:15', NULL); +INSERT INTO `t_dept` VALUES (7, 0, '工程部', 5, '2019-06-14 21:00:42', NULL); +INSERT INTO `t_dept` VALUES (8, 0, '行政部', 6, '2019-06-14 21:00:49', NULL); +INSERT INTO `t_dept` VALUES (9, 0, '人力资源部', 8, '2019-06-14 21:01:14', '2019-06-14 21:01:34'); +INSERT INTO `t_dept` VALUES (10, 0, '系统部', 7, '2019-06-14 21:01:31', NULL); + +-- ---------------------------- +-- Table structure for t_eximport +-- ---------------------------- +DROP TABLE IF EXISTS `t_eximport`; +CREATE TABLE `t_eximport` ( + `FIELD1` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段1', + `FIELD2` int(11) NOT NULL COMMENT '字段2', + `FIELD3` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '字段3', + `CREATE_TIME` datetime(0) NOT NULL +) ENGINE = MyISAM CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'Excel导入导出测试' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_eximport +-- ---------------------------- +INSERT INTO `t_eximport` VALUES ('字段1', 1, 'mrbird0@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 2, 'mrbird1@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 3, 'mrbird2@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 4, 'mrbird3@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 5, 'mrbird4@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 6, 'mrbird5@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 7, 'mrbird6@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 8, 'mrbird7@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 9, 'mrbird8@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 10, 'mrbird9@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 11, 'mrbird10@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 12, 'mrbird11@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 13, 'mrbird12@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 14, 'mrbird13@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 15, 'mrbird14@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 16, 'mrbird15@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 17, 'mrbird16@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 18, 'mrbird17@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 19, 'mrbird18@gmail.com', '2019-06-13 03:14:06'); +INSERT INTO `t_eximport` VALUES ('字段1', 20, 'mrbird19@gmail.com', '2019-06-13 03:14:06'); + +-- ---------------------------- +-- Table structure for t_generator_config +-- ---------------------------- +DROP TABLE IF EXISTS `t_generator_config`; +CREATE TABLE `t_generator_config` ( + `id` int(11) NOT NULL COMMENT '主键', + `author` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '作者', + `base_package` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '基础包名', + `entity_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'entity文件存放路径', + `mapper_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'mapper文件存放路径', + `mapper_xml_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'mapper xml文件存放路径', + `service_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'servcie文件存放路径', + `service_impl_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'serviceImpl文件存放路径', + `controller_package` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'controller文件存放路径', + `is_trim` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '是否去除前缀 1是 0否', + `trim_value` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '前缀内容', + PRIMARY KEY (`id`) USING BTREE +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '代码生成配置表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_generator_config +-- ---------------------------- +INSERT INTO `t_generator_config` VALUES (1, 'MrBird', 'cc.mrbird.febs.gen', 'entity', 'mapper', 'mapper', 'service', 'service.impl', 'controller', '1', 't_'); + +-- ---------------------------- +-- Table structure for t_job +-- ---------------------------- +DROP TABLE IF EXISTS `t_job`; +CREATE TABLE `t_job` ( + `JOB_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务id', + `BEAN_NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'spring bean名称', + `METHOD_NAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '方法名', + `PARAMS` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `CRON_EXPRESSION` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'cron表达式', + `STATUS` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务状态 0:正常 1:暂停', + `REMARK` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', + `CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`JOB_ID`) USING BTREE, + KEY `t_job_create_time` (`CREATE_TIME`) +) ENGINE = InnoDB AUTO_INCREMENT = 12 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '定时任务表' ROW_FORMAT = Dynamic; + + +-- ---------------------------- +-- Records of t_job +-- ---------------------------- +INSERT INTO `t_job` VALUES (1, 'testTask', 'test', 'mrbird', '0/1 * * * * ?', '1', '有参任务调度测试~~', '2018-02-24 16:26:14'); +INSERT INTO `t_job` VALUES (2, 'testTask', 'test1', NULL, '0/10 * * * * ?', '1', '无参任务调度测试', '2018-02-24 17:06:23'); +INSERT INTO `t_job` VALUES (3, 'testTask', 'test', 'hello world', '0/1 * * * * ?', '1', '有参任务调度测试,每隔一秒触发', '2018-02-26 09:28:26'); +INSERT INTO `t_job` VALUES (11, 'testTask', 'test2', NULL, '0/5 * * * * ?', '1', '测试异常', '2018-02-26 11:15:30'); + +-- ---------------------------- +-- Table structure for t_job_log +-- ---------------------------- +DROP TABLE IF EXISTS `t_job_log`; +CREATE TABLE `t_job_log` ( + `LOG_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '任务日志id', + `JOB_ID` bigint(20) NOT NULL COMMENT '任务id', + `BEAN_NAME` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT 'spring bean名称', + `METHOD_NAME` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '方法名', + `PARAMS` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '参数', + `STATUS` char(2) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '任务状态 0:成功 1:失败', + `ERROR` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '失败信息', + `TIMES` decimal(11, 0) NULL DEFAULT NULL COMMENT '耗时(单位:毫秒)', + `CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + PRIMARY KEY (`LOG_ID`) USING BTREE, + KEY `t_job_log_create_time` (`CREATE_TIME`) +) ENGINE = MyISAM AUTO_INCREMENT = 2562 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '调度日志表' ROW_FORMAT = Dynamic; + + +-- ---------------------------- +-- Table structure for t_log +-- ---------------------------- +DROP TABLE IF EXISTS `t_log`; +CREATE TABLE `t_log` ( + `ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '日志ID', + `USERNAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作用户', + `OPERATION` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '操作内容', + `TIME` decimal(11, 0) NULL DEFAULT NULL COMMENT '耗时', + `METHOD` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '操作方法', + `PARAMS` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '方法参数', + `IP` varchar(64) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作者IP', + `CREATE_TIME` datetime(0) NULL DEFAULT NULL COMMENT '创建时间', + `location` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作地点', + PRIMARY KEY (`ID`) USING BTREE, + KEY `t_log_create_time` (`CREATE_TIME`) +) ENGINE = MyISAM AUTO_INCREMENT = 1011 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '操作日志表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Table structure for t_login_log +-- ---------------------------- +DROP TABLE IF EXISTS `t_login_log`; +CREATE TABLE `t_login_log` ( + `ID` bigint(11) NOT NULL AUTO_INCREMENT COMMENT 'id', + `USERNAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名', + `LOGIN_TIME` datetime(0) NOT NULL COMMENT '登录时间', + `LOCATION` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '登录地点', + `IP` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT 'IP地址', + `SYSTEM` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作系统', + `BROWSER` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '浏览器', + PRIMARY KEY (`ID`) USING BTREE, + KEY `t_login_log_login_time` (`LOGIN_TIME`) +) ENGINE = MyISAM AUTO_INCREMENT = 70 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '登录日志表' ROW_FORMAT = Dynamic; + + +-- ---------------------------- +-- Table structure for t_menu +-- ---------------------------- +DROP TABLE IF EXISTS `t_menu`; +CREATE TABLE `t_menu` ( + `MENU_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '菜单/按钮ID', + `PARENT_ID` bigint(20) NOT NULL COMMENT '上级菜单ID', + `MENU_NAME` varchar(50) NOT NULL COMMENT '菜单/按钮名称', + `URL` varchar(50) DEFAULT NULL COMMENT '菜单URL', + `PERMS` text COMMENT '权限标识', + `ICON` varchar(50) DEFAULT NULL COMMENT '图标', + `TYPE` char(2) NOT NULL COMMENT '类型 0菜单 1按钮', + `ORDER_NUM` bigint(20) DEFAULT NULL COMMENT '排序', + `CREATE_TIME` datetime NOT NULL COMMENT '创建时间', + `MODIFY_TIME` datetime DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`MENU_ID`) USING BTREE, + KEY `t_menu_parent_id` (`PARENT_ID`), + KEY `t_menu_menu_id` (`MENU_ID`) + ) ENGINE=InnoDB AUTO_INCREMENT=179 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='菜单表'; + +-- ---------------------------- +-- Records of t_menu +-- ---------------------------- +BEGIN; +INSERT INTO `t_menu` VALUES (1, 0, '系统管理', NULL, NULL, 'layui-icon-setting', '0', 1, '2017-12-27 16:39:07', NULL); +INSERT INTO `t_menu` VALUES (2, 0, '系统监控', '', '', 'layui-icon-alert', '0', 2, '2017-12-27 16:45:51', '2019-06-13 11:20:40'); +INSERT INTO `t_menu` VALUES (3, 1, '用户管理', '/system/user', 'user:view', '', '0', 1, '2017-12-27 16:47:13', '2019-12-04 16:46:50'); +INSERT INTO `t_menu` VALUES (4, 1, '角色管理', '/system/role', 'role:view', '', '0', 2, '2017-12-27 16:48:09', '2019-06-13 08:57:19'); +INSERT INTO `t_menu` VALUES (5, 1, '菜单管理', '/system/menu', 'menu:view', '', '0', 3, '2017-12-27 16:48:57', '2019-06-13 08:57:34'); +INSERT INTO `t_menu` VALUES (6, 1, '部门管理', '/system/dept', 'dept:view', '', '0', 4, '2017-12-27 16:57:33', '2019-06-14 19:56:00'); +INSERT INTO `t_menu` VALUES (8, 2, '在线用户', '/monitor/online', 'online:view', '', '0', 1, '2017-12-27 16:59:33', '2019-06-13 14:30:31'); +INSERT INTO `t_menu` VALUES (10, 2, '系统日志', '/monitor/log', 'log:view', '', '0', 2, '2017-12-27 17:00:50', '2019-06-13 14:30:37'); +INSERT INTO `t_menu` VALUES (11, 3, '新增用户', NULL, 'user:add', NULL, '1', NULL, '2017-12-27 17:02:58', NULL); +INSERT INTO `t_menu` VALUES (12, 3, '修改用户', NULL, 'user:update', NULL, '1', NULL, '2017-12-27 17:04:07', NULL); +INSERT INTO `t_menu` VALUES (13, 3, '删除用户', NULL, 'user:delete', NULL, '1', NULL, '2017-12-27 17:04:58', NULL); +INSERT INTO `t_menu` VALUES (14, 4, '新增角色', NULL, 'role:add', NULL, '1', NULL, '2017-12-27 17:06:38', NULL); +INSERT INTO `t_menu` VALUES (15, 4, '修改角色', NULL, 'role:update', NULL, '1', NULL, '2017-12-27 17:06:38', NULL); +INSERT INTO `t_menu` VALUES (16, 4, '删除角色', NULL, 'role:delete', NULL, '1', NULL, '2017-12-27 17:06:38', NULL); +INSERT INTO `t_menu` VALUES (17, 5, '新增菜单', NULL, 'menu:add', NULL, '1', NULL, '2017-12-27 17:08:02', NULL); +INSERT INTO `t_menu` VALUES (18, 5, '修改菜单', NULL, 'menu:update', NULL, '1', NULL, '2017-12-27 17:08:02', NULL); +INSERT INTO `t_menu` VALUES (19, 5, '删除菜单', NULL, 'menu:delete', NULL, '1', NULL, '2017-12-27 17:08:02', NULL); +INSERT INTO `t_menu` VALUES (20, 6, '新增部门', NULL, 'dept:add', NULL, '1', NULL, '2017-12-27 17:09:24', NULL); +INSERT INTO `t_menu` VALUES (21, 6, '修改部门', NULL, 'dept:update', NULL, '1', NULL, '2017-12-27 17:09:24', NULL); +INSERT INTO `t_menu` VALUES (22, 6, '删除部门', NULL, 'dept:delete', NULL, '1', NULL, '2017-12-27 17:09:24', NULL); +INSERT INTO `t_menu` VALUES (23, 8, '踢出用户', NULL, 'user:kickout', NULL, '1', NULL, '2017-12-27 17:11:13', NULL); +INSERT INTO `t_menu` VALUES (24, 10, '删除日志', NULL, 'log:delete', NULL, '1', NULL, '2017-12-27 17:11:45', '2019-06-06 05:56:40'); +INSERT INTO `t_menu` VALUES (101, 0, '任务调度', NULL, NULL, 'layui-icon-time-circle', '0', 3, '2018-02-24 15:52:57', NULL); +INSERT INTO `t_menu` VALUES (102, 101, '定时任务', '/job/job', 'job:view', '', '0', 1, '2018-02-24 15:53:53', '2018-04-25 09:05:12'); +INSERT INTO `t_menu` VALUES (103, 102, '新增任务', NULL, 'job:add', NULL, '1', NULL, '2018-02-24 15:55:10', NULL); +INSERT INTO `t_menu` VALUES (104, 102, '修改任务', NULL, 'job:update', NULL, '1', NULL, '2018-02-24 15:55:53', NULL); +INSERT INTO `t_menu` VALUES (105, 102, '删除任务', NULL, 'job:delete', NULL, '1', NULL, '2018-02-24 15:56:18', NULL); +INSERT INTO `t_menu` VALUES (106, 102, '暂停任务', NULL, 'job:pause', NULL, '1', NULL, '2018-02-24 15:57:08', NULL); +INSERT INTO `t_menu` VALUES (107, 102, '恢复任务', NULL, 'job:resume', NULL, '1', NULL, '2018-02-24 15:58:21', NULL); +INSERT INTO `t_menu` VALUES (108, 102, '立即执行任务', NULL, 'job:run', NULL, '1', NULL, '2018-02-24 15:59:45', NULL); +INSERT INTO `t_menu` VALUES (109, 101, '调度日志', '/job/log', 'job:log:view', '', '0', 2, '2018-02-24 16:00:45', '2019-06-09 02:48:19'); +INSERT INTO `t_menu` VALUES (110, 109, '删除日志', NULL, 'job:log:delete', NULL, '1', NULL, '2018-02-24 16:01:21', NULL); +INSERT INTO `t_menu` VALUES (115, 0, '其他模块', NULL, NULL, 'layui-icon-gift', '0', 5, '2019-05-27 10:18:07', NULL); +INSERT INTO `t_menu` VALUES (116, 115, 'Apex图表', '', '', NULL, '0', 2, '2019-05-27 10:21:35', NULL); +INSERT INTO `t_menu` VALUES (117, 116, '线性图表', '/others/apex/line', 'apex:line:view', NULL, '0', 1, '2019-05-27 10:24:49', NULL); +INSERT INTO `t_menu` VALUES (118, 115, '高德地图', '/others/map', 'map:view', '', '0', 3, '2019-05-27 17:13:12', '2019-06-12 15:33:00'); +INSERT INTO `t_menu` VALUES (119, 116, '面积图表', '/others/apex/area', 'apex:area:view', NULL, '0', 2, '2019-05-27 18:49:22', NULL); +INSERT INTO `t_menu` VALUES (120, 116, '柱形图表', '/others/apex/column', 'apex:column:view', NULL, '0', 3, '2019-05-27 18:51:33', NULL); +INSERT INTO `t_menu` VALUES (121, 116, '雷达图表', '/others/apex/radar', 'apex:radar:view', NULL, '0', 4, '2019-05-27 18:56:05', NULL); +INSERT INTO `t_menu` VALUES (122, 116, '条形图表', '/others/apex/bar', 'apex:bar:view', NULL, '0', 5, '2019-05-27 18:57:02', NULL); +INSERT INTO `t_menu` VALUES (123, 116, '混合图表', '/others/apex/mix', 'apex:mix:view', '', '0', 6, '2019-05-27 18:58:04', '2019-06-06 02:55:23'); +INSERT INTO `t_menu` VALUES (125, 115, '导入导出', '/others/eximport', 'others:eximport:view', '', '0', 4, '2019-05-27 19:01:57', '2019-06-13 01:20:14'); +INSERT INTO `t_menu` VALUES (126, 132, '系统图标', '/others/febs/icon', 'febs:icons:view', '', '0', 4, '2019-05-27 19:03:18', '2019-06-06 03:05:26'); +INSERT INTO `t_menu` VALUES (127, 2, '请求追踪', '/monitor/httptrace', 'httptrace:view', '', '0', 6, '2019-05-27 19:06:38', '2019-06-13 14:36:43'); +INSERT INTO `t_menu` VALUES (128, 2, '系统信息', NULL, NULL, NULL, '0', 7, '2019-05-27 19:08:23', NULL); +INSERT INTO `t_menu` VALUES (129, 128, 'JVM信息', '/monitor/jvm', 'jvm:view', '', '0', 1, '2019-05-27 19:08:50', '2019-06-13 14:36:51'); +INSERT INTO `t_menu` VALUES (131, 128, '服务器信息', '/monitor/server', 'server:view', '', '0', 3, '2019-05-27 19:10:07', '2019-06-13 14:37:04'); +INSERT INTO `t_menu` VALUES (132, 115, 'FEBS组件', '', '', NULL, '0', 1, '2019-05-27 19:13:54', NULL); +INSERT INTO `t_menu` VALUES (133, 132, '表单组件', '/others/febs/form', 'febs:form:view', NULL, '0', 1, '2019-05-27 19:14:45', NULL); +INSERT INTO `t_menu` VALUES (134, 132, 'FEBS工具', '/others/febs/tools', 'febs:tools:view', '', '0', 3, '2019-05-29 10:11:22', '2019-06-12 13:21:27'); +INSERT INTO `t_menu` VALUES (135, 132, '表单组合', '/others/febs/form/group', 'febs:formgroup:view', NULL, '0', 2, '2019-05-29 10:16:19', NULL); +INSERT INTO `t_menu` VALUES (136, 2, '登录日志', '/monitor/loginlog', 'loginlog:view', '', '0', 3, '2019-05-29 15:56:15', '2019-06-13 14:35:56'); +INSERT INTO `t_menu` VALUES (137, 0, '代码生成', '', NULL, 'layui-icon-verticalright', '0', 4, '2019-06-03 15:35:58', NULL); +INSERT INTO `t_menu` VALUES (138, 137, '生成配置', '/generator/configure', 'generator:configure:view', NULL, '0', 1, '2019-06-03 15:38:36', NULL); +INSERT INTO `t_menu` VALUES (139, 137, '代码生成', '/generator/generator', 'generator:view', '', '0', 2, '2019-06-03 15:39:15', '2019-06-13 14:31:38'); +INSERT INTO `t_menu` VALUES (159, 132, '其他组件', '/others/febs/others', 'others:febs:others', '', '0', 5, '2019-06-12 07:51:08', '2019-06-12 07:51:40'); +INSERT INTO `t_menu` VALUES (160, 3, '密码重置', NULL, 'user:password:reset', NULL, '1', NULL, '2019-06-13 08:40:13', NULL); +INSERT INTO `t_menu` VALUES (161, 3, '导出Excel', NULL, 'user:export', NULL, '1', NULL, '2019-06-13 08:40:34', NULL); +INSERT INTO `t_menu` VALUES (162, 4, '导出Excel', NULL, 'role:export', NULL, '1', NULL, '2019-06-13 14:29:00', '2019-06-13 14:29:11'); +INSERT INTO `t_menu` VALUES (163, 5, '导出Excel', NULL, 'menu:export', NULL, '1', NULL, '2019-06-13 14:29:32', NULL); +INSERT INTO `t_menu` VALUES (164, 6, '导出Excel', NULL, 'dept:export', NULL, '1', NULL, '2019-06-13 14:29:59', NULL); +INSERT INTO `t_menu` VALUES (165, 138, '修改配置', NULL, 'generator:configure:update', NULL, '1', NULL, '2019-06-13 14:32:09', '2019-06-13 14:32:20'); +INSERT INTO `t_menu` VALUES (166, 139, '生成代码', NULL, 'generator:generate', NULL, '1', NULL, '2019-06-13 14:32:51', NULL); +INSERT INTO `t_menu` VALUES (167, 125, '模板下载', NULL, 'eximport:template', NULL, '1', NULL, '2019-06-13 14:33:37', NULL); +INSERT INTO `t_menu` VALUES (168, 125, '导出Excel', NULL, 'eximport:export', NULL, '1', NULL, '2019-06-13 14:33:57', NULL); +INSERT INTO `t_menu` VALUES (169, 125, '导入Excel', NULL, 'eximport:import', NULL, '1', NULL, '2019-06-13 14:34:19', NULL); +INSERT INTO `t_menu` VALUES (170, 10, '导出Excel', NULL, 'log:export', NULL, '1', NULL, '2019-06-13 14:34:55', NULL); +INSERT INTO `t_menu` VALUES (171, 136, '删除日志', NULL, 'loginlog:delete', NULL, '1', NULL, '2019-06-13 14:35:27', '2019-06-13 14:36:08'); +INSERT INTO `t_menu` VALUES (172, 136, '导出Excel', NULL, 'loginlog:export', NULL, '1', NULL, '2019-06-13 14:36:26', NULL); +INSERT INTO `t_menu` VALUES (173, 102, '导出Excel', NULL, 'job:export', NULL, '1', NULL, '2019-06-13 14:37:25', NULL); +INSERT INTO `t_menu` VALUES (174, 109, '导出Excel', NULL, 'job:log:export', NULL, '1', NULL, '2019-06-13 14:37:46', '2019-06-13 14:38:02'); +INSERT INTO `t_menu` VALUES (175, 2, 'Swagger文档', '/monitor/swagger', 'swagger:view', '', '0', 8, '2019-08-18 17:25:36', '2019-08-18 17:25:59'); +INSERT INTO `t_menu` VALUES (178, 115, '数据权限', '/others/datapermission', 'others:datapermission', '', '0', 5, '2020-04-29 09:34:25', NULL); +COMMIT; + +-- ---------------------------- +-- Table structure for t_role +-- ---------------------------- +DROP TABLE IF EXISTS `t_role`; +CREATE TABLE `t_role` ( + `ROLE_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '角色ID', + `ROLE_NAME` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称', + `REMARK` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '角色描述', + `CREATE_TIME` datetime(0) NOT NULL COMMENT '创建时间', + `MODIFY_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + PRIMARY KEY (`ROLE_ID`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 81 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_role +-- ---------------------------- +INSERT INTO `t_role` VALUES (1, '系统管理员', '系统管理员,拥有所有操作权限 ^_^', '2019-06-14 16:23:11', '2019-08-18 17:26:19'); +INSERT INTO `t_role` VALUES (2, '注册账户', '注册账户,拥有查看,新增权限(新增用户除外)和导出Excel权限', '2019-06-14 16:00:15', '2019-08-18 17:36:02'); +INSERT INTO `t_role` VALUES (77, 'Redis监控员', '负责Redis模块', '2019-06-14 20:49:22', NULL); +INSERT INTO `t_role` VALUES (78, '系统监控员', '负责整个系统监控模块', '2019-06-14 20:50:07', NULL); +INSERT INTO `t_role` VALUES (79, '跑批人员', '负责任务调度跑批模块', '2019-06-14 20:51:02', NULL); +INSERT INTO `t_role` VALUES (80, '开发人员', '拥有代码生成模块的权限', '2019-06-14 20:51:26', NULL); + +-- ---------------------------- +-- Table structure for t_role_menu +-- ---------------------------- +DROP TABLE IF EXISTS `t_role_menu`; +CREATE TABLE `t_role_menu` ( + `ROLE_ID` bigint(20) NOT NULL COMMENT '角色ID', + `MENU_ID` bigint(20) NOT NULL COMMENT '菜单/按钮ID', + KEY `t_role_menu_menu_id` (`MENU_ID`), + KEY `t_role_menu_role_id` (`ROLE_ID`) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色菜单关联表'; + +-- ---------------------------- +-- Records of t_role_menu +-- ---------------------------- +BEGIN; +INSERT INTO `t_role_menu` VALUES (77, 2); +INSERT INTO `t_role_menu` VALUES (78, 2); +INSERT INTO `t_role_menu` VALUES (78, 8); +INSERT INTO `t_role_menu` VALUES (78, 23); +INSERT INTO `t_role_menu` VALUES (78, 10); +INSERT INTO `t_role_menu` VALUES (78, 24); +INSERT INTO `t_role_menu` VALUES (78, 170); +INSERT INTO `t_role_menu` VALUES (78, 136); +INSERT INTO `t_role_menu` VALUES (78, 171); +INSERT INTO `t_role_menu` VALUES (78, 172); +INSERT INTO `t_role_menu` VALUES (78, 127); +INSERT INTO `t_role_menu` VALUES (78, 128); +INSERT INTO `t_role_menu` VALUES (78, 129); +INSERT INTO `t_role_menu` VALUES (78, 131); +INSERT INTO `t_role_menu` VALUES (79, 101); +INSERT INTO `t_role_menu` VALUES (79, 102); +INSERT INTO `t_role_menu` VALUES (79, 103); +INSERT INTO `t_role_menu` VALUES (79, 104); +INSERT INTO `t_role_menu` VALUES (79, 105); +INSERT INTO `t_role_menu` VALUES (79, 106); +INSERT INTO `t_role_menu` VALUES (79, 107); +INSERT INTO `t_role_menu` VALUES (79, 108); +INSERT INTO `t_role_menu` VALUES (79, 173); +INSERT INTO `t_role_menu` VALUES (79, 109); +INSERT INTO `t_role_menu` VALUES (79, 110); +INSERT INTO `t_role_menu` VALUES (79, 174); +INSERT INTO `t_role_menu` VALUES (80, 137); +INSERT INTO `t_role_menu` VALUES (80, 138); +INSERT INTO `t_role_menu` VALUES (80, 165); +INSERT INTO `t_role_menu` VALUES (80, 139); +INSERT INTO `t_role_menu` VALUES (80, 166); +INSERT INTO `t_role_menu` VALUES (1, 1); +INSERT INTO `t_role_menu` VALUES (1, 3); +INSERT INTO `t_role_menu` VALUES (1, 11); +INSERT INTO `t_role_menu` VALUES (1, 12); +INSERT INTO `t_role_menu` VALUES (1, 13); +INSERT INTO `t_role_menu` VALUES (1, 160); +INSERT INTO `t_role_menu` VALUES (1, 161); +INSERT INTO `t_role_menu` VALUES (1, 4); +INSERT INTO `t_role_menu` VALUES (1, 14); +INSERT INTO `t_role_menu` VALUES (1, 15); +INSERT INTO `t_role_menu` VALUES (1, 16); +INSERT INTO `t_role_menu` VALUES (1, 162); +INSERT INTO `t_role_menu` VALUES (1, 5); +INSERT INTO `t_role_menu` VALUES (1, 17); +INSERT INTO `t_role_menu` VALUES (1, 18); +INSERT INTO `t_role_menu` VALUES (1, 19); +INSERT INTO `t_role_menu` VALUES (1, 163); +INSERT INTO `t_role_menu` VALUES (1, 6); +INSERT INTO `t_role_menu` VALUES (1, 20); +INSERT INTO `t_role_menu` VALUES (1, 21); +INSERT INTO `t_role_menu` VALUES (1, 22); +INSERT INTO `t_role_menu` VALUES (1, 164); +INSERT INTO `t_role_menu` VALUES (1, 2); +INSERT INTO `t_role_menu` VALUES (1, 8); +INSERT INTO `t_role_menu` VALUES (1, 23); +INSERT INTO `t_role_menu` VALUES (1, 10); +INSERT INTO `t_role_menu` VALUES (1, 24); +INSERT INTO `t_role_menu` VALUES (1, 170); +INSERT INTO `t_role_menu` VALUES (1, 136); +INSERT INTO `t_role_menu` VALUES (1, 171); +INSERT INTO `t_role_menu` VALUES (1, 172); +INSERT INTO `t_role_menu` VALUES (1, 127); +INSERT INTO `t_role_menu` VALUES (1, 128); +INSERT INTO `t_role_menu` VALUES (1, 129); +INSERT INTO `t_role_menu` VALUES (1, 131); +INSERT INTO `t_role_menu` VALUES (1, 175); +INSERT INTO `t_role_menu` VALUES (1, 101); +INSERT INTO `t_role_menu` VALUES (1, 102); +INSERT INTO `t_role_menu` VALUES (1, 103); +INSERT INTO `t_role_menu` VALUES (1, 104); +INSERT INTO `t_role_menu` VALUES (1, 105); +INSERT INTO `t_role_menu` VALUES (1, 106); +INSERT INTO `t_role_menu` VALUES (1, 107); +INSERT INTO `t_role_menu` VALUES (1, 108); +INSERT INTO `t_role_menu` VALUES (1, 173); +INSERT INTO `t_role_menu` VALUES (1, 109); +INSERT INTO `t_role_menu` VALUES (1, 110); +INSERT INTO `t_role_menu` VALUES (1, 174); +INSERT INTO `t_role_menu` VALUES (1, 137); +INSERT INTO `t_role_menu` VALUES (1, 138); +INSERT INTO `t_role_menu` VALUES (1, 165); +INSERT INTO `t_role_menu` VALUES (1, 139); +INSERT INTO `t_role_menu` VALUES (1, 166); +INSERT INTO `t_role_menu` VALUES (1, 115); +INSERT INTO `t_role_menu` VALUES (1, 132); +INSERT INTO `t_role_menu` VALUES (1, 133); +INSERT INTO `t_role_menu` VALUES (1, 135); +INSERT INTO `t_role_menu` VALUES (1, 134); +INSERT INTO `t_role_menu` VALUES (1, 126); +INSERT INTO `t_role_menu` VALUES (1, 159); +INSERT INTO `t_role_menu` VALUES (1, 116); +INSERT INTO `t_role_menu` VALUES (1, 117); +INSERT INTO `t_role_menu` VALUES (1, 119); +INSERT INTO `t_role_menu` VALUES (1, 120); +INSERT INTO `t_role_menu` VALUES (1, 121); +INSERT INTO `t_role_menu` VALUES (1, 122); +INSERT INTO `t_role_menu` VALUES (1, 123); +INSERT INTO `t_role_menu` VALUES (1, 118); +INSERT INTO `t_role_menu` VALUES (1, 125); +INSERT INTO `t_role_menu` VALUES (1, 167); +INSERT INTO `t_role_menu` VALUES (1, 168); +INSERT INTO `t_role_menu` VALUES (1, 169); +INSERT INTO `t_role_menu` VALUES (1, 178); +INSERT INTO `t_role_menu` VALUES (2, 1); +INSERT INTO `t_role_menu` VALUES (2, 3); +INSERT INTO `t_role_menu` VALUES (2, 161); +INSERT INTO `t_role_menu` VALUES (2, 4); +INSERT INTO `t_role_menu` VALUES (2, 14); +INSERT INTO `t_role_menu` VALUES (2, 162); +INSERT INTO `t_role_menu` VALUES (2, 5); +INSERT INTO `t_role_menu` VALUES (2, 17); +INSERT INTO `t_role_menu` VALUES (2, 163); +INSERT INTO `t_role_menu` VALUES (2, 6); +INSERT INTO `t_role_menu` VALUES (2, 20); +INSERT INTO `t_role_menu` VALUES (2, 164); +INSERT INTO `t_role_menu` VALUES (2, 2); +INSERT INTO `t_role_menu` VALUES (2, 8); +INSERT INTO `t_role_menu` VALUES (2, 10); +INSERT INTO `t_role_menu` VALUES (2, 170); +INSERT INTO `t_role_menu` VALUES (2, 136); +INSERT INTO `t_role_menu` VALUES (2, 172); +INSERT INTO `t_role_menu` VALUES (2, 127); +INSERT INTO `t_role_menu` VALUES (2, 128); +INSERT INTO `t_role_menu` VALUES (2, 129); +INSERT INTO `t_role_menu` VALUES (2, 131); +INSERT INTO `t_role_menu` VALUES (2, 175); +INSERT INTO `t_role_menu` VALUES (2, 101); +INSERT INTO `t_role_menu` VALUES (2, 102); +INSERT INTO `t_role_menu` VALUES (2, 173); +INSERT INTO `t_role_menu` VALUES (2, 109); +INSERT INTO `t_role_menu` VALUES (2, 174); +INSERT INTO `t_role_menu` VALUES (2, 137); +INSERT INTO `t_role_menu` VALUES (2, 138); +INSERT INTO `t_role_menu` VALUES (2, 139); +INSERT INTO `t_role_menu` VALUES (2, 115); +INSERT INTO `t_role_menu` VALUES (2, 132); +INSERT INTO `t_role_menu` VALUES (2, 133); +INSERT INTO `t_role_menu` VALUES (2, 135); +INSERT INTO `t_role_menu` VALUES (2, 134); +INSERT INTO `t_role_menu` VALUES (2, 126); +INSERT INTO `t_role_menu` VALUES (2, 159); +INSERT INTO `t_role_menu` VALUES (2, 116); +INSERT INTO `t_role_menu` VALUES (2, 117); +INSERT INTO `t_role_menu` VALUES (2, 119); +INSERT INTO `t_role_menu` VALUES (2, 120); +INSERT INTO `t_role_menu` VALUES (2, 121); +INSERT INTO `t_role_menu` VALUES (2, 122); +INSERT INTO `t_role_menu` VALUES (2, 123); +INSERT INTO `t_role_menu` VALUES (2, 118); +INSERT INTO `t_role_menu` VALUES (2, 125); +INSERT INTO `t_role_menu` VALUES (2, 167); +INSERT INTO `t_role_menu` VALUES (2, 168); +INSERT INTO `t_role_menu` VALUES (2, 169); +INSERT INTO `t_role_menu` VALUES (2, 178); +COMMIT; +-- ---------------------------- +-- Table structure for t_user +-- ---------------------------- +DROP TABLE IF EXISTS `t_user`; +CREATE TABLE `t_user` ( + `USER_ID` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '用户ID', + `USERNAME` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名', + `PASSWORD` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码', + `DEPT_ID` bigint(20) NULL DEFAULT NULL COMMENT '部门ID', + `EMAIL` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '邮箱', + `MOBILE` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '联系电话', + `STATUS` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '状态 0锁定 1有效', + `CREATE_TIME` datetime(0) NOT NULL COMMENT '创建时间', + `MODIFY_TIME` datetime(0) NULL DEFAULT NULL COMMENT '修改时间', + `LAST_LOGIN_TIME` datetime(0) NULL DEFAULT NULL COMMENT '最近访问时间', + `SSEX` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别 0男 1女 2保密', + `IS_TAB` char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '是否开启tab,0关闭 1开启', + `THEME` varchar(10) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '主题', + `AVATAR` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '头像', + `DESCRIPTION` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述', + PRIMARY KEY (`USER_ID`) USING BTREE, + KEY `t_user_username` (`USERNAME`), + KEY `t_user_mobile` (`MOBILE`) +) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_user +-- ---------------------------- +INSERT INTO `t_user` VALUES (1, 'MrBird', 'cb62ad1497597283961545d608f80241', 1, 'mrbird@qq.com', '17788888888', '1', '2019-06-14 20:39:22', '2019-12-04 16:47:11', '2019-12-04 16:48:10', '0', '1', 'black', 'cnrhVkzwxjPwAaCfPbdc.png', '我是帅比作者。'); +INSERT INTO `t_user` VALUES (2, 'Scott', '1d685729d113cfd03872f154939bee1c', 10, 'scott@gmail.com', '17722222222', '1', '2019-06-14 20:55:53', '2019-06-14 21:05:43', '2019-08-18 17:36:18', '0', '1', 'black', 'gaOngJwsRYRaVAuXXcmB.png', '我是scott。'); +INSERT INTO `t_user` VALUES (3, 'Reina', '1461afff857c02afbfb768aa3771503d', 4, 'Reina@hotmail.com', '17711111111', '0', '2019-06-14 21:07:38', '2019-06-14 21:09:06', '2019-06-14 21:08:26', '1', '1', 'black', '5997fedcc7bd4cffbd350b40d1b5b987.jpg', '由于公款私用,已被封禁。'); +INSERT INTO `t_user` VALUES (4, 'Micaela', '9f2daa2c7bed6870fcbb5b9a51d6300e', 10, 'Micaela@163.com', '17733333333', '1', '2019-06-14 21:10:13', '2019-06-14 21:11:26', '2019-06-14 21:10:37', '0', '0', 'white', '20180414165909.jpg', '我叫米克拉'); +INSERT INTO `t_user` VALUES (5, 'Jana', '176679b77b3c3e352bd3b30ddc81083e', 8, 'Jana@126.com', '17744444444', '1', '2019-06-14 21:12:16', '2019-06-14 21:12:52', '2019-06-14 21:12:32', '1', '1', 'white', '20180414165821.jpg', '大家好,我叫简娜'); +INSERT INTO `t_user` VALUES (6, 'Georgie', 'dffc683378cdaa015a0ee9554c532225', 3, 'Georgie@qq.com', '17766666666', '0', '2019-06-14 21:15:09', '2019-06-14 21:16:25', '2019-06-14 21:16:11', '2', '0', 'black', 'BiazfanxmamNRoxxVxka.png', '生产执行rm -rf *,账号封禁T T'); +INSERT INTO `t_user` VALUES (7, 'Margot', '31379841b9f4bfde22b8b40471e9a6ce', 9, 'Margot@qq.com', '13444444444', '1', '2019-06-14 21:17:53', '2019-06-14 21:18:59', '2019-06-14 21:18:07', '1', '1', 'white', '20180414165834.jpg', '大家好我叫玛戈'); + +-- ---------------------------- +-- Table structure for t_user_role +-- ---------------------------- +DROP TABLE IF EXISTS `t_user_role`; +CREATE TABLE `t_user_role` ( + `USER_ID` bigint(20) NOT NULL COMMENT '用户ID', + `ROLE_ID` bigint(20) NOT NULL COMMENT '角色ID', + KEY `t_user_role_user_id` (`USER_ID`), + KEY `t_user_role_role_id` (`ROLE_ID`) +) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户角色关联表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of t_user_role +-- ---------------------------- +INSERT INTO `t_user_role` VALUES (1, 1); +INSERT INTO `t_user_role` VALUES (2, 2); +INSERT INTO `t_user_role` VALUES (3, 77); +INSERT INTO `t_user_role` VALUES (4, 78); +INSERT INTO `t_user_role` VALUES (5, 79); +INSERT INTO `t_user_role` VALUES (6, 80); +INSERT INTO `t_user_role` VALUES (7, 78); +INSERT INTO `t_user_role` VALUES (7, 79); +INSERT INTO `t_user_role` VALUES (7, 80); + +-- ---------------------------- +-- Table structure for t_user_data_permission +-- ---------------------------- +DROP TABLE IF EXISTS `t_user_data_permission`; +CREATE TABLE `t_user_data_permission` +( + `USER_ID` bigint(20) NOT NULL, + `DEPT_ID` bigint(20) NOT NULL, + PRIMARY KEY (`USER_ID`, `DEPT_ID`) + ) ENGINE = InnoDB + DEFAULT CHARSET = utf8 COMMENT ='用户数据权限关联表'; + +-- ---------------------------- +-- Records of t_user_data_permission +-- ---------------------------- +BEGIN; +INSERT INTO `t_user_data_permission` +VALUES (1, 1); +INSERT INTO `t_user_data_permission` +VALUES (1, 2); +INSERT INTO `t_user_data_permission` +VALUES (1, 3); +INSERT INTO `t_user_data_permission` +VALUES (1, 4); +INSERT INTO `t_user_data_permission` +VALUES (1, 5); +INSERT INTO `t_user_data_permission` +VALUES (1, 6); +INSERT INTO `t_user_data_permission` +VALUES (2, 1); +INSERT INTO `t_user_data_permission` +VALUES (2, 2); +INSERT INTO `t_user_data_permission` +VALUES (3, 4); +INSERT INTO `t_user_data_permission` +VALUES (4, 5); +COMMIT; + +-- ---------------------------- +-- Table structure for t_data_permission_test +-- ---------------------------- +DROP TABLE IF EXISTS `t_data_permission_test`; +CREATE TABLE `t_data_permission_test` +( + `FIELD1` varchar(20) NOT NULL, + `FIELD2` varchar(20) NOT NULL, + `FIELD3` varchar(20) NOT NULL, + `FIELD4` varchar(20) NOT NULL, + `DEPT_ID` int(11) NOT NULL, + `CREATE_TIME` datetime NOT NULL, + `ID` int(11) NOT NULL, + PRIMARY KEY (`ID`) + ) ENGINE = InnoDB +DEFAULT CHARSET = utf8 COMMENT ='用户权限测试'; + +-- ---------------------------- +-- Records of t_data_permission_test +-- ---------------------------- +BEGIN; +INSERT INTO `t_data_permission_test` +VALUES ('小米', '小米10Pro', '4999', '珍珠白', 1, '2020-04-14 15:00:38', 1); +INSERT INTO `t_data_permission_test` +VALUES ('腾讯', '黑鲨游戏手机3', '3799', '铠甲灰', 2, '2020-04-14 15:01:36', 2); +INSERT INTO `t_data_permission_test` +VALUES ('华为', '华为P30', '3299', '天空之境', 1, '2020-04-14 15:03:11', 3); +INSERT INTO `t_data_permission_test` +VALUES ('华为', '华为P40Pro', '6488', '亮黑色', 3, '2020-04-14 15:04:31', 4); +INSERT INTO `t_data_permission_test` +VALUES ('vivo', 'Vivo iQOO 3', '3998', '拉力橙', 4, '2020-04-14 15:05:55', 5); +INSERT INTO `t_data_permission_test` +VALUES ('一加', '一加7T', '3199', '冰际蓝', 5, '2020-04-14 15:06:53', 6); +INSERT INTO `t_data_permission_test` +VALUES ('三星', '三星Galaxy S10', '4098', '浩玉白', 6, '2020-04-14 15:08:25', 7); +INSERT INTO `t_data_permission_test` +VALUES ('苹果', 'iPhone 11 pro max', '9198', '暗夜绿', 4, '2020-04-14 15:09:20', 8); +COMMIT; + + +SET FOREIGN_KEY_CHECKS = 1; + diff --git a/sql/febs_quartz.sql b/sql/febs_quartz.sql new file mode 100644 index 0000000..a0919f5 --- /dev/null +++ b/sql/febs_quartz.sql @@ -0,0 +1,158 @@ +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + + +CREATE TABLE QRTZ_JOB_DETAILS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE VARCHAR(1) NOT NULL, + IS_NONCONCURRENT VARCHAR(1) NOT NULL, + IS_UPDATE_DATA VARCHAR(1) NOT NULL, + REQUESTS_RECOVERY VARCHAR(1) NOT NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT(13) NULL, + PREV_FIRE_TIME BIGINT(13) NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT(13) NOT NULL, + END_TIME BIGINT(13) NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT(2) NULL, + JOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP) +); + +CREATE TABLE QRTZ_SIMPLE_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT(7) NOT NULL, + REPEAT_INTERVAL BIGINT(12) NOT NULL, + TIMES_TRIGGERED BIGINT(10) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CRON_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(200) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_SIMPROP_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13,4) NULL, + DEC_PROP_2 NUMERIC(13,4) NULL, + BOOL_PROP_1 VARCHAR(1) NULL, + BOOL_PROP_2 VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_BLOB_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BLOB NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_CALENDARS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BLOB NOT NULL, + PRIMARY KEY (SCHED_NAME,CALENDAR_NAME) +); + +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP) +); + +CREATE TABLE QRTZ_FIRED_TRIGGERS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT(13) NOT NULL, + SCHED_TIME BIGINT(13) NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT VARCHAR(1) NULL, + REQUESTS_RECOVERY VARCHAR(1) NULL, + PRIMARY KEY (SCHED_NAME,ENTRY_ID) +); + +CREATE TABLE QRTZ_SCHEDULER_STATE + ( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT(13) NOT NULL, + CHECKIN_INTERVAL BIGINT(13) NOT NULL, + PRIMARY KEY (SCHED_NAME,INSTANCE_NAME) +); + +CREATE TABLE QRTZ_LOCKS + ( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME,LOCK_NAME) +); + +SET FOREIGN_KEY_CHECKS=0; \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/FebsShiroApplication.java b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java new file mode 100644 index 0000000..1766c6b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/FebsShiroApplication.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs; + +import org.mybatis.spring.annotation.MapperScan; +import org.springframework.boot.WebApplicationType; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.scheduling.annotation.EnableAsync; +import org.springframework.transaction.annotation.EnableTransactionManagement; + +/** + * @author MrBird + */ +@EnableAsync +@SpringBootApplication +@EnableTransactionManagement +@MapperScan("cc.mrbird.febs.*.mapper") +public class FebsShiroApplication { + + public static void main(String[] args) { + new SpringApplicationBuilder(FebsShiroApplication.class) + .web(WebApplicationType.SERVLET) + .run(args); + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/ControllerEndpoint.java b/src/main/java/cc/mrbird/febs/common/annotation/ControllerEndpoint.java new file mode 100644 index 0000000..f75c240 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/ControllerEndpoint.java @@ -0,0 +1,17 @@ +package cc.mrbird.febs.common.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author MrBird + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface ControllerEndpoint { + + String operation() default ""; + String exceptionMessage() default "FEBS系统内部异常"; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/DataPermission.java b/src/main/java/cc/mrbird/febs/common/annotation/DataPermission.java new file mode 100644 index 0000000..08f309a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/DataPermission.java @@ -0,0 +1,36 @@ +package cc.mrbird.febs.common.annotation; + +import java.lang.annotation.*; + +/** + * @author MrBird + */ +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +@Documented +public @interface DataPermission { + + /** + * mapper层需要数据权限过滤的方法名集合 + * + * @return 方法名数组 + */ + String[] methods() default {}; + + /** + * mapper层需要数据过滤的方法名前缀, + * 比如指定为find,表示所有以find开头的方法 + * 都会进行数据权限过滤 + * + * @return 方法名前缀 + */ + String methodPrefix() default ""; + + /** + * 数据权限关联字段 + * 目前系统数据权限通过dept_id关联 + * + * @return String + */ + String field() default "dept_id"; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/Desensitization.java b/src/main/java/cc/mrbird/febs/common/annotation/Desensitization.java new file mode 100644 index 0000000..58983c5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/Desensitization.java @@ -0,0 +1,27 @@ +package cc.mrbird.febs.common.annotation; + + +import cc.mrbird.febs.common.entity.DesensitizationType; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author MrBird + */ +@Target(ElementType.FIELD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Desensitization { + + /** + * 脱敏规则类型 + */ + DesensitizationType type(); + + /** + * 附加值, 自定义正则表达式等 + */ + String[] attach() default ""; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/FebsEndPoint.java b/src/main/java/cc/mrbird/febs/common/annotation/FebsEndPoint.java new file mode 100644 index 0000000..79c055f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/FebsEndPoint.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.common.annotation; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +/** + * @author MrBird + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface FebsEndPoint { + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/Helper.java b/src/main/java/cc/mrbird/febs/common/annotation/Helper.java new file mode 100644 index 0000000..397012b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/Helper.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.common.annotation; + +import org.springframework.core.annotation.AliasFor; +import org.springframework.stereotype.Component; + +import java.lang.annotation.*; + +/** + * @author MrBird + */ +@Target({ElementType.TYPE}) +@Retention(RetentionPolicy.RUNTIME) +@Documented +@Component +public @interface Helper { + @AliasFor(annotation = Component.class) + String value() default ""; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/IsCron.java b/src/main/java/cc/mrbird/febs/common/annotation/IsCron.java new file mode 100644 index 0000000..e85f29b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/IsCron.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.common.annotation; + +import cc.mrbird.febs.common.validator.CronValidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author MrBird + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = CronValidator.class) +public @interface IsCron { + + String message(); + + Class<?>[] groups() default {}; + + Class<? extends Payload>[] payload() default {}; +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/annotation/IsMobile.java b/src/main/java/cc/mrbird/febs/common/annotation/IsMobile.java new file mode 100644 index 0000000..3101ed8 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/IsMobile.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.common.annotation; + +import cc.mrbird.febs.common.validator.MobileValidator; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author MrBird + */ +@Target({ElementType.FIELD}) +@Retention(RetentionPolicy.RUNTIME) +@Constraint(validatedBy = MobileValidator.class) +public @interface IsMobile { + + String message(); + + Class<?>[] groups() default {}; + + Class<? extends Payload>[] payload() default {}; +} diff --git a/src/main/java/cc/mrbird/febs/common/annotation/Limit.java b/src/main/java/cc/mrbird/febs/common/annotation/Limit.java new file mode 100644 index 0000000..8903716 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/annotation/Limit.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.common.annotation; + + +import cc.mrbird.febs.common.entity.LimitType; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + * @author MrBird + */ +@Target(ElementType.METHOD) +@Retention(RetentionPolicy.RUNTIME) +public @interface Limit { + + /** + * 资源名称,用于描述接口功能 + */ + String name() default ""; + + /** + * 资源 key + */ + String key() default ""; + + /** + * key prefix + */ + String prefix() default ""; + + /** + * 时间范围,单位秒 + */ + int period(); + + /** + * 限制访问次数 + */ + int count(); + + /** + * 限制类型 + */ + LimitType limitType() default LimitType.CUSTOMER; +} diff --git a/src/main/java/cc/mrbird/febs/common/aspect/BaseAspectSupport.java b/src/main/java/cc/mrbird/febs/common/aspect/BaseAspectSupport.java new file mode 100644 index 0000000..6c3ba23 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/aspect/BaseAspectSupport.java @@ -0,0 +1,36 @@ +package cc.mrbird.febs.common.aspect; + +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.reflect.MethodSignature; + +import java.lang.reflect.Method; + +/** + * @author MrBird + */ +public abstract class BaseAspectSupport { + + Method resolveMethod(ProceedingJoinPoint point) { + MethodSignature signature = (MethodSignature)point.getSignature(); + Class<?> targetClass = point.getTarget().getClass(); + + Method method = getDeclaredMethod(targetClass, signature.getName(), + signature.getMethod().getParameterTypes()); + if (method == null) { + throw new IllegalStateException("无法解析目标方法: " + signature.getMethod().getName()); + } + return method; + } + + private Method getDeclaredMethod(Class<?> clazz, String name, Class<?>... parameterTypes) { + try { + return clazz.getDeclaredMethod(name, parameterTypes); + } catch (NoSuchMethodException e) { + Class<?> superClass = clazz.getSuperclass(); + if (superClass != null) { + return getDeclaredMethod(superClass, name, parameterTypes); + } + } + return null; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/aspect/ControllerEndpointAspect.java b/src/main/java/cc/mrbird/febs/common/aspect/ControllerEndpointAspect.java new file mode 100644 index 0000000..5de68a6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/aspect/ControllerEndpointAspect.java @@ -0,0 +1,70 @@ +package cc.mrbird.febs.common.aspect; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.monitor.service.ILogService; +import cc.mrbird.febs.system.entity.User; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.stereotype.Component; +import org.springframework.web.context.request.RequestAttributes; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import java.lang.reflect.Method; + +/** + * @author MrBird + */ +@Slf4j +@Aspect +@Component +@RequiredArgsConstructor +public class ControllerEndpointAspect extends BaseAspectSupport { + + private final ILogService logService; + + @Pointcut("@annotation(cc.mrbird.febs.common.annotation.ControllerEndpoint)") + public void pointcut() { + } + + @Around("pointcut()") + public Object around(ProceedingJoinPoint point) throws FebsException { + Object result; + Method targetMethod = resolveMethod(point); + ControllerEndpoint annotation = targetMethod.getAnnotation(ControllerEndpoint.class); + String operation = annotation.operation(); + long start = System.currentTimeMillis(); + try { + result = point.proceed(); + if (StringUtils.isNotBlank(operation)) { + RequestAttributes attributes = RequestContextHolder.getRequestAttributes(); + ServletRequestAttributes servletRequestAttributes = (ServletRequestAttributes) attributes; + String ip = StringUtils.EMPTY; + if (servletRequestAttributes != null) { + ip = servletRequestAttributes.getRequest().getRemoteAddr(); + } + // 设置操作用户 + User user = (User) SecurityUtils.getSubject().getPrincipal(); + logService.saveLog(user, point, targetMethod, ip, operation, start); + } + return result; + } catch (Throwable throwable) { + log.error(throwable.getMessage(), throwable); + String exceptionMessage = annotation.exceptionMessage(); + String message = throwable.getMessage(); + String error = FebsUtil.containChinese(message) ? exceptionMessage + "," + message : exceptionMessage; + throw new FebsException(error); + } + } +} + + + diff --git a/src/main/java/cc/mrbird/febs/common/aspect/LimitAspect.java b/src/main/java/cc/mrbird/febs/common/aspect/LimitAspect.java new file mode 100644 index 0000000..d8b76a1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/aspect/LimitAspect.java @@ -0,0 +1,93 @@ +package cc.mrbird.febs.common.aspect; + +import cc.mrbird.febs.common.annotation.Limit; +import cc.mrbird.febs.common.entity.LimitType; +import cc.mrbird.febs.common.exception.LimitAccessException; +import cc.mrbird.febs.common.utils.HttpContextUtil; +import cc.mrbird.febs.common.utils.IpUtil; +import com.google.common.collect.ImmutableList; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.aspectj.lang.annotation.Around; +import org.aspectj.lang.annotation.Aspect; +import org.aspectj.lang.annotation.Pointcut; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.core.script.DefaultRedisScript; +import org.springframework.data.redis.core.script.RedisScript; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; +import java.lang.reflect.Method; + + +/** + * 接口限流 + * + * @author MrBird + */ +@Slf4j +@Aspect +@Component +@RequiredArgsConstructor +public class LimitAspect extends BaseAspectSupport { + + private final RedisTemplate<String, Object> redisTemplate; + + @Pointcut("@annotation(cc.mrbird.febs.common.annotation.Limit)") + public void pointcut() { + } + + @Around("pointcut()") + public Object around(ProceedingJoinPoint point) throws Throwable { + HttpServletRequest request = HttpContextUtil.getHttpServletRequest(); + Method method = resolveMethod(point); + Limit limitAnnotation = method.getAnnotation(Limit.class); + LimitType limitType = limitAnnotation.limitType(); + String name = limitAnnotation.name(); + String key; + String ip = IpUtil.getIpAddr(request); + int limitPeriod = limitAnnotation.period(); + int limitCount = limitAnnotation.count(); + switch (limitType) { + case IP: + key = ip; + break; + case CUSTOMER: + key = limitAnnotation.key(); + break; + default: + key = StringUtils.upperCase(method.getName()); + } + ImmutableList<String> keys = ImmutableList.of(StringUtils.join(limitAnnotation.prefix() + "_", key, ip)); + String luaScript = buildLuaScript(); + RedisScript<Number> redisScript = new DefaultRedisScript<>(luaScript, Number.class); + Number count = redisTemplate.execute(redisScript, keys, limitCount, limitPeriod); + log.info("IP:{} 第 {} 次访问key为 {},描述为 [{}] 的接口", ip, count, keys, name); + if (count != null && count.intValue() <= limitCount) { + return point.proceed(); + } else { + throw new LimitAccessException("接口访问超出频率限制"); + } + } + + /** + * 限流脚本 + * 调用的时候不超过阈值,则直接返回并执行计算器自加。 + * + * @return lua脚本 + */ + private String buildLuaScript() { + return "local c" + + "\nc = redis.call('get',KEYS[1])" + + "\nif c and tonumber(c) > tonumber(ARGV[1]) then" + + "\nreturn c;" + + "\nend" + + "\nc = redis.call('incr',KEYS[1])" + + "\nif tonumber(c) == 1 then" + + "\nredis.call('expire',KEYS[1],ARGV[2])" + + "\nend" + + "\nreturn c;"; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java new file mode 100644 index 0000000..5bc8466 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroConfig.java @@ -0,0 +1,195 @@ +package cc.mrbird.febs.common.authentication; + +import at.pollux.thymeleaf.shiro.dialect.ShiroDialect; +import cc.mrbird.febs.common.properties.FebsProperties; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.codec.Base64; +import org.apache.shiro.mgt.SecurityManager; +import org.apache.shiro.session.SessionListener; +import org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor; +import org.apache.shiro.spring.web.ShiroFilterFactoryBean; +import org.apache.shiro.web.mgt.CookieRememberMeManager; +import org.apache.shiro.web.mgt.DefaultWebSecurityManager; +import org.apache.shiro.web.servlet.SimpleCookie; +import org.apache.shiro.web.session.mgt.DefaultWebSessionManager; +import org.crazycake.shiro.RedisCacheManager; +import org.crazycake.shiro.RedisManager; +import org.crazycake.shiro.RedisSessionDAO; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.util.Base64Utils; + +import java.nio.charset.StandardCharsets; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collection; +import java.util.LinkedHashMap; + +/** + * Shiro 配置类 + * + * @author MrBird + */ +@Configuration +@RequiredArgsConstructor +public class ShiroConfig { + + private final FebsProperties febsProperties; + + @Value("${spring.redis.host}") + private String host; + @Value("${spring.redis.port}") + private int port; + @Value("${spring.redis.password:}") + private String password; + @Value("${spring.redis.timeout}") + private int timeout; + @Value("${spring.redis.database:0}") + private int database; + + /** + * shiro 中配置 redis 缓存 + * + * @return RedisManager + */ + private RedisManager redisManager() { + RedisManager redisManager = new RedisManager(); + redisManager.setHost(host + ":" + port); + if (StringUtils.isNotBlank(password)) { + redisManager.setPassword(password); + } + redisManager.setTimeout(timeout); + redisManager.setDatabase(database); + return redisManager; + } + + private RedisCacheManager cacheManager() { + RedisCacheManager redisCacheManager = new RedisCacheManager(); + redisCacheManager.setRedisManager(redisManager()); + return redisCacheManager; + } + + @Bean + public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) { + ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean(); + + // 设置 securityManager + shiroFilterFactoryBean.setSecurityManager(securityManager); + // 登录的 url + shiroFilterFactoryBean.setLoginUrl(febsProperties.getShiro().getLoginUrl()); + // 登录成功后跳转的 url + shiroFilterFactoryBean.setSuccessUrl(febsProperties.getShiro().getSuccessUrl()); + // 未授权 url + shiroFilterFactoryBean.setUnauthorizedUrl(febsProperties.getShiro().getUnauthorizedUrl()); + + LinkedHashMap<String, String> filterChainDefinitionMap = new LinkedHashMap<>(); + // 设置免认证 url + String[] anonUrls = StringUtils.splitByWholeSeparatorPreserveAllTokens(febsProperties.getShiro().getAnonUrl(), ","); + for (String url : anonUrls) { + filterChainDefinitionMap.put(url, "anon"); + } + // 配置退出过滤器,其中具体的退出代码 Shiro已经替我们实现了 + filterChainDefinitionMap.put(febsProperties.getShiro().getLogoutUrl(), "logout"); + + filterChainDefinitionMap.put("/api/**", "anon"); + + filterChainDefinitionMap.put("/swagger-ui.html/**", "anon"); + filterChainDefinitionMap.put("/swagger-resources/**", "anon"); + filterChainDefinitionMap.put("/v2/api-docs", "anon"); + filterChainDefinitionMap.put("/webjars/**", "anon"); + filterChainDefinitionMap.put("/wsxg", "anon"); + + // 除上以外所有 url都必须认证通过才可以访问,未通过认证自动访问 LoginUrl + filterChainDefinitionMap.put("/**", "user"); + + shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); + return shiroFilterFactoryBean; + } + + @Bean + public SecurityManager securityManager(ShiroRealm shiroRealm) { + DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(); + // 配置 SecurityManager,并注入 shiroRealm + securityManager.setRealm(shiroRealm); + // 配置 shiro session管理器 + securityManager.setSessionManager(sessionManager()); + // 配置 缓存管理类 cacheManager + securityManager.setCacheManager(cacheManager()); + // 配置 rememberMeCookie + securityManager.setRememberMeManager(rememberMeManager()); + return securityManager; + } + + /** + * rememberMe cookie 效果是重开浏览器后无需重新登录 + * + * @return SimpleCookie + */ + private SimpleCookie rememberMeCookie() { + // 设置 cookie 名称,对应 login.html 页面的 <input type="checkbox" name="rememberMe"/> + SimpleCookie cookie = new SimpleCookie("rememberMe"); + // 设置 cookie 的过期时间,单位为秒,这里为一天 + cookie.setMaxAge(febsProperties.getShiro().getCookieTimeout()); + return cookie; + } + + /** + * cookie管理对象 + * + * @return CookieRememberMeManager + */ + private CookieRememberMeManager rememberMeManager() { + CookieRememberMeManager cookieRememberMeManager = new CookieRememberMeManager(); + cookieRememberMeManager.setCookie(rememberMeCookie()); + // rememberMe cookie 加密的密钥 + String encryptKey = "febs_shiro_key"; + byte[] encryptKeyBytes = encryptKey.getBytes(StandardCharsets.UTF_8); + String rememberKey = Base64Utils.encodeToString(Arrays.copyOf(encryptKeyBytes, 16)); + cookieRememberMeManager.setCipherKey(Base64.decode(rememberKey)); + return cookieRememberMeManager; + } + + @Bean + public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) { + AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor = new AuthorizationAttributeSourceAdvisor(); + authorizationAttributeSourceAdvisor.setSecurityManager(securityManager); + return authorizationAttributeSourceAdvisor; + } + + /** + * 用于开启 Thymeleaf 中的 shiro 标签的使用 + * + * @return ShiroDialect shiro 方言对象 + */ + @Bean + public ShiroDialect shiroDialect() { + return new ShiroDialect(); + } + + @Bean + public RedisSessionDAO redisSessionDAO() { + RedisSessionDAO redisSessionDAO = new RedisSessionDAO(); + redisSessionDAO.setRedisManager(redisManager()); + return redisSessionDAO; + } + + /** + * session 管理对象 + * + * @return DefaultWebSessionManager + */ + @Bean + public DefaultWebSessionManager sessionManager() { + DefaultWebSessionManager sessionManager = new DefaultWebSessionManager(); + Collection<SessionListener> listeners = new ArrayList<>(); + listeners.add(new ShiroSessionListener()); + // 设置 session超时时间 + sessionManager.setGlobalSessionTimeout(febsProperties.getShiro().getSessionTimeout() * 1000L); + sessionManager.setSessionListeners(listeners); + sessionManager.setSessionDAO(redisSessionDAO()); + sessionManager.setSessionIdUrlRewritingEnabled(false); + return sessionManager; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroHelper.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroHelper.java new file mode 100644 index 0000000..c256df2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroHelper.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.common.authentication; + +import cc.mrbird.febs.common.annotation.Helper; +import org.apache.shiro.authz.AuthorizationInfo; + +/** + * @author MrBird + */ +@Helper +public class ShiroHelper extends ShiroRealm { + + /** + * 获取当前用户的角色和权限集合 + * + * @return AuthorizationInfo + */ + public AuthorizationInfo getCurrentUserAuthorizationInfo() { + return super.doGetAuthorizationInfo(null); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroRealm.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroRealm.java new file mode 100644 index 0000000..aadc6f0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroRealm.java @@ -0,0 +1,115 @@ +package cc.mrbird.febs.common.authentication; + +import cc.mrbird.febs.system.entity.Menu; +import cc.mrbird.febs.system.entity.Role; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.service.IMenuService; +import cc.mrbird.febs.system.service.IRoleService; +import cc.mrbird.febs.system.service.IUserDataPermissionService; +import cc.mrbird.febs.system.service.IUserService; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.*; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.SimpleAuthorizationInfo; +import org.apache.shiro.realm.AuthorizingRealm; +import org.apache.shiro.subject.PrincipalCollection; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * 自定义实现 ShiroRealm,包含认证和授权两大模块 + * + * @author MrBird + */ +@Component +public class ShiroRealm extends AuthorizingRealm { + + private IUserService userService; + private IRoleService roleService; + private IMenuService menuService; + private IUserDataPermissionService userDataPermissionService; + + @Autowired + public void setMenuService(IMenuService menuService) { + this.menuService = menuService; + } + @Autowired + public void setUserService(IUserService userService) { + this.userService = userService; + } + @Autowired + public void setRoleService(IRoleService roleService) { + this.roleService = roleService; + } + @Autowired + public void setUserDataPermissionService(IUserDataPermissionService userDataPermissionService) { + this.userDataPermissionService = userDataPermissionService; + } + + /** + * 授权模块,获取用户角色和权限 + * + * @param principal principal + * @return AuthorizationInfo 权限信息 + */ + @Override + protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principal) { + User user = (User) SecurityUtils.getSubject().getPrincipal(); + String userName = user.getUsername(); + + SimpleAuthorizationInfo simpleAuthorizationInfo = new SimpleAuthorizationInfo(); + + // 获取用户角色集 + List<Role> roleList = this.roleService.findUserRole(userName); + Set<String> roleSet = roleList.stream().map(Role::getRoleName).collect(Collectors.toSet()); + simpleAuthorizationInfo.setRoles(roleSet); + + // 获取用户权限集 + List<Menu> permissionList = this.menuService.findUserPermissions(userName); + Set<String> permissionSet = permissionList.stream().map(Menu::getPerms).collect(Collectors.toSet()); + simpleAuthorizationInfo.setStringPermissions(permissionSet); + return simpleAuthorizationInfo; + } + + /** + * 用户认证 + * + * @param token AuthenticationToken 身份认证 token + * @return AuthenticationInfo 身份认证信息 + * @throws AuthenticationException 认证相关异常 + */ + @Override + protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException { + // 获取用户输入的用户名和密码 + String username = (String) token.getPrincipal(); + String password = new String((char[]) token.getCredentials()); + + // 通过用户名到数据库查询用户信息 + User user = this.userService.findByName(username); + + if (user == null || !StringUtils.equals(password, user.getPassword())) { + throw new IncorrectCredentialsException("用户名或密码错误!"); + } + if (User.STATUS_LOCK.equals(user.getStatus())) { + throw new LockedAccountException("账号已被锁定,请联系管理员!"); + } + String deptIds = this.userDataPermissionService.findByUserId(String.valueOf(user.getUserId())); + user.setDeptIds(deptIds); + return new SimpleAuthenticationInfo(user, password, getName()); + } + + /** + * 清除当前用户权限缓存 + * 使用方法:在需要清除用户权限的地方注入 ShiroRealm, + * 然后调用其 clearCache方法。 + */ + public void clearCache() { + PrincipalCollection principals = SecurityUtils.getSubject().getPrincipals(); + super.clearCache(principals); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/authentication/ShiroSessionListener.java b/src/main/java/cc/mrbird/febs/common/authentication/ShiroSessionListener.java new file mode 100644 index 0000000..59d4d91 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/authentication/ShiroSessionListener.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.common.authentication; + +import org.apache.shiro.session.Session; +import org.apache.shiro.session.SessionListener; + +import java.util.concurrent.atomic.AtomicInteger; + +/** + * @author MrBird + */ +public class ShiroSessionListener implements SessionListener{ + + private final AtomicInteger sessionCount = new AtomicInteger(0); + + @Override + public void onStart(Session session) { + sessionCount.incrementAndGet(); + } + + @Override + public void onStop(Session session) { + sessionCount.decrementAndGet(); + } + + @Override + public void onExpiration(Session session) { + sessionCount.decrementAndGet(); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/configure/FebsConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/FebsConfigure.java new file mode 100644 index 0000000..45c7ce9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/configure/FebsConfigure.java @@ -0,0 +1,96 @@ +package cc.mrbird.febs.common.configure; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.properties.FebsProperties; +import cc.mrbird.febs.common.properties.SwaggerProperties; +import cc.mrbird.febs.common.xss.XssFilter; +import io.swagger.annotations.Api; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.web.servlet.FilterRegistrationBean; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Contact; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.*; +import java.util.concurrent.ThreadPoolExecutor; + +/** + * @author MrBird + */ +@Configuration +@EnableSwagger2 +@RequiredArgsConstructor +public class FebsConfigure { + + private final FebsProperties properties; + + @Bean(FebsConstant.ASYNC_POOL) + public ThreadPoolTaskExecutor asyncThreadPoolTaskExecutor(){ + ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor(); + executor.setCorePoolSize(5); + executor.setMaxPoolSize(20); + executor.setQueueCapacity(200); + executor.setKeepAliveSeconds(30); + executor.setThreadNamePrefix("Febs-Async-Thread"); + executor.setWaitForTasksToCompleteOnShutdown(true); + executor.setAwaitTerminationSeconds(60); + executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); + executor.initialize(); + return executor; + } + + /** + * XssFilter Bean + */ + @Bean + public FilterRegistrationBean<XssFilter> xssFilterRegistrationBean() { + FilterRegistrationBean<XssFilter> filterRegistrationBean = new FilterRegistrationBean<>(); + filterRegistrationBean.setFilter(new XssFilter()); + filterRegistrationBean.setOrder(1); + filterRegistrationBean.setEnabled(true); + filterRegistrationBean.addUrlPatterns("/*"); + Map<String, String> initParameters = new HashMap<>(2); + initParameters.put("excludes", "/favicon.ico,/img/*,/js/*,/css/*"); + initParameters.put("isIncludeRichText", "true"); + filterRegistrationBean.setInitParameters(initParameters); + return filterRegistrationBean; + } + + @Bean + public Docket swaggerApi() { + SwaggerProperties swagger = properties.getSwagger(); + ParameterBuilder parameterBuilder = new ParameterBuilder(); + List<Parameter> parameters = new ArrayList<Parameter>(); + parameterBuilder.name("token").description("token参数").modelRef(new ModelRef("string")).parameterType("header") + .required(false).build(); + parameters.add(parameterBuilder.build()); + return new Docket(DocumentationType.SWAGGER_2) + .select() + .apis(RequestHandlerSelectors.withClassAnnotation(Api.class)) + .paths(PathSelectors.any()) + .build() + .globalOperationParameters(parameters) + .apiInfo(apiInfo(swagger)); + } + + private ApiInfo apiInfo(SwaggerProperties swagger) { + return new ApiInfo( + swagger.getTitle(), + swagger.getDescription(), + swagger.getVersion(), + null, + new Contact(swagger.getAuthor(), swagger.getUrl(), swagger.getEmail()), + swagger.getLicense(), swagger.getLicenseUrl(), Collections.emptyList()); + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/configure/MybatisPlusConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/MybatisPlusConfigure.java new file mode 100644 index 0000000..5a7b1d6 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/configure/MybatisPlusConfigure.java @@ -0,0 +1,50 @@ +package cc.mrbird.febs.common.configure; + +import cc.mrbird.febs.common.interceptor.DataPermissionInterceptor; +import cc.mrbird.febs.common.interceptor.DesensitizationInterceptor; +import com.baomidou.mybatisplus.core.parser.ISqlParser; +import com.baomidou.mybatisplus.extension.parsers.BlockAttackSqlParser; +import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.annotation.Order; + +import java.util.ArrayList; +import java.util.List; + +/** + * @author MrBird + */ +@Configuration +public class MybatisPlusConfigure { + /** + * 注册数据权限 + */ + @Bean + @Order(0) + public DataPermissionInterceptor dataPermissionInterceptor() { + return new DataPermissionInterceptor(); + } + + /** + * 数据脱敏 + */ + @Bean + @Order(-1) + public DesensitizationInterceptor desensitizationInterceptor() { + return new DesensitizationInterceptor(); + } + + /** + * 注册分页插件 + */ + @Bean + @Order(-2) + public PaginationInterceptor paginationInterceptor() { + PaginationInterceptor paginationInterceptor = new PaginationInterceptor(); + List<ISqlParser> sqlParserList = new ArrayList<>(); + sqlParserList.add(new BlockAttackSqlParser()); + paginationInterceptor.setSqlParserList(sqlParserList); + return paginationInterceptor; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/configure/P6spySqlFormatConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/P6spySqlFormatConfigure.java new file mode 100644 index 0000000..bdfec05 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/configure/P6spySqlFormatConfigure.java @@ -0,0 +1,21 @@ +package cc.mrbird.febs.common.configure; + +import cc.mrbird.febs.common.utils.DateUtil; +import com.p6spy.engine.spy.appender.MessageFormattingStrategy; +import org.apache.commons.lang3.StringUtils; + +import java.time.LocalDateTime; + +/** + * 自定义 p6spy sql输出格式 + * + * @author MrBird + */ +public class P6spySqlFormatConfigure implements MessageFormattingStrategy { + + @Override + public String formatMessage(int connectionId, String now, long elapsed, String category, String prepared, String sql, String url) { + return StringUtils.isNotBlank(sql) ? DateUtil.formatFullTime(LocalDateTime.now(), DateUtil.FULL_TIME_SPLIT_PATTERN) + + " | 耗时 " + elapsed + " ms | SQL 语句:" + StringUtils.LF + sql.replaceAll("[\\s]+", StringUtils.SPACE) + ";" : StringUtils.EMPTY; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/configure/RedisConfigure.java b/src/main/java/cc/mrbird/febs/common/configure/RedisConfigure.java new file mode 100644 index 0000000..b1e1d47 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/configure/RedisConfigure.java @@ -0,0 +1,46 @@ +package cc.mrbird.febs.common.configure; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.connection.RedisConnectionFactory; +import org.springframework.data.redis.core.RedisOperations; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; + +/** + * @author MrBird + */ +@Configuration +public class RedisConfigure { + + @Bean + @ConditionalOnClass(RedisOperations.class) + public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { + RedisTemplate<String, Object> template = new RedisTemplate<>(); + template.setConnectionFactory(factory); + + Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class); + ObjectMapper mapper = new ObjectMapper(); + mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + mapper.activateDefaultTyping(mapper.getPolymorphicTypeValidator(), ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(mapper); + + StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); + // key采用 String的序列化方式 + template.setKeySerializer(stringRedisSerializer); + // hash的 key也采用 String的序列化方式 + template.setHashKeySerializer(stringRedisSerializer); + // value序列化方式采用 jackson + template.setValueSerializer(jackson2JsonRedisSerializer); + // hash的 value序列化方式采用 jackson + template.setHashValueSerializer(jackson2JsonRedisSerializer); + template.afterPropertiesSet(); + + return template; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/controller/BaseController.java b/src/main/java/cc/mrbird/febs/common/controller/BaseController.java new file mode 100644 index 0000000..af736fe --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/controller/BaseController.java @@ -0,0 +1,49 @@ +package cc.mrbird.febs.common.controller; + +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.metadata.IPage; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.authc.AuthenticationToken; +import org.apache.shiro.session.Session; +import org.apache.shiro.subject.Subject; + +import java.util.HashMap; +import java.util.Map; + +/** + * @author MrBird + */ +public class BaseController { + + private Subject getSubject() { + return SecurityUtils.getSubject(); + } + + protected User getCurrentUser() { + return (User) getSubject().getPrincipal(); + } + + protected Session getSession() { + return getSubject().getSession(); + } + + protected Session getSession(Boolean flag) { + return getSubject().getSession(flag); + } + + protected void login(AuthenticationToken token) { + getSubject().login(token); + } + + protected Map<String, Object> getDataTable(IPage<?> pageInfo) { + return getDataTable(pageInfo, 2); + } + + protected Map<String, Object> getDataTable(IPage<?> pageInfo, int dataMapInitialCapacity) { + Map<String, Object> data = new HashMap<>(dataMapInitialCapacity); + data.put("rows", pageInfo.getRecords()); + data.put("total", pageInfo.getTotal()); + return data; + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/converter/TimeConverter.java b/src/main/java/cc/mrbird/febs/common/converter/TimeConverter.java new file mode 100644 index 0000000..01ba667 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/converter/TimeConverter.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.common.converter; + +import cc.mrbird.febs.common.utils.DateUtil; +import com.wuwenze.poi.convert.WriteConverter; +import com.wuwenze.poi.exception.ExcelKitWriteConverterException; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import java.text.ParseException; + +/** + * Execl导出时间类型字段格式化 + * + * @author MrBird + */ +@Slf4j +public class TimeConverter implements WriteConverter { + @Override + public String convert(Object value) { + if (value == null) { + return StringUtils.EMPTY; + } else { + try { + return DateUtil.formatCstTime(value.toString(), DateUtil.FULL_TIME_SPLIT_PATTERN); + } catch (ParseException e) { + String message = "时间转换异常"; + log.error(message, e); + throw new ExcelKitWriteConverterException(message); + } + } + } +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/BaseEntity.java b/src/main/java/cc/mrbird/febs/common/entity/BaseEntity.java new file mode 100644 index 0000000..4a7e64a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/BaseEntity.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.common.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableId; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author wzy + * @date 2021-09-16 + **/ +@Data +public class BaseEntity implements Serializable { + private static final long serialVersionUID = 1L; + + private Integer revision = 1; + + private String createdBy = "system"; + + private String updatedBy = "system"; + + private Date createdTime; + + private Date updatedTime; + + @TableId(value = "id",type = IdType.AUTO) + private Long id; +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/DeptTree.java b/src/main/java/cc/mrbird/febs/common/entity/DeptTree.java new file mode 100644 index 0000000..eae7980 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/DeptTree.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.common.entity; + +import cc.mrbird.febs.system.entity.Dept; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Data +public class DeptTree<T> implements Serializable { + + private static final long serialVersionUID = 7681873362531265829L; + + private String id; + private String icon; + private String href; + private String name; + private Map<String, Object> state; + private boolean checked = false; + private Map<String, Object> attributes; + private List<DeptTree<T>> children; + private String parentId; + private boolean hasParent = false; + private boolean hasChild = false; + + private Dept data; + + public void initChildren(){ + this.children = new ArrayList<>(); + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/DesensitizationType.java b/src/main/java/cc/mrbird/febs/common/entity/DesensitizationType.java new file mode 100644 index 0000000..a4f94fe --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/DesensitizationType.java @@ -0,0 +1,40 @@ +package cc.mrbird.febs.common.entity; + +import lombok.Getter; + +/** + * @author MrBird + */ +@Getter +public enum DesensitizationType { + /** + * 手机号脱敏 + */ + PHONE("phone", "11位手机号", "^(\\d{3})\\d{4}(\\d{4})$", "$1****$2"), + /** + * 身份证号脱敏 + */ + ID_CARD("idCard", "16或者18身份证号", "^(\\d{4})\\d{8,10}(\\w{4})$", "$1****$2"), + /** + * 银行卡号脱敏 + */ + BANK_CARD("bankCardNo", "银行卡号", "^(\\d{4})\\d*(\\d{4})$", "$1****$2"), + /** + * 姓名脱敏 + */ + NAME("name", "真实姓名", "(?<=.{1}).*(?=.{1})", "*"), + /** + * 邮箱脱敏 + */ + EMAIL("email", "电子邮箱", "(\\w+)\\w{5}@(\\w+)", "$1***@$2"); + + String type; + String describe; + String[] regular; + + DesensitizationType(String type, String describe, String... regular) { + this.type = type; + this.describe = describe; + this.regular = regular; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/FebsConstant.java b/src/main/java/cc/mrbird/febs/common/entity/FebsConstant.java new file mode 100644 index 0000000..28d0201 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/FebsConstant.java @@ -0,0 +1,54 @@ +package cc.mrbird.febs.common.entity; + +/** + * 常量 + * + * @author MrBird + */ +public interface FebsConstant { + + /** + * 注册用户角色ID + */ + Long REGISTER_ROLE_ID = 2L; + + /** + * 排序规则:降序 + */ + String ORDER_DESC = "desc"; + + /** + * 排序规则:升序 + */ + String ORDER_ASC = "asc"; + + /** + * 前端页面路径前缀 + */ + String VIEW_PREFIX = "febs/views/"; + + /** + * 验证码 Session Key + */ + String CODE_PREFIX = "febs_captcha_"; + + /** + * 允许下载的文件类型,根据需求自己添加(小写) + */ + String[] VALID_FILE_TYPE = {"xlsx", "zip"}; + + /** + * 异步线程池名称 + */ + String ASYNC_POOL = "febsAsyncThreadPool"; + + /** + * 开发环境 + */ + String DEVELOP = "dev"; + + /** + * Windows 操作系统 + */ + String SYSTEM_WINDOWS = "windows"; +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/FebsResponse.java b/src/main/java/cc/mrbird/febs/common/entity/FebsResponse.java new file mode 100644 index 0000000..9500e71 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/FebsResponse.java @@ -0,0 +1,44 @@ +package cc.mrbird.febs.common.entity; + +import org.springframework.http.HttpStatus; + +import java.util.HashMap; + +/** + * @author MrBird + */ +public class FebsResponse extends HashMap<String, Object> { + + private static final long serialVersionUID = -8713837118340960775L; + + public FebsResponse code(HttpStatus status) { + this.put("code", status.value()); + return this; + } + + public FebsResponse message(String message) { + this.put("message", message); + return this; + } + + public FebsResponse data(Object data) { + this.put("data", data); + return this; + } + + public FebsResponse success() { + this.code(HttpStatus.OK); + return this; + } + + public FebsResponse fail() { + this.code(HttpStatus.INTERNAL_SERVER_ERROR); + return this; + } + + @Override + public FebsResponse put(String key, Object value) { + super.put(key, value); + return this; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/ImageType.java b/src/main/java/cc/mrbird/febs/common/entity/ImageType.java new file mode 100644 index 0000000..0172945 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/ImageType.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.common.entity; + +/** + * 图片类型常量类 + * + * @author MrBird + */ +public interface ImageType { + + /** + * gif类型 + */ + String GIF = "gif"; + /** + * png类型 + */ + String PNG = "png"; +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/LimitType.java b/src/main/java/cc/mrbird/febs/common/entity/LimitType.java new file mode 100644 index 0000000..c108f26 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/LimitType.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.entity; + +/** + * @author MrBird + */ +public enum LimitType { + /** + * 传统类型 + */ + CUSTOMER, + /** + * 根据 IP地址限制 + */ + IP +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/MenuTree.java b/src/main/java/cc/mrbird/febs/common/entity/MenuTree.java new file mode 100644 index 0000000..dfd9934 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/MenuTree.java @@ -0,0 +1,33 @@ +package cc.mrbird.febs.common.entity; + +import cc.mrbird.febs.system.entity.Menu; +import lombok.Data; + +import java.io.Serializable; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Data +public class MenuTree<T> implements Serializable { + + private static final long serialVersionUID = 7681873362531265829L; + + private String id; + private String icon; + private String href; + private String title; + private Map<String, Object> state; + private boolean checked = false; + private Map<String, Object> attributes; + private List<MenuTree<T>> childs = new ArrayList<>(); + private String parentId; + private boolean hasParent = false; + private boolean hasChild = false; + + private Menu data; + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/entity/QueryRequest.java b/src/main/java/cc/mrbird/febs/common/entity/QueryRequest.java new file mode 100644 index 0000000..c199f41 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/QueryRequest.java @@ -0,0 +1,36 @@ +package cc.mrbird.febs.common.entity; + +import lombok.Data; +import lombok.ToString; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +@ToString +public class QueryRequest implements Serializable { + + private static final long serialVersionUID = -4869594085374385813L; + + /** + * 当前页面数据量 + */ + private int pageSize = 10; + + /** + * 当前页码 + */ + private int pageNum = 1; + + /** + * 排序字段 + */ + private String field; + + /** + * 排序规则,asc升序,desc降序 + */ + private String order; +} diff --git a/src/main/java/cc/mrbird/febs/common/entity/Regexp.java b/src/main/java/cc/mrbird/febs/common/entity/Regexp.java new file mode 100644 index 0000000..62b027b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/entity/Regexp.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.entity; + +/** + * 正则常量 + * + * @author MrBird + */ +public interface Regexp { + + /** + * 简单手机号正则(这里只是简单校验是否为 11位,实际规则更复杂) + */ + String MOBILE_REG = "[1]\\d{10}"; + +} diff --git a/src/main/java/cc/mrbird/febs/common/exception/FebsException.java b/src/main/java/cc/mrbird/febs/common/exception/FebsException.java new file mode 100644 index 0000000..0818231 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/exception/FebsException.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.exception; + +/** + * FEBS系统内部异常 + * + * @author MrBird + */ +public class FebsException extends RuntimeException { + + private static final long serialVersionUID = -994962710559017255L; + + public FebsException(String message) { + super(message); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/exception/FileDownloadException.java b/src/main/java/cc/mrbird/febs/common/exception/FileDownloadException.java new file mode 100644 index 0000000..ad49a39 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/exception/FileDownloadException.java @@ -0,0 +1,14 @@ +package cc.mrbird.febs.common.exception; + +/** + * 文件下载异常 + * + * @author MrBird + */ +public class FileDownloadException extends Exception { + private static final long serialVersionUID = -4353976687870027960L; + + public FileDownloadException(String message) { + super(message); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/exception/GeneratorException.java b/src/main/java/cc/mrbird/febs/common/exception/GeneratorException.java new file mode 100644 index 0000000..fbc7b6e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/exception/GeneratorException.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.exception; + +/** + * 代码生成异常 + * + * @author MrBird + */ +public class GeneratorException extends Exception { + + private static final long serialVersionUID = 150902781087610054L; + + public GeneratorException(String message) { + super(message); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/exception/LimitAccessException.java b/src/main/java/cc/mrbird/febs/common/exception/LimitAccessException.java new file mode 100644 index 0000000..c2623c9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/exception/LimitAccessException.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.exception; + +/** + * 限流异常 + * + * @author MrBird + */ +public class LimitAccessException extends Exception { + + private static final long serialVersionUID = -3608667856397125671L; + + public LimitAccessException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/exception/RedisConnectException.java b/src/main/java/cc/mrbird/febs/common/exception/RedisConnectException.java new file mode 100644 index 0000000..6a120e2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/exception/RedisConnectException.java @@ -0,0 +1,15 @@ +package cc.mrbird.febs.common.exception; + +/** + * Redis 连接异常 + * + * @author MrBird + */ +public class RedisConnectException extends Exception { + + private static final long serialVersionUID = 1639374111871115063L; + + public RedisConnectException(String message) { + super(message); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/handler/GlobalExceptionHandler.java b/src/main/java/cc/mrbird/febs/common/handler/GlobalExceptionHandler.java new file mode 100644 index 0000000..dbf842f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/handler/GlobalExceptionHandler.java @@ -0,0 +1,138 @@ +package cc.mrbird.febs.common.handler; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.exception.FileDownloadException; +import cc.mrbird.febs.common.exception.LimitAccessException; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authc.AuthenticationException; +import org.apache.shiro.authz.AuthorizationException; +import org.apache.shiro.authz.UnauthorizedException; +import org.apache.shiro.session.ExpiredSessionException; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpStatus; +import org.springframework.validation.BindException; +import org.springframework.validation.FieldError; +import org.springframework.web.bind.MethodArgumentNotValidException; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import javax.validation.ConstraintViolation; +import javax.validation.ConstraintViolationException; +import javax.validation.Path; +import java.util.List; +import java.util.Set; + +/** + * @author MrBird + */ +@Slf4j +@RestControllerAdvice +@Order(value = Ordered.HIGHEST_PRECEDENCE) +public class GlobalExceptionHandler { + + @ExceptionHandler(value = Exception.class) + public FebsResponse handleException(Exception e) { + log.error("系统内部异常,异常信息", e); + return new FebsResponse().code(HttpStatus.INTERNAL_SERVER_ERROR).message("系统内部异常"); + } + + @ExceptionHandler(value = FebsException.class) + public FebsResponse handleFebsException(FebsException e) { + log.error("系统错误", e); + return new FebsResponse().code(HttpStatus.INTERNAL_SERVER_ERROR).message(e.getMessage()); + } + + /** + * 统一处理请求参数校验(实体对象传参-form) + * + * @param e BindException + * @return FebsResponse + */ + @ExceptionHandler(BindException.class) + public FebsResponse validExceptionHandler(BindException e) { + StringBuilder message = new StringBuilder(); + List<FieldError> fieldErrors = e.getBindingResult().getFieldErrors(); + for (FieldError error : fieldErrors) { + message.append(error.getField()).append(error.getDefaultMessage()).append(","); + } + message = new StringBuilder(message.substring(0, message.length() - 1)); + return new FebsResponse().code(HttpStatus.BAD_REQUEST).message(message.toString()); + } + + /** + * 统一处理请求参数校验(普通传参) + * + * @param e ConstraintViolationException + * @return FebsResponse + */ + @ExceptionHandler(value = ConstraintViolationException.class) + public FebsResponse handleConstraintViolationException(ConstraintViolationException e) { + StringBuilder message = new StringBuilder(); + Set<ConstraintViolation<?>> violations = e.getConstraintViolations(); + for (ConstraintViolation<?> violation : violations) { + Path path = violation.getPropertyPath(); + String[] pathArr = StringUtils.splitByWholeSeparatorPreserveAllTokens(path.toString(), "."); + message.append(pathArr[1]).append(violation.getMessage()).append(","); + } + message = new StringBuilder(message.substring(0, message.length() - 1)); + return new FebsResponse().code(HttpStatus.BAD_REQUEST).message(message.toString()); + } + + /** + * 统一处理请求参数校验(json) + * + * @param e ConstraintViolationException + * @return FebsResponse + */ + @ExceptionHandler(MethodArgumentNotValidException.class) + public FebsResponse handlerMethodArgumentNotValidException(MethodArgumentNotValidException e) { + StringBuilder message = new StringBuilder(); + for (FieldError error : e.getBindingResult().getFieldErrors()) { + message.append(error.getField()).append(error.getDefaultMessage()).append(","); + } + message = new StringBuilder(message.substring(0, message.length() - 1)); + log.error(message.toString(), e); + return new FebsResponse().code(HttpStatus.BAD_REQUEST).message(message.toString()); + } + + @ExceptionHandler(value = LimitAccessException.class) + public FebsResponse handleLimitAccessException(LimitAccessException e) { + log.error("LimitAccessException", e); + return new FebsResponse().code(HttpStatus.TOO_MANY_REQUESTS).message(e.getMessage()); + } + + @ExceptionHandler(value = UnauthorizedException.class) + public FebsResponse handleUnauthorizedException(UnauthorizedException e) { + log.error("UnauthorizedException, {}", e.getMessage()); + return new FebsResponse().code(HttpStatus.FORBIDDEN).message(e.getMessage()); + } + + @ExceptionHandler(value = AuthenticationException.class) + public FebsResponse handleAuthenticationException(AuthenticationException e) { + log.error("AuthenticationException, {}", e.getMessage()); + return new FebsResponse().code(HttpStatus.INTERNAL_SERVER_ERROR).message(e.getMessage()); + } + + @ExceptionHandler(value = AuthorizationException.class) + public FebsResponse handleAuthorizationException(AuthorizationException e){ + log.error("AuthorizationException, {}", e.getMessage()); + return new FebsResponse().code(HttpStatus.UNAUTHORIZED).message(e.getMessage()); + } + + + @ExceptionHandler(value = ExpiredSessionException.class) + public FebsResponse handleExpiredSessionException(ExpiredSessionException e) { + log.error("ExpiredSessionException", e); + return new FebsResponse().code(HttpStatus.UNAUTHORIZED).message(e.getMessage()); + } + + @ExceptionHandler(value = FileDownloadException.class) + @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) + public void handleFileDownloadException(FileDownloadException e) { + log.error("FileDownloadException", e); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/DataPermissionInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/DataPermissionInterceptor.java new file mode 100644 index 0000000..138db96 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/interceptor/DataPermissionInterceptor.java @@ -0,0 +1,129 @@ +package cc.mrbird.febs.common.interceptor; + +import cc.mrbird.febs.common.annotation.DataPermission; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.toolkit.PluginUtils; +import com.baomidou.mybatisplus.extension.handlers.AbstractSqlParserHandler; +import lombok.extern.slf4j.Slf4j; +import net.sf.jsqlparser.expression.operators.conditional.AndExpression; +import net.sf.jsqlparser.parser.CCJSqlParserManager; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.schema.Table; +import net.sf.jsqlparser.statement.select.PlainSelect; +import net.sf.jsqlparser.statement.select.Select; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.executor.statement.StatementHandler; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlCommandType; +import org.apache.ibatis.plugin.*; +import org.apache.ibatis.reflection.MetaObject; +import org.apache.ibatis.reflection.SystemMetaObject; + +import java.io.StringReader; +import java.sql.Connection; +import java.util.Properties; + +/** + * @author MrBird + */ +@Slf4j +@Intercepts({@Signature(type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})}) +public class DataPermissionInterceptor extends AbstractSqlParserHandler implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + StatementHandler statementHandler = PluginUtils.realTarget(invocation.getTarget()); + MetaObject metaObject = SystemMetaObject.forObject(statementHandler); + this.sqlParser(metaObject); + MappedStatement mappedStatement = (MappedStatement) metaObject.getValue("delegate.mappedStatement"); + + BoundSql boundSql = (BoundSql) metaObject.getValue("delegate.boundSql"); + // 数据权限只针对查询语句 + if (SqlCommandType.SELECT == mappedStatement.getSqlCommandType()) { + DataPermission dataPermission = getDataPermission(mappedStatement); + if (shouldFilter(mappedStatement, dataPermission)) { + String id = mappedStatement.getId(); + log.info("\n 数据权限过滤 Method -> {}", id); + String originSql = boundSql.getSql(); + String dataPermissionSql = dataPermissionSql(originSql, dataPermission); + metaObject.setValue("delegate.boundSql.sql", dataPermissionSql); + log.info("\n 原始SQL -> {} \n 数据权限过滤SQL -> {}", originSql, dataPermissionSql); + } + } + return invocation.proceed(); + } + + @Override + public Object plugin(Object target) { + if (target instanceof StatementHandler) { + return Plugin.wrap(target, this); + } + return target; + } + + @Override + public void setProperties(Properties properties) { + } + + private String dataPermissionSql(String originSql, DataPermission dataPermission) { + try { + if (StringUtils.isBlank(dataPermission.field())) { + return originSql; + } + User currentUser = FebsUtil.getCurrentUser(); + if (currentUser == null) { + return originSql; + } + CCJSqlParserManager parserManager = new CCJSqlParserManager(); + Select select = (Select) parserManager.parse(new StringReader(originSql)); + PlainSelect plainSelect = (PlainSelect) select.getSelectBody(); + Table fromItem = (Table) plainSelect.getFromItem(); + + String selectTableName = fromItem.getAlias() == null ? fromItem.getName() : fromItem.getAlias().getName(); + String dataPermissionSql = String.format("%s.%s in (%s)", selectTableName, dataPermission.field(), StringUtils.defaultIfBlank(currentUser.getDeptIds(), "'WITHOUT PERMISSIONS'")); + + if (plainSelect.getWhere() == null) { + plainSelect.setWhere(CCJSqlParserUtil.parseCondExpression(dataPermissionSql)); + } else { + plainSelect.setWhere(new AndExpression(plainSelect.getWhere(), CCJSqlParserUtil.parseCondExpression(dataPermissionSql))); + } + return select.toString(); + } catch (Exception e) { + log.warn("get data permission sql fail: {}", e.getMessage()); + return originSql; + } + } + + private DataPermission getDataPermission(MappedStatement mappedStatement) { + String mappedStatementId = mappedStatement.getId(); + DataPermission dataPermission = null; + try { + String className = mappedStatementId.substring(0, mappedStatementId.lastIndexOf(".")); + final Class<?> clazz = Class.forName(className); + if (clazz.isAnnotationPresent(DataPermission.class)) { + dataPermission = clazz.getAnnotation(DataPermission.class); + } + } catch (Exception ignore) { + } + return dataPermission; + } + + private Boolean shouldFilter(MappedStatement mappedStatement, DataPermission dataPermission) { + if (dataPermission != null) { + String methodName = StringUtils.substringAfterLast(mappedStatement.getId(), "."); + String methodPrefix = dataPermission.methodPrefix(); + if (StringUtils.isNotBlank(methodPrefix) && StringUtils.startsWith(methodName, methodPrefix)) { + return Boolean.TRUE; + } + String[] methods = dataPermission.methods(); + for (String method : methods) { + if (StringUtils.equals(method, methodName)) { + return Boolean.TRUE; + } + } + } + return Boolean.FALSE; + } +} diff --git a/src/main/java/cc/mrbird/febs/common/interceptor/DesensitizationInterceptor.java b/src/main/java/cc/mrbird/febs/common/interceptor/DesensitizationInterceptor.java new file mode 100644 index 0000000..e544236 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/interceptor/DesensitizationInterceptor.java @@ -0,0 +1,114 @@ +package cc.mrbird.febs.common.interceptor; + +import cc.mrbird.febs.common.annotation.Desensitization; +import cc.mrbird.febs.common.entity.DesensitizationType; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.apache.ibatis.cache.CacheKey; +import org.apache.ibatis.executor.Executor; +import org.apache.ibatis.mapping.BoundSql; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.plugin.*; +import org.apache.ibatis.session.ResultHandler; +import org.apache.ibatis.session.RowBounds; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Properties; + +/** + * @author MrBird + */ +@Data +@Intercepts({ + @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, + RowBounds.class, ResultHandler.class}), + @Signature(type = Executor.class, method = "query", args = {MappedStatement.class, Object.class, + RowBounds.class, ResultHandler.class, CacheKey.class, BoundSql.class}),}) +public class DesensitizationInterceptor implements Interceptor { + + @Override + public Object intercept(Invocation invocation) throws Throwable { + Object result = invocation.proceed(); + if (result instanceof ArrayList<?>) { + List<?> list = (ArrayList<?>) result; + return this.desensitization(list); + } else { + return this.desensitization(result); + } + } + + @Override + public Object plugin(Object target) { + return Plugin.wrap(target, this); + } + + @Override + public void setProperties(Properties properties) { + + } + + private List<?> desensitization(List<?> list) { + Class<?> cls = null; + Field[] objFields = null; + if (list != null && list.size() > 0) { + for (Object o : list) { + if (cls == null) { + cls = o.getClass(); + objFields = cls.getDeclaredFields(); + } + desensitizationField(o, objFields); + } + } + return list; + } + + private Object desensitization(Object obj) { + Class<?> cls; + Field[] objFields; + if (obj != null) { + cls = obj.getClass(); + objFields = cls.getDeclaredFields(); + desensitizationField(obj, objFields); + } + return obj; + } + + private void desensitizationField(Object obj, Field[] objFields) { + for (Field field : objFields) { + Desensitization desensitization; + if ("serialVersionUID".equals(field.getName())) { + continue; + } + if (String.class != field.getType() || (desensitization = field.getAnnotation(Desensitization.class)) == null) { + continue; + } + field.setAccessible(true); + String value; + try { + value = field.get(obj) != null ? field.get(obj).toString() : null; + } catch (Exception e) { + value = null; + } + if (value == null) { + continue; + } + List<String> regular; + DesensitizationType type = desensitization.type(); + regular = Arrays.asList(type.getRegular()); + if (regular.size() > 1) { + String match = regular.get(0); + String result = regular.get(1); + if (StringUtils.isNotBlank(match) && StringUtils.isNotBlank(result)) { + value = value.replaceAll(match, result); + try { + field.set(obj, value); + } catch (Exception ignore) { + } + } + } + } + } +} diff --git a/src/main/java/cc/mrbird/febs/common/properties/FebsProperties.java b/src/main/java/cc/mrbird/febs/common/properties/FebsProperties.java new file mode 100644 index 0000000..af0e413 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/properties/FebsProperties.java @@ -0,0 +1,24 @@ +package cc.mrbird.febs.common.properties; + +import lombok.Data; +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.PropertySource; + +/** + * @author MrBird + */ +@Data +@SpringBootConfiguration +@PropertySource(value = {"classpath:febs.properties"}) +@ConfigurationProperties(prefix = "febs") +public class FebsProperties { + + private ShiroProperties shiro = new ShiroProperties(); + private boolean autoOpenBrowser = true; + private SwaggerProperties swagger = new SwaggerProperties(); + + private int maxBatchInsertNum = 1000; + + private ValidateCodeProperties code = new ValidateCodeProperties(); +} diff --git a/src/main/java/cc/mrbird/febs/common/properties/ShiroProperties.java b/src/main/java/cc/mrbird/febs/common/properties/ShiroProperties.java new file mode 100644 index 0000000..6c6a835 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/properties/ShiroProperties.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.common.properties; + +import lombok.Data; + +/** + * @author MrBird + */ +@Data +public class ShiroProperties { + + private long sessionTimeout; + private int cookieTimeout; + private String anonUrl; + private String loginUrl; + private String successUrl; + private String logoutUrl; + private String unauthorizedUrl; +} diff --git a/src/main/java/cc/mrbird/febs/common/properties/SwaggerProperties.java b/src/main/java/cc/mrbird/febs/common/properties/SwaggerProperties.java new file mode 100644 index 0000000..61b73a1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/properties/SwaggerProperties.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.common.properties; + +import lombok.Data; + +/** + * @author MrBird + */ +@Data +public class SwaggerProperties { + private String basePackage; + private String title; + private String description; + private String version; + private String author; + private String url; + private String email; + private String license; + private String licenseUrl; +} diff --git a/src/main/java/cc/mrbird/febs/common/properties/ValidateCodeProperties.java b/src/main/java/cc/mrbird/febs/common/properties/ValidateCodeProperties.java new file mode 100644 index 0000000..505c417 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/properties/ValidateCodeProperties.java @@ -0,0 +1,39 @@ +package cc.mrbird.febs.common.properties; + +import cc.mrbird.febs.common.entity.ImageType; +import lombok.Data; + +/** + * @author MrBird + */ +@Data +public class ValidateCodeProperties { + + /** + * 验证码有效时间,单位秒 + */ + private Long time = 120L; + /** + * 验证码类型,可选值 png和 gif + */ + private String type = ImageType.PNG; + /** + * 图片宽度,px + */ + private Integer width = 130; + /** + * 图片高度,px + */ + private Integer height = 48; + /** + * 验证码位数 + */ + private Integer length = 4; + /** + * 验证码值的类型 + * 1. 数字加字母 + * 2. 纯数字 + * 3. 纯字母 + */ + private Integer charType = 2; +} diff --git a/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java new file mode 100644 index 0000000..24b5534 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/runner/FebsStartedUpRunner.java @@ -0,0 +1,79 @@ +package cc.mrbird.febs.common.runner; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.properties.FebsProperties; +import cc.mrbird.febs.common.service.RedisService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.ApplicationArguments; +import org.springframework.boot.ApplicationRunner; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.stereotype.Component; + +import java.net.InetAddress; + +/** + * @author MrBird + * @author FiseTch + */ +@Slf4j +@Component +@RequiredArgsConstructor +public class FebsStartedUpRunner implements ApplicationRunner { + + private final ConfigurableApplicationContext context; + private final FebsProperties febsProperties; + private final RedisService redisService; + + @Value("${server.port:8080}") + private String port; + @Value("${server.servlet.context-path:}") + private String contextPath; + @Value("${spring.profiles.active}") + private String active; + + @Override + public void run(ApplicationArguments args) throws Exception { + try { + // 测试 Redis连接是否正常 + redisService.hasKey("febs_test"); + } catch (Exception e) { + log.error(" ____ __ _ _ "); + log.error("| |_ / /\\ | | | |"); + log.error("|_| /_/--\\ |_| |_|__"); + log.error(" "); + log.error("FEBS启动失败,{}", e.getMessage()); + log.error("Redis连接异常,请检查Redis连接配置并确保Redis服务已启动"); + // 关闭 FEBS + context.close(); + } + if (context.isActive()) { + InetAddress address = InetAddress.getLocalHost(); + String url = String.format("http://%s:%s", address.getHostAddress(), port); + String loginUrl = febsProperties.getShiro().getLoginUrl(); + if (StringUtils.isNotBlank(contextPath)) { + url += contextPath; + } + if (StringUtils.isNotBlank(loginUrl)) { + url += loginUrl; + } + log.info(" __ ___ _ ___ _ ____ _____ ____ "); + log.info("/ /` / / \\ | |\\/| | |_) | | | |_ | | | |_ "); + log.info("\\_\\_, \\_\\_/ |_| | |_| |_|__ |_|__ |_| |_|__ "); + log.info(" "); + log.info("FEBS 权限系统启动完毕,地址:{}", url); + + boolean auto = febsProperties.isAutoOpenBrowser(); + if (auto && StringUtils.equalsIgnoreCase(active, FebsConstant.DEVELOP)) { + String os = System.getProperty("os.name"); + // 默认为 windows时才自动打开页面 + if (StringUtils.containsIgnoreCase(os, FebsConstant.SYSTEM_WINDOWS)) { + //使用默认浏览器打开系统登录页 + Runtime.getRuntime().exec("cmd /c start " + url); + } + } + } + } +} diff --git a/src/main/java/cc/mrbird/febs/common/service/RedisService.java b/src/main/java/cc/mrbird/febs/common/service/RedisService.java new file mode 100644 index 0000000..fcbc453 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/service/RedisService.java @@ -0,0 +1,562 @@ +package cc.mrbird.febs.common.service; + +import lombok.RequiredArgsConstructor; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.Arrays; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.concurrent.TimeUnit; + +/** + * 定义常用的 Redis操作 + * + * @author MrBird + */ +@Service +@RequiredArgsConstructor +public class RedisService { + + private final RedisTemplate<String, Object> redisTemplate; + + /** + * 指定缓存失效时间 + * + * @param key 键 + * @param time 时间(秒) + * @return Boolean + */ + public Boolean expire(String key, Long time) { + try { + if (time > 0) { + redisTemplate.expire(key, time, TimeUnit.SECONDS); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据key获取过期时间 + * + * @param key 键 不能为 null + * @return 时间(秒) 返回 0代表为永久有效 + */ + public Long getExpire(String key) { + return redisTemplate.getExpire(key, TimeUnit.SECONDS); + } + + /** + * 判断 key是否存在 + * + * @param key 键 + * @return true 存在 false不存在 + */ + public Boolean hasKey(String key) { + try { + return redisTemplate.hasKey(key); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除缓存 + * + * @param key 可以传一个值 或多个 + */ + public void del(String... key) { + if (key != null && key.length > 0) { + if (key.length == 1) { + redisTemplate.delete(key[0]); + } else { + redisTemplate.delete(Arrays.asList(key)); + } + } + } + + /** + * 普通缓存获取 + * + * @param key 键 + * @return 值 + */ + public Object get(String key) { + return key == null ? null : redisTemplate.opsForValue().get(key); + } + + /** + * 普通缓存放入 + * + * @param key 键 + * @param value 值 + * @return true成功 false失败 + */ + public Boolean set(String key, Object value) { + try { + redisTemplate.opsForValue().set(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 普通缓存放入并设置时间 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 + * @return true成功 false 失败 + */ + public Boolean set(String key, Object value, Long time) { + try { + if (time > 0) { + redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); + } else { + set(key, value); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 递增 + * + * @param key 键 + * @param delta 要增加几(大于0) + * @return Long + */ + public Long incr(String key, Long delta) { + if (delta < 0) { + throw new RuntimeException("递增因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, delta); + } + + /** + * 递减 + * + * @param key 键 + * @param delta 要减少几 + * @return Long + */ + public Long decr(String key, Long delta) { + if (delta < 0) { + throw new RuntimeException("递减因子必须大于0"); + } + return redisTemplate.opsForValue().increment(key, -delta); + } + + /** + * HashGet + * + * @param key 键 不能为 null + * @param item 项 不能为 null + * @return 值 + */ + public Object hget(String key, String item) { + return redisTemplate.opsForHash().get(key, item); + } + + /** + * 获取 hashKey对应的所有键值 + * + * @param key 键 + * @return 对应的多个键值 + */ + public Map<Object, Object> hmget(String key) { + return redisTemplate.opsForHash().entries(key); + } + + /** + * HashSet + * + * @param key 键 + * @param map 对应多个键值 + * @return true 成功 false 失败 + */ + public Boolean hmset(String key, Map<String, Object> map) { + try { + redisTemplate.opsForHash().putAll(key, map); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * HashSet 并设置时间 + * + * @param key 键 + * @param map 对应多个键值 + * @param time 时间(秒) + * @return true成功 false失败 + */ + public Boolean hmset(String key, Map<String, Object> map, Long time) { + try { + redisTemplate.opsForHash().putAll(key, map); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * + * @param key 键 + * @param item 项 + * @param value 值 + * @return true 成功 false失败 + */ + public Boolean hset(String key, String item, Object value) { + try { + redisTemplate.opsForHash().put(key, item, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 向一张hash表中放入数据,如果不存在将创建 + * + * @param key 键 + * @param item 项 + * @param value 值 + * @param time 时间(秒) 注意:如果已存在的hash表有时间,这里将会替换原有的时间 + * @return true 成功 false失败 + */ + public Boolean hset(String key, String item, Object value, Long time) { + try { + redisTemplate.opsForHash().put(key, item, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 删除hash表中的值 + * + * @param key 键 不能为 null + * @param item 项 可以使多个不能为 null + */ + public void hdel(String key, Object... item) { + redisTemplate.opsForHash().delete(key, item); + } + + /** + * 判断hash表中是否有该项的值 + * + * @param key 键 不能为 null + * @param item 项 不能为 null + * @return true 存在 false不存在 + */ + public Boolean hHasKey(String key, String item) { + return redisTemplate.opsForHash().hasKey(key, item); + } + + /** + * hash递增 如果不存在,就会创建一个 并把新增后的值返回 + * + * @param key 键 + * @param item 项 + * @param by 要增加几(大于0) + * @return Double + */ + public Double hincr(String key, String item, Double by) { + return redisTemplate.opsForHash().increment(key, item, by); + } + + /** + * hash递减 + * + * @param key 键 + * @param item 项 + * @param by 要减少记(小于0) + * @return Double + */ + public Double hdecr(String key, String item, Double by) { + return redisTemplate.opsForHash().increment(key, item, -by); + } + + /** + * 根据 key获取 Set中的所有值 + * + * @param key 键 + * @return Set + */ + public Set<Object> sGet(String key) { + try { + return redisTemplate.opsForSet().members(key); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 根据value从一个set中查询,是否存在 + * + * @param key 键 + * @param value 值 + * @return true 存在 false不存在 + */ + public Boolean sHasKey(String key, Object value) { + try { + return redisTemplate.opsForSet().isMember(key, value); + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将数据放入set缓存 + * + * @param key 键 + * @param values 值 可以是多个 + * @return 成功个数 + */ + public Long sSet(String key, Object... values) { + try { + return redisTemplate.opsForSet().add(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } + + /** + * 将set数据放入缓存 + * + * @param key 键 + * @param time 时间(秒) + * @param values 值 可以是多个 + * @return 成功个数 + */ + public Long sSetAndTime(String key, Long time, Object... values) { + try { + Long count = redisTemplate.opsForSet().add(key, values); + if (time > 0) { + expire(key, time); + } + return count; + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } + + /** + * 获取set缓存的长度 + * + * @param key 键 + * @return Long + */ + public Long sGetSetSize(String key) { + try { + return redisTemplate.opsForSet().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } + + /** + * 移除值为value的 + * + * @param key 键 + * @param values 值 可以是多个 + * @return 移除的个数 + */ + public Long setRemove(String key, Object... values) { + try { + return redisTemplate.opsForSet().remove(key, values); + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } + + /** + * 获取list缓存的内容 + * + * @param key 键 + * @param start 开始 + * @param end 结束 0 到 -1代表所有值 + * @return List + */ + public List<Object> lGet(String key, Long start, Long end) { + try { + return redisTemplate.opsForList().range(key, start, end); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 获取list缓存的长度 + * + * @param key 键 + * @return Long + */ + public Long lGetListSize(String key) { + try { + return redisTemplate.opsForList().size(key); + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } + + /** + * 通过索引 获取list中的值 + * + * @param key 键 + * @param index 索引 index>=0时, 0 表头,1 第二个元素,依次类推; + * index<0时,-1,表尾,-2倒数第二个元素,依次类推 + * @return Object + */ + public Object lGetIndex(String key, Long index) { + try { + return redisTemplate.opsForList().index(key, index); + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @return Boolean + */ + public Boolean lSet(String key, Object value) { + try { + redisTemplate.opsForList().rightPush(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return Boolean + */ + public Boolean lSet(String key, Object value, Long time) { + try { + redisTemplate.opsForList().rightPush(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @return Boolean + */ + public Boolean lSet(String key, List<Object> value) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 将list放入缓存 + * + * @param key 键 + * @param value 值 + * @param time 时间(秒) + * @return Boolean + */ + public Boolean lSet(String key, List<Object> value, Long time) { + try { + redisTemplate.opsForList().rightPushAll(key, value); + if (time > 0) { + expire(key, time); + } + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 根据索引修改list中的某条数据 + * + * @param key 键 + * @param index 索引 + * @param value 值 + * @return Boolean + */ + public Boolean lUpdateIndex(String key, Long index, Object value) { + try { + redisTemplate.opsForList().set(key, index, value); + return true; + } catch (Exception e) { + e.printStackTrace(); + return false; + } + } + + /** + * 移除N个值为value + * + * @param key 键 + * @param count 移除多少个 + * @param value 值 + * @return 移除的个数 + */ + public Long lRemove(String key, Long count, Object value) { + try { + return redisTemplate.opsForList().remove(key, count, value); + } catch (Exception e) { + e.printStackTrace(); + return 0L; + } + } +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/service/ValidateCodeService.java b/src/main/java/cc/mrbird/febs/common/service/ValidateCodeService.java new file mode 100644 index 0000000..35c2505 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/service/ValidateCodeService.java @@ -0,0 +1,80 @@ +package cc.mrbird.febs.common.service; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.ImageType; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.properties.FebsProperties; +import cc.mrbird.febs.common.properties.ValidateCodeProperties; +import com.wf.captcha.GifCaptcha; +import com.wf.captcha.SpecCaptcha; +import com.wf.captcha.base.Captcha; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.http.HttpHeaders; +import org.springframework.http.MediaType; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import java.io.IOException; + +/** + * 验证码服务 + * + * @author MrBird + */ +@Service +@RequiredArgsConstructor +public class ValidateCodeService { + + private final RedisService redisService; + private final FebsProperties properties; + + public void create(HttpServletRequest request, HttpServletResponse response) throws IOException { + HttpSession session = request.getSession(); + String key = session.getId(); + ValidateCodeProperties code = properties.getCode(); + setHeader(response, code.getType()); + + Captcha captcha = createCaptcha(code); + redisService.set(FebsConstant.CODE_PREFIX + key, StringUtils.lowerCase(captcha.text()), code.getTime()); + captcha.out(response.getOutputStream()); + } + + + public void check(String key, String value) throws FebsException { + Object codeInRedis = redisService.get(FebsConstant.CODE_PREFIX + key); + if (StringUtils.isBlank(value)) { + throw new FebsException("请输入验证码"); + } + if (codeInRedis == null) { + throw new FebsException("验证码已过期"); + } + if (!StringUtils.equalsIgnoreCase(value, String.valueOf(codeInRedis))) { + throw new FebsException("验证码不正确"); + } + } + + private Captcha createCaptcha(ValidateCodeProperties code) { + Captcha captcha; + if (StringUtils.equalsIgnoreCase(code.getType(), ImageType.GIF)) { + captcha = new GifCaptcha(code.getWidth(), code.getHeight(), code.getLength()); + } else { + captcha = new SpecCaptcha(code.getWidth(), code.getHeight(), code.getLength()); + } + captcha.setCharType(code.getCharType()); + return captcha; + } + + private void setHeader(HttpServletResponse response, String type) { + if (StringUtils.equalsIgnoreCase(type, ImageType.GIF)) { + response.setContentType(MediaType.IMAGE_GIF_VALUE); + } else { + response.setContentType(MediaType.IMAGE_PNG_VALUE); + } + response.setHeader(HttpHeaders.PRAGMA, "No-cache"); + response.setHeader(HttpHeaders.CACHE_CONTROL, "No-cache"); + response.setDateHeader(HttpHeaders.EXPIRES, 0L); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/AddressUtil.java b/src/main/java/cc/mrbird/febs/common/utils/AddressUtil.java new file mode 100644 index 0000000..ab1c464 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/AddressUtil.java @@ -0,0 +1,67 @@ +package cc.mrbird.febs.common.utils; + +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.lionsoul.ip2region.DataBlock; +import org.lionsoul.ip2region.DbConfig; +import org.lionsoul.ip2region.DbSearcher; +import org.lionsoul.ip2region.Util; + +import java.io.File; +import java.io.IOException; +import java.lang.reflect.Method; + +/** + * @author MrBird + */ +@Slf4j +public class AddressUtil { + + @SuppressWarnings("all") + public static String getCityInfo(String ip) { + DbSearcher searcher = null; + try { + String dbPath = AddressUtil.class.getResource("/ip2region/ip2region.db").getPath(); + File file = new File(dbPath); + if (!file.exists()) { + String tmpDir = System.getProperties().getProperty("java.io.tmpdir"); + dbPath = tmpDir + "ip.db"; + file = new File(dbPath); + FileUtils.copyInputStreamToFile(AddressUtil.class.getClassLoader().getResourceAsStream("classpath:ip2region/ip2region.db"), file); + } + int algorithm = DbSearcher.BTREE_ALGORITHM; + DbConfig config = new DbConfig(); + searcher = new DbSearcher(config, dbPath); + Method method = null; + switch (algorithm) { + case DbSearcher.BTREE_ALGORITHM: + method = searcher.getClass().getMethod("btreeSearch", String.class); + break; + case DbSearcher.BINARY_ALGORITHM: + method = searcher.getClass().getMethod("binarySearch", String.class); + break; + case DbSearcher.MEMORY_ALGORITYM: + method = searcher.getClass().getMethod("memorySearch", String.class); + break; + } + DataBlock dataBlock = null; + if (!Util.isIpAddress(ip)) { + log.error("Error: Invalid ip address"); + } + dataBlock = (DataBlock) method.invoke(searcher, ip); + return dataBlock.getRegion(); + } catch (Exception e) { + log.error("获取IP地址失败,{}", e.getMessage()); + } finally { + if (searcher != null) { + try { + searcher.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + return null; + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/DateUtil.java b/src/main/java/cc/mrbird/febs/common/utils/DateUtil.java new file mode 100644 index 0000000..8ba45fc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/DateUtil.java @@ -0,0 +1,49 @@ +package cc.mrbird.febs.common.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.format.DateTimeFormatter; +import java.util.Date; +import java.util.Locale; + +/** + * 时间工具类 + * + * @author MrBird + */ +public class DateUtil { + + public static final String FULL_TIME_PATTERN = "yyyyMMddHHmmss"; + + public static final String FULL_TIME_SPLIT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + + public static final String CST_TIME_PATTERN = "EEE MMM dd HH:mm:ss zzz yyyy"; + + public static String formatFullTime(LocalDateTime localDateTime) { + return formatFullTime(localDateTime, FULL_TIME_PATTERN); + } + + public static String formatFullTime(LocalDateTime localDateTime, String pattern) { + DateTimeFormatter dateTimeFormatter = DateTimeFormatter.ofPattern(pattern); + return localDateTime.format(dateTimeFormatter); + } + + public static String getDateFormat(Date date, String dateFormatType) { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(dateFormatType, Locale.CHINA); + return simpleDateFormat.format(date); + } + + public static String formatCstTime(String date, String format) throws ParseException { + SimpleDateFormat simpleDateFormat = new SimpleDateFormat(CST_TIME_PATTERN, Locale.US); + Date usDate = simpleDateFormat.parse(date); + return DateUtil.getDateFormat(usDate, format); + } + + public static String formatInstant(Instant instant, String format) { + LocalDateTime localDateTime = LocalDateTime.ofInstant(instant, ZoneId.systemDefault()); + return localDateTime.format(DateTimeFormatter.ofPattern(format)); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/FebsUtil.java b/src/main/java/cc/mrbird/febs/common/utils/FebsUtil.java new file mode 100644 index 0000000..30a3efc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/FebsUtil.java @@ -0,0 +1,117 @@ +package cc.mrbird.febs.common.utils; + + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; + +import javax.servlet.http.HttpServletRequest; +import java.util.regex.Matcher; +import java.util.regex.Pattern; +import java.util.stream.IntStream; + +/** + * FEBS工具类 + * + * @author MrBird + */ +@Slf4j +public class FebsUtil { + + private static final Pattern CHINESE_PATTERN = Pattern.compile("[\u4e00-\u9fa5]"); + + /** + * 驼峰转下划线 + * + * @param value 待转换值 + * @return 结果 + */ + public static String camelToUnderscore(String value) { + if (StringUtils.isBlank(value)) { + return value; + } + String[] arr = StringUtils.splitByCharacterTypeCamelCase(value); + if (arr.length == 0) { + return value; + } + StringBuilder result = new StringBuilder(); + IntStream.range(0, arr.length).forEach(i -> { + if (i != arr.length - 1) { + result.append(arr[i]).append(StringPool.UNDERSCORE); + } else { + result.append(arr[i]); + } + }); + return StringUtils.lowerCase(result.toString()); + } + + /** + * 下划线转驼峰 + * + * @param value 待转换值 + * @return 结果 + */ + public static String underscoreToCamel(String value) { + StringBuilder result = new StringBuilder(); + String[] arr = value.split("_"); + for (String s : arr) { + result.append((String.valueOf(s.charAt(0))).toUpperCase()).append(s.substring(1)); + } + return result.toString(); + } + + /** + * 判断是否为 ajax请求 + * + * @param request HttpServletRequest + * @return boolean + */ + public static boolean isAjaxRequest(HttpServletRequest request) { + return (request.getHeader("X-Requested-With") != null + && "XMLHttpRequest".equals(request.getHeader("X-Requested-With"))); + } + + /** + * 正则校验 + * + * @param regex 正则表达式字符串 + * @param value 要匹配的字符串 + * @return 正则校验结果 + */ + public static boolean match(String regex, String value) { + Pattern pattern = Pattern.compile(regex); + Matcher matcher = pattern.matcher(value); + return matcher.matches(); + } + + /** + * 获取当前登录用户 + * + * @return User + */ + public static User getCurrentUser() { + return (User) SecurityUtils.getSubject().getPrincipal(); + } + + /** + * 判断是否包含中文 + * + * @param value 内容 + * @return 结果 + */ + public static boolean containChinese(String value) { + if (StringUtils.isBlank(value)) { + return false; + } + Matcher matcher = CHINESE_PATTERN.matcher(value); + return matcher.find(); + } + + public static String view(String viewName) { + return FebsConstant.VIEW_PREFIX + viewName; + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/FileUtil.java b/src/main/java/cc/mrbird/febs/common/utils/FileUtil.java new file mode 100644 index 0000000..69a5d5d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/FileUtil.java @@ -0,0 +1,165 @@ +package cc.mrbird.febs.common.utils; + +import cc.mrbird.febs.common.entity.FebsConstant; +import com.google.common.base.Preconditions; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletResponse; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Arrays; +import java.util.zip.CRC32; +import java.util.zip.CheckedOutputStream; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +/** + * @author MrBird + */ +@Slf4j +public class FileUtil { + + private static final int BUFFER = 1024 * 8; + + /** + * 压缩文件或目录 + * + * @param fromPath 待压缩文件或路径 + * @param toPath 压缩文件,如 xx.zip + */ + public static void compress(String fromPath, String toPath) throws IOException { + File fromFile = new File(fromPath); + File toFile = new File(toPath); + if (!fromFile.exists()) { + throw new FileNotFoundException(fromPath + "不存在!"); + } + try ( + FileOutputStream outputStream = new FileOutputStream(toFile); + CheckedOutputStream checkedOutputStream = new CheckedOutputStream(outputStream, new CRC32()); + ZipOutputStream zipOutputStream = new ZipOutputStream(checkedOutputStream) + ) { + String baseDir = ""; + compress(fromFile, zipOutputStream, baseDir); + } + } + + /** + * 文件下载 + * + * @param filePath 待下载文件路径 + * @param fileName 下载文件名称 + * @param delete 下载后是否删除源文件 + * @param response HttpServletResponse + * @throws Exception Exception + */ + public static void download(String filePath, String fileName, Boolean delete, HttpServletResponse response) throws Exception { + File file = new File(filePath); + if (!file.exists()) { + throw new Exception("文件未找到"); + } + + String fileType = getFileType(file); + if (!fileTypeIsValid(fileType)) { + throw new Exception("暂不支持该类型文件下载"); + } + response.setHeader("Content-Disposition", "attachment;fileName=" + java.net.URLEncoder.encode(fileName, "utf-8")); + response.setContentType("multipart/form-data"); + response.setCharacterEncoding("utf-8"); + try (InputStream inputStream = new FileInputStream(file); OutputStream os = response.getOutputStream()) { + byte[] b = new byte[2048]; + int length; + while ((length = inputStream.read(b)) > 0) { + os.write(b, 0, length); + } + } finally { + if (delete) { + delete(filePath); + } + } + } + + /** + * 递归删除文件或目录 + * + * @param filePath 文件或目录 + */ + public static void delete(String filePath) { + File file = new File(filePath); + if (file.isDirectory()) { + File[] files = file.listFiles(); + if (files != null) { + Arrays.stream(files).forEach(f -> delete(f.getPath())); + } + } + try { + Files.delete(Paths.get(filePath)); + } catch (IOException e) { + log.error("删除失败", e); + } + } + + /** + * 获取文件类型 + * + * @param file 文件 + * @return 文件类型 + * @throws Exception Exception + */ + private static String getFileType(File file) throws Exception { + Preconditions.checkNotNull(file); + if (file.isDirectory()) { + throw new Exception("file不是文件"); + } + String fileName = file.getName(); + return fileName.substring(fileName.lastIndexOf(".") + 1); + } + + + /** + * 校验文件类型是否是允许下载的类型 + * (出于安全考虑:https://github.com/wuyouzhuguli/FEBS-Shiro/issues/40) + * + * @param fileType fileType + * @return Boolean + */ + private static Boolean fileTypeIsValid(String fileType) { + Preconditions.checkNotNull(fileType); + fileType = StringUtils.lowerCase(fileType); + return ArrayUtils.contains(FebsConstant.VALID_FILE_TYPE, fileType); + } + + private static void compress(File file, ZipOutputStream zipOut, String baseDir) throws IOException { + if (file.isDirectory()) { + compressDirectory(file, zipOut, baseDir); + } else { + compressFile(file, zipOut, baseDir); + } + } + + private static void compressDirectory(File dir, ZipOutputStream zipOut, String baseDir) throws IOException { + File[] files = dir.listFiles(); + if (files != null && ArrayUtils.isNotEmpty(files)) { + for (File file : files) { + compress(file, zipOut, baseDir + dir.getName() + "/"); + } + } + } + + private static void compressFile(File file, ZipOutputStream zipOut, String baseDir) throws IOException { + if (!file.exists()) { + return; + } + try (BufferedInputStream bis = new BufferedInputStream(new FileInputStream(file))) { + ZipEntry entry = new ZipEntry(baseDir + file.getName()); + zipOut.putNextEntry(entry); + int count; + byte[] data = new byte[BUFFER]; + while ((count = bis.read(data, 0, BUFFER)) != -1) { + zipOut.write(data, 0, count); + } + } + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/HttpContextUtil.java b/src/main/java/cc/mrbird/febs/common/utils/HttpContextUtil.java new file mode 100644 index 0000000..9945b90 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/HttpContextUtil.java @@ -0,0 +1,20 @@ +package cc.mrbird.febs.common.utils; + +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; + +import javax.servlet.http.HttpServletRequest; +import java.util.Objects; + +/** + * @author MrBird + */ +public class HttpContextUtil { + + private HttpContextUtil(){ + + } + public static HttpServletRequest getHttpServletRequest() { + return ((ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes())).getRequest(); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/IpUtil.java b/src/main/java/cc/mrbird/febs/common/utils/IpUtil.java new file mode 100644 index 0000000..a1bbda2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/IpUtil.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.common.utils; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author MrBird + */ +public class IpUtil { + + private static final String UNKNOWN = "unknown"; + + /** + * 获取 IP地址 + * 使用 Nginx等反向代理软件, 则不能通过 request.getRemoteAddr()获取 IP地址 + * 如果使用了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP地址, + * X-Forwarded-For中第一个非 unknown的有效IP字符串,则为真实IP地址 + */ + public static String getIpAddr(HttpServletRequest request) { + String ip = request.getHeader("x-forwarded-for"); + if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getHeader("WL-Proxy-Client-IP"); + } + if (ip == null || ip.length() == 0 || UNKNOWN.equalsIgnoreCase(ip)) { + ip = request.getRemoteAddr(); + } + return "0:0:0:0:0:0:0:1".equals(ip) ? "127.0.0.1" : ip; + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/JsoupUtil.java b/src/main/java/cc/mrbird/febs/common/utils/JsoupUtil.java new file mode 100644 index 0000000..a112f92 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/JsoupUtil.java @@ -0,0 +1,39 @@ +package cc.mrbird.febs.common.utils; + +import org.apache.commons.lang3.StringUtils; +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.safety.Whitelist; + +/** + * Xss过滤工具 + * + * @author MrBird + */ +public class JsoupUtil { + + /** + * 使用自带的 basicWithImages 白名单 + * 允许的便签有a,b,blockquote,br,cite,code,dd,dl,dt,em,i,li,ol,p,pre,q,small,span, + * strike,strong,sub,sup,u,ul,img + * 以及a标签的href,img标签的src,align,alt,height,width,title属性 + */ + private static final Whitelist WHITE_LIST = Whitelist.basicWithImages(); + + /** + * 配置过滤化参数,不对代码进行格式化 + */ + private static final Document.OutputSettings OUTPUT_SETTING = new Document.OutputSettings().prettyPrint(false); + + static { + /* + * 富文本编辑时一些样式是使用style来进行实现的 比如红色字体 style="color:red;" 所以需要给所有标签添加style属性 + */ + WHITE_LIST.addAttributes(":all", "style"); + } + + public static String clean(String content) { + return Jsoup.clean(content, StringUtils.EMPTY, WHITE_LIST, OUTPUT_SETTING); + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/Md5Util.java b/src/main/java/cc/mrbird/febs/common/utils/Md5Util.java new file mode 100644 index 0000000..df3d5ac --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/Md5Util.java @@ -0,0 +1,21 @@ +package cc.mrbird.febs.common.utils; + +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.crypto.hash.SimpleHash; +import org.apache.shiro.util.ByteSource; + +/** + * @author MrBird + */ +public class Md5Util { + + private static final String ALGORITH_NAME = "md5"; + + private static final int HASH_ITERATIONS = 5; + + public static String encrypt(String username, String password) { + String source = StringUtils.lowerCase(username); + password = StringUtils.lowerCase(password); + return new SimpleHash(ALGORITH_NAME, password, ByteSource.Util.bytes(source), HASH_ITERATIONS).toHex(); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/SortUtil.java b/src/main/java/cc/mrbird/febs/common/utils/SortUtil.java new file mode 100644 index 0000000..b3056fd --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/SortUtil.java @@ -0,0 +1,129 @@ +package cc.mrbird.febs.common.utils; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.OrderItem; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.commons.lang3.StringUtils; + +/** + * 处理排序工具类 + * + * @author MrBird + */ +public class SortUtil { + /** + * 处理排序(分页情况下) for mybatis-plus + * + * @param request QueryRequest + * @param page Page + * @param defaultSort 默认排序的字段 + * @param defaultOrder 默认排序规则 + * @param camelToUnderscore 是否开启驼峰转下划线 + */ + public static void handlePageSort(QueryRequest request, Page<?> page, String defaultSort, String defaultOrder, boolean camelToUnderscore) { + page.setCurrent(request.getPageNum()); + page.setSize(request.getPageSize()); + String sortField = request.getField(); + if (camelToUnderscore) { + sortField = FebsUtil.camelToUnderscore(sortField); + defaultSort = FebsUtil.camelToUnderscore(defaultSort); + } + if (StringUtils.isNotBlank(request.getField()) + && StringUtils.isNotBlank(request.getOrder()) + && !StringUtils.equalsIgnoreCase(request.getField(), "null") + && !StringUtils.equalsIgnoreCase(request.getOrder(), "null")) { + if (StringUtils.equals(request.getOrder(), FebsConstant.ORDER_DESC)) { + page.addOrder(OrderItem.desc(sortField)); + } else { + page.addOrder(OrderItem.asc(sortField)); + } + } else { + if (StringUtils.isNotBlank(defaultSort)) { + if (StringUtils.equals(defaultOrder, FebsConstant.ORDER_DESC)) { + page.addOrder(OrderItem.desc(defaultSort)); + } else { + page.addOrder(OrderItem.asc(defaultSort)); + } + } + } + } + + /** + * 处理排序 for mybatis-plus + * + * @param request QueryRequest + * @param page Page + */ + public static void handlePageSort(QueryRequest request, Page<?> page) { + handlePageSort(request, page, null, null, false); + } + + /** + * 处理排序 for mybatis-plus + * + * @param request QueryRequest + * @param page Page + * @param camelToUnderscore 是否开启驼峰转下划线 + */ + public static void handlePageSort(QueryRequest request, Page<?> page, boolean camelToUnderscore) { + handlePageSort(request, page, null, null, camelToUnderscore); + } + + /** + * 处理排序 for mybatis-plus + * + * @param request QueryRequest + * @param wrapper wrapper + * @param defaultSort 默认排序的字段 + * @param defaultOrder 默认排序规则 + * @param camelToUnderscore 是否开启驼峰转下划线 + */ + public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper, String defaultSort, String defaultOrder, boolean camelToUnderscore) { + String sortField = request.getField(); + if (camelToUnderscore) { + sortField = FebsUtil.camelToUnderscore(sortField); + defaultSort = FebsUtil.camelToUnderscore(defaultSort); + } + if (StringUtils.isNotBlank(request.getField()) + && StringUtils.isNotBlank(request.getOrder()) + && !StringUtils.equalsIgnoreCase(request.getField(), "null") + && !StringUtils.equalsIgnoreCase(request.getOrder(), "null")) { + if (StringUtils.equals(request.getOrder(), FebsConstant.ORDER_DESC)) { + wrapper.orderByDesc(sortField); + } else { + wrapper.orderByAsc(sortField); + } + } else { + if (StringUtils.isNotBlank(defaultSort)) { + if (StringUtils.equals(defaultOrder, FebsConstant.ORDER_DESC)) { + wrapper.orderByDesc(defaultSort); + } else { + wrapper.orderByAsc(defaultSort); + } + } + } + } + + /** + * 处理排序 for mybatis-plus + * + * @param request QueryRequest + * @param wrapper wrapper + */ + public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper) { + handleWrapperSort(request, wrapper, null, null, false); + } + + /** + * 处理排序 for mybatis-plus + * + * @param request QueryRequest + * @param wrapper wrapper + * @param camelToUnderscore 是否开启驼峰转下划线 + */ + public static void handleWrapperSort(QueryRequest request, QueryWrapper<?> wrapper, boolean camelToUnderscore) { + handleWrapperSort(request, wrapper, null, null, camelToUnderscore); + } +} diff --git a/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java b/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java new file mode 100644 index 0000000..f62a614 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/SpringContextUtil.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.common.utils; + +import org.springframework.beans.BeansException; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.stereotype.Component; + +/** + * Spring Context 工具类 + * + * @author MrBird + * + */ +@Component +public class SpringContextUtil implements ApplicationContextAware { + + private static ApplicationContext applicationContext; + + @Override + public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { + SpringContextUtil.applicationContext = applicationContext; + } + + public static Object getBean(String name) { + return applicationContext.getBean(name); + } + public static <T> T getBean(Class<T> clazz){ + return applicationContext.getBean(clazz); + } + + public static <T> T getBean(String name, Class<T> requiredType) { + return applicationContext.getBean(name, requiredType); + } + + public static boolean containsBean(String name) { + return applicationContext.containsBean(name); + } + + public static boolean isSingleton(String name) { + return applicationContext.isSingleton(name); + } + + public static Class<?> getType(String name) { + return applicationContext.getType(name); + } + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/utils/TreeUtil.java b/src/main/java/cc/mrbird/febs/common/utils/TreeUtil.java new file mode 100644 index 0000000..98217d7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/utils/TreeUtil.java @@ -0,0 +1,104 @@ +package cc.mrbird.febs.common.utils; + + +import cc.mrbird.febs.common.entity.DeptTree; +import cc.mrbird.febs.common.entity.MenuTree; +import org.apache.commons.lang3.StringUtils; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +public class TreeUtil { + + private static final String TOP_NODE_ID = "0"; + + public static <T> MenuTree<T> buildMenuTree(List<MenuTree<T>> nodes) { + if (nodes == null) { + return null; + } + List<MenuTree<T>> topNodes = new ArrayList<>(); + nodes.forEach(children -> { + String pid = children.getParentId(); + if (pid == null || TOP_NODE_ID.equals(pid)) { + topNodes.add(children); + return; + } + for (MenuTree<T> parent : nodes) { + String id = parent.getId(); + if (id != null && id.equals(pid)) { + parent.getChilds().add(children); + children.setHasParent(true); + parent.setHasChild(true); + return; + } + } + }); + + MenuTree<T> root = new MenuTree<>(); + root.setId(TOP_NODE_ID); + root.setParentId(StringUtils.EMPTY); + root.setHasParent(false); + root.setHasChild(true); + root.setChecked(true); + root.setChilds(topNodes); + Map<String, Object> state = new HashMap<>(16); + root.setState(state); + return root; + } + + public static <T> List<DeptTree<T>> buildDeptTree(List<DeptTree<T>> nodes) { + if (nodes == null) { + return null; + } + List<DeptTree<T>> result = new ArrayList<>(); + nodes.forEach(children -> { + String pid = children.getParentId(); + if (pid == null || TOP_NODE_ID.equals(pid)) { + result.add(children); + return; + } + for (DeptTree<T> n : nodes) { + String id = n.getId(); + if (id != null && id.equals(pid)) { + if (n.getChildren() == null) { + n.initChildren(); + } + n.getChildren().add(children); + children.setHasParent(true); + n.setHasChild(true); + return; + } + } + }); + + return result; + } + + public static <T> List<MenuTree<T>> buildList(List<MenuTree<T>> nodes, String idParam) { + if (nodes == null) { + return new ArrayList<>(); + } + List<MenuTree<T>> topNodes = new ArrayList<>(); + nodes.forEach(children -> { + String pid = children.getParentId(); + if (pid == null || idParam.equals(pid)) { + topNodes.add(children); + return; + } + nodes.forEach(parent -> { + String id = parent.getId(); + if (id != null && id.equals(pid)) { + parent.getChilds().add(children); + children.setHasParent(true); + parent.setHasChild(true); + } + }); + }); + return topNodes; + } +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/validator/CronValidator.java b/src/main/java/cc/mrbird/febs/common/validator/CronValidator.java new file mode 100644 index 0000000..d22151b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/validator/CronValidator.java @@ -0,0 +1,28 @@ +package cc.mrbird.febs.common.validator; + +import cc.mrbird.febs.common.annotation.IsCron; +import org.quartz.CronExpression; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * 校验是否为合法的 Cron表达式 + * + * @author MrBird + */ +public class CronValidator implements ConstraintValidator<IsCron, String> { + + @Override + public void initialize(IsCron isCron) { + } + + @Override + public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) { + try { + return CronExpression.isValidExpression(value); + } catch (Exception e) { + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/common/validator/MobileValidator.java b/src/main/java/cc/mrbird/febs/common/validator/MobileValidator.java new file mode 100644 index 0000000..4bf37ed --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/validator/MobileValidator.java @@ -0,0 +1,35 @@ +package cc.mrbird.febs.common.validator; + +import cc.mrbird.febs.common.annotation.IsMobile; +import cc.mrbird.febs.common.entity.Regexp; +import cc.mrbird.febs.common.utils.FebsUtil; +import org.apache.commons.lang3.StringUtils; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +/** + * 校验是否为合法的手机号码 + * + * @author MrBird + */ +public class MobileValidator implements ConstraintValidator<IsMobile, String> { + + @Override + public void initialize(IsMobile isMobile) { + } + + @Override + public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) { + try { + if (StringUtils.isBlank(s)) { + return true; + } else { + String regex = Regexp.MOBILE_REG; + return FebsUtil.match(regex, s); + } + } catch (Exception e) { + return false; + } + } +} diff --git a/src/main/java/cc/mrbird/febs/common/xss/XssFilter.java b/src/main/java/cc/mrbird/febs/common/xss/XssFilter.java new file mode 100644 index 0000000..19418a4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/xss/XssFilter.java @@ -0,0 +1,71 @@ +package cc.mrbird.febs.common.xss; + +import org.apache.commons.lang3.BooleanUtils; +import org.apache.commons.lang3.StringUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.*; +import javax.servlet.http.HttpServletRequest; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +/** + * Xss攻击拦截器 + * + * @author MrBird + */ +public class XssFilter implements Filter { + + private static Logger logger = LoggerFactory.getLogger(XssFilter.class); + /** + * 是否过滤富文本内容 + */ + private boolean flag = false; + + private List<String> excludes = new ArrayList<>(); + + @Override + public void init(FilterConfig filterConfig) { + logger.info("------------ xss filter init ------------"); + String isIncludeRichText = filterConfig.getInitParameter("isIncludeRichText"); + if (StringUtils.isNotBlank(isIncludeRichText)) { + flag = BooleanUtils.toBoolean(isIncludeRichText); + } + String temp = filterConfig.getInitParameter("excludes"); + if (temp != null) { + String[] url = temp.split(","); + excludes.addAll(Arrays.asList(url)); + } + } + + @Override + public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) + throws IOException, ServletException { + HttpServletRequest req = (HttpServletRequest) request; + if (handleExcludeUrl(req)) { + chain.doFilter(request, response); + return; + } + XssHttpServletRequestWrapper xssRequest = new XssHttpServletRequestWrapper((HttpServletRequest) request, flag); + chain.doFilter(xssRequest, response); + } + + @Override + public void destroy() { + // do nothing + } + + private boolean handleExcludeUrl(HttpServletRequest request) { + if (excludes == null || excludes.isEmpty()) { + return false; + } + String url = request.getServletPath(); + return excludes.stream().map(pattern -> Pattern.compile("^" + pattern)).map(p -> p.matcher(url)).anyMatch(Matcher::find); + } + +} diff --git a/src/main/java/cc/mrbird/febs/common/xss/XssHttpServletRequestWrapper.java b/src/main/java/cc/mrbird/febs/common/xss/XssHttpServletRequestWrapper.java new file mode 100644 index 0000000..59b4885 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/common/xss/XssHttpServletRequestWrapper.java @@ -0,0 +1,86 @@ +package cc.mrbird.febs.common.xss; + +import cc.mrbird.febs.common.utils.JsoupUtil; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequestWrapper; +import java.util.stream.IntStream; + +/** + * Jsoup过滤 http请求,防止 Xss攻击 + * + * @author MrBird + */ +public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper { + + private HttpServletRequest orgRequest; + + private boolean isIncludeRichText; + + XssHttpServletRequestWrapper(HttpServletRequest request, boolean isIncludeRichText) { + super(request); + orgRequest = request; + this.isIncludeRichText = isIncludeRichText; + } + + /** + * 覆盖 getParameter方法,将参数名和参数值都做xss过滤 + * 如果需要获得原始的值,则通过 super.getParameterValues(name)来获取 + * getParameterNames,getParameterValues和 getParameterMap也可能需要覆盖 + */ + @Override + public String getParameter(String name) { + if (("content".equals(name) || name.endsWith("WithHtml")) && !isIncludeRichText) { + return super.getParameter(name); + } + name = JsoupUtil.clean(name); + String value = super.getParameter(name); + if (StringUtils.isNotBlank(value)) { + value = JsoupUtil.clean(value); + } + return value; + } + + @Override + public String[] getParameterValues(String name) { + String[] arr = super.getParameterValues(name); + if (arr != null) { + IntStream.range(0, arr.length).forEach(i -> arr[i] = JsoupUtil.clean(arr[i])); + } + return arr; + } + + /** + * 覆盖getHeader方法,将参数名和参数值都做 xss过滤 + * 如果需要获得原始的值,则通过super.getHeaders(name)来获取 + * getHeaderNames 也可能需要覆盖 + */ + @Override + public String getHeader(String name) { + name = JsoupUtil.clean(name); + String value = super.getHeader(name); + if (StringUtils.isNotBlank(value)) { + value = JsoupUtil.clean(value); + } + return value; + } + + /** + * 获取原始的 request + */ + private HttpServletRequest getOrgRequest() { + return orgRequest; + } + + /** + * 获取原始的 request的静态方法 + */ + public static HttpServletRequest getOrgRequest(HttpServletRequest req) { + if (req instanceof XssHttpServletRequestWrapper) { + return ((XssHttpServletRequestWrapper) req).getOrgRequest(); + } + return req; + } + +} diff --git a/src/main/java/cc/mrbird/febs/generator/controller/GeneratorConfigController.java b/src/main/java/cc/mrbird/febs/generator/controller/GeneratorConfigController.java new file mode 100644 index 0000000..8449fc2 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/controller/GeneratorConfigController.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.generator.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import cc.mrbird.febs.generator.service.IGeneratorConfigService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.validation.Valid; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("generatorConfig") +@RequiredArgsConstructor +public class GeneratorConfigController extends BaseController { + + private final IGeneratorConfigService generatorConfigService; + + @GetMapping + @RequiresPermissions("generator:configure:view") + public FebsResponse getGeneratorConfig() { + return new FebsResponse().success().data(generatorConfigService.findGeneratorConfig()); + } + + @PostMapping("update") + @RequiresPermissions("generator:configure:update") + @ControllerEndpoint(operation = "修改GeneratorConfig", exceptionMessage = "修改GeneratorConfig失败") + public FebsResponse updateGeneratorConfig(@Valid GeneratorConfig generatorConfig) { + if (StringUtils.isBlank(generatorConfig.getId())) { + throw new FebsException("配置id不能为空"); + } + this.generatorConfigService.updateGeneratorConfig(generatorConfig); + return new FebsResponse().success(); + } +} diff --git a/src/main/java/cc/mrbird/febs/generator/controller/GeneratorController.java b/src/main/java/cc/mrbird/febs/generator/controller/GeneratorController.java new file mode 100644 index 0000000..4d5a471 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/controller/GeneratorController.java @@ -0,0 +1,101 @@ +package cc.mrbird.febs.generator.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.common.utils.FileUtil; +import cc.mrbird.febs.generator.entity.Column; +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import cc.mrbird.febs.generator.entity.GeneratorConstant; +import cc.mrbird.febs.generator.helper.GeneratorHelper; +import cc.mrbird.febs.generator.service.IGeneratorConfigService; +import cc.mrbird.febs.generator.service.IGeneratorService; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DataSourceProperty; +import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceProperties; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.RegExUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("generator") +@RequiredArgsConstructor +public class GeneratorController extends BaseController { + + private static final String SUFFIX = "_code.zip"; + + private final IGeneratorService generatorService; + private final IGeneratorConfigService generatorConfigService; + private final GeneratorHelper generatorHelper; + private final DynamicDataSourceProperties properties; + + @GetMapping("datasource") + @RequiresPermissions("generator:view") + public FebsResponse datasource() { + Map<String, DataSourceProperty> datasources = properties.getDatasource(); + List<String> datasourcesName = new ArrayList<>(); + datasources.forEach((k, v) -> { + String datasourceName = StringUtils.substringBefore(StringUtils.substringAfterLast(v.getUrl(), "/"), "?"); + datasourcesName.add(datasourceName); + }); + return new FebsResponse().success().data(datasourcesName); + } + + @GetMapping("tables/info") + @RequiresPermissions("generator:view") + public FebsResponse tablesInfo(String tableName, String datasource, QueryRequest request) { + Map<String, Object> dataTable = getDataTable(generatorService.getTables(tableName, request, GeneratorConstant.DATABASE_TYPE, datasource)); + return new FebsResponse().success().data(dataTable); + } + + @GetMapping + @RequiresPermissions("generator:generate") + @ControllerEndpoint(exceptionMessage = "代码生成失败") + public void generate(@NotBlank(message = "{required}") String name, String remark, String datasource, HttpServletResponse response) throws Exception { + GeneratorConfig generatorConfig = generatorConfigService.findGeneratorConfig(); + if (generatorConfig == null) { + throw new FebsException("代码生成配置为空"); + } + + String className = name; + if (GeneratorConfig.TRIM_YES.equals(generatorConfig.getIsTrim())) { + className = RegExUtils.replaceFirst(name, generatorConfig.getTrimValue(), StringUtils.EMPTY); + } + + generatorConfig.setTableName(name); + generatorConfig.setClassName(FebsUtil.underscoreToCamel(className)); + generatorConfig.setTableComment(remark); + // 生成代码到临时目录 + List<Column> columns = generatorService.getColumns(GeneratorConstant.DATABASE_TYPE, datasource, name); + generatorHelper.generateEntityFile(columns, generatorConfig); + generatorHelper.generateMapperFile(columns, generatorConfig); + generatorHelper.generateMapperXmlFile(columns, generatorConfig); + generatorHelper.generateServiceFile(columns, generatorConfig); + generatorHelper.generateServiceImplFile(columns, generatorConfig); + generatorHelper.generateControllerFile(columns, generatorConfig); + // 打包 + String zipFile = System.currentTimeMillis() + SUFFIX; + FileUtil.compress(GeneratorConstant.TEMP_PATH + "src", zipFile); + // 下载 + FileUtil.download(zipFile, name + SUFFIX, true, response); + // 删除临时目录 + FileUtil.delete(GeneratorConstant.TEMP_PATH); + } +} diff --git a/src/main/java/cc/mrbird/febs/generator/controller/ViewController.java b/src/main/java/cc/mrbird/febs/generator/controller/ViewController.java new file mode 100644 index 0000000..c2f95e0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/controller/ViewController.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.generator.controller; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import cc.mrbird.febs.generator.service.IGeneratorConfigService; +import lombok.RequiredArgsConstructor; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author MrBird + */ +@Controller("generatorViews") +@RequestMapping(FebsConstant.VIEW_PREFIX + "generator") +@RequiredArgsConstructor +public class ViewController { + + private final IGeneratorConfigService generatorConfigService; + + @GetMapping("generator") + @RequiresPermissions("generator:view") + public String generator() { + return FebsUtil.view("generator/generator"); + } + + @GetMapping("configure") + @RequiresPermissions("generator:configure:view") + public String generatorConfigure(Model model) { + GeneratorConfig generatorConfig = generatorConfigService.findGeneratorConfig(); + model.addAttribute("config", generatorConfig); + return FebsUtil.view("generator/configure"); + } +} diff --git a/src/main/java/cc/mrbird/febs/generator/entity/Column.java b/src/main/java/cc/mrbird/febs/generator/entity/Column.java new file mode 100644 index 0000000..0037d80 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/entity/Column.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.generator.entity; + +import lombok.Data; + +/** + * @author MrBird + */ +@Data +public class Column { + /** + * 名称 + */ + private String name; + /** + * 是否为主键 + */ + private Boolean isKey; + /** + * 类型 + */ + private String type; + /** + * 注释 + */ + private String remark; + /** + * 属性名称 + */ + private String field; +} diff --git a/src/main/java/cc/mrbird/febs/generator/entity/FieldType.java b/src/main/java/cc/mrbird/febs/generator/entity/FieldType.java new file mode 100644 index 0000000..48418c0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/entity/FieldType.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.generator.entity; + +/** + * @author MrBird + */ +public class FieldType { + + public static final String DATE = "date"; + public static final String DATETIME = "datetime"; + public static final String TIMESTAMP = "timestamp"; + public static final String DECIMAL = "decimal"; + public static final String NUMERIC = "numeric"; +} diff --git a/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConfig.java b/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConfig.java new file mode 100644 index 0000000..f250fed --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConfig.java @@ -0,0 +1,123 @@ +package cc.mrbird.febs.generator.entity; + + +import cc.mrbird.febs.common.utils.DateUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import javax.validation.constraints.Size; +import java.time.LocalDateTime; + +/** + * @author MrBird + */ +@Data +@TableName("t_generator_config") +public class GeneratorConfig { + + public static final String TRIM_YES = "1"; + public static final String TRIM_NO = "0"; + + /** + * 主键 + */ + @TableId(value = "ID", type = IdType.AUTO) + private String id; + + /** + * 作者 + */ + @TableField("author") + @Size(max = 20, message = "{noMoreThan}") + private String author; + + /** + * 基础包名 + */ + @TableField("base_package") + @Size(max = 50, message = "{noMoreThan}") + private String basePackage; + + /** + * entity文件存放路径 + */ + @TableField("entity_package") + @Size(max = 20, message = "{noMoreThan}") + private String entityPackage; + + /** + * mapper文件存放路径 + */ + @TableField("mapper_package") + @Size(max = 20, message = "{noMoreThan}") + private String mapperPackage; + + /** + * mapper xml文件存放路径 + */ + @TableField("mapper_xml_package") + @Size(max = 20, message = "{noMoreThan}") + private String mapperXmlPackage; + + /** + * servcie文件存放路径 + */ + @TableField("service_package") + private String servicePackage; + + /** + * serviceImpl文件存放路径 + */ + @TableField("service_impl_package") + @Size(max = 20, message = "{noMoreThan}") + private String serviceImplPackage; + + /** + * controller文件存放路径 + */ + @TableField("controller_package") + @Size(max = 20, message = "{noMoreThan}") + private String controllerPackage; + + /** + * 是否去除前缀 + */ + @TableField("is_trim") + private String isTrim; + + /** + * 前缀内容 + */ + @TableField("trim_value") + private String trimValue; + + /** + * java文件路径,固定值 + */ + private transient String javaPath = "/src/main/java/"; + /** + * 配置文件存放路径,固定值 + */ + private transient String resourcesPath = "src/main/resources"; + /** + * 文件生成日期 + */ + private transient String date = DateUtil.formatFullTime(LocalDateTime.now(), DateUtil.FULL_TIME_SPLIT_PATTERN); + + /** + * 表名 + */ + private transient String tableName; + /** + * 表注释 + */ + private transient String tableComment; + /** + * 数据表对应的类名 + */ + private transient String className; + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConstant.java b/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConstant.java new file mode 100644 index 0000000..6d0ea46 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/entity/GeneratorConstant.java @@ -0,0 +1,68 @@ +package cc.mrbird.febs.generator.entity; + +/** + * 代码生成常量 + * + * @author MrBird + */ +public class GeneratorConstant { + + /** + * 数据库类型 + */ + public static final String DATABASE_TYPE = "mysql"; + + /** + * 生成代码的临时目录 + */ + public static final String TEMP_PATH = "febs_gen_temp/"; + + /** + * java类型文件后缀 + */ + public static final String JAVA_FILE_SUFFIX = ".java"; + /** + * mapper文件类型后缀 + */ + public static final String MAPPER_FILE_SUFFIX = "Mapper.java"; + /** + * service文件类型后缀 + */ + public static final String SERVICE_FILE_SUFFIX = "Service.java"; + /** + * service impl文件类型后缀 + */ + public static final String SERVICEIMPL_FILE_SUFFIX = "ServiceImpl.java"; + /** + * controller文件类型后缀 + */ + public static final String CONTROLLER_FILE_SUFFIX = "Controller.java"; + /** + * mapper xml文件类型后缀 + */ + public static final String MAPPERXML_FILE_SUFFIX = "Mapper.xml"; + /** + * entity模板 + */ + public static final String ENTITY_TEMPLATE = "entity.ftl"; + /** + * mapper模板 + */ + public static final String MAPPER_TEMPLATE = "mapper.ftl"; + /** + * service接口模板 + */ + public static final String SERVICE_TEMPLATE = "service.ftl"; + /** + * service impl接口模板 + */ + public static final String SERVICEIMPL_TEMPLATE = "serviceImpl.ftl"; + /** + * controller接口模板 + */ + public static final String CONTROLLER_TEMPLATE = "controller.ftl"; + /** + * mapper xml接口模板 + */ + public static final String MAPPERXML_TEMPLATE = "mapperXml.ftl"; +} diff --git a/src/main/java/cc/mrbird/febs/generator/entity/Table.java b/src/main/java/cc/mrbird/febs/generator/entity/Table.java new file mode 100644 index 0000000..e4baaba --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/entity/Table.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.generator.entity; + +import lombok.Data; + +/** + * @author MrBird + */ +@Data +public class Table { + /** + * 名称 + */ + private String name; + /** + * 备注 + */ + private String remark; + /** + * 数据量(行) + */ + private Long dataRows; + /** + * 创建时间 + */ + private String createTime; + /** + * 修改时间 + */ + private String updateTime; +} diff --git a/src/main/java/cc/mrbird/febs/generator/helper/GeneratorHelper.java b/src/main/java/cc/mrbird/febs/generator/helper/GeneratorHelper.java new file mode 100644 index 0000000..a833ed1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/helper/GeneratorHelper.java @@ -0,0 +1,142 @@ +package cc.mrbird.febs.generator.helper; + +import cc.mrbird.febs.common.annotation.Helper; +import cc.mrbird.febs.common.utils.AddressUtil; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.generator.entity.Column; +import cc.mrbird.febs.generator.entity.FieldType; +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import cc.mrbird.febs.generator.entity.GeneratorConstant; +import com.alibaba.fastjson.JSONObject; +import com.google.common.io.Files; +import freemarker.template.Configuration; +import freemarker.template.Template; +import freemarker.template.TemplateExceptionHandler; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; + +import java.io.*; +import java.nio.charset.StandardCharsets; +import java.util.List; +import java.util.Objects; + +/** + * @author MrBird + */ +@Slf4j +@Helper +public class GeneratorHelper { + + public void generateEntityFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.JAVA_FILE_SUFFIX; + String path = getFilePath(configure, configure.getEntityPackage(), suffix, false); + String templateName = GeneratorConstant.ENTITY_TEMPLATE; + File entityFile = new File(path); + JSONObject data = toJsonObject(configure); + data.put("hasDate", false); + data.put("hasBigDecimal", false); + columns.forEach(c -> { + c.setField(FebsUtil.underscoreToCamel(StringUtils.lowerCase(c.getName()))); + if (StringUtils.containsAny(c.getType(), FieldType.DATE, FieldType.DATETIME, FieldType.TIMESTAMP)) { + data.put("hasDate", true); + } + if (StringUtils.containsAny(c.getType(), FieldType.DECIMAL, FieldType.NUMERIC)) { + data.put("hasBigDecimal", true); + } + }); + data.put("columns", columns); + this.generateFileByTemplate(templateName, entityFile, data); + } + + public void generateMapperFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.MAPPER_FILE_SUFFIX; + String path = getFilePath(configure, configure.getMapperPackage(), suffix, false); + String templateName = GeneratorConstant.MAPPER_TEMPLATE; + File mapperFile = new File(path); + generateFileByTemplate(templateName, mapperFile, toJsonObject(configure)); + } + + public void generateServiceFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.SERVICE_FILE_SUFFIX; + String path = getFilePath(configure, configure.getServicePackage(), suffix, true); + String templateName = GeneratorConstant.SERVICE_TEMPLATE; + File serviceFile = new File(path); + generateFileByTemplate(templateName, serviceFile, toJsonObject(configure)); + } + + public void generateServiceImplFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.SERVICEIMPL_FILE_SUFFIX; + String path = getFilePath(configure, configure.getServiceImplPackage(), suffix, false); + String templateName = GeneratorConstant.SERVICEIMPL_TEMPLATE; + File serviceImplFile = new File(path); + generateFileByTemplate(templateName, serviceImplFile, toJsonObject(configure)); + } + + public void generateControllerFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.CONTROLLER_FILE_SUFFIX; + String path = getFilePath(configure, configure.getControllerPackage(), suffix, false); + String templateName = GeneratorConstant.CONTROLLER_TEMPLATE; + File controllerFile = new File(path); + generateFileByTemplate(templateName, controllerFile, toJsonObject(configure)); + } + + public void generateMapperXmlFile(List<Column> columns, GeneratorConfig configure) throws Exception { + String suffix = GeneratorConstant.MAPPERXML_FILE_SUFFIX; + String path = getFilePath(configure, configure.getMapperXmlPackage(), suffix, false); + String templateName = GeneratorConstant.MAPPERXML_TEMPLATE; + File mapperXmlFile = new File(path); + JSONObject data = toJsonObject(configure); + columns.forEach(c -> c.setField(FebsUtil.underscoreToCamel(StringUtils.lowerCase(c.getName())))); + data.put("columns", columns); + generateFileByTemplate(templateName, mapperXmlFile, data); + } + + @SuppressWarnings("UnstableApiUsage") + private void generateFileByTemplate(String templateName, File file, Object data) throws Exception { + Template template = getTemplate(templateName); + Files.createParentDirs(file); + FileOutputStream fileOutputStream = new FileOutputStream(file); + try (Writer out = new BufferedWriter(new OutputStreamWriter(fileOutputStream, StandardCharsets.UTF_8), 10240)) { + template.process(data, out); + } catch (Exception e) { + String message = "代码生成异常"; + log.error(message, e); + throw new Exception(message); + } + } + + private static String getFilePath(GeneratorConfig configure, String packagePath, String suffix, boolean serviceInterface) { + String filePath = GeneratorConstant.TEMP_PATH + configure.getJavaPath() + + packageConvertPath(configure.getBasePackage() + "." + packagePath); + if (serviceInterface) { + filePath += "I"; + } + filePath += configure.getClassName() + suffix; + return filePath; + } + + private static String packageConvertPath(String packageName) { + return String.format("/%s/", packageName.contains(".") ? packageName.replaceAll("\\.", "/") : packageName); + } + + private JSONObject toJsonObject(Object o) { + return JSONObject.parseObject(JSONObject.toJSON(o).toString()); + } + + private Template getTemplate(String templateName) throws Exception { + Configuration configuration = new freemarker.template.Configuration(Configuration.VERSION_2_3_23); + String templatePath = GeneratorHelper.class.getResource("/generator/templates/").getPath(); + File file = new File(templatePath); + if (!file.exists()) { + templatePath = System.getProperties().getProperty("java.io.tmpdir"); + file = new File(templatePath + "/" + templateName); + FileUtils.copyInputStreamToFile(Objects.requireNonNull(AddressUtil.class.getClassLoader().getResourceAsStream("classpath:generator/templates/" + templateName)), file); + } + configuration.setDirectoryForTemplateLoading(new File(templatePath)); + configuration.setDefaultEncoding("UTF-8"); + configuration.setTemplateExceptionHandler(TemplateExceptionHandler.IGNORE_HANDLER); + return configuration.getTemplate(templateName); + + } +} diff --git a/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorConfigMapper.java b/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorConfigMapper.java new file mode 100644 index 0000000..02e5745 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorConfigMapper.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.generator.mapper; + +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface GeneratorConfigMapper extends BaseMapper<GeneratorConfig> { + +} diff --git a/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorMapper.java b/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorMapper.java new file mode 100644 index 0000000..4883c54 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/mapper/GeneratorMapper.java @@ -0,0 +1,22 @@ +package cc.mrbird.febs.generator.mapper; + + +import cc.mrbird.febs.generator.entity.Column; +import cc.mrbird.febs.generator.entity.Table; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author MrBird + */ +public interface GeneratorMapper { + + List<String> getDatabases(@Param("databaseType") String databaseType); + + <T> IPage<Table> getTables(Page<T> page, @Param("tableName") String tableName, @Param("databaseType") String databaseType, @Param("schemaName") String schemaName); + + List<Column> getColumns(@Param("databaseType") String databaseType, @Param("schemaName") String schemaName, @Param("tableName") String tableName); +} diff --git a/src/main/java/cc/mrbird/febs/generator/service/IGeneratorConfigService.java b/src/main/java/cc/mrbird/febs/generator/service/IGeneratorConfigService.java new file mode 100644 index 0000000..7af0acb --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/service/IGeneratorConfigService.java @@ -0,0 +1,25 @@ +package cc.mrbird.febs.generator.service; + +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * @author MrBird + */ +public interface IGeneratorConfigService extends IService<GeneratorConfig> { + + /** + * 查询 + * + * @return GeneratorConfig + */ + GeneratorConfig findGeneratorConfig(); + + /** + * 修改 + * + * @param generatorConfig generatorConfig + */ + void updateGeneratorConfig(GeneratorConfig generatorConfig); + +} diff --git a/src/main/java/cc/mrbird/febs/generator/service/IGeneratorService.java b/src/main/java/cc/mrbird/febs/generator/service/IGeneratorService.java new file mode 100644 index 0000000..8245f79 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/service/IGeneratorService.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.generator.service; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.generator.entity.Column; +import cc.mrbird.febs.generator.entity.Table; +import com.baomidou.mybatisplus.core.metadata.IPage; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IGeneratorService { + + /** + * 获取数据库列表 + * + * @param databaseType databaseType + * @return 数据库列表 + */ + List<String> getDatabases(String databaseType); + + /** + * 获取数据表 + * + * @param tableName tableName + * @param request request + * @param databaseType databaseType + * @param schemaName schemaName + * @return 数据表分页数据 + */ + IPage<Table> getTables(String tableName, QueryRequest request, String databaseType, String schemaName); + + /** + * 获取数据表列属性 + * + * @param databaseType databaseType + * @param schemaName schemaName + * @param tableName tableName + * @return 数据表列属性 + */ + List<Column> getColumns(String databaseType, String schemaName, String tableName); +} diff --git a/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorConfigServiceImpl.java b/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorConfigServiceImpl.java new file mode 100644 index 0000000..de682c1 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorConfigServiceImpl.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.generator.service.impl; + +import cc.mrbird.febs.generator.entity.GeneratorConfig; +import cc.mrbird.febs.generator.mapper.GeneratorConfigMapper; +import cc.mrbird.febs.generator.service.IGeneratorConfigService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.collections4.CollectionUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author MrBird + */ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class GeneratorConfigServiceImpl extends ServiceImpl<GeneratorConfigMapper, GeneratorConfig> implements IGeneratorConfigService { + + @Override + public GeneratorConfig findGeneratorConfig() { + List<GeneratorConfig> generatorConfigs = this.baseMapper.selectList(null); + return CollectionUtils.isNotEmpty(generatorConfigs) ? generatorConfigs.get(0) : null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateGeneratorConfig(GeneratorConfig generatorConfig) { + this.saveOrUpdate(generatorConfig); + } +} diff --git a/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorServiceImpl.java b/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorServiceImpl.java new file mode 100644 index 0000000..41bc89e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/generator/service/impl/GeneratorServiceImpl.java @@ -0,0 +1,42 @@ +package cc.mrbird.febs.generator.service.impl; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.generator.entity.Column; +import cc.mrbird.febs.generator.entity.Table; +import cc.mrbird.febs.generator.mapper.GeneratorMapper; +import cc.mrbird.febs.generator.service.IGeneratorService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +public class GeneratorServiceImpl implements IGeneratorService { + + private final GeneratorMapper generatorMapper; + + @Override + public List<String> getDatabases(String databaseType) { + return generatorMapper.getDatabases(databaseType); + } + + @Override + public IPage<Table> getTables(String tableName, QueryRequest request, String databaseType, String schemaName) { + Page<Table> page = new Page<>(request.getPageNum(), request.getPageSize()); + SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_ASC, false); + return generatorMapper.getTables(page, tableName, databaseType, schemaName); + } + + @Override + public List<Column> getColumns(String databaseType, String schemaName, String tableName) { + return generatorMapper.getColumns(databaseType, schemaName, tableName); + } +} diff --git a/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java new file mode 100644 index 0000000..0021335 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/controller/ApiMallMemberController.java @@ -0,0 +1,8 @@ +package cc.mrbird.febs.mall.controller; + +/** + * @author wzy + * @date 2021-09-16 + **/ +public class ApiMallMemberController { +} diff --git a/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java new file mode 100644 index 0000000..af98c35 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/entity/MallMember.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.mall.entity; + +import cc.mrbird.febs.common.controller.BaseController; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author wzy + * @date 2021-09-16 + **/ +@Data +@TableName("mall_member") +public class MallMember extends BaseController { + + private String name; + + private String phone; + + private String email; + + private String password; + + private String sex; + + private String inviteId; + + private String referrerId; + + private String referrerIds; + + private String level; + + private Integer accountStatus; + + private Integer accountType; + +} diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java new file mode 100644 index 0000000..da00ab7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallMemberMapper.java @@ -0,0 +1,8 @@ +package cc.mrbird.febs.mall.mapper; + +/** + * @author wzy + * @date 2021-09-16 + **/ +public class MallMemberMapper { +} diff --git a/src/main/java/cc/mrbird/febs/mall/service/MallMemberService.java b/src/main/java/cc/mrbird/febs/mall/service/MallMemberService.java new file mode 100644 index 0000000..b6dca1c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/mall/service/MallMemberService.java @@ -0,0 +1,8 @@ +package cc.mrbird.febs.mall.service; + +/** + * @author wzy + * @date 2021-09-16 + **/ +public class MallMemberService { +} diff --git a/src/main/java/cc/mrbird/febs/monitor/configure/FebsMonitorConfigure.java b/src/main/java/cc/mrbird/febs/monitor/configure/FebsMonitorConfigure.java new file mode 100644 index 0000000..1363eee --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/configure/FebsMonitorConfigure.java @@ -0,0 +1,18 @@ +package cc.mrbird.febs.monitor.configure; + +import org.springframework.boot.actuate.trace.http.HttpTraceRepository; +import org.springframework.boot.actuate.trace.http.InMemoryHttpTraceRepository; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +/** + * @author MrBird + */ +@Configuration +public class FebsMonitorConfigure { + + @Bean + public HttpTraceRepository inMemoryHttpTraceRepository(){ + return new InMemoryHttpTraceRepository(); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/controller/FebsActuatorController.java b/src/main/java/cc/mrbird/febs/monitor/controller/FebsActuatorController.java new file mode 100644 index 0000000..f3ae194 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/controller/FebsActuatorController.java @@ -0,0 +1,72 @@ +package cc.mrbird.febs.monitor.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.utils.DateUtil; +import cc.mrbird.febs.monitor.endpoint.FebsHttpTraceEndpoint; +import cc.mrbird.febs.monitor.entity.FebsHttpTrace; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.boot.actuate.trace.http.HttpTrace; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import static cc.mrbird.febs.monitor.endpoint.FebsHttpTraceEndpoint.FebsHttpTraceDescriptor; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("febs/actuator") +@RequiredArgsConstructor +public class FebsActuatorController { + + private final FebsHttpTraceEndpoint httpTraceEndpoint; + + @GetMapping("httptrace") + @RequiresPermissions("httptrace:view") + @ControllerEndpoint(exceptionMessage = "请求追踪失败") + public FebsResponse httpTraces(String method, String url) { + FebsHttpTraceDescriptor traces = httpTraceEndpoint.traces(); + List<HttpTrace> httpTraceList = traces.getTraces(); + List<FebsHttpTrace> febsHttpTraces = new ArrayList<>(); + httpTraceList.forEach(t -> { + FebsHttpTrace febsHttpTrace = new FebsHttpTrace(); + febsHttpTrace.setRequestTime(DateUtil.formatInstant(t.getTimestamp(), DateUtil.FULL_TIME_SPLIT_PATTERN)); + febsHttpTrace.setMethod(t.getRequest().getMethod()); + febsHttpTrace.setUrl(t.getRequest().getUri()); + febsHttpTrace.setStatus(t.getResponse().getStatus()); + febsHttpTrace.setTimeTaken(t.getTimeTaken()); + if (StringUtils.isNotBlank(method) && StringUtils.isNotBlank(url)) { + if (StringUtils.equalsIgnoreCase(method, febsHttpTrace.getMethod()) + && StringUtils.containsIgnoreCase(febsHttpTrace.getUrl().toString(), url)) { + febsHttpTraces.add(febsHttpTrace); + } + } else if (StringUtils.isNotBlank(method)) { + if (StringUtils.equalsIgnoreCase(method, febsHttpTrace.getMethod())) { + febsHttpTraces.add(febsHttpTrace); + } + } else if (StringUtils.isNotBlank(url)) { + if (StringUtils.containsIgnoreCase(febsHttpTrace.getUrl().toString(), url)) { + febsHttpTraces.add(febsHttpTrace); + } + } else { + febsHttpTraces.add(febsHttpTrace); + } + }); + + Map<String, Object> data = new HashMap<>(2); + data.put("rows", febsHttpTraces); + data.put("total", febsHttpTraces.size()); + return new FebsResponse().success().data(data); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/controller/LogController.java b/src/main/java/cc/mrbird/febs/monitor/controller/LogController.java new file mode 100644 index 0000000..a2b0eab --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/controller/LogController.java @@ -0,0 +1,58 @@ +package cc.mrbird.febs.monitor.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.monitor.entity.SystemLog; +import cc.mrbird.febs.monitor.service.ILogService; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("log") +@RequiredArgsConstructor +public class LogController extends BaseController { + + private final ILogService logService; + + @GetMapping("list") + @RequiresPermissions("log:view") + public FebsResponse logList(SystemLog log, QueryRequest request) { + Map<String, Object> dataTable = getDataTable(this.logService.findLogs(log, request)); + return new FebsResponse().success().data(dataTable); + } + + @GetMapping("delete/{ids}") + @RequiresPermissions("log:delete") + @ControllerEndpoint(exceptionMessage = "删除日志失败") + public FebsResponse deleteLogs(@NotBlank(message = "{required}") @PathVariable String ids) { + String[] logIds = ids.split(StringPool.COMMA); + this.logService.deleteLogs(logIds); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("log:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(QueryRequest request, SystemLog lg, HttpServletResponse response) { + List<SystemLog> logs = this.logService.findLogs(lg, request).getRecords(); + ExcelKit.$Export(SystemLog.class, response).downXlsx(logs, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/controller/LoginLogController.java b/src/main/java/cc/mrbird/febs/monitor/controller/LoginLogController.java new file mode 100644 index 0000000..cd1d4f3 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/controller/LoginLogController.java @@ -0,0 +1,58 @@ +package cc.mrbird.febs.monitor.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.monitor.entity.LoginLog; +import cc.mrbird.febs.monitor.service.ILoginLogService; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("loginLog") +@RequiredArgsConstructor +public class LoginLogController extends BaseController { + + private final ILoginLogService loginLogService; + + @GetMapping("list") + @RequiresPermissions("loginlog:view") + public FebsResponse loginLogList(LoginLog loginLog, QueryRequest request) { + Map<String, Object> dataTable = getDataTable(this.loginLogService.findLoginLogs(loginLog, request)); + return new FebsResponse().success().data(dataTable); + } + + @GetMapping("delete/{ids}") + @RequiresPermissions("loginlog:delete") + @ControllerEndpoint(exceptionMessage = "删除日志失败") + public FebsResponse deleteLogss(@NotBlank(message = "{required}") @PathVariable String ids) { + String[] loginLogIds = ids.split(StringPool.COMMA); + this.loginLogService.deleteLoginLogs(loginLogIds); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("loginlog:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(QueryRequest request, LoginLog loginLog, HttpServletResponse response) { + List<LoginLog> loginLogs = this.loginLogService.findLoginLogs(loginLog, request).getRecords(); + ExcelKit.$Export(LoginLog.class, response).downXlsx(loginLogs, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/controller/SessionController.java b/src/main/java/cc/mrbird/febs/monitor/controller/SessionController.java new file mode 100644 index 0000000..aa8f216 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/controller/SessionController.java @@ -0,0 +1,44 @@ +package cc.mrbird.febs.monitor.controller; + +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.monitor.entity.ActiveUser; +import cc.mrbird.febs.monitor.service.ISessionService; +import lombok.RequiredArgsConstructor; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@RestController +@RequestMapping("session") +@RequiredArgsConstructor +public class SessionController { + + private final ISessionService sessionService; + + @GetMapping("list") + @RequiresPermissions("online:view") + public FebsResponse list(String username) { + List<ActiveUser> list = sessionService.list(username); + Map<String, Object> data = new HashMap<>(2); + data.put("rows", list); + data.put("total", CollectionUtils.size(list)); + return new FebsResponse().success().data(data); + } + + @GetMapping("delete/{id}") + @RequiresPermissions("user:kickout") + public FebsResponse forceLogout(@PathVariable String id) { + sessionService.forceLogout(id); + return new FebsResponse().success(); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/controller/ViewController.java b/src/main/java/cc/mrbird/febs/monitor/controller/ViewController.java new file mode 100644 index 0000000..ffa6146 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/controller/ViewController.java @@ -0,0 +1,88 @@ +package cc.mrbird.febs.monitor.controller; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.monitor.entity.JvmInfo; +import cc.mrbird.febs.monitor.entity.ServerInfo; +import cc.mrbird.febs.monitor.entity.TomcatInfo; +import cc.mrbird.febs.monitor.helper.FebsActuatorHelper; +import lombok.RequiredArgsConstructor; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +import java.util.List; + +import static cc.mrbird.febs.monitor.endpoint.FebsMetricsEndpoint.FebsMetricResponse; + +/** + * @author MrBird + */ +@Controller("monitorView") +@RequestMapping(FebsConstant.VIEW_PREFIX + "monitor") +@RequiredArgsConstructor +public class ViewController { + + private final FebsActuatorHelper actuatorHelper; + + @GetMapping("online") + @RequiresPermissions("online:view") + public String online() { + return FebsUtil.view("monitor/online"); + } + + @GetMapping("log") + @RequiresPermissions("log:view") + public String log() { + return FebsUtil.view("monitor/log"); + } + + @GetMapping("loginlog") + @RequiresPermissions("loginlog:view") + public String loginLog() { + return FebsUtil.view("monitor/loginLog"); + } + + @GetMapping("httptrace") + @RequiresPermissions("httptrace:view") + public String httptrace() { + return FebsUtil.view("monitor/httpTrace"); + } + + @GetMapping("jvm") + @RequiresPermissions("jvm:view") + public String jvmInfo(Model model) { + List<FebsMetricResponse> jvm = actuatorHelper.getMetricResponseByType("jvm"); + JvmInfo jvmInfo = actuatorHelper.getJvmInfoFromMetricData(jvm); + model.addAttribute("jvm", jvmInfo); + return FebsUtil.view("monitor/jvmInfo"); + } + + @GetMapping("tomcat") + @RequiresPermissions("tomcat:view") + public String tomcatInfo(Model model) { + List<FebsMetricResponse> tomcat = actuatorHelper.getMetricResponseByType("tomcat"); + TomcatInfo tomcatInfo = actuatorHelper.getTomcatInfoFromMetricData(tomcat); + model.addAttribute("tomcat", tomcatInfo); + return FebsUtil.view("monitor/tomcatInfo"); + } + + @GetMapping("server") + @RequiresPermissions("server:view") + public String serverInfo(Model model) { + List<FebsMetricResponse> jdbcInfo = actuatorHelper.getMetricResponseByType("jdbc"); + List<FebsMetricResponse> systemInfo = actuatorHelper.getMetricResponseByType("system"); + List<FebsMetricResponse> processInfo = actuatorHelper.getMetricResponseByType("process"); + + ServerInfo serverInfo = actuatorHelper.getServerInfoFromMetricData(jdbcInfo, systemInfo, processInfo); + model.addAttribute("server", serverInfo); + return FebsUtil.view("monitor/serverInfo"); + } + + @GetMapping("swagger") + public String swagger() { + return FebsUtil.view("monitor/swagger"); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsHttpTraceEndpoint.java b/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsHttpTraceEndpoint.java new file mode 100644 index 0000000..b2e8963 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsHttpTraceEndpoint.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.monitor.endpoint; + +import cc.mrbird.febs.common.annotation.FebsEndPoint; +import org.springframework.boot.actuate.trace.http.HttpTrace; +import org.springframework.boot.actuate.trace.http.HttpTraceRepository; + +import java.util.List; + +/** + * @author MrBird + */ +@FebsEndPoint +public class FebsHttpTraceEndpoint { + + private final HttpTraceRepository repository; + + public FebsHttpTraceEndpoint(HttpTraceRepository repository) { + this.repository = repository; + } + + public FebsHttpTraceDescriptor traces() { + return new FebsHttpTraceDescriptor(this.repository.findAll()); + } + + public static final class FebsHttpTraceDescriptor { + + private final List<HttpTrace> traces; + + private FebsHttpTraceDescriptor(List<HttpTrace> traces) { + this.traces = traces; + } + + public List<HttpTrace> getTraces() { + return this.traces; + } + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsMetricsEndpoint.java b/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsMetricsEndpoint.java new file mode 100644 index 0000000..47ed55a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/endpoint/FebsMetricsEndpoint.java @@ -0,0 +1,212 @@ +package cc.mrbird.febs.monitor.endpoint; + +import cc.mrbird.febs.common.annotation.FebsEndPoint; +import io.micrometer.core.instrument.Meter; +import io.micrometer.core.instrument.MeterRegistry; +import io.micrometer.core.instrument.Statistic; +import io.micrometer.core.instrument.Tag; +import io.micrometer.core.instrument.composite.CompositeMeterRegistry; +import org.springframework.boot.actuate.endpoint.InvalidEndpointRequestException; +import org.springframework.boot.actuate.endpoint.annotation.ReadOperation; +import org.springframework.boot.actuate.endpoint.annotation.Selector; +import org.springframework.lang.Nullable; + +import java.util.*; +import java.util.function.BiFunction; +import java.util.stream.Collectors; + +/** + * @author MrBird + */ +@FebsEndPoint +public class FebsMetricsEndpoint { + + private final MeterRegistry registry; + + public FebsMetricsEndpoint(MeterRegistry registry) { + this.registry = registry; + } + + @ReadOperation + public ListNamesResponse listNames() { + Set<String> names = new LinkedHashSet<>(); + this.collectNames(names, this.registry); + return new ListNamesResponse(names); + } + + private void collectNames(Set<String> names, MeterRegistry registry) { + if (registry instanceof CompositeMeterRegistry) { + ((CompositeMeterRegistry)registry).getRegistries().forEach((member) -> this.collectNames(names, member)); + } else { + registry.getMeters().stream().map(this::getName).forEach(names::add); + } + + } + + private String getName(Meter meter) { + return meter.getId().getName(); + } + + @ReadOperation + public FebsMetricResponse metric(@Selector String requiredMetricName, @Nullable List<String> tag) { + List<Tag> tags = this.parseTags(tag); + Collection<Meter> meters = this.findFirstMatchingMeters(this.registry, requiredMetricName, tags); + if (meters.isEmpty()) { + return null; + } else { + Map<Statistic, Double> samples = this.getSamples(meters); + Map<String, Set<String>> availableTags = this.getAvailableTags(meters); + tags.forEach((t) -> availableTags.remove(t.getKey())); + Meter.Id meterId = meters.iterator().next().getId(); + return new FebsMetricResponse(requiredMetricName, meterId.getDescription(), meterId.getBaseUnit(), this.asList(samples, Sample::new), this.asList(availableTags, AvailableTag::new)); + } + } + + private List<Tag> parseTags(List<String> tags) { + return tags == null ? Collections.emptyList() : tags.stream().map(this::parseTag).collect(Collectors.toList()); + } + + private Tag parseTag(String tag) { + String[] parts = tag.split(":", 2); + if (parts.length != 2) { + throw new InvalidEndpointRequestException("Each tag parameter must be in the form 'key:value' but was: " + tag, "Each tag parameter must be in the form 'key:value'"); + } else { + return Tag.of(parts[0], parts[1]); + } + } + + private Collection<Meter> findFirstMatchingMeters(MeterRegistry registry, String name, Iterable<Tag> tags) { + return registry instanceof CompositeMeterRegistry ? this.findFirstMatchingMeters((CompositeMeterRegistry)registry, name, tags) : registry.find(name).tags(tags).meters(); + } + + private Collection<Meter> findFirstMatchingMeters(CompositeMeterRegistry composite, String name, Iterable<Tag> tags) { + return composite.getRegistries().stream().map((registry) -> this.findFirstMatchingMeters(registry, name, tags)).filter((matching) -> !matching.isEmpty()).findFirst().orElse(Collections.emptyList()); + } + + private Map<Statistic, Double> getSamples(Collection<Meter> meters) { + Map<Statistic, Double> samples = new LinkedHashMap<>(); + meters.forEach((meter) -> this.mergeMeasurements(samples, meter)); + return samples; + } + + private void mergeMeasurements(Map<Statistic, Double> samples, Meter meter) { + meter.measure().forEach((measurement) -> samples.merge(measurement.getStatistic(), measurement.getValue(), this.mergeFunction(measurement.getStatistic()))); + } + + private BiFunction<Double, Double, Double> mergeFunction(Statistic statistic) { + return Statistic.MAX.equals(statistic) ? Double::max : Double::sum; + } + + private Map<String, Set<String>> getAvailableTags(Collection<Meter> meters) { + Map<String, Set<String>> availableTags = new HashMap<>(10); + meters.forEach((meter) -> this.mergeAvailableTags(availableTags, meter)); + return availableTags; + } + + private void mergeAvailableTags(Map<String, Set<String>> availableTags, Meter meter) { + meter.getId().getTags().forEach((tag) -> { + Set<String> value = Collections.singleton(tag.getValue()); + availableTags.merge(tag.getKey(), value, this::merge); + }); + } + + private <T> Set<T> merge(Set<T> set1, Set<T> set2) { + Set<T> result = new HashSet<>(set1.size() + set2.size()); + result.addAll(set1); + result.addAll(set2); + return result; + } + + private <K, V, T> List<T> asList(Map<K, V> map, BiFunction<K, V, T> mapper) { + return map.entrySet().stream().map((entry) -> mapper.apply(entry.getKey(), entry.getValue())).collect(Collectors.toList()); + } + + public static final class Sample { + private final Statistic statistic; + private final Double value; + + Sample(Statistic statistic, Double value) { + this.statistic = statistic; + this.value = value; + } + + public Statistic getStatistic() { + return this.statistic; + } + + public Double getValue() { + return this.value; + } + + @Override + public String toString() { + return "MeasurementSample{statistic=" + this.statistic + ", value=" + this.value + '}'; + } + } + + public static final class AvailableTag { + private final String tag; + private final Set<String> values; + + AvailableTag(String tag, Set<String> values) { + this.tag = tag; + this.values = values; + } + + public String getTag() { + return this.tag; + } + + public Set<String> getValues() { + return this.values; + } + } + + public static final class FebsMetricResponse { + private final String name; + private final String description; + private final String baseUnit; + private final List<Sample> measurements; + private final List<AvailableTag> availableTags; + + FebsMetricResponse(String name, String description, String baseUnit, List<Sample> measurements, List<AvailableTag> availableTags) { + this.name = name; + this.description = description; + this.baseUnit = baseUnit; + this.measurements = measurements; + this.availableTags = availableTags; + } + + public String getName() { + return this.name; + } + + public String getDescription() { + return this.description; + } + + public String getBaseUnit() { + return this.baseUnit; + } + + public List<Sample> getMeasurements() { + return this.measurements; + } + + public List<AvailableTag> getAvailableTags() { + return this.availableTags; + } + } + + public static final class ListNamesResponse { + private final Set<String> names; + + ListNamesResponse(Set<String> names) { + this.names = names; + } + + public Set<String> getNames() { + return this.names; + } + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/ActiveUser.java b/src/main/java/cc/mrbird/febs/monitor/entity/ActiveUser.java new file mode 100644 index 0000000..2ff11ec --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/ActiveUser.java @@ -0,0 +1,61 @@ +package cc.mrbird.febs.monitor.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * 在线用户 + * + * @author MrBird + */ +@Data +public class ActiveUser implements Serializable { + + private static final long serialVersionUID = -1277171780468841527L; + + /** + * session id + */ + private String id; + /** + * 用户 id + */ + private String userId; + /** + * 用户名称 + */ + private String username; + /** + * 用户主机地址 + */ + private String host; + /** + * 用户登录时系统 IP + */ + private String systemHost; + /** + * 状态 + */ + private String status; + /** + * session 创建时间 + */ + private String startTimestamp; + /** + * session 最后访问时间 + */ + private String lastAccessTime; + /** + * 超时时间 + */ + private Long timeout; + /** + * 所在地 + */ + private String location; + /** + * 是否为当前登录用户 + */ + private boolean current; +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/FebsHttpTrace.java b/src/main/java/cc/mrbird/febs/monitor/entity/FebsHttpTrace.java new file mode 100644 index 0000000..0e2bf2a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/FebsHttpTrace.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.monitor.entity; + +import lombok.Data; + +import java.io.Serializable; +import java.net.URI; + +/** + * @author MrBird + */ +@Data +public class FebsHttpTrace implements Serializable { + + private static final long serialVersionUID = 8286382834121710757L; + + /** + * 请求时间 + */ + private String requestTime; + /** + * 请求方法 + */ + private String method; + /** + * 请求 url + */ + private URI url; + /** + * 响应状态 + */ + private int status; + /** + * 耗时 + */ + private Long timeTaken; + +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/JvmInfo.java b/src/main/java/cc/mrbird/febs/monitor/entity/JvmInfo.java new file mode 100644 index 0000000..49559a0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/JvmInfo.java @@ -0,0 +1,70 @@ +package cc.mrbird.febs.monitor.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +public class JvmInfo implements Serializable { + + private static final long serialVersionUID = -5178501845351050670L; + /** + * JVM 最大内存 + */ + private Double jvmMemoryMax; + /** + * JVM 可用内存 + */ + private Double jvmMemoryCommitted; + /** + * JVM 已用内存 + */ + private Double jvmMemoryUsed; + /** + * JVM 缓冲区已用内存 + */ + private Double jvmBufferMemoryUsed; + /** + * 当前缓冲区数量 + */ + private Double jvmBufferCount; + /** + * JVM 守护线程数量 + */ + private Double jvmThreadsdaemon; + /** + * JVM 当前活跃线程数量 + */ + private Double jvmThreadsLive; + /** + * JVM 峰值线程数量 + */ + private Double jvmThreadsPeak; + /** + * JVM 已加载 Class 数量 + */ + private Double jvmClassesLoaded; + /** + * JVM 未加载 Class 数量 + */ + private Double jvmClassesUnloaded; + /** + * GC 时, 年轻代分配的内存空间 + */ + private Double jvmGcMemoryAllocated; + /** + * GC 时, 老年代分配的内存空间 + */ + private Double jvmGcMemoryPromoted; + /** + * GC 时, 老年代的最大内存空间 + */ + private Double jvmGcMaxDataSize; + /** + * FullGC 时, 老年代的内存空间 + */ + private Double jvmGcLiveDataSize; +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/LoginLog.java b/src/main/java/cc/mrbird/febs/monitor/entity/LoginLog.java new file mode 100644 index 0000000..f4cfd9d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/LoginLog.java @@ -0,0 +1,168 @@ +package cc.mrbird.febs.monitor.entity; + +import cc.mrbird.febs.common.converter.TimeConverter; +import cc.mrbird.febs.common.utils.HttpContextUtil; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; + +import javax.servlet.http.HttpServletRequest; +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Slf4j +@Data +@TableName("t_login_log") +@Excel("登录日志") +public class LoginLog implements Serializable { + + private static final long serialVersionUID = 921991157363932095L; + /** + * id + */ + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + /** + * 登录用户 + */ + @TableField("USERNAME") + @ExcelField("登录用户") + private String username; + + /** + * 登录时间 + */ + @TableField("LOGIN_TIME") + @ExcelField(value = "登录时间", writeConverter = TimeConverter.class) + private Date loginTime; + + /** + * 登录地点 + */ + @TableField("LOCATION") + @ExcelField(value = "登录地点") + private String location; + /** + * 登录 IP + */ + @TableField("IP") + @ExcelField("登录IP") + private String ip; + /** + * 操作系统 + */ + @TableField("`SYSTEM`") + @ExcelField("操作系统") + private String system; + /** + * 登录浏览器 + */ + @TableField("BROWSER") + @ExcelField("登录浏览器") + private String browser; + + private transient String loginTimeFrom; + private transient String loginTimeTo; + + public void setSystemBrowserInfo() { + try { + HttpServletRequest request = HttpContextUtil.getHttpServletRequest(); + + StringBuilder userAgent = new StringBuilder("["); + userAgent.append(request.getHeader("User-Agent")); + userAgent.append("]"); + int indexOfMac = userAgent.indexOf("Mac OS X"); + int indexOfWindows = userAgent.indexOf("Windows NT"); + int indexOfIe = userAgent.indexOf("MSIE"); + int indexOfIe11 = userAgent.indexOf("rv:"); + int indexOfFirefox = userAgent.indexOf("Firefox"); + int indexOfSogou = userAgent.indexOf("MetaSr"); + int indexOfChrome = userAgent.indexOf("Chrome"); + int indexOfSafari = userAgent.indexOf("Safari"); + boolean isMac = indexOfMac > 0; + boolean isWindows = indexOfWindows > 0; + boolean isLinux = userAgent.indexOf("Linux") > 0; + boolean containIe = indexOfIe > 0 || (isWindows && (indexOfIe11 > 0)); + boolean containFirefox = indexOfFirefox > 0; + boolean containSogou = indexOfSogou > 0; + boolean containChrome = indexOfChrome > 0; + boolean containSafari = indexOfSafari > 0; + String browser = ""; + if (containSogou) { + if (containIe) { + browser = "搜狗" + userAgent.substring(indexOfIe, indexOfIe + "IE x.x".length()); + } else if (containChrome) { + browser = "搜狗" + userAgent.substring(indexOfChrome, indexOfChrome + "Chrome/xx".length()); + } + } else if (containChrome) { + browser = userAgent.substring(indexOfChrome, indexOfChrome + "Chrome/xx".length()); + } else if (containSafari) { + int indexOfSafariVersion = userAgent.indexOf("Version"); + browser = "Safari " + + userAgent.substring(indexOfSafariVersion, indexOfSafariVersion + "Version/x.x.x.x".length()); + } else if (containFirefox) { + browser = userAgent.substring(indexOfFirefox, indexOfFirefox + "Firefox/xx".length()); + } else if (containIe) { + if (indexOfIe11 > 0) { + browser = "IE 11"; + } else { + browser = userAgent.substring(indexOfIe, indexOfIe + "IE x.x".length()); + } + } + String os = ""; + if (isMac) { + os = userAgent.substring(indexOfMac, indexOfMac + "MacOS X xxxxxxxx".length()); + } else if (isLinux) { + os = "Linux"; + } else if (isWindows) { + os = "Windows "; + String version = userAgent.substring(indexOfWindows + "Windows NT".length(), indexOfWindows + + "Windows NTx.x".length()); + switch (version.trim()) { + case "5.0": + os += "2000"; + break; + case "5.1": + os += "XP"; + break; + case "5.2": + os += "2003"; + break; + case "6.0": + os += "Vista"; + break; + case "6.1": + os += "7"; + break; + case "6.2": + os += "8"; + break; + case "6.3": + os += "8.1"; + break; + case "10": + os += "10"; + default: + break; + } + } + this.system = os; + this.browser = StringUtils.replace(browser, "/", " "); + } catch (Exception e) { + log.error("获取登录信息失败:{}", e.getMessage()); + this.system = ""; + this.browser = ""; + } + + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/ServerInfo.java b/src/main/java/cc/mrbird/febs/monitor/entity/ServerInfo.java new file mode 100644 index 0000000..86701d3 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/ServerInfo.java @@ -0,0 +1,46 @@ +package cc.mrbird.febs.monitor.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +public class ServerInfo implements Serializable { + + private static final long serialVersionUID = 5915203206170057447L; + /** + * 应用已运行时长 + */ + private Double processUptime; + /** + * 应用 CPU占用率 + */ + private Double processCpuUsage; + /** + * 应用启动时间点 + */ + private String processStartTime; + /** + * 系统 CPU核心数 + */ + private Double systemCpuCount; + /** + * 系统 CPU 使用率 + */ + private Double systemCpuUsage; + /** + * 当前活跃 JDBC连接数 + */ + private Double jdbcConnectionsActive; + /** + * JDBC最小连接数 + */ + private Double jdbcConnectionsMin; + /** + * JDBC最大连接数 + */ + private Double jdbcConnectionsMax; +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/SystemLog.java b/src/main/java/cc/mrbird/febs/monitor/entity/SystemLog.java new file mode 100644 index 0000000..4584bea --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/SystemLog.java @@ -0,0 +1,87 @@ +package cc.mrbird.febs.monitor.entity; + +import cc.mrbird.febs.common.converter.TimeConverter; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_log") +@Excel("系统日志表") +public class SystemLog implements Serializable { + + /** + * 日志ID + */ + @TableId(value = "ID", type = IdType.AUTO) + private Long id; + + /** + * 操作用户 + */ + @TableField("USERNAME") + @ExcelField(value = "操作用户") + private String username; + + /** + * 操作内容 + */ + @TableField("OPERATION") + @ExcelField(value = "操作内容") + private String operation; + + /** + * 耗时 + */ + @TableField("TIME") + @ExcelField(value = "耗时(毫秒)") + private Long time; + + /** + * 操作方法 + */ + @TableField("METHOD") + @ExcelField(value = "操作方法") + private String method; + + /** + * 方法参数 + */ + @TableField("PARAMS") + @ExcelField(value = "方法参数") + private String params; + + /** + * 操作者IP + */ + @TableField("IP") + @ExcelField(value = "操作者IP") + private String ip; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + @ExcelField(value = "操作时间", writeConverter = TimeConverter.class) + private Date createTime; + + /** + * 操作地点 + */ + @TableField("LOCATION") + @ExcelField(value = "操作地点") + private String location; + + private transient String createTimeFrom; + private transient String createTimeTo; +} diff --git a/src/main/java/cc/mrbird/febs/monitor/entity/TomcatInfo.java b/src/main/java/cc/mrbird/febs/monitor/entity/TomcatInfo.java new file mode 100644 index 0000000..549d700 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/entity/TomcatInfo.java @@ -0,0 +1,58 @@ +package cc.mrbird.febs.monitor.entity; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +public class TomcatInfo implements Serializable { + + private static final long serialVersionUID = 5817092425802069572L; + /** + * tomcat 已创建 session 数 + */ + private Double tomcatSessionsCreated; + /** + * tomcat 已过期 session 数 + */ + private Double tomcatSessionsExpired; + /** + * tomcat 当前活跃 session 数 + */ + private Double tomcatSessionsActiveCurrent; + /** + * tomcat 活跃 session 数峰值 + */ + private Double tomcatSessionsActiveMax; + /** + * 超过session 最大配置后,拒绝的 session 个数 + */ + private Double tomcatSessionsRejected; + /** + * 发送的字节数 + */ + private Double tomcatGlobalSent; + /** + * request 请求最长耗时 + */ + private Double tomcatGlobalRequestMax; + /** + * tomcat 全局异常数量 + */ + private Double tomcatGlobalError; + /** + * tomcat 当前线程数(包括守护线程) + */ + private Double tomcatThreadsCurrent; + /** + * tomcat 配置的线程最大数 + */ + private Double tomcatThreadsConfigMax; + /** + * tomcat 当前繁忙线程数 + */ + private Double tomcatThreadsBusy; +} diff --git a/src/main/java/cc/mrbird/febs/monitor/helper/FebsActuatorHelper.java b/src/main/java/cc/mrbird/febs/monitor/helper/FebsActuatorHelper.java new file mode 100644 index 0000000..850dbad --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/helper/FebsActuatorHelper.java @@ -0,0 +1,214 @@ +package cc.mrbird.febs.monitor.helper; + +import cc.mrbird.febs.common.annotation.Helper; +import cc.mrbird.febs.common.utils.DateUtil; +import cc.mrbird.febs.monitor.endpoint.FebsMetricsEndpoint; +import cc.mrbird.febs.monitor.entity.JvmInfo; +import cc.mrbird.febs.monitor.entity.ServerInfo; +import cc.mrbird.febs.monitor.entity.TomcatInfo; +import com.google.common.base.Predicates; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.NumberFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import static cc.mrbird.febs.monitor.endpoint.FebsMetricsEndpoint.FebsMetricResponse; +import static cc.mrbird.febs.monitor.endpoint.FebsMetricsEndpoint.Sample; + +/** + * @author MrBird + */ +@Helper +@RequiredArgsConstructor +public class FebsActuatorHelper { + + private static final BigDecimal DECIMAL = new BigDecimal("1048576"); + + private final FebsMetricsEndpoint metricsEndpoint; + + public List<FebsMetricResponse> getMetricResponseByType(String type) { + FebsMetricsEndpoint.ListNamesResponse listNames = metricsEndpoint.listNames(); + Set<String> names = listNames.getNames(); + Iterable<String> jvm = names.stream() + .filter(Predicates.containsPattern(type)::apply) + .collect(Collectors.toList()); + List<FebsMetricResponse> metricResponseList = new ArrayList<>(); + jvm.forEach(s -> { + FebsMetricResponse metric = metricsEndpoint.metric(s, null); + metricResponseList.add(metric); + }); + return metricResponseList; + } + + public JvmInfo getJvmInfoFromMetricData(List<FebsMetricResponse> metrics) { + JvmInfo jvmInfo = new JvmInfo(); + metrics.forEach(d -> { + String name = d.getName(); + Sample sample = d.getMeasurements().get(0); + Double value = sample.getValue(); + switch (name) { + case "jvm.memory.max": + jvmInfo.setJvmMemoryMax(convertToMb(value)); + break; + case "jvm.memory.committed": + jvmInfo.setJvmMemoryCommitted(convertToMb(value)); + break; + case "jvm.memory.used": + jvmInfo.setJvmMemoryUsed(convertToMb(value)); + break; + case "jvm.buffer.memory.used": + jvmInfo.setJvmBufferMemoryUsed(convertToMb(value)); + break; + case "jvm.buffer.count": + jvmInfo.setJvmBufferCount(value); + break; + case "jvm.threads.daemon": + jvmInfo.setJvmThreadsdaemon(value); + break; + case "jvm.threads.live": + jvmInfo.setJvmThreadsLive(value); + break; + case "jvm.threads.peak": + jvmInfo.setJvmThreadsPeak(value); + break; + case "jvm.classes.loaded": + jvmInfo.setJvmClassesLoaded(value); + break; + case "jvm.classes.unloaded": + jvmInfo.setJvmClassesUnloaded(value); + break; + case "jvm.gc.memory.allocated": + jvmInfo.setJvmGcMemoryAllocated(convertToMb(value)); + break; + case "jvm.gc.memory.promoted": + jvmInfo.setJvmGcMemoryPromoted(convertToMb(value)); + break; + case "jvm.gc.max.data.size": + jvmInfo.setJvmGcMaxDataSize(convertToMb(value)); + break; + case "jvm.gc.live.data.size": + jvmInfo.setJvmGcLiveDataSize(convertToMb(value)); + break; + default: + } + }); + return jvmInfo; + } + + public TomcatInfo getTomcatInfoFromMetricData(List<FebsMetricResponse> metrics) { + TomcatInfo tomcatInfo = new TomcatInfo(); + metrics.forEach(d -> { + String name = d.getName(); + Sample sample = d.getMeasurements().get(0); + Double value = sample.getValue(); + switch (name) { + case "tomcat.sessions.created": + tomcatInfo.setTomcatSessionsCreated(value); + break; + case "tomcat.sessions.expired": + tomcatInfo.setTomcatSessionsExpired(value); + break; + case "tomcat.sessions.active.current": + tomcatInfo.setTomcatSessionsActiveCurrent(value); + break; + case "tomcat.sessions.active.max": + tomcatInfo.setTomcatSessionsActiveMax(value); + break; + case "tomcat.sessions.rejected": + tomcatInfo.setTomcatSessionsRejected(value); + break; + case "tomcat.global.error": + tomcatInfo.setTomcatGlobalError(value); + break; + case "tomcat.global.sent": + tomcatInfo.setTomcatGlobalSent(value); + break; + case "tomcat.global.request.max": + tomcatInfo.setTomcatGlobalRequestMax(value); + break; + case "tomcat.threads.current": + tomcatInfo.setTomcatThreadsCurrent(value); + break; + case "tomcat.threads.config.max": + tomcatInfo.setTomcatThreadsConfigMax(value); + break; + case "tomcat.threads.busy": + tomcatInfo.setTomcatThreadsBusy(value); + break; + default: + } + }); + return tomcatInfo; + } + + public ServerInfo getServerInfoFromMetricData(List<FebsMetricResponse> jdbcInfo, + List<FebsMetricResponse> systemInfo, + List<FebsMetricResponse> processInfo) { + ServerInfo serverInfo = new ServerInfo(); + jdbcInfo.forEach(j -> { + String name = j.getName(); + Sample sample = j.getMeasurements().get(0); + Double value = sample.getValue(); + switch (name) { + case "jdbc.connections.active": + serverInfo.setJdbcConnectionsActive(value); + break; + case "jdbc.connections.max": + serverInfo.setJdbcConnectionsMax(value); + break; + case "jdbc.connections.min": + serverInfo.setJdbcConnectionsMin(value); + break; + default: + } + }); + systemInfo.forEach(s -> { + String name = s.getName(); + Sample sample = s.getMeasurements().get(0); + Double value = sample.getValue(); + switch (name) { + case "system.cpu.count": + serverInfo.setSystemCpuCount(value); + break; + case "system.cpu.usage": + serverInfo.setSystemCpuUsage(value); + break; + default: + } + }); + processInfo.forEach(p -> { + String name = p.getName(); + Sample sample = p.getMeasurements().get(0); + Double value = sample.getValue(); + switch (name) { + case "process.cpu.usage": + serverInfo.setProcessCpuUsage(value); + break; + case "process.uptime": + serverInfo.setProcessUptime(value); + break; + case "process.start.time": + NumberFormat numberFormat = NumberFormat.getInstance(); + numberFormat.setMaximumFractionDigits(20); + numberFormat.setGroupingUsed(false); + long timeMillis = Long.parseLong(StringUtils.replace(numberFormat.format(value), ".", "")); + String startTime = DateUtil.getDateFormat(new Date(timeMillis), DateUtil.FULL_TIME_SPLIT_PATTERN); + serverInfo.setProcessStartTime(startTime); + default: + } + }); + return serverInfo; + } + + private static Double convertToMb(Object value) { + return new BigDecimal(String.valueOf(value)) + .divide(DECIMAL, 3, RoundingMode.HALF_UP).doubleValue(); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/mapper/LogMapper.java b/src/main/java/cc/mrbird/febs/monitor/mapper/LogMapper.java new file mode 100644 index 0000000..a000f1e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/mapper/LogMapper.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.monitor.mapper; + +import cc.mrbird.febs.monitor.entity.SystemLog; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface LogMapper extends BaseMapper<SystemLog> { + +} diff --git a/src/main/java/cc/mrbird/febs/monitor/mapper/LoginLogMapper.java b/src/main/java/cc/mrbird/febs/monitor/mapper/LoginLogMapper.java new file mode 100644 index 0000000..fd91080 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/mapper/LoginLogMapper.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.monitor.mapper; + +import cc.mrbird.febs.monitor.entity.LoginLog; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +public interface LoginLogMapper extends BaseMapper<LoginLog> { + + /** + * 获取系统总访问次数 + * + * @return Long + */ + Long findTotalVisitCount(); + + /** + * 获取系统今日访问次数 + * + * @return Long + */ + Long findTodayVisitCount(); + + /** + * 获取系统今日访问 IP数 + * + * @return Long + */ + Long findTodayIp(); + + /** + * 获取系统近七天来的访问记录 + * + * @param user 用户 + * @return 系统近七天来的访问记录 + */ + List<Map<String, Object>> findLastSevenDaysVisitCount(User user); +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/monitor/service/ILogService.java b/src/main/java/cc/mrbird/febs/monitor/service/ILogService.java new file mode 100644 index 0000000..a512108 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/ILogService.java @@ -0,0 +1,48 @@ +package cc.mrbird.febs.monitor.service; + + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.monitor.entity.SystemLog; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.aspectj.lang.ProceedingJoinPoint; +import org.springframework.scheduling.annotation.Async; + +import java.lang.reflect.Method; + +/** + * @author MrBird + */ +public interface ILogService extends IService<SystemLog> { + + /** + * 查询操作日志分页 + * + * @param systemLog 日志 + * @param request QueryRequest + * @return IPage<SystemLog> + */ + IPage<SystemLog> findLogs(SystemLog systemLog, QueryRequest request); + + /** + * 删除操作日志 + * + * @param logIds 日志 ID集合 + */ + void deleteLogs(String[] logIds); + + /** + * 异步保存操作日志 + * + * @param user 用户信息 + * @param point 切点 + * @param method Method + * @param ip ip + * @param operation 操作内容 + * @param start 开始时间 + */ + @Async(FebsConstant.ASYNC_POOL) + void saveLog(User user, ProceedingJoinPoint point, Method method, String ip, String operation, long start); +} diff --git a/src/main/java/cc/mrbird/febs/monitor/service/ILoginLogService.java b/src/main/java/cc/mrbird/febs/monitor/service/ILoginLogService.java new file mode 100644 index 0000000..8ac3c64 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/ILoginLogService.java @@ -0,0 +1,68 @@ +package cc.mrbird.febs.monitor.service; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.monitor.entity.LoginLog; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +public interface ILoginLogService extends IService<LoginLog> { + + /** + * 获取登录日志分页信息 + * + * @param loginLog 传参 + * @param request request + * @return IPage<LoginLog> + */ + IPage<LoginLog> findLoginLogs(LoginLog loginLog, QueryRequest request); + + /** + * 保存登录日志 + * + * @param loginLog 登录日志 + */ + void saveLoginLog(LoginLog loginLog); + + /** + * 删除登录日志 + * + * @param ids 日志 id集合 + */ + void deleteLoginLogs(String[] ids); + + /** + * 获取系统总访问次数 + * + * @return Long + */ + Long findTotalVisitCount(); + + /** + * 获取系统今日访问次数 + * + * @return Long + */ + Long findTodayVisitCount(); + + /** + * 获取系统今日访问 IP数 + * + * @return Long + */ + Long findTodayIp(); + + /** + * 获取系统近七天来的访问记录 + * + * @param user 用户 + * @return 系统近七天来的访问记录 + */ + List<Map<String, Object>> findLastSevenDaysVisitCount(User user); +} diff --git a/src/main/java/cc/mrbird/febs/monitor/service/ISessionService.java b/src/main/java/cc/mrbird/febs/monitor/service/ISessionService.java new file mode 100644 index 0000000..aad1932 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/ISessionService.java @@ -0,0 +1,26 @@ +package cc.mrbird.febs.monitor.service; + +import cc.mrbird.febs.monitor.entity.ActiveUser; + +import java.util.List; + +/** + * @author MrBird + */ +public interface ISessionService { + + /** + * 获取在线用户列表 + * + * @param username 用户名 + * @return List<ActiveUser> + */ + List<ActiveUser> list(String username); + + /** + * 踢出用户 + * + * @param sessionId sessionId + */ + void forceLogout(String sessionId); +} diff --git a/src/main/java/cc/mrbird/febs/monitor/service/impl/LogServiceImpl.java b/src/main/java/cc/mrbird/febs/monitor/service/impl/LogServiceImpl.java new file mode 100644 index 0000000..a971075 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/impl/LogServiceImpl.java @@ -0,0 +1,141 @@ +package cc.mrbird.febs.monitor.service.impl; + + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.AddressUtil; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.monitor.entity.SystemLog; +import cc.mrbird.febs.monitor.mapper.LogMapper; +import cc.mrbird.febs.monitor.service.ILogService; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.fasterxml.jackson.databind.ObjectMapper; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.aspectj.lang.ProceedingJoinPoint; +import org.springframework.core.LocalVariableTableParameterNameDiscoverer; +import org.springframework.stereotype.Service; +import org.springframework.web.multipart.MultipartFile; + +import java.io.Serializable; +import java.lang.reflect.Method; +import java.util.*; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +public class LogServiceImpl extends ServiceImpl<LogMapper, SystemLog> implements ILogService { + + private final ObjectMapper objectMapper; + + @Override + public IPage<SystemLog> findLogs(SystemLog systemLog, QueryRequest request) { + QueryWrapper<SystemLog> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(systemLog.getCreateTimeFrom()) && + StringUtils.equals(systemLog.getCreateTimeFrom(), systemLog.getCreateTimeTo())) { + systemLog.setCreateTimeFrom(systemLog.getCreateTimeFrom() + " 00:00:00"); + systemLog.setCreateTimeTo(systemLog.getCreateTimeTo() + " 23:59:59"); + } + if (StringUtils.isNotBlank(systemLog.getUsername())) { + queryWrapper.lambda().eq(SystemLog::getUsername, systemLog.getUsername().toLowerCase()); + } + if (StringUtils.isNotBlank(systemLog.getOperation())) { + queryWrapper.lambda().like(SystemLog::getOperation, systemLog.getOperation()); + } + if (StringUtils.isNotBlank(systemLog.getLocation())) { + queryWrapper.lambda().like(SystemLog::getLocation, systemLog.getLocation()); + } + if (StringUtils.isNotBlank(systemLog.getCreateTimeFrom()) && StringUtils.isNotBlank(systemLog.getCreateTimeTo())) { + queryWrapper.lambda() + .ge(SystemLog::getCreateTime, systemLog.getCreateTimeFrom()) + .le(SystemLog::getCreateTime, systemLog.getCreateTimeTo()); + } + + Page<SystemLog> page = new Page<>(request.getPageNum(), request.getPageSize()); + SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, true); + + return this.page(page, queryWrapper); + } + + @Override + public void deleteLogs(String[] logIds) { + List<String> list = Arrays.asList(logIds); + baseMapper.deleteBatchIds(list); + } + + @Override + public void saveLog(User user, ProceedingJoinPoint point, Method method, String ip, String operation, long start) { + SystemLog systemLog = new SystemLog(); + // 设置 IP地址 + systemLog.setIp(ip); + if (user != null) { + systemLog.setUsername(user.getUsername()); + } + // 设置耗时 + systemLog.setTime(System.currentTimeMillis() - start); + // 设置操作描述 + systemLog.setOperation(operation); + // 请求的类名 + String className = point.getTarget().getClass().getName(); + // 请求的方法名 + String methodName = method.getName(); + systemLog.setMethod(className + "." + methodName + "()"); + // 请求的方法参数值 + Object[] args = point.getArgs(); + // 请求的方法参数名称 + LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer(); + String[] paramNames = u.getParameterNames(method); + if (args != null && paramNames != null) { + StringBuilder params = new StringBuilder(); + params = handleParams(params, args, Arrays.asList(paramNames)); + systemLog.setParams(params.toString()); + } + systemLog.setCreateTime(new Date()); + systemLog.setLocation(AddressUtil.getCityInfo(ip)); + // 保存系统日志 + save(systemLog); + } + + @SuppressWarnings("all") + private StringBuilder handleParams(StringBuilder params, Object[] args, List paramNames) { + try { + for (int i = 0; i < args.length; i++) { + if (args[i] instanceof Map) { + Set set = ((Map) args[i]).keySet(); + List<Object> list = new ArrayList<>(); + List<Object> paramList = new ArrayList<>(); + for (Object key : set) { + list.add(((Map) args[i]).get(key)); + paramList.add(key); + } + return handleParams(params, list.toArray(), paramList); + } else { + if (args[i] instanceof Serializable) { + Class<?> aClass = args[i].getClass(); + try { + aClass.getDeclaredMethod("toString", new Class[]{null}); + // 如果不抛出 NoSuchMethodException 异常则存在 toString 方法 ,安全的 writeValueAsString ,否则 走 Object的 toString方法 + params.append(" ").append(paramNames.get(i)).append(": ").append(objectMapper.writeValueAsString(args[i])); + } catch (NoSuchMethodException e) { + params.append(" ").append(paramNames.get(i)).append(": ").append(objectMapper.writeValueAsString(args[i].toString())); + } + } else if (args[i] instanceof MultipartFile) { + MultipartFile file = (MultipartFile) args[i]; + params.append(" ").append(paramNames.get(i)).append(": ").append(file.getName()); + } else { + params.append(" ").append(paramNames.get(i)).append(": ").append(args[i]); + } + } + } + } catch (Exception ignore) { + params.append("参数解析失败"); + } + return params; + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/service/impl/LoginLogServiceImpl.java b/src/main/java/cc/mrbird/febs/monitor/service/impl/LoginLogServiceImpl.java new file mode 100644 index 0000000..7c34e65 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/impl/LoginLogServiceImpl.java @@ -0,0 +1,90 @@ +package cc.mrbird.febs.monitor.service.impl; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.AddressUtil; +import cc.mrbird.febs.common.utils.HttpContextUtil; +import cc.mrbird.febs.common.utils.IpUtil; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.monitor.entity.LoginLog; +import cc.mrbird.febs.monitor.mapper.LoginLogMapper; +import cc.mrbird.febs.monitor.service.ILoginLogService; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import javax.servlet.http.HttpServletRequest; +import java.util.Arrays; +import java.util.Date; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Service("loginLogService") +public class LoginLogServiceImpl extends ServiceImpl<LoginLogMapper, LoginLog> implements ILoginLogService { + + @Override + public IPage<LoginLog> findLoginLogs(LoginLog loginLog, QueryRequest request) { + QueryWrapper<LoginLog> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(loginLog.getLoginTimeFrom()) && + StringUtils.equals(loginLog.getLoginTimeFrom(), loginLog.getLoginTimeTo())) { + loginLog.setLoginTimeFrom(loginLog.getLoginTimeFrom() + " 00:00:00"); + loginLog.setLoginTimeTo(loginLog.getLoginTimeTo() + " 23:59:59"); + } + if (StringUtils.isNotBlank(loginLog.getUsername())) { + queryWrapper.lambda().eq(LoginLog::getUsername, loginLog.getUsername().toLowerCase()); + } + if (StringUtils.isNotBlank(loginLog.getLoginTimeFrom()) && StringUtils.isNotBlank(loginLog.getLoginTimeTo())) { + queryWrapper.lambda() + .ge(LoginLog::getLoginTime, loginLog.getLoginTimeFrom()) + .le(LoginLog::getLoginTime, loginLog.getLoginTimeTo()); + } + + Page<LoginLog> page = new Page<>(request.getPageNum(), request.getPageSize()); + SortUtil.handlePageSort(request, page, "loginTime", FebsConstant.ORDER_DESC, true); + + return this.page(page, queryWrapper); + } + + @Override + public void saveLoginLog(LoginLog loginLog) { + loginLog.setLoginTime(new Date()); + HttpServletRequest request = HttpContextUtil.getHttpServletRequest(); + String ip = IpUtil.getIpAddr(request); + loginLog.setIp(ip); + loginLog.setLocation(AddressUtil.getCityInfo(ip)); + this.save(loginLog); + } + + @Override + public void deleteLoginLogs(String[] ids) { + List<String> list = Arrays.asList(ids); + baseMapper.deleteBatchIds(list); + } + + @Override + public Long findTotalVisitCount() { + return this.baseMapper.findTotalVisitCount(); + } + + @Override + public Long findTodayVisitCount() { + return this.baseMapper.findTodayVisitCount(); + } + + @Override + public Long findTodayIp() { + return this.baseMapper.findTodayIp(); + } + + @Override + public List<Map<String, Object>> findLastSevenDaysVisitCount(User user) { + return this.baseMapper.findLastSevenDaysVisitCount(user); + } +} diff --git a/src/main/java/cc/mrbird/febs/monitor/service/impl/SessionServiceImpl.java b/src/main/java/cc/mrbird/febs/monitor/service/impl/SessionServiceImpl.java new file mode 100644 index 0000000..aa53b05 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/monitor/service/impl/SessionServiceImpl.java @@ -0,0 +1,76 @@ +package cc.mrbird.febs.monitor.service.impl; + +import cc.mrbird.febs.common.utils.AddressUtil; +import cc.mrbird.febs.common.utils.DateUtil; +import cc.mrbird.febs.monitor.entity.ActiveUser; +import cc.mrbird.febs.monitor.service.ISessionService; +import cc.mrbird.febs.system.entity.User; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.SecurityUtils; +import org.apache.shiro.session.Session; +import org.apache.shiro.session.mgt.eis.SessionDAO; +import org.apache.shiro.subject.SimplePrincipalCollection; +import org.apache.shiro.subject.support.DefaultSubjectContext; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +public class SessionServiceImpl implements ISessionService { + + private final SessionDAO sessionDAO; + + @Override + public List<ActiveUser> list(String username) { + String currentSessionId = (String) SecurityUtils.getSubject().getSession().getId(); + + List<ActiveUser> list = new ArrayList<>(); + Collection<Session> sessions = sessionDAO.getActiveSessions(); + for (Session session : sessions) { + ActiveUser activeUser = new ActiveUser(); + User user; + SimplePrincipalCollection principalCollection; + if (session.getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY) == null) { + continue; + } else { + principalCollection = (SimplePrincipalCollection) session + .getAttribute(DefaultSubjectContext.PRINCIPALS_SESSION_KEY); + user = (User) principalCollection.getPrimaryPrincipal(); + activeUser.setUsername(user.getUsername()); + activeUser.setUserId(user.getUserId().toString()); + } + activeUser.setId((String) session.getId()); + activeUser.setHost(session.getHost()); + activeUser.setStartTimestamp(DateUtil.getDateFormat(session.getStartTimestamp(), DateUtil.FULL_TIME_SPLIT_PATTERN)); + activeUser.setLastAccessTime(DateUtil.getDateFormat(session.getLastAccessTime(), DateUtil.FULL_TIME_SPLIT_PATTERN)); + long timeout = session.getTimeout(); + activeUser.setStatus(timeout == 0L ? "0" : "1"); + String address = AddressUtil.getCityInfo(activeUser.getHost()); + activeUser.setLocation(address); + activeUser.setTimeout(timeout); + if (StringUtils.equals(currentSessionId, activeUser.getId())) { + activeUser.setCurrent(true); + } + if (StringUtils.isBlank(username) + || StringUtils.equalsIgnoreCase(activeUser.getUsername(), username)) { + list.add(activeUser); + } + } + return list; + } + + @Override + public void forceLogout(String sessionId) { + Session session = sessionDAO.readSession(sessionId); + session.setTimeout(0); + session.stop(); + sessionDAO.delete(session); + } +} diff --git a/src/main/java/cc/mrbird/febs/others/controller/DataPermissionTestController.java b/src/main/java/cc/mrbird/febs/others/controller/DataPermissionTestController.java new file mode 100644 index 0000000..9430e1c --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/controller/DataPermissionTestController.java @@ -0,0 +1,37 @@ +package cc.mrbird.febs.others.controller; + +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.others.entity.DataPermissionTest; +import cc.mrbird.febs.others.service.IDataPermissionTestService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.Map; + +/** + * Controller + * + * @author MrBird + * @date 2020-04-14 15:25:33 + */ +@Slf4j +@RestController +@RequestMapping("datapermission/test") +@RequiredArgsConstructor +public class DataPermissionTestController extends BaseController { + + private final IDataPermissionTestService dataPermissionTestService; + + @GetMapping("list") + @RequiresPermissions("others:datapermission") + public FebsResponse dataPermissionTestList(QueryRequest request, DataPermissionTest dataPermissionTest) { + Map<String, Object> dataTable = getDataTable(this.dataPermissionTestService.findDataPermissionTests(request, dataPermissionTest)); + return new FebsResponse().success().data(dataTable); + } +} diff --git a/src/main/java/cc/mrbird/febs/others/controller/EximportController.java b/src/main/java/cc/mrbird/febs/others/controller/EximportController.java new file mode 100644 index 0000000..7a91c47 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/controller/EximportController.java @@ -0,0 +1,123 @@ +package cc.mrbird.febs.others.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.others.entity.Eximport; +import cc.mrbird.febs.others.service.IEximportService; +import com.google.common.base.Stopwatch; +import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Lists; +import com.wuwenze.poi.ExcelKit; +import com.wuwenze.poi.handler.ExcelReadHandler; +import com.wuwenze.poi.pojo.ExcelErrorField; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.stream.IntStream; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequestMapping("eximport") +@RequiredArgsConstructor +public class EximportController extends BaseController { + + private final IEximportService eximportService; + + @GetMapping + @RequiresPermissions("others:eximport:view") + public FebsResponse findEximports(QueryRequest request) { + Map<String, Object> dataTable = getDataTable(eximportService.findEximports(request, null)); + return new FebsResponse().success().data(dataTable); + } + + /** + * 生成 Excel导入模板 + */ + @GetMapping("template") + @RequiresPermissions("eximport:template") + public void generateImportTemplate(HttpServletResponse response) { + // 构建数据 + List<Eximport> list = new ArrayList<>(); + IntStream.range(0, 20).forEach(i -> { + Eximport eximport = new Eximport(); + eximport.setField1("字段1"); + eximport.setField2(i + 1); + eximport.setField3("mrbird" + i + "@gmail.com"); + list.add(eximport); + }); + // 构建模板 + ExcelKit.$Export(Eximport.class, response).downXlsx(list, true); + } + + /** + * 导入Excel数据,并批量插入 T_EXIMPORT表 + */ + @PostMapping("import") + @RequiresPermissions("eximport:import") + @ControllerEndpoint(exceptionMessage = "导入Excel数据失败") + public FebsResponse importExcels(MultipartFile file) throws IOException { + if (file.isEmpty()) { + throw new FebsException("导入数据为空"); + } + String filename = file.getOriginalFilename(); + if (!StringUtils.endsWith(filename, ".xlsx")) { + throw new FebsException("只支持.xlsx类型文件导入"); + } + // 开始导入操作 + Stopwatch stopwatch = Stopwatch.createStarted(); + final List<Eximport> data = Lists.newArrayList(); + final List<Map<String, Object>> error = Lists.newArrayList(); + ExcelKit.$Import(Eximport.class).readXlsx(file.getInputStream(), new ExcelReadHandler<Eximport>() { + @Override + public void onSuccess(int sheet, int row, Eximport eximport) { + // 数据校验成功时,加入集合 + eximport.setCreateTime(new Date()); + data.add(eximport); + } + + @Override + public void onError(int sheet, int row, List<ExcelErrorField> errorFields) { + // 数据校验失败时,记录到 error集合 + error.add(ImmutableMap.of("row", row, "errorFields", errorFields)); + } + }); + if (CollectionUtils.isNotEmpty(data)) { + // 将合法的记录批量入库 + this.eximportService.batchInsert(data); + } + ImmutableMap<String, Object> result = ImmutableMap.of( + "time", stopwatch.stop().toString(), + "data", data, + "error", error + ); + return new FebsResponse().success().data(result); + } + + @GetMapping("excel") + @RequiresPermissions("eximport:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(QueryRequest queryRequest, Eximport eximport, HttpServletResponse response) { + List<Eximport> eximports = this.eximportService.findEximports(queryRequest, eximport).getRecords(); + ExcelKit.$Export(Eximport.class, response).downXlsx(eximports, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/others/controller/ViewController.java b/src/main/java/cc/mrbird/febs/others/controller/ViewController.java new file mode 100644 index 0000000..a6196d3 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/controller/ViewController.java @@ -0,0 +1,104 @@ +package cc.mrbird.febs.others.controller; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.utils.FebsUtil; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; + +/** + * @author MrBird + */ +@Controller("othersView") +@RequestMapping(FebsConstant.VIEW_PREFIX + "others") +public class ViewController { + + @GetMapping("febs/form") + @RequiresPermissions("febs:form:view") + public String febsForm() { + return FebsUtil.view("others/febs/form"); + } + + @GetMapping("febs/form/group") + @RequiresPermissions("febs:formgroup:view") + public String febsFormGroup() { + return FebsUtil.view("others/febs/formGroup"); + } + + @GetMapping("febs/tools") + @RequiresPermissions("febs:tools:view") + public String febsTools() { + return FebsUtil.view("others/febs/tools"); + } + + @GetMapping("febs/icon") + @RequiresPermissions("febs:icons:view") + public String febsIcon() { + return FebsUtil.view("others/febs/icon"); + } + + @GetMapping("febs/others") + @RequiresPermissions("others:febs:others") + public String febsOthers() { + return FebsUtil.view("others/febs/others"); + } + + @GetMapping("apex/line") + @RequiresPermissions("apex:line:view") + public String apexLine() { + return FebsUtil.view("others/apex/line"); + } + + @GetMapping("apex/area") + @RequiresPermissions("apex:area:view") + public String apexArea() { + return FebsUtil.view("others/apex/area"); + } + + @GetMapping("apex/column") + @RequiresPermissions("apex:column:view") + public String apexColumn() { + return FebsUtil.view("others/apex/column"); + } + + @GetMapping("apex/radar") + @RequiresPermissions("apex:radar:view") + public String apexRadar() { + return FebsUtil.view("others/apex/radar"); + } + + @GetMapping("apex/bar") + @RequiresPermissions("apex:bar:view") + public String apexBar() { + return FebsUtil.view("others/apex/bar"); + } + + @GetMapping("apex/mix") + @RequiresPermissions("apex:mix:view") + public String apexMix() { + return FebsUtil.view("others/apex/mix"); + } + + @GetMapping("map") + @RequiresPermissions("map:view") + public String map() { + return FebsUtil.view("others/map/gaodeMap"); + } + + @GetMapping("eximport") + @RequiresPermissions("others:eximport:view") + public String eximport() { + return FebsUtil.view("others/eximport/eximport"); + } + + @GetMapping("eximport/result") + public String eximportResult() { + return FebsUtil.view("others/eximport/eximportResult"); + } + + @GetMapping("datapermission") + public String dataPermissionTest() { + return FebsUtil.view("others/datapermission/test"); + } +} diff --git a/src/main/java/cc/mrbird/febs/others/entity/DataPermissionTest.java b/src/main/java/cc/mrbird/febs/others/entity/DataPermissionTest.java new file mode 100644 index 0000000..00a6f32 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/entity/DataPermissionTest.java @@ -0,0 +1,60 @@ +package cc.mrbird.febs.others.entity; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_data_permission_test") +public class DataPermissionTest { + + /** + * 字段1 + */ + @TableField("FIELD1") + private String field1; + + /** + * 字段2 + */ + @TableField("FIELD2") + private String field2; + + /** + * 字段3 + */ + @TableField("FIELD3") + private String field3; + + /** + * 字段4 + */ + @TableField("FIELD4") + private String field4; + + /** + * 部门id + */ + @TableField("DEPT_ID") + private Integer deptId; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + private Date createTime; + + /** + * id + */ + @TableId(value = "ID", type = IdType.AUTO) + private Integer id; + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/others/entity/Eximport.java b/src/main/java/cc/mrbird/febs/others/entity/Eximport.java new file mode 100644 index 0000000..a7fe761 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/entity/Eximport.java @@ -0,0 +1,47 @@ +package cc.mrbird.febs.others.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import com.wuwenze.poi.validator.EmailValidator; +import lombok.Data; + +import java.util.Date; + +/** + * 导入导出测试,Eximport = export + import + * + * @author MrBird + */ +@Data +@TableName("t_eximport") +@Excel("测试导入导出数据") +public class Eximport { + + /** + * 字段1 + */ + @ExcelField(value = "字段1", required = true, maxLength = 20, + comment = "提示:必填,长度不能超过20个字符") + private String field1; + + /** + * 字段2 + */ + @ExcelField(value = "字段2", required = true, maxLength = 11, regularExp = "[0-9]+", + regularExpMessage = "必须是数字", comment = "提示: 必填,只能填写数字,并且长度不能超过11位") + private Integer field2; + + /** + * 字段3 + */ + @ExcelField(value = "字段3", required = true, maxLength = 50, + comment = "提示:必填,只能填写邮箱,长度不能超过50个字符", validator = EmailValidator.class) + private String field3; + + /** + * 创建时间 + */ + private Date createTime; + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/others/mapper/DataPermissionTestMapper.java b/src/main/java/cc/mrbird/febs/others/mapper/DataPermissionTestMapper.java new file mode 100644 index 0000000..1cbf6ca --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/mapper/DataPermissionTestMapper.java @@ -0,0 +1,13 @@ +package cc.mrbird.febs.others.mapper; + +import cc.mrbird.febs.common.annotation.DataPermission; +import cc.mrbird.febs.others.entity.DataPermissionTest; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +@DataPermission(methods = {"selectPage"}) +public interface DataPermissionTestMapper extends BaseMapper<DataPermissionTest> { + +} diff --git a/src/main/java/cc/mrbird/febs/others/mapper/EximportMapper.java b/src/main/java/cc/mrbird/febs/others/mapper/EximportMapper.java new file mode 100644 index 0000000..f057a1a --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/mapper/EximportMapper.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.others.mapper; + +import cc.mrbird.febs.others.entity.Eximport; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface EximportMapper extends BaseMapper<Eximport> { + +} diff --git a/src/main/java/cc/mrbird/febs/others/service/IDataPermissionTestService.java b/src/main/java/cc/mrbird/febs/others/service/IDataPermissionTestService.java new file mode 100644 index 0000000..d096412 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/service/IDataPermissionTestService.java @@ -0,0 +1,21 @@ +package cc.mrbird.febs.others.service; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.others.entity.DataPermissionTest; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + + +/** + * @author MrBird + */ +public interface IDataPermissionTestService extends IService<DataPermissionTest> { + /** + * 查询(分页) + * + * @param request QueryRequest + * @param dataPermissionTest dataPermissionTest + * @return IPage<DataPermissionTest> + */ + IPage<DataPermissionTest> findDataPermissionTests(QueryRequest request, DataPermissionTest dataPermissionTest); +} diff --git a/src/main/java/cc/mrbird/febs/others/service/IEximportService.java b/src/main/java/cc/mrbird/febs/others/service/IEximportService.java new file mode 100644 index 0000000..ffa0c5b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/service/IEximportService.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.others.service; + + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.others.entity.Eximport; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IEximportService extends IService<Eximport> { + /** + * 查询(分页) + * + * @param request QueryRequest + * @param eximport eximport + * @return IPage<Eximport> + */ + IPage<Eximport> findEximports(QueryRequest request, Eximport eximport); + + + /** + * 批量插入 + * + * @param list List<Eximport> + */ + void batchInsert(List<Eximport> list); + +} diff --git a/src/main/java/cc/mrbird/febs/others/service/impl/DataPermissionTestServiceImpl.java b/src/main/java/cc/mrbird/febs/others/service/impl/DataPermissionTestServiceImpl.java new file mode 100644 index 0000000..8dbe635 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/service/impl/DataPermissionTestServiceImpl.java @@ -0,0 +1,29 @@ +package cc.mrbird.febs.others.service.impl; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.others.entity.DataPermissionTest; +import cc.mrbird.febs.others.mapper.DataPermissionTestMapper; +import cc.mrbird.febs.others.service.IDataPermissionTestService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +/** + * @author MrBird + */ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class DataPermissionTestServiceImpl extends ServiceImpl<DataPermissionTestMapper, DataPermissionTest> implements IDataPermissionTestService { + + @Override + public IPage<DataPermissionTest> findDataPermissionTests(QueryRequest request, DataPermissionTest dataPermissionTest) { + LambdaQueryWrapper<DataPermissionTest> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.orderByAsc(DataPermissionTest::getCreateTime); + Page<DataPermissionTest> page = new Page<>(request.getPageNum(), request.getPageSize()); + return this.page(page, queryWrapper); + } +} diff --git a/src/main/java/cc/mrbird/febs/others/service/impl/EximportServiceImpl.java b/src/main/java/cc/mrbird/febs/others/service/impl/EximportServiceImpl.java new file mode 100644 index 0000000..6e3c994 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/others/service/impl/EximportServiceImpl.java @@ -0,0 +1,42 @@ +package cc.mrbird.febs.others.service.impl; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.properties.FebsProperties; +import cc.mrbird.febs.others.entity.Eximport; +import cc.mrbird.febs.others.mapper.EximportMapper; +import cc.mrbird.febs.others.service.IEximportService; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author MrBird + */ +@Slf4j +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class EximportServiceImpl extends ServiceImpl<EximportMapper, Eximport> implements IEximportService { + + private final FebsProperties properties; + + @Override + public IPage<Eximport> findEximports(QueryRequest request, Eximport eximport) { + Page<Eximport> page = new Page<>(request.getPageNum(), request.getPageSize()); + return this.page(page, null); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void batchInsert(List<Eximport> list) { + saveBatch(list, properties.getMaxBatchInsertNum()); + } + +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/DeptController.java b/src/main/java/cc/mrbird/febs/system/controller/DeptController.java new file mode 100644 index 0000000..c906e87 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/DeptController.java @@ -0,0 +1,79 @@ +package cc.mrbird.febs.system.controller; + + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.entity.DeptTree; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.system.entity.Dept; +import cc.mrbird.febs.system.service.IDeptService; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("dept") +public class DeptController { + + private final IDeptService deptService; + + @GetMapping("select/tree") + @ControllerEndpoint(exceptionMessage = "获取部门树失败") + public List<DeptTree<Dept>> getDeptTree() throws FebsException { + return this.deptService.findDepts(); + } + + @GetMapping("tree") + @ControllerEndpoint(exceptionMessage = "获取部门树失败") + public FebsResponse getDeptTree(Dept dept) throws FebsException { + List<DeptTree<Dept>> depts = this.deptService.findDepts(dept); + return new FebsResponse().success().data(depts); + } + + @PostMapping + @RequiresPermissions("dept:add") + @ControllerEndpoint(operation = "新增部门", exceptionMessage = "新增部门失败") + public FebsResponse addDept(@Valid Dept dept) { + this.deptService.createDept(dept); + return new FebsResponse().success(); + } + + @GetMapping("delete/{deptIds}") + @RequiresPermissions("dept:delete") + @ControllerEndpoint(operation = "删除部门", exceptionMessage = "删除部门失败") + public FebsResponse deleteDepts(@NotBlank(message = "{required}") @PathVariable String deptIds) throws FebsException { + String[] ids = deptIds.split(StringPool.COMMA); + this.deptService.deleteDepts(ids); + return new FebsResponse().success(); + } + + @PostMapping("update") + @RequiresPermissions("dept:update") + @ControllerEndpoint(operation = "修改部门", exceptionMessage = "修改部门失败") + public FebsResponse updateDept(@Valid Dept dept) throws FebsException { + this.deptService.updateDept(dept); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("dept:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(Dept dept, QueryRequest request, HttpServletResponse response) throws FebsException { + List<Dept> depts = this.deptService.findDepts(dept, request); + ExcelKit.$Export(Dept.class, response).downXlsx(depts, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/LoginController.java b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java new file mode 100644 index 0000000..f084c2d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/LoginController.java @@ -0,0 +1,102 @@ +package cc.mrbird.febs.system.controller; + +import cc.mrbird.febs.common.annotation.Limit; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.service.ValidateCodeService; +import cc.mrbird.febs.common.utils.Md5Util; +import cc.mrbird.febs.monitor.entity.LoginLog; +import cc.mrbird.febs.monitor.service.ILoginLogService; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.service.IUserService; +import lombok.RequiredArgsConstructor; +import org.apache.shiro.authc.UsernamePasswordToken; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RestController; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpSession; +import javax.validation.constraints.NotBlank; +import java.io.IOException; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Validated +@RestController +@RequiredArgsConstructor +public class LoginController extends BaseController { + + private final IUserService userService; + private final ValidateCodeService validateCodeService; + private final ILoginLogService loginLogService; + + @PostMapping("login") + @Limit(key = "login", period = 60, count = 10, name = "登录接口", prefix = "limit") + public FebsResponse login( + @NotBlank(message = "{required}") String username, + @NotBlank(message = "{required}") String password, + @NotBlank(message = "{required}") String verifyCode, + boolean rememberMe, HttpServletRequest request) throws FebsException { + HttpSession session = request.getSession(); + validateCodeService.check(session.getId(), verifyCode); + password = Md5Util.encrypt(username.toLowerCase(), password); + UsernamePasswordToken token = new UsernamePasswordToken(username, password, rememberMe); + super.login(token); + // 保存登录日志 + LoginLog loginLog = new LoginLog(); + loginLog.setUsername(username); + loginLog.setSystemBrowserInfo(); + this.loginLogService.saveLoginLog(loginLog); + + return new FebsResponse().success(); + } + + @PostMapping("regist") + public FebsResponse regist( + @NotBlank(message = "{required}") String username, + @NotBlank(message = "{required}") String password) throws FebsException { + User user = userService.findByName(username); + if (user != null) { + throw new FebsException("该用户名已存在"); + } + this.userService.regist(username, password); + return new FebsResponse().success(); + } + + @GetMapping("index/{username}") + public FebsResponse index(@NotBlank(message = "{required}") @PathVariable String username) { + // 更新登录时间 + this.userService.updateLoginTime(username); + Map<String, Object> data = new HashMap<>(5); + // 获取系统访问记录 + Long totalVisitCount = this.loginLogService.findTotalVisitCount(); + data.put("totalVisitCount", totalVisitCount); + Long todayVisitCount = this.loginLogService.findTodayVisitCount(); + data.put("todayVisitCount", todayVisitCount); + Long todayIp = this.loginLogService.findTodayIp(); + data.put("todayIp", todayIp); + // 获取近期系统访问记录 + List<Map<String, Object>> lastSevenVisitCount = this.loginLogService.findLastSevenDaysVisitCount(null); + data.put("lastSevenVisitCount", lastSevenVisitCount); + User param = new User(); + param.setUsername(username); + List<Map<String, Object>> lastSevenUserVisitCount = this.loginLogService.findLastSevenDaysVisitCount(param); + data.put("lastSevenUserVisitCount", lastSevenUserVisitCount); + return new FebsResponse().success().data(data); + } + + @GetMapping("images/captcha") + @Limit(key = "get_captcha", period = 60, count = 10, name = "获取验证码", prefix = "limit") + public void captcha(HttpServletRequest request, HttpServletResponse response) throws IOException, FebsException { + validateCodeService.create(request, response); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/MenuController.java b/src/main/java/cc/mrbird/febs/system/controller/MenuController.java new file mode 100644 index 0000000..363659b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/MenuController.java @@ -0,0 +1,83 @@ +package cc.mrbird.febs.system.controller; + + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.MenuTree; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.system.entity.Menu; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.service.IMenuService; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.util.List; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("menu") +public class MenuController extends BaseController { + + private final IMenuService menuService; + + @GetMapping("{username}") + public FebsResponse getUserMenus(@NotBlank(message = "{required}") @PathVariable String username) throws FebsException { + User currentUser = getCurrentUser(); + if (!StringUtils.equalsIgnoreCase(username, currentUser.getUsername())) { + throw new FebsException("您无权获取别人的菜单"); + } + MenuTree<Menu> userMenus = this.menuService.findUserMenus(username); + return new FebsResponse().data(userMenus); + } + + @GetMapping("tree") + @ControllerEndpoint(exceptionMessage = "获取菜单树失败") + public FebsResponse getMenuTree(Menu menu) { + MenuTree<Menu> menus = this.menuService.findMenus(menu); + return new FebsResponse().success().data(menus.getChilds()); + } + + @PostMapping + @RequiresPermissions("menu:add") + @ControllerEndpoint(operation = "新增菜单/按钮", exceptionMessage = "新增菜单/按钮失败") + public FebsResponse addMenu(@Valid Menu menu) { + this.menuService.createMenu(menu); + return new FebsResponse().success(); + } + + @GetMapping("delete/{menuIds}") + @RequiresPermissions("menu:delete") + @ControllerEndpoint(operation = "删除菜单/按钮", exceptionMessage = "删除菜单/按钮失败") + public FebsResponse deleteMenus(@NotBlank(message = "{required}") @PathVariable String menuIds) { + this.menuService.deleteMenus(menuIds); + return new FebsResponse().success(); + } + + @PostMapping("update") + @RequiresPermissions("menu:update") + @ControllerEndpoint(operation = "修改菜单/按钮", exceptionMessage = "修改菜单/按钮失败") + public FebsResponse updateMenu(@Valid Menu menu) { + this.menuService.updateMenu(menu); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("menu:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(Menu menu, HttpServletResponse response) { + List<Menu> menus = this.menuService.findMenuList(menu); + ExcelKit.$Export(Menu.class, response).downXlsx(menus, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/RoleController.java b/src/main/java/cc/mrbird/febs/system/controller/RoleController.java new file mode 100644 index 0000000..71e9235 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/RoleController.java @@ -0,0 +1,78 @@ +package cc.mrbird.febs.system.controller; + + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.system.entity.Role; +import cc.mrbird.febs.system.service.IRoleService; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Slf4j +@RestController +@RequiredArgsConstructor +@RequestMapping("role") +public class RoleController extends BaseController { + + private final IRoleService roleService; + + @GetMapping + public FebsResponse getAllRoles(Role role) { + return new FebsResponse().success().data(roleService.findRoles(role)); + } + + @GetMapping("list") + @RequiresPermissions("role:view") + public FebsResponse roleList(Role role, QueryRequest request) { + Map<String, Object> dataTable = getDataTable(this.roleService.findRoles(role, request)); + return new FebsResponse().success().data(dataTable); + } + + @PostMapping + @RequiresPermissions("role:add") + @ControllerEndpoint(operation = "新增角色", exceptionMessage = "新增角色失败") + public FebsResponse addRole(@Valid Role role) { + this.roleService.createRole(role); + return new FebsResponse().success(); + } + + @GetMapping("delete/{roleIds}") + @RequiresPermissions("role:delete") + @ControllerEndpoint(operation = "删除角色", exceptionMessage = "删除角色失败") + public FebsResponse deleteRoles(@NotBlank(message = "{required}") @PathVariable String roleIds) { + this.roleService.deleteRoles(roleIds); + return new FebsResponse().success(); + } + + @PostMapping("update") + @RequiresPermissions("role:update") + @ControllerEndpoint(operation = "修改角色", exceptionMessage = "修改角色失败") + public FebsResponse updateRole(Role role) { + this.roleService.updateRole(role); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("role:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(QueryRequest queryRequest, Role role, HttpServletResponse response) throws FebsException { + List<Role> roles = this.roleService.findRoles(role, queryRequest).getRecords(); + ExcelKit.$Export(Role.class, response).downXlsx(roles, false); + } + +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/UserController.java b/src/main/java/cc/mrbird/febs/system/controller/UserController.java new file mode 100644 index 0000000..371e031 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/UserController.java @@ -0,0 +1,137 @@ +package cc.mrbird.febs.system.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.Md5Util; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.service.IUserService; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.wuwenze.poi.ExcelKit; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import java.util.List; +import java.util.Map; + +/** + * @author MrBird + */ +@Slf4j +@Validated +@RestController +@RequiredArgsConstructor +@RequestMapping("user") +public class UserController extends BaseController { + + private final IUserService userService; + + @GetMapping("{username}") + public User getUser(@NotBlank(message = "{required}") @PathVariable String username) { + return this.userService.findUserDetailList(username); + } + + @GetMapping("check/{username}") + public boolean checkUserName(@NotBlank(message = "{required}") @PathVariable String username, String userId) { + return this.userService.findByName(username) == null || StringUtils.isNotBlank(userId); + } + + @GetMapping("list") + @RequiresPermissions("user:view") + public FebsResponse userList(User user, QueryRequest request) { + Map<String, Object> dataTable = getDataTable(this.userService.findUserDetailList(user, request)); + return new FebsResponse().success().data(dataTable); + } + + @PostMapping + @RequiresPermissions("user:add") + @ControllerEndpoint(operation = "新增用户", exceptionMessage = "新增用户失败") + public FebsResponse addUser(@Valid User user) { + this.userService.createUser(user); + return new FebsResponse().success(); + } + + @GetMapping("delete/{userIds}") + @RequiresPermissions("user:delete") + @ControllerEndpoint(operation = "删除用户", exceptionMessage = "删除用户失败") + public FebsResponse deleteUsers(@NotBlank(message = "{required}") @PathVariable String userIds) { + String[] ids = userIds.split(StringPool.COMMA); + this.userService.deleteUsers(ids); + return new FebsResponse().success(); + } + + @PostMapping("update") + @RequiresPermissions("user:update") + @ControllerEndpoint(operation = "修改用户", exceptionMessage = "修改用户失败") + public FebsResponse updateUser(@Valid User user) { + if (user.getUserId() == null) { + throw new FebsException("用户ID为空"); + } + this.userService.updateUser(user); + return new FebsResponse().success(); + } + + @PostMapping("password/reset/{usernames}") + @RequiresPermissions("user:password:reset") + @ControllerEndpoint(exceptionMessage = "重置用户密码失败") + public FebsResponse resetPassword(@NotBlank(message = "{required}") @PathVariable String usernames) { + String[] usernameArr = usernames.split(StringPool.COMMA); + this.userService.resetPassword(usernameArr); + return new FebsResponse().success(); + } + + @PostMapping("password/update") + @ControllerEndpoint(exceptionMessage = "修改密码失败") + public FebsResponse updatePassword( + @NotBlank(message = "{required}") String oldPassword, + @NotBlank(message = "{required}") String newPassword) { + User user = getCurrentUser(); + if (!StringUtils.equals(user.getPassword(), Md5Util.encrypt(user.getUsername(), oldPassword))) { + throw new FebsException("原密码不正确"); + } + userService.updatePassword(user.getUsername(), newPassword); + return new FebsResponse().success(); + } + + @GetMapping("avatar/{image}") + @ControllerEndpoint(exceptionMessage = "修改头像失败") + public FebsResponse updateAvatar(@NotBlank(message = "{required}") @PathVariable String image) { + User user = getCurrentUser(); + this.userService.updateAvatar(user.getUsername(), image); + return new FebsResponse().success(); + } + + @PostMapping("theme/update") + @ControllerEndpoint(exceptionMessage = "修改系统配置失败") + public FebsResponse updateTheme(String theme, String isTab) { + User user = getCurrentUser(); + this.userService.updateTheme(user.getUsername(), theme, isTab); + return new FebsResponse().success(); + } + + @PostMapping("profile/update") + @ControllerEndpoint(exceptionMessage = "修改个人信息失败") + public FebsResponse updateProfile(User user) throws FebsException { + User currentUser = getCurrentUser(); + user.setUserId(currentUser.getUserId()); + this.userService.updateProfile(user); + return new FebsResponse().success(); + } + + @GetMapping("excel") + @RequiresPermissions("user:export") + @ControllerEndpoint(exceptionMessage = "导出Excel失败") + public void export(QueryRequest queryRequest, User user, HttpServletResponse response) { + List<User> users = this.userService.findUserDetailList(user, queryRequest).getRecords(); + ExcelKit.$Export(User.class, response).downXlsx(users, false); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/controller/ViewController.java b/src/main/java/cc/mrbird/febs/system/controller/ViewController.java new file mode 100644 index 0000000..8014aa0 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/controller/ViewController.java @@ -0,0 +1,179 @@ +package cc.mrbird.febs.system.controller; + +import cc.mrbird.febs.common.authentication.ShiroHelper; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.utils.DateUtil; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.service.IUserDataPermissionService; +import cc.mrbird.febs.system.service.IUserService; +import lombok.RequiredArgsConstructor; +import org.apache.shiro.authz.AuthorizationInfo; +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.apache.shiro.session.ExpiredSessionException; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.servlet.ModelAndView; + +import javax.servlet.http.HttpServletRequest; + +/** + * @author MrBird + */ +@Controller("systemView") +@RequiredArgsConstructor +public class ViewController extends BaseController { + + private final IUserService userService; + private final ShiroHelper shiroHelper; + private final IUserDataPermissionService userDataPermissionService; + + @GetMapping("login") + @ResponseBody + public Object login(HttpServletRequest request) { + if (FebsUtil.isAjaxRequest(request)) { + throw new ExpiredSessionException(); + } else { + ModelAndView mav = new ModelAndView(); + mav.setViewName(FebsUtil.view("login")); + return mav; + } + } + + @GetMapping("unauthorized") + public String unauthorized() { + return FebsUtil.view("error/403"); + } + + + @GetMapping("/") + public String redirectIndex() { + return "redirect:/index"; + } + + @GetMapping("index") + public String index(Model model) { + AuthorizationInfo authorizationInfo = shiroHelper.getCurrentUserAuthorizationInfo(); + User user = super.getCurrentUser(); + User currentUserDetail = userService.findByName(user.getUsername()); + currentUserDetail.setPassword("It's a secret"); + model.addAttribute("user", currentUserDetail); + model.addAttribute("permissions", authorizationInfo.getStringPermissions()); + model.addAttribute("roles", authorizationInfo.getRoles()); + return "index"; + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "layout") + public String layout() { + return FebsUtil.view("layout"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "password/update") + public String passwordUpdate() { + return FebsUtil.view("system/user/passwordUpdate"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "user/profile") + public String userProfile() { + return FebsUtil.view("system/user/userProfile"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "user/avatar") + public String userAvatar() { + return FebsUtil.view("system/user/avatar"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "user/profile/update") + public String profileUpdate() { + return FebsUtil.view("system/user/profileUpdate"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/user") + @RequiresPermissions("user:view") + public String systemUser() { + return FebsUtil.view("system/user/user"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/add") + @RequiresPermissions("user:add") + public String systemUserAdd() { + return FebsUtil.view("system/user/userAdd"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/detail/{username}") + @RequiresPermissions("user:view") + public String systemUserDetail(@PathVariable String username, Model model) { + resolveUserModel(username, model, true); + return FebsUtil.view("system/user/userDetail"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/user/update/{username}") + @RequiresPermissions("user:update") + public String systemUserUpdate(@PathVariable String username, Model model) { + resolveUserModel(username, model, false); + return FebsUtil.view("system/user/userUpdate"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/role") + @RequiresPermissions("role:view") + public String systemRole() { + return FebsUtil.view("system/role/role"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/menu") + @RequiresPermissions("menu:view") + public String systemMenu() { + return FebsUtil.view("system/menu/menu"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "system/dept") + @RequiresPermissions("dept:view") + public String systemDept() { + return FebsUtil.view("system/dept/dept"); + } + + @RequestMapping(FebsConstant.VIEW_PREFIX + "index") + public String pageIndex() { + return FebsUtil.view("index"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "404") + public String error404() { + return FebsUtil.view("error/404"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "403") + public String error403() { + return FebsUtil.view("error/403"); + } + + @GetMapping(FebsConstant.VIEW_PREFIX + "500") + public String error500() { + return FebsUtil.view("error/500"); + } + + private void resolveUserModel(String username, Model model, Boolean transform) { + User user = userService.findByName(username); + String deptIds = userDataPermissionService.findByUserId(String.valueOf(user.getUserId())); + user.setDeptIds(deptIds); + model.addAttribute("user", user); + if (transform) { + String sex = user.getSex(); + if (User.SEX_MALE.equals(sex)) { + user.setSex("男"); + } else if (User.SEX_FEMALE.equals(sex)) { + user.setSex("女"); + } else { + user.setSex("保密"); + } + } + if (user.getLastLoginTime() != null) { + model.addAttribute("lastLoginTime", DateUtil.getDateFormat(user.getLastLoginTime(), DateUtil.FULL_TIME_SPLIT_PATTERN)); + } + } +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/Dept.java b/src/main/java/cc/mrbird/febs/system/entity/Dept.java new file mode 100644 index 0000000..942c596 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/Dept.java @@ -0,0 +1,67 @@ +package cc.mrbird.febs.system.entity; + +import cc.mrbird.febs.common.converter.TimeConverter; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_dept") +@Excel("部门信息表") +public class Dept implements Serializable { + + private static final long serialVersionUID = 5702271568363798328L; + + public static final Long TOP_NODE = 0L; + + /** + * 部门 ID + */ + @TableId(value = "DEPT_ID", type = IdType.AUTO) + private Long deptId; + + /** + * 上级部门 ID + */ + @TableField("PARENT_ID") + private Long parentId; + + /** + * 部门名称 + */ + @TableField("DEPT_NAME") + @NotBlank(message = "{required}") + @Size(max = 10, message = "{noMoreThan}") + @ExcelField(value = "部门名称") + private String deptName; + + /** + * 排序 + */ + @TableField("ORDER_NUM") + private Long orderNum; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + @ExcelField(value = "创建时间", writeConverter = TimeConverter.class) + private Date createTime; + + @TableField("MODIFY_TIME") + @ExcelField(value = "修改时间", writeConverter = TimeConverter.class) + private Date modifyTime; + +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/Menu.java b/src/main/java/cc/mrbird/febs/system/entity/Menu.java new file mode 100644 index 0000000..d4c8d5d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/Menu.java @@ -0,0 +1,112 @@ +package cc.mrbird.febs.system.entity; + +import cc.mrbird.febs.common.converter.TimeConverter; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_menu") +@Excel("菜单信息表") +public class Menu implements Serializable { + + private static final long serialVersionUID = 8571011372410167901L; + + /** + * 菜单 + */ + public static final String TYPE_MENU = "0"; + /** + * 按钮 + */ + public static final String TYPE_BUTTON = "1"; + + public static final Long TOP_NODE = 0L; + + /** + * 菜单/按钮ID + */ + @TableId(value = "MENU_ID", type = IdType.AUTO) + private Long menuId; + + /** + * 上级菜单ID + */ + @TableField("PARENT_ID") + private Long parentId; + + /** + * 菜单/按钮名称 + */ + @TableField("MENU_NAME") + @NotBlank(message = "{required}") + @Size(max = 10, message = "{noMoreThan}") + @ExcelField(value = "名称") + private String menuName; + + /** + * 菜单URL + */ + @TableField("URL") + @Size(max = 50, message = "{noMoreThan}") + @ExcelField(value = "URL") + private String url; + + /** + * 权限标识 + */ + @TableField("PERMS") + @Size(max = 50, message = "{noMoreThan}") + @ExcelField(value = "权限") + private String perms; + + /** + * 图标 + */ + @TableField("ICON") + @Size(max = 50, message = "{noMoreThan}") + @ExcelField(value = "图标") + private String icon; + + /** + * 类型 0菜单 1按钮 + */ + @TableField("TYPE") + @NotBlank(message = "{required}") + @ExcelField(value = "类型", writeConverterExp = "0=按钮,1=菜单") + private String type; + + /** + * 排序 + */ + @TableField("ORDER_NUM") + private Long orderNum; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + @ExcelField(value = "创建时间", writeConverter = TimeConverter.class) + private Date createTime; + + /** + * 修改时间 + */ + @TableField("MODIFY_TIME") + @ExcelField(value = "修改时间", writeConverter = TimeConverter.class) + private Date modifyTime; + + +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/Role.java b/src/main/java/cc/mrbird/febs/system/entity/Role.java new file mode 100644 index 0000000..5bf85df --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/Role.java @@ -0,0 +1,67 @@ +package cc.mrbird.febs.system.entity; + +import cc.mrbird.febs.common.converter.TimeConverter; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_role") +@Excel("角色信息表") +public class Role implements Serializable { + + private static final long serialVersionUID = -4493960686192269860L; + /** + * 角色ID + */ + @TableId(value = "ROLE_ID", type = IdType.AUTO) + private Long roleId; + + /** + * 角色名称 + */ + @TableField("ROLE_NAME") + @ExcelField(value = "角色名称") + @NotBlank(message = "{required}") + @Size(max = 10, message = "{noMoreThan}") + private String roleName; + + /** + * 角色描述 + */ + @TableField("REMARK") + @ExcelField(value = "角色描述") + @Size(max = 50, message = "{noMoreThan}") + private String remark; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + @ExcelField(value = "创建时间", writeConverter = TimeConverter.class) + private Date createTime; + + /** + * 修改时间 + */ + @TableField("MODIFY_TIME") + @ExcelField(value = "修改时间", writeConverter = TimeConverter.class) + private Date modifyTime; + + /** + * 角色对应的菜单(按钮) id + */ + private transient String menuIds; +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/RoleMenu.java b/src/main/java/cc/mrbird/febs/system/entity/RoleMenu.java new file mode 100644 index 0000000..3277ef9 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/RoleMenu.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.system.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +@TableName("t_role_menu") +public class RoleMenu implements Serializable { + + private static final long serialVersionUID = -5200596408874170216L; + /** + * 角色ID + */ + @TableField("ROLE_ID") + private Long roleId; + + /** + * 菜单/按钮ID + */ + @TableField("MENU_ID") + private Long menuId; + + +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/Test.java b/src/main/java/cc/mrbird/febs/system/entity/Test.java new file mode 100644 index 0000000..7519087 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/Test.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.system.entity; + +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +@TableName("t_test") +public class Test implements Serializable { + + private static final long serialVersionUID = -2510534697977648681L; + private String name; + private int age; + +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/User.java b/src/main/java/cc/mrbird/febs/system/entity/User.java new file mode 100644 index 0000000..81e0987 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/User.java @@ -0,0 +1,214 @@ +package cc.mrbird.febs.system.entity; + +import cc.mrbird.febs.common.annotation.Desensitization; +import cc.mrbird.febs.common.annotation.IsMobile; +import cc.mrbird.febs.common.converter.TimeConverter; +import cc.mrbird.febs.common.entity.DesensitizationType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import com.fasterxml.jackson.annotation.JsonFormat; +import com.wuwenze.poi.annotation.Excel; +import com.wuwenze.poi.annotation.ExcelField; +import lombok.Data; + +import javax.validation.constraints.Email; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.Size; +import java.io.Serializable; +import java.util.Date; + +/** + * @author MrBird + */ +@Data +@TableName("t_user") +@Excel("用户信息表") +public class User implements Serializable { + + private static final long serialVersionUID = -4352868070794165001L; + + /** + * 用户状态:有效 + */ + public static final String STATUS_VALID = "1"; + /** + * 用户状态:锁定 + */ + public static final String STATUS_LOCK = "0"; + /** + * 默认头像 + */ + public static final String DEFAULT_AVATAR = "default.jpg"; + /** + * 默认密码 + */ + public static final String DEFAULT_PASSWORD = "1234qwer"; + /** + * 性别男 + */ + public static final String SEX_MALE = "0"; + /** + * 性别女 + */ + public static final String SEX_FEMALE = "1"; + /** + * 性别保密 + */ + public static final String SEX_UNKNOW = "2"; + /** + * 黑色主题 + */ + public static final String THEME_BLACK = "black"; + /** + * 白色主题 + */ + public static final String THEME_WHITE = "white"; + /** + * TAB开启 + */ + public static final String TAB_OPEN = "1"; + /** + * TAB关闭 + */ + public static final String TAB_CLOSE = "0"; + + + /** + * 用户 ID + */ + @TableId(value = "USER_ID", type = IdType.AUTO) + private Long userId; + + /** + * 用户名 + */ + @TableField("USERNAME") + @Size(min = 4, max = 10, message = "{range}") + @ExcelField(value = "用户名") + private String username; + + /** + * 密码 + */ + @TableField("PASSWORD") + private String password; + + /** + * 部门 ID + */ + @TableField("DEPT_ID") + private Long deptId; + + /** + * 邮箱 + */ + @TableField("EMAIL") + @Size(max = 50, message = "{noMoreThan}") + @Email(message = "{email}") + @ExcelField(value = "邮箱") + private String email; + + /** + * 联系电话 + */ + @TableField("MOBILE") + @IsMobile(message = "{mobile}") + @ExcelField(value = "联系电话") + @Desensitization(type = DesensitizationType.PHONE) + private String mobile; + + /** + * 状态 0锁定 1有效 + */ + @TableField("STATUS") + @NotBlank(message = "{required}") + @ExcelField(value = "状态", writeConverterExp = "0=锁定,1=有效") + private String status; + + /** + * 创建时间 + */ + @TableField("CREATE_TIME") + @ExcelField(value = "创建时间", writeConverter = TimeConverter.class) + private Date createTime; + + /** + * 修改时间 + */ + @TableField("MODIFY_TIME") + @ExcelField(value = "修改时间", writeConverter = TimeConverter.class) + private Date modifyTime; + + /** + * 最近访问时间 + */ + @TableField("LAST_LOGIN_TIME") + @ExcelField(value = "最近访问时间", writeConverter = TimeConverter.class) + @JsonFormat(pattern = "yyyy年MM月dd日 HH时mm分ss秒", timezone = "GMT+8") + private Date lastLoginTime; + + /** + * 性别 0男 1女 2 保密 + */ + @TableField("SSEX") + @NotBlank(message = "{required}") + @ExcelField(value = "性别", writeConverterExp = "0=男,1=女,2=保密") + private String sex; + + /** + * 头像 + */ + @TableField("AVATAR") + private String avatar; + + /** + * 主题 + */ + @TableField("THEME") + private String theme; + + /** + * 是否开启 tab 0开启,1关闭 + */ + @TableField("IS_TAB") + private String isTab; + + /** + * 描述 + */ + @TableField("DESCRIPTION") + @Size(max = 100, message = "{noMoreThan}") + @ExcelField(value = "个人描述") + private String description; + + /** + * 部门名称 + */ + @ExcelField(value = "部门") + @TableField(exist = false) + private String deptName; + + @TableField(exist = false) + private String createTimeFrom; + @TableField(exist = false) + private String createTimeTo; + /** + * 角色 ID + */ + @NotBlank(message = "{required}") + @TableField(exist = false) + private String roleId; + + @ExcelField(value = "角色") + @TableField(exist = false) + private String roleName; + + @TableField(exist = false) + private String deptIds; + + public Long getId() { + return userId; + } +} diff --git a/src/main/java/cc/mrbird/febs/system/entity/UserDataPermission.java b/src/main/java/cc/mrbird/febs/system/entity/UserDataPermission.java new file mode 100644 index 0000000..5121d04 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/UserDataPermission.java @@ -0,0 +1,19 @@ +package cc.mrbird.febs.system.entity; + +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +/** + * @author MrBird + */ +@Data +@TableName("t_user_data_permission") +public class UserDataPermission { + + @TableId("USER_ID") + private Long userId; + @TableId("DEPT_ID") + private Long deptId; + +} \ No newline at end of file diff --git a/src/main/java/cc/mrbird/febs/system/entity/UserRole.java b/src/main/java/cc/mrbird/febs/system/entity/UserRole.java new file mode 100644 index 0000000..c7b81f4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/entity/UserRole.java @@ -0,0 +1,30 @@ +package cc.mrbird.febs.system.entity; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.io.Serializable; + +/** + * @author MrBird + */ +@Data +@TableName("t_user_role") +public class UserRole implements Serializable { + + private static final long serialVersionUID = 2354394771912648574L; + /** + * 用户ID + */ + @TableField("USER_ID") + private Long userId; + + /** + * 角色ID + */ + @TableField("ROLE_ID") + private Long roleId; + + +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/DeptMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/DeptMapper.java new file mode 100644 index 0000000..075e92f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/DeptMapper.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.Dept; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface DeptMapper extends BaseMapper<Dept> { +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/MenuMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/MenuMapper.java new file mode 100644 index 0000000..2afef42 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/MenuMapper.java @@ -0,0 +1,28 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.Menu; +import com.baomidou.mybatisplus.annotation.SqlParser; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +import java.util.List; + +/** + * @author MrBird + */ +public interface MenuMapper extends BaseMapper<Menu> { + /** + * 查找用户权限集 + * + * @param username 用户名 + * @return 用户权限集合 + */ + List<Menu> findUserPermissions(String username); + + /** + * 查找用户菜单集合 + * + * @param username 用户名 + * @return 用户菜单集合 + */ + List<Menu> findUserMenus(String username); +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/RoleMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/RoleMapper.java new file mode 100644 index 0000000..f4a9074 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/RoleMapper.java @@ -0,0 +1,33 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.Role; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author MrBird + */ +public interface RoleMapper extends BaseMapper<Role> { + Long countRole(@Param("role") Role role); + + /** + * 通过用户名查找用户角色 + * + * @param username 用户名 + * @return 用户角色集合 + */ + List<Role> findUserRole(String username); + + /** + * 查找角色详情 + * + * @param page 分页 + * @param role 角色 + * @return IPage<User> + */ + <T> IPage<Role> findRolePage(Page<T> page, @Param("role") Role role); +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/RoleMenuMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/RoleMenuMapper.java new file mode 100644 index 0000000..9b94d31 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/RoleMenuMapper.java @@ -0,0 +1,10 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.RoleMenu; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface RoleMenuMapper extends BaseMapper<RoleMenu> { +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/UserDataPermissionMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/UserDataPermissionMapper.java new file mode 100644 index 0000000..6b8a2f7 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/UserDataPermissionMapper.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.UserDataPermission; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface UserDataPermissionMapper extends BaseMapper<UserDataPermission> { + +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/UserMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/UserMapper.java new file mode 100644 index 0000000..cb5a06d --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/UserMapper.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author MrBird + */ +public interface UserMapper extends BaseMapper<User> { + + /** + * 通过用户名查找用户 + * + * @param username 用户名 + * @return 用户 + */ + User findByName(String username); + + /** + * 查找用户详细信息 + * + * @param page 分页对象 + * @param user 用户对象,用于传递查询条件 + * @return Ipage + */ + <T> IPage<User> findUserDetailPage(Page<T> page, @Param("user") User user); + + long countUserDetail(@Param("user") User user); + + /** + * 查找用户详细信息 + * + * @param user 用户对象,用于传递查询条件 + * @return List<User> + */ + List<User> findUserDetail(@Param("user") User user); + +} diff --git a/src/main/java/cc/mrbird/febs/system/mapper/UserRoleMapper.java b/src/main/java/cc/mrbird/febs/system/mapper/UserRoleMapper.java new file mode 100644 index 0000000..2e4963e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/mapper/UserRoleMapper.java @@ -0,0 +1,11 @@ +package cc.mrbird.febs.system.mapper; + +import cc.mrbird.febs.system.entity.UserRole; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * @author MrBird + */ +public interface UserRoleMapper extends BaseMapper<UserRole> { + +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IDeptService.java b/src/main/java/cc/mrbird/febs/system/service/IDeptService.java new file mode 100644 index 0000000..952099e --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IDeptService.java @@ -0,0 +1,59 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.common.entity.DeptTree; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.system.entity.Dept; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IDeptService extends IService<Dept> { + + /** + * 获取部门树(下拉选使用) + * + * @return 部门树集合 + */ + List<DeptTree<Dept>> findDepts(); + + /** + * 获取部门列表(树形列表) + * + * @param dept 部门对象(传递查询参数) + * @return 部门树 + */ + List<DeptTree<Dept>> findDepts(Dept dept); + + /** + * 获取部门树(供Excel导出) + * + * @param dept 部门对象(传递查询参数) + * @param request QueryRequest + * @return List<Dept> + */ + List<Dept> findDepts(Dept dept, QueryRequest request); + + /** + * 新增部门 + * + * @param dept 部门对象 + */ + void createDept(Dept dept); + + /** + * 修改部门 + * + * @param dept 部门对象 + */ + void updateDept(Dept dept); + + /** + * 删除部门 + * + * @param deptIds 部门 ID集合 + */ + void deleteDepts(String[] deptIds); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IMenuService.java b/src/main/java/cc/mrbird/febs/system/service/IMenuService.java new file mode 100644 index 0000000..d6e0eab --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IMenuService.java @@ -0,0 +1,66 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.common.entity.MenuTree; +import cc.mrbird.febs.system.entity.Menu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IMenuService extends IService<Menu> { + + /** + * 查找用户权限集 + * + * @param username 用户名 + * @return 用户权限集合 + */ + List<Menu> findUserPermissions(String username); + + /** + * 查找用户菜单集合 + * + * @param username 用户名 + * @return 用户菜单集合 + */ + MenuTree<Menu> findUserMenus(String username); + + /** + * 查找所有的菜单/按钮 (树形结构) + * + * @param menu menu + * @return MenuTree<Menu> + */ + MenuTree<Menu> findMenus(Menu menu); + + /** + * 查找所有的菜单/按钮 + * + * @param menu menu + * @return MenuTree<Menu> + */ + List<Menu> findMenuList(Menu menu); + + /** + * 新增菜单(按钮) + * + * @param menu 菜单(按钮)对象 + */ + void createMenu(Menu menu); + + /** + * 修改菜单(按钮) + * + * @param menu 菜单(按钮)对象 + */ + void updateMenu(Menu menu); + + /** + * 删除菜单(按钮) + * + * @param menuIds 菜单(按钮)id + */ + void deleteMenus(String menuIds); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IRoleMenuService.java b/src/main/java/cc/mrbird/febs/system/service/IRoleMenuService.java new file mode 100644 index 0000000..05adebf --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IRoleMenuService.java @@ -0,0 +1,26 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.system.entity.RoleMenu; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IRoleMenuService extends IService<RoleMenu> { + + /** + * 通过角色 id 删除 + * + * @param roleIds 角色 id + */ + void deleteRoleMenusByRoleId(List<String> roleIds); + + /** + * 通过菜单(按钮)id 删除 + * + * @param menuIds 菜单(按钮)id + */ + void deleteRoleMenusByMenuId(List<String> menuIds); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IRoleService.java b/src/main/java/cc/mrbird/febs/system/service/IRoleService.java new file mode 100644 index 0000000..a1e3dc5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IRoleService.java @@ -0,0 +1,70 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.system.entity.Role; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IRoleService extends IService<Role> { + + + /** + * 通过用户名查找用户角色 + * + * @param username 用户名 + * @return 用户角色集合 + */ + List<Role> findUserRole(String username); + + /** + * 查找所有角色 + * + * @param role 角色对象(用于传递查询条件) + * @return 角色集合 + */ + List<Role> findRoles(Role role); + + /** + * 查找所有角色(分页) + * + * @param role 角色对象(用于传递查询条件) + * @param request request + * @return IPage + */ + IPage<Role> findRoles(Role role, QueryRequest request); + + /** + * 通过角色名称查找相应角色 + * + * @param roleName 角色名称 + * @return 角色 + */ + Role findByName(String roleName); + + /** + * 新增角色 + * + * @param role 待新增的角色 + */ + void createRole(Role role); + + /** + * 修改角色 + * + * @param role 待修改的角色 + */ + void updateRole(Role role); + + + /** + * 删除角色 + * + * @param roleIds 待删除角色的 id + */ + void deleteRoles(String roleIds); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IUserDataPermissionService.java b/src/main/java/cc/mrbird/febs/system/service/IUserDataPermissionService.java new file mode 100644 index 0000000..236b1c5 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IUserDataPermissionService.java @@ -0,0 +1,36 @@ +package cc.mrbird.febs.system.service; + + +import cc.mrbird.febs.system.entity.UserDataPermission; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IUserDataPermissionService extends IService<UserDataPermission> { + + /** + * 通过部门ID删除关联关系 + * + * @param deptIds 部门id + */ + void deleteByDeptIds(List<String> deptIds); + + /** + * 通过用户ID删除关联关系 + * + * @param userIds 用户id + */ + void deleteByUserIds(String[] userIds); + + /** + * 通过用户ID查找关联关系 + * + * @param userId 用户id + * @return 关联关系 + */ + String findByUserId(String userId); + +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IUserRoleService.java b/src/main/java/cc/mrbird/febs/system/service/IUserRoleService.java new file mode 100644 index 0000000..b1de83f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IUserRoleService.java @@ -0,0 +1,26 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.system.entity.UserRole; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * @author MrBird + */ +public interface IUserRoleService extends IService<UserRole> { + + /** + * 通过角色 id 删除 + * + * @param roleIds 角色 id + */ + void deleteUserRolesByRoleId(List<String> roleIds); + + /** + * 通过用户 id 删除 + * + * @param userIds 用户 id + */ + void deleteUserRolesByUserId(List<String> userIds); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/IUserService.java b/src/main/java/cc/mrbird/febs/system/service/IUserService.java new file mode 100644 index 0000000..3b9291f --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/IUserService.java @@ -0,0 +1,115 @@ +package cc.mrbird.febs.system.service; + +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.system.entity.User; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.springframework.scheduling.annotation.Async; + +/** + * @author MrBird + */ +public interface IUserService extends IService<User> { + + /** + * 通过用户名查找用户 + * + * @param username 用户名 + * @return 用户 + */ + User findByName(String username); + + /** + * 查找用户详细信息 + * + * @param request request + * @param user 用户对象,用于传递查询条件 + * @return IPage + */ + IPage<User> findUserDetailList(User user, QueryRequest request); + + /** + * 通过用户名查找用户详细信息 + * + * @param username 用户名 + * @return 用户信息 + */ + User findUserDetailList(String username); + + /** + * 更新用户登录时间 + * + * @param username 用户名 + */ + @Async(FebsConstant.ASYNC_POOL) + void updateLoginTime(String username); + + /** + * 新增用户 + * + * @param user user + */ + void createUser(User user); + + /** + * 删除用户 + * + * @param userIds 用户 id数组 + */ + void deleteUsers(String[] userIds); + + /** + * 修改用户 + * + * @param user user + */ + void updateUser(User user); + + /** + * 重置密码 + * + * @param usernames 用户名数组 + */ + void resetPassword(String[] usernames); + + /** + * 注册用户 + * + * @param username 用户名 + * @param password 密码 + */ + void regist(String username, String password); + + /** + * 修改密码 + * + * @param username 用户名 + * @param password 新密码 + */ + void updatePassword(String username, String password); + + /** + * 更新用户头像 + * + * @param username 用户名 + * @param avatar 用户头像 + */ + void updateAvatar(String username, String avatar); + + /** + * 修改用户系统配置(个性化配置) + * + * @param username 用户名称 + * @param theme 主题风格 + * @param isTab 是否开启 TAB + */ + void updateTheme(String username, String theme, String isTab); + + /** + * 更新个人信息 + * + * @param user 个人信息 + */ + void updateProfile(User user); +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/DeptServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/DeptServiceImpl.java new file mode 100644 index 0000000..d18e79b --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/DeptServiceImpl.java @@ -0,0 +1,119 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.common.entity.DeptTree; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.common.utils.TreeUtil; +import cc.mrbird.febs.system.entity.Dept; +import cc.mrbird.febs.system.mapper.DeptMapper; +import cc.mrbird.febs.system.service.IDeptService; +import cc.mrbird.febs.system.service.IUserDataPermissionService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements IDeptService { + + private final IUserDataPermissionService userDataPermissionService; + + @Override + public List<DeptTree<Dept>> findDepts() { + List<Dept> depts = this.baseMapper.selectList(new QueryWrapper<>()); + List<DeptTree<Dept>> trees = this.convertDepts(depts); + return TreeUtil.buildDeptTree(trees); + } + + @Override + public List<DeptTree<Dept>> findDepts(Dept dept) { + QueryWrapper<Dept> queryWrapper = new QueryWrapper<>(); + + if (StringUtils.isNotBlank(dept.getDeptName())) { + queryWrapper.lambda().eq(Dept::getDeptName, dept.getDeptName()); + } + queryWrapper.lambda().orderByAsc(Dept::getOrderNum); + + List<Dept> depts = this.baseMapper.selectList(queryWrapper); + List<DeptTree<Dept>> trees = this.convertDepts(depts); + return TreeUtil.buildDeptTree(trees); + } + + @Override + public List<Dept> findDepts(Dept dept, QueryRequest request) { + QueryWrapper<Dept> queryWrapper = new QueryWrapper<>(); + + if (StringUtils.isNotBlank(dept.getDeptName())) { + queryWrapper.lambda().eq(Dept::getDeptName, dept.getDeptName()); + } + SortUtil.handleWrapperSort(request, queryWrapper, "orderNum", FebsConstant.ORDER_ASC, true); + return this.baseMapper.selectList(queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createDept(Dept dept) { + Long parentId = dept.getParentId(); + if (parentId == null) { + dept.setParentId(Dept.TOP_NODE); + } + dept.setCreateTime(new Date()); + this.save(dept); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateDept(Dept dept) { + dept.setModifyTime(new Date()); + this.baseMapper.updateById(dept); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteDepts(String[] deptIds) { + this.delete(Arrays.asList(deptIds)); + } + + private List<DeptTree<Dept>> convertDepts(List<Dept> depts) { + List<DeptTree<Dept>> trees = new ArrayList<>(); + depts.forEach(dept -> { + DeptTree<Dept> tree = new DeptTree<>(); + tree.setId(String.valueOf(dept.getDeptId())); + tree.setParentId(String.valueOf(dept.getParentId())); + tree.setName(dept.getDeptName()); + tree.setData(dept); + trees.add(tree); + }); + return trees; + } + + private void delete(List<String> deptIds) { + removeByIds(deptIds); + userDataPermissionService.deleteByDeptIds(deptIds); + + LambdaQueryWrapper<Dept> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Dept::getParentId, deptIds); + List<Dept> depts = baseMapper.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(depts)) { + List<String> deptIdList = new ArrayList<>(); + depts.forEach(d -> deptIdList.add(String.valueOf(d.getDeptId()))); + this.delete(deptIdList); + } + } +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/MenuServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/MenuServiceImpl.java new file mode 100644 index 0000000..f8565d4 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/MenuServiceImpl.java @@ -0,0 +1,142 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.common.authentication.ShiroRealm; +import cc.mrbird.febs.common.entity.MenuTree; +import cc.mrbird.febs.common.utils.TreeUtil; +import cc.mrbird.febs.system.entity.Menu; +import cc.mrbird.febs.system.mapper.MenuMapper; +import cc.mrbird.febs.system.service.IMenuService; +import cc.mrbird.febs.system.service.IRoleMenuService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class MenuServiceImpl extends ServiceImpl<MenuMapper, Menu> implements IMenuService { + + private final IRoleMenuService roleMenuService; + private final ShiroRealm shiroRealm; + + @Override + public List<Menu> findUserPermissions(String username) { + return this.baseMapper.findUserPermissions(username); + } + + @Override + public MenuTree<Menu> findUserMenus(String username) { + List<Menu> menus = this.baseMapper.findUserMenus(username); + List<MenuTree<Menu>> trees = this.convertMenus(menus); + return TreeUtil.buildMenuTree(trees); + } + + @Override + public MenuTree<Menu> findMenus(Menu menu) { + QueryWrapper<Menu> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(menu.getMenuName())) { + queryWrapper.lambda().like(Menu::getMenuName, menu.getMenuName()); + } + queryWrapper.lambda().orderByAsc(Menu::getOrderNum); + List<Menu> menus = this.baseMapper.selectList(queryWrapper); + List<MenuTree<Menu>> trees = this.convertMenus(menus); + + return TreeUtil.buildMenuTree(trees); + } + + @Override + public List<Menu> findMenuList(Menu menu) { + QueryWrapper<Menu> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(menu.getMenuName())) { + queryWrapper.lambda().like(Menu::getMenuName, menu.getMenuName()); + } + queryWrapper.lambda().orderByAsc(Menu::getMenuId); + return this.baseMapper.selectList(queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createMenu(Menu menu) { + menu.setCreateTime(new Date()); + this.setMenu(menu); + this.baseMapper.insert(menu); + } + + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateMenu(Menu menu) { + menu.setModifyTime(new Date()); + this.setMenu(menu); + this.baseMapper.updateById(menu); + + shiroRealm.clearCache(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteMenus(String menuIds) { + String[] menuIdsArray = menuIds.split(StringPool.COMMA); + this.delete(Arrays.asList(menuIdsArray)); + + shiroRealm.clearCache(); + } + + private List<MenuTree<Menu>> convertMenus(List<Menu> menus) { + List<MenuTree<Menu>> trees = new ArrayList<>(); + menus.forEach(menu -> { + MenuTree<Menu> tree = new MenuTree<>(); + tree.setId(String.valueOf(menu.getMenuId())); + tree.setParentId(String.valueOf(menu.getParentId())); + tree.setTitle(menu.getMenuName()); + tree.setIcon(menu.getIcon()); + tree.setHref(menu.getUrl()); + tree.setData(menu); + trees.add(tree); + }); + return trees; + } + + private void setMenu(Menu menu) { + if (menu.getParentId() == null) { + menu.setParentId(Menu.TOP_NODE); + } + if (Menu.TYPE_BUTTON.equals(menu.getType())) { + menu.setUrl(null); + menu.setIcon(null); + } + } + + private void delete(List<String> menuIds) { + List<String> list = new ArrayList<>(menuIds); + removeByIds(menuIds); + + LambdaQueryWrapper<Menu> queryWrapper = new LambdaQueryWrapper<>(); + queryWrapper.in(Menu::getParentId, menuIds); + List<Menu> menus = baseMapper.selectList(queryWrapper); + if (CollectionUtils.isNotEmpty(menus)) { + List<String> menuIdList = new ArrayList<>(); + menus.forEach(m -> menuIdList.add(String.valueOf(m.getMenuId()))); + list.addAll(menuIdList); + this.roleMenuService.deleteRoleMenusByMenuId(list); + this.delete(menuIdList); + } else { + this.roleMenuService.deleteRoleMenusByMenuId(list); + } + } +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/RoleMenuServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/RoleMenuServiceImpl.java new file mode 100644 index 0000000..8e3ad33 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/RoleMenuServiceImpl.java @@ -0,0 +1,33 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.system.entity.RoleMenu; +import cc.mrbird.febs.system.mapper.RoleMenuMapper; +import cc.mrbird.febs.system.service.IRoleMenuService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author MrBird + */ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class RoleMenuServiceImpl extends ServiceImpl<RoleMenuMapper, RoleMenu> implements IRoleMenuService { + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRoleMenusByRoleId(List<String> roleIds) { + this.baseMapper.delete(new QueryWrapper<RoleMenu>().lambda().in(RoleMenu::getRoleId, roleIds)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRoleMenusByMenuId(List<String> menuIds) { + this.baseMapper.delete(new QueryWrapper<RoleMenu>().lambda().in(RoleMenu::getMenuId, menuIds)); + } + +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/RoleServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/RoleServiceImpl.java new file mode 100644 index 0000000..b071a09 --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/RoleServiceImpl.java @@ -0,0 +1,113 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.common.authentication.ShiroRealm; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.system.entity.Role; +import cc.mrbird.febs.system.entity.RoleMenu; +import cc.mrbird.febs.system.mapper.RoleMapper; +import cc.mrbird.febs.system.service.IRoleMenuService; +import cc.mrbird.febs.system.service.IRoleService; +import cc.mrbird.febs.system.service.IUserRoleService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements IRoleService { + + private final IRoleMenuService roleMenuService; + private final IUserRoleService userRoleService; + private final ShiroRealm shiroRealm; + + @Override + public List<Role> findUserRole(String username) { + return this.baseMapper.findUserRole(username); + } + + @Override + public List<Role> findRoles(Role role) { + QueryWrapper<Role> queryWrapper = new QueryWrapper<>(); + if (StringUtils.isNotBlank(role.getRoleName())) { + queryWrapper.lambda().like(Role::getRoleName, role.getRoleName()); + } + return this.baseMapper.selectList(queryWrapper); + } + + @Override + public IPage<Role> findRoles(Role role, QueryRequest request) { + Page<Role> page = new Page<>(request.getPageNum(), request.getPageSize()); + page.setSearchCount(false); + page.setTotal(baseMapper.countRole(role)); + SortUtil.handlePageSort(request, page, "createTime", FebsConstant.ORDER_DESC, false); + return this.baseMapper.findRolePage(page, role); + } + + @Override + public Role findByName(String roleName) { + return this.baseMapper.selectOne(new QueryWrapper<Role>().lambda().eq(Role::getRoleName, roleName)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createRole(Role role) { + role.setCreateTime(new Date()); + this.baseMapper.insert(role); + this.saveRoleMenus(role); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateRole(Role role) { + role.setModifyTime(new Date()); + this.updateById(role); + List<String> roleIdList = new ArrayList<>(); + roleIdList.add(String.valueOf(role.getRoleId())); + this.roleMenuService.deleteRoleMenusByRoleId(roleIdList); + saveRoleMenus(role); + + shiroRealm.clearCache(); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteRoles(String roleIds) { + List<String> list = Arrays.asList(roleIds.split(StringPool.COMMA)); + this.baseMapper.delete(new QueryWrapper<Role>().lambda().in(Role::getRoleId, list)); + + this.roleMenuService.deleteRoleMenusByRoleId(list); + this.userRoleService.deleteUserRolesByRoleId(list); + } + + private void saveRoleMenus(Role role) { + if (StringUtils.isNotBlank(role.getMenuIds())) { + String[] menuIds = role.getMenuIds().split(StringPool.COMMA); + List<RoleMenu> roleMenus = new ArrayList<>(); + Arrays.stream(menuIds).forEach(menuId -> { + RoleMenu roleMenu = new RoleMenu(); + roleMenu.setMenuId(Long.valueOf(menuId)); + roleMenu.setRoleId(role.getRoleId()); + roleMenus.add(roleMenu); + }); + roleMenuService.saveBatch(roleMenus); + } + } +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/UserDataPermissionServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/UserDataPermissionServiceImpl.java new file mode 100644 index 0000000..75397de --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/UserDataPermissionServiceImpl.java @@ -0,0 +1,43 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.system.entity.UserDataPermission; +import cc.mrbird.febs.system.mapper.UserDataPermissionMapper; +import cc.mrbird.febs.system.service.IUserDataPermissionService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + +/** + * @author MrBird + */ +@Service("userDataPermissionService") +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class UserDataPermissionServiceImpl extends ServiceImpl<UserDataPermissionMapper, UserDataPermission> implements IUserDataPermissionService { + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByDeptIds(List<String> deptIds) { + this.baseMapper.delete(new LambdaQueryWrapper<UserDataPermission>().in(UserDataPermission::getDeptId, deptIds)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteByUserIds(String[] userIds) { + List<String> list = Arrays.asList(userIds); + this.baseMapper.delete(new LambdaQueryWrapper<UserDataPermission>().in(UserDataPermission::getUserId, list)); + } + + @Override + public String findByUserId(String userId) { + LambdaQueryWrapper<UserDataPermission> wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(UserDataPermission::getUserId, userId); + return this.baseMapper.selectList(wrapper).stream().map(permission -> String.valueOf(permission.getDeptId())).collect(Collectors.joining(StringPool.COMMA)); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/UserRoleServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/UserRoleServiceImpl.java new file mode 100644 index 0000000..47256bc --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/UserRoleServiceImpl.java @@ -0,0 +1,32 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.system.entity.UserRole; +import cc.mrbird.febs.system.mapper.UserRoleMapper; +import cc.mrbird.febs.system.service.IUserRoleService; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +/** + * @author MrBird + */ +@Service +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class UserRoleServiceImpl extends ServiceImpl<UserRoleMapper, UserRole> implements IUserRoleService { + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteUserRolesByRoleId(List<String> roleIds) { + this.baseMapper.delete(new QueryWrapper<UserRole>().lambda().in(UserRole::getRoleId, roleIds)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteUserRolesByUserId(List<String> userIds) { + this.baseMapper.delete(new QueryWrapper<UserRole>().lambda().in(UserRole::getUserId, userIds)); + } +} diff --git a/src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java b/src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java new file mode 100644 index 0000000..33336fa --- /dev/null +++ b/src/main/java/cc/mrbird/febs/system/service/impl/UserServiceImpl.java @@ -0,0 +1,239 @@ +package cc.mrbird.febs.system.service.impl; + +import cc.mrbird.febs.common.authentication.ShiroRealm; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.entity.QueryRequest; +import cc.mrbird.febs.common.exception.FebsException; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.common.utils.Md5Util; +import cc.mrbird.febs.common.utils.SortUtil; +import cc.mrbird.febs.system.entity.User; +import cc.mrbird.febs.system.entity.UserDataPermission; +import cc.mrbird.febs.system.entity.UserRole; +import cc.mrbird.febs.system.mapper.UserMapper; +import cc.mrbird.febs.system.service.IUserDataPermissionService; +import cc.mrbird.febs.system.service.IUserRoleService; +import cc.mrbird.febs.system.service.IUserService; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; +import com.baomidou.mybatisplus.core.toolkit.StringPool; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.apache.commons.lang3.ArrayUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Propagation; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Date; +import java.util.List; + +/** + * @author MrBird + */ +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService { + + private final IUserRoleService userRoleService; + private final IUserDataPermissionService userDataPermissionService; + private final ShiroRealm shiroRealm; + + @Override + public User findByName(String username) { + return this.baseMapper.findByName(username); + } + + @Override + public IPage<User> findUserDetailList(User user, QueryRequest request) { + if (StringUtils.isNotBlank(user.getCreateTimeFrom()) && + StringUtils.equals(user.getCreateTimeFrom(), user.getCreateTimeTo())) { + user.setCreateTimeFrom(user.getCreateTimeFrom() + " 00:00:00"); + user.setCreateTimeTo(user.getCreateTimeTo() + " 23:59:59"); + } + Page<User> page = new Page<>(request.getPageNum(), request.getPageSize()); + page.setSearchCount(false); + page.setTotal(baseMapper.countUserDetail(user)); + SortUtil.handlePageSort(request, page, "userId", FebsConstant.ORDER_ASC, false); + return this.baseMapper.findUserDetailPage(page, user); + } + + @Override + public User findUserDetailList(String username) { + User param = new User(); + param.setUsername(username); + List<User> users = this.baseMapper.findUserDetail(param); + return CollectionUtils.isNotEmpty(users) ? users.get(0) : null; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateLoginTime(String username) { + User user = new User(); + user.setLastLoginTime(new Date()); + this.baseMapper.update(user, new LambdaQueryWrapper<User>().eq(User::getUsername, username)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void createUser(User user) { + user.setCreateTime(new Date()); + user.setStatus(User.STATUS_VALID); + user.setAvatar(User.DEFAULT_AVATAR); + user.setTheme(User.THEME_BLACK); + user.setIsTab(User.TAB_OPEN); + user.setPassword(Md5Util.encrypt(user.getUsername(), User.DEFAULT_PASSWORD)); + save(user); + // 保存用户角色 + String[] roles = user.getRoleId().split(StringPool.COMMA); + setUserRoles(user, roles); + // 保存用户数据权限关联关系 + String[] deptIds = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getDeptIds(), StringPool.COMMA); + if (ArrayUtils.isNotEmpty(deptIds)) { + setUserDataPermissions(user, deptIds); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteUsers(String[] userIds) { + List<String> list = Arrays.asList(userIds); + // 删除用户 + this.removeByIds(list); + // 删除关联角色 + this.userRoleService.deleteUserRolesByUserId(list); + // 删除关联数据权限 + this.userDataPermissionService.deleteByUserIds(userIds); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateUser(User user) { + String username = user.getUsername(); + // 更新用户 + user.setPassword(null); + user.setUsername(null); + user.setModifyTime(new Date()); + updateById(user); + + String[] userId = {String.valueOf(user.getUserId())}; + this.userRoleService.deleteUserRolesByUserId(Arrays.asList(userId)); + String[] roles = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getRoleId(), StringPool.COMMA); + setUserRoles(user, roles); + + userDataPermissionService.deleteByUserIds(userId); + String[] deptIds = StringUtils.splitByWholeSeparatorPreserveAllTokens(user.getDeptIds(), StringPool.COMMA); + if (ArrayUtils.isNotEmpty(deptIds)) { + setUserDataPermissions(user, deptIds); + } + + User currentUser = FebsUtil.getCurrentUser(); + if (StringUtils.equalsIgnoreCase(currentUser.getUsername(), username)) { + shiroRealm.clearCache(); + } + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void resetPassword(String[] usernames) { + Arrays.stream(usernames).forEach(username -> { + User user = new User(); + user.setPassword(Md5Util.encrypt(username, User.DEFAULT_PASSWORD)); + this.baseMapper.update(user, new LambdaQueryWrapper<User>().eq(User::getUsername, username)); + }); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void regist(String username, String password) { + User user = new User(); + user.setPassword(Md5Util.encrypt(username, password)); + user.setUsername(username); + user.setCreateTime(new Date()); + user.setStatus(User.STATUS_VALID); + user.setSex(User.SEX_UNKNOW); + user.setAvatar(User.DEFAULT_AVATAR); + user.setTheme(User.THEME_BLACK); + user.setIsTab(User.TAB_OPEN); + user.setDescription("注册用户"); + this.save(user); + + UserRole ur = new UserRole(); + ur.setUserId(user.getUserId()); + ur.setRoleId(FebsConstant.REGISTER_ROLE_ID); + this.userRoleService.save(ur); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updatePassword(String username, String password) { + User user = new User(); + user.setPassword(Md5Util.encrypt(username, password)); + user.setModifyTime(new Date()); + this.baseMapper.update(user, new LambdaQueryWrapper<User>().eq(User::getUsername, username)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateAvatar(String username, String avatar) { + User user = new User(); + user.setAvatar(avatar); + user.setModifyTime(new Date()); + this.baseMapper.update(user, new LambdaQueryWrapper<User>().eq(User::getUsername, username)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateTheme(String username, String theme, String isTab) { + User user = new User(); + user.setTheme(theme); + user.setIsTab(isTab); + user.setModifyTime(new Date()); + this.baseMapper.update(user, new LambdaQueryWrapper<User>().eq(User::getUsername, username)); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void updateProfile(User user) { + user.setUsername(null); + user.setRoleId(null); + user.setPassword(null); + if (isCurrentUser(user.getId())) { + updateById(user); + } else { + throw new FebsException("您无权修改别人的账号信息!"); + } + } + + private void setUserRoles(User user, String[] roles) { + List<UserRole> userRoles = new ArrayList<>(); + Arrays.stream(roles).forEach(roleId -> { + UserRole userRole = new UserRole(); + userRole.setUserId(user.getUserId()); + userRole.setRoleId(Long.valueOf(roleId)); + userRoles.add(userRole); + }); + userRoleService.saveBatch(userRoles); + } + + private void setUserDataPermissions(User user, String[] deptIds) { + List<UserDataPermission> userDataPermissions = new ArrayList<>(); + Arrays.stream(deptIds).forEach(deptId -> { + UserDataPermission permission = new UserDataPermission(); + permission.setDeptId(Long.valueOf(deptId)); + permission.setUserId(user.getUserId()); + userDataPermissions.add(permission); + }); + userDataPermissionService.saveBatch(userDataPermissions); + } + + private boolean isCurrentUser(Long id) { + User currentUser = FebsUtil.getCurrentUser(); + return currentUser.getUserId().equals(id); + } +} diff --git a/src/main/resources/ValidationMessages.properties b/src/main/resources/ValidationMessages.properties new file mode 100644 index 0000000..24dfc21 --- /dev/null +++ b/src/main/resources/ValidationMessages.properties @@ -0,0 +1,6 @@ +required=\u4E0D\u80FD\u4E3A\u7A7A +range=\u6709\u6548\u957f\u5ea6{min}\u5230{max}\u4e2a\u5b57\u7b26 +email=\u90ae\u7bb1\u683c\u5f0f\u4e0d\u5408\u6cd5 +mobile=\u624b\u673a\u53f7\u4e0d\u5408\u6cd5 +noMoreThan=\u957f\u5ea6\u4e0d\u80fd\u8d85\u8fc7{max}\u4e2a\u5b57\u7b26 +invalid=\u503c\u4e0d\u5408\u6cd5 \ No newline at end of file diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..ae941c0 --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,43 @@ +spring: + datasource: + dynamic: + # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗 + p6spy: true + hikari: + connection-timeout: 30000 + max-lifetime: 1800000 + max-pool-size: 15 + min-idle: 5 + connection-test-query: select 1 + pool-name: FebsHikariCP + # 配置默认数据源 + primary: base + datasource: + # 数据源-1,名称为 base + base: + username: ct_test + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.27.238.55:3306/xc_mall?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + + redis: + # Redis数据库索引(默认为 0) + database: 3 + # Redis服务器地址 + host: 120.27.238.55 + # Redis服务器连接端口 + port: 6379 + # Redis 密码 + password: xcong123 + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 8 + # 连接池中的最大空闲连接 + max-idle: 500 + # 连接池最大连接数(使用负值表示没有限制) + max-active: 2000 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: 10000 + # 连接超时时间(毫秒) + timeout: 5000 \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..04d0df9 --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,49 @@ +spring: + datasource: + dynamic: + # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗 + p6spy: false + hikari: + connection-timeout: 30000 + max-lifetime: 1800000 + max-pool-size: 15 + min-idle: 5 + connection-test-query: select 1 + pool-name: FebsHikariCP + # 配置默认数据源 + primary: base + datasource: + # 数据源-1,名称为 base + base: + username: root + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/febs_base?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + # 数据源-2,名称为 quartz + quartz: + username: root + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/febs_quartz?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + + redis: + # Redis数据库索引(默认为 0) + database: 0 + # Redis服务器地址 + host: 127.0.0.1 + # Redis服务器连接端口 + port: 6379 + # Redis 密码 + password: + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 8 + # 连接池中的最大空闲连接 + max-idle: 500 + # 连接池最大连接数(使用负值表示没有限制) + max-active: 2000 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: 10000 + # 连接超时时间(毫秒) + timeout: 5000 \ No newline at end of file diff --git a/src/main/resources/application-test.yml b/src/main/resources/application-test.yml new file mode 100644 index 0000000..394582a --- /dev/null +++ b/src/main/resources/application-test.yml @@ -0,0 +1,43 @@ +spring: + datasource: + dynamic: + # 是否开启 SQL日志输出,生产环境建议关闭,有性能损耗 + p6spy: false + hikari: + connection-timeout: 30000 + max-lifetime: 1800000 + max-pool-size: 15 + min-idle: 5 + connection-test-query: select 1 + pool-name: FebsHikariCP + # 配置默认数据源 + primary: base + datasource: + # 数据源-1,名称为 base + base: + username: ct_test + password: 123456 + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://120.27.238.55:3306/xc_mall?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=GMT%2b8 + + redis: + # Redis数据库索引(默认为 0) + database: 3 + # Redis服务器地址 + host: 120.27.238.55 + # Redis服务器连接端口 + port: 6379 + # Redis 密码 + password: xcong123 + lettuce: + pool: + # 连接池中的最小空闲连接 + min-idle: 8 + # 连接池中的最大空闲连接 + max-idle: 500 + # 连接池最大连接数(使用负值表示没有限制) + max-active: 2000 + # 连接池最大阻塞等待时间(使用负值表示没有限制) + max-wait: 10000 + # 连接超时时间(毫秒) + timeout: 5000 \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml new file mode 100644 index 0000000..c358c69 --- /dev/null +++ b/src/main/resources/application.yml @@ -0,0 +1,37 @@ +server: + port: 8080 + tomcat: + uri-encoding: utf-8 + +spring: + profiles: + active: dev + + thymeleaf: + cache: false + + jackson: + date-format: yyyy-MM-dd HH:mm:ss + time-zone: GMT+8 + + aop: + proxy-target-class: true + +mybatis-plus: + type-aliases-package: cc.mrbird.febs.*.entity + mapper-locations: classpath:mapper/*/*.xml + configuration: + jdbc-type-for-null: null + global-config: + banner: false + db-config: + select-strategy: not_empty + +logging: + level: + com: + baomidou: + mybatisplus: + core: + metadata: + TableInfoHelper: error diff --git a/src/main/resources/banner.txt b/src/main/resources/banner.txt new file mode 100644 index 0000000..aa15b88 --- /dev/null +++ b/src/main/resources/banner.txt @@ -0,0 +1,9 @@ +|-----------------------------------------| +| ____ ____ ___ __ | +| | |_ | |_ | |_) ( (` | +| |_| |_|__ |_|_) _)_) | +| | +| Shiro edition v2.0 | +| Spring-Boot-Version: ${spring-boot.version} | +| QQ group : 715689981 | +|-----------------------------------------| \ No newline at end of file diff --git a/src/main/resources/febs.properties b/src/main/resources/febs.properties new file mode 100644 index 0000000..4625df4 --- /dev/null +++ b/src/main/resources/febs.properties @@ -0,0 +1,43 @@ +# 项目启动后是否使用系统默认浏览器打开登录页,默认开启 +febs.autoOpenBrowser=true +# session 超时时间,单位为秒 +febs.shiro.session_timeout=3600 +# rememberMe cookie有效时长,单位为秒 +febs.shiro.cookie_timeout=86400 +# 免认证的路径配置,如静态资源等 +febs.shiro.anon_url=/test/**,/febs/**,/img/**,/layui/**,/json/**,/images/captcha,/regist,/actuator/** +# 登录 url +febs.shiro.login_url=/login +# 首页 url +febs.shiro.success_url=/index +# 登出 url +febs.shiro.logout_url=/logout +# 未授权跳转 url +febs.shiro.unauthorized_url=/unauthorized +# Excel单次导入最大数据量,如 300个数据一次commit +febs.maxBatchInsertNum=300 + +# 验证码相关配置 +# 验证码有效时间,单位秒 +febs.auth.code.time=120 +# 验证码图片格式,png +febs.auth.code.type=png +# 验证码图片宽度,px +febs.auth.code.width=115 +# 验证码图片高度,px +febs.auth.code.height=42 +# 验证码位数 +febs.auth.code.length=4 +# 验证码类型:1. 数字+字母;2. 纯数字;3. 纯字母 +febs.auth.code.charType=2 + +# Swagger相关配置 +febs.swagger.basePackage=cc.mrbird.febs +febs.swagger.title=FEBS Shiro API +febs.swagger.description=FEBS Shiro API Document. +febs.swagger.version=2.0 +febs.swagger.author=MrBird +febs.swagger.url=https://mrbird.cc +febs.swagger.email=852252810@qq.com +febs.swagger.license=Apache 2.0 +febs.swagger.licenseUrl=https://www.apache.org/licenses/LICENSE-2.0.html \ No newline at end of file diff --git a/src/main/resources/generator/templates/controller.ftl b/src/main/resources/generator/templates/controller.ftl new file mode 100644 index 0000000..50dcaea --- /dev/null +++ b/src/main/resources/generator/templates/controller.ftl @@ -0,0 +1,96 @@ +package cc.mrbird.febs.system.controller; + +import cc.mrbird.febs.common.annotation.ControllerEndpoint; +import cc.mrbird.febs.common.utils.FebsUtil; +import cc.mrbird.febs.common.entity.FebsConstant; +import cc.mrbird.febs.common.controller.BaseController; +import cc.mrbird.febs.common.entity.FebsResponse; +import cc.mrbird.febs.common.entity.QueryRequest; +import ${basePackage}.${entityPackage}.${className}; +import ${basePackage}.${servicePackage}.I${className}Service; +import com.wuwenze.poi.ExcelKit; +import lombok.extern.slf4j.Slf4j; +import lombok.RequiredArgsConstructor; + +import org.apache.shiro.authz.annotation.RequiresPermissions; +import org.springframework.stereotype.Controller; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +import javax.servlet.http.HttpServletResponse; +import javax.validation.Valid; +import java.util.List; +import java.util.Map; + +/** + * ${tableComment} Controller + * + * @author ${author} + * @date ${date} + */ +@Slf4j +@Validated +@Controller +@RequiredArgsConstructor +public class ${className}Controller extends BaseController { + + private final I${className}Service ${className?uncap_first}Service; + + @GetMapping(FebsConstant.VIEW_PREFIX + "${className?uncap_first}") + public String ${className?uncap_first}Index(){ + return FebsUtil.view("${className?uncap_first}/${className?uncap_first}"); + } + + @GetMapping("${className?uncap_first}") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:list") + public FebsResponse getAll${className}s(${className} ${className?uncap_first}) { + return new FebsResponse().success().data(${className?uncap_first}Service.find${className}s(${className?uncap_first})); + } + + @GetMapping("${className?uncap_first}/list") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:list") + public FebsResponse ${className?uncap_first}List(QueryRequest request, ${className} ${className?uncap_first}) { + Map<String, Object> dataTable = getDataTable(this.${className?uncap_first}Service.find${className}s(request, ${className?uncap_first})); + return new FebsResponse().success().data(dataTable); + } + + @ControllerEndpoint(operation = "新增${className}", exceptionMessage = "新增${className}失败") + @PostMapping("${className?uncap_first}") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:add") + public FebsResponse add${className}(@Valid ${className} ${className?uncap_first}) { + this.${className?uncap_first}Service.create${className}(${className?uncap_first}); + return new FebsResponse().success(); + } + + @ControllerEndpoint(operation = "删除${className}", exceptionMessage = "删除${className}失败") + @GetMapping("${className?uncap_first}/delete") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:delete") + public FebsResponse delete${className}(${className} ${className?uncap_first}) { + this.${className?uncap_first}Service.delete${className}(${className?uncap_first}); + return new FebsResponse().success(); + } + + @ControllerEndpoint(operation = "修改${className}", exceptionMessage = "修改${className}失败") + @PostMapping("${className?uncap_first}/update") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:update") + public FebsResponse update${className}(${className} ${className?uncap_first}) { + this.${className?uncap_first}Service.update${className}(${className?uncap_first}); + return new FebsResponse().success(); + } + + @ControllerEndpoint(operation = "修改${className}", exceptionMessage = "导出Excel失败") + @PostMapping("${className?uncap_first}/excel") + @ResponseBody + @RequiresPermissions("${className?uncap_first}:export") + public void export(QueryRequest queryRequest, ${className} ${className?uncap_first}, HttpServletResponse response) { + List<${className}> ${className?uncap_first}s = this.${className?uncap_first}Service.find${className}s(queryRequest, ${className?uncap_first}).getRecords(); + ExcelKit.$Export(${className}.class, response).downXlsx(${className?uncap_first}s, false); + } +} diff --git a/src/main/resources/generator/templates/entity.ftl b/src/main/resources/generator/templates/entity.ftl new file mode 100644 index 0000000..06c5370 --- /dev/null +++ b/src/main/resources/generator/templates/entity.ftl @@ -0,0 +1,67 @@ +package ${basePackage}.${entityPackage}; + +<#if hasDate = true> +import java.util.Date; +</#if> +<#if hasBigDecimal = true> +import java.math.BigDecimal; +</#if> + +import lombok.Data; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; + +/** + * ${tableComment} Entity + * + * @author ${author} + * @date ${date} + */ +@Data +@TableName("${tableName}") +public class ${className} { + + <#if columns??> + <#list columns as column> + /** + * ${column.remark} + */ + <#if column.isKey = true> + @TableId(value = "${column.name}", type = IdType.AUTO) + <#else> + @TableField("${column.name}") + </#if> + <#if (column.type = 'varchar' || column.type = 'text' || column.type = 'uniqueidentifier' + || column.type = 'varchar2' || column.type = 'nvarchar' || column.type = 'VARCHAR2' + || column.type = 'VARCHAR'|| column.type = 'CLOB' || column.type = 'char')> + private String ${column.field?uncap_first}; + + </#if> + <#if column.type = 'timestamp' || column.type = 'date' || column.type = 'datetime'||column.type = 'TIMESTAMP' || column.type = 'DATE' || column.type = 'DATETIME'> + private Date ${column.field?uncap_first}; + + </#if> + <#if column.type = 'int' || column.type = 'smallint'> + private Integer ${column.field?uncap_first}; + + </#if> + <#if column.type = 'bigint'> + private Long ${column.field?uncap_first}; + + </#if> + <#if column.type = 'double'> + private Double ${column.field?uncap_first}; + + </#if> + <#if column.type = 'tinyint'> + private Byte ${column.field?uncap_first}; + + </#if> + <#if column.type = 'decimal' || column.type = 'numeric'> + private BigDecimal ${column.field?uncap_first}; + </#if> + </#list> + </#if> +} diff --git a/src/main/resources/generator/templates/mapper.ftl b/src/main/resources/generator/templates/mapper.ftl new file mode 100644 index 0000000..578193a --- /dev/null +++ b/src/main/resources/generator/templates/mapper.ftl @@ -0,0 +1,14 @@ +package ${basePackage}.${mapperPackage}; + +import ${basePackage}.${entityPackage}.${className}; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; + +/** + * ${tableComment} Mapper + * + * @author ${author} + * @date ${date} + */ +public interface ${className}Mapper extends BaseMapper<${className}> { + +} diff --git a/src/main/resources/generator/templates/mapperXml.ftl b/src/main/resources/generator/templates/mapperXml.ftl new file mode 100644 index 0000000..6d80987 --- /dev/null +++ b/src/main/resources/generator/templates/mapperXml.ftl @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="${basePackage}.${mapperPackage}.${className}Mapper"> + +</mapper> diff --git a/src/main/resources/generator/templates/service.ftl b/src/main/resources/generator/templates/service.ftl new file mode 100644 index 0000000..781fe89 --- /dev/null +++ b/src/main/resources/generator/templates/service.ftl @@ -0,0 +1,55 @@ +package ${basePackage}.${servicePackage}; + +import ${basePackage}.${entityPackage}.${className}; + +import cc.mrbird.febs.common.entity.QueryRequest; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; + +import java.util.List; + +/** + * ${tableComment} Service接口 + * + * @author ${author} + * @date ${date} + */ +public interface I${className}Service extends IService<${className}> { + /** + * 查询(分页) + * + * @param request QueryRequest + * @param ${className?uncap_first} ${className?uncap_first} + * @return IPage<${className}> + */ + IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}); + + /** + * 查询(所有) + * + * @param ${className?uncap_first} ${className?uncap_first} + * @return List<${className}> + */ + List<${className}> find${className}s(${className} ${className?uncap_first}); + + /** + * 新增 + * + * @param ${className?uncap_first} ${className?uncap_first} + */ + void create${className}(${className} ${className?uncap_first}); + + /** + * 修改 + * + * @param ${className?uncap_first} ${className?uncap_first} + */ + void update${className}(${className} ${className?uncap_first}); + + /** + * 删除 + * + * @param ${className?uncap_first} ${className?uncap_first} + */ + void delete${className}(${className} ${className?uncap_first}); +} diff --git a/src/main/resources/generator/templates/serviceImpl.ftl b/src/main/resources/generator/templates/serviceImpl.ftl new file mode 100644 index 0000000..e210a69 --- /dev/null +++ b/src/main/resources/generator/templates/serviceImpl.ftl @@ -0,0 +1,66 @@ +package ${basePackage}.${serviceImplPackage}; + +import cc.mrbird.febs.common.entity.QueryRequest; +import ${basePackage}.${entityPackage}.${className}; +import ${basePackage}.${mapperPackage}.${className}Mapper; +import ${basePackage}.${servicePackage}.I${className}Service; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.springframework.transaction.annotation.Propagation; +import lombok.RequiredArgsConstructor; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; + +import java.util.List; + +/** + * ${tableComment} Service实现 + * + * @author ${author} + * @date ${date} + */ +@Service +@RequiredArgsConstructor +@Transactional(propagation = Propagation.SUPPORTS, readOnly = true) +public class ${className}ServiceImpl extends ServiceImpl<${className}Mapper, ${className}> implements I${className}Service { + + private final ${className}Mapper ${className?uncap_first}Mapper; + + @Override + public IPage<${className}> find${className}s(QueryRequest request, ${className} ${className?uncap_first}) { + LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); + // TODO 设置查询条件 + Page<${className}> page = new Page<>(request.getPageNum(), request.getPageSize()); + return this.page(page, queryWrapper); + } + + @Override + public List<${className}> find${className}s(${className} ${className?uncap_first}) { + LambdaQueryWrapper<${className}> queryWrapper = new LambdaQueryWrapper<>(); + // TODO 设置查询条件 + return this.baseMapper.selectList(queryWrapper); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create${className}(${className} ${className?uncap_first}) { + this.save(${className?uncap_first}); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update${className}(${className} ${className?uncap_first}) { + this.saveOrUpdate(${className?uncap_first}); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete${className}(${className} ${className?uncap_first}) { + LambdaQueryWrapper<${className}> wrapper = new LambdaQueryWrapper<>(); + // TODO 设置删除条件 + this.remove(wrapper); + } +} diff --git a/src/main/resources/ip2region/ip2region.db b/src/main/resources/ip2region/ip2region.db new file mode 100644 index 0000000..cfdc900 --- /dev/null +++ b/src/main/resources/ip2region/ip2region.db Binary files differ diff --git a/src/main/resources/logback-spring.xml b/src/main/resources/logback-spring.xml new file mode 100644 index 0000000..42fa955 --- /dev/null +++ b/src/main/resources/logback-spring.xml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<configuration scan="true" scanPeriod="60 seconds" debug="false"> + <contextName>febs</contextName> + <property name="log.path" value="log" /> + <property name="log.maxHistory" value="15" /> + <property name="log.colorPattern" value="%magenta(%d{yyyy-MM-dd HH:mm:ss}) %highlight(%-5level) %yellow(%thread) %green(%logger) %msg%n"/> + <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} %-5level %thread %logger %msg%n"/> + + <!--输出到控制台--> + <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>${log.colorPattern}</pattern> + </encoder> + </appender> + + <!--输出到文件--> + <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${log.path}/info/info.%d{yyyy-MM-dd}.log</fileNamePattern> + <MaxHistory>${log.maxHistory}</MaxHistory> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>INFO</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"> + <fileNamePattern>${log.path}/error/error.%d{yyyy-MM-dd}.log</fileNamePattern> + </rollingPolicy> + <encoder> + <pattern>${log.pattern}</pattern> + </encoder> + <filter class="ch.qos.logback.classic.filter.LevelFilter"> + <level>ERROR</level> + <onMatch>ACCEPT</onMatch> + <onMismatch>DENY</onMismatch> + </filter> + </appender> + + <root level="debug"> + <appender-ref ref="console" /> + </root> + + <root level="info"> + <appender-ref ref="file_info" /> + <appender-ref ref="file_error" /> + </root> +</configuration> \ No newline at end of file diff --git a/src/main/resources/mapper/generator/GeneratorMapper.xml b/src/main/resources/mapper/generator/GeneratorMapper.xml new file mode 100644 index 0000000..1847ae6 --- /dev/null +++ b/src/main/resources/mapper/generator/GeneratorMapper.xml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.generator.mapper.GeneratorMapper"> + <!--查询可用数据库--> + <select id="getDatabases" resultType="java.lang.String"> + SELECT DISTINCT TABLE_SCHEMA FROM information_schema.TABLES + </select> + + <!--查询数据库下面的表--> + <select id="getTables" resultType="table" parameterType="string"> + SELECT + CREATE_TIME createTime, + UPDATE_TIME updateTime, + TABLE_ROWS dataRows, + TABLE_NAME name, + TABLE_COMMENT remark + FROM + information_schema.TABLES + WHERE + TABLE_SCHEMA = #{schemaName} + <if test="tableName != null and tableName != ''"> + AND TABLE_NAME = #{tableName} + </if> + </select> + + <!--查询数据库表下面的列属性--> + <select id="getColumns" resultType="column"> + SELECT + COLUMN_NAME name, + CASE + COLUMN_key + WHEN 'PRI' THEN + 1 ELSE 0 + END isKey, + DATA_TYPE type, + COLUMN_COMMENT remark + FROM information_schema.COLUMNS + WHERE TABLE_SCHEMA = #{schemaName} AND TABLE_NAME = #{tableName} + </select> + +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/system/LoginLogMapper.xml b/src/main/resources/mapper/system/LoginLogMapper.xml new file mode 100644 index 0000000..6f7cd1b --- /dev/null +++ b/src/main/resources/mapper/system/LoginLogMapper.xml @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.monitor.mapper.LoginLogMapper"> + <select id="findTotalVisitCount" resultType="long"> + select count(1) from t_login_log + </select> + + <select id="findTodayVisitCount" resultType="long"> + SELECT count(1) FROM t_login_log WHERE login_time between CURDATE() and DATE_ADD(CURDATE(), INTERVAL 1 DAY) + </select> + + <select id="findTodayIp" resultType="long"> + SELECT count(DISTINCT(ip)) FROM t_login_log WHERE login_time between CURDATE() and DATE_ADD(CURDATE(), INTERVAL 1 DAY) + </select> + + <select id="findLastSevenDaysVisitCount" resultType="map" parameterType="string"> + select + date_format(l.login_time, '%m-%d') days, + count(1) count + from + ( + select + * + from + t_login_log + where + date_sub(curdate(), interval 10 day) <= date(login_time) + ) as l where 1 = 1 + <if test="username != null and username != ''"> + and l.username = #{username} + </if> + group by + days + </select> +</mapper> \ No newline at end of file diff --git a/src/main/resources/mapper/system/MenuMapper.xml b/src/main/resources/mapper/system/MenuMapper.xml new file mode 100644 index 0000000..1bea729 --- /dev/null +++ b/src/main/resources/mapper/system/MenuMapper.xml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.system.mapper.MenuMapper"> + <resultMap id="menu" type="cc.mrbird.febs.system.entity.Menu"> + <id column="MENU_ID" jdbcType="DECIMAL" property="menuId" /> + <result column="PARENT_ID" jdbcType="DECIMAL" property="parentId" /> + <result column="MENU_NAME" jdbcType="VARCHAR" property="menuName" /> + <result column="URL" jdbcType="VARCHAR" property="url" /> + <result column="PERMS" jdbcType="VARCHAR" property="perms" /> + <result column="ICON" jdbcType="VARCHAR" property="icon" /> + <result column="TYPE" jdbcType="CHAR" property="type" /> + <result column="ORDER_NUM" jdbcType="DECIMAL" property="orderNum" /> + <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" /> + <result column="MODIFY_TIME" jdbcType="TIMESTAMP" property="modifyTime" /> + </resultMap> + + <select id="findUserPermissions" resultMap="menu"> + SELECT + m.perms + FROM + t_role r + LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) + LEFT JOIN t_user u ON (u.user_id = ur.user_id) + LEFT JOIN t_role_menu rm ON (rm.role_id = r.role_id) + LEFT JOIN t_menu m ON (m.menu_id = rm.menu_id) + WHERE + u.username = #{username} + AND m.perms is not null + AND m.perms <> '' + </select> + + <select id="findUserMenus" resultMap="menu"> + SELECT + m.* + FROM + t_menu m + WHERE + m.type <> 1 + AND m.MENU_ID IN ( + SELECT DISTINCT + rm.menu_id + FROM + t_role_menu rm + LEFT JOIN t_role r ON (rm.role_id = r.role_id) + LEFT JOIN t_user_role ur ON (ur.role_id = r.role_id) + LEFT JOIN t_user u ON (u.user_id = ur.user_id) + WHERE + u.username = #{username} + ) + ORDER BY + m.order_num + </select> +</mapper> diff --git a/src/main/resources/mapper/system/RoleMapper.xml b/src/main/resources/mapper/system/RoleMapper.xml new file mode 100644 index 0000000..7544524 --- /dev/null +++ b/src/main/resources/mapper/system/RoleMapper.xml @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.system.mapper.RoleMapper"> + <resultMap id="roleMap" type="cc.mrbird.febs.system.entity.Role"> + <result column="ROLE_ID" jdbcType="DECIMAL" property="roleId" /> + <result column="ROLE_NAME" jdbcType="VARCHAR" property="roleName" /> + <result column="REMARK" jdbcType="VARCHAR" property="remark" /> + <result column="CREATE_TIME" jdbcType="TIMESTAMP" property="createTime" /> + <result column="MODIFY_TIME" jdbcType="TIMESTAMP" property="modifyTime" /> + </resultMap> + + <select id="findUserRole" resultMap="roleMap"> + SELECT + r.* + FROM + t_role r + LEFT JOIN t_user_role ur ON (r.role_id = ur.role_id) + LEFT JOIN t_user u ON (u.user_id = ur.user_id) + WHERE + u.username = #{username} + </select> + + <select id="countRole" parameterType="role" resultType="Long"> + SELECT + COUNT(1) + FROM + t_role r + WHERE 1 = 1 + <if test="role.roleName != null and role.roleName != ''"> + AND r.role_name like CONCAT('%',#{role.roleName},'%') + </if> + </select> + + <select id="findRolePage" parameterType="role" resultType="role"> + SELECT + r.role_id roleId, + r.role_name roleName, + r.remark, + r.create_time createTime, + r.modify_time modifyTime, + GROUP_CONCAT( rm.menu_id ) menuIds + FROM + t_role r + LEFT JOIN t_role_menu rm ON ( r.role_id = rm.role_id ) + WHERE 1 = 1 + <if test="role.roleName != null and role.roleName != ''"> + AND r.role_name like CONCAT('%',#{role.roleName},'%') + </if> + GROUP BY + r.role_id + </select> +</mapper> diff --git a/src/main/resources/mapper/system/UserMapper.xml b/src/main/resources/mapper/system/UserMapper.xml new file mode 100644 index 0000000..ecc5415 --- /dev/null +++ b/src/main/resources/mapper/system/UserMapper.xml @@ -0,0 +1,152 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> +<mapper namespace="cc.mrbird.febs.system.mapper.UserMapper"> + <sql id="countUserDetailSql" > + SELECT + COUNT(1) + FROM + t_user u + WHERE 1 = 1 + <if test="user.username != null and user.username != ''"> + AND u.username = #{user.username} + </if> + <if test="user.deptId != null and user.deptId != ''"> + AND u.dept_id = #{user.deptId} + </if> + <if test="user.sex != null and user.sex != ''"> + AND u.ssex = #{user.sex} + </if> + <if test="user.status != null and user.status != ''"> + AND u.status = #{user.status} + </if> + <if test="user.mobile != null and user.mobile != ''"> + AND u.mobile = #{user.mobile} + </if> + <if test="user.createTimeFrom != null and user.createTimeFrom !=''"> + And u.create_time > #{user.createTimeFrom} + </if> + <if test="user.createTimeTo!= null and user.createTimeTo !=''"> + And u.create_time < #{user.createTimeTo} + </if> + </sql> + + <sql id="findUserDetailSql"> + SELECT + u.user_id userId, + u.username, + u.email, + u.mobile, + u.status, + u.create_time createTime, + u.ssex sex, + u.dept_id deptId, + u.last_login_time lastLoginTime, + u.modify_time modifyTime, + u.description, + u.avatar, + d.dept_name deptName, + GROUP_CONCAT(r.role_id) roleId, + GROUP_CONCAT(r.ROLE_NAME) roleName + FROM + t_user u + LEFT JOIN t_dept d ON (u.dept_id = d.dept_id) + LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id) + LEFT JOIN t_role r ON r.role_id = ur.role_id + WHERE 1 = 1 + <if test="user.username != null and user.username != ''"> + AND u.username = #{user.username} + </if> + <if test="user.deptId != null and user.deptId != ''"> + AND d.dept_id = #{user.deptId} + </if> + <if test="user.sex != null and user.sex != ''"> + AND u.ssex = #{user.sex} + </if> + <if test="user.status != null and user.status != ''"> + AND u.status = #{user.status} + </if> + <if test="user.mobile != null and user.mobile != ''"> + AND u.mobile = #{user.mobile} + </if> + <if test="user.createTimeFrom != null and user.createTimeFrom !=''"> + And u.create_time > #{user.createTimeFrom} + </if> + <if test="user.createTimeTo!= null and user.createTimeTo !=''"> + And u.create_time < #{user.createTimeTo} + </if> + GROUP BY + u.username, + u.user_id, + u.email, + u.mobile, + u.status, + u.create_time, + u.ssex, + u.dept_id, + u.last_login_time, + u.modify_time, + u.description, + u.avatar + </sql> + + <select id="countUserDetail" parameterType="user" resultType="long"> + <include refid="countUserDetailSql"/> + </select> + + <select id="findUserDetailPage" parameterType="user" resultType="user"> + <include refid="findUserDetailSql"/> + </select> + + <select id="findUserDetail" parameterType="user" resultType="user"> + <include refid="findUserDetailSql"/> + </select> + + <select id="findByName" parameterType="string" resultType="user"> + SELECT + u.user_id userId, + u.username, + u.email, + u.mobile, + u.password, + u.status, + u.create_time createTime, + u.ssex sex, + u.dept_id deptId, + u.last_login_time lastLoginTime, + u.modify_time modifyTime, + u.description, + u.avatar, + u.theme, + u.is_tab isTab, + d.dept_name deptName, + GROUP_CONCAT(r.role_id) roleId, + GROUP_CONCAT(r.ROLE_NAME) roleName + FROM + t_user u + LEFT JOIN t_dept d ON (u.dept_id = d.dept_id) + LEFT JOIN t_user_role ur ON (u.user_id = ur.user_id) + LEFT JOIN t_role r ON r.role_id = ur.role_id + WHERE u.username = #{username} + GROUP BY + u.username, + u.user_id, + u.email, + u.mobile, + u.password, + u.status, + u.create_time, + u.ssex, + u.dept_id, + u.last_login_time, + u.modify_time, + u.description, + u.avatar, + u.theme, + u.is_tab + </select> + + <select id="findUserDataPermissions" parameterType="long" resultType="userDataPermission"> + select user_id userId, dept_id deptId from t_user_data_permission + where user_id = #{userId} + </select> +</mapper> diff --git a/src/main/resources/spy.properties b/src/main/resources/spy.properties new file mode 100644 index 0000000..68fbf3f --- /dev/null +++ b/src/main/resources/spy.properties @@ -0,0 +1,13 @@ +# p6spy���ã��ĵ� https://p6spy.readthedocs.io/en/latest/configandusage.html +# ʹ����־ϵͳ��¼ sql +appender=com.p6spy.engine.spy.appender.Slf4JLogger +# �Զ�����־��ӡ +logMessageFormat=cc.mrbird.febs.common.configure.P6spySqlFormatConfigure +# �Ƿ����� SQL��¼ +outagedetection=true +# �� SQL��¼�� 2 �� +outagedetectioninterval=2 +# �������� +filter=true +# ���� QRTZ�IJ���ӡ +exclude=QRTZ,select 1 \ No newline at end of file diff --git a/src/main/resources/static/febs/config.js b/src/main/resources/static/febs/config.js new file mode 100644 index 0000000..c456e36 --- /dev/null +++ b/src/main/resources/static/febs/config.js @@ -0,0 +1,18 @@ +layui.define(function(exports) { + exports('conf', { + container: 'febs', + containerBody: 'febs-body', + v: '2.0', + base: layui.cache.base, + css: layui.cache.base + 'css/', + views: layui.cache.base + 'views/', + viewLoadBar: true, + debug: layui.cache.debug, + name: 'febs', + entry: '/index', + engine: '', + eventName: 'febs-event', + tableName: 'febs', + requestUrl: './' + }) +}); diff --git a/src/main/resources/static/febs/css/apexcharts.min.css b/src/main/resources/static/febs/css/apexcharts.min.css new file mode 100644 index 0000000..34ceea7 --- /dev/null +++ b/src/main/resources/static/febs/css/apexcharts.min.css @@ -0,0 +1 @@ +.apexcharts-canvas{position:relative;user-select:none}.apexcharts-canvas ::-webkit-scrollbar{-webkit-appearance:none;width:6px}.apexcharts-canvas ::-webkit-scrollbar-thumb{border-radius:4px;background-color:rgba(0,0,0,.5);box-shadow:0 0 1px rgba(255,255,255,.5);-webkit-box-shadow:0 0 1px rgba(255,255,255,.5)}.apexcharts-canvas.dark{background:#343f57}.apexcharts-inner{position:relative}.legend-mouseover-inactive{transition:.15s ease all;opacity:.2}.apexcharts-series-collapsed{opacity:0}.apexcharts-gridline,.apexcharts-text{pointer-events:none}.apexcharts-tooltip{border-radius:5px;box-shadow:2px 2px 6px -4px #999;cursor:default;font-size:14px;left:62px;opacity:0;pointer-events:none;position:absolute;top:20px;overflow:hidden;white-space:nowrap;z-index:12;transition:.15s ease all}.apexcharts-tooltip.light{border:1px solid #e3e3e3;background:rgba(255,255,255,.96)}.apexcharts-tooltip.dark{color:#fff;background:rgba(30,30,30,.8)}.apexcharts-tooltip *{font-family:inherit}.apexcharts-area-series .apexcharts-area,.apexcharts-line,.apexcharts-tooltip .apexcharts-marker{pointer-events:none}.apexcharts-tooltip.active{opacity:1;transition:.15s ease all}.apexcharts-tooltip-title{padding:6px;font-size:15px;margin-bottom:4px}.apexcharts-tooltip.light .apexcharts-tooltip-title{background:#eceff1;border-bottom:1px solid #ddd}.apexcharts-tooltip.dark .apexcharts-tooltip-title{background:rgba(0,0,0,.7);border-bottom:1px solid #333}.apexcharts-tooltip-text-value,.apexcharts-tooltip-text-z-value{display:inline-block;margin-left:5px;font-weight:600}.apexcharts-tooltip-text-z-label:empty,.apexcharts-tooltip-text-z-value:empty{display:none}.apexcharts-tooltip-marker{width:12px;height:12px;position:relative;top:0;margin-right:10px;border-radius:50%}.apexcharts-tooltip-series-group{padding:0 10px;display:none;text-align:left;justify-content:left;align-items:center}.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker{opacity:1}.apexcharts-tooltip-series-group.active,.apexcharts-tooltip-series-group:last-child{padding-bottom:4px}.apexcharts-tooltip-series-group-hidden{opacity:0;height:0;line-height:0;padding:0!important}.apexcharts-tooltip-y-group{padding:6px 0 5px}.apexcharts-tooltip-candlestick{padding:4px 8px}.apexcharts-tooltip-candlestick>div{margin:4px 0}.apexcharts-tooltip-candlestick span.value{font-weight:700}.apexcharts-tooltip-rangebar{padding:5px 8px}.apexcharts-tooltip-rangebar .category{font-weight:600;color:#777}.apexcharts-tooltip-rangebar .series-name{font-weight:700;display:block;margin-bottom:5px}.apexcharts-xaxistooltip{opacity:0;padding:9px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:10;background:#eceff1;border:1px solid #90a4ae;transition:.15s ease all}.apexcharts-xaxistooltip.dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-xaxistooltip:after,.apexcharts-xaxistooltip:before{left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-xaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-left:-6px}.apexcharts-xaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-left:-7px}.apexcharts-xaxistooltip-bottom:after,.apexcharts-xaxistooltip-bottom:before{bottom:100%}.apexcharts-xaxistooltip-top:after,.apexcharts-xaxistooltip-top:before{top:100%}.apexcharts-xaxistooltip-bottom:after{border-bottom-color:#eceff1}.apexcharts-xaxistooltip-bottom:before{border-bottom-color:#90a4ae}.apexcharts-xaxistooltip-bottom.dark:after,.apexcharts-xaxistooltip-bottom.dark:before{border-bottom-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip-top:after{border-top-color:#eceff1}.apexcharts-xaxistooltip-top:before{border-top-color:#90a4ae}.apexcharts-xaxistooltip-top.dark:after,.apexcharts-xaxistooltip-top.dark:before{border-top-color:rgba(0,0,0,.5)}.apexcharts-xaxistooltip.active{opacity:1;transition:.15s ease all}.apexcharts-yaxistooltip{opacity:0;padding:4px 10px;pointer-events:none;color:#373d3f;font-size:13px;text-align:center;border-radius:2px;position:absolute;z-index:10;background:#eceff1;border:1px solid #90a4ae}.apexcharts-yaxistooltip.dark{background:rgba(0,0,0,.7);border:1px solid rgba(0,0,0,.5);color:#fff}.apexcharts-yaxistooltip:after,.apexcharts-yaxistooltip:before{top:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.apexcharts-yaxistooltip:after{border-color:rgba(236,239,241,0);border-width:6px;margin-top:-6px}.apexcharts-yaxistooltip:before{border-color:rgba(144,164,174,0);border-width:7px;margin-top:-7px}.apexcharts-yaxistooltip-left:after,.apexcharts-yaxistooltip-left:before{left:100%}.apexcharts-yaxistooltip-right:after,.apexcharts-yaxistooltip-right:before{right:100%}.apexcharts-yaxistooltip-left:after{border-left-color:#eceff1}.apexcharts-yaxistooltip-left:before{border-left-color:#90a4ae}.apexcharts-yaxistooltip-left.dark:after,.apexcharts-yaxistooltip-left.dark:before{border-left-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip-right:after{border-right-color:#eceff1}.apexcharts-yaxistooltip-right:before{border-right-color:#90a4ae}.apexcharts-yaxistooltip-right.dark:after,.apexcharts-yaxistooltip-right.dark:before{border-right-color:rgba(0,0,0,.5)}.apexcharts-yaxistooltip.active{opacity:1}.apexcharts-xcrosshairs,.apexcharts-ycrosshairs{pointer-events:none;opacity:0;transition:.15s ease all}.apexcharts-xcrosshairs.active,.apexcharts-ycrosshairs.active{opacity:1;transition:.15s ease all}.apexcharts-ycrosshairs-hidden{opacity:0}.apexcharts-zoom-rect{pointer-events:none}.apexcharts-selection-rect{cursor:move}.svg_select_points,.svg_select_points_rot{opacity:0;visibility:hidden}.svg_select_points_l,.svg_select_points_r{cursor:ew-resize;opacity:1;visibility:visible;fill:#888}.apexcharts-canvas.zoomable .hovering-zoom{cursor:crosshair}.apexcharts-canvas.zoomable .hovering-pan{cursor:move}.apexcharts-xaxis,.apexcharts-yaxis{pointer-events:none}.apexcharts-menu-icon,.apexcharts-pan-icon,.apexcharts-reset-zoom-icon,.apexcharts-selection-icon,.apexcharts-toolbar-custom-icon,.apexcharts-zoom-icon,.apexcharts-zoom-in-icon,.apexcharts-zoom-out-icon{cursor:pointer;width:20px;height:20px;line-height:24px;color:#6e8192;text-align:center}.apexcharts-menu-icon svg,.apexcharts-reset-zoom-icon svg,.apexcharts-zoom-icon svg,.apexcharts-zoom-in-icon svg,.apexcharts-zoom-out-icon svg{fill:#6e8192}.apexcharts-selection-icon svg{fill:#444;transform:scale(.76)}.dark .apexcharts-menu-icon svg,.dark .apexcharts-pan-icon svg,.dark .apexcharts-reset-zoom-icon svg,.dark .apexcharts-selection-icon svg,.dark .apexcharts-toolbar-custom-icon svg,.dark .apexcharts-zoom-icon svg,.dark .apexcharts-zoom-in-icon svg,.dark .apexcharts-zoom-out-icon svg{fill:#f3f4f5}.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg,.apexcharts-canvas .apexcharts-selection-icon.selected svg,.apexcharts-canvas .apexcharts-zoom-icon.selected svg{fill:#008ffb}.light .apexcharts-menu-icon:hover svg,.light .apexcharts-reset-zoom-icon:hover svg,.light .apexcharts-selection-icon:not(.selected):hover svg,.light .apexcharts-zoom-icon:not(.selected):hover svg,.light .apexcharts-zoom-in-icon:hover svg,.light .apexcharts-zoom-out-icon:hover svg{fill:#333}.apexcharts-menu-icon,.apexcharts-selection-icon{position:relative}.apexcharts-reset-zoom-icon{margin-left:5px}.apexcharts-menu-icon,.apexcharts-reset-zoom-icon,.apexcharts-zoom-icon{transform:scale(.85)}.apexcharts-zoom-in-icon,.apexcharts-zoom-out-icon{transform:scale(.7)}.apexcharts-zoom-out-icon{margin-right:3px}.apexcharts-pan-icon{transform:scale(.62);position:relative;left:1px;top:0}.apexcharts-pan-icon svg{fill:#fff;stroke:#6e8192;stroke-width:2}.apexcharts-pan-icon.selected svg{stroke:#008ffb}.apexcharts-pan-icon:not(.selected):hover svg{stroke:#333}.apexcharts-toolbar{position:absolute;z-index:11;top:0;right:3px;max-width:176px;text-align:right;border-radius:3px;padding:0 6px 2px;display:flex;justify-content:space-between;align-items:center}.apexcharts-toolbar svg{pointer-events:none}.apexcharts-menu{background:#fff;position:absolute;top:100%;border:1px solid #ddd;border-radius:3px;padding:3px;right:10px;opacity:0;min-width:110px;transition:.15s ease all;pointer-events:none}.apexcharts-menu.open{opacity:1;pointer-events:all;transition:.15s ease all}.apexcharts-menu-item{padding:6px 7px;font-size:12px;cursor:pointer}.light .apexcharts-menu-item:hover{background:#eee}.dark .apexcharts-menu{background:rgba(0,0,0,.7);color:#fff}@media screen and (min-width:768px){.apexcharts-canvas:hover .apexcharts-toolbar{opacity:1}}.apexcharts-datalabel.hidden{opacity:0}.apexcharts-datalabel,.apexcharts-datalabel-label,.apexcharts-datalabel-value,.apexcharts-pie-label{cursor:default;pointer-events:none}.apexcharts-pie-label-delay{opacity:0;animation-name:opaque;animation-duration:.3s;animation-fill-mode:forwards;animation-timing-function:ease}.apexcharts-canvas .hidden,.apexcharts-hide .apexcharts-series-points{opacity:0}.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,.apexcharts-radar-series path,.apexcharts-radar-series polygon{pointer-events:none}.apexcharts-marker{transition:.15s ease all}@keyframes opaque{0%{opacity:0}100%{opacity:1}} \ No newline at end of file diff --git a/src/main/resources/static/febs/css/eleTree.css b/src/main/resources/static/febs/css/eleTree.css new file mode 100644 index 0000000..895cbeb --- /dev/null +++ b/src/main/resources/static/febs/css/eleTree.css @@ -0,0 +1 @@ +.eleTree{position:relative}.eleTree-hide{display:none}.eleTree-loadData{width:100%;height:100%;position:absolute;z-index:1;top:0px}.eleTree-loadData .layui-icon{position:absolute;left:50%;top:50%;transform:translateX(-50%) translateY(-50%)}.eleTree-node-content{cursor:pointer;height:26px;line-height:1.3;white-space:nowrap}.eleTree-node-content:hover,.eleTree-node-content.eleTree-node-content-active{background-color:#eee}.eleTree-node-content-icon .layui-icon{padding:6px 3px;color:#c0c4cc;font-size:12px;display:inline-block;transform:rotate(0deg);transition:transform .3s ease-in-out}.eleTree-node-content-icon .layui-icon.icon-rotate{transform:rotate(90deg)}.eleTree-node-content .layui-form-checkbox[lay-skin=primary] i{width:13px;height:14px;line-height:1.3}.eleTree-node-content-label{padding-left:5px}.eleTree-node-content-input{width:80px;border:1px solid #e6e6e6;outline:0;padding:3px 5px;font-size:12px}input.eleTree-hideen[type=checkbox]{display:none}.eleTree-checkbox{height:auto!important;line-height:normal!important;min-height:12px;border:none!important;margin-right:0;padding-left:18px;position:relative;display:inline-block}.eleTree-checkbox i{left:0;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear;position:absolute;top:0;color:#fff;cursor:pointer;text-align:center;width:13px;height:14px;line-height:1.3}.eleTree-checkbox i:hover{border-color:#5FB878}.eleTree-checkbox-checked i{border-color:#5FB878;background-color:#5FB878;color:#fff}.eleTree-checkbox-line:after{content:"";position:relative;width:8px;height:1px;background-color:#fff;display:inline-block;top:-4px}.eleTree-checkbox.eleTree-checkbox-disabled i{cursor:not-allowed;background-color:#f2f6fc;border-color:#dcdfe6;color:#c2c2c2}.eleTree-checkbox.eleTree-checkbox-disabled i.eleTree-checkbox-line:after{background-color:#c2c2c2}.eleTree-checkbox.eleTree-checkbox-disabled i:hover{border-color:#dcdfe6}#tree-menu{margin:0;padding:2px;position:absolute;background:#f5f5f5;border:1px solid #979797;box-shadow:2px 2px 2px #999;display:none;z-index:20181205}#tree-menu li>a{display:block;padding:0 1em;text-decoration:none;width:auto;color:#000;white-space:nowrap;line-height:2.4em;text-shadow:1px 1px 0 #fff;border-radius:1px}#tree-menu li>a:hover{background-color:#e8eff7;box-shadow:0 0 2px #0a6aa1}.tree-menu-bg{background-color:#ccc} diff --git a/src/main/resources/static/febs/css/febs.css b/src/main/resources/static/febs/css/febs.css new file mode 100644 index 0000000..b98a944 --- /dev/null +++ b/src/main/resources/static/febs/css/febs.css @@ -0,0 +1 @@ +body{font-family:"Helvetica Neue",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif;}.layui-form-label{font-size:13px;}body,html,#app,.layui-body{height:100%;background:#f3f3f3}a{cursor:pointer;color:#2db7f5;transition:color 0.3s ease}a:hover{color:#1e51c7}::-webkit-scrollbar{width:5px;height:5px;background-color:#f4f4f4}::-webkit-scrollbar-track{background-color:#f1f1f1}::-webkit-scrollbar-thumb{border-radius:50px;background-color:#afb3bf !important}#app a{outline:none}#app-sidebar{top:0;z-index:1001;overflow:hidden}#app-sidebar .layui-side-scroll{padding-right:17px}#app-sidebar,#app-sidebar .layui-side-scroll,#app-sidebar .layui-nav-tree,#app-sidebar .layui-logo{width:245px}.layui-body,#app-header .layui-layout-left,.febs-tabs-wrap .febs-tabs-menu,.febs-tabs-wrap .febs-tabs-action{left:245px}#app-sidebar .layui-logo{overflow:hidden;position:static;font-size:21px;padding:0;line-height:62px;height:62px;transition:height 0.8s cubic-bezier(0.075,0.82,0.165,1)}body,html,#app-header .layui-nav .layui-nav-item a:not(.layui-nav-child-href),.febs-tabs-wrap .febs-tabs-menu li:hover,.febs-tabs-wrap .febs-tabs-action:hover,.febs-tabs-wrap .febs-tabs-active,.febs-grid:hover > p,.febs-cell-arrow:before,.febs-breadcrumb a:hover,.layui-layer-admin-page .layui-layer-setwin .layui-layer-close2:hover,.febs-tabs-wrap .febs-tabs-action:hover{color:rgba(0,0,0,.65) !important}.layui-table{color:#606266;}#app-header .layui-nav-bar,.layui-bg-black{background-color:#2db7f5 !important}.febs-c-blue,#app-sidebar .layui-logo,#app-sidebar .layui-logo span b,.febs-grid:hover .layui-icon,.febs-cell-selected,.layui-laypage a:hover,.layui-laydate-footer span[lay-type='date'],.layui-laydate .layui-laydate-footer span:hover,.layui-dropdown .layui-dropdown-option:hover,.layui-laydate td.layui-this,.febs-laydate-full td.layui-this .laydate-day-mark{color:#2db7f5 !important}#app-sidebar .layui-nav-tree .layui-nav-bar,.layui-bg-blue,.layui-layer-prompt .layui-layer-btn a.layui-layer-btn0,.layui-layer-admin-modal .layui-layer-btn a.layui-layer-btn0,.layui-laydate li.layui-this,.layui-laydate td.layui-this{background-color:#2db7f5 !important}.layui-form-select dl dd.layui-this{border-radius:2px;border:1px solid #fff}.febs-br-blue,#app-sidebar .layui-logo span,.febs-linecard,.layui-layer-prompt .layui-layer-btn a.layui-layer-btn0,.layui-layer-admin-modal .layui-layer-btn a.layui-layer-btn0,.layui-tab-brief > .layui-tab-more li.layui-this:after,.layui-tab-brief > .layui-tab-title .layui-this:after{border-color:#2db7f5 !important}#app-sidebar,#app-sidebar .layui-nav-itemed .layui-nav-child{box-shadow:2px 0 8px 0 rgba(29,35,41,0.05);background-color:#272c33}.febs-sidebar-shrink #app-sidebar .layui-nav-itemed,#app-sidebar .layui-nav-tree .layui-nav-child dd.layui-this,#app-sidebar .layui-nav-tree .layui-nav-child dd.layui-this a,#app-sidebar .layui-nav-tree .layui-this,#app-sidebar .layui-nav-tree .layui-this > a,.layui-nav-tree .layui-this > a:hover{background-color:#1c1f27}#app-sidebar .layui-logo span,#app-sidebar .layui-nav-tree .layui-nav-child dd.layui-this,#app-sidebar .layui-nav-tree .layui-nav-child dd.layui-this a,#app-sidebar .layui-nav-tree .layui-this,#app-sidebar .layui-nav-tree .layui-this > a,.layui-nav-tree .layui-this > a:hover,.layui-layer-prompt .layui-layer-btn a.layui-layer-btn0,.layui-layer-admin-modal .layui-layer-btn a.layui-layer-btn0{color:#fff}#app-header,.febs-tabs-wrap,.febs-tabs-wrap .febs-tabs-menu li,.febs-tabs-wrap .febs-tabs-action,.layui-form-checkbox,.layui-form-select dl dd.layui-disabled,.layui-btn-primary,.layui-layer-admin-page .layui-layer-setwin .layui-layer-close2,.layui-dropdown .layui-dropdown-select{background-color:#fff !important}.layui-table thead tr,.layui-table tbody tr:hover,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool{background-color:#f8f8f8 !important}.layui-table-click{background-color:#f9f9f9 !important}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#f8f8f8 !important}.layui-badge-rim,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#f6f6f6}.layui-btn-group .layui-btn-primary:first-child{border-color:#eee}.layui-table[lay-skin='line'] td,.layui-table[lay-skin='line'] th{}.febs-table-full{padding:15px 15px 40px 15px}.febs-table-full .layui-table,.febs-table-full .layui-table-view{margin:0}#app-sidebar .layui-logo span{border-bottom-width:0;font-size:1.25rem}#app-sidebar .layui-logo img{width:32px;margin-bottom:4px;margin-right:3px;display:inline-block;vertical-align:middle}#app-sidebar .layui-logo i{font-style:normal;border-bottom:1px solid #aaa}#app-header,#app-header .layui-nav .layui-nav-item{line-height:50px;height:50px}#app-header .layui-icon-triangle-d{font-size:12px !important}#app-header .layui-user .layui-hide-xs{font-weight:600}#app-header .layui-user img{width:1.9rem;margin-right:.5rem;margin-bottom:.3rem}#app-sidebar .layui-nav{background:transparent}#app-sidebar .layui-nav .layui-nav-item a:hover{background:transparent}#app-sidebar .layui-nav-tree .layui-nav-bar{width:3px;left:auto;right:0}#app-sidebar .layui-nav-itemed .layui-nav-child a{font-size:12px;padding-left:50px}#app-sidebar .layui-nav .layui-nav-mored,#app-sidebar .layui-nav-itemed > a .layui-nav-more{margin-top:-6px}#app-sidebar .layui-nav .layui-nav-more{border-width:4px}#app-sidebar .layui-nav .layui-nav-item{color:#aaadb2}#app-sidebar .layui-nav-tree .layui-nav-item > a{height:54px;line-height:54px}#app-sidebar .layui-icon{display:inline-block;width:25px;margin-right:8px}#app-sidebar .layui-nav .layui-nav-item a{user-select:none;font-size:14px;line-height:48px;height:48px}#app-sidebar .layui-nav .layui-nav-item dd a{line-height:46px;height:46px;font-size:14px}#app-sidebar .layui-nav .layui-nav-item a .layui-icon{font-size:18px}#app-header{border-bottom:1px solid #f1f1f1;position:fixed;top:0;left:0;width:100%;height:50px}#app-header .layui-nav{padding:0}#app-header .layui-search-input{background:transparent;margin-top:5px;border:none}#app-header .layui-search-input:focus{box-shadow:none}#app-header .layui-nav-bar{height:1px}#app-header .layui-nav-child{border:none;top:50px}#app-header .layui-nav-item .layui-icon{font-size:16px}#app-header .layui-nav-more{display:none}#app-header .message-dot{top:40%;right:0}.febs-tabs-hidden{display:none}.febs-tabs-wrap{z-index:999;position:fixed;top:50px;white-space:nowrap;padding:0 80px 0 30px;box-sizing:border-box;width:100%;font-size:13px;box-shadow:0 2px 3px 0 rgba(0,0,0,0.05)}.febs-tabs-wrap .febs-tabs-menu{position:relative;transition:left 0.3s}.febs-tabs-wrap .febs-tabs-menu li,.febs-tabs-wrap .febs-tabs-action{text-align:center;border-right:1px solid #f1f1f1;cursor:pointer;height:36px;line-height:36px;transition:all 0.3s ease}.febs-tabs-wrap .febs-tabs-action:hover,.febs-tabs-wrap .febs-tabs-menu li:hover{background:#fdfdfd !important}.febs-tabs-wrap .febs-tabs-menu li:hover > .febs-tabs-close{color:red}.febs-tabs-wrap .febs-tabs-menu li{display:inline-block;padding-left:18px;line-height:38px;color:#999;user-select:none}.febs-tabs-wrap .febs-tabs-close{color:#fff;font-size:10px;height:36px;width:30px;display:inline-block;transition:color 0.3s ease}.febs-tabs-wrap .febs-tabs-action{display:inline-block;position:absolute;top:0;left:245px;z-index:1;width:30px;color:#999}.febs-tabs-wrap .febs-tabs-next{left:auto;right:31px;border-left:1px solid #f1f1f1}.febs-tabs-wrap .febs-tabs-down{left:auto;right:0}.febs-lead{font-weight:300}.febs-ignore{font-size:14px;color:#999}.febs-pad30{padding:30px !important}.febs-pad20{padding:20px !important}.febs-pad10{padding:20px !important}.febs-pad5{padding:20px !important}.febs-pad0{padding:0px !important}.febs-pad-tb20{padding:20px 0 !important}.febs-pad-tb10{padding:10px 0 !important}.febs-pad-tb5{padding:5px 0 !important}.febs-pad-r20{padding-right:20px !important}.febs-pad-r10{padding-right:10px !important}.febs-pad-r5{padding-right:5px !important}.febs-pad-b20{padding-bottom:20px !important}.febs-pad-b10{padding-bottom:10px !important}.febs-pad-b5{padding-bottom:5px !important}.febs-pad-t20{padding-top:20px !important}.febs-pad-t10{padding-top:10px !important}.febs-pad-t5{padding-top:5px !important}.febs-pad-l20{padding-left:20px !important}.febs-pad-l10{padding-left:10px !important}.febs-pad-l5{padding-left:5px !important}.febs-mar30{margin:30px !important}.febs-mar20{margin:20px !important}.febs-mar10{margin:20px !important}.febs-mar5{margin:20px !important}.febs-mar0{margin:0px !important}.febs-mar-tb20{margin:20px 0 !important}.febs-mar-tb10{margin:10px 0 !important}.febs-mar-tb5{margin:5px 0 !important}.febs-mar-r20{margin-right:20px !important}.febs-mar-r10{margin-right:10px !important}.febs-mar-r5{margin-right:5px !important}.febs-mar-b20{margin-bottom:20px !important}.febs-mar-b10{margin-bottom:10px !important}.febs-mar-b5{margin-bottom:5px !important}.febs-mar-t20{margin-top:20px !important}.febs-mar-t10{margin-top:10px !important}.febs-mar-t5{margin-top:5px !important}.febs-mar-l20{margin-left:20px !important}.febs-mar-l10{margin-left:10px !important}.febs-mar-l5{margin-left:5px !important}.febs-gray{filter:grayscale(100%)}.layui-circle{border-radius:100% !important}.layui-form-checked span,.layui-form-checked:hover span,.layui-form-checked[lay-skin='primary'] i,.layui-form-onswitch,.layui-bg-green{background-color:#1890FF !important;font-weight:600;}.layui-form-checked i,.layui-form-checked:hover i{color:#32c787}.layui-form-checked[lay-skin='primary'] i{border-color:#b7eb8f}.layui-form-checked[lay-skin='primary'] span{background-color:transparent !important}.layui-bg-red{background-color:#ff5652 !important}.layui-bg-orange{background-color:#ffc107 !important}.layui-bg-gray{background-color:#eee !important}.layui-bg-white{background-color:#fff !important}.febs-rle{position:relative}.febs-aler{position:absolute;top:0;right:0;z-index:1}.febs-alel{position:absolute;top:0;left:0;z-index:1}.febs-fl{float:left}.febs-fr{float:right}.febs-tc{text-align:center}.febs-tr{text-align:right}.febs-tl{text-align:left}.febs-font-12{font-size:12px !important}.febs-font-14{font-size:14px !important}.febs-bold{font-weight:bold !important}.febs-avatar{position:relative;height:40px;width:40px;display:inline-block;overflow:hidden}.febs-avatar-lg{height:60px;width:60px}.febs-avatar-xs{height:20px;width:20px}.febs-avatar img{height:100%;width:100%;display:block}.febs-avatar .layui-badge-dot{position:absolute;top:2px;right:2px;z-index:1}.febs-avatar,.febs-avatar img{border-radius:5px}.layui-card{box-shadow:0 2px 3px 0 rgba(0,0,0,0.05)}.layui-card .layui-card-header{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-card .layui-card-cover{height:200px;overflow:hidden}.layui-card .layui-card-cover img{width:100%;min-height:100%}.layui-card .layui-card-extra{position:absolute;right:10px;top:8px;z-index:1;line-height:40px;padding-right:15px}.layui-card .layui-card-footer{padding:10px;line-height:36px;text-align:right;background:#f9f9f9}.febs-linecard{margin-bottom:15px;border-radius:2px;box-shadow:0 2px 3px 0 rgba(0,0,0,0.05);padding:15px 25px;line-height:24px;border-left-width:2px;border-left-style:solid;background:#fff;transition:background 0.3s ease}.febs-linecard:hover{background:#f8fafe}.febs-linecard.febs-br-green:hover{background:#f6fdfa}.febs-linecard.febs-br-red:hover{background:#fff8f6}.febs-linecard.febs-br-gray:hover{background:#f6f6f6}.febs-linecard:last-child{margin-bottom:0}.febs-linecard-title{padding-bottom:12px;font-size:16px}.febs-linecard-text{font-size:26px;padding-right:5px}.febs-grid{text-align:center;border-radius:5px;padding:15px 0;transition:background 0.3s ease;cursor:pointer}.febs-grid > p{color:#999;font-size:14px}.febs-grid > p,.febs-grid .layui-icon{transition:color 0.3s ease}.febs-grid .layui-icon{font-size:28px;display:inline-block;margin-bottom:10px}.febs-cell{padding:7px 16px;clear:both;font-size:12px !important;cursor:pointer;position:relative;transition:background 0.2s ease-in-out}.febs-cell .febs-avatar{float:left;margin-right:10px;position:relative;top:3px}.febs-cell .febs-avatar-xs{top:4px}.febs-cell-arrow:before{font-family:'layui-icon','nep-icon' !important;font-size:12px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:'\e859';position:absolute;right:16px;top:50%;margin-top:-10px;display:inline-block;height:20px}.febs-cell:hover{background:#f6f6f6}.febs-cell-selected,.febs-cell-selected:hover{background:#f8fafe}.febs-cell-title{line-height:28px;font-size:14px}.febs-cell-label{line-height:1.2;font-size:12px;color:#999;padding-bottom:4px}.febs-cell-title,.febs-cell-label{padding-right:70px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.febs-cell-extra{position:absolute;top:50%;margin-top:-8px;right:16px;display:inline-block;height:16px;color:#999}.febs-cell-arrow .febs-cell-extra{right:32px}.febs-cell-disabled{}.layui-layout-admin .layui-body{top:0;bottom:0;padding-top:50px;padding-bottom:15px}.layui-layout-admin .febs-tabs-body{padding-top:86px;float:left}#app-sidebar,#app-header .layui-layout-left,.layui-layout-admin .layui-body{transition:all 0.5s cubic-bezier(0.86,0,0.07,1)}.febs-breadcrumb{visibility:visible;vertical-align:middle}.febs-breadcrumb a{color:rgba(0,0,0,0.45) !important;cursor:default}.febs-breadcrumb > *{font-size:.78rem}#febs-body .layui-fluid{margin:0 !important;padding:0 !important}#febs-body .layui-fluid > .layui-table-view,#febs-body .layui-fluid > .layui-card > .layui-table-view{margin:0}#febs-body .febs-body-tabs{margin:0}.febs-sidebar-shrink #app-sidebar{left:0;width:52px}.febs-sidebar-shrink #app-sidebar .layui-nav-item .layui-nav-child{display:none}.febs-sidebar-shrink #app-sidebar .layui-logo{height:0}.febs-sidebar-shrink .layui-body,.febs-sidebar-shrink #app-header .layui-layout-left,.febs-sidebar-shrink .febs-tabs-wrap .febs-tabs-menu,.febs-sidebar-shrink .febs-tabs-wrap .febs-tabs-prev{left:56px}.febs-sidebar-shrink #app-header .layui-icon-shrink-right:before{content:'\e66b'}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#ccc}.layui-input:hover,.layui-textarea:hover,.layui-input:focus,.layui-textarea:focus{border-color:#eee}.layui-input:focus,.layui-textarea:focus{border-color:#94b2fa !important;box-shadow:0 0 0 3px rgba(90,139,255,0.2)}.layui-input,.layui-select,.layui-textarea{border-radius:2px;border-color:#eee;color:#606266;transition:border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out}.layui-btn{-webkit-border-radius:3px;-moz-border-radius:3px;border-radius:3px}.layui-table-page .layui-laypage button{color:#606266;}.layui-table-page .layui-laypage button:hover{color:#409eff;background:#ecf5ff !important;border-color:#b3d8ff;transition-duration:300ms;}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#40AFFE;}.layui-table-page .layui-laypage span,.layui-table-page .layui-laypage select{color:#606266;}.layui-form-select dl{padding:0;border-color:transparent;border-color:#ccc \9}.layui-form-radio > i:hover,.layui-form-radioed > i{color:#32c787}.layui-form-radio .layui-anim-scaleSpring{-webkit-animation-name:none;animation-name:none}.layui-tips{background:#fffcee;color:#ff4911;font-size:12px;padding:10px 15px}.layui-tips .close{float:right;color:#ffd6ca;font-weight:normal;cursor:pointer;transition:color 0.3s ease}.layui-tips .close:hover{color:#ff4911}.layui-btn{background-color:#1890ff}.layui-btn-success{background-color:#32c787}.layui-btn-primary{border-color:#f1f1f1}.layui-btn-primary:hover{border-color:#f2f2f2}.layui-btn-warm{background-color:#ffc107}.layui-btn-danger,.layui-badge,.layui-badge-dot{background-color:#ff5652}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{background-color:#fbfbfb}.layui-layer-admin-modal{overflow:hidden}.layui-layer-prompt .layui-layer-btn a,.layui-layer-admin-modal .layui-layer-btn a{border-radius:3px;height:32px;line-height:32px}.layui-layer-admin-modal .layui-layer-content{padding-top:0}.layui-layer-admin-modal,.layui-layer-admin-page{border-radius:3px}.layui-layer-admin-page .layui-layer-setwin .layui-layer-close2{font-family:layui-icon;border-radius:50%;text-align:center;font-size:16px;line-height:34px;width:34px;height:34px;color:#aaa;transition:all 0.3s ease}.layui-layer-admin-page .layui-layer-setwin .layui-layer-close2:hover{transform:rotate(90deg)}.layui-layer-admin-page .layui-layer-setwin .layui-layer-close2:after{content:'\1006'}.layui-layer-msg{border:none !important}.layui-layer-msg .layui-layer-content{padding:10px 16px;border-radius:4px;box-shadow:0 4px 12px rgba(0,0,0,0.15)}.layui-layer-dialog .layui-layer-content .layui-layer-ico{font-family:'layui-icon','nep-icon' !important;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-align:center;line-height:30px;font-size:26px;background:none}.layui-layer-dialog .layui-layer-content .layui-layer-ico::before{content:'\e8b3';color:#fab600}.layui-layer-dialog .layui-layer-content .layui-layer-ico1::before{content:'\e89d';color:#00d57b}.layui-layer-dialog .layui-layer-content .layui-layer-ico2::before{content:'\e8a1';color:#f25657}.layui-layer-dialog .layui-layer-content .layui-layer-ico3::before{content:'\e8a6';color:#fab600}.layui-layer-dialog .layui-layer-content .layui-layer-ico4::before{content:'\e910';color:#171e2d}.layui-layer-dialog .layui-layer-content .layui-layer-ico5::before{content:'\e782';color:#f25657}.layui-layer-dialog .layui-layer-content .layui-layer-ico6::before{content:'\e78f';color:#00d57b}.layui-tab-title{height:42px}.layui-tab-title li{color:#999}.layui-tab-brief > .layui-tab-title .layui-this{color:#000}.layui-tab-brief > .layui-tab-more li.layui-this:after,.layui-tab-brief > .layui-tab-title .layui-this:after{border-bottom-width:2px;border-bottom-style:solid}.layui-laydate .layui-laydate-content{font-size:12px}.layui-laydate,.layui-laydate-hint{box-shadow:0 0 30px #ddd !important;border:1px solid #eee \9 !important}.layui-laydate .layui-laydate-footer span{border:none}.layui-laydate .layui-laydate-content td:hover{background:#f6f6f6 !important}.layui-laydate .layui-laydate-header i{font-size:10px}.layui-laydate td{border-radius:6px}.febs-laydate-full .layui-laydate{border:none;box-shadow:none !important}.febs-laydate-full .layui-laydate-static{display:block}.febs-laydate-full .layui-laydate-main,.febs-laydate-full .layui-laydate-content table{width:100%}.febs-laydate-full .layui-laydate-content{font-size:24px !important}.febs-laydate-full .layui-laydate-content td,.febs-laydate-full .layui-laydate-content th{height:100px !important;width:100px !important}.febs-laydate-full .laydate-day-mark{font-size:24px;line-height:100px;color:#f25657}.febs-laydate-full .laydate-day-mark::after{display:none;width:8px !important;height:8px !important;background:#f25657 !important;right:14px !important;top:14px !important}.layui-laydate td.layui-this,.layui-laydate td.layui-this:hover{font-weight:bold;color:#1890ff !important;background:#e6f7ff !important;border:1px solid #91d5ff !important}.laydate-theme-datehour .laydate-time-list{overflow:hidden}.laydate-theme-datehour .laydate-time-list > li{width:100%;margin-bottom:20px}.laydate-theme-datehour .laydate-time-list > li p{display:none}.laydate-theme-datehour .laydate-time-list ol{height:100%;border:none;overflow-y:scroll}.laydate-theme-datehour .laydate-time-list ol li{text-align:center;padding-left:0;width:100%}.laydate-theme-datehour .laydate-time-list ol li:after{content:' 点 '}.layui-cell{padding:10px;cursor:pointer}.layui-cell:hover{background:#f6f6f6}.layui-cell .layui-cell-cover{float:left;width:40px;height:40px;overflow:hidden;border-radius:2px;margin-right:10px}.layui-cell .layui-cell-cover img{display:block;width:100%;height:100%}.layui-cell .layui-cell-title{line-height:18px}.layui-cell .layui-cell-info{font-size:12px;color:#999}.layui-cell .layui-cell-content{}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool{background:#f1f1f1}.layui-table-tool{background:#fff !important}@media screen and (max-width:991px){.febs-sidebar-shrink #app-sidebar{width:0}.febs-sidebar-shrink .layui-body,.febs-sidebar-shrink #app-header .layui-layout-left,.febs-sidebar-shrink .febs-tabs-wrap .febs-tabs-menu,.febs-sidebar-shrink .febs-tabs-wrap .febs-tabs-prev{left:0}}@media screen and (max-width:768px){.layui-layout-admin .febs-tabs-body{padding-top:50px}#app-header ul.layui-nav{padding:0 10px}#app-header ul.layui-nav .layui-nav-child{left:auto;right:0px;min-width:230px}#app-header ul.layui-nav .layui-nav-child hr{background:#f1f1f1}#app-header .layui-nav .layui-nav-item > a{padding:0 15px}#app-header{left:245px;transition:all 0.5s cubic-bezier(0.86,0,0.07,1)}#app-header .layui-layout-left{left:0}.layui-body{position:relative;width:100%}.febs-tabs-wrap{display:none}.febs-sidebar-shrink .layui-body,.febs-sidebar-shrink #app-header .layui-layout-left{left:0px}.febs-sidebar-shrink .layui-body,.febs-sidebar-shrink #app-header{left:0px}.layui-label-block-xs .layui-form-item > label.layui-form-label{display:inline-block;text-align:left;float:none;display:block;width:auto;padding-left:0;color:#999;padding-bottom:5px}.layui-label-block-xs .layui-form-item > .layui-input-block,.layui-label-block-xs .layui-form-item > .layui-input-inline,.layui-label-hide-xs .layui-form-item > .layui-input-block,.layui-label-hide-xs .layui-form-item > .layui-input-inline{margin-left:0}.layui-label-hide-xs .layui-form-item > label.layui-form-label{display:none}}.febs-arrow-up{width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #fff}.layui-dropdown{position:fixed;top:0;left:0;z-index:999;opacity:0}.layui-dropdown .febs-arrow-up{position:absolute;top:-6px;left:10px}.layui-dropdown-right .febs-arrow-up{left:auto;right:10px}.layui-dropdown .layui-dropdown-select{border-radius:3px;border:1px solid #f1f1f1;box-shadow:0 2px 12px 0 rgba(0,0,0,0.1)}.layui-dropdown .layui-dropdown-option{position:relative;height:38px;line-height:38px;padding-left:15px;cursor:pointer;transition:all 0.3s ease}.layui-dropdown .layui-dropdown-option .layui-icon{margin-right:10px;font-size:14px}.layui-dropdown .layui-dropdown-option .layui-dropdown-select{position:absolute;top:0;display:none}.layui-dropdown .layui-dropdown-option:hover{background:#f6f9ff}.layui-dropdown .layui-dropdown-option:hover > .layui-dropdown-select{display:block}.layui-dropdown .layui-icon-right{float:right;position:absolute;right:0;top:0;color:#aaa}.layui-dropdown .layui-dropdown-title{padding-right:20px}@font-face{font-family:'nep-icon';src:url('../font/iconfont.eot');src:url('../font/iconfont.eot#iefix') format('embedded-opentype'),url('../font/iconfont.svg#iconfont') format('svg'),url('../font/iconfont.woff') format('woff'),url('../font/iconfont.ttf') format('truetype')}.layui-icon{font-family:'layui-icon','nep-icon' !important}.layui-icon-check-circle:before{content:'\e77d'}.layui-icon-CI:before{content:'\e77e'}.layui-icon-Dollar:before{content:'\e77f'}.layui-icon-compass:before{content:'\e780'}.layui-icon-close-circle:before{content:'\e781'}.layui-icon-frown:before{content:'\e782'}.layui-icon-info-circle:before{content:'\e783'}.layui-icon-left-circle:before{content:'\e784'}.layui-icon-down-circle:before{content:'\e785'}.layui-icon-EURO:before{content:'\e786'}.layui-icon-copyright:before{content:'\e787'}.layui-icon-minus-circle:before{content:'\e788'}.layui-icon-meh:before{content:'\e789'}.layui-icon-plus-circle:before{content:'\e78a'}.layui-icon-play-circle:before{content:'\e78b'}.layui-icon-question-circle:before{content:'\e78c'}.layui-icon-Pound:before{content:'\e78d'}.layui-icon-right-circle:before{content:'\e78e'}.layui-icon-smile:before{content:'\e78f'}.layui-icon-trademark:before{content:'\e790'}.layui-icon-time-circle:before{content:'\e791'}.layui-icon-timeout:before{content:'\e792'}.layui-icon-earth:before{content:'\e793'}.layui-icon-YUAN:before{content:'\e794'}.layui-icon-up-circle:before{content:'\e795'}.layui-icon-warning-circle:before{content:'\e796'}.layui-icon-sync:before{content:'\e797'}.layui-icon-transaction:before{content:'\e798'}.layui-icon-undo:before{content:'\e799'}.layui-icon-redo:before{content:'\e79a'}.layui-icon-reload:before{content:'\e79b'}.layui-icon-reloadtime:before{content:'\e79c'}.layui-icon-message:before{content:'\e79d'}.layui-icon-dashboard:before{content:'\e79e'}.layui-icon-issuesclose:before{content:'\e79f'}.layui-icon-poweroff:before{content:'\e7a0'}.layui-icon-logout:before{content:'\e7a1'}.layui-icon-login:before{content:'\e7a2'}.layui-icon-piechart:before{content:'\e7a3'}.layui-icon-setting:before{content:'\e7a4'}.layui-icon-eye:before{content:'\e7a5'}.layui-icon-location:before{content:'\e7a6'}.layui-icon-edit-square:before{content:'\e7a7'}.layui-icon-export:before{content:'\e7a8'}.layui-icon-save:before{content:'\e7a9'}.layui-icon-Import:before{content:'\e7aa'}.layui-icon-appstore:before{content:'\e7ab'}.layui-icon-close-square:before{content:'\e7ac'}.layui-icon-down-square:before{content:'\e7ad'}.layui-icon-layout:before{content:'\e7ae'}.layui-icon-left-square:before{content:'\e7af'}.layui-icon-play-square:before{content:'\e7b0'}.layui-icon-control:before{content:'\e7b1'}.layui-icon-codelibrary:before{content:'\e7b2'}.layui-icon-detail:before{content:'\e7b3'}.layui-icon-minus-square:before{content:'\e7b4'}.layui-icon-plus-square:before{content:'\e7b5'}.layui-icon-right-square:before{content:'\e7b6'}.layui-icon-project:before{content:'\e7b7'}.layui-icon-wallet:before{content:'\e7b8'}.layui-icon-up-square:before{content:'\e7b9'}.layui-icon-calculator:before{content:'\e7ba'}.layui-icon-interation:before{content:'\e7bb'}.layui-icon-check-square:before{content:'\e7bc'}.layui-icon-border:before{content:'\e7bd'}.layui-icon-border-outer:before{content:'\e7be'}.layui-icon-border-top:before{content:'\e7bf'}.layui-icon-border-bottom:before{content:'\e7c0'}.layui-icon-border-left:before{content:'\e7c1'}.layui-icon-border-right:before{content:'\e7c2'}.layui-icon-border-inner:before{content:'\e7c3'}.layui-icon-border-verticle:before{content:'\e7c4'}.layui-icon-border-horizontal:before{content:'\e7c5'}.layui-icon-radius-bottomleft:before{content:'\e7c6'}.layui-icon-radius-bottomright:before{content:'\e7c7'}.layui-icon-radius-upleft:before{content:'\e7c8'}.layui-icon-radius-upright:before{content:'\e7c9'}.layui-icon-radius-setting:before{content:'\e7ca'}.layui-icon-adduser:before{content:'\e7cb'}.layui-icon-deleteteam:before{content:'\e7cc'}.layui-icon-deleteuser:before{content:'\e7cd'}.layui-icon-addteam:before{content:'\e7ce'}.layui-icon-user:before{content:'\e7cf'}.layui-icon-team:before{content:'\e7d0'}.layui-icon-areachart:before{content:'\e7d1'}.layui-icon-linechart:before{content:'\e7d2'}.layui-icon-barchart:before{content:'\e7d3'}.layui-icon-pointmap:before{content:'\e7d4'}.layui-icon-container:before{content:'\e7d5'}.layui-icon-database:before{content:'\e7d6'}.layui-icon-sever:before{content:'\e7d7'}.layui-icon-mobile:before{content:'\e7d8'}.layui-icon-tablet:before{content:'\e7d9'}.layui-icon-redenvelope:before{content:'\e7da'}.layui-icon-book:before{content:'\e7db'}.layui-icon-filedone:before{content:'\e7dc'}.layui-icon-reconciliation:before{content:'\e7dd'}.layui-icon-file-exception:before{content:'\e7de'}.layui-icon-filesync:before{content:'\e7df'}.layui-icon-filesearch:before{content:'\e7e0'}.layui-icon-solution:before{content:'\e7e1'}.layui-icon-fileprotect:before{content:'\e7e2'}.layui-icon-file-add:before{content:'\e7e3'}.layui-icon-file-excel:before{content:'\e7e4'}.layui-icon-file-exclamation:before{content:'\e7e5'}.layui-icon-file-pdf:before{content:'\e7e6'}.layui-icon-file-image:before{content:'\e7e7'}.layui-icon-file-markdown:before{content:'\e7e8'}.layui-icon-file-unknown:before{content:'\e7e9'}.layui-icon-file-ppt:before{content:'\e7ea'}.layui-icon-file-word:before{content:'\e7eb'}.layui-icon-file:before{content:'\e7ec'}.layui-icon-file-zip:before{content:'\e7ed'}.layui-icon-file-text:before{content:'\e7ee'}.layui-icon-file-copy:before{content:'\e7ef'}.layui-icon-snippets:before{content:'\e7f0'}.layui-icon-audit:before{content:'\e7f1'}.layui-icon-diff:before{content:'\e7f2'}.layui-icon-Batchfolding:before{content:'\e7f3'}.layui-icon-securityscan:before{content:'\e7f4'}.layui-icon-propertysafety:before{content:'\e7f5'}.layui-icon-safetycertificate:before{content:'\e7f6'}.layui-icon-insurance:before{content:'\e7f7'}.layui-icon-alert:before{content:'\e7f8'}.layui-icon-delete:before{content:'\e7f9'}.layui-icon-hourglass:before{content:'\e7fa'}.layui-icon-bulb:before{content:'\e7fb'}.layui-icon-experiment:before{content:'\e7fc'}.layui-icon-bell:before{content:'\e7fd'}.layui-icon-trophy:before{content:'\e7fe'}.layui-icon-rest:before{content:'\e7ff'}.layui-icon-USB:before{content:'\e800'}.layui-icon-skin:before{content:'\e801'}.layui-icon-home:before{content:'\e802'}.layui-icon-bank:before{content:'\e803'}.layui-icon-filter:before{content:'\e804'}.layui-icon-funnelplot:before{content:'\e805'}.layui-icon-like:before{content:'\e806'}.layui-icon-unlike:before{content:'\e807'}.layui-icon-unlock:before{content:'\e808'}.layui-icon-lock:before{content:'\e809'}.layui-icon-customerservice:before{content:'\e80a'}.layui-icon-flag:before{content:'\e80b'}.layui-icon-moneycollect:before{content:'\e80c'}.layui-icon-medicinebox:before{content:'\e80d'}.layui-icon-shop:before{content:'\e80e'}.layui-icon-rocket:before{content:'\e80f'}.layui-icon-shopping:before{content:'\e810'}.layui-icon-folder:before{content:'\e811'}.layui-icon-folder-open:before{content:'\e812'}.layui-icon-folder-add:before{content:'\e813'}.layui-icon-deploymentunit:before{content:'\e814'}.layui-icon-accountbook:before{content:'\e815'}.layui-icon-contacts:before{content:'\e816'}.layui-icon-carryout:before{content:'\e817'}.layui-icon-calendar-check:before{content:'\e818'}.layui-icon-calendar:before{content:'\e819'}.layui-icon-scan:before{content:'\e81a'}.layui-icon-select:before{content:'\e81b'}.layui-icon-boxplot:before{content:'\e81c'}.layui-icon-build:before{content:'\e81d'}.layui-icon-sliders:before{content:'\e81e'}.layui-icon-laptop:before{content:'\e81f'}.layui-icon-barcode:before{content:'\e820'}.layui-icon-camera:before{content:'\e821'}.layui-icon-cluster:before{content:'\e822'}.layui-icon-gateway:before{content:'\e823'}.layui-icon-car:before{content:'\e824'}.layui-icon-printer:before{content:'\e825'}.layui-icon-read:before{content:'\e826'}.layui-icon-cloud-server:before{content:'\e827'}.layui-icon-cloud-upload:before{content:'\e828'}.layui-icon-cloud:before{content:'\e829'}.layui-icon-cloud-download:before{content:'\e82a'}.layui-icon-cloud-sync:before{content:'\e82b'}.layui-icon-video:before{content:'\e82c'}.layui-icon-notification:before{content:'\e82d'}.layui-icon-sound:before{content:'\e82e'}.layui-icon-radarchart:before{content:'\e82f'}.layui-icon-qrcode:before{content:'\e830'}.layui-icon-fund:before{content:'\e831'}.layui-icon-image:before{content:'\e832'}.layui-icon-mail:before{content:'\e833'}.layui-icon-table:before{content:'\e834'}.layui-icon-idcard:before{content:'\e835'}.layui-icon-creditcard:before{content:'\e836'}.layui-icon-heart:before{content:'\e837'}.layui-icon-block:before{content:'\e838'}.layui-icon-error:before{content:'\e839'}.layui-icon-star:before{content:'\e83a'}.layui-icon-gold:before{content:'\e83b'}.layui-icon-heatmap:before{content:'\e83c'}.layui-icon-wifi:before{content:'\e83d'}.layui-icon-attachment:before{content:'\e83e'}.layui-icon-edit:before{content:'\e83f'}.layui-icon-key:before{content:'\e840'}.layui-icon-api:before{content:'\e841'}.layui-icon-disconnect:before{content:'\e842'}.layui-icon-highlight:before{content:'\e843'}.layui-icon-monitor:before{content:'\e844'}.layui-icon-link:before{content:'\e845'}.layui-icon-man:before{content:'\e846'}.layui-icon-percentage:before{content:'\e847'}.layui-icon-search:before{content:'\e848'}.layui-icon-pushpin:before{content:'\e849'}.layui-icon-phone:before{content:'\e84a'}.layui-icon-shake:before{content:'\e84b'}.layui-icon-tag:before{content:'\e84c'}.layui-icon-wrench:before{content:'\e84d'}.layui-icon-woman:before{content:'\e84e'}.layui-icon-tags:before{content:'\e84f'}.layui-icon-scissor:before{content:'\e850'}.layui-icon-mr:before{content:'\e851'}.layui-icon-share:before{content:'\e852'}.layui-icon-branches:before{content:'\e853'}.layui-icon-fork:before{content:'\e854'}.layui-icon-shrink:before{content:'\e855'}.layui-icon-arrawsalt:before{content:'\e856'}.layui-icon-verticalright:before{content:'\e857'}.layui-icon-verticalleft:before{content:'\e858'}.layui-icon-right:before{content:'\e859'}.layui-icon-left:before{content:'\e85a'}.layui-icon-up:before{content:'\e85b'}.layui-icon-down:before{content:'\e85c'}.layui-icon-fullscreen:before{content:'\e85d'}.layui-icon-fullscreen-exit:before{content:'\e85e'}.layui-icon-doubleleft:before{content:'\e85f'}.layui-icon-doubleright:before{content:'\e860'}.layui-icon-arrowright:before{content:'\e861'}.layui-icon-arrowup:before{content:'\e862'}.layui-icon-arrowleft:before{content:'\e863'}.layui-icon-arrowdown:before{content:'\e864'}.layui-icon-upload:before{content:'\e865'}.layui-icon-colum-height:before{content:'\e866'}.layui-icon-vertical-align-botto:before{content:'\e867'}.layui-icon-vertical-align-middl:before{content:'\e868'}.layui-icon-totop:before{content:'\e869'}.layui-icon-vertical-align-top:before{content:'\e86a'}.layui-icon-download:before{content:'\e86b'}.layui-icon-sort-descending:before{content:'\e86c'}.layui-icon-sort-ascending:before{content:'\e86d'}.layui-icon-fall:before{content:'\e86e'}.layui-icon-swap:before{content:'\e86f'}.layui-icon-stock:before{content:'\e870'}.layui-icon-rise:before{content:'\e871'}.layui-icon-indent:before{content:'\e872'}.layui-icon-outdent:before{content:'\e873'}.layui-icon-menu:before{content:'\e874'}.layui-icon-unorderedlist:before{content:'\e875'}.layui-icon-orderedlist:before{content:'\e876'}.layui-icon-align-right:before{content:'\e877'}.layui-icon-align-center:before{content:'\e878'}.layui-icon-align-left:before{content:'\e879'}.layui-icon-pic-center:before{content:'\e87a'}.layui-icon-pic-right:before{content:'\e87b'}.layui-icon-pic-left:before{content:'\e87c'}.layui-icon-bold:before{content:'\e87d'}.layui-icon-font-colors:before{content:'\e87e'}.layui-icon-exclaimination:before{content:'\e87f'}.layui-icon-font-size:before{content:'\e880'}.layui-icon-infomation:before{content:'\e881'}.layui-icon-line-height:before{content:'\e882'}.layui-icon-strikethrough:before{content:'\e883'}.layui-icon-underline:before{content:'\e884'}.layui-icon-number:before{content:'\e885'}.layui-icon-italic:before{content:'\e886'}.layui-icon-code:before{content:'\e887'}.layui-icon-column-width:before{content:'\e888'}.layui-icon-check:before{content:'\e889'}.layui-icon-ellipsis:before{content:'\e88a'}.layui-icon-dash:before{content:'\e88b'}.layui-icon-close:before{content:'\e88c'}.layui-icon-enter:before{content:'\e88d'}.layui-icon-line:before{content:'\e88e'}.layui-icon-minus:before{content:'\e88f'}.layui-icon-question:before{content:'\e890'}.layui-icon-plus:before{content:'\e891'}.layui-icon-rollback:before{content:'\e892'}.layui-icon-small-dash:before{content:'\e893'}.layui-icon-pause:before{content:'\e894'}.layui-icon-bg-colors:before{content:'\e895'}.layui-icon-crown:before{content:'\e896'}.layui-icon-drag:before{content:'\e897'}.layui-icon-desktop:before{content:'\e898'}.layui-icon-gift:before{content:'\e899'}.layui-icon-stop:before{content:'\e89a'}.layui-icon-fire:before{content:'\e89b'}.layui-icon-thunderbolt:before{content:'\e89c'}.layui-icon-check-circle-fill:before{content:'\e89d'}.layui-icon-left-circle-fill:before{content:'\e89e'}.layui-icon-down-circle-fill:before{content:'\e89f'}.layui-icon-minus-circle-fill:before{content:'\e8a0'}.layui-icon-close-circle-fill:before{content:'\e8a1'}.layui-icon-info-circle-fill:before{content:'\e8a2'}.layui-icon-up-circle-fill:before{content:'\e8a3'}.layui-icon-right-circle-fill:before{content:'\e8a4'}.layui-icon-plus-circle-fill:before{content:'\e8a5'}.layui-icon-question-circle-fill:before{content:'\e8a6'}.layui-icon-EURO-circle-fill:before{content:'\e8a7'}.layui-icon-frown-fill:before{content:'\e8a8'}.layui-icon-copyright-circle-fil:before{content:'\e8a9'}.layui-icon-CI-circle-fill:before{content:'\e8aa'}.layui-icon-compass-fill:before{content:'\e8ab'}.layui-icon-Dollar-circle-fill:before{content:'\e8ac'}.layui-icon-poweroff-circle-fill:before{content:'\e8ad'}.layui-icon-meh-fill:before{content:'\e8ae'}.layui-icon-play-circle-fill:before{content:'\e8af'}.layui-icon-Pound-circle-fill:before{content:'\e8b0'}.layui-icon-smile-fill:before{content:'\e8b1'}.layui-icon-stop-fill:before{content:'\e8b2'}.layui-icon-warning-circle-fill:before{content:'\e8b3'}.layui-icon-time-circle-fill:before{content:'\e8b4'}.layui-icon-trademark-circle-fil:before{content:'\e8b5'}.layui-icon-YUAN-circle-fill:before{content:'\e8b6'}.layui-icon-heart-fill:before{content:'\e8b7'}.layui-icon-piechart-circle-fil:before{content:'\e8b8'}.layui-icon-dashboard-fill:before{content:'\e8b9'}.layui-icon-message-fill:before{content:'\e8ba'}.layui-icon-check-square-fill:before{content:'\e8bb'}.layui-icon-down-square-fill:before{content:'\e8bc'}.layui-icon-minus-square-fill:before{content:'\e8bd'}.layui-icon-close-square-fill:before{content:'\e8be'}.layui-icon-codelibrary-fill:before{content:'\e8bf'}.layui-icon-left-square-fill:before{content:'\e8c0'}.layui-icon-play-square-fill:before{content:'\e8c1'}.layui-icon-up-square-fill:before{content:'\e8c2'}.layui-icon-right-square-fill:before{content:'\e8c3'}.layui-icon-plus-square-fill:before{content:'\e8c4'}.layui-icon-accountbook-fill:before{content:'\e8c5'}.layui-icon-carryout-fill:before{content:'\e8c6'}.layui-icon-calendar-fill:before{content:'\e8c7'}.layui-icon-calculator-fill:before{content:'\e8c8'}.layui-icon-interation-fill:before{content:'\e8c9'}.layui-icon-project-fill:before{content:'\e8ca'}.layui-icon-detail-fill:before{content:'\e8cb'}.layui-icon-save-fill:before{content:'\e8cc'}.layui-icon-wallet-fill:before{content:'\e8cd'}.layui-icon-control-fill:before{content:'\e8ce'}.layui-icon-layout-fill:before{content:'\e8cf'}.layui-icon-appstore-fill:before{content:'\e8d0'}.layui-icon-mobile-fill:before{content:'\e8d1'}.layui-icon-tablet-fill:before{content:'\e8d2'}.layui-icon-book-fill:before{content:'\e8d3'}.layui-icon-redenvelope-fill:before{content:'\e8d4'}.layui-icon-safetycertificate-f:before{content:'\e8d5'}.layui-icon-propertysafety-fill:before{content:'\e8d6'}.layui-icon-insurance-fill:before{content:'\e8d7'}.layui-icon-securityscan-fill:before{content:'\e8d8'}.layui-icon-file-exclamation-fil:before{content:'\e8d9'}.layui-icon-file-add-fill:before{content:'\e8da'}.layui-icon-file-fill:before{content:'\e8db'}.layui-icon-file-excel-fill:before{content:'\e8dc'}.layui-icon-file-markdown-fill:before{content:'\e8dd'}.layui-icon-file-text-fill:before{content:'\e8de'}.layui-icon-file-ppt-fill:before{content:'\e8df'}.layui-icon-file-unknown-fill:before{content:'\e8e0'}.layui-icon-file-word-fill:before{content:'\e8e1'}.layui-icon-file-zip-fill:before{content:'\e8e2'}.layui-icon-file-pdf-fill:before{content:'\e8e3'}.layui-icon-file-image-fill:before{content:'\e8e4'}.layui-icon-diff-fill:before{content:'\e8e5'}.layui-icon-file-copy-fill:before{content:'\e8e6'}.layui-icon-snippets-fill:before{content:'\e8e7'}.layui-icon-batchfolding-fill:before{content:'\e8e8'}.layui-icon-reconciliation-fill:before{content:'\e8e9'}.layui-icon-folder-add-fill:before{content:'\e8ea'}.layui-icon-folder-fill:before{content:'\e8eb'}.layui-icon-folder-open-fill:before{content:'\e8ec'}.layui-icon-database-fill:before{content:'\e8ed'}.layui-icon-container-fill:before{content:'\e8ee'}.layui-icon-sever-fill:before{content:'\e8ef'}.layui-icon-calendar-check-fill:before{content:'\e8f0'}.layui-icon-image-fill:before{content:'\e8f1'}.layui-icon-idcard-fill:before{content:'\e8f2'}.layui-icon-creditcard-fill:before{content:'\e8f3'}.layui-icon-fund-fill:before{content:'\e8f4'}.layui-icon-read-fill:before{content:'\e8f5'}.layui-icon-contacts-fill:before{content:'\e8f6'}.layui-icon-delete-fill:before{content:'\e8f7'}.layui-icon-notification-fill:before{content:'\e8f8'}.layui-icon-flag-fill:before{content:'\e8f9'}.layui-icon-moneycollect-fill:before{content:'\e8fa'}.layui-icon-medicinebox-fill:before{content:'\e8fb'}.layui-icon-rest-fill:before{content:'\e8fc'}.layui-icon-shopping-fill:before{content:'\e8fd'}.layui-icon-skin-fill:before{content:'\e8fe'}.layui-icon-video-fill:before{content:'\e8ff'}.layui-icon-sound-fill:before{content:'\e900'}.layui-icon-bulb-fill:before{content:'\e901'}.layui-icon-bell-fill:before{content:'\e902'}.layui-icon-filter-fill:before{content:'\e903'}.layui-icon-fire-fill:before{content:'\e904'}.layui-icon-funnelplot-fill:before{content:'\e905'}.layui-icon-gift-fill:before{content:'\e906'}.layui-icon-hourglass-fill:before{content:'\e907'}.layui-icon-home-fill:before{content:'\e908'}.layui-icon-trophy-fill:before{content:'\e909'}.layui-icon-location-fill:before{content:'\e90a'}.layui-icon-cloud-fill:before{content:'\e90b'}.layui-icon-customerservice-fill:before{content:'\e90c'}.layui-icon-experiment-fill:before{content:'\e90d'}.layui-icon-eye-fill:before{content:'\e90e'}.layui-icon-like-fill:before{content:'\e90f'}.layui-icon-lock-fill:before{content:'\e910'}.layui-icon-unlike-fill:before{content:'\e911'}.layui-icon-star-fill:before{content:'\e912'}.layui-icon-unlock-fill:before{content:'\e913'}.layui-icon-alert-fill:before{content:'\e914'}.layui-icon-api-fill:before{content:'\e915'}.layui-icon-highlight-fill:before{content:'\e916'}.layui-icon-phone-fill:before{content:'\e917'}.layui-icon-edit-fill:before{content:'\e918'}.layui-icon-pushpin-fill:before{content:'\e919'}.layui-icon-rocket-fill:before{content:'\e91a'}.layui-icon-thunderbolt-fill:before{content:'\e91b'}.layui-icon-tag-fill:before{content:'\e91c'}.layui-icon-wrench-fill:before{content:'\e91d'}.layui-icon-tags-fill:before{content:'\e91e'}.layui-icon-bank-fill:before{content:'\e91f'}.layui-icon-camera-fill:before{content:'\e920'}.layui-icon-error-fill:before{content:'\e921'}.layui-icon-crown-fill:before{content:'\e922'}.layui-icon-mail-fill:before{content:'\e923'}.layui-icon-car-fill:before{content:'\e924'}.layui-icon-printer-fill:before{content:'\e925'}.layui-icon-shop-fill:before{content:'\e926'}.layui-icon-setting-fill:before{content:'\e927'}.layui-icon-USB-fill:before{content:'\e928'}.layui-icon-golden-fill:before{content:'\e929'}.layui-icon-build-fill:before{content:'\e92a'}.layui-icon-boxplot-fill:before{content:'\e92b'}.layui-icon-sliders-fill:before{content:'\e92c'}.layui-icon-alibaba:before{content:'\e92d'}.layui-icon-alibabacloud:before{content:'\e92e'}.layui-icon-antdesign:before{content:'\e92f'}.layui-icon-ant-cloud:before{content:'\e930'}.layui-icon-behance:before{content:'\e931'}.layui-icon-googleplus:before{content:'\e932'}.layui-icon-medium:before{content:'\e933'}.layui-icon-google:before{content:'\e934'}.layui-icon-IE:before{content:'\e935'}.layui-icon-amazon:before{content:'\e936'}.layui-icon-slack:before{content:'\e937'}.layui-icon-alipay:before{content:'\e938'}.layui-icon-taobao:before{content:'\e939'}.layui-icon-zhihu:before{content:'\e93a'}.layui-icon-HTML:before{content:'\e93b'}.layui-icon-linkedin:before{content:'\e93c'}.layui-icon-yahoo:before{content:'\e93d'}.layui-icon-facebook:before{content:'\e93e'}.layui-icon-skype:before{content:'\e93f'}.layui-icon-CodeSandbox:before{content:'\e940'}.layui-icon-chrome:before{content:'\e941'}.layui-icon-codepen:before{content:'\e942'}.layui-icon-aliwangwang:before{content:'\e943'}.layui-icon-apple:before{content:'\e944'}.layui-icon-android:before{content:'\e945'}.layui-icon-sketch:before{content:'\e946'}.layui-icon-Gitlab:before{content:'\e947'}.layui-icon-dribbble:before{content:'\e948'}.layui-icon-instagram:before{content:'\e949'}.layui-icon-reddit:before{content:'\e94a'}.layui-icon-windows:before{content:'\e94b'}.layui-icon-yuque:before{content:'\e94c'}.layui-icon-Youtube:before{content:'\e94d'}.layui-icon-Gitlab-fill:before{content:'\e94e'}.layui-icon-dropbox:before{content:'\e94f'}.layui-icon-dingtalk:before{content:'\e950'}.layui-icon-android-fill:before{content:'\e951'}.layui-icon-apple-fill:before{content:'\e952'}.layui-icon-HTML-fill:before{content:'\e953'}.layui-icon-windows-fill:before{content:'\e954'}.layui-icon-QQ:before{content:'\e955'}.layui-icon-twitter:before{content:'\e956'}.layui-icon-skype-fill:before{content:'\e957'}.layui-icon-weibo:before{content:'\e958'}.layui-icon-yuque-fill:before{content:'\e959'}.layui-icon-Youtube-fill:before{content:'\e95a'}.layui-icon-yahoo-fill:before{content:'\e95b'}.layui-icon-wechat-fill:before{content:'\e95c'}.layui-icon-chrome-fill:before{content:'\e95d'}.layui-icon-alipay-circle-fill:before{content:'\e95e'}.layui-icon-aliwangwang-fill:before{content:'\e95f'}.layui-icon-behance-circle-fill:before{content:'\e960'}.layui-icon-amazon-circle-fill:before{content:'\e961'}.layui-icon-codepen-circle-fill:before{content:'\e962'}.layui-icon-CodeSandbox-circle-f:before{content:'\e963'}.layui-icon-dropbox-circle-fill:before{content:'\e964'}.layui-icon-github-fill:before{content:'\e965'}.layui-icon-dribbble-circle-fill:before{content:'\e966'}.layui-icon-googleplus-circle-f:before{content:'\e967'}.layui-icon-medium-circle-fill:before{content:'\e968'}.layui-icon-QQ-circle-fill:before{content:'\e969'}.layui-icon-IE-circle-fill:before{content:'\e96a'}.layui-icon-google-circle-fill:before{content:'\e96b'}.layui-icon-dingtalk-circle-fill:before{content:'\e96c'}.layui-icon-sketch-circle-fill:before{content:'\e96d'}.layui-icon-slack-circle-fill:before{content:'\e96e'}.layui-icon-twitter-circle-fill:before{content:'\e96f'}.layui-icon-taobao-circle-fill:before{content:'\e970'}.layui-icon-weibo-circle-fill:before{content:'\e971'}.layui-icon-zhihu-circle-fill:before{content:'\e972'}.layui-icon-reddit-circle-fill:before{content:'\e973'}.layui-icon-alipay-square-fill:before{content:'\e974'}.layui-icon-dingtalk-square-fill:before{content:'\e975'}.layui-icon-CodeSandbox-square-f:before{content:'\e976'}.layui-icon-behance-square-fill:before{content:'\e977'}.layui-icon-amazon-square-fill:before{content:'\e978'}.layui-icon-codepen-square-fill:before{content:'\e979'}.layui-icon-dribbble-square-fill:before{content:'\e97a'}.layui-icon-dropbox-square-fill:before{content:'\e97b'}.layui-icon-facebook-fill:before{content:'\e97c'}.layui-icon-googleplus-square-f:before{content:'\e97d'}.layui-icon-google-square-fill:before{content:'\e97e'}.layui-icon-instagram-fill:before{content:'\e97f'}.layui-icon-IE-square-fill:before{content:'\e980'}.layui-icon-medium-square-fill:before{content:'\e981'}.layui-icon-linkedin-fill:before{content:'\e982'}.layui-icon-QQ-square-fill:before{content:'\e983'}.layui-icon-reddit-square-fill:before{content:'\e984'}.layui-icon-twitter-square-fill:before{content:'\e985'}.layui-icon-sketch-square-fill:before{content:'\e986'}.layui-icon-slack-square-fill:before{content:'\e987'}.layui-icon-taobao-square-fill:before{content:'\e988'}.layui-icon-weibo-square-fill:before{content:'\e989'}.layui-icon-zhihu-square-fill:before{content:'\e98a'}.layui-icon-zoomout:before{content:'\e98b'}.layui-icon-apartment:before{content:'\e98c'}.layui-icon-audio:before{content:'\e98d'}.layui-icon-audio-fill:before{content:'\e98e'}.layui-icon-robot:before{content:'\e98f'}.layui-icon-zoomin:before{content:'\e990'}.table-action-area{padding-top:.15rem;margin-bottom:1rem}.table-action-area .layui-icon{margin-right:0}.layui-table-form .layui-input{height:32px !important;color:#606266;}.layui-form-label-sm{width:56px}.layui-form-radio > i{font-size:20px !important}.table-action-area .layui-btn + .layui-btn{margin-left:6px !important}.layui-table[lay-skin='line'] th{border-bottom:none;background-color:#fafafa}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:9px 0}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-color:#f2f2f2}.layui-table-header{border-bottom:none;}.layui-laypage a,.layui-laypage span{font-size:13px !important}.layui-user dl dd a:hover,.layui-form-select dl dd:hover{background:#e6f7ff !important;color:#1890ff !important}.layui-badge{height:23px;line-height:23px;padding:0 9px}.layui-table[lay-skin=line]{border-width:0 0 0 0 !important;width:100%}.layui-laypage-curr .layui-laypage-em{background:#e6f7ff !important;border:1px solid #91d5ff}.layui-laypage .layui-laypage-curr em{color:#1890ff !important}.layui-form-select dl dd.layui-this{background:#e6f7ff !important;color:#1890ff !important}.layui-laydate-content td.laydate-selected{background-color:#e6f7ff !important}.layui-laydate td{border-radius:0 !important}.febs-tag-green{color:#52c41a;background:#f6ffed;border:1px solid #b7eb8f}.febs-tag-magenta{color:#eb2f96;background:#fff0f6;border:1px solid #ffadd2}.febs-tag-orange{color:#fa8c16;background:#fff7e6;border:1px solid #ffd591}.febs-tag-red{color:#f5222d;background:#fff1f0;border:1px solid #ffa39e}.febs-tag-volcano{color:#fa541c;background:#fff2e8;border:1px solid #ffbb96}.febs-tag-gold{color:#faad14;background:#fffbe6;border:1px solid #ffe58f}.febs-tag-lime{color:#a0d911;background:#fcffe6;border:1px solid #eaff8f}.febs-tag-cyan{color:#13c2c2;background:#e6fffb;border:1px solid #87e8de}.febs-tag-blue{color:#1890ff;background:#e6f7ff;border:1px solid #91d5ff}.febs-tag-geekblue{color:#2f54eb;background:#f0f5ff;border:1px solid #adc6ff}.febs-tag-purple{color:#722ed1;background:#f9f0ff;border:1px solid #d3adf7}.febs-green{color:#52c41a}.febs-magenta{color:#eb2f96}.febs-orange{color:#fa8c16}.febs-red{color:#f5222d}.febs-volcano{color:#fa541c}.febs-gold{color:#faad14}.febs-lime{color:#a0d911}.febs-cyan{color:#13c2c2}.febs-blue{color:#1890ff}.febs-geekblue{color:#2f54eb}.febs-purple{color:#722ed1}.febs-button-blue-plain{color:#409eff;background:#ecf5ff !important;border-color:#b3d8ff;}.febs-button-green-plain{color:#67c23a;background:#f0f9eb !important;border-color:#c2e7b0;}.febs-button-blue-plain:hover{color:#409eff;background:#ecf5ff !important;border-color:#b3d8ff;box-shadow:0 4px 8px 0 #b3d8ff;}.febs-button-green-plain:hover{color:#67c23a;background:#f0f9eb !important;border-color:#c2e7b0;box-shadow:0 4px 8px 0 #c2e7b0;}.febs-bg-green{background:#52c41a}.febs-bg-orange{background:#fa8c16}.febs-bg-red{background:#f5222d}.febs-bg-magenta{background:#eb2f96}.febs-bg-gold{background:#faad14}.febs-bg-volcano{background:#fa541c}.febs-bg-lime{background:#a0d911}.febs-bg-cyan{background:#13c2c2}.febs-bg-blue{background:#1890ff}.febs-bg-geekblue{background:#2f54eb}.febs-bg-purple{background:#722ed1}.febs-alert{border:1px solid #fff !important;box-shadow:3px 2px 9px rgba(0,0,0,0.1) !important}.febs-edit-area{font-size:18px;margin-right:5px}.febs-form-item-require:before{display:inline-block;margin-right:4px;content:"*";line-height:1;font-size:13px;color:#f5222d}.layui-table-form .layui-form-item{margin-bottom:0.6rem !important}.layui-form.layui-border-box.layui-table-view{margin-top:.5rem}.febs-container{padding:6px}.layui-form-item .layui-inline{margin-right:0 !important}.layui-form-label-xs{width:45px}.febs-alert-base{margin:3px 0 3px 0;display:block;border-radius:2px;padding:8px 15px 8px 15px}.febs-alert-success{border:1px solid #b7eb8f;background-color:#f6ffed}.febs-alert-info{border:1px solid #91d5ff;background-color:#e6f7ff}.febs-alert-warn{border:1px solid #ffe58f;background-color:#fffbe6}.febs-alert-error{border:1px solid #ffa39e;background-color:#fff1f0}.febs-hide{display:none}.layui-disabled,.layui-disabled:hover{color:rgba(0,0,0,.65) !important;cursor:not-allowed !important}.layui-radio-disbaled > i{color:#ff9776 !important}.layui-nav-itemed > .layui-nav-child{background-color:#272c33 !important}.febs-theme-white{background-color:#fff !important}.febs-theme-white .layui-logo span{color:#1890ff !important;font-weight:600}.febs-theme-white .layui-nav .layui-nav-item a,.febs-theme-white .layui-nav .layui-this a{color:rgba(0,0,0,0.65)}.febs-theme-white .layui-nav .layui-nav-item a:hover,.febs-theme-white .layui-nav .layui-this a{color:rgba(0,0,0,0.65)}.febs-theme-white .layui-nav-itemed > a{color:rgba(0,0,0,0.65) !important}.febs-theme-white .layui-nav-itemed > .layui-nav-child{background-color:#fff !important}#app-sidebar.febs-theme-white .layui-nav-tree .layui-this{background-color:#fff !important}.febs-theme-white .layui-nav-tree .layui-nav-child dd.layui-this a{background-color:#e6f7ff !important;color:#1890ff !important}.febs-theme-white .layui-nav-itemed .layui-nav-child{box-shadow:none !important}.febs-sidebar-shrink #app-sidebar.febs-theme-white .layui-nav-itemed{background-color:#fff !important}.febs-theme-white .layui-nav .layui-nav-mored,.febs-theme-white .layui-nav-itemed > a .layui-nav-more{border-color:transparent transparent rgba(0,0,0,.5)}.febs-theme-white .layui-nav .layui-nav-more{border-color:rgba(0,0,0,.5) transparent transparent}.febs-tabs-wrap .febs-tabs-ball{display:inline-block;height:5px;width:5px;border-radius:50%;background:#fff;vertical-align:middle;margin-right:7px;position:relative;top:-1px;transition:background .4s ease}.febs-tabs-wrap li.febs-tabs-active .febs-tabs-ball{background-color:#85ef47 !important;box-shadow:0 0 7px #b7eb8f}.layui-badge-dot{width:6px !important;height:6px !important;vertical-align:middle}.layui-anim{-webkit-animation-duration:.4s !important;animation-duration:.4s !important}@keyframes febs-anim{from{transform:translate3d(30px,0,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.febs-anim{-webkit-animation-name:febs-anim;animation-name:febs-anim}@keyframes febs-anim-right{from{transform:translate3d(-30px,0,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.febs-anim-right{-webkit-animation-name:febs-anim-right;animation-name:febs-anim-right}@keyframes febs-anim-down{from{transform:translate3d(0,-30px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.febs-anim-down{-webkit-animation-name:febs-anim-down;animation-name:febs-anim-down}@keyframes febs-anim-up{from{transform:translate3d(0,30px,0);opacity:0}to{transform:translate3d(0,0,0);opacity:1}}.febs-anim-up{-webkit-animation-name:febs-anim-up;animation-name:febs-anim-up}.layui-user .layui-nav-child dd.layui-this a,.layui-user dd.layui-this{background-color:#fff !important;color:#111 !important;} \ No newline at end of file diff --git a/src/main/resources/static/febs/css/formSelects-v4.css b/src/main/resources/static/febs/css/formSelects-v4.css new file mode 100644 index 0000000..d136224 --- /dev/null +++ b/src/main/resources/static/febs/css/formSelects-v4.css @@ -0,0 +1,174 @@ +/* formSelects多选css */ +select[xm-select]{display: none !important;} +.xm-select-parent * {margin: 0;padding: 0;font-family: "Helvetica Neue", Helvetica, "PingFang SC", 微软雅黑, Tahoma, Arial, sans-serif; box-sizing: initial;} +.xm-select-parent {text-align: left;} +.xm-select-parent select {display: none;} +.xm-select-parent .xm-select-title {position: relative;min-height: 36px;} +.xm-select-parent .xm-input {cursor: pointer;border-radius: 2px;border-width: 1px;border-style: solid;border-color: #E6E6E6;display: block;width: 100%;box-sizing: border-box;background-color: #FFF;height: 36px;line-height: 1.3;padding-left: 10px;outline: 0} +.xm-select-parent .xm-select-sj {display: inline-block;width: 0;height: 0;border-style: dashed;border-color: transparent;overflow: hidden;position: absolute;right: 10px;top: 50%;margin-top: -3px;cursor: pointer;border-width: 6px;border-top-color: #C2C2C2;border-top-style: solid;transition: all .3s;-webkit-transition: all .3s} +.xm-select-parent .xm-form-selected .xm-select-sj {margin-top: -9px;transform: rotate(180deg)} +.xm-select-parent .xm-form-select dl {display: none;position: absolute;left: 0;top: 42px;padding: 5px 0;z-index: 999;min-width: 100%;border: 1px solid #d2d2d2;max-height: 300px;overflow-y: auto;background-color: #fff;border-radius: 2px;box-shadow: 0 2px 4px rgba(0, 0, 0, .12);box-sizing: border-box;animation-fill-mode: both;-webkit-animation-name: layui-upbit;animation-name: layui-upbit;-webkit-animation-duration: .3s;animation-duration: .3s;-webkit-animation-fill-mode: both;animation-fill-mode: both} +@-webkit-keyframes layui-upbit { + from {-webkit-transform: translate3d(0, 30px, 0);opacity: .3} + to {-webkit-transform: translate3d(0, 0, 0);opacity: 1} +} +@keyframes layui-upbit { + from {transform: translate3d(0, 30px, 0);opacity: .3} + to {transform: translate3d(0, 0, 0);opacity: 1} +} +.xm-select-parent .xm-form-selected dl {display: block} +.xm-select-parent .xm-form-select dl dd,.xm-select-parent .xm-form-select dl dt {padding: 0 10px;line-height: 36px;white-space: nowrap;overflow: hidden;text-overflow: ellipsis} +.xm-select-parent .xm-form-select dl dd {cursor: pointer;height: 36px;} +.xm-select-parent .xm-form-select dl dd:hover {background-color: #f2f2f2} +.xm-select-parent .xm-form-select dl dt {font-size: 12px;color: #999} +.layui-select-disabled .xm-dis-disabled {border-color: #eee!important} +.xm-select-parent .xm-form-select dl .xm-select-tips {padding-left: 10px!important;color: #999;font-size: 14px} +.xm-unselect {-moz-user-select: none;-webkit-user-select: none;-ms-user-select: none} + +.xm-form-checkbox {position: relative;display: block;vertical-align: middle;cursor: pointer;font-size: 0;-webkit-transition: .1s linear;transition: .1s linear;box-sizing: border-box;height: auto!important;line-height: normal!important;border: none!important;margin-right: 0;padding-right: 0;background: 0 0;} +.xm-form-checkbox > i {color: #FFF; font-size: 16px; width: 16px; height: 16px; position: absolute; top: 9px; border: 1px solid #5FB878; border-radius: 2px; z-index: 2;} +.xm-form-checkbox:hover > i {border-color: #5FB878;} +.xm-form-checkbox > span{display: block;position: relative;padding: 0 15px 0 30px;height: 100%;font-size: 14px;border-radius: 2px 0 0 2px;background-color: #d2d2d2;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;background: 0 0;color: #666;line-height: 36px;} + +.xm-select-parent dl{width: 100%;} +.xm-select-parent dl dd{position: relative;} +.xm-select-parent dl dd > i:not(.icon-sousuo){position: absolute; right: 10px; top: 0; color: #AAAAAA;} +.xm-select-parent dl dd.xm-select-this div i {border: none; color: #5FB878; font-size: 18px;} +.xm-select-parent dl dd.xm-select-this div i:after{content: '\e613';} +.xm-select-parent dl dd.xm-dis-disabled div i {border-color: #C2C2C2;} +.xm-select-parent dl dd.xm-dis-disabled.xm-select-this div i {color: #C2C2C2;} +.xm-select-radio div.xm-form-checkbox > i {border-radius: 20px;} +.xm-select-parent dl.xm-select-radio dd.xm-select-this div i:after{content: '\e62b';} + +.xm-dis-disabled,.xm-dis-disabled:hover {cursor: not-allowed!important} +.xm-form-select dl dd.xm-dis-disabled {background-color: #fff!important} +.xm-form-select dl dd.xm-dis-disabled span {color: #C2C2C2} +.xm-form-select dl dd.xm-dis-disabled .xm-icon-yes {border-color: #C2C2C2} +.xm-select-parent {position: relative;-moz-user-select: none;-ms-user-select: none;-webkit-user-select: none} +.xm-select-parent .xm-select {line-height: normal;height: auto;padding: 4px 10px 1px 10px;overflow: hidden;min-height: 36px;left: 0;z-index: 99;position: absolute;background: 0 0;padding-right: 20px} +.xm-select-parent .xm-select:hover {border-color: #C0C4CC} +.xm-select-parent .xm-select .xm-select-label {display: inline-block;margin: 0;vertical-align: middle} +.xm-select-parent .xm-select-title div.xm-select-label>span {position: relative;padding: 2px 5px;background-color: #5FB878;border-radius: 2px;color: #FFF;display: inline-block;line-height: 18px;height: 18px;margin: 2px 5px 2px 0;cursor: initial;user-select: none;font-size: 14px;padding-right: 25px;-webkit-user-select: none;} +.xm-select-parent .xm-select-title div.xm-select-label>span i {position: absolute; margin-left: 8px; font-size: 12px; cursor: pointer; line-height: 20px;} +.xm-select-parent .xm-select .xm-select-input {border: none;height: 28px;background-color: transparent;padding: 0;vertical-align: middle;display: inline-block;width: 50px} +.xm-select-parent .xm-select--suffix input {border: none} +.xm-form-selected .xm-select,.xm-form-selected .xm-select:hover {border-color: #5FB878!important} +.xm-select--suffix+div {position: absolute;top: 0;left: 0;bottom: 0;right: 0} +.xm-select-dis .xm-select--suffix+div {z-index: 100;cursor: no-drop!important;opacity: .2;background-color: #FFF;} +.xm-select-disabled,.xm-select-disabled:hover {color: #d2d2d2!important;cursor: not-allowed!important;background-color: #fff} +.xm-select-none {display: none;margin: 5px 0;text-align: center;} +.xm-select-none:hover {background-color: #FFF!important} +.xm-select-empty {display: block} +.xm-span-hide {display: none!important;} +.layui-form-pane .xm-select,.layui-form-pane .xm-select:hover {border: none!important;top: 0px} +.layui-form-pane .xm-select-title {border: 1px solid #e6e6e6!important} +.xm-select-hide {display: none !important;} +div[xm-hg] .xm-select-label{white-space: nowrap; overflow: hidden; position: absolute; right: 30px; left: 0; padding-left: 10px;} + +/* 颜色相关 */ +div[xm-select-skin] .xm-select-title div.xm-select-label>span {border: 1px solid #5FB878} +div[xm-select-skin] .xm-select-title div.xm-select-label>span i:hover {opacity: .8;filter: alpha(opacity=80);cursor: pointer} +div[xm-select-skin=default] .xm-select-title div.xm-select-label>span {background-color: #F0F2F5;color: #909399;border: 1px solid #F0F2F5} +div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i {color: #C0C4CC} +div[xm-select-skin=default] .xm-select-title div.xm-select-label>span i:before {content: '\e60b'; font-size: 16px; margin-left: -3px;} +div[xm-select-skin=default] dl dd:not(.xm-dis-disabled) i {border-color: #5FB878} +div[xm-select-skin=default] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #5FB878} +div[xm-select-skin=default].xm-form-selected .xm-select,div[xm-select-skin=default].xm-form-selected .xm-select:hover {border-color: #C0C4CC!important} +div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span {background-color: #5FB878;color: #FFF;border: 1px solid #5FB878} +div[xm-select-skin=primary] .xm-select-title div.xm-select-label>span i {background-color: #5FB878; color: #FFF} +div[xm-select-skin=primary] dl dd:not(.xm-dis-disabled) i {border-color: #5FB878} +div[xm-select-skin=primary] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #5FB878} +div[xm-select-skin=primary].xm-form-selected .xm-select,div[xm-select-skin=primary].xm-form-selected .xm-select:hover {border-color: #5FB878!important} +div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span {background-color: #94b2fa;color: #FFF;border: 1px solid #94b2fa} +div[xm-select-skin=normal] .xm-select-title div.xm-select-label>span i {background-color: #94b2fa;color: #FFF} +div[xm-select-skin=normal] dl dd:not(.xm-dis-disabled) i {border-color: #94b2fa} +div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #94b2fa} +div[xm-select-skin=normal].xm-form-selected .xm-select,div[xm-select-skin=normal].xm-form-selected .xm-select:hover {border-color: #94b2fa!important} +div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span {background-color: #FFB800;color: #FFF;border: 1px solid #FFB800} +div[xm-select-skin=warm] .xm-select-title div.xm-select-label>span i {background-color: #FFB800;color: #FFF} +div[xm-select-skin=warm] dl dd:not(.xm-dis-disabled) i {border-color: #FFB800} +div[xm-select-skin=warm] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #FFB800} +div[xm-select-skin=warm].xm-form-selected .xm-select,div[xm-select-skin=warm].xm-form-selected .xm-select:hover {border-color: #FFB800!important} +div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span {background-color: #FF5722;color: #FFF;border: 1px solid #FF5722} +div[xm-select-skin=danger] .xm-select-title div.xm-select-label>span i {background-color: #FF5722;color: #FFF} +div[xm-select-skin=danger] dl dd:not(.xm-dis-disabled) i {border-color: #FF5722} +div[xm-select-skin=danger] dl dd.xm-select-this:not(.xm-dis-disabled) i {color: #FF5722} +div[xm-select-skin=danger].xm-form-selected .xm-select,div[xm-select-skin=danger].xm-form-selected .xm-select:hover {border-color: #FF5722!important} + + +/* 多选联动 */ +.xm-select-parent .layui-form-danger+.xm-select-title .xm-select {border-color: #FF5722 !important;} +.xm-select-linkage li {padding: 10px 0px;cursor: pointer;} +.xm-select-linkage li span {padding-left: 20px;padding-right: 30px;display: inline-block;height: 20px;overflow: hidden;text-overflow: ellipsis;} +.xm-select-linkage li.xm-select-this span {border-left: 5px solid #5FB878;color: #5FB878;padding-left: 15px;} +.xm-select-linkage-group {position: absolute;left: 0;top: 0;right: 0;bottom: 0;overflow-x: hidden;overflow-y: auto;} +.xm-select-linkage-group li:hover {border-left: 1px solid #5FB878;} +.xm-select-linkage-group li:hover span {padding-left: 19px;} +.xm-select-linkage-group li.xm-select-this:hover span {padding-left: 15px;border-left-width: 4px;} +.xm-select-linkage-group:nth-child(4n+1){background-color: #EFEFEF; left: 0;} +.xm-select-linkage-group:nth-child(4n+1) li.xm-select-active{background-color: #F5F5F5;} +.xm-select-linkage-group:nth-child(4n+2){background-color: #F5F5F5; left: 100px;} +.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FAFAFA;} +.xm-select-linkage-group:nth-child(4n+3){background-color: #FAFAFA; left: 200px;} +.xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color: #FFFFFF;} +.xm-select-linkage-group:nth-child(4n+4){background-color: #FFFFFF; left: 300px;} +.xm-select-linkage-group:nth-child(4n+4) li.xm-select-active{background-color: #EFEFEF;} +.xm-select-linkage li{list-style: none;} +.xm-select-linkage-hide {display: none;} +.xm-select-linkage-show {display: block;} + +div[xm-select-skin='default'] .xm-select-linkage li.xm-select-this span {border-left-color: #5FB878;color: #5FB878;} +div[xm-select-skin='default'] .xm-select-linkage-group li:hover {border-left-color: #5FB878;} +div[xm-select-skin='primary'] .xm-select-linkage li.xm-select-this span {border-left-color: #94b2fa;color: #94b2fa;} +div[xm-select-skin='primary'] .xm-select-linkage-group li:hover {border-left-color: #94b2fa;} +div[xm-select-skin='normal'] .xm-select-linkage li.xm-select-this span {border-left-color: #94b2fa;color: #94b2fa;} +div[xm-select-skin='normal'] .xm-select-linkage-group li:hover {border-left-color: #94b2fa;} +div[xm-select-skin='warm'] .xm-select-linkage li.xm-select-this span {border-left-color: #FFB800;color: #FFB800;} +div[xm-select-skin='warm'] .xm-select-linkage-group li:hover {border-left-color: #FFB800;} +div[xm-select-skin='danger'] .xm-select-linkage li.xm-select-this span {border-left-color: #FF5722;color: #FF5722;} +div[xm-select-skin='danger'] .xm-select-linkage-group li:hover {border-left-color: #FF5722;} + + +/* 快捷操作 */ +.xm-select-tips[style]:hover{background-color: #FFF!important;} +.xm-select-parent dd > .xm-cz{position: absolute; top: 0px; right: 10px;} +.xm-select-parent dd > .xm-cz-group{margin-right: 30px; border-right: 2px solid #ddd; height: 16px; margin-top: 10px; line-height: 16px; overflow: hidden;} +.xm-select-parent dd > .xm-cz-group .xm-cz{display: inline-block; margin-right: 30px;} +.xm-select-parent dd > .xm-cz-group .xm-cz i{margin-right: 10px;} +.xm-select-parent dd > .xm-cz-group[show='name'] .xm-cz i{display: none;} +.xm-select-parent dd > .xm-cz-group[show='icon'] .xm-cz span{display: none;} +.xm-select-parent dd .xm-cz:hover{color: #5FB878;} +div[xm-select-skin='default'] dd .xm-cz:hover{color: #C0C4CC;} +div[xm-select-skin='primary'] dd .xm-cz:hover{color: #5FB878;} +div[xm-select-skin='normal'] dd .xm-cz:hover{color: #94b2fa;} +div[xm-select-skin='warm'] dd .xm-cz:hover{color: #FFB800;} +div[xm-select-skin='danger'] dd .xm-cz:hover{color: #FF5722;} + + +/* 下拉里面的搜索 */ +.xm-select-tips .xm-input{border: none; border-bottom: 1px solid #E6E6E6; padding-left: 27px;} +.xm-select-tips .icon-sousuo{position: absolute;} +.xm-select-tips.xm-dl-input{display: none;} +div[xm-select-search-type="1"] .xm-select-tips.xm-dl-input{display: block;} +div[xm-select-search-type="1"] .xm-select .xm-select-input{display: none !important;} + +/* 阿里巴巴矢量图标库 */ +@font-face {font-family: "xm-iconfont"; + src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831'); /* IE9*/ + src: url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.eot?t=1534240067831#iefix') format('embedded-opentype'), /* IE6-IE8 */ + url('data:application/x-font-woff;charset=utf-8;base64,d09GRgABAAAAAAsYAAsAAAAAEQwAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABCAAAADMAAABCsP6z7U9TLzIAAAE8AAAARAAAAFY8ukovY21hcAAAAYAAAACrAAACPBtV6wxnbHlmAAACLAAABnEAAAmMovtEvWhlYWQAAAigAAAAMQAAADYSctBCaGhlYQAACNQAAAAgAAAAJAgBA69obXR4AAAI9AAAABsAAAAwMCX//WxvY2EAAAkQAAAAGgAAABoN8gwubWF4cAAACSwAAAAeAAAAIAEiAM9uYW1lAAAJTAAAAUUAAAJtPlT+fXBvc3QAAAqUAAAAhAAAALJ1LunfeJxjYGRgYOBikGPQYWB0cfMJYeBgYGGAAJAMY05meiJQDMoDyrGAaQ4gZoOIAgCKIwNPAHicY2BkYWacwMDKwMHUyXSGgYGhH0IzvmYwYuRgYGBiYGVmwAoC0lxTGByeMbwwZ27438AQw9zMcAQozAiSAwDk4AxmeJzlks0JwzAMhZ8bN/1xD4GU0h2Se26BbJMJOkkn6KmTPbJF8mT5UGg3qMRn0EPIRs8A9gAq0YsIhDcCLF5SQ9YrnLMe8VB9RSMlMjCxYcueIyfOy7CuAFHU7lP9iqApt5L3ksBJbzlgZ9PVkXDUvbWa6x8T/i0u+XyWKtmmHW0NDI55yeRok2DjaKdg65jX7Bzzm71jXnN08vzJkQvg7Ng/WAYH9Qb3wzM/AHicjVVvbFzFEd/Zfbv7/vn9uXf33vl8Pt/dO99BHOzEZ9/DKTImRS0KjUoLDUFCjtpCMGkT1D9qldQmhkiUSv2G1BBB1VYqilGREOIDViWEGzttqkpI/cAXqyL5gFRALVIF+VCJe9fZd+fEpR/o6d3s7G9mZ2dmZ3aJIKR3h0ZYmVgkIjGZJV8mDxECtenOTDOu1UU+hJoD+TCqzcNMk2V8O5OCbDVRPgZhEt4JCNTZ/4HA3+DfuWIxl8pcFFErG3K7oD7fvev8UaMUmEu259lrRjBsfs6cLhYbRfzSbSjGRVAkfQYihUXsyPkHTVyyZDNmXzSHg3Tl+aPKxpJFqbWGdtLl8w8iYDxuDTQIx7yc1YCdIx7Jk3HSwbwQwGBcyMKZVtG0ZCuJxjFJBb+foMSfhJaPOSr4FYgwSwqIx2MHJALtAdBi/7xcSMJL+fxmmBS2guD61tZm96X02mgcj0J1NAaIR9UMmhXIV24FuLUC71+r1AEmK1AYrQHUK/Tly/m8MrOZz2+FSf7jzc3NK9XR9F2lVq+gmRp0r+HK9B+VJmR263Rgd7ALwR/FOFfx/FeJS0YxQh9drakgMJhaBVizkwgqWxLD6eQ0Qo8f7p44fJziSH9x+PjLZUO+/jZ9+K35X37ljn/Rv+yW4Ziuf2nl4PfS5/LrP47OHTsFJULYjf369UZAEBmSqEOSJmG4Me6LeznA0BFkcDoJlGynVzmH2vY21DhPr25v9DjvbfTp2TXG1s5mlK0q4S7lT++6obbRox/s6CHF2LMEsHvoFfSFQIKnKQMZJVFCD6WH0p0PVvvcRx8uph8eUks0jOFNtskOkpDsJ18k9+NqVRg3qqMCSSerjyRuYUi1/vFH7YIqikGVcD+ehFl/pqPSPKZ6DG6mHisljFhBFvU/PoRkSNd/JHO6Ja5JOXcfwIGJbm/igBq/hn8Kfb57YbYUxyX4cwkLKH1u4gD9GVSL6USxCjjCO2p8VdcvH9XRYIQWqUblu3pR/v2BvXMAc3tTmJiDAQ895B9NL0C9BFdKqqRKczDX/Whg7O1irVbcqZ8/sbfYBOZwihC+6wSDzszUf+dF7rRO1O+fKaDO+nXOr6+vf8L5J44Qe4UvnlyRntwrxMoKzpFdeRJBNb9dGyiur1+nE59R+uwi9M1G395jb9KP0bcK2YM9nJB5cojcS75OFskxclzdc+pW699z8iYbtf14BGKf77ruZNyXKC0e50OEBI+V/Aug5Dex/9WjJfipuqnS00gfybjXbNe1f762tXmRPp3Bdl/l6g5JXyqXR0bK8J3PR+jvwYs8/GBnTM+kr8FX4ZknwC16XtG9iH9QfNn1vDHPe2GAj3ieV3XdF2+IPdeteh62Ra+HfQrsKWKSBtlHSOBgM7KkKQBLWnZoq1mVwotCLRGhOtSkMzMuqq2ml3SqUehdnZtynbtPLB88/Dy9dDrYVzoy/MTT6Svnlpd/AHueon5wpnGsEae/PZm+d3Jp6SSUTy7R3xw4f9/B5RN3O+5t3VNncjm6Cnt+uLx8DpedGj4yvD84HceNxTcG6ku4VPmZ9n6nNdj95BHyB3IJKxBPsKm6rpn4QopmqzlFm1MwqdxO5rPGnIc7aSfCGg1Vqyo6nUlQhnh7WiFhXzgGhVC4qjPRki9xdGCc4zXeSWb9BG1ktlqz2Q5Y7S2sIJfivkpVKCCDpyCWdbQzECj76qMVqvyJ/LxyI2rTv1bTC25lSM9xAUJ4Lc+U0wXTsKXDmaA8tHX+hvDt4Wa9IHLcMUBz9VwpL4xi2aGasAPPKNUbbmD/2jAtk0uXY4eJx8zRgj9iAnVNt5X+BL5vlHTOaiOmG7g6+7ZBNUOaefNXuJF3u25RjVvBLeW8E4wV7ZJBpbAXXGnqrwgupWVTAKqZjq5HbW44fMguNJhgwmw8oOk8GCqE8F3GhLB0uS/UDVt4lgjtqGxK/rpwuaDAqKHZNuWmJjVKuWUxbpg2B9DtoRdN3TKF9B0hw4p41C5i3CI9w4civP3aQLlmLMK3wpJpaI7BvmlhPtH3nPWCKQAdE2hK9zyuUeAm921qCA2kvqY8N1yDMq4beJlG+4XQqHDCQnqPlJIyyN579S4tIGcRv/82BbFfK9SgnVHkZzMeaSQjqR5/fP5XF2Chh+sW0g0gn27snqXv3/bsszsfJbCAIiTdjRTVCBL6jV0K5D8H/8xVAAAAeJxjYGRgYADi16c/vIvnt/nKwM3CAALXZxxzhtH///23YVFhbgZyORiYQKIAm34OJQAAAHicY2BkYGBu+N/AEMOi/P/f//8sKgxAERTAAwCmuAa3eJxjYWBgYAFhRiiNFf//z6L8/x+IDQAkCQRQAAAAAAAAjAEAATgBfgGaAiACbgMMA2AEhATGAAB4nGNgZGBg4GE4DMQgwATEXEDIwPAfzGcAAB2tAfIAAHicZY9NTsMwEIVf+gekEqqoYIfkBWIBKP0Rq25YVGr3XXTfpk6bKokjx63UA3AejsAJOALcgDvwSCebNpbH37x5Y08A3OAHHo7fLfeRPVwyO3INF7gXrlN/EG6QX4SbaONVuEX9TdjHM6bCbXRheYPXuGL2hHdhDx18CNdwjU/hOvUv4Qb5W7iJO/wKt9Dx6sI+5l5XuI1HL/bHVi+cXqnlQcWhySKTOb+CmV7vkoWt0uqca1vEJlODoF9JU51pW91T7NdD5yIVWZOqCas6SYzKrdnq0AUb5/JRrxeJHoQm5Vhj/rbGAo5xBYUlDowxQhhkiMro6DtVZvSvsUPCXntWPc3ndFsU1P9zhQEC9M9cU7qy0nk6T4E9XxtSdXQrbsuelDSRXs1JErJCXta2VELqATZlV44RelzRiT8oZ0j/AAlabsgAAAB4nG2L3QqCQBCFZ9RWU7sOfAeh8IFi3N10EHYUG1p8+gSjqz44F+cPEjgo4T81Jphihic0mGOBZyyxwhovUCxKIe4ylthRuDqV+I22UcLQ6+QH4ubWdZZkU3m4o/0tUqtSvT33TPLits12fzc+zhRcvoquo0o281OLhcMw7Q+AD8sULE0=') format('woff'), + url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.ttf?t=1534240067831') format('truetype'), /* chrome, firefox, opera, Safari, Android, iOS 4.2+*/ + url('//at.alicdn.com/t/font_792691_qxv28s6g1l9.svg?t=1534240067831#iconfont') format('svg'); /* iOS 4.1- */ +} +.xm-iconfont {font-family:"xm-iconfont" !important; font-size:16px; font-style:normal; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;} +.icon-quanxuan:before { content: "\e62c"; } +.icon-caidan:before { content: "\e610"; } +.icon-fanxuan:before { content: "\e837"; } +.icon-pifu:before { content: "\e668"; } +.icon-qingkong:before { content: "\e63e"; } +.icon-sousuo:before { content: "\e600"; } +.icon-danx:before { content: "\e62b"; } +.icon-duox:before { content: "\e613"; } +.icon-close:before { content: "\e601"; } +.icon-expand:before { content: "\e641"; } + diff --git a/src/main/resources/static/febs/css/login.css b/src/main/resources/static/febs/css/login.css new file mode 100644 index 0000000..87105bf --- /dev/null +++ b/src/main/resources/static/febs/css/login.css @@ -0,0 +1 @@ +#febs-login{height:100%;background:#f0f2f5 url(../images/background.svg) no-repeat center 110px;padding-top:1px;margin-top:-1px}#febs-login .layui-logo{user-select:none;overflow:hidden;position:static;font-size:27px;width:100%;padding:0;line-height:120px;height:120px;color:#3491ff;font-family:"Trebuchet MS",Arial,Helvetica,sans-serif;transition:height .8s cubic-bezier(0.075,0.82,0.165,1)}#febs-login .layui-logo span{font-weight:600;color:rgba(0,0,0,.85);border-bottom:1px solid #3491ff}#febs-login .layui-logo span b{color:#3491ff}#febs-login .login-wrap{position:relative;top:50%;margin-top:-290px;height:540px}#febs-login .layui-form{overflow:hidden;background:#fff;padding:40px 40px 20px;border-radius:0;box-shadow:1px 3px 3px #ccc;position:relative}#febs-login .layui-form-item{position:relative}#febs-login .verify-block{display:none}#febs-login .layui-input{text-indent:26px}#febs-login .codeimg{margin-left:10px;cursor:pointer}#febs-login .sendsms{position:absolute;top:4px;right:4px;width:100px;border:none}#febs-login .sendsms.layui-btn-disabled{background:#f4f4f4;color:#bbb}#febs-login .houseimg{text-align:center}#febs-login .houseimg img{display:inline-block;margin-top:5%}#febs-login .login-type-tab{margin-bottom:20px;overflow:hidden}#febs-login .login-type-tab li{display:inline-block;padding-right:20px;font-size:16px;line-height:30px;color:#bbb;cursor:pointer;transition:color .5s ease}#febs-login .login-type-tab li.active{color:#333}#febs-login .login-type-tab li .qrcode-icon{font-size:24px}#febs-login .phonecode-block{display:none}#febs-login .qrcode-block{text-align:center;display:none}#febs-login .qrcode-block .qrcode{border:1px solid #eee;display:inline-block;padding:15px;margin:30px 0;width:158px;height:158px}#febs-login .qrcode-block .qrcode .layui-icon{line-height:158px;font-size:44px;color:#e6e6e6}#febs-login .qrcode-block .p1{font-size:16px}#febs-login .qrcode-block .p2{font-size:14px;color:#999;margin-top:10px;margin-bottom:20px}#febs-login .layui-form-item .label-icon{position:absolute;top:0;left:0;width:38px;line-height:38px;text-align:center;color:#d2d2d2!important}.footer{text-align:center;padding:.5rem 1rem 1rem} diff --git a/src/main/resources/static/febs/font/iconfont.eot b/src/main/resources/static/febs/font/iconfont.eot new file mode 100644 index 0000000..5d84775 --- /dev/null +++ b/src/main/resources/static/febs/font/iconfont.eot Binary files differ diff --git a/src/main/resources/static/febs/font/iconfont.svg b/src/main/resources/static/febs/font/iconfont.svg new file mode 100644 index 0000000..29caa11 --- /dev/null +++ b/src/main/resources/static/febs/font/iconfont.svg @@ -0,0 +1,1622 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2013-9-30: Created. +--> +<svg> +<metadata> +Created by iconfont +</metadata> +<defs> + +<font id="iconfont" horiz-adv-x="1024" > + <font-face + font-family="iconfont" + font-weight="500" + font-stretch="normal" + units-per-em="1024" + ascent="896" + descent="-128" + /> + <missing-glyph /> + + <glyph glyph-name="check-circle" unicode="" d="M699 543h-46.9c-10.2 0-19.9-4.9-25.9-13.3L469 311.70000000000005l-71.2 98.8c-6 8.3-15.6 13.3-25.9 13.3H325c-6.5 0-10.3-7.4-6.5-12.7l124.6-172.8c12.7-17.7 39-17.7 51.7 0l210.6 292c3.9 5.3 0.1 12.7-6.4 12.7zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="CI" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM730 584.1h-50.4c-4.4 0-8-3.6-8-8v-384.2c0-4.4 3.6-8 8-8H730c4.4 0 8 3.6 8 8V576.1c0 4.4-3.6 8-8 8zM448.6 534.5c49.5 0 83.1-31.5 87-77.6 0.4-4.2 3.8-7.4 8-7.4h52.6c2.4 0 4.4 2 4.4 4.4 0 81.2-64 138.1-152.3 138.1C345.4 592 286 522.5 286 407.6v-49c0-114 59.4-182.6 162.3-182.6 88 0 152.3 55.1 152.3 132.5 0 2.4-2 4.4-4.4 4.4h-52.7c-4.2 0-7.6-3.2-8-7.3-4.2-43-37.7-72.4-87-72.4-61.1 0-95.6 44.9-95.6 125.2v49.3c0.1 81.4 34.6 126.8 95.7 126.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Dollar" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM559.7 407.2l-25.4 5.9V547.4c38-5.2 61.5-29 65.5-58.2 0.5-4 3.9-6.9 7.9-6.9h44.9c4.7 0 8.4 4.1 8 8.8-6.1 62.3-57.4 102.3-125.9 109.2V633c0 4.4-3.6 8-8 8h-28.1c-4.4 0-8-3.6-8-8v-33c-70.8-6.9-126.2-46-126.2-119 0-67.6 49.8-100.2 102.1-112.7l24.7-6.3v-142.7c-44.2 5.9-69 29.5-74.1 61.3-0.6 3.8-4 6.6-7.9 6.6H363c-4.7 0-8.4-4-8-8.7 4.5-55 46.2-105.6 135.2-112.1V135c0-4.4 3.6-8 8-8h28.4c4.4 0 8 3.6 8 8.1l-0.2 31.7c78.3 6.9 134.3 48.8 134.3 124-0.1 69.4-44.2 100.4-109 116.4z m-68.6 16.2c-5.6 1.6-10.3 3.1-15 5-33.8 12.2-49.5 31.9-49.5 57.3 0 36.3 27.5 57 64.5 61.7v-124zM534.3 219V352.7c3.1-0.9 5.9-1.6 8.8-2.2 47.3-14.4 63.2-34.4 63.2-65.1 0-39.1-29.4-62.6-72-66.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="compass" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM710.4 600.1c-8 3.1-16.7 2.9-24.5-0.5L414.9 481 296.4 210c-3.6-8.2-3.6-17.5 0-25.7 3.4-7.8 9.7-13.9 17.7-17 3.8-1.5 7.7-2.2 11.7-2.2 4.4 0 8.7 0.9 12.8 2.7l271 118.6 118.5 271c3.6 8.2 3.6 17.5 0 25.7-3.5 7.9-9.8 13.9-17.7 17zM576.8 361.6l26.2-26.2-42.4-42.4-26.2 26.2L380 251.6 447.5 406 422 431.6l42.4 42.4 25.5-25.5L644.4 516l-67.6-154.4zM464.4 474L422 431.6l25.5-25.6 86.9-86.8 26.2-26.2 42.4 42.4-26.2 26.2-86.8 86.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close-circle" unicode="" d="M685.4 541.2c0 4.4-3.6 8-8 8l-66-0.3L512 430.4l-99.3 118.4-66.1 0.3c-4.4 0-8-3.5-8-8 0-1.9 0.7-3.7 1.9-5.2l130.1-155L340.5 226c-1.2-1.5-1.9-3.3-1.9-5.2 0-4.4 3.6-8 8-8l66.1 0.3L512 331.6l99.3-118.4 66-0.3c4.4 0 8 3.5 8 8 0 1.9-0.7 3.7-1.9 5.2L553.5 381l130.1 155c1.2 1.4 1.8 3.3 1.8 5.2zM512 831C264.6 831 64 630.4 64 383s200.6-448 448-448 448 200.6 448 448S759.4 831 512 831z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="frown" unicode="" d="M336 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM688 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m263-711c-34.2-34.2-74-61-118.3-79.8C611 21.8 562.3 12 512 12c-50.3 0-99 9.8-144.8 29.2-44.3 18.7-84.1 45.6-118.3 79.8-34.2 34.2-61 74-79.8 118.3C149.8 285 140 333.7 140 384s9.8 99 29.2 144.8c18.7 44.3 45.6 84.1 79.8 118.3 34.2 34.2 74 61 118.3 79.8C413 746.2 461.7 756 512 756c50.3 0 99-9.8 144.8-29.2 44.3-18.7 84.1-45.6 118.3-79.8 34.2-34.2 61-74 79.8-118.3C874.2 483 884 434.3 884 384s-9.8-99-29.2-144.8c-18.7-44.3-45.6-84.1-79.8-118.2zM512 363c-85.5 0-155.6-67.3-160-151.6-0.2-4.6 3.4-8.4 8-8.4h48.1c4.2 0 7.8 3.2 8.1 7.4C420 259.9 461.5 299 512 299s92.1-39.1 95.8-88.6c0.3-4.2 3.9-7.4 8.1-7.4H664c4.6 0 8.2 3.8 8 8.4-4.4 84.3-74.5 151.6-160 151.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="info-circle" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM512 560m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM536 448h-48c-4.4 0-8-3.6-8-8v-272c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V440c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left-circle" unicode="" d="M603.3 568.5l-246-178c-4.4-3.2-4.4-9.7 0-12.9l246-178c5.3-3.8 12.7 0 12.7 6.5V253c0 10.2-4.9 19.9-13.2 25.9L457.4 384l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V562c0 6.5-7.4 10.3-12.7 6.5zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down-circle" unicode="" d="M690 491h-46.9c-10.2 0-19.9-4.9-25.9-13.2L512 332.4 406.8 477.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246c3.2-4.4 9.7-4.4 12.9 0l178 246c3.9 5.3 0.1 12.7-6.4 12.7zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="EURO" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM629.7 600.6c-15.9 3.5-34.4 5.4-55.3 5.4-106.7 0-178.9-55.7-198.6-149.9H344c-4.4 0-8-3.6-8-8v-27.2c0-4.4 3.6-8 8-8h26.4c-0.3-4.1-0.3-8.4-0.3-12.8v-36.9H344c-4.4 0-8-3.6-8-8V328c0-4.4 3.6-8 8-8h30.2c17.2-99.2 90.4-158 200.2-158 20.9 0 39.4 1.7 55.3 5.1 3.7 0.8 6.4 4 6.4 7.8v42.8c0 5-4.6 8.8-9.5 7.8-14.7-2.8-31.9-4.1-51.8-4.1-68.5 0-114.5 36.6-129.8 98.6h130.6c4.4 0 8 3.6 8 8v27.2c0 4.4-3.6 8-8 8H439.2v36c0 4.7 0 9.4 0.3 13.8h135.9c4.4 0 8 3.6 8 8v27.2c0 4.4-3.6 8-8 8H447.1c17.2 56.9 62.3 90.4 127.6 90.4 19.9 0 37.1-1.5 51.7-4.4 5-1 9.6 2.8 9.6 7.8v42.8c0 3.8-2.6 7-6.3 7.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="copyright" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM517.6 544.7c53 0 89-33.8 93-83.4 0.3-4.2 3.8-7.4 8-7.4h56.7c2.6 0 4.7 2.1 4.7 4.7 0 86.7-68.4 147.4-162.7 147.4C407.4 606 344 531.8 344 409.2v-52.3C344 235.2 407.4 162 517.3 162c94 0 162.7 58.8 162.7 141.4 0 2.6-2.1 4.7-4.7 4.7h-56.8c-4.2 0-7.6-3.2-8-7.3-4.2-46.1-40.1-77.8-93-77.8-65.3 0-102.1 47.9-102.1 133.6v52.6c0.1 87 37 135.5 102.2 135.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="minus-circle" unicode="" d="M696 416H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="meh" unicode="" d="M336 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM688 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m263-711c-34.2-34.2-74-61-118.3-79.8C611 21.8 562.3 12 512 12c-50.3 0-99 9.8-144.8 29.2-44.3 18.7-84.1 45.6-118.3 79.8-34.2 34.2-61 74-79.8 118.3C149.8 285 140 333.7 140 384s9.8 99 29.2 144.8c18.7 44.3 45.6 84.1 79.8 118.3 34.2 34.2 74 61 118.3 79.8C413 746.2 461.7 756 512 756c50.3 0 99-9.8 144.8-29.2 44.3-18.7 84.1-45.6 118.3-79.8 34.2-34.2 61-74 79.8-118.3C874.2 483 884 434.3 884 384s-9.8-99-29.2-144.8c-18.7-44.3-45.6-84.1-79.8-118.2zM664 331H360c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="plus-circle" unicode="" d="M696 416H544V568c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-152H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h152v-152c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V352h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="play-circle" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM719.4 396.9l-296.1 215c-10.6 7.7-25.3 0.2-25.3-12.9v-430c0-13.1 14.8-20.5 25.3-12.9l296.1 215c8.8 6.4 8.8 19.4 0 25.8z m-257.6-134V505.1L628.5 384 461.8 262.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="question-circle" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM623.6 579.3C593.6 605.6 554 620 512 620s-81.6-14.5-111.6-40.7C369.2 552 352 515.3 352 476v-7.6c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V476c0 44.1 43.1 80 96 80s96-35.9 96-80c0-31.1-22-59.6-56.1-72.7-21.2-8.1-39.2-22.3-52.1-40.9-13.1-19-19.9-41.8-19.9-64.9V276c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v22.7c0 19.7 12.4 37.7 30.9 44.8 59 22.7 97.1 74.7 97.1 132.5 0.1 39.3-17.1 76-48.3 103.3zM512 164m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Pound" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM650 221.8H469.8v4.7c27.4 17.2 43.9 50.4 43.9 91.1 0 14.1-2.2 27.9-5.3 41H607c4.4 0 8 3.6 8 8v30c0 4.4-3.6 8-8 8H495c-7.2 22.6-13.4 45.7-13.4 70.5 0 43.5 34 70.2 87.3 70.2 21.5 0 42.5-4.1 60.4-10.5 5.2-1.9 10.6 2 10.6 7.6v39.5c0 3.3-2.1 6.3-5.2 7.5-18.8 7.2-43.8 12.7-70.3 12.7-92.9 0-151.5-44.5-151.5-120.3 0-26.3 6.9-52 14.6-77.1H374c-4.4 0-8-3.6-8-8v-30c0-4.4 3.6-8 8-8h67.1c3.4-14.7 5.9-29.4 5.9-44.2 0-45.2-28.8-83.3-72.8-94.2-3.6-0.9-6.1-4.1-6.1-7.8V174c0-4.4 3.6-8 8-8H650c4.4 0 8 3.6 8 8v39.8c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right-circle" unicode="" d="M666.7 390.5l-246 178c-5.3 3.8-12.7 0.1-12.7-6.5v-46.9c0-10.2 4.9-19.9 13.2-25.9L566.6 384 421.2 278.79999999999995c-8.3-6-13.2-15.6-13.2-25.9V206c0-6.5 7.4-10.3 12.7-6.5l246 178c4.4 3.2 4.4 9.8 0 13zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="smile" unicode="" d="M336 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM688 475m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m263-711c-34.2-34.2-74-61-118.3-79.8C611 21.8 562.3 12 512 12c-50.3 0-99 9.8-144.8 29.2-44.3 18.7-84.1 45.6-118.3 79.8-34.2 34.2-61 74-79.8 118.3C149.8 285 140 333.7 140 384s9.8 99 29.2 144.8c18.7 44.3 45.6 84.1 79.8 118.3 34.2 34.2 74 61 118.3 79.8C413 746.2 461.7 756 512 756c50.3 0 99-9.8 144.8-29.2 44.3-18.7 84.1-45.6 118.3-79.8 34.2-34.2 61-74 79.8-118.3C874.2 483 884 434.3 884 384s-9.8-99-29.2-144.8c-18.7-44.3-45.6-84.1-79.8-118.2zM664 363h-48.1c-4.2 0-7.8-3.2-8.1-7.4C604 306.1 562.5 267 512 267s-92.1 39.1-95.8 88.6c-0.3 4.2-3.9 7.4-8.1 7.4H360c-4.6 0-8.2-3.8-8-8.4 4.4-84.3 74.5-151.6 160-151.6s155.6 67.3 160 151.6c0.2 4.6-3.4 8.4-8 8.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="trademark" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM599.5 346.7c34.8 12.8 78.4 49 78.4 119.2 0 71.2-45.5 131.1-144.2 131.1H378c-4.4 0-8-3.6-8-8v-410c0-4.4 3.6-8 8-8h54.5c4.4 0 8 3.6 8 8V334.8h88.7l74.6-159.2c1.3-2.8 4.1-4.6 7.2-4.6h62c1.2 0 2.4 0.3 3.5 0.8 4 2 5.6 6.7 3.6 10.7l-80.6 164.2zM522 391h-81.5V539h83.4c48 0 80.9-25.3 80.9-75.5 0-46.9-29.8-72.5-82.8-72.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="time-circle" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM686.7 257.4L544.1 360.5V608c0 4.4-3.6 8-8 8H488c-4.4 0-8-3.6-8-8v-275.4c0-2.6 1.2-5 3.3-6.5l165.4-120.6c3.6-2.6 8.6-1.8 11.2 1.7l28.6 39c2.6 3.7 1.8 8.7-1.8 11.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="timeout" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM424 544h-48c-4.4 0-8-3.6-8-8v-304c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V536c0 4.4-3.6 8-8 8zM648 544h-48c-4.4 0-8-3.6-8-8v-304c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V536c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="earth" unicode="" d="M854.4 95.1c0.2 0.3 0.5 0.6 0.7 0.9C920.6 173.9 960 274.3 960 384s-39.4 210.1-104.8 288c-0.2 0.3-0.5 0.5-0.7 0.8-1.1 1.3-2.1 2.5-3.2 3.7-0.4 0.5-0.8 0.9-1.2 1.4-1.4 1.6-2.7 3.1-4.1 4.7l-0.1 0.1c-1.5 1.7-3.1 3.4-4.6 5.1l-0.1 0.1c-3.2 3.4-6.4 6.8-9.7 10.1l-0.1 0.1-4.8 4.8-0.3 0.3c-1.5 1.5-3 2.9-4.5 4.3-0.5 0.5-1 1-1.6 1.5-1 1-2 1.9-3 2.8-0.3 0.3-0.7 0.6-1 1C736.4 786.8 629.5 832 512 832s-224.4-45.2-304.3-119.2c-0.3-0.3-0.7-0.6-1-1-1-0.9-2-1.9-3-2.9-0.5-0.5-1-1-1.6-1.5-1.5-1.4-3-2.9-4.5-4.3l-0.3-0.3-4.8-4.8-0.1-0.1c-3.3-3.3-6.5-6.7-9.7-10.1l-0.1-0.1c-1.6-1.7-3.1-3.4-4.6-5.1l-0.1-0.1c-1.4-1.5-2.8-3.1-4.1-4.7-0.4-0.5-0.8-0.9-1.2-1.4-1.1-1.2-2.1-2.5-3.2-3.7-0.2-0.3-0.5-0.5-0.7-0.8C103.4 594.1 64 493.7 64 384s39.4-210.1 104.8-288c0.2-0.3 0.5-0.6 0.7-0.9 1-1.2 2.1-2.5 3.1-3.7 0.4-0.5 0.8-0.9 1.2-1.4 1.4-1.6 2.7-3.1 4.1-4.7 0-0.1 0.1-0.1 0.1-0.2 1.5-1.7 3-3.4 4.6-5l0.1-0.1c3.2-3.4 6.4-6.8 9.6-10.1l0.1-0.1c1.6-1.6 3.1-3.2 4.7-4.7l0.3-0.3c3.3-3.3 6.7-6.5 10.1-9.6 80.1-74 187-119.2 304.5-119.2s224.4 45.2 304.3 119.2c3.4 3.1 6.7 6.3 10 9.6l0.3 0.3c1.6 1.6 3.2 3.1 4.7 4.7l0.1 0.1c3.3 3.3 6.5 6.7 9.6 10.1l0.1 0.1c1.5 1.7 3.1 3.3 4.6 5 0 0.1 0.1 0.1 0.1 0.2 1.4 1.5 2.8 3.1 4.1 4.7 0.4 0.5 0.8 0.9 1.2 1.4 1.2 1.3 2.3 2.5 3.3 3.7z m4.1 142.6c-13.8-32.6-32-62.8-54.2-90.2-24.9 21.5-52.2 40.3-81.5 55.9 11.6 46.9 18.8 98.4 20.7 152.6H887c-3-40.9-12.6-80.6-28.5-118.3zM887 412H743.5c-1.9 54.2-9.1 105.7-20.7 152.6 29.3 15.6 56.6 34.4 81.5 55.9 22.2-27.4 40.4-57.6 54.2-90.2C874.4 492.6 884 452.9 887 412zM658.3 730.5c39.7-16.8 75.8-40 107.6-69.2-18.5-15.8-38.4-29.7-59.4-41.8-15.7 45-35.8 84.1-59.2 115.4 3.7-1.4 7.4-2.9 11-4.4z m-90.6-700.6c-9.2-7.2-18.4-12.7-27.7-16.4V199c39.9-2.8 78.6-11.6 115.7-26.2-8.3-24.6-17.9-47.3-29-67.8-17.4-32.4-37.8-58.3-59-75.1z m59 633.1c11-20.6 20.7-43.3 29-67.8-37.1-14.6-75.8-23.4-115.7-26.2V754.4c9.2-3.7 18.5-9.1 27.7-16.4 21.2-16.7 41.6-42.6 59-75zM540 255.1V356h147.5c-1.6-44.2-7.1-87.1-16.3-127.8l-0.3-1.2c-41.1 15.6-85.1 25.3-130.9 28.1z m0 156.9V512.9c45.8 2.8 89.8 12.5 130.9 28.1l0.3-1.2c9.2-40.7 14.7-83.5 16.3-127.8H540z m-56-56v-100.9c-45.8-2.8-89.8-12.5-130.9-28.1l-0.3 1.2c-9.2 40.7-14.7 83.5-16.3 127.8H484z m-147.5 56c1.6 44.2 7.1 87.1 16.3 127.8l0.3 1.2c41.1-15.6 85-25.3 130.9-28.1V412H336.5zM484 199v-185.4c-9.2 3.7-18.5 9.1-27.7 16.4-21.2 16.7-41.7 42.7-59.1 75.1-11 20.6-20.7 43.3-29 67.8 37.2 14.6 75.9 23.3 115.8 26.1z m0 370c-39.9 2.8-78.6 11.6-115.7 26.2 8.3 24.6 17.9 47.3 29 67.8 17.4 32.4 37.8 58.4 59.1 75.1 9.2 7.2 18.4 12.7 27.7 16.4V569zM365.7 730.5c3.7 1.5 7.3 3 11 4.4-23.4-31.3-43.5-70.4-59.2-115.4-21 12-40.9 26-59.4 41.8 31.8 29.2 67.9 52.4 107.6 69.2zM165.5 530.3c13.8 32.6 32 62.8 54.2 90.2 24.9-21.5 52.2-40.3 81.5-55.9-11.6-46.9-18.8-98.4-20.7-152.6H137c3 40.9 12.6 80.6 28.5 118.3zM137 356h143.5c1.9-54.2 9.1-105.7 20.7-152.6-29.3-15.6-56.6-34.4-81.5-55.9-22.2 27.4-40.4 57.6-54.2 90.2C149.6 275.4 140 315.1 137 356z m228.7-318.5c-39.7 16.8-75.8 40-107.6 69.2 18.5 15.8 38.4 29.7 59.4 41.8 15.7-45 35.8-84.1 59.2-115.4-3.7 1.4-7.4 2.9-11 4.4z m292.6 0c-3.7-1.5-7.3-3-11-4.4 23.4 31.3 43.5 70.4 59.2 115.4 21-12 40.9-26 59.4-41.8-31.8-29.2-67.9-52.4-107.6-69.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="YUAN" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM671.6 597h-59.5c-3 0-5.8-1.7-7.1-4.4l-90.6-180H511l-90.6 180c-1.4 2.7-4.1 4.4-7.1 4.4h-60.7c-1.3 0-2.6-0.3-3.8-1-3.9-2.1-5.3-7-3.2-10.9L457 380.3h-61.4c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h81.7V293h-81.7c-4.4 0-8-3.6-8-8v-29.9c0-4.4 3.6-8 8-8h81.7V179c0-4.4 3.6-8 8-8h54.3c4.4 0 8 3.6 8 8v68.1h82c4.4 0 8 3.6 8 8V285c0 4.4-3.6 8-8 8h-82v41.5h82c4.4 0 8 3.6 8 8v29.9c0 4.4-3.6 8-8 8h-62l111.1 204.8c0.6 1.2 1 2.5 1 3.8-0.1 4.4-3.7 8-8.1 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up-circle" unicode="" d="M518.5 535.7c-3.2 4.4-9.7 4.4-12.9 0l-178-246c-3.8-5.3 0-12.7 6.5-12.7H381c10.2 0 19.9 4.9 25.9 13.2L512 435.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7l-178 246zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372z" horiz-adv-x="1024" /> + + + <glyph glyph-name="warning-circle" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372s166.6 372 372 372 372-166.6 372-372-166.6-372-372-372zM512 208m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM488 320h48c4.4 0 8 3.6 8 8V600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-272c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sync" unicode="" d="M168 391.8c1 43.7 10 86.1 26.9 126 17.3 41 42.1 77.7 73.7 109.4S337 683.7 378 701c42.4 17.9 87.4 27 133.9 27s91.5-9.1 133.8-27c40.9-17.3 77.7-42.1 109.3-73.8 9.9-9.9 19.2-20.4 27.8-31.4l-60.2-47c-5.3-4.1-3.5-12.5 3-14.1l175.7-43c5-1.2 9.9 2.6 9.9 7.7l0.8 180.9c0 6.7-7.7 10.5-12.9 6.3l-56.4-44.1C765.8 740.9 646.2 804 511.8 804 282.7 804 96.3 620.4 92 392.2c-0.1-4.5 3.5-8.2 8-8.2h60c4.4 0 7.9 3.5 8 7.8zM924 384h-60c-4.4 0-7.9-3.5-8-7.8-1-43.7-10-86.1-26.9-126-17.3-41-42.1-77.8-73.7-109.4S687 84.3 646 67c-42.4-17.9-87.4-27-133.9-27s-91.5 9.1-133.9 27c-40.9 17.3-77.7 42.1-109.3 73.8-9.9 9.9-19.2 20.4-27.8 31.4l60.2 47c5.3 4.1 3.5 12.5-3 14.1l-175.7 43c-5 1.2-9.9-2.6-9.9-7.7l-0.7-181c0-6.7 7.7-10.5 12.9-6.3l56.4 44.1C258.2 27.1 377.8-36 512.2-36c229.2 0 415.5 183.7 419.8 411.8 0.1 4.5-3.5 8.2-8 8.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="transaction" unicode="" d="M668.6 576c0 4.4-3.6 8-8 8h-54.5c-3 0-5.8-1.7-7.1-4.4l-84.7-168.8H511l-84.7 168.8c-1.4 2.7-4.1 4.4-7.1 4.4h-55.7c-1.3 0-2.6-0.3-3.8-1-3.9-2.1-5.3-7-3.2-10.8l103.9-191.6h-57c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76V192c0-4.4 3.6-8 8-8h49.9c4.4 0 8 3.6 8 8v63.5h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8H564l103.7 191.6c0.5 1.1 0.9 2.4 0.9 3.7zM157.9 391.8c1 45.1 10.3 88.7 27.7 129.9 17.8 42.1 43.3 80 75.8 112.5s70.3 58.1 112.4 75.9c43.6 18.4 89.9 27.8 137.6 27.8 47.8 0 94.1-9.3 137.6-27.8 42.1-17.8 79.9-43.4 112.4-75.9 10-10 19.3-20.5 27.9-31.4l-50-39.1c-5.3-4.1-3.5-12.5 3-14.1l156.8-38.3c5-1.2 9.9 2.6 9.9 7.7l0.8 161.5c0 6.7-7.7 10.5-12.9 6.3l-47.8-37.4C770.7 749.7 648.6 814 511.5 814 277 814 86.3 625.9 82 392.2c-0.1-4.5 3.5-8.2 8-8.2h60c4.3 0 7.8 3.5 7.9 7.8zM934 384h-60c-4.3 0-7.9-3.5-8-7.8-1-45.1-10.3-88.7-27.7-129.9-17.8-42.1-43.3-80-75.8-112.5s-70.3-58.1-112.4-75.9c-43.6-18.4-89.9-27.8-137.6-27.8s-94.1 9.3-137.6 27.8c-42.1 17.8-79.9 43.4-112.4 75.9-10 10-19.3 20.5-27.9 31.4l49.9 39.1c5.3 4.1 3.5 12.5-3 14.1l-156.8 38.3c-5 1.2-9.9-2.6-9.9-7.7l-0.8-161.7c0-6.7 7.7-10.5 12.9-6.3l47.8 37.4C253.3 18.3 375.4-46 512.5-46 747-46 937.7 142.1 942 375.8c0.1 4.5-3.5 8.2-8 8.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="undo" unicode="" d="M511.4 772C290.5 771.7 112 593 112 372.1c0-128 60.2-242 153.8-315.2l-37.5-48c-4.1-5.3-0.3-13 6.3-12.9l167 0.8c5.2 0 9 4.9 7.7 9.9L369.8 169c-1.6 6.5-10 8.3-14.1 3L315 119.9c-10.2 8-20 16.7-29.3 26-29.4 29.4-52.5 63.6-68.6 101.7C200.4 287 192 328.9 192 372.1s8.4 85.1 25.1 124.5c16.1 38.1 39.2 72.3 68.6 101.7 29.4 29.4 63.6 52.5 101.7 68.6C426.9 683.6 468.8 692 512 692s85.1-8.4 124.5-25.1c38.1-16.1 72.3-39.2 101.7-68.6 29.4-29.4 52.5-63.6 68.6-101.7 16.7-39.4 25.1-81.3 25.1-124.5s-8.4-85.1-25.1-124.5c-16.1-38.1-39.2-72.3-68.6-101.7-7.5-7.5-15.3-14.5-23.4-21.2-3.4-2.8-3.9-7.7-1.2-11.1l39.4-50.5c2.8-3.5 7.9-4.1 11.4-1.3C854.5 135.2 912 246.9 912 372.1c0 221.1-179.4 400.2-400.6 399.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="redo" unicode="" d="M758.2 56.9C851.8 130.1 912 244.1 912 372.1 912 593 733.5 771.7 512.6 772 291.4 772.3 112 593.2 112 372.1c0-125.2 57.5-236.9 147.6-310.2 3.5-2.8 8.6-2.2 11.4 1.3l39.4 50.5c2.7 3.4 2.1 8.3-1.2 11.1-8.1 6.6-15.9 13.7-23.4 21.2-29.4 29.4-52.5 63.6-68.6 101.7C200.4 287 192 328.9 192 372.1s8.4 85.1 25.1 124.5c16.1 38.1 39.2 72.3 68.6 101.7 29.4 29.4 63.6 52.5 101.7 68.6C426.9 683.6 468.8 692 512 692s85.1-8.4 124.5-25.1c38.1-16.1 72.3-39.2 101.7-68.6 29.4-29.4 52.5-63.6 68.6-101.7 16.7-39.4 25.1-81.3 25.1-124.5s-8.4-85.1-25.1-124.5c-16.1-38.1-39.2-72.3-68.6-101.7-9.3-9.3-19.1-18-29.3-26L668.2 172c-4.1 5.3-12.5 3.5-14.1-3l-39.6-162.2c-1.2-5 2.6-9.9 7.7-9.9l167-0.8c6.7 0 10.5 7.7 6.3 12.9l-37.3 47.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reload" unicode="" d="M909.1 686.7l-56.4-44.1C775.8 740.9 656.2 804 521.9 804 290 804 102.3 616.5 102 384.5 101.7 152.3 289.8-36 521.9-36c181.3 0 335.8 115 394.6 276.1 1.5 4.2-0.7 8.9-4.9 10.3l-56.7 19.5c-4.1 1.4-8.6-0.7-10.1-4.8-1.8-5-3.8-10-5.9-14.9-17.3-41-42.1-77.8-73.7-109.4-31.6-31.6-68.4-56.4-109.3-73.8-42.3-17.9-87.4-27-133.8-27-46.5 0-91.5 9.1-133.8 27-40.9 17.3-77.7 42.1-109.3 73.8-31.6 31.6-56.4 68.4-73.7 109.4-17.9 42.4-27 87.4-27 133.9s9.1 91.5 27 133.9c17.3 41 42.1 77.8 73.7 109.4 31.6 31.6 68.4 56.4 109.3 73.8 42.3 17.9 87.4 27 133.8 27 46.5 0 91.5-9.1 133.8-27 40.9-17.3 77.7-42.1 109.3-73.8 9.9-9.9 19.2-20.4 27.8-31.4l-60.2-47c-5.3-4.1-3.5-12.5 3-14.1l175.6-43c5-1.2 9.9 2.6 9.9 7.7l0.8 180.9c-0.1 6.6-7.8 10.3-13 6.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reloadtime" unicode="" d="M536.1 623H488c-4.4 0-8-3.6-8-8v-275.3c0-2.6 1.2-5 3.3-6.5l165.3-120.7c3.6-2.6 8.6-1.9 11.2 1.7l28.6 39c2.7 3.7 1.9 8.7-1.7 11.2L544.1 367.5V615c0 4.4-3.6 8-8 8zM755.9 547.8l156.8-38.3c5-1.2 9.9 2.6 9.9 7.7l0.8 161.5c0 6.7-7.7 10.5-12.9 6.3L752.9 561.9c-5.3-4.2-3.5-12.5 3-14.1zM923.6 246.7l-56.7 19.5c-4.1 1.4-8.6-0.7-10.1-4.8-1.9-5.1-3.9-10.1-6-15.1-17.8-42.1-43.3-80-75.9-112.5-32.5-32.5-70.4-58.1-112.5-75.9-43.6-18.4-89.9-27.8-137.7-27.8-47.8 0-94.1 9.3-137.7 27.8-42.1 17.8-80 43.4-112.5 75.9-32.5 32.5-58 70.4-75.9 112.5C180.3 289.8 171 336.2 171 384c0 47.8 9.3 94.2 27.8 137.8 17.8 42.1 43.3 80 75.9 112.5 32.5 32.5 70.4 58.1 112.5 75.9C430.6 728.7 477 738 524.8 738s94.1-9.3 137.7-27.8c42.1-17.8 80-43.4 112.5-75.9 10.2-10.3 19.8-21 28.6-32.3l59.8 46.8C784.7 749.4 662.2 814.1 524.6 814 285 813.9 92.6 619.3 95 379.6 97.4 144.1 288.9-46 524.8-46c185.5 0 343.5 117.6 403.7 282.3 1.5 4.2-0.7 8.9-4.9 10.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="message" unicode="" d="M512 384m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM712 384m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM312 384m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM925.2 557.6c-22.6 53.7-55 101.9-96.3 143.3-41.3 41.3-89.5 73.8-143.3 96.3C630.6 820.3 572.2 832 512 832h-2c-60.6-0.3-119.3-12.3-174.5-35.9-53.3-22.8-101.1-55.2-142-96.5-40.9-41.3-73-89.3-95.2-142.8-23-55.4-34.6-114.3-34.3-174.9 0.3-69.4 16.9-138.3 48-199.9v-152c0-25.4 20.6-46 46-46h152.1c61.6-31.1 130.5-47.7 199.9-48h2.1c59.9 0 118 11.6 172.7 34.3 53.5 22.3 101.6 54.3 142.8 95.2 41.3 40.9 73.8 88.7 96.5 142 23.6 55.2 35.6 113.9 35.9 174.5 0.3 60.9-11.5 120-34.8 175.6z m-151.1-438C704 50.2 611 12 512 12h-1.7c-60.3 0.3-120.2 15.3-173.1 43.5l-8.4 4.5H188V200.8l-4.5 8.4C155.3 262.1 140.3 322 140 382.3c-0.4 99.7 37.7 193.3 107.6 263.8 69.8 70.5 163.1 109.5 262.8 109.9h1.7c50 0 98.5-9.7 144.2-28.9 44.6-18.7 84.6-45.6 119-80 34.3-34.3 61.3-74.4 80-119 19.4-46.2 29.1-95.2 28.9-145.8-0.6-99.6-39.7-192.9-110.1-262.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dashboard" unicode="" d="M924.8 510.4c-22.6 53.4-54.9 101.3-96 142.4-41.1 41.1-89 73.4-142.4 96C631.1 772.2 572.5 784 512 784s-119.1-11.8-174.4-35.2c-53.4-22.6-101.3-54.9-142.4-96-41.1-41.1-73.4-89-96-142.4C75.8 455.1 64 396.5 64 336c0-132.7 58.3-257.7 159.9-343.1l1.7-1.4c5.8-4.8 13.1-7.5 20.6-7.5h531.7c7.5 0 14.8 2.7 20.6 7.5l1.7 1.4C901.7 78.3 960 203.3 960 336c0 60.5-11.9 119.1-35.2 174.4zM761.4 60H262.6C184.5 130.5 140 230.4 140 336c0 99.4 38.7 192.8 109 263 70.3 70.3 163.7 109 263 109 99.4 0 192.8-38.7 263-109 70.3-70.3 109-163.7 109-263 0-105.6-44.5-205.5-122.6-276zM623.5 474.5c-3.1 3.1-8.2 3.1-11.3 0L527.7 390c-18.7 5-39.4 0.2-54.1-14.5-21.9-21.9-21.9-57.3 0-79.2 21.9-21.9 57.3-21.9 79.2 0 14.7 14.7 19.5 35.4 14.5 54.1l84.5 84.5c3.1 3.1 3.1 8.2 0 11.3l-28.3 28.3zM490 576h44c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8h-44c-4.4 0-8-3.6-8-8v-80c0-4.4 3.6-8 8-8zM750 358v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8zM762.7 555.2l-31.1 31.1c-3.1 3.1-8.2 3.1-11.3 0l-56.6-56.6c-3.1-3.1-3.1-8.2 0-11.3l31.1-31.1c3.1-3.1 8.2-3.1 11.3 0l56.6 56.6c3.1 3.1 3.1 8.2 0 11.3zM304.1 586.3c-3.1 3.1-8.2 3.1-11.3 0l-31.1-31.1c-3.1-3.1-3.1-8.2 0-11.3l56.6-56.6c3.1-3.1 8.2-3.1 11.3 0l31.1 31.1c3.1 3.1 3.1 8.2 0 11.3l-56.6 56.6zM262 366h-80c-4.4 0-8-3.6-8-8v-44c0-4.4 3.6-8 8-8h80c4.4 0 8 3.6 8 8v44c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="issuesclose" unicode="" d="M512 208m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM536 320c4.4 0 8 3.6 8 8V600c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-272c0-4.4 3.6-8 8-8h48zM936 508h-59.3c-2.6 0-5-1.2-6.5-3.3L763.7 357.9l-49.9 68.8c-1.5 2.1-3.9 3.3-6.5 3.3H648c-6.5 0-10.3-7.4-6.5-12.7l109.2-150.7c6.4-8.8 19.6-8.8 26 0l165.8 228.7c3.8 5.3 0 12.7-6.5 12.7zM892 202h-64.2c-5.5 0-10.6-2.9-13.6-7.5-14.1-22.4-30.7-43.2-49.8-62.2-32.8-32.7-70.9-58.4-113.3-76.3-43.9-18.5-90.5-27.9-138.7-27.9-48.1 0-94.8 9.4-138.7 27.9-42.4 17.9-80.5 43.6-113.3 76.3-32.8 32.7-58.5 70.8-76.4 113.2-18.6 43.8-28 90.5-28 138.5s9.4 94.7 28 138.5c17.9 42.4 43.6 80.5 76.4 113.2 32.8 32.7 70.9 58.4 113.3 76.3 43.9 18.5 90.5 27.9 138.7 27.9 48.1 0 94.8-9.4 138.7-27.9 42.4-17.9 80.5-43.6 113.3-76.3 19-19 35.6-39.8 49.8-62.2 2.9-4.7 8.1-7.5 13.6-7.5H892c6 0 9.8 6.3 7.2 11.6C828.8 717.5 684.7 814 517.7 816 278.9 818.8 80.5 623.5 80 384.8 79.5 145.9 273.3-48 512.4-48c169.2 0 315.6 97 386.7 238.4 2.7 5.3-1.2 11.6-7.1 11.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="poweroff" unicode="" d="M705.6 771.1c-5.3 2.7-11.6-1.2-11.6-7.2v-64.2c0-5.5 2.9-10.6 7.5-13.6 22.4-14.1 43.2-30.7 62.2-49.8 32.7-32.8 58.4-70.9 76.3-113.3 18.5-43.9 27.9-90.5 27.9-138.7 0-48.1-9.4-94.8-27.9-138.7-17.9-42.4-43.6-80.5-76.3-113.3-32.7-32.8-70.8-58.5-113.2-76.4-43.8-18.6-90.5-28-138.5-28s-94.7 9.4-138.5 28c-42.4 17.9-80.5 43.6-113.2 76.4-32.7 32.8-58.4 70.9-76.3 113.3-18.5 43.9-27.9 90.5-27.9 138.7 0 48.1 9.4 94.8 27.9 138.7 17.9 42.4 43.6 80.5 76.3 113.3 19 19 39.8 35.6 62.2 49.8 4.7 2.9 7.5 8.1 7.5 13.6V764c0 6-6.3 9.8-11.6 7.2C178.5 700.8 82 556.7 80 389.7 77.2 150.9 272.5-47.5 511.2-48c239-0.5 432.8 193.3 432.8 432.4 0 169.2-97 315.7-238.4 386.7zM480 336h64c4.4 0 8 3.6 8 8V808c0 4.4-3.6 8-8 8h-64c-4.4 0-8-3.6-8-8v-464c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="logout" unicode="" d="M868 164h-70.3c-4.8 0-9.3-2.1-12.3-5.8-7-8.5-14.5-16.7-22.4-24.5-32.6-32.5-70.5-58.1-112.7-75.9-43.6-18.4-90-27.8-137.9-27.8-47.9 0-94.3 9.4-137.9 27.8-42.2 17.8-80.1 43.4-112.7 75.9-32.6 32.5-58.1 70.4-76 112.5C167.3 289.8 158 336.1 158 384s9.4 94.2 27.8 137.8c17.8 42.1 43.4 80 76 112.5s70.5 58.1 112.7 75.9c43.6 18.4 90 27.8 137.9 27.8 47.9 0 94.3-9.3 137.9-27.8 42.2-17.8 80.1-43.4 112.7-75.9 7.9-7.9 15.3-16.1 22.4-24.5 3-3.7 7.6-5.8 12.3-5.8H868c6.3 0 10.2 7 6.7 12.3C798 735.5 663.8 814.4 511.3 814 271.7 813.4 79.6 618.9 82 379.6 84.4 144.1 276.2-46 512.4-46c152.1 0 285.7 78.8 362.3 197.7 3.4 5.3-0.4 12.3-6.7 12.3zM956.9 390.3L815 502.3c-5.3 4.2-13 0.4-13-6.3v-76H488c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112c4.1 3.2 4.1 9.4 0 12.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="login" unicode="" d="M512.7 814c-152.5 0.4-286.7-78.5-363.4-197.7-3.4-5.3 0.4-12.3 6.7-12.3h70.3c4.8 0 9.3 2.1 12.3 5.8 7 8.5 14.5 16.7 22.4 24.5 32.6 32.5 70.5 58.1 112.7 75.9 43.6 18.4 90 27.8 137.9 27.8 47.9 0 94.3-9.3 137.9-27.8 42.2-17.8 80.1-43.4 112.7-75.9 32.6-32.5 58.1-70.4 76-112.5C856.7 478.2 866 431.9 866 384s-9.4-94.2-27.8-137.8c-17.8-42.1-43.4-80-76-112.5s-70.5-58.1-112.7-75.9c-43.6-18.4-90-27.8-137.9-27.8-47.9 0-94.3 9.4-137.9 27.8-42.2 17.8-80.1 43.4-112.7 75.9-7.9 7.9-15.3 16.1-22.4 24.5-3 3.7-7.6 5.8-12.3 5.8H156c-6.3 0-10.2-7-6.7-12.3C225.9 32.8 359.5-46 511.6-46c236.2 0 428 190.1 430.4 425.6C944.4 618.9 752.3 813.4 512.7 814zM222 272v76h314c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H222v76c0 6.7-7.8 10.5-13 6.3l-141.9-112c-4.1-3.2-4.1-9.4 0-12.6l141.9-112c5.2-4.1 13-0.4 13 6.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="piechart" unicode="" d="M864 378H506V736c0 4.4-3.6 8-8 8h-26c-54 0-106.4-10.6-155.7-31.4-47.6-20.1-90.4-49-127.1-85.7-36.7-36.7-65.6-79.5-85.7-127.1C82.6 450.4 72 398 72 344c0-54 10.6-106.4 31.4-155.7 20.1-47.6 49-90.4 85.7-127.1 36.7-36.7 79.5-65.6 127.1-85.7C365.6-45.4 418-56 472-56c54 0 106.4 10.6 155.7 31.4 47.6 20.1 90.4 49 127.1 85.7 36.7 36.7 65.6 79.5 85.7 127.1C861.4 237.6 872 290 872 344v26c0 4.4-3.6 8-8 8zM705.7 108.2c-62.6-62.1-147.1-96.6-235.3-96.2-88.1 0.4-170.9 34.9-233.2 97.2C174.5 171.9 140 255.3 140 344c0 88.7 34.5 172.1 97.2 234.8 54.6 54.6 124.9 87.9 200.8 95.5V310h364.3c-7.7-76.3-41.3-147-96.6-201.8zM952 433.6l-2.6 28.2c-8.5 92.1-49.4 179-115.2 244.6-65.8 65.7-152.8 106.5-245.2 115L560.7 824c-4.7 0.4-8.7-3.2-8.7-7.9V432c0-4.4 3.6-8 8-8l384 1c4.7 0 8.4 4 8 8.6z m-332.2 58.2V748.4c62.6-13.1 120.7-44.2 166.4-89.8 45.7-45.6 77-103.6 90-166.1l-256.4-0.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="setting" unicode="" d="M924.8 270.3l-65.5 56c3.1 19 4.7 38.4 4.7 57.8s-1.6 38.8-4.7 57.8l65.5 56c10.1 8.6 13.8 22.6 9.3 35.2l-0.9 2.6c-18.1 50.5-44.9 96.9-79.7 137.9l-1.8 2.1c-8.6 10.1-22.5 13.9-35.1 9.5l-81.3-28.9c-30 24.6-63.5 44-99.7 57.6l-15.7 85c-2.4 13.1-12.7 23.3-25.8 25.7l-2.7 0.5c-52.1 9.4-106.9 9.4-159 0l-2.7-0.5c-13.1-2.4-23.4-12.6-25.8-25.7l-15.8-85.4c-35.9-13.6-69.2-32.9-99-57.4l-81.9 29.1c-12.5 4.4-26.5 0.7-35.1-9.5l-1.8-2.1c-34.8-41.1-61.6-87.5-79.7-137.9l-0.9-2.6c-4.5-12.5-0.8-26.5 9.3-35.2l66.3-56.6c-3.1-18.8-4.6-38-4.6-57.1 0-19.2 1.5-38.4 4.6-57.1L99 270.5c-10.1-8.6-13.8-22.6-9.3-35.2l0.9-2.6c18.1-50.4 44.9-96.9 79.7-137.9l1.8-2.1c8.6-10.1 22.5-13.9 35.1-9.5l81.9 29.1c29.8-24.5 63.1-43.9 99-57.4l15.8-85.4c2.4-13.1 12.7-23.3 25.8-25.7l2.7-0.5c26.1-4.7 52.8-7.1 79.5-7.1 26.7 0 53.5 2.4 79.5 7.1l2.7 0.5c13.1 2.4 23.4 12.6 25.8 25.7l15.7 85c36.2 13.6 69.7 32.9 99.7 57.6l81.3-28.9c12.5-4.4 26.5-0.7 35.1 9.5l1.8 2.1c34.8 41.1 61.6 87.5 79.7 137.9l0.9 2.6c4.5 12.3 0.8 26.3-9.3 35zM788.3 430.1c2.5-15.1 3.8-30.6 3.8-46.1s-1.3-31-3.8-46.1l-6.6-40.1 74.7-63.9c-11.3-26.1-25.6-50.7-42.6-73.6L721 193.2l-31.4-25.8c-23.9-19.6-50.5-35-79.3-45.8l-38.1-14.3-17.9-97c-28.1-3.2-56.8-3.2-85 0l-17.9 97.2-37.8 14.5c-28.5 10.8-55 26.2-78.7 45.7l-31.4 25.9-93.4-33.2c-17 22.9-31.2 47.6-42.6 73.6l75.5 64.5-6.5 40c-2.4 14.9-3.7 30.3-3.7 45.5 0 15.3 1.2 30.6 3.7 45.5l6.5 40-75.5 64.5c11.3 26.1 25.6 50.7 42.6 73.6l93.4-33.2 31.4 25.9c23.7 19.5 50.2 34.9 78.7 45.7l37.9 14.3 17.9 97.2c28.1 3.2 56.8 3.2 85 0l17.9-97 38.1-14.3c28.7-10.8 55.4-26.2 79.3-45.8l31.4-25.8 92.8 32.9c17-22.9 31.2-47.6 42.6-73.6L781.8 470l6.5-39.9zM512 570c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z m79.2-255.2C570 293.7 541.9 282 512 282c-29.9 0-58 11.7-79.2 32.8C411.7 336 400 364.1 400 394c0 29.9 11.7 58 32.8 79.2C454 494.4 482.1 506 512 506c29.9 0 58-11.6 79.2-32.8C612.3 452 624 423.9 624 394c0-29.9-11.7-58-32.8-79.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="eye" unicode="" d="M942.2 409.8C847.4 609.5 704.1 710 512 710c-192.2 0-335.4-100.5-430.2-300.3-7.7-16.2-7.7-35.2 0-51.5C176.6 158.5 319.9 58 512 58c192.2 0 335.4 100.5 430.2 300.3 7.7 16.2 7.7 35 0 51.5zM512 130c-161.3 0-279.4 81.8-362.7 254C232.6 556.2 350.7 638 512 638c161.3 0 279.4-81.8 362.7-254C791.5 211.8 673.4 130 512 130zM508 560c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z m0-288c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112z" horiz-adv-x="1024" /> + + + <glyph glyph-name="location" unicode="" d="M854.6 606.9c-18.8 43.4-45.7 82.3-79.9 115.7-34.2 33.4-73.9 59.5-118.2 77.8C610.7 819.4 562.1 829 512 829c-50.1 0-98.7-9.6-144.5-28.5-44.3-18.3-84-44.5-118.2-77.8-34.2-33.4-61.1-72.4-79.9-115.7-19.5-45-29.4-92.8-29.4-142 0-70.6 16.9-140.9 50.1-208.7 26.7-54.5 64-107.6 111-158.1 80.3-86.2 164.5-138.9 188.4-153 6.9-4.1 14.7-6.1 22.4-6.1 7.8 0 15.5 2 22.4 6.1 23.9 14.1 108.1 66.8 188.4 153 47 50.4 84.3 103.6 111 158.1C867.1 324 884 394.2 884 464.9c0 49.2-9.9 97-29.4 142zM512 15.8c-65.9 41.9-300 207.8-300 449.1 0 77.9 31.1 151.1 87.6 206.3C356.3 726.5 431.7 757 512 757s155.7-30.5 212.4-85.9C780.9 616 812 542.8 812 464.9c0-241.3-234.1-407.2-300-449.1zM512 633c-97.2 0-176-78.8-176-176s78.8-176 176-176 176 78.8 176 176-78.8 176-176 176z m79.2-255.2C570 356.7 541.9 345 512 345c-29.9 0-58 11.7-79.2 32.8C411.7 399 400 427.1 400 457c0 29.9 11.7 58 32.8 79.2C454 557.4 482.1 569 512 569c29.9 0 58-11.6 79.2-32.8C612.4 515 624 486.9 624 457c0-29.9-11.6-58-32.8-79.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="edit-square" unicode="" d="M904 384h-56c-4.4 0-8-3.6-8-8v-320H184V712h320c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V376c0 4.4-3.6 8-8 8zM355.9 361.1L354 242.20000000000005c-0.1-8.9 7.1-16.2 16-16.2h0.4l118 2.9c2 0.1 4 0.9 5.4 2.3l415.9 415c3.1 3.1 3.1 8.2 0 11.3L785.4 781.7c-1.6 1.6-3.6 2.3-5.7 2.3s-4.1-0.8-5.7-2.3l-415.8-415c-1.4-1.5-2.3-3.5-2.3-5.6z m63.5-23.6L779.7 697l45.2-45.1-360.5-359.7-45.7-1.1 0.7 46.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="export" unicode="" d="M888.3 138.6h-53.8c-4.2 0-7.7-3.5-7.7-7.7v-61.8H197.1V698.9h629.8v-61.8c0-4.2 3.5-7.7 7.7-7.7h53.8c4.2 0 7.7 3.4 7.7 7.7V737.3c0 17-13.7 30.7-30.7 30.7H158.7c-17 0-30.7-13.7-30.7-30.7v-706.6c0-17 13.7-30.7 30.7-30.7h706.6c17 0 30.7 13.7 30.7 30.7V130.9c0 4.3-3.5 7.7-7.7 7.7zM906.9 390.3L765 502.3c-5.3 4.2-13 0.4-13-6.3v-76H438c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h314v-76c0-6.7 7.8-10.5 13-6.3l141.9 112c4.1 3.2 4.1 9.4 0 12.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="save" unicode="" d="M893.3 602.7L730.7 765.3c-7.5 7.5-16.7 13-26.7 16V784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V557.5c0 17-6.7 33.2-18.7 45.2zM384 712h256v-104H384V712z m456-656H184V712h136v-136c0-17.7 14.3-32 32-32h320c17.7 0 32 14.3 32 32V690.2l136-136V56zM512 454c-79.5 0-144-64.5-144-144s64.5-144 144-144 144 64.5 144 144-64.5 144-144 144z m0-224c-44.2 0-80 35.8-80 80s35.8 80 80 80 80-35.8 80-80-35.8-80-80-80z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Import" unicode="" d="M888.3 138.6h-53.8c-4.2 0-7.7-3.5-7.7-7.7v-61.8H197.1V698.9h629.8v-61.8c0-4.2 3.5-7.7 7.7-7.7h53.8c4.2 0 7.7 3.4 7.7 7.7V737.3c0 17-13.7 30.7-30.7 30.7H158.7c-17 0-30.7-13.7-30.7-30.7v-706.6c0-17 13.7-30.7 30.7-30.7h706.6c17 0 30.7 13.7 30.7 30.7V130.9c0 4.3-3.5 7.7-7.7 7.7zM902 420H588v76c0 6.7-7.8 10.5-13 6.3l-141.9-112c-4.1-3.2-4.1-9.4 0-12.6l141.9-112c5.3-4.2 13-0.4 13 6.3v76h314c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="appstore" unicode="" d="M464 752H160c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V736c0 8.8-7.2 16-16 16z m-52-268H212V684h200v-200zM864 752H560c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V736c0 8.8-7.2 16-16 16z m-52-268H612V684h200v-200zM464 352H160c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16z m-52-268H212V284h200v-200zM864 352H560c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16z m-52-268H612V284h200v-200z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close-square" unicode="" d="M354 225h58.9c4.7 0 9.2 2.1 12.3 5.7L512 334.20000000000005l86.8-103.5c3-3.6 7.5-5.7 12.3-5.7H670c6.8 0 10.5 7.9 6.1 13.1L553.8 384l122.4 145.9c4.4 5.2 0.7 13.1-6.1 13.1h-58.9c-4.7 0-9.2-2.1-12.3-5.7L512 433.8l-86.8 103.5c-3 3.6-7.5 5.7-12.3 5.7H354c-6.8 0-10.5-7.9-6.1-13.1L470.2 384 347.9 238.10000000000002c-4.4-5.2-0.7-13.1 6.1-13.1zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down-square" unicode="" d="M505.5 237.29999999999995c3.2-4.4 9.7-4.4 12.9 0l178 246c3.8 5.3 0 12.7-6.5 12.7H643c-10.2 0-19.9-4.9-25.9-13.2L512 337.4 406.8 482.8c-6 8.3-15.6 13.2-25.9 13.2H334c-6.5 0-10.3-7.4-6.5-12.7l178-246zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layout" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-696-72h136v-656H184V712z m656-656H384V512h456v-456zM384 576V712h456v-136H384z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left-square" unicode="" d="M365.3 377.5l246-178c5.3-3.8 12.7 0 12.7 6.5v46.9c0 10.2-4.9 19.9-13.2 25.9L465.4 384l145.4 105.2c8.3 6 13.2 15.6 13.2 25.9V562c0 6.5-7.4 10.3-12.7 6.5l-246-178c-4.4-3.2-4.4-9.8 0-13zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="play-square" unicode="" d="M442.3 218.39999999999998l199.4 156.7c5.7 4.5 5.7 13.1 0 17.7L442.3 549.6c-7.4 5.8-18.3 0.6-18.3-8.8v-313.5c0-9.4 10.9-14.7 18.3-8.9zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="control" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656zM340 213v-77c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v77c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5zM404 411V632c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-221c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5zM340 213c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5c41.8 13.5 72 52.7 72 99s-30.2 85.5-72 99c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5c-41.8-13.5-72-52.7-72-99s30.2-85.5 72-99z m0.1 115.7c0.3 0.6 0.7 1.2 1 1.8v0.1l1.2 1.8c0.1 0.2 0.2 0.3 0.3 0.5 0.3 0.5 0.7 0.9 1 1.4 0.1 0.1 0.2 0.3 0.3 0.4 0.5 0.6 0.9 1.1 1.4 1.6l0.3 0.3 1.2 1.2 0.4 0.4c0.5 0.5 1 0.9 1.6 1.4 0.6 0.5 1.1 0.9 1.7 1.3 0.2 0.1 0.3 0.2 0.5 0.3 0.5 0.3 0.9 0.7 1.4 1 0.1 0.1 0.3 0.2 0.4 0.3 0.6 0.4 1.2 0.7 1.9 1.1 0.1 0.1 0.3 0.1 0.4 0.2 0.5 0.3 1 0.5 1.6 0.8l0.6 0.3c0.7 0.3 1.3 0.6 2 0.8 0.7 0.3 1.4 0.5 2.1 0.7 0.2 0.1 0.4 0.1 0.6 0.2 0.6 0.2 1.1 0.3 1.7 0.4 0.2 0 0.3 0.1 0.5 0.1 0.7 0.2 1.5 0.3 2.2 0.4 0.2 0 0.3 0 0.5 0.1 0.6 0.1 1.2 0.1 1.8 0.2h0.6c0.8 0 1.5 0.1 2.3 0.1s1.5 0 2.3-0.1h0.6c0.6 0 1.2-0.1 1.8-0.2 0.2 0 0.3 0 0.5-0.1 0.7-0.1 1.5-0.2 2.2-0.4 0.2 0 0.3-0.1 0.5-0.1 0.6-0.1 1.2-0.3 1.7-0.4 0.2-0.1 0.4-0.1 0.6-0.2 0.7-0.2 1.4-0.4 2.1-0.7 0.7-0.2 1.3-0.5 2-0.8l0.6-0.3c0.5-0.2 1.1-0.5 1.6-0.8 0.1-0.1 0.3-0.1 0.4-0.2 0.6-0.3 1.3-0.7 1.9-1.1 0.1-0.1 0.3-0.2 0.4-0.3 0.5-0.3 1-0.6 1.4-1 0.2-0.1 0.3-0.2 0.5-0.3 0.6-0.4 1.2-0.9 1.7-1.3s1.1-0.9 1.6-1.4l0.4-0.4 1.2-1.2 0.3-0.3c0.5-0.5 1-1.1 1.4-1.6 0.1-0.1 0.2-0.3 0.3-0.4 0.4-0.4 0.7-0.9 1-1.4 0.1-0.2 0.2-0.3 0.3-0.5l1.2-1.8s0-0.1 0.1-0.1c0.4-0.6 0.7-1.2 1-1.8 2.6-5 4.1-10.7 4.1-16.7s-1.5-11.7-4.1-16.7c-0.3-0.6-0.7-1.2-1-1.8 0 0 0-0.1-0.1-0.1l-1.2-1.8c-0.1-0.2-0.2-0.3-0.3-0.5-0.3-0.5-0.7-0.9-1-1.4-0.1-0.1-0.2-0.3-0.3-0.4-0.5-0.6-0.9-1.1-1.4-1.6l-0.3-0.3-1.2-1.2-0.4-0.4c-0.5-0.5-1-0.9-1.6-1.4-0.6-0.5-1.1-0.9-1.7-1.3-0.2-0.1-0.3-0.2-0.5-0.3-0.5-0.3-0.9-0.7-1.4-1-0.1-0.1-0.3-0.2-0.4-0.3-0.6-0.4-1.2-0.7-1.9-1.1-0.1-0.1-0.3-0.1-0.4-0.2-0.5-0.3-1-0.5-1.6-0.8l-0.6-0.3c-0.7-0.3-1.3-0.6-2-0.8-0.7-0.3-1.4-0.5-2.1-0.7-0.2-0.1-0.4-0.1-0.6-0.2-0.6-0.2-1.1-0.3-1.7-0.4-0.2 0-0.3-0.1-0.5-0.1-0.7-0.2-1.5-0.3-2.2-0.4-0.2 0-0.3 0-0.5-0.1-0.6-0.1-1.2-0.1-1.8-0.2h-0.6c-0.8 0-1.5-0.1-2.3-0.1s-1.5 0-2.3 0.1h-0.6c-0.6 0-1.2 0.1-1.8 0.2-0.2 0-0.3 0-0.5 0.1-0.7 0.1-1.5 0.2-2.2 0.4-0.2 0-0.3 0.1-0.5 0.1-0.6 0.1-1.2 0.3-1.7 0.4-0.2 0.1-0.4 0.1-0.6 0.2-0.7 0.2-1.4 0.4-2.1 0.7-0.7 0.2-1.3 0.5-2 0.8l-0.6 0.3c-0.5 0.2-1.1 0.5-1.6 0.8-0.1 0.1-0.3 0.1-0.4 0.2-0.6 0.3-1.3 0.7-1.9 1.1-0.1 0.1-0.3 0.2-0.4 0.3-0.5 0.3-1 0.6-1.4 1-0.2 0.1-0.3 0.2-0.5 0.3-0.6 0.4-1.2 0.9-1.7 1.3s-1.1 0.9-1.6 1.4l-0.4 0.4-1.2 1.2-0.3 0.3c-0.5 0.5-1 1.1-1.4 1.6-0.1 0.1-0.2 0.3-0.3 0.4-0.4 0.4-0.7 0.9-1 1.4-0.1 0.2-0.2 0.3-0.3 0.5l-1.2 1.8v0.1c-0.4 0.6-0.7 1.2-1 1.8-2.6 5-4.1 10.7-4.1 16.7s1.5 11.7 4.1 16.7zM620 357v-221c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V357c-10.1-3.3-20.8-5-32-5s-21.9 1.8-32 5zM684 555v77c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-77c10.1 3.3 20.8 5 32 5s21.9-1.8 32-5zM620 357c10.1-3.3 20.8-5 32-5s21.9 1.8 32 5c41.8 13.5 72 52.7 72 99s-30.2 85.5-72 99c-10.1 3.3-20.8 5-32 5s-21.9-1.8-32-5c-41.8-13.5-72-52.7-72-99s30.2-85.5 72-99z m0.1 115.7c0.3 0.6 0.7 1.2 1 1.8v0.1l1.2 1.8c0.1 0.2 0.2 0.3 0.3 0.5 0.3 0.5 0.7 0.9 1 1.4 0.1 0.1 0.2 0.3 0.3 0.4 0.5 0.6 0.9 1.1 1.4 1.6l0.3 0.3 1.2 1.2 0.4 0.4c0.5 0.5 1 0.9 1.6 1.4 0.6 0.5 1.1 0.9 1.7 1.3 0.2 0.1 0.3 0.2 0.5 0.3 0.5 0.3 0.9 0.7 1.4 1 0.1 0.1 0.3 0.2 0.4 0.3 0.6 0.4 1.2 0.7 1.9 1.1 0.1 0.1 0.3 0.1 0.4 0.2 0.5 0.3 1 0.5 1.6 0.8l0.6 0.3c0.7 0.3 1.3 0.6 2 0.8 0.7 0.3 1.4 0.5 2.1 0.7 0.2 0.1 0.4 0.1 0.6 0.2 0.6 0.2 1.1 0.3 1.7 0.4 0.2 0 0.3 0.1 0.5 0.1 0.7 0.2 1.5 0.3 2.2 0.4 0.2 0 0.3 0 0.5 0.1 0.6 0.1 1.2 0.1 1.8 0.2h0.6c0.8 0 1.5 0.1 2.3 0.1s1.5 0 2.3-0.1h0.6c0.6 0 1.2-0.1 1.8-0.2 0.2 0 0.3 0 0.5-0.1 0.7-0.1 1.5-0.2 2.2-0.4 0.2 0 0.3-0.1 0.5-0.1 0.6-0.1 1.2-0.3 1.7-0.4 0.2-0.1 0.4-0.1 0.6-0.2 0.7-0.2 1.4-0.4 2.1-0.7 0.7-0.2 1.3-0.5 2-0.8l0.6-0.3c0.5-0.2 1.1-0.5 1.6-0.8 0.1-0.1 0.3-0.1 0.4-0.2 0.6-0.3 1.3-0.7 1.9-1.1 0.1-0.1 0.3-0.2 0.4-0.3 0.5-0.3 1-0.6 1.4-1 0.2-0.1 0.3-0.2 0.5-0.3 0.6-0.4 1.2-0.9 1.7-1.3s1.1-0.9 1.6-1.4l0.4-0.4 1.2-1.2 0.3-0.3c0.5-0.5 1-1.1 1.4-1.6 0.1-0.1 0.2-0.3 0.3-0.4 0.4-0.4 0.7-0.9 1-1.4 0.1-0.2 0.2-0.3 0.3-0.5l1.2-1.8v-0.1c0.4-0.6 0.7-1.2 1-1.8 2.6-5 4.1-10.7 4.1-16.7s-1.5-11.7-4.1-16.7c-0.3-0.6-0.7-1.2-1-1.8v-0.1l-1.2-1.8c-0.1-0.2-0.2-0.3-0.3-0.5-0.3-0.5-0.7-0.9-1-1.4-0.1-0.1-0.2-0.3-0.3-0.4-0.5-0.6-0.9-1.1-1.4-1.6l-0.3-0.3-1.2-1.2-0.4-0.4c-0.5-0.5-1-0.9-1.6-1.4-0.6-0.5-1.1-0.9-1.7-1.3-0.2-0.1-0.3-0.2-0.5-0.3-0.5-0.3-0.9-0.7-1.4-1-0.1-0.1-0.3-0.2-0.4-0.3-0.6-0.4-1.2-0.7-1.9-1.1-0.1-0.1-0.3-0.1-0.4-0.2-0.5-0.3-1-0.5-1.6-0.8l-0.6-0.3c-0.7-0.3-1.3-0.6-2-0.8-0.7-0.3-1.4-0.5-2.1-0.7-0.2-0.1-0.4-0.1-0.6-0.2-0.6-0.2-1.1-0.3-1.7-0.4-0.2 0-0.3-0.1-0.5-0.1-0.7-0.2-1.5-0.3-2.2-0.4-0.2 0-0.3 0-0.5-0.1-0.6-0.1-1.2-0.1-1.8-0.2h-0.6c-0.8 0-1.5-0.1-2.3-0.1s-1.5 0-2.3 0.1h-0.6c-0.6 0-1.2 0.1-1.8 0.2-0.2 0-0.3 0-0.5 0.1-0.7 0.1-1.5 0.2-2.2 0.4-0.2 0-0.3 0.1-0.5 0.1-0.6 0.1-1.2 0.3-1.7 0.4-0.2 0.1-0.4 0.1-0.6 0.2-0.7 0.2-1.4 0.4-2.1 0.7-0.7 0.2-1.3 0.5-2 0.8l-0.6 0.3c-0.5 0.2-1.1 0.5-1.6 0.8-0.1 0.1-0.3 0.1-0.4 0.2-0.6 0.3-1.3 0.7-1.9 1.1-0.1 0.1-0.3 0.2-0.4 0.3-0.5 0.3-1 0.6-1.4 1-0.2 0.1-0.3 0.2-0.5 0.3-0.6 0.4-1.2 0.9-1.7 1.3s-1.1 0.9-1.6 1.4l-0.4 0.4-1.2 1.2-0.3 0.3c-0.5 0.5-1 1.1-1.4 1.6-0.1 0.1-0.2 0.3-0.3 0.4-0.4 0.4-0.7 0.9-1 1.4-0.1 0.2-0.2 0.3-0.3 0.5l-1.2 1.8v0.1c-0.4 0.6-0.7 1.2-1 1.8-2.6 5-4.1 10.7-4.1 16.7s1.5 11.7 4.1 16.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="codelibrary" unicode="" d="M516 223c0-4.4 3.4-8 7.5-8h185c4.1 0 7.5 3.6 7.5 8v48c0 4.4-3.4 8-7.5 8h-185c-4.1 0-7.5-3.6-7.5-8v-48zM321.1 216.9l192 161c3.8 3.2 3.8 9.1 0 12.3l-192 160.9c-5.2 4.4-13.1 0.7-13.1-6.1v-62.7c0-2.4 1-4.6 2.9-6.1L420.7 384l-109.8-92.2c-1.8-1.5-2.9-3.8-2.9-6.1V223c0-6.8 7.9-10.5 13.1-6.1zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="detail" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656zM492 496h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM492 352h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM492 208h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H492c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM380 528m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM380 384m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM380 240m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="minus-square" unicode="" d="M328 352h368c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="plus-square" unicode="" d="M328 352h152v-152c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V352h152c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544V568c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-152H328c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right-square" unicode="" d="M412.7 199.5l246 178c4.4 3.2 4.4 9.7 0 12.9l-246 178c-5.3 3.8-12.7 0-12.7-6.5V515c0-10.2 4.9-19.9 13.2-25.9L558.6 384 413.2 278.79999999999995c-8.3-6-13.2-15.6-13.2-25.9V206c0-6.5 7.4-10.3 12.7-6.5zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="project" unicode="" d="M280 144h80c4.4 0 8 3.6 8 8V616c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-464c0-4.4 3.6-8 8-8zM472 424h80c4.4 0 8 3.6 8 8V616c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-184c0-4.4 3.6-8 8-8zM664 352h80c4.4 0 8 3.6 8 8V616c0 4.4-3.6 8-8 8h-80c-4.4 0-8-3.6-8-8v-256c0-4.4 3.6-8 8-8zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wallet" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-464H528V448h312v-128z m0-264H184V712h656v-200H496c-17.7 0-32-14.3-32-32v-192c0-17.7 14.3-32 32-32h344v-200zM620 384m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up-square" unicode="" d="M334 272h46.9c10.2 0 19.9 4.9 25.9 13.2L512 430.6l105.2-145.4c6-8.3 15.6-13.2 25.9-13.2H690c6.5 0 10.3 7.4 6.5 12.7l-178 246c-3.2 4.4-9.7 4.4-12.9 0l-178-246c-3.9-5.3-0.1-12.7 6.4-12.7zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calculator" unicode="" d="M251.2 509H320v-68.8c0-1.8 1.8-3.2 4-3.2h48c2.2 0 4 1.4 4 3.3V509h68.8c1.8 0 3.2 1.8 3.2 4v48c0 2.2-1.4 4-3.3 4H376v68.8c0 1.8-1.8 3.2-4 3.2h-48c-2.2 0-4-1.4-4-3.2V565h-68.8c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4zM579.2 509h193.6c1.8 0 3.2 1.8 3.2 4v48c0 2.2-1.4 4-3.3 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4zM579.2 244h193.6c1.8 0 3.2 1.8 3.2 4v48c0 2.2-1.4 4-3.3 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4zM579.2 140h193.6c1.8 0 3.2 1.8 3.2 4v48c0 2.2-1.4 4-3.3 4H579.2c-1.8 0-3.2-1.8-3.2-4v-48c0-2.2 1.4-4 3.2-4zM383.5 221l61.2 74.9c4.3 5.2 0.7 13.1-5.9 13.1H388c-2.3 0-4.5-1-5.9-2.9l-34-41.6-34 41.6c-1.5 1.8-3.7 2.9-5.9 2.9h-50.9c-6.6 0-10.2-7.9-5.9-13.1l61.2-74.9-62.7-76.8c-4.4-5.2-0.8-13.1 5.8-13.1h50.8c2.3 0 4.5 1 5.9 2.9l35.5 43.5 35.5-43.5c1.5-1.8 3.7-2.9 5.9-2.9h50.8c6.6 0 10.2 7.9 5.9 13.1L383.5 221zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-36-732H180V716h664v-664z" horiz-adv-x="1024" /> + + + <glyph glyph-name="interation" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656zM304.8 372h50.7c3.7 0 6.8 3 6.8 6.8v78.9c0 19.7 15.9 35.6 35.5 35.6h205.7v-53.4c0-5.7 6.5-8.8 10.9-5.3l109.1 85.7c3.5 2.7 3.5 8 0 10.7l-109.1 85.7c-4.4 3.5-10.9 0.3-10.9-5.3V558H397.7c-55.1 0-99.7-44.8-99.7-100.1V379c0-4 3-7 6.8-7zM300.6 237.1l109.1-85.7c4.4-3.5 10.9-0.3 10.9 5.3v53.4h205.7c55.1 0 99.7 44.8 99.7 100.1v78.9c0 3.7-3 6.8-6.8 6.8h-50.7c-3.7 0-6.8-3-6.8-6.8v-78.9c0-19.7-15.9-35.6-35.5-35.6H420.6V328c0 5.7-6.5 8.8-10.9 5.3l-109.1-85.7c-3.5-2.5-3.5-7.8 0-10.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="check-square" unicode="" d="M433.1 238.29999999999995c12.7-17.7 39-17.7 51.7 0l210.6 292c3.8 5.3 0 12.7-6.5 12.7H642c-10.2 0-19.9-4.9-25.9-13.3L459 311.70000000000005l-71.2 98.8c-6 8.3-15.6 13.3-25.9 13.3H315c-6.5 0-10.3-7.4-6.5-12.7l124.6-172.8zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-outer" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-40-728H184V712h656v-656zM484 530h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM302 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM666 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM484 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM484 166h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-top" unicode="" d="M872 752H152c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-bottom" unicode="" d="M872 88H152c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM152 182h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM152 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM152 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM152 514h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM318 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM318 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM650 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM650 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM872 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM484 348h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM872 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM484 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM484 182h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM484 514h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-left" unicode="" d="M208 752h-56c-4.4 0-8-3.6-8-8v-720c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V744c0 4.4-3.6 8-8 8zM374 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-right" unicode="" d="M872 752h-56c-4.4 0-8-3.6-8-8v-720c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V744c0 4.4-3.6 8-8 8zM706 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-inner" unicode="" d="M872 420H548V752h-72v-332H152c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h324v-332h72V348h324c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM650 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM318 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM152 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM208 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM152 514h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM208 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-verticle" unicode="" d="M872 420H152c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM650 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM318 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM152 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM484 680h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM208 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM152 514h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM484 514h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM208 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="border-horizontal" unicode="" d="M540 752h-56c-4.4 0-8-3.6-8-8v-720c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V744c0 4.4-3.6 8-8 8zM374 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 752h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 586h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 254h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM208 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM374 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 88h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM706 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radius-bottomleft" unicode="" d="M712 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM714 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM136 522h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM136 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM888 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 594h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM310 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM540 72H358c-87.3 0-158 70.7-158 158V412c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-182c0-127 103-230 230-230h182c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radius-bottomright" unicode="" d="M368 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM310 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM888 594h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 594h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM484 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM658 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM888 420h-56c-4.4 0-8-3.6-8-8v-182c0-87.3-70.7-158-158-158H484c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h182c127 0 230 103 230 230V412c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radius-upleft" unicode="" d="M656 696h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM714 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 594h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM366 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 768H358c-127 0-230-103-230-230v-182c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V538c0 87.3 70.7 158 158 158h182c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radius-upright" unicode="" d="M368 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM366 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 768h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 594h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 420h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 246h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM540 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM714 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM666 768H484c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h182c87.3 0 158-70.7 158-158v-182c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V538c0 127-103 230-230 230z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radius-setting" unicode="" d="M396 756h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM352 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM876 276h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 552h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 392h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 232h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM192 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM512 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM672 72h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM812 356c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V526c0 127-103 230-230 230H484c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h170c87.3 0 158-70.7 158-158v-170zM236 800H92c-4.4 0-8-3.6-8-8v-144c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8V792c0 4.4-3.6 8-8 8z m-48-101.6c0-1.3-1.1-2.4-2.4-2.4h-43.2c-1.3 0-2.4 1.1-2.4 2.4v43.2c0 1.3 1.1 2.4 2.4 2.4h43.2c1.3 0 2.4-1.1 2.4-2.4v-43.2zM920 116H776c-4.4 0-8-3.6-8-8v-144c0-4.4 3.6-8 8-8h144c4.4 0 8 3.6 8 8V108c0 4.4-3.6 8-8 8z m-48-101.6c0-1.3-1.1-2.4-2.4-2.4h-43.2c-1.3 0-2.4 1.1-2.4 2.4v43.2c0 1.3 1.1 2.4 2.4 2.4h43.2c1.3 0 2.4-1.1 2.4-2.4v-43.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="adduser" unicode="" d="M678.3 253.6c24.2 13 51.9 20.4 81.4 20.4h0.1c3 0 4.4 3.6 2.2 5.6-30.8 27.6-65.6 49.7-103.7 65.8-0.4 0.2-0.8 0.3-1.2 0.5C719.2 391 759.6 464.3 759.6 547c0 137-110.8 248-247.5 248S264.7 684 264.7 547c0-82.7 40.4-156 102.6-201.1-0.4-0.2-0.8-0.3-1.2-0.5-44.7-18.9-84.8-46-119.3-80.6-34.5-34.5-61.5-74.7-80.4-119.5C147.9 101.5 138 55 137 7.2c-0.1-4.5 3.5-8.2 8-8.2h59.9c4.3 0 7.9 3.5 8 7.8 2 77.2 32.9 149.5 87.6 204.3C357 267.8 432.2 299 512.2 299c56.7 0 111.1-15.7 158-45.1 2.5-1.5 5.5-1.7 8.1-0.3zM512.2 375c-45.8 0-88.9 17.9-121.4 50.4-32.4 32.5-50.3 75.7-50.3 121.6 0 45.9 17.9 89.1 50.3 121.6S466.3 719 512.2 719s88.9-17.9 121.4-50.4c32.4-32.5 50.3-75.7 50.3-121.6 0-45.9-17.9-89.1-50.3-121.6C601.1 392.9 558 375 512.2 375zM880 137h-84v84c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-84h-84c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h84v-84c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v84h84c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="deleteteam" unicode="" d="M888 112H664c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h224c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM373.5 385.6c-0.9 8.7-1.4 17.5-1.4 26.4 0 15.9 1.5 31.4 4.3 46.5 0.7 3.6-1.2 7.3-4.5 8.8-13.6 6.1-26.1 14.5-36.9 25.1-25.8 25.2-39.7 59.3-38.7 95.4 0.9 32.1 13.8 62.6 36.3 85.6 24.7 25.3 57.9 39.1 93.2 38.7 31.9-0.3 62.7-12.6 86-34.4 7.9-7.4 14.7-15.6 20.4-24.4 2-3.1 5.9-4.4 9.3-3.2 17.6 6.1 36.2 10.4 55.3 12.4 5.6 0.6 8.8 6.6 6.3 11.6-32.5 64.3-98.9 108.7-175.7 109.9-110.9 1.7-203.3-89.2-203.3-199.9 0-62.8 28.9-118.8 74.2-155.5-31.8-14.7-61.1-35-86.5-60.4-54.8-54.7-85.8-126.9-87.8-204-0.1-4.5 3.5-8.2 8-8.2h56.1c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5 29.4 29.4 65.4 49.8 104.7 59.7 3.9 1 6.5 4.7 6 8.7zM824 412c0 109.4-87.9 198.3-196.9 200C516.3 613.7 424 522.8 424 412c0-62.8 29-118.8 74.2-155.5-31.7-14.7-60.9-34.9-86.4-60.4C357 141.4 326 69.2 324-7.8c-0.1-4.5 3.5-8.2 8-8.2h56c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5C505.8 188.3 563 212 624 212c110.4 0 200 89.5 200 200z m-109.5-90.5C690.3 297.3 658.2 284 624 284s-66.3 13.3-90.5 37.5C509 346 495.7 378.6 496 413.3c0.3 32.8 13.4 64.5 36.3 88 24 24.6 56.1 38.3 90.4 38.7 33.9 0.3 66.8-12.9 91-36.6 24.8-24.3 38.4-56.8 38.4-91.4-0.1-34.2-13.4-66.3-37.6-90.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="deleteuser" unicode="" d="M678.3 240.6c24.2 13 51.9 20.4 81.4 20.4h0.1c3 0 4.4 3.6 2.2 5.6-30.8 27.6-65.6 49.7-103.7 65.8-0.4 0.2-0.8 0.3-1.2 0.5C719.2 378 759.6 451.3 759.6 534c0 137-110.8 248-247.5 248S264.7 671 264.7 534c0-82.7 40.4-156 102.6-201.1-0.4-0.2-0.8-0.3-1.2-0.5-44.7-18.9-84.8-46-119.3-80.6-34.5-34.5-61.5-74.7-80.4-119.5C147.9 88.5 138 42 137-5.8c-0.1-4.5 3.5-8.2 8-8.2h59.9c4.3 0 7.9 3.5 8 7.8 2 77.2 32.9 149.5 87.6 204.3C357 254.8 432.2 286 512.2 286c56.7 0 111.1-15.7 158-45.1 2.5-1.5 5.5-1.7 8.1-0.3zM512.2 362c-45.8 0-88.9 17.9-121.4 50.4-32.4 32.5-50.3 75.7-50.3 121.6 0 45.9 17.9 89.1 50.3 121.6S466.3 706 512.2 706s88.9-17.9 121.4-50.4c32.4-32.5 50.3-75.7 50.3-121.6 0-45.9-17.9-89.1-50.3-121.6C601.1 379.9 558 362 512.2 362zM880 124H640c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h240c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="addteam" unicode="" d="M892 124h-80v80c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-80h-80c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h80v-80c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v80h80c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM373.5 397.6c-0.9 8.7-1.4 17.5-1.4 26.4 0 15.9 1.5 31.4 4.3 46.5 0.7 3.6-1.2 7.3-4.5 8.8-13.6 6.1-26.1 14.5-36.9 25.1-25.8 25.2-39.7 59.3-38.7 95.4 0.9 32.1 13.8 62.6 36.3 85.6 24.7 25.3 57.9 39.1 93.2 38.7 31.9-0.3 62.7-12.6 86-34.4 7.9-7.4 14.7-15.6 20.4-24.4 2-3.1 5.9-4.4 9.3-3.2 17.6 6.1 36.2 10.4 55.3 12.4 5.6 0.6 8.8 6.6 6.3 11.6-32.5 64.3-98.9 108.7-175.7 109.9-110.8 1.7-203.2-89.2-203.2-200 0-62.8 28.9-118.8 74.2-155.5-31.8-14.7-61.1-35-86.5-60.4-54.8-54.7-85.8-126.9-87.8-204-0.1-4.5 3.5-8.2 8-8.2h56.1c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5 29.4 29.4 65.4 49.8 104.7 59.7 3.8 1.1 6.4 4.8 5.9 8.8zM824 424c0 109.4-87.9 198.3-196.9 200C516.3 625.7 424 534.8 424 424c0-62.8 29-118.8 74.2-155.5-31.7-14.7-60.9-34.9-86.4-60.4C357 153.4 326 81.2 324 4.2c-0.1-4.5 3.5-8.2 8-8.2h56c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5C505.8 200.3 563 224 624 224c110.4 0 200 89.5 200 200z m-109.5-90.5C690.3 309.3 658.2 296 624 296s-66.3 13.3-90.5 37.5C509 358 495.7 390.6 496 425.3c0.3 32.8 13.4 64.5 36.3 88 24 24.6 56.1 38.3 90.4 38.7 33.9 0.3 66.8-12.9 91-36.6 24.8-24.3 38.4-56.8 38.4-91.4-0.1-34.2-13.4-66.3-37.6-90.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="user" unicode="" d="M858.5 132.4c-18.9 44.8-46.1 85-80.6 119.5-34.5 34.5-74.7 61.6-119.5 80.6-0.4 0.2-0.8 0.3-1.2 0.5C719.5 378 760 451.3 760 534c0 137-111 248-248 248S264 671 264 534c0-82.7 40.5-156 102.8-201.1-0.4-0.2-0.8-0.3-1.2-0.5-44.8-18.9-85-46-119.5-80.6-34.5-34.5-61.6-74.7-80.6-119.5C146.9 88.5 137 42 136-5.8c-0.1-4.5 3.5-8.2 8-8.2h60c4.4 0 7.9 3.5 8 7.8 2 77.2 33 149.5 87.8 204.3 56.7 56.7 132 87.9 212.2 87.9s155.5-31.2 212.2-87.9C779 143.3 810 71 812-6.2c0.1-4.4 3.6-7.8 8-7.8h60c4.5 0 8.1 3.7 8 8.2-1 47.8-10.9 94.3-29.5 138.2zM512 362c-45.9 0-89.1 17.9-121.6 50.4S340 488.1 340 534c0 45.9 17.9 89.1 50.4 121.6S466.1 706 512 706s89.1-17.9 121.6-50.4S684 579.9 684 534c0-45.9-17.9-89.1-50.4-121.6S557.9 362 512 362z" horiz-adv-x="1024" /> + + + <glyph glyph-name="team" unicode="" d="M824.2 196.1c-25.4 25.4-54.7 45.7-86.4 60.4C783.1 293.2 812 349.2 812 412c0 110.8-92.4 201.7-203.2 200-109.1-1.7-197-90.6-197-200 0-62.8 29-118.8 74.2-155.5-31.7-14.7-60.9-34.9-86.4-60.4C345 141.4 314 69.2 312-7.8c-0.1-4.5 3.5-8.2 8-8.2h56c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5C493.8 188.3 551.1 212 612 212c60.9 0 118.2-23.7 161.3-66.8C814.5 104 838 49.7 840-8.3c0.1-4.3 3.7-7.7 8-7.7h56c4.5 0 8.1 3.7 8 8.2-2 77-33 149.2-87.8 203.9zM612 284c-34.2 0-66.4 13.3-90.5 37.5-24.5 24.5-37.9 57.1-37.5 91.8 0.3 32.8 13.4 64.5 36.3 88 24 24.6 56.1 38.3 90.4 38.7 33.9 0.3 66.8-12.9 91-36.6 24.8-24.3 38.4-56.8 38.4-91.4 0-34.2-13.3-66.3-37.5-90.5-24.2-24.2-56.4-37.5-90.6-37.5zM361.5 385.6c-0.9 8.7-1.4 17.5-1.4 26.4 0 15.9 1.5 31.4 4.3 46.5 0.7 3.6-1.2 7.3-4.5 8.8-13.6 6.1-26.1 14.5-36.9 25.1-25.8 25.2-39.7 59.3-38.7 95.4 0.9 32.1 13.8 62.6 36.3 85.6 24.7 25.3 57.9 39.1 93.2 38.7 31.9-0.3 62.7-12.6 86-34.4 7.9-7.4 14.7-15.6 20.4-24.4 2-3.1 5.9-4.4 9.3-3.2 17.6 6.1 36.2 10.4 55.3 12.4 5.6 0.6 8.8 6.6 6.3 11.6-32.5 64.3-98.9 108.7-175.7 109.9-110.9 1.7-203.3-89.2-203.3-199.9 0-62.8 28.9-118.8 74.2-155.5-31.8-14.7-61.1-35-86.5-60.4-54.8-54.7-85.8-126.9-87.8-204-0.1-4.5 3.5-8.2 8-8.2h56.1c4.3 0 7.9 3.4 8 7.7 1.9 58 25.4 112.3 66.7 153.5 29.4 29.4 65.4 49.8 104.7 59.7 3.9 1 6.5 4.7 6 8.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="areachart" unicode="" d="M888 104H200V728c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h752c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM272 168h536c4.4 0 8 3.6 8 8V612c0 7.2-8.7 10.7-13.7 5.7L592 407.4l-125.4 124c-3.1 3.1-8.2 3.1-11.3 0l-189-189.6c-1.5-1.5-2.3-3.5-2.3-5.6V176c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="linechart" unicode="" d="M888 104H200V728c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h752c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM305.8 258.3c3.1-3.1 8.1-3.1 11.3 0l138.3 137.6L583 267.5c3.1-3.1 8.2-3.1 11.3 0l275.4 275.3c3.1 3.1 3.1 8.2 0 11.3l-39.6 39.6c-3.1 3.1-8.2 3.1-11.3 0l-230-229.9L461.4 492c-3.1 3.1-8.2 3.1-11.3 0L266.3 309.3c-3.1-3.1-3.1-8.2 0-11.3l39.5-39.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="barchart" unicode="" d="M888 104H200V728c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h752c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM288 184h56c4.4 0 8 3.6 8 8V336c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-144c0-4.4 3.6-8 8-8zM440 184h56c4.4 0 8 3.6 8 8V512c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-320c0-4.4 3.6-8 8-8zM592 184h56c4.4 0 8 3.6 8 8V434c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-242c0-4.4 3.6-8 8-8zM744 184h56c4.4 0 8 3.6 8 8V592c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-400c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pointmap" unicode="" d="M888 104H200V728c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h752c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM352 292m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM454 516m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM660 288m-96 0a96 96 0 1 1 192 0 96 96 0 1 1-192 0ZM768 602m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="container" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-40-824H232V209h97.9c11.6-32.8 32-62.3 59.1-84.7 34.5-28.5 78.2-44.3 123-44.3s88.5 15.7 123 44.3c27.1 22.4 47.5 51.9 59.1 84.7H792v63H643.6l-5.2-24.7C626.4 187.5 573.2 144 512 144s-114.4 43.5-126.5 103.3l-5.2 24.7H232V760h560v-752zM320 555h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM320 395h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="database" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-600-72h560v-208H232V760z m560-480H232V488h560v-208z m0-272H232V216h560v-208zM344 656m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM344 384m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM344 112m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sever" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-600-72h560v-208H232V760z m560-480H232V488h560v-208z m0-272H232V216h560v-208zM496 688H312c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM312 352h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H312c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM680 108m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="mobile" unicode="" d="M744 834H280c-35.3 0-64-28.7-64-64v-768c0-35.3 28.7-64 64-64h464c35.3 0 64 28.7 64 64V770c0 35.3-28.7 64-64 64z m-8-824H288V762h448v-752zM512 112m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tablet" unicode="" d="M800 832H224c-35.3 0-64-28.7-64-64v-768c0-35.3 28.7-64 64-64h576c35.3 0 64 28.7 64 64V768c0 35.3-28.7 64-64 64z m-8-824H232V760h560v-752zM512 112m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="redenvelope" unicode="" d="M440.6 433.4c-1.4 2.8-4.3 4.6-7.5 4.6h-48.8c-1.3 0-2.6-0.4-3.9-1-4.1-2.2-5.6-7.3-3.4-11.4l87.4-161.1H419c-4.6 0-8.4-3.8-8.4-8.4V231c0-4.6 3.8-8.4 8.4-8.4h63V194h-63c-4.6 0-8.4-3.8-8.4-8.4v-25.1c0-4.6 3.8-8.4 8.4-8.4h63v-49.9c0-4.6 3.8-8.4 8.4-8.4h43.7c4.6 0 8.4 3.8 8.4 8.4v49.9h63.3c4.7 0 8.4 3.8 8.2 8.5v25c0 4.6-3.8 8.4-8.4 8.4h-63.3v28.6h63.3c4.6 0 8.4 3.8 8.4 8.4v25.1c0 4.6-3.8 8.4-8.4 8.4h-45.9l87.2 161c0.7 1.2 1 2.6 1 4 0 4.6-3.8 8.4-8.4 8.4h-47.8c-3.1 0-6-1.8-7.5-4.6l-71.9-141.9-71.7 142zM832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-40-824H232V702.9l260.3-204.1c11.6-9.1 27.9-9.1 39.5 0L792 702.9V8z m0 751.3h-31.7L512 564.7 263.7 759.3H232v0.7h560v-0.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="book" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-260-72h96v-209.9L621.5 584 572 548.6V760z m220-752H232V760h280v-296.9c0-3.3 1-6.6 3-9.3 5.1-7.2 15.1-8.9 22.3-3.7l83.8 59.9 81.4-59.4c2.7-2 6-3.1 9.4-3.1 8.8 0 16 7.2 16 16V760h64v-752z" horiz-adv-x="1024" /> + + + <glyph glyph-name="filedone" unicode="" d="M688 584v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8zM296 496c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM672 380c-119.3 0-216-96.7-216-216s96.7-216 216-216 216 96.7 216 216-96.7 216-216 216z m107.5-323.5C750.8 27.8 712.6 12 672 12s-78.8 15.8-107.5 44.5C535.8 85.2 520 123.4 520 164s15.8 78.8 44.5 107.5C593.2 300.2 631.4 316 672 316s78.8-15.8 107.5-44.5C808.2 242.8 824 204.6 824 164s-15.8-78.8-44.5-107.5zM761 240h-44.3c-2.6 0-5-1.2-6.5-3.3l-63.5-87.8-23.1 31.9c-1.5 2.1-3.9 3.3-6.5 3.3H573c-6.5 0-10.3-7.4-6.5-12.7l73.8-102.1c3.2-4.4 9.7-4.4 12.9 0l114.2 158c3.9 5.3 0.1 12.7-6.4 12.7zM440 44H208V748h560v-344c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h272c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reconciliation" unicode="" d="M676 331c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92z m0-126c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34zM880 728H668c0 30.9-25.1 56-56 56h-80c-30.9 0-56-25.1-56-56H264c-17.7 0-32-14.3-32-32v-200h-88c-17.7 0-32-14.3-32-32v-448c0-17.7 14.3-32 32-32h336c17.7 0 32 14.3 32 32v16h368c17.7 0 32 14.3 32 32V696c0 17.7-14.3 32-32 32z m-412-64h72v56h64v-56h72v-48H468v48z m-20-616H176V280h272v-232z m0 296H176v88h272v-88z m392-240H512V464c0 17.7-14.3 32-32 32H304V656h100v-104h336V656h100v-552zM704 488v-96c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v96c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8zM592 384h48c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-exception" unicode="" d="M688 584v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8zM296 496c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM672 380c-119.3 0-216-96.7-216-216s96.7-216 216-216 216 96.7 216 216-96.7 216-216 216z m107.5-323.5C750.8 27.8 712.6 12 672 12s-78.8 15.8-107.5 44.5C535.8 85.2 520 123.4 520 164s15.8 78.8 44.5 107.5C593.2 300.2 631.4 316 672 316s78.8-15.8 107.5-44.5C808.2 242.8 824 204.6 824 164s-15.8-78.8-44.5-107.5zM672 84m-32 0a32 32 0 1 1 64 0 32 32 0 1 1-64 0ZM652 148h40c4.4 0 8 3.6 8 8V268c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-112c0-4.4 3.6-8 8-8zM440 44H208V748h560v-344c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h272c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="filesync" unicode="" d="M296 640c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM488 440v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8zM440 44H208V748h560v-344c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h272c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM544.1 159.6c1.8 34.5 16.2 66.8 40.8 91.4 26.2 26.2 62 41 99.1 41 37.4 0 72.6-14.6 99.1-41 3.2-3.2 6.3-6.6 9.2-10.1L769.2 223c-5.3-4.1-3.5-12.5 3-14.1l93.3-22.5c5-1.2 9.8 2.6 9.9 7.7l0.6 95.4c0 6.7-7.6 10.5-12.9 6.4l-20.3-15.8C805.4 326.4 748.1 356 684 356c-109.9 0-199.6-86.9-204-195.7-0.2-4.5 3.5-8.3 8-8.3h48.1c4.3 0 7.8 3.3 8 7.6zM880 152h-48.1c-4.3 0-7.8-3.3-8-7.6-1.8-34.5-16.2-66.8-40.8-91.4-26.2-26.2-62-41-99.1-41-37.4 0-72.6 14.6-99.1 41-3.2 3.2-6.3 6.6-9.2 10.1l23.1 17.9c5.3 4.1 3.5 12.5-3 14.1l-93.3 22.5c-5 1.2-9.8-2.6-9.9-7.7l-0.6-95.4c0-6.7 7.6-10.5 12.9-6.4l20.3 15.8C562.6-22.4 619.9-52 684-52c109.9 0 199.6 86.9 204 195.7 0.2 4.5-3.5 8.3-8 8.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="filesearch" unicode="" d="M688 584v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8zM296 496c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM440 44H208V748h560v-344c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h272c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM885.7-7.5l-93.3 93.3C814.7 115.3 828 152.1 828 192c0 97.2-78.8 176-176 176s-176-78.8-176-176 78.8-176 176-176c35.8 0 69 10.7 96.8 29l94.7-94.7c1.6-1.6 3.6-2.3 5.6-2.3s4.1 0.8 5.6 2.3l31 31c3.1 3.1 3.1 8.1 0 11.2zM652 80c-61.9 0-112 50.1-112 112s50.1 112 112 112 112-50.1 112-112-50.1-112-112-112z" horiz-adv-x="1024" /> + + + <glyph glyph-name="solution" unicode="" d="M688 632c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48zM680 496H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM480 352H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM432 44H208V748h560v-344c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h264c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM788.8 118.4c29 26.3 47.2 64.3 47.2 106.6 0 79.5-64.5 144-144 144s-144-64.5-144-144c0-42.3 18.2-80.3 47.2-106.6-57-32.5-96.2-92.7-99.2-162.1-0.2-4.5 3.5-8.3 8-8.3h48.1c4.2 0 7.7 3.3 8 7.6C564 24.8 621.7 80 692 80s128-55.2 131.9-124.4c0.2-4.2 3.7-7.6 8-7.6H880c4.6 0 8.2 3.8 8 8.3-2.9 69.5-42.2 129.6-99.2 162.1zM692 305c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fileprotect" unicode="" d="M644.7 226.8c-1.5 2.1-3.9 3.3-6.5 3.3H594c-6.5 0-10.3-7.4-6.5-12.7l73.8-102.1c3.2-4.4 9.7-4.4 12.9 0l114.2 158c3.8 5.3 0 12.7-6.5 12.7h-44.3c-2.6 0-5-1.2-6.5-3.3l-63.5-87.8-22.9 31.9zM688 590v48c0 4.4-3.6 8-8 8H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8zM296 502c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM480 44H208V748h560v-296c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h312c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM882.6 364.8l-192 66.7c-0.9 0.3-1.7 0.4-2.6 0.4s-1.8-0.1-2.6-0.4l-192-66.7c-3.2-1.1-5.4-4.1-5.4-7.5v-251.1c0-2.5 1.1-4.8 3.1-6.3l192-150.2c1.4-1.1 3.2-1.7 4.9-1.7s3.5 0.6 4.9 1.7l192 150.2c1.9 1.5 3.1 3.8 3.1 6.3V357.3c0 3.4-2.2 6.4-5.4 7.5zM826 132.3L688 24.4 550 132.3V319l138 48 138-48v-186.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-add" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM544 424c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-108H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108v-108c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V252h108c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H544V424z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-excel" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM514.1 315.9l-61.8 102.4c-2.2 3.6-6.1 5.8-10.3 5.8h-38.4c-2.3 0-4.5-0.6-6.4-1.9-5.6-3.5-7.3-10.9-3.7-16.6l82.3-130.4-83.4-132.8c-1.2-1.9-1.8-4.1-1.8-6.4 0-6.6 5.4-12 12-12h34.5c4.2 0 8 2.2 10.2 5.7L510 231.2l62.3-101.4c2.2-3.6 6.1-5.7 10.2-5.7H620c2.3 0 4.5 0.7 6.5 1.9 5.6 3.6 7.2 11 3.6 16.6l-84 130.4 85.3 132.5c1.2 1.9 1.9 4.2 1.9 6.5 0 6.6-5.4 12-12 12h-35.7c-4.2 0-8.1-2.2-10.3-5.8l-61.2-102.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-exclamation" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM512 152m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM488 256h48c4.4 0 8 3.6 8 8V448c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-184c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-pdf" unicode="" d="M531.3 321.6l0.3 1.4c5.8 23.9 13.1 53.7 7.4 80.7-3.8 21.3-19.5 29.6-32.9 30.2-15.8 0.7-29.9-8.3-33.4-21.4-6.6-24-0.7-56.8 10.1-98.6-13.6-32.4-35.3-79.5-51.2-107.5-29.6-15.3-69.3-38.9-75.2-68.7-1.2-5.5 0.2-12.5 3.5-18.8 3.7-7 9.6-12.4 16.5-15 3-1.1 6.6-2 10.8-2 17.6 0 46.1 14.2 84.1 79.4 5.8 1.9 11.8 3.9 17.6 5.9 27.2 9.2 55.4 18.8 80.9 23.1 28.2-15.1 60.3-24.8 82.1-24.8 21.6 0 30.1 12.8 33.3 20.5 5.6 13.5 2.9 30.5-6.2 39.6-13.2 13-45.3 16.4-95.3 10.2-24.6 15-40.7 35.4-52.4 65.8zM421.6 169.7c-13.9-20.2-24.4-30.3-30.1-34.7 6.7 12.3 19.8 25.3 30.1 34.7z m87.6 235.5c5.2-8.9 4.5-35.8 0.5-49.4-4.9 19.9-5.6 48.1-2.7 51.4 0.8-0.1 1.5-0.7 2.2-2z m-1.6-120.5c10.7-18.5 24.2-34.4 39.1-46.2-21.6-4.9-41.3-13-58.9-20.2-4.2-1.7-8.3-3.4-12.3-5 13.3 24.1 24.4 51.4 32.1 71.4z m155.6-65.5c0.1-0.2 0.2-0.5-0.4-0.9h-0.2l-0.2-0.3c-0.8-0.5-9-5.3-44.3 8.6 40.6 1.9 45-7.3 45.1-7.4zM854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-image" unicode="" d="M553.1 386.9l-77.8-99.2-41.1 52.4c-3.2 4.1-9.4 4.1-12.6 0l-99.8-127.2c-4.1-5.2-0.4-12.9 6.3-12.9H696c6.7 0 10.4 7.7 6.3 12.9l-136.5 174c-3.3 4.1-9.5 4.1-12.7 0zM400 454m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-markdown" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM429 414.8c-1.9 4.4-6.2 7.2-11 7.2h-35c-6.6 0-12-5.4-12-12v-272c0-6.6 5.4-12 12-12h27.1c6.6 0 12 5.4 12 12V313.9l66.8-150.2c1.9-4.3 6.2-7.1 11-7.1H524c4.7 0 9 2.8 11 7.1l66.8 150.6V138c0-6.6 5.4-12 12-12H641c6.6 0 12 5.4 12 12V410c0 6.6-5.4 12-12 12h-34.7c-4.8 0-9.1-2.8-11-7.2l-83.1-191-83.2 191z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-unknown" unicode="" d="M854.6 607.3L639.4 822.6c-6 6-14.2 9.4-22.7 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.6-9.4 22.6zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM402 347c0-5.4 4.4-9.5 9.8-9.5h32.4c5.4 0 9.8 4.2 9.8 9.4 0 28.2 25.8 51.6 58 51.6s58-23.4 58-51.5c0-25.3-21-47.2-49.3-50.9-19.3-2.8-34.5-20.3-34.7-40.1v-32c0-5.5 4.5-10 10-10h32c5.5 0 10 4.5 10 10v12.2c0 6 4 11.5 9.7 13.3 44.6 14.4 75 54 74.3 98.9-0.8 55.5-49.2 100.8-108.5 101.6-61.4 0.7-111.5-45.6-111.5-103zM512 152m-32 0a32 32 0 1 1 64 0 32 32 0 1 1-64 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-ppt" unicode="" d="M424 420c-4.4 0-8-3.6-8-8v-276c0-4.4 3.6-8 8-8h32.5c4.4 0 8 3.6 8 8v95.5h63.3c59.4 0 96.2 38.9 96.2 94.1 0 54.5-36.3 94.3-96 94.3H424z m150.6-94.3c0-43.4-26.5-54.3-71.2-54.3h-38.9V379.8h56.2c33.8 0 53.9-19.7 53.9-54.1zM854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-word" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM528.1 424h-32.2c-5.5 0-10.3-3.7-11.6-9.1L434.6 216l-46.1 198.7c-1.3 5.4-6.1 9.3-11.7 9.3h-35.4c-1.1 0-2.1-0.1-3.1-0.4-6.4-1.7-10.2-8.3-8.5-14.7l74.2-276c1.4-5.2 6.2-8.9 11.6-8.9h32c5.4 0 10.2 3.6 11.6 8.9l52.8 197 52.8-197c1.4-5.2 6.2-8.9 11.6-8.9h31.8c5.4 0 10.2 3.6 11.6 8.9l74.4 276c0.3 1 0.4 2.1 0.4 3.1 0 6.6-5.4 12-12 12H647c-5.6 0-10.4-3.9-11.7-9.3l-45.8-199.1-49.8 199.3c-1.3 5.4-6.1 9.1-11.6 9.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-zip" unicode="" d="M296 504h64v-64h-64zM296 314v-160h128V314h-64v62h-64v-62z m80-48v-64h-32v64h32zM360 568h64v-64h-64zM296 632h64v-64h-64zM360 440h64v-64h-64zM360 696h64v-64h-64zM854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h64v-64h64v64h174v-216c0-23.2 18.8-42 42-42h216v-494z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-text" unicode="" d="M854.6 607.4L639.4 822.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.7-9.4 22.7zM790.2 570H602V758.2L790.2 570z m1.8-562H232V760h302v-216c0-23.2 18.8-42 42-42h216v-494zM504 278H320c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM312 406v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H320c-4.4 0-8-3.6-8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-copy" unicode="" d="M832 832H296c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h496v-688c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V800c0 17.7-14.3 32-32 32zM704 704H192c-17.7 0-32-14.3-32-32v-530.7c0-8.5 3.4-16.6 9.4-22.6l173.3-173.3c2.2-2.2 4.7-4 7.4-5.5v-1.9h4.2c3.5-1.3 7.2-2 11-2H704c17.7 0 32 14.3 32 32V672c0 17.7-14.3 32-32 32zM350 39.8L263.9 126H350v-86.2zM664 8H414V150c0 22.1-17.9 40-40 40H232V632h432v-624z" horiz-adv-x="1024" /> + + + <glyph glyph-name="snippets" unicode="" d="M832 784H724V824c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-40H500V824c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-40H320c-17.7 0-32-14.3-32-32v-120h-96c-17.7 0-32-14.3-32-32v-632c0-17.7 14.3-32 32-32h512c17.7 0 32 14.3 32 32v96h96c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM664 8H232V560h218v-174c0-22.1 17.9-40 40-40h174v-338z m0 402H514V560h0.2L664 410.2v-0.2z m128-274h-56V440L544 632H360v80h68v-32c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v32h152v-32c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v32h68v-576z" horiz-adv-x="1024" /> + + + <glyph glyph-name="audit" unicode="" d="M296 646c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H296zM480 502H296c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM432 44H208V748h560v-320c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V788c0 17.7-14.3 32-32 32H168c-17.7 0-32-14.3-32-32v-784c0-17.7 14.3-32 32-32h264c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM872 132H728v36.6c46.3 13.8 80 56.6 80 107.4 0 61.9-50.1 112-112 112s-112-50.1-112-112c0-50.7 33.7-93.6 80-107.4V132H520c-8.8 0-16-7.2-16-16v-152c0-8.8 7.2-16 16-16h352c8.8 0 16 7.2 16 16V116c0 8.8-7.2 16-16 16zM646 276c0 27.6 22.4 50 50 50s50-22.4 50-50-22.4-50-50-50-50 22.4-50 50z m180-266H566v60h260v-60z" horiz-adv-x="1024" /> + + + <glyph glyph-name="diff" unicode="" d="M476 496.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1V412h-84.5c-4.1 0-7.5-3.1-7.5-7v-42c0-3.8 3.4-7 7.5-7H420v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V356h84.5c4.1 0 7.5 3.2 7.5 7v42c0 3.9-3.4 7-7.5 7H476v84.9zM560.5 192h-225c-4.1 0-7.5-3.2-7.5-7v-42c0-3.8 3.4-7 7.5-7h225c4.1 0 7.5 3.2 7.5 7v42c0 3.8-3.4 7-7.5 7zM553.4 694.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-704c0-17.7 14.3-32 32-32h512c17.7 0 32 14.3 32 32V498.7c0 8.5-3.4 16.6-9.4 22.6L553.4 694.6zM664 8H232V632h282.2L664 482.2V8zM854.2 589.4L611.3 823.1c-6 5.7-13.9 8.9-22.2 8.9H296c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h277l219-210.6V72c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V566.4c0 8.7-3.5 17-9.8 23z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Batchfolding" unicode="" d="M752 656H144c-17.7 0-32-14.3-32-32v-608c0-17.7 14.3-32 32-32h608c17.7 0 32 14.3 32 32V624c0 17.7-14.3 32-32 32z m-40-600H184V584h528v-528zM880 784H264c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h576v-576c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V752c0 17.7-14.3 32-32 32zM300 346h296v-64H300z" horiz-adv-x="1024" /> + + + <glyph glyph-name="securityscan" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM810 241.7L512 9.5 214 241.7V669.3l298 101.6 298-101.6v-427.6zM402.9 367.2l-77.5-77.5c-3.1-3.1-3.1-8.2 0-11.3l34-34c3.1-3.1 8.2-3.1 11.3 0l77.5 77.5c55.7-35.1 130.1-28.4 178.6 20.1 56.3 56.3 56.3 147.5 0 203.8-56.3 56.3-147.5 56.3-203.8 0-48.5-48.5-55.2-123-20.1-178.6z m65.4 133.3c31.3 31.3 82 31.3 113.2 0 31.3-31.3 31.3-82 0-113.2-31.3-31.3-82-31.3-113.2 0s-31.3 81.9 0 113.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="propertysafety" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM810 241.7L512 9.5 214 241.7V669.3l298 101.6 298-101.6v-427.6zM430.5 578h-46c-1.7 0-3.3-0.4-4.8-1.2-4.8-2.6-6.6-8.7-4-13.6l88-161.1h-45.2c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1v-29.7h-63.1c-5.5 0-10-4.5-10-10v-21.3c0-5.5 4.5-10 10-10h63.1V238c0-5.5 4.5-10 10-10h41.3c5.5 0 10 4.5 10 10v51.8h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-63.4v29.7h63.4c5.5 0 10 4.5 10 10v21.3c0 5.5-4.5 10-10 10h-45.7l87.7 161.1c0.8 1.5 1.2 3.1 1.2 4.8 0 5.5-4.5 10-10 10h-45c-3.8 0-7.2-2.1-8.9-5.5l-73.2-144.3-72.9 144.3c-1.7 3.4-5.2 5.5-9 5.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="safetycertificate" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM810 241.7L512 9.5 214 241.7V669.3l298 101.6 298-101.6v-427.6zM404.2 442.7c-3 4.1-7.8 6.6-13 6.6H336c-6.5 0-10.3-7.4-6.5-12.7l126.4-174c6.4-8.8 19.6-8.8 26 0l212.6 292.7c3.8 5.3 0 12.7-6.5 12.7h-55.2c-5.1 0-10-2.5-13-6.6L468.9 353.6l-64.7 89.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="insurance" unicode="" d="M441.6 589.2L403 607.4c-3.3 1.6-7.3-0.2-8.4-3.7-17.5-58.5-45.2-110.1-82.2-153.6-1.3-1.6-1.8-3.7-1.2-5.6l13.2-43.5c1.3-4.4 7-5.7 10.2-2.4 7.7 8.1 15.4 16.9 23.1 26V240c0-4.4 3.6-8 8-8H403c4.4 0 8 3.6 8 8V502.9c13.8 25.1 25.1 51.7 33.6 79 1 2.9-0.3 6-3 7.3zM468.4 580v-127.2c0-4.4 3.6-8 8-8h65.9v-18.6h-94.9c-4.4 0-8-3.6-8-8v-35.6c0-4.4 3.6-8 8-8h55.1c-19.1-30.8-42.4-55.7-71-76-2.6-1.8-3.3-5.4-1.6-8.1l22.8-36.5c1.9-3.1 6.2-3.8 8.9-1.4 31.6 26.8 58.7 62.9 80.6 107.6v-120c0-4.4 3.6-8 8-8h36.2c4.4 0 8 3.6 8 8V360c21.3-41.7 47.5-77.5 78.1-106.9 2.6-2.5 6.8-2.1 8.9 0.7l26.3 35.3c2 2.7 1.4 6.5-1.2 8.4-30.5 22.6-54.2 47.8-72.3 76.9h59c4.4 0 8 3.6 8 8V418c0 4.4-3.6 8-8 8h-98.8v18.6h66.7c4.4 0 8 3.6 8 8V580c0 4.4-3.6 8-8 8H476.4c-4.4 0-8-3.6-8-8z m51.5-42.8h97.9v-41.6h-97.9v41.6zM866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM810 241.7L512 9.5 214 241.7V669.3l298 101.6 298-101.6v-427.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alert" unicode="" d="M193 100c0-17.7 14.3-32 32-32h574c17.7 0 32 14.3 32 32V333c0 176.2-142.8 319-319 319S193 509.2 193 333v-233z m72 233c0 136.4 110.6 247 247 247s247-110.6 247-247v-193H404V311c0 5.5-4.5 10-10 10h-44c-5.5 0-10-4.5-10-10v-171h-75V333zM216.9 585.5l39.6 39.6c3.1 3.1 3.1 8.2 0 11.3l-67.9 67.9c-3.1 3.1-8.2 3.1-11.3 0l-39.6-39.6c-3.1-3.1-3.1-8.2 0-11.3l67.9-67.9c3.1-3.1 8.1-3.1 11.3 0zM886.5 664.7l-39.6 39.6c-3.1 3.1-8.2 3.1-11.3 0l-67.9-67.9c-3.1-3.1-3.1-8.2 0-11.3l39.6-39.6c3.1-3.1 8.2-3.1 11.3 0l67.9 67.9c3.1 3.2 3.1 8.2 0 11.3zM832 4H192c-17.7 0-32-14.3-32-32v-24c0-4.4 3.6-8 8-8h688c4.4 0 8 3.6 8 8v24c0 17.7-14.3 32-32 32zM484 716h56c4.4 0 8 3.6 8 8V820c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-96c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="delete" unicode="" d="M360 712h-8c4.4 0 8 3.6 8 8v-8h304v8c0-4.4 3.6-8 8-8h-8v-72h72v80c0 35.3-28.7 64-64 64H352c-35.3 0-64-28.7-64-64v-80h72v72zM864 640H160c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8h60.4l24.7-523c1.6-34.1 29.8-61 63.9-61h454c34.2 0 62.3 26.8 63.9 61l24.7 523H888c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32zM731.3 56H292.7l-24.2 512h487l-24.2-512z" horiz-adv-x="1024" /> + + + <glyph glyph-name="hourglass" unicode="" d="M742 578V712h86c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H196c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h86v-134c0-81.5 42.4-153.2 106.4-194-64-40.8-106.4-112.5-106.4-194v-134h-86c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h632c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-86V190c0 81.5-42.4 153.2-106.4 194 64 40.8 106.4 112.5 106.4 194z m-72-388v-134H354V190c0 42.2 16.4 81.9 46.3 111.7C430.1 331.6 469.8 348 512 348s81.9-16.4 111.7-46.3C653.6 271.9 670 232.2 670 190z m0 388c0-42.2-16.4-81.9-46.3-111.7C593.9 436.4 554.2 420 512 420s-81.9 16.4-111.7 46.3C370.4 496.1 354 535.8 354 578V712h316v-134z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bulb" unicode="" d="M632 8H392c-4.4 0-8-3.6-8-8v-32c0-17.7 14.3-32 32-32h192c17.7 0 32 14.3 32 32v32c0 4.4-3.6 8-8 8zM512 832c-181.1 0-328-146.9-328-328 0-121.4 66-227.4 164-284.1V104c0-17.7 14.3-32 32-32h264c17.7 0 32 14.3 32 32V219.9c98 56.7 164 162.7 164 284.1 0 181.1-146.9 328-328 328z m127.9-549.8L604 261.4V144H420V261.4l-35.9 20.8C305.4 327.7 256 411.5 256 504c0 141.4 114.6 256 256 256s256-114.6 256-256c0-92.5-49.4-176.3-128.1-221.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="experiment" unicode="" d="M552 424m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM879 71.1L696.3 544V718H768v68H256v-68h71.7v-174L145 71.1c-2.8-7.4-4.3-15.2-4.3-23.1 0-35.3 28.7-64 64-64h614.6c7.9 0 15.7 1.5 23.1 4.3 33 12.7 49.4 49.8 36.6 82.8zM395.7 531.3V716h232.6v-184.7L719.2 296c-20.7 5.3-42.1 8-63.9 8-61.2 0-119.2-21.5-165.3-60-33.9-28.2-76.3-43.9-121.3-43.9-32.7 0-64.1 8.3-91.8 23.7l118.8 307.5zM210.5 52l41.7 107.8c35.7-18.1 75.4-27.8 116.6-27.8 61.2 0 119.2 21.5 165.3 60 33.9 28.2 76.3 43.9 121.3 43.9 35 0 68.4-9.5 97.6-27.1L813.5 52h-603z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bell" unicode="" d="M816 128h-24V468c0 141.1-104.3 257.7-240 277.1V784c0 22.1-17.9 40-40 40s-40-17.9-40-40v-38.9c-135.7-19.4-240-136-240-277.1v-340h-24c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8h216c0-61.8 50.2-112 112-112s112 50.2 112 112h216c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32zM512 8c-26.5 0-48 21.5-48 48h96c0-26.5-21.5-48-48-48zM304 128V468c0 55.6 21.6 107.8 60.9 147.1S456.4 676 512 676c55.6 0 107.8-21.6 147.1-60.9S720 523.6 720 468v-340H304z" horiz-adv-x="1024" /> + + + <glyph glyph-name="trophy" unicode="" d="M868 736h-92v40c0 4.4-3.6 8-8 8H256c-4.4 0-8-3.6-8-8v-40h-92c-24.3 0-44-19.7-44-44v-148c0-81.7 60-149.6 138.2-162C265.7 265.8 359 174.3 476 161.5v-105.2H280c-17.7 0-32-14.3-32-32V-8c0-4.4 3.6-8 8-8h512c4.4 0 8 3.6 8 8v32.3c0 17.7-14.3 32-32 32H548V161.5C665 174.3 758.3 265.8 773.8 382 852 394.4 912 462.3 912 544V692c0 24.3-19.7 44-44 44zM184 544V664h64v-207.6c-37.1 11.8-64 46.6-64 87.6z m520-128c0-49.1-19.1-95.4-53.9-130.1-34.8-34.8-81-53.9-130.1-53.9h-16c-49.1 0-95.4 19.1-130.1 53.9-34.8 34.8-53.9 81-53.9 130.1V712h384v-296z m136 128c0-41-26.9-75.8-64-87.6V664h64v-120z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rest" unicode="" d="M508 192c79.5 0 144 64.5 144 144s-64.5 144-144 144-144-64.5-144-144 64.5-144 144-144z m0 224c44.2 0 80-35.8 80-80s-35.8-80-80-80-80 35.8-80 80 35.8 80 80 80zM832 640h-28.1l-35.7 120.9c-4 13.7-16.5 23.1-30.7 23.1h-451c-14.3 0-26.8-9.4-30.7-23.1L220.1 640H192c-17.7 0-32-14.3-32-32v-28c0-4.4 3.6-8 8-8h45.8l47.7-558.7c1.4-16.6 15.3-29.3 31.9-29.3h429.2c16.6 0 30.5 12.7 31.9 29.3L802.2 572H856c4.4 0 8 3.6 8 8v28c0 17.7-14.3 32-32 32z m-518.6 76h397.2l22.4-76H291l22.4 76z m376.2-664H326.4L282 572h451.9l-44.3-520z" horiz-adv-x="1024" /> + + + <glyph glyph-name="USB" unicode="" d="M760 464V752c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32v-288c-66.2 0-120-52.1-120-116v-356c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V348c0 24.3 21.6 44 48.1 44H759.9c26.5 0 48.1-19.7 48.1-44v-356c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V348c0 63.9-53.8 116-120 116z m-424 0V712h352v-248H336zM456 648h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM616 648h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="skin" unicode="" d="M870 770H663.8c-17.4 0-32.9-11.9-37-29.3C614.3 687.9 567 650 512 650s-102.3 37.9-114.8 90.7c-4.1 17.4-19.5 29.3-37 29.3H154c-24.3 0-44-19.7-44-44v-252c0-24.3 19.7-44 44-44h75v-388c0-24.3 19.7-44 44-44h478c24.3 0 44 19.7 44 44V430h75c24.3 0 44 19.7 44 44V726c0 24.3-19.7 44-44 44z m-28-268H723v-432H301V502H182V698h153.3c28.2-71.2 97.5-120 176.7-120s148.5 48.8 176.7 120H842v-196z" horiz-adv-x="1024" /> + + + <glyph glyph-name="home" unicode="" d="M946.5 391L560.1 777.2l-25.9 25.9c-12.3 12.2-32.1 12.2-44.4 0L77.5 391c-12.3-12.3-18.9-28.6-18.8-46 0.4-35.2 29.7-63.3 64.9-63.3h42.5V-44h691.8V281.7h43.4c17.1 0 33.2 6.7 45.3 18.8 12.1 12.1 18.7 28.2 18.7 45.3 0 17-6.7 33.1-18.8 45.2zM568 28H456V232h112v-204z m217.9 325.7V28H632V256c0 22.1-17.9 40-40 40H432c-22.1 0-40-17.9-40-40v-228H238.1V353.7h-96l370 369.7 23.1-23.1L882 353.7h-96.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bank" unicode="" d="M894 434c30.9 0 43.8 39.7 18.7 58L530.8 769.8a31.81 31.81 0 0 1-37.6 0L111.3 492c-25.1-18.2-12.2-58 18.8-58H192v-374h-72c-4.4 0-8-3.6-8-8v-52c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v52c0 4.4-3.6 8-8 8h-72V434h62zM512 699.3l271.1-197.2H240.9L512 699.3zM264 434h117v-374H264V434z m189 0h117v-374H453V434z m307-374H642V434h118v-374z" horiz-adv-x="1024" /> + + + <glyph glyph-name="filter" unicode="" d="M880.1 742H143.9c-24.5 0-39.8-26.7-27.5-48L349 298.6V58c0-17.7 14.2-32 31.8-32h262.4c17.6 0 31.8 14.3 31.8 32V298.6L907.7 694c12.2 21.3-3.1 48-27.6 48zM603.4 98H420.6V254h182.9v-156z m9.6 236.6l-9.5-16.6h-183l-9.5 16.6L212.7 670h598.6L613 334.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="funnelplot" unicode="" d="M880.1 742H143.9c-24.5 0-39.8-26.7-27.5-48L349 288.6V58c0-17.7 14.2-32 31.8-32h262.4c17.6 0 31.8 14.3 31.8 32V288.6L907.7 694c12.2 21.3-3.1 48-27.6 48zM603.4 98H420.6V246h182.9v-148z m9.6 226.6l-8.4-14.6H419.3l-8.4 14.6L334.4 458h355.2L613 324.6zM726.3 522H297.7l-85 148h598.6l-85-148z" horiz-adv-x="1024" /> + + + <glyph glyph-name="like" unicode="" d="M885.9 362.3c16.8 22.2 26.1 49.4 26.1 77.7 0 44.9-25.1 87.4-65.5 111.1a67.67 67.67 0 0 1-34.3 9.3H572.4l6 122.9c1.4 29.7-9.1 57.9-29.5 79.4-20.5 21.5-48.1 33.4-77.9 33.4-52 0-98-35-111.8-85.1l-85.9-311H144c-17.7 0-32-14.3-32-32v-364c0-17.7 14.3-32 32-32h601.3c9.2 0 18.2 1.8 26.5 5.4 47.6 20.3 78.3 66.8 78.3 118.4 0 12.6-1.8 25-5.4 37 16.8 22.2 26.1 49.4 26.1 77.7 0 12.6-1.8 25-5.4 37 16.8 22.2 26.1 49.4 26.1 77.7-0.2 12.6-2 25.1-5.6 37.1zM184 44V328h81v-284h-81z m636.4 353l-21.9-19 13.9-25.4c4.6-8.4 6.9-17.6 6.9-27.3 0-16.5-7.2-32.2-19.6-43l-21.9-19 13.9-25.4c4.6-8.4 6.9-17.6 6.9-27.3 0-16.5-7.2-32.2-19.6-43l-21.9-19 13.9-25.4c4.6-8.4 6.9-17.6 6.9-27.3 0-22.4-13.2-42.6-33.6-51.8H329V331.2l99.5 360.5c5.2 18.9 22.5 32.2 42.2 32.3 7.6 0 15.1-2.2 21.1-6.7 9.9-7.4 15.2-18.6 14.6-30.5l-9.6-198.4h314.4C829 477.5 840 459.1 840 440c0-16.5-7.2-32.1-19.6-43z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unlike" unicode="" d="M885.9 405.7c3.6 12 5.4 24.4 5.4 37 0 28.3-9.3 55.5-26.1 77.7 3.6 12 5.4 24.4 5.4 37 0 28.3-9.3 55.5-26.1 77.7 3.6 12 5.4 24.4 5.4 37 0 51.6-30.7 98.1-78.3 118.4-8.3 3.6-17.2 5.4-26.5 5.4H144c-17.7 0-32-14.3-32-32v-364c0-17.7 14.3-32 32-32h129.3l85.8-310.8C372.9 7 418.9-28 470.9-28c29.7 0 57.4 11.8 77.9 33.4 20.5 21.5 31 49.7 29.5 79.4l-6 122.9h239.9c12.1 0 23.9 3.2 34.3 9.3 40.4 23.5 65.5 66.1 65.5 111 0 28.3-9.3 55.5-26.1 77.7zM184 440V724h81v-284h-81z m627.2-160.4H496.8l9.6-198.4c0.6-11.9-4.7-23.1-14.6-30.5-6.1-4.5-13.6-6.8-21.1-6.7-19.6 0.1-36.9 13.4-42.2 32.3L329 436.8V724h415.4c20.4-9.2 33.6-29.4 33.6-51.8 0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19c12.5-10.8 19.6-26.5 19.6-43 0-9.7-2.3-18.9-6.9-27.3l-13.9-25.4 21.9-19c12.5-10.8 19.6-26.5 19.6-43 0-9.7-2.3-18.9-6.9-27.3l-14-25.5 21.9-19c12.5-10.8 19.6-26.5 19.6-43 0-19.1-11-37.5-28.8-48.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unlock" unicode="" d="M832 432H332V656c0 30.9 25.1 56 56 56h248c30.9 0 56-25.1 56-56v-68c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v68c0 70.7-57.3 128-128 128H388c-70.7 0-128-57.3-128-128v-224h-68c-17.7 0-32-14.3-32-32v-384c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V400c0 17.7-14.3 32-32 32z m-40-376H232V360h560v-304zM484 195v-53c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v53c12.1 8.7 20 22.9 20 39 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-16.1 7.9-30.3 20-39z" horiz-adv-x="1024" /> + + + <glyph glyph-name="lock" unicode="" d="M832 432h-68V656c0 70.7-57.3 128-128 128H388c-70.7 0-128-57.3-128-128v-224h-68c-17.7 0-32-14.3-32-32v-384c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V400c0 17.7-14.3 32-32 32zM332 656c0 30.9 25.1 56 56 56h248c30.9 0 56-25.1 56-56v-224H332V656z m460-600H232V360h560v-304zM484 195v-53c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v53c12.1 8.7 20 22.9 20 39 0 26.5-21.5 48-48 48s-48-21.5-48-48c0-16.1 7.9-30.3 20-39z" horiz-adv-x="1024" /> + + + <glyph glyph-name="customerservice" unicode="" d="M512 768c-212.1 0-384-171.9-384-384v-360c0-13.3 10.7-24 24-24h184c35.3 0 64 28.7 64 64V272c0 35.3-28.7 64-64 64H200v48c0 172.3 139.7 312 312 312s312-139.7 312-312v-48H688c-35.3 0-64-28.7-64-64v-208c0-35.3 28.7-64 64-64h184c13.3 0 24 10.7 24 24V384c0 212.1-171.9 384-384 384zM328 264v-192H200V264h128z m496-192H696V264h128v-192z" horiz-adv-x="1024" /> + + + <glyph glyph-name="flag" unicode="" d="M880 591H624V704c0 17.7-14.3 32-32 32H184v40c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-784c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V256h248v-113c0-17.7 14.3-32 32-32h416c17.7 0 32 14.3 32 32V559c0 17.7-14.3 32-32 32zM184 328V664h368v-336H184z m656-145H504v73h112c4.4 0 8 3.6 8 8V519h216v-336z" horiz-adv-x="1024" /> + + + <glyph glyph-name="moneycollect" unicode="" d="M911.5 195.3c-1.5 4.2-6.1 6.3-10.3 4.8L840 177.8V716c0 37.6-30.4 68-68 68H252c-37.6 0-68-30.4-68-68v-538.2l-61.3 22.3c-0.9 0.3-1.8 0.5-2.7 0.5-4.4 0-8-3.6-8-8V133c0-3.3 2.1-6.3 5.3-7.5L501-14.1c7.1-2.6 14.8-2.6 21.9 0l383.8 139.5c3.2 1.2 5.3 4.2 5.3 7.5v59.6c0 1-0.2 1.9-0.5 2.8zM512 58.5l-256 93.1V712h512v-560.4l-256-93.1zM660.6 584h-54.5c-3 0-5.8-1.7-7.1-4.4l-84.7-168.8H511l-84.7 168.8c-1.4 2.7-4.1 4.4-7.1 4.4h-55.7c-1.3 0-2.6-0.3-3.8-1-3.9-2.1-5.3-7-3.2-10.8l103.9-191.6h-57c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76v-39h-76c-4.4 0-8-3.6-8-8v-27.1c0-4.4 3.6-8 8-8h76V192c0-4.4 3.6-8 8-8h49.9c4.4 0 8 3.6 8 8v63.5h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8h-76.3v39h76.3c4.4 0 8 3.6 8 8v27.1c0 4.4-3.6 8-8 8H564l103.7 191.6c0.6 1.2 1 2.5 1 3.8-0.1 4.3-3.7 7.9-8.1 7.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="medicinebox" unicode="" d="M839.2 617.9c-4.3 13.2-16.6 22.1-30.4 22.1H736V752c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32v-112h-72.8c-13.9 0-26.1-8.9-30.4-22.1L112 394v-378c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V394l-72.8 223.9zM360 712h304v-72H360v72z m480-656H184V382.6L244.3 568h535.4L840 382.6V56zM652 324H544V432c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-108H372c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h108v-108c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V260h108c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shop" unicode="" d="M882 623.9V752c0 17.7-14.3 32-32 32H174c-17.7 0-32-14.3-32-32v-128.1c-16.7-1-30-14.9-30-31.9v-131.7c0-24.4 4.8-48.1 14.4-70.4 4.3-10.2 9.6-19.8 15.6-28.9v-345c0-17.6 14.3-32 32-32h676c17.7 0 32 14.3 32 32V361c6.1 9.1 11.3 18.8 15.6 28.9 9.5 22.3 14.4 46 14.4 70.4V592c0 17-13.3 30.9-30 31.9zM214 712h596v-88H214v88z m362-656.1H448V160h128v-104.1z m234 0H640V192c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-136.1H214V298.1c2.9-1.4 5.9-2.8 9-4 22.3-9.4 46-14.1 70.4-14.1s48 4.7 70.4 14.1c13.8 5.8 26.8 13.2 38.7 22.1 0.2 0.1 0.4 0.1 0.6 0 11.9-8.9 24.8-16.3 38.7-22.1 22.3-9.4 46-14.1 70.4-14.1 24.4 0 48 4.7 70.4 14.1 13.8 5.8 26.8 13.2 38.7 22.1 0.2 0.1 0.4 0.1 0.6 0 11.9-8.9 24.8-16.3 38.7-22.1 22.3-9.4 46-14.1 70.4-14.1 24.4 0 48 4.7 70.4 14.1 3 1.3 6 2.6 9 4v-242.2z m30 404.4c0-59.8-49-108.3-109.3-108.3-40.8 0-76.4 22.1-95.2 54.9-2.9 5-8.1 8.1-13.9 8.1h-0.6c-5.7 0-11-3.1-13.9-8.1-18.7-32.8-54.3-54.9-95.1-54.9-40.7 0-76.2 22-95 54.7-3 5.1-8.4 8.3-14.3 8.3s-11.4-3.2-14.3-8.3C369.5 374 334 352 293.3 352 233 352 184 400.5 184 460.3v91.2c0 0.3 0.2 0.5 0.5 0.5h655c0.3 0 0.5-0.2 0.5-0.5v-91.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rocket" unicode="" d="M864 160c0 111.6-65.4 208-160 252.9V578.7c0 15.1-5.3 29.7-15.1 41.2L536.5 800.6C530.1 808.2 521 812 512 812s-18.1-3.8-24.5-11.4L335.1 619.9c-9.7-11.5-15.1-26.1-15.1-41.2v-165.8C225.4 368 160 271.6 160 160h156.5c-2.3-7.2-3.5-15-3.5-23.8 0-22.1 7.6-43.7 21.4-60.8 11.3-14 26.2-24.6 43.1-30.6 23.1-54 75.6-88.8 134.5-88.8 29.1 0 57.3 8.6 81.4 24.8 23.6 15.8 41.9 37.9 53 64 16.9 6 31.8 16.5 43.1 30.5 13.8 17.2 21.4 38.8 21.4 60.8 0 8.4-1.1 16.4-3.1 23.8H864zM762.3 274.6c9.4-14.6 17-30.3 22.5-46.6H700V337.3c24.8-16.2 46.1-37.5 62.3-62.7zM388 412.9V577.2l124 147 124-147V228H388V412.9zM239.2 228c5.5 16.3 13.1 32 22.5 46.6 16.3 25.2 37.5 46.5 62.3 62.7V228h-84.8z m388.9-116.2c-5.2-3-11.2-4.2-17.1-3.4l-19.5 2.4-2.8-19.4c-5.4-37.9-38.4-66.5-76.7-66.5-38.3 0-71.3 28.6-76.7 66.5l-2.8 19.5-19.5-2.5c-1-0.1-2.1-0.2-3.3-0.2-4.9 0-9.6 1.3-13.8 3.7-8.7 5-14.1 14.3-14.1 24.4 0 10.6 5.9 19.4 14.6 23.8h231.3c8.8-4.5 14.6-13.3 14.6-23.8-0.1-10.2-5.5-19.6-14.2-24.5zM512 496m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shopping" unicode="" d="M832 584H696v16c0 101.6-82.4 184-184 184s-184-82.4-184-184v-16H192c-17.7 0-32-14.3-32-32v-536c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V552c0 17.7-14.3 32-32 32z m-432 16c0 61.9 50.1 112 112 112s112-50.1 112-112v-16H400v16z m392-544H232V512h96v-88c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v88h224v-88c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v88h96v-456z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder" unicode="" d="M880 597.6H521L403.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H144c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V565.6c0 17.7-14.3 32-32 32zM840 128H184V640h188.5l119.6-114.4H840V128z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder-open" unicode="" d="M928 452H820V565.6c0 17.7-14.3 32-32 32H473L355.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H96c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h698c13 0 24.8 7.9 29.7 20l134 332c1.5 3.8 2.3 7.9 2.3 12 0 17.7-14.3 32-32 32zM136 640h188.5l119.6-114.4H748V452H238c-13 0-24.8-7.9-29.7-20L136 252.8V640z m635.3-512H159l103.3 256h612.4L771.3 128z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder-add" unicode="" d="M484 452.9V368h-84.5c-4.1 0-7.5-3.1-7.5-7v-42c0-3.8 3.4-7 7.5-7H484v-84.9c0-3.9 3.2-7.1 7-7.1h42c3.9 0 7 3.2 7 7.1V312h84.5c4.1 0 7.5 3.2 7.5 7v42c0 3.9-3.4 7-7.5 7H540v84.9c0 3.9-3.1 7.1-7 7.1h-42c-3.8 0-7-3.2-7-7.1zM880 597.6H521L403.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H144c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V565.6c0 17.7-14.3 32-32 32zM840 128H184V640h188.5l119.6-114.4H840V128z" horiz-adv-x="1024" /> + + + <glyph glyph-name="deploymentunit" unicode="" d="M888.3 202.8c-42.5 24.6-94.3 18-129.2-12.8l-53 30.7V372.4c0 15.7-8.4 30.3-22 38.1l-136 78.3v67.1c44.2 15 76 56.8 76 106.1 0 61.9-50.1 112-112 112s-112-50.1-112-112c0-49.3 31.8-91.1 76-106.1v-67.1l-136-78.3c-13.6-7.8-22-22.4-22-38.1v-151.6l-53-30.7c-34.9 30.8-86.8 37.4-129.2 12.8-53.5-31-71.7-99.4-41-152.9 30.8-53.5 98.9-71.9 152.2-41 42.5 24.6 62.7 73 53.6 118.8l48.7 28.3 140.6-81c6.8-3.9 14.4-5.9 22-5.9s15.2 2 22 5.9L674.5 156l48.7-28.3c-9.1-45.7 11.2-94.2 53.6-118.8 53.3-30.9 121.5-12.6 152.2 41 30.8 53.6 12.6 122-40.7 152.9z m-673-138.4c-22.8-13.2-52.1-5.4-65.2 17.6-13.2 22.9-5.4 52.3 17.5 65.5 22.8 13.2 52.1 5.4 65.2-17.6 13.2-22.9 5.4-52.3-17.5-65.5zM522 432.2zM464 662c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m170-446.2l-122-70.3-122 70.3V356.2l122 70.3 122-70.3v-140.4z m239.9-133.9c-13.2-22.9-42.4-30.8-65.2-17.6-22.8 13.2-30.7 42.6-17.5 65.5s42.4 30.8 65.2 17.6c22.9-13.2 30.7-42.5 17.5-65.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="accountbook" unicode="" d="M880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-664c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V680c0 17.7-14.3 32-32 32z m-40-656H184V640h128v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h256v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h128v-584zM639.5 482h-45c-3 0-5.8-1.7-7.1-4.4L514 332.2h-2.8l-73.4 145.4c-1.4 2.7-4.1 4.4-7.1 4.4h-46c-1.3 0-2.7-0.3-3.8-1-3.9-2.1-5.3-7-3.2-10.9l89.3-164h-48.6c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1v-33.7h-65.1c-4.4 0-8-3.6-8-8v-21.3c0-4.4 3.6-8 8-8h65.1V144c0-4.4 3.6-8 8-8h41.3c4.4 0 8 3.6 8 8v53.8h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-65.4v33.7h65.4c4.4 0 8 3.6 8 8v21.3c0 4.4-3.6 8-8 8h-49.1l89.3 164.1c0.6 1.2 1 2.5 1 3.8 0.1 4.4-3.4 8-7.9 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="contacts" unicode="" d="M594.3 294.5c18.1 19.9 29.1 46.4 29.1 75.5 0 61.9-49.9 112-111.4 112s-111.4-50.1-111.4-112c0-29.1 11-55.5 29.1-75.5-42.7-26.5-71.8-72.8-74.6-126.1-0.2-4.6 3.4-8.4 8-8.4H407c4.2 0 7.6 3.3 7.9 7.5 3.8 50.6 46 90.5 97.2 90.5s93.4-40 97.2-90.5c0.3-4.2 3.7-7.5 7.9-7.5H661c4.6 0 8.2 3.8 8 8.4-2.8 53.3-32 99.7-74.7 126.1zM512 318c-28.5 0-51.7 23.3-51.7 52s23.2 52 51.7 52 51.7-23.3 51.7-52-23.2-52-51.7-52zM928 672H768v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H96c-17.7 0-32-14.3-32-32v-576c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V640c0 17.7-14.3 32-32 32z m-40-568H136V600h120v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h148v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h148v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h120v-496z" horiz-adv-x="1024" /> + + + <glyph glyph-name="carryout" unicode="" d="M880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-664c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V680c0 17.7-14.3 32-32 32z m-40-656H184V640h128v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h256v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h128v-584zM688 476h-55.2c-5.1 0-10-2.5-13-6.6L468.9 261.6l-64.7 89c-3 4.1-7.8 6.6-13 6.6H336c-6.5 0-10.3-7.4-6.5-12.7l126.4-174c6.4-8.8 19.6-8.8 26 0l212.6 292.7c3.8 5.4 0 12.8-6.5 12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calendar-check" unicode="" d="M928 672H768v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H96c-17.7 0-32-14.3-32-32v-576c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V640c0 17.7-14.3 32-32 32z m-40-568H136V600h120v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h148v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h148v-56c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v56h120v-496zM416 400H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM416 264H232c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h184c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM724.2 441.4L620.6 297.7l-52.8 73.1c-3 4.2-7.8 6.6-12.9 6.6H500c-6.5 0-10.3-7.4-6.5-12.7l114.1-158.2c6.4-8.8 19.4-8.8 25.8 0l165 228.7c3.8 5.3 0 12.7-6.5 12.7H737c-5 0.1-9.8-2.4-12.8-6.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calendar" unicode="" d="M880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-664c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V680c0 17.7-14.3 32-32 32z m-40-656H184V436h656v-380zM184 504V640h128v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h256v-48c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v48h128v-136H184z" horiz-adv-x="1024" /> + + + <glyph glyph-name="scan" unicode="" d="M136 512h56c4.4 0 8 3.6 8 8V696h176c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H196c-37.6 0-68-30.4-68-68v-180c0-4.4 3.6-8 8-8zM648 696h176v-176c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V700c0 37.6-30.4 68-68 68H648c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM376 72H200V248c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-180c0-37.6 30.4-68 68-68h180c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM888 256h-56c-4.4 0-8-3.6-8-8v-176H648c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h180c37.6 0 68 30.4 68 68V248c0 4.4-3.6 8-8 8zM904 420H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="select" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h360c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H184V712h656v-320c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V752c0 17.7-14.3 32-32 32zM653.3 296.6l52.2 52.2c4.7 4.7 1.9 12.8-4.7 13.6l-179.4 21c-5.1 0.6-9.5-3.7-8.9-8.9l21-179.4c0.8-6.6 8.9-9.4 13.6-4.7l52.4 52.4 256.2-256.2c3.1-3.1 8.2-3.1 11.3 0l42.4 42.4c3.1 3.1 3.1 8.2 0 11.3L653.3 296.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="boxplot" unicode="" d="M952 672h-52c-4.4 0-8-3.6-8-8v-248h-92V592c0 4.4-3.6 8-8 8H232c-4.4 0-8-3.6-8-8v-176h-92V664c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V348h92v-172c0-4.4 3.6-8 8-8h560c4.4 0 8 3.6 8 8V348h92v-244c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V664c0 4.4-3.6 8-8 8zM296 528h88v-288h-88V528z m432-288H448V528h280v-288z" horiz-adv-x="1024" /> + + + <glyph glyph-name="build" unicode="" d="M916 686H376c-17.7 0-32-14.3-32-32v-236H108c-17.7 0-32-14.3-32-32v-272c0-17.7 14.3-32 32-32h540c17.7 0 32 14.3 32 32V350h236c17.7 0 32 14.3 32 32V654c0 17.7-14.3 32-32 32z m-504-68h200v-200H412V618z m-68-468H144V350h200v-200z m268 0H412V350h200v-200z m268 268H680V618h200v-200z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sliders" unicode="" d="M320 672h-66v56c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-56h-66c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8h66v-56c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v56h66c4.4 0 8 3.6 8 8V664c0 4.4-3.6 8-8 8z m-60-508h-80V604h80v-440zM904 600h-66v96c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-96h-66c-4.4 0-8-3.6-8-8v-416c0-4.4 3.6-8 8-8h66v-96c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v96h66c4.4 0 8 3.6 8 8V592c0 4.4-3.6 8-8 8z m-60-364h-80V532h80v-296zM612 492h-66V664c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-172h-66c-4.4 0-8-3.6-8-8v-200c0-4.4 3.6-8 8-8h66v-172c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V276h66c4.4 0 8 3.6 8 8V484c0 4.4-3.6 8-8 8z m-60-145c0-1.6-1.3-3-3-3h-74c-1.6 0-3 1.3-3 3v74c0 1.6 1.3 3 3 3h74c1.6 0 3-1.3 3-3v-74z" horiz-adv-x="1024" /> + + + <glyph glyph-name="laptop" unicode="" d="M956.9 50.9L896.4 264V728c0 17.7-14.3 32-32 32h-704c-17.7 0-32-14.3-32-32v-464L67.9 50.9C60.4 30 75.8 8 98 8h828.8c22.2 0 37.6 22 30.1 42.9zM200.4 688h624v-395h-624V688z m228.3-608l8.1 37h150.3l8.1-37H428.7z m224 0l-19.1 86.7c-0.8 3.7-4.1 6.3-7.8 6.3H398.2c-3.8 0-7-2.6-7.8-6.3L371.3 80H151l42.3 149h638.2l42.3-149H652.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="barcode" unicode="" d="M120 736H72c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8zM953 736h-48c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8zM200 160h112c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8H200c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8zM521 160h48c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8zM647 160h178c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8H647c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8zM392 160h48c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8zM313 96H201c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM570 96h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM826 96H648c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h178c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM441 96h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="camera" unicode="" d="M864 648H728l-32.4 90.8C691 751.5 679 760 665.4 760H358.6c-13.5 0-25.6-8.5-30.1-21.2L296 648H160c-44.2 0-80-35.8-80-80v-456c0-44.2 35.8-80 80-80h704c44.2 0 80 35.8 80 80V568c0 44.2-35.8 80-80 80z m8-536c0-4.4-3.6-8-8-8H160c-4.4 0-8 3.6-8 8V568c0 4.4 3.6 8 8 8h186.7l17.1 47.8 22.9 64.2h250.5l22.9-64.2 17.1-47.8H864c4.4 0 8-3.6 8-8v-456zM512 512c-88.4 0-160-71.6-160-160s71.6-160 160-160 160 71.6 160 160-71.6 160-160 160z m0-256c-53 0-96 43-96 96s43 96 96 96 96-43 96-96-43-96-96-96z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cluster" unicode="" d="M888 216h-54V356H546v92h238c8.8 0 16 7.2 16 16V728c0 8.8-7.2 16-16 16H240c-8.8 0-16-7.2-16-16v-264c0-8.8 7.2-16 16-16h238v-92H190v-140h-54c-4.4 0-8-3.6-8-8v-176c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8V208c0 4.4-3.6 8-8 8h-54v72h220v-72h-54c-4.4 0-8-3.6-8-8v-176c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8V208c0 4.4-3.6 8-8 8h-54v72h220v-72h-54c-4.4 0-8-3.6-8-8v-176c0-4.4 3.6-8 8-8h176c4.4 0 8 3.6 8 8V208c0 4.4-3.6 8-8 8zM256 90.7c0-1.5-1.2-2.7-2.7-2.7h-58.7c-1.5 0-2.7 1.2-2.7 2.7v58.7c0 1.5 1.2 2.7 2.7 2.7h58.7c1.5 0 2.7-1.2 2.7-2.7v-58.7z m288 0c0-1.5-1.2-2.7-2.7-2.7h-58.7c-1.5 0-2.7 1.2-2.7 2.7v58.7c0 1.5 1.2 2.7 2.7 2.7h58.7c1.5 0 2.7-1.2 2.7-2.7v-58.7zM288 512V680h448v-168H288z m544-421.3c0-1.5-1.2-2.7-2.7-2.7h-58.7c-1.5 0-2.7 1.2-2.7 2.7v58.7c0 1.5 1.2 2.7 2.7 2.7h58.7c1.5 0 2.7-1.2 2.7-2.7v-58.7zM400 596m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="gateway" unicode="" d="M928 504c8.8 0 16 7.2 16 16V704c0 8.8-7.2 16-16 16H744c-8.8 0-16-7.2-16-16v-56H296v56c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16v-184c0-8.8 7.2-16 16-16h56v-240H96c-8.8 0-16-7.2-16-16v-184c0-8.8 7.2-16 16-16h184c8.8 0 16 7.2 16 16v56h432v-56c0-8.8 7.2-16 16-16h184c8.8 0 16 7.2 16 16V248c0 8.8-7.2 16-16 16h-56V504h56zM792 656h88v-88h-88v88z m-648-88v88h88v-88h-88z m88-456h-88v88h88v-88z m648 88v-88h-88v88h88z m-80 64h-56c-8.8 0-16-7.2-16-16v-56H296v56c0 8.8-7.2 16-16 16h-56V504h56c8.8 0 16 7.2 16 16v56h432v-56c0-8.8 7.2-16 16-16h56v-240z" horiz-adv-x="1024" /> + + + <glyph glyph-name="car" unicode="" d="M380 192h264c4.4 0 8 3.6 8 8v84c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-36H428v36c0 4.4-3.6 8-8 8h-40c-4.4 0-8-3.6-8-8v-84c0-4.4 3.6-8 8-8zM760 315m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0ZM959 482.6L935.3 524c-2.2 3.8-7.1 5.1-10.9 2.9l-50.7-29.6-78.3 216.2c-8.5 26.5-33.1 44.4-60.9 44.4H301.2c-34.7 0-65.5-22.4-76.2-55.5l-74.6-205.2-50.8 29.6c-3.8 2.2-8.7 0.9-10.9-2.9L65 482.6c-2.2-3.8-0.9-8.6 2.9-10.8l60.4-35.2-14.5-40c-1.2-3.2-1.8-6.6-1.8-10V38.4c0-15.7 11.8-28.4 26.3-28.4h67.6c12.3 0 23 9.3 25.6 22.3l7.7 37.7h545.6l7.7-37.7c2.7-13 13.3-22.3 25.6-22.3h67.6c14.5 0 26.3 12.7 26.3 28.4V386.6c0 3.4-0.6 6.8-1.8 10l-14.5 40 60.3 35.2c3.8 2.2 5.1 7 3 10.8zM840 379v-237H184V379l15.6 43h624.8l15.6-43zM292.7 677.9l0.5 1.3 0.4 1.3c1.1 3.3 4.1 5.5 7.6 5.5h427.6l75.4-208H220l72.7 199.9zM264 315m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="printer" unicode="" d="M820 460h-40c-4.4 0-8-3.6-8-8v-40c0-4.4 3.6-8 8-8h40c4.4 0 8 3.6 8 8v40c0 4.4-3.6 8-8 8zM852 564H732V776c0 4.4-3.6 8-8 8H300c-4.4 0-8-3.6-8-8v-212H172c-44.2 0-80-35.8-80-80v-328c0-17.7 14.3-32 32-32h168v-132c0-4.4 3.6-8 8-8h424c4.4 0 8 3.6 8 8V124h168c17.7 0 32 14.3 32 32V484c0 44.2-35.8 80-80 80zM360 716h304v-152H360V716z m304-664H360V328h304v-276z m200 140H732V396H292v-204H160V484c0 6.6 5.4 12 12 12h680c6.6 0 12-5.4 12-12v-292z" horiz-adv-x="1024" /> + + + <glyph glyph-name="read" unicode="" d="M928 735H699.2c-49.1 0-97.1-14.1-138.4-40.7L512 663l-48.8 31.3C422 720.9 373.9 735 324.8 735H96c-17.7 0-32-14.3-32-32v-568c0-17.7 14.3-32 32-32h228.8c49.1 0 97.1-14.1 138.4-40.7l44.4-28.6c1.3-0.8 2.8-1.3 4.3-1.3s3 0.4 4.3 1.3l44.4 28.6C602 88.9 650.1 103 699.2 103H928c17.7 0 32 14.3 32 32V703c0 17.7-14.3 32-32 32zM324.8 175H136V663h188.8c35.4 0 69.8-10.1 99.5-29.2l48.8-31.3 6.9-4.5v-462c-47.6 25.6-100.8 39-155.2 39z m563.2 0H699.2c-54.4 0-107.6-13.4-155.2-39V598l6.9 4.5 48.8 31.3c29.7 19.1 64.1 29.2 99.5 29.2H888v-488zM396.9 535H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45c0.1 4.1-3.1 7.5-7 7.5zM620 527.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45c0 4.1-3.2 7.5-7.1 7.5H627.1c-3.9 0-7.1-3.4-7.1-7.5zM396.9 395H211.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45c0.1 4.1-3.1 7.5-7 7.5zM812.9 395H627.1c-3.9 0-7.1-3.4-7.1-7.5v-45c0-4.1 3.2-7.5 7.1-7.5h185.7c3.9 0 7.1 3.4 7.1 7.5v45c0.1 4.1-3.1 7.5-7 7.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud-server" unicode="" d="M704 450H320c-4.4 0-8-3.6-8-8v-402c0-4.4 3.6-8 8-8h384c4.4 0 8 3.6 8 8V442c0 4.4-3.6 8-8 8z m-328-64h272v-117H376V386z m272-290H376V213h272v-117zM456 148m-32 0a32 32 0 1 1 64 0 32 32 0 1 1-64 0ZM456 326m-32 0a32 32 0 1 1 64 0 32 32 0 1 1-64 0ZM811.4 527.1C765.6 648 648.9 734 512.2 734S258.8 648.1 213 527.2C126.9 504.5 63.5 425.8 64 332.4 64.6 228 145.6 143.10000000000002 247.6 134c4.7-0.4 8.7 3.3 8.7 8v60.4c0 4-3 7.4-7 7.9-27 3.4-52.5 15.2-72.1 34.5-24 23.5-37.2 55.1-37.2 88.6 0 28 9.1 54.4 26.2 76.4 16.7 21.4 40.2 36.9 66.1 43.7l37.9 10 13.9 36.7c8.6 22.8 20.6 44.2 35.7 63.5 14.9 19.2 32.6 36 52.4 50 41.1 28.9 89.5 44.2 140 44.2s98.9-15.3 140-44.3c19.9-14 37.5-30.8 52.4-50 15.1-19.3 27.1-40.7 35.7-63.5l13.8-36.6 37.8-10c54.2-14.4 92.1-63.7 92.1-120 0-33.6-13.2-65.1-37.2-88.6-19.5-19.2-44.9-31.1-71.9-34.5-4-0.5-6.9-3.9-6.9-7.9V142c0-4.7 4.1-8.4 8.8-8 101.7 9.2 182.5 94 183.2 198.2 0.6 93.4-62.7 172.1-148.6 194.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud-upload" unicode="" d="M518.3 437c-3.2 4.1-9.4 4.1-12.6 0l-112-141.7c-4.1-5.2-0.4-12.9 6.3-12.9h73.9V40c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V282.29999999999995H624c6.7 0 10.4 7.7 6.3 12.9L518.3 437zM811.4 529.3C765.6 650.1 648.9 736 512.2 736S258.8 650.2 213 529.4C127.3 506.9 64 428.8 64 336c0-110.5 89.5-200 199.9-200H304c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8h-40.1c-33.7 0-65.4 13.4-89 37.7-23.5 24.2-36 56.8-34.9 90.6 0.9 26.4 9.9 51.2 26.2 72.1 16.7 21.3 40.1 36.8 66.1 43.7l37.9 9.9 13.9 36.6c8.6 22.8 20.6 44.1 35.7 63.4 14.9 19.2 32.6 35.9 52.4 49.9 41.1 28.9 89.5 44.2 140 44.2s98.9-15.3 140-44.2c19.9-14 37.5-30.8 52.4-49.9 15.1-19.3 27.1-40.7 35.7-63.4l13.8-36.5 37.8-10C846.1 441.5 884 392.2 884 336c0-33.1-12.9-64.3-36.3-87.7-23.4-23.4-54.5-36.3-87.6-36.3H720c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h40.1C870.5 136 960 225.5 960 336c0 92.7-63.1 170.7-148.6 193.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud" unicode="" d="M811.4 477.3C765.6 598.1 648.9 684 512.2 684S258.8 598.2 213 477.4C127.3 454.9 64 376.9 64 284c0-110.5 89.5-200 199.9-200h496.2C870.5 84 960 173.5 960 284c0 92.7-63.1 170.7-148.6 193.3z m36.3-281c-23.4-23.4-54.5-36.3-87.6-36.3H263.9c-33.1 0-64.2 12.9-87.6 36.3-23.4 23.4-36.3 54.6-36.3 87.7 0 28 9.1 54.3 26.2 76.3 16.7 21.3 40.2 36.8 66.1 43.7l37.9 9.9 13.9 36.6c8.6 22.8 20.6 44.1 35.7 63.4 14.9 19.2 32.6 35.9 52.4 49.9 41.1 28.9 89.5 44.2 140 44.2s98.9-15.3 140-44.2c19.9-14 37.5-30.8 52.4-49.9 15.1-19.3 27.1-40.7 35.7-63.4l13.8-36.5 37.8-10c54.3-14.5 92.1-63.8 92.1-120 0-33.1-12.9-64.3-36.3-87.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud-download" unicode="" d="M624 189.70000000000005h-74.1V432c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-242.3H400c-6.7 0-10.4-7.7-6.3-12.9l112-141.7c3.2-4.1 9.4-4.1 12.6 0l112 141.7c4.1 5.2 0.4 12.9-6.3 12.9zM811.4 529.3C765.6 650.1 648.9 736 512.2 736S258.8 650.2 213 529.4C127.3 506.9 64 428.8 64 336c0-110.5 89.5-200 199.9-200H304c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8h-40.1c-33.7 0-65.4 13.4-89 37.7-23.5 24.2-36 56.8-34.9 90.6 0.9 26.4 9.9 51.2 26.2 72.1 16.7 21.3 40.1 36.8 66.1 43.7l37.9 9.9 13.9 36.6c8.6 22.8 20.6 44.1 35.7 63.4 14.9 19.2 32.6 35.9 52.4 49.9 41.1 28.9 89.5 44.2 140 44.2s98.9-15.3 140-44.2c19.9-14 37.5-30.8 52.4-49.9 15.1-19.3 27.1-40.7 35.7-63.4l13.8-36.5 37.8-10C846.1 441.5 884 392.2 884 336c0-33.1-12.9-64.3-36.3-87.7-23.4-23.4-54.5-36.3-87.6-36.3H720c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h40.1C870.5 136 960 225.5 960 336c0 92.7-63.1 170.7-148.6 193.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud-sync" unicode="" d="M811.4 527.1C765.6 648 648.9 734 512.2 734S258.8 648.1 213 527.2C126.9 504.5 63.5 425.8 64 332.4 64.6 228 145.6 143.10000000000002 247.6 134c4.7-0.4 8.7 3.3 8.7 8v60.4c0 4-3 7.4-7 7.9-27 3.4-52.5 15.2-72.1 34.5-24 23.5-37.2 55.1-37.2 88.6 0 28 9.1 54.4 26.2 76.4 16.7 21.4 40.2 36.9 66.1 43.7l37.9 10 13.9 36.7c8.6 22.8 20.6 44.2 35.7 63.5 14.9 19.2 32.6 36 52.4 50 41.1 28.9 89.5 44.2 140 44.2s98.9-15.3 140-44.3c19.9-14 37.5-30.8 52.4-50 15.1-19.3 27.1-40.7 35.7-63.5l13.8-36.6 37.8-10c54.2-14.4 92.1-63.7 92.1-120 0-33.6-13.2-65.1-37.2-88.6-19.5-19.2-44.9-31.1-71.9-34.5-4-0.5-6.9-3.9-6.9-7.9V142c0-4.7 4.1-8.4 8.8-8 101.7 9.2 182.5 94 183.2 198.2 0.6 93.4-62.7 172.1-148.6 194.9zM376.9 239.60000000000002c1.8 33.5 15.7 64.7 39.5 88.6 25.4 25.5 60 39.8 96 39.8 36.2 0 70.3-14.1 96-39.8 1.4-1.4 2.7-2.8 4.1-4.3l-25-19.6c-5.3-4.1-3.5-12.5 3-14.1l98.2-24c5-1.2 9.9 2.6 9.9 7.7l0.5 101.3c0 6.7-7.6 10.5-12.9 6.3L663 363.29999999999995c-36.6 42-90.4 68.6-150.5 68.6-107.4 0-195-85.1-199.4-191.7-0.2-4.5 3.4-8.3 8-8.3H369c4.2 0.1 7.7 3.4 7.9 7.7zM703 232h-47.9c-4.2 0-7.7-3.3-8-7.6-1.8-33.5-15.7-64.7-39.5-88.6-25.4-25.5-60-39.8-96-39.8-36.2 0-70.3 14.1-96 39.8-1.4 1.4-2.7 2.8-4.1 4.3l25 19.6c5.3 4.1 3.5 12.5-3 14.1l-98.2 24c-5 1.2-9.9-2.6-9.9-7.7l-0.4-101.4c0-6.7 7.6-10.5 12.9-6.3l23.2 18.2c36.6-42 90.4-68.6 150.5-68.6 107.4 0 195 85.1 199.4 191.7 0.2 4.5-3.4 8.3-8 8.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="video" unicode="" d="M912 593.7L784 520V672c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64v-576c0-35.3 28.7-64 64-64h592c35.3 0 64 28.7 64 64V248l128-73.7c21.3-12.3 48 3.1 48 27.6V566c0 24.6-26.7 40-48 27.7zM712 104H136V664h576v-560z m176 167l-104 59.8V437.1L888 497v-226zM208 536h112c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8H208c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="notification" unicode="" d="M880 784c-3.8 0-7.7-0.7-11.6-2.3L292 550.1H128c-8.8 0-16-7.4-16-16.6v-299c0-9.2 7.2-16.6 16-16.6h101.7c-3.7-11.6-5.7-23.9-5.7-36.4 0-65.9 53.8-119.5 120-119.5 55.4 0 102.1 37.6 115.9 88.4l408.6-164.2c3.9-1.5 7.8-2.3 11.6-2.3 16.9 0 32 14.2 32 33.2V750.8C912 769.8 897 784 880 784zM344 133.7c-26.5 0-48 21.4-48 47.8 0 11.2 3.9 21.9 11 30.4l84.9-34.1c-2-24.6-22.7-44.1-47.9-44.1z m496-58.4L318.8 284.7l-12.9 5.2H184V478.1h121.9l12.9 5.2L840 692.7v-617.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sound" unicode="" d="M625.9 781c-5.9 0-11.9-1.6-17.4-5.3L254 544H90c-8.8 0-16-7.2-16-16v-288c0-8.8 7.2-16 16-16h164l354.5-231.7c5.5-3.6 11.6-5.3 17.4-5.3 16.7 0 32.1 13.3 32.1 32.1V748.9c0 18.8-15.4 32.1-32.1 32.1zM586 93L293.4 284.3l-18 11.7H146V472h129.4l17.9 11.7L586 675v-582zM934 420H806c-8.8 0-16-7.2-16-16v-40c0-8.8 7.2-16 16-16h128c8.8 0 16 7.2 16 16v40c0 8.8-7.2 16-16 16zM892.1 158.2l-110.3 63.7c-2.5 1.4-5.2 2.1-7.9 2.1-5.5 0-10.9-2.9-13.8-8l-19.9-34.5c-4.4-7.6-1.8-17.4 5.8-21.8L856.3 96c2.5-1.4 5.2-2.1 7.9-2.1 5.5 0 10.9 2.9 13.8 8l19.9 34.5c4.4 7.6 1.7 17.4-5.8 21.8zM760 552c2.9-5.1 8.3-8 13.8-8 2.7 0 5.4 0.7 7.9 2.1L892 609.8c7.6 4.4 10.2 14.2 5.8 21.8L878 666c-2.9 5.1-8.3 8-13.8 8-2.7 0-5.4-0.7-7.9-2.1L746 608.2c-7.6-4.4-10.2-14.2-5.8-21.8L760 552z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radarchart" unicode="" d="M926.8 498.9l-396 288a31.81 31.81 0 0 1-37.6 0l-396-288c-11.2-8.1-15.9-22.6-11.6-35.8l151.3-466c4.3-13.2 16.6-22.1 30.4-22.1h489.5c13.9 0 26.1 8.9 30.4 22.1l151.3 466c4.2 13.2-0.5 27.6-11.7 35.8zM838.6 479l-98.5-32-200 144.7V696.1L838.6 479zM466 328.8l-89.1-122.3-55.2 169.2L466 328.8z m-116.3 96.8L484 522.7v-140.8l-134.3 43.7zM512 296.8l93.9-128.9H418.1L512 296.8z m28.1 225.9l134.2-97.1L540.1 382V522.7zM558 328.8l144.3 46.9-55.2-169.2L558 328.8z m-74 367.3v-104.4L283.9 447l-98.5 32L484 696.1zM169.3 425.2l86.5-28.1 80.4-246.4-53.8-73.9-113.1 348.4zM327.1 43l50.3 69h269.3l50.3-69H327.1z m414.5 33.8l-53.8 73.9 80.4 246.4 86.5 28.1-113.1-348.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="qrcode" unicode="" d="M468 768H160c-17.7 0-32-14.3-32-32v-308c0-4.4 3.6-8 8-8h332c4.4 0 8 3.6 8 8V760c0 4.4-3.6 8-8 8z m-56-284H192V704h220v-220zM274 558h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM468 348H136c-4.4 0-8-3.6-8-8v-308c0-17.7 14.3-32 32-32h308c4.4 0 8 3.6 8 8V340c0 4.4-3.6 8-8 8z m-56-284H192V284h220v-220zM274 138h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM864 768H556c-4.4 0-8-3.6-8-8v-332c0-4.4 3.6-8 8-8h332c4.4 0 8 3.6 8 8V736c0 17.7-14.3 32-32 32z m-32-284H612V704h220v-220zM694 558h56c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM888 348h-48c-4.4 0-8-3.6-8-8v-134h-78V340c0 4.4-3.6 8-8 8H556c-4.4 0-8-3.6-8-8v-332c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V252h78v-102c0-4.4 3.6-8 8-8h190c4.4 0 8 3.6 8 8V340c0 4.4-3.6 8-8 8zM746 64h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8zM888 64h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fund" unicode="" d="M926 732H94c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V700c0 17.7-14.3 32-32 32z m-40-632H134V660h752v-560zM227.1 182.3c3.1-3.1 8.2-3.1 11.3 0l172.5 172.5 114.4-114.5c3.1-3.1 8.2-3.1 11.3 0l297 297.2c3.1 3.1 3.1 8.2 0 11.3l-36.8 36.8c-3.1 3.1-8.2 3.1-11.3 0L531 331 416.6 445.5c-3.1 3.1-8.2 3.1-11.3 0l-214.9-215c-3.1-3.1-3.1-8.2 0-11.3l36.7-36.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="image" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-40-632H136v39.9l138.5 164.3 150.1-178L658.1 407 888 134.4V104z m0 129.8L664.2 499.2c-3.2 3.8-9 3.8-12.2 0L424.6 229.6l-144 170.7c-3.2 3.8-9 3.8-12.2 0L136 243.3V664h752v-430.2zM304 440c48.6 0 88 39.4 88 88s-39.4 88-88 88-88-39.4-88-88 39.4-88 88-88z m0 116c15.5 0 28-12.5 28-28s-12.5-28-28-28-28 12.5-28 28 12.5 28 28 28z" horiz-adv-x="1024" /> + + + <glyph glyph-name="mail" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-40-110.8V104H136V625.2l-27.6 21.5 39.3 50.5 42.8-33.3h643.1l42.8 33.3 39.3-50.5-27.7-21.5zM833.6 664L512 414 190.4 664l-42.8 33.3-39.3-50.5 27.6-21.5 341.6-265.6c20.2-15.7 48.5-15.7 68.7 0L888 625.2l27.6 21.5-39.3 50.5-42.7-33.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="table" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-40-208H676V664h212v-136z m0-224H676V464h212v-160zM412 464h200v-160H412V464z m200 64H412V664h200v-136z m-476-64h212v-160H136V464z m0 200h212v-136H136V664z m0-424h212v-136H136V240z m276 0h200v-136H412V240z m476-136H676V240h212v-136z" horiz-adv-x="1024" /> + + + <glyph glyph-name="idcard" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-40-632H136V664h752v-560zM610.3 420h123.4c1.3 0 2.3 3.6 2.3 8v48c0 4.4-1 8-2.3 8H610.3c-1.3 0-2.3-3.6-2.3-8v-48c0-4.4 1-8 2.3-8zM615.1 276h185.7c3.9 0 7.1 3.6 7.1 8v48c0 4.4-3.2 8-7.1 8H615.1c-3.9 0-7.1-3.6-7.1-8v-48c0-4.4 3.2-8 7.1-8zM224 223h43.9c4.2 0 7.6 3.3 7.9 7.5 3.8 50.5 46 90.5 97.2 90.5s93.4-40 97.2-90.5c0.3-4.2 3.7-7.5 7.9-7.5H522c4.6 0 8.2 3.8 8 8.4-2.8 53.3-32 99.7-74.6 126.1 18.1 19.9 29.1 46.4 29.1 75.5 0 61.9-49.9 112-111.4 112s-111.4-50.1-111.4-112c0-29.1 11-55.5 29.1-75.5-42.7-26.5-71.8-72.8-74.6-126.1-0.4-4.6 3.2-8.4 7.8-8.4z m149 262c28.5 0 51.7-23.3 51.7-52s-23.2-52-51.7-52-51.7 23.3-51.7 52 23.2 52 51.7 52z" horiz-adv-x="1024" /> + + + <glyph glyph-name="creditcard" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-792-72h752v-120H136V664z m752-560H136V456h752v-352zM651 168h165c4.4 0 8 3.6 8 8v72c0 4.4-3.6 8-8 8H651c-4.4 0-8-3.6-8-8v-72c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="heart" unicode="" d="M923 612.4c-13.4 31.1-32.6 58.9-56.9 82.8-24.3 23.8-52.5 42.4-84 55.5-32.5 13.5-66.9 20.3-102.4 20.3-49.3 0-97.4-13.5-139.2-39-10-6.1-19.5-12.8-28.5-20.1-9 7.3-18.5 14-28.5 20.1-41.8 25.5-89.9 39-139.2 39-35.5 0-69.9-6.8-102.4-20.3-31.4-13-59.7-31.7-84-55.5-24.4-23.9-43.5-51.7-56.9-82.8-13.9-32.3-21-66.6-21-101.9 0-33.3 6.8-68 20.3-103.3 11.3-29.5 27.5-60.1 48.2-91 32.8-48.9 77.9-99.9 133.9-151.6 92.8-85.7 184.7-144.9 188.6-147.3l23.7-15.2c10.5-6.7 24-6.7 34.5 0l23.7 15.2c3.9 2.5 95.7 61.6 188.6 147.3 56 51.7 101.1 102.7 133.9 151.6 20.7 30.9 37 61.5 48.2 91 13.5 35.3 20.3 70 20.3 103.3 0.1 35.3-7 69.6-20.9 101.9zM512 81.2S156 309.3 156 510.5C156 612.4 240.3 695 344.3 695c73.1 0 136.5-40.8 167.7-100.4C543.2 654.2 606.6 695 679.7 695c104 0 188.3-82.6 188.3-184.5 0-201.2-356-429.3-356-429.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="block" unicode="" d="M856 520H648V728c0 8.8-7.2 16-16 16H168c-8.8 0-16-7.2-16-16v-464c0-8.8 7.2-16 16-16h208v-208c0-8.8 7.2-16 16-16h464c8.8 0 16 7.2 16 16V504c0 8.8-7.2 16-16 16z m-480-16v-188H220V676h360v-156H392c-8.8 0-16-7.2-16-16z m204-52v-136H444V452h136z m224-360H444V248h188c8.8 0 16 7.2 16 16V452h156v-360z" horiz-adv-x="1024" /> + + + <glyph glyph-name="error" unicode="" d="M512 176m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM480 480v-184c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V480c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8zM955.7 40l-416 720c-6.2 10.7-16.9 16-27.7 16s-21.6-5.3-27.7-16l-416-720C56 18.6 71.4-8 96-8h832c24.6 0 40 26.6 27.7 48z m-783.5 27.9L512 656.1l339.8-588.2H172.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="star" unicode="" d="M908.1 542.9l-253.9 36.9L540.7 809.9c-3.1 6.3-8.2 11.4-14.5 14.5-15.8 7.8-35 1.3-42.9-14.5L369.8 579.8l-253.9-36.9c-7-1-13.4-4.3-18.3-9.3-12.3-12.7-12.1-32.9 0.6-45.3l183.7-179.1-43.4-252.9c-1.2-6.9-0.1-14.1 3.2-20.3 8.2-15.6 27.6-21.7 43.2-13.4L512 142l227.1-119.4c6.2-3.3 13.4-4.4 20.3-3.2 17.4 3 29.1 19.5 26.1 36.9l-43.4 252.9 183.7 179.1c5 4.9 8.3 11.3 9.3 18.3 2.7 17.5-9.5 33.7-27 36.3zM664.8 334.4l36.1-210.3L512 223.3 323.1 124l36.1 210.3-152.8 149L417.6 514 512 705.3 606.4 514l211.2-30.7-152.8-148.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="gold" unicode="" d="M342 424h342c0.4 0 0.9 0 1.3 0.1 4.4 0.7 7.3 4.8 6.6 9.2l-40.2 248c-0.6 3.9-4 6.7-7.9 6.7H382.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8z m91.2 196h159.5l20.7-128h-201l20.8 128zM435.7 337.3c-0.6 3.9-4 6.7-7.9 6.7H166.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8h342c0.4 0 0.9 0 1.3 0.1 4.4 0.7 7.3 4.8 6.6 9.2l-40.2 248zM196.5 148l20.7 128h159.5l20.7-128H196.5zM905.9 89.3l-40.2 248c-0.6 3.9-4 6.7-7.9 6.7H596.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8h342c0.4 0 0.9 0 1.3 0.1 4.3 0.7 7.3 4.8 6.6 9.2zM626.5 148l20.7 128h159.5l20.7-128H626.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="heatmap" unicode="" d="M955.7 40l-416 720c-6.2 10.7-16.9 16-27.7 16s-21.6-5.3-27.7-16l-416-720C56 18.6 71.4-8 96-8h832c24.6 0 40 26.6 27.7 48z m-790.4 23.9L512 664.1 858.7 64H165.3zM484.3 538l-228-394c-12.3-21.3 3.1-48 27.7-48h455.8c24.7 0 40.1 26.7 27.7 48L539.7 538c-6.2 10.7-17 16-27.7 16-10.8 0-21.6-5.3-27.7-16z m214-386H325.7L512 474l186.3-322zM484.3 346.1l-57-98.4C415 226.5 430.4 200 455 200h114c24.6 0 39.9 26.5 27.7 47.7l-57 98.4c-6.1 10.6-16.9 15.9-27.7 15.9s-21.5-5.3-27.7-15.9z m57.1-98.4h-58.7l29.4 50.7 29.3-50.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wifi" unicode="" d="M723 275.5C666.8 324.4 593.4 354 513 354s-153.8-29.6-210.1-78.6c-3.2-2.8-3.6-7.8-0.8-11.2l36-42.9c2.9-3.4 8-3.8 11.4-0.9C393.1 258.8 450.3 282 513 282s119.9-23.2 163.5-61.5c3.4-2.9 8.5-2.5 11.4 0.9l36 42.9c2.8 3.3 2.4 8.3-0.9 11.2zM840.4 415.6C751.7 489.5 637.6 534 513 534s-238.7-44.5-327.5-118.4c-3.4-2.8-3.8-7.9-1-11.3l36-42.9c2.8-3.4 7.9-3.8 11.2-1C308 423.8 406.1 462 513 462s205-38.2 281.2-101.6c3.4-2.8 8.4-2.4 11.2 1l36 42.9c2.8 3.4 2.4 8.5-1 11.3zM957.1 554.6C835.7 654.2 680.3 714 511 714c-168.2 0-322.6-59-443.7-157.4-3.5-2.8-4-7.9-1.1-11.4l36-42.9c2.8-3.3 7.8-3.8 11.1-1.1C222 589.3 360.3 642 511 642c151.8 0 291-53.5 400-142.7 3.4-2.8 8.4-2.3 11.2 1.1l36 42.9c2.9 3.4 2.4 8.5-1.1 11.3zM512 118m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="attachment" unicode="" d="M779.3 699.4c-94.2 94.2-247.6 94.2-341.7 0l-261-260.8c-1.7-1.7-2.6-4-2.6-6.4s0.9-4.7 2.6-6.4l36.9-36.9c3.5-3.5 9.2-3.5 12.7 0l261 260.8c32.4 32.4 75.5 50.2 121.3 50.2s88.9-17.8 121.2-50.2c32.4-32.4 50.2-75.5 50.2-121.2 0-45.8-17.8-88.8-50.2-121.2l-266-265.9-43.1-43.1c-40.3-40.3-105.8-40.3-146.1 0-19.5 19.5-30.2 45.4-30.2 73s10.7 53.5 30.2 73l263.9 263.8c6.7 6.6 15.5 10.3 24.9 10.3h0.1c9.4 0 18.1-3.7 24.7-10.3 6.7-6.7 10.3-15.5 10.3-24.9 0-9.3-3.7-18.1-10.3-24.7L372.4 243c-1.7-1.7-2.6-4-2.6-6.4s0.9-4.7 2.6-6.4l36.9-36.9c3.5-3.5 9.2-3.5 12.7 0l215.6 215.6c19.9 19.9 30.8 46.3 30.8 74.4s-11 54.6-30.8 74.4c-41.1 41.1-107.9 41-149 0L463 532 224.8 293.9C192 261.1 174 217.6 174 171.2c0-46.3 18.1-89.8 50.8-122.5 33.9-33.8 78.3-50.7 122.7-50.7 44.4 0 88.8 16.9 122.6 50.7l309.2 309C824.8 403.3 850 464 850 528.5c0.1 64.6-25.1 125.3-70.7 170.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="edit" unicode="" d="M257.7 144c2 0 4 0.2 6 0.5L431.9 174c2 0.4 3.9 1.3 5.3 2.8l423.9 423.9c3.9 3.9 3.9 10.2 0 14.1L694.9 781.1c-1.9 1.9-4.4 2.9-7.1 2.9s-5.2-1-7.1-2.9L256.8 357.2c-1.5-1.5-2.4-3.3-2.8-5.3l-29.5-168.2c-1.9-11.1 1.5-21.9 9.4-29.8 6.6-6.4 14.9-9.9 23.8-9.9z m67.4 174.4L687.8 681l73.3-73.3-362.7-362.6-88.9-15.7 15.6 89zM880 60H144c-17.7 0-32-14.3-32-32v-36c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v36c0 17.7-14.3 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="key" unicode="" d="M608 784c-167.9 0-304-136.1-304-304 0-70.3 23.9-135 63.9-186.5l-41.1-41.1-62.3 62.3c-3.1 3.1-8.2 3.1-11.4 0l-39.8-39.8c-3.1-3.1-3.1-8.2 0-11.4l62.3-62.3-44.9-44.9-62.3 62.3c-3.1 3.1-8.2 3.1-11.4 0l-39.8-39.8c-3.1-3.1-3.1-8.2 0-11.4l62.3-62.3-65.3-65.3c-3.1-3.1-3.1-8.2 0-11.3l42.3-42.3c3.1-3.1 8.2-3.1 11.3 0l253.6 253.6C473 199.9 537.7 176 608 176c167.9 0 304 136.1 304 304S775.9 784 608 784z m161.2-465.2C726.2 275.7 668.9 252 608 252c-60.9 0-118.2 23.7-161.2 66.8-43.1 43-66.8 100.3-66.8 161.2 0 60.9 23.7 118.2 66.8 161.2 43 43.1 100.3 66.8 161.2 66.8 60.9 0 118.2-23.7 161.2-66.8 43.1-43 66.8-100.3 66.8-161.2 0-60.9-23.7-118.2-66.8-161.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="api" unicode="" d="M917.7 747.2l-42.4 42.4c-1.6 1.6-3.6 2.3-5.7 2.3s-4.1-0.8-5.7-2.3l-76.1-76.1c-33.7 22.9-72.9 34.3-112.1 34.3-51.2 0-102.4-19.5-141.5-58.6L432.3 587.3c-3.1-3.1-3.1-8.2 0-11.3L704 304.3c1.6-1.6 3.6-2.3 5.7-2.3 2 0 4.1 0.8 5.7 2.3l101.9 101.9c68.9 69 77 175.7 24.3 253.5l76.1 76.1c3.1 3.2 3.1 8.3 0 11.4zM769.1 454.3l-59.4-59.4-186.8 186.8 59.4 59.4c24.9 24.9 58.1 38.7 93.4 38.7 35.3 0 68.4-13.7 93.4-38.7 24.9-24.9 38.7-58.1 38.7-93.4 0-35.3-13.8-68.4-38.7-93.4zM578.9 349.3c-3.1 3.1-8.2 3.1-11.3 0L501 282.7 410.7 373l66.7 66.7c3.1 3.1 3.1 8.2 0 11.3L441 487.4c-3.1 3.1-8.2 3.1-11.3 0L363 420.7l-43 43c-1.6 1.6-3.6 2.3-5.7 2.3-2 0-4.1-0.8-5.7-2.3L206.8 361.8c-68.9-69-77-175.7-24.3-253.5l-76.1-76.1c-3.1-3.1-3.1-8.2 0-11.3l42.4-42.4c1.6-1.6 3.6-2.3 5.7-2.3s4.1 0.8 5.7 2.3l76.1 76.1c33.7-22.9 72.9-34.3 112.1-34.3 51.2 0 102.4 19.5 141.5 58.6l101.9 101.9c3.1 3.1 3.1 8.2 0 11.3l-43 43 66.7 66.7c3.1 3.1 3.1 8.2 0 11.3l-36.6 36.2zM441.7 126.9c-24.9-24.9-58.1-38.7-93.4-38.7-35.3 0-68.4 13.7-93.4 38.7-24.9 24.9-38.7 58.1-38.7 93.4 0 35.3 13.7 68.4 38.7 93.4l59.4 59.4 186.8-186.8-59.4-59.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="disconnect" unicode="" d="M832.6 704.6c-84.6 84.6-221.5 84.6-306 0l-96.9-96.9 51-51 96.9 96.9c53.8 53.8 144.6 59.5 204 0 59.5-59.5 53.8-150.2 0-204l-96.9-96.9 51.1-51.1 96.9 96.9c84.4 84.6 84.4 221.5-0.1 306.1zM446.5 114.4c-53.8-53.8-144.6-59.5-204 0-59.5 59.5-53.8 150.2 0 204l96.9 96.9-51.1 51.1-96.9-96.9c-84.6-84.6-84.6-221.5 0-306s221.5-84.6 306 0l96.9 96.9-51 51-96.8-97zM260.3 686.6c-3.1 3.1-8.2 3.1-11.3 0L209.4 647c-3.1-3.1-3.1-8.2 0-11.3l554.4-554.4c3.1-3.1 8.2-3.1 11.3 0l39.6 39.6c3.1 3.1 3.1 8.2 0 11.3L260.3 686.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="highlight" unicode="" d="M957.6 388.6L603.2 737.8c-3.1 3.1-8.1 3.1-11.2 0L353.3 502.6c-3.1-3.1-3.2-8.2-0.1-11.3l0.1-0.1 40-39.4-117.2-115.3c-3.1-3.1-3.2-8.2-0.1-11.3l0.1-0.1 39.5-38.9-189.1-187H72.1c-4.4 0-8.1-3.6-8.1-8V36c0-4.4 3.6-8 8-8h344.9c2.1 0 4.1 0.8 5.6 2.3l76.1 75.6 40.4-39.8c3.1-3.1 8.1-3.1 11.2 0l117.1 115.6 40.1-39.5c3.1-3.1 8.1-3.1 11.2 0l238.7 235.2c3.4 3 3.4 8 0.3 11.2zM389.8 99.8H229.6l134.4 133 80.1-78.9-54.3-54.1z m154.8 62.1L373.2 330.8l68.6 67.6 171.4-168.9-68.6-67.6zM713.1 238L450.3 496.9 597.6 642l262.8-259-147.3-145z" horiz-adv-x="1024" /> + + + <glyph glyph-name="monitor" unicode="" d="M692.8 483.3l0.2 0.2-34.6 44.3c-2.7 3.5-7.7 4.1-11.2 1.4l-50.4-39.3-70.5 90.1c-2.7 3.5-7.7 4.1-11.2 1.4l-37.9-29.7c-3.5-2.7-4.1-7.7-1.4-11.2l70.5-90.2-0.2-0.1 34.6-44.3c2.7-3.5 7.7-4.1 11.2-1.4l50.4 39.3 64.1-82c2.7-3.5 7.7-4.1 11.2-1.4l37.9 29.6c3.5 2.7 4.1 7.7 1.4 11.2l-64.1 82.1zM608 784c-167.9 0-304-136.1-304-304 0-70.3 23.9-135 63.9-186.5L114.3 39.9c-3.1-3.1-3.1-8.2 0-11.3l42.3-42.3c3.1-3.1 8.2-3.1 11.3 0l253.6 253.6C473 199.9 537.7 176 608 176c167.9 0 304 136.1 304 304S775.9 784 608 784z m161.2-465.2C726.2 275.7 668.9 252 608 252s-118.2 23.7-161.2 66.8C403.7 361.8 380 419.1 380 480s23.7 118.2 66.8 161.2c43 43.1 100.3 66.8 161.2 66.8s118.2-23.7 161.2-66.8c43.1-43 66.8-100.3 66.8-161.2s-23.7-118.2-66.8-161.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="link" unicode="" d="M574 230.6c-3.1 3.1-8.2 3.1-11.3 0L446.5 114.4c-53.8-53.8-144.6-59.5-204 0-59.5 59.5-53.8 150.2 0 204l116.2 116.2c3.1 3.1 3.1 8.2 0 11.3l-39.8 39.8c-3.1 3.1-8.2 3.1-11.3 0L191.4 369.5c-84.6-84.6-84.6-221.5 0-306s221.5-84.6 306 0l116.2 116.2c3.1 3.1 3.1 8.2 0 11.3L574 230.6zM832.6 704.6c-84.6 84.6-221.5 84.6-306 0L410.3 588.4c-3.1-3.1-3.1-8.2 0-11.3l39.7-39.7c3.1-3.1 8.2-3.1 11.3 0l116.2 116.2c53.8 53.8 144.6 59.5 204 0 59.5-59.5 53.8-150.2 0-204L665.3 333.4c-3.1-3.1-3.1-8.2 0-11.3l39.8-39.8c3.1-3.1 8.2-3.1 11.3 0l116.2 116.2c84.5 84.6 84.5 221.5 0 306.1zM610.1 523.7c-3.1 3.1-8.2 3.1-11.3 0L372.3 297.3c-3.1-3.1-3.1-8.2 0-11.3l39.6-39.6c3.1-3.1 8.2-3.1 11.3 0l226.4 226.4c3.1 3.1 3.1 8.2 0 11.3l-39.5 39.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="man" unicode="" d="M874 776H622c-3.3 0-6-2.7-6-6v-56c0-3.3 2.7-6 6-6h160.4L583.1 508.7c-50 38.5-111 59.3-175.1 59.3-76.9 0-149.3-30-203.6-84.4S120 356.9 120 280s30-149.3 84.4-203.6C258.7 22 331.1-8 408-8s149.3 30 203.6 84.4C666 130.7 696 203.1 696 280c0 64.1-20.8 124.9-59.2 174.9L836 654.1V494c0-3.3 2.7-6 6-6h56c3.3 0 6 2.7 6 6V746c0 16.5-13.5 30-30 30zM408 68c-116.9 0-212 95.1-212 212s95.1 212 212 212 212-95.1 212-212-95.1-212-212-212z" horiz-adv-x="1024" /> + + + <glyph glyph-name="percentage" unicode="" d="M855.7 685.2l-42.4 42.4c-3.1 3.1-8.2 3.1-11.3 0L168.3 94.1c-3.1-3.1-3.1-8.2 0-11.3l42.4-42.4c3.1-3.1 8.2-3.1 11.3 0L855.6 674c3.2 3 3.2 8.1 0.1 11.2zM304 448c79.4 0 144 64.6 144 144s-64.6 144-144 144-144-64.6-144-144 64.6-144 144-144z m0 216c39.7 0 72-32.3 72-72s-32.3-72-72-72-72 32.3-72 72 32.3 72 72 72zM720 320c-79.4 0-144-64.6-144-144s64.6-144 144-144 144 64.6 144 144-64.6 144-144 144z m0-216c-39.7 0-72 32.3-72 72s32.3 72 72 72 72-32.3 72-72-32.3-72-72-72z" horiz-adv-x="1024" /> + + + <glyph glyph-name="search" unicode="" d="M608 784c-167.9 0-304-136.1-304-304 0-70.3 23.9-135 63.9-186.5L114.3 39.9c-3.1-3.1-3.1-8.2 0-11.3l42.3-42.3c3.1-3.1 8.2-3.1 11.3 0l253.6 253.6C473 199.9 537.7 176 608 176c167.9 0 304 136.1 304 304S775.9 784 608 784z m161.2-465.2C726.2 275.7 668.9 252 608 252s-118.2 23.7-161.2 66.8C403.7 361.8 380 419.1 380 480s23.7 118.2 66.8 161.2c43 43.1 100.3 66.8 161.2 66.8s118.2-23.7 161.2-66.8c43.1-43 66.8-100.3 66.8-161.2s-23.7-118.2-66.8-161.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pushpin" unicode="" d="M878.3 503.9L631.9 750.3c-6.5 6.5-15 9.7-23.5 9.7s-17-3.2-23.5-9.7L423.8 589.1c-12.2 1.4-24.5 2-36.8 2-73.2 0-146.4-24.1-206.5-72.3-15.4-12.3-16.7-35.4-2.7-49.4l181.7-181.7-215.4-215.2c-2.6-2.6-4.3-6.1-4.6-9.8l-3.4-37.2c-0.9-9.4 6.6-17.4 15.9-17.4 0.5 0 1 0 1.5 0.1l37.2 3.4c3.7 0.3 7.2 2 9.8 4.6l215.4 215.4 181.7-181.7c6.5-6.5 15-9.7 23.5-9.7 9.7 0 19.3 4.2 25.9 12.4 56.3 70.3 79.7 158.3 70.2 243.4l161.1 161.1c12.9 12.8 12.9 33.8 0 46.8zM666.2 346.7l-24.5-24.5 3.8-34.4c3.7-33.7 1-67.2-8.2-99.7-5.4-19-12.8-37.1-22.2-54.2L262 487.2c12.9 7.1 26.3 13.1 40.3 17.9 27.2 9.4 55.7 14.1 84.7 14.1 9.6 0 19.3-0.5 28.9-1.6l34.4-3.8 24.5 24.5L608.5 672 800 480.5 666.2 346.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="phone" unicode="" d="M877.1 657.3L770.6 763.7c-13 13-30.4 20.3-48.8 20.3s-35.8-7.2-48.8-20.3L558.3 649.2c-13-13-20.3-30.5-20.3-48.9 0-18.5 7.2-35.8 20.3-48.9l89.6-89.7c-20.6-47.8-49.6-90.6-86.4-127.3-36.7-36.9-79.6-66-127.2-86.6l-89.6 89.7c-13 13-30.4 20.3-48.8 20.3-18.5 0-35.8-7.2-48.8-20.3L132.3 223c-13-13-20.3-30.5-20.3-48.9 0-18.5 7.2-35.8 20.3-48.9l106.4-106.4c22.2-22.2 52.8-34.9 84.2-34.9 6.5 0 12.8 0.5 19.2 1.6 132.4 21.8 263.8 92.3 369.9 198.3C818 290 888.4 421.4 910.4 553.9c6.3 37.6-6.3 76.3-33.3 103.4z m-37.6-91.5c-19.5-117.9-82.9-235.5-178.4-331s-213-158.9-330.9-178.4c-14.8-2.5-30 2.5-40.8 13.2L184.9 174.1 295.7 285l119.8-120 0.9-0.9 21.6 8C570.7 221 674.9 325.2 723.7 457.9l8 21.6-120.8 120.7 110.8 110.9 104.5-104.5c10.8-10.8 15.8-26 13.3-40.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shake" unicode="" d="M372 230m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM940.7 539.6L667.6 812.8C655.2 825.1 638.7 832 621.1 832s-34.1-6.8-46.5-19.2L83.3 321.5c-25.7-25.7-25.7-67.4 0-93.1l273.2-273.2c12.3-12.3 28.9-19.2 46.5-19.2s34.1 6.8 46.5 19.2l491.3 491.3c25.6 25.7 25.6 67.5-0.1 93.1zM403 15.9L143.9 275l477.2 477.2 259-259.2L403 15.9zM152.8 522.3c3.1-3.1 8.1-3.1 11.2 0L373.7 732c3.1 3.1 3.1 8.1 0 11.2l-38.4 38.4c-3.1 3.1-8.1 3.1-11.2 0L114.3 572.1c-3.1-3.1-3.1-8.1 0-11.2l38.5-38.6zM871.4 245.7c-3.1 3.1-8.1 3.1-11.2 0L650.3 35.9c-3.1-3.1-3.1-8.1 0-11.2l38.4-38.4c3.1-3.1 8.1-3.1 11.2 0L909.7 196c3.1 3.1 3.1 8.1 0 11.2l-38.3 38.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tag" unicode="" d="M938 437.2l-29.6 312.6c-1.5 16.2-14.4 29-30.6 30.6L565.2 810h-0.4c-3.2 0-5.7-1-7.6-2.9L88.9 338.8c-3.9-3.9-3.9-10.2 0-14.1l363.8-363.8c1.9-1.9 4.4-2.9 7.1-2.9s5.2 1 7.1 2.9l468.3 468.3c2 2.1 3 5 2.8 8zM459.7 61.3L189.3 331.7 589 731.4 836 708l23.4-247-399.7-399.7zM680 640c-48.5 0-88-39.5-88-88s39.5-88 88-88 88 39.5 88 88-39.5 88-88 88z m0-120c-17.7 0-32 14.3-32 32s14.3 32 32 32 32-14.3 32-32-14.3-32-32-32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wrench" unicode="" d="M876.6 656.5c-0.5 0.9-1.2 1.8-2 2.5-5 5-13.1 5-18.1 0L684.2 486.7l-67.9 67.9L788.7 727c0.8 0.8 1.4 1.6 2 2.5 3.6 6.1 1.6 13.9-4.5 17.5-98.2 58-226.8 44.7-311.3-39.7-67-67-89.2-162-66.5-247.4l-293-293c-3-3-2.8-7.9 0.3-11l169.7-169.7c3.1-3.1 8.1-3.3 11-0.3l292.9 292.9c85.5-22.8 180.5-0.7 247.6 66.4 84.4 84.5 97.7 213.1 39.7 311.3zM786 396.2c-58.1-58.1-145.3-69.3-214.6-33.6l-8.8-8.8-0.1 0.1-274-274.1-79.2 79.2 230.1 230.1s0-0.1 0.1-0.1l52.8 52.8c-35.7 69.3-24.5 156.5 33.6 214.6 39.2 39.2 92.1 57.3 144 53.5L537 577.1c-12.5-12.5-12.5-32.8 0-45.3l124.5-124.5c12.5-12.5 32.8-12.5 45.3 0l132.8 132.8c3.7-51.8-14.4-104.8-53.6-143.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="woman" unicode="" d="M909.7 739.4l-42.2 42.2c-3.1 3.1-8.2 3.1-11.3 0L764 689.4l-84.2 84.2c-3.1 3.1-8.2 3.1-11.3 0l-42.1-42.1c-3.1-3.1-3.1-8.1 0-11.3l84.2-84.2-135.5-135.3c-50 38.5-111 59.3-175.1 59.3-76.9 0-149.3-30-203.6-84.4S112 348.9 112 272s30-149.3 84.4-203.6C250.7 14 323.1-16 400-16s149.3 30 203.6 84.4C658 122.7 688 195.1 688 272c0 64.2-20.9 125.1-59.3 175.1l135.4 135.4 84.2-84.2c3.1-3.1 8.2-3.1 11.3 0l42.1 42.1c3.1 3.1 3.1 8.1 0 11.3l-84.2 84.2 92.2 92.2c3.1 3.1 3.1 8.2 0 11.3zM400 60c-116.9 0-212 95.1-212 212s95.1 212 212 212 212-95.1 212-212-95.1-212-212-212z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tags" unicode="" d="M483.2 105.7L861.4 484c1.7 1.7 2.5 4 2.3 6.3l-25.5 301.4c-0.7 7.8-6.8 13.9-14.6 14.6L522.2 831.7c-2.3 0.2-4.7-0.6-6.3-2.3L137.7 451.2c-3.1-3.1-3.1-8.2 0-11.3l334.2-334.2c3.1-3.2 8.2-3.2 11.3 0z m62.6 651.7l224.6-19 19-224.6L477.5 202 233.9 445.5l311.9 311.9zM605.958852 571.173768a48 48 0 1 1 67.881066 67.883435 48 48 0 1 1-67.881066-67.883435ZM889.7 356.2l-39.6 39.5c-3.1 3.1-8.2 3.1-11.3 0l-362-361.3-237.6 237c-3.1 3.1-8.2 3.1-11.3 0l-39.6-39.5c-3.1-3.1-3.1-8.2 0-11.3l243.2-242.8 39.6-39.5c3.1-3.1 8.2-3.1 11.3 0l407.3 406.6c3.1 3.1 3.1 8.2 0 11.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="scissor" unicode="" d="M567.1 384l318.5 319.3c5 5 1.5 13.7-5.6 13.7h-90.5c-2.1 0-4.2-0.8-5.6-2.3l-273.3-274-90.2 90.5c12.5 22.1 19.7 47.6 19.7 74.8 0 83.9-68.1 152-152 152s-152-68.1-152-152 68.1-152 152-152c27.7 0 53.6 7.4 75.9 20.3l90-90.3-90.1-90.3C341.6 306.6 315.7 314 288 314c-83.9 0-152-68.1-152-152s68.1-152 152-152 152 68.1 152 152c0 27.2-7.2 52.7-19.7 74.8l90.2 90.5 273.3-274c1.5-1.5 3.5-2.3 5.6-2.3H880c7.1 0 10.7 8.6 5.6 13.7L567.1 384zM288 526c-44.1 0-80 35.9-80 80s35.9 80 80 80 80-35.9 80-80-35.9-80-80-80z m0-444c-44.1 0-80 35.9-80 80s35.9 80 80 80 80-35.9 80-80-35.9-80-80-80z" horiz-adv-x="1024" /> + + + <glyph glyph-name="mr" unicode="" d="M788 190.1V704c0 8.8-7.2 16-16 16H602v68.8c0 6-7 9.4-11.7 5.7L462.7 693.7c-3.7-2.9-3.7-8.5 0-11.3l127.5-100.8c4.7-3.7 11.7-0.4 11.7 5.7V656h114v-465.9c-44.2-15-76-56.9-76-106.1 0-61.8 50.2-112 112-112s112 50.2 112 112c0.1 49.2-31.7 91-75.9 106.1zM752 36c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48zM384 684c0 61.8-50.2 112-112 112s-112-50.2-112-112c0-49.2 31.8-91 76-106.1V190c-44.2-15-76-56.9-76-106.1 0-61.8 50.2-112 112-112s112 50.2 112 112c0 49.2-31.8 91-76 106.1V577.9c44.2 15.1 76 56.9 76 106.1z m-160 0c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m96-600c0-26.5-21.5-48-48-48s-48 21.5-48 48 21.5 48 48 48 48-21.5 48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="share" unicode="" d="M752 232c-28.5 0-54.8-10-75.4-26.7L469.4 355.2c1.7 9.3 2.6 19 2.6 28.8s-0.9 19.4-2.6 28.8l207.2 149.9C697.2 546 723.5 536 752 536c66.2 0 120 53.8 120 120s-53.8 120-120 120-120-53.8-120-120c0-11.6 1.6-22.7 4.7-33.3L439.9 480.2C410.7 518.9 364.3 544 312 544c-88.4 0-160-71.6-160-160s71.6-160 160-160c52.3 0 98.7 25.1 127.9 63.8l196.8-142.5c-3.1-10.6-4.7-21.8-4.7-33.3 0-66.2 53.8-120 120-120s120 53.8 120 120-53.8 120-120 120z m0 476c28.7 0 52-23.3 52-52s-23.3-52-52-52-52 23.3-52 52 23.3 52 52 52zM312 296c-48.5 0-88 39.5-88 88s39.5 88 88 88 88-39.5 88-88-39.5-88-88-88z m440-236c-28.7 0-52 23.3-52 52s23.3 52 52 52 52-23.3 52-52-23.3-52-52-52z" horiz-adv-x="1024" /> + + + <glyph glyph-name="branches" unicode="" d="M740 735c-61.8 0-112-50.2-112-112 0-50.1 33.1-92.6 78.5-106.9v-95.9L320 293.6V577.9c44.2 15 76 56.9 76 106.1 0 61.8-50.2 112-112 112s-112-50.2-112-112c0-49.2 31.8-91 76-106.1V190c-44.2-15-76-56.9-76-106.1 0-61.8 50.2-112 112-112s112 50.2 112 112c0 49.2-31.8 91-76 106.1v27.8l423.5 138.7c20.9 6.8 34.9 26.2 34.9 48.2V517.8c42.9 15.8 73.6 57 73.6 105.2 0 61.8-50.2 112-112 112z m-504-51c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m96-600c0-26.5-21.5-48-48-48s-48 21.5-48 48 21.5 48 48 48 48-21.5 48-48z m408 491c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fork" unicode="" d="M752 796c-61.8 0-112-50.2-112-112 0-47.7 29.9-88.5 72-104.6v-27.6L512 294.6 312 551.8v27.6c42.1 16.1 72 56.9 72 104.6 0 61.8-50.2 112-112 112s-112-50.2-112-112c0-50.6 33.8-93.5 80-107.3v-34.4c0-9.7 3.3-19.3 9.3-27L476 223.7v-33.6c-44.2-15-76-56.9-76-106.1 0-61.8 50.2-112 112-112s112 50.2 112 112c0 49.2-31.8 91-76 106.1v33.6l226.7 291.6c6 7.7 9.3 17.3 9.3 27v34.4c46.2 13.8 80 56.7 80 107.3 0 61.8-50.2 112-112 112zM224 684c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m336-600c0-26.5-21.5-48-48-48s-48 21.5-48 48 21.5 48 48 48 48-21.5 48-48z m192 552c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shrink" unicode="" d="M881.7 708.6l-45.1 45.1c-3.1 3.1-8.2 3.1-11.3 0L667.8 596.1l-54.7 54.7c-4.7 4.7-12.7 1.9-13.5-4.7L576.1 457c-0.6-5.2 3.7-9.5 8.9-8.9l189.2 23.5c6.6 0.8 9.3 8.8 4.7 13.5l-54.7 54.7 157.6 157.6c3 3 3 8.1-0.1 11.2zM439 319.9l-189.2-23.5c-6.6-0.8-9.3-8.9-4.7-13.5l54.7-54.7-157.5-157.5c-3.1-3.1-3.1-8.2 0-11.3l45.1-45.1c3.1-3.1 8.2-3.1 11.3 0l157.6 157.6 54.7-54.7c4.7-4.7 12.7-1.9 13.5 4.7L447.9 311c0.7 5.2-3.7 9.6-8.9 8.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="arrawsalt" unicode="" d="M855 735.9l-189.2-23.5c-6.6-0.8-9.3-8.8-4.7-13.5l54.7-54.7-153.5-153.5c-3.1-3.1-3.1-8.2 0-11.3l45.1-45.1c3.1-3.1 8.2-3.1 11.3 0l153.6 153.6 54.7-54.7c4.7-4.7 12.7-1.9 13.5 4.7L863.9 727c0.7 5.2-3.7 9.6-8.9 8.9zM416.6 333.7c-3.1 3.1-8.2 3.1-11.3 0L251.8 180.1l-54.7 54.7c-4.7 4.7-12.7 1.9-13.5-4.7L160.1 41c-0.6-5.2 3.7-9.5 8.9-8.9l189.2 23.5c6.6 0.8 9.3 8.8 4.7 13.5l-54.7 54.7 153.6 153.6c3.1 3.1 3.1 8.2 0 11.3l-45.2 45z" horiz-adv-x="1024" /> + + + <glyph glyph-name="verticalright" unicode="" d="M326 732h-64c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V724c0 4.4-3.6 8-8 8zM770 659.6V732c0 6.8-7.9 10.5-13.1 6.1L335 384l421.9-354.1c5.2-4.4 13.1-0.7 13.1 6.1v72.4c0 9.4-4.2 18.4-11.4 24.5L459.4 384l299.2 251.1c7.2 6.1 11.4 15.1 11.4 24.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="verticalleft" unicode="" d="M762 732h-64c-4.4 0-8-3.6-8-8v-688c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V724c0 4.4-3.6 8-8 8zM254 732v-72.4c0-9.5 4.2-18.4 11.4-24.5L564.6 384 265.4 132.9c-7.2-6.1-11.4-15-11.4-24.5V36c0-6.8 7.9-10.5 13.1-6.1L689 384 267.1 738.1c-5.2 4.4-13.1 0.7-13.1-6.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right" unicode="" d="M765.7 409.2L314.9 761.3c-5.3 4.1-12.9 0.4-12.9-6.3v-77.3c0-4.9 2.3-9.6 6.1-12.6l360-281.1-360-281.1c-3.9-3-6.1-7.7-6.1-12.6V13c0-6.7 7.7-10.4 12.9-6.3l450.8 352.1c16.4 12.8 16.4 37.6 0 50.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left" unicode="" d="M724 677.7V755c0 6.7-7.7 10.4-12.9 6.3L260.3 409.2c-16.4-12.8-16.4-37.5 0-50.3l450.8-352.1c5.3-4.1 12.9-0.4 12.9 6.3v77.3c0 4.9-2.3 9.6-6.1 12.6l-360 281 360 281.1c3.8 3 6.1 7.7 6.1 12.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up" unicode="" d="M890.5 140.7L537.9 626.8c-12.8 17.6-39 17.6-51.7 0L133.5 140.7c-3.8-5.3-0.1-12.7 6.5-12.7h75c5.1 0 9.9 2.5 12.9 6.6L512 526.2l284.1-391.6c3-4.1 7.8-6.6 12.9-6.6h75c6.5 0 10.3 7.4 6.5 12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down" unicode="" d="M884 640h-75c-5.1 0-9.9-2.5-12.9-6.6L512 241.8 227.9 633.4c-3 4.1-7.8 6.6-12.9 6.6h-75c-6.5 0-10.3-7.4-6.5-12.7l352.6-486.1c12.8-17.6 39-17.6 51.7 0l352.6 486.1c3.9 5.3 0.1 12.7-6.4 12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fullscreen" unicode="" d="M290 659.6l43.9 43.9c4.7 4.7 1.9 12.8-4.7 13.6L169 736c-5.1 0.6-9.5-3.7-8.9-8.9L179 566.9c0.8-6.6 8.9-9.4 13.6-4.7l43.7 43.7L370 472.3c3.1-3.1 8.2-3.1 11.3 0l42.4 42.3c3.1 3.1 3.1 8.2 0 11.3L290 659.6zM642.7 472.3c3.1-3.1 8.2-3.1 11.3 0l133.7 133.6 43.7-43.7c4.7-4.7 12.8-1.9 13.6 4.7L863.9 727c0.6 5.1-3.7 9.5-8.9 8.9L694.8 717c-6.6-0.8-9.4-8.9-4.7-13.6l43.9-43.9L600.3 526c-3.1-3.1-3.1-8.2 0-11.3l42.4-42.4zM845 201.1c-0.8 6.6-8.9 9.4-13.6 4.7l-43.7-43.7L654 295.7c-3.1 3.1-8.2 3.1-11.3 0l-42.4-42.3c-3.1-3.1-3.1-8.2 0-11.3L734 108.4l-43.9-43.9c-4.7-4.7-1.9-12.8 4.7-13.6L855 32c5.1-0.6 9.5 3.7 8.9 8.9L845 201.1zM381.3 295.7c-3.1 3.1-8.2 3.1-11.3 0L236.3 162.1l-43.7 43.7c-4.7 4.7-12.8 1.9-13.6-4.7L160.1 41c-0.6-5.1 3.7-9.5 8.9-8.9L329.2 51c6.6 0.8 9.4 8.9 4.7 13.6L290 108.4 423.7 242c3.1 3.1 3.1 8.2 0 11.3l-42.4 42.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fullscreen-exit" unicode="" d="M391 655.1c-0.8 6.6-8.9 9.4-13.6 4.7l-43.7-43.7L200 749.7c-3.1 3.1-8.2 3.1-11.3 0l-42.4-42.3c-3.1-3.1-3.1-8.2 0-11.3L280 562.4l-43.9-43.9c-4.7-4.7-1.9-12.8 4.7-13.6L401 486c5.1-0.6 9.5 3.7 8.9 8.9L391 655.1zM401.1 281.9L240.8 263c-6.6-0.8-9.4-8.9-4.7-13.6l43.9-43.9L146.3 72c-3.1-3.1-3.1-8.2 0-11.3l42.4-42.3c3.1-3.1 8.2-3.1 11.3 0L333.7 152l43.7-43.7c4.7-4.7 12.8-1.9 13.6 4.7l18.9 160.1c0.6 5.1-3.7 9.4-8.8 8.8zM622.9 486.1L783.2 505c6.6 0.8 9.4 8.9 4.7 13.6L744 562.4 877.7 696c3.1 3.1 3.1 8.2 0 11.3l-42.4 42.3c-3.1 3.1-8.2 3.1-11.3 0L690.3 616.1l-43.7 43.7c-4.7 4.7-12.8 1.9-13.6-4.7L614.1 495c-0.6-5.2 3.7-9.5 8.8-8.9zM744 205.6l43.9 43.9c4.7 4.7 1.9 12.8-4.7 13.6L623 282c-5.1 0.6-9.5-3.7-8.9-8.9L633 112.9c0.8-6.6 8.9-9.4 13.6-4.7l43.7 43.7L824 18.3c3.1-3.1 8.2-3.1 11.3 0l42.4 42.3c3.1 3.1 3.1 8.2 0 11.3L744 205.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="doubleleft" unicode="" d="M272.9 384l265.4 339.1c4.1 5.2 0.4 12.9-6.3 12.9h-77.3c-4.9 0-9.6-2.3-12.6-6.1L186.8 403.7c-9.1-11.6-9.1-27.9 0-39.5l255.3-326.1c3-3.9 7.7-6.1 12.6-6.1H532c6.7 0 10.4 7.7 6.3 12.9L272.9 384zM576.9 384l265.4 339.1c4.1 5.2 0.4 12.9-6.3 12.9h-77.3c-4.9 0-9.6-2.3-12.6-6.1L490.8 403.7c-9.1-11.6-9.1-27.9 0-39.5l255.3-326.1c3-3.9 7.7-6.1 12.6-6.1H836c6.7 0 10.4 7.7 6.3 12.9L576.9 384z" horiz-adv-x="1024" /> + + + <glyph glyph-name="doubleright" unicode="" d="M533.2 403.7L277.9 729.9c-3 3.9-7.7 6.1-12.6 6.1H188c-6.7 0-10.4-7.7-6.3-12.9L447.1 384 181.7 44.9c-4.1-5.2-0.4-12.9 6.3-12.9h77.3c4.9 0 9.6 2.3 12.6 6.1l255.3 326.1c9.1 11.7 9.1 27.9 0 39.5zM837.2 403.7L581.9 729.9c-3 3.9-7.7 6.1-12.6 6.1H492c-6.7 0-10.4-7.7-6.3-12.9L751.1 384 485.7 44.9c-4.1-5.2-0.4-12.9 6.3-12.9h77.3c4.9 0 9.6 2.3 12.6 6.1l255.3 326.1c9.1 11.7 9.1 27.9 0 39.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="arrowright" unicode="" d="M869 408.2L491.2 736.1c-2.9 2.5-6.6 3.9-10.5 3.9h-88.5c-7.4 0-10.8-9.2-5.2-14l350.2-304H152c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h585.1L386.9 42c-5.6-4.9-2.2-14 5.2-14h91.5c1.9 0 3.8 0.7 5.2 2L869 359.8c14.7 12.8 14.7 35.6 0 48.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="arrowup" unicode="" d="M868 350.5L536.1 733c-12.7 14.7-35.5 14.7-48.3 0L156 350.5c-4.5-5.2-0.8-13.2 6-13.2h81c4.6 0 9 2 12.1 5.5L474 595.1V32c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V595.1l218.9-252.3c3-3.5 7.4-5.5 12.1-5.5h81c6.8 0 10.5 8 6 13.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="arrowleft" unicode="" d="M872 422H286.9l350.2 304c5.6 4.9 2.2 14-5.2 14h-88.5c-3.9 0-7.6-1.4-10.5-3.9L155 408.2c-14.7-12.8-14.7-35.6 0-48.3L535.1 30c1.5-1.3 3.3-2 5.2-2h91.5c7.4 0 10.8 9.2 5.2 14L286.9 346H872c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="arrowdown" unicode="" d="M862 430.7h-81c-4.6 0-9-2-12.1-5.5L550 172.9V736c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-563.1L255.1 425.2c-3 3.5-7.4 5.5-12.1 5.5h-81c-6.8 0-10.5-8.1-6-13.2L487.9 35c12.7-14.7 35.5-14.7 48.3 0L868 417.5c4.5 5.2 0.8 13.2-6 13.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="upload" unicode="" d="M400 578.3h73.9V240c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V578.3H624c6.7 0 10.4 7.7 6.3 12.9L518.3 733c-3.2 4.1-9.4 4.1-12.6 0l-112-141.7c-4.1-5.3-0.4-13 6.3-13zM878 270h-60c-4.4 0-8-3.6-8-8v-154H214V262c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-198c0-17.7 14.3-32 32-32h684c17.7 0 32 14.3 32 32V262c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="colum-height" unicode="" d="M840 60H184c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h656c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8zM840 784H184c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h656c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8zM610.8 518c6 0 9.4 7 5.7 11.7L515.7 657.3c-2.9 3.7-8.5 3.7-11.3 0L403.6 529.7c-3.7-4.7-0.4-11.7 5.7-11.7H476v-268h-62.8c-6 0-9.4-7-5.7-11.7l100.8-127.5c2.9-3.7 8.5-3.7 11.3 0l100.8 127.5c3.7 4.7 0.4 11.7-5.7 11.7H548V518h62.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="vertical-align-botto" unicode="" d="M859.9 116H164.1c-4.5 0-8.1-3.6-8.1-8v-60c0-4.4 3.6-8 8.1-8h695.8c4.5 0 8.1 3.6 8.1 8v60c0 4.4-3.6 8-8.1 8zM505.7 227c3.2-4.1 9.4-4.1 12.6 0l112 141.7c4.1 5.2 0.4 12.9-6.3 12.9h-74.1V720c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-338.3H400c-6.7 0-10.4-7.7-6.3-12.9l112-141.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="vertical-align-middl" unicode="" d="M859.9 422H164.1c-4.5 0-8.1-3.6-8.1-8v-60c0-4.4 3.6-8 8.1-8h695.8c4.5 0 8.1 3.6 8.1 8v60c0 4.4-3.6 8-8.1 8zM506.3 496.7c2.9-3.7 8.5-3.7 11.3 0l100.8 127.5c3.7 4.7 0.4 11.7-5.7 11.7H550V792c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-156h-62.8c-6 0-9.4-7-5.7-11.7l100.8-127.6zM517.7 271.3c-2.9 3.7-8.5 3.7-11.3 0L405.6 143.7c-3.7-4.7-0.4-11.7 5.7-11.7H474v-156c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V132h62.8c6 0 9.4 7 5.7 11.7L517.7 271.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="totop" unicode="" d="M885 116H165c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8zM400 570.3h73.9V232c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V570.3H624c6.7 0 10.4 7.7 6.3 12.9L518.3 725c-3.2 4.1-9.4 4.1-12.6 0l-112-141.7c-4.1-5.3-0.4-13 6.3-13z" horiz-adv-x="1024" /> + + + <glyph glyph-name="vertical-align-top" unicode="" d="M859.9 728H164.1c-4.5 0-8.1-3.6-8.1-8v-60c0-4.4 3.6-8 8.1-8h695.8c4.5 0 8.1 3.6 8.1 8v60c0 4.4-3.6 8-8.1 8zM518.3 541c-3.2 4.1-9.4 4.1-12.6 0l-112-141.7c-4.1-5.2-0.4-12.9 6.3-12.9h73.9V48c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V386.3H624c6.7 0 10.4 7.7 6.3 12.9L518.3 541z" horiz-adv-x="1024" /> + + + <glyph glyph-name="download" unicode="" d="M505.7 235c3.2-4.1 9.4-4.1 12.6 0l112 141.7c4.1 5.2 0.4 12.9-6.3 12.9h-74.1V728c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-338.3H400c-6.7 0-10.4-7.7-6.3-12.9l112-141.8zM878 270h-60c-4.4 0-8-3.6-8-8v-154H214V262c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-198c0-17.7 14.3-32 32-32h684c17.7 0 32 14.3 32 32V262c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sort-descending" unicode="" d="M839.6 462.2L749 745.5c-1.2 3.9-4.8 6.5-8.9 6.5h-77.4c-4.1 0-7.6-2.6-8.9-6.5l-91.3-283.3c-0.3-0.9-0.5-1.9-0.5-2.9 0-5.1 4.2-9.3 9.3-9.3h56.4c4.2 0 7.8 2.8 9 6.8l17.5 61.6h89l17.3-61.5c1.1-4 4.8-6.8 9-6.8h61.2c1 0 1.9 0.1 2.8 0.4 2.4 0.8 4.3 2.4 5.5 4.6 1.1 2.2 1.3 4.7 0.6 7.1zM663.3 570.5l32.8 116.9h6.3l32.1-116.9h-71.2zM806.8 77.6H677.2v0.4l132.6 188.9c1.1 1.6 1.7 3.4 1.7 5.4v36.4c0 5.1-4.2 9.3-9.3 9.3h-204c-5.1 0-9.3-4.2-9.3-9.3v-43c0-5.1 4.2-9.3 9.3-9.3h122.6v-0.4L587.7 67.1c-1.1-1.6-1.7-3.4-1.7-5.4v-36.4c0-5.1 4.2-9.3 9.3-9.3h211.4c5.1 0 9.3 4.2 9.3 9.3v43c0.1 5.1-4.1 9.3-9.2 9.3zM310.3 728.9c-3.2 4.1-9.4 4.1-12.6 0L185.7 587c-4.2-5.3-0.4-13 6.3-13h76v-530c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V574h76c6.7 0 10.5 7.8 6.3 13l-112 141.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sort-ascending" unicode="" d="M839.6 462.2L749 745.5c-1.2 3.9-4.8 6.5-8.9 6.5h-77.4c-4.1 0-7.6-2.6-8.9-6.5l-91.3-283.3c-0.3-0.9-0.5-1.9-0.5-2.9 0-5.1 4.2-9.3 9.3-9.3h56.4c4.2 0 7.8 2.8 9 6.8l17.5 61.6h89l17.3-61.5c1.1-4 4.8-6.8 9-6.8h61.2c1 0 1.9 0.1 2.8 0.4 2.4 0.8 4.3 2.4 5.5 4.6 1.1 2.2 1.3 4.7 0.6 7.1zM663.3 570.5l32.8 116.9h6.3l32.1-116.9h-71.2zM806.8 77.6H677.2v0.4l132.6 188.9c1.1 1.6 1.7 3.4 1.7 5.4v36.4c0 5.1-4.2 9.3-9.3 9.3h-204c-5.1 0-9.3-4.2-9.3-9.3v-43c0-5.1 4.2-9.3 9.3-9.3h122.6v-0.4L587.7 67.1c-1.1-1.6-1.7-3.4-1.7-5.4v-36.4c0-5.1 4.2-9.3 9.3-9.3h211.4c5.1 0 9.3 4.2 9.3 9.3v43c0.1 5.1-4.1 9.3-9.2 9.3zM416 194h-76V724c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-530h-76c-6.7 0-10.5-7.8-6.3-13l112-141.9c3.2-4.1 9.4-4.1 12.6 0l112 141.9c4.1 5.2 0.4 13-6.3 13z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fall" unicode="" d="M925.9 92l-24 199.2c-0.8 6.6-8.9 9.4-13.6 4.7L829 236.5 557.7 507.7c-6.3 6.2-16.4 6.2-22.6 0L433.3 406 156.6 682.7c-3.1 3.1-8.2 3.1-11.3 0l-45-45.2c-3.1-3.1-3.1-8.2 0-11.3L422 304.3c6.2-6.3 16.4-6.3 22.6 0L546.4 406l226.1-226-59.3-59.3c-4.7-4.7-1.9-12.8 4.7-13.6l199.2-24c5.1-0.7 9.5 3.7 8.8 8.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="swap" unicode="" d="M847.9 304H152c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h605.2L612.9 45c-4.1-5.2-0.4-13 6.3-13h72.5c4.9 0 9.5 2.2 12.6 6.1l168.8 214.1c16.5 21 1.6 51.8-25.2 51.8zM872 540H266.8l144.3 183c4.1 5.2 0.4 13-6.3 13h-72.5c-4.9 0-9.5-2.2-12.6-6.1L150.9 515.8c-16.5-21-1.6-51.8 25.1-51.8h696c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="stock" unicode="" d="M904 149H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM165.7 274.2l39.7-39.5c3.1-3.1 8.2-3.1 11.3 0l234.7 233.9 97.6-97.3c12.5-12.4 32.7-12.4 45.2 0l264.2 263.2c3.1 3.1 3.1 8.2 0 11.3l-39.7 39.6c-3.1 3.1-8.2 3.1-11.3 0l-235.7-235-97.7 97.3c-12.5 12.4-32.7 12.4-45.2 0L165.7 285.5c-3.1-3.1-3.2-8.2 0-11.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rise" unicode="" d="M917 684.9l-199.2-24c-6.6-0.8-9.4-8.9-4.7-13.6l59.3-59.3-226-226-101.8 101.7c-6.3 6.3-16.4 6.2-22.6 0L100.3 141.9c-3.1-3.1-3.1-8.2 0-11.3l45-45.2c3.1-3.1 8.2-3.1 11.3 0L433.3 362 535 260.3c6.3-6.2 16.4-6.2 22.6 0L829 531.5l59.3-59.3c4.7-4.7 12.8-1.9 13.6 4.7l24 199.2c0.7 5.1-3.7 9.5-8.9 8.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="indent" unicode="" d="M408 454h480c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H408c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM400 250c0-4.4 3.6-8 8-8h480c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H408c-4.4 0-8-3.6-8-8v-56zM904 736H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 104H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM142.4 253.9L298.7 377c4.5 3.5 4.5 10.3 0 13.9L142.4 514.1c-5.8 4.6-14.4 0.5-14.4-6.9v-246.3c0-7.4 8.5-11.6 14.4-7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="outdent" unicode="" d="M408 454h480c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H408c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM400 250c0-4.4 3.6-8 8-8h480c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H408c-4.4 0-8-3.6-8-8v-56zM904 736H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 104H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM115.4 377.1L271.7 254c5.8-4.6 14.4-0.5 14.4 6.9V507.1c0 7.4-8.5 11.5-14.4 6.9L115.4 390.9c-4.5-3.5-4.5-10.3 0-13.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="menu" unicode="" d="M904 736H120c-4.4 0-8-3.6-8-8v-64c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v64c0 4.4-3.6 8-8 8zM904 112H120c-4.4 0-8-3.6-8-8v-64c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v64c0 4.4-3.6 8-8 8zM904 424H120c-4.4 0-8-3.6-8-8v-64c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v64c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unorderedlist" unicode="" d="M912 704H328c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM912 420H328c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM912 136H328c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM160 668m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0ZM160 384m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0ZM160 100m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="orderedlist" unicode="" d="M920 136H336c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM920 704H336c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM920 420H336c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h584c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM216 184H100c-2.2 0-4-1.8-4-4v-34c0-2.2 1.8-4 4-4h72.4v-20.5h-35.7c-2.2 0-4-1.8-4-4v-34c0-2.2 1.8-4 4-4h35.7V58H100c-2.2 0-4-1.8-4-4v-34c0-2.2 1.8-4 4-4h116c2.2 0 4 1.8 4 4V180c0 2.2-1.8 4-4 4zM100 708h38v-120c0-2.2 1.8-4 4-4h40c2.2 0 4 1.8 4 4V744c0 4.4-3.6 8-8 8h-78c-2.2 0-4-1.8-4-4v-36c0-2.2 1.8-4 4-4zM216 468H100c-2.2 0-4-1.8-4-4v-36c0-2.2 1.8-4 4-4h68.4l-70.3-77.7c-1.3-1.5-2.1-3.4-2.1-5.4V304c0-2.2 1.8-4 4-4h116c2.2 0 4 1.8 4 4v36c0 2.2-1.8 4-4 4h-68.4l70.3 77.7c1.3 1.5 2.1 3.4 2.1 5.4V464c0 2.2-1.8 4-4 4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-right" unicode="" d="M904 738H408c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h496c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 314H408c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h496c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 102H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 526H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-center" unicode="" d="M264 666h496c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM760 242c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H264c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h496zM904 102H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 526H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-left" unicode="" d="M120 666h496c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM120 242h496c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8zM904 102H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM904 526H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pic-center" unicode="" d="M952 104H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM952 736H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM848 236c8.8 0 16 7.2 16 16V516c0 8.8-7.2 16-16 16H176c-8.8 0-16-7.2-16-16v-264c0-8.8 7.2-16 16-16h672zM232 460h560v-152H232V460z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pic-right" unicode="" d="M952 104H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM952 736H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM928 236c8.8 0 16 7.2 16 16V516c0 8.8-7.2 16-16 16H416c-8.8 0-16-7.2-16-16v-264c0-8.8 7.2-16 16-16h512zM472 460h400v-152H472V460zM80 250c0-4.4 3.6-8 8-8h224c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8v-56zM88 454h224c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H88c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pic-left" unicode="" d="M952 104H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM952 736H72c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h880c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8zM608 236c8.8 0 16 7.2 16 16V516c0 8.8-7.2 16-16 16H96c-8.8 0-16-7.2-16-16v-264c0-8.8 7.2-16 16-16h512zM152 460h400v-152H152V460zM704 250c0-4.4 3.6-8 8-8h224c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H712c-4.4 0-8-3.6-8-8v-56zM712 454h224c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H712c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bold" unicode="" d="M697.8 414.6c33.6 35 54.2 82.3 54.2 134.3v10.2C752 666.7 663.9 754 555.3 754H259.4c-15.1 0-27.4-12.3-27.4-27.4v-679.1c0-16.3 13.2-29.5 29.5-29.5h318.7c117 0 211.8 94.2 211.8 210.5v11c0 73-37.4 137.3-94.2 175.1zM328 658h224.7c57.1 0 103.3-44.4 103.3-99.3v-9.5c0-54.8-46.3-99.3-103.3-99.3H328V658z m366.6-429.4c0-62.9-51.7-113.9-115.5-113.9H328V353.3h251.1c63.8 0 115.5-51 115.5-113.9v-10.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="font-colors" unicode="" d="M904 80H120c-4.4 0-8-3.6-8-8v-80c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8zM253.7 160h85c4.2 0 8 2.7 9.3 6.8l53.7 166h219.2l53.2-166c1.3-4 5-6.8 9.3-6.8h89.1c1.1 0 2.2 0.2 3.2 0.5 5.1 1.8 7.8 7.3 6 12.4L573.6 777.4c-1.4 3.9-5.1 6.6-9.2 6.6H462.1c-4.2 0-7.9-2.6-9.2-6.6L244.5 172.9c-0.4-1-0.5-2.1-0.5-3.2-0.1-5.3 4.3-9.7 9.7-9.7z m255.9 516.1h4.1l83.8-263.8H424.9l84.7 263.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="exclaimination" unicode="" d="M512 92m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM480 260h64c4.4 0 8 3.6 8 8V732c0 4.4-3.6 8-8 8h-64c-4.4 0-8-3.6-8-8v-464c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="font-size" unicode="" d="M920 480H616c-4.4 0-8-3.6-8-8v-112c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8v56h60v-320h-46c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8h164c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-46V416h60v-56c0-4.4 3.6-8 8-8h48c4.4 0 8 3.6 8 8V472c0 4.4-3.6 8-8 8zM656 600V728c0 4.4-3.6 8-8 8H104c-4.4 0-8-3.6-8-8v-128c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v64h168v-560h-92c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h264c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-92V664h168v-64c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="infomation" unicode="" d="M512 672m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM544 504h-64c-4.4 0-8-3.6-8-8v-464c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V496c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="line-height" unicode="" d="M648 736H104c-4.4 0-8-3.6-8-8v-128c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v64h168v-560h-92c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h264c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-92V664h168v-64c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V728c0 4.4-3.6 8-8 8zM920.8 190H856V578h64.8c6 0 9.4 7 5.7 11.7L825.7 717.3c-2.9 3.7-8.5 3.7-11.3 0L713.6 589.7c-3.7-4.7-0.4-11.7 5.7-11.7H784v-388h-64.8c-6 0-9.4-7-5.7-11.7l100.8-127.5c2.9-3.7 8.5-3.7 11.3 0l100.8 127.5c3.8 4.7 0.4 11.7-5.6 11.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="strikethrough" unicode="" d="M952 422H569.9c-10 2-20.5 4-31.6 6-15.9 2.9-22.2 4.1-30.8 5.8-51.3 10-82.2 20-106.8 34.2-35.1 20.5-52.2 48.3-52.2 85.1 0 37 15.2 67.7 44 89 28.4 21 68.8 32.1 116.8 32.1 54.8 0 97.1-14.4 125.8-42.8 14.6-14.4 25.3-32.1 31.8-52.6 1.3-4.1 2.8-10 4.3-17.8 0.9-4.8 5.2-8.2 9.9-8.2h72.8c5.6 0 10.1 4.6 10.1 10.1v1c-0.7 6.8-1.3 12.1-2 16-7.3 43.5-28 81.7-59.7 110.3-44.4 40.5-109.7 61.8-188.7 61.8-72.3 0-137.4-18.1-183.3-50.9-25.6-18.4-45.4-41.2-58.6-67.7-13.5-27.1-20.3-58.4-20.3-92.9 0-29.5 5.7-54.5 17.3-76.5 8.3-15.7 19.6-29.5 34.1-42H72c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h433.2c2.1-0.4 3.9-0.8 5.9-1.2 30.9-6.2 49.5-10.4 66.6-15.2 23-6.5 40.6-13.3 55.2-21.5 35.8-20.2 53.3-49.2 53.3-89 0-35.3-15.5-66.8-43.6-88.8-30.5-23.9-75.6-36.4-130.5-36.4-43.7 0-80.7 8.5-110.2 25-29.1 16.3-49.1 39.8-59.7 69.5-0.8 2.2-1.7 5.2-2.7 9-1.2 4.4-5.3 7.5-9.7 7.5h-79.7c-5.6 0-10.1-4.6-10.1-10.1v-1c0.2-2.3 0.4-4.2 0.6-5.7 6.5-48.8 30.3-88.8 70.7-118.8 47.1-34.8 113.4-53.2 191.8-53.2 84.2 0 154.8 19.8 204.2 57.3 25 18.9 44.2 42.2 57.1 69 13 27.1 19.7 57.9 19.7 91.5 0 31.8-5.8 58.4-17.8 81.4-5.8 11.2-13.1 21.5-21.8 30.8H952c4.4 0 8 3.6 8 8v60c0 4.3-3.6 7.9-8 7.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="underline" unicode="" d="M824 92H200c-4.4 0-8-3.4-8-7.6v-60.8c0-4.2 3.6-7.6 8-7.6h624c4.4 0 8 3.4 8 7.6v60.8c0 4.2-3.6 7.6-8 7.6zM512 168c69.4 0 134.6 27.1 183.8 76.2C745 293.3 772 358.6 772 428V740c0 6.6-5.4 12-12 12h-60c-6.6 0-12-5.4-12-12v-312c0-97-79-176-176-176s-176 79-176 176V740c0 6.6-5.4 12-12 12h-60c-6.6 0-12-5.4-12-12v-312c0-69.4 27.1-134.6 76.2-183.8C377.3 195 442.6 168 512 168z" horiz-adv-x="1024" /> + + + <glyph glyph-name="number" unicode="" d="M872 502c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8H708V744c0 4.4-3.6 8-8 8h-64c-4.4 0-8-3.6-8-8v-166H400V744c0 4.4-3.6 8-8 8h-64c-4.4 0-8-3.6-8-8v-166H152c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h168v-236H152c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h168v-166c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V190h228v-166c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V190h164c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8H708V502h164zM628 266H400V502h228v-236z" horiz-adv-x="1024" /> + + + <glyph glyph-name="italic" unicode="" d="M798 736H366c-4.4 0-8-3.6-8-8v-64c0-4.4 3.6-8 8-8h181.2l-156-544H229c-4.4 0-8-3.6-8-8v-64c0-4.4 3.6-8 8-8h432c4.4 0 8 3.6 8 8v64c0 4.4-3.6 8-8 8H474.4l156 544H798c4.4 0 8 3.6 8 8v64c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="code" unicode="" d="M438.4 46.9l222.7 646.7c0.2 0.5 0.3 1.1 0.4 1.6L438.4 46.9zM661.2 727.3h-67.5c-3.4 0-6.5-2.2-7.6-5.4L354.7 50c-0.3-0.8-0.4-1.7-0.4-2.6 0-4.4 3.6-8 8-8h67.8c3.4 0 6.5 2.2 7.6 5.4l0.7 2.1 223.1 648.3 7.4 21.4c0.3 0.8 0.4 1.7 0.4 2.6-0.1 4.5-3.6 8.1-8.1 8.1zM954.6 393.9c-0.8 1-1.7 1.9-2.7 2.7l-219 171.3c-3.5 2.7-8.5 2.1-11.2-1.4-1.1-1.4-1.7-3.1-1.7-4.9v-81.3c0-2.5 1.1-4.8 3.1-6.3l115-90-115-90c-1.9-1.5-3.1-3.8-3.1-6.3v-81.3c0-4.4 3.6-8 8-8 1.8 0 3.5 0.6 4.9 1.7l219 171.3c6.9 5.4 8.2 15.5 2.7 22.5zM291.1 567.9l-219-171.3c-1-0.8-1.9-1.7-2.7-2.7-5.4-7-4.2-17 2.7-22.5l219-171.3c1.4-1.1 3.1-1.7 4.9-1.7 4.4 0 8 3.6 8 8v81.3c0 2.5-1.1 4.8-3.1 6.3l-115 90 115 90c1.9 1.5 3.1 3.8 3.1 6.3v81.3c0 1.8-0.6 3.5-1.7 4.9-2.7 3.5-7.7 4.1-11.2 1.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="column-width" unicode="" d="M180 720h-60c-4.4 0-8-3.6-8-8v-656c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V712c0 4.4-3.6 8-8 8zM904 720h-60c-4.4 0-8-3.6-8-8v-656c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V712c0 4.4-3.6 8-8 8zM785.3 391.7L657.7 492.4c-4.7 3.7-11.7 0.4-11.7-5.7V420H378v62.8c0 6-7 9.4-11.7 5.7L238.7 387.7c-3.7-2.9-3.7-8.5 0-11.3l127.5-100.8c4.7-3.7 11.7-0.4 11.7 5.7V348h268v-62.8c0-6 7-9.4 11.7-5.7l127.5 100.8c3.8 2.9 3.8 8.5 0.2 11.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="check" unicode="" d="M912 706h-69.9c-9.8 0-19.1-4.5-25.1-12.2L404.7 171.5 207 422c-6.1 7.7-15.3 12.2-25.1 12.2H112c-6.7 0-10.4-7.7-6.3-12.9l273.9-347c12.8-16.2 37.4-16.2 50.3 0l488.4 618.9c4.1 5.1 0.4 12.8-6.3 12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="ellipsis" unicode="" d="M232 385m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0ZM512 385m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0ZM792 385m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dash" unicode="" d="M112 420h160v-72H112zM432 420h160v-72H432zM752 420h160v-72H752z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close" unicode="" d="M563.8 384l262.5 312.9c4.4 5.2 0.7 13.1-6.1 13.1h-79.8c-4.7 0-9.2-2.1-12.3-5.7L511.6 446.2 295.1 704.3c-3 3.6-7.5 5.7-12.3 5.7H203c-6.8 0-10.5-7.9-6.1-13.1L459.4 384 196.9 71.1c-4.4-5.2-0.7-13.1 6.1-13.1h79.8c4.7 0 9.2 2.1 12.3 5.7l216.5 258.1 216.5-258.1c3-3.6 7.5-5.7 12.3-5.7h79.8c6.8 0 10.5 7.9 6.1 13.1L563.8 384z" horiz-adv-x="1024" /> + + + <glyph glyph-name="enter" unicode="" d="M864 726h-60c-4.4 0-8-3.6-8-8v-518H310v73c0 6.7-7.8 10.5-13 6.3l-141.9-112c-4.1-3.2-4.1-9.4 0-12.6l141.9-112c5.3-4.2 13-0.4 13 6.3v75h498c35.3 0 64 28.7 64 64V718c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="line" unicode="" d="M904 420H120c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="minus" unicode="" d="M872 422H152c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="question" unicode="" d="M764 615.1c-14 30.6-33.9 58.1-59.3 81.6C653.1 744.6 584.6 771 512 771s-141.1-26.4-192.7-74.2c-25.4-23.6-45.3-51-59.3-81.7-14.6-32-22-65.9-22-100.9v-27c0-6.2 5-11.2 11.2-11.2h54c6.2 0 11.2 5 11.2 11.2v27c0 99.5 88.6 180.4 197.6 180.4s197.6-80.9 197.6-180.4c0-40.8-14.5-79.2-42-111.2-27.2-31.7-65.6-54.4-108.1-64-24.3-5.5-46.2-19.2-61.7-38.8-15.4-19.4-23.9-43.8-23.9-68.6v-31.4c0-6.2 5-11.2 11.2-11.2h54c6.2 0 11.2 5 11.2 11.2v31.4c0 15.7 10.9 29.5 26 32.9 58.4 13.2 111.4 44.7 149.3 88.7 19.1 22.3 34 47.1 44.3 74 10.7 27.9 16.1 57.2 16.1 87 0 35-7.4 69-22 100.9zM512 109c-30.9 0-56-25.1-56-56s25.1-56 56-56 56 25.1 56 56-25.1 56-56 56z" horiz-adv-x="1024" /> + + + <glyph glyph-name="plus" unicode="" d="M848 422H550V744h-76v-322H176c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h298v-322h76V346h298c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rollback" unicode="" d="M793 654H366v74c0 6.7-7.7 10.4-12.9 6.3l-142-112c-4.1-3.2-4.1-9.4 0-12.6l142-112c5.2-4.1 12.9-0.4 12.9 6.3v74h415v-470H175c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h618c35.3 0 64 28.7 64 64V590c0 35.3-28.7 64-64 64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="small-dash" unicode="" d="M112 420h72v-72h-72zM294 420h72v-72h-72zM658 420h72v-72h-72zM840 420h72v-72h-72zM476 420h72v-72h-72z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pause" unicode="" d="M304 720h80v-672h-80zM712 720h-64c-4.4 0-8-3.6-8-8v-656c0-4.4 3.6-8 8-8h64c4.4 0 8 3.6 8 8V712c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bg-colors" unicode="" d="M766.4 151.7c43.7 0 79.4 36.2 79.4 80.5 0 53.5-79.4 140.8-79.4 140.8S687 285.7 687 232.2c0-44.3 35.7-80.5 79.4-80.5zM389.3 195.8c7.1-7.1 18.6-7.1 25.6 0l256.1 256c7.1 7.1 7.1 18.6 0 25.6l-256 256c-0.6 0.6-1.3 1.2-2 1.7l-78.2 78.2c-3.5 3.5-9.3 3.5-12.8 0l-48-48c-3.5-3.5-3.5-9.3 0-12.8l67.2-67.2-207.8-207.9c-7.1-7.1-7.1-18.6 0-25.6l255.9-256z m12.9 448.6l178.9-178.9H223.4l178.8 178.9zM904 80H120c-4.4 0-8-3.6-8-8v-80c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v80c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="crown" unicode="" d="M899.6 619.5L705 499.6 518.4 748.5c-3.2 4.3-9.6 4.3-12.9 0L319 499.6 124.3 619.5c-5.7 3.5-13.1-1.2-12.2-7.9L188.5 31c1.1-7.9 7.9-14 16-14h615.1c8 0 14.9 6 15.9 14l76.4 580.6c0.8 6.7-6.5 11.4-12.3 7.9z m-126-534.1H250.3l-53.8 409.4 139.8-86.1L512 643.1l175.7-234.4 139.8 86.1-53.9-409.4zM512 387c-62.1 0-112.6-50.5-112.6-112.6S449.9 161.8 512 161.8s112.6 50.5 112.6 112.6S574.1 387 512 387z m0-160.9c-26.6 0-48.2 21.6-48.2 48.3 0 26.6 21.6 48.3 48.2 48.3s48.2-21.6 48.2-48.3c0-26.6-21.6-48.3-48.2-48.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="drag" unicode="" d="M909.3 389.7L781.7 490.4c-4.7 3.7-11.7 0.4-11.7-5.7V420H548V642h64.8c6 0 9.4 7 5.7 11.7L517.7 781.3c-2.9 3.7-8.5 3.7-11.3 0L405.6 653.7c-3.7-4.7-0.4-11.7 5.7-11.7H476v-222H254v64.8c0 6-7 9.4-11.7 5.7L114.7 389.7c-3.7-2.9-3.7-8.5 0-11.3l127.5-100.8c4.7-3.7 11.7-0.4 11.7 5.7V348h222v-222h-64.8c-6 0-9.4-7-5.7-11.7l100.8-127.5c2.9-3.7 8.5-3.7 11.3 0l100.8 127.5c3.7 4.7 0.4 11.7-5.7 11.7H548V348h222v-64.8c0-6 7-9.4 11.7-5.7l127.5 100.8c3.7 2.9 3.7 8.5 0.1 11.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="desktop" unicode="" d="M928 756H96c-17.7 0-32-14.3-32-32v-496c0-17.7 14.3-32 32-32h380v-112H304c-8.8 0-16-7.2-16-16v-48c0-4.4 3.6-8 8-8h432c4.4 0 8 3.6 8 8v48c0 8.8-7.2 16-16 16H548V196h380c17.7 0 32 14.3 32 32V724c0 17.7-14.3 32-32 32z m-40-488H136V684h752v-416z" horiz-adv-x="1024" /> + + + <glyph glyph-name="gift" unicode="" d="M880 586H732.4c13.6 21.4 21.6 46.8 21.6 74 0 76.1-61.9 138-138 138-41.4 0-78.7-18.4-104-47.4-25.3 29-62.6 47.4-104 47.4-76.1 0-138-61.9-138-138 0-27.2 7.9-52.6 21.6-74H144c-17.7 0-32-14.3-32-32v-200c0-4.4 3.6-8 8-8h40v-344c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V346h40c4.4 0 8 3.6 8 8V554c0 17.7-14.3 32-32 32z m-334 74c0 38.6 31.4 70 70 70s70-31.4 70-70-31.4-70-70-70h-70v70z m-138 70c38.6 0 70-31.4 70-70v-70h-70c-38.6 0-70 31.4-70 70s31.4 70 70 70zM180 414V518h298v-104H180z m48-68h250v-308H228V346z m568-308H546V346h250v-308z m48 376H546V518h298v-104z" horiz-adv-x="1024" /> + + + <glyph glyph-name="stop" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-820c-205.4 0-372 166.6-372 372 0 89 31.3 170.8 83.5 234.8l523.3-523.3C682.8 43.3 601 12 512 12z m288.5 137.2L277.2 672.5C341.2 724.7 423 756 512 756c205.4 0 372-166.6 372-372 0-89-31.3-170.8-83.5-234.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fire" unicode="" d="M834.1 426.8c-19.5 43.8-47.4 82.6-82.9 115.2l-29.1 26.7c-4.3 3.8-11.1 2.1-13-3.3l-13-37.3c-8.1-23.4-23-47.3-44.1-70.8-1.4-1.5-3-1.9-4.1-2-1.1-0.1-2.8 0.1-4.3 1.5-1.4 1.2-2.1 3-2 4.8 3.7 60.2-14.3 128.1-53.7 202C555.3 725 510 772.9 453.4 806.3l-41.3 24.3c-5.4 3.2-12.3-1-12-7.3l2.2-48c1.5-32.8-2.3-61.8-11.3-85.9-11-29.5-26.8-56.9-47-81.5-14.2-17.2-30.1-32.7-47.5-46.1-42.1-32.3-76.8-74.4-100.3-121.5C172.5 392.7 160 339.4 160 286c0-47.2 9.3-92.9 27.7-136 17.8-41.5 43.2-78.9 75.5-110.9 32.4-32 70-57.2 111.9-74.7C418.5-53.8 464.5-63 512-63s93.5 9.2 136.9 27.3c41.9 17.5 79.6 42.6 111.9 74.7 32.4 32 57.8 69.4 75.5 110.9 18.4 43.1 27.7 88.8 27.7 136 0 48.8-10 96.2-29.9 140.9zM713 87.5c-53.7-53.2-125-82.4-201-82.4s-147.3 29.2-201 82.4c-53.5 53.1-83 123.5-83 198.4 0 43.5 9.8 85.2 29.1 124 18.8 37.9 46.8 71.8 80.8 97.9 21.5 16.4 41.2 35.5 58.6 56.8 25 30.5 44.6 64.5 58.2 101 5.4 14.5 9.5 30 12.1 46.5 24.1-22.2 44.3-49 61.2-80.4 33.4-62.6 48.8-118.3 45.8-165.7-1.4-22.8 7.5-44.5 24.4-59.8 14.7-13.2 33.7-19.9 53.4-18.8 19.7 1 37.8 9.7 51 24.4 13.3 14.9 24.8 30.1 34.4 45.6 14-17.9 25.7-37.4 35-58.4 15.9-35.8 24-73.9 24-113.1 0-74.9-29.5-145.4-83-198.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="thunderbolt" unicode="" d="M848 536.7H627.7L825.8 787c4.1 5.3 0.4 13-6.3 13H436c-2.8 0-5.5-1.5-6.9-4L170 348.5c-3.1-5.3 0.7-12 6.9-12h174.4l-89.4-357.6c-1.9-7.8 7.5-13.3 13.3-7.7L853.5 523c5.2 4.9 1.7 13.7-5.5 13.7zM378.2 163.5l60.3 241H281.1l189.6 327.4h224.6L487 468.6h211L378.2 163.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="check-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m193.5-301.7l-210.6-292c-12.7-17.7-39-17.7-51.7 0L318.5 411.1c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.2 0 19.9-4.9 25.9-13.3l71.2-98.8 157.2 218c6 8.3 15.6 13.3 25.9 13.3H699c6.5 0 10.3-7.4 6.5-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m104-316.9c0-10.2-4.9-19.9-13.2-25.9L457.4 384l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V206c0-6.5-7.4-10.3-12.7-6.5l-246 178c-4.4 3.2-4.4 9.7 0 12.9l246 178c5.3 3.8 12.7 0.1 12.7-6.5v-46.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m184.5-353.7l-178-246c-3.2-4.4-9.7-4.4-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 332.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="minus-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m192-472c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m165.4-618.2l-66 0.3L512 332.6l-99.3-118.4-66.1-0.3c-4.4 0-8 3.5-8 8 0 1.9 0.7 3.7 1.9 5.2l130.1 155L340.5 537c-1.2 1.5-1.9 3.3-1.9 5.2 0 4.4 3.6 8 8 8l66.1-0.3L512 431.4l99.3 118.4 66 0.3c4.4 0 8-3.5 8-8 0-1.9-0.7-3.7-1.9-5.2L553.5 382l130-155c1.2-1.5 1.9-3.3 1.9-5.2 0-4.4-3.6-8-8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="info-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m32-664c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V440c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-272z m-32 344c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m178-555h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 435.6 406.8 290.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3 0.1-12.7-6.4-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m154.7-454.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.2 4.9 19.9 13.2 25.9L566.6 384 421.2 489.2c-8.3 6-13.2 15.6-13.2 25.9V562c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z" horiz-adv-x="1024" /> + + + <glyph glyph-name="plus-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m192-472c0-4.4-3.6-8-8-8H544v-152c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V352H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152V568c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-152h152c4.4 0 8-3.6 8-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="question-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-708c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z m62.9 219.5c-18.5-7.1-30.9-25.1-30.9-44.8V276c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v21.5c0 23.1 6.7 45.9 19.9 64.9 12.9 18.6 30.9 32.8 52.1 40.9 34 13.1 56 41.6 56 72.7 0 44.1-43.1 80-96 80s-96-35.9-96-80v-7.6c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V476c0 39.3 17.2 76 48.4 103.3C430.4 605.6 470 620 512 620s81.6-14.5 111.6-40.7C654.8 552 672 515.3 672 476c0-57.8-38.1-109.8-97.1-132.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="EURO-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m63.5-375.8c4.4 0 8-3.6 8-8V421c0-4.4-3.6-8-8-8h-136c-0.3-4.4-0.3-9.1-0.3-13.8v-36h136.2c4.4 0 8-3.6 8-8V328c0-4.4-3.6-8-8-8H444.9c15.3-62 61.3-98.6 129.8-98.6 19.9 0 37.1 1.2 51.8 4.1 4.9 1 9.5-2.8 9.5-7.8v-42.8c0-3.8-2.7-7-6.4-7.8-15.9-3.4-34.3-5.1-55.3-5.1-109.8 0-183 58.8-200.2 158H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h26.1v36.9c0 4.4 0 8.8 0.3 12.8H344c-4.4 0-8 3.6-8 8v27.2c0 4.4 3.6 8 8 8h31.7c19.7 94.2 92 149.9 198.6 149.9 20.9 0 39.4-1.9 55.3-5.4 3.7-0.8 6.3-4 6.3-7.8V550h0.1c0-5.1-4.6-8.8-9.6-7.8-14.7 2.9-31.8 4.4-51.7 4.4-65.4 0-110.4-33.5-127.6-90.4h128.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="frown-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832zM288 475c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m376-272h-48.1c-4.2 0-7.8 3.2-8.1 7.4C604 259.9 562.5 299 512 299s-92.1-39.1-95.8-88.6c-0.3-4.2-3.9-7.4-8.1-7.4H360c-4.6 0-8.2 3.8-8 8.4 4.4 84.3 74.5 151.6 160 151.6s155.6-67.3 160-151.6c0.2-4.6-3.4-8.4-8-8.4z m24 224c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="copyright-circle-fil" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m5.4-670c-110 0-173.4 73.2-173.4 194.9v52.3C344 531.8 407.4 606 517.3 606c94.3 0 162.7-60.7 162.7-147.4 0-2.6-2.1-4.7-4.7-4.7h-56.7c-4.2 0-7.6 3.2-8 7.4-4 49.5-40 83.4-93 83.4-65.3 0-102.1-48.5-102.1-135.5v-52.6c0-85.7 36.9-133.6 102.1-133.6 52.8 0 88.7 31.7 93 77.8 0.4 4.1 3.8 7.3 8 7.3h56.8c2.6 0 4.7-2.1 4.7-4.7 0-82.6-68.7-141.4-162.7-141.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="CI-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m-63.6-656c-103 0-162.4 68.6-162.4 182.6v49C286 522.5 345.4 592 448.3 592c88.3 0 152.3-56.9 152.3-138.1 0-2.4-2-4.4-4.4-4.4h-52.6c-4.2 0-7.6 3.2-8 7.4-4 46.1-37.6 77.6-87 77.6-61.1 0-95.6-45.4-95.6-126.9v-49.3c0-80.3 34.5-125.1 95.6-125.1 49.3 0 82.8 29.5 87 72.4 0.4 4.1 3.8 7.3 8 7.3h52.7c2.4 0 4.4-2 4.4-4.4 0-77.4-64.3-132.5-152.3-132.5zM738 191.9c0-4.4-3.6-8-8-8h-50.4c-4.4 0-8 3.6-8 8V576.1c0 4.4 3.6 8 8 8H730c4.4 0 8-3.6 8-8v-384.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="compass-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832zM327.3 193.6c-2-0.9-4.4 0-5.3 2.1-0.4 1-0.4 2.2 0 3.2l98.7 225.5 132.1-132.1-225.5-98.7z m375.1 375.1l-98.7-225.5-132.1 132.1L697.1 574c2 0.9 4.4 0 5.3-2.1 0.4-1 0.4-2.1 0-3.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Dollar-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m22.3-665.2l0.2-31.7c0-4.4-3.6-8.1-8-8.1h-28.4c-4.4 0-8 3.6-8 8v31.4C401.3 173 359.5 223.6 355 278.6c-0.4 4.7 3.3 8.7 8 8.7h46.2c3.9 0 7.3-2.8 7.9-6.6 5.1-31.7 29.8-55.4 74.1-61.3V362.1l-24.7 6.3c-52.3 12.5-102.1 45.1-102.1 112.7 0 72.9 55.4 112.1 126.2 119v33c0 4.4 3.6 8 8 8h28.1c4.4 0 8-3.6 8-8v-32.7c68.5-6.9 119.9-46.9 125.9-109.2 0.5-4.7-3.2-8.8-8-8.8h-44.9c-4 0-7.4 3-7.9 6.9-4 29.2-27.4 53-65.5 58.2v-134.3l25.4-5.9c64.8-16 108.9-47 108.9-116.4 0-75.3-56-117.3-134.3-124.1zM426.6 485.7c0-25.4 15.7-45.1 49.5-57.3 4.7-1.9 9.4-3.4 15-5v124c-36.9-4.7-64.5-25.4-64.5-61.7zM543.1 350.5c-2.8 0.6-5.6 1.3-8.8 2.2V219c42.6 3.8 72 27.2 72 66.4 0 30.7-15.9 50.7-63.2 65.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="poweroff-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m-80-600c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V536c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-304z m224 0c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V536c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-304z" horiz-adv-x="1024" /> + + + <glyph glyph-name="meh-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832zM288 475c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m384-200c0-4.4-3.6-8-8-8H360c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h304c4.4 0 8-3.6 8-8v-48z m16 152c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="play-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m144.1-454.9L437.7 218.2c-1.4-1-3-1.5-4.7-1.5-4.4 0-8 3.6-8 8V542.3c0 1.7 0.5 3.3 1.5 4.7 2.6 3.6 7.6 4.4 11.2 1.8L656.1 390c0.7-0.5 1.3-1.1 1.8-1.8 2.6-3.5 1.8-8.5-1.8-11.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Pound-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m146-658c0-4.4-3.6-8-8-8H376.2c-4.4 0-8 3.6-8 8v38.5c0 3.7 2.5 6.9 6.1 7.8 44 10.9 72.8 49 72.8 94.2 0 14.7-2.5 29.4-5.9 44.2H374c-4.4 0-8 3.6-8 8v30c0 4.4 3.6 8 8 8h53.7c-7.8 25.1-14.6 50.7-14.6 77.1 0 75.8 58.6 120.3 151.5 120.3 26.5 0 51.4-5.5 70.3-12.7 3.1-1.2 5.2-4.2 5.2-7.5v-39.5c0-5.5-5.4-9.4-10.6-7.6-17.9 6.4-39 10.5-60.4 10.5-53.3 0-87.3-26.6-87.3-70.2 0-24.7 6.2-47.9 13.4-70.5h112c4.4 0 8-3.6 8-8v-30c0-4.4-3.6-8-8-8h-98.6c3.1-13.2 5.3-26.9 5.3-41 0-40.7-16.5-73.9-43.9-91.1v-4.7h180c4.4 0 8-3.6 8-8V174z" horiz-adv-x="1024" /> + + + <glyph glyph-name="smile-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832zM288 475c0 26.5 21.5 48 48 48s48-21.5 48-48-21.5-48-48-48-48 21.5-48 48z m224-272c-85.5 0-155.6 67.3-160 151.6-0.2 4.6 3.4 8.4 8 8.4h48.1c4.2 0 7.8-3.2 8.1-7.4C420 306.1 461.5 267 512 267s92.1 39.1 95.8 88.6c0.3 4.2 3.9 7.4 8.1 7.4H664c4.6 0 8.2-3.8 8-8.4-4.4-84.3-74.5-151.6-160-151.6z m176 224c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="stop-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m234.8-736.5L223.5 618.8c16 19.7 34 37.7 53.7 53.7l523.3-523.3c-16-19.6-34-37.7-53.7-53.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="warning-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m-32-232c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-272c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V600z m32-440c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="time-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m176.5-585.7l-28.6-39c-2.6-3.6-7.6-4.3-11.2-1.7L483.3 326.2c-2.1 1.5-3.3 3.9-3.3 6.5V608c0 4.4 3.6 8 8 8h48.1c4.4 0 8-3.6 8-8v-247.5l142.6-103.1c3.6-2.5 4.4-7.5 1.8-11.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="trademark-circle-fil" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m164.7-660.2c-1.1-0.5-2.3-0.8-3.5-0.8h-62c-3.1 0-5.9 1.8-7.2 4.6l-74.6 159.2h-88.7V179c0-4.4-3.6-8-8-8H378c-4.4 0-8 3.6-8 8V589c0 4.4 3.6 8 8 8h155.6c98.8 0 144.2-59.9 144.2-131.1 0-70.2-43.6-106.4-78.4-119.2l80.8-164.2c2.1-3.9 0.4-8.7-3.5-10.7zM523.9 539h-83.4v-148H522c53 0 82.8 25.6 82.8 72.4 0 50.3-32.9 75.6-80.9 75.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="YUAN-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m166.6-246.8L567.5 380.4h62c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-82V293h82c4.4 0 8-3.6 8-8v-29.9c0-4.4-3.6-8-8-8h-82V179c0-4.4-3.6-8-8-8h-54.3c-4.4 0-8 3.6-8 8v68.1h-81.7c-4.4 0-8 3.6-8 8V285c0 4.4 3.6 8 8 8h81.7v41.5h-81.7c-4.4 0-8 3.6-8 8v29.9c0 4.4 3.6 8 8 8h61.4L345.4 585.2c-2.1 3.9-0.7 8.7 3.2 10.9 1.2 0.6 2.5 1 3.8 1h60.7c3 0 5.8-1.7 7.1-4.4l90.6-180h3.4l90.6 180c1.4 2.7 4.1 4.4 7.1 4.4h59.5c4.4 0 8-3.6 8-8 0.2-1.4-0.2-2.7-0.8-3.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="heart-fill" unicode="" d="M923 612.4c-13.4 31.1-32.6 58.9-56.9 82.8-24.3 23.8-52.5 42.4-84 55.5-32.5 13.5-66.9 20.3-102.4 20.3-49.3 0-97.4-13.5-139.2-39-10-6.1-19.5-12.8-28.5-20.1-9 7.3-18.5 14-28.5 20.1-41.8 25.5-89.9 39-139.2 39-35.5 0-69.9-6.8-102.4-20.3-31.4-13-59.7-31.7-84-55.5-24.4-23.9-43.5-51.7-56.9-82.8-13.9-32.3-21-66.6-21-101.9 0-33.3 6.8-68 20.3-103.3 11.3-29.5 27.5-60.1 48.2-91 32.8-48.9 77.9-99.9 133.9-151.6 92.8-85.7 184.7-144.9 188.6-147.3l23.7-15.2c10.5-6.7 24-6.7 34.5 0l23.7 15.2c3.9 2.5 95.7 61.6 188.6 147.3 56 51.7 101.1 102.7 133.9 151.6 20.7 30.9 37 61.5 48.2 91 13.5 35.3 20.3 70 20.3 103.3 0.1 35.3-7 69.6-20.9 101.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="piechart-circle-fil" unicode="" d="M863.1 377.5H505.5V735.1c0 4.4-3.6 8-8 8h-26c-53.9 0-106.3-10.6-155.5-31.4-47.5-20.1-90.3-48.9-127-85.6-36.7-36.7-65.5-79.4-85.6-127C82.6 449.8 72 397.5 72 343.5S82.6 237.3 103.4 188c20.1-47.5 48.9-90.3 85.6-127 36.7-36.7 79.4-65.5 127-85.6 49.3-20.9 101.7-31.5 155.6-31.5 53.9 0 106.3 10.6 155.5 31.4 47.5 20.1 90.3 48.9 127 85.6 36.7 36.7 65.5 79.4 85.6 127 20.9 49.3 31.5 101.7 31.5 155.6v26c-0.1 4.4-3.7 8-8.1 8zM951 433l-2.6 28.2c-8.5 92-49.3 178.8-115.1 244.3-65.7 65.7-152.6 106.4-244.9 114.9L560.1 823c-4.7 0.4-8.7-3.2-8.7-7.9v-383.7c0-4.4 3.6-8 8-8l383.6 1c4.7 0.1 8.4 4 8 8.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dashboard-fill" unicode="" d="M924.8 510.4c-22.6 53.4-54.9 101.3-96 142.4-41.1 41.1-89 73.4-142.4 96C631.1 772.2 572.5 784 512 784s-119.1-11.8-174.4-35.2c-53.4-22.6-101.3-54.9-142.4-96-41.1-41.1-73.4-89-96-142.4C75.8 455.1 64 396.5 64 336c0-132.7 58.3-257.7 159.9-343.1l1.7-1.4c5.8-4.8 13.1-7.5 20.6-7.5h531.7c7.5 0 14.8 2.7 20.6 7.5l1.7 1.4C901.7 78.3 960 203.3 960 336c0 60.5-11.9 119.1-35.2 174.4zM482 664c0 4.4 3.6 8 8 8h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80zM270 314c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44z m90.7 204.5l-31.1-31.1c-3.1-3.1-8.2-3.1-11.3 0L261.7 544c-3.1 3.1-3.1 8.2 0 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3z m291.1-83.6l-84.5-84.5c5-18.7 0.2-39.4-14.5-54.1-21.9-21.9-57.3-21.9-79.2 0-21.9 21.9-21.9 57.3 0 79.2 14.7 14.7 35.4 19.5 54.1 14.5l84.5 84.5c3.1 3.1 8.2 3.1 11.3 0l28.3-28.3c3.1-3.1 3.1-8.1 0-11.3z m43 52.4l-31.1 31.1c-3.1 3.1-3.1 8.2 0 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6c-3.1-3.1-8.2-3.1-11.3 0zM846 314c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44z" horiz-adv-x="1024" /> + + + <glyph glyph-name="message-fill" unicode="" d="M924.3 557.6c-22.5 53.7-54.9 101.9-96.1 143.3-41.2 41.3-89.3 73.8-143 96.3C630.3 820.3 572.1 832 512 832h-2c-60.5-0.3-119-12.3-174.1-35.9-53.2-22.8-100.9-55.2-141.7-96.5-40.8-41.3-72.8-89.3-95-142.8C76.3 501.4 64.7 442.5 65 381.9c0.3-69.4 16.9-138.3 47.9-199.9v-152c0-25.4 20.6-46 45.9-46h151.8c61.5-31.1 130.2-47.7 199.5-48h2.1c59.8 0 117.7 11.6 172.3 34.3 53.4 22.3 101.4 54.3 142.5 95.2 41.2 40.9 73.6 88.7 96.3 142 23.5 55.2 35.5 113.9 35.8 174.5 0.2 60.9-11.6 120-34.8 175.6zM312.4 336c-26.4 0-47.9 21.5-47.9 48s21.5 48 47.9 48 47.9-21.5 47.9-48-21.4-48-47.9-48z m199.6 0c-26.4 0-47.9 21.5-47.9 48s21.5 48 47.9 48 47.9-21.5 47.9-48-21.5-48-47.9-48z m199.6 0c-26.4 0-47.9 21.5-47.9 48s21.5 48 47.9 48 47.9-21.5 47.9-48-21.5-48-47.9-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="check-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM695.5 530.3l-210.6-292c-12.7-17.7-39-17.7-51.7 0L308.5 411.1c-3.8 5.3 0 12.7 6.5 12.7h46.9c10.2 0 19.9-4.9 25.9-13.3l71.2-98.8 157.2 218c6 8.3 15.6 13.3 25.9 13.3H689c6.5 0 10.3-7.4 6.5-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM696.5 483.3l-178-246c-3.2-4.4-9.7-4.4-12.9 0l-178 246c-3.8 5.3 0 12.7 6.5 12.7H381c10.2 0 19.9-4.9 25.9-13.2L512 337.4l105.2 145.4c6 8.3 15.6 13.2 25.9 13.2H690c6.5 0 10.3-7.4 6.5-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="minus-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM704 360c0-4.4-3.6-8-8-8H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h368c4.4 0 8-3.6 8-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM676.1 238.1c4.4-5.2 0.7-13.1-6.1-13.1h-58.9c-4.7 0-9.2 2.1-12.3 5.7L512 334.2l-86.8-103.5c-3-3.6-7.5-5.7-12.3-5.7H354c-6.8 0-10.5 7.9-6.1 13.1L470.2 384 347.9 529.9c-4.4 5.2-0.7 13.1 6.1 13.1h58.9c4.7 0 9.2-2.1 12.3-5.7L512 433.8l86.8 103.5c3 3.6 7.5 5.7 12.3 5.7H670c6.8 0 10.5-7.9 6.1-13.1L553.8 384l122.3-145.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="codelibrary-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM513.1 377.9l-192-161c-5.2-4.4-13.1-0.7-13.1 6.1v62.7c0 2.3 1.1 4.6 2.9 6.1L420.7 384l-109.8 92.2c-1.9 1.5-2.9 3.7-2.9 6.1V545c0 6.8 7.9 10.5 13.1 6.1l192-160.9c3.9-3.2 3.9-9.1 0-12.3zM716 223c0-4.4-3.4-8-7.5-8h-185c-4.1 0-7.5 3.6-7.5 8v48c0 4.4 3.4 8 7.5 8h185c4.1 0 7.5-3.6 7.5-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM624 515.1c0-10.2-4.9-19.9-13.2-25.9L465.4 384l145.4-105.2c8.3-6 13.2-15.6 13.2-25.9V206c0-6.5-7.4-10.3-12.7-6.5l-246 178c-4.4 3.2-4.4 9.7 0 12.9l246 178c5.3 3.8 12.7 0 12.7-6.5v-46.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="play-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM641.7 375.2L442.3 218.4c-7.4-5.8-18.3-0.6-18.3 8.8V540.7c0 9.4 10.9 14.7 18.3 8.8l199.4-156.7c5.7-4.5 5.7-13.1 0-17.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM690 272h-46.9c-10.2 0-19.9 4.9-25.9 13.2L512 430.6 406.8 285.2c-6-8.3-15.6-13.2-25.9-13.2H334c-6.5 0-10.3 7.4-6.5 12.7l178 246c3.2 4.4 9.7 4.4 12.9 0l178-246c3.9-5.3 0.1-12.7-6.4-12.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM658.7 377.5l-246-178c-5.3-3.8-12.7 0-12.7 6.5v46.9c0 10.2 4.9 19.9 13.2 25.9L558.6 384 413.2 489.2c-8.3 6-13.2 15.6-13.2 25.9V562c0 6.5 7.4 10.3 12.7 6.5l246-178c4.4-3.2 4.4-9.8 0-13z" horiz-adv-x="1024" /> + + + <glyph glyph-name="plus-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM704 360c0-4.4-3.6-8-8-8H544v-152c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V352H328c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h152V568c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-152h152c4.4 0 8-3.6 8-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="accountbook-fill" unicode="" d="M880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-664c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V680c0 17.7-14.3 32-32 32zM648.3 469.2l-87.7-161.1h45.7c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4V144c0-5.5-4.5-10-10-10h-41.3c-5.5 0-10 4.5-10 10v51.8h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h45.2l-88 161.1c-2.6 4.8-0.9 10.9 4 13.6 1.5 0.8 3.1 1.2 4.8 1.2h46c3.8 0 7.2-2.1 8.9-5.5l72.9-144.3 73.2 144.3c1.7 3.4 5.2 5.5 8.9 5.5h45c5.5 0 10-4.5 10-10 0.1-1.7-0.3-3.3-1.1-4.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="carryout-fill" unicode="" d="M880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-664c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V680c0 17.7-14.3 32-32 32zM694.5 463.3L481.9 170.6c-6.4-8.8-19.6-8.8-26 0l-126.4 174c-3.8 5.3 0 12.7 6.5 12.7h55.2c5.1 0 10-2.5 13-6.6l64.7-89 150.9 207.8c3 4.1 7.8 6.6 13 6.6H688c6.5-0.1 10.3-7.5 6.5-12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calendar-fill" unicode="" d="M112 16c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V436H112v-420zM880 712H712v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H384v64c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-64H144c-17.7 0-32-14.3-32-32v-176h800V680c0 17.7-14.3 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calculator-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM440.2 131h-50.8c-2.2 0-4.5 1.1-5.9 2.9L348 177.4l-35.5-43.5c-1.5-1.9-3.6-2.9-5.9-2.9h-50.8c-6.6 0-10.2 7.9-5.8 13.1l62.7 76.8-61.2 74.9c-4.3 5.2-0.7 13.1 5.9 13.1h50.9c2.2 0 4.5-1.1 5.9-2.9l34-41.6 34 41.6c1.5 1.9 3.6 2.9 5.9 2.9h50.8c6.6 0 10.2-7.9 5.9-13.1L383.5 221l62.7-76.8c4.2-5.3 0.6-13.2-6-13.2z m7.8 382c0-2.2-1.4-4-3.2-4H376v-68.7c0-1.9-1.8-3.3-4-3.3h-48c-2.2 0-4 1.4-4 3.2V509h-68.8c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4H320v68.8c0 1.8 1.8 3.2 4 3.2h48c2.2 0 4-1.4 4-3.2V565h68.7c1.9 0 3.3-1.8 3.3-4v-48z m328-369c0-2.2-1.4-4-3.2-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4h193.5c1.9 0 3.3-1.8 3.3-4v-48z m0 104c0-2.2-1.4-4-3.2-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4h193.5c1.9 0 3.3-1.8 3.3-4v-48z m0 265c0-2.2-1.4-4-3.2-4H579.2c-1.8 0-3.2 1.8-3.2 4v48c0 2.2 1.4 4 3.2 4h193.5c1.9 0 3.3-1.8 3.3-4v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="interation-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM726 310.3c0-55.3-44.7-100.1-99.7-100.1H420.6v-53.4c0-5.7-6.5-8.8-10.9-5.3l-109.1 85.7c-3.5 2.7-3.5 8 0 10.7l109.1 85.7c4.4 3.5 10.9 0.3 10.9-5.3v-53.4h205.7c19.6 0 35.5 16 35.5 35.6v78.9c0 3.7 3 6.8 6.8 6.8h50.7c3.7 0 6.8-3 6.8-6.8v-79.1z m-2.6 209.9l-109.1-85.7c-4.4-3.5-10.9-0.3-10.9 5.3v53.4H397.7c-19.6 0-35.5-16-35.5-35.6v-78.9c0-3.7-3-6.8-6.8-6.8h-50.7c-3.7 0-6.8 3-6.8 6.8v78.9c0 55.3 44.7 100.1 99.7 100.1h205.7v53.4c0 5.7 6.5 8.8 10.9 5.3l109.1-85.7c3.6-2.5 3.6-7.8 0.1-10.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="project-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM368 152c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8V616c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-464z m192 280c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8V616c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-184z m192-72c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8V616c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-256z" horiz-adv-x="1024" /> + + + <glyph glyph-name="detail-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM380 200c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z m0 144c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z m0 144c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z m304-272c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48z m0 144c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48z m0 144c0-4.4-3.6-8-8-8H492c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="save-fill" unicode="" d="M893.3 602.7L730.7 765.3c-12 12-28.3 18.7-45.3 18.7H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V557.5c0 17-6.7 33.2-18.7 45.2zM384 720h256v-112H384V720z m128-554c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zM512 390c-44.2 0-80-35.8-80-80s35.8-80 80-80 80 35.8 80 80-35.8 80-80 80z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wallet-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-32-464H528V448h320v-128zM620 384m-40 0a40 40 0 1 1 80 0 40 40 0 1 1-80 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="control-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM404 213v-77c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v77c-41.7 13.6-72 52.8-72 99s30.3 85.5 72 99V632c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-221c41.7-13.6 72-52.8 72-99s-30.3-85.5-72-99z m279.6 143.9c0.2 0 0.3 0.1 0.4 0.1v-221c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V357c0.2 0 0.3-0.1 0.4-0.1-42 13.4-72.4 52.7-72.4 99.1 0 46.4 30.4 85.7 72.4 99.1-0.2 0-0.3-0.1-0.4-0.1v77c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-77c-0.2 0-0.3 0.1-0.4 0.1 42-13.4 72.4-52.7 72.4-99.1 0-46.4-30.4-85.7-72.4-99.1zM652 456m-36 0a36 36 0 1 1 72 0 36 36 0 1 1-72 0ZM403.4 329.5l-1.5 2.4c0 0.1-0.1 0.1-0.1 0.2l-0.9 1.2c-0.1 0.1-0.2 0.2-0.2 0.3-1 1.3-2 2.5-3.2 3.6l-0.2 0.2c-0.4 0.4-0.8 0.8-1.2 1.1-0.8 0.8-1.7 1.5-2.6 2.1h-0.1l-1.2 0.9c-0.1 0.1-0.3 0.2-0.4 0.3-1.2 0.8-2.5 1.6-3.9 2.2-0.2 0.1-0.5 0.2-0.7 0.4-0.4 0.2-0.7 0.3-1.1 0.5-0.3 0.1-0.7 0.3-1 0.4-0.5 0.2-1 0.4-1.5 0.5-0.4 0.1-0.9 0.3-1.3 0.4l-0.9 0.3c-0.5 0.1-0.9 0.2-1.4 0.3-0.2 0.1-0.5 0.1-0.7 0.2-0.7 0.1-1.4 0.3-2.1 0.4-0.2 0-0.4 0-0.6 0.1-0.6 0.1-1.1 0.1-1.7 0.2-0.2 0-0.4 0-0.7 0.1-0.8 0-1.5 0.1-2.3 0.1s-1.5 0-2.3-0.1c-0.2 0-0.4 0-0.7-0.1-0.6 0-1.2-0.1-1.7-0.2-0.2 0-0.4 0-0.6-0.1-0.7-0.1-1.4-0.2-2.1-0.4-0.2-0.1-0.5-0.1-0.7-0.2-0.5-0.1-0.9-0.2-1.4-0.3l-0.9-0.3c-0.4-0.1-0.9-0.3-1.3-0.4-0.5-0.2-1-0.4-1.5-0.5-0.3-0.1-0.7-0.3-1-0.4-0.4-0.2-0.7-0.3-1.1-0.5-0.2-0.1-0.5-0.2-0.7-0.4-1.3-0.7-2.6-1.4-3.9-2.2-0.1-0.1-0.3-0.2-0.4-0.3l-1.2-0.9h-0.1c-0.9-0.7-1.8-1.4-2.6-2.1-0.4-0.4-0.8-0.7-1.2-1.1l-0.2-0.2c-1.1-1.1-2.2-2.4-3.2-3.6-0.1-0.1-0.2-0.2-0.2-0.3l-0.9-1.2c0-0.1-0.1-0.1-0.1-0.2l-1.5-2.4c-0.1-0.2-0.2-0.3-0.3-0.5-2.7-5.1-4.3-10.9-4.3-17s1.6-12 4.3-17c0.1-0.2 0.2-0.3 0.3-0.5l1.5-2.4c0-0.1 0.1-0.1 0.1-0.2l0.9-1.2c0.1-0.1 0.2-0.2 0.2-0.3 1-1.3 2-2.5 3.2-3.6l0.2-0.2c0.4-0.4 0.8-0.8 1.2-1.1 0.8-0.8 1.7-1.5 2.6-2.1h0.1l1.2-0.9c0.1-0.1 0.3-0.2 0.4-0.3 1.2-0.8 2.5-1.6 3.9-2.2 0.2-0.1 0.5-0.2 0.7-0.4 0.4-0.2 0.7-0.3 1.1-0.5 0.3-0.1 0.7-0.3 1-0.4 0.5-0.2 1-0.4 1.5-0.5 0.4-0.1 0.9-0.3 1.3-0.4l0.9-0.3c0.5-0.1 0.9-0.2 1.4-0.3 0.2-0.1 0.5-0.1 0.7-0.2 0.7-0.1 1.4-0.3 2.1-0.4 0.2 0 0.4 0 0.6-0.1 0.6-0.1 1.1-0.1 1.7-0.2 0.2 0 0.4 0 0.7-0.1 0.8 0 1.5-0.1 2.3-0.1s1.5 0 2.3 0.1c0.2 0 0.4 0 0.7 0.1 0.6 0 1.2 0.1 1.7 0.2 0.2 0 0.4 0 0.6 0.1 0.7 0.1 1.4 0.2 2.1 0.4 0.2 0.1 0.5 0.1 0.7 0.2 0.5 0.1 0.9 0.2 1.4 0.3l0.9 0.3c0.4 0.1 0.9 0.3 1.3 0.4 0.5 0.2 1 0.4 1.5 0.5 0.3 0.1 0.7 0.3 1 0.4 0.4 0.2 0.7 0.3 1.1 0.5 0.2 0.1 0.5 0.2 0.7 0.4 1.3 0.7 2.6 1.4 3.9 2.2 0.1 0.1 0.3 0.2 0.4 0.3l1.2 0.9h0.1c0.9 0.7 1.8 1.4 2.6 2.1 0.4 0.4 0.8 0.7 1.2 1.1l0.2 0.2c1.1 1.1 2.2 2.4 3.2 3.6 0.1 0.1 0.2 0.2 0.2 0.3l0.9 1.2c0 0.1 0.1 0.1 0.1 0.2l1.5 2.4c0.1 0.2 0.2 0.3 0.3 0.5 2.7 5.1 4.3 10.9 4.3 17s-1.6 12-4.3 17c-0.1 0.2-0.2 0.4-0.3 0.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layout-fill" unicode="" d="M384-16h496c17.7 0 32 14.3 32 32V556H384v-572zM880 784H384v-164h528V752c0 17.7-14.3 32-32 32zM112 752v-736c0-17.7 14.3-32 32-32h176V784H144c-17.7 0-32-14.3-32-32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="appstore-fill" unicode="" d="M864 752H560c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V736c0 8.8-7.2 16-16 16zM864 352H560c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16zM464 752H160c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V736c0 8.8-7.2 16-16 16zM464 352H160c-8.8 0-16-7.2-16-16v-304c0-8.8 7.2-16 16-16h304c8.8 0 16 7.2 16 16V336c0 8.8-7.2 16-16 16z" horiz-adv-x="1024" /> + + + <glyph glyph-name="mobile-fill" unicode="" d="M744 834H280c-35.3 0-64-28.7-64-64v-768c0-35.3 28.7-64 64-64h464c35.3 0 64 28.7 64 64V770c0 35.3-28.7 64-64 64zM512 72c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tablet-fill" unicode="" d="M800 832H224c-35.3 0-64-28.7-64-64v-768c0-35.3 28.7-64 64-64h576c35.3 0 64 28.7 64 64V768c0 35.3-28.7 64-64 64zM512 72c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z" horiz-adv-x="1024" /> + + + <glyph glyph-name="book-fill" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32zM668 550.1L621.5 584 572 548.6V772h96v-221.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="redenvelope-fill" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32zM647 425.6l-87.2-161h45.9c4.6 0 8.4-3.8 8.4-8.4v-25.1c0-4.6-3.8-8.4-8.4-8.4h-63.3v-28.6h63.3c4.6 0 8.4-3.8 8.4-8.4v-25c0.2-4.6-3.6-8.5-8.2-8.5h-63.3v-49.9c0-4.6-3.8-8.4-8.4-8.4h-43.7c-4.6 0-8.4 3.8-8.4 8.4v49.9h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h63v28.6h-63c-4.6 0-8.4 3.8-8.4 8.4v25.1c0 4.6 3.8 8.4 8.4 8.4h45.4l-87.5 161c-2.2 4.1-0.7 9.1 3.4 11.4 1.3 0.6 2.6 1 3.9 1h48.8c3.2 0 6.1-1.8 7.5-4.6l71.9-141.8 71.9 141.9c1.5 2.8 4.3 4.6 7.5 4.6h47.8c4.6 0 8.4-3.8 8.4-8.4-0.1-1.5-0.5-2.9-1.1-4.1zM512.6 573L289 748h446L512.6 573z" horiz-adv-x="1024" /> + + + <glyph glyph-name="safetycertificate-f" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM694.5 555.3L481.9 262.6c-6.4-8.8-19.6-8.8-26 0l-126.4 174c-3.8 5.3 0 12.7 6.5 12.7h55.2c5.1 0 10-2.5 13-6.6l64.7-89 150.9 207.8c3 4.1 7.8 6.6 13 6.6H688c6.5-0.1 10.3-7.5 6.5-12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="propertysafety-fill" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM648.3 563.2l-87.7-161.1h45.7c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4v-29.7h63.4c5.5 0 10-4.5 10-10v-21.3c0-5.5-4.5-10-10-10h-63.4V238c0-5.5-4.5-10-10-10h-41.3c-5.5 0-10 4.5-10 10v51.8h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h63.1v29.7h-63.1c-5.5 0-10 4.5-10 10v21.3c0 5.5 4.5 10 10 10h45.2l-88 161.1c-2.6 4.8-0.9 10.9 4 13.6 1.5 0.8 3.1 1.2 4.8 1.2h46c3.8 0 7.2-2.1 8.9-5.5l72.9-144.3 73.2 144.3c1.7 3.4 5.2 5.5 8.9 5.5h45c5.5 0 10-4.5 10-10 0.1-1.7-0.3-3.3-1.1-4.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="insurance-fill" unicode="" d="M519.9 537.2h97.9v-41.6h-97.9zM866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM411.3 240h-0.2c0-4.4-3.6-8-8-8h-37.3c-4.4 0-8 3.6-8 8V424.6c-7.7-9.2-15.4-17.9-23.1-26-3.2-3.4-8.8-2.1-10.2 2.4l-13.2 43.5c-0.6 2-0.2 4.1 1.2 5.6 37 43.4 64.7 95.1 82.2 153.6 1.1 3.5 5 5.3 8.4 3.7l38.6-18.3c2.7-1.3 4.1-4.4 3.2-7.2-8.5-27.3-19.8-53.9-33.6-79V240z m296.5 49.2l-26.3-35.3c-2.2-2.9-6.3-3.2-8.9-0.7-30.6 29.3-56.8 65.2-78.1 106.9V240c0-4.4-3.6-8-8-8h-36.2c-4.4 0-8 3.6-8 8V360c-22-44.7-49-80.8-80.6-107.6a5.9 5.9 0 0 0-8.9 1.4L430 290.3c-1.7 2.7-1 6.3 1.6 8.1 28.6 20.3 51.9 45.2 71 76h-55.1c-4.4 0-8 3.6-8 8V418c0 4.4 3.6 8 8 8h94.9v18.6h-65.9c-4.4 0-8 3.6-8 8V580c0 4.4 3.6 8 8 8h184.7c4.4 0 8-3.6 8-8v-127.2c0-4.4-3.6-8-8-8h-66.7v-18.6h98.8c4.4 0 8-3.6 8-8v-35.6c0-4.4-3.6-8-8-8h-59c18.1-29.1 41.8-54.3 72.3-76.9 2.6-2.1 3.2-5.9 1.2-8.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="securityscan-fill" unicode="" d="M866.9 726.1L527.1 841.9C523 843.3 517.5 844 512 844s-11-0.7-15.1-2.1L157.1 726.1c-8.3-2.8-15.1-12.4-15.1-21.2v-482.4c0-8.8 5.7-20.4 12.6-25.9L499.3-72c3.5-2.7 8-4.1 12.6-4.1s9.2 1.4 12.6 4.1l344.7 268.6c6.9 5.4 12.6 17 12.6 25.9V704.9c0.2 8.8-6.6 18.3-14.9 21.2zM626.8 342c-48.5-48.5-123-55.2-178.6-20.1l-77.5-77.5c-3.1-3.1-8.2-3.1-11.3 0l-34 34c-3.1 3.1-3.1 8.2 0 11.3l77.5 77.5c-35.1 55.7-28.4 130.1 20.1 178.6 56.3 56.3 147.5 56.3 203.8 0 56.3-56.3 56.3-147.5 0-203.8zM468.25522 387.269486a80.1 80.1 0 1 1 113.27653 113.280484 80.1 80.1 0 1 1-113.27653-113.280484Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-exclamation-fil" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM512 112c22.092 0 40 17.908 40 40s-17.908 40-40 40-40-17.908-40-40 17.908-40 40-40z m32 152V448a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-184a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-add-fill" unicode="" d="M480 316H372a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h108v-108a8 8 0 0 1 8-8h48a8 8 0 0 1 8 8V252h108a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8H544V424a8 8 0 0 1-8 8h-48a8 8 0 0 1-8-8v-108z m374.6 291.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-excel-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM575.341 418.161l-61.216-102.307-61.839 102.351a12 12 0 0 1-10.27 5.795h-38.437a12 12 0 0 1-6.406-1.853c-5.604-3.538-7.279-10.949-3.741-16.553l82.333-130.422-83.449-132.787a12 12 0 0 1-1.84-6.385c0-6.627 5.373-12 12-12h34.466a12 12 0 0 1 10.208 5.692l62.707 101.474 62.29-101.445A12 12 0 0 1 582.375 124h37.486a12 12 0 0 1 6.484 1.903c5.577 3.58 7.195 11.004 3.614 16.58l-83.831 130.551 85.296 132.47a12 12 0 0 1 1.91 6.496c0 6.627-5.372 12-12 12h-35.695a12 12 0 0 1-10.297-5.839z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-markdown-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM426.13 295.07l59.11-132.975a16.003 16.003 0 0 1 14.624-9.503h24.055c6.33 0 12.065 3.732 14.63 9.518l59.109 133.35v-157.458c0-8.838 7.165-16.003 16.003-16.003h27.337c8.838 0 16.003 7.165 16.003 16.003V409.998c0 8.838-7.165 16.003-16.003 16.003h-34.746a16.003 16.003 0 0 1-14.673-9.616l-79.473-182.587-79.473 182.587A16.003 16.003 0 0 1 417.96 426h-34.958c-8.838 0-16.003-7.165-16.003-16.003v-271.996c0-8.838 7.165-16.003 16.003-16.003h27.126c8.838 0 16.003 7.165 16.003 16.003V295.071z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-text-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM320 414a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h384a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8H320z m0-136a8 8 0 0 1-8-8v-48a8 8 0 0 1 8-8h184a8 8 0 0 1 8 8v48a8 8 0 0 1-8 8H320z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-ppt-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM468.526 136v91.537h59.277c60.57 0 100.197 39.655 100.197 98.125C628 383.884 588.424 424 528.016 424H424c-6.627 0-12-5.373-12-12v-276c0-6.627 5.373-12 12-12h32.526c6.628 0 12 5.373 12 12z m0 139.326h34.907c47.815 0 67.186 12.937 67.186 50.336 0 32.045-18.117 50.121-49.87 50.121h-52.223v-100.457z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-unknown-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM402 347c0-5.4 4.4-9.5 9.8-9.5h32.4c5.4 0 9.8 4.2 9.8 9.4 0 28.2 25.8 51.6 58 51.6s58-23.4 58-51.5c0-25.3-21-47.2-49.3-50.9-19.3-2.8-34.5-20.3-34.7-40.1v-32c0-5.5 4.5-10 10-10h32c5.5 0 10 4.5 10 10v12.2c0 6 4 11.5 9.7 13.3 44.6 14.4 75 54 74.3 98.9-0.8 55.5-49.2 100.8-108.5 101.6-61.4 0.7-111.5-45.6-111.5-103z m110-227c17.673 0 32 14.327 32 32 0 17.673-14.327 32-32 32-17.673 0-32-14.327-32-32 0-17.673 14.327-32 32-32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-word-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM512 329.905l52.814-197.012a12 12 0 0 1 11.59-8.893h31.78a12 12 0 0 1 11.587 8.878l74.375 276a12 12 0 0 1 0.413 3.122c0 6.627-5.373 12-12 12h-35.576a12 12 0 0 1-11.695-9.31l-45.79-199.105-49.76 199.321A12 12 0 0 1 528.097 424h-32.192a12 12 0 0 1-11.643-9.094l-49.66-198.927-46.096 198.732a12 12 0 0 1-11.69 9.289h-35.381a12 12 0 0 1-3.115-0.411c-6.4-1.72-10.194-8.303-8.474-14.703l74.173-276A12 12 0 0 1 415.606 124h31.99a12 12 0 0 1 11.59 8.893L512 329.905z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-zip-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM296 760v-64h64v64h-64z m64-64v-64h64v64h-64z m-64-64v-64h64v64h-64z m64-64v-64h64v64h-64z m-64-64v-64h64v64h-64z m64-64v-64h64v64h-64z m-64-64v-64h64v64h-64z m0-64v-160h128V312H296z m48-48h32v-64h-32v64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-pdf-fill" unicode="" d="M854.6 607.3c6-6 9.4-14.1 9.4-22.6V-32c0-17.7-14.3-32-32-32H192c-17.7 0-32 14.3-32 32V800c0 17.7 14.3 32 32 32h424.7c8.5 0 16.7-3.4 22.7-9.4l215.2-215.3zM790.2 570L602 758.2V570h188.2zM633.217 258.744c-15.174 0.489-31.314-0.67-49.65-2.964-24.298 14.987-40.654 35.582-52.274 65.827 0.28 1.152 0.86 3.538 1.063 4.38 0.474 1.958 0.867 3.594 1.243 5.185 4.293 18.13 6.615 31.358 7.3 44.695 0.518 10.074-0.04 19.368-1.827 27.976-3.298 18.584-16.454 29.453-33.021 30.126-15.446 0.627-29.649-7.993-33.281-21.373-5.913-21.612-2.45-50.07 10.08-98.582-15.964-38.056-37.052-82.661-51.203-107.539-18.885-9.74-33.604-18.605-45.953-28.427-16.303-12.966-26.48-26.29-29.286-40.306-1.355-6.48 0.692-14.966 5.36-21.912 5.296-7.879 13.282-12.991 22.855-13.735 24.152-1.877 53.83 23.024 86.59 79.258 3.295 1.09 6.78 2.257 11.026 3.69 2.323 0.783 10.464 3.538 11.91 4.026 7.521 2.54 12.98 4.36 18.376 6.116 23.396 7.612 41.096 12.429 57.21 15.163 27.973-14.973 60.316-24.796 82.098-24.796 17.979 0 30.126 9.319 34.515 23.985 3.857 12.886 0.794 27.824-7.473 36.084-8.56 8.41-24.3 12.434-45.658 13.123z m-247.985-128.42v0.36l0.126 0.338c1.275 3.421 3.157 7.008 5.6 10.758 4.284 6.576 10.173 13.5 17.472 20.865 3.92 3.955 8.002 7.8 12.79 12.12 1.073 0.969 7.91 7.059 9.189 8.25l11.176 10.407-8.12-12.934c-12.326-19.638-23.46-33.78-33.013-43.004-3.507-3.387-6.6-5.9-9.091-7.505-1.027-0.662-1.916-1.144-2.613-1.424-0.409-0.163-0.771-0.268-1.13-0.302a2.202 2.202 0 0 0-1.117 0.16 2.068 2.068 0 0 0-1.269 1.911z m125.934 218.269l-2.26-4.007-1.39 4.385c-3.114 9.829-5.387 24.641-6.016 37.997-0.716 15.197 0.49 24.323 5.286 24.323 6.74 0 9.831-10.808 10.076-27.053 0.216-14.28-2.03-29.142-5.696-35.645z m-5.81-58.464l1.534 4.05 2.088-3.795c11.69-21.245 26.858-38.967 43.538-51.315l3.595-2.662-4.38-0.904c-16.328-3.372-31.544-8.457-52.34-16.842 2.174 0.876-21.623-8.863-27.638-11.169l-5.252-2.013 2.802 4.877c12.35 21.496 23.758 47.326 36.052 79.773z m157.626-76.261c-7.864-3.104-24.777-0.329-54.569 12.387l-7.561 3.227 8.199 0.607c23.295 1.724 39.807 0.44 49.422-3.08 4.09-1.498 6.824-3.388 8.037-5.553 1.31-2.336 0.71-4.81-1.362-6.31-0.448-0.427-1.155-0.88-2.166-1.278z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-image-fill" unicode="" d="M854.6 607.3L639.4 822.6c-6 6-14.2 9.4-22.7 9.4H192c-17.7 0-32-14.3-32-32v-832c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V584.7c0 8.5-3.4 16.6-9.4 22.6zM400 494c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z m296-294H328c-6.7 0-10.4 7.7-6.3 12.9l99.8 127.2c3.2 4.1 9.4 4.1 12.6 0l41.1-52.4 77.8 99.2c3.2 4.1 9.4 4.1 12.6 0l136.5-174c4.3-5.2 0.5-12.9-6.1-12.9z m-94 370V758.2L790.2 570H602z" horiz-adv-x="1024" /> + + + <glyph glyph-name="diff-fill" unicode="" d="M854.2 589.4L611.3 823.1c-6 5.7-13.9 8.9-22.2 8.9H296c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h277l219-210.6V72c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V566.4c0 8.7-3.5 17-9.8 23zM553.4 694.6c-6 6-14.1 9.4-22.6 9.4H192c-17.7 0-32-14.3-32-32v-704c0-17.7 14.3-32 32-32h512c17.7 0 32 14.3 32 32V498.7c0 8.5-3.4 16.6-9.4 22.6L553.4 694.6zM568 143c0-3.8-3.4-7-7.5-7h-225c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7h225c4.1 0 7.5-3.2 7.5-7v-42z m0 220c0-3.8-3.4-7-7.5-7H476v-84.9c0-3.9-3.1-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V356h-84.5c-4.1 0-7.5 3.2-7.5 7v42c0 3.9 3.4 7 7.5 7H420v84.9c0 3.9 3.2 7.1 7 7.1h42c3.9 0 7-3.2 7-7.1V412h84.5c4.1 0 7.5-3.1 7.5-7v-42z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-copy-fill" unicode="" d="M832 832H296c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h496v-688c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V800c0 17.7-14.3 32-32 32zM704 704H192c-17.7 0-32-14.3-32-32v-530.7c0-8.5 3.4-16.6 9.4-22.6l173.3-173.3c2.2-2.2 4.7-4 7.4-5.5v-1.9h4.2c3.5-1.3 7.2-2 11-2H704c17.7 0 32 14.3 32 32V672c0 17.7-14.3 32-32 32zM382 0h-0.2L232 149.8v0.2h150v-150z" horiz-adv-x="1024" /> + + + <glyph glyph-name="snippets-fill" unicode="" d="M832 784H724V824c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-40H500V824c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-40H320c-17.7 0-32-14.3-32-32v-120h-96c-17.7 0-32-14.3-32-32v-632c0-17.7 14.3-32 32-32h512c17.7 0 32 14.3 32 32v96h96c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM664 410H514V560h0.2L664 410.2v-0.2z m128-274h-56V440L544 632H360v80h68v-32c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v32h152v-32c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v32h68v-576z" horiz-adv-x="1024" /> + + + <glyph glyph-name="batchfolding-fill" unicode="" d="M752 656H144c-17.7 0-32-14.3-32-32v-608c0-17.7 14.3-32 32-32h608c17.7 0 32 14.3 32 32V624c0 17.7-14.3 32-32 32zM596 290c0-4.4-3.6-8-8-8H308c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h280c4.4 0 8-3.6 8-8v-48zM880 784H264c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h576v-576c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V752c0 17.7-14.3 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reconciliation-fill" unicode="" d="M676 273c-18.8 0-34-15.2-34-34s15.2-34 34-34 34 15.2 34 34-15.2 34-34 34zM880 728H668c0 30.9-25.1 56-56 56h-80c-30.9 0-56-25.1-56-56H264c-17.7 0-32-14.3-32-32v-200h-88c-17.7 0-32-14.3-32-32v-448c0-17.7 14.3-32 32-32h336c17.7 0 32 14.3 32 32v16h368c17.7 0 32 14.3 32 32V696c0 17.7-14.3 32-32 32zM448 48H176V280h272v-232z m0 296H176v88h272v-88z m20 272v48h72v56h64v-56h72v-48H468z m180-168v-56c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8z m28-301c-50.8 0-92 41.2-92 92s41.2 92 92 92 92-41.2 92-92-41.2-92-92-92z m92 245c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8v96c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-96zM676 331c-50.8 0-92-41.2-92-92s41.2-92 92-92 92 41.2 92 92-41.2 92-92 92z m0-126c-18.8 0-34 15.2-34 34s15.2 34 34 34 34-15.2 34-34-15.2-34-34-34z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder-add-fill" unicode="" d="M880 597.6H521L403.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H144c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V565.6c0 17.7-14.3 32-32 32zM632 319c0-3.8-3.4-7-7.5-7H540v-84.9c0-3.9-3.2-7.1-7-7.1h-42c-3.8 0-7 3.2-7 7.1V312h-84.5c-4.1 0-7.5 3.2-7.5 7v42c0 3.8 3.4 7 7.5 7H484v84.9c0 3.9 3.2 7.1 7 7.1h42c3.8 0 7-3.2 7-7.1V368h84.5c4.1 0 7.5-3.2 7.5-7v-42z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder-fill" unicode="" d="M880 597.6H521L403.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H144c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V565.6c0 17.7-14.3 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="folder-open-fill" unicode="" d="M928 452H820V565.6c0 17.7-14.3 32-32 32H473L355.7 709.8c-1.5 1.4-3.5 2.2-5.5 2.2H96c-17.7 0-32-14.3-32-32v-592c0-17.7 14.3-32 32-32h698c13 0 24.8 7.9 29.7 20l134 332c1.5 3.8 2.3 7.9 2.3 12 0 17.7-14.3 32-32 32z m-180 0H238c-13 0-24.8-7.9-29.7-20L136 252.8V640h188.5l119.6-114.4H748V452z" horiz-adv-x="1024" /> + + + <glyph glyph-name="database-fill" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-224h704V800c0 17.7-14.3 32-32 32zM288 664c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40zM160-32c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V192H160v-224z m128 136c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40zM160 256h704V512H160v-256z m128 168c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40z" horiz-adv-x="1024" /> + + + <glyph glyph-name="container-fill" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-529c0 0.6 0.4 1 1 1h219.3l5.2-24.7C397.6 187.5 450.8 144 512 144s114.4 43.5 126.4 103.3l5.2 24.7H863c0.6 0 1-0.4 1-1V800c0 17.7-14.3 32-32 32zM712 403c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48z m0 160c0-4.4-3.6-8-8-8H320c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h384c4.4 0 8-3.6 8-8v-48zM863 209H694.1c-11.6-32.8-32-62.3-59.1-84.7-34.5-28.6-78.2-44.3-123-44.3s-88.5 15.8-123 44.3c-27.1 22.4-47.5 51.9-59.1 84.7H161c-0.6 0-1 0.4-1 1v-242c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V210c0-0.6-0.4-1-1-1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sever-fill" unicode="" d="M832 832H192c-17.7 0-32-14.3-32-32v-224h704V800c0 17.7-14.3 32-32 32zM456 680c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48zM160-32c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V192H160v-224z m576 136c22.1 0 40-17.9 40-40s-17.9-40-40-40-40 17.9-40 40 17.9 40 40 40zM160 256h704V512H160v-256z m96 152c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48c0-4.4-3.6-8-8-8H264c-4.4 0-8 3.6-8 8v48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="calendar-check-fill" unicode="" d="M928 672H768v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H96c-17.7 0-32-14.3-32-32v-576c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V640c0 17.7-14.3 32-32 32zM424 208c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48z m0 136c0-4.4-3.6-8-8-8H232c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h184c4.4 0 8-3.6 8-8v-48z m374.5 91.3l-165-228.7c-6.4-8.8-19.4-8.8-25.8 0L493.5 364.8c-3.8 5.3 0 12.7 6.5 12.7h54.9c5.1 0 9.9-2.5 12.9-6.6l52.8-73.1 103.7 143.7c3 4.2 7.8 6.6 12.9 6.6H792c6.5-0.1 10.3-7.5 6.5-12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="image-fill" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32zM338 592c35.3 0 64-28.7 64-64s-28.7-64-64-64-64 28.7-64 64 28.7 64 64 64z m513.9-437.1c-1.4-1.2-3.3-1.9-5.2-1.9H177.2c-4.4 0-8 3.6-8 8 0 1.9 0.7 3.7 1.9 5.2l170.3 202c2.8 3.4 7.9 3.8 11.3 1 0.3-0.3 0.7-0.6 1-1l99.4-118 158.1 187.5c2.8 3.4 7.9 3.8 11.3 1 0.3-0.3 0.7-0.6 1-1l229.6-271.6c2.6-3.3 2.2-8.4-1.2-11.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="idcard-fill" unicode="" d="M373 485c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52 51.7 23.3 51.7 52-23.2 52-51.7 52zM928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32zM608 476c0 4.4 1 8 2.3 8h123.4c1.3 0 2.3-3.6 2.3-8v-48c0-4.4-1-8-2.3-8H610.3c-1.3 0-2.3 3.6-2.3 8v48z m-86-253h-43.9c-4.2 0-7.6 3.3-7.9 7.5-3.8 50.5-46 90.5-97.2 90.5s-93.4-40-97.2-90.5c-0.3-4.2-3.7-7.5-7.9-7.5H224c-4.6 0-8.2 3.8-8 8.4 2.8 53.3 32 99.7 74.6 126.1-18.1 19.9-29.1 46.4-29.1 75.5 0 61.9 49.9 112 111.4 112s111.4-50.1 111.4-112c0-29.1-11-55.5-29.1-75.5 42.7-26.5 71.8-72.8 74.6-126.1 0.4-4.6-3.2-8.4-7.8-8.4z m278.9 53H615.1c-3.9 0-7.1 3.6-7.1 8v48c0 4.4 3.2 8 7.1 8h185.7c3.9 0 7.1-3.6 7.1-8v-48h0.1c0-4.4-3.2-8-7.1-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="creditcard-fill" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-160h896V704c0 17.7-14.3 32-32 32zM64 64c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V456H64v-392z m579 184c0 4.4 3.6 8 8 8h165c4.4 0 8-3.6 8-8v-72c0-4.4-3.6-8-8-8H651c-4.4 0-8 3.6-8 8v72z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fund-fill" unicode="" d="M926 732H94c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V700c0 17.7-14.3 32-32 32z m-92.3-194.4l-297-297.2c-3.1-3.1-8.2-3.1-11.3 0L410.9 354.9 238.4 182.3c-3.1-3.1-8.2-3.1-11.3 0l-36.8 36.8c-3.1 3.1-3.1 8.2 0 11.3l214.9 215c3.1 3.1 8.2 3.1 11.3 0L531 331l254.5 254.6c3.1 3.1 8.2 3.1 11.3 0l36.8-36.8c3.2-3 3.2-8.1 0.1-11.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="read-fill" unicode="" d="M928 735H699.2c-49.1 0-97.1-14.1-138.4-40.7L512 663l-48.8 31.3C422 720.9 373.9 735 324.8 735H96c-17.7 0-32-14.3-32-32v-568c0-17.7 14.3-32 32-32h228.8c49.1 0 97.1-14.1 138.4-40.7l44.4-28.6c1.3-0.8 2.8-1.3 4.3-1.3s3 0.4 4.3 1.3l44.4 28.6C602 88.9 650.1 103 699.2 103H928c17.7 0 32 14.3 32 32V703c0 17.7-14.3 32-32 32zM404 342.5c0-4.1-3.2-7.5-7.1-7.5H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45z m0 140c0-4.1-3.2-7.5-7.1-7.5H211.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45z m416-140c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45z m0 140c0-4.1-3.2-7.5-7.1-7.5H627.1c-3.9 0-7.1 3.4-7.1 7.5v45c0 4.1 3.2 7.5 7.1 7.5h185.7c3.9 0 7.1-3.4 7.1-7.5v-45z" horiz-adv-x="1024" /> + + + <glyph glyph-name="contacts-fill" unicode="" d="M928 672H768v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H548v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H328v56c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-56H96c-17.7 0-32-14.3-32-32v-576c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V640c0 17.7-14.3 32-32 32zM661 160h-43.9c-4.2 0-7.6 3.3-7.9 7.5-3.8 50.6-46 90.5-97.2 90.5s-93.4-40-97.2-90.5c-0.3-4.2-3.7-7.5-7.9-7.5H363c-4.6 0-8.2 3.8-8 8.4 2.8 53.3 32 99.7 74.6 126.1-18.1 19.9-29.1 46.4-29.1 75.5 0 61.9 49.9 112 111.4 112 61.5 0 111.4-50.1 111.4-112 0-29.1-11-55.5-29.1-75.5 42.7-26.5 71.8-72.8 74.6-126.1 0.4-4.6-3.2-8.4-7.8-8.4zM512 422c-28.5 0-51.7-23.3-51.7-52s23.2-52 51.7-52c28.5 0 51.7 23.3 51.7 52s-23.2 52-51.7 52z" horiz-adv-x="1024" /> + + + <glyph glyph-name="delete-fill" unicode="" d="M864 640H736v80c0 35.3-28.7 64-64 64H352c-35.3 0-64-28.7-64-64v-80H160c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8h60.4l24.7-523c1.6-34.1 29.8-61 63.9-61h454c34.2 0 62.3 26.8 63.9 61l24.7 523H888c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32z m-200 0H360v72h304v-72z" horiz-adv-x="1024" /> + + + <glyph glyph-name="notification-fill" unicode="" d="M880 784c-3.8 0-7.7-0.7-11.6-2.3L292 550.1H128c-8.8 0-16-7.4-16-16.6v-299c0-9.2 7.2-16.6 16-16.6h101.6c-3.7-11.6-5.6-23.9-5.6-36.4 0-65.9 53.8-119.5 120-119.5 55.4 0 102.1 37.6 115.9 88.4l408.6-164.2c3.9-1.5 7.8-2.3 11.6-2.3 16.9 0 32 14.2 32 33.2V750.8C912 769.8 897 784 880 784zM344 133.7c-26.5 0-48 21.4-48 47.8 0 11.2 3.9 21.9 11 30.4l84.9-34.1c-2-24.6-22.7-44.1-47.9-44.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="flag-fill" unicode="" d="M880 591H624V704c0 17.7-14.3 32-32 32H184v40c0 4.4-3.6 8-8 8h-56c-4.4 0-8-3.6-8-8v-784c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8V256h248v-113c0-17.7 14.3-32 32-32h416c17.7 0 32 14.3 32 32V559c0 17.7-14.3 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="moneycollect-fill" unicode="" d="M911.5 196.3c-1.5 4.2-6.1 6.3-10.3 4.8L840 178.8V717c0 37.6-30.4 68-68 68H252c-37.6 0-68-30.4-68-68v-538.2l-61.3 22.3c-0.9 0.3-1.8 0.5-2.7 0.5-4.4 0-8-3.6-8-8V134c0-3.3 2.1-6.3 5.3-7.5L501-13.1c7.1-2.6 14.8-2.6 21.9 0l383.8 139.5c3.2 1.2 5.3 4.2 5.3 7.5v59.6c0 1-0.2 1.9-0.5 2.8z m-243.8 377L564 381.7h57.6c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3v-39h76.3c4.4 0 8-3.6 8-8v-27.1c0-4.4-3.6-8-8-8h-76.3V193c0-4.4-3.6-8-8-8h-49.9c-4.4 0-8 3.6-8 8v63.4h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h76v39h-76c-4.4 0-8 3.6-8 8v27.1c0 4.4 3.6 8 8 8h57L356.5 573.2c-2.1 3.8-0.7 8.7 3.2 10.8 1.2 0.7 2.5 1 3.8 1h55.7c3 0 5.7-1.7 7.1-4.4L511 411.8h3.3L599 580.6c1.3 2.7 4.1 4.4 7.1 4.4h54.5c4.4 0 8-3.6 8.1-7.9 0-1.3-0.4-2.6-1-3.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="medicinebox-fill" unicode="" d="M839.2 617.9c-4.3 13.2-16.6 22.1-30.4 22.1H736V752c0 17.7-14.3 32-32 32H320c-17.7 0-32-14.3-32-32v-112h-72.8c-13.9 0-26.1-8.9-30.4-22.1L112 394v-378c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V394l-72.8 223.9zM660 268c0-4.4-3.6-8-8-8H544v-108c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V260H372c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h108V432c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-108h108c4.4 0 8-3.6 8-8v-48z m4 372H360v72h304v-72z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rest-fill" unicode="" d="M832 640h-28.1l-35.7 120.9c-4 13.7-16.5 23.1-30.7 23.1h-451c-14.3 0-26.8-9.4-30.7-23.1L220.1 640H192c-17.7 0-32-14.3-32-32v-28c0-4.4 3.6-8 8-8h45.8l47.7-558.7c1.4-16.6 15.3-29.3 31.9-29.3h429.2c16.6 0 30.5 12.7 31.9 29.3L802.2 572H856c4.4 0 8 3.6 8 8v28c0 17.7-14.3 32-32 32zM508 192c-79.5 0-144 64.5-144 144s64.5 144 144 144 144-64.5 144-144-64.5-144-144-144zM291 640l22.4 76h397.2l22.4-76H291zM508 336m-80 0a80 80 0 1 1 160 0 80 80 0 1 1-160 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shopping-fill" unicode="" d="M832 584H696v16c0 101.6-82.4 184-184 184s-184-82.4-184-184v-16H192c-17.7 0-32-14.3-32-32v-536c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V552c0 17.7-14.3 32-32 32z m-208 0H400v16c0 61.9 50.1 112 112 112s112-50.1 112-112v-16z" horiz-adv-x="1024" /> + + + <glyph glyph-name="skin-fill" unicode="" d="M870 770H663.8c-17.4 0-32.9-11.9-37-29.3C614.3 687.9 567 650 512 650s-102.3 37.9-114.8 90.7c-4.1 17.4-19.5 29.3-37 29.3H154c-24.3 0-44-19.7-44-44v-252c0-24.3 19.7-44 44-44h75v-388c0-24.3 19.7-44 44-44h478c24.3 0 44 19.7 44 44V430h75c24.3 0 44 19.7 44 44V726c0 24.3-19.7 44-44 44z" horiz-adv-x="1024" /> + + + <glyph glyph-name="video-fill" unicode="" d="M912 593.7L784 520V672c0 35.3-28.7 64-64 64H128c-35.3 0-64-28.7-64-64v-576c0-35.3 28.7-64 64-64h592c35.3 0 64 28.7 64 64V248l128-73.7c21.3-12.3 48 3.1 48 27.6V566c0 24.6-26.7 40-48 27.7zM328 544c0-4.4-3.6-8-8-8H208c-4.4 0-8 3.6-8 8v48c0 4.4 3.6 8 8 8h112c4.4 0 8-3.6 8-8v-48z m560-273l-104 59.8V437.1L888 497v-226z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sound-fill" unicode="" d="M892.1 158.2l-110.3 63.7c-2.5 1.4-5.2 2.1-7.9 2.1-5.5 0-10.9-2.9-13.8-8l-19.9-34.5c-4.4-7.6-1.8-17.4 5.8-21.8L856.3 96c2.5-1.4 5.2-2.1 7.9-2.1 5.5 0 10.9 2.9 13.8 8l19.9 34.5c4.4 7.6 1.7 17.4-5.8 21.8zM760 552c2.9-5.1 8.3-8 13.8-8 2.7 0 5.4 0.7 7.9 2.1L892 609.8c7.6 4.4 10.2 14.2 5.8 21.8L878 666c-2.9 5.1-8.3 8-13.8 8-2.7 0-5.4-0.7-7.9-2.1L746 608.2c-7.6-4.4-10.2-14.2-5.8-21.8L760 552zM934 420H806c-8.8 0-16-7.2-16-16v-40c0-8.8 7.2-16 16-16h128c8.8 0 16 7.2 16 16v40c0 8.8-7.2 16-16 16zM625.9 781c-5.9 0-11.9-1.6-17.4-5.3L254 544H90c-8.8 0-16-7.2-16-16v-288c0-8.8 7.2-16 16-16h164l354.5-231.7c5.5-3.6 11.6-5.3 17.4-5.3 16.7 0 32.1 13.3 32.1 32.1V748.9c0 18.8-15.4 32.1-32.1 32.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bulb-fill" unicode="" d="M348 219.9C250 276.6 184 382.6 184 504c0 181.1 146.9 328 328 328s328-146.9 328-328c0-121.4-66-227.4-164-284.1V104c0-17.7-14.3-32-32-32H380c-17.7 0-32 14.3-32 32V219.9zM392 8h240c4.4 0 8-3.6 8-8v-32c0-17.7-14.3-32-32-32H416c-17.7 0-32 14.3-32 32v32c0 4.4 3.6 8 8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bell-fill" unicode="" d="M816 128h-24V468c0 141.1-104.3 257.8-240 277.2V784c0 22.1-17.9 40-40 40s-40-17.9-40-40v-38.8C336.3 725.8 232 609.1 232 468v-340h-24c-17.7 0-32-14.3-32-32v-32c0-4.4 3.6-8 8-8h216c0-61.8 50.2-112 112-112s112 50.2 112 112h216c4.4 0 8 3.6 8 8v32c0 17.7-14.3 32-32 32zM512 8c-26.5 0-48 21.5-48 48h96c0-26.5-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="filter-fill" unicode="" d="M349 58c0-17.7 14.2-32 31.8-32h262.4c17.6 0 31.8 14.3 31.8 32V254H349v-196zM880.1 742H143.9c-24.5 0-39.8-26.7-27.5-48l221.3-376h348.8l221.3 376c12.1 21.3-3.2 48-27.7 48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fire-fill" unicode="" d="M834.1 426.8c-19.5 43.8-47.4 82.6-82.9 115.2l-29.1 26.7c-4.3 3.8-11.1 2.1-13-3.3l-13-37.3c-8.1-23.4-23-47.3-44.1-70.8-1.4-1.5-3-1.9-4.1-2-1.1-0.1-2.8 0.1-4.3 1.5-1.4 1.2-2.1 3-2 4.8 3.7 60.2-14.3 128.1-53.7 202C555.3 725 510 772.9 453.4 806.3l-41.3 24.3c-5.4 3.2-12.3-1-12-7.3l2.2-48c1.5-32.8-2.3-61.8-11.3-85.9-11-29.5-26.8-56.9-47-81.5-14.2-17.2-30.1-32.7-47.5-46.1-42.1-32.3-76.8-74.4-100.3-121.5C172.5 392.7 160 339.4 160 286c0-47.2 9.3-92.9 27.7-136 17.8-41.5 43.2-78.9 75.5-110.9 32.4-32 70-57.2 111.9-74.7C418.5-53.8 464.5-63 512-63s93.5 9.2 136.9 27.3c41.9 17.5 79.6 42.6 111.9 74.7 32.4 32 57.8 69.4 75.5 110.9 18.4 43.1 27.7 88.8 27.7 136 0 48.8-10 96.2-29.9 140.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="funnelplot-fill" unicode="" d="M336.7 310h350.6l84.9 148H251.8zM880.1 742H143.9c-24.5 0-39.8-26.7-27.5-48L215 522h594l98.7 172c12.2 21.3-3.1 48-27.6 48zM349 58c0-17.7 14.2-32 31.8-32h262.4c17.6 0 31.8 14.3 31.8 32V246H349v-188z" horiz-adv-x="1024" /> + + + <glyph glyph-name="gift-fill" unicode="" d="M160 2c0-17.7 14.3-32 32-32h286V346H160v-344zM546-30h286c17.7 0 32 14.3 32 32V346H546v-376zM880 586H732.4c13.6 21.4 21.6 46.8 21.6 74 0 76.1-61.9 138-138 138-41.4 0-78.7-18.4-104-47.4-25.3 29-62.6 47.4-104 47.4-76.1 0-138-61.9-138-138 0-27.2 7.9-52.6 21.6-74H144c-17.7 0-32-14.3-32-32v-140h366V586h68v-172h366V554c0 17.7-14.3 32-32 32z m-402 4h-70c-38.6 0-70 31.4-70 70s31.4 70 70 70 70-31.4 70-70v-70z m138 0h-70v70c0 38.6 31.4 70 70 70s70-31.4 70-70-31.4-70-70-70z" horiz-adv-x="1024" /> + + + <glyph glyph-name="hourglass-fill" unicode="" d="M742 578V712h86c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8H196c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h86v-134c0-81.5 42.4-153.2 106.4-194-64-40.8-106.4-112.5-106.4-194v-134h-86c-4.4 0-8-3.6-8-8v-56c0-4.4 3.6-8 8-8h632c4.4 0 8 3.6 8 8v56c0 4.4-3.6 8-8 8h-86V190c0 81.5-42.4 153.2-106.4 194 64 40.8 106.4 112.5 106.4 194z" horiz-adv-x="1024" /> + + + <glyph glyph-name="home-fill" unicode="" d="M946.5 391L534.6 802.6c-12.5 12.5-32.7 12.5-45.2 0L77.5 391c-12-12-18.8-28.3-18.8-45.3 0-35.3 28.7-64 64-64h43.4V-12c0-17.7 14.3-32 32-32H448V180h112v-224h265.9c17.7 0 32 14.3 32 32V281.7h43.4c17 0 33.3 6.7 45.3 18.8 24.9 25 24.9 65.5-0.1 90.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="trophy-fill" unicode="" d="M868 736h-92v40c0 4.4-3.6 8-8 8H256c-4.4 0-8-3.6-8-8v-40h-92c-24.3 0-44-19.7-44-44v-148c0-81.7 60-149.6 138.2-162C265.6 265.8 359 174.2 476 161.5v-105.2H280c-17.7 0-32-14.3-32-32V-8c0-4.4 3.6-8 8-8h512c4.4 0 8 3.6 8 8v32.3c0 17.7-14.3 32-32 32H548V161.5C665 174.2 758.4 265.8 773.8 382 852 394.4 912 462.3 912 544V692c0 24.3-19.7 44-44 44zM248 456.4c-37.1 11.9-64 46.7-64 87.6V664h64v-207.6zM840 544c0-41-26.9-75.8-64-87.6V664h64v-120z" horiz-adv-x="1024" /> + + + <glyph glyph-name="location-fill" unicode="" d="M512 569c-29.9 0-58-11.6-79.2-32.8C411.7 515 400 486.9 400 457c0-29.9 11.7-58 32.8-79.2C454 356.7 482.1 345 512 345c29.9 0 58 11.7 79.2 32.8C612.4 399 624 427.1 624 457c0 29.9-11.6 58-32.8 79.2S541.9 569 512 569zM854.6 606.9c-18.8 43.4-45.7 82.3-79.9 115.7-34.2 33.4-73.9 59.5-118.2 77.8C610.7 819.4 562.1 829 512 829c-50.1 0-98.7-9.6-144.5-28.5-44.3-18.3-84-44.5-118.2-77.8-34.2-33.4-61.1-72.4-79.9-115.7-19.5-45-29.4-92.8-29.4-142 0-70.6 16.9-140.9 50.1-208.7 26.7-54.5 64-107.6 111-158.1 80.3-86.2 164.5-138.9 188.4-153 6.9-4.1 14.7-6.1 22.4-6.1 7.8 0 15.5 2 22.4 6.1 23.9 14.1 108.1 66.8 188.4 153 47 50.4 84.3 103.6 111 158.1C867.1 324 884 394.2 884 464.9c0 49.2-9.9 97-29.4 142zM512 281c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cloud-fill" unicode="" d="M811.4 477.3C765.6 598.1 648.9 684 512.2 684S258.8 598.2 213 477.4C127.3 454.9 64 376.9 64 284c0-110.5 89.5-200 199.9-200h496.2C870.5 84 960 173.5 960 284c0 92.7-63.1 170.7-148.6 193.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="customerservice-fill" unicode="" d="M512 768c-212.1 0-384-171.9-384-384v-360c0-13.3 10.7-24 24-24h184c35.3 0 64 28.7 64 64V272c0 35.3-28.7 64-64 64H200v48c0 172.3 139.7 312 312 312s312-139.7 312-312v-48H688c-35.3 0-64-28.7-64-64v-208c0-35.3 28.7-64 64-64h184c13.3 0 24 10.7 24 24V384c0 212.1-171.9 384-384 384z" horiz-adv-x="1024" /> + + + <glyph glyph-name="experiment-fill" unicode="" d="M218.9 259.7l42.6-26.6c0.1-0.1 0.3-0.2 0.4-0.3l12.7-8 0.3-0.3c28.3-16.4 60.5-25.1 94.1-25.1 44.9 0 87.2 15.7 121 43.8 45.9 38.4 103.8 59.9 164.9 59.9 52.3 0 102.2-15.7 144.6-44.5l7.9-5-111.6 289V716.2h63.5c4.4 0 8 3.6 8 8V776c0 4.4-3.6 8-8 8H264.7c-4.4 0-8-3.6-8-8v-51.9c0-4.4 3.6-8 8-8h63.5v-173.6L218.9 259.7z m333 203.1c22 0 39.9-17.9 39.9-39.9S573.9 383 551.9 383 512 400.9 512 422.9s17.9 39.9 39.9 39.9zM878 70.9l-29.9 77.4-85.7 53.5-0.1-0.1c-0.7 0.5-1.5 1-2.2 1.5l-8.1 5-0.3 0.3c-29 17.5-62.3 26.8-97 26.8-44.9 0-87.2-15.7-121-43.8-45.9-38.4-103.8-59.9-164.9-59.9-53 0-103.5 16.1-146.2 45.6l-28.9 18.1L146 70.9c-2.8-7.4-4.3-15.2-4.3-23 0-35.2 28.6-63.8 63.8-63.8h612.9c7.9 0 15.7 1.5 23 4.3 33 12.6 49.4 49.6 36.6 82.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="eye-fill" unicode="" d="M508 384m-112 0a112 112 0 1 1 224 0 112 112 0 1 1-224 0ZM942.2 409.8C847.4 609.5 704.1 710 512 710c-192.2 0-335.4-100.5-430.2-300.3-7.7-16.2-7.7-35.2 0-51.5C176.6 158.5 319.9 58 512 58c192.2 0 335.4 100.5 430.2 300.3 7.7 16.2 7.7 35 0 51.5zM508 208c-97.2 0-176 78.8-176 176s78.8 176 176 176 176-78.8 176-176-78.8-176-176-176z" horiz-adv-x="1024" /> + + + <glyph glyph-name="like-fill" unicode="" d="M885.9 362.3c16.8 22.2 26.1 49.4 26.1 77.7 0 44.9-25.1 87.4-65.5 111.1a67.67 67.67 0 0 1-34.3 9.3H572.4l6 122.9c1.4 29.7-9.1 57.9-29.5 79.4-20.5 21.5-48.1 33.4-77.9 33.4-52 0-98-35-111.8-85.1l-85.9-311h-0.3v-428h472.3c9.2 0 18.2 1.8 26.5 5.4 47.6 20.3 78.3 66.8 78.3 118.4 0 12.6-1.8 25-5.4 37 16.8 22.2 26.1 49.4 26.1 77.7 0 12.6-1.8 25-5.4 37 16.8 22.2 26.1 49.4 26.1 77.7-0.2 12.6-2 25.1-5.6 37.1zM112 368v-364c0-17.7 14.3-32 32-32h65V400h-65c-17.7 0-32-14.3-32-32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="lock-fill" unicode="" d="M832 432h-68V656c0 70.7-57.3 128-128 128H388c-70.7 0-128-57.3-128-128v-224h-68c-17.7 0-32-14.3-32-32v-384c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V400c0 17.7-14.3 32-32 32zM540 195v-53c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v53c-12.1 8.7-20 22.9-20 39 0 26.5 21.5 48 48 48s48-21.5 48-48c0-16.1-7.9-30.3-20-39z m152 237H332V656c0 30.9 25.1 56 56 56h248c30.9 0 56-25.1 56-56v-224z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unlike-fill" unicode="" d="M885.9 405.7c3.6 12 5.4 24.4 5.4 37 0 28.3-9.3 55.5-26.1 77.7 3.6 12 5.4 24.4 5.4 37 0 28.3-9.3 55.5-26.1 77.7 3.6 12 5.4 24.4 5.4 37 0 51.6-30.7 98.1-78.3 118.4-8.3 3.6-17.2 5.4-26.5 5.4H273v-428h0.3l85.8-310.8C372.9 7 418.9-28 470.9-28c29.7 0 57.4 11.8 77.9 33.4 20.5 21.5 31 49.7 29.5 79.4l-6 122.9h239.9c12.1 0 23.9 3.2 34.3 9.3 40.4 23.5 65.5 66.1 65.5 111 0 28.3-9.3 55.5-26.1 77.7zM112 764v-364c0-17.7 14.3-32 32-32h65V796h-65c-17.7 0-32-14.3-32-32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="star-fill" unicode="" d="M908.1 542.9l-253.9 36.9L540.7 809.9c-3.1 6.3-8.2 11.4-14.5 14.5-15.8 7.8-35 1.3-42.9-14.5L369.8 579.8l-253.9-36.9c-7-1-13.4-4.3-18.3-9.3-12.3-12.7-12.1-32.9 0.6-45.3l183.7-179.1-43.4-252.9c-1.2-6.9-0.1-14.1 3.2-20.3 8.2-15.6 27.6-21.7 43.2-13.4L512 142l227.1-119.4c6.2-3.3 13.4-4.4 20.3-3.2 17.4 3 29.1 19.5 26.1 36.9l-43.4 252.9 183.7 179.1c5 4.9 8.3 11.3 9.3 18.3 2.7 17.5-9.5 33.7-27 36.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unlock-fill" unicode="" d="M832 432H332V656c0 30.9 25.1 56 56 56h248c30.9 0 56-25.1 56-56v-68c0-4.4 3.6-8 8-8h56c4.4 0 8 3.6 8 8v68c0 70.7-57.3 128-128 128H388c-70.7 0-128-57.3-128-128v-224h-68c-17.7 0-32-14.3-32-32v-384c0-17.7 14.3-32 32-32h640c17.7 0 32 14.3 32 32V400c0 17.7-14.3 32-32 32zM540 195v-53c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v53c-12.1 8.7-20 22.9-20 39 0 26.5 21.5 48 48 48s48-21.5 48-48c0-16.1-7.9-30.3-20-39z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alert-fill" unicode="" d="M512 652c176.179 0 319-142.821 319-319v-233c0-17.673-14.327-32-32-32H225c-17.673 0-32 14.327-32 32V333c0 176.179 142.821 319 319 319zM484 828h56a8 8 0 0 0 8-8v-96a8 8 0 0 0-8-8h-56a8 8 0 0 0-8 8V820a8 8 0 0 0 8 8zM177.255 704.343a8 8 0 0 0 11.314 0l67.882-67.882a8 8 0 0 0 0-11.314l-39.598-39.598a8 8 0 0 0-11.314 0l-67.882 67.882a8 8 0 0 0 0 11.314l39.598 39.598z m669.598 0l39.598-39.598a8 8 0 0 0 0-11.314l-67.882-67.882a8 8 0 0 0-11.314 0l-39.598 39.598a8 8 0 0 0 0 11.314l67.882 67.882a8 8 0 0 0 11.314 0zM192 4h640c17.673 0 32-14.327 32-32v-24a8 8 0 0 0-8-8H168a8 8 0 0 0-8 8v24c0 17.673 14.327 32 32 32z m148 317v-253h64V321h-64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="api-fill" unicode="" d="M917.7 747.2l-42.4 42.4c-1.6 1.6-3.6 2.3-5.7 2.3s-4.1-0.8-5.7-2.3l-76.1-76.1c-33.7 22.9-72.9 34.3-112.1 34.3-51.2 0-102.4-19.5-141.5-58.6L432.3 587.3c-3.1-3.1-3.1-8.2 0-11.3L704 304.3c1.6-1.6 3.6-2.3 5.7-2.3 2 0 4.1 0.8 5.7 2.3l101.9 101.9c68.9 69 77 175.7 24.3 253.5l76.1 76.1c3.1 3.2 3.1 8.3 0 11.4zM578.9 349.3c-3.1 3.1-8.2 3.1-11.3 0L501 282.7 410.7 373l66.7 66.7c3.1 3.1 3.1 8.2 0 11.3L441 487.4c-3.1 3.1-8.2 3.1-11.3 0L363 420.7l-43 43c-1.6 1.6-3.6 2.3-5.7 2.3-2 0-4.1-0.8-5.7-2.3L206.8 361.8c-68.9-68.9-77-175.7-24.3-253.5l-76.1-76.1c-3.1-3.1-3.1-8.2 0-11.3l42.4-42.4c1.6-1.6 3.6-2.3 5.7-2.3s4.1 0.8 5.7 2.3l76.1 76.1c33.7-22.9 72.9-34.3 112.1-34.3 51.2 0 102.4 19.5 141.5 58.6l101.9 101.9c3.1 3.1 3.1 8.2 0 11.3l-43 43 66.7 66.7c3.1 3.1 3.1 8.2 0 11.3l-36.6 36.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="highlight-fill" unicode="" d="M957.6 388.6L603.2 737.8c-3.1 3.1-8.1 3.1-11.2 0L353.3 502.6c-3.1-3.1-3.2-8.2-0.1-11.3l0.1-0.1 40-39.4-117.2-115.3c-3.1-3.1-3.2-8.2-0.1-11.3l0.1-0.1 39.5-38.9-189.1-187H72.1c-4.4 0-8.1-3.6-8.1-8V36c0-4.4 3.6-8 8-8h344.9c2.1 0 4.1 0.8 5.6 2.3l76.1 75.6 40.4-39.8c3.1-3.1 8.1-3.1 11.2 0l117.1 115.6 40.1-39.5c3.1-3.1 8.1-3.1 11.2 0l238.7 235.2c3.4 3 3.4 8 0.3 11.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="phone-fill" unicode="" d="M885.6 665.8L779.1 772.2c-15.3 15.3-35.8 23.8-57.3 23.8-21.7 0-42.1-8.5-57.4-23.8L549.8 657.6c-15.3-15.3-23.8-35.8-23.8-57.3 0-21.7 8.5-42.1 23.8-57.4l83.8-83.8c-19.7-43.4-46.8-82.4-80.5-116.1-33.6-33.8-72.7-60.9-116.1-80.8L353.2 346c-15.3 15.3-35.8 23.8-57.3 23.8-21.7 0-42.1-8.5-57.4-23.8L123.8 231.5c-15.3-15.3-23.8-35.8-23.8-57.4 0-21.7 8.5-42.1 23.8-57.4l106.3-106.3c24.4-24.5 58.1-38.4 92.7-38.4 7.3 0 14.3 0.6 21.2 1.8 134.8 22.2 268.5 93.9 376.4 201.7C828.2 283.2 899.8 416.8 922.3 552c6.8 41.3-6.9 83.8-36.7 113.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="edit-fill" unicode="" d="M880 60H144c-17.7 0-32-14.3-32-32v-36c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v36c0 17.7-14.3 32-32 32zM257.7 144c2 0 4 0.2 6 0.5L431.9 174c2 0.4 3.9 1.3 5.3 2.8l423.9 423.9c3.9 3.9 3.9 10.2 0 14.1L694.9 781.1c-1.9 1.9-4.4 2.9-7.1 2.9s-5.2-1-7.1-2.9L256.8 357.2c-1.5-1.5-2.4-3.3-2.8-5.3l-29.5-168.2c-1.9-11.1 1.5-21.9 9.4-29.8 6.6-6.4 14.9-9.9 23.8-9.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pushpin-fill" unicode="" d="M878.3 503.9L631.9 750.3c-6.5 6.5-15 9.7-23.5 9.7s-17-3.2-23.5-9.7L423.8 589.1c-12.2 1.4-24.5 2-36.8 2-73.2 0-146.4-24.1-206.5-72.3-15.4-12.3-16.6-35.4-2.7-49.4l181.7-181.7-215.4-215.2c-2.6-2.6-4.3-6.1-4.6-9.8l-3.4-37.2c-0.9-9.4 6.6-17.4 15.9-17.4 0.5 0 1 0 1.5 0.1l37.2 3.4c3.7 0.3 7.2 2 9.8 4.6l215.4 215.4 181.7-181.7c6.5-6.5 15-9.7 23.5-9.7 9.7 0 19.3 4.2 25.9 12.4 56.3 70.3 79.7 158.3 70.2 243.4l161.1 161.1c12.9 12.8 12.9 33.8 0 46.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rocket-fill" unicode="" d="M864 160c0 111.6-65.4 208-160 252.9V578.7c0 15.1-5.3 29.7-15.1 41.2L536.5 800.6C530.1 808.2 521 812 512 812s-18.1-3.8-24.5-11.4L335.1 619.9c-9.7-11.5-15.1-26.1-15.1-41.2v-165.8C225.4 368 160 271.6 160 160h156.5c-2.3-7.2-3.5-15-3.5-23.8 0-22.1 7.6-43.7 21.4-60.8 11.3-14 26.2-24.6 43.1-30.6 23.1-54 75.6-88.8 134.5-88.8 29.1 0 57.3 8.6 81.4 24.8 23.6 15.8 41.9 37.9 53 64 16.9 6 31.8 16.5 43.1 30.5 13.8 17.2 21.4 38.8 21.4 60.8 0 8.4-1.1 16.4-3.1 23.8L864 160zM512 544c26.5 0 48-21.5 48-48s-21.5-48-48-48-48 21.5-48 48 21.5 48 48 48z m116.1-432.2c-5.2-3-11.2-4.2-17.1-3.4l-19.5 2.4-2.8-19.4c-5.4-37.9-38.4-66.5-76.7-66.5s-71.3 28.6-76.7 66.5l-2.8 19.5-19.5-2.5c-1-0.1-2.1-0.2-3.3-0.2-4.9 0-9.6 1.3-13.8 3.7-8.7 5-14.1 14.3-14.1 24.4 0 10.6 5.9 19.4 14.6 23.8h231.3c8.8-4.5 14.6-13.3 14.6-23.8-0.1-10.2-5.5-19.6-14.2-24.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="thunderbolt-fill" unicode="" d="M848 536.7H627.7L825.8 787c4.1 5.3 0.4 13-6.3 13H436c-2.8 0-5.5-1.5-6.9-4L170 348.5c-3.1-5.3 0.7-12 6.9-12h174.4l-89.4-357.6c-1.9-7.8 7.5-13.3 13.3-7.7L853.5 523c5.2 4.9 1.7 13.7-5.5 13.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tag-fill" unicode="" d="M938 437.2l-29.6 312.6c-1.5 16.2-14.4 29-30.6 30.6L565.2 810h-0.4c-3.2 0-5.7-1-7.6-2.9L88.9 338.8c-3.9-3.9-3.9-10.2 0-14.1l363.8-363.8c1.9-1.9 4.4-2.9 7.1-2.9s5.2 1 7.1 2.9l468.3 468.3c2 2.1 3 5 2.8 8zM699 509c-35.3 0-64 28.7-64 64s28.7 64 64 64 64-28.7 64-64-28.7-64-64-64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wrench-fill" unicode="" d="M865.3 651.3c-0.3 0.3-61.1-59.8-182.1-180.6l-84.9 84.9 180.9 180.9c-95.2 57.3-217.5 42.6-296.8-36.7-62.3-62.3-85.6-152.2-63.4-235.8l1.8-6.7-283.5-283.4c-6.2-6.2-6.2-16.4 0-22.6l141.4-141.4c6.2-6.2 16.4-6.2 22.6 0l283.3 283.3 6.7-1.8c83.7-22.3 173.6 0.9 236 63.3 79.4 79.3 94.1 201.6 38 296.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tags-fill" unicode="" d="M483.2 105.7L861.4 484c1.7 1.7 2.5 4 2.3 6.3l-25.5 301.4c-0.7 7.8-6.8 13.9-14.6 14.6L522.2 831.7c-2.3 0.2-4.7-0.6-6.3-2.3L137.7 451.2c-3.1-3.1-3.1-8.2 0-11.3l334.2-334.2c3.1-3.2 8.2-3.2 11.3 0z m122.7 533.4c18.7 18.7 49.1 18.7 67.9 0 18.7-18.7 18.7-49.1 0-67.9-18.7-18.7-49.1-18.7-67.9 0-18.7 18.7-18.7 49.1 0 67.9zM889.7 356.2l-39.6 39.5c-3.1 3.1-8.2 3.1-11.3 0l-362-361.3-237.6 237c-3.1 3.1-8.2 3.1-11.3 0l-39.6-39.5c-3.1-3.1-3.1-8.2 0-11.3l243.2-242.8 39.6-39.5c3.1-3.1 8.2-3.1 11.3 0l407.3 406.6c3.1 3.1 3.1 8.2 0 11.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="bank-fill" unicode="" d="M894 434c30.9 0 43.8 39.7 18.7 58L530.8 769.8a31.81 31.81 0 0 1-37.6 0L111.3 492c-25.1-18.2-12.2-58 18.8-58H192v-374h-72c-4.4 0-8-3.6-8-8v-52c0-4.4 3.6-8 8-8h784c4.4 0 8 3.6 8 8v52c0 4.4-3.6 8-8 8h-72V434h62zM381 60H264V434h117v-374z m189 0H453V434h117v-374z m190 0H642V434h118v-374z" horiz-adv-x="1024" /> + + + <glyph glyph-name="camera-fill" unicode="" d="M864 636H728l-32.4 90.8C691 739.5 679 748 665.4 748H358.6c-13.5 0-25.6-8.5-30.1-21.2L296 636H160c-44.2 0-80-35.8-80-80v-456c0-44.2 35.8-80 80-80h704c44.2 0 80 35.8 80 80V556c0 44.2-35.8 80-80 80zM512 180c-88.4 0-160 71.6-160 160s71.6 160 160 160 160-71.6 160-160-71.6-160-160-160zM512 340m-96 0a96 96 0 1 1 192 0 96 96 0 1 1-192 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="error-fill" unicode="" d="M955.7 40l-416 720c-6.2 10.7-16.9 16-27.7 16s-21.6-5.3-27.7-16l-416-720C56 18.6 71.4-8 96-8h832c24.6 0 40 26.6 27.7 48zM480 480c0 4.4 3.6 8 8 8h48c4.4 0 8-3.6 8-8v-184c0-4.4-3.6-8-8-8h-48c-4.4 0-8 3.6-8 8V480z m32-352c-26.5 0-48 21.5-48 48s21.5 48 48 48 48-21.5 48-48-21.5-48-48-48z" horiz-adv-x="1024" /> + + + <glyph glyph-name="crown-fill" unicode="" d="M899.6 619.5L705 499.6 518.4 748.5c-3.2 4.3-9.6 4.3-12.9 0L319 499.6 124.3 619.5c-5.7 3.5-13.1-1.2-12.2-7.9L188.5 31c1.1-7.9 7.9-14 16-14h615.1c8 0 14.9 6 15.9 14l76.4 580.6c0.8 6.7-6.5 11.4-12.3 7.9zM512 161.8c-62.1 0-112.6 50.5-112.6 112.6S449.9 387 512 387s112.6-50.5 112.6-112.6S574.1 161.8 512 161.8zM512 322.7c-26.6 0-48.2-21.6-48.2-48.3 0-26.6 21.6-48.3 48.2-48.3s48.2 21.6 48.2 48.3c0 26.6-21.6 48.3-48.2 48.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="mail-fill" unicode="" d="M928 736H96c-17.7 0-32-14.3-32-32v-640c0-17.7 14.3-32 32-32h832c17.7 0 32 14.3 32 32V704c0 17.7-14.3 32-32 32z m-80.8-108.9L531.7 381.6c-7.8-6.1-18.7-6.1-26.5 0L189.6 627.1c-1.8 1.4-2.8 3.5-2.8 5.7 0 4 3.2 7.2 7.2 7.2h648.8c2.2 0 4.3-1 5.7-2.8 2.4-3.1 1.9-7.6-1.3-10.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="car-fill" unicode="" d="M959 482.6L935.3 524c-2.2 3.8-7.1 5.1-10.9 2.9l-50.7-29.6-78.3 216.2c-8.5 26.5-33.1 44.4-60.9 44.4H301.2c-34.7 0-65.5-22.4-76.2-55.5l-74.6-205.2-50.8 29.6c-3.8 2.2-8.7 0.9-10.9-2.9L65 482.6c-2.2-3.8-0.9-8.6 2.9-10.8l60.4-35.2-14.5-40c-1.2-3.2-1.8-6.6-1.8-10V38.4c0-15.7 11.8-28.4 26.3-28.4h67.6c12.3 0 23 9.3 25.6 22.3l7.7 37.7h545.6l7.7-37.7c2.7-13 13.3-22.3 25.6-22.3h67.6c14.5 0 26.3 12.7 26.3 28.4V386.6c0 3.4-0.6 6.8-1.8 10l-14.5 40 60.3 35.2c3.8 2.2 5.1 7 3 10.8zM264 275c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40z m388-75c0-4.4-3.6-8-8-8H380c-4.4 0-8 3.6-8 8v84c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-36h168v36c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-84z m108 75c-22.1 0-40 17.9-40 40s17.9 40 40 40 40-17.9 40-40-17.9-40-40-40zM220 478l72.7 199.9 0.5 1.3 0.4 1.3c1.1 3.3 4.1 5.5 7.6 5.5h427.6l75.4-208H220z" horiz-adv-x="1024" /> + + + <glyph glyph-name="printer-fill" unicode="" d="M732 776c0 4.4-3.6 8-8 8H300c-4.4 0-8-3.6-8-8v-148h440V776zM852 564H172c-44.2 0-80-35.8-80-80v-328c0-17.7 14.3-32 32-32h168v-132c0-4.4 3.6-8 8-8h424c4.4 0 8 3.6 8 8V124h168c17.7 0 32 14.3 32 32V484c0 44.2-35.8 80-80 80zM664 52H360V328h304v-276z m164 360c0-4.4-3.6-8-8-8h-40c-4.4 0-8 3.6-8 8v40c0 4.4 3.6 8 8 8h40c4.4 0 8-3.6 8-8v-40z" horiz-adv-x="1024" /> + + + <glyph glyph-name="shop-fill" unicode="" d="M882 623.9V752c0 17.7-14.3 32-32 32H174c-17.7 0-32-14.3-32-32v-128.1c-16.7-1-30-14.9-30-31.9v-131.7c0-24.4 4.8-48.1 14.4-70.4 4.3-10.2 9.6-19.8 15.6-28.9v-345c0-17.6 14.3-32 32-32h274V160h128v-176h274c17.7 0 32 14.3 32 32V361c6.1 9.1 11.3 18.8 15.6 28.9 9.5 22.3 14.4 46 14.4 70.4V592c0 17-13.3 30.9-30 31.9z m-72-568H640V192c0 17.7-14.3 32-32 32H416c-17.7 0-32-14.3-32-32v-136.1H214V298.1c2.9-1.4 5.9-2.8 9-4 22.3-9.4 46-14.1 70.4-14.1s48 4.7 70.4 14.1c13.8 5.8 26.8 13.2 38.7 22.1 0.2 0.1 0.4 0.1 0.6 0 11.9-8.9 24.8-16.3 38.7-22.1 22.3-9.4 46-14.1 70.4-14.1 24.4 0 48 4.7 70.4 14.1 13.8 5.8 26.8 13.2 38.7 22.1 0.2 0.1 0.4 0.1 0.6 0 11.9-8.9 24.8-16.3 38.7-22.1 22.3-9.4 46-14.1 70.4-14.1 24.4 0 48 4.7 70.4 14.1 3 1.3 6 2.6 9 4v-242.2z m0 568.1H214v88h596v-88z" horiz-adv-x="1024" /> + + + <glyph glyph-name="setting-fill" unicode="" d="M512.5 505.4c-29.9 0-57.9-11.6-79.1-32.8-21.1-21.2-32.8-49.2-32.8-79.1 0-29.9 11.7-57.9 32.8-79.1 21.2-21.1 49.2-32.8 79.1-32.8 29.9 0 57.9 11.7 79.1 32.8 21.1 21.2 32.8 49.2 32.8 79.1 0 29.9-11.7 57.9-32.8 79.1-21.2 21.2-49.2 32.8-79.1 32.8zM924.8 269.9l-65.4 55.9c3.1 19 4.7 38.4 4.7 57.7s-1.6 38.8-4.7 57.7l65.4 55.9c10.1 8.6 13.8 22.6 9.3 35.2l-0.9 2.6c-18.1 50.4-44.8 96.8-79.6 137.7l-1.8 2.1c-8.6 10.1-22.5 13.9-35.1 9.5l-81.2-28.9c-30 24.6-63.4 44-99.6 57.5l-15.7 84.9c-2.4 13.1-12.7 23.3-25.8 25.7l-2.7 0.5c-52 9.4-106.8 9.4-158.8 0l-2.7-0.5c-13.1-2.4-23.4-12.6-25.8-25.7l-15.8-85.3c-35.9-13.6-69.1-32.9-98.9-57.3l-81.8 29.1c-12.5 4.4-26.5 0.7-35.1-9.5l-1.8-2.1c-34.8-41.1-61.5-87.4-79.6-137.7l-0.9-2.6c-4.5-12.5-0.8-26.5 9.3-35.2l66.2-56.5c-3.1-18.8-4.6-38-4.6-57 0-19.2 1.5-38.4 4.6-57l-66-56.5c-10.1-8.6-13.8-22.6-9.3-35.2l0.9-2.6c18.1-50.3 44.8-96.8 79.6-137.7l1.8-2.1c8.6-10.1 22.5-13.9 35.1-9.5l81.8 29.1c29.8-24.5 63-43.9 98.9-57.3l15.8-85.3c2.4-13.1 12.7-23.3 25.8-25.7l2.7-0.5c26.1-4.7 52.7-7.1 79.4-7.1 26.7 0 53.4 2.4 79.4 7.1l2.7 0.5c13.1 2.4 23.4 12.6 25.8 25.7l15.7 84.9c36.2 13.6 69.6 32.9 99.6 57.5l81.2-28.9c12.5-4.4 26.5-0.7 35.1 9.5l1.8 2.1c34.8 41.1 61.5 87.4 79.6 137.7l0.9 2.6c4.3 12.4 0.6 26.3-9.5 35z m-412.3-52.2c-97.1 0-175.8 78.7-175.8 175.8s78.7 175.8 175.8 175.8 175.8-78.7 175.8-175.8-78.7-175.8-175.8-175.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="USB-fill" unicode="" d="M408 584h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8zM760 464V752c0 17.7-14.3 32-32 32H296c-17.7 0-32-14.3-32-32v-288c-66.2 0-120-52.1-120-116v-356c0-4.4 3.6-8 8-8h720c4.4 0 8 3.6 8 8V348c0 63.9-53.8 116-120 116z m-72 0H336V712h352v-248zM568 584h48c4.4 0 8 3.6 8 8v48c0 4.4-3.6 8-8 8h-48c-4.4 0-8-3.6-8-8v-48c0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="golden-fill" unicode="" d="M905.9 89.3l-40.2 248c-0.6 3.9-4 6.7-7.9 6.7H596.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8h342c0.4 0 0.9 0 1.3 0.1 4.3 0.7 7.3 4.8 6.6 9.2zM435.7 337.3c-0.6 3.9-4 6.7-7.9 6.7H166.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8h342c0.4 0 0.9 0 1.3 0.1 4.4 0.7 7.3 4.8 6.6 9.2l-40.2 248zM342 424h342c0.4 0 0.9 0 1.3 0.1 4.4 0.7 7.3 4.8 6.6 9.2l-40.2 248c-0.6 3.9-4 6.7-7.9 6.7H382.2c-3.9 0-7.3-2.8-7.9-6.7l-40.2-248c-0.1-0.4-0.1-0.9-0.1-1.3 0-4.4 3.6-8 8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="build-fill" unicode="" d="M916 686H376c-17.7 0-32-14.3-32-32v-236H108c-17.7 0-32-14.3-32-32v-272c0-17.7 14.3-32 32-32h540c17.7 0 32 14.3 32 32V350h236c17.7 0 32 14.3 32 32V654c0 17.7-14.3 32-32 32zM612 150H412V350h200v-200z m268 268H680V618h200v-200z" horiz-adv-x="1024" /> + + + <glyph glyph-name="boxplot-fill" unicode="" d="M952 672h-52c-4.4 0-8-3.6-8-8v-248h-92V592c0 4.4-3.6 8-8 8H448v-432h344c4.4 0 8 3.6 8 8V348h92v-244c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V664c0 4.4-3.6 8-8 8zM224 592v-176h-92V664c0 4.4-3.6 8-8 8H72c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V348h92v-172c0-4.4 3.6-8 8-8h152V600H232c-4.4 0-8-3.6-8-8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sliders-fill" unicode="" d="M904 600h-66v96c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-96h-66c-4.4 0-8-3.6-8-8v-416c0-4.4 3.6-8 8-8h66v-96c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v96h66c4.4 0 8 3.6 8 8V592c0 4.4-3.6 8-8 8zM320 672h-66v56c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-56h-66c-4.4 0-8-3.6-8-8v-560c0-4.4 3.6-8 8-8h66v-56c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8v56h66c4.4 0 8 3.6 8 8V664c0 4.4-3.6 8-8 8zM612 492h-66V664c0 4.4-3.6 8-8 8h-52c-4.4 0-8-3.6-8-8v-172h-66c-4.4 0-8-3.6-8-8v-200c0-4.4 3.6-8 8-8h66v-172c0-4.4 3.6-8 8-8h52c4.4 0 8 3.6 8 8V276h66c4.4 0 8 3.6 8 8V484c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alibaba" unicode="" d="M602.9 226.2c-37.2-2.6-33.6 17.3-11.5 46.2 50.4 67.2 143.7 158.5 147.9 225.2 5.8 86.6-81.3 113.4-171 113.4-62.4-1.6-127-18.9-171-34.6-151.6-53.5-246.6-137.5-306.9-232-62.4-93.4-43-183.2 91.8-185.8 101.8 4.2 170.5 32.5 239.7 68.2 0.5 0-192.5-55.1-263.9-14.7-7.9 4.2-15.7 10-17.8 26.2 0 33.1 54.6 67.7 86.6 78.7v56.7c64.5-22.6 140.6-16.3 205.7 32 2.1-5.8 4.2-13.1 3.7-21h11c2.6 22.6-12.6 44.6-37.8 46.2 7.3-5.8 12.6-10.5 15.2-14.7l-1-1-0.5-0.5c-83.9-58.8-165.3-31.5-173.1-29.9l46.7 45.7-13.1 33.1c92.9 32.5 169.5 56.2 296.9 78.7l-28.5 23 14.7 8.9c75.5-21 126.4-36.7 123.8-76.6-1-6.8-3.7-14.7-7.9-23.1C660.1 429.9 594 358 567.2 327c-17.3-20.5-34.6-39.4-46.7-58.3-13.6-19.4-20.5-37.3-21-53.5 2.6-131.8 391.4 61.9 468 112.9-111.7-47.8-232.9-93.5-364.6-101.9z m85 302.9c2.8-5.2 4.1-11.6 4.1-19.1-0.1 6.8-1.4 13.3-4.1 19.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alibabacloud" unicode="" d="M959.2 512.1c-0.3 82.1-66.9 148.6-149.1 148.6H575.9l21.6-85.2 201-43.7c18.3-4.2 32.1-20.3 32.9-39.7 0.1-0.5 0.1-216.1 0-216.6-0.8-19.4-14.6-35.5-32.9-39.7l-201-43.7-21.6-85.3h234.2c82.1 0 148.8 66.5 149.1 148.6V512.1zM225.5 235.6c-18.3 4.2-32.1 20.3-32.9 39.7-0.1 0.6-0.1 216.1 0 216.6 0.8 19.4 14.6 35.5 32.9 39.7l201 43.7 21.6 85.2H213.8c-82.1 0-148.8-66.4-149.1-148.6V255c0.3-82.1 67-148.6 149.1-148.6H448l-21.6 85.3-200.9 43.9zM426.4 394.4h171v-21.3h-171z" horiz-adv-x="1024" /> + + + <glyph glyph-name="antdesign" unicode="" d="M716.3 582.2c19 18.9 19 49.7 0 68.6l-69.9 69.9 0.1-0.1c-18.5 18.5-50.3 50.3-95.3 95.2-21.2 20.7-55.5 20.5-76.5-0.5L80.9 421.8c-21.2-21.1-21.2-55.3 0-76.4L474.6-48c21.2-21.1 55.4-21.1 76.5 0l165.1 165c19 18.9 19 49.7 0 68.6-19 18.9-49.7 18.9-68.7 0l-125-125.2c-5.2-5.2-13.3-5.2-18.5 0L189.5 374.6c-5.2 5.2-5.2 13.3 0 18.5l314.4 314.2c0.4 0.4 0.9 0.7 1.3 1.1 5.2 4.1 12.4 3.7 17.2-1.1l125.2-125.1c19-19 49.8-19 68.7 0zM408.6 381.6a106.3 106.2 0 1 1 212.6 0 106.3 106.2 0 1 1-212.6 0ZM944.8 420.2L821.9 542.5c-19 18.9-49.8 18.9-68.7-0.1-19-18.9-19-49.7 0-68.6l83-82.9c5.2-5.2 5.2-13.3 0-18.5l-81.8-81.7c-19-18.9-19-49.7 0-68.6 19-18.9 49.7-18.9 68.7 0l121.8 121.7c21.1 21.1 21.1 55.2-0.1 76.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="ant-cloud" unicode="" d="M378.9 158c-3.1 0-6.1 0.5-8.8 1.5l4.4-30.7h26.3l-15.5 29.9c-2.1-0.5-4.2-0.7-6.4-0.7zM799.9 449.2c-12.6 0-24.8-1.5-36.5-4.2-21.4 38.4-62.3 64.3-109.3 64.3-6.9 0-13.6-0.6-20.2-1.6-35.4 77.4-113.4 131.1-203.9 131.1-112.3 0-205.3-82.6-221.6-190.4C127.3 440.5 64 372.2 64 289c0-88.4 71.6-160.1 160-160.2h50l13.2 27.6c-26.2 8.3-43.3 29-39.1 48.8 4.6 21.6 32.8 33.9 63.1 27.5 22.9-4.9 40.4-19.1 45.5-35.1 4.6 7.4 12.8 12.4 22.1 12.4h0.2c-0.8 3.2-1.2 6.5-1.2 9.9 0 20.1 14.8 36.7 34.1 39.6v25.4c0 4.4 3.6 8 8 8s8-3.6 8-8v-26.3c4.6-1.2 8.8-3.2 12.6-5.8l19.5 21.4c3 3.3 8 3.5 11.3 0.5 3.3-3 3.5-8 0.5-11.3l-20-22-0.2-0.2c3.9-6.2 6.2-13.5 6.2-21.4 0-22.1-17.9-40-40-40-4.6 0-9 0.8-13.1 2.2-0.4-5.6-2.6-10.7-6-14.8l20-38.4H804v0.1c86.5 2.2 156 73 156 160.1 0 88.5-71.7 160.2-160.1 160.2zM338.2 158.8l-4.3-30h24.4l-5.9 41.5c-3.5-4.6-8.3-8.5-14.2-11.5zM845.5 591m-48 0a48 48 0 1 1 96 0 48 48 0 1 1-96 0ZM755.8 529.7m-24 0a24 24 0 1 1 48 0 24 24 0 1 1-48 0ZM303.4 153.1l-11.6-24.3h26l3.5 24.7c-5.7-0.8-11.7-1-17.9-0.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="behance" unicode="" d="M634 601.7h199.5v-48.4H634zM434.1 410.2c44.1 21.1 67.2 53.2 67.2 102.8 0 98.1-73 121.9-157.3 121.9H112v-492.4h238.5c89.4 0 173.3 43 173.3 143 0 61.8-29.2 107.5-89.7 124.7zM220.2 550.9h101.5c39.1 0 74.2-10.9 74.2-56.3 0-41.8-27.3-58.6-66-58.6H220.2V550.9z m115.5-324.8H220.1V361.7H338c47.6 0 77.7-19.9 77.7-70.3 0-49.6-35.9-65.3-80-65.3zM911.5 315.6c0 105.5-61.7 193.4-173.3 193.4-108.5 0-182.3-81.7-182.3-188.8 0-111 69.9-187.2 182.3-187.2 85.1 0 140.2 38.3 166.7 120h-86.3c-9.4-30.5-47.6-46.5-77.3-46.5-57.4 0-87.4 33.6-87.4 90.7h256.9c0.3 5.9 0.7 12.1 0.7 18.4zM653.9 359c3.1 46.9 34.4 76.2 81.2 76.2 49.2 0 73.8-28.9 78.1-76.2H653.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="googleplus" unicode="" d="M879.5 425.6c-0.3 27-0.4 54.2-0.5 81.3h-80.8c-0.3-27-0.5-54.1-0.7-81.3-27.2-0.1-54.2-0.3-81.2-0.6v-80.9c27-0.3 54.2-0.5 81.2-0.8 0.3-27 0.3-54.1 0.5-81.1h80.9c0.1 27 0.3 54.1 0.5 81.3 27.2 0.3 54.2 0.4 81.2 0.7v80.9c-26.9 0.2-54.1 0.2-81.1 0.5zM349.5 425.2c-0.1-32.3 0-64.7 0.1-97 54.2-1.8 108.5-1 162.7-1.8-23.9-120.3-187.4-159.3-273.9-80.7-89 68.9-84.8 220 7.7 284 64.7 51.6 156.6 38.9 221.3-5.8 25.4 23.5 49.2 48.7 72.1 74.7-53.8 42.9-119.8 73.5-190 70.3-146.6 4.9-281.3-123.5-283.7-270.2-9.4-119.9 69.4-237.4 180.6-279.8 110.8-42.7 252.9-13.6 323.7 86 46.7 62.9 56.8 143.9 51.3 220-90.7 0.7-181.3 0.6-271.9 0.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="medium" unicode="" d="M834.7 616.2l61.3 58.9V688H683.7L532.4 309.6 360.3 688H137.7v-12.9l71.6-86.6c7-6.4 10.6-15.8 9.7-25.2V223c2.2-12.3-1.7-24.8-10.3-33.7L128 91v-12.7h228.6v12.9l-80.6 98c-8.7 8.9-12.9 21.3-11.1 33.7V517.3l200.7-439.2h23.3l172.6 439.2v-349.9c0-9.2 0-11.1-6-17.2l-62.1-60.3V77h301.2v12.9l-59.9 58.9c-5.2 4-7.9 10.7-6.8 17.2V599c-1.1 6.5 1.6 13.2 6.8 17.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="google" unicode="" d="M881 453.6H519.7v-148.5h206.4c-8.9-48-35.9-88.6-76.6-115.8-34.4-23-78.3-36.6-129.9-36.6-99.9 0-184.4 67.5-214.6 158.2-7.6 23-12 47.6-12 72.9s4.4 49.9 12 72.9c30.3 90.6 114.8 158.1 214.7 158.1 56.3 0 106.8-19.4 146.6-57.4l110 110.1c-66.5 62-153.2 100-256.6 100-149.9 0-279.6-86-342.7-211.4-26-51.8-40.8-110.4-40.8-172.4S151 263.2 177 211.4C240.1 86 369.8 0 519.7 0c103.6 0 190.4 34.4 253.8 93 72.5 66.8 114.4 165.2 114.4 282.1 0 27.2-2.4 53.3-6.9 78.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="IE" unicode="" d="M852.6 528.4c16.3 36.9 32.1 90.7 32.1 131.8 0 109.1-119.5 147.6-314.5 57.9-161.4 10.8-316.8-110.5-355.6-279.7 46.3 52.3 117.4 123.4 183 151.7C316.1 517.7 246.7 426 194 330.4c-31.1-56.9-66-148.8-66-217.5 0-147.9 139.3-129.8 270.4-63 47.1-23.1 99.8-23.4 152.5-23.4 145.7 0 276.4 81.4 325.2 219H694.9c-78.8-132.9-295.2-79.5-295.2 71.2h493.2c9.6 65.4-2.5 143.6-40.3 211.7zM224.8 247.7c26.6-76.7 80.6-143.8 150.4-185-133.1-73.4-259.9-43.6-150.4 185z m174 163.3c3 82.7 75.4 142.3 156 142.3 80.1 0 153-59.6 156-142.3h-312z m276.8 281.4c32.1 15.4 72.8 33 108.8 33 47.1 0 81.4-32.6 81.4-80.6 0-30-11.1-73.5-21.9-101.8-39.3 63.5-98.9 122.4-168.3 149.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="amazon" unicode="" d="M825 127.1c-3.3 0.9-7.3 0.4-11.9-1.3-61.6-28.2-121.5-48.3-179.7-60.2C507.7 40 385.2 53.4 266 105.7c-33.1 14.6-79.1 39.2-138 74-1.6 1.2-3.3 1.9-5.3 2-2 0.1-3.7-0.1-5.3-0.9-1.6-0.8-2.8-1.8-3.7-3.1-0.9-1.3-1.1-3.1-0.4-5.4 0.6-2.2 2.1-4.7 4.6-7.4 10.4-12.2 23.3-25.2 38.6-39s35.6-29.4 60.9-46.8c25.3-17.4 51.8-32.9 79.3-46.4 27.6-13.5 59.6-24.9 96.1-34.1s73-13.8 109.4-13.8c36.2 0 71.4 3.7 105.5 10.9 34.2 7.3 63 15.9 86.5 25.9 23.4 9.9 45 21 64.8 33 19.8 12 34.4 22.2 43.9 30.3 9.5 8.2 16.3 14.6 20.2 19.4 4.6 5.7 6.9 10.6 6.9 14.9 0.1 4.5-1.7 7.1-5 7.9zM527.4 547.9c-15.2-1.3-33.5-4.1-55-8.3-21.5-4.1-41.4-9.3-59.8-15.4s-37.2-14.6-56.3-25.4c-19.2-10.8-35.5-23.2-49-37s-24.5-31.1-33.1-52c-8.6-20.8-12.9-43.7-12.9-68.7 0-27.1 4.7-51.2 14.3-72.5 9.5-21.3 22.2-38 38.2-50.4 15.9-12.4 34-22.1 54-29.2 20-7.1 41.2-10.3 63.2-9.4 22 0.9 43.5 4.3 64.4 10.3 20.8 5.9 40.4 15.4 58.6 28.3 18.2 12.9 33.1 28.2 44.8 45.7 4.3-6.6 8.1-11.5 11.5-14.7l8.7-8.9c5.8-5.9 14.7-14.6 26.7-26.1 11.9-11.5 24.1-22.7 36.3-33.7l104.4 99.9-6 4.9c-4.3 3.3-9.4 8-15.2 14.3-5.8 6.2-11.6 13.1-17.2 20.5-5.7 7.4-10.6 16.1-14.7 25.9-4.1 9.8-6.2 19.3-6.2 28.5V637.3c0 10.1-1.9 21-5.7 32.8-3.9 11.7-10.7 24.5-20.7 38.3-10 13.8-22.4 26.2-37.2 37-14.9 10.8-34.7 20-59.6 27.4-24.8 7.4-52.6 11.1-83.2 11.1-31.3 0-60.4-3.7-87.6-10.9-27.1-7.3-50.3-17-69.7-29.2-19.3-12.2-35.9-26.3-49.7-42.4-13.8-16.1-24.1-32.9-30.8-50.4-6.7-17.5-10.1-35.2-10.1-53.1L408 586c5.5 16.4 12.9 30.6 22 42.8 9.2 12.2 17.9 21 25.8 26.5 8 5.5 16.6 9.9 25.7 13.2 9.2 3.3 15.4 5 18.6 5.4 3.2 0.3 5.7 0.4 7.6 0.4 26.7 0 45.2-7.9 55.6-23.6 6.5-9.5 9.7-23.9 9.7-43.3v-56.6c-15.2-0.6-30.4-1.6-45.6-2.9zM573.1 396c0-16.6-2.2-31.7-6.5-45-9.2-29.1-26.7-47.4-52.4-54.8-22.4-6.6-43.7-3.3-63.9 9.8-21.5 14-32.2 33.8-32.2 59.3 0 19.9 5 36.9 15 51.1 10 14.1 23.3 24.7 40 31.7s33 12 49 14.9c15.9 3 33 4.8 51 5.4V396zM908.3 177.1c-4.3 5.4-15.9 8.9-34.9 10.7-19 1.8-35.5 1.7-49.7-0.4-15.3-1.8-31.1-6.2-47.3-13.4-16.3-7.1-23.4-13.1-21.6-17.8l0.7-1.3 0.9-0.7 1.4-0.2h4.6c0.8 0 1.8 0.1 3.2 0.2 1.4 0.1 2.7 0.3 3.9 0.4 1.2 0.1 2.9 0.3 5.1 0.4 2.1 0.1 4.1 0.4 6 0.7 0.3 0 3.7 0.3 10.3 0.9 6.6 0.6 11.4 1 14.3 1.3 2.9 0.3 7.8 0.6 14.5 0.9 6.7 0.3 12.1 0.3 16.1 0 4-0.3 8.5-0.7 13.6-1.1 5.1-0.4 9.2-1.3 12.4-2.7 3.2-1.3 5.6-3 7.1-5.1 5.2-6.6 4.2-21.2-3-43.9s-14-40.8-20.4-54.2c-2.8-5.7-2.8-9.2 0-10.7s6.7-0.1 11.9 4c15.6 12.2 28.6 30.6 39.1 55.3 6.1 14.6 10.5 29.8 13.1 45.7 2.4 15.9 2 26.2-1.3 31z" horiz-adv-x="1024" /> + + + <glyph glyph-name="slack" unicode="" d="M925.5 354.1c-12.2 37.6-52.6 58.1-90.1 45.9l-80-26L703 535.1l80 26c37.6 12.2 58.1 52.6 45.9 90.1-12.2 37.6-52.6 58.1-90.1 45.9l-80-26-26.2 80.6c-12.2 37.6-52.6 58.1-90.1 45.9-37.5-12.2-58.1-52.6-45.9-90.1l26.2-80.6-161.1-52.4-26.2 80.6c-12.2 37.6-52.6 58.1-90.1 45.9s-58.1-52.6-45.9-90.1l26.2-80.6-81.1-26.4c-37.6-12.2-58.1-52.6-45.9-90.1 12.2-37.6 52.6-58.1 90.1-45.9l81.1 26.4 52.4-161.1-81.3-26.3c-37.6-12.2-58.1-52.6-45.9-90.1 12.2-37.6 52.6-58.1 90.1-45.9l81.1 26.4 26.2-80.6c12.2-37.6 52.6-58.1 90.1-45.9 37.6 12.2 58.1 52.6 45.9 90.1l-26.2 80.6 161.1 52.4 26.2-80.6c12.2-37.6 52.6-58.1 90.1-45.9 37.6 12.2 58.1 52.6 45.9 90.1l-26 80.5 80 26c37.5 12.1 58.1 52.5 45.9 90.1z m-467.3-76.7l-52.4 161.1L567 490.9l52.4-161.1-161.2-52.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alipay" unicode="" d="M789 285.7c-38.7 12.9-90.7 32.7-148.5 53.6 34.8 60.3 62.5 129 80.7 203.6H530.5v68.6h233.6v38.3H530.5V764h-95.4c-16.7 0-16.7-16.5-16.7-16.5v-97.8H182.2v-38.3h236.3v-68.6H223.4v-38.3h378.4c-13.8-47.6-32.4-92.3-54.5-132.9-122.8 40.4-253.8 73.2-336.1 53-52.6-13-86.5-36.1-106.5-60.3-91.4-111-25.9-279.6 167.2-279.6C386 84.8 496 148.4 581.2 253 708.3 192 960 87.3 960 87.3V236.6s-31.6 2.5-171 49.1zM253.9 149.4c-150.5 0-195 118.3-120.6 183.1 24.8 21.9 70.2 32.6 94.4 35 89.4 8.8 172.2-25.2 269.9-72.8-68.8-89.5-156.3-145.3-243.7-145.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="taobao" unicode="" d="M168.5 622.3a68.7 68.7 0 1 1 137.4 0 68.7 68.7 0 1 1-137.4 0ZM898.5 543.1s-23.7 184.4-426.9 70.1c17.3 30 25.6 49.5 25.6 49.5L396.4 691s-40.6-132.6-113-194.4c0 0 70.1-40.6 69.4-39.4 20.1 20.1 38.2 40.6 53.7 60.4 16.1 7 31.5 13.6 46.7 19.8-18.6-33.5-48.7-83.8-78.8-115.6l42.4-37s28.8 27.7 60.4 61.2h36v-61.8H372.9v-49.5h140.3v-118.5c-1.7 0-3.6 0-5.4 0.2-15.4 0.7-39.5 3.3-49 18.2-11.5 18.1-3 51.5-2.4 71.9h-97l-3.4-1.8s-35.5-159.1 102.3-155.5c129.1-3.6 203 36 238.6 63.1l14.2-52.6 79.6 33.2-53.9 131.9-64.6-20.1 12.1-45.2c-16.6-12.4-35.6-21.7-56.2-28.4V334.7h137.1v49.5H628.1V446h137.6v49.5H521.3c17.6 21.4 31.5 41.1 35 53.6l-42.5 11.6c182.8 65.5 284.5 54.2 283.6-53.2v-282.8s10.8-97.1-100.4-90.1l-60.2 12.9-14.2-57.1S882.5 16 903.7 215.8c21.3 200-5.2 327.3-5.2 327.3zM191.1 524.8l-45.4-69.7 83.6-52.1s56-28.5 29.4-81.9C233.8 270.5 112 159.7 112 159.7l109-68.1c75.4 163.7 70.5 142 89.5 200.7 19.5 60.1 23.7 105.9-9.4 139.1-42.4 42.6-47 46.6-110 93.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="zhihu" unicode="" d="M564.7 665.9V93h60l25.2-71.4L756.3 93h131.5V665.9H564.7z m247.7-497h-59.9l-75.1-50.4-17.8 50.4h-18V587.7h170.7v-418.8zM526.1 409.1H393.3c2.1 44.9 4.3 104.3 6.6 172.9h130.9l-0.1 8.1c0 0.6-0.2 14.7-2.3 29.1-2.1 15-6.6 34.9-21 34.9H287.8c4.4 20.6 15.7 69.7 29.4 93.8l6.4 11.2-12.9 0.7c-0.8 0-19.6 0.9-41.4-10.6-35.7-19-51.7-56.4-58.7-84.4-18.4-73.1-44.6-123.9-55.7-145.6-3.3-6.4-5.3-10.2-6.2-12.8-1.8-4.9-0.8-9.8 2.8-13 10.5-9.5 38.2 2.9 38.5 3 0.6 0.3 1.3 0.6 2.2 1 13.9 6.3 55.1 25 69.8 84.5h56.7c0.7-32.2 3.1-138.4 2.9-172.9h-141l-2.1-1.5c-23.1-16.9-30.5-63.2-30.8-65.2l-1.4-9.2h167c-12.3-78.3-26.5-113.4-34-127.4-3.7-7-7.3-14-10.7-20.8-21.3-42.2-43.4-85.8-126.3-153.6-3.6-2.8-7-8-4.8-13.7 2.4-6.3 9.3-9.1 24.6-9.1 5.4 0 11.8 0.3 19.4 1 49.9 4.4 100.8 18 135.1 87.6 17 35.1 31.7 71.7 43.9 108.9L497 46l5 12c0.8 1.9 19 46.3 5.1 95.9l-0.5 1.8-108.1 123-22-16.6c6.4 26.1 10.6 49.9 12.5 71.1h158.7v8c0 40.1-18.5 63.9-19.2 64.9l-2.4 3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="HTML" unicode="" d="M145 800l66-746.6L511.8-32l299.6 85.4L878.7 800H145z m610.9-700.6l-244.1-69.6-245.2 69.6-56.7 641.2h603.8l-57.8-641.2zM281 647l1.7-24.3 22.7-253.5h206.5v0.1h112.9l-11.4-118.5L511 223.1v-0.2h-0.8l-102.4 27.7-6.5 73.2h-91l11.3-144.7 188.6-52h1.7v0.4l187.7 51.7 1.7 16.3 21.2 242.2 3.2 24.3H511v-0.2H389.9l-8.2 94.2h352.1l1.7 19.5 4.8 47.2L742 647H511z" horiz-adv-x="1024" /> + + + <glyph glyph-name="linkedin" unicode="" d="M847.7 784H176.3c-35.5 0-64.3-28.8-64.3-64.3v-671.4c0-35.5 28.8-64.3 64.3-64.3h671.4c35.5 0 64.3 28.8 64.3 64.3V719.7c0 35.5-28.8 64.3-64.3 64.3z m0-736c-447.8 0.1-671.7 0.2-671.7 0.3 0.1 447.8 0.2 671.7 0.3 671.7 447.8-0.1 671.7-0.2 671.7-0.3-0.1-447.8-0.2-671.7-0.3-671.7zM230.6 484.1h118.7v-381.8H230.6zM290 536.3c37.9 0 68.8 30.8 68.8 68.8 0 37.9-30.8 68.8-68.8 68.8s-68.8-30.8-68.8-68.8c-0.1-38 30.7-68.8 68.8-68.8zM542.3 291.2c0 49.8 9.5 98 71.2 98 60.8 0 61.7-56.9 61.7-101.2v-185.7h118.6V311.7c0 102.8-22.2 181.9-142.3 181.9-57.7 0-96.4-31.7-112.3-61.7h-1.6v52.2H423.7v-381.8h118.6V291.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="yahoo" unicode="" d="M859.9 214.6h-14.1c-27.1 0-49.2-22.2-49.2-49.3v-14.1c0-27.1 22.2-49.3 49.2-49.3h14.1c27.1 0 49.2 22.2 49.2 49.3v14.1c0 27.1-22.2 49.3-49.2 49.3zM402.6 665C216.2 665 65 539 65 383.5S216.2 102 402.6 102s337.6 126 337.6 281.5S589.1 665 402.6 665z m0-507C245.1 158 121 261.4 121 383.5c0 62.3 32.3 119.7 84.9 161v-48.4h37l159.8-159.9v-65.3h-84.4v-56.3h225.1v56.3H459v65.3l103.5 103.6h65.3v56.3H459v-65.3l-28.1-28.1-93.4 93.5h37v56.3H216.4c49.4 35 114.3 56.6 186.2 56.6 157.6 0 281.6-103.4 281.6-225.5S560.2 158 402.6 158zM937.3 665H824.7c-15.5 0-27.7-12.6-27.1-28.1l13.1-366h84.4l65.4 366.4c2.7 15.2-7.8 27.7-23.2 27.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="facebook" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-32-736H663.9V293.8h104l15.6 120.7H663.9v77.1c0 35 9.7 58.8 59.8 58.8h63.9v108c-11.1 1.5-49 4.8-93.2 4.8-92.2 0-155.3-56.3-155.3-159.6v-89H434.9v-120.7h104.3V48H176V720h672v-672z" horiz-adv-x="1024" /> + + + <glyph glyph-name="skype" unicode="" d="M883.7 317.4c4.1 22.5 6.3 45.5 6.3 68.5 0 51-10 100.5-29.7 147-19 45-46.3 85.4-81 120.1-34.7 34.7-75.1 61.9-120.1 80.9-46.6 19.7-96 29.7-147 29.7-24 0-48.1-2.3-71.5-6.8-32.3 17.1-68.5 26.2-105.1 26.2-59.7 0-115.9-23.3-158.1-65.5-42.2-42.2-65.5-98.4-65.5-158.1 0-38 9.8-75.4 28.1-108.4-3.7-21.4-5.7-43.3-5.7-65.1 0-51 10-100.5 29.7-147 19-45 46.2-85.4 80.9-120.1 34.7-34.7 75.1-61.9 120.1-80.9 46.6-19.7 96-29.7 147-29.7 22.2 0 44.4 2 66.2 5.9 33.5-18.9 71.3-29 110-29 59.7 0 115.9 23.2 158.1 65.5 42.3 42.2 65.5 98.4 65.5 158.1 0.1 38-9.7 75.5-28.2 108.7z m-88.1-216C766.9 72.6 729 57 688.4 57c-26.1 0-51.8 6.8-74.6 19.7l-22.5 12.7-25.5-4.5c-17.8-3.2-35.8-4.8-53.6-4.8-41.4 0-81.3 8.1-119.1 24.1-36.3 15.3-69 37.3-97.2 65.5-28.1 28.1-50.1 60.7-65.5 97.1-16 37.7-24 77.6-24 119 0 17.4 1.6 35.2 4.6 52.8l4.4 25.1L203 486c-12.5 22.4-19.1 47.8-19.1 73.4 0 40.6 15.7 78.5 44.4 107.2C257.1 695.3 295 711 335.6 711c24.7 0 49.3-6.2 71.4-17.9l22.4-11.8 24.8 4.8c18.9 3.6 38.4 5.5 58 5.5 41.4 0 81.3-8.1 119-24 36.5-15.4 69.1-37.4 97.2-65.5 28.2-28.1 50.2-60.8 65.6-97.2 16-37.7 24-77.6 24-119 0-18.4-1.7-37-5.1-55.5l-4.7-25.5 12.6-22.6c12.6-22.5 19.2-48 19.2-73.7 0-40.7-15.7-78.5-44.4-107.2zM583.4 429.8L495 449.4c-33.6 7.7-72.3 17.8-72.3 49.5s27.1 53.9 76.1 53.9c98.7 0 89.7-67.8 138.7-67.8 25.8 0 48.4 15.2 48.4 41.2 0 60.8-97.4 106.5-180 106.5-89.7 0-185.2-38.1-185.2-139.5 0-48.8 17.4-100.8 113.6-124.9l119.4-29.8c36.1-8.9 45.2-29.2 45.2-47.6 0-30.5-30.3-60.3-85.2-60.3-107.2 0-92.3 82.5-149.7 82.5-25.8 0-44.5-17.8-44.5-43.1 0-49.4 60-115.4 194.2-115.4 127.7 0 191 61.5 191 144 0 53.1-24.5 109.6-121.3 131.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="CodeSandbox" unicode="" d="M709.6 686l0.4 0.2h0.2L512 800 313.9 686.2h-0.2l0.7-0.3L151.5 592v-416L512-32l360.5 208V592l-162.9 94zM482.7 52.4L339.6 135V274.6L210 348.2V523.1l272.7-157.3v-313.4zM238.2 574.5l134.7 77.8 138.9-79.7 139.1 79.9 135.2-78-273.9-158-274 158zM814 347.7l-128.8-73.1v-139.1l-143.9-83V365.6L814 522.9v-175.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="chrome" unicode="" d="M928 383.7v0.3c0 229.8-186.2 416-416 416S96 613.8 96 384v-0.4c0-229.8 186.2-416 416-416s416 186.2 416 416v0.3-0.2z m-6.7 74.6l0.6-3.3c0.4-2.4 0.8-4.8 1.2-7.1-0.4 2.4-0.8 4.8-1.2 7.1l-0.6 3.3c-0.2 1-0.4 2-0.6 3.1 0.2-1.1 0.4-2.1 0.6-3.1zM676.7 257.8c53.5 82.2 52.5 189.4-11.1 263.7l162.4 8.4c20.5-44.4 32-93.8 32-145.9 0-185.2-144.6-336.6-327.1-347.4l143.8 221.2zM512 243.7c-77.5 0-140.2 62.7-140.2 140.2 0 77.7 62.7 140.2 140.2 140.2S652.2 461.5 652.2 384 589.5 243.7 512 243.7z m369.2 331.7l-3 5.7 3-5.7zM512 732c121.3 0 228.2-62.1 290.4-156.2l-263.6 13.9c-97.5 5.7-190.2-49.2-222.3-141.1L227.8 585c63.1 88.9 166.9 147 284.2 147zM102.5 310.2c26-145 127.1-264 261.6-315.1C229.6 46 128.5 165 102.5 310.2zM164 384c0 55.9 13.2 108.7 36.6 155.5l119.7-235.4c44.1-86.7 137.4-139.7 234-121.6l-74-145.1C302.9 53.5 164 202.5 164 384z m324.7-415.4c4-0.2 8-0.4 12-0.5-4 0.2-8 0.3-12 0.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="codepen" unicode="" d="M911.7 510.7l-0.3 1.5c-0.2 1-0.3 1.9-0.6 2.9-0.2 0.6-0.4 1.1-0.5 1.7-0.3 0.8-0.5 1.7-0.9 2.5-0.2 0.6-0.5 1.1-0.8 1.7-0.4 0.8-0.8 1.5-1.2 2.3-0.3 0.5-0.6 1.1-1 1.6-0.8 1.2-1.7 2.4-2.6 3.6-0.5 0.6-1.1 1.3-1.7 1.9-0.4 0.5-0.9 0.9-1.4 1.3-0.6 0.6-1.3 1.1-1.9 1.6-0.5 0.4-1 0.8-1.6 1.2-0.2 0.1-0.4 0.3-0.6 0.4L531.1 778.2c-11.5 7.7-26.6 7.7-38.1 0L127.3 534.7c-0.2-0.1-0.4-0.3-0.6-0.4-0.5-0.4-1-0.8-1.6-1.2-0.7-0.5-1.3-1.1-1.9-1.6-0.5-0.4-0.9-0.9-1.4-1.3-0.6-0.6-1.2-1.2-1.7-1.9-1-1.1-1.8-2.3-2.6-3.6-0.3-0.5-0.7-1-1-1.6-0.4-0.7-0.8-1.5-1.2-2.3-0.3-0.5-0.5-1.1-0.8-1.7-0.3-0.8-0.6-1.7-0.9-2.5-0.2-0.6-0.4-1.1-0.5-1.7-0.2-0.9-0.4-1.9-0.6-2.9l-0.3-1.5c-0.2-1.5-0.3-3-0.3-4.5v-243.5c0-1.5 0.1-3 0.3-4.5l0.3-1.5c0.2-1 0.4-1.9 0.6-2.9 0.2-0.6 0.3-1.1 0.5-1.7 0.3-0.9 0.6-1.7 0.9-2.5 0.2-0.6 0.5-1.1 0.8-1.7 0.4-0.8 0.7-1.5 1.2-2.3 0.3-0.5 0.6-1.1 1-1.6 0.5-0.7 0.9-1.4 1.5-2.1l1.2-1.5c0.5-0.6 1.1-1.3 1.7-1.9 0.4-0.5 0.9-0.9 1.4-1.3 0.6-0.6 1.3-1.1 1.9-1.6 0.5-0.4 1-0.8 1.6-1.2 0.2-0.1 0.4-0.3 0.6-0.4L493-9.7c5.6-3.8 12.3-5.8 19.1-5.8 6.6 0 13.3 1.9 19.1 5.8l365.6 243.5c0.2 0.1 0.4 0.3 0.6 0.4 0.5 0.4 1 0.8 1.6 1.2 0.7 0.5 1.3 1.1 1.9 1.6 0.5 0.4 0.9 0.9 1.4 1.3 0.6 0.6 1.2 1.2 1.7 1.9l1.2 1.5 1.5 2.1c0.3 0.5 0.7 1 1 1.6 0.4 0.8 0.8 1.5 1.2 2.3 0.3 0.5 0.5 1.1 0.8 1.7 0.3 0.8 0.6 1.7 0.9 2.5 0.2 0.5 0.4 1.1 0.5 1.7 0.3 0.9 0.4 1.9 0.6 2.9l0.3 1.5c0.2 1.5 0.3 3 0.3 4.5V506.2c-0.3 1.5-0.4 3-0.6 4.5zM546.4 685.5l269.4-179.4-120.3-80.4-149 99.6V685.5z m-68.8 0v-160.2l-149-99.6-120.3 80.4 269.3 179.4zM180.7 441.9l86-57.5-86-57.5v115z m296.9-358.5L208.3 262.8l120.3 80.4 149-99.6v-160.2zM512 303.2l-121.6 81.2L512 465.7l121.6-81.2L512 303.2z m34.4-219.8V243.6l149 99.6 120.3-80.4-269.3-179.4zM843.3 327l-86 57.5 86 57.5v-115z" horiz-adv-x="1024" /> + + + <glyph glyph-name="aliwangwang" unicode="" d="M868.2 518.6c-18.9 45.1-46.3 85.6-81.2 120.6-34.7 34.8-75.4 62.1-120.5 81.2-46.7 19.8-96.3 29.8-147.5 29.8-41.9 0-82.9-6.7-121.9-20C306 772.7 200.8 776 170.6 776c-2.2 0-7.4 0-9.4-0.2-11.9-0.4-22.8-6.5-29.2-16.4-6.5-9.9-7.7-22.4-3.4-33.5l64.3-161.6c-34.6-58.3-52.8-125.1-52.8-193.2 0-51.4 10-101 29.8-147.6 18.9-45 46.2-85.6 81.2-120.5 34.7-34.8 75.4-62.1 120.5-81.2C418.3 2 467.9-8 519-8c51.3 0 100.9 10.1 147.7 29.8 44.9 18.9 85.5 46.3 120.4 81.2 34.7 34.8 62.1 75.4 81.2 120.6 19.8 46.7 29.8 96.5 29.8 147.6-0.2 51.2-10.1 100.8-29.9 147.4z m-66.4-266.5c-15.5-36.8-37.7-69.7-65.9-98-28.4-28.5-61.3-50.7-97.7-65.9h-0.1c-38-16-78.3-24.2-119.9-24.2-41.6 0-81.8 8.2-119.7 24.2-36.7 15.5-69.6 37.8-97.8 66-28.4 28.5-50.6 61.4-65.8 97.8v0.1c-16 37.8-24.1 78.2-24.1 119.9 0 55.4 14.8 109.7 42.8 157l13.2 22.1-9.5 23.9L206 704c14.9-0.6 35.9-2.1 59.7-5.6 43.8-6.5 82.5-17.5 114.9-32.6l19-8.9 19.9 6.8c31.5 10.8 64.8 16.2 98.9 16.2 41.6 0 81.9-8.2 119.7-24.2 36.7-15.5 69.6-37.8 97.8-66 28.4-28.5 50.6-61.4 65.8-97.8l0.1-0.1 0.1-0.1c16-37.6 24.1-78 24.2-119.8-0.1-41.7-8.3-82-24.3-119.8zM681.1 531.8c-20.4 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.6-37.1 37.1-37.1s37.1 16.7 37.1 37.1v55.1c0 20.5-16.7 37.1-37.1 37.1zM505.9 531.8c-20.5 0-37.1-16.7-37.1-37.1v-55.1c0-20.4 16.7-37.1 37.1-37.1 20.5 0 37.1 16.7 37.1 37.1v55.1c0 20.5-16.7 37.1-37.1 37.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="apple" unicode="" d="M747.4 360.3c-0.4 68.2 30.5 119.6 92.9 157.5-34.9 50-87.7 77.5-157.3 82.8-65.9 5.2-138-38.4-164.4-38.4-27.9 0-91.7 36.6-141.9 36.6C273.1 597.2 163 516.2 163 351.4c0-48.7 8.9-99 26.7-150.8 23.8-68.2 109.6-235.3 199.1-232.6 46.8 1.1 79.9 33.2 140.8 33.2 59.1 0 89.7-33.2 141.9-33.2 90.3 1.3 167.9 153.2 190.5 221.6-121.1 57.1-114.6 167.2-114.6 170.7z m-10.6-267c-14.3-19.9-28.7-35.6-41.9-45.7-10.5-8-18.6-11.4-24-11.6-9 0.1-17.7 2.3-34.7 8.8-1.2 0.5-2.5 1-4.2 1.6-0.8 0.3-3.9 1.5-4.4 1.7-17.4 6.7-27.8 10.3-41.1 13.8-18.6 4.8-37.1 7.4-56.9 7.4-20.2 0-39.2-2.5-58.1-7.2-13.9-3.5-25.6-7.4-42.7-13.8-0.7-0.3-8.1-3.1-10.2-3.9-3.5-1.3-6.2-2.3-8.7-3.2-10.4-3.6-17-5.1-22.9-5.2-0.7 0-1.3 0.1-1.8 0.2-1.1 0.2-2.5 0.6-4.1 1.3-4.5 1.8-9.9 5.1-16 9.8-14 10.9-29.4 28-45.1 49.9-27.5 38.6-53.5 89.8-66 125.7-15.4 44.8-23 87.7-23 128.6 0 60.2 17.8 106 48.4 137.1 26.3 26.6 61.7 41.5 97.8 42.3 5.9-0.1 14.5-1.5 25.4-4.5 8.6-2.3 18-5.4 30.7-9.9 3.8-1.4 16.9-6.1 18.5-6.7 7.7-2.8 13.5-4.8 19.2-6.6 18.2-5.8 32.3-9 47.6-9 15.5 0 28.8 3.3 47.7 9.8 7.1 2.4 32.9 12 37.5 13.6 25.6 9.1 44.5 14 60.8 15.2 4.8 0.4 9.1 0.4 13.2 0.1 22.7-1.8 42.1-6.3 58.6-13.8-37.6-43.4-57-96.5-56.9-158.4-0.3-14.7 0.9-31.7 5.1-51.8 6.4-30.5 18.6-60.7 37.9-89 14.7-21.5 32.9-40.9 54.7-57.8-11.5-23.7-25.6-48.2-40.4-68.8zM642.3 665.3c50.7 60.2 46.1 115 44.6 134.7-44.8-2.6-96.6-30.5-126.1-64.8-32.5-36.8-51.6-82.3-47.5-133.6 48.4-3.7 92.6 21.2 129 63.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="android" unicode="" d="M448.3 670.8c-18.6 0-32-13.4-32-31.9s13.5-31.9 32-31.9c18.6 0 32 13.4 32 31.9 0.1 18.4-13.4 31.9-32 31.9zM842.2 574.4c-13.8 13.8-32.7 21.5-53.2 21.5-3.9 0-7.4-0.4-10.7-1v1h-3.6c-5.5 30.6-18.6 60.5-38.1 87.4-18.7 25.7-43 47.9-70.8 64.9l25.1 35.8v3.3c0 0.8 0.4 2.3 0.7 3.8 0.6 2.4 1.4 5.5 1.4 8.9 0 18.5-13.5 31.9-32 31.9-9.8 0-19.5-5.7-25.9-15.4l-29.3-42.1c-30 9.8-62.4 15-93.8 15-31.3 0-63.7-5.2-93.8-15L389 816.6c-6.6 9.6-16.1 15.4-26 15.4-18.6 0-32-13.4-32-31.9 0-6.2 2.5-12.8 6.7-17.4l22.6-32.3c-28.7-17-53.5-39.4-72.2-65.1-19.4-26.9-32-56.8-36.7-87.4h-5.5v-1c-3.2 0.6-6.7 1-10.7 1-20.3 0-39.2-7.5-53.1-21.3-13.8-13.8-21.5-32.6-21.5-53v-235c0-20.3 7.5-39.1 21.4-52.9 13.8-13.8 32.8-21.5 53.2-21.5 3.9 0 7.4 0.4 10.7 1v-93.5c0-29.2 23.9-53.1 53.2-53.1H331v-58.3c0-20.3 7.5-39.1 21.4-52.9 13.8-13.8 32.8-21.5 53.2-21.5 20.3 0 39.2 7.5 53.1 21.3 13.8 13.8 21.5 32.6 21.5 53v58.2H544v-58.1c0-20.3 7.5-39.1 21.4-52.9 13.8-13.8 32.8-21.5 53.2-21.5 20.4 0 39.2 7.5 53.1 21.6 13.8 13.8 21.5 32.6 21.5 53v58.2h31.9c29.3 0 53.2 23.8 53.2 53.1v91.4c3.2-0.6 6.7-1 10.7-1 20.3 0 39.2 7.5 53.1 21.3 13.8 13.8 21.5 32.6 21.5 53v235c-0.1 20.3-7.6 39-21.4 52.9zM246 286.4c0-6.8-3.9-10.6-10.7-10.6-6.8 0-10.7 3.8-10.7 10.6V521.5c0 6.8 3.9 10.6 10.7 10.6 6.8 0 10.7-3.8 10.7-10.6v-235.1z m131.1 396.8c37.5 27.3 85.3 42.3 135 42.3s97.5-15.1 135-42.5c32.4-23.7 54.2-54.2 62.7-87.5H314.4c8.5 33.4 30.5 64 62.7 87.7z m39.3-674.7c-0.6-5.6-4.4-8.7-10.5-8.7-6.8 0-10.7 3.8-10.7 10.6v58.2h21.2v-60.1z m202.3-8.7c-6.8 0-10.7 3.8-10.7 10.6v58.2h21.2v-60.1c-0.6-5.6-4.3-8.7-10.5-8.7z m95.8 132.6H309.9V532h404.6v-399.6z m85.2 154c0-6.8-3.9-10.6-10.7-10.6-6.8 0-10.7 3.8-10.7 10.6V521.5c0 6.8 3.9 10.6 10.7 10.6 6.8 0 10.7-3.8 10.7-10.6v-235.1zM576.1 670.8c-18.6 0-32-13.4-32-31.9s13.5-31.9 32-31.9c18.6 0 32.1 13.4 32.1 32-0.1 18.6-13.4 31.8-32.1 31.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sketch" unicode="" d="M925.6 490.9l-203 253.7c-1.2 1.5-3.1 2.4-5 2.4H306.4c-1.9 0-3.8-0.9-5-2.4l-203-253.7c-1.9-2.4-1.9-5.9 0.2-8.3l408.6-459.5c1.2-1.4 3-2.1 4.8-2.1 1.8 0 3.5 0.8 4.8 2.1l408.6 459.5c2.1 2.4 2.1 5.9 0.2 8.3zM645.2 689.6l34.4-133.9-132.5 133.9h98.1z m8.2-178.5H370.6L512 654l141.4-142.9zM378.8 689.6h98.1L344.3 555.7l34.5 133.9z m-53.4-7l-44.1-171.5h-93.1l137.2 171.5zM194.6 461.1H289l125.8-247.7-220.2 247.7zM512 132.6L345.1 461.1h333.7L512 132.6z m97.1 80.8L735 461.1h94.4L609.1 213.4z m133.6 297.7l-44.1 171.5 137.2-171.5h-93.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Gitlab" unicode="" d="M913.9 343.8L805 714.6v0.1c-7.6 22.9-25.7 36.5-48.3 36.5-23.4 0-42.5-13.5-49.7-35.2l-71.4-213H388.8l-71.4 213c-7.2 21.7-26.3 35.2-49.7 35.2-23.1 0-42.5-14.8-48.4-36.6L110.5 343.8c-4.4-14.7 1.2-31.4 13.5-40.7l368.5-276.4c2.6-3.6 6.2-6.3 10.4-7.8l8.6-6.4 8.5 6.4c4.9 1.7 9 4.7 11.9 8.9l368.4 275.4c12.4 9.2 18 25.9 13.6 40.6zM751.7 702.6c1 1.8 2.9 1.9 3.5 1.9 1.1 0 2.5-0.3 3.4-3L818 501.7H684.5l67.2 200.9z m-487.4-1c0.9 2.6 2.3 2.9 3.4 2.9 2.7 0 2.9-0.1 3.4-1.7l67.3-201.2H206.5l57.8 200zM158.8 337.3l28.2 97.3 202.4-270.2-230.6 172.9z m73.9 116.4h122.1l90.8-284.3-212.9 284.3zM512.9 120L405.7 453.7H620L512.9 120z m157.9 333.7h119.5L580 172.9l90.8 280.8z m-40.7-293.9l207.3 276.7 29.5-99.2-236.8-177.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dribbble" unicode="" d="M512 800C282.6 800 96 613.4 96 384s186.6-416 416-416 416 186.6 416 416S741.4 800 512 800z m275.1-191.8c49.5-60.5 79.5-137.5 80.2-221.4-11.7 2.5-129.2 26.3-247.4 11.4-2.5 6.1-5 12.2-7.6 18.3-7.4 17.3-15.3 34.6-23.6 51.5C720 521.7 779.6 598 787.1 608.2zM512 738.8c90.3 0 172.8-33.9 235.5-89.5-6.4-9.1-59.9-81-186.2-128.4-58.2 107-122.7 194.8-132.6 208 27.3 6.6 55.2 9.9 83.3 9.9zM360.9 705c9.4-12.8 72.9-100.9 131.7-205.5C326.4 455.4 180 456 164.1 456.2c23.1 110.3 97.4 201.9 196.8 248.8zM156.7 383.5c0 3.6 0.1 7.3 0.2 10.9 15.5-0.3 187.7-2.5 365.2 50.6 10.2-19.9 19.9-40.1 28.8-60.3-4.7-1.3-9.4-2.7-14-4.2C353.6 321.1 256.1 159.6 248 145.9c-56.7 63-91.3 146.3-91.3 237.6zM512 28.2c-82.2 0-157.9 28-218.1 75 6.4 13.1 78.3 152 278.7 221.9l2.3 0.8c49.9-129.6 70.5-238.3 75.8-269.5-42.6-18.2-89.5-28.3-138.7-28.2z m198.5 60.7c-3.6 21.6-22.5 125.6-69 253.3C752.9 360 850.7 330.8 862.8 327c-15.8-98.8-72.5-184.2-152.3-238.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="instagram" unicode="" d="M512 589.1c-113.5 0-205.1-91.6-205.1-205.1S398.5 178.9 512 178.9 717.1 270.5 717.1 384 625.5 589.1 512 589.1z m0-338.4c-73.4 0-133.3 59.9-133.3 133.3S438.6 517.3 512 517.3 645.3 457.4 645.3 384 585.4 250.7 512 250.7zM725.5 645.3c-26.5 0-47.9-21.4-47.9-47.9s21.4-47.9 47.9-47.9 47.9 21.3 47.9 47.9c-0.1 26.6-21.4 47.9-47.9 47.9zM911.8 384c0 55.2 0.5 109.9-2.6 165-3.1 64-17.7 120.8-64.5 167.6-46.9 46.9-103.6 61.4-167.6 64.5-55.2 3.1-109.9 2.6-165 2.6-55.2 0-109.9 0.5-165-2.6-64-3.1-120.8-17.7-167.6-64.5C132.6 669.7 118.1 613 115 549c-3.1-55.2-2.6-109.9-2.6-165s-0.5-109.9 2.6-165c3.1-64 17.7-120.8 64.5-167.6 46.9-46.9 103.6-61.4 167.6-64.5 55.2-3.1 109.9-2.6 165-2.6 55.2 0 109.9-0.5 165 2.6 64 3.1 120.8 17.7 167.6 64.5 46.9 46.9 61.4 103.6 64.5 167.6 3.2 55.1 2.6 109.8 2.6 165z m-88-235.8c-7.3-18.2-16.1-31.8-30.2-45.8-14.1-14.1-27.6-22.9-45.8-30.2C695.2 51.3 570.3 56 512 56c-58.3 0-183.3-4.7-235.9 16.1-18.2 7.3-31.8 16.1-45.8 30.2-14.1 14.1-22.9 27.6-30.2 45.8C179.3 200.8 184 325.7 184 384c0 58.3-4.7 183.3 16.1 235.9 7.3 18.2 16.1 31.8 30.2 45.8s27.6 22.9 45.8 30.2C328.7 716.7 453.7 712 512 712s183.3 4.7 235.9-16.1c18.2-7.3 31.8-16.1 45.8-30.2 14.1-14.1 22.9-27.6 30.2-45.8C844.7 567.3 840 442.3 840 384c0-58.3 4.7-183.2-16.2-235.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reddit" unicode="" d="M344 328m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0ZM626.7 208.3c-23.1-18.2-68.9-37.8-114.7-37.8s-91.6 19.6-114.7 37.8c-14.4 11.3-35.3 8.9-46.7-5.5s-8.9-35.3 5.5-46.7C396.3 124.4 457.5 104 512 104s115.7 20.4 155.9 52.1c14.4 11.4 16.9 32.3 5.5 46.7-11.3 14.4-32.3 16.9-46.7 5.5zM960 440c0 61.9-50.1 112-112 112-42.1 0-78.7-23.2-97.9-57.6-57.6 31.5-127.7 51.8-204.1 56.5L612.9 701l127.9-36.9c11.5-32.6 42.6-56.1 79.2-56.1 46.4 0 84 37.6 84 84s-37.6 84-84 84c-32 0-59.8-17.9-74-44.2L603.5 773c-16 4.6-32.8-3.2-39.6-18.4l-90.8-203.9c-74.5-5.2-142.9-25.4-199.2-56.2-19.1 34.3-55.8 57.5-97.9 57.5-61.9 0-112-50.1-112-112 0-45.8 27.5-85.1 66.8-102.5-7.1-21-10.8-43-10.8-65.5 0-154.6 175.5-280 392-280s392 125.4 392 280c0 22.6-3.8 44.5-10.8 65.5C932.5 354.9 960 394.2 960 440zM820 723.5c17.4 0 31.5-14.1 31.5-31.5s-14.1-31.5-31.5-31.5-31.5 14.1-31.5 31.5 14.1 31.5 31.5 31.5zM120 440c0 30.9 25.1 56 56 56 22.3 0 41.6-13.1 50.6-32.1-29.3-22.2-53.5-47.8-71.5-75.9-20.5 8.3-35.1 28.5-35.1 52z m392-381.5c-179.8 0-325.5 95.6-325.5 213.5S332.2 485.5 512 485.5 837.5 389.9 837.5 272 691.8 58.5 512 58.5zM868.8 388c-17.9 28.1-42.2 53.7-71.5 75.9 9 18.9 28.3 32.1 50.6 32.1 30.9 0 56-25.1 56-56 0.1-23.5-14.5-43.7-35.1-52zM680 328m-56 0a56 56 0 1 1 112 0 56 56 0 1 1-112 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="windows" unicode="" d="M120.1 125.4L443 72.8V352.2H120.1v-226.8z m63.4 163.5h196.2v-141.6l-196.2 31.9V288.9zM523.8 62.4l382-62.2v352h-382v-289.8z m63.4 226.5h255.3v-214.4l-255.3 41.6V288.9zM523.8 704.6v-288.8h382V767.9l-382-63.3z m318.7-225.5H587.3V651l255.3 42.3v-214.2zM120.1 415.8H443V694.1l-322.9-53.5v-224.8zM183.5 587l196.2 32.5v-140.4H183.5V587z" horiz-adv-x="1024" /> + + + <glyph glyph-name="yuque" unicode="" d="M854.6 525.4c-9.9 39.4 9.9 102.2 73.4 124.4l-67.9 3.6s-25.7 90-143.6 98c-117.8 8.1-194.9 3-195 3 0.1 0 87.4-55.6 52.4-154.7-25.6-52.5-65.8-95.6-108.8-144.7-1.3-1.3-2.5-2.6-3.5-3.7C319.4 291 96 36 96 36c245.9-64.4 410.7 6.3 508.2 91.1 20.5 0.2 35.9 0.3 46.3 0.3 135.8 0 250.6 117.6 245.9 248.4-3.2 89.9-31.9 110.2-41.8 149.6z m-204.1-334c-10.6 0-26.2-0.1-46.8-0.3l-23.6-0.2-17.8-15.5c-47.1-41-104.4-71.5-171.4-87.6-52.5-12.6-110-16.2-172.7-9.6 18 20.5 36.5 41.6 55.4 63.1 92 104.6 173.8 197.5 236.9 268.5l1.4 1.4 1.3 1.5c4.1 4.6 20.6 23.3 24.7 28.1 9.7 11.1 17.3 19.9 24.5 28.6 30.7 36.7 52.2 67.8 69 102.2l1.6 3.3 1.2 3.4c13.7 38.8 15.4 76.9 6.2 112.8 22.5-0.7 46.5-1.9 71.7-3.6 33.3-2.3 55.5-12.9 71.1-29.2 5.8-6 10.2-12.5 13.4-18.7 1-2 1.7-3.6 2.3-5l5-17.7c-15.7-34.5-19.9-73.3-11.4-107.2 3-11.8 6.9-22.4 12.3-34.4 2.1-4.7 9.5-20.1 11-23.3 10.3-22.7 15.4-43 16.7-78.7 3.3-94.6-82.7-181.9-182-181.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Youtube" unicode="" d="M960 386.8c0 2.2 0 4.7-0.1 7.6-0.1 8.1-0.3 17.2-0.5 26.9-0.8 27.9-2.2 55.7-4.4 81.9-3 36.1-7.4 66.2-13.4 88.8-12.8 47.9-50.4 85.6-98.3 98.5-28.3 7.6-83.7 12.3-161.7 15.2-37.1 1.4-76.8 2.3-116.5 2.8-13.9 0.2-26.8 0.3-38.4 0.4H497.3c-11.6-0.1-24.5-0.2-38.4-0.4-39.7-0.5-79.4-1.4-116.5-2.8-78-3-133.5-7.7-161.7-15.2-47.8-12.8-85.5-50.5-98.3-98.5-6.1-22.6-10.4-52.7-13.4-88.8-2.2-26.2-3.6-54-4.4-81.9-0.3-9.7-0.4-18.8-0.5-26.9 0-2.9-0.1-5.4-0.1-7.6v-5.6c0-2.2 0-4.7 0.1-7.6 0.1-8.1 0.3-17.2 0.5-26.9 0.8-27.9 2.2-55.7 4.4-81.9 3-36.1 7.4-66.2 13.4-88.8 12.8-47.9 50.4-85.7 98.3-98.5 28.2-7.6 83.7-12.3 161.7-15.2 37.1-1.4 76.8-2.3 116.5-2.8 13.9-0.2 26.8-0.3 38.4-0.4H526.7c11.6 0.1 24.5 0.2 38.4 0.4 39.7 0.5 79.4 1.4 116.5 2.8 78 3 133.5 7.7 161.7 15.2 47.9 12.8 85.5 50.5 98.3 98.5 6.1 22.6 10.4 52.7 13.4 88.8 2.2 26.2 3.6 54 4.4 81.9 0.3 9.7 0.4 18.8 0.5 26.9 0 2.9 0.1 5.4 0.1 7.6V384v2.8z m-72-5.2c0-2.1 0-4.4-0.1-7.1-0.1-7.8-0.3-16.4-0.5-25.7-0.7-26.6-2.1-53.2-4.2-77.9-2.7-32.2-6.5-58.6-11.2-76.3-6.2-23.1-24.4-41.4-47.4-47.5-21-5.6-73.9-10.1-145.8-12.8-36.4-1.4-75.6-2.3-114.7-2.8-13.7-0.2-26.4-0.3-37.8-0.3h-28.6c-11.4 0.1-24.1 0.2-37.8 0.3-39.1 0.5-78.2 1.4-114.7 2.8-71.9 2.8-124.9 7.2-145.8 12.8-23 6.2-41.2 24.4-47.4 47.5-4.7 17.7-8.5 44.1-11.2 76.3-2.1 24.7-3.4 51.3-4.2 77.9-0.3 9.3-0.4 18-0.5 25.7 0 2.7-0.1 5.1-0.1 7.1v3 1.8c0 2.1 0 4.4 0.1 7.1 0.1 7.8 0.3 16.4 0.5 25.7 0.7 26.6 2.1 53.2 4.2 77.9 2.7 32.2 6.5 58.6 11.2 76.3 6.2 23.1 24.4 41.4 47.4 47.5 21 5.6 73.9 10.1 145.8 12.8 36.4 1.4 75.6 2.3 114.7 2.8 13.7 0.2 26.4 0.3 37.8 0.3h28.6c11.4-0.1 24.1-0.2 37.8-0.3 39.1-0.5 78.2-1.4 114.7-2.8 71.9-2.8 124.9-7.2 145.8-12.8 23-6.2 41.2-24.4 47.4-47.5 4.7-17.7 8.5-44.1 11.2-76.3 2.1-24.7 3.4-51.3 4.2-77.9 0.3-9.3 0.4-18 0.5-25.7 0-2.7 0.1-5.1 0.1-7.1v-4.8zM423 250l232 135-232 133z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Gitlab-fill" unicode="" d="M910.5 342.8l-109 370.8c-6.8 20.4-23.1 34.1-44.9 34.1s-39.5-12.3-46.3-32.7l-72.2-215.4H386.2L314 714.9c-6.8 20.4-24.5 32.7-46.3 32.7s-39.5-13.6-44.9-34.1L113.9 342.8c-4.1-13.6 1.4-28.6 12.3-36.8l385.4-289 386.7 289c10.8 8.1 16.3 23.1 12.2 36.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dropbox" unicode="" d="M64 339.1l264.2-173.5L512.5 319 246.8 483.3zM960 629.4zM960 629.4L696.8 801 512.5 647.5l265.2-164.2L512.5 319l184.3-153.4L960 337.2 777.7 483.3zM513 286.2L328.2 132.7l-79.4 51.5v-57.8L513-32l263.7 158.4v57.8l-78.9-51.5zM328.2 801L64 630.9l182.8-147.6 265.7 164.2zM64 339.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dingtalk" unicode="" d="M573.7 643.5C422.5 698.6 201.3 799.3 201.3 799.3c-15.7 4.1-17.9-11.1-17.9-11.1-5-61.1 33.6-160.5 53.6-182.8 19.9-22.3 319.1-113.7 319.1-113.7S326 538.1 270.5 554.1c-55.6 16-37.9-17.8-37.9-17.8 11.4-61.7 64.9-131.8 107.2-138.4 42.2-6.6 220.1-4 220.1-4s-35.5-4.1-93.2-11.9c-42.7-5.8-97-12.5-111.1-17.8-33.1-12.5 24-62.6 24-62.6 84.7-76.8 129.7-50.5 129.7-50.5 33.3 10.7 61.4 18.5 85.2 24.2L565 152.9h84.6L603-32l205.3 271.9H700.8l22.3 38.7c0.3-0.5 0.4-0.8 0.4-0.8S799.8 399.9 829 462.2l0.6 1h-0.1c5 10.8 8.6 19.7 10 25.8 17 71.3-114.5 99.4-265.8 154.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="android-fill" unicode="" d="M270.1 154.3c0-23.4 19.1-42.5 42.6-42.5h48.7v-120.4c0-30.5 24.5-55.4 54.6-55.4 30.2 0 54.6 24.8 54.6 55.4V111.9h85v-120.4c0-30.5 24.5-55.4 54.6-55.4 30.2 0 54.6 24.8 54.6 55.4V111.9h48.7c23.5 0 42.6 19.1 42.6 42.5V549.6h-486v-395.3zM627.2 754.4l44.9 65c2.6 3.8 2 8.9-1.5 11.4-3.5 2.4-8.5 1.2-11.1-2.6l-46.6-67.6c-30.7 12.1-64.9 18.8-100.8 18.8-35.9 0-70.1-6.7-100.8-18.8l-46.6 67.5c-2.6 3.8-7.6 5.1-11.1 2.6-3.5-2.4-4.1-7.4-1.5-11.4l44.9-65c-71.4-33.2-121.4-96.1-127.8-169.6h486c-6.6 73.6-56.7 136.5-128 169.7zM409.5 651.9c-14.8 0-26.9 12-26.9 26.9 0 14.8 12 26.9 26.9 26.9 14.8 0 26.9-12 26.9-26.9-0.1-14.9-12.1-26.9-26.9-26.9z m208.4 0c-14.8 0-26.9 12-26.9 26.9 0 14.8 12 26.9 26.9 26.9 14.8 0 26.9-12 26.9-26.9-0.1-14.9-12.1-26.9-26.9-26.9zM841.3 551.2c-30.2 0-54.6-24.8-54.6-55.4v-216.4c0-30.5 24.5-55.4 54.6-55.4 30.2 0 54.6 24.8 54.6 55.4V495.9c0.1 30.6-24.3 55.3-54.6 55.3zM182.7 551.2c-30.2 0-54.6-24.8-54.6-55.4v-216.4c0-30.5 24.5-55.4 54.6-55.4 30.2 0 54.6 24.8 54.6 55.4V495.9c0 30.6-24.5 55.3-54.6 55.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="apple-fill" unicode="" d="M747.4 360.3c-0.4 68.2 30.5 119.6 92.9 157.5-34.9 50-87.7 77.5-157.3 82.8-65.9 5.2-138-38.4-164.4-38.4-27.9 0-91.7 36.6-141.9 36.6C273.1 597.2 163 516.2 163 351.4c0-48.7 8.9-99 26.7-150.8 23.8-68.2 109.6-235.3 199.1-232.6 46.8 1.1 79.9 33.2 140.8 33.2 59.1 0 89.7-33.2 141.9-33.2 90.3 1.3 167.9 153.2 190.5 221.6-121.1 57.1-114.6 167.2-114.6 170.7zM642.3 665.3c50.7 60.2 46.1 115 44.6 134.7-44.8-2.6-96.6-30.5-126.1-64.8-32.5-36.8-51.6-82.3-47.5-133.6 48.4-3.7 92.6 21.2 129 63.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="HTML-fill" unicode="" d="M145.2 800l66-746.6L512-32l299.6 85.4L878.9 800H145.2z m595-177.1l-4.8-47.2-1.7-19.5H382.3l8.2-94.2h335.1l-3.3-24.3-21.2-242.2-1.7-16.2-187-51.6v-0.3h-1.2l-0.3-0.1v0.1h-0.1l-188.6 52L310.8 324h91.1l6.5-73.2 102.4-27.7h0.4l102 27.6 11.4 118.6H510.9v0.1H306l-22.8 253.5-1.7 24.3h460.3l-1.6-24.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="windows-fill" unicode="" d="M523.8 704.6v-288.9h382V767.9zM523.8 62.4l382-62.2v352h-382zM120.1 415.8H443V694.1l-322.9-53.5zM120.1 125.4L443 72.8V352.2H120.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="QQ" unicode="" d="M824.8 282.8c-16 51.4-34.4 94.6-62.7 165.3C766.5 633.8 689.3 784 511.5 784 331.7 784 256.2 630.8 261 448.1c-28.4-70.8-46.7-113.7-62.7-165.3-34-109.5-23-154.8-14.6-155.8 18-2.2 70.1 82.4 70.1 82.4 0-49 25.2-112.9 79.8-159-26.4-8.1-85.7-29.9-71.6-53.8 11.4-19.3 196.2-12.3 249.5-6.3 53.3-6 238.1-13 249.5 6.3 14.1 23.8-45.3 45.7-71.6 53.8 54.6 46.2 79.8 110.1 79.8 159 0 0 52.1-84.6 70.1-82.4 8.5 1.1 19.5 46.4-14.5 155.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="twitter" unicode="" d="M928 641.7c-30.6-13.2-63.9-22.7-98.2-26.4 35.4 21.1 62.3 54.4 75 94-32.7-19.5-69.7-33.8-108.2-41.2C765.4 701.4 721.1 722 672 722c-94.5 0-170.5-76.6-170.5-170.6 0-13.2 1.6-26.4 4.2-39.1-141.5 7.4-267.7 75-351.6 178.5-14.8-25.4-23.2-54.4-23.2-86.1 0-59.2 30.1-111.4 76-142.1-28 1.1-54.4 9-77.1 21.7v-2.1c0-82.9 58.6-151.6 136.7-167.4-14.3-3.7-29.6-5.8-44.9-5.8-11.1 0-21.6 1.1-32.2 2.6C211 244 273.9 194.9 348.8 193.3c-58.6-45.9-132-72.9-211.7-72.9-14.3 0-27.5 0.5-41.2 2.1C171.5 74 261.2 46 357.8 46 671.4 46 843 305.8 843 531.3c0 7.4 0 14.8-0.5 22.2 33.2 24.3 62.3 54.4 85.5 88.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="skype-fill" unicode="" d="M883.7 317.4c4.1 22.5 6.3 45.5 6.3 68.5 0 51-10 100.5-29.7 147-19 45-46.3 85.4-81 120.1-34.7 34.7-75.1 61.9-120.1 80.9-46.6 19.7-96 29.7-147 29.7-24 0-48.1-2.3-71.5-6.8-32.3 17.1-68.5 26.2-105.1 26.2-59.7 0-115.9-23.3-158.1-65.5-42.2-42.2-65.5-98.4-65.5-158.1 0-38 9.8-75.4 28.1-108.4-3.7-21.4-5.7-43.3-5.7-65.1 0-51 10-100.5 29.7-147 19-45 46.2-85.4 80.9-120.1 34.7-34.7 75.1-61.9 120.1-80.9 46.6-19.7 96-29.7 147-29.7 22.2 0 44.4 2 66.2 5.9 33.5-18.9 71.3-29 110-29 59.7 0 115.9 23.2 158.1 65.5 42.3 42.2 65.5 98.4 65.5 158.1 0.1 38-9.7 75.5-28.2 108.7z m-370-162.9c-134.2 0-194.2 66-194.2 115.4 0 25.4 18.7 43.1 44.5 43.1 57.4 0 42.6-82.5 149.7-82.5 54.9 0 85.2 29.8 85.2 60.3 0 18.3-9 38.7-45.2 47.6l-119.4 29.8c-96.1 24.1-113.6 76.1-113.6 124.9 0 101.4 95.5 139.5 185.2 139.5 82.6 0 180-45.7 180-106.5 0-26.1-22.6-41.2-48.4-41.2-49 0-40 67.8-138.7 67.8-49 0-76.1-22.2-76.1-53.9s38.7-41.8 72.3-49.5l88.4-19.6c96.8-21.6 121.3-78.1 121.3-131.3 0-82.3-63.3-143.9-191-143.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="weibo" unicode="" d="M457.3 353c-68.1 17.7-145-16.2-174.6-76.2-30.1-61.2-1-129.1 67.8-151.3 71.2-23 155.2 12.2 184.4 78.3 28.7 64.6-7.2 131-77.6 149.2z m-52-156.2c-13.8-22.1-43.5-31.7-65.8-21.6-22 10-28.5 35.7-14.6 57.2 13.7 21.4 42.3 31 64.4 21.7 22.4-9.5 29.6-35 16-57.3z m45.5 58.5c-5-8.6-16.1-12.7-24.7-9.1-8.5 3.5-11.2 13.1-6.4 21.5 5 8.4 15.6 12.4 24.1 9.1 8.7-3.2 11.8-12.9 7-21.5zM785.3 452.5c15-4.8 31 3.4 35.9 18.3 11.8 36.6 4.4 78.4-23.2 109-27.6 30.6-68.4 42.3-106 34.3-15.4-3.3-25.2-18.4-21.9-33.8 3.3-15.3 18.4-25.2 33.8-21.8 18.4 3.9 38.3-1.8 51.9-16.7 13.5-15 17.2-35.4 11.3-53.3-4.9-15.1 3.2-31.1 18.2-36zM885.1 658.5c-56.7 62.9-140.4 86.9-217.7 70.5-17.9-3.8-29.3-21.4-25.4-39.3 3.8-17.9 21.4-29.3 39.3-25.5 55 11.7 114.4-5.4 154.8-50.1 40.3-44.7 51.2-105.7 34-159.1-5.6-17.4 3.9-36 21.3-41.7 17.4-5.6 36 3.9 41.6 21.2v0.1c24.1 75.4 8.9 161.1-47.9 223.9zM729 397c-12.2 3.6-20.5 6.1-14.1 22.1 13.8 34.7 15.2 64.7 0.3 86-28 40.1-104.8 37.9-192.8 1.1 0 0-27.6-12.1-20.6 9.8 13.5 43.5 11.5 79.9-9.6 101-47.7 47.8-174.6-1.8-283.5-110.6C127.3 424.9 80 338.5 80 263.8 80 120.9 263.2 34 442.5 34c235 0 391.3 136.5 391.3 245 0 65.5-55.2 102.6-104.8 118zM443 85.2c-143-14.1-266.5 50.5-275.8 144.5-9.3 93.9 99.2 181.5 242.2 195.6 143 14.2 266.5-50.5 275.8-144.4C694.4 187 586 99.4 443 85.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="yuque-fill" unicode="" d="M854.6 525.4c-9.9 39.4 9.9 102.2 73.4 124.4l-67.9 3.6s-25.7 90-143.6 98c-117.9 8.1-195 3-195 3s87.4-55.6 52.4-154.7c-25.6-52.5-65.8-95.6-108.8-144.7-1.3-1.3-2.5-2.6-3.5-3.7C319.4 291 96 36 96 36c245.9-64.4 410.7 6.3 508.2 91.1 20.5 0.2 35.9 0.3 46.3 0.3 135.8 0 250.6 117.6 245.9 248.4-3.2 89.9-31.9 110.2-41.8 149.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="Youtube-fill" unicode="" d="M941.3 599.9c-10.3 38.6-40.7 69-79.2 79.3C792.2 698 512 698 512 698s-280.2 0-350.1-18.7C123.3 669 93 638.6 82.7 600 64 530 64 384 64 384s0-146 18.7-215.9c10.3-38.6 40.7-69 79.2-79.3C231.8 70 512 70 512 70s280.2 0 350.1 18.8c38.6 10.3 68.9 40.7 79.2 79.3C960 238 960 384 960 384s0 146-18.7 215.9zM423 250V518l232-133-232-135z" horiz-adv-x="1024" /> + + + <glyph glyph-name="yahoo-fill" unicode="" d="M937.3 665H824.7c-15.5 0-27.7-12.6-27.1-28.1l13.1-366h84.4l65.4 366.4c2.7 15.2-7.8 27.7-23.2 27.7zM859.9 214.6h-14.1c-27.1 0-49.2-22.2-49.2-49.3v-14.1c0-27.1 22.2-49.3 49.2-49.3h14.1c27.1 0 49.2 22.2 49.2 49.3v14.1c0 27.1-22.2 49.3-49.2 49.3zM402.6 665C216.2 665 65 539 65 383.5S216.2 102 402.6 102s337.6 126 337.6 281.5S589.1 665 402.6 665z m225.2-225.2h-65.3L458.9 336.2v-65.3h84.4v-56.3H318.2v56.3h84.4v65.3L242.9 496.1h-37v56.3h168.5v-56.3h-37l93.4-93.5 28.1 28.1V496h168.8v-56.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="wechat-fill" unicode="" d="M690.1 518.6c5.9 0 11.8-0.2 17.6-0.5-24.4 128.7-158.3 227.1-319.9 227.1C209 745.2 64 624.6 64 475.8c0-81.1 43.6-154.2 111.9-203.6 5.5-3.9 9.1-10.3 9.1-17.6 0-2.4-0.5-4.6-1.1-6.9-5.5-20.3-14.2-52.8-14.6-54.3-0.7-2.6-1.7-5.2-1.7-7.9 0-5.9 4.8-10.8 10.8-10.8 2.3 0 4.2 0.9 6.2 2l70.9 40.9c5.3 3.1 11 5 17.2 5 3.2 0 6.4-0.5 9.5-1.4 33.1-9.5 68.8-14.8 105.7-14.8 6 0 11.9 0.1 17.8 0.4-7.1 21-10.9 43.1-10.9 66 0 135.8 132.2 245.8 295.3 245.8z m-194.3 86.5c23.8 0 43.2-19.3 43.2-43.1s-19.3-43.1-43.2-43.1c-23.8 0-43.2 19.3-43.2 43.1s19.4 43.1 43.2 43.1z m-215.9-86.2c-23.8 0-43.2 19.3-43.2 43.1s19.3 43.1 43.2 43.1 43.2-19.3 43.2-43.1-19.4-43.1-43.2-43.1zM866.7 103.3c56.9 41.2 93.2 102 93.2 169.7 0 124-120.8 224.5-269.9 224.5-149 0-269.9-100.5-269.9-224.5S540.9 48.5 690 48.5c30.8 0 60.6 4.4 88.1 12.3 2.6 0.8 5.2 1.2 7.9 1.2 5.2 0 9.9-1.6 14.3-4.1l59.1-34c1.7-1 3.3-1.7 5.2-1.7 2.4 0 4.7 0.9 6.4 2.6 1.7 1.7 2.6 4 2.6 6.4 0 2.2-0.9 4.4-1.4 6.6-0.3 1.2-7.6 28.3-12.2 45.3-0.5 1.9-0.9 3.8-0.9 5.7 0.1 5.9 3.1 11.2 7.6 14.5zM600.2 308.8c-19.9 0-36 16.1-36 35.9 0 19.8 16.1 35.9 36 35.9s36-16.1 36-35.9c0-19.8-16.2-35.9-36-35.9z m179.9 0c-19.9 0-36 16.1-36 35.9 0 19.8 16.1 35.9 36 35.9s36-16.1 36-35.9c-0.1-19.8-16.2-35.9-36-35.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="chrome-fill" unicode="" d="M371.8 384c0-77.5 62.7-140.2 140.2-140.2S652.2 306.5 652.2 384 589.5 524.2 512 524.2 371.8 461.6 371.8 384zM900 533.6l-234.3-12.1c63.6-74.3 64.6-181.5 11.1-263.7l-188-289.2c78-4.2 158.4 12.9 231.2 55.2 180 104 253 322.1 180 509.8zM320.3 304.1L163.8 611.9C121 546.5 96 468 96 384c0-208 152.3-380.3 351.4-410.8l106.9 209.4c-96.6-18.2-189.9 34.8-234 121.5zM538.8 589.6l344.4-18.1C848 641.3 792.6 702 719.8 744.3 653.9 782.4 581.5 800.5 510.5 800c-122.5-0.5-242.2-55.2-322.1-154.5l128.2-196.9c32 91.9 124.8 146.7 222.2 141z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alipay-circle-fill" unicode="" d="M308.6 350.3c-19.8-2-57.1-10.7-77.4-28.6-61-53-24.5-150 99-150 71.8 0 143.5 45.7 199.8 119-80.2 38.9-148.1 66.8-221.4 59.6zM769.1 283.3c100.1-33.4 154.7-43 166.7-44.8C951.5 284.1 960 333 960 384c0 247.4-200.6 448-448 448S64 631.4 64 384s200.6-448 448-448c155.9 0 293.2 79.7 373.5 200.5-75.6 29.8-213.6 85-286.8 120.1-69.9-85.7-160.1-137.8-253.7-137.8-158.4 0-212.1 138.1-137.2 229 16.3 19.8 44.2 38.7 87.3 49.4 67.5 16.5 175-10.3 275.7-43.4 18.1 33.3 33.4 69.9 44.7 108.9H305.1V494h160v56.2H271.3v31.3h193.8v80.1s0 13.5 13.7 13.5H557v-93.6h191.7v-31.3H557.1V494h156.4c-15-61.1-37.7-117.4-66.2-166.8 47.5-17.1 90.1-33.3 121.8-43.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="aliwangwang-fill" unicode="" d="M868.2 518.6c-18.9 45.1-46.3 85.6-81.2 120.6-34.7 34.8-75.4 62.1-120.5 81.2-46.7 19.8-96.3 29.8-147.5 29.8-41.9 0-82.9-6.7-121.9-20C306 772.7 200.8 776 170.6 776c-2.2 0-7.4 0-9.4-0.2-11.9-0.4-22.8-6.5-29.2-16.4-6.5-9.9-7.7-22.4-3.4-33.5l64.3-161.6c-34.6-58.3-52.8-125.1-52.8-193.2 0-51.4 10-101 29.8-147.6 18.9-45 46.2-85.6 81.2-120.5 34.7-34.8 75.4-62.1 120.5-81.2C418.3 2 467.9-8 519-8c51.3 0 100.9 10 147.7 29.8 44.9 18.9 85.5 46.3 120.4 81.2 34.7 34.8 62.1 75.4 81.2 120.6 19.8 46.7 29.8 96.5 29.8 147.6-0.2 51.2-10.1 100.8-29.9 147.4z m-325.2-79c0-20.4-16.6-37.1-37.1-37.1-20.4 0-37.1 16.7-37.1 37.1v55.1c0 20.4 16.6 37.1 37.1 37.1 20.4 0 37.1-16.6 37.1-37.1v-55.1z m175.2 0c0-20.4-16.6-37.1-37.1-37.1S644 419.2 644 439.6v55.1c0 20.4 16.7 37.1 37.1 37.1 20.4 0 37.1-16.6 37.1-37.1v-55.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="behance-circle-fill" unicode="" d="M420.3 425.7c8.7 6.3 12.9 16.7 12.9 31 0.3 6.8-1.1 13.5-4.1 19.6-2.7 4.9-6.7 9-11.6 11.9-5.1 3.1-10.7 5.1-16.6 6-6.4 1.2-12.9 1.8-19.3 1.7h-70.3v-79.7h76.1c13.1-0.1 24.2 3.1 32.9 9.5zM432.1 353.7c-9.8 7.5-22.9 11.2-39.2 11.2h-81.8v-94h80.2c7.5 0 14.4 0.7 21.1 2.1 6.7 1.4 12.7 3.8 17.8 7.2 5.1 3.3 9.2 7.8 12.3 13.6 3 5.8 4.5 13.2 4.5 22.1 0 17.7-5 30.2-14.9 37.8zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m86.5-286.9h138.4v-33.7H598.5v33.7zM512 267.2c-6.5-12.3-15.7-22.9-27-31-11.8-8.2-24.9-14.2-38.8-17.7-14.5-3.9-29.5-5.8-44.6-5.7H236V553.9h161c16.3 0 31.1-1.5 44.6-4.3 13.4-2.8 24.8-7.6 34.4-14.1 9.5-6.5 17-15.2 22.3-26 5.2-10.7 7.9-24.1 7.9-40 0-17.2-3.9-31.4-11.7-42.9-7.9-11.5-19.3-20.8-34.8-28.1 21.1-6 36.6-16.7 46.8-31.7 10.4-15.2 15.5-33.4 15.5-54.8 0-17.4-3.3-32.3-10-44.8zM790.8 320H612.4c0-19.4 6.7-38 16.8-48 10.2-9.9 24.8-14.9 43.9-14.9 13.8 0 25.5 3.5 35.5 10.4 9.9 6.9 15.9 14.2 18.1 21.8h59.8c-9.6-29.7-24.2-50.9-44-63.7-19.6-12.8-43.6-19.2-71.5-19.2-19.5 0-37 3.2-52.7 9.3-15.1 5.9-28.7 14.9-39.9 26.5-11 11.9-19.6 25.9-25.1 41.2-6.1 16.9-9.1 34.7-8.9 52.6 0 18.5 3.1 35.7 9.1 51.7 11.5 31.1 35.4 56 65.9 68.9 16.3 6.8 33.8 10.2 51.5 10 21 0 39.2-4 55-12.2 15.6-8.1 28.4-19.1 38.6-32.8 10.1-13.7 17.2-29.3 21.7-46.9 4.3-17.3 5.8-35.5 4.6-54.7zM668.8 415.6c-10.8 0-19.9-1.9-26.9-5.6-7-3.7-12.8-8.3-17.2-13.6-4.2-5.1-7.3-11.1-9.1-17.4-1.6-5.3-2.7-10.7-3.1-16.2H723c-1.6 17.3-7.6 30.1-15.6 39.1-8.4 8.9-21.9 13.7-38.6 13.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="amazon-circle-fill" unicode="" d="M485 428.5c-11.6-4.9-20.9-12.2-27.8-22-6.9-9.8-10.4-21.6-10.4-35.5 0-17.8 7.5-31.5 22.4-41.2 14.1-9.1 28.9-11.4 44.4-6.8 17.9 5.2 30 17.9 36.4 38.1 3 9.3 4.5 19.7 4.5 31.3v50.2c-12.6-0.4-24.4-1.6-35.5-3.7-11.1-2.1-22.4-5.6-34-10.4zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m35.8-262.7c-7.2 10.9-20.1 16.4-38.7 16.4-1.3 0-3-0.1-5.3-0.3-2.2-0.2-6.6-1.5-12.9-3.7-6.3-2.3-12.4-5.3-17.9-9.1-5.5-3.8-11.5-10-18-18.4-6.4-8.5-11.5-18.4-15.3-29.8l-94 8.4c0 12.4 2.4 24.7 7 36.9 4.7 12.2 11.8 23.9 21.4 35 9.6 11.2 21.1 21 34.5 29.4 13.4 8.5 29.6 15.2 48.4 20.3 18.9 5.1 39.1 7.6 60.9 7.6 21.3 0 40.6-2.6 57.8-7.7 17.2-5.2 31.1-11.5 41.4-19.1 10.3-7.5 18.9-16.1 25.9-25.7 6.9-9.6 11.7-18.5 14.4-26.7 2.7-8.2 4-15.7 4-22.8v-182.5c0-6.4 1.4-13 4.3-19.8 2.9-6.8 6.3-12.8 10.2-18 3.9-5.2 7.9-9.9 12-14.3 4.1-4.3 7.6-7.7 10.6-9.9l4.1-3.4-72.5-69.4c-8.5 7.7-16.9 15.4-25.2 23.4-8.3 8-14.5 14-18.5 18.1l-6.1 6.2c-2.4 2.3-5 5.7-8 10.2-8.1-12.2-18.5-22.8-31.1-31.8-12.7-9-26.3-15.6-40.7-19.7-14.5-4.1-29.4-6.5-44.7-7.1-15.3-0.6-30 1.5-43.9 6.5-13.9 5-26.5 11.7-37.6 20.3-11.1 8.6-19.9 20.2-26.5 35-6.6 14.8-9.9 31.5-9.9 50.4 0 17.4 3 33.3 8.9 47.7 6 14.5 13.6 26.5 23 36.1 9.4 9.6 20.7 18.2 34 25.7s26.4 13.4 39.2 17.7c12.8 4.2 26.6 7.8 41.5 10.7 14.9 2.9 27.6 4.8 38.2 5.7 10.6 0.9 21.2 1.6 31.8 2v39.4c0 13.5-2.3 23.5-6.7 30.1z m180.5-379.6c-2.8-3.3-7.5-7.8-14.1-13.5s-16.8-12.7-30.5-21.1c-13.7-8.4-28.8-16-45-22.9-16.3-6.9-36.3-12.9-60.1-18-23.7-5.1-48.2-7.6-73.3-7.6-25.4 0-50.7 3.2-76.1 9.6-25.4 6.4-47.6 14.3-66.8 23.7-19.1 9.4-37.6 20.2-55.1 32.2-17.6 12.1-31.7 22.9-42.4 32.5-10.6 9.6-19.6 18.7-26.8 27.1-1.7 1.9-2.8 3.6-3.2 5.1-0.4 1.5-0.3 2.8 0.3 3.7 0.6 0.9 1.5 1.6 2.6 2.2 1.1 0.5 2.3 0.7 3.7 0.6s2.6-0.6 3.7-1.4c40.9-24.2 72.9-41.3 95.9-51.4 82.9-36.4 168-45.7 255.3-27.9 40.5 8.3 82.1 22.2 124.9 41.8 3.2 1.2 6 1.5 8.3 0.9 2.3-0.6 3.5-2.4 3.5-5.4 0-2.8-1.6-6.3-4.8-10.2z m59.9 29c-1.8-11.1-4.9-21.6-9.1-31.8-7.2-17.1-16.3-30-27.1-38.4-3.6-2.9-6.4-3.8-8.3-2.8-1.9 1-1.9 3.5 0 7.4 4.5 9.3 9.2 21.8 14.2 37.7 5 15.8 5.7 26 2.1 30.5-1.1 1.5-2.7 2.6-5 3.6-2.2 0.9-5.1 1.5-8.6 1.9s-6.7 0.6-9.4 0.8c-2.8 0.2-6.5 0.2-11.2 0-4.7-0.2-8-0.4-10.1-0.6-2-0.2-5.3-0.5-9.9-0.9-4.6-0.4-7-0.6-7.2-0.6-1.3-0.2-2.7-0.4-4.1-0.5-1.5-0.1-2.7-0.2-3.5-0.3l-2.7-0.3c-1-0.1-1.7-0.2-2.2-0.2h-3.2l-1 0.2-0.6 0.5-0.5 0.9c-1.3 3.3 3.7 7.4 15 12.4s22.3 8.1 32.9 9.3c9.8 1.5 21.3 1.5 34.5 0.3s21.3-3.7 24.3-7.4c2.3-3.5 2.5-10.7 0.7-21.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="codepen-circle-fill" unicode="" d="M488.1 481.3V592.6L300.9 468l83.6-55.8zM742.2 343.6v79.8l-59.8-39.9zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m278-533c0-1.1-0.1-2.1-0.2-3.1 0-0.4-0.1-0.7-0.2-1-0.1-0.7-0.2-1.3-0.4-2-0.1-0.4-0.2-0.8-0.4-1.2-0.2-0.6-0.4-1.2-0.6-1.7-0.2-0.4-0.4-0.8-0.5-1.2-0.3-0.5-0.5-1.1-0.8-1.6-0.2-0.4-0.4-0.7-0.7-1.1-0.3-0.5-0.7-1-1-1.5-0.3-0.4-0.5-0.7-0.8-1-0.4-0.4-0.8-0.9-1.2-1.3-0.3-0.3-0.6-0.6-1-0.9-0.4-0.4-0.9-0.8-1.4-1.1-0.4-0.3-0.7-0.6-1.1-0.8-0.1-0.1-0.3-0.2-0.4-0.3L525.2 110c-4-2.7-8.6-4-13.2-4-4.7 0-9.3 1.4-13.3 4L244.6 279.1c-0.1 0.1-0.3 0.2-0.4 0.3-0.4 0.3-0.7 0.5-1.1 0.8-0.5 0.4-0.9 0.7-1.3 1.1-0.3 0.3-0.6 0.6-1 0.9-0.4 0.4-0.8 0.8-1.2 1.3-0.3 0.3-0.6 0.7-0.8 1-0.4 0.5-0.7 1-1 1.5-0.2 0.4-0.5 0.7-0.7 1.1-0.3 0.5-0.6 1.1-0.8 1.6-0.2 0.4-0.4 0.8-0.5 1.2-0.2 0.6-0.4 1.2-0.6 1.7-0.1 0.4-0.3 0.8-0.4 1.2-0.2 0.7-0.3 1.3-0.4 2-0.1 0.3-0.1 0.7-0.2 1-0.1 1-0.2 2.1-0.2 3.1V468.1c0 1 0.1 2.1 0.2 3.1 0.1 0.3 0.1 0.7 0.2 1 0.1 0.7 0.2 1.3 0.4 2 0.1 0.4 0.2 0.8 0.4 1.2 0.2 0.6 0.4 1.2 0.6 1.7 0.2 0.4 0.4 0.8 0.5 1.2 0.2 0.5 0.5 1.1 0.8 1.6 0.2 0.4 0.4 0.7 0.7 1.1 0.6 0.9 1.2 1.7 1.8 2.5 0.4 0.4 0.8 0.9 1.2 1.3 0.3 0.3 0.6 0.6 1 0.9 0.4 0.4 0.9 0.8 1.3 1.1 0.4 0.3 0.7 0.6 1.1 0.8 0.1 0.1 0.3 0.2 0.4 0.3L498.7 657c8 5.3 18.5 5.3 26.5 0l254.1-169.1c0.1-0.1 0.3-0.2 0.4-0.3 0.4-0.3 0.7-0.5 1.1-0.8 0.5-0.4 0.9-0.7 1.4-1.1 0.3-0.3 0.6-0.6 1-0.9 0.4-0.4 0.8-0.8 1.2-1.3 0.7-0.8 1.3-1.6 1.8-2.5 0.2-0.4 0.5-0.7 0.7-1.1 0.3-0.5 0.6-1 0.8-1.6 0.2-0.4 0.4-0.8 0.5-1.2 0.2-0.6 0.4-1.2 0.6-1.7 0.1-0.4 0.3-0.8 0.4-1.2 0.2-0.7 0.3-1.3 0.4-2 0.1-0.3 0.1-0.7 0.2-1 0.1-1 0.2-2.1 0.2-3.1V299zM535.9 285.7v-111.3L723.1 299l-83.6 55.8zM281.8 423.4v-79.8l59.8 39.9zM512 439.9l-84.5-56.4 84.5-56.4 84.5 56.4zM723.1 468L535.9 592.6v-111.3l103.6-69.1zM384.5 354.8L300.9 299l187.2-124.6V285.7l-103.6 69.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="CodeSandbox-circle-f" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m243.7-589.2L512 102 268.3 242.8V524.2l110 63.6-0.4 0.2h0.2L512 665l134-77h-0.2l-0.3-0.2 110.1-63.6v-281.4zM307.9 359.3l87.6-49.9V215l96.7-55.9V371.2L307.9 477.6zM511.8 511.1L418 565l-91.1-52.6 185.2-107 185.2 106.9-91.4 52.8zM531.8 159.1l97.3 56.2v94.1l87 49.5V477.5L531.8 371z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dropbox-circle-fill" unicode="" d="M663.8 440.5zM512.3 534.3l-151.8-93.8 151.8-93.9 151.5 93.9zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m151.2-595.5L512.6 146l-151 90.5v33.1l45.4-29.4 105.6 87.7 105.6-87.7 45.1 29.4v-33.1z m-45.6 22.4l-105.3 87.7L407 258.9l-151 99.2 104.5 82.4L256 524.8 407 622l105.3-87.7L617.6 622 768 523.9l-104.2-83.5L768 357l-150.4-98.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="github-fill" unicode="" d="M511.6 819.7C264.3 819.8 64 619.6 64 372.5 64 177.1 189.3 11 363.8-50c23.5-5.9 19.9 10.8 19.9 22.2v77.5c-135.7-15.9-141.2 73.9-150.3 88.9C215 170 171.5 178 184.5 193c30.9 15.9 62.4-4 98.9-57.9 26.4-39.1 77.9-32.5 104-26 5.7 23.5 17.9 44.5 34.7 60.8-140.6 25.2-199.2 111-199.2 213 0 49.5 16.3 95 48.3 131.7-20.4 60.5 1.9 112.3 4.9 120 58.1 5.2 118.5-41.6 123.2-45.3 33 8.9 70.7 13.6 112.9 13.6 42.4 0 80.2-4.9 113.5-13.9 11.3 8.6 67.3 48.8 121.3 43.9 2.9-7.7 24.7-58.3 5.5-118 32.4-36.8 48.9-82.7 48.9-132.3 0-102.2-59-188.1-200-212.9 23.5-23.2 38.1-55.4 38.1-91v-112.5c0.8-9 0-17.9 15-17.9 177.1 59.7 304.6 227 304.6 424.1 0 247.2-200.4 447.3-447.5 447.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dribbble-circle-fill" unicode="" d="M675.1 567.7c-43.4 38.5-100.6 62-163.1 62-19.4 0-38.8-2.3-57.7-6.9 6.8-9.1 51.5-69.9 91.8-144 87.5 32.8 124.5 82.6 129 88.9zM554 343.2c-138.7-48.3-188.6-144.6-193-153.6 41.7-32.5 94.1-51.9 151-51.9 34.1 0 66.6 6.9 96.1 19.5-3.7 21.6-17.9 96.8-52.5 186.6l-1.6-0.6zM601.7 355.1c32.2-88.4 45.3-160.4 47.8-175.4 55.2 37.3 94.5 96.4 105.4 164.9-8.4 2.6-76.1 22.8-153.2 10.5zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m0-736c-158.8 0-288 129.2-288 288s129.2 288 288 288 288-129.2 288-288-129.2-288-288-288zM565.1 442.2c5.7-11.7 11.2-23.6 16.3-35.6 1.8-4.2 3.6-8.4 5.3-12.7 81.8 10.3 163.2-6.2 171.3-7.9-0.5 58.1-21.3 111.4-55.5 153.3-5.3-7.1-46.5-60-137.4-97.1zM498.6 464c-40.8 72.5-84.7 133.4-91.2 142.3-68.8-32.5-120.3-95.9-136.2-172.2 11-0.2 112.4-0.7 227.4 29.9zM529.2 381.5c3.2 1 6.4 2 9.7 2.9-6.2 14-12.9 28-19.9 41.7-122.8-36.8-242.1-35.2-252.8-35-0.1-2.5-0.1-5-0.1-7.5 0-63.2 23.9-120.9 63.2-164.5 5.5 9.6 73 121.4 199.9 162.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="googleplus-circle-f" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m36.5-558.8c-43.9-61.8-132.1-79.8-200.9-53.3-69 26.3-118 99.2-112.1 173.5 1.5 90.9 85.2 170.6 176.1 167.5 43.6 2 84.6-16.9 118-43.6-14.3-16.2-29-31.8-44.8-46.3-40.1 27.7-97.2 35.6-137.3 3.6-57.4-39.7-60-133.4-4.8-176.1 53.7-48.7 155.2-24.5 170.1 50.1-33.6 0.5-67.4 0-101 1.1-0.1 20.1-0.2 40.1-0.1 60.2 56.2 0.2 112.5 0.3 168.8-0.2 3.3-47.3-3-97.5-32-136.5zM791 359.5c-16.8-0.2-33.6-0.3-50.4-0.4-0.2-16.8-0.3-33.6-0.3-50.4H690c-0.2 16.8-0.2 33.5-0.3 50.3-16.8 0.2-33.6 0.3-50.4 0.5v50.1c16.8 0.2 33.6 0.3 50.4 0.3 0.1 16.8 0.3 33.6 0.4 50.4h50.2l0.3-50.4c16.8-0.2 33.6-0.2 50.4-0.3v-50.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="medium-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m256-253.7l-40.8-39.1c-3.6-2.7-5.3-7.1-4.6-11.4v-287.7c-0.7-4.4 1-8.8 4.6-11.4l40-39.1v-8.7H566.4v8.3l41.3 40.1c4.1 4.1 4.1 5.3 4.1 11.4V473.5l-115-291.6h-15.5L347.5 473.5V278c-1.2-8.2 1.7-16.5 7.5-22.4l53.8-65.1v-8.7H256v8.7l53.8 65.1c5.8 5.9 8.3 14.3 7 22.4V504c0.7 6.3-1.7 12.4-6.5 16.7l-47.8 57.6V587H411l114.6-251.5 100.9 251.3H768v-8.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="QQ-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m210.5-612.4c-11.5-1.4-44.9 52.7-44.9 52.7 0-31.3-16.2-72.2-51.1-101.8 16.9-5.2 54.9-19.2 45.9-34.4-7.3-12.3-125.6-7.9-159.8-4-34.2-3.8-152.5-8.3-159.8 4-9.1 15.2 28.9 29.2 45.8 34.4-35 29.5-51.1 70.4-51.1 101.8 0 0-33.4-54.1-44.9-52.7-5.4 0.7-12.4 29.6 9.4 99.7 10.3 33 22 60.5 40.2 105.8-3.1 116.9 45.3 215 160.4 215 113.9 0 163.3-96.1 160.4-215 18.1-45.2 29.9-72.8 40.2-105.8 21.7-70.1 14.6-99.1 9.3-99.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="IE-circle-fill" unicode="" d="M693.6 611.6c-24 0-51.1-11.7-72.6-22 46.3-18 86-57.3 112.3-99.6 7.1 18.9 14.6 47.9 14.6 67.9 0 32-22.8 53.7-54.3 53.7zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m253.9-492.9H437.1c0-100.4 144.3-136 196.8-47.4h120.8c-32.6-91.7-119.7-146-216.8-146-35.1 0-70.3 0.1-101.7 15.6-87.4-44.5-180.3-56.6-180.3 42 0 45.8 23.2 107.1 44 145C335 412 381.3 473.2 435.6 521.5c-43.7-18.9-91.1-66.3-122-101.2 25.9 112.8 129.5 193.6 237.1 186.5 130 59.8 209.7 34.1 209.7-38.6 0-27.4-10.6-63.3-21.4-87.9 25.2-45.5 33.3-97.6 26.9-141.2zM540.5 496.9c-53.7 0-102-39.7-104-94.9h208c-2 55.1-50.6 94.9-104 94.9zM320.6 293.1c-73-152.4 11.5-172.2 100.3-123.3-46.6 27.5-82.6 72.2-100.3 123.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="google-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m167-633.6C638.4 161 583 139 516.9 139c-95.7 0-178.5 54.9-218.8 134.9C281.5 307 272 344.4 272 384s9.5 77 26.1 110.1c40.3 80.1 123.1 135 218.8 135 66 0 121.4-24.3 163.9-63.8L610.6 495c-25.4 24.3-57.7 36.6-93.6 36.6-63.8 0-117.8-43.1-137.1-101-4.9-14.7-7.7-30.4-7.7-46.6s2.8-31.9 7.7-46.6c19.3-57.9 73.3-101 137-101 33 0 61 8.7 82.9 23.4 26 17.4 43.2 43.3 48.9 74H516.9v94.8h230.7c2.9-16.1 4.4-32.8 4.4-50.1 0-74.7-26.7-137.4-73-180.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dingtalk-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m227-385.3c-1-4.2-3.5-10.4-7-17.8h0.1l-0.4-0.7c-20.3-43.1-73.1-127.7-73.1-127.7s-0.1 0.2-0.3 0.5l-15.5-26.8h74.5L575.1 86l32.3 128h-58.6l20.4 84.7c-16.5-3.9-35.9-9.4-59-16.8 0 0-31.2-18.2-89.9 35 0 0-39.6 34.7-16.6 43.4 9.8 3.7 47.4 8.4 77 12.3 40 5.4 64.6 8.2 64.6 8.2S422 379 392.7 383.5c-29.3 4.6-66.4 53.1-74.3 95.8 0 0-12.2 23.4 26.3 12.3 38.5-11.1 197.9-43.2 197.9-43.2s-207.4 63.3-221.2 78.7c-13.8 15.4-40.6 84.2-37.1 126.5 0 0 1.5 10.5 12.4 7.7 0 0 153.3-69.7 258.1-107.9 104.8-37.9 195.9-57.3 184.2-106.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sketch-circle-fill" unicode="" d="M582.3 270.4l147.9 166.3h-63.4zM672.3 472.7h62.5l-92.1 115.1zM397.6 436.7L512 211.5l114.4 225.2zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m286.7-380.2L515.8 133.7c-1-1.1-2.4-1.7-3.8-1.7s-2.8 0.6-3.8 1.7L225.3 451.8c-1.7 1.9-1.7 4.7-0.2 6.6L365.6 634c1 1.2 2.4 1.9 4 1.9h284.6c1.6 0 3-0.7 4-1.9l140.5-175.6c1.7-1.9 1.7-4.7 0-6.6zM608.2 472.7L512 569.9l-96.2-97.2zM420.3 594.9l-23.1-89.8 88.8 89.8zM603.7 594.9H538l88.8-89.8zM381.3 587.8l-92.1-115.1h62.5zM293.8 436.7l147.9-166.3-84.5 166.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="slack-circle-fill" unicode="" d="M445.262 418.327l101.292 32.909 32.909-101.293-101.292-32.908zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m231.1-523.5l-50.3-16.3 16.5-50.6c7.7-23.6-5.3-49-28.9-56.7-23.6-7.7-49 5.3-56.7 28.9l-16.5 50.6L506 231.5l16.5-50.6c7.7-23.6-5.3-49-28.9-56.7-23.6-7.7-49 5.3-56.7 28.9l-16.5 50.6-51-16.6c-23.6-7.7-49 5.3-56.7 28.9s5.3 49 28.9 56.7l51 16.6-32.9 101.3-51-16.6c-23.6-7.7-49 5.3-56.7 28.9-7.7 23.6 5.3 49 28.9 56.7l51 16.6-16.5 50.6c-7.7 23.6 5.3 49 28.9 56.7 23.6 7.7 49-5.3 56.7-28.9l16.5-50.6 101.3 32.9-16.5 50.6c-7.7 23.6 5.3 49 28.9 56.7s49-5.3 56.7-28.9l16.5-50.6 50.3 16.3c23.6 7.7 49-5.3 56.7-28.9 7.7-23.6-5.3-49-28.9-56.7L632.1 479 665 377.7l50.3 16.3c23.6 7.7 49-5.3 56.7-28.9 7.6-23.5-5.3-48.9-28.9-56.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="twitter-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m215.3-337.7c0.3-4.7 0.3-9.6 0.3-14.4 0-146.8-111.8-315.9-316.1-315.9-63 0-121.4 18.3-170.6 49.8 9-1 17.6-1.4 26.8-1.4 52 0 99.8 17.6 137.9 47.4-48.8 1-89.8 33-103.8 77 17.1-2.5 32.5-2.5 50.1 2-50.8 10.3-88.9 55-88.9 109v1.4c14.7-8.3 32-13.4 50.1-14.1-30.9 20.6-49.5 55.3-49.5 92.4 0 20.7 5.4 39.6 15.1 56 54.7-67.4 136.9-111.4 229-116.1C492 542.9 548.4 604 616.2 604c32 0 60.8-13.4 81.1-35 25.1 4.7 49.1 14.1 70.5 26.7-8.3-25.7-25.7-47.4-48.8-61.1 22.4 2.4 44 8.6 64 17.3-15.1-22.2-34-41.9-55.7-57.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="taobao-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832zM315.7 604.5c27.3 0 49.5-22.1 49.5-49.4s-22.1-49.4-49.5-49.4-49.5 22.1-49.5 49.4 22.1 49.4 49.5 49.4zM366.9 318c-13.6-42.3-10.2-26.7-64.4-144.5l-78.5 49s87.7 79.8 105.6 116.2c19.2 38.4-21.1 58.9-21.1 58.9l-60.2 37.5 32.7 50.2c45.4-33.7 48.7-36.6 79.2-67.2 23.8-23.9 20.7-56.8 6.7-100.1z m427.2-55c-15.3-143.8-202.4-90.3-202.4-90.3l10.2 41.1 43.3-9.3c80-5 72.3 64.9 72.3 64.9V473c0.6 77.3-72.6 85.4-204.2 38.3l30.6-8.3c-2.5-9-12.5-23.2-25.2-38.6h176v-35.6h-99.1v-44.5h98.7v-35.7h-98.7V274c14.9 4.8 28.6 11.5 40.5 20.5l-8.7 32.5 46.5 14.4 38.8-94.9-57.3-23.9-10.2 37.8c-25.6-19.5-78.8-48-171.8-45.4-99.2-2.6-73.7 112-73.7 112l2.5 1.3H472c-0.5-14.7-6.6-38.7 1.7-51.8 6.8-10.8 24.2-12.6 35.3-13.1 1.3-0.1 2.6-0.1 3.9-0.1v85.3h-101v35.7h101v44.5H487c-22.7-24.1-43.5-44.1-43.5-44.1l-30.6 26.7c21.7 22.9 43.3 59.1 56.8 83.2-10.9-4.4-22-9.2-33.6-14.2-11.2-14.3-24.2-29-38.7-43.5 0.5-0.8-50 28.4-50 28.4 52.2 44.4 81.4 139.9 81.4 139.9l72.5-20.4s-5.9-14-18.4-35.6c290.3 82.3 307.4-50.5 307.4-50.5s19.1-91.8 3.8-235.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="weibo-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m-44.4-672C353.1 160 236 215.6 236 307.1c0 47.8 30.2 103.1 82.3 155.3 69.5 69.6 150.6 101.4 181.1 70.8 13.5-13.5 14.8-36.8 6.1-64.6-4.5-14 13.1-6.3 13.1-6.3 56.2 23.6 105.2 25 123.1-0.7 9.6-13.7 8.6-32.8-0.2-55.1-4.1-10.2 1.3-11.8 9-14.1 31.7-9.8 66.9-33.6 66.9-75.5 0.2-69.5-99.7-156.9-249.8-156.9z m207.3 290.8c3.7 11.5 1.4 24.5-7.2 34.1-8.6 9.6-21.4 13.2-33.1 10.7-9.8-2.1-19.5 4.2-21.6 14-2.1 9.9 4.2 19.6 14 21.7 24.1 5.1 50.1-2.3 67.7-21.9 17.7-19.6 22.4-46.3 14.9-69.8-3.1-9.6-13.3-14.8-22.9-11.7-9.6 3.1-14.9 13.3-11.8 22.9z m106-34.3s0-0.1 0 0c-3.6-11.2-15.5-17.3-26.6-13.7-11.1 3.6-17.2 15.5-13.6 26.7 11 34.2 4 73.2-21.7 101.8-25.8 28.6-63.8 39.5-98.9 32.1-11.4-2.5-22.7 4.9-25.1 16.3-2.5 11.4 4.8 22.7 16.2 25.1 49.4 10.5 102.8-4.8 139.1-45.1 36.3-40.2 46.1-95.1 30.6-143.2zM446.4 410.4c-91.4-9-160.7-65.1-154.7-125.2 5.9-60.1 84.8-101.5 176.2-92.5 91.4 9.1 160.7 65.1 154.7 125.3-5.9 60.1-84.8 101.5-176.2 92.4z m80.2-141.7c-18.7-42.3-72.3-64.8-117.8-50.1-43.9 14.2-62.5 57.7-43.3 96.8 18.9 38.4 68 60.1 111.5 48.8 45-11.7 68-54.2 49.6-95.5zM433.6 300.9c-14.2 5.9-32.4-0.2-41.2-13.9-8.8-13.8-4.7-30.2 9.3-36.6 14.3-6.5 33.2-0.3 42 13.8 8.8 14.3 4.2 30.6-10.1 36.7zM468.5 315.4c-5.4 2.2-12.2-0.5-15.4-5.8-3.1-5.4-1.4-11.5 4.1-13.8 5.5-2.3 12.6 0.3 15.8 5.8 3 5.6 1 11.8-4.5 13.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="zhihu-circle-fill" unicode="" d="M512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m-90.7-477.8l-0.1-1.5c-1.5-20.4-6.3-43.9-12.9-67.6l24 18.1 71-80.7c9.2-33-3.3-63.1-3.3-63.1l-95.7 111.9v0.1c-8.9-29-20.1-57.3-33.3-84.7-22.6-45.7-55.2-54.7-89.5-57.7-34.4-3-23.3 5.3-23.3 5.3 68 55.5 78 87.8 96.8 123.1 11.9 22.3 20.4 64.3 25.3 96.8H264.1s4.8 31.2 19.2 41.7h101.6c0.6 15.3-1.3 102.8-2 131.4h-49.4c-9.2-45-41-56.7-48.1-60.1-7-3.4-23.6-7.1-21.1 0 2.6 7.1 27 46.2 43.2 110.7 16.3 64.6 63.9 62 63.9 62-12.8-22.5-22.4-73.6-22.4-73.6h159.7c10.1 0 10.6-39 10.6-39h-90.8c-0.7-22.7-2.8-83.8-5-131.4H519s12.2-15.4 12.2-41.7H421.3z m346.5-167h-87.6l-69.5-46.6-16.4 46.6h-40.1V574.5h213.6v-387.3zM408.2 285s0 0.1 0 0zM624.2 190.7l56.8 38.1h45.6-0.1V531.3H596.7v-302.5h14.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reddit-circle-fill" unicode="" d="M620 348m-36 0a36 36 0 1 1 72 0 36 36 0 1 1-72 0ZM728 456c-14.3 0-26.8-8.4-32.5-20.6 18.8-14.3 34.4-30.7 45.9-48.8 13.2 5.3 22.6 18.3 22.6 33.4 0 19.9-16.1 36-36 36zM512 832C264.6 832 64 631.4 64 384s200.6-448 448-448 448 200.6 448 448S759.4 832 512 832z m245-477.9c4.6-13.5 7-27.6 7-42.1 0-99.4-112.8-180-252-180s-252 80.6-252 180c0 14.5 2.4 28.6 7 42.1-25.3 11.2-43 36.4-43 65.9 0 39.8 32.2 72 72 72 27.1 0 50.6-14.9 62.9-37 36.2 19.8 80.2 32.8 128.1 36.1l58.4 131.1c4.3 9.8 15.2 14.8 25.5 11.8l91.6-26.5c9.1 16.9 27 28.4 47.6 28.4 29.8 0 54-24.2 54-54s-24.2-54-54-54c-23.5 0-43.5 15.1-50.9 36.1L577 587.7l-43-96.5c49.1-3 94.2-16.1 131.2-36.3 12.3 22.1 35.8 37 62.9 37 39.8 0 72-32.2 72-72-0.1-29.3-17.8-54.6-43.1-65.8zM585.7 271.1c-14.9-11.7-44.3-24.3-73.7-24.3s-58.9 12.6-73.7 24.3c-9.3 7.3-22.7 5.7-30-3.6-7.3-9.3-5.7-22.7 3.6-30 25.7-20.4 65-33.5 100.1-33.5 35.1 0 74.4 13.1 100.2 33.5 9.3 7.3 10.9 20.8 3.6 30-7.3 9.3-20.8 10.9-30.1 3.6zM296 456c-19.9 0-36-16.1-36-36 0-15.1 9.4-28.1 22.6-33.4 11.5 18.1 27.1 34.5 45.9 48.8-5.7 12.2-18.2 20.6-32.5 20.6zM404 348m-36 0a36 36 0 1 1 72 0 36 36 0 1 1-72 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="alipay-square-fill" unicode="" d="M308.6 350.3c-19.8-2-57.1-10.7-77.4-28.6-61-53-24.5-150 99-150 71.8 0 143.5 45.7 199.8 119-80.2 38.9-148.1 66.8-221.4 59.6zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m29.4-663.2S703 206.6 598.7 256.5C528.8 170.8 438.6 118.7 345 118.7c-158.4 0-212.1 138.1-137.2 229 16.3 19.8 44.2 38.7 87.3 49.4 67.5 16.5 175-10.3 275.7-43.4 18.1 33.3 33.4 69.9 44.7 108.9H305.1V494h160v56.2H271.3v31.3h193.8v80.1s0 13.5 13.7 13.5H557v-93.6h191.7v-31.3H557.1V494h156.4c-15-61.1-37.7-117.4-66.2-166.8 47.5-17.1 90.1-33.3 121.8-43.9 114.3-38.2 140.2-40.2 140.2-40.2v-122.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dingtalk-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM739 446.7c-1-4.2-3.5-10.4-7-17.8h0.1l-0.4-0.7c-20.3-43.1-73.1-127.7-73.1-127.7s-0.1 0.2-0.3 0.5l-15.5-26.8h74.5L575.1 86l32.3 128h-58.6l20.4 84.7c-16.5-3.9-35.9-9.4-59-16.8 0 0-31.2-18.2-89.9 35 0 0-39.6 34.7-16.6 43.4 9.8 3.7 47.4 8.4 77 12.3 40 5.4 64.6 8.2 64.6 8.2S422 379 392.7 383.5c-29.3 4.6-66.4 53.1-74.3 95.8 0 0-12.2 23.4 26.3 12.3 38.5-11.1 197.9-43.2 197.9-43.2s-207.4 63.3-221.2 78.7c-13.8 15.4-40.6 84.2-37.1 126.5 0 0 1.5 10.5 12.4 7.7 0 0 153.3-69.7 258.1-107.9 104.8-37.9 195.9-57.3 184.2-106.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="CodeSandbox-square-f" unicode="" d="M307.9 359.3l87.6-49.9V215l96.7-55.9V371.2L307.9 477.6zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM755.7 242.8L512 102 268.3 242.8V524.2l110 63.6-0.4 0.2h0.2L512 665l134-77h-0.2l-0.3-0.2 110.1-63.6v-281.4zM531.8 159.1l97.3 56.2v94.1l87 49.5V477.5L531.8 371zM511.8 511.1L418 565l-91.1-52.6 185.2-107 185.2 106.9-91.4 52.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="behance-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM598.5 545.1h138.4v-33.7H598.5v33.7zM512 267.2c-6.5-12.3-15.7-22.9-27-31-11.8-8.2-24.9-14.2-38.8-17.7-14.5-3.9-29.5-5.8-44.6-5.7H236V553.9h161c16.3 0 31.1-1.5 44.6-4.3 13.4-2.8 24.8-7.6 34.4-14.1 9.5-6.5 17-15.2 22.3-26 5.2-10.7 7.9-24.1 7.9-40 0-17.2-3.9-31.4-11.7-42.9-7.9-11.5-19.3-20.8-34.8-28.1 21.1-6 36.6-16.7 46.8-31.7 10.4-15.2 15.5-33.4 15.5-54.8 0-17.4-3.3-32.3-10-44.8zM790.8 320H612.4c0-19.4 6.7-38 16.8-48 10.2-9.9 24.8-14.9 43.9-14.9 13.8 0 25.5 3.5 35.5 10.4 9.9 6.9 15.9 14.2 18.1 21.8h59.8c-9.6-29.7-24.2-50.9-44-63.7-19.6-12.8-43.6-19.2-71.5-19.2-19.5 0-37 3.2-52.7 9.3-15.1 5.9-28.7 14.9-39.9 26.5-11 11.9-19.6 25.9-25.1 41.2-6.1 16.9-9.1 34.7-8.9 52.6 0 18.5 3.1 35.7 9.1 51.7 11.5 31.1 35.4 56 65.9 68.9 16.3 6.8 33.8 10.2 51.5 10 21 0 39.2-4 55-12.2 15.6-8.1 28.4-19.1 38.6-32.8 10.1-13.7 17.2-29.3 21.7-46.9 4.3-17.3 5.8-35.5 4.6-54.7zM668.8 415.6c-10.8 0-19.9-1.9-26.9-5.6-7-3.7-12.8-8.3-17.2-13.6-4.2-5.1-7.3-11.1-9.1-17.4-1.6-5.3-2.7-10.7-3.1-16.2H723c-1.6 17.3-7.6 30.1-15.6 39.1-8.4 8.9-21.9 13.7-38.6 13.7zM420.3 425.7c8.7 6.3 12.9 16.7 12.9 31 0.3 6.8-1.1 13.5-4.1 19.6-2.7 4.9-6.7 9-11.6 11.9-5.1 3.1-10.7 5.1-16.6 6-6.4 1.2-12.9 1.8-19.3 1.7h-70.3v-79.7h76.1c13.1-0.1 24.2 3.1 32.9 9.5zM432.1 353.7c-9.8 7.5-22.9 11.2-39.2 11.2h-81.8v-94h80.2c7.5 0 14.4 0.7 21.1 2.1s12.7 3.8 17.8 7.2c5.1 3.3 9.2 7.8 12.3 13.6 3 5.8 4.5 13.2 4.5 22.1 0 17.7-5 30.2-14.9 37.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="amazon-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM547.8 569.3c-7.2 10.9-20.1 16.4-38.7 16.4-1.3 0-3-0.1-5.3-0.3-2.2-0.2-6.6-1.5-12.9-3.7-6.3-2.3-12.4-5.3-17.9-9.1-5.5-3.8-11.5-10-18-18.4-6.4-8.5-11.5-18.4-15.3-29.8l-94 8.4c0 12.4 2.4 24.7 7 36.9s11.8 23.9 21.4 35c9.6 11.2 21.1 21 34.5 29.4 13.4 8.5 29.6 15.2 48.4 20.3 18.9 5.1 39.1 7.6 60.9 7.6 21.3 0 40.6-2.6 57.8-7.7 17.2-5.2 31.1-11.5 41.4-19.1 10.3-7.5 18.9-16.1 25.9-25.7 6.9-9.6 11.7-18.5 14.4-26.7 2.7-8.2 4-15.7 4-22.8v-182.5c0-6.4 1.4-13 4.3-19.8 2.9-6.8 6.3-12.8 10.2-18 3.9-5.2 7.9-9.9 12-14.3 4.1-4.3 7.6-7.7 10.6-9.9l4.1-3.4-72.5-69.4c-8.5 7.7-16.9 15.4-25.2 23.4-8.3 8-14.5 14-18.5 18.1l-6.1 6.2c-2.4 2.3-5 5.7-8 10.2-8.1-12.2-18.5-22.8-31.1-31.8-12.7-9-26.3-15.6-40.7-19.7-14.5-4.1-29.4-6.5-44.7-7.1-15.3-0.6-30 1.5-43.9 6.5-13.9 5-26.5 11.7-37.6 20.3-11.1 8.6-19.9 20.2-26.5 35-6.6 14.8-9.9 31.5-9.9 50.4 0 17.4 3 33.3 8.9 47.7 6 14.5 13.6 26.5 23 36.1 9.4 9.6 20.7 18.2 34 25.7s26.4 13.4 39.2 17.7c12.8 4.2 26.6 7.8 41.5 10.7 14.9 2.9 27.6 4.8 38.2 5.7 10.6 0.9 21.2 1.6 31.8 2v39.4c0 13.5-2.3 23.5-6.7 30.1z m180.5-379.6c-2.8-3.3-7.5-7.8-14.1-13.5s-16.8-12.7-30.5-21.1c-13.7-8.4-28.8-16-45-22.9-16.3-6.9-36.3-12.9-60.1-18-23.7-5.1-48.2-7.6-73.3-7.6-25.4 0-50.7 3.2-76.1 9.6-25.4 6.4-47.6 14.3-66.8 23.7-19.1 9.4-37.6 20.2-55.1 32.2-17.6 12.1-31.7 22.9-42.4 32.5-10.6 9.6-19.6 18.7-26.8 27.1-1.7 1.9-2.8 3.6-3.2 5.1-0.4 1.5-0.3 2.8 0.3 3.7 0.6 0.9 1.5 1.6 2.6 2.2 1.1 0.5 2.3 0.7 3.7 0.6s2.6-0.6 3.7-1.4c40.9-24.2 72.9-41.3 95.9-51.4 82.9-36.4 168-45.7 255.3-27.9 40.5 8.3 82.1 22.2 124.9 41.8 3.2 1.2 6 1.5 8.3 0.9 2.3-0.6 3.5-2.4 3.5-5.4 0-2.8-1.6-6.3-4.8-10.2z m59.9 29c-1.8-11.1-4.9-21.6-9.1-31.8-7.2-17.1-16.3-30-27.1-38.4-3.6-2.9-6.4-3.8-8.3-2.8-1.9 1-1.9 3.5 0 7.4 4.5 9.3 9.2 21.8 14.2 37.7 5 15.8 5.7 26 2.1 30.5-1.1 1.5-2.7 2.6-5 3.6-2.2 0.9-5.1 1.5-8.6 1.9s-6.7 0.6-9.4 0.8c-2.8 0.2-6.5 0.2-11.2 0-4.7-0.2-8-0.4-10.1-0.6-2-0.2-5.3-0.5-9.9-0.9-4.6-0.4-7-0.6-7.2-0.6-1.3-0.2-2.7-0.4-4.1-0.5-1.5-0.1-2.7-0.2-3.5-0.3l-2.7-0.3c-1-0.1-1.7-0.2-2.2-0.2h-3.2l-1 0.2-0.6 0.5-0.5 0.9c-1.3 3.3 3.7 7.4 15 12.4s22.3 8.1 32.9 9.3c9.8 1.5 21.3 1.5 34.5 0.3s21.3-3.7 24.3-7.4c2.3-3.5 2.5-10.7 0.7-21.7zM485 428.5c-11.6-4.9-20.9-12.2-27.8-22-6.9-9.8-10.4-21.6-10.4-35.5 0-17.8 7.5-31.5 22.4-41.2 14.1-9.1 28.9-11.4 44.4-6.8 17.9 5.2 30 17.9 36.4 38.1 3 9.3 4.5 19.7 4.5 31.3v50.2c-12.6-0.4-24.4-1.6-35.5-3.7-11.1-2.1-22.4-5.6-34-10.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="codepen-square-fill" unicode="" d="M723.1 468L535.9 592.6v-111.3l103.6-69.1zM512 439.9l-84.5-56.4 84.5-56.4 84.5 56.4zM535.9 285.7v-111.3L723.1 299l-83.6 55.8zM384.5 354.8L300.9 299l187.2-124.6V285.7l-103.6 69.1zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-90-485c0-1.1-0.1-2.1-0.2-3.1 0-0.4-0.1-0.7-0.2-1-0.1-0.7-0.2-1.3-0.4-2-0.1-0.4-0.2-0.8-0.4-1.2-0.2-0.6-0.4-1.2-0.6-1.7-0.2-0.4-0.4-0.8-0.5-1.2-0.3-0.5-0.5-1.1-0.8-1.6-0.2-0.4-0.4-0.7-0.7-1.1-0.3-0.5-0.7-1-1-1.5-0.3-0.4-0.5-0.7-0.8-1-0.4-0.4-0.8-0.9-1.2-1.3-0.3-0.3-0.6-0.6-1-0.9-0.4-0.4-0.9-0.8-1.4-1.1-0.4-0.3-0.7-0.6-1.1-0.8-0.1-0.1-0.3-0.2-0.4-0.3L525.2 110c-4-2.7-8.6-4-13.2-4-4.7 0-9.3 1.4-13.3 4L244.6 279.1c-0.1 0.1-0.3 0.2-0.4 0.3-0.4 0.3-0.7 0.5-1.1 0.8-0.5 0.4-0.9 0.7-1.3 1.1-0.3 0.3-0.6 0.6-1 0.9-0.4 0.4-0.8 0.8-1.2 1.3-0.3 0.3-0.6 0.7-0.8 1-0.4 0.5-0.7 1-1 1.5-0.2 0.4-0.5 0.7-0.7 1.1-0.3 0.5-0.6 1.1-0.8 1.6-0.2 0.4-0.4 0.8-0.5 1.2-0.2 0.6-0.4 1.2-0.6 1.7-0.1 0.4-0.3 0.8-0.4 1.2-0.2 0.7-0.3 1.3-0.4 2-0.1 0.3-0.1 0.7-0.2 1-0.1 1-0.2 2.1-0.2 3.1V468.1c0 1 0.1 2.1 0.2 3.1 0.1 0.3 0.1 0.7 0.2 1 0.1 0.7 0.2 1.3 0.4 2 0.1 0.4 0.2 0.8 0.4 1.2 0.2 0.6 0.4 1.2 0.6 1.7 0.2 0.4 0.4 0.8 0.5 1.2 0.2 0.5 0.5 1.1 0.8 1.6 0.2 0.4 0.4 0.7 0.7 1.1 0.6 0.9 1.2 1.7 1.8 2.5 0.4 0.4 0.8 0.9 1.2 1.3 0.3 0.3 0.6 0.6 1 0.9 0.4 0.4 0.9 0.8 1.3 1.1 0.4 0.3 0.7 0.6 1.1 0.8 0.1 0.1 0.3 0.2 0.4 0.3L498.7 657c8 5.3 18.5 5.3 26.5 0l254.1-169.1c0.1-0.1 0.3-0.2 0.4-0.3 0.4-0.3 0.7-0.5 1.1-0.8 0.5-0.4 0.9-0.7 1.4-1.1 0.3-0.3 0.6-0.6 1-0.9 0.4-0.4 0.8-0.8 1.2-1.3 0.7-0.8 1.3-1.6 1.8-2.5 0.2-0.4 0.5-0.7 0.7-1.1 0.3-0.5 0.6-1 0.8-1.6 0.2-0.4 0.4-0.8 0.5-1.2 0.2-0.6 0.4-1.2 0.6-1.7 0.1-0.4 0.3-0.8 0.4-1.2 0.2-0.7 0.3-1.3 0.4-2 0.1-0.3 0.1-0.7 0.2-1 0.1-1 0.2-2.1 0.2-3.1V299zM742.2 343.6v79.8l-59.8-39.9zM281.8 423.4v-79.8l59.8 39.9zM488.1 481.3V592.6L300.9 468l83.6-55.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dribbble-square-fill" unicode="" d="M498.6 464c-40.8 72.5-84.7 133.4-91.2 142.3-68.8-32.5-120.3-95.9-136.2-172.2 11-0.2 112.4-0.7 227.4 29.9zM565.1 442.2c5.7-11.7 11.2-23.6 16.3-35.6 1.8-4.2 3.6-8.4 5.3-12.7 81.8 10.3 163.2-6.2 171.3-7.9-0.5 58.1-21.3 111.4-55.5 153.3-5.3-7.1-46.5-60-137.4-97.1zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM512 96c-158.8 0-288 129.2-288 288s129.2 288 288 288 288-129.2 288-288-129.2-288-288-288zM601.7 355.1c32.2-88.4 45.3-160.4 47.8-175.4 55.2 37.3 94.5 96.4 105.4 164.9-8.4 2.6-76.1 22.8-153.2 10.5zM529.2 381.5c3.2 1 6.4 2 9.7 2.9-6.2 14-12.9 28-19.9 41.7-122.8-36.8-242.1-35.2-252.8-35-0.1-2.5-0.1-5-0.1-7.5 0-63.2 23.9-120.9 63.2-164.5 5.5 9.6 73 121.4 199.9 162.4zM675.1 567.7c-43.4 38.5-100.6 62-163.1 62-19.4 0-38.8-2.3-57.7-6.9 6.8-9.1 51.5-69.9 91.8-144 87.5 32.8 124.5 82.6 129 88.9zM554 343.2c-138.7-48.3-188.6-144.6-193-153.6 41.7-32.5 94.1-51.9 151-51.9 34.1 0 66.6 6.9 96.1 19.5-3.7 21.6-17.9 96.8-52.5 186.6l-1.6-0.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dropbox-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM663.2 236.5L512.6 146l-151 90.5v33.1l45.4-29.4 105.6 87.7 105.6-87.7 45.1 29.4v-33.1z m-45.6 22.4l-105.3 87.7L407 258.9l-151 99.2 104.5 82.4L256 524.8 407 622l105.3-87.7L617.6 622 768 523.9l-104.2-83.5L768 357l-150.4-98.1zM512.3 534.3l-151.8-93.8 151.8-93.9 151.5 93.9zM663.8 440.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="facebook-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-92.4-233.5h-63.9c-50.1 0-59.8-23.8-59.8-58.8v-77.1h119.6l-15.6-120.7h-104V-16H539.2V293.8H434.9V414.6h104.3v89c0 103.3 63.1 159.6 155.3 159.6 44.2 0 82.1-3.3 93.2-4.8v-107.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="googleplus-square-f" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM548.5 273.2c-43.9-61.8-132.1-79.8-200.9-53.3-69 26.3-118 99.2-112.1 173.5 1.5 90.9 85.2 170.6 176.1 167.5 43.6 2 84.6-16.9 118-43.6-14.3-16.2-29-31.8-44.8-46.3-40.1 27.7-97.2 35.6-137.3 3.6-57.4-39.7-60-133.4-4.8-176.1 53.7-48.7 155.2-24.5 170.1 50.1-33.6 0.5-67.4 0-101 1.1-0.1 20.1-0.2 40.1-0.1 60.2 56.2 0.2 112.5 0.3 168.8-0.2 3.3-47.3-3-97.5-32-136.5zM791 359.5c-16.8-0.2-33.6-0.3-50.4-0.4-0.2-16.8-0.3-33.6-0.3-50.4H690c-0.2 16.8-0.2 33.5-0.3 50.3-16.8 0.2-33.6 0.3-50.4 0.5v50.1c16.8 0.2 33.6 0.3 50.4 0.3 0.1 16.8 0.3 33.6 0.4 50.4h50.2l0.3-50.4c16.8-0.2 33.6-0.2 50.4-0.3v-50.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="google-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM679 198.4C638.4 161 583 139 516.9 139c-95.7 0-178.5 54.9-218.8 134.9C281.5 307 272 344.4 272 384c0 39.6 9.5 77 26.1 110.1 40.3 80.1 123.1 135 218.8 135 66 0 121.4-24.3 163.9-63.8L610.6 495c-25.4 24.3-57.7 36.6-93.6 36.6-63.8 0-117.8-43.1-137.1-101-4.9-14.7-7.7-30.4-7.7-46.6s2.8-31.9 7.7-46.6c19.3-57.9 73.3-101 137-101 33 0 61 8.7 82.9 23.4 26 17.4 43.2 43.3 48.9 74H516.9v94.8h230.7c2.9-16.1 4.4-32.8 4.4-50.1 0-74.7-26.7-137.4-73-180.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="instagram-fill" unicode="" d="M512 517.3c-73.4 0-133.3-59.9-133.3-133.3S438.6 250.7 512 250.7 645.3 310.6 645.3 384 585.4 517.3 512 517.3zM911.8 384c0 55.2 0.5 109.9-2.6 165-3.1 64-17.7 120.8-64.5 167.6-46.9 46.9-103.6 61.4-167.6 64.5-55.2 3.1-109.9 2.6-165 2.6-55.2 0-109.9 0.5-165-2.6-64-3.1-120.8-17.7-167.6-64.5C132.6 669.7 118.1 613 115 549c-3.1-55.2-2.6-109.9-2.6-165s-0.5-109.9 2.6-165c3.1-64 17.7-120.8 64.5-167.6 46.9-46.9 103.6-61.4 167.6-64.5 55.2-3.1 109.9-2.6 165-2.6 55.2 0 109.9-0.5 165 2.6 64 3.1 120.8 17.7 167.6 64.5 46.9 46.9 61.4 103.6 64.5 167.6 3.2 55.1 2.6 109.8 2.6 165zM512 178.9c-113.5 0-205.1 91.6-205.1 205.1S398.5 589.1 512 589.1 717.1 497.5 717.1 384 625.5 178.9 512 178.9z m213.5 370.7c-26.5 0-47.9 21.4-47.9 47.9s21.4 47.9 47.9 47.9 47.9-21.4 47.9-47.9c-0.1-26.6-21.4-47.9-47.9-47.9z" horiz-adv-x="1024" /> + + + <glyph glyph-name="IE-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM765.9 339.1H437.1c0-100.4 144.3-136 196.8-47.4h120.8c-32.6-91.7-119.7-146-216.8-146-35.1 0-70.3 0.1-101.7 15.6-87.4-44.5-180.3-56.6-180.3 42 0 45.8 23.2 107.1 44 145C335 412 381.3 473.2 435.6 521.5c-43.7-18.9-91.1-66.3-122-101.2 25.9 112.8 129.5 193.6 237.1 186.5 130 59.8 209.7 34.1 209.7-38.6 0-27.4-10.6-63.3-21.4-87.9 25.2-45.5 33.3-97.6 26.9-141.2zM693.6 611.6c-24 0-51.1-11.7-72.6-22 46.3-18 86-57.3 112.3-99.6 7.1 18.9 14.6 47.9 14.6 67.9 0 32-22.8 53.7-54.3 53.7zM540.5 496.9c-53.7 0-102-39.7-104-94.9h208c-2 55.1-50.6 94.9-104 94.9zM320.6 293.1c-73-152.4 11.5-172.2 100.3-123.3-46.6 27.5-82.6 72.2-100.3 123.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="medium-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM768 578.3l-40.8-39.1c-3.6-2.7-5.3-7.1-4.6-11.4v-287.7c-0.7-4.4 1-8.8 4.6-11.4l40-39.1v-8.7H566.4v8.3l41.3 40.1c4.1 4.1 4.1 5.3 4.1 11.4V473.5l-115-291.6h-15.5L347.5 473.5V278c-1.2-8.2 1.7-16.5 7.5-22.4l53.8-65.1v-8.7H256v8.7l53.8 65.1c5.8 5.9 8.3 14.3 7 22.4V504c0.7 6.3-1.7 12.4-6.5 16.7l-47.8 57.6V587H411l114.6-251.5 100.9 251.3H768v-8.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="linkedin-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM349.3 102.3H230.6V484.1h118.7v-381.8z m-59.3 434c-38 0-68.8 30.8-68.8 68.8s30.8 68.8 68.8 68.8c37.9 0 68.8-30.8 68.8-68.8-0.1-38-30.9-68.8-68.8-68.8z m503.7-434H675.1V288c0 44.3-0.8 101.2-61.7 101.2-61.7 0-71.2-48.2-71.2-98v-188.9H423.7V484.1h113.8v-52.2h1.6c15.8 30 54.5 61.7 112.3 61.7 120.2 0 142.3-79.1 142.3-181.9v-209.4z" horiz-adv-x="1024" /> + + + <glyph glyph-name="QQ-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM722.5 219.6c-11.5-1.4-44.9 52.7-44.9 52.7 0-31.3-16.2-72.2-51.1-101.8 16.9-5.2 54.9-19.2 45.9-34.4-7.3-12.3-125.6-7.9-159.8-4-34.2-3.8-152.5-8.3-159.8 4-9.1 15.2 28.9 29.2 45.8 34.4-35 29.5-51.1 70.4-51.1 101.8 0 0-33.4-54.1-44.9-52.7-5.4 0.7-12.4 29.6 9.4 99.7 10.3 33 22 60.5 40.2 105.8-3.1 116.9 45.3 215 160.4 215 113.9 0 163.3-96.1 160.4-215 18.1-45.2 29.9-72.8 40.2-105.8 21.7-70.1 14.6-99.1 9.3-99.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="reddit-square-fill" unicode="" d="M296 456c-19.9 0-36-16.1-36-36 0-15.1 9.4-28.1 22.6-33.4 11.5 18.1 27.1 34.5 45.9 48.8-5.7 12.2-18.2 20.6-32.5 20.6zM585.7 271.1c-14.9-11.7-44.3-24.3-73.7-24.3s-58.9 12.6-73.7 24.3c-9.3 7.3-22.7 5.7-30-3.6-7.3-9.3-5.7-22.7 3.6-30 25.7-20.4 65-33.5 100.1-33.5 35.1 0 74.4 13.1 100.2 33.5 9.3 7.3 10.9 20.8 3.6 30-7.3 9.3-20.8 10.9-30.1 3.6zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM757 354.1c4.6-13.5 7-27.6 7-42.1 0-99.4-112.8-180-252-180s-252 80.6-252 180c0 14.5 2.4 28.6 7 42.1-25.3 11.2-43 36.4-43 65.9 0 39.8 32.2 72 72 72 27.1 0 50.6-14.9 62.9-37 36.2 19.8 80.2 32.8 128.1 36.1l58.4 131.1c4.3 9.8 15.2 14.8 25.5 11.8l91.6-26.5c9.1 16.9 27 28.4 47.6 28.4 29.8 0 54-24.2 54-54s-24.2-54-54-54c-23.5 0-43.5 15.1-50.9 36.1L577 587.7l-43-96.5c49.1-3 94.2-16.1 131.2-36.3 12.3 22.1 35.8 37 62.9 37 39.8 0 72-32.2 72-72-0.1-29.3-17.8-54.6-43.1-65.8zM620 348m-36 0a36 36 0 1 1 72 0 36 36 0 1 1-72 0ZM728 456c-14.3 0-26.8-8.4-32.5-20.6 18.8-14.3 34.4-30.7 45.9-48.8 13.2 5.3 22.6 18.3 22.6 33.4 0 19.9-16.1 36-36 36zM404 348m-36 0a36 36 0 1 1 72 0 36 36 0 1 1-72 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="twitter-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM727.3 494.3c0.3-4.7 0.3-9.6 0.3-14.4 0-146.8-111.8-315.9-316.1-315.9-63 0-121.4 18.3-170.6 49.8 9-1 17.6-1.4 26.8-1.4 52 0 99.8 17.6 137.9 47.4-48.8 1-89.8 33-103.8 77 17.1-2.5 32.5-2.5 50.1 2-50.8 10.3-88.9 55-88.9 109v1.4c14.7-8.3 32-13.4 50.1-14.1-30.9 20.6-49.5 55.3-49.5 92.4 0 20.7 5.4 39.6 15.1 56 54.7-67.4 136.9-111.4 229-116.1C492 542.9 548.4 604 616.2 604c32 0 60.8-13.4 81.1-35 25.1 4.7 49.1 14.1 70.5 26.7-8.3-25.7-25.7-47.4-48.8-61.1 22.4 2.4 44 8.6 64 17.3-15.1-22.2-34-41.9-55.7-57.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="sketch-square-fill" unicode="" d="M608.2 472.7L512 569.9l-96.2-97.2zM582.3 270.4l147.9 166.3h-63.4zM672.3 472.7h62.5l-92.1 115.1zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32z m-81.3-332.2L515.8 133.7c-1-1.1-2.4-1.7-3.8-1.7s-2.8 0.6-3.8 1.7L225.3 451.8c-1.7 1.9-1.7 4.7-0.2 6.6L365.6 634c1 1.2 2.4 1.9 4 1.9h284.6c1.6 0 3-0.7 4-1.9l140.5-175.6c1.7-1.9 1.7-4.7 0-6.6zM397.6 436.7L512 211.5l114.4 225.2zM381.3 587.8l-92.1-115.1h62.5zM293.8 436.7l147.9-166.3-84.5 166.3zM420.3 594.9l-23.1-89.8 88.8 89.8zM603.7 594.9H538l88.8-89.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="slack-square-fill" unicode="" d="M893.1 498.4c-85.8 286-209.5 352.5-495.5 266.7S45.1 555.6 130.9 269.6s209.5-352.5 495.5-266.7 352.5 209.5 266.7 495.5z m-150-189.9l-50.3-16.3 16.5-50.6c7.7-23.6-5.3-49-28.9-56.7-23.6-7.7-49 5.3-56.7 28.9l-16.5 50.6L506 231.5l16.5-50.6c7.7-23.6-5.3-49-28.9-56.7-23.6-7.7-49 5.3-56.7 28.9l-16.5 50.6-51-16.6c-23.6-7.7-49 5.3-56.7 28.9s5.3 49 28.9 56.7l51 16.6-32.9 101.3-51-16.6c-23.6-7.7-49 5.3-56.7 28.9-7.7 23.6 5.3 49 28.9 56.7l51 16.6-16.5 50.6c-7.7 23.6 5.3 49 28.9 56.7 23.6 7.7 49-5.3 56.7-28.9l16.5-50.6 101.3 32.9-16.5 50.6c-7.7 23.6 5.3 49 28.9 56.7s49-5.3 56.7-28.9l16.5-50.6 50.3 16.3c23.6 7.7 49-5.3 56.7-28.9 7.7-23.6-5.3-49-28.9-56.7L632.1 479 665 377.7l50.3 16.3c23.6 7.7 49-5.3 56.7-28.9 7.7-23.6-5.3-48.9-28.9-56.6zM445.262 418.327l101.293 32.909 32.908-101.293-101.292-32.908z" horiz-adv-x="1024" /> + + + <glyph glyph-name="taobao-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM315.7 604.5c27.3 0 49.5-22.1 49.5-49.4s-22.1-49.4-49.5-49.4-49.5 22.1-49.5 49.4 22.1 49.4 49.5 49.4zM366.9 318c-13.6-42.3-10.2-26.7-64.4-144.5l-78.5 49s87.7 79.8 105.6 116.2c19.2 38.4-21.1 58.9-21.1 58.9l-60.2 37.5 32.7 50.2c45.4-33.7 48.7-36.6 79.2-67.2 23.8-23.9 20.7-56.8 6.7-100.1z m427.2-55c-15.3-143.8-202.4-90.3-202.4-90.3l10.2 41.1 43.3-9.3c80-5 72.3 64.9 72.3 64.9V473c0.6 77.3-72.6 85.4-204.2 38.3l30.6-8.3c-2.5-9-12.5-23.2-25.2-38.6h176v-35.6h-99.1v-44.5h98.7v-35.7h-98.7V274c14.9 4.8 28.6 11.5 40.5 20.5l-8.7 32.5 46.5 14.4 38.8-94.9-57.3-23.9-10.2 37.8c-25.6-19.5-78.8-48-171.8-45.4-99.2-2.6-73.7 112-73.7 112l2.5 1.3H472c-0.5-14.7-6.6-38.7 1.7-51.8 6.8-10.8 24.2-12.6 35.3-13.1 1.3-0.1 2.6-0.1 3.9-0.1v85.3h-101v35.7h101v44.5H487c-22.7-24.1-43.5-44.1-43.5-44.1l-30.6 26.7c21.7 22.9 43.3 59.1 56.8 83.2-10.9-4.4-22-9.2-33.6-14.2-11.2-14.3-24.2-29-38.7-43.5 0.5-0.8-50 28.4-50 28.4 52.2 44.4 81.4 139.9 81.4 139.9l72.5-20.4s-5.9-14-18.4-35.6c290.3 82.3 307.4-50.5 307.4-50.5s19.1-91.8 3.8-235.7z" horiz-adv-x="1024" /> + + + <glyph glyph-name="weibo-square-fill" unicode="" d="M433.6 300.9c-14.2 5.9-32.4-0.2-41.2-13.9-8.8-13.8-4.7-30.2 9.3-36.6 14.3-6.5 33.2-0.3 42 13.8 8.8 14.3 4.2 30.6-10.1 36.7zM880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM467.6 160C353.1 160 236 215.6 236 307.1c0 47.8 30.2 103.1 82.3 155.3 69.5 69.6 150.6 101.4 181.1 70.8 13.5-13.5 14.8-36.8 6.1-64.6-4.5-14 13.1-6.3 13.1-6.3 56.2 23.6 105.2 25 123.1-0.7 9.6-13.7 8.6-32.8-0.2-55.1-4.1-10.2 1.3-11.8 9-14.1 31.7-9.8 66.9-33.6 66.9-75.5 0.2-69.5-99.7-156.9-249.8-156.9z m207.3 290.8c3.7 11.5 1.4 24.5-7.2 34.1-8.6 9.6-21.4 13.2-33.1 10.7-9.8-2.1-19.5 4.2-21.6 14-2.1 9.9 4.2 19.6 14 21.7 24.1 5.1 50.1-2.3 67.7-21.9 17.7-19.6 22.4-46.3 14.9-69.8-3.1-9.6-13.3-14.8-22.9-11.7-9.6 3.1-14.9 13.3-11.8 22.9z m106-34.3s0-0.1 0 0c-3.6-11.2-15.5-17.3-26.6-13.7-11.1 3.6-17.2 15.5-13.6 26.7 11 34.2 4 73.2-21.7 101.8-25.8 28.6-63.8 39.5-98.9 32.1-11.4-2.5-22.7 4.9-25.1 16.3-2.5 11.4 4.8 22.7 16.2 25.1 49.4 10.5 102.8-4.8 139.1-45.1 36.3-40.2 46.1-95.1 30.6-143.2zM446.4 410.4c-91.4-9-160.7-65.1-154.7-125.2 5.9-60.1 84.8-101.5 176.2-92.5 91.4 9.1 160.7 65.1 154.7 125.3-5.9 60.1-84.8 101.5-176.2 92.4z m80.2-141.7c-18.7-42.3-72.3-64.8-117.8-50.1-43.9 14.2-62.5 57.7-43.3 96.8 18.9 38.4 68 60.1 111.5 48.8 45-11.7 68-54.2 49.6-95.5zM468.5 315.4c-5.4 2.2-12.2-0.5-15.4-5.8-3.1-5.4-1.4-11.5 4.1-13.8 5.5-2.3 12.6 0.3 15.8 5.8 3 5.6 1 11.8-4.5 13.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="zhihu-square-fill" unicode="" d="M880 784H144c-17.7 0-32-14.3-32-32v-736c0-17.7 14.3-32 32-32h736c17.7 0 32 14.3 32 32V752c0 17.7-14.3 32-32 32zM432.3 303.2l71-80.7c9.2-33-3.3-63.1-3.3-63.1l-95.7 111.9v0.1c-8.9-29-20.1-57.3-33.3-84.7-22.6-45.7-55.2-54.7-89.5-57.7-34.4-3-23.3 5.3-23.3 5.3 68 55.5 78 87.8 96.8 123.1 11.9 22.3 20.4 64.3 25.3 96.8H264.1s4.8 31.2 19.2 41.7h101.6c0.6 15.3-1.3 102.8-2 131.4h-49.4c-9.2-45-41-56.7-48.1-60.1-7-3.4-23.6-7.1-21.1 0 2.6 7.1 27 46.2 43.2 110.7 16.3 64.6 63.9 62 63.9 62-12.8-22.5-22.4-73.6-22.4-73.6h159.7c10.1 0 10.6-39 10.6-39h-90.8c-0.7-22.7-2.8-83.8-5-131.4H519s12.2-15.4 12.2-41.7h-110l-0.1-1.5c-1.5-20.4-6.3-43.9-12.9-67.6l24.1 18.1z m335.5-116h-87.6l-69.5-46.6-16.4 46.6h-40.1V574.5h213.6v-387.3zM408.2 285s0 0.1 0 0zM624.2 190.7l56.8 38.1h45.6-0.1V531.3H596.7v-302.5h14.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="zoomout" unicode="" d="M637 453H325c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h312c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8zM921 29L775 175c122.1 148.9 113.6 369.5-26 509-148 148.1-388.4 148.1-537 0-148.1-148.6-148.1-389 0-537 139.5-139.6 360.1-148.1 509-26l146-146c3.2-2.8 8.3-2.8 11 0l43 43c2.8 2.7 2.8 7.8 0 11zM696 200c-118.8-118.7-311.2-118.7-430 0-118.7 118.8-118.7 311.2 0 430 118.8 118.7 311.2 118.7 430 0 118.7-118.8 118.7-311.2 0-430z" horiz-adv-x="1024" /> + + + <glyph glyph-name="apartment" unicode="" d="M908 256H804V408c0 4.4-3.6 8-8 8H548v96h108c8.8 0 16 7.2 16 16V816c0 8.8-7.2 16-16 16H368c-8.8 0-16-7.2-16-16v-288c0-8.8 7.2-16 16-16h108v-96H228c-4.4 0-8-3.6-8-8v-152H116c-8.8 0-16-7.2-16-16v-288c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16V240c0 8.8-7.2 16-16 16H292v88h440v-88H620c-8.8 0-16-7.2-16-16v-288c0-8.8 7.2-16 16-16h288c8.8 0 16 7.2 16 16V240c0 8.8-7.2 16-16 16z m-564-76v-168H176V180h168z m84 408V756h168v-168H428z m420-576H680V180h168v-168z" horiz-adv-x="1024" /> + + + <glyph glyph-name="audio" unicode="" d="M842 442c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8 0-140.3-113.7-254-254-254S258 301.7 258 442c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8 0-168.7 126.6-307.9 290-327.6V12H326.7c-13.7 0-24.7-14.3-24.7-32v-36c0-4.4 2.8-8 6.2-8h407.6c3.4 0 6.2 3.6 6.2 8v36c0 17.7-11 32-24.7 32H548V113.9c165.3 18 294 158 294 328.1zM512 272c93.9 0 170 75.2 170 168V664c0 92.8-76.1 168-170 168s-170-75.2-170-168v-224c0-92.8 76.1-168 170-168z m-94 392c0 50.6 41.9 92 94 92s94-41.4 94-92v-224c0-50.6-41.9-92-94-92s-94 41.4-94 92V664z" horiz-adv-x="1024" /> + + + <glyph glyph-name="audio-fill" unicode="" d="M512 272c93.9 0 170 75.2 170 168V664c0 92.8-76.1 168-170 168s-170-75.2-170-168v-224c0-92.8 76.1-168 170-168zM842 442c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8 0-140.3-113.7-254-254-254S258 301.7 258 442c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8 0-168.7 126.6-307.9 290-327.6V12H326.7c-13.7 0-24.7-14.3-24.7-32v-36c0-4.4 2.8-8 6.2-8h407.6c3.4 0 6.2 3.6 6.2 8v36c0 17.7-11 32-24.7 32H548V113.9c165.3 18 294 158 294 328.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="robot" unicode="" d="M360 568m-60 0a60 60 0 1 1 120 0 60 60 0 1 1-120 0ZM852 832H172c-17.7 0-32-14.3-32-32v-660c0-17.7 14.3-32 32-32h680c17.7 0 32 14.3 32 32V800c0 17.7-14.3 32-32 32z m-32-660H204V768h616v-596zM664 568m-60 0a60 60 0 1 1 120 0 60 60 0 1 1-120 0ZM854.2 12H169.8c-16.5 0-29.8-14.3-29.8-32v-36c0-4.4 3.3-8 7.4-8h729.1c4.1 0 7.4 3.6 7.4 8v36c0.1 17.7-13.2 32-29.7 32zM664 388H360c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h304c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="zoomin" unicode="" d="M637 453H519V587c0 4.4-3.6 8-8 8h-60c-4.4 0-8-3.6-8-8v-134H325c-4.4 0-8-3.6-8-8v-60c0-4.4 3.6-8 8-8h118v-134c0-4.4 3.6-8 8-8h60c4.4 0 8 3.6 8 8V377h118c4.4 0 8 3.6 8 8v60c0 4.4-3.6 8-8 8zM921 29L775 175c122.1 148.9 113.6 369.5-26 509-148 148.1-388.4 148.1-537 0-148.1-148.6-148.1-389 0-537 139.5-139.6 360.1-148.1 509-26l146-146c3.2-2.8 8.3-2.8 11 0l43 43c2.8 2.7 2.8 7.8 0 11zM696 200c-118.8-118.7-311.2-118.7-430 0-118.7 118.8-118.7 311.2 0 430 118.8 118.7 311.2 118.7 430 0 118.7-118.8 118.7-311.2 0-430z" horiz-adv-x="1024" /> + + + + + </font> +</defs></svg> diff --git a/src/main/resources/static/febs/font/iconfont.ttf b/src/main/resources/static/febs/font/iconfont.ttf new file mode 100644 index 0000000..0aed302 --- /dev/null +++ b/src/main/resources/static/febs/font/iconfont.ttf Binary files differ diff --git a/src/main/resources/static/febs/font/iconfont.woff b/src/main/resources/static/febs/font/iconfont.woff new file mode 100644 index 0000000..766542b --- /dev/null +++ b/src/main/resources/static/febs/font/iconfont.woff Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a10.jpg b/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a10.jpg new file mode 100644 index 0000000..15c842f --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a10.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a16.jpg b/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a16.jpg new file mode 100644 index 0000000..48ed48e --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/17e420c250804efe904a09a33796d5a16.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/19034103295190235.jpg b/src/main/resources/static/febs/images/avatar/19034103295190235.jpg new file mode 100644 index 0000000..68522a0 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/19034103295190235.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg b/src/main/resources/static/febs/images/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg new file mode 100644 index 0000000..e3ccfaf --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165754.jpg b/src/main/resources/static/febs/images/avatar/20180414165754.jpg new file mode 100644 index 0000000..240b9ea --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165754.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165815.jpg b/src/main/resources/static/febs/images/avatar/20180414165815.jpg new file mode 100644 index 0000000..e24f1e7 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165815.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165821.jpg b/src/main/resources/static/febs/images/avatar/20180414165821.jpg new file mode 100644 index 0000000..b2438f0 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165821.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165827.jpg b/src/main/resources/static/febs/images/avatar/20180414165827.jpg new file mode 100644 index 0000000..a633956 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165827.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165834.jpg b/src/main/resources/static/febs/images/avatar/20180414165834.jpg new file mode 100644 index 0000000..b8a5d5f --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165834.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165840.jpg b/src/main/resources/static/febs/images/avatar/20180414165840.jpg new file mode 100644 index 0000000..eaf43d5 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165840.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165846.jpg b/src/main/resources/static/febs/images/avatar/20180414165846.jpg new file mode 100644 index 0000000..913d27b --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165846.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165855.jpg b/src/main/resources/static/febs/images/avatar/20180414165855.jpg new file mode 100644 index 0000000..f9e694b --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165855.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165909.jpg b/src/main/resources/static/febs/images/avatar/20180414165909.jpg new file mode 100644 index 0000000..7f9424d --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165909.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165914.jpg b/src/main/resources/static/febs/images/avatar/20180414165914.jpg new file mode 100644 index 0000000..528e1c8 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165914.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165920.jpg b/src/main/resources/static/febs/images/avatar/20180414165920.jpg new file mode 100644 index 0000000..558f1b9 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165920.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165927.jpg b/src/main/resources/static/febs/images/avatar/20180414165927.jpg new file mode 100644 index 0000000..8a12c1f --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165927.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165936.jpg b/src/main/resources/static/febs/images/avatar/20180414165936.jpg new file mode 100644 index 0000000..f247a6c --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165936.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165942.jpg b/src/main/resources/static/febs/images/avatar/20180414165942.jpg new file mode 100644 index 0000000..4834497 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165942.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165947.jpg b/src/main/resources/static/febs/images/avatar/20180414165947.jpg new file mode 100644 index 0000000..aaa8452 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165947.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414165955.jpg b/src/main/resources/static/febs/images/avatar/20180414165955.jpg new file mode 100644 index 0000000..4bbcbd3 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414165955.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/20180414170003.jpg b/src/main/resources/static/febs/images/avatar/20180414170003.jpg new file mode 100644 index 0000000..d54daed --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/20180414170003.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg b/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg new file mode 100644 index 0000000..db95b36 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg b/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg new file mode 100644 index 0000000..b8029d2 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/496b3ace787342f7954b7045b8b06804.jpeg b/src/main/resources/static/febs/images/avatar/496b3ace787342f7954b7045b8b06804.jpeg new file mode 100644 index 0000000..a6c5dd7 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/496b3ace787342f7954b7045b8b06804.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg b/src/main/resources/static/febs/images/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg new file mode 100644 index 0000000..0890d89 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg b/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg new file mode 100644 index 0000000..68c1a90 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg b/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg new file mode 100644 index 0000000..fd31d4b --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg b/src/main/resources/static/febs/images/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg new file mode 100644 index 0000000..afa2c22 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/8f5b60ef00714a399ee544d331231820.jpeg b/src/main/resources/static/febs/images/avatar/8f5b60ef00714a399ee544d331231820.jpeg new file mode 100644 index 0000000..34130ce --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/8f5b60ef00714a399ee544d331231820.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/964e40b005724165b8cf772355796c8c.jpeg b/src/main/resources/static/febs/images/avatar/964e40b005724165b8cf772355796c8c.jpeg new file mode 100644 index 0000000..d862163 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/964e40b005724165b8cf772355796c8c.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/BiazfanxmamNRoxxVxka.png b/src/main/resources/static/febs/images/avatar/BiazfanxmamNRoxxVxka.png new file mode 100644 index 0000000..e298c8a --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/BiazfanxmamNRoxxVxka.png Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/WhxKECPNujWoWEFNdnJE.png b/src/main/resources/static/febs/images/avatar/WhxKECPNujWoWEFNdnJE.png new file mode 100644 index 0000000..85e9bf9 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/WhxKECPNujWoWEFNdnJE.png Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/a3b10296862e40edb811418d64455d00.jpeg b/src/main/resources/static/febs/images/avatar/a3b10296862e40edb811418d64455d00.jpeg new file mode 100644 index 0000000..ff56bcb --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/a3b10296862e40edb811418d64455d00.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/a43456282d684e0b9319cf332f8ac468.jpeg b/src/main/resources/static/febs/images/avatar/a43456282d684e0b9319cf332f8ac468.jpeg new file mode 100644 index 0000000..2c57632 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/a43456282d684e0b9319cf332f8ac468.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg b/src/main/resources/static/febs/images/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg new file mode 100644 index 0000000..08632a1 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg b/src/main/resources/static/febs/images/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg new file mode 100644 index 0000000..09d92ad --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/cnrhVkzwxjPwAaCfPbdc.png b/src/main/resources/static/febs/images/avatar/cnrhVkzwxjPwAaCfPbdc.png new file mode 100644 index 0000000..b0dfe48 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/cnrhVkzwxjPwAaCfPbdc.png Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/default.jpg b/src/main/resources/static/febs/images/avatar/default.jpg new file mode 100644 index 0000000..3525855 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/default.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/empty.jpg b/src/main/resources/static/febs/images/avatar/empty.jpg new file mode 100644 index 0000000..cc4ac17 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/empty.jpg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg b/src/main/resources/static/febs/images/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg new file mode 100644 index 0000000..3bf5652 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/gaOngJwsRYRaVAuXXcmB.png b/src/main/resources/static/febs/images/avatar/gaOngJwsRYRaVAuXXcmB.png new file mode 100644 index 0000000..e3b6b6f --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/gaOngJwsRYRaVAuXXcmB.png Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/jZUIxmJycoymBprLOUbT.png b/src/main/resources/static/febs/images/avatar/jZUIxmJycoymBprLOUbT.png new file mode 100644 index 0000000..ef89b48 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/jZUIxmJycoymBprLOUbT.png Binary files differ diff --git a/src/main/resources/static/febs/images/avatar/ubnKSIfAJTxIgXOKlciN.png b/src/main/resources/static/febs/images/avatar/ubnKSIfAJTxIgXOKlciN.png new file mode 100644 index 0000000..13392c6 --- /dev/null +++ b/src/main/resources/static/febs/images/avatar/ubnKSIfAJTxIgXOKlciN.png Binary files differ diff --git a/src/main/resources/static/febs/images/background.svg b/src/main/resources/static/febs/images/background.svg new file mode 100644 index 0000000..89c2597 --- /dev/null +++ b/src/main/resources/static/febs/images/background.svg @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="1361px" height="609px" viewBox="0 0 1361 609" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch --> + <title>Group 21</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="账户密码登录-校验" transform="translate(-79.000000, -82.000000)"> + <g id="Group-21" transform="translate(77.000000, 73.000000)"> + <g id="Group-18" opacity="0.8" transform="translate(74.901416, 569.699158) rotate(-7.000000) translate(-74.901416, -569.699158) translate(4.901416, 525.199158)"> + <ellipse id="Oval-11" fill="#CFDAE6" opacity="0.25" cx="63.5748792" cy="32.468367" rx="21.7830479" ry="21.766008"></ellipse> + <ellipse id="Oval-3" fill="#CFDAE6" opacity="0.599999964" cx="5.98746479" cy="13.8668601" rx="5.2173913" ry="5.21330997"></ellipse> + <path d="M38.1354514,88.3520215 C43.8984227,88.3520215 48.570234,83.6838647 48.570234,77.9254015 C48.570234,72.1669383 43.8984227,67.4987816 38.1354514,67.4987816 C32.3724801,67.4987816 27.7006688,72.1669383 27.7006688,77.9254015 C27.7006688,83.6838647 32.3724801,88.3520215 38.1354514,88.3520215 Z" id="Oval-3-Copy" fill="#CFDAE6" opacity="0.45"></path> + <path d="M64.2775582,33.1704963 L119.185836,16.5654915" id="Path-12" stroke="#CFDAE6" stroke-width="1.73913043" stroke-linecap="round" stroke-linejoin="round"></path> + <path d="M42.1431708,26.5002681 L7.71190162,14.5640702" id="Path-16" stroke="#E0B4B7" stroke-width="0.702678964" opacity="0.7" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path> + <path d="M63.9262187,33.521561 L43.6721326,69.3250951" id="Path-15" stroke="#BACAD9" stroke-width="0.702678964" stroke-linecap="round" stroke-linejoin="round" stroke-dasharray="1.405357899873153,2.108036953469981"></path> + <g id="Group-17" transform="translate(126.850922, 13.543654) rotate(30.000000) translate(-126.850922, -13.543654) translate(117.285705, 4.381889)" fill="#CFDAE6"> + <ellipse id="Oval-4" opacity="0.45" cx="9.13482653" cy="9.12768076" rx="9.13482653" ry="9.12768076"></ellipse> + <path d="M18.2696531,18.2553615 C18.2696531,13.2142826 14.1798519,9.12768076 9.13482653,9.12768076 C4.08980114,9.12768076 0,13.2142826 0,18.2553615 L18.2696531,18.2553615 Z" id="Oval-4" transform="translate(9.134827, 13.691521) scale(-1, -1) translate(-9.134827, -13.691521) "></path> + </g> + </g> + <g id="Group-14" transform="translate(216.294700, 123.725600) rotate(-5.000000) translate(-216.294700, -123.725600) translate(106.294700, 35.225600)"> + <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.25" cx="29.1176471" cy="29.1402439" rx="29.1176471" ry="29.1402439"></ellipse> + <ellipse id="Oval-2" fill="#CFDAE6" opacity="0.3" cx="29.1176471" cy="29.1402439" rx="21.5686275" ry="21.5853659"></ellipse> + <ellipse id="Oval-2-Copy" stroke="#CFDAE6" opacity="0.4" cx="179.019608" cy="138.146341" rx="23.7254902" ry="23.7439024"></ellipse> + <ellipse id="Oval-2" fill="#BACAD9" opacity="0.5" cx="29.1176471" cy="29.1402439" rx="10.7843137" ry="10.7926829"></ellipse> + <path d="M29.1176471,39.9329268 L29.1176471,18.347561 C23.1616351,18.347561 18.3333333,23.1796097 18.3333333,29.1402439 C18.3333333,35.1008781 23.1616351,39.9329268 29.1176471,39.9329268 Z" id="Oval-2" fill="#BACAD9"></path> + <g id="Group-9" opacity="0.45" transform="translate(172.000000, 131.000000)" fill="#E6A1A6"> + <ellipse id="Oval-2-Copy-2" cx="7.01960784" cy="7.14634146" rx="6.47058824" ry="6.47560976"></ellipse> + <path d="M0.549019608,13.6219512 C4.12262681,13.6219512 7.01960784,10.722722 7.01960784,7.14634146 C7.01960784,3.56996095 4.12262681,0.670731707 0.549019608,0.670731707 L0.549019608,13.6219512 Z" id="Oval-2-Copy-2" transform="translate(3.784314, 7.146341) scale(-1, 1) translate(-3.784314, -7.146341) "></path> + </g> + <ellipse id="Oval-10" fill="#CFDAE6" cx="218.382353" cy="138.685976" rx="1.61764706" ry="1.61890244"></ellipse> + <ellipse id="Oval-10-Copy-2" fill="#E0B4B7" opacity="0.35" cx="179.558824" cy="175.381098" rx="1.61764706" ry="1.61890244"></ellipse> + <ellipse id="Oval-10-Copy" fill="#E0B4B7" opacity="0.35" cx="180.098039" cy="102.530488" rx="2.15686275" ry="2.15853659"></ellipse> + <path d="M28.9985381,29.9671598 L171.151018,132.876024" id="Path-11" stroke="#CFDAE6" opacity="0.8"></path> + </g> + <g id="Group-10" opacity="0.799999952" transform="translate(1054.100635, 36.659317) rotate(-11.000000) translate(-1054.100635, -36.659317) translate(1026.600635, 4.659317)"> + <ellipse id="Oval-7" stroke="#CFDAE6" stroke-width="0.941176471" cx="43.8135593" cy="32" rx="11.1864407" ry="11.2941176"></ellipse> + <g id="Group-12" transform="translate(34.596774, 23.111111)" fill="#BACAD9"> + <ellipse id="Oval-7" opacity="0.45" cx="9.18534718" cy="8.88888889" rx="8.47457627" ry="8.55614973"></ellipse> + <path d="M9.18534718,17.4450386 C13.8657264,17.4450386 17.6599235,13.6143199 17.6599235,8.88888889 C17.6599235,4.16345787 13.8657264,0.332739156 9.18534718,0.332739156 L9.18534718,17.4450386 Z" id="Oval-7"></path> + </g> + <path d="M34.6597385,24.809694 L5.71666084,4.76878945" id="Path-2" stroke="#CFDAE6" stroke-width="0.941176471"></path> + <ellipse id="Oval" stroke="#CFDAE6" stroke-width="0.941176471" cx="3.26271186" cy="3.29411765" rx="3.26271186" ry="3.29411765"></ellipse> + <ellipse id="Oval-Copy" fill="#F7E1AD" cx="2.79661017" cy="61.1764706" rx="2.79661017" ry="2.82352941"></ellipse> + <path d="M34.6312443,39.2922712 L5.06366663,59.785082" id="Path-10" stroke="#CFDAE6" stroke-width="0.941176471"></path> + </g> + <g id="Group-19" opacity="0.33" transform="translate(1282.537219, 446.502867) rotate(-10.000000) translate(-1282.537219, -446.502867) translate(1142.537219, 327.502867)"> + <g id="Group-17" transform="translate(141.333539, 104.502742) rotate(275.000000) translate(-141.333539, -104.502742) translate(129.333539, 92.502742)" fill="#BACAD9"> + <circle id="Oval-4" opacity="0.45" cx="11.6666667" cy="11.6666667" r="11.6666667"></circle> + <path d="M23.3333333,23.3333333 C23.3333333,16.8900113 18.1099887,11.6666667 11.6666667,11.6666667 C5.22334459,11.6666667 0,16.8900113 0,23.3333333 L23.3333333,23.3333333 Z" id="Oval-4" transform="translate(11.666667, 17.500000) scale(-1, -1) translate(-11.666667, -17.500000) "></path> + </g> + <circle id="Oval-5-Copy-6" fill="#CFDAE6" cx="201.833333" cy="87.5" r="5.83333333"></circle> + <path d="M143.5,88.8126685 L155.070501,17.6038544" id="Path-17" stroke="#BACAD9" stroke-width="1.16666667"></path> + <path d="M17.5,37.3333333 L127.466252,97.6449735" id="Path-18" stroke="#BACAD9" stroke-width="1.16666667"></path> + <polyline id="Path-19" stroke="#CFDAE6" stroke-width="1.16666667" points="143.902597 120.302281 174.935455 231.571342 38.5 147.510847 126.366941 110.833333"></polyline> + <path d="M159.833333,99.7453842 L195.416667,89.25" id="Path-20" stroke="#E0B4B7" stroke-width="1.16666667" opacity="0.6"></path> + <path d="M205.333333,82.1372105 L238.719406,36.1666667" id="Path-24" stroke="#BACAD9" stroke-width="1.16666667"></path> + <path d="M266.723424,132.231988 L207.083333,90.4166667" id="Path-25" stroke="#CFDAE6" stroke-width="1.16666667"></path> + <circle id="Oval-5" fill="#C1D1E0" cx="156.916667" cy="8.75" r="8.75"></circle> + <circle id="Oval-5-Copy-3" fill="#C1D1E0" cx="39.0833333" cy="148.75" r="5.25"></circle> + <circle id="Oval-5-Copy-2" fill-opacity="0.6" fill="#D1DEED" cx="8.75" cy="33.25" r="8.75"></circle> + <circle id="Oval-5-Copy-4" fill-opacity="0.6" fill="#D1DEED" cx="243.833333" cy="30.3333333" r="5.83333333"></circle> + <circle id="Oval-5-Copy-5" fill="#E0B4B7" cx="175.583333" cy="232.75" r="5.25"></circle> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/images/error/403.svg b/src/main/resources/static/febs/images/error/403.svg new file mode 100644 index 0000000..610f136 --- /dev/null +++ b/src/main/resources/static/febs/images/error/403.svg @@ -0,0 +1,508 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="227px" height="269px" viewBox="0 0 227 269" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch --> + <title>Group 9</title> + <desc>Created with Sketch.</desc> + <defs> + <path d="M0,131.5 C1.52216317e-15,101.788282 2.0023434,70.3064817 6.0070302,37.054599 L6.00703147,37.0545992 C8.23177711,18.5819983 23.2321456,4.27478563 41.7892683,2.9258328 C68.6224469,0.975277594 91.0407969,-6.24317082e-09 109.044318,0 C127.133265,6.27279111e-09 149.842798,0.984554771 177.17292,2.9536643 L177.17292,2.95366535 C195.745345,4.29179116 210.761581,18.6099912 212.981582,37.0977487 C216.993859,70.5112465 218.999998,102.082949 219,131.812857 C219.000002,161.472158 217.003381,192.843579 213.010137,225.927119 L213.010136,225.927119 C210.780269,244.401296 195.772997,258.705423 177.213148,260.046888 C149.974602,262.015629 127.477504,263 109.721856,263 C91.927568,263 69.2911098,262.01134 41.8124813,260.034021 L41.8124814,260.03402 C23.2430488,258.697792 8.22697111,244.385384 6.00173205,225.9014 C2.00057735,192.665746 1.52149174e-15,161.198612 0,131.5 Z" id="path-1"></path> + <filter x="-4.5%" y="-1.4%" width="106.2%" height="104.4%" filterUnits="objectBoundingBox" id="filter-2"> + <feMorphology radius="0.81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology> + <feOffset dx="-6" dy="4" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <path d="M39.654321,130.992298 C39.654321,110.09311 40.5351746,89.1940983 42.2968819,68.2952631 L42.2968835,68.2952632 C43.2666685,56.7908671 52.197293,47.5570778 63.6629191,46.2039222 C78.8424188,44.4124609 94.0195118,43.5167302 109.194198,43.5167302 C124.360772,43.5167302 139.527341,44.4115034 154.693904,46.2010498 L154.693904,46.2010495 C166.164025,47.5544421 175.09671,56.7944422 176.061501,68.3037662 C177.833381,89.4411461 178.719321,110.482698 178.719321,131.428422 C178.719321,152.307984 177.838969,173.187319 176.078265,194.066429 L176.078265,194.066429 C175.10807,205.571375 166.17633,214.805149 154.709997,216.157282 C139.486491,217.95247 124.287302,218.850064 109.112431,218.850064 C93.9666716,218.850064 78.8209665,217.95591 63.6753158,216.167604 L63.6753156,216.167605 C52.2067135,214.813462 43.275345,205.574785 42.309801,194.06695 C40.539481,172.967394 39.654321,151.94251 39.654321,130.992298 Z" id="path-3"></path> + <filter x="-6.0%" y="-2.3%" width="108.6%" height="105.9%" filterUnits="objectBoundingBox" id="filter-4"> + <feMorphology radius="0.81" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology> + <feOffset dx="-5" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <path d="M161.510068,89.8583333 L176.8425,89.8583333 L176.8425,107.391667 L161.510068,107.391667 L161.510068,107.391667 C157.8829,107.391667 154.9425,104.451267 154.9425,100.824099 L154.9425,96.4259009 L154.9425,96.4259009 C154.9425,92.7987335 157.8829,89.8583333 161.510068,89.8583333 Z" id="path-5"></path> + <filter x="-13.7%" y="-5.7%" width="118.3%" height="117.1%" filterUnits="objectBoundingBox" id="filter-6"> + <feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <path d="M183.957568,89.8583333 L199.29,89.8583333 L199.29,107.391667 L183.957568,107.391667 L183.957568,107.391667 C180.3304,107.391667 177.39,104.451267 177.39,100.824099 L177.39,96.4259009 L177.39,96.4259009 C177.39,92.7987335 180.3304,89.8583333 183.957568,89.8583333 Z" id="path-7"></path> + <filter x="-2.3%" y="-2.9%" width="109.1%" height="111.4%" filterUnits="objectBoundingBox" id="filter-8"> + <feOffset dx="1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <filter x="-55.5%" y="-9.3%" width="177.5%" height="148.0%" filterUnits="objectBoundingBox" id="filter-9"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-55.5%" y="-9.3%" width="177.5%" height="148.0%" filterUnits="objectBoundingBox" id="filter-10"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <path d="M8.86493515,17.2480344 C8.4007802,16.9327578 8.09567896,16.3993146 8.09567896,15.7943295 C8.09567896,14.82567 8.87784133,14.0404164 9.84268751,14.0404164 C10.8075337,14.0404164 11.5896961,14.82567 11.5896961,15.7943295 C11.5896961,16.3993146 11.2845948,16.9327578 10.8204399,17.2480344 L11.7961308,19.984547 C11.9101195,20.3042502 11.743355,20.6558271 11.4236517,20.7698158 C11.3574028,20.7934365 11.2875908,20.8055099 11.2172568,20.8055099 L8.46811816,20.8055099 L8.46811816,20.8055099 C8.1287016,20.8055099 7.85355011,20.5303584 7.85355011,20.1909418 C7.85355011,20.1206079 7.86562345,20.0507959 7.8892442,19.984547 L8.86493515,17.2480344 Z" id="path-11"></path> + <filter x="-12.0%" y="-7.4%" width="124.1%" height="114.8%" filterUnits="objectBoundingBox" id="filter-12"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetInner1"></feOffset> + <feComposite in="shadowOffsetInner1" in2="SourceAlpha" operator="arithmetic" k2="-1" k3="1" result="shadowInnerInner1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 1 0" type="matrix" in="shadowInnerInner1"></feColorMatrix> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-13"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-14"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-15"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-16"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-17"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-18"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-19"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-20"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-21"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-22"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-23"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-24"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-25"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-26"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-27"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-28"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-44.4%" y="-20.0%" width="166.7%" height="160.0%" filterUnits="objectBoundingBox" id="filter-29"> + <feOffset dx="-2" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <rect id="path-30" x="79.0833333" y="68.7939815" width="60.8333333" height="24.3518519"></rect> + <filter x="-2.5%" y="-2.1%" width="103.3%" height="108.2%" filterUnits="objectBoundingBox" id="filter-31"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <rect id="path-32" x="119.233333" y="71.2346165" width="18.2504951" height="19.5072939"></rect> + <path d="M6.69173423,0.214583333 L15.4541667,0.214583333 L15.4541667,30.8979167 L6.69173423,30.8979167 L6.69173423,30.8979167 C3.06456682,30.8979167 0.124166667,27.9575165 0.124166667,24.3303491 L0.124166667,6.7821509 L0.124166667,6.7821509 C0.124166667,3.15498349 3.06456682,0.214583333 6.69173423,0.214583333 Z" id="path-34"></path> + <filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="filter-35"> + <feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-36"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-37"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <path d="M42.8291667,11.875589 L42.8291667,19.236911 C42.8291667,19.9264853 42.3373793,20.5354959 41.738915,20.595957 L17.6441667,22.6791667 L17.6441667,8.43333333 L41.738915,10.516543 C42.3410444,10.5773757 42.8291667,11.185286 42.8291667,11.875589 Z" id="path-38"></path> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-39"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-40"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <rect id="path-41" x="12.23" y="6.78958333" width="7.1175" height="17.5333333" rx="1.09459459"></rect> + <filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="filter-42"> + <feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <path d="M6.69173423,0.214583333 L15.4541667,0.214583333 L15.4541667,30.8979167 L6.69173423,30.8979167 L6.69173423,30.8979167 C3.06456682,30.8979167 0.124166667,27.9575165 0.124166667,24.3303491 L0.124166667,6.7821509 L0.124166667,6.7821509 C0.124166667,3.15498349 3.06456682,0.214583333 6.69173423,0.214583333 Z" id="path-43"></path> + <filter x="-29.4%" y="-4.9%" width="139.1%" height="116.3%" filterUnits="objectBoundingBox" id="filter-44"> + <feOffset dx="-3" dy="2" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.866666667 0 0 0 0 0.890196078 0 0 0 0 0.909803922 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-45"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-46"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <path d="M42.8291667,11.875589 L42.8291667,19.236911 C42.8291667,19.9264853 42.3373793,20.5354959 41.738915,20.595957 L17.6441667,22.6791667 L17.6441667,8.43333333 L41.738915,10.516543 C42.3410444,10.5773757 42.8291667,11.185286 42.8291667,11.875589 Z" id="path-47"></path> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-48"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <filter x="-50.0%" y="-10.0%" width="160.0%" height="160.0%" filterUnits="objectBoundingBox" id="filter-49"> + <feOffset dx="-1" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <rect id="path-50" x="12.23" y="6.78958333" width="7.1175" height="17.5333333" rx="1.09459459"></rect> + <filter x="-42.1%" y="-5.7%" width="156.2%" height="117.1%" filterUnits="objectBoundingBox" id="filter-51"> + <feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <path d="M24.5975819,18.9156325 C22.7107005,18.6906938 20.1873316,18.3702571 18.5998357,18.0903387 C15.7716385,17.5916513 10.2254435,16.2267099 10.2254435,16.2267099 L9.43228672,20.7249253 C9.43228672,20.7249253 15.1331234,21.2766981 17.950402,21.7734603 C19.3152185,22.0141143 21.3273422,22.4758916 23.0359088,22.887195 C22.0718328,24.3735021 20.9147108,26.1229174 20.0932954,27.2534987 C18.405278,29.5768553 14.7471849,33.9633914 14.7471849,33.9633914 L18.4424572,36.6481639 C18.4424572,36.6481639 21.4374695,31.7661671 23.1189701,29.4517801 C23.9598468,28.2944125 25.3148663,26.6203912 26.4570264,25.2388063 C27.4382453,26.7462318 28.6051214,28.5736505 29.3214044,29.8142891 C30.7573178,32.301364 33.2767374,37.4273633 33.2767374,37.4273633 L37.2324017,35.1435594 C37.2324017,35.1435594 33.990657,30.4217925 32.5602872,27.9443193 C31.8079686,26.6412654 30.764866,24.5861738 29.94691,22.9346427 C31.7349883,22.451283 33.9931664,21.8608332 35.4733174,21.5462174 C38.2823878,20.9491311 43.9360463,20.1370415 43.9360463,20.1370415 L42.9863873,15.669247 C42.9863873,15.669247 37.4939659,17.2932232 34.6957402,17.8880045 C33.1431973,18.2180076 30.6947576,18.5971515 28.8277097,18.8686298 C28.722602,16.9801623 28.6032977,14.4864013 28.6032977,12.8962937 C28.6032977,10.024467 28.984416,4.32551158 28.984416,4.32551158 L24.4168083,4.32551158 C24.4168083,4.32551158 24.8633581,10.0355541 24.8633581,12.8962937 C24.8633581,14.5048733 24.7214143,17.0240015 24.5975819,18.9156325 Z" id="path-52"></path> + <filter x="-14.6%" y="-6.2%" width="120.9%" height="121.4%" filterUnits="objectBoundingBox" id="filter-54"> + <feMorphology radius="0.547297297" operator="dilate" in="SourceAlpha" result="shadowSpreadOuter1"></feMorphology> + <feOffset dx="-3" dy="3" in="shadowSpreadOuter1" result="shadowOffsetOuter1"></feOffset> + <feComposite in="shadowOffsetOuter1" in2="SourceAlpha" operator="out" result="shadowOffsetOuter1"></feComposite> + <feColorMatrix values="0 0 0 0 0.639215686 0 0 0 0 0.694117647 0 0 0 0 0.749019608 0 0 0 0.3 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + <ellipse id="path-55" cx="26.802716" cy="22.6705733" rx="4.38" ry="4.38333333"></ellipse> + <filter x="-34.2%" y="-11.4%" width="145.7%" height="134.2%" filterUnits="objectBoundingBox" id="filter-56"> + <feOffset dx="-2" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feColorMatrix values="0 0 0 0 0.596078431 0 0 0 0 0.647058824 0 0 0 0 0.701960784 0 0 0 1 0" type="matrix" in="shadowOffsetOuter1"></feColorMatrix> + </filter> + </defs> + <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="403" transform="translate(-592.000000, -260.000000)"> + <g id="Group-9" transform="translate(599.000000, 261.000000)"> + <g id="Group-11"> + <g id="Rectangle-355"> + <use fill="black" fill-opacity="1" filter="url(#filter-2)" xlink:href="#path-1"></use> + <use stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-1"></use> + </g> + <g id="Rectangle-355"> + <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-3"></use> + <use stroke="#A3B1BF" stroke-width="1.62" fill-opacity="0.15" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-3"></use> + </g> + <g id="Rectangle-357"> + <use fill="black" fill-opacity="1" filter="url(#filter-6)" xlink:href="#path-5"></use> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-5"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M176.0325,106.581667 L176.0325,90.6683333 L161.510068,90.6683333 C158.330251,90.6683333 155.7525,93.2460841 155.7525,96.4259009 L155.7525,100.824099 C155.7525,104.003916 158.330251,106.581667 161.510068,106.581667 L176.0325,106.581667 Z"></path> + </g> + <g id="Rectangle-357" transform="translate(188.340000, 98.625000) scale(-1, 1) translate(-188.340000, -98.625000) "> + <use fill="black" fill-opacity="1" filter="url(#filter-8)" xlink:href="#path-7"></use> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-7"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M198.48,106.581667 L198.48,90.6683333 L183.957568,90.6683333 C180.777751,90.6683333 178.2,93.2460841 178.2,96.4259009 L178.2,100.824099 C178.2,104.003916 180.777751,106.581667 183.957568,106.581667 L198.48,106.581667 Z"></path> + </g> + <path d="M169.537821,109.198898 L179.520726,109.198898 L179.520726,106.316665 C179.657239,106.659699 174.968976,106.316665 172.419859,106.316665 L174.153055,100.243742 C171.605657,100.243742 169.537821,102.294522 169.537821,104.822572 L169.537821,109.198898 Z M181.404585,106.764356 L181.334952,105.82938 C178.493277,106.319657 175.877716,105.82938 172.088276,105.82938 L174.153055,98.0162037 C170.365914,98.0162037 167.291667,101.063519 167.291667,104.822572 L167.291667,106.764356 L166.869647,106.764356 L166.869647,106.764356 C165.758829,106.764356 164.858333,107.664852 164.858333,108.775669 L164.858333,108.775669 L164.858333,115.540394 C164.858333,119.983665 168.460316,123.585648 172.903588,123.585648 L176.279745,123.585648 C180.723017,123.585648 184.325,119.983665 184.325,115.540394 L184.325,108.775669 C184.325,107.664852 183.424504,106.764356 182.313686,106.764356 L181.404585,106.764356 Z" id="Shape" fill="#D4DBE2" fill-rule="nonzero"></path> + <g id="Group-6" filter="url(#filter-9)" transform="translate(160.419753, 95.472603)"> + <ellipse id="Oval-191" stroke="#D9D9D9" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#D9D9D9" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-10)" transform="translate(189.259259, 95.472603)"> + <ellipse id="Oval-191" stroke="#D9D9D9" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#D9D9D9" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="lock" transform="translate(166.683333, 96.798611)"> + <path d="M2.43333333,9.34812925 L2.43333333,7.750693 C2.43333333,4.33901358 4.64933408,1.45058816 7.70555556,0.476293029 L7.70555556,4.05203095 C6.57838885,4.84048413 5.84,6.15673686 5.84,7.64734194 L5.84,9.34812925 L14.4830461,9.34812925 C14.4830461,8.8280509 14.4830461,8.25372782 14.4830461,7.64734194 C14.4830461,6.44285214 14.0009139,5.352206 13.2211113,4.56188949 L13.2211113,0.864048014 C15.7633754,2.09038625 17.52,4.7131478 17.52,7.750693 C17.52,8.30041562 17.52,8.83504216 17.52,9.3491485 C18.6008993,9.38327886 19.4666667,10.2702555 19.4666667,11.3594429 L19.4666667,18.3317768 C19.4666667,22.7750482 15.8646835,26.3770314 11.4214121,26.3770314 L8.04525456,26.3770314 C3.60198316,26.3770314 5.4414381e-16,22.7750482 0,18.3317768 L0,11.3594429 C-1.36035952e-16,10.248625 0.900495789,9.34812925 2.01131364,9.34812925 L2.01131364,9.34812925 L2.43333333,9.34812925 Z" id="Combined-Shape" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5"></path> + <g id="Oval-1115"> + <use fill-opacity="0.3" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-11"></use> + <use fill="black" fill-opacity="1" filter="url(#filter-12)" xlink:href="#path-11"></use> + </g> + </g> + <g id="Group-6" filter="url(#filter-13)" transform="translate(64.000000, 75.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-11" filter="url(#filter-14)" transform="translate(152.000000, 75.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-2" filter="url(#filter-15)" transform="translate(57.000000, 120.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-3" filter="url(#filter-16)" transform="translate(57.000000, 137.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-4" filter="url(#filter-17)" transform="translate(64.000000, 186.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-5" filter="url(#filter-18)" transform="translate(93.000000, 191.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-6" filter="url(#filter-19)" transform="translate(122.000000, 191.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy-7" filter="url(#filter-20)" transform="translate(152.000000, 186.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-21)" transform="translate(160.419753, 95.472603)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F5F5F5" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-22)" transform="translate(189.259259, 95.472603)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-23)" transform="translate(25.000000, 38.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6-Copy-8" filter="url(#filter-24)" transform="translate(25.000000, 218.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6-Copy-9" filter="url(#filter-25)" transform="translate(106.000000, 237.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6-Copy-10" filter="url(#filter-26)" transform="translate(185.000000, 219.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6" filter="url(#filter-27)" transform="translate(14.419753, 129.698630)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6" filter="url(#filter-28)" transform="translate(105.444444, 20.715753)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F7FAFC" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Group-6" filter="url(#filter-29)" transform="translate(185.055000, 37.806250)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.64189189" fill="#F5F5F5" cx="4.38" cy="4.93125" rx="4.38" ry="4.38333333"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="4.0041131 9.13310534 7.56201455 8.23226901 2.34303487 0.44644438 0.446211571 3.63004005 0.788921826 7.80592737"></polygon> + </g> + <g id="Rectangle-373"> + <use fill="black" fill-opacity="1" filter="url(#filter-31)" xlink:href="#path-30"></use> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-30"></use> + <rect stroke="#A3B1BF" stroke-width="2.43" x="80.2983333" y="70.0089815" width="58.4033333" height="21.9218519"></rect> + </g> + <mask id="mask-33" fill="white"> + <use xlink:href="#path-32"></use> + </mask> + <use id="Mask" fill-opacity="0.3" fill="#A3B1BF" xlink:href="#path-32"></use> + <rect id="Rectangle-375" fill="#A3B1BF" x="114.366667" y="77.3171296" width="1.825" height="8.11728395" rx="0.9125"></rect> + <rect id="Rectangle-375" fill="#A3B1BF" x="118.016667" y="72.6496914" width="2.43333333" height="16.2345679" rx="1.21666667"></rect> + <g id="Group-4" transform="translate(25.000000, 88.000000)"> + <g id="Rectangle-369"> + <use fill="black" fill-opacity="1" filter="url(#filter-35)" xlink:href="#path-34"></use> + <use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-34"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M14.6441667,30.0879167 L14.6441667,1.02458333 L6.69173423,1.02458333 C3.51191747,1.02458333 0.934166667,3.60233414 0.934166667,6.7821509 L0.934166667,24.3303491 C0.934166667,27.5101659 3.51191747,30.0879167 6.69173423,30.0879167 L14.6441667,30.0879167 Z"></path> + </g> + <g id="Group-6" filter="url(#filter-36)" transform="translate(6.207500, 6.789583)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-37)" transform="translate(6.543210, 19.181507)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Rectangle-371"> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-38"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M18.4541667,9.31638699 L18.4541667,21.7961161 L41.6574976,19.7900592 C41.8219325,19.7734468 42.0191667,19.5280875 42.0191667,19.236911 L42.0191667,11.875589 C42.0191667,11.5822335 41.824213,11.3392839 41.6691435,11.3235325 L18.4541667,9.31638699 Z"></path> + </g> + <g id="Group-6" filter="url(#filter-39)" transform="translate(23.000000, 13.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy" filter="url(#filter-40)" transform="translate(33.000000, 13.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Rectangle-370"> + <use fill="black" fill-opacity="1" filter="url(#filter-42)" xlink:href="#path-41"></use> + <use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-41"></use> + <rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.59958333" width="5.4975" height="15.9133333" rx="1.09459459"></rect> + </g> + <path d="M13.59875,15.55625 L17.97875,15.55625" id="Line" stroke="#A3B1BF" stroke-width="2.18918919" stroke-linecap="square"></path> + </g> + <g id="Group-4-Copy" transform="translate(25.000000, 145.000000)"> + <g id="Rectangle-369"> + <use fill="black" fill-opacity="1" filter="url(#filter-44)" xlink:href="#path-43"></use> + <use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-43"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M14.6441667,30.0879167 L14.6441667,1.02458333 L6.69173423,1.02458333 C3.51191747,1.02458333 0.934166667,3.60233414 0.934166667,6.7821509 L0.934166667,24.3303491 C0.934166667,27.5101659 3.51191747,30.0879167 6.69173423,30.0879167 L14.6441667,30.0879167 Z"></path> + </g> + <g id="Group-6" filter="url(#filter-45)" transform="translate(6.207500, 6.789583)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6" filter="url(#filter-46)" transform="translate(6.543210, 19.181507)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Rectangle-371"> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-47"></use> + <path stroke="#A3B1BF" stroke-width="1.62" d="M18.4541667,9.31638699 L18.4541667,21.7961161 L41.6574976,19.7900592 C41.8219325,19.7734468 42.0191667,19.5280875 42.0191667,19.236911 L42.0191667,11.875589 C42.0191667,11.5822335 41.824213,11.3392839 41.6691435,11.3235325 L18.4541667,9.31638699 Z"></path> + </g> + <g id="Group-6" filter="url(#filter-48)" transform="translate(23.000000, 13.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Group-6-Copy" filter="url(#filter-49)" transform="translate(33.000000, 13.000000)"> + <ellipse id="Oval-191" stroke="#A3B1BF" stroke-width="1.09459459" fill="#F7FAFC" cx="2.19" cy="2.73958333" rx="2.19" ry="2.19166667"></ellipse> + <polygon id="Path-301" fill="#A3B1BF" points="3.78100727 4.39009284 1.17151744 0.497180523 0.223105786 2.08897836 0.101076918 4.39009284"></polygon> + </g> + <g id="Rectangle-370"> + <use fill="black" fill-opacity="1" filter="url(#filter-51)" xlink:href="#path-50"></use> + <use fill="#EAEFF3" fill-rule="evenodd" xlink:href="#path-50"></use> + <rect stroke="#A3B1BF" stroke-width="1.62" x="13.04" y="7.59958333" width="5.4975" height="15.9133333" rx="1.09459459"></rect> + </g> + <path d="M13.59875,15.55625 L17.97875,15.55625" id="Line" stroke="#A3B1BF" stroke-width="2.18918919" stroke-linecap="square"></path> + </g> + </g> + <g id="Group-17" transform="translate(135.185185, 131.500000)"> + <path d="M22.4835494,46.23099 C10.0861375,46.23099 0.0360493827,36.1732534 0.0360493827,23.7664066 C0.0360493827,11.3595599 10.0861375,1.30182331 22.4835494,1.30182331 C34.8809613,1.30182331 44.9310494,11.3595599 44.9310494,23.7664066 C44.9310494,36.1732534 34.8809613,46.23099 22.4835494,46.23099 Z M22.4835494,39.65599 C31.2524505,39.65599 38.3610494,32.5419812 38.3610494,23.7664066 C38.3610494,14.9908321 31.2524505,7.87682331 22.4835494,7.87682331 C13.7146483,7.87682331 6.60604938,14.9908321 6.60604938,23.7664066 C6.60604938,32.5419812 13.7146483,39.65599 22.4835494,39.65599 Z" id="Oval-190" fill-opacity="0.3" fill="#A3B1BF"></path> + <mask id="mask-53" fill="white"> + <use xlink:href="#path-52"></use> + </mask> + <g id="Mask"> + <use fill="black" fill-opacity="1" filter="url(#filter-54)" xlink:href="#path-52"></use> + <use stroke="#A3B1BF" stroke-width="1.09459459" fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-52"></use> + </g> + <g id="Group-7" transform="translate(0.360494, 0.078598)" fill="#98A5B3"> + <path d="M20.5636489,0.927088888 C22.1113303,0.589405992 23.7186545,0.411496914 25.3675,0.411496914 C37.7649119,0.411496914 47.815,10.4692335 47.815,22.8760802 C47.815,33.7386653 40.1110508,42.8005273 29.8728116,44.8880725 L27.4696515,38.6276265 C35.2448963,37.5983622 41.245,30.9384541 41.245,22.8760802 C41.245,14.1005057 34.1364011,6.98649691 25.3675,6.98649691 C22.0362626,6.98649691 18.9446369,8.01317718 16.3913275,9.76760576 L15.30877,6.94744709 L20.5636489,0.927088888 Z" id="Oval-190"></path> + </g> + <path d="M26.802716,45.1351566 C14.4053041,45.1351566 4.35521605,35.0774201 4.35521605,22.6705733 C4.35521605,10.2637265 14.4053041,0.20598998 26.802716,0.20598998 C39.200128,0.20598998 49.250216,10.2637265 49.250216,22.6705733 C49.250216,35.0774201 39.200128,45.1351566 26.802716,45.1351566 Z M26.802716,38.5601566 C35.5716172,38.5601566 42.680216,31.4461479 42.680216,22.6705733 C42.680216,13.8949988 35.5716172,6.78098998 26.802716,6.78098998 C18.0338149,6.78098998 10.925216,13.8949988 10.925216,22.6705733 C10.925216,31.4461479 18.0338149,38.5601566 26.802716,38.5601566 Z" id="Oval-190" fill="#A3B1BF"></path> + <path d="M37.5685802,6.47400902 C37.5685802,6.47400902 40.3560433,8.0639828 43.0005786,12.4958138 C45.6451139,16.9276447 45.9870813,21.4863845 45.9870813,21.4863845" id="Line" stroke="#F7FAFC" stroke-width="1.62" stroke-linecap="round"></path> + <g id="Oval-199"> + <use fill="black" fill-opacity="1" filter="url(#filter-56)" xlink:href="#path-55"></use> + <use fill="#A3B1BF" fill-rule="evenodd" xlink:href="#path-55"></use> + </g> + <path d="M27.0403924,24.1861178 C28.3842853,24.1861178 29.4737257,23.0958483 29.4737257,21.7509326 C29.4737257,20.406017 28.3842853,19.3157475 27.0403924,19.3157475 C27.0403924,19.3157475 27.6699621,20.406017 27.6699621,21.7509326 C27.6699621,23.0958483 27.0403924,24.1861178 27.0403924,24.1861178 Z" id="Oval-199" fill="#F7FAFC" transform="translate(28.257059, 21.750933) rotate(-43.000000) translate(-28.257059, -21.750933) "></path> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/images/error/404.svg b/src/main/resources/static/febs/images/error/404.svg new file mode 100644 index 0000000..5531d05 --- /dev/null +++ b/src/main/resources/static/febs/images/error/404.svg @@ -0,0 +1,314 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="423px" height="341px" viewBox="0 0 423 341" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch --> + <title>Group 4</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="404" transform="translate(-484.000000, -221.000000)"> + <g id="Group-4" transform="translate(464.000000, 222.000000)"> + <g id="Group-5" transform="translate(75.417348, 0.163879)" stroke="#A3B1BF" stroke-width="1.62" opacity="0.6" stroke-linejoin="round" stroke-dasharray="12.15"> + <path d="M169.575185,288.890375 C103.647066,288.890375 50.2010204,235.455806 50.2010204,169.540425 C50.2010204,103.625045 103.647066,50.1904762 169.575185,50.1904762 C235.50394,50.1904762 288.94935,103.625045 288.94935,169.540425 C288.94935,235.455806 235.50394,288.890375 169.575185,288.890375 Z" id="Stroke-1"></path> + <path d="M169.405699,338.555288 C76.0274364,338.555288 0.329411882,262.872619 0.329411882,169.513299 C0.329411882,76.1539786 76.0274364,0.471309613 169.405699,0.471309613 C262.783961,0.471309613 338.481985,76.1539786 338.481985,169.513299 C338.481985,262.872619 262.783961,338.555288 169.405699,338.555288 Z" id="Stroke-3"></path> + </g> + <polygon id="Fill-6" fill="#F5F5F5" transform="translate(106.914750, 199.432805) rotate(22.000000) translate(-106.914750, -199.432805) " points="97.7112298 198.803016 116.11827 190.231152 107.544667 208.634458"></polygon> + <polygon id="Stroke-7" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(106.914750, 199.432805) rotate(22.000000) translate(-106.914750, -199.432805) " points="97.7112298 198.803016 116.11827 190.231152 107.544667 208.634458"></polygon> + <polygon id="Fill-8" transform="translate(58.996118, 219.767028) rotate(22.000000) translate(-58.996118, -219.767028) " points="38.8543444 215.183828 54.4119879 199.629341 79.1378915 224.350228 63.580248 239.904716"></polygon> + <polygon id="Stroke-9" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(58.996118, 219.767028) rotate(22.000000) translate(-58.996118, -219.767028) " points="38.8543444 215.183828 54.4119879 199.629341 79.1378915 224.350228 63.580248 239.904716"></polygon> + <polygon id="Fill-10" fill="#F5F5F5" transform="translate(71.226096, 214.577614) rotate(22.000000) translate(-71.226096, -214.577614) " points="51.4642422 198.657893 55.3028278 194.820086 90.9879502 230.497335 87.1487294 234.335141"></polygon> + <polygon id="Stroke-11" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" stroke-linejoin="round" transform="translate(71.226096, 214.577614) rotate(22.000000) translate(-71.226096, -214.577614) " points="51.4642422 198.657893 55.3028278 194.820086 90.9879502 230.497335 87.1487294 234.335141"></polygon> + <polygon id="Fill-12" transform="translate(84.698338, 273.903349) rotate(22.000000) translate(-84.698338, -273.903349) " points="56.0769883 259.690379 70.4821667 245.288122 113.319688 288.116319 98.9145099 302.518575"></polygon> + <polygon id="Stroke-13" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(84.698338, 273.903349) rotate(22.000000) translate(-84.698338, -273.903349) " points="56.0769883 259.690379 70.4821667 245.288122 113.319688 288.116319 98.9145099 302.518575"></polygon> + <polygon id="Fill-14" transform="translate(75.456149, 212.782520) rotate(22.000000) translate(-75.456149, -212.782520) " points="63.8911557 203.879723 66.5512281 201.22019 87.0211429 221.685318 84.3604352 224.34485"></polygon> + <polygon id="Stroke-15" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(75.456149, 212.782520) rotate(22.000000) translate(-75.456149, -212.782520) " points="63.8911557 203.879723 66.5512281 201.22019 87.0211429 221.685318 84.3604352 224.34485"></polygon> + <polygon id="Fill-16" fill="#F5F5F5" transform="translate(78.176142, 202.618192) rotate(22.000000) translate(-78.176142, -202.618192) " points="74.4026766 205.006817 80.5652518 198.845492 81.9496076 200.229567 75.7870324 206.390892"></polygon> + <polygon id="Stroke-17" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(78.176142, 202.618192) rotate(22.000000) translate(-78.176142, -202.618192) " points="74.4026766 205.006817 80.5652518 198.845492 81.9496076 200.229567 75.7870324 206.390892"></polygon> + <polygon id="Fill-18" fill="#F5F5F5" transform="translate(84.676979, 217.928886) rotate(22.000000) translate(-84.676979, -217.928886) " points="80.9035138 220.317511 87.066089 214.156186 88.4504448 215.540261 82.2878696 221.701586"></polygon> + <polygon id="Stroke-19" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(84.676979, 217.928886) rotate(22.000000) translate(-84.676979, -217.928886) " points="80.9035138 220.317511 87.066089 214.156186 88.4504448 215.540261 82.2878696 221.701586"></polygon> + <polygon id="Fill-20" transform="translate(70.238421, 242.404581) rotate(22.000000) translate(-70.238421, -242.404581) " points="67.8493111 238.631881 74.0118863 244.793206 72.6275305 246.177281 66.4649553 240.015956"></polygon> + <polygon id="Stroke-21" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(70.238421, 242.404581) rotate(22.000000) translate(-70.238421, -242.404581) " points="67.8493111 238.631881 74.0118863 244.793206 72.6275305 246.177281 66.4649553 240.015956"></polygon> + <polygon id="Fill-22" transform="translate(48.081755, 224.398789) rotate(22.000000) translate(-48.081755, -224.398789) " points="35.1127107 220.725179 36.3242602 211.432376 61.0507992 236.153899 51.756111 237.365203"></polygon> + <polygon id="Stroke-23" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(48.081755, 224.398789) rotate(22.000000) translate(-48.081755, -224.398789) " points="35.1127107 220.725179 36.3242602 211.432376 61.0507992 236.153899 51.756111 237.365203"></polygon> + <polygon id="Fill-24" transform="translate(38.612968, 228.416820) rotate(22.000000) translate(-38.612968, -228.416820) " points="32.9179858 217.470622 26.2496982 216.056058 50.9762371 240.777581 49.5613861 234.110647"></polygon> + <polygon id="Stroke-25" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(38.612968, 228.416820) rotate(22.000000) translate(-38.612968, -228.416820) " points="32.9179858 217.470622 26.2496982 216.056058 50.9762371 240.777581 49.5613861 234.110647"></polygon> + <polygon id="Fill-26" transform="translate(31.086342, 221.523909) rotate(22.000000) translate(-31.086342, -221.523909) " points="32.6469986 217.297684 26.8592604 218.37941 34.2314793 225.750133 35.3134242 219.963569"></polygon> + <polygon id="Stroke-27" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(31.086342, 221.523909) rotate(22.000000) translate(-31.086342, -221.523909) " points="32.6469986 217.297684 26.8592604 218.37941 34.2314793 225.750133 35.3134242 219.963569"></polygon> + <polygon id="Fill-28" transform="translate(38.344372, 238.617819) rotate(22.000000) translate(-38.344372, -238.617819) " points="39.9050284 234.391595 34.1172902 235.47332 41.4895091 242.844044 42.571454 237.05748"></polygon> + <polygon id="Stroke-29" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(38.344372, 238.617819) rotate(22.000000) translate(-38.344372, -238.617819) " points="39.9050284 234.391595 34.1172902 235.47332 41.4895091 242.844044 42.571454 237.05748"></polygon> + <polygon id="Fill-30" fill="#F0F2F5" transform="translate(75.352798, 203.766862) rotate(22.000000) translate(-75.352798, -203.766862) " points="71.4417859 201.708217 73.2937351 199.856644 79.2638092 205.824871 77.4118601 207.67708"></polygon> + <polygon id="Stroke-31" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(75.352798, 203.766862) rotate(22.000000) translate(-75.352798, -203.766862) " points="71.4417859 201.708217 73.2937351 199.856644 79.2638092 205.824871 77.4118601 207.67708"></polygon> + <polygon id="Fill-32" fill="#F0F2F5" transform="translate(81.871541, 219.119730) rotate(22.000000) translate(-81.871541, -219.119730) " points="77.9605297 217.061085 79.8124789 215.209512 85.7825531 221.177739 83.9306039 223.029948"></polygon> + <polygon id="Stroke-33" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(81.871541, 219.119730) rotate(22.000000) translate(-81.871541, -219.119730) " points="77.9605297 217.061085 79.8124789 215.209512 85.7825531 221.177739 83.9306039 223.029948"></polygon> + <polygon id="Fill-34" transform="translate(68.034935, 237.215417) rotate(22.000000) translate(-68.034935, -237.215417) " points="65.1594898 237.106164 67.9256601 234.340555 70.9103796 237.324669 68.1442092 240.090278"></polygon> + <polygon id="Stroke-35" stroke="#A3B1BF" stroke-width="1.62" fill="#F5F5F5" stroke-linejoin="round" transform="translate(68.034935, 237.215417) rotate(22.000000) translate(-68.034935, -237.215417) " points="65.1594898 237.106164 67.9256601 234.340555 70.9103796 237.324669 68.1442092 240.090278"></polygon> + <path d="M90.2556147,213.065319 C79.2271463,202.039088 74.6433339,188.153875 78.4889079,179.512775 C79.1248602,178.084237 80.8319571,175.429786 84.5339495,179.131027 C88.2353065,182.832268 120.560237,215.150007 123.931865,218.52095 C127.303492,221.891894 125.245065,224.192545 123.817508,224.827733 C115.174655,228.675068 101.284718,224.092186 90.2556147,213.065319 Z" id="Fill-36" fill="#F5F5F5" transform="translate(101.453924, 201.708917) rotate(22.000000) translate(-101.453924, -201.708917) "></path> + <path d="M90.2556147,213.065319 C79.2271463,202.039088 74.6433339,188.153875 78.4889079,179.512775 C79.1248602,178.084237 80.8319571,175.429786 84.5339495,179.131027 C88.2353065,182.832268 120.560237,215.150007 123.931865,218.52095 C127.303492,221.891894 125.245065,224.192545 123.817508,224.827733 C115.174655,228.675068 101.284718,224.092186 90.2556147,213.065319 Z" id="Stroke-38" stroke="#A3B1BF" stroke-width="1.62" fill="#F0F2F5" stroke-linejoin="round" transform="translate(101.453924, 201.708917) rotate(22.000000) translate(-101.453924, -201.708917) "></path> + <polygon id="Fill-40" fill="#F0F2F5" transform="translate(86.633853, 208.038961) rotate(22.000000) translate(-86.633853, -208.038961) " points="77.9716233 201.230061 79.8235724 199.378488 95.2960835 214.84786 93.4441343 216.699433"></polygon> + <polygon id="Stroke-42" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(86.633853, 208.038961) rotate(22.000000) translate(-86.633853, -208.038961) " points="77.9716233 201.230061 79.8235724 199.378488 95.2960835 214.84786 93.4441343 216.699433"></polygon> + <path d="M121.635514,196.068815 C120.517356,197.186746 118.704797,197.186746 117.586639,196.068815 C116.469116,194.950884 116.469116,193.138692 117.586639,192.020761 C118.704797,190.903465 120.517356,190.903465 121.635514,192.020761 C122.753672,193.138692 122.753672,194.950884 121.635514,196.068815" id="Fill-44" fill="#A3B1BF" transform="translate(119.611315, 194.045026) rotate(22.000000) translate(-119.611315, -194.045026) "></path> + <polygon id="Fill-46" fill-opacity="0.6" fill="#A3B1BF" transform="translate(81.250567, 248.056422) rotate(22.000000) translate(-81.250567, -248.056422) " points="81.2505672 249.672341 79.6343206 248.056422 81.2505672 246.440503 82.8668137 248.056422"></polygon> + <polygon id="Stroke-48" transform="translate(81.250567, 248.056422) rotate(22.000000) translate(-81.250567, -248.056422) " points="81.2505672 249.672341 79.6343206 248.056422 81.2505672 246.440503 82.8668137 248.056422"></polygon> + <polygon id="Fill-50" fill-opacity="0.6" fill="#A3B1BF" transform="translate(82.702196, 251.475282) rotate(22.000000) translate(-82.702196, -251.475282) " points="82.7021965 253.091201 81.0859499 251.475282 82.7021965 249.859363 84.318443 251.475282"></polygon> + <polygon id="Stroke-52" transform="translate(82.702196, 251.475282) rotate(22.000000) translate(-82.702196, -251.475282) " points="82.7021965 253.091201 81.0859499 251.475282 82.7021965 249.859363 84.318443 251.475282"></polygon> + <polygon id="Fill-54" fill-opacity="0.6" fill="#A3B1BF" transform="translate(84.153791, 254.894059) rotate(22.000000) translate(-84.153791, -254.894059) " points="84.1537906 256.509978 82.5375441 254.894059 84.1537906 253.278141 85.7700372 254.894059"></polygon> + <polygon id="Stroke-56" transform="translate(84.153791, 254.894059) rotate(22.000000) translate(-84.153791, -254.894059) " points="84.1537906 256.509978 82.5375441 254.894059 84.1537906 253.278141 85.7700372 254.894059"></polygon> + <polygon id="Fill-58" fill-opacity="0.6" fill="#A3B1BF" transform="translate(85.605385, 258.312837) rotate(22.000000) translate(-85.605385, -258.312837) " points="85.6053848 259.928756 83.9891383 258.312837 85.6053848 256.696918 87.2216313 258.312837"></polygon> + <polygon id="Stroke-60" transform="translate(85.605385, 258.312837) rotate(22.000000) translate(-85.605385, -258.312837) " points="85.6053848 259.928756 83.9891383 258.312837 85.6053848 256.696918 87.2216313 258.312837"></polygon> + <polygon id="Fill-62" fill-opacity="0.6" fill="#A3B1BF" transform="translate(78.094482, 249.395723) rotate(22.000000) translate(-78.094482, -249.395723) " points="78.0944819 251.011642 76.4782353 249.395723 78.0944819 247.779804 79.7107284 249.395723"></polygon> + <polygon id="Stroke-64" transform="translate(78.094482, 249.395723) rotate(22.000000) translate(-78.094482, -249.395723) " points="78.0944819 251.011642 76.4782353 249.395723 78.0944819 247.779804 79.7107284 249.395723"></polygon> + <polygon id="Fill-66" fill-opacity="0.6" fill="#A3B1BF" transform="translate(79.546052, 252.814559) rotate(22.000000) translate(-79.546052, -252.814559) " points="79.5460522 254.430478 77.9298057 252.814559 79.5460522 251.198641 81.1622988 252.814559"></polygon> + <polygon id="Stroke-68" transform="translate(79.546052, 252.814559) rotate(22.000000) translate(-79.546052, -252.814559) " points="79.5460522 254.430478 77.9298057 252.814559 79.5460522 251.198641 81.1622988 252.814559"></polygon> + <polygon id="Fill-70" fill-opacity="0.6" fill="#A3B1BF" transform="translate(80.997705, 256.233360) rotate(22.000000) translate(-80.997705, -256.233360) " points="80.9977053 257.849279 79.3814588 256.23336 80.9977053 254.617442 82.6139518 256.23336"></polygon> + <polygon id="Stroke-72" transform="translate(80.997705, 256.233360) rotate(22.000000) translate(-80.997705, -256.233360) " points="79.3814588 256.23336 80.9977053 254.617442 82.6139518 256.23336 80.9977053 257.849279"></polygon> + <polygon id="Fill-74" fill-opacity="0.6" fill="#A3B1BF" transform="translate(82.449276, 259.652197) rotate(22.000000) translate(-82.449276, -259.652197) " points="82.4492757 261.268115 80.8330292 259.652197 82.4492757 258.036278 84.0655222 259.652197"></polygon> + <polygon id="Stroke-76" transform="translate(82.449276, 259.652197) rotate(22.000000) translate(-82.449276, -259.652197) " points="82.4492757 261.268115 80.8330292 259.652197 82.4492757 258.036278 84.0655222 259.652197"></polygon> + <polygon id="Fill-78" fill-opacity="0.6" fill="#A3B1BF" transform="translate(74.938373, 250.735083) rotate(22.000000) translate(-74.938373, -250.735083) " points="74.9383727 252.351002 73.3221262 250.735083 74.9383727 249.119164 76.5546193 250.735083"></polygon> + <polygon id="Stroke-80" transform="translate(74.938373, 250.735083) rotate(22.000000) translate(-74.938373, -250.735083) " points="74.9383727 252.351002 73.3221262 250.735083 74.9383727 249.119164 76.5546193 250.735083"></polygon> + <polygon id="Fill-82" fill-opacity="0.6" fill="#A3B1BF" transform="translate(76.389967, 254.153860) rotate(22.000000) translate(-76.389967, -254.153860) " points="76.3899669 255.769779 74.7737204 254.15386 76.3899669 252.537942 78.0062134 254.15386"></polygon> + <polygon id="Stroke-84" transform="translate(76.389967, 254.153860) rotate(22.000000) translate(-76.389967, -254.153860) " points="76.3899669 255.769779 74.7737204 254.15386 76.3899669 252.537942 78.0062134 254.15386"></polygon> + <polygon id="Fill-86" fill-opacity="0.6" fill="#A3B1BF" transform="translate(77.841620, 257.572661) rotate(22.000000) translate(-77.841620, -257.572661) " points="77.84162 259.18858 76.2253735 257.572661 77.84162 255.956743 79.4578665 257.572661"></polygon> + <polygon id="Stroke-88" transform="translate(77.841620, 257.572661) rotate(22.000000) translate(-77.841620, -257.572661) " points="77.84162 259.18858 76.2253735 257.572661 77.84162 255.956743 79.4578665 257.572661"></polygon> + <polygon id="Fill-90" fill-opacity="0.6" fill="#A3B1BF" transform="translate(79.293190, 260.991498) rotate(22.000000) translate(-79.293190, -260.991498) " points="79.2931904 262.607416 77.6769438 260.991498 79.2931904 259.375579 80.9094369 260.991498"></polygon> + <polygon id="Stroke-92" transform="translate(79.293190, 260.991498) rotate(22.000000) translate(-79.293190, -260.991498) " points="79.2931904 262.607416 77.6769438 260.991498 79.2931904 259.375579 80.9094369 260.991498"></polygon> + <polygon id="Fill-94" fill-opacity="0.6" fill="#A3B1BF" transform="translate(71.782287, 252.074384) rotate(22.000000) translate(-71.782287, -252.074384) " points="71.7822874 253.690302 70.1660409 252.074384 71.7822874 250.458465 73.3985339 252.074384"></polygon> + <polygon id="Stroke-96" transform="translate(71.782287, 252.074384) rotate(22.000000) translate(-71.782287, -252.074384) " points="71.7822874 253.690302 70.1660409 252.074384 71.7822874 250.458465 73.3985339 252.074384"></polygon> + <polygon id="Fill-98" fill-opacity="0.6" fill="#A3B1BF" transform="translate(73.233882, 255.493161) rotate(22.000000) translate(-73.233882, -255.493161) " points="73.2338816 257.10908 71.6176351 255.493161 73.2338816 253.877242 74.8501281 255.493161"></polygon> + <polygon id="Stroke-100" transform="translate(73.233882, 255.493161) rotate(22.000000) translate(-73.233882, -255.493161) " points="73.2338816 257.10908 71.6176351 255.493161 73.2338816 253.877242 74.8501281 255.493161"></polygon> + <polygon id="Fill-102" fill-opacity="0.6" fill="#A3B1BF" transform="translate(74.685535, 258.911962) rotate(22.000000) translate(-74.685535, -258.911962) " points="74.6855347 260.527881 73.0692881 258.911962 74.6855347 257.296044 76.3017812 258.911962"></polygon> + <polygon id="Stroke-104" transform="translate(74.685535, 258.911962) rotate(22.000000) translate(-74.685535, -258.911962) " points="74.6855347 260.527881 73.0692881 258.911962 74.6855347 257.296044 76.3017812 258.911962"></polygon> + <polygon id="Fill-106" fill-opacity="0.6" fill="#A3B1BF" transform="translate(76.137105, 262.330799) rotate(22.000000) translate(-76.137105, -262.330799) " points="76.137105 263.946717 74.5208585 262.330799 76.137105 260.71488 77.7533516 262.330799"></polygon> + <polygon id="Stroke-108" transform="translate(76.137105, 262.330799) rotate(22.000000) translate(-76.137105, -262.330799) " points="76.137105 263.946717 74.5208585 262.330799 76.137105 260.71488 77.7533516 262.330799"></polygon> + <polygon id="Fill-110" fill-opacity="0.6" fill="#A3B1BF" transform="translate(68.626202, 253.413685) rotate(22.000000) translate(-68.626202, -253.413685) " points="68.6262021 255.029603 67.0099556 253.413685 68.6262021 251.797766 70.2424486 253.413685"></polygon> + <polygon id="Stroke-112" transform="translate(68.626202, 253.413685) rotate(22.000000) translate(-68.626202, -253.413685) " points="68.6262021 255.029603 67.0099556 253.413685 68.6262021 251.797766 70.2424486 253.413685"></polygon> + <polygon id="Fill-114" fill-opacity="0.6" fill="#A3B1BF" transform="translate(70.077796, 256.832462) rotate(22.000000) translate(-70.077796, -256.832462) " points="70.0777963 258.448381 68.4615497 256.832462 70.0777963 255.216543 71.6940428 256.832462"></polygon> + <polygon id="Stroke-116" transform="translate(70.077796, 256.832462) rotate(22.000000) translate(-70.077796, -256.832462) " points="70.0777963 258.448381 68.4615497 256.832462 70.0777963 255.216543 71.6940428 256.832462"></polygon> + <polygon id="Fill-118" fill-opacity="0.6" fill="#A3B1BF" transform="translate(71.529426, 260.251322) rotate(22.000000) translate(-71.529426, -260.251322) " points="71.5294256 261.867241 69.913179 260.251322 71.5294256 258.635403 73.1456721 260.251322"></polygon> + <polygon id="Stroke-120" transform="translate(71.529426, 260.251322) rotate(22.000000) translate(-71.529426, -260.251322) " points="71.5294256 261.867241 69.913179 260.251322 71.5294256 258.635403 73.1456721 260.251322"></polygon> + <polygon id="Fill-122" fill-opacity="0.6" fill="#A3B1BF" transform="translate(72.981020, 263.670099) rotate(22.000000) translate(-72.981020, -263.670099) " points="72.9810197 265.286018 71.3647732 263.670099 72.9810197 262.054181 74.5972663 263.670099"></polygon> + <polygon id="Stroke-124" transform="translate(72.981020, 263.670099) rotate(22.000000) translate(-72.981020, -263.670099) " points="72.9810197 265.286018 71.3647732 263.670099 72.9810197 262.054181 74.5972663 263.670099"></polygon> + <polygon id="Fill-126" fill-opacity="0.6" fill="#A3B1BF" transform="translate(88.852907, 265.961362) rotate(22.000000) translate(-88.852907, -265.961362) " points="88.8529067 267.577281 87.2366602 265.961362 88.8529067 264.345443 90.4691533 265.961362"></polygon> + <polygon id="Stroke-128" transform="translate(88.852907, 265.961362) rotate(22.000000) translate(-88.852907, -265.961362) " points="88.8529067 267.577281 87.2366602 265.961362 88.8529067 264.345443 90.4691533 265.961362"></polygon> + <polygon id="Fill-130" fill-opacity="0.6" fill="#A3B1BF" transform="translate(90.304501, 269.380139) rotate(22.000000) translate(-90.304501, -269.380139) " points="90.3045009 270.996058 88.6882544 269.380139 90.3045009 267.764221 91.9207474 269.380139"></polygon> + <polygon id="Stroke-132" transform="translate(90.304501, 269.380139) rotate(22.000000) translate(-90.304501, -269.380139) " points="90.3045009 270.996058 88.6882544 269.380139 90.3045009 267.764221 91.9207474 269.380139"></polygon> + <polygon id="Fill-134" fill-opacity="0.6" fill="#A3B1BF" transform="translate(91.756130, 272.798999) rotate(22.000000) translate(-91.756130, -272.798999) " points="91.7561302 274.414918 90.1398837 272.798999 91.7561302 271.183081 93.3723767 272.798999"></polygon> + <polygon id="Stroke-136" transform="translate(91.756130, 272.798999) rotate(22.000000) translate(-91.756130, -272.798999) " points="91.7561302 274.414918 90.1398837 272.798999 91.7561302 271.183081 93.3723767 272.798999"></polygon> + <polygon id="Fill-138" fill-opacity="0.6" fill="#A3B1BF" transform="translate(93.207724, 276.217777) rotate(22.000000) translate(-93.207724, -276.217777) " points="93.2077244 277.833695 91.5914778 276.217777 93.2077244 274.601858 94.8239709 276.217777"></polygon> + <polygon id="Stroke-140" transform="translate(93.207724, 276.217777) rotate(22.000000) translate(-93.207724, -276.217777) " points="93.2077244 277.833695 91.5914778 276.217777 93.2077244 274.601858 94.8239709 276.217777"></polygon> + <polygon id="Fill-142" fill-opacity="0.6" fill="#A3B1BF" transform="translate(85.696821, 267.300663) rotate(22.000000) translate(-85.696821, -267.300663) " points="85.6968214 268.916582 84.0805749 267.300663 85.6968214 265.684744 87.313068 267.300663"></polygon> + <polygon id="Stroke-144" transform="translate(85.696821, 267.300663) rotate(22.000000) translate(-85.696821, -267.300663) " points="85.6968214 268.916582 84.0805749 267.300663 85.6968214 265.684744 87.313068 267.300663"></polygon> + <polygon id="Fill-146" fill-opacity="0.6" fill="#A3B1BF" transform="translate(87.148416, 270.719440) rotate(22.000000) translate(-87.148416, -270.719440) " points="87.1484156 272.335359 85.5321691 270.71944 87.1484156 269.103521 88.7646621 270.71944"></polygon> + <polygon id="Stroke-148" transform="translate(87.148416, 270.719440) rotate(22.000000) translate(-87.148416, -270.719440) " points="87.1484156 272.335359 85.5321691 270.71944 87.1484156 269.103521 88.7646621 270.71944"></polygon> + <polygon id="Fill-150" fill-opacity="0.6" fill="#A3B1BF" transform="translate(88.599986, 274.138276) rotate(22.000000) translate(-88.599986, -274.138276) " points="88.599986 275.754195 86.9837394 274.138276 88.599986 272.522358 90.2162325 274.138276"></polygon> + <polygon id="Stroke-152" transform="translate(88.599986, 274.138276) rotate(22.000000) translate(-88.599986, -274.138276) " points="88.599986 275.754195 86.9837394 274.138276 88.599986 272.522358 90.2162325 274.138276"></polygon> + <polygon id="Fill-154" fill-opacity="0.6" fill="#A3B1BF" transform="translate(90.051639, 277.557078) rotate(22.000000) translate(-90.051639, -277.557078) " points="90.0516391 279.172996 88.4353925 277.557078 90.0516391 275.941159 91.6678856 277.557078"></polygon> + <polygon id="Stroke-156" transform="translate(90.051639, 277.557078) rotate(22.000000) translate(-90.051639, -277.557078) " points="90.0516391 279.172996 88.4353925 277.557078 90.0516391 275.941159 91.6678856 277.557078"></polygon> + <polygon id="Fill-158" fill-opacity="0.6" fill="#A3B1BF" transform="translate(82.540736, 268.639964) rotate(22.000000) translate(-82.540736, -268.639964) " points="82.5407361 270.255882 80.9244896 268.639964 82.5407361 267.024045 84.1569826 268.639964"></polygon> + <polygon id="Stroke-160" transform="translate(82.540736, 268.639964) rotate(22.000000) translate(-82.540736, -268.639964) " points="82.5407361 270.255882 80.9244896 268.639964 82.5407361 267.024045 84.1569826 268.639964"></polygon> + <polygon id="Fill-162" fill-opacity="0.6" fill="#A3B1BF" transform="translate(83.992306, 272.058800) rotate(22.000000) translate(-83.992306, -272.058800) " points="83.9923065 273.674719 82.3760599 272.0588 83.9923065 270.442881 85.608553 272.0588"></polygon> + <polygon id="Stroke-164" transform="translate(83.992306, 272.058800) rotate(22.000000) translate(-83.992306, -272.058800) " points="83.9923065 273.674719 82.3760599 272.0588 83.9923065 270.442881 85.608553 272.0588"></polygon> + <polygon id="Fill-166" fill-opacity="0.6" fill="#A3B1BF" transform="translate(85.443901, 275.477577) rotate(22.000000) translate(-85.443901, -275.477577) " points="85.4439007 277.093496 83.8276541 275.477577 85.4439007 273.861659 87.0601472 275.477577"></polygon> + <polygon id="Stroke-168" transform="translate(85.443901, 275.477577) rotate(22.000000) translate(-85.443901, -275.477577) " points="85.4439007 277.093496 83.8276541 275.477577 85.4439007 273.861659 87.0601472 275.477577"></polygon> + <polygon id="Fill-170" fill-opacity="0.6" fill="#A3B1BF" transform="translate(86.895554, 278.896378) rotate(22.000000) translate(-86.895554, -278.896378) " points="86.8955537 280.512297 85.2793072 278.896378 86.8955537 277.28046 88.5118003 278.896378"></polygon> + <polygon id="Stroke-172" transform="translate(86.895554, 278.896378) rotate(22.000000) translate(-86.895554, -278.896378) " points="86.8955537 280.512297 85.2793072 278.896378 86.8955537 277.28046 88.5118003 278.896378"></polygon> + <polygon id="Fill-174" fill-opacity="0.6" fill="#A3B1BF" transform="translate(79.384651, 269.979265) rotate(22.000000) translate(-79.384651, -269.979265) " points="79.3846508 271.595183 77.7684043 269.979265 79.3846508 268.363346 81.0008973 269.979265"></polygon> + <polygon id="Stroke-176" transform="translate(79.384651, 269.979265) rotate(22.000000) translate(-79.384651, -269.979265) " points="79.3846508 271.595183 77.7684043 269.979265 79.3846508 268.363346 81.0008973 269.979265"></polygon> + <polygon id="Fill-178" fill-opacity="0.6" fill="#A3B1BF" transform="translate(80.836221, 273.398101) rotate(22.000000) translate(-80.836221, -273.398101) " points="80.8362212 275.01402 79.2199746 273.398101 80.8362212 271.782182 82.4524677 273.398101"></polygon> + <polygon id="Stroke-180" transform="translate(80.836221, 273.398101) rotate(22.000000) translate(-80.836221, -273.398101) " points="80.8362212 275.01402 79.2199746 273.398101 80.8362212 271.782182 82.4524677 273.398101"></polygon> + <polygon id="Fill-182" fill-opacity="0.6" fill="#A3B1BF" transform="translate(82.287815, 276.816878) rotate(22.000000) translate(-82.287815, -276.816878) " points="82.2878153 278.432797 80.6715688 276.816878 82.2878153 275.20096 83.9040619 276.816878"></polygon> + <polygon id="Stroke-184" transform="translate(82.287815, 276.816878) rotate(22.000000) translate(-82.287815, -276.816878) " points="82.2878153 278.432797 80.6715688 276.816878 82.2878153 275.20096 83.9040619 276.816878"></polygon> + <polygon id="Fill-186" fill-opacity="0.6" fill="#A3B1BF" transform="translate(83.739445, 280.235738) rotate(22.000000) translate(-83.739445, -280.235738) " points="83.7394446 281.851657 82.1231981 280.235738 83.7394446 278.61982 85.3556912 280.235738"></polygon> + <polygon id="Stroke-188" transform="translate(83.739445, 280.235738) rotate(22.000000) translate(-83.739445, -280.235738) " points="83.7394446 281.851657 82.1231981 280.235738 83.7394446 278.61982 85.3556912 280.235738"></polygon> + <polygon id="Fill-190" fill-opacity="0.6" fill="#A3B1BF" transform="translate(76.228483, 271.318601) rotate(22.000000) translate(-76.228483, -271.318601) " points="76.2284828 272.934519 74.6122362 271.318601 76.2284828 269.702682 77.8447293 271.318601"></polygon> + <polygon id="Stroke-192" transform="translate(76.228483, 271.318601) rotate(22.000000) translate(-76.228483, -271.318601) " points="76.2284828 272.934519 74.6122362 271.318601 76.2284828 269.702682 77.8447293 271.318601"></polygon> + <polygon id="Fill-194" fill-opacity="0.6" fill="#A3B1BF" transform="translate(77.680136, 274.737402) rotate(22.000000) translate(-77.680136, -274.737402) " points="77.6801358 276.353321 76.0638893 274.737402 77.6801358 273.121483 79.2963824 274.737402"></polygon> + <polygon id="Stroke-196" transform="translate(77.680136, 274.737402) rotate(22.000000) translate(-77.680136, -274.737402) " points="77.6801358 276.353321 76.0638893 274.737402 77.6801358 273.121483 79.2963824 274.737402"></polygon> + <polygon id="Fill-198" fill-opacity="0.6" fill="#A3B1BF" transform="translate(79.131730, 278.156179) rotate(22.000000) translate(-79.131730, -278.156179) " points="79.13173 279.772098 77.5154835 278.156179 79.13173 276.540261 80.7479765 278.156179"></polygon> + <polygon id="Stroke-200" transform="translate(79.131730, 278.156179) rotate(22.000000) translate(-79.131730, -278.156179) " points="79.13173 279.772098 77.5154835 278.156179 79.13173 276.540261 80.7479765 278.156179"></polygon> + <polygon id="Fill-202" fill-opacity="0.6" fill="#A3B1BF" transform="translate(80.583359, 281.575039) rotate(22.000000) translate(-80.583359, -281.575039) " points="80.5833593 283.190958 78.9671128 281.575039 80.5833593 279.959121 82.1996058 281.575039"></polygon> + <polygon id="Stroke-204" transform="translate(80.583359, 281.575039) rotate(22.000000) translate(-80.583359, -281.575039) " points="80.5833593 283.190958 78.9671128 281.575039 80.5833593 279.959121 82.1996058 281.575039"></polygon> + <polygon id="Fill-206" fill-opacity="0.6" fill="#A3B1BF" transform="translate(96.455246, 283.866302) rotate(22.000000) translate(-96.455246, -283.866302) " points="96.4552463 285.48222 94.8389998 283.866302 96.4552463 282.250383 98.0714929 283.866302"></polygon> + <polygon id="Stroke-208" transform="translate(96.455246, 283.866302) rotate(22.000000) translate(-96.455246, -283.866302) " points="96.4552463 285.48222 94.8389998 283.866302 96.4552463 282.250383 98.0714929 283.866302"></polygon> + <polygon id="Fill-210" fill-opacity="0.6" fill="#A3B1BF" transform="translate(97.906840, 287.285079) rotate(22.000000) translate(-97.906840, -287.285079) " points="97.9068405 288.900998 96.290594 287.285079 97.9068405 285.66916 99.523087 287.285079"></polygon> + <polygon id="Stroke-212" transform="translate(97.906840, 287.285079) rotate(22.000000) translate(-97.906840, -287.285079) " points="97.9068405 288.900998 96.290594 287.285079 97.9068405 285.66916 99.523087 287.285079"></polygon> + <polygon id="Fill-214" fill-opacity="0.6" fill="#A3B1BF" transform="translate(99.358435, 290.703856) rotate(22.000000) translate(-99.358435, -290.703856) " points="99.3584347 292.319775 97.7421881 290.703856 99.3584347 289.087938 100.974681 290.703856"></polygon> + <polygon id="Stroke-216" transform="translate(99.358435, 290.703856) rotate(22.000000) translate(-99.358435, -290.703856) " points="99.3584347 292.319775 97.7421881 290.703856 99.3584347 289.087938 100.974681 290.703856"></polygon> + <polygon id="Fill-218" fill-opacity="0.6" fill="#A3B1BF" transform="translate(100.810064, 294.122716) rotate(22.000000) translate(-100.810064, -294.122716) " points="100.810064 295.738635 99.1938174 294.122716 100.810064 292.506798 102.42631 294.122716"></polygon> + <polygon id="Stroke-220" transform="translate(100.810064, 294.122716) rotate(22.000000) translate(-100.810064, -294.122716) " points="100.810064 295.738635 99.1938174 294.122716 100.810064 292.506798 102.42631 294.122716"></polygon> + <polygon id="Fill-222" fill-opacity="0.6" fill="#A3B1BF" transform="translate(93.299102, 285.205579) rotate(22.000000) translate(-93.299102, -285.205579) " points="93.2991021 286.821497 91.6828556 285.205579 93.2991021 283.58966 94.9153486 285.205579"></polygon> + <polygon id="Stroke-224" transform="translate(93.299102, 285.205579) rotate(22.000000) translate(-93.299102, -285.205579) " points="93.2991021 286.821497 91.6828556 285.205579 93.2991021 283.58966 94.9153486 285.205579"></polygon> + <polygon id="Fill-226" fill-opacity="0.6" fill="#A3B1BF" transform="translate(94.750755, 288.624380) rotate(22.000000) translate(-94.750755, -288.624380) " points="94.7507552 290.240299 93.1345086 288.62438 94.7507552 287.008461 96.3670017 288.62438"></polygon> + <polygon id="Stroke-228" transform="translate(94.750755, 288.624380) rotate(22.000000) translate(-94.750755, -288.624380) " points="94.7507552 290.240299 93.1345086 288.62438 94.7507552 287.008461 96.3670017 288.62438"></polygon> + <polygon id="Fill-230" fill-opacity="0.6" fill="#A3B1BF" transform="translate(96.202326, 292.043216) rotate(22.000000) translate(-96.202326, -292.043216) " points="96.2023255 293.659135 94.586079 292.043216 96.2023255 290.427297 97.8185721 292.043216"></polygon> + <polygon id="Stroke-232" transform="translate(96.202326, 292.043216) rotate(22.000000) translate(-96.202326, -292.043216) " points="96.2023255 293.659135 94.586079 292.043216 96.2023255 290.427297 97.8185721 292.043216"></polygon> + <polygon id="Fill-234" fill-opacity="0.6" fill="#A3B1BF" transform="translate(97.653979, 295.462017) rotate(22.000000) translate(-97.653979, -295.462017) " points="97.6539786 297.077936 96.0377321 295.462017 97.6539786 293.846099 99.2702252 295.462017"></polygon> + <polygon id="Stroke-236" transform="translate(97.653979, 295.462017) rotate(22.000000) translate(-97.653979, -295.462017) " points="97.6539786 297.077936 96.0377321 295.462017 97.6539786 293.846099 99.2702252 295.462017"></polygon> + <polygon id="Fill-238" fill-opacity="0.6" fill="#A3B1BF" transform="translate(90.143017, 286.544880) rotate(22.000000) translate(-90.143017, -286.544880) " points="90.1430168 288.160798 88.5267702 286.54488 90.1430168 284.928961 91.7592633 286.54488"></polygon> + <polygon id="Stroke-240" transform="translate(90.143017, 286.544880) rotate(22.000000) translate(-90.143017, -286.544880) " points="90.1430168 288.160798 88.5267702 286.54488 90.1430168 284.928961 91.7592633 286.54488"></polygon> + <polygon id="Fill-242" fill-opacity="0.6" fill="#A3B1BF" transform="translate(91.594670, 289.963681) rotate(22.000000) translate(-91.594670, -289.963681) " points="91.5946698 291.5796 89.9784233 289.963681 91.5946698 288.347762 93.2109164 289.963681"></polygon> + <polygon id="Stroke-244" transform="translate(91.594670, 289.963681) rotate(22.000000) translate(-91.594670, -289.963681) " points="91.5946698 291.5796 89.9784233 289.963681 91.5946698 288.347762 93.2109164 289.963681"></polygon> + <polygon id="Fill-246" fill-opacity="0.6" fill="#A3B1BF" transform="translate(93.046240, 293.382517) rotate(22.000000) translate(-93.046240, -293.382517) " points="93.0462402 294.998436 91.4299937 293.382517 93.0462402 291.766598 94.6624868 293.382517"></polygon> + <polygon id="Stroke-248" transform="translate(93.046240, 293.382517) rotate(22.000000) translate(-93.046240, -293.382517) " points="93.0462402 294.998436 91.4299937 293.382517 93.0462402 291.766598 94.6624868 293.382517"></polygon> + <polygon id="Fill-250" fill-opacity="0.6" fill="#A3B1BF" transform="translate(94.497893, 296.801318) rotate(22.000000) translate(-94.497893, -296.801318) " points="94.4978933 298.417237 92.8816468 296.801318 94.4978933 295.1854 96.1141398 296.801318"></polygon> + <polygon id="Stroke-252" transform="translate(94.497893, 296.801318) rotate(22.000000) translate(-94.497893, -296.801318) " points="94.4978933 298.417237 92.8816468 296.801318 94.4978933 295.1854 96.1141398 296.801318"></polygon> + <polygon id="Fill-254" fill-opacity="0.6" fill="#A3B1BF" transform="translate(86.986931, 287.884181) rotate(22.000000) translate(-86.986931, -287.884181) " points="86.9869315 289.500099 85.3706849 287.884181 86.9869315 286.268262 88.603178 287.884181"></polygon> + <polygon id="Stroke-256" transform="translate(86.986931, 287.884181) rotate(22.000000) translate(-86.986931, -287.884181) " points="86.9869315 289.500099 85.3706849 287.884181 86.9869315 286.268262 88.603178 287.884181"></polygon> + <polygon id="Fill-258" fill-opacity="0.6" fill="#A3B1BF" transform="translate(88.438585, 291.302982) rotate(22.000000) translate(-88.438585, -291.302982) " points="88.4385845 292.9189 86.822338 291.302982 88.4385845 289.687063 90.0548311 291.302982"></polygon> + <polygon id="Stroke-260" transform="translate(88.438585, 291.302982) rotate(22.000000) translate(-88.438585, -291.302982) " points="88.4385845 292.9189 86.822338 291.302982 88.4385845 289.687063 90.0548311 291.302982"></polygon> + <polygon id="Fill-262" fill-opacity="0.6" fill="#A3B1BF" transform="translate(89.890155, 294.721818) rotate(22.000000) translate(-89.890155, -294.721818) " points="89.8901549 296.337737 88.2739084 294.721818 89.8901549 293.105899 91.5064014 294.721818"></polygon> + <polygon id="Stroke-264" transform="translate(89.890155, 294.721818) rotate(22.000000) translate(-89.890155, -294.721818) " points="89.8901549 296.337737 88.2739084 294.721818 89.8901549 293.105899 91.5064014 294.721818"></polygon> + <polygon id="Fill-266" fill-opacity="0.6" fill="#A3B1BF" transform="translate(91.341749, 298.140595) rotate(22.000000) translate(-91.341749, -298.140595) " points="91.3417491 299.756514 89.7255025 298.140595 91.3417491 296.524677 92.9579956 298.140595"></polygon> + <polygon id="Stroke-268" transform="translate(91.341749, 298.140595) rotate(22.000000) translate(-91.341749, -298.140595) " points="91.3417491 299.756514 89.7255025 298.140595 91.3417491 296.524677 92.9579956 298.140595"></polygon> + <polygon id="Fill-270" fill-opacity="0.6" fill="#A3B1BF" transform="translate(83.830846, 289.223482) rotate(22.000000) translate(-83.830846, -289.223482) " points="83.8308461 290.8394 82.2145996 289.223482 83.8308461 287.607563 85.4470927 289.223482"></polygon> + <polygon id="Stroke-272" transform="translate(83.830846, 289.223482) rotate(22.000000) translate(-83.830846, -289.223482) " points="82.2145996 289.223482 83.8308461 287.607563 85.4470927 289.223482 83.8308461 290.8394"></polygon> + <polygon id="Fill-274" fill-opacity="0.6" fill="#A3B1BF" transform="translate(85.282417, 292.642318) rotate(22.000000) translate(-85.282417, -292.642318) " points="85.2824165 294.258236 83.66617 292.642318 85.2824165 291.026399 86.898663 292.642318"></polygon> + <polygon id="Stroke-276" transform="translate(85.282417, 292.642318) rotate(22.000000) translate(-85.282417, -292.642318) " points="85.2824165 294.258236 83.66617 292.642318 85.2824165 291.026399 86.898663 292.642318"></polygon> + <polygon id="Fill-278" fill-opacity="0.6" fill="#A3B1BF" transform="translate(86.734070, 296.061119) rotate(22.000000) translate(-86.734070, -296.061119) " points="86.7340696 297.677038 85.1178231 296.061119 86.7340696 294.4452 88.3503161 296.061119"></polygon> + <polygon id="Stroke-280" transform="translate(86.734070, 296.061119) rotate(22.000000) translate(-86.734070, -296.061119) " points="86.7340696 297.677038 85.1178231 296.061119 86.7340696 294.4452 88.3503161 296.061119"></polygon> + <polygon id="Fill-282" fill-opacity="0.6" fill="#A3B1BF" transform="translate(88.185664, 299.479896) rotate(22.000000) translate(-88.185664, -299.479896) " points="88.1856638 301.095815 86.5694172 299.479896 88.1856638 297.863978 89.8019103 299.479896"></polygon> + <polygon id="Stroke-284" transform="translate(88.185664, 299.479896) rotate(22.000000) translate(-88.185664, -299.479896) " points="88.1856638 301.095815 86.5694172 299.479896 88.1856638 297.863978 89.8019103 299.479896"></polygon> + <polygon id="Fill-286" transform="translate(37.779995, 163.402514) rotate(22.000000) translate(-37.779995, -163.402514) " points="51.9961666 192.018058 66.401345 177.615802 23.5644587 134.78697 9.15864501 149.189862"></polygon> + <polygon id="Fill-290" transform="translate(50.400318, 195.682118) rotate(22.000000) translate(-50.400318, -195.682118) " points="54.1737837 198.070743 48.0112085 191.909418 46.6268527 193.293493 52.7894279 199.454818"></polygon> + <polygon id="Stroke-292" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(50.400318, 195.682118) rotate(22.000000) translate(-50.400318, -195.682118) " points="54.1737837 198.070743 48.0112085 191.909418 46.6268527 193.293493 52.7894279 199.454818"></polygon> + <polygon id="Fill-294" fill-opacity="0.8" fill="#A3B1BF" transform="translate(52.603532, 200.871447) rotate(22.000000) translate(-52.603532, -200.871447) " points="52.712807 203.746308 55.4789773 200.980699 52.4942579 197.996585 49.7280876 200.762195"></polygon> + <polygon id="Stroke-296" stroke="#A3B1BF" stroke-width="1.62" fill="#FFFFFF" stroke-linejoin="round" transform="translate(52.603532, 200.871447) rotate(22.000000) translate(-52.603532, -200.871447) " points="52.712807 203.746308 55.4789773 200.980699 52.4942579 197.996585 49.7280876 200.762195"></polygon> + <polygon id="Fill-298" fill-opacity="0.8" fill="#A3B1BF" transform="translate(53.983257, 183.836778) rotate(22.000000) translate(-53.983257, -183.836778) " points="52.3670108 183.836778 53.9832574 185.452697 55.5995039 183.836778 53.9832574 182.22086"></polygon> + <polygon id="Stroke-300" transform="translate(53.983257, 183.836778) rotate(22.000000) translate(-53.983257, -183.836778) " points="52.3670108 183.836778 53.9832574 185.452697 55.5995039 183.836778 53.9832574 182.22086"></polygon> + <polygon id="Fill-302" fill-opacity="0.8" fill="#A3B1BF" transform="translate(52.531663, 180.418001) rotate(22.000000) translate(-52.531663, -180.418001) " points="50.9154167 180.418001 52.5316632 182.03392 54.1479097 180.418001 52.5316632 178.802082"></polygon> + <polygon id="Stroke-304" transform="translate(52.531663, 180.418001) rotate(22.000000) translate(-52.531663, -180.418001) " points="50.9154167 180.418001 52.5316632 182.03392 54.1479097 180.418001 52.5316632 178.802082"></polygon> + <polygon id="Fill-306" fill-opacity="0.8" fill="#A3B1BF" transform="translate(51.080034, 176.999141) rotate(22.000000) translate(-51.080034, -176.999141) " points="49.4637874 176.999141 51.0800339 178.61506 52.6962805 176.999141 51.0800339 175.383222"></polygon> + <polygon id="Stroke-308" transform="translate(51.080034, 176.999141) rotate(22.000000) translate(-51.080034, -176.999141) " points="49.4637874 176.999141 51.0800339 178.61506 52.6962805 176.999141 51.0800339 175.383222"></polygon> + <polygon id="Fill-310" fill-opacity="0.8" fill="#A3B1BF" transform="translate(49.628440, 173.580364) rotate(22.000000) translate(-49.628440, -173.580364) " points="48.0121932 173.580364 49.6284397 175.196282 51.2446863 173.580364 49.6284397 171.964445"></polygon> + <polygon id="Stroke-312" transform="translate(49.628440, 173.580364) rotate(22.000000) translate(-49.628440, -173.580364) " points="48.0121932 173.580364 49.6284397 175.196282 51.2446863 173.580364 49.6284397 171.964445"></polygon> + <polygon id="Fill-314" fill-opacity="0.8" fill="#A3B1BF" transform="translate(50.827172, 185.176079) rotate(22.000000) translate(-50.827172, -185.176079) " points="49.2109255 185.176079 50.8271721 186.791998 52.4434186 185.176079 50.8271721 183.560161"></polygon> + <polygon id="Stroke-316" transform="translate(50.827172, 185.176079) rotate(22.000000) translate(-50.827172, -185.176079) " points="49.2109255 185.176079 50.8271721 186.791998 52.4434186 185.176079 50.8271721 183.560161"></polygon> + <polygon id="Fill-318" fill-opacity="0.8" fill="#A3B1BF" transform="translate(49.375578, 181.757302) rotate(22.000000) translate(-49.375578, -181.757302) " points="47.7593313 181.757302 49.3755779 183.373221 50.9918244 181.757302 49.3755779 180.141383"></polygon> + <polygon id="Stroke-320" transform="translate(49.375578, 181.757302) rotate(22.000000) translate(-49.375578, -181.757302) " points="47.7593313 181.757302 49.3755779 183.373221 50.9918244 181.757302 49.3755779 180.141383"></polygon> + <polygon id="Fill-322" fill-opacity="0.8" fill="#A3B1BF" transform="translate(47.923949, 178.338442) rotate(22.000000) translate(-47.923949, -178.338442) " points="46.3077021 178.338442 47.9239486 179.954361 49.5401951 178.338442 47.9239486 176.722523"></polygon> + <polygon id="Stroke-324" transform="translate(47.923949, 178.338442) rotate(22.000000) translate(-47.923949, -178.338442) " points="46.3077021 178.338442 47.9239486 179.954361 49.5401951 178.338442 47.9239486 176.722523"></polygon> + <polygon id="Fill-326" fill-opacity="0.8" fill="#A3B1BF" transform="translate(46.472354, 174.919665) rotate(22.000000) translate(-46.472354, -174.919665) " points="44.8561079 174.919665 46.4723544 176.535583 48.088601 174.919665 46.4723544 173.303746"></polygon> + <polygon id="Stroke-328" transform="translate(46.472354, 174.919665) rotate(22.000000) translate(-46.472354, -174.919665) " points="44.8561079 174.919665 46.4723544 176.535583 48.088601 174.919665 46.4723544 173.303746"></polygon> + <polygon id="Fill-330" fill-opacity="0.8" fill="#A3B1BF" transform="translate(47.671087, 186.515380) rotate(22.000000) translate(-47.671087, -186.515380) " points="46.0548402 186.51538 47.6710867 188.131299 49.2873333 186.51538 47.6710867 184.899461"></polygon> + <polygon id="Stroke-332" transform="translate(47.671087, 186.515380) rotate(22.000000) translate(-47.671087, -186.515380) " points="46.0548402 186.51538 47.6710867 188.131299 49.2873333 186.51538 47.6710867 184.899461"></polygon> + <polygon id="Fill-334" fill-opacity="0.8" fill="#A3B1BF" transform="translate(46.219493, 183.096603) rotate(22.000000) translate(-46.219493, -183.096603) " points="44.603246 183.096603 46.2194926 184.712521 47.8357391 183.096603 46.2194926 181.480684"></polygon> + <polygon id="Stroke-336" transform="translate(46.219493, 183.096603) rotate(22.000000) translate(-46.219493, -183.096603) " points="44.603246 183.096603 46.2194926 184.712521 47.8357391 183.096603 46.2194926 181.480684"></polygon> + <polygon id="Fill-338" fill-opacity="0.8" fill="#A3B1BF" transform="translate(44.767839, 179.677802) rotate(22.000000) translate(-44.767839, -179.677802) " points="43.1515929 179.677802 44.7678395 181.29372 46.384086 179.677802 44.7678395 178.061883"></polygon> + <polygon id="Stroke-340" transform="translate(44.767839, 179.677802) rotate(22.000000) translate(-44.767839, -179.677802) " points="43.1515929 179.677802 44.7678395 181.29372 46.384086 179.677802 44.7678395 178.061883"></polygon> + <polygon id="Fill-342" fill-opacity="0.8" fill="#A3B1BF" transform="translate(43.316269, 176.258965) rotate(22.000000) translate(-43.316269, -176.258965) " points="41.7000226 176.258965 43.3162691 177.874884 44.9325156 176.258965 43.3162691 174.643047"></polygon> + <polygon id="Stroke-344" transform="translate(43.316269, 176.258965) rotate(22.000000) translate(-43.316269, -176.258965) " points="41.7000226 176.258965 43.3162691 177.874884 44.9325156 176.258965 43.3162691 174.643047"></polygon> + <polygon id="Fill-346" fill-opacity="0.8" fill="#A3B1BF" transform="translate(44.514978, 187.854740) rotate(22.000000) translate(-44.514978, -187.854740) " points="42.8987311 187.85474 44.5149776 189.470659 46.1312242 187.85474 44.5149776 186.238821"></polygon> + <polygon id="Stroke-348" transform="translate(44.514978, 187.854740) rotate(22.000000) translate(-44.514978, -187.854740) " points="42.8987311 187.85474 44.5149776 189.470659 46.1312242 187.85474 44.5149776 186.238821"></polygon> + <polygon id="Fill-350" fill-opacity="0.8" fill="#A3B1BF" transform="translate(43.063348, 184.435880) rotate(22.000000) translate(-43.063348, -184.435880) " points="41.4471018 184.43588 43.0633483 186.051799 44.6795949 184.43588 43.0633483 182.819961"></polygon> + <polygon id="Stroke-352" transform="translate(43.063348, 184.435880) rotate(22.000000) translate(-43.063348, -184.435880) " points="41.4471018 184.43588 43.0633483 186.051799 44.6795949 184.43588 43.0633483 182.819961"></polygon> + <polygon id="Fill-354" fill-opacity="0.8" fill="#A3B1BF" transform="translate(41.611754, 181.017103) rotate(22.000000) translate(-41.611754, -181.017103) " points="39.9955076 181.017103 41.6117542 182.633021 43.2280007 181.017103 41.6117542 179.401184"></polygon> + <polygon id="Stroke-356" transform="translate(41.611754, 181.017103) rotate(22.000000) translate(-41.611754, -181.017103) " points="39.9955076 181.017103 41.6117542 182.633021 43.2280007 181.017103 41.6117542 179.401184"></polygon> + <polygon id="Fill-358" fill-opacity="0.8" fill="#A3B1BF" transform="translate(40.160184, 177.598266) rotate(22.000000) translate(-40.160184, -177.598266) " points="38.5439373 177.598266 40.1601838 179.214185 41.7764303 177.598266 40.1601838 175.982348"></polygon> + <polygon id="Stroke-360" transform="translate(40.160184, 177.598266) rotate(22.000000) translate(-40.160184, -177.598266) " points="38.5439373 177.598266 40.1601838 179.214185 41.7764303 177.598266 40.1601838 175.982348"></polygon> + <polygon id="Fill-362" fill-opacity="0.8" fill="#A3B1BF" transform="translate(41.358892, 189.194041) rotate(22.000000) translate(-41.358892, -189.194041) " points="39.7426458 189.194041 41.3588923 190.80996 42.9751388 189.194041 41.3588923 187.578122"></polygon> + <polygon id="Stroke-364" transform="translate(41.358892, 189.194041) rotate(22.000000) translate(-41.358892, -189.194041) " points="39.7426458 189.194041 41.3588923 190.80996 42.9751388 189.194041 41.3588923 187.578122"></polygon> + <polygon id="Fill-366" fill-opacity="0.8" fill="#A3B1BF" transform="translate(39.907263, 185.775181) rotate(22.000000) translate(-39.907263, -185.775181) " points="38.2910165 185.775181 39.907263 187.3911 41.5235095 185.775181 39.907263 184.159262"></polygon> + <polygon id="Stroke-368" transform="translate(39.907263, 185.775181) rotate(22.000000) translate(-39.907263, -185.775181) " points="38.2910165 185.775181 39.907263 187.3911 41.5235095 185.775181 39.907263 184.159262"></polygon> + <polygon id="Fill-370" fill-opacity="0.8" fill="#A3B1BF" transform="translate(38.455669, 182.356404) rotate(22.000000) translate(-38.455669, -182.356404) " points="36.8394223 182.356404 38.4556688 183.972322 40.0719154 182.356404 38.4556688 180.740485"></polygon> + <polygon id="Stroke-372" transform="translate(38.455669, 182.356404) rotate(22.000000) translate(-38.455669, -182.356404) " points="36.8394223 182.356404 38.4556688 183.972322 40.0719154 182.356404 38.4556688 180.740485"></polygon> + <polygon id="Fill-374" fill-opacity="0.8" fill="#A3B1BF" transform="translate(37.004016, 178.937602) rotate(22.000000) translate(-37.004016, -178.937602) " points="35.3877692 178.937602 37.0040158 180.553521 38.6202623 178.937602 37.0040158 177.321684"></polygon> + <polygon id="Stroke-376" transform="translate(37.004016, 178.937602) rotate(22.000000) translate(-37.004016, -178.937602) " points="35.3877692 178.937602 37.0040158 180.553521 38.6202623 178.937602 37.0040158 177.321684"></polygon> + <polygon id="Fill-378" fill-opacity="0.8" fill="#A3B1BF" transform="translate(46.380894, 165.931897) rotate(22.000000) translate(-46.380894, -165.931897) " points="44.7646475 165.931897 46.380894 167.547816 47.9971405 165.931897 46.380894 164.315979"></polygon> + <polygon id="Stroke-380" transform="translate(46.380894, 165.931897) rotate(22.000000) translate(-46.380894, -165.931897) " points="44.7646475 165.931897 46.380894 167.547816 47.9971405 165.931897 46.380894 164.315979"></polygon> + <polygon id="Fill-382" fill-opacity="0.8" fill="#A3B1BF" transform="translate(44.929324, 162.513061) rotate(22.000000) translate(-44.929324, -162.513061) " points="43.3130771 162.513061 44.9293236 164.12898 46.5455702 162.513061 44.9293236 160.897143"></polygon> + <polygon id="Stroke-384" transform="translate(44.929324, 162.513061) rotate(22.000000) translate(-44.929324, -162.513061) " points="43.3130771 162.513061 44.9293236 164.12898 46.5455702 162.513061 44.9293236 160.897143"></polygon> + <polygon id="Fill-386" fill-opacity="0.8" fill="#A3B1BF" transform="translate(43.477729, 159.094284) rotate(22.000000) translate(-43.477729, -159.094284) " points="41.8614829 159.094284 43.4777295 160.710203 45.093976 159.094284 43.4777295 157.478365"></polygon> + <polygon id="Stroke-388" transform="translate(43.477729, 159.094284) rotate(22.000000) translate(-43.477729, -159.094284) " points="41.8614829 159.094284 43.4777295 160.710203 45.093976 159.094284 43.4777295 157.478365"></polygon> + <polygon id="Fill-390" fill-opacity="0.8" fill="#A3B1BF" transform="translate(42.026100, 155.675424) rotate(22.000000) translate(-42.026100, -155.675424) " points="40.4098536 155.675424 42.0261002 157.291342 43.6423467 155.675424 42.0261002 154.059505"></polygon> + <polygon id="Stroke-392" transform="translate(42.026100, 155.675424) rotate(22.000000) translate(-42.026100, -155.675424) " points="40.4098536 155.675424 42.0261002 157.291342 43.6423467 155.675424 42.0261002 154.059505"></polygon> + <polygon id="Fill-394" fill-opacity="0.8" fill="#A3B1BF" transform="translate(43.224809, 167.271198) rotate(22.000000) translate(-43.224809, -167.271198) " points="41.6085622 167.271198 43.2248087 168.887117 44.8410552 167.271198 43.2248087 165.65528"></polygon> + <polygon id="Stroke-396" transform="translate(43.224809, 167.271198) rotate(22.000000) translate(-43.224809, -167.271198) " points="41.6085622 167.271198 43.2248087 168.887117 44.8410552 167.271198 43.2248087 165.65528"></polygon> + <polygon id="Fill-398" fill-opacity="0.8" fill="#A3B1BF" transform="translate(41.773238, 163.852362) rotate(22.000000) translate(-41.773238, -163.852362) " points="40.1569918 163.852362 41.7732383 165.468281 43.3894848 163.852362 41.7732383 162.236443"></polygon> + <polygon id="Stroke-400" transform="translate(41.773238, 163.852362) rotate(22.000000) translate(-41.773238, -163.852362) " points="40.1569918 163.852362 41.7732383 165.468281 43.3894848 163.852362 41.7732383 162.236443"></polygon> + <polygon id="Fill-402" fill-opacity="0.8" fill="#A3B1BF" transform="translate(40.321585, 160.433561) rotate(22.000000) translate(-40.321585, -160.433561) " points="38.7053387 160.433561 40.3215852 162.04948 41.9378318 160.433561 40.3215852 158.817642"></polygon> + <polygon id="Stroke-404" transform="translate(40.321585, 160.433561) rotate(22.000000) translate(-40.321585, -160.433561) " points="38.7053387 160.433561 40.3215852 162.04948 41.9378318 160.433561 40.3215852 158.817642"></polygon> + <polygon id="Fill-406" fill-opacity="0.8" fill="#A3B1BF" transform="translate(38.869991, 157.014784) rotate(22.000000) translate(-38.869991, -157.014784) " points="37.2537445 157.014784 38.8699911 158.630702 40.4862376 157.014784 38.8699911 155.398865"></polygon> + <polygon id="Stroke-408" transform="translate(38.869991, 157.014784) rotate(22.000000) translate(-38.869991, -157.014784) " points="37.2537445 157.014784 38.8699911 158.630702 40.4862376 157.014784 38.8699911 155.398865"></polygon> + <polygon id="Fill-410" fill-opacity="0.8" fill="#A3B1BF" transform="translate(40.068723, 168.610499) rotate(22.000000) translate(-40.068723, -168.610499) " points="38.4524768 168.610499 40.0687234 170.226418 41.6849699 168.610499 40.0687234 166.994581"></polygon> + <polygon id="Stroke-412" transform="translate(40.068723, 168.610499) rotate(22.000000) translate(-40.068723, -168.610499) " points="38.4524768 168.610499 40.0687234 170.226418 41.6849699 168.610499 40.0687234 166.994581"></polygon> + <polygon id="Fill-414" fill-opacity="0.8" fill="#A3B1BF" transform="translate(38.617129, 165.191722) rotate(22.000000) translate(-38.617129, -165.191722) " points="37.0008827 165.191722 38.6171292 166.807641 40.2333757 165.191722 38.6171292 163.575803"></polygon> + <polygon id="Stroke-416" transform="translate(38.617129, 165.191722) rotate(22.000000) translate(-38.617129, -165.191722) " points="37.0008827 165.191722 38.6171292 166.807641 40.2333757 165.191722 38.6171292 163.575803"></polygon> + <polygon id="Fill-418" fill-opacity="0.8" fill="#A3B1BF" transform="translate(37.165500, 161.772862) rotate(22.000000) translate(-37.165500, -161.772862) " points="35.5492534 161.772862 37.1654999 163.388781 38.7817464 161.772862 37.1654999 160.156943"></polygon> + <polygon id="Stroke-420" transform="translate(37.165500, 161.772862) rotate(22.000000) translate(-37.165500, -161.772862) " points="35.5492534 161.772862 37.1654999 163.388781 38.7817464 161.772862 37.1654999 160.156943"></polygon> + <polygon id="Fill-422" fill-opacity="0.8" fill="#A3B1BF" transform="translate(35.713906, 158.354085) rotate(22.000000) translate(-35.713906, -158.354085) " points="34.0976592 158.354085 35.7139057 159.970003 37.3301523 158.354085 35.7139057 156.738166"></polygon> + <polygon id="Stroke-424" transform="translate(35.713906, 158.354085) rotate(22.000000) translate(-35.713906, -158.354085) " points="34.0976592 158.354085 35.7139057 159.970003 37.3301523 158.354085 35.7139057 156.738166"></polygon> + <polygon id="Fill-426" fill-opacity="0.8" fill="#A3B1BF" transform="translate(36.912638, 169.949800) rotate(22.000000) translate(-36.912638, -169.949800) " points="35.2963915 169.9498 36.912638 171.565719 38.5288846 169.9498 36.912638 168.333882"></polygon> + <polygon id="Stroke-428" transform="translate(36.912638, 169.949800) rotate(22.000000) translate(-36.912638, -169.949800) " points="35.2963915 169.9498 36.912638 171.565719 38.5288846 169.9498 36.912638 168.333882"></polygon> + <polygon id="Fill-430" fill-opacity="0.8" fill="#A3B1BF" transform="translate(35.461068, 166.530964) rotate(22.000000) translate(-35.461068, -166.530964) " points="33.8448211 166.530964 35.4610677 168.146883 37.0773142 166.530964 35.4610677 164.915045"></polygon> + <polygon id="Stroke-432" transform="translate(35.461068, 166.530964) rotate(22.000000) translate(-35.461068, -166.530964) " points="33.8448211 166.530964 35.4610677 168.146883 37.0773142 166.530964 35.4610677 164.915045"></polygon> + <polygon id="Fill-434" fill-opacity="0.8" fill="#A3B1BF" transform="translate(34.009415, 163.112163) rotate(22.000000) translate(-34.009415, -163.112163) " points="32.3931681 163.112163 34.0094146 164.728081 35.6256611 163.112163 34.0094146 161.496244"></polygon> + <polygon id="Stroke-436" transform="translate(34.009415, 163.112163) rotate(22.000000) translate(-34.009415, -163.112163) " points="32.3931681 163.112163 34.0094146 164.728081 35.6256611 163.112163 34.0094146 161.496244"></polygon> + <polygon id="Fill-438" fill-opacity="0.8" fill="#A3B1BF" transform="translate(32.557820, 159.693385) rotate(22.000000) translate(-32.557820, -159.693385) " points="30.9415739 159.693385 32.5578204 161.309304 34.174067 159.693385 32.5578204 158.077467"></polygon> + <polygon id="Stroke-440" transform="translate(32.557820, 159.693385) rotate(22.000000) translate(-32.557820, -159.693385) " points="30.9415739 159.693385 32.5578204 161.309304 34.174067 159.693385 32.5578204 158.077467"></polygon> + <polygon id="Fill-442" fill-opacity="0.8" fill="#A3B1BF" transform="translate(33.756553, 171.289101) rotate(22.000000) translate(-33.756553, -171.289101) " points="32.1403062 171.289101 33.7565527 172.90502 35.3727993 171.289101 33.7565527 169.673182"></polygon> + <polygon id="Stroke-444" transform="translate(33.756553, 171.289101) rotate(22.000000) translate(-33.756553, -171.289101) " points="32.1403062 171.289101 33.7565527 172.90502 35.3727993 171.289101 33.7565527 169.673182"></polygon> + <polygon id="Fill-446" fill-opacity="0.8" fill="#A3B1BF" transform="translate(32.304959, 167.870324) rotate(22.000000) translate(-32.304959, -167.870324) " points="30.688712 167.870324 32.3049586 169.486242 33.9212051 167.870324 32.3049586 166.254405"></polygon> + <polygon id="Stroke-448" transform="translate(32.304959, 167.870324) rotate(22.000000) translate(-32.304959, -167.870324) " points="30.688712 167.870324 32.3049586 169.486242 33.9212051 167.870324 32.3049586 166.254405"></polygon> + <polygon id="Fill-450" fill-opacity="0.8" fill="#A3B1BF" transform="translate(30.853329, 164.451464) rotate(22.000000) translate(-30.853329, -164.451464) " points="29.2370827 164.451464 30.8533293 166.067382 32.4695758 164.451464 30.8533293 162.835545"></polygon> + <polygon id="Stroke-452" transform="translate(30.853329, 164.451464) rotate(22.000000) translate(-30.853329, -164.451464) " points="29.2370827 164.451464 30.8533293 166.067382 32.4695758 164.451464 30.8533293 162.835545"></polygon> + <polygon id="Fill-454" fill-opacity="0.8" fill="#A3B1BF" transform="translate(29.401735, 161.032686) rotate(22.000000) translate(-29.401735, -161.032686) " points="27.7854886 161.032686 29.4017351 162.648605 31.0179816 161.032686 29.4017351 159.416768"></polygon> + <polygon id="Stroke-456" transform="translate(29.401735, 161.032686) rotate(22.000000) translate(-29.401735, -161.032686) " points="27.7854886 161.032686 29.4017351 162.648605 31.0179816 161.032686 29.4017351 159.416768"></polygon> + <polygon id="Fill-458" fill-opacity="0.8" fill="#A3B1BF" transform="translate(38.778613, 148.026981) rotate(22.000000) translate(-38.778613, -148.026981) " points="37.1623668 148.026981 38.7786133 149.6429 40.3948599 148.026981 38.7786133 146.411063"></polygon> + <polygon id="Stroke-460" transform="translate(38.778613, 148.026981) rotate(22.000000) translate(-38.778613, -148.026981) " points="37.1623668 148.026981 38.7786133 149.6429 40.3948599 148.026981 38.7786133 146.411063"></polygon> + <polygon id="Fill-462" fill-opacity="0.8" fill="#A3B1BF" transform="translate(37.326984, 144.608121) rotate(22.000000) translate(-37.326984, -144.608121) " points="35.7107375 144.608121 37.3269841 146.22404 38.9432306 144.608121 37.3269841 142.992203"></polygon> + <polygon id="Stroke-464" transform="translate(37.326984, 144.608121) rotate(22.000000) translate(-37.326984, -144.608121) " points="35.7107375 144.608121 37.3269841 146.22404 38.9432306 144.608121 37.3269841 142.992203"></polygon> + <polygon id="Fill-466" fill-opacity="0.8" fill="#A3B1BF" transform="translate(35.875390, 141.189344) rotate(22.000000) translate(-35.875390, -141.189344) " points="34.2591433 141.189344 35.8753899 142.805263 37.4916364 141.189344 35.8753899 139.573425"></polygon> + <polygon id="Stroke-468" transform="translate(35.875390, 141.189344) rotate(22.000000) translate(-35.875390, -141.189344) " points="34.2591433 141.189344 35.8753899 142.805263 37.4916364 141.189344 35.8753899 139.573425"></polygon> + <polygon id="Fill-470" fill-opacity="0.8" fill="#A3B1BF" transform="translate(34.423796, 137.770567) rotate(22.000000) translate(-34.423796, -137.770567) " points="32.8075492 137.770567 34.4237957 139.386485 36.0400422 137.770567 34.4237957 136.154648"></polygon> + <polygon id="Stroke-472" fill="#B2BECA" transform="translate(34.423796, 137.770567) rotate(22.000000) translate(-34.423796, -137.770567) " points="34.4237957 139.386485 36.0400422 137.770567 34.4237957 136.154648 32.8075492 137.770567"></polygon> + <polygon id="Fill-474" fill-opacity="0.8" fill="#A3B1BF" transform="translate(35.622528, 149.366282) rotate(22.000000) translate(-35.622528, -149.366282) " points="34.0062815 149.366282 35.622528 150.982201 37.2387746 149.366282 35.622528 147.750364"></polygon> + <polygon id="Stroke-476" transform="translate(35.622528, 149.366282) rotate(22.000000) translate(-35.622528, -149.366282) " points="34.0062815 149.366282 35.622528 150.982201 37.2387746 149.366282 35.622528 147.750364"></polygon> + <polygon id="Fill-478" fill-opacity="0.8" fill="#A3B1BF" transform="translate(34.170875, 145.947481) rotate(22.000000) translate(-34.170875, -145.947481) " points="32.5546284 145.947481 34.1708749 147.5634 35.7871215 145.947481 34.1708749 144.331563"></polygon> + <polygon id="Stroke-480" transform="translate(34.170875, 145.947481) rotate(22.000000) translate(-34.170875, -145.947481) " points="32.5546284 145.947481 34.1708749 147.5634 35.7871215 145.947481 34.1708749 144.331563"></polygon> + <polygon id="Fill-482" fill-opacity="0.8" fill="#A3B1BF" transform="translate(32.719305, 142.528645) rotate(22.000000) translate(-32.719305, -142.528645) " points="31.103058 142.528645 32.7193046 144.144564 34.3355511 142.528645 32.7193046 140.912726"></polygon> + <polygon id="Stroke-484" transform="translate(32.719305, 142.528645) rotate(22.000000) translate(-32.719305, -142.528645) " points="31.103058 142.528645 32.7193046 144.144564 34.3355511 142.528645 32.7193046 140.912726"></polygon> + <polygon id="Fill-486" fill-opacity="0.8" fill="#A3B1BF" transform="translate(31.267651, 139.109844) rotate(22.000000) translate(-31.267651, -139.109844) " points="29.651405 139.109844 31.2676515 140.725763 32.883898 139.109844 31.2676515 137.493925"></polygon> + <polygon id="Stroke-488" transform="translate(31.267651, 139.109844) rotate(22.000000) translate(-31.267651, -139.109844) " points="29.651405 139.109844 31.2676515 140.725763 32.883898 139.109844 31.2676515 137.493925"></polygon> + <polygon id="Fill-490" fill-opacity="0.8" fill="#A3B1BF" transform="translate(32.466384, 150.705559) rotate(22.000000) translate(-32.466384, -150.705559) " points="30.8501373 150.705559 32.4663838 152.321478 34.0826303 150.705559 32.4663838 149.089641"></polygon> + <polygon id="Stroke-492" transform="translate(32.466384, 150.705559) rotate(22.000000) translate(-32.466384, -150.705559) " points="30.8501373 150.705559 32.4663838 152.321478 34.0826303 150.705559 32.4663838 149.089641"></polygon> + <polygon id="Fill-494" fill-opacity="0.8" fill="#A3B1BF" transform="translate(31.014790, 147.286782) rotate(22.000000) translate(-31.014790, -147.286782) " points="29.3985431 147.286782 31.0147896 148.902701 32.6310362 147.286782 31.0147896 145.670863"></polygon> + <polygon id="Stroke-496" transform="translate(31.014790, 147.286782) rotate(22.000000) translate(-31.014790, -147.286782) " points="29.3985431 147.286782 31.0147896 148.902701 32.6310362 147.286782 31.0147896 145.670863"></polygon> + <polygon id="Fill-498" fill-opacity="0.8" fill="#A3B1BF" transform="translate(29.563219, 143.867946) rotate(22.000000) translate(-29.563219, -143.867946) " points="27.9469727 143.867946 29.5632192 145.483865 31.1794658 143.867946 29.5632192 142.252027"></polygon> + <polygon id="Stroke-500" transform="translate(29.563219, 143.867946) rotate(22.000000) translate(-29.563219, -143.867946) " points="27.9469727 143.867946 29.5632192 145.483865 31.1794658 143.867946 29.5632192 142.252027"></polygon> + <polygon id="Fill-502" fill-opacity="0.8" fill="#A3B1BF" transform="translate(28.111566, 140.449145) rotate(22.000000) translate(-28.111566, -140.449145) " points="26.4953196 140.449145 28.1115662 142.065063 29.7278127 140.449145 28.1115662 138.833226"></polygon> + <polygon id="Stroke-504" transform="translate(28.111566, 140.449145) rotate(22.000000) translate(-28.111566, -140.449145) " points="26.4953196 140.449145 28.1115662 142.065063 29.7278127 140.449145 28.1115662 138.833226"></polygon> + <polygon id="Fill-506" fill-opacity="0.8" fill="#A3B1BF" transform="translate(29.310298, 152.044860) rotate(22.000000) translate(-29.310298, -152.044860) " points="27.6940519 152.04486 29.3102985 153.660779 30.926545 152.04486 29.3102985 150.428942"></polygon> + <polygon id="Stroke-508" transform="translate(29.310298, 152.044860) rotate(22.000000) translate(-29.310298, -152.044860) " points="27.6940519 152.04486 29.3102985 153.660779 30.926545 152.04486 29.3102985 150.428942"></polygon> + <polygon id="Fill-510" fill-opacity="0.8" fill="#A3B1BF" transform="translate(27.858704, 148.626083) rotate(22.000000) translate(-27.858704, -148.626083) " points="26.2424578 148.626083 27.8587043 150.242002 29.4749508 148.626083 27.8587043 147.010164"></polygon> + <polygon id="Stroke-512" transform="translate(27.858704, 148.626083) rotate(22.000000) translate(-27.858704, -148.626083) " points="26.2424578 148.626083 27.8587043 150.242002 29.4749508 148.626083 27.8587043 147.010164"></polygon> + <polygon id="Fill-514" fill-opacity="0.8" fill="#A3B1BF" transform="translate(26.407134, 145.207247) rotate(22.000000) translate(-26.407134, -145.207247) " points="24.7908874 145.207247 26.4071339 146.823166 28.0233805 145.207247 26.4071339 143.591328"></polygon> + <polygon id="Stroke-516" transform="translate(26.407134, 145.207247) rotate(22.000000) translate(-26.407134, -145.207247) " points="24.7908874 145.207247 26.4071339 146.823166 28.0233805 145.207247 26.4071339 143.591328"></polygon> + <polygon id="Fill-518" fill-opacity="0.8" fill="#A3B1BF" transform="translate(24.955481, 141.788446) rotate(22.000000) translate(-24.955481, -141.788446) " points="23.3392343 141.788446 24.9554808 143.404364 26.5717274 141.788446 24.9554808 140.172527"></polygon> + <polygon id="Stroke-520" transform="translate(24.955481, 141.788446) rotate(22.000000) translate(-24.955481, -141.788446) " points="23.3392343 141.788446 24.9554808 143.404364 26.5717274 141.788446 24.9554808 140.172527"></polygon> + <polygon id="Fill-522" fill-opacity="0.8" fill="#A3B1BF" transform="translate(26.154213, 153.384161) rotate(22.000000) translate(-26.154213, -153.384161) " points="24.5379666 153.384161 26.1542132 155.00008 27.7704597 153.384161 26.1542132 151.768243"></polygon> + <polygon id="Stroke-524" transform="translate(26.154213, 153.384161) rotate(22.000000) translate(-26.154213, -153.384161) " points="24.5379666 153.384161 26.1542132 155.00008 27.7704597 153.384161 26.1542132 151.768243"></polygon> + <polygon id="Fill-526" fill-opacity="0.8" fill="#A3B1BF" transform="translate(24.702619, 149.965384) rotate(22.000000) translate(-24.702619, -149.965384) " points="23.0863724 149.965384 24.702619 151.581303 26.3188655 149.965384 24.702619 148.349465"></polygon> + <polygon id="Stroke-528" transform="translate(24.702619, 149.965384) rotate(22.000000) translate(-24.702619, -149.965384) " points="23.0863724 149.965384 24.702619 151.581303 26.3188655 149.965384 24.702619 148.349465"></polygon> + <polygon id="Fill-530" fill-opacity="0.8" fill="#A3B1BF" transform="translate(23.250966, 146.546583) rotate(22.000000) translate(-23.250966, -146.546583) " points="21.6347194 146.546583 23.2509659 148.162502 24.8672124 146.546583 23.2509659 144.930664"></polygon> + <polygon id="Stroke-532" transform="translate(23.250966, 146.546583) rotate(22.000000) translate(-23.250966, -146.546583) " points="21.6347194 146.546583 23.2509659 148.162502 24.8672124 146.546583 23.2509659 144.930664"></polygon> + <polygon id="Fill-534" fill-opacity="0.8" fill="#A3B1BF" transform="translate(21.799396, 143.127747) rotate(22.000000) translate(-21.799396, -143.127747) " points="20.183149 143.127747 21.7993955 144.743665 23.4156421 143.127747 21.7993955 141.511828"></polygon> + <polygon id="Stroke-536" transform="translate(21.799396, 143.127747) rotate(22.000000) translate(-21.799396, -143.127747) " points="20.183149 143.127747 21.7993955 144.743665 23.4156421 143.127747 21.7993955 141.511828"></polygon> + <path d="M129.314819,189.942425 C126.372666,187.000233 124.490222,184.112668 125.110927,183.492089 C125.731631,182.87151 128.619783,184.753573 131.562571,187.695129 C134.504724,190.637321 136.387169,193.524886 135.766464,194.145465 C135.145759,194.766044 132.257608,192.883981 129.314819,189.942425 Z" id="Fill-538" fill="#F5F5F5" transform="translate(130.438695, 188.818777) rotate(22.000000) translate(-130.438695, -188.818777) "></path> + <path d="M129.314819,189.942425 C126.372666,187.000233 124.490222,184.112668 125.110927,183.492089 C125.731631,182.87151 128.619783,184.753573 131.562571,187.695129 C134.504724,190.637321 136.387169,193.524886 135.766464,194.145465 C135.145759,194.766044 132.257608,192.883981 129.314819,189.942425 Z" id="Stroke-540" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(130.438695, 188.818777) rotate(22.000000) translate(-130.438695, -188.818777) "></path> + <path d="M136.083433,187.715086 C130.20421,181.837055 126.443133,176.067006 127.683272,174.827118 C128.92341,173.587231 134.69463,177.347545 140.573854,183.225576 C146.453713,189.104243 150.21479,194.874292 148.974651,196.114179 C147.734513,197.354066 141.963293,193.593752 136.083433,187.715086 Z" id="Fill-542" fill="#F5F5F5" transform="translate(138.328961, 185.470648) rotate(22.000000) translate(-138.328961, -185.470648) "></path> + <path d="M136.083433,187.715086 C130.20421,181.837055 126.443133,176.067006 127.683272,174.827118 C128.92341,173.587231 134.69463,177.347545 140.573854,183.225576 C146.453713,189.104243 150.21479,194.874292 148.974651,196.114179 C147.734513,197.354066 141.963293,193.593752 136.083433,187.715086 Z" id="Stroke-544" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(138.328961, 185.470648) rotate(22.000000) translate(-138.328961, -185.470648) "></path> + <path d="M146.697288,183.650834 C138.818086,175.773231 133.777481,168.04045 135.43947,166.378798 C137.101459,164.717146 144.835809,169.756729 152.715011,177.634332 C160.594213,185.511936 165.634818,193.244716 163.972829,194.906369 C162.310839,196.568021 154.57649,191.528438 146.697288,183.650834 Z" id="Fill-546" fill-opacity="0.35" fill="#F5F5F5" transform="translate(149.706149, 180.642583) rotate(22.000000) translate(-149.706149, -180.642583) "></path> + <path d="M146.697288,183.650834 C138.818086,175.773231 133.777481,168.04045 135.43947,166.378798 C137.101459,164.717146 144.835809,169.756729 152.715011,177.634332 C160.594213,185.511936 165.634818,193.244716 163.972829,194.906369 C162.310839,196.568021 154.57649,191.528438 146.697288,183.650834 Z" id="Stroke-548" stroke="#A3B1BF" stroke-width="1.62" stroke-linejoin="round" transform="translate(149.706149, 180.642583) rotate(22.000000) translate(-149.706149, -180.642583) "></path> + <path d="M65.2279553,90.2345285 C62.4548336,90.0320836 60.4105231,89.3345405 60.4105231,88.5051511 C60.4105231,87.676673 62.4503446,86.9797514 65.2188187,86.7764428 C65.4149139,84.0068366 66.0879499,81.9659221 66.8880741,81.9659221 C67.6881984,81.9659221 68.3612344,84.0068366 68.5573295,86.7764428 C71.3258036,86.9797514 73.3656251,87.676673 73.3656251,88.5051511 C73.3656251,89.3345405 71.3213146,90.0320836 68.548193,90.2345285 C68.3410329,92.9408238 67.6762073,94.9210242 66.8880741,94.9210242 C66.0999409,94.9210242 65.4351154,92.9408238 65.2279553,90.2345285 Z" id="Oval-80-Copy-3" fill-opacity="0.4" fill="#A3B1BF" opacity="0.85" transform="translate(66.888074, 88.443473) rotate(-340.000000) translate(-66.888074, -88.443473) "></path> + <path d="M118.775569,329.140492 L118.424988,329.526146 C117.522244,330.5192 115.985396,330.592411 114.992341,329.689667 C114.596934,329.330218 114.331035,328.850456 114.235803,328.324641 L114.143075,327.812647 L113.669257,327.599091 C112.445737,327.047635 111.900921,325.608734 112.452377,324.385214 C112.672015,323.8979 113.046204,323.496601 113.516991,323.243469 L113.97521,322.997095 L114.032158,322.478985 C114.178786,321.144967 115.379087,320.182398 116.713105,320.329026 C117.24418,320.387399 117.741214,320.61917 118.127299,320.988476 L118.503957,321.348765 L119.01334,321.242962 C120.327346,320.970031 121.613813,321.813989 121.886744,323.127995 C121.995449,323.651349 121.928561,324.195943 121.696437,324.677436 L121.470742,325.145594 L121.728812,325.597409 C122.394441,326.762759 121.989337,328.247061 120.823987,328.91269 C120.359975,329.177726 119.82154,329.282421 119.292023,329.21057 L118.775569,329.140492 Z" id="Star-1-Copy-16" fill-opacity="0.4" fill="#A3B1BF"></path> + <path d="M432.83752,120.004816 L432.837087,120.005044 L432.837087,120.005044 C432.092472,120.396429 431.171561,120.110079 430.780176,119.365464 C430.624337,119.068978 430.570573,118.729391 430.627206,118.399266 L430.627206,118.399266 L430.627206,118.399266 L430.627206,118.399266 C430.024845,117.812233 430.01242,116.848039 430.599453,116.245678 C430.833262,116.005765 431.139652,115.849637 431.471171,115.801474 L431.471471,115.801431 L431.471471,115.801431 L431.471471,115.801431 C431.843891,115.046982 432.757399,114.737288 433.511848,115.109709 C433.812195,115.25797 434.055308,115.501083 434.20357,115.801431 L434.20357,115.801431 L434.203869,115.801474 L434.203869,115.801474 C435.036229,115.922398 435.612963,116.695187 435.492039,117.527547 C435.443876,117.859067 435.287748,118.165457 435.047835,118.399266 L435.047835,118.399266 L435.047835,118.399266 L435.047835,118.399266 C435.190066,119.228364 434.63325,120.015783 433.804152,120.158014 C433.474027,120.214647 433.134439,120.160883 432.837954,120.005044 L432.83752,120.004816 Z" id="Star-1-Copy-18" fill-opacity="0.4" fill="#A3B1BF" transform="translate(432.837619, 117.566125) rotate(-3.000000) translate(-432.837619, -117.566125) "></path> + <path d="M99.7727703,38.762372 L99.0266308,39.1545584 L99.0266308,39.1545584 C97.8386845,39.7789675 96.36948,39.3221304 95.7450708,38.134184 C95.4964477,37.6611755 95.4106732,37.1194035 95.5010241,36.5927278 L95.6433921,35.7628333 L95.0407812,35.1755563 L95.0407812,35.1755563 C94.0796578,34.2388893 94.059832,32.7004261 94.996499,31.7393027 C95.369563,31.3564979 95.8584376,31.1073808 96.3874089,31.0305329 L97.2206742,30.9094778 L97.5937913,30.1536188 L97.5937913,30.1536188 C98.1878378,28.950202 99.6449697,28.4562097 100.848387,29.0502562 C101.327469,29.2867472 101.715258,29.6745363 101.951749,30.1536188 L102.324866,30.9094778 L103.158132,31.0305329 L103.158132,31.0305329 C104.486241,31.223478 105.406474,32.4565366 105.213529,33.7846464 C105.136681,34.3136177 104.887564,34.8024923 104.504759,35.1755563 L103.902148,35.7628333 L104.044516,36.5927278 L104.044516,36.5927278 C104.27143,37.9154575 103.383095,39.1716915 102.060366,39.398605 C101.53369,39.4889559 100.991918,39.4031814 100.51891,39.1545584 L99.7727703,38.762372 Z" id="Star-1-Copy-19" fill-opacity="0.4" fill="#A3B1BF" transform="translate(99.772928, 34.116388) rotate(19.000000) translate(-99.772928, -34.116388) "></path> + <path d="M396.631073,305.744172 L396.098125,305.608596 C394.797498,305.277731 394.01135,303.955146 394.342215,302.654518 C394.473956,302.136643 394.772729,301.676633 395.192288,301.345694 L395.623376,301.00566 L395.587617,300.458372 C395.500116,299.119176 396.514815,297.962609 397.854012,297.875108 C398.387399,297.840257 398.917395,297.982247 399.361919,298.279089 L399.818473,298.583965 L400.329362,298.380373 C401.576068,297.883555 402.989473,298.491459 403.486291,299.738164 C403.684076,300.23448 403.712777,300.782145 403.567956,301.296416 L403.418882,301.825788 L403.76981,302.247972 C404.627682,303.280038 404.486471,304.812135 403.454406,305.670007 C403.043346,306.011688 402.531095,306.208301 401.996987,306.229395 L401.44896,306.251039 L401.15585,306.715309 C400.439401,307.850123 398.938655,308.189275 397.80384,307.472826 C397.351988,307.187555 397.006767,306.761296 396.821614,306.260029 L396.631073,305.744172 Z" id="Star-1-Copy-20" fill-opacity="0.4" fill="#A3B1BF"></path> + <path d="M439.755536,146.347757 L439.755103,146.347984 L439.755103,146.347984 C439.010488,146.739369 438.089577,146.45302 437.698192,145.708405 C437.542353,145.411919 437.488589,145.072331 437.545222,144.742206 L437.545222,144.742206 L437.545222,144.742206 L437.545222,144.742206 C436.942861,144.155173 436.930436,143.190979 437.517469,142.588619 C437.751277,142.348705 438.057668,142.192577 438.389187,142.144415 L438.389487,142.144371 L438.389487,142.144371 L438.389487,142.144371 C438.761907,141.389923 439.675415,141.080228 440.429864,141.452649 C440.730211,141.600911 440.973324,141.844024 441.121586,142.144371 L441.121586,142.144371 L441.121885,142.144415 L441.121885,142.144415 C441.954245,142.265338 442.530978,143.038128 442.410055,143.870488 C442.361892,144.202007 442.205764,144.508398 441.965851,144.742206 L441.965851,144.742206 L441.965851,144.742206 L441.965851,144.742206 C442.108082,145.571305 441.551266,146.358723 440.722168,146.500955 C440.392043,146.557588 440.052455,146.503823 439.755969,146.347984 L439.755536,146.347757 Z" id="Star-1-Copy-21" fill-opacity="0.4" fill="#A3B1BF" transform="translate(439.755635, 143.909066) rotate(-12.000000) translate(-439.755635, -143.909066) "></path> + <path d="M244.621971,220.61341 C277.15945,220.61341 303.536288,194.242112 303.536288,161.711467 C303.536288,129.180822 277.15945,102.809524 244.621971,102.809524 C212.084491,102.809524 185.707653,129.180822 185.707653,161.711467 C185.707653,194.242112 212.084491,220.61341 244.621971,220.61341 Z" id="Oval-8-Copy-2" fill-opacity="0.66" fill="#A3B1BF"></path> + <path d="M245.345696,141.060063 C241.146656,141.060063 237.880736,142.342349 235.547936,144.906921 C233.215136,147.354921 232.107056,150.618921 232.107056,154.698921 L236.714336,154.698921 C236.714336,151.842921 237.355856,149.628063 238.638896,147.996063 C240.038576,146.072635 242.196416,145.140063 245.112416,145.140063 C247.561856,145.140063 249.486416,145.781206 250.827776,147.180063 C252.110816,148.462349 252.810656,150.269206 252.810656,152.600635 C252.810656,154.232635 252.227456,155.748063 251.061056,157.205206 C250.711136,157.671492 250.011296,158.370921 249.078176,159.303492 C245.928896,162.101206 244.004336,164.316063 243.187856,166.064635 C242.488016,167.521778 242.138096,169.212063 242.138096,171.135492 L242.138096,172.476063 L246.803696,172.476063 L246.803696,171.135492 C246.803696,169.561778 247.153616,168.162921 247.911776,166.880635 C248.494976,165.831492 249.369776,164.782349 250.652816,163.674921 C253.218896,161.401778 254.793536,159.886349 255.376736,159.186921 C256.834736,157.263492 257.592896,154.990349 257.592896,152.367492 C257.592896,148.870349 256.484816,146.130921 254.326976,144.149206 C252.052496,142.050921 249.078176,141.060063 245.345696,141.060063 Z M244.470896,176.556063 C243.479456,176.556063 242.662976,176.847492 241.963136,177.546921 C241.263296,178.188063 240.971696,179.004063 240.971696,179.994921 C240.971696,180.985778 241.263296,181.801778 241.963136,182.501206 C242.662976,183.142349 243.479456,183.492063 244.470896,183.492063 C245.462336,183.492063 246.278816,183.142349 246.978656,182.501206 C247.678496,181.860063 248.028416,181.044063 248.028416,179.994921 C248.028416,179.004063 247.678496,178.188063 247.036976,177.546921 C246.337136,176.847492 245.462336,176.556063 244.470896,176.556063 Z" id="?" fill="#FFFFFF"></path> + <path d="M223.261662,133.139924 C229.077338,129.782947 239.631808,125.828273 236.274126,120.013819 C232.916444,114.199364 220.565868,115.043746 214.750193,118.400722 C208.934517,121.757699 202.729834,131.623951 206.087516,137.438405 C209.445198,143.252859 217.445986,136.4969 223.261662,133.139924" id="Oval-8-Copy-2" fill="#FAFAFA"></path> + <path d="M249.679003,119.820589 C252.365149,119.820589 254.5427,117.643495 254.5427,114.957913 C254.5427,112.272332 252.365149,110.095238 249.679003,110.095238 C246.992857,110.095238 244.815306,112.272332 244.815306,114.957913 C244.815306,117.643495 246.992857,119.820589 249.679003,119.820589 Z" id="Oval-10-Copy" fill="#FAFAFA"></path> + <path d="M421.5,321.5 L423,323" id="Line-2" stroke="#979797" stroke-linecap="square"></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/images/error/500.svg b/src/main/resources/static/febs/images/error/500.svg new file mode 100644 index 0000000..de723b1 --- /dev/null +++ b/src/main/resources/static/febs/images/error/500.svg @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<svg width="422px" height="193px" viewBox="0 0 422 193" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 46.2 (44496) - http://www.bohemiancoding.com/sketch --> + <title>Group 4</title> + <desc>Created with Sketch.</desc> + <defs></defs> + <g id="Ant-Design-Pro-3.0" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="500" transform="translate(-477.000000, -299.000000)"> + <g id="Group-4" transform="translate(479.000000, 290.000000)"> + <polygon id="Fill-1" fill-opacity="0.25" fill="#A3B1BF" opacity="0.900000036" transform="translate(271.351592, 80.180646) rotate(90.000000) translate(-271.351592, -80.180646) " points="214.065678 134.970601 328.637506 134.970601 328.637506 25.3906904 214.065678 25.3906904"></polygon> + <polygon id="Stroke-2" stroke="#A3B1BF" stroke-width="1.62" transform="translate(271.351592, 80.180646) rotate(90.000000) translate(-271.351592, -80.180646) " points="214.065678 134.970601 328.637506 134.970601 328.637506 25.3906904 214.065678 25.3906904"></polygon> + <path d="M276.053859,94.8252648 C271.491929,94.8252648 267.759441,91.0782313 267.759441,86.4985238 L267.759441,73.9594928 C267.759441,69.3797853 271.491929,65.6327519 276.053859,65.6327519 L393.542211,65.6327519 C398.104141,65.6327519 401.836629,69.3797853 401.836629,73.9594928 L401.836629,86.4985238 C401.836629,91.0782313 398.104141,94.8252648 393.542211,94.8252648 L276.053859,94.8252648 Z" id="Fill-3" fill="#F0F2F5" transform="translate(334.798035, 80.229008) rotate(90.000000) translate(-334.798035, -80.229008) "></path> + <path d="M276.053859,94.8252648 C271.491929,94.8252648 267.759441,91.0782313 267.759441,86.4985238 L267.759441,73.9594928 C267.759441,69.3797853 271.491929,65.6327519 276.053859,65.6327519 L393.542211,65.6327519 C398.104141,65.6327519 401.836629,69.3797853 401.836629,73.9594928 L401.836629,86.4985238 C401.836629,91.0782313 398.104141,94.8252648 393.542211,94.8252648 L276.053859,94.8252648 L276.053859,94.8252648 Z" id="Stroke-5" stroke="#A3B1BF" stroke-width="1.62" transform="translate(334.798035, 80.229008) rotate(90.000000) translate(-334.798035, -80.229008) "></path> + <path d="M373.091719,31.232323 C373.091719,32.058752 372.424019,32.7290547 371.600798,32.7290547 C370.77654,32.7290547 370.108839,32.058752 370.108839,31.232323 C370.108839,30.405894 370.77654,29.7355913 371.600798,29.7355913 C372.424019,29.7355913 373.091719,30.405894 373.091719,31.232323 L356.360842,4.74110287 L349.082491,-8.6444393" id="Fill-7" transform="translate(361.087105, 12.042308) rotate(90.000000) translate(-361.087105, -12.042308) "></path> + <path d="M343.448596,22.5884924 C343.448596,23.4149215 342.780895,24.0852241 341.957674,24.0852241 C341.133416,24.0852241 340.465716,23.4149215 340.465716,22.5884924 C340.465716,21.7620634 341.133416,21.0917607 341.957674,21.0917607 C342.780895,21.0917607 343.448596,21.7620634 343.448596,22.5884924 L343.448596,22.5884924 Z" id="Stroke-9" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 22.588492) rotate(90.000000) translate(-341.957156, -22.588492) "></path> + <path d="M343.448596,31.5121872 C343.448596,32.3386162 342.780895,33.0089189 341.957674,33.0089189 C341.133416,33.0089189 340.465716,32.3386162 340.465716,31.5121872 C340.465716,30.6857582 341.133416,30.0154555 341.957674,30.0154555 C342.780895,30.0154555 343.448596,30.6857582 343.448596,31.5121872" id="Fill-11" fill="#FFFFFF" transform="translate(341.957156, 31.512187) rotate(90.000000) translate(-341.957156, -31.512187) "></path> + <path d="M343.448596,31.5121872 C343.448596,32.3386162 342.780895,33.0089189 341.957674,33.0089189 C341.133416,33.0089189 340.465716,32.3386162 340.465716,31.5121872 C340.465716,30.6857582 341.133416,30.0154555 341.957674,30.0154555 C342.780895,30.0154555 343.448596,30.6857582 343.448596,31.5121872 L343.448596,31.5121872 Z" id="Stroke-13" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 31.512187) rotate(90.000000) translate(-341.957156, -31.512187) "></path> + <path d="M343.448596,40.435882 C343.448596,41.262311 342.780895,41.9326137 341.957674,41.9326137 C341.133416,41.9326137 340.465716,41.262311 340.465716,40.435882 C340.465716,39.609453 341.133416,38.9391503 341.957674,38.9391503 C342.780895,38.9391503 343.448596,39.609453 343.448596,40.435882" id="Fill-15" fill="#FFFFFF" transform="translate(341.957156, 40.435882) rotate(90.000000) translate(-341.957156, -40.435882) "></path> + <path d="M343.448596,40.435882 C343.448596,41.262311 342.780895,41.9326137 341.957674,41.9326137 C341.133416,41.9326137 340.465716,41.262311 340.465716,40.435882 C340.465716,39.609453 341.133416,38.9391503 341.957674,38.9391503 C342.780895,38.9391503 343.448596,39.609453 343.448596,40.435882 L343.448596,40.435882 Z" id="Stroke-17" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 40.435882) rotate(90.000000) translate(-341.957156, -40.435882) "></path> + <path d="M343.448596,49.3595768 C343.448596,50.1860058 342.780895,50.8563085 341.957674,50.8563085 C341.133416,50.8563085 340.465716,50.1860058 340.465716,49.3595768 C340.465716,48.5331477 341.133416,47.8628451 341.957674,47.8628451 C342.780895,47.8628451 343.448596,48.5331477 343.448596,49.3595768" id="Fill-19" fill="#FFFFFF" transform="translate(341.957156, 49.359577) rotate(90.000000) translate(-341.957156, -49.359577) "></path> + <path d="M343.448596,49.3595768 C343.448596,50.1860058 342.780895,50.8563085 341.957674,50.8563085 C341.133416,50.8563085 340.465716,50.1860058 340.465716,49.3595768 C340.465716,48.5331477 341.133416,47.8628451 341.957674,47.8628451 C342.780895,47.8628451 343.448596,48.5331477 343.448596,49.3595768 L343.448596,49.3595768 Z" id="Stroke-21" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 49.359577) rotate(90.000000) translate(-341.957156, -49.359577) "></path> + <path d="M343.448596,58.2832715 C343.448596,59.1097006 342.780895,59.7800032 341.957674,59.7800032 C341.133416,59.7800032 340.465716,59.1097006 340.465716,58.2832715 C340.465716,57.4568425 341.133416,56.7865399 341.957674,56.7865399 C342.780895,56.7865399 343.448596,57.4568425 343.448596,58.2832715" id="Fill-23" fill="#FFFFFF" transform="translate(341.957156, 58.283272) rotate(90.000000) translate(-341.957156, -58.283272) "></path> + <path d="M343.448596,58.2832715 C343.448596,59.1097006 342.780895,59.7800032 341.957674,59.7800032 C341.133416,59.7800032 340.465716,59.1097006 340.465716,58.2832715 C340.465716,57.4568425 341.133416,56.7865399 341.957674,56.7865399 C342.780895,56.7865399 343.448596,57.4568425 343.448596,58.2832715 L343.448596,58.2832715 Z" id="Stroke-25" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 58.283272) rotate(90.000000) translate(-341.957156, -58.283272) "></path> + <path d="M343.448596,67.2069663 C343.448596,68.0333954 342.780895,68.703698 341.957674,68.703698 C341.133416,68.703698 340.465716,68.0333954 340.465716,67.2069663 C340.465716,66.3805373 341.133416,65.7102346 341.957674,65.7102346 C342.780895,65.7102346 343.448596,66.3805373 343.448596,67.2069663" id="Fill-27" fill="#FFFFFF" transform="translate(341.957156, 67.206966) rotate(90.000000) translate(-341.957156, -67.206966) "></path> + <path d="M343.448596,67.2069663 C343.448596,68.0333954 342.780895,68.703698 341.957674,68.703698 C341.133416,68.703698 340.465716,68.0333954 340.465716,67.2069663 C340.465716,66.3805373 341.133416,65.7102346 341.957674,65.7102346 C342.780895,65.7102346 343.448596,66.3805373 343.448596,67.2069663 L343.448596,67.2069663 Z" id="Stroke-29" stroke="#A3B1BF" stroke-width="0.81" transform="translate(341.957156, 67.206966) rotate(90.000000) translate(-341.957156, -67.206966) "></path> + <path d="M327.400971,24.0852241 C326.576713,24.0852241 325.909013,23.4149215 325.909013,22.5884924 C325.909013,21.7620634 326.576713,21.0917607 327.400971,21.0917607 C328.224192,21.0917607 328.891893,21.7620634 328.891893,22.5884924 C328.891893,23.4149215 328.224192,24.0852241 327.400971,24.0852241 Z" id="Fill-31" fill="#FFFFFF" transform="translate(327.400453, 22.588492) rotate(90.000000) translate(-327.400453, -22.588492) "></path> + <path d="M328.891893,22.5884924 C328.891893,23.4149215 328.224192,24.0852241 327.400971,24.0852241 C326.576713,24.0852241 325.909013,23.4149215 325.909013,22.5884924 C325.909013,21.7620634 326.576713,21.0917607 327.400971,21.0917607 C328.224192,21.0917607 328.891893,21.7620634 328.891893,22.5884924 L328.891893,22.5884924 Z" id="Stroke-33" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 22.588492) rotate(90.000000) translate(-327.400453, -22.588492) "></path> + <path d="M328.891893,31.5121872 C328.891893,32.3386162 328.224192,33.0089189 327.400971,33.0089189 C326.576713,33.0089189 325.909013,32.3386162 325.909013,31.5121872 C325.909013,30.6857582 326.576713,30.0154555 327.400971,30.0154555 C328.224192,30.0154555 328.891893,30.6857582 328.891893,31.5121872" id="Fill-35" fill="#FFFFFF" transform="translate(327.400453, 31.512187) rotate(90.000000) translate(-327.400453, -31.512187) "></path> + <path d="M328.891893,31.5121872 C328.891893,32.3386162 328.224192,33.0089189 327.400971,33.0089189 C326.576713,33.0089189 325.909013,32.3386162 325.909013,31.5121872 C325.909013,30.6857582 326.576713,30.0154555 327.400971,30.0154555 C328.224192,30.0154555 328.891893,30.6857582 328.891893,31.5121872 L328.891893,31.5121872 Z" id="Stroke-37" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 31.512187) rotate(90.000000) translate(-327.400453, -31.512187) "></path> + <path d="M328.891893,40.435882 C328.891893,41.262311 328.224192,41.9326137 327.400971,41.9326137 C326.576713,41.9326137 325.909013,41.262311 325.909013,40.435882 C325.909013,39.609453 326.576713,38.9391503 327.400971,38.9391503 C328.224192,38.9391503 328.891893,39.609453 328.891893,40.435882" id="Fill-39" fill="#FFFFFF" transform="translate(327.400453, 40.435882) rotate(90.000000) translate(-327.400453, -40.435882) "></path> + <path d="M328.891893,40.435882 C328.891893,41.262311 328.224192,41.9326137 327.400971,41.9326137 C326.576713,41.9326137 325.909013,41.262311 325.909013,40.435882 C325.909013,39.609453 326.576713,38.9391503 327.400971,38.9391503 C328.224192,38.9391503 328.891893,39.609453 328.891893,40.435882 L328.891893,40.435882 Z" id="Stroke-41" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 40.435882) rotate(90.000000) translate(-327.400453, -40.435882) "></path> + <path d="M328.891893,49.3595768 C328.891893,50.1860058 328.224192,50.8563085 327.400971,50.8563085 C326.576713,50.8563085 325.909013,50.1860058 325.909013,49.3595768 C325.909013,48.5331477 326.576713,47.8628451 327.400971,47.8628451 C328.224192,47.8628451 328.891893,48.5331477 328.891893,49.3595768" id="Fill-43" fill="#FFFFFF" transform="translate(327.400453, 49.359577) rotate(90.000000) translate(-327.400453, -49.359577) "></path> + <path d="M328.891893,49.3595768 C328.891893,50.1860058 328.224192,50.8563085 327.400971,50.8563085 C326.576713,50.8563085 325.909013,50.1860058 325.909013,49.3595768 C325.909013,48.5331477 326.576713,47.8628451 327.400971,47.8628451 C328.224192,47.8628451 328.891893,48.5331477 328.891893,49.3595768 L328.891893,49.3595768 Z" id="Stroke-45" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 49.359577) rotate(90.000000) translate(-327.400453, -49.359577) "></path> + <path d="M328.891893,58.2832715 C328.891893,59.1097006 328.224192,59.7800032 327.400971,59.7800032 C326.576713,59.7800032 325.909013,59.1097006 325.909013,58.2832715 C325.909013,57.4568425 326.576713,56.7865399 327.400971,56.7865399 C328.224192,56.7865399 328.891893,57.4568425 328.891893,58.2832715" id="Fill-47" fill="#FFFFFF" transform="translate(327.400453, 58.283272) rotate(90.000000) translate(-327.400453, -58.283272) "></path> + <path d="M328.891893,58.2832715 C328.891893,59.1097006 328.224192,59.7800032 327.400971,59.7800032 C326.576713,59.7800032 325.909013,59.1097006 325.909013,58.2832715 C325.909013,57.4568425 326.576713,56.7865399 327.400971,56.7865399 C328.224192,56.7865399 328.891893,57.4568425 328.891893,58.2832715 L328.891893,58.2832715 Z" id="Stroke-49" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 58.283272) rotate(90.000000) translate(-327.400453, -58.283272) "></path> + <path d="M328.891893,67.2069663 C328.891893,68.0333954 328.224192,68.703698 327.400971,68.703698 C326.576713,68.703698 325.909013,68.0333954 325.909013,67.2069663 C325.909013,66.3805373 326.576713,65.7102346 327.400971,65.7102346 C328.224192,65.7102346 328.891893,66.3805373 328.891893,67.2069663" id="Fill-51" fill="#FFFFFF" transform="translate(327.400453, 67.206966) rotate(90.000000) translate(-327.400453, -67.206966) "></path> + <path d="M328.891893,67.2069663 C328.891893,68.0333954 328.224192,68.703698 327.400971,68.703698 C326.576713,68.703698 325.909013,68.0333954 325.909013,67.2069663 C325.909013,66.3805373 326.576713,65.7102346 327.400971,65.7102346 C328.224192,65.7102346 328.891893,66.3805373 328.891893,67.2069663 L328.891893,67.2069663 Z" id="Stroke-53" stroke="#A3B1BF" stroke-width="0.81" transform="translate(327.400453, 67.206966) rotate(90.000000) translate(-327.400453, -67.206966) "></path> + <path d="M334.679323,28.141449 C333.855065,28.141449 333.187364,27.4711464 333.187364,26.6447173 C333.187364,25.8182883 333.855065,25.1479856 334.679323,25.1479856 C335.502544,25.1479856 336.170244,25.8182883 336.170244,26.6447173 C336.170244,27.4711464 335.502544,28.141449 334.679323,28.141449 Z" id="Fill-55" fill="#FFFFFF" transform="translate(334.678804, 26.644717) rotate(90.000000) translate(-334.678804, -26.644717) "></path> + <path d="M336.170244,26.6447173 C336.170244,27.4711464 335.502544,28.141449 334.679323,28.141449 C333.855065,28.141449 333.187364,27.4711464 333.187364,26.6447173 C333.187364,25.8182883 333.855065,25.1479856 334.679323,25.1479856 C335.502544,25.1479856 336.170244,25.8182883 336.170244,26.6447173 L336.170244,26.6447173 Z" id="Stroke-57" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 26.644717) rotate(90.000000) translate(-334.678804, -26.644717) "></path> + <path d="M336.170244,35.5684121 C336.170244,36.3948411 335.502544,37.0651438 334.679323,37.0651438 C333.855065,37.0651438 333.187364,36.3948411 333.187364,35.5684121 C333.187364,34.7419831 333.855065,34.0716804 334.679323,34.0716804 C335.502544,34.0716804 336.170244,34.7419831 336.170244,35.5684121" id="Fill-59" fill="#FFFFFF" transform="translate(334.678804, 35.568412) rotate(90.000000) translate(-334.678804, -35.568412) "></path> + <path d="M336.170244,35.5684121 C336.170244,36.3948411 335.502544,37.0651438 334.679323,37.0651438 C333.855065,37.0651438 333.187364,36.3948411 333.187364,35.5684121 C333.187364,34.7419831 333.855065,34.0716804 334.679323,34.0716804 C335.502544,34.0716804 336.170244,34.7419831 336.170244,35.5684121 L336.170244,35.5684121 Z" id="Stroke-61" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 35.568412) rotate(90.000000) translate(-334.678804, -35.568412) "></path> + <path d="M336.170244,44.4921069 C336.170244,45.3185359 335.502544,45.9888386 334.679323,45.9888386 C333.855065,45.9888386 333.187364,45.3185359 333.187364,44.4921069 C333.187364,43.6656779 333.855065,42.9953752 334.679323,42.9953752 C335.502544,42.9953752 336.170244,43.6656779 336.170244,44.4921069" id="Fill-63" fill="#FFFFFF" transform="translate(334.678804, 44.492107) rotate(90.000000) translate(-334.678804, -44.492107) "></path> + <path d="M336.170244,44.4921069 C336.170244,45.3185359 335.502544,45.9888386 334.679323,45.9888386 C333.855065,45.9888386 333.187364,45.3185359 333.187364,44.4921069 C333.187364,43.6656779 333.855065,42.9953752 334.679323,42.9953752 C335.502544,42.9953752 336.170244,43.6656779 336.170244,44.4921069 L336.170244,44.4921069 Z" id="Stroke-65" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 44.492107) rotate(90.000000) translate(-334.678804, -44.492107) "></path> + <path d="M336.170244,53.4158017 C336.170244,54.2422307 335.502544,54.9125333 334.679323,54.9125333 C333.855065,54.9125333 333.187364,54.2422307 333.187364,53.4158017 C333.187364,52.5893726 333.855065,51.91907 334.679323,51.91907 C335.502544,51.91907 336.170244,52.5893726 336.170244,53.4158017" id="Fill-67" fill="#FFFFFF" transform="translate(334.678804, 53.415802) rotate(90.000000) translate(-334.678804, -53.415802) "></path> + <path d="M336.170244,53.4158017 C336.170244,54.2422307 335.502544,54.9125333 334.679323,54.9125333 C333.855065,54.9125333 333.187364,54.2422307 333.187364,53.4158017 C333.187364,52.5893726 333.855065,51.91907 334.679323,51.91907 C335.502544,51.91907 336.170244,52.5893726 336.170244,53.4158017 L336.170244,53.4158017 Z" id="Stroke-69" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 53.415802) rotate(90.000000) translate(-334.678804, -53.415802) "></path> + <path d="M336.170244,62.3394964 C336.170244,63.1659255 335.502544,63.8362281 334.679323,63.8362281 C333.855065,63.8362281 333.187364,63.1659255 333.187364,62.3394964 C333.187364,61.5130674 333.855065,60.8427648 334.679323,60.8427648 C335.502544,60.8427648 336.170244,61.5130674 336.170244,62.3394964" id="Fill-71" fill="#FFFFFF" transform="translate(334.678804, 62.339496) rotate(90.000000) translate(-334.678804, -62.339496) "></path> + <path d="M336.170244,62.3394964 C336.170244,63.1659255 335.502544,63.8362281 334.679323,63.8362281 C333.855065,63.8362281 333.187364,63.1659255 333.187364,62.3394964 C333.187364,61.5130674 333.855065,60.8427648 334.679323,60.8427648 C335.502544,60.8427648 336.170244,61.5130674 336.170244,62.3394964 L336.170244,62.3394964 Z" id="Stroke-73" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 62.339496) rotate(90.000000) translate(-334.678804, -62.339496) "></path> + <path d="M336.170244,71.2631912 C336.170244,72.0896203 335.502544,72.7599229 334.679323,72.7599229 C333.855065,72.7599229 333.187364,72.0896203 333.187364,71.2631912 C333.187364,70.4367622 333.855065,69.7664595 334.679323,69.7664595 C335.502544,69.7664595 336.170244,70.4367622 336.170244,71.2631912" id="Fill-75" fill="#FFFFFF" transform="translate(334.678804, 71.263191) rotate(90.000000) translate(-334.678804, -71.263191) "></path> + <path d="M336.170244,71.2631912 C336.170244,72.0896203 335.502544,72.7599229 334.679323,72.7599229 C333.855065,72.7599229 333.187364,72.0896203 333.187364,71.2631912 C333.187364,70.4367622 333.855065,69.7664595 334.679323,69.7664595 C335.502544,69.7664595 336.170244,70.4367622 336.170244,71.2631912 L336.170244,71.2631912 Z" id="Stroke-77" stroke="#A3B1BF" stroke-width="0.81" transform="translate(334.678804, 71.263191) rotate(90.000000) translate(-334.678804, -71.263191) "></path> + <path d="M335.089444,136.046978 C332.700651,136.046978 330.763905,134.102684 330.763905,131.704582 C330.763905,129.306481 332.700651,127.362187 335.089444,127.362187 C337.478236,127.362187 339.414983,129.306481 339.414983,131.704582 C339.414983,134.102684 337.478236,136.046978 335.089444,136.046978 Z" id="Fill-79" fill="#A3B1BF" transform="translate(335.089444, 131.704582) rotate(90.000000) translate(-335.089444, -131.704582) "></path> + <path d="M307.865544,121.56038 C307.865544,122.386809 307.197843,123.057112 306.374622,123.057112 C305.550365,123.057112 304.882664,122.386809 304.882664,121.56038 C304.882664,120.733951 305.550365,120.063648 306.374622,120.063648 C307.197843,120.063648 307.865544,120.733951 307.865544,121.56038" id="Fill-81" fill="#F5F5F5" transform="translate(306.374104, 121.560380) rotate(90.000000) translate(-306.374104, -121.560380) "></path> + <path d="M307.865544,121.56038 C307.865544,122.386809 307.197843,123.057112 306.374622,123.057112 C305.550365,123.057112 304.882664,122.386809 304.882664,121.56038 C304.882664,120.733951 305.550365,120.063648 306.374622,120.063648 C307.197843,120.063648 307.865544,120.733951 307.865544,121.56038 L307.865544,121.56038 Z" id="Stroke-83" stroke="#A3B1BF" stroke-width="0.81" transform="translate(306.374104, 121.560380) rotate(90.000000) translate(-306.374104, -121.560380) "></path> + <path d="M294.117547,121.56038 C294.117547,122.386809 293.449846,123.057112 292.626625,123.057112 C291.802367,123.057112 291.134667,122.386809 291.134667,121.56038 C291.134667,120.733951 291.802367,120.063648 292.626625,120.063648 C293.449846,120.063648 294.117547,120.733951 294.117547,121.56038" id="Fill-85" fill="#F5F5F5" transform="translate(292.626107, 121.560380) rotate(90.000000) translate(-292.626107, -121.560380) "></path> + <path d="M294.117547,121.56038 C294.117547,122.386809 293.449846,123.057112 292.626625,123.057112 C291.802367,123.057112 291.134667,122.386809 291.134667,121.56038 C291.134667,120.733951 291.802367,120.063648 292.626625,120.063648 C293.449846,120.063648 294.117547,120.733951 294.117547,121.56038 L294.117547,121.56038 Z" id="Stroke-87" stroke="#A3B1BF" stroke-width="0.81" transform="translate(292.626107, 121.560380) rotate(90.000000) translate(-292.626107, -121.560380) "></path> + <path d="M307.865544,38.813392 C307.865544,39.6398211 307.197843,40.3101237 306.374622,40.3101237 C305.550365,40.3101237 304.882664,39.6398211 304.882664,38.813392 C304.882664,37.986963 305.550365,37.3166603 306.374622,37.3166603 C307.197843,37.3166603 307.865544,37.986963 307.865544,38.813392" id="Fill-89" fill="#F5F5F5" transform="translate(306.374104, 38.813392) rotate(90.000000) translate(-306.374104, -38.813392) "></path> + <path d="M307.865544,38.813392 C307.865544,39.6398211 307.197843,40.3101237 306.374622,40.3101237 C305.550365,40.3101237 304.882664,39.6398211 304.882664,38.813392 C304.882664,37.986963 305.550365,37.3166603 306.374622,37.3166603 C307.197843,37.3166603 307.865544,37.986963 307.865544,38.813392 L307.865544,38.813392 Z" id="Stroke-91" stroke="#A3B1BF" stroke-width="0.81" transform="translate(306.374104, 38.813392) rotate(90.000000) translate(-306.374104, -38.813392) "></path> + <path d="M294.117547,38.813392 C294.117547,39.6398211 293.449846,40.3101237 292.626625,40.3101237 C291.802367,40.3101237 291.134667,39.6398211 291.134667,38.813392 C291.134667,37.986963 291.802367,37.3166603 292.626625,37.3166603 C293.449846,37.3166603 294.117547,37.986963 294.117547,38.813392" id="Fill-93" fill="#F5F5F5" transform="translate(292.626107, 38.813392) rotate(90.000000) translate(-292.626107, -38.813392) "></path> + <path d="M294.117547,38.813392 C294.117547,39.6398211 293.449846,40.3101237 292.626625,40.3101237 C291.802367,40.3101237 291.134667,39.6398211 291.134667,38.813392 C291.134667,37.986963 291.802367,37.3166603 292.626625,37.3166603 C293.449846,37.3166603 294.117547,37.986963 294.117547,38.813392 L294.117547,38.813392 Z" id="Stroke-95" stroke="#A3B1BF" stroke-width="0.81" transform="translate(292.626107, 38.813392) rotate(90.000000) translate(-292.626107, -38.813392) "></path> + <path d="M205.696461,94.8252648 C201.134531,94.8252648 197.402043,91.0782313 197.402043,86.4985238 L197.402043,73.9594928 C197.402043,69.3797853 201.134531,65.6327519 205.696461,65.6327519 L323.184813,65.6327519 C327.746743,65.6327519 331.479231,69.3797853 331.479231,73.9594928 L331.479231,86.4985238 C331.479231,91.0782313 327.746743,94.8252648 323.184813,94.8252648 L205.696461,94.8252648 Z" id="Fill-97" fill="#F0F2F5" transform="translate(264.440637, 80.229008) rotate(90.000000) translate(-264.440637, -80.229008) "></path> + <path d="M205.696461,94.8252648 C201.134531,94.8252648 197.402043,91.0782313 197.402043,86.4985238 L197.402043,73.9594928 C197.402043,69.3797853 201.134531,65.6327519 205.696461,65.6327519 L323.184813,65.6327519 C327.746743,65.6327519 331.479231,69.3797853 331.479231,73.9594928 L331.479231,86.4985238 C331.479231,91.0782313 327.746743,94.8252648 323.184813,94.8252648 L205.696461,94.8252648 L205.696461,94.8252648 Z" id="Stroke-99" stroke="#A3B1BF" stroke-width="1.62" transform="translate(264.440637, 80.229008) rotate(90.000000) translate(-264.440637, -80.229008) "></path> + <path d="M273.091198,22.5884924 C273.091198,23.4149215 272.423497,24.0852241 271.600276,24.0852241 C270.776019,24.0852241 270.108318,23.4149215 270.108318,22.5884924 C270.108318,21.7620634 270.776019,21.0917607 271.600276,21.0917607 C272.423497,21.0917607 273.091198,21.7620634 273.091198,22.5884924" id="Fill-101" fill="#FFFFFF" transform="translate(271.599758, 22.588492) rotate(90.000000) translate(-271.599758, -22.588492) "></path> + <path d="M273.091198,22.5884924 C273.091198,23.4149215 272.423497,24.0852241 271.600276,24.0852241 C270.776019,24.0852241 270.108318,23.4149215 270.108318,22.5884924 C270.108318,21.7620634 270.776019,21.0917607 271.600276,21.0917607 C272.423497,21.0917607 273.091198,21.7620634 273.091198,22.5884924 L273.091198,22.5884924 Z" id="Stroke-103" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 22.588492) rotate(90.000000) translate(-271.599758, -22.588492) "></path> + <path d="M273.091198,31.5121872 C273.091198,32.3386162 272.423497,33.0089189 271.600276,33.0089189 C270.776019,33.0089189 270.108318,32.3386162 270.108318,31.5121872 C270.108318,30.6857582 270.776019,30.0154555 271.600276,30.0154555 C272.423497,30.0154555 273.091198,30.6857582 273.091198,31.5121872" id="Fill-105" fill="#FFFFFF" transform="translate(271.599758, 31.512187) rotate(90.000000) translate(-271.599758, -31.512187) "></path> + <path d="M273.091198,31.5121872 C273.091198,32.3386162 272.423497,33.0089189 271.600276,33.0089189 C270.776019,33.0089189 270.108318,32.3386162 270.108318,31.5121872 C270.108318,30.6857582 270.776019,30.0154555 271.600276,30.0154555 C272.423497,30.0154555 273.091198,30.6857582 273.091198,31.5121872 L273.091198,31.5121872 Z" id="Stroke-107" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 31.512187) rotate(90.000000) translate(-271.599758, -31.512187) "></path> + <path d="M273.091198,40.435882 C273.091198,41.262311 272.423497,41.9326137 271.600276,41.9326137 C270.776019,41.9326137 270.108318,41.262311 270.108318,40.435882 C270.108318,39.609453 270.776019,38.9391503 271.600276,38.9391503 C272.423497,38.9391503 273.091198,39.609453 273.091198,40.435882" id="Fill-109" fill="#FFFFFF" transform="translate(271.599758, 40.435882) rotate(90.000000) translate(-271.599758, -40.435882) "></path> + <path d="M273.091198,40.435882 C273.091198,41.262311 272.423497,41.9326137 271.600276,41.9326137 C270.776019,41.9326137 270.108318,41.262311 270.108318,40.435882 C270.108318,39.609453 270.776019,38.9391503 271.600276,38.9391503 C272.423497,38.9391503 273.091198,39.609453 273.091198,40.435882 L273.091198,40.435882 Z" id="Stroke-111" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 40.435882) rotate(90.000000) translate(-271.599758, -40.435882) "></path> + <path d="M273.091198,49.3595768 C273.091198,50.1860058 272.423497,50.8563085 271.600276,50.8563085 C270.776019,50.8563085 270.108318,50.1860058 270.108318,49.3595768 C270.108318,48.5331477 270.776019,47.8628451 271.600276,47.8628451 C272.423497,47.8628451 273.091198,48.5331477 273.091198,49.3595768" id="Fill-113" fill="#FFFFFF" transform="translate(271.599758, 49.359577) rotate(90.000000) translate(-271.599758, -49.359577) "></path> + <path d="M273.091198,49.3595768 C273.091198,50.1860058 272.423497,50.8563085 271.600276,50.8563085 C270.776019,50.8563085 270.108318,50.1860058 270.108318,49.3595768 C270.108318,48.5331477 270.776019,47.8628451 271.600276,47.8628451 C272.423497,47.8628451 273.091198,48.5331477 273.091198,49.3595768 L273.091198,49.3595768 Z" id="Stroke-115" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 49.359577) rotate(90.000000) translate(-271.599758, -49.359577) "></path> + <path d="M273.091198,58.2832715 C273.091198,59.1097006 272.423497,59.7800032 271.600276,59.7800032 C270.776019,59.7800032 270.108318,59.1097006 270.108318,58.2832715 C270.108318,57.4568425 270.776019,56.7865399 271.600276,56.7865399 C272.423497,56.7865399 273.091198,57.4568425 273.091198,58.2832715" id="Fill-117" fill="#FFFFFF" transform="translate(271.599758, 58.283272) rotate(90.000000) translate(-271.599758, -58.283272) "></path> + <path d="M273.091198,58.2832715 C273.091198,59.1097006 272.423497,59.7800032 271.600276,59.7800032 C270.776019,59.7800032 270.108318,59.1097006 270.108318,58.2832715 C270.108318,57.4568425 270.776019,56.7865399 271.600276,56.7865399 C272.423497,56.7865399 273.091198,57.4568425 273.091198,58.2832715 L273.091198,58.2832715 Z" id="Stroke-119" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 58.283272) rotate(90.000000) translate(-271.599758, -58.283272) "></path> + <path d="M271.600276,68.703698 C270.776019,68.703698 270.108318,68.0333954 270.108318,67.2069663 C270.108318,66.3805373 270.776019,65.7102346 271.600276,65.7102346 C272.423497,65.7102346 273.091198,66.3805373 273.091198,67.2069663 C273.091198,68.0333954 272.423497,68.703698 271.600276,68.703698 Z" id="Fill-121" fill="#FFFFFF" transform="translate(271.599758, 67.206966) rotate(90.000000) translate(-271.599758, -67.206966) "></path> + <path d="M273.091198,67.2069663 C273.091198,68.0333954 272.423497,68.703698 271.600276,68.703698 C270.776019,68.703698 270.108318,68.0333954 270.108318,67.2069663 C270.108318,66.3805373 270.776019,65.7102346 271.600276,65.7102346 C272.423497,65.7102346 273.091198,66.3805373 273.091198,67.2069663 L273.091198,67.2069663 Z" id="Stroke-123" stroke="#A3B1BF" stroke-width="0.81" transform="translate(271.599758, 67.206966) rotate(90.000000) translate(-271.599758, -67.206966) "></path> + <path d="M258.534495,22.5884924 C258.534495,23.4149215 257.866794,24.0852241 257.043573,24.0852241 C256.219316,24.0852241 255.551615,23.4149215 255.551615,22.5884924 C255.551615,21.7620634 256.219316,21.0917607 257.043573,21.0917607 C257.866794,21.0917607 258.534495,21.7620634 258.534495,22.5884924" id="Fill-125" fill="#FFFFFF" transform="translate(257.043055, 22.588492) rotate(90.000000) translate(-257.043055, -22.588492) "></path> + <path d="M258.534495,22.5884924 C258.534495,23.4149215 257.866794,24.0852241 257.043573,24.0852241 C256.219316,24.0852241 255.551615,23.4149215 255.551615,22.5884924 C255.551615,21.7620634 256.219316,21.0917607 257.043573,21.0917607 C257.866794,21.0917607 258.534495,21.7620634 258.534495,22.5884924 L258.534495,22.5884924 Z" id="Stroke-127" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 22.588492) rotate(90.000000) translate(-257.043055, -22.588492) "></path> + <path d="M258.534495,31.5121872 C258.534495,32.3386162 257.866794,33.0089189 257.043573,33.0089189 C256.219316,33.0089189 255.551615,32.3386162 255.551615,31.5121872 C255.551615,30.6857582 256.219316,30.0154555 257.043573,30.0154555 C257.866794,30.0154555 258.534495,30.6857582 258.534495,31.5121872" id="Fill-129" fill="#FFFFFF" transform="translate(257.043055, 31.512187) rotate(90.000000) translate(-257.043055, -31.512187) "></path> + <path d="M258.534495,31.5121872 C258.534495,32.3386162 257.866794,33.0089189 257.043573,33.0089189 C256.219316,33.0089189 255.551615,32.3386162 255.551615,31.5121872 C255.551615,30.6857582 256.219316,30.0154555 257.043573,30.0154555 C257.866794,30.0154555 258.534495,30.6857582 258.534495,31.5121872 L258.534495,31.5121872 Z" id="Stroke-131" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 31.512187) rotate(90.000000) translate(-257.043055, -31.512187) "></path> + <path d="M258.534495,40.435882 C258.534495,41.262311 257.866794,41.9326137 257.043573,41.9326137 C256.219316,41.9326137 255.551615,41.262311 255.551615,40.435882 C255.551615,39.609453 256.219316,38.9391503 257.043573,38.9391503 C257.866794,38.9391503 258.534495,39.609453 258.534495,40.435882" id="Fill-133" fill="#FFFFFF" transform="translate(257.043055, 40.435882) rotate(90.000000) translate(-257.043055, -40.435882) "></path> + <path d="M258.534495,40.435882 C258.534495,41.262311 257.866794,41.9326137 257.043573,41.9326137 C256.219316,41.9326137 255.551615,41.262311 255.551615,40.435882 C255.551615,39.609453 256.219316,38.9391503 257.043573,38.9391503 C257.866794,38.9391503 258.534495,39.609453 258.534495,40.435882 L258.534495,40.435882 Z" id="Stroke-135" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 40.435882) rotate(90.000000) translate(-257.043055, -40.435882) "></path> + <path d="M258.534495,49.3595768 C258.534495,50.1860058 257.866794,50.8563085 257.043573,50.8563085 C256.219316,50.8563085 255.551615,50.1860058 255.551615,49.3595768 C255.551615,48.5331477 256.219316,47.8628451 257.043573,47.8628451 C257.866794,47.8628451 258.534495,48.5331477 258.534495,49.3595768" id="Fill-137" fill="#FFFFFF" transform="translate(257.043055, 49.359577) rotate(90.000000) translate(-257.043055, -49.359577) "></path> + <path d="M258.534495,49.3595768 C258.534495,50.1860058 257.866794,50.8563085 257.043573,50.8563085 C256.219316,50.8563085 255.551615,50.1860058 255.551615,49.3595768 C255.551615,48.5331477 256.219316,47.8628451 257.043573,47.8628451 C257.866794,47.8628451 258.534495,48.5331477 258.534495,49.3595768 L258.534495,49.3595768 Z" id="Stroke-139" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 49.359577) rotate(90.000000) translate(-257.043055, -49.359577) "></path> + <path d="M258.534495,58.2832715 C258.534495,59.1097006 257.866794,59.7800032 257.043573,59.7800032 C256.219316,59.7800032 255.551615,59.1097006 255.551615,58.2832715 C255.551615,57.4568425 256.219316,56.7865399 257.043573,56.7865399 C257.866794,56.7865399 258.534495,57.4568425 258.534495,58.2832715" id="Fill-141" fill="#FFFFFF" transform="translate(257.043055, 58.283272) rotate(90.000000) translate(-257.043055, -58.283272) "></path> + <path d="M258.534495,58.2832715 C258.534495,59.1097006 257.866794,59.7800032 257.043573,59.7800032 C256.219316,59.7800032 255.551615,59.1097006 255.551615,58.2832715 C255.551615,57.4568425 256.219316,56.7865399 257.043573,56.7865399 C257.866794,56.7865399 258.534495,57.4568425 258.534495,58.2832715 L258.534495,58.2832715 Z" id="Stroke-143" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 58.283272) rotate(90.000000) translate(-257.043055, -58.283272) "></path> + <path d="M258.534495,67.2069663 C258.534495,68.0333954 257.866794,68.703698 257.043573,68.703698 C256.219316,68.703698 255.551615,68.0333954 255.551615,67.2069663 C255.551615,66.3805373 256.219316,65.7102346 257.043573,65.7102346 C257.866794,65.7102346 258.534495,66.3805373 258.534495,67.2069663" id="Fill-145" fill="#FFFFFF" transform="translate(257.043055, 67.206966) rotate(90.000000) translate(-257.043055, -67.206966) "></path> + <path d="M258.534495,67.2069663 C258.534495,68.0333954 257.866794,68.703698 257.043573,68.703698 C256.219316,68.703698 255.551615,68.0333954 255.551615,67.2069663 C255.551615,66.3805373 256.219316,65.7102346 257.043573,65.7102346 C257.866794,65.7102346 258.534495,66.3805373 258.534495,67.2069663 L258.534495,67.2069663 Z" id="Stroke-147" stroke="#A3B1BF" stroke-width="0.81" transform="translate(257.043055, 67.206966) rotate(90.000000) translate(-257.043055, -67.206966) "></path> + <path d="M265.812846,26.6447173 C265.812846,27.4711464 265.145146,28.141449 264.321925,28.141449 C263.497667,28.141449 262.829967,27.4711464 262.829967,26.6447173 C262.829967,25.8182883 263.497667,25.1479856 264.321925,25.1479856 C265.145146,25.1479856 265.812846,25.8182883 265.812846,26.6447173" id="Fill-149" fill="#FFFFFF" transform="translate(264.321407, 26.644717) rotate(90.000000) translate(-264.321407, -26.644717) "></path> + <path d="M265.812846,26.6447173 C265.812846,27.4711464 265.145146,28.141449 264.321925,28.141449 C263.497667,28.141449 262.829967,27.4711464 262.829967,26.6447173 C262.829967,25.8182883 263.497667,25.1479856 264.321925,25.1479856 C265.145146,25.1479856 265.812846,25.8182883 265.812846,26.6447173 L265.812846,26.6447173 Z" id="Stroke-151" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 26.644717) rotate(90.000000) translate(-264.321407, -26.644717) "></path> + <path d="M265.812846,35.5684121 C265.812846,36.3948411 265.145146,37.0651438 264.321925,37.0651438 C263.497667,37.0651438 262.829967,36.3948411 262.829967,35.5684121 C262.829967,34.7419831 263.497667,34.0716804 264.321925,34.0716804 C265.145146,34.0716804 265.812846,34.7419831 265.812846,35.5684121" id="Fill-153" fill="#FFFFFF" transform="translate(264.321407, 35.568412) rotate(90.000000) translate(-264.321407, -35.568412) "></path> + <path d="M265.812846,35.5684121 C265.812846,36.3948411 265.145146,37.0651438 264.321925,37.0651438 C263.497667,37.0651438 262.829967,36.3948411 262.829967,35.5684121 C262.829967,34.7419831 263.497667,34.0716804 264.321925,34.0716804 C265.145146,34.0716804 265.812846,34.7419831 265.812846,35.5684121 L265.812846,35.5684121 Z" id="Stroke-155" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 35.568412) rotate(90.000000) translate(-264.321407, -35.568412) "></path> + <path d="M265.812846,44.4921069 C265.812846,45.3185359 265.145146,45.9888386 264.321925,45.9888386 C263.497667,45.9888386 262.829967,45.3185359 262.829967,44.4921069 C262.829967,43.6656779 263.497667,42.9953752 264.321925,42.9953752 C265.145146,42.9953752 265.812846,43.6656779 265.812846,44.4921069" id="Fill-157" fill="#FFFFFF" transform="translate(264.321407, 44.492107) rotate(90.000000) translate(-264.321407, -44.492107) "></path> + <path d="M265.812846,44.4921069 C265.812846,45.3185359 265.145146,45.9888386 264.321925,45.9888386 C263.497667,45.9888386 262.829967,45.3185359 262.829967,44.4921069 C262.829967,43.6656779 263.497667,42.9953752 264.321925,42.9953752 C265.145146,42.9953752 265.812846,43.6656779 265.812846,44.4921069 L265.812846,44.4921069 Z" id="Stroke-159" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 44.492107) rotate(90.000000) translate(-264.321407, -44.492107) "></path> + <path d="M265.812846,53.4158017 C265.812846,54.2422307 265.145146,54.9125333 264.321925,54.9125333 C263.497667,54.9125333 262.829967,54.2422307 262.829967,53.4158017 C262.829967,52.5893726 263.497667,51.91907 264.321925,51.91907 C265.145146,51.91907 265.812846,52.5893726 265.812846,53.4158017" id="Fill-161" fill="#FFFFFF" transform="translate(264.321407, 53.415802) rotate(90.000000) translate(-264.321407, -53.415802) "></path> + <path d="M265.812846,53.4158017 C265.812846,54.2422307 265.145146,54.9125333 264.321925,54.9125333 C263.497667,54.9125333 262.829967,54.2422307 262.829967,53.4158017 C262.829967,52.5893726 263.497667,51.91907 264.321925,51.91907 C265.145146,51.91907 265.812846,52.5893726 265.812846,53.4158017 L265.812846,53.4158017 Z" id="Stroke-163" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 53.415802) rotate(90.000000) translate(-264.321407, -53.415802) "></path> + <path d="M265.812846,62.3394964 C265.812846,63.1659255 265.145146,63.8362281 264.321925,63.8362281 C263.497667,63.8362281 262.829967,63.1659255 262.829967,62.3394964 C262.829967,61.5130674 263.497667,60.8427648 264.321925,60.8427648 C265.145146,60.8427648 265.812846,61.5130674 265.812846,62.3394964" id="Fill-165" fill="#FFFFFF" transform="translate(264.321407, 62.339496) rotate(90.000000) translate(-264.321407, -62.339496) "></path> + <path d="M265.812846,62.3394964 C265.812846,63.1659255 265.145146,63.8362281 264.321925,63.8362281 C263.497667,63.8362281 262.829967,63.1659255 262.829967,62.3394964 C262.829967,61.5130674 263.497667,60.8427648 264.321925,60.8427648 C265.145146,60.8427648 265.812846,61.5130674 265.812846,62.3394964 L265.812846,62.3394964 Z" id="Stroke-167" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 62.339496) rotate(90.000000) translate(-264.321407, -62.339496) "></path> + <path d="M265.812846,71.2631912 C265.812846,72.0896203 265.145146,72.7599229 264.321925,72.7599229 C263.497667,72.7599229 262.829967,72.0896203 262.829967,71.2631912 C262.829967,70.4367622 263.497667,69.7664595 264.321925,69.7664595 C265.145146,69.7664595 265.812846,70.4367622 265.812846,71.2631912" id="Fill-169" fill="#FFFFFF" transform="translate(264.321407, 71.263191) rotate(90.000000) translate(-264.321407, -71.263191) "></path> + <path d="M265.812846,71.2631912 C265.812846,72.0896203 265.145146,72.7599229 264.321925,72.7599229 C263.497667,72.7599229 262.829967,72.0896203 262.829967,71.2631912 C262.829967,70.4367622 263.497667,69.7664595 264.321925,69.7664595 C265.145146,69.7664595 265.812846,70.4367622 265.812846,71.2631912 L265.812846,71.2631912 Z" id="Stroke-171" stroke="#A3B1BF" stroke-width="0.81" transform="translate(264.321407, 71.263191) rotate(90.000000) translate(-264.321407, -71.263191) "></path> + <path d="M263.92334,136.046978 C261.534548,136.046978 259.597801,134.102684 259.597801,131.704582 C259.597801,129.306481 261.534548,127.362187 263.92334,127.362187 C266.312132,127.362187 268.248879,129.306481 268.248879,131.704582 C268.248879,134.102684 266.312132,136.046978 263.92334,136.046978 Z" id="Fill-173" fill="#A3B1BF" transform="translate(263.923340, 131.704582) rotate(90.000000) translate(-263.923340, -131.704582) "></path> + <path d="M170.113409,94.8252648 C165.551479,94.8252648 161.818991,91.0782313 161.818991,86.4985238 L161.818991,73.9594928 C161.818991,69.3797853 165.551479,65.6327519 170.113409,65.6327519 L287.601762,65.6327519 C292.163691,65.6327519 295.896179,69.3797853 295.896179,73.9594928 L295.896179,86.4985238 C295.896179,91.0782313 292.163691,94.8252648 287.601762,94.8252648 L170.113409,94.8252648 Z" id="Fill-175" fill="#F0F2F5" transform="translate(228.857585, 80.229008) rotate(90.000000) translate(-228.857585, -80.229008) "></path> + <path d="M170.113409,94.8252648 C165.551479,94.8252648 161.818991,91.0782313 161.818991,86.4985238 L161.818991,73.9594928 C161.818991,69.3797853 165.551479,65.6327519 170.113409,65.6327519 L287.601762,65.6327519 C292.163691,65.6327519 295.896179,69.3797853 295.896179,73.9594928 L295.896179,86.4985238 C295.896179,91.0782313 292.163691,94.8252648 287.601762,94.8252648 L170.113409,94.8252648 L170.113409,94.8252648 Z" id="Stroke-177" stroke="#A3B1BF" stroke-width="1.62" transform="translate(228.857585, 80.229008) rotate(90.000000) translate(-228.857585, -80.229008) "></path> + <path d="M237.508146,22.5884924 C237.508146,23.4149215 236.840446,24.0852241 236.017225,24.0852241 C235.192967,24.0852241 234.525266,23.4149215 234.525266,22.5884924 C234.525266,21.7620634 235.192967,21.0917607 236.017225,21.0917607 C236.840446,21.0917607 237.508146,21.7620634 237.508146,22.5884924" id="Fill-179" transform="translate(236.016706, 22.588492) rotate(90.000000) translate(-236.016706, -22.588492) "></path> + <path d="M237.508146,22.5884924 C237.508146,23.4149215 236.840446,24.0852241 236.017225,24.0852241 C235.192967,24.0852241 234.525266,23.4149215 234.525266,22.5884924 C234.525266,21.7620634 235.192967,21.0917607 236.017225,21.0917607 C236.840446,21.0917607 237.508146,21.7620634 237.508146,22.5884924 L237.508146,22.5884924 Z" id="Stroke-181" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 22.588492) rotate(90.000000) translate(-236.016706, -22.588492) "></path> + <path d="M237.508146,31.5121872 C237.508146,32.3386162 236.840446,33.0089189 236.017225,33.0089189 C235.192967,33.0089189 234.525266,32.3386162 234.525266,31.5121872 C234.525266,30.6857582 235.192967,30.0154555 236.017225,30.0154555 C236.840446,30.0154555 237.508146,30.6857582 237.508146,31.5121872" id="Fill-183" transform="translate(236.016706, 31.512187) rotate(90.000000) translate(-236.016706, -31.512187) "></path> + <path d="M237.508146,31.5121872 C237.508146,32.3386162 236.840446,33.0089189 236.017225,33.0089189 C235.192967,33.0089189 234.525266,32.3386162 234.525266,31.5121872 C234.525266,30.6857582 235.192967,30.0154555 236.017225,30.0154555 C236.840446,30.0154555 237.508146,30.6857582 237.508146,31.5121872 L237.508146,31.5121872 Z" id="Stroke-185" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 31.512187) rotate(90.000000) translate(-236.016706, -31.512187) "></path> + <path d="M237.508146,40.435882 C237.508146,41.262311 236.840446,41.9326137 236.017225,41.9326137 C235.192967,41.9326137 234.525266,41.262311 234.525266,40.435882 C234.525266,39.609453 235.192967,38.9391503 236.017225,38.9391503 C236.840446,38.9391503 237.508146,39.609453 237.508146,40.435882" id="Fill-187" transform="translate(236.016706, 40.435882) rotate(90.000000) translate(-236.016706, -40.435882) "></path> + <path d="M237.508146,40.435882 C237.508146,41.262311 236.840446,41.9326137 236.017225,41.9326137 C235.192967,41.9326137 234.525266,41.262311 234.525266,40.435882 C234.525266,39.609453 235.192967,38.9391503 236.017225,38.9391503 C236.840446,38.9391503 237.508146,39.609453 237.508146,40.435882 L237.508146,40.435882 Z" id="Stroke-189" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 40.435882) rotate(90.000000) translate(-236.016706, -40.435882) "></path> + <path d="M237.508146,49.3595768 C237.508146,50.1860058 236.840446,50.8563085 236.017225,50.8563085 C235.192967,50.8563085 234.525266,50.1860058 234.525266,49.3595768 C234.525266,48.5331477 235.192967,47.8628451 236.017225,47.8628451 C236.840446,47.8628451 237.508146,48.5331477 237.508146,49.3595768" id="Fill-191" transform="translate(236.016706, 49.359577) rotate(90.000000) translate(-236.016706, -49.359577) "></path> + <path d="M237.508146,49.3595768 C237.508146,50.1860058 236.840446,50.8563085 236.017225,50.8563085 C235.192967,50.8563085 234.525266,50.1860058 234.525266,49.3595768 C234.525266,48.5331477 235.192967,47.8628451 236.017225,47.8628451 C236.840446,47.8628451 237.508146,48.5331477 237.508146,49.3595768 L237.508146,49.3595768 Z" id="Stroke-193" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 49.359577) rotate(90.000000) translate(-236.016706, -49.359577) "></path> + <path d="M237.508146,58.2832715 C237.508146,59.1097006 236.840446,59.7800032 236.017225,59.7800032 C235.192967,59.7800032 234.525266,59.1097006 234.525266,58.2832715 C234.525266,57.4568425 235.192967,56.7865399 236.017225,56.7865399 C236.840446,56.7865399 237.508146,57.4568425 237.508146,58.2832715" id="Fill-195" transform="translate(236.016706, 58.283272) rotate(90.000000) translate(-236.016706, -58.283272) "></path> + <path d="M237.508146,58.2832715 C237.508146,59.1097006 236.840446,59.7800032 236.017225,59.7800032 C235.192967,59.7800032 234.525266,59.1097006 234.525266,58.2832715 C234.525266,57.4568425 235.192967,56.7865399 236.017225,56.7865399 C236.840446,56.7865399 237.508146,57.4568425 237.508146,58.2832715 L237.508146,58.2832715 Z" id="Stroke-197" stroke-opacity="0.85" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 58.283272) rotate(90.000000) translate(-236.016706, -58.283272) "></path> + <path d="M237.508146,67.2069663 C237.508146,68.0333954 236.840446,68.703698 236.017225,68.703698 C235.192967,68.703698 234.525266,68.0333954 234.525266,67.2069663 C234.525266,66.3805373 235.192967,65.7102346 236.017225,65.7102346 C236.840446,65.7102346 237.508146,66.3805373 237.508146,67.2069663" id="Fill-199" transform="translate(236.016706, 67.206966) rotate(90.000000) translate(-236.016706, -67.206966) "></path> + <path d="M237.508146,67.2069663 C237.508146,68.0333954 236.840446,68.703698 236.017225,68.703698 C235.192967,68.703698 234.525266,68.0333954 234.525266,67.2069663 C234.525266,66.3805373 235.192967,65.7102346 236.017225,65.7102346 C236.840446,65.7102346 237.508146,66.3805373 237.508146,67.2069663 L237.508146,67.2069663 Z" id="Stroke-201" stroke="#A3B1BF" stroke-width="0.81" transform="translate(236.016706, 67.206966) rotate(90.000000) translate(-236.016706, -67.206966) "></path> + <path d="M223.760149,22.5884924 C223.760149,23.4149215 223.092448,24.0852241 222.269227,24.0852241 C221.44497,24.0852241 220.777269,23.4149215 220.777269,22.5884924 C220.777269,21.7620634 221.44497,21.0917607 222.269227,21.0917607 C223.092448,21.0917607 223.760149,21.7620634 223.760149,22.5884924" id="Fill-203" transform="translate(222.268709, 22.588492) rotate(90.000000) translate(-222.268709, -22.588492) "></path> + <path d="M223.760149,22.5884924 C223.760149,23.4149215 223.092448,24.0852241 222.269227,24.0852241 C221.44497,24.0852241 220.777269,23.4149215 220.777269,22.5884924 C220.777269,21.7620634 221.44497,21.0917607 222.269227,21.0917607 C223.092448,21.0917607 223.760149,21.7620634 223.760149,22.5884924 L223.760149,22.5884924 Z" id="Stroke-205" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 22.588492) rotate(90.000000) translate(-222.268709, -22.588492) "></path> + <path d="M223.760149,31.5121872 C223.760149,32.3386162 223.092448,33.0089189 222.269227,33.0089189 C221.44497,33.0089189 220.777269,32.3386162 220.777269,31.5121872 C220.777269,30.6857582 221.44497,30.0154555 222.269227,30.0154555 C223.092448,30.0154555 223.760149,30.6857582 223.760149,31.5121872" id="Fill-207" transform="translate(222.268709, 31.512187) rotate(90.000000) translate(-222.268709, -31.512187) "></path> + <path d="M223.760149,31.5121872 C223.760149,32.3386162 223.092448,33.0089189 222.269227,33.0089189 C221.44497,33.0089189 220.777269,32.3386162 220.777269,31.5121872 C220.777269,30.6857582 221.44497,30.0154555 222.269227,30.0154555 C223.092448,30.0154555 223.760149,30.6857582 223.760149,31.5121872 L223.760149,31.5121872 Z" id="Stroke-209" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 31.512187) rotate(90.000000) translate(-222.268709, -31.512187) "></path> + <path d="M223.760149,40.435882 C223.760149,41.262311 223.092448,41.9326137 222.269227,41.9326137 C221.44497,41.9326137 220.777269,41.262311 220.777269,40.435882 C220.777269,39.609453 221.44497,38.9391503 222.269227,38.9391503 C223.092448,38.9391503 223.760149,39.609453 223.760149,40.435882" id="Fill-211" transform="translate(222.268709, 40.435882) rotate(90.000000) translate(-222.268709, -40.435882) "></path> + <path d="M223.760149,40.435882 C223.760149,41.262311 223.092448,41.9326137 222.269227,41.9326137 C221.44497,41.9326137 220.777269,41.262311 220.777269,40.435882 C220.777269,39.609453 221.44497,38.9391503 222.269227,38.9391503 C223.092448,38.9391503 223.760149,39.609453 223.760149,40.435882 L223.760149,40.435882 Z" id="Stroke-213" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 40.435882) rotate(90.000000) translate(-222.268709, -40.435882) "></path> + <path d="M223.760149,49.3595768 C223.760149,50.1860058 223.092448,50.8563085 222.269227,50.8563085 C221.44497,50.8563085 220.777269,50.1860058 220.777269,49.3595768 C220.777269,48.5331477 221.44497,47.8628451 222.269227,47.8628451 C223.092448,47.8628451 223.760149,48.5331477 223.760149,49.3595768" id="Fill-215" transform="translate(222.268709, 49.359577) rotate(90.000000) translate(-222.268709, -49.359577) "></path> + <path d="M223.760149,49.3595768 C223.760149,50.1860058 223.092448,50.8563085 222.269227,50.8563085 C221.44497,50.8563085 220.777269,50.1860058 220.777269,49.3595768 C220.777269,48.5331477 221.44497,47.8628451 222.269227,47.8628451 C223.092448,47.8628451 223.760149,48.5331477 223.760149,49.3595768 L223.760149,49.3595768 Z" id="Stroke-217" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 49.359577) rotate(90.000000) translate(-222.268709, -49.359577) "></path> + <path d="M223.760149,58.2832715 C223.760149,59.1097006 223.092448,59.7800032 222.269227,59.7800032 C221.44497,59.7800032 220.777269,59.1097006 220.777269,58.2832715 C220.777269,57.4568425 221.44497,56.7865399 222.269227,56.7865399 C223.092448,56.7865399 223.760149,57.4568425 223.760149,58.2832715" id="Fill-219" transform="translate(222.268709, 58.283272) rotate(90.000000) translate(-222.268709, -58.283272) "></path> + <path d="M223.760149,58.2832715 C223.760149,59.1097006 223.092448,59.7800032 222.269227,59.7800032 C221.44497,59.7800032 220.777269,59.1097006 220.777269,58.2832715 C220.777269,57.4568425 221.44497,56.7865399 222.269227,56.7865399 C223.092448,56.7865399 223.760149,57.4568425 223.760149,58.2832715 L223.760149,58.2832715 Z" id="Stroke-221" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 58.283272) rotate(90.000000) translate(-222.268709, -58.283272) "></path> + <path d="M223.760149,67.2069663 C223.760149,68.0333954 223.092448,68.703698 222.269227,68.703698 C221.44497,68.703698 220.777269,68.0333954 220.777269,67.2069663 C220.777269,66.3805373 221.44497,65.7102346 222.269227,65.7102346 C223.092448,65.7102346 223.760149,66.3805373 223.760149,67.2069663" id="Fill-223" transform="translate(222.268709, 67.206966) rotate(90.000000) translate(-222.268709, -67.206966) "></path> + <path d="M223.760149,67.2069663 C223.760149,68.0333954 223.092448,68.703698 222.269227,68.703698 C221.44497,68.703698 220.777269,68.0333954 220.777269,67.2069663 C220.777269,66.3805373 221.44497,65.7102346 222.269227,65.7102346 C223.092448,65.7102346 223.760149,66.3805373 223.760149,67.2069663 L223.760149,67.2069663 Z" id="Stroke-225" stroke="#A3B1BF" stroke-width="0.81" transform="translate(222.268709, 67.206966) rotate(90.000000) translate(-222.268709, -67.206966) "></path> + <path d="M230.229795,26.6447173 C230.229795,27.4711464 229.562094,28.141449 228.738873,28.141449 C227.914615,28.141449 227.246915,27.4711464 227.246915,26.6447173 C227.246915,25.8182883 227.914615,25.1479856 228.738873,25.1479856 C229.562094,25.1479856 230.229795,25.8182883 230.229795,26.6447173" id="Fill-227" transform="translate(228.738355, 26.644717) rotate(90.000000) translate(-228.738355, -26.644717) "></path> + <path d="M230.229795,26.6447173 C230.229795,27.4711464 229.562094,28.141449 228.738873,28.141449 C227.914615,28.141449 227.246915,27.4711464 227.246915,26.6447173 C227.246915,25.8182883 227.914615,25.1479856 228.738873,25.1479856 C229.562094,25.1479856 230.229795,25.8182883 230.229795,26.6447173 L230.229795,26.6447173 Z" id="Stroke-229" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 26.644717) rotate(90.000000) translate(-228.738355, -26.644717) "></path> + <path d="M230.229795,35.5684121 C230.229795,36.3948411 229.562094,37.0651438 228.738873,37.0651438 C227.914615,37.0651438 227.246915,36.3948411 227.246915,35.5684121 C227.246915,34.7419831 227.914615,34.0716804 228.738873,34.0716804 C229.562094,34.0716804 230.229795,34.7419831 230.229795,35.5684121" id="Fill-231" transform="translate(228.738355, 35.568412) rotate(90.000000) translate(-228.738355, -35.568412) "></path> + <path d="M230.229795,35.5684121 C230.229795,36.3948411 229.562094,37.0651438 228.738873,37.0651438 C227.914615,37.0651438 227.246915,36.3948411 227.246915,35.5684121 C227.246915,34.7419831 227.914615,34.0716804 228.738873,34.0716804 C229.562094,34.0716804 230.229795,34.7419831 230.229795,35.5684121 L230.229795,35.5684121 Z" id="Stroke-233" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 35.568412) rotate(90.000000) translate(-228.738355, -35.568412) "></path> + <path d="M230.229795,44.4921069 C230.229795,45.3185359 229.562094,45.9888386 228.738873,45.9888386 C227.914615,45.9888386 227.246915,45.3185359 227.246915,44.4921069 C227.246915,43.6656779 227.914615,42.9953752 228.738873,42.9953752 C229.562094,42.9953752 230.229795,43.6656779 230.229795,44.4921069" id="Fill-235" transform="translate(228.738355, 44.492107) rotate(90.000000) translate(-228.738355, -44.492107) "></path> + <path d="M230.229795,44.4921069 C230.229795,45.3185359 229.562094,45.9888386 228.738873,45.9888386 C227.914615,45.9888386 227.246915,45.3185359 227.246915,44.4921069 C227.246915,43.6656779 227.914615,42.9953752 228.738873,42.9953752 C229.562094,42.9953752 230.229795,43.6656779 230.229795,44.4921069 L230.229795,44.4921069 Z" id="Stroke-237" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 44.492107) rotate(90.000000) translate(-228.738355, -44.492107) "></path> + <path d="M230.229795,53.4158017 C230.229795,54.2422307 229.562094,54.9125333 228.738873,54.9125333 C227.914615,54.9125333 227.246915,54.2422307 227.246915,53.4158017 C227.246915,52.5893726 227.914615,51.91907 228.738873,51.91907 C229.562094,51.91907 230.229795,52.5893726 230.229795,53.4158017" id="Fill-239" transform="translate(228.738355, 53.415802) rotate(90.000000) translate(-228.738355, -53.415802) "></path> + <path d="M230.229795,53.4158017 C230.229795,54.2422307 229.562094,54.9125333 228.738873,54.9125333 C227.914615,54.9125333 227.246915,54.2422307 227.246915,53.4158017 C227.246915,52.5893726 227.914615,51.91907 228.738873,51.91907 C229.562094,51.91907 230.229795,52.5893726 230.229795,53.4158017 L230.229795,53.4158017 Z" id="Stroke-241" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 53.415802) rotate(90.000000) translate(-228.738355, -53.415802) "></path> + <path d="M230.229795,62.3394964 C230.229795,63.1659255 229.562094,63.8362281 228.738873,63.8362281 C227.914615,63.8362281 227.246915,63.1659255 227.246915,62.3394964 C227.246915,61.5130674 227.914615,60.8427648 228.738873,60.8427648 C229.562094,60.8427648 230.229795,61.5130674 230.229795,62.3394964" id="Fill-243" transform="translate(228.738355, 62.339496) rotate(90.000000) translate(-228.738355, -62.339496) "></path> + <path d="M230.229795,62.3394964 C230.229795,63.1659255 229.562094,63.8362281 228.738873,63.8362281 C227.914615,63.8362281 227.246915,63.1659255 227.246915,62.3394964 C227.246915,61.5130674 227.914615,60.8427648 228.738873,60.8427648 C229.562094,60.8427648 230.229795,61.5130674 230.229795,62.3394964 L230.229795,62.3394964 Z" id="Stroke-245" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 62.339496) rotate(90.000000) translate(-228.738355, -62.339496) "></path> + <path d="M230.229795,71.2631912 C230.229795,72.0896203 229.562094,72.7599229 228.738873,72.7599229 C227.914615,72.7599229 227.246915,72.0896203 227.246915,71.2631912 C227.246915,70.4367622 227.914615,69.7664595 228.738873,69.7664595 C229.562094,69.7664595 230.229795,70.4367622 230.229795,71.2631912" id="Fill-247" transform="translate(228.738355, 71.263191) rotate(90.000000) translate(-228.738355, -71.263191) "></path> + <path d="M230.229795,71.2631912 C230.229795,72.0896203 229.562094,72.7599229 228.738873,72.7599229 C227.914615,72.7599229 227.246915,72.0896203 227.246915,71.2631912 C227.246915,70.4367622 227.914615,69.7664595 228.738873,69.7664595 C229.562094,69.7664595 230.229795,70.4367622 230.229795,71.2631912 L230.229795,71.2631912 Z" id="Stroke-249" stroke="#A3B1BF" stroke-width="0.81" transform="translate(228.738355, 71.263191) rotate(90.000000) translate(-228.738355, -71.263191) "></path> + <path d="M233.474533,131.704582 C233.474533,134.102684 231.537786,136.046978 229.148994,136.046978 C226.760202,136.046978 224.823455,134.102684 224.823455,131.704582 C224.823455,129.306481 226.760202,127.362187 229.148994,127.362187 C231.537786,127.362187 233.474533,129.306481 233.474533,131.704582 L226.809752,131.704582" id="Fill-251" fill="#A3B1BF" transform="translate(229.148994, 131.704582) rotate(90.000000) translate(-229.148994, -131.704582) "></path> + <path d="M116.93208,108.951605 L112.95698,97.0641411 C111.505457,92.7217457 113.856924,87.977585 118.181426,86.5204054 C118.181426,86.5204054 144.947552,77.5008125 158.330615,72.991016 C182.074402,64.9898842 229.561977,48.9876206 229.561977,48.9876206 C233.887516,47.530441 238.61326,49.8900312 240.064784,54.2313857 L244.039883,66.1188493 C245.491406,70.4612446 243.140976,75.2054053 238.815437,76.662585 L127.434886,114.19537 C123.110384,115.652549 118.383603,113.292959 116.93208,108.951605 Z" id="Stroke-255" stroke="#A3B1BF" stroke-width="1.62" transform="translate(178.498482, 81.591495) rotate(90.000000) translate(-178.498482, -81.591495) "></path> + <path d="M170.986678,36.9877796 C170.205966,37.2511128 169.360972,36.8295715 169.098661,36.0447762 C168.83635,35.2610217 169.257292,34.412735 170.038004,34.1494018 C170.818716,33.8860686 171.66371,34.3086507 171.926021,35.0924052 C172.188332,35.8761597 171.76739,36.7254872 170.986678,36.9877796 Z" id="Fill-257" transform="translate(170.512341, 35.568641) rotate(90.000000) translate(-170.512341, -35.568641) "></path> + <path d="M170.986678,36.9877796 C170.205966,37.2511128 169.360972,36.8295715 169.098661,36.0447762 C168.83635,35.2610217 169.257292,34.412735 170.038004,34.1494018 C170.818716,33.8860686 171.66371,34.3086507 171.926021,35.0924052 C172.188332,35.8761597 171.76739,36.7254872 170.986678,36.9877796 Z" id="Stroke-259" stroke="#A3B1BF" stroke-width="0.81" transform="translate(170.512341, 35.568641) rotate(90.000000) translate(-170.512341, -35.568641) "></path> + <path d="M174.352138,44.0161 C174.614449,44.7998545 174.193507,45.649182 173.412795,45.9114744 C172.632083,46.1748075 171.787089,45.7532663 171.524778,44.968471 C171.262467,44.1847165 171.683409,43.3364297 172.464121,43.0730966 C173.244833,42.8097634 174.089827,43.2323455 174.352138,44.0161" id="Fill-261" transform="translate(172.938458, 44.492336) rotate(90.000000) translate(-172.938458, -44.492336) "></path> + <path d="M173.412795,45.9114744 C172.632083,46.1748075 171.787089,45.7532663 171.524778,44.968471 C171.262467,44.1847165 171.683409,43.3364297 172.464121,43.0730966 C173.244833,42.8097634 174.089827,43.2323455 174.352138,44.0161 C174.614449,44.7998545 174.193507,45.649182 173.412795,45.9114744 Z" id="Stroke-263" stroke="#A3B1BF" stroke-width="0.81" transform="translate(172.938458, 44.492336) rotate(90.000000) translate(-172.938458, -44.492336) "></path> + <path d="M177.586961,52.1285498 C177.849272,52.9123043 177.42833,53.7616318 176.647618,54.0239242 C175.866906,54.2872573 175.021912,53.8657161 174.759601,53.0809208 C174.49729,52.2971663 174.918232,51.4488795 175.698944,51.1855464 C176.479656,50.9222132 177.32465,51.3447953 177.586961,52.1285498" id="Fill-265" transform="translate(176.173281, 52.604786) rotate(90.000000) translate(-176.173281, -52.604786) "></path> + <path d="M176.647618,54.0239242 C175.866906,54.2872573 175.021912,53.8657161 174.759601,53.0809208 C174.49729,52.2971663 174.918232,51.4488795 175.698944,51.1855464 C176.479656,50.9222132 177.32465,51.3447953 177.586961,52.1285498 C177.849272,52.9123043 177.42833,53.7616318 176.647618,54.0239242 Z" id="Stroke-267" stroke="#A3B1BF" stroke-width="0.81" transform="translate(176.173281, 52.604786) rotate(90.000000) translate(-176.173281, -52.604786) "></path> + <path d="M180.013078,61.0522445 C180.275389,61.835999 179.854447,62.6853266 179.073735,62.9476189 C178.293023,63.2109521 177.448029,62.7894109 177.185718,62.0046155 C176.923407,61.220861 177.344349,60.3725743 178.125061,60.1092411 C178.905773,59.845908 179.750767,60.2684901 180.013078,61.0522445" id="Fill-269" transform="translate(178.599398, 61.528481) rotate(90.000000) translate(-178.599398, -61.528481) "></path> + <path d="M180.013078,61.0522445 C180.275389,61.835999 179.854447,62.6853266 179.073735,62.9476189 C178.293023,63.2109521 177.448029,62.7894109 177.185718,62.0046155 C176.923407,61.220861 177.344349,60.3725743 178.125061,60.1092411 C178.905773,59.845908 179.750767,60.2684901 180.013078,61.0522445 L180.013078,61.0522445 Z" id="Stroke-271" stroke="#A3B1BF" stroke-width="0.81" transform="translate(178.599398, 61.528481) rotate(90.000000) translate(-178.599398, -61.528481) "></path> + <path d="M183.247901,69.1646943 C183.510212,69.9484488 183.08927,70.7977764 182.308558,71.0600687 C181.527846,71.3234019 180.682852,70.9018607 180.420541,70.1170653 C180.15823,69.3333108 180.579172,68.4850241 181.359884,68.2216909 C182.140596,67.9583578 182.98559,68.3809399 183.247901,69.1646943" id="Fill-273" transform="translate(181.834221, 69.640931) rotate(90.000000) translate(-181.834221, -69.640931) "></path> + <path d="M183.247901,69.1646943 C183.510212,69.9484488 183.08927,70.7977764 182.308558,71.0600687 C181.527846,71.3234019 180.682852,70.9018607 180.420541,70.1170653 C180.15823,69.3333108 180.579172,68.4850241 181.359884,68.2216909 C182.140596,67.9583578 182.98559,68.3809399 183.247901,69.1646943 L183.247901,69.1646943 Z" id="Stroke-275" stroke="#A3B1BF" stroke-width="0.81" transform="translate(181.834221, 69.640931) rotate(90.000000) translate(-181.834221, -69.640931) "></path> + <path d="M185.674018,78.0883891 C185.936329,78.8721436 185.515387,79.7214712 184.734675,79.9837635 C183.953963,80.2470967 183.108969,79.8255554 182.846658,79.0407601 C182.584347,78.2570056 183.005289,77.4087189 183.786001,77.1453857 C184.566713,76.8820525 185.411707,77.3046346 185.674018,78.0883891" id="Fill-277" transform="translate(184.260338, 78.564625) rotate(90.000000) translate(-184.260338, -78.564625) "></path> + <path d="M185.674018,78.0883891 C185.936329,78.8721436 185.515387,79.7214712 184.734675,79.9837635 C183.953963,80.2470967 183.108969,79.8255554 182.846658,79.0407601 C182.584347,78.2570056 183.005289,77.4087189 183.786001,77.1453857 C184.566713,76.8820525 185.411707,77.3046346 185.674018,78.0883891 L185.674018,78.0883891 Z" id="Stroke-279" stroke="#A3B1BF" stroke-width="0.81" transform="translate(184.260338, 78.564625) rotate(90.000000) translate(-184.260338, -78.564625) "></path> + <path d="M168.691198,39.9598751 C168.953509,40.7436296 168.532567,41.5929571 167.751855,41.8552495 C166.971143,42.1185826 166.126149,41.6970414 165.863838,40.9122461 C165.601527,40.1284916 166.022469,39.2802048 166.803181,39.0168717 C167.583893,38.7535385 168.428887,39.1761206 168.691198,39.9598751" id="Fill-281" transform="translate(167.277518, 40.436111) rotate(90.000000) translate(-167.277518, -40.436111) "></path> + <path d="M156.962155,41.8552495 C156.181443,42.1185826 155.336449,41.6970414 155.074139,40.9122461 C154.811828,40.1284916 155.232769,39.2802048 156.013481,39.0168717 C156.794193,38.7535385 157.639187,39.1761206 157.901498,39.9598751 C158.163809,40.7436296 157.742867,41.5929571 156.962155,41.8552495 Z" id="Stroke-283" stroke="#A3B1BF" stroke-width="0.81" transform="translate(156.487818, 40.436111) rotate(90.000000) translate(-156.487818, -40.436111) "></path> + <path d="M171.117315,48.0723249 C171.379626,48.8560794 170.958684,49.7054069 170.177972,49.9676993 C169.39726,50.2310324 168.552266,49.8094912 168.289955,49.0246959 C168.027644,48.2409414 168.448586,47.3926546 169.229298,47.1293215 C170.01001,46.8659883 170.855004,47.2885704 171.117315,48.0723249" id="Fill-285" transform="translate(169.703635, 48.548561) rotate(90.000000) translate(-169.703635, -48.548561) "></path> + <path d="M160.327615,48.0723249 C160.589926,48.8560794 160.168985,49.7054069 159.388273,49.9676993 C158.60756,50.2310324 157.762567,49.8094912 157.500256,49.0246959 C157.237945,48.2409414 157.658886,47.3926546 158.439598,47.1293215 C159.220311,46.8659883 160.065304,47.2885704 160.327615,48.0723249 L160.327615,48.0723249 Z" id="Stroke-287" stroke="#A3B1BF" stroke-width="0.81" transform="translate(158.913936, 48.548561) rotate(90.000000) translate(-158.913936, -48.548561) "></path> + <path d="M174.352138,56.9960196 C174.614449,57.7797741 174.193507,58.6291017 173.412795,58.891394 C172.632083,59.1547272 171.787089,58.733186 171.524778,57.9483906 C171.262467,57.1646361 171.683409,56.3163494 172.464121,56.0530162 C173.244833,55.7896831 174.089827,56.2122652 174.352138,56.9960196" id="Fill-289" transform="translate(172.938458, 57.472256) rotate(90.000000) translate(-172.938458, -57.472256) "></path> + <path d="M163.562438,56.9960196 C163.824749,57.7797741 163.403807,58.6291017 162.623095,58.891394 C161.842383,59.1547272 160.99739,58.733186 160.735079,57.9483906 C160.472768,57.1646361 160.893709,56.3163494 161.674421,56.0530162 C162.455133,55.7896831 163.300127,56.2122652 163.562438,56.9960196 L163.562438,56.9960196 Z" id="Stroke-291" stroke="#A3B1BF" stroke-width="0.81" transform="translate(162.148758, 57.472256) rotate(90.000000) translate(-162.148758, -57.472256) "></path> + <path d="M166.265081,65.1084694 C166.527392,65.8922239 166.10645,66.7415515 165.325738,67.0038438 C164.545026,67.267177 163.700032,66.8456358 163.437721,66.0608404 C163.17541,65.2770859 163.596352,64.4287992 164.377064,64.165466 C165.157776,63.9021329 166.00277,64.324715 166.265081,65.1084694" id="Fill-293" transform="translate(164.851401, 65.584706) rotate(90.000000) translate(-164.851401, -65.584706) "></path> + <path d="M166.265081,65.1084694 C166.527392,65.8922239 166.10645,66.7415515 165.325738,67.0038438 C164.545026,67.267177 163.700032,66.8456358 163.437721,66.0608404 C163.17541,65.2770859 163.596352,64.4287992 164.377064,64.165466 C165.157776,63.9021329 166.00277,64.324715 166.265081,65.1084694 L166.265081,65.1084694 Z" id="Stroke-295" stroke="#A3B1BF" stroke-width="0.81" transform="translate(164.851401, 65.584706) rotate(90.000000) translate(-164.851401, -65.584706) "></path> + <path d="M169.499903,74.0321642 C169.762214,74.8159187 169.341273,75.6652463 168.560561,75.9275386 C167.779849,76.1908718 166.934855,75.7693305 166.672544,74.9845352 C166.410233,74.2007807 166.831175,73.352494 167.611887,73.0891608 C168.392599,72.8258276 169.237592,73.2484097 169.499903,74.0321642" id="Fill-297" transform="translate(168.086224, 74.508400) rotate(90.000000) translate(-168.086224, -74.508400) "></path> + <path d="M169.499903,74.0321642 C169.762214,74.8159187 169.341273,75.6652463 168.560561,75.9275386 C167.779849,76.1908718 166.934855,75.7693305 166.672544,74.9845352 C166.410233,74.2007807 166.831175,73.352494 167.611887,73.0891608 C168.392599,72.8258276 169.237592,73.2484097 169.499903,74.0321642 L169.499903,74.0321642 Z" id="Stroke-299" stroke="#A3B1BF" stroke-width="0.81" transform="translate(168.086224, 74.508400) rotate(90.000000) translate(-168.086224, -74.508400) "></path> + <path d="M172.734726,82.144614 C172.997037,82.9283685 172.576096,83.7776961 171.795384,84.0399884 C171.014671,84.3033216 170.169678,83.8817803 169.907367,83.096985 C169.645056,82.3132305 170.065997,81.4649438 170.84671,81.2016106 C171.627422,80.9382774 172.472415,81.3608595 172.734726,82.144614" id="Fill-301" transform="translate(171.321047, 82.620850) rotate(90.000000) translate(-171.321047, -82.620850) "></path> + <path d="M172.734726,82.144614 C172.997037,82.9283685 172.576096,83.7776961 171.795384,84.0399884 C171.014671,84.3033216 170.169678,83.8817803 169.907367,83.096985 C169.645056,82.3132305 170.065997,81.4649438 170.84671,81.2016106 C171.627422,80.9382774 172.472415,81.3608595 172.734726,82.144614 L172.734726,82.144614 Z" id="Stroke-303" stroke="#A3B1BF" stroke-width="0.81" transform="translate(171.321047, 82.620850) rotate(90.000000) translate(-171.321047, -82.620850) "></path> + <path d="M166.265081,41.582365 C166.527392,42.3661195 166.10645,43.2154471 165.325738,43.4777394 C164.545026,43.7410726 163.700032,43.3195314 163.437721,42.534736 C163.17541,41.7509815 163.596352,40.9026948 164.377064,40.6393616 C165.157776,40.3760284 166.00277,40.7986105 166.265081,41.582365" id="Fill-305" transform="translate(164.851401, 42.058601) rotate(90.000000) translate(-164.851401, -42.058601) "></path> + <path d="M166.265081,41.582365 C166.527392,42.3661195 166.10645,43.2154471 165.325738,43.4777394 C164.545026,43.7410726 163.700032,43.3195314 163.437721,42.534736 C163.17541,41.7509815 163.596352,40.9026948 164.377064,40.6393616 C165.157776,40.3760284 166.00277,40.7986105 166.265081,41.582365 L166.265081,41.582365 Z" id="Stroke-307" stroke="#A3B1BF" stroke-width="0.81" transform="translate(164.851401, 42.058601) rotate(90.000000) translate(-164.851401, -42.058601) "></path> + <path d="M169.499903,50.5060598 C169.762214,51.2898143 169.341273,52.1391419 168.560561,52.4014342 C167.779849,52.6647674 166.934855,52.2432261 166.672544,51.4584308 C166.410233,50.6746763 166.831175,49.8263896 167.611887,49.5630564 C168.392599,49.2997232 169.237592,49.7223053 169.499903,50.5060598" id="Fill-309" transform="translate(168.086224, 50.982296) rotate(90.000000) translate(-168.086224, -50.982296) "></path> + <path d="M169.499903,50.5060598 C169.762214,51.2898143 169.341273,52.1391419 168.560561,52.4014342 C167.779849,52.6647674 166.934855,52.2432261 166.672544,51.4584308 C166.410233,50.6746763 166.831175,49.8263896 167.611887,49.5630564 C168.392599,49.2997232 169.237592,49.7223053 169.499903,50.5060598 L169.499903,50.5060598 Z" id="Stroke-311" stroke-opacity="0.85" stroke="#A3B1BF" stroke-width="0.81" transform="translate(168.086224, 50.982296) rotate(90.000000) translate(-168.086224, -50.982296) "></path> + <path d="M171.926021,58.6185096 C172.188332,59.4022641 171.76739,60.2515917 170.986678,60.513884 C170.205966,60.7772172 169.360972,60.3556759 169.098661,59.5708806 C168.83635,58.7871261 169.257292,57.9388394 170.038004,57.6755062 C170.818716,57.412173 171.66371,57.8347551 171.926021,58.6185096" id="Fill-313" transform="translate(170.512341, 59.094746) rotate(90.000000) translate(-170.512341, -59.094746) "></path> + <path d="M171.926021,58.6185096 C172.188332,59.4022641 171.76739,60.2515917 170.986678,60.513884 C170.205966,60.7772172 169.360972,60.3556759 169.098661,59.5708806 C168.83635,58.7871261 169.257292,57.9388394 170.038004,57.6755062 C170.818716,57.412173 171.66371,57.8347551 171.926021,58.6185096 L171.926021,58.6185096 Z" id="Stroke-315" stroke="#A3B1BF" stroke-width="0.81" transform="translate(170.512341, 59.094746) rotate(90.000000) translate(-170.512341, -59.094746) "></path> + <path d="M175.160844,67.5422044 C175.423154,68.3259589 175.002213,69.1752864 174.221501,69.4375788 C173.440789,69.700912 172.595795,69.2793707 172.333484,68.4945754 C172.071173,67.7108209 172.492115,66.8625342 173.272827,66.599201 C174.053539,66.3358678 174.898533,66.7584499 175.160844,67.5422044" id="Fill-317" transform="translate(173.747164, 68.018441) rotate(90.000000) translate(-173.747164, -68.018441) "></path> + <path d="M175.160844,67.5422044 C175.423154,68.3259589 175.002213,69.1752864 174.221501,69.4375788 C173.440789,69.700912 172.595795,69.2793707 172.333484,68.4945754 C172.071173,67.7108209 172.492115,66.8625342 173.272827,66.599201 C174.053539,66.3358678 174.898533,66.7584499 175.160844,67.5422044 L175.160844,67.5422044 Z" id="Stroke-319" stroke="#A3B1BF" stroke-width="0.81" transform="translate(173.747164, 68.018441) rotate(90.000000) translate(-173.747164, -68.018441) "></path> + <path d="M177.586961,75.6546542 C177.849272,76.4384087 177.42833,77.2877362 176.647618,77.5500286 C175.866906,77.8133618 175.021912,77.3918205 174.759601,76.6070252 C174.49729,75.8232707 174.918232,74.974984 175.698944,74.7116508 C176.479656,74.4483176 177.32465,74.8708997 177.586961,75.6546542" id="Fill-321" transform="translate(176.173281, 76.130890) rotate(90.000000) translate(-176.173281, -76.130890) "></path> + <path d="M177.586961,75.6546542 C177.849272,76.4384087 177.42833,77.2877362 176.647618,77.5500286 C175.866906,77.8133618 175.021912,77.3918205 174.759601,76.6070252 C174.49729,75.8232707 174.918232,74.974984 175.698944,74.7116508 C176.479656,74.4483176 177.32465,74.8708997 177.586961,75.6546542 L177.586961,75.6546542 Z" id="Stroke-323" stroke="#A3B1BF" stroke-width="0.81" transform="translate(176.173281, 76.130890) rotate(90.000000) translate(-176.173281, -76.130890) "></path> + <path d="M180.821784,84.578349 C181.084095,85.3621035 180.663153,86.211431 179.882441,86.4737234 C179.101729,86.7370565 178.256735,86.3155153 177.994424,85.53072 C177.732113,84.7469655 178.153055,83.8986787 178.933767,83.6353456 C179.714479,83.3720124 180.559473,83.7945945 180.821784,84.578349" id="Fill-325" transform="translate(179.408104, 85.054585) rotate(90.000000) translate(-179.408104, -85.054585) "></path> + <path d="M180.821784,84.578349 C181.084095,85.3621035 180.663153,86.211431 179.882441,86.4737234 C179.101729,86.7370565 178.256735,86.3155153 177.994424,85.53072 C177.732113,84.7469655 178.153055,83.8986787 178.933767,83.6353456 C179.714479,83.3720124 180.559473,83.7945945 180.821784,84.578349 L180.821784,84.578349 Z" id="Stroke-327" stroke="#A3B1BF" stroke-width="0.81" transform="translate(179.408104, 85.054585) rotate(90.000000) translate(-179.408104, -85.054585) "></path> + <path d="M199.285547,130.323988 C200.045523,132.597188 198.826243,135.059822 196.56083,135.82276 C194.296454,136.585697 191.844417,135.361666 191.084441,133.087425 C190.323428,130.814225 191.543745,128.352632 193.808121,127.588654 C196.073533,126.825716 198.525571,128.050788 199.285547,130.323988" id="Fill-329" fill="#A3B1BF" transform="translate(195.184790, 131.705757) rotate(90.000000) translate(-195.184790, -131.705757) "></path> + <polygon id="Stroke-333" stroke="#A3B1BF" stroke-width="0.81" transform="translate(194.281082, 12.765148) rotate(90.000000) translate(-194.281082, -12.765148) " points="192.77098 15.3911937 191.260359 12.7651478 192.77098 10.1391019 195.791185 10.1391019 197.301806 12.7651478 195.791185 15.3911937"></polygon> + <polygon id="Fill-335" transform="translate(263.829774, 193.672778) rotate(90.000000) translate(-263.829774, -193.672778) " points="262.319672 196.298824 260.809051 193.672778 262.319672 191.046732 265.339877 191.046732 266.850498 193.672778 265.339877 196.298824"></polygon> + <polygon id="Stroke-337" stroke="#A3B1BF" stroke-width="0.81" transform="translate(263.829774, 193.672778) rotate(90.000000) translate(-263.829774, -193.672778) " points="262.319672 196.298824 260.809051 193.672778 262.319672 191.046732 265.339877 191.046732 266.850498 193.672778 265.339877 196.298824"></polygon> + <polygon id="Stroke-341" stroke="#A3B1BF" stroke-width="0.81" transform="translate(199.942022, 45.214947) rotate(90.000000) translate(-199.942022, -45.214947) " points="196.921299 45.214947 198.43192 42.588901 201.452125 42.588901 202.962746 45.214947 201.452125 47.8409929 198.43192 47.8409929"></polygon> + <polygon id="Stroke-345" stroke="#A3B1BF" stroke-width="0.81" transform="translate(203.176845, 35.480007) rotate(90.000000) translate(-203.176845, -35.480007) " points="200.156122 35.4800072 201.666743 32.8539613 204.686948 32.8539613 206.197569 35.4800072 204.686948 38.1060531 201.666743 38.1060531"></polygon> + <path d="M28.7090531,149.674699 L408.800743,149.674699" id="Path-13-Copy" stroke="#A3B1BF" stroke-width="2.43"></path> + <path d="M126.73696,157.381526 C130.786107,157.381526 138.956903,157.381526 138.956903,157.381526 C138.956903,157.381526 146.694174,157.381526 150.585513,157.381526 C275.808174,157.381526 408.39639,157.381526 408.39639,157.381526 C408.39639,157.381526 348.147813,204.433735 274.15124,201.594378 C200.154666,198.75502 175.893495,186.586345 157.293263,179.67788 C138.693031,172.769415 101.923452,169.955823 76.4120034,175.634538 C50.9005548,181.313253 28.3047003,157.381526 28.3047003,157.381526 C28.3047003,157.381526 34.3629836,157.381526 126.73696,157.381526 Z" id="Path-22-Copy" fill-opacity="0.25" fill="#A3B1BF"></path> + <g id="Group-2" transform="translate(0.000000, 75.851406)"> + <ellipse id="Oval-40-Copy-2" stroke="#A3B1BF" stroke-width="2.43" fill-opacity="0.25" fill="#A3B1BF" cx="35.5830518" cy="35.6947791" rx="35.5830518" ry="35.6947791"></ellipse> + <ellipse id="Oval-40-Copy-3" fill="#F0F2F5" cx="35.8526204" cy="35.9651941" rx="30.4612489" ry="30.5568942"></ellipse> + </g> + <path d="M39.6265804,107.895582 L78.4444551,119.253012" id="Path-736" stroke="#A3B1BF" stroke-width="0.81"></path> + <path d="M32.7525817,115.60241 L65.9095164,140.751004" id="Path-736-Copy" stroke="#A3B1BF" stroke-width="0.81" transform="translate(49.331049, 128.176707) scale(-1, -1) translate(-49.331049, -128.176707) "></path> + <g id="Group" transform="translate(95.154052, 106.919777) rotate(19.000000) translate(-95.154052, -106.919777) translate(34.154052, 63.919777)" fill="#A3B1BF"> + <path d="M42.7522815,72.4570067 C42.7522815,75.8233475 45.3271005,78.562549 48.4926445,78.562549 C51.6578573,78.562549 54.2333386,75.8233475 54.2333386,72.4570067 C54.2333386,69.091018 51.6578573,66.3525208 48.4926445,66.3525208 C45.3271005,66.3525208 42.7522815,69.091018 42.7522815,72.4570067 M40.1907075,72.4570067 C40.1907075,67.5898976 43.9148573,63.6284609 48.4926445,63.6284609 C53.0707627,63.6284609 56.7949126,67.5898976 56.7949126,72.4570067 C56.7949126,77.3251722 53.0707627,81.2859046 48.4926445,81.2859046 C43.9148573,81.2859046 40.1907075,77.3251722 40.1907075,72.4570067 L54.193687,73.4098081" id="Fill-13" fill-opacity="0.4"></path> + <path d="M37.9000472,72.2309321 C37.9000472,78.1565371 42.4331326,82.9775175 48.0049535,82.9775175 C53.5774367,82.9775175 58.110191,78.1565371 58.110191,72.2309321 C58.110191,66.3056792 53.5774367,61.485051 48.0049535,61.485051 C42.4331326,61.485051 37.9000472,66.3056792 37.9000472,72.2309321 M35.3384731,72.2309321 C35.3384731,64.8035024 41.0205583,58.760991 48.0049535,58.760991 C54.9893488,58.760991 60.6724273,64.8035024 60.6724273,72.2309321 C60.6724273,79.6587139 54.9893488,85.7019295 48.0049535,85.7019295 C41.0205583,85.7019295 35.3384731,79.6587139 35.3384731,72.2309321" id="Fill-15"></path> + <path d="M1.80809546,66.1576486 C1.80809546,68.834124 3.79009311,71.0116629 6.22625634,71.0116629 C8.66270911,71.0116629 10.644562,68.834124 10.644562,66.1576486 C10.644562,63.4813322 8.66270911,61.3039523 6.22625634,61.3039523 C3.79009311,61.3039523 1.80809546,63.4813322 1.80809546,66.1576486 M0.688100292,66.1576486 C0.688100292,62.8028295 3.17247427,60.0735498 6.22625634,60.0735498 C9.2800384,60.0735498 11.7648467,62.8028295 11.7648467,66.1576486 C11.7648467,69.5126267 9.2800384,72.2422245 6.22625634,72.2422245 C3.17247427,72.2422245 0.688100292,69.5126267 0.688100292,66.1576486" id="Fill-15-Copy"></path> + <path d="M8.98009502,66.0939913 L39.179583,29.1533303 L87.9014765,24.076001 L44.6752454,68.7902332 L45.5153066,69.7089343 L8.98009502,66.0939913 Z M5.34865982,69.3835683 L46.1480843,73.419304 C47.0103308,73.4270508 47.6235721,72.9654113 47.8811865,72.2953123 L49.8354794,74.4316711 L93.1120414,29.6649719 L108.025528,67.5588426 C108.413605,68.5455044 109.312607,69.1391917 110.258627,69.1391917 C110.569884,69.1391917 110.886107,69.0747523 111.192066,68.9391832 C112.424508,68.3905682 113.0053,66.8827574 112.490071,65.5728423 L88.7958421,5.36886461 L92.7040968,5.36886461 L92.7040968,12.726573 C92.7040968,13.562172 93.3408479,14.2400178 94.1272671,14.2400178 L108.786782,14.2400178 C109.171548,14.2400178 109.540751,14.0741657 109.809292,13.7794348 L117.408916,5.43506461 C117.934078,5.90550723 118.567187,6.70025945 118.772153,7.90031067 C119.120826,9.94441199 118.336394,13.6565422 112.619209,19.7367313 C112.062921,20.3272495 112.062921,21.2857411 112.619209,21.8769635 C112.896691,22.1727507 113.26159,22.3206444 113.625495,22.3206444 C113.989731,22.3206444 114.354298,22.1727507 114.63178,21.8769635 C119.954265,16.2168628 122.285045,11.3085547 121.560215,7.28796059 C120.892339,3.580408 117.884078,2.16415038 117.756265,2.10569718 C117.213553,1.85709502 116.581768,1.9916078 116.170513,2.44303552 L108.184137,11.2131281 L95.5507685,11.2131281 L95.5507685,5.36886461 L97.3534067,5.36886461 C98.6894914,5.36886461 99.7725975,4.21670276 99.7725975,2.7962196 C99.7725975,1.37538432 98.6894914,0.223222475 97.3534067,0.223222475 L85.1604334,0.223222475 C84.3508356,0.223222475 83.5948798,0.653874656 83.1465381,1.37045453 C82.6972031,2.08738654 82.6157466,2.99517176 82.9286587,3.78957186 L89.4140503,20.2684441 L40.3087153,25.3855639 L38.2463901,12.9619427 C37.9924181,11.9967607 37.0503708,11.4323 36.1411047,11.7044947 C35.232832,11.9752809 34.703365,12.9777884 34.9583303,13.9436747 L36.9981391,26.2845459 L4.21787189,66.3834403 C3.79767573,66.8968425 3.68310688,67.6183522 3.92184717,68.2504214 C4.1595941,68.883547 4.71058417,69.3198332 5.34865982,69.3835683 Z" id="Fill-17"></path> + </g> + <path d="M120.0928,133.044177 C120.0928,133.044177 117.26233,133.044177 117.26233,134.261044 C117.26233,135.477912 128.179857,144.401606 128.179857,144.401606 L120.0928,133.044177 Z" id="Path-731" fill="#A3B1BF"></path> + <path d="M146.375736,133.044177 C146.375736,133.044177 149.206206,133.044177 149.206206,134.261044 C149.206206,135.477912 138.288678,144.401606 138.288678,144.401606 L146.375736,133.044177 Z" id="Path-731-Copy-2" fill="#A3B1BF"></path> + <path d="M114.922075,137.687235 C114.922075,137.687235 112.297709,138.747548 112.753556,139.875807 C113.209402,141.004067 126.674832,145.188195 126.674832,145.188195 L114.922075,137.687235 Z" id="Path-731-Copy" fill="#A3B1BF"></path> + <path d="M150.02854,138.516693 C150.02854,138.516693 152.652906,139.580123 152.198396,140.708383 C151.743886,141.836643 138.288257,146.008745 138.288257,146.008745 L150.02854,138.516693 Z" id="Path-731-Copy-3" fill="#A3B1BF"></path> + <path d="M74.4009265,59.626506 C72.9743667,59.2687463 68.3698232,57.9570172 67.9312807,60.437751 C67.5752067,62.4519795 70.5119271,68.4526327 73.5922208,69.3614461 C80.4662194,71.3895585 88.1489236,68.5502009 95.0229222,70.5783133 C101.896921,72.6064258 101.500006,68.9632854 100.279509,67.7389559 C97.8533925,65.3052209 77.6357492,60.437751 74.4009265,59.626506 Z" id="Path-735" stroke="#A3B1BF" stroke-width="2.43"></path> + <g id="Group-2-Copy" transform="translate(346.684026, 76.257028)"> + <ellipse id="Oval-40-Copy-2" stroke="#A3B1BF" stroke-width="2.43" fill="#DCE1E7" cx="35.5830518" cy="35.6947791" rx="35.5830518" ry="35.6947791"></ellipse> + <ellipse id="Oval-40-Copy-3" fill="#F0F2F5" cx="35.8526204" cy="35.9651941" rx="30.4612489" ry="30.5568942"></ellipse> + </g> + <path d="M364.90109,93.2931727 C363.56683,94.0412049 361.930683,95.8872138 360.413184,99.4391645 C355.560949,110.796594 356.774008,120.937157 356.774008,120.937157 C356.774008,120.937157 358.391419,101.467276 364.861065,97.8166743" id="Path-738" fill="#A3B1BF"></path> + <path d="M408.39639,103.839357 C407.06213,104.58739 405.425983,106.433399 403.908483,109.985349 C399.056249,121.342779 400.269308,131.483341 400.269308,131.483341 C400.269308,131.483341 401.886718,112.013461 408.356365,108.362859" id="Path-738-Copy" fill="#A3B1BF" transform="translate(404.265457, 117.661349) scale(-1, -1) translate(-404.265457, -117.661349) "></path> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/images/favicon.ico b/src/main/resources/static/febs/images/favicon.ico new file mode 100644 index 0000000..4f92d34 --- /dev/null +++ b/src/main/resources/static/febs/images/favicon.ico Binary files differ diff --git a/src/main/resources/static/febs/images/logo.png b/src/main/resources/static/febs/images/logo.png new file mode 100644 index 0000000..5b714c6 --- /dev/null +++ b/src/main/resources/static/febs/images/logo.png Binary files differ diff --git a/src/main/resources/static/febs/images/side-bar-dark.svg b/src/main/resources/static/febs/images/side-bar-dark.svg new file mode 100644 index 0000000..6a03a6d --- /dev/null +++ b/src/main/resources/static/febs/images/side-bar-dark.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --> + <title>Group 5 Copy 5</title> + <desc>Created with Sketch.</desc> + <defs> + <filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1"> + <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> + <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect> + <filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4"> + <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> + <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> + </filter> + </defs> + <g id="配置面板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="setting-copy-2" transform="translate(-1190.000000, -136.000000)"> + <g id="Group-8" transform="translate(1167.000000, 0.000000)"> + <g id="Group-5-Copy-5" filter="url(#filter-1)" transform="translate(25.000000, 137.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Rectangle-18"> + <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use> + </g> + <rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="-1" y="0" width="49" height="10"></rect> + <rect id="Rectangle-18" fill="#303648" mask="url(#mask-3)" x="0" y="0" width="16" height="44"></rect> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/images/side-bar-light.svg b/src/main/resources/static/febs/images/side-bar-light.svg new file mode 100644 index 0000000..80222c2 --- /dev/null +++ b/src/main/resources/static/febs/images/side-bar-light.svg @@ -0,0 +1,40 @@ +<?xml version="1.0" encoding="UTF-8"?> +<svg width="52px" height="45px" viewBox="0 0 52 45" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> + <!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch --> + <title>Group 5</title> + <desc>Created with Sketch.</desc> + <defs> + <filter x="-9.4%" y="-6.2%" width="118.8%" height="122.5%" filterUnits="objectBoundingBox" id="filter-1"> + <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feGaussianBlur stdDeviation="1" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> + <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.15 0" type="matrix" in="shadowBlurOuter1" result="shadowMatrixOuter1"></feColorMatrix> + <feMerge> + <feMergeNode in="shadowMatrixOuter1"></feMergeNode> + <feMergeNode in="SourceGraphic"></feMergeNode> + </feMerge> + </filter> + <rect id="path-2" x="0" y="0" width="48" height="40" rx="4"></rect> + <filter x="-4.2%" y="-2.5%" width="108.3%" height="110.0%" filterUnits="objectBoundingBox" id="filter-4"> + <feOffset dx="0" dy="1" in="SourceAlpha" result="shadowOffsetOuter1"></feOffset> + <feGaussianBlur stdDeviation="0.5" in="shadowOffsetOuter1" result="shadowBlurOuter1"></feGaussianBlur> + <feColorMatrix values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.1 0" type="matrix" in="shadowBlurOuter1"></feColorMatrix> + </filter> + </defs> + <g id="配置面板" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> + <g id="setting-copy-2" transform="translate(-1254.000000, -136.000000)"> + <g id="Group-8" transform="translate(1167.000000, 0.000000)"> + <g id="Group-5" filter="url(#filter-1)" transform="translate(89.000000, 137.000000)"> + <mask id="mask-3" fill="white"> + <use xlink:href="#path-2"></use> + </mask> + <g id="Rectangle-18"> + <use fill="black" fill-opacity="1" filter="url(#filter-4)" xlink:href="#path-2"></use> + <use fill="#F0F2F5" fill-rule="evenodd" xlink:href="#path-2"></use> + </g> + <rect id="Rectangle-18" fill="#FFFFFF" mask="url(#mask-3)" x="0" y="0" width="16" height="44"></rect> + <rect id="Rectangle-11" fill="#FFFFFF" mask="url(#mask-3)" x="-1" y="0" width="49" height="10"></rect> + </g> + </g> + </g> + </g> +</svg> \ No newline at end of file diff --git a/src/main/resources/static/febs/index.js b/src/main/resources/static/febs/index.js new file mode 100644 index 0000000..cf90796 --- /dev/null +++ b/src/main/resources/static/febs/index.js @@ -0,0 +1,8 @@ +layui.extend({ + febs: 'lay/modules/febs', + validate: 'lay/modules/validate' +}).define(['febs', 'conf'], function (exports) { + layui.febs.initPage(); + console.log("\n %c FEBS-Shiro 2.0 %c https://github.com/wuyouzhuguli/FEBS-Shiro %c 如果该项目对您有帮助的话,还请点个star给予精神支持!🐤", "color: #fff; font-size: .84rem;background: #366ed8; padding:5px 0;", "font-size: .84rem;background: #fff; border: 2px solid #b0e0a8;border-left: none; padding:3px 0;"," font-size: .84rem;background: #fcf9ec; padding:5px 0;margin-left: 8px"); + exports('index', {}); +}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/data/dataSeries.js b/src/main/resources/static/febs/lay/data/dataSeries.js new file mode 100644 index 0000000..b4a5d88 --- /dev/null +++ b/src/main/resources/static/febs/lay/data/dataSeries.js @@ -0,0 +1,1793 @@ +var dataSeries = [ + [{ + "date": "2014-01-01", + "value": 20000000 + }, + { + "date": "2014-01-02", + "value": 10379978 + }, + { + "date": "2014-01-03", + "value": 30493749 + }, + { + "date": "2014-01-04", + "value": 10785250 + }, + { + "date": "2014-01-05", + "value": 33901904 + }, + { + "date": "2014-01-06", + "value": 11576838 + }, + { + "date": "2014-01-07", + "value": 14413854 + }, + { + "date": "2014-01-08", + "value": 15177211 + }, + { + "date": "2014-01-09", + "value": 16622100 + }, + { + "date": "2014-01-10", + "value": 17381072 + }, + { + "date": "2014-01-11", + "value": 18802310 + }, + { + "date": "2014-01-12", + "value": 15531790 + }, + { + "date": "2014-01-13", + "value": 15748881 + }, + { + "date": "2014-01-14", + "value": 18706437 + }, + { + "date": "2014-01-15", + "value": 19752685 + }, + { + "date": "2014-01-16", + "value": 21016418 + }, + { + "date": "2014-01-17", + "value": 25622924 + }, + { + "date": "2014-01-18", + "value": 25337480 + }, + { + "date": "2014-01-19", + "value": 22258882 + }, + { + "date": "2014-01-20", + "value": 23829538 + }, + { + "date": "2014-01-21", + "value": 24245689 + }, + { + "date": "2014-01-22", + "value": 26429711 + }, + { + "date": "2014-01-23", + "value": 26259017 + }, + { + "date": "2014-01-24", + "value": 25396183 + }, + { + "date": "2014-01-25", + "value": 23107346 + }, + { + "date": "2014-01-26", + "value": 28659852 + }, + { + "date": "2014-01-27", + "value": 25270783 + }, + { + "date": "2014-01-28", + "value": 26270783 + }, + { + "date": "2014-01-29", + "value": 27270783 + }, + { + "date": "2014-01-30", + "value": 28270783 + }, + { + "date": "2014-01-31", + "value": 29270783 + }, + { + "date": "2014-02-01", + "value": 30270783 + }, + { + "date": "2014-02-02", + "value": 31270783 + }, + { + "date": "2014-02-03", + "value": 32270783 + }, + { + "date": "2014-02-04", + "value": 33270783 + }, + { + "date": "2014-02-05", + "value": 28270783 + }, + { + "date": "2014-02-06", + "value": 27270783 + }, + { + "date": "2014-02-07", + "value": 35270783 + }, + { + "date": "2014-02-08", + "value": 34270783 + }, + { + "date": "2014-02-09", + "value": 28270783 + }, + { + "date": "2014-02-10", + "value": 35270783 + }, + { + "date": "2014-02-11", + "value": 36270783 + }, + { + "date": "2014-02-12", + "value": 34127078 + }, + { + "date": "2014-02-13", + "value": 33124078 + }, + { + "date": "2014-02-14", + "value": 36227078 + }, + { + "date": "2014-02-15", + "value": 37827078 + }, + { + "date": "2014-02-16", + "value": 36427073 + }, + { + "date": "2014-02-17", + "value": 37570783 + }, + { + "date": "2014-02-18", + "value": 38627073 + }, + { + "date": "2014-02-19", + "value": 37727078 + }, + { + "date": "2014-02-20", + "value": 38827073 + }, + { + "date": "2014-02-21", + "value": 40927078 + }, + { + "date": "2014-02-22", + "value": 41027078 + }, + { + "date": "2014-02-23", + "value": 42127073 + }, + { + "date": "2014-02-24", + "value": 43220783 + }, + { + "date": "2014-02-25", + "value": 44327078 + }, + { + "date": "2014-02-26", + "value": 40427078 + }, + { + "date": "2014-02-27", + "value": 41027078 + }, + { + "date": "2014-02-28", + "value": 45627078 + }, + { + "date": "2014-03-01", + "value": 44727078 + }, + { + "date": "2014-03-02", + "value": 44227078 + }, + { + "date": "2014-03-03", + "value": 45227078 + }, + { + "date": "2014-03-04", + "value": 46027078 + }, + { + "date": "2014-03-05", + "value": 46927078 + }, + { + "date": "2014-03-06", + "value": 47027078 + }, + { + "date": "2014-03-07", + "value": 46227078 + }, + { + "date": "2014-03-08", + "value": 47027078 + }, + { + "date": "2014-03-09", + "value": 48027078 + }, + { + "date": "2014-03-10", + "value": 47027078 + }, + { + "date": "2014-03-11", + "value": 47027078 + }, + { + "date": "2014-03-12", + "value": 48017078 + }, + { + "date": "2014-03-13", + "value": 48077078 + }, + { + "date": "2014-03-14", + "value": 48087078 + }, + { + "date": "2014-03-15", + "value": 48017078 + }, + { + "date": "2014-03-16", + "value": 48047078 + }, + { + "date": "2014-03-17", + "value": 48067078 + }, + { + "date": "2014-03-18", + "value": 48077078 + }, + { + "date": "2014-03-19", + "value": 48027074 + }, + { + "date": "2014-03-20", + "value": 48927079 + }, + { + "date": "2014-03-21", + "value": 48727071 + }, + { + "date": "2014-03-22", + "value": 48127072 + }, + { + "date": "2014-03-23", + "value": 48527072 + }, + { + "date": "2014-03-24", + "value": 48627027 + }, + { + "date": "2014-03-25", + "value": 48027040 + }, + { + "date": "2014-03-26", + "value": 48027043 + }, + { + "date": "2014-03-27", + "value": 48057022 + }, + { + "date": "2014-03-28", + "value": 49057022 + }, + { + "date": "2014-03-29", + "value": 50057022 + }, + { + "date": "2014-03-30", + "value": 51057022 + }, + { + "date": "2014-03-31", + "value": 52057022 + }, + { + "date": "2014-04-01", + "value": 53057022 + }, + { + "date": "2014-04-02", + "value": 54057022 + }, + { + "date": "2014-04-03", + "value": 52057022 + }, + { + "date": "2014-04-04", + "value": 55057022 + }, + { + "date": "2014-04-05", + "value": 58270783 + }, + { + "date": "2014-04-06", + "value": 56270783 + }, + { + "date": "2014-04-07", + "value": 55270783 + }, + { + "date": "2014-04-08", + "value": 58270783 + }, + { + "date": "2014-04-09", + "value": 59270783 + }, + { + "date": "2014-04-10", + "value": 60270783 + }, + { + "date": "2014-04-11", + "value": 61270783 + }, + { + "date": "2014-04-12", + "value": 62270783 + }, + { + "date": "2014-04-13", + "value": 63270783 + }, + { + "date": "2014-04-14", + "value": 64270783 + }, + { + "date": "2014-04-15", + "value": 65270783 + }, + { + "date": "2014-04-16", + "value": 66270783 + }, + { + "date": "2014-04-17", + "value": 67270783 + }, + { + "date": "2014-04-18", + "value": 68270783 + }, + { + "date": "2014-04-19", + "value": 69270783 + }, + { + "date": "2014-04-20", + "value": 70270783 + }, + { + "date": "2014-04-21", + "value": 71270783 + }, + { + "date": "2014-04-22", + "value": 72270783 + }, + { + "date": "2014-04-23", + "value": 73270783 + }, + { + "date": "2014-04-24", + "value": 74270783 + }, + { + "date": "2014-04-25", + "value": 75270783 + }, + { + "date": "2014-04-26", + "value": 76660783 + }, + { + "date": "2014-04-27", + "value": 77270783 + }, + { + "date": "2014-04-28", + "value": 78370783 + }, + { + "date": "2014-04-29", + "value": 79470783 + }, + { + "date": "2014-04-30", + "value": 80170783 + } + ], + [{ + "date": "2014-01-01", + "value": 150000000 + }, + { + "date": "2014-01-02", + "value": 160379978 + }, + { + "date": "2014-01-03", + "value": 170493749 + }, + { + "date": "2014-01-04", + "value": 160785250 + }, + { + "date": "2014-01-05", + "value": 167391904 + }, + { + "date": "2014-01-06", + "value": 161576838 + }, + { + "date": "2014-01-07", + "value": 161413854 + }, + { + "date": "2014-01-08", + "value": 152177211 + }, + { + "date": "2014-01-09", + "value": 140762210 + }, + { + "date": "2014-01-10", + "value": 144381072 + }, + { + "date": "2014-01-11", + "value": 154352310 + }, + { + "date": "2014-01-12", + "value": 165531790 + }, + { + "date": "2014-01-13", + "value": 175748881 + }, + { + "date": "2014-01-14", + "value": 187064037 + }, + { + "date": "2014-01-15", + "value": 197520685 + }, + { + "date": "2014-01-16", + "value": 210176418 + }, + { + "date": "2014-01-17", + "value": 196122924 + }, + { + "date": "2014-01-18", + "value": 207337480 + }, + { + "date": "2014-01-19", + "value": 200258882 + }, + { + "date": "2014-01-20", + "value": 186829538 + }, + { + "date": "2014-01-21", + "value": 192456897 + }, + { + "date": "2014-01-22", + "value": 204299711 + }, + { + "date": "2014-01-23", + "value": 192759017 + }, + { + "date": "2014-01-24", + "value": 203596183 + }, + { + "date": "2014-01-25", + "value": 208107346 + }, + { + "date": "2014-01-26", + "value": 196359852 + }, + { + "date": "2014-01-27", + "value": 192570783 + }, + { + "date": "2014-01-28", + "value": 177967768 + }, + { + "date": "2014-01-29", + "value": 190632803 + }, + { + "date": "2014-01-30", + "value": 203725316 + }, + { + "date": "2014-01-31", + "value": 218226177 + }, + { + "date": "2014-02-01", + "value": 210698669 + }, + { + "date": "2014-02-02", + "value": 217640656 + }, + { + "date": "2014-02-03", + "value": 216142362 + }, + { + "date": "2014-02-04", + "value": 201410971 + }, + { + "date": "2014-02-05", + "value": 196704289 + }, + { + "date": "2014-02-06", + "value": 190436945 + }, + { + "date": "2014-02-07", + "value": 178891686 + }, + { + "date": "2014-02-08", + "value": 171613962 + }, + { + "date": "2014-02-09", + "value": 157579773 + }, + { + "date": "2014-02-10", + "value": 158677098 + }, + { + "date": "2014-02-11", + "value": 147129977 + }, + { + "date": "2014-02-12", + "value": 151561876 + }, + { + "date": "2014-02-13", + "value": 151627421 + }, + { + "date": "2014-02-14", + "value": 143543872 + }, + { + "date": "2014-02-15", + "value": 136581057 + }, + { + "date": "2014-02-16", + "value": 135560715 + }, + { + "date": "2014-02-17", + "value": 122625263 + }, + { + "date": "2014-02-18", + "value": 112091484 + }, + { + "date": "2014-02-19", + "value": 98810329 + }, + { + "date": "2014-02-20", + "value": 99882912 + }, + { + "date": "2014-02-21", + "value": 94943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 116383678 + }, + { + "date": "2014-02-24", + "value": 125028841 + }, + { + "date": "2014-02-25", + "value": 123967310 + }, + { + "date": "2014-02-26", + "value": 133167029 + }, + { + "date": "2014-02-27", + "value": 128577263 + }, + { + "date": "2014-02-28", + "value": 115836969 + }, + { + "date": "2014-03-01", + "value": 119264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 113985628 + }, + { + "date": "2014-03-04", + "value": 114650999 + }, + { + "date": "2014-03-05", + "value": 110866108 + }, + { + "date": "2014-03-06", + "value": 96473454 + }, + { + "date": "2014-03-07", + "value": 104075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 115825447 + }, + { + "date": "2014-03-11", + "value": 126133916 + }, + { + "date": "2014-03-12", + "value": 116502109 + }, + { + "date": "2014-03-13", + "value": 130169411 + }, + { + "date": "2014-03-14", + "value": 124296886 + }, + { + "date": "2014-03-15", + "value": 126347399 + }, + { + "date": "2014-03-16", + "value": 131483669 + }, + { + "date": "2014-03-17", + "value": 142811333 + }, + { + "date": "2014-03-18", + "value": 129675396 + }, + { + "date": "2014-03-19", + "value": 115514483 + }, + { + "date": "2014-03-20", + "value": 117630630 + }, + { + "date": "2014-03-21", + "value": 122340239 + }, + { + "date": "2014-03-22", + "value": 132349091 + }, + { + "date": "2014-03-23", + "value": 125613305 + }, + { + "date": "2014-03-24", + "value": 135592466 + }, + { + "date": "2014-03-25", + "value": 123408762 + }, + { + "date": "2014-03-26", + "value": 111991454 + }, + { + "date": "2014-03-27", + "value": 116123955 + }, + { + "date": "2014-03-28", + "value": 112817214 + }, + { + "date": "2014-03-29", + "value": 113029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 99383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 94985209 + }, + { + "date": "2014-04-03", + "value": 82913669 + }, + { + "date": "2014-04-04", + "value": 78748268 + }, + { + "date": "2014-04-05", + "value": 63829135 + }, + { + "date": "2014-04-06", + "value": 78694727 + }, + { + "date": "2014-04-07", + "value": 80868994 + }, + { + "date": "2014-04-08", + "value": 93799013 + }, + { + "date": "2014-04-09", + "value": 99042416 + }, + { + "date": "2014-04-10", + "value": 97298692 + }, + { + "date": "2014-04-11", + "value": 83353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 90236528 + }, + { + "date": "2014-04-19", + "value": 99739114 + }, + { + "date": "2014-04-20", + "value": 96407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 115877608 + }, + { + "date": "2014-04-24", + "value": 112088857 + }, + { + "date": "2014-04-25", + "value": 112071353 + }, + { + "date": "2014-04-26", + "value": 101790062 + }, + { + "date": "2014-04-27", + "value": 115003761 + }, + { + "date": "2014-04-28", + "value": 120457727 + }, + { + "date": "2014-04-29", + "value": 118253926 + }, + { + "date": "2014-04-30", + "value": 117956992 + } + ], + [{ + "date": "2014-01-01", + "value": 50000000 + }, + { + "date": "2014-01-02", + "value": 60379978 + }, + { + "date": "2014-01-03", + "value": 40493749 + }, + { + "date": "2014-01-04", + "value": 60785250 + }, + { + "date": "2014-01-05", + "value": 67391904 + }, + { + "date": "2014-01-06", + "value": 61576838 + }, + { + "date": "2014-01-07", + "value": 61413854 + }, + { + "date": "2014-01-08", + "value": 82177211 + }, + { + "date": "2014-01-09", + "value": 103762210 + }, + { + "date": "2014-01-10", + "value": 84381072 + }, + { + "date": "2014-01-11", + "value": 54352310 + }, + { + "date": "2014-01-12", + "value": 65531790 + }, + { + "date": "2014-01-13", + "value": 75748881 + }, + { + "date": "2014-01-14", + "value": 47064037 + }, + { + "date": "2014-01-15", + "value": 67520685 + }, + { + "date": "2014-01-16", + "value": 60176418 + }, + { + "date": "2014-01-17", + "value": 66122924 + }, + { + "date": "2014-01-18", + "value": 57337480 + }, + { + "date": "2014-01-19", + "value": 100258882 + }, + { + "date": "2014-01-20", + "value": 46829538 + }, + { + "date": "2014-01-21", + "value": 92456897 + }, + { + "date": "2014-01-22", + "value": 94299711 + }, + { + "date": "2014-01-23", + "value": 62759017 + }, + { + "date": "2014-01-24", + "value": 103596183 + }, + { + "date": "2014-01-25", + "value": 108107346 + }, + { + "date": "2014-01-26", + "value": 66359852 + }, + { + "date": "2014-01-27", + "value": 62570783 + }, + { + "date": "2014-01-28", + "value": 77967768 + }, + { + "date": "2014-01-29", + "value": 60632803 + }, + { + "date": "2014-01-30", + "value": 103725316 + }, + { + "date": "2014-01-31", + "value": 98226177 + }, + { + "date": "2014-02-01", + "value": 60698669 + }, + { + "date": "2014-02-02", + "value": 67640656 + }, + { + "date": "2014-02-03", + "value": 66142362 + }, + { + "date": "2014-02-04", + "value": 101410971 + }, + { + "date": "2014-02-05", + "value": 66704289 + }, + { + "date": "2014-02-06", + "value": 60436945 + }, + { + "date": "2014-02-07", + "value": 78891686 + }, + { + "date": "2014-02-08", + "value": 71613962 + }, + { + "date": "2014-02-09", + "value": 107579773 + }, + { + "date": "2014-02-10", + "value": 58677098 + }, + { + "date": "2014-02-11", + "value": 87129977 + }, + { + "date": "2014-02-12", + "value": 51561876 + }, + { + "date": "2014-02-13", + "value": 51627421 + }, + { + "date": "2014-02-14", + "value": 83543872 + }, + { + "date": "2014-02-15", + "value": 66581057 + }, + { + "date": "2014-02-16", + "value": 65560715 + }, + { + "date": "2014-02-17", + "value": 62625263 + }, + { + "date": "2014-02-18", + "value": 92091484 + }, + { + "date": "2014-02-19", + "value": 48810329 + }, + { + "date": "2014-02-20", + "value": 49882912 + }, + { + "date": "2014-02-21", + "value": 44943095 + }, + { + "date": "2014-02-22", + "value": 104875743 + }, + { + "date": "2014-02-23", + "value": 96383678 + }, + { + "date": "2014-02-24", + "value": 105028841 + }, + { + "date": "2014-02-25", + "value": 63967310 + }, + { + "date": "2014-02-26", + "value": 63167029 + }, + { + "date": "2014-02-27", + "value": 68577263 + }, + { + "date": "2014-02-28", + "value": 95836969 + }, + { + "date": "2014-03-01", + "value": 99264529 + }, + { + "date": "2014-03-02", + "value": 109363374 + }, + { + "date": "2014-03-03", + "value": 93985628 + }, + { + "date": "2014-03-04", + "value": 94650999 + }, + { + "date": "2014-03-05", + "value": 90866108 + }, + { + "date": "2014-03-06", + "value": 46473454 + }, + { + "date": "2014-03-07", + "value": 84075886 + }, + { + "date": "2014-03-08", + "value": 103568384 + }, + { + "date": "2014-03-09", + "value": 101534883 + }, + { + "date": "2014-03-10", + "value": 95825447 + }, + { + "date": "2014-03-11", + "value": 66133916 + }, + { + "date": "2014-03-12", + "value": 96502109 + }, + { + "date": "2014-03-13", + "value": 80169411 + }, + { + "date": "2014-03-14", + "value": 84296886 + }, + { + "date": "2014-03-15", + "value": 86347399 + }, + { + "date": "2014-03-16", + "value": 31483669 + }, + { + "date": "2014-03-17", + "value": 82811333 + }, + { + "date": "2014-03-18", + "value": 89675396 + }, + { + "date": "2014-03-19", + "value": 95514483 + }, + { + "date": "2014-03-20", + "value": 97630630 + }, + { + "date": "2014-03-21", + "value": 62340239 + }, + { + "date": "2014-03-22", + "value": 62349091 + }, + { + "date": "2014-03-23", + "value": 65613305 + }, + { + "date": "2014-03-24", + "value": 65592466 + }, + { + "date": "2014-03-25", + "value": 63408762 + }, + { + "date": "2014-03-26", + "value": 91991454 + }, + { + "date": "2014-03-27", + "value": 96123955 + }, + { + "date": "2014-03-28", + "value": 92817214 + }, + { + "date": "2014-03-29", + "value": 93029590 + }, + { + "date": "2014-03-30", + "value": 108753398 + }, + { + "date": "2014-03-31", + "value": 49383763 + }, + { + "date": "2014-04-01", + "value": 100151737 + }, + { + "date": "2014-04-02", + "value": 44985209 + }, + { + "date": "2014-04-03", + "value": 52913669 + }, + { + "date": "2014-04-04", + "value": 48748268 + }, + { + "date": "2014-04-05", + "value": 23829135 + }, + { + "date": "2014-04-06", + "value": 58694727 + }, + { + "date": "2014-04-07", + "value": 50868994 + }, + { + "date": "2014-04-08", + "value": 43799013 + }, + { + "date": "2014-04-09", + "value": 4042416 + }, + { + "date": "2014-04-10", + "value": 47298692 + }, + { + "date": "2014-04-11", + "value": 53353499 + }, + { + "date": "2014-04-12", + "value": 71248129 + }, + { + "date": "2014-04-13", + "value": 75253744 + }, + { + "date": "2014-04-14", + "value": 68976648 + }, + { + "date": "2014-04-15", + "value": 71002284 + }, + { + "date": "2014-04-16", + "value": 75052401 + }, + { + "date": "2014-04-17", + "value": 83894030 + }, + { + "date": "2014-04-18", + "value": 50236528 + }, + { + "date": "2014-04-19", + "value": 59739114 + }, + { + "date": "2014-04-20", + "value": 56407136 + }, + { + "date": "2014-04-21", + "value": 108323177 + }, + { + "date": "2014-04-22", + "value": 101578914 + }, + { + "date": "2014-04-23", + "value": 95877608 + }, + { + "date": "2014-04-24", + "value": 62088857 + }, + { + "date": "2014-04-25", + "value": 92071353 + }, + { + "date": "2014-04-26", + "value": 81790062 + }, + { + "date": "2014-04-27", + "value": 105003761 + }, + { + "date": "2014-04-28", + "value": 100457727 + }, + { + "date": "2014-04-29", + "value": 98253926 + }, + { + "date": "2014-04-30", + "value": 67956992 + } + ] +]; + +var series = + { + "monthDataSeries1": { + "prices": [ + 8107.85, + 8128.0, + 8122.9, + 8165.5, + 8340.7, + 8423.7, + 8423.5, + 8514.3, + 8481.85, + 8487.7, + 8506.9, + 8626.2, + 8668.95, + 8602.3, + 8607.55, + 8512.9, + 8496.25, + 8600.65, + 8881.1, + 9340.85 + ], + "dates": [ + "13 Nov 2017", + "14 Nov 2017", + "15 Nov 2017", + "16 Nov 2017", + "17 Nov 2017", + "20 Nov 2017", + "21 Nov 2017", + "22 Nov 2017", + "23 Nov 2017", + "24 Nov 2017", + "27 Nov 2017", + "28 Nov 2017", + "29 Nov 2017", + "30 Nov 2017", + "01 Dec 2017", + "04 Dec 2017", + "05 Dec 2017", + "06 Dec 2017", + "07 Dec 2017", + "08 Dec 2017" + ] + }, + "monthDataSeries2": { + "prices": [ + 8423.7, + 8423.5, + 8514.3, + 8481.85, + 8487.7, + 8506.9, + 8626.2, + 8668.95, + 8602.3, + 8607.55, + 8512.9, + 8496.25, + 8600.65, + 8881.1, + 9040.85, + 8340.7, + 8165.5, + 8122.9, + 8107.85, + 8128.0 + ], + "dates": [ + "13 Nov 2017", + "14 Nov 2017", + "15 Nov 2017", + "16 Nov 2017", + "17 Nov 2017", + "20 Nov 2017", + "21 Nov 2017", + "22 Nov 2017", + "23 Nov 2017", + "24 Nov 2017", + "27 Nov 2017", + "28 Nov 2017", + "29 Nov 2017", + "30 Nov 2017", + "01 Dec 2017", + "04 Dec 2017", + "05 Dec 2017", + "06 Dec 2017", + "07 Dec 2017", + "08 Dec 2017" + ] + }, + "monthDataSeries3": { + "prices": [ + 7114.25, + 7126.6, + 7116.95, + 7203.7, + 7233.75, + 7451.0, + 7381.15, + 7348.95, + 7347.75, + 7311.25, + 7266.4, + 7253.25, + 7215.45, + 7266.35, + 7315.25, + 7237.2, + 7191.4, + 7238.95, + 7222.6, + 7217.9, + 7359.3, + 7371.55, + 7371.15, + 7469.2, + 7429.25, + 7434.65, + 7451.1, + 7475.25, + 7566.25, + 7556.8, + 7525.55, + 7555.45, + 7560.9, + 7490.7, + 7527.6, + 7551.9, + 7514.85, + 7577.95, + 7592.3, + 7621.95, + 7707.95, + 7859.1, + 7815.7, + 7739.0, + 7778.7, + 7839.45, + 7756.45, + 7669.2, + 7580.45, + 7452.85, + 7617.25, + 7701.6, + 7606.8, + 7620.05, + 7513.85, + 7498.45, + 7575.45, + 7601.95, + 7589.1, + 7525.85, + 7569.5, + 7702.5, + 7812.7, + 7803.75, + 7816.3, + 7851.15, + 7912.2, + 7972.8, + 8145.0, + 8161.1, + 8121.05, + 8071.25, + 8088.2, + 8154.45, + 8148.3, + 8122.05, + 8132.65, + 8074.55, + 7952.8, + 7885.55, + 7733.9, + 7897.15, + 7973.15, + 7888.5, + 7842.8, + 7838.4, + 7909.85, + 7892.75, + 7897.75, + 7820.05, + 7904.4, + 7872.2, + 7847.5, + 7849.55, + 7789.6, + 7736.35, + 7819.4, + 7875.35, + 7871.8, + 8076.5, + 8114.8, + 8193.55, + 8217.1, + 8235.05, + 8215.3, + 8216.4, + 8301.55, + 8235.25, + 8229.75, + 8201.95, + 8164.95, + 8107.85, + 8128.0, + 8122.9, + 8165.5, + 8340.7, + 8423.7, + 8423.5, + 8514.3, + 8481.85, + 8487.7, + 8506.9, + 8626.2 + ], + "dates": [ + "02 Jun 2017", + "05 Jun 2017", + "06 Jun 2017", + "07 Jun 2017", + "08 Jun 2017", + "09 Jun 2017", + "12 Jun 2017", + "13 Jun 2017", + "14 Jun 2017", + "15 Jun 2017", + "16 Jun 2017", + "19 Jun 2017", + "20 Jun 2017", + "21 Jun 2017", + "22 Jun 2017", + "23 Jun 2017", + "27 Jun 2017", + "28 Jun 2017", + "29 Jun 2017", + "30 Jun 2017", + "03 Jul 2017", + "04 Jul 2017", + "05 Jul 2017", + "06 Jul 2017", + "07 Jul 2017", + "10 Jul 2017", + "11 Jul 2017", + "12 Jul 2017", + "13 Jul 2017", + "14 Jul 2017", + "17 Jul 2017", + "18 Jul 2017", + "19 Jul 2017", + "20 Jul 2017", + "21 Jul 2017", + "24 Jul 2017", + "25 Jul 2017", + "26 Jul 2017", + "27 Jul 2017", + "28 Jul 2017", + "31 Jul 2017", + "01 Aug 2017", + "02 Aug 2017", + "03 Aug 2017", + "04 Aug 2017", + "07 Aug 2017", + "08 Aug 2017", + "09 Aug 2017", + "10 Aug 2017", + "11 Aug 2017", + "14 Aug 2017", + "16 Aug 2017", + "17 Aug 2017", + "18 Aug 2017", + "21 Aug 2017", + "22 Aug 2017", + "23 Aug 2017", + "24 Aug 2017", + "28 Aug 2017", + "29 Aug 2017", + "30 Aug 2017", + "31 Aug 2017", + "01 Sep 2017", + "04 Sep 2017", + "05 Sep 2017", + "06 Sep 2017", + "07 Sep 2017", + "08 Sep 2017", + "11 Sep 2017", + "12 Sep 2017", + "13 Sep 2017", + "14 Sep 2017", + "15 Sep 2017", + "18 Sep 2017", + "19 Sep 2017", + "20 Sep 2017", + "21 Sep 2017", + "22 Sep 2017", + "25 Sep 2017", + "26 Sep 2017", + "27 Sep 2017", + "28 Sep 2017", + "29 Sep 2017", + "03 Oct 2017", + "04 Oct 2017", + "05 Oct 2017", + "06 Oct 2017", + "09 Oct 2017", + "10 Oct 2017", + "11 Oct 2017", + "12 Oct 2017", + "13 Oct 2017", + "16 Oct 2017", + "17 Oct 2017", + "18 Oct 2017", + "19 Oct 2017", + "23 Oct 2017", + "24 Oct 2017", + "25 Oct 2017", + "26 Oct 2017", + "27 Oct 2017", + "30 Oct 2017", + "31 Oct 2017", + "01 Nov 2017", + "02 Nov 2017", + "03 Nov 2017", + "06 Nov 2017", + "07 Nov 2017", + "08 Nov 2017", + "09 Nov 2017", + "10 Nov 2017", + "13 Nov 2017", + "14 Nov 2017", + "15 Nov 2017", + "16 Nov 2017", + "17 Nov 2017", + "20 Nov 2017", + "21 Nov 2017", + "22 Nov 2017", + "23 Nov 2017", + "24 Nov 2017", + "27 Nov 2017", + "28 Nov 2017" + ] + } + }; \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/extends/apexcharts.min.js b/src/main/resources/static/febs/lay/extends/apexcharts.min.js new file mode 100644 index 0000000..680f19d --- /dev/null +++ b/src/main/resources/static/febs/lay/extends/apexcharts.min.js @@ -0,0 +1,9 @@ +/*! + * ApexCharts v3.6.12 + * (c) 2018-2019 Juned Chhipa + * Released under the MIT License. + */ +layui.define([],function(exports){ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):(t=t||self).ApexCharts=e()}(this,function(){"use strict";function t(e){return(t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(e)}function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var i=0;i<e.length;i++){var s=e[i];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(t,s.key,s)}}function s(t,e,s){return e&&i(t.prototype,e),s&&i(t,s),t}function a(t,e,i){return e in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}function n(t){for(var e=1;e<arguments.length;e++){var i=null!=arguments[e]?arguments[e]:{},s=Object.keys(i);"function"==typeof Object.getOwnPropertySymbols&&(s=s.concat(Object.getOwnPropertySymbols(i).filter(function(t){return Object.getOwnPropertyDescriptor(i,t).enumerable}))),s.forEach(function(e){a(t,e,i[e])})}return t}function r(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&l(t,e)}function o(t){return(o=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function l(t,e){return(l=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(t,e){return!e||"object"!=typeof e&&"function"!=typeof e?function(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}(t):e}function c(t){return function(t){if(Array.isArray(t)){for(var e=0,i=new Array(t.length);e<t.length;e++)i[e]=t[e];return i}}(t)||function(t){if(Symbol.iterator in Object(t)||"[object Arguments]"===Object.prototype.toString.call(t))return Array.from(t)}(t)||function(){throw new TypeError("Invalid attempt to spread non-iterable instance")}()}var d=function(){function i(){e(this,i)}return s(i,[{key:"shadeRGBColor",value:function(t,e){var i=e.split(","),s=t<0?0:255,a=t<0?-1*t:t,n=parseInt(i[0].slice(4)),r=parseInt(i[1]),o=parseInt(i[2]);return"rgb("+(Math.round((s-n)*a)+n)+","+(Math.round((s-r)*a)+r)+","+(Math.round((s-o)*a)+o)+")"}},{key:"shadeHexColor",value:function(t,e){var i=parseInt(e.slice(1),16),s=t<0?0:255,a=t<0?-1*t:t,n=i>>16,r=i>>8&255,o=255&i;return"#"+(16777216+65536*(Math.round((s-n)*a)+n)+256*(Math.round((s-r)*a)+r)+(Math.round((s-o)*a)+o)).toString(16).slice(1)}},{key:"shadeColor",value:function(t,e){return e.length>7?this.shadeRGBColor(t,e):this.shadeHexColor(t,e)}}],[{key:"bind",value:function(t,e){return function(){return t.apply(e,arguments)}}},{key:"isObject",value:function(e){return e&&"object"===t(e)&&!Array.isArray(e)&&null!=e}},{key:"listToArray",value:function(t){var e,i=[];for(e=0;e<t.length;e++)i[e]=t[e];return i}},{key:"extend",value:function(t,e){var i=this;"function"!=typeof Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),i=1;i<arguments.length;i++){var s=arguments[i];if(null!=s)for(var a in s)s.hasOwnProperty(a)&&(e[a]=s[a])}return e});var s=Object.assign({},t);return this.isObject(t)&&this.isObject(e)&&Object.keys(e).forEach(function(n){i.isObject(e[n])&&n in t?s[n]=i.extend(t[n],e[n]):Object.assign(s,a({},n,e[n]))}),s}},{key:"extendArray",value:function(t,e){var s=[];return t.map(function(t){s.push(i.extend(e,t))}),t=s}},{key:"monthMod",value:function(t){return t%12}},{key:"addProps",value:function(t,e,i){"string"==typeof e&&(e=e.split(".")),t[e[0]]=t[e[0]]||{};var s=t[e[0]];return e.length>1?(e.shift(),this.addProps(s,e,i)):t[e[0]]=i,t}},{key:"clone",value:function(e){if("[object Array]"===Object.prototype.toString.call(e)){for(var i=[],s=0;s<e.length;s++)i[s]=this.clone(e[s]);return i}if("object"===t(e)){var a={};for(var n in e)e.hasOwnProperty(n)&&(a[n]=this.clone(e[n]));return a}return e}},{key:"log10",value:function(t){return Math.log(t)/Math.LN10}},{key:"roundToBase10",value:function(t){return Math.pow(10,Math.floor(Math.log10(t)))}},{key:"roundToBase",value:function(t,e){return Math.pow(e,Math.floor(Math.log(t)/Math.log(e)))}},{key:"parseNumber",value:function(t){return null===t?t:parseFloat(t)}},{key:"noExponents",value:function(t){var e=String(t).split(/[eE]/);if(1==e.length)return e[0];var i="",s=t<0?"-":"",a=e[0].replace(".",""),n=Number(e[1])+1;if(n<0){for(i=s+"0.";n++;)i+="0";return i+a.replace(/^\-/,"")}for(n-=a.length;n--;)i+="0";return a+i}},{key:"getDimensions",value:function(t){var e=getComputedStyle(t),i=[],s=t.clientHeight,a=t.clientWidth;return s-=parseFloat(e.paddingTop)+parseFloat(e.paddingBottom),a-=parseFloat(e.paddingLeft)+parseFloat(e.paddingRight),i.push(a),i.push(s),i}},{key:"getBoundingClientRect",value:function(t){var e=t.getBoundingClientRect();return{top:e.top,right:e.right,bottom:e.bottom,left:e.left,width:e.width,height:e.height,x:e.x,y:e.y}}},{key:"hexToRgba",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"#999999",e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.6;"#"!==t.substring(0,1)&&(t="#999999");var i=t.replace("#","");i=i.match(new RegExp("(.{"+i.length/3+"})","g"));for(var s=0;s<i.length;s++)i[s]=parseInt(1===i[s].length?i[s]+i[s]:i[s],16);return void 0!==e&&i.push(e),"rgba("+i.join(",")+")"}},{key:"getOpacityFromRGBA",value:function(t){return(t=t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))[3]}},{key:"rgb2hex",value:function(t){return(t=t.match(/^rgba?[\s+]?\([\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?,[\s+]?(\d+)[\s+]?/i))&&4===t.length?"#"+("0"+parseInt(t[1],10).toString(16)).slice(-2)+("0"+parseInt(t[2],10).toString(16)).slice(-2)+("0"+parseInt(t[3],10).toString(16)).slice(-2):""}},{key:"isColorHex",value:function(t){return/(^#[0-9A-F]{6}$)|(^#[0-9A-F]{3}$)/i.test(t)}},{key:"polarToCartesian",value:function(t,e,i,s){var a=(s-90)*Math.PI/180;return{x:t+i*Math.cos(a),y:e+i*Math.sin(a)}}},{key:"escapeString",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"x",i=t.toString().slice();return i=i.replace(/[` ~!@#$%^&*()_|+\-=?;:'",.<>\{\}\[\]\\\/]/gi,e)}},{key:"negToZero",value:function(t){return t<0?0:t}},{key:"moveIndexInArray",value:function(t,e,i){if(i>=t.length)for(var s=i-t.length+1;s--;)t.push(void 0);return t.splice(i,0,t.splice(e,1)[0]),t}},{key:"extractNumber",value:function(t){return parseFloat(t.replace(/[^\d\.]*/g,""))}},{key:"randomString",value:function(t){for(var e="",i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",s=0;s<t;s++)e+=i.charAt(Math.floor(Math.random()*i.length));return e}},{key:"findAncestor",value:function(t,e){for(;(t=t.parentElement)&&!t.classList.contains(e););return t}},{key:"setELstyles",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&(t.style.key=e[i])}},{key:"isNumber",value:function(t){return!isNaN(t)&&parseFloat(Number(t))===t&&!isNaN(parseInt(t,10))}},{key:"isFloat",value:function(t){return Number(t)===t&&t%1!=0}},{key:"isSafari",value:function(){return/^((?!chrome|android).)*safari/i.test(navigator.userAgent)}},{key:"isFirefox",value:function(){return navigator.userAgent.toLowerCase().indexOf("firefox")>-1}},{key:"isIE11",value:function(){if(-1!==window.navigator.userAgent.indexOf("MSIE")||window.navigator.appVersion.indexOf("Trident/")>-1)return!0}},{key:"isIE",value:function(){var t=window.navigator.userAgent,e=t.indexOf("MSIE ");if(e>0)return parseInt(t.substring(e+5,t.indexOf(".",e)),10);if(t.indexOf("Trident/")>0){var i=t.indexOf("rv:");return parseInt(t.substring(i+3,t.indexOf(".",i)),10)}var s=t.indexOf("Edge/");return s>0&&parseInt(t.substring(s+5,t.indexOf(".",s)),10)}}]),i}(),u=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getDefaultFilter",value:function(t,e){var i=this.w;t.unfilter(!0),(new window.SVG.Filter).size("120%","180%","-5%","-40%"),"none"!==i.config.states.normal.filter?this.applyFilter(t,e,i.config.states.normal.filter.type,i.config.states.normal.filter.value):i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addNormalFilter",value:function(t,e){var i=this.w;i.config.chart.dropShadow.enabled&&this.dropShadow(t,i.config.chart.dropShadow,e)}},{key:"addLightenFilter",value:function(t,e,i){var s=this,a=this.w,n=i.intensity;if(!d.isFirefox()){t.unfilter(!0);var r=new window.SVG.Filter;r.size("120%","180%","-5%","-40%"),t.filter(function(t){var i=a.config.chart.dropShadow;(r=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:1.5,intercept:n}})}),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse")}}},{key:"addDarkenFilter",value:function(t,e,i){var s=this,a=this.w,n=i.intensity;if(!d.isFirefox()){t.unfilter(!0);var r=new window.SVG.Filter;r.size("120%","180%","-5%","-40%"),t.filter(function(t){var i=a.config.chart.dropShadow;(r=i.enabled?s.addShadow(t,e,i):t).componentTransfer({rgb:{type:"linear",slope:n}})}),t.filterer.node.setAttribute("filterUnits","userSpaceOnUse")}}},{key:"applyFilter",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:.5;switch(i){case"none":this.addNormalFilter(t,e);break;case"lighten":this.addLightenFilter(t,e,{intensity:s});break;case"darken":this.addDarkenFilter(t,e,{intensity:s})}}},{key:"addShadow",value:function(t,e,i){var s=i.blur,a=i.top,n=i.left,r=i.color,o=i.opacity,l=t.flood(Array.isArray(r)?r[e]:r,o).composite(t.sourceAlpha,"in").offset(n,a).gaussianBlur(s).merge(t.source);return t.blend(t.source,l)}},{key:"dropShadow",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=e.top,a=e.left,n=e.blur,r=e.color,o=e.opacity,l=e.noUserSpaceOnUse;return t.unfilter(!0),r=Array.isArray(r)?r[i]:r,(new window.SVG.Filter).size("120%","180%","-5%","-40%"),t.filter(function(t){var e=null;e=d.isSafari()||d.isFirefox()||d.isIE()?t.flood(r,o).composite(t.sourceAlpha,"in").offset(a,s).gaussianBlur(n):t.flood(r,o).composite(t.sourceAlpha,"in").offset(a,s).gaussianBlur(n).merge(t.source),t.blend(t.source,e)}),l||t.filterer.node.setAttribute("filterUnits","userSpaceOnUse"),t}},{key:"setSelectionFilter",value:function(t,e,i){var s=this.w;if(void 0!==s.globals.selectedDataPoints[e]&&s.globals.selectedDataPoints[e].indexOf(i)>-1){t.node.setAttribute("selected",!0);var a=s.config.states.active.filter;"none"!==a&&this.applyFilter(t,e,a.type,a.value)}}}]),t}(),g=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.setEasingFunctions()}return s(t,[{key:"setEasingFunctions",value:function(){var t;switch(this.w.config.chart.animations.easing){case"linear":t="-";break;case"easein":t="<";break;case"easeout":t=">";break;case"easeinout":t="<>";break;case"swing":t=function(t){var e=1.70158;return(t-=1)*t*((e+1)*t+e)+1};break;case"bounce":t=function(t){return t<1/2.75?7.5625*t*t:t<2/2.75?7.5625*(t-=1.5/2.75)*t+.75:t<2.5/2.75?7.5625*(t-=2.25/2.75)*t+.9375:7.5625*(t-=2.625/2.75)*t+.984375};break;case"elastic":t=function(t){return t===!!t?t:Math.pow(2,-10*t)*Math.sin((t-.075)*(2*Math.PI)/.3)+1};break;default:t="<>"}this.w.globals.easing=t}},{key:"animateLine",value:function(t,e,i,s){t.attr(e).animate(s).attr(i)}},{key:"animateCircleRadius",value:function(t,e,i,s,a){e||(e=0),t.attr({r:e}).animate(s,a).attr({r:i})}},{key:"animateCircle",value:function(t,e,i,s,a){t.attr({r:e.r,cx:e.cx,cy:e.cy}).animate(s,a).attr({r:i.r,cx:i.cx,cy:i.cy})}},{key:"animateRect",value:function(t,e,i,s,a){t.attr(e).animate(s).attr(i).afterAll(function(){a()})}},{key:"animatePathsGradually",value:function(t){var e=t.el,i=t.j,s=t.pathFrom,a=t.pathTo,n=t.speed,r=t.delay,o=t.strokeWidth,l=this.w,h=0;l.config.chart.animations.animateGradually.enabled&&(h=l.config.chart.animations.animateGradually.delay),l.config.chart.animations.dynamicAnimation.enabled&&l.globals.dataChanged&&(h=0),this.morphSVG(e,i,s,a,n,o,r*h)}},{key:"showDelayedElements",value:function(){this.w.globals.delayedElements.forEach(function(t){t.el.classList.remove("hidden")})}},{key:"morphSVG",value:function(t,e,i,s,a,n,r){var o=this,l=this.w;i||(i=t.attr("pathFrom")),s||(s=t.attr("pathTo")),(!i||i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(l.globals.gridHeight),a=1),(s.indexOf("undefined")>-1||s.indexOf("NaN")>-1)&&(s="M 0 ".concat(l.globals.gridHeight),a=1),l.globals.shouldAnimate||(a=1),t.plot(i).animate(1,l.globals.easing,r).plot(i).animate(a,l.globals.easing,r).plot(s).afterAll(function(){d.isNumber(e)?e===l.globals.series[l.globals.maxValsInArrayIndex].length-2&&l.globals.shouldAnimate&&(l.globals.animationEnded=!0):l.globals.shouldAnimate&&(l.globals.animationEnded=!0,"function"==typeof l.config.chart.events.animationEnd&&l.config.chart.events.animationEnd(o.ctx,l)),o.showDelayedElements()})}}]),t}(),f=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"drawLine",value:function(t,e,i,s){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"#a8a8a8",n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:0,r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null;return this.w.globals.dom.Paper.line().attr({x1:t,y1:e,x2:i,y2:s,stroke:a,"stroke-dasharray":n,"stroke-width":r})}},{key:"drawRect",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0,n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:"#fefefe",r=arguments.length>6&&void 0!==arguments[6]?arguments[6]:1,o=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,l=arguments.length>8&&void 0!==arguments[8]?arguments[8]:null,h=arguments.length>9&&void 0!==arguments[9]?arguments[9]:0,c=this.w.globals.dom.Paper.rect();return c.attr({x:t,y:e,width:i>0?i:0,height:s>0?s:0,rx:a,ry:a,fill:n,opacity:r,"stroke-width":null!==o?o:0,stroke:null!==l?l:"none","stroke-dasharray":h}),c}},{key:"drawPolygon",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"#e1e1e1",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"none";return this.w.globals.dom.Paper.polygon(t).attr({fill:i,stroke:e})}},{key:"drawCircle",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w.globals.dom.Paper.circle(2*t);return null!==e&&i.attr(e),i}},{key:"drawPath",value:function(t){var e=t.d,i=void 0===e?"":e,s=t.stroke,a=void 0===s?"#a8a8a8":s,n=t.strokeWidth,r=void 0===n?1:n,o=t.fill,l=t.fillOpacity,h=void 0===l?1:l,c=t.strokeOpacity,d=void 0===c?1:c,u=t.classes,g=t.strokeLinecap,f=void 0===g?null:g,p=t.strokeDashArray,x=void 0===p?0:p,b=this.w;return null===f&&(f=b.config.stroke.lineCap),(i.indexOf("undefined")>-1||i.indexOf("NaN")>-1)&&(i="M 0 ".concat(b.globals.gridHeight)),b.globals.dom.Paper.path(i).attr({fill:o,"fill-opacity":h,stroke:a,"stroke-opacity":d,"stroke-linecap":f,"stroke-width":r,"stroke-dasharray":x,class:u})}},{key:"group",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w.globals.dom.Paper.group();return null!==t&&e.attr(t),e}},{key:"move",value:function(t,e){var i=["M",t,e].join(" ");return i}},{key:"line",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=null;return null===i?s=["L",t,e].join(" "):"H"===i?s=["H",t].join(" "):"V"===i&&(s=["V",e].join(" ")),s}},{key:"curve",value:function(t,e,i,s,a,n){var r=["C",t,e,i,s,a,n].join(" ");return r}},{key:"quadraticCurve",value:function(t,e,i,s){return["Q",t,e,i,s].join(" ")}},{key:"arc",value:function(t,e,i,s,a,n,r){var o="A";arguments.length>7&&void 0!==arguments[7]&&arguments[7]&&(o="a");var l=[o,t,e,i,s,a,n,r].join(" ");return l}},{key:"renderPaths",value:function(t){var e,i=t.i,s=t.j,a=t.realIndex,r=t.pathFrom,o=t.pathTo,l=t.stroke,h=t.strokeWidth,c=t.strokeLinecap,d=t.fill,f=t.animationDelay,p=t.initialSpeed,x=t.dataChangeSpeed,b=t.className,m=t.id,v=t.shouldClipToGrid,y=void 0===v||v,w=t.bindEventsOnPaths,k=void 0===w||w,A=t.drawShadow,S=void 0===A||A,C=this.w,L=new u(this.ctx),z=new g(this.ctx),P=this.w.config.chart.animations.enabled,M=P&&this.w.config.chart.animations.dynamicAnimation.enabled,E=!!(P&&!C.globals.resized||M&&C.globals.dataChanged&&C.globals.shouldAnimate);E?e=r:(e=o,this.w.globals.animationEnded=!0);var T=C.config.stroke.dashArray,X=0;X=Array.isArray(T)?T[a]:C.config.stroke.dashArray;var I=this.drawPath({d:e,stroke:l,strokeWidth:h,fill:d,fillOpacity:1,classes:b,strokeLinecap:c,strokeDashArray:X});if(I.attr("id","".concat(m,"-").concat(i)),I.attr("index",a),y&&I.attr({"clip-path":"url(#gridRectMask".concat(C.globals.cuid,")")}),"none"!==C.config.states.normal.filter.type)L.getDefaultFilter(I,a);else if(C.config.chart.dropShadow.enabled&&S&&(!C.config.chart.dropShadow.enabledSeries||C.config.chart.dropShadow.enabledSeries&&-1!==C.config.chart.dropShadow.enabledSeries.indexOf(a))){var Y=C.config.chart.dropShadow;L.dropShadow(I,Y,a)}k&&(I.node.addEventListener("mouseenter",this.pathMouseEnter.bind(this,I)),I.node.addEventListener("mouseleave",this.pathMouseLeave.bind(this,I)),I.node.addEventListener("mousedown",this.pathMouseDown.bind(this,I))),I.attr({pathTo:o,pathFrom:r});var F={el:I,j:s,pathFrom:r,pathTo:o,strokeWidth:h};return!P||C.globals.resized||C.globals.dataChanged?!C.globals.resized&&C.globals.dataChanged||z.showDelayedElements():z.animatePathsGradually(n({},F,{speed:p,delay:f})),C.globals.dataChanged&&M&&E&&z.animatePathsGradually(n({},F,{speed:x})),I}},{key:"drawPattern",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"#a8a8a8",a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:0;return this.w.globals.dom.Paper.pattern(e,i,function(n){"horizontalLines"===t?n.line(0,0,i,0).stroke({color:s,width:a+1}):"verticalLines"===t?n.line(0,0,0,e).stroke({color:s,width:a+1}):"slantedLines"===t?n.line(0,0,e,i).stroke({color:s,width:a}):"squares"===t?n.rect(e,i).fill("none").stroke({color:s,width:a}):"circles"===t&&n.circle(e).fill("none").stroke({color:s,width:a})})}},{key:"drawGradient",value:function(t,e,i,s,a){var n,r=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:null,l=arguments.length>7&&void 0!==arguments[7]?arguments[7]:null,h=arguments.length>8&&void 0!==arguments[8]?arguments[8]:0,c=this.w;e=d.hexToRgba(e,s),i=d.hexToRgba(i,a);var u=0,g=1,f=1,p=null;null!==o&&(u=void 0!==o[0]?o[0]/100:0,g=void 0!==o[1]?o[1]/100:1,f=void 0!==o[2]?o[2]/100:1,p=void 0!==o[3]?o[3]/100:null);var x=!("donut"!==c.config.chart.type&&"pie"!==c.config.chart.type&&"bubble"!==c.config.chart.type);if(n=null===l||0===l.length?c.globals.dom.Paper.gradient(x?"radial":"linear",function(t){t.at(u,e,s),t.at(g,i,a),t.at(f,i,a),null!==p&&t.at(p,e,s)}):c.globals.dom.Paper.gradient(x?"radial":"linear",function(t){(Array.isArray(l[h])?l[h]:l).forEach(function(e){t.at(e.offset/100,e.color,e.opacity)})}),x){var b=c.globals.gridWidth/2,m=c.globals.gridHeight/2;"bubble"!==c.config.chart.type?n.attr({gradientUnits:"userSpaceOnUse",cx:b,cy:m,r:r}):n.attr({cx:.5,cy:.5,r:.8,fx:.2,fy:.2})}else"vertical"===t?n.from(0,0).to(0,1):"diagonal"===t?n.from(0,0).to(1,1):"horizontal"===t?n.from(0,1).to(1,1):"diagonal2"===t&&n.from(0,1).to(2,2);return n}},{key:"drawText",value:function(t){var e,i=this.w,s=t.x,a=t.y,n=t.text,r=t.textAnchor,o=t.fontSize,l=t.fontFamily,h=t.foreColor,c=t.opacity;return void 0===n&&(n=""),r||(r="start"),h||(h=i.config.chart.foreColor),l=l||i.config.chart.fontFamily,(e=Array.isArray(n)?i.globals.dom.Paper.text(function(t){for(var e=0;e<n.length;e++)t.tspan(n[e])}):i.globals.dom.Paper.plain(n)).attr({x:s,y:a,"text-anchor":r,"dominant-baseline":"auto","font-size":o,"font-family":l,fill:h,class:(t.cssClass,t.cssClass)}),e.node.style.fontFamily=l,e.node.style.opacity=c,e}},{key:"addTspan",value:function(t,e,i){var s=t.tspan(e);i||(i=this.w.config.chart.fontFamily),s.node.style.fontFamily=i}},{key:"drawMarker",value:function(t,e,i){t=t||0;var s=i.pSize||0,a=null;if("square"===i.shape){var n=void 0===i.pRadius?s/2:i.pRadius;null===e&&(s=0,n=0);var r=1.2*s+n,o=this.drawRect(r,r,r,r,n);o.attr({x:t-r/2,y:e-r/2,cx:t,cy:e,class:i.class?i.class:"",fill:i.pointFillColor,"fill-opacity":i.pointFillOpacity?i.pointFillOpacity:1,stroke:i.pointStrokeColor,"stroke-width":i.pWidth?i.pWidth:0,"stroke-opacity":i.pointStrokeOpacity?i.pointStrokeOpacity:1}),a=o}else"circle"===i.shape&&(d.isNumber(e)||(s=0,e=0),a=this.drawCircle(s,{cx:t,cy:e,class:i.class?i.class:"",stroke:i.pointStrokeColor,fill:i.pointFillColor,"fill-opacity":i.pointFillOpacity?i.pointFillOpacity:1,"stroke-width":i.pWidth?i.pWidth:0,"stroke-opacity":i.pointStrokeOpacity?i.pointStrokeOpacity:1}));return a}},{key:"pathMouseEnter",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j"));if("function"==typeof i.config.chart.events.dataPointMouseEnter&&i.config.chart.events.dataPointMouseEnter(e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointMouseEnter",[e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}]),("none"===i.config.states.active.filter.type||"true"!==t.node.getAttribute("selected"))&&"none"!==i.config.states.hover.filter.type&&"none"!==i.config.states.active.filter.type&&!i.globals.isTouchDevice){var r=i.config.states.hover.filter;s.applyFilter(t,a,r.type,r.value)}}},{key:"pathMouseLeave",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j"));"function"==typeof i.config.chart.events.dataPointMouseLeave&&i.config.chart.events.dataPointMouseLeave(e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointMouseLeave",[e,this.ctx,{seriesIndex:a,dataPointIndex:n,w:i}]),"none"!==i.config.states.active.filter.type&&"true"===t.node.getAttribute("selected")||"none"!==i.config.states.hover.filter.type&&s.getDefaultFilter(t,a)}},{key:"pathMouseDown",value:function(t,e){var i=this.w,s=new u(this.ctx),a=parseInt(t.node.getAttribute("index")),n=parseInt(t.node.getAttribute("j")),r="false";if("true"===t.node.getAttribute("selected")){if(t.node.setAttribute("selected","false"),i.globals.selectedDataPoints[a].indexOf(n)>-1){var o=i.globals.selectedDataPoints[a].indexOf(n);i.globals.selectedDataPoints[a].splice(o,1)}}else{if(!i.config.states.active.allowMultipleDataPointsSelection&&i.globals.selectedDataPoints.length>0){i.globals.selectedDataPoints=[];var l=i.globals.dom.Paper.select(".apexcharts-series path").members,h=i.globals.dom.Paper.select(".apexcharts-series circle, .apexcharts-series rect").members;l.forEach(function(t){t.node.setAttribute("selected","false"),s.getDefaultFilter(t,a)}),h.forEach(function(t){t.node.setAttribute("selected","false"),s.getDefaultFilter(t,a)})}t.node.setAttribute("selected","true"),r="true",void 0===i.globals.selectedDataPoints[a]&&(i.globals.selectedDataPoints[a]=[]),i.globals.selectedDataPoints[a].push(n)}if("true"===r){var c=i.config.states.active.filter;"none"!==c&&s.applyFilter(t,a,c.type,c.value)}else"none"!==i.config.states.active.filter.type&&s.getDefaultFilter(t,a);"function"==typeof i.config.chart.events.dataPointSelection&&i.config.chart.events.dataPointSelection(e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:n,w:i}),this.ctx.fireEvent("dataPointSelection",[e,this.ctx,{selectedDataPoints:i.globals.selectedDataPoints,seriesIndex:a,dataPointIndex:n,w:i}])}},{key:"rotateAroundCenter",value:function(t){var e=t.getBBox();return{x:e.x+e.width/2,y:e.y+e.height/2}}},{key:"getTextRects",value:function(t,e,i,s){var a=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],n=this.w,r=this.drawText({x:-200,y:-200,text:t,textAnchor:"start",fontSize:e,fontFamily:i,foreColor:"#fff",opacity:0});s&&r.attr("transform",s),n.globals.dom.Paper.add(r);var o=r.bbox();return a||(o=r.node.getBoundingClientRect()),r.remove(),{width:o.width,height:o.height}}},{key:"placeTextWithEllipsis",value:function(t,e,i){if(t.textContent=e,e.length>0&&t.getSubStringLength(0,e.length)>=i){for(var s=e.length-3;s>0;s-=3)if(t.getSubStringLength(0,s)<=i)return void(t.textContent=e.substring(0,s)+"...");t.textContent="..."}}}],[{key:"setAttrs",value:function(t,e){for(var i in e)e.hasOwnProperty(i)&&t.setAttribute(i,e[i])}}]),t}();var p={name:"en",options:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],toolbar:{exportToSVG:"Download SVG",exportToPNG:"Download PNG",menu:"Menu",selection:"Selection",selectionZoom:"Selection Zoom",zoomIn:"Zoom In",zoomOut:"Zoom Out",pan:"Panning",reset:"Reset Zoom"}}},x=function(){function t(){e(this,t),this.yAxis={show:!0,showAlways:!1,seriesName:void 0,opposite:!1,reversed:!1,logarithmic:!1,tickAmount:void 0,forceNiceScale:!1,max:void 0,min:void 0,floating:!1,decimalsInFloat:void 0,labels:{show:!0,minWidth:0,maxWidth:160,offsetX:0,offsetY:0,align:void 0,rotate:0,padding:20,style:{colors:[],fontSize:"11px",fontFamily:void 0,cssClass:""},formatter:void 0},axisBorder:{show:!1,color:"#78909C",offsetX:0,offsetY:0},axisTicks:{show:!1,color:"#78909C",width:6,offsetX:0,offsetY:0},title:{text:void 0,rotate:90,offsetY:0,offsetX:0,style:{color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:""}},tooltip:{enabled:!1,offsetX:0},crosshairs:{show:!0,position:"front",stroke:{color:"#b6b6b6",width:1,dashArray:0}}},this.xAxisAnnotation={x:0,x2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",opacity:.3,offsetX:0,offsetY:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",orientation:"vertical",position:"top",offsetX:0,offsetY:0,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:2,bottom:2}}}},this.yAxisAnnotation={y:0,y2:null,strokeDashArray:1,fillColor:"#c2c2c2",borderColor:"#c2c2c2",opacity:.3,offsetX:0,offsetY:0,yAxisIndex:0,label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"end",position:"right",offsetX:0,offsetY:-3,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:0,bottom:2}}}},this.pointAnnotation={x:0,y:null,yAxisIndex:0,seriesIndex:0,marker:{size:0,fillColor:"#fff",strokeWidth:2,strokeColor:"#333",shape:"circle",offsetX:0,offsetY:0,radius:2,cssClass:""},label:{borderColor:"#c2c2c2",borderWidth:1,text:void 0,textAnchor:"middle",offsetX:0,offsetY:-15,style:{background:"#fff",color:void 0,fontSize:"11px",fontFamily:void 0,cssClass:"",padding:{left:5,right:5,top:0,bottom:2}}},customSVG:{SVG:void 0,cssClass:void 0,offsetX:0,offsetY:0}}}return s(t,[{key:"init",value:function(){return{annotations:{position:"front",yaxis:[this.yAxisAnnotation],xaxis:[this.xAxisAnnotation],points:[this.pointAnnotation]},chart:{animations:{enabled:!0,easing:"easeinout",speed:800,animateGradually:{delay:150,enabled:!0},dynamicAnimation:{enabled:!0,speed:350}},background:"transparent",locales:[p],defaultLocale:"en",dropShadow:{enabled:!1,enabledSeries:void 0,top:2,left:2,blur:4,color:"#000",opacity:.35},events:{animationEnd:void 0,beforeMount:void 0,mounted:void 0,updated:void 0,click:void 0,legendClick:void 0,markerClick:void 0,selection:void 0,dataPointSelection:void 0,dataPointMouseEnter:void 0,dataPointMouseLeave:void 0,beforeZoom:void 0,zoomed:void 0,scrolled:void 0},foreColor:"#373d3f",fontFamily:"Helvetica, Arial, sans-serif",height:"auto",parentHeightOffset:15,id:void 0,group:void 0,offsetX:0,offsetY:0,selection:{enabled:!1,type:"x",fill:{color:"#24292e",opacity:.1},stroke:{width:1,color:"#24292e",opacity:.4,dashArray:3},xaxis:{min:void 0,max:void 0},yaxis:{min:void 0,max:void 0}},sparkline:{enabled:!1},brush:{enabled:!1,autoScaleYaxis:!1,target:void 0},stacked:!1,stackType:"normal",toolbar:{show:!0,tools:{download:!0,selection:!0,zoom:!0,zoomin:!0,zoomout:!0,pan:!0,reset:!0,customIcons:[]},autoSelected:"zoom"},type:"line",width:"100%",zoom:{enabled:!0,type:"x",zoomedArea:{fill:{color:"#90CAF9",opacity:.4},stroke:{color:"#0D47A1",opacity:.4,width:1}}}},plotOptions:{bar:{horizontal:!1,columnWidth:"70%",barHeight:"70%",distributed:!1,endingShape:"flat",colors:{ranges:[],backgroundBarColors:[],backgroundBarOpacity:1},dataLabels:{maxItems:100,hideOverflowingLabels:!0,position:"top"}},candlestick:{colors:{upward:"#00B746",downward:"#EF403C"},wick:{useFillColor:!0}},heatmap:{radius:2,enableShades:!0,shadeIntensity:.5,reverseNegativeShade:!0,distributed:!1,colorScale:{inverse:!1,ranges:[],min:void 0,max:void 0}},radialBar:{size:void 0,inverseOrder:!1,startAngle:0,endAngle:360,offsetX:0,offsetY:0,hollow:{margin:5,size:"50%",background:"transparent",image:void 0,imageWidth:150,imageHeight:150,imageOffsetX:0,imageOffsetY:0,imageClipped:!0,position:"front",dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},track:{show:!0,startAngle:void 0,endAngle:void 0,background:"#f2f2f2",strokeWidth:"97%",opacity:1,margin:5,dropShadow:{enabled:!1,top:0,left:0,blur:3,color:"#000",opacity:.5}},dataLabels:{show:!0,name:{show:!0,fontSize:"16px",fontFamily:void 0,color:void 0,offsetY:0},value:{show:!0,fontSize:"14px",fontFamily:void 0,color:void 0,offsetY:16,formatter:function(t){return t+"%"}},total:{show:!1,label:"Total",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)/t.globals.series.length+"%"}}}},rangeBar:{},pie:{size:void 0,customScale:1,offsetX:0,offsetY:0,expandOnClick:!0,dataLabels:{offset:0,minAngleToShowLabel:10},donut:{size:"65%",background:"transparent",labels:{show:!1,name:{show:!0,fontSize:"16px",fontFamily:void 0,color:void 0,offsetY:-10},value:{show:!0,fontSize:"20px",fontFamily:void 0,color:void 0,offsetY:10,formatter:function(t){return t}},total:{show:!1,label:"Total",color:void 0,formatter:function(t){return t.globals.seriesTotals.reduce(function(t,e){return t+e},0)}}}}},radar:{size:void 0,offsetX:0,offsetY:0,polygons:{strokeColors:"#e8e8e8",connectorColors:"#e8e8e8",fill:{colors:void 0}}}},colors:void 0,dataLabels:{enabled:!0,enabledOnSeries:void 0,formatter:function(t){return t},textAnchor:"middle",offsetX:0,offsetY:0,style:{fontSize:"12px",fontFamily:void 0,colors:void 0},dropShadow:{enabled:!1,top:1,left:1,blur:1,color:"#000",opacity:.45}},fill:{type:"solid",colors:void 0,opacity:.85,gradient:{shade:"dark",type:"horizontal",shadeIntensity:.5,gradientToColors:void 0,inverseColors:!0,opacityFrom:1,opacityTo:1,stops:[0,50,100],colorStops:[]},image:{src:[],width:void 0,height:void 0},pattern:{style:"sqaures",width:6,height:6,strokeWidth:2}},grid:{show:!0,borderColor:"#e0e0e0",strokeDashArray:0,position:"back",xaxis:{lines:{show:!1,animate:!1}},yaxis:{lines:{show:!0,animate:!1}},row:{colors:void 0,opacity:.5},column:{colors:void 0,opacity:.5},padding:{top:0,right:10,bottom:0,left:12}},labels:[],legend:{show:!0,showForSingleSeries:!1,showForNullSeries:!0,showForZeroSeries:!0,floating:!1,position:"bottom",horizontalAlign:"center",fontSize:"12px",fontFamily:void 0,width:void 0,height:void 0,formatter:void 0,offsetX:-20,offsetY:0,labels:{colors:void 0,useSeriesColors:!1},markers:{width:12,height:12,strokeWidth:0,strokeColor:"#fff",radius:12,customHTML:void 0,offsetX:0,offsetY:0,onClick:void 0},itemMargin:{horizontal:0,vertical:5},onItemClick:{toggleDataSeries:!0},onItemHover:{highlightDataSeries:!0}},markers:{discrete:[],size:0,colors:void 0,strokeColors:"#fff",strokeWidth:2,strokeOpacity:.9,fillOpacity:1,shape:"circle",radius:2,offsetX:0,offsetY:0,hover:{size:void 0,sizeOffset:3}},noData:{text:void 0,align:"center",verticalAlign:"middle",offsetX:0,offsetY:0,style:{color:void 0,fontSize:"14px",fontFamily:void 0}},responsive:[],series:void 0,states:{normal:{filter:{type:"none",value:0}},hover:{filter:{type:"lighten",value:.15}},active:{allowMultipleDataPointsSelection:!1,filter:{type:"darken",value:.65}}},title:{text:void 0,align:"left",margin:10,offsetX:0,offsetY:0,floating:!1,style:{fontSize:"14px",fontFamily:void 0,color:void 0}},subtitle:{text:void 0,align:"left",margin:10,offsetX:0,offsetY:30,floating:!1,style:{fontSize:"12px",fontFamily:void 0,color:void 0}},stroke:{show:!0,curve:"smooth",lineCap:"butt",width:2,colors:void 0,dashArray:0},tooltip:{enabled:!0,enabledOnSeries:void 0,shared:!0,followCursor:!1,intersect:!1,inverseOrder:!1,custom:void 0,fillSeriesColor:!1,theme:"light",style:{fontSize:"12px",fontFamily:void 0},onDatasetHover:{highlightDataSeries:!1},x:{show:!0,format:"dd MMM",formatter:void 0},y:{formatter:void 0,title:{formatter:function(t){return t}}},z:{formatter:void 0,title:"Size: "},marker:{show:!0},items:{display:"flex"},fixed:{enabled:!1,position:"topRight",offsetX:0,offsetY:0}},xaxis:{type:"category",categories:[],offsetX:0,offsetY:0,labels:{show:!0,rotate:-45,rotateAlways:!1,hideOverlappingLabels:!0,trim:!0,minHeight:void 0,maxHeight:120,showDuplicates:!0,style:{colors:[],fontSize:"12px",fontFamily:void 0,cssClass:""},offsetX:0,offsetY:0,format:void 0,formatter:void 0,datetimeFormatter:{year:"yyyy",month:"MMM 'yy",day:"dd MMM",hour:"HH:mm",minute:"HH:mm:ss"}},axisBorder:{show:!0,color:"#78909C",width:"100%",height:1,offsetX:0,offsetY:0},axisTicks:{show:!0,color:"#78909C",height:6,offsetX:0,offsetY:0},tickAmount:void 0,tickPlacement:"on",min:void 0,max:void 0,range:void 0,floating:!1,position:"bottom",title:{text:void 0,offsetX:0,offsetY:0,style:{color:void 0,fontSize:"12px",fontFamily:void 0,cssClass:""}},crosshairs:{show:!0,width:1,position:"back",opacity:.9,stroke:{color:"#b6b6b6",width:1,dashArray:3},fill:{type:"solid",color:"#B1B9C4",gradient:{colorFrom:"#D8E3F0",colorTo:"#BED1E6",stops:[0,100],opacityFrom:.4,opacityTo:.5}},dropShadow:{enabled:!1,left:0,top:0,blur:1,opacity:.4}},tooltip:{enabled:!0,offsetY:0,formatter:void 0,style:{fontSize:"12px",fontFamily:void 0}}},yaxis:this.yAxis,theme:{mode:"light",palette:"palette1",monochrome:{enabled:!1,color:"#008FFB",shadeTo:"light",shadeIntensity:.65}}}}}]),t}(),b=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.graphics=new f(this.ctx),this.w.globals.isBarHorizontal&&(this.invertAxis=!0),this.xDivision=this.w.globals.gridWidth/this.w.globals.dataPoints}return s(t,[{key:"drawAnnotations",value:function(){var t=this.w;if(t.globals.axisCharts){for(var e=this.drawYAxisAnnotations(),i=this.drawXAxisAnnotations(),s=this.drawPointAnnotations(),a=t.config.chart.animations.enabled,n=[e,i,s],r=[i.node,e.node,s.node],o=0;o<3;o++)t.globals.dom.elGraphical.add(n[o]),!a||t.globals.resized||t.globals.dataChanged||r[o].classList.add("hidden"),t.globals.delayedElements.push({el:r[o],index:0});this.annotationsBackground()}}},{key:"addXaxisAnnotation",value:function(t,e,i){var s=this.w,a=this.invertAxis?s.globals.minY:s.globals.minX,n=this.invertAxis?s.globals.yRange[0]:s.globals.xRange,r=(t.x-a)/(n/s.globals.gridWidth),o=t.label.text;if("category"===s.config.xaxis.type||s.config.xaxis.convertedCatToNumeric){var l=s.globals.labels.indexOf(t.x),h=s.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(l+1)+")");h&&(r=parseFloat(h.getAttribute("x")))}var c=t.strokeDashArray;if(!(r<0||r>s.globals.gridWidth)){if(null===t.x2){var d=this.graphics.drawLine(r+t.offsetX,0+t.offsetY,r+t.offsetX,s.globals.gridHeight+t.offsetY,t.borderColor,c);e.appendChild(d.node)}else{var u=(t.x2-a)/(n/s.globals.gridWidth);if(u<r){var g=r;r=u,u=g}if(o){var f=this.graphics.drawRect(r+t.offsetX,0+t.offsetY,u-r,s.globals.gridHeight+t.offsetY,0,t.fillColor,t.opacity,1,t.borderColor,c);e.appendChild(f.node)}}var p="top"===t.label.position?-3:s.globals.gridHeight,x=this.graphics.drawText({x:r+t.label.offsetX,y:p+t.label.offsetY,text:o,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-xaxis-annotation-label "+t.label.style.cssClass});x.attr({rel:i}),e.appendChild(x.node),this.setOrientations(t,i)}}},{key:"drawXAxisAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-xaxis-annotations"});return e.config.annotations.xaxis.map(function(e,s){t.addXaxisAnnotation(e,i.node,s)}),i}},{key:"addYaxisAnnotation",value:function(t,e,i){var s,a,n=this.w,r=t.strokeDashArray;if(this.invertAxis){var o=n.globals.labels.indexOf(t.y),l=n.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(o+1)+")");l&&(s=parseFloat(l.getAttribute("y")))}else s=n.globals.gridHeight-(t.y-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight),n.config.yaxis[t.yAxisIndex]&&n.config.yaxis[t.yAxisIndex].reversed&&(s=(t.y-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight));var h=t.label.text;if(null===t.y2){var c=this.graphics.drawLine(0+t.offsetX,s+t.offsetY,n.globals.gridWidth+t.offsetX,s+t.offsetY,t.borderColor,r);e.appendChild(c.node)}else{if(this.invertAxis){var d=n.globals.labels.indexOf(t.y2),u=n.globals.dom.baseEl.querySelector(".apexcharts-yaxis-texts-g text:nth-child("+(d+1)+")");u&&(a=parseFloat(u.getAttribute("y")))}else a=n.globals.gridHeight-(t.y2-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight),n.config.yaxis[t.yAxisIndex]&&n.config.yaxis[t.yAxisIndex].reversed&&(a=(t.y2-n.globals.minYArr[t.yAxisIndex])/(n.globals.yRange[t.yAxisIndex]/n.globals.gridHeight));if(a>s){var g=s;s=a,a=g}if(h){var f=this.graphics.drawRect(0+t.offsetX,a+t.offsetY,n.globals.gridWidth+t.offsetX,s-a,0,t.fillColor,t.opacity,1,t.borderColor,r);e.appendChild(f.node)}}var p="right"===t.label.position?n.globals.gridWidth:0,x=this.graphics.drawText({x:p+t.label.offsetX,y:(a||s)+t.label.offsetY-3,text:h,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-yaxis-annotation-label "+t.label.style.cssClass});x.attr({rel:i}),e.appendChild(x.node)}},{key:"drawYAxisAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-yaxis-annotations"});return e.config.annotations.yaxis.map(function(e,s){t.addYaxisAnnotation(e,i.node,s)}),i}},{key:"clearAnnotations",value:function(t){var e=t.w.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-annotations, .apexcharts-xaxis-annotations, .apexcharts-point-annotations");(e=d.listToArray(e)).forEach(function(t){for(;t.firstChild;)t.removeChild(t.firstChild)})}},{key:"addPointAnnotation",value:function(t,e,i){var s=this.w,a=0,n=0,r=0;if(this.invertAxis&&console.warn("Point annotation is not supported in horizontal bar charts."),"string"==typeof t.x){var o=s.globals.labels.indexOf(t.x),l=s.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g text:nth-child("+(o+1)+")");a=parseFloat(l.getAttribute("x"));var h=t.y;null===t.y&&(h=s.globals.series[t.seriesIndex][o]),n=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=s.globals.gridHeight-(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(n=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)+parseInt(t.label.style.fontSize)+t.marker.size,r=(h-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight))}else a=(t.x-s.globals.minX)/(s.globals.xRange/s.globals.gridWidth),n=s.globals.gridHeight-(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=s.globals.gridHeight-(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight),s.config.yaxis[t.yAxisIndex]&&s.config.yaxis[t.yAxisIndex].reversed&&(n=(parseFloat(t.y)-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight)-parseInt(t.label.style.fontSize)-t.marker.size,r=(t.y-s.globals.minYArr[t.yAxisIndex])/(s.globals.yRange[t.yAxisIndex]/s.globals.gridHeight));if(!(a<0||a>s.globals.gridWidth)){var c={pSize:t.marker.size,pWidth:t.marker.strokeWidth,pointFillColor:t.marker.fillColor,pointStrokeColor:t.marker.strokeColor,shape:t.marker.shape,radius:t.marker.radius,class:"apexcharts-point-annotation-marker "+t.marker.cssClass},d=this.graphics.drawMarker(a+t.marker.offsetX,r+t.marker.offsetY,c);e.appendChild(d.node);var u=t.label.text?t.label.text:"",g=this.graphics.drawText({x:a+t.label.offsetX,y:n+t.label.offsetY,text:u,textAnchor:t.label.textAnchor,fontSize:t.label.style.fontSize,fontFamily:t.label.style.fontFamily,foreColor:t.label.style.color,cssClass:"apexcharts-point-annotation-label "+t.label.style.cssClass});if(g.attr({rel:i}),e.appendChild(g.node),t.customSVG.SVG){var f=this.graphics.group({class:"apexcharts-point-annotations-custom-svg "+t.customSVG.cssClass});f.attr({transform:"translate(".concat(a+t.customSVG.offsetX,", ").concat(n+t.customSVG.offsetY,")")}),f.node.innerHTML=t.customSVG.SVG,e.appendChild(f.node)}}}},{key:"drawPointAnnotations",value:function(){var t=this,e=this.w,i=this.graphics.group({class:"apexcharts-point-annotations"});return e.config.annotations.points.map(function(e,s){t.addPointAnnotation(e,i.node,s)}),i}},{key:"setOrientations",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.w;if("vertical"===t.label.orientation){var s=null!==e?e:0,a=i.globals.dom.baseEl.querySelector(".apexcharts-xaxis-annotations .apexcharts-xaxis-annotation-label[rel='".concat(s,"']"));if(null!==a){var n=a.getBoundingClientRect();a.setAttribute("x",parseFloat(a.getAttribute("x"))-n.height+4),"top"===t.label.position?a.setAttribute("y",parseFloat(a.getAttribute("y"))+n.width):a.setAttribute("y",parseFloat(a.getAttribute("y"))-n.width);var r=this.graphics.rotateAroundCenter(a),o=r.x,l=r.y;a.setAttribute("transform","rotate(-90 ".concat(o," ").concat(l,")"))}}}},{key:"addBackgroundToAnno",value:function(t,e){var i=this.w;if(!e.label.text)return null;var s=i.globals.dom.baseEl.querySelector(".apexcharts-grid").getBoundingClientRect(),a=t.getBoundingClientRect(),n=e.label.style.padding.left,r=e.label.style.padding.right,o=e.label.style.padding.top,l=e.label.style.padding.bottom;"vertical"===e.label.orientation&&(o=e.label.style.padding.left,l=e.label.style.padding.right,n=e.label.style.padding.top,r=e.label.style.padding.bottom);var h=a.left-s.left-n,c=a.top-s.top-o;return this.graphics.drawRect(h,c,a.width+n+r,a.height+o+l,0,e.label.style.background,1,e.label.borderWidth,e.label.borderColor,0)}},{key:"annotationsBackground",value:function(){var t=this,e=this.w,i=function(i,s,a){var n=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations .apexcharts-").concat(a,"-annotation-label[rel='").concat(s,"']"));if(n){var r=n.parentNode,o=t.addBackgroundToAnno(n,i);o&&r.insertBefore(o.node,n)}};e.config.annotations.xaxis.map(function(t,e){i(t,e,"xaxis")}),e.config.annotations.yaxis.map(function(t,e){i(t,e,"yaxis")}),e.config.annotations.points.map(function(t,e){i(t,e,"point")})}},{key:"addText",value:function(t,e,i){var s=t.x,a=t.y,n=t.text,r=t.textAnchor,o=t.appendTo,l=void 0===o?".apexcharts-inner":o,h=t.foreColor,c=t.fontSize,d=t.fontFamily,u=t.cssClass,g=t.backgroundColor,f=t.borderWidth,p=t.strokeDashArray,x=t.radius,b=t.borderColor,m=t.paddingLeft,v=void 0===m?4:m,y=t.paddingRight,w=void 0===y?4:y,k=t.paddingBottom,A=void 0===k?2:k,S=t.paddingTop,C=void 0===S?2:S,L=i,z=L.w,P=z.globals.dom.baseEl.querySelector(l),M=this.graphics.drawText({x:s,y:a,text:n,textAnchor:r||"start",fontSize:c||"12px",fontFamily:d||z.config.chart.fontFamily,foreColor:h||z.config.chart.foreColor,cssClass:u});P.appendChild(M.node);var E=M.bbox();if(n){var T=this.graphics.drawRect(E.x-v,E.y-C,E.width+v+w,E.height+A+C,x,g,1,f,b,p);M.before(T)}return e&&z.globals.memory.methodsToExec.push({context:L,method:L.addText,params:{x:s,y:a,text:n,textAnchor:r,appendTo:l,foreColor:h,fontSize:c,cssClass:u,backgroundColor:g,borderWidth:f,strokeDashArray:p,radius:x,borderColor:b,paddingLeft:v,paddingRight:w,paddingBottom:A,paddingTop:C}}),i}},{key:"addPointAnnotationExternal",value:function(t,e,i){return void 0===this.invertAxis&&(this.invertAxis=i.w.globals.isBarHorizontal),this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"point",contextMethod:i.addPointAnnotation}),i}},{key:"addYaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"yaxis",contextMethod:i.addYaxisAnnotation}),i}},{key:"addXaxisAnnotationExternal",value:function(t,e,i){return this.addAnnotationExternal({params:t,pushToMemory:e,context:i,type:"xaxis",contextMethod:i.addXaxisAnnotation}),i}},{key:"addAnnotationExternal",value:function(t){var e=t.params,i=t.pushToMemory,s=t.context,a=t.type,n=t.contextMethod,r=s,o=r.w,l=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations")),h=l.childNodes.length+1,c=new x,u=Object.assign({},"xaxis"===a?c.xAxisAnnotation:"yaxis"===a?c.yAxisAnnotation:c.pointAnnotation),g=d.extend(u,e);switch(a){case"xaxis":this.addXaxisAnnotation(g,l,h);break;case"yaxis":this.addYaxisAnnotation(g,l,h);break;case"point":this.addPointAnnotation(g,l,h)}var f=o.globals.dom.baseEl.querySelector(".apexcharts-".concat(a,"-annotations .apexcharts-").concat(a,"-annotation-label[rel='").concat(h,"']")),p=this.addBackgroundToAnno(f,g);return p&&l.insertBefore(p.node,f),i&&o.globals.memory.methodsToExec.push({context:r,method:n,params:e}),s}}]),t}(),m=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.months31=[1,3,5,7,8,10,12],this.months30=[2,4,6,9,11],this.daysCntOfYear=[0,31,59,90,120,151,181,212,243,273,304,334]}return s(t,[{key:"isValidDate",value:function(t){return!isNaN(this.parseDate(t))}},{key:"getUTCTimeStamp",value:function(t){return Date.parse(t)?new Date(new Date(t).toISOString().substr(0,25)).getTime():t}},{key:"parseDate",value:function(t){var e=Date.parse(t);if(!isNaN(e))return this.getUTCTimeStamp(t);var i=Date.parse(t.replace(/-/g,"/").replace(/[a-z]+/gi," "));return i=this.getUTCTimeStamp(i)}},{key:"treatAsUtc",value:function(t){var e=new Date(t);return e.setMinutes(e.getMinutes()-e.getTimezoneOffset()),e}},{key:"formatDate",value:function(t,e){var i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.w.globals.locale,n=["\0"].concat(c(a.months)),r=["\x01"].concat(c(a.shortMonths)),o=["\x02"].concat(c(a.days)),l=["\x03"].concat(c(a.shortDays));function h(t,e){var i=t+"";for(e=e||2;i.length<e;)i="0"+i;return i}s&&(t=this.treatAsUtc(t));var d=i?t.getUTCFullYear():t.getFullYear();e=(e=(e=e.replace(/(^|[^\\])yyyy+/g,"$1"+d)).replace(/(^|[^\\])yy/g,"$1"+d.toString().substr(2,2))).replace(/(^|[^\\])y/g,"$1"+d);var u=(i?t.getUTCMonth():t.getMonth())+1;e=(e=(e=(e=e.replace(/(^|[^\\])MMMM+/g,"$1"+n[0])).replace(/(^|[^\\])MMM/g,"$1"+r[0])).replace(/(^|[^\\])MM/g,"$1"+h(u))).replace(/(^|[^\\])M/g,"$1"+u);var g=i?t.getUTCDate():t.getDate();e=(e=(e=(e=e.replace(/(^|[^\\])dddd+/g,"$1"+o[0])).replace(/(^|[^\\])ddd/g,"$1"+l[0])).replace(/(^|[^\\])dd/g,"$1"+h(g))).replace(/(^|[^\\])d/g,"$1"+g);var f=i?t.getUTCHours():t.getHours(),p=f>12?f-12:0===f?12:f;e=(e=(e=(e=e.replace(/(^|[^\\])HH+/g,"$1"+h(f))).replace(/(^|[^\\])H/g,"$1"+f)).replace(/(^|[^\\])hh+/g,"$1"+h(p))).replace(/(^|[^\\])h/g,"$1"+p);var x=i?t.getUTCMinutes():t.getMinutes();e=(e=e.replace(/(^|[^\\])mm+/g,"$1"+h(x))).replace(/(^|[^\\])m/g,"$1"+x);var b=i?t.getUTCSeconds():t.getSeconds();e=(e=e.replace(/(^|[^\\])ss+/g,"$1"+h(b))).replace(/(^|[^\\])s/g,"$1"+b);var m=i?t.getUTCMilliseconds():t.getMilliseconds();e=e.replace(/(^|[^\\])fff+/g,"$1"+h(m,3)),m=Math.round(m/10),e=e.replace(/(^|[^\\])ff/g,"$1"+h(m)),m=Math.round(m/10);var v=f<12?"AM":"PM";e=(e=(e=e.replace(/(^|[^\\])f/g,"$1"+m)).replace(/(^|[^\\])TT+/g,"$1"+v)).replace(/(^|[^\\])T/g,"$1"+v.charAt(0));var y=v.toLowerCase();e=(e=e.replace(/(^|[^\\])tt+/g,"$1"+y)).replace(/(^|[^\\])t/g,"$1"+y.charAt(0));var w=-t.getTimezoneOffset(),k=i||!w?"Z":w>0?"+":"-";if(!i){var A=(w=Math.abs(w))%60;k+=h(Math.floor(w/60))+":"+h(A)}e=e.replace(/(^|[^\\])K/g,"$1"+k);var S=(i?t.getUTCDay():t.getDay())+1;return e=(e=(e=(e=(e=e.replace(new RegExp(o[0],"g"),o[S])).replace(new RegExp(l[0],"g"),l[S])).replace(new RegExp(n[0],"g"),n[u])).replace(new RegExp(r[0],"g"),r[u])).replace(/\\(.)/g,"$1")}},{key:"getTimeUnitsfromTimestamp",value:function(t,e){var i=this.w;void 0!==i.config.xaxis.min&&(t=i.config.xaxis.min),void 0!==i.config.xaxis.max&&(e=i.config.xaxis.max);var s=new Date(t).getFullYear(),a=new Date(e).getFullYear(),n=new Date(t).getMonth(),r=new Date(e).getMonth(),o=new Date(t).getDate(),l=new Date(e).getDate(),h=new Date(t).getHours(),c=new Date(e).getHours();return{minMinute:new Date(t).getMinutes(),maxMinute:new Date(e).getMinutes(),minHour:h,maxHour:c,minDate:o,maxDate:l,minMonth:n,maxMonth:r,minYear:s,maxYear:a}}},{key:"isLeapYear",value:function(t){return t%4==0&&t%100!=0||t%400==0}},{key:"calculcateLastDaysOfMonth",value:function(t,e,i){return this.determineDaysOfMonths(t,e)-i}},{key:"determineDaysOfYear",value:function(t){var e=365;return this.isLeapYear(t)&&(e=366),e}},{key:"determineRemainingDaysOfYear",value:function(t,e,i){var s=this.daysCntOfYear[e]+i;return e>1&&this.isLeapYear()&&s++,s}},{key:"determineDaysOfMonths",value:function(t,e){var i=30;switch(t=d.monthMod(t),!0){case this.months30.indexOf(t)>-1:2===t&&(i=this.isLeapYear(e)?29:28);break;case this.months31.indexOf(t)>-1:default:i=31}return i}}]),t}(),v=function(){function t(i){e(this,t),this.opts=i}return s(t,[{key:"line",value:function(){return{chart:{animations:{easing:"swing"}},dataLabels:{enabled:!1},stroke:{width:5,curve:"straight"},markers:{size:0,hover:{sizeOffset:6}},xaxis:{crosshairs:{width:1}}}}},{key:"sparkline",value:function(t){this.opts.yaxis[0].labels.show=!1,this.opts.yaxis[0].floating=!0;return d.extend(t,{grid:{show:!1,padding:{left:0,right:0,top:0,bottom:0}},legend:{show:!1},xaxis:{labels:{show:!1},tooltip:{enabled:!1},axisBorder:{show:!1}},chart:{toolbar:{show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1}})}},{key:"bar",value:function(){return{chart:{stacked:!1,animations:{easing:"swing"}},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{style:{colors:["#fff"]}},stroke:{width:0},fill:{opacity:.85},legend:{markers:{shape:"square",radius:2,size:8}},tooltip:{shared:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{width:"barWidth",position:"back",fill:{type:"gradient"},dropShadow:{enabled:!1},stroke:{width:0}}}}}},{key:"candlestick",value:function(){return{stroke:{width:1,colors:["#333"]},dataLabels:{enabled:!1},tooltip:{shared:!0,custom:function(t){var e=t.seriesIndex,i=t.dataPointIndex,s=t.w;return'<div class="apexcharts-tooltip-candlestick"><div>Open: <span class="value">'+s.globals.seriesCandleO[e][i]+'</span></div><div>High: <span class="value">'+s.globals.seriesCandleH[e][i]+'</span></div><div>Low: <span class="value">'+s.globals.seriesCandleL[e][i]+'</span></div><div>Close: <span class="value">'+s.globals.seriesCandleC[e][i]+"</span></div></div>"}},states:{active:{filter:{type:"none"}}},xaxis:{crosshairs:{width:1}}}}},{key:"rangeBar",value:function(){return{stroke:{width:0},plotOptions:{bar:{dataLabels:{position:"center"}}},dataLabels:{enabled:!1,formatter:function(t,e){e.ctx;var i=e.seriesIndex,s=e.dataPointIndex,a=e.w,n=a.globals.seriesRangeStart[i][s];return a.globals.seriesRangeEnd[i][s]-n},style:{colors:["#fff"]}},tooltip:{shared:!1,followCursor:!0,custom:function(t){var e=t.ctx,i=t.seriesIndex,s=t.dataPointIndex,a=t.w,n=a.globals.seriesRangeStart[i][s],r=a.globals.seriesRangeEnd[i][s],o="",l="",h=a.globals.colors[i];if(void 0===a.config.tooltip.x.formatter)if("datetime"===a.config.xaxis.type){var c=new m(e);o=c.formatDate(new Date(n),a.config.tooltip.x.format,!0,!0),l=c.formatDate(new Date(r),a.config.tooltip.x.format,!0,!0)}else o=n,l=r;else o=a.config.tooltip.x.formatter(n),l=a.config.tooltip.x.formatter(r);var d=a.globals.labels[s];return'<div class="apexcharts-tooltip-rangebar"><div> <span class="series-name" style="color: '+h+'">'+(a.config.series[i].name?a.config.series[i].name:"")+'</span></div><div> <span class="category">'+d+': </span> <span class="value start-value">'+o+'</span> <span class="separator">-</span> <span class="value end-value">'+l+"</span></div></div>"}},xaxis:{tooltip:{enabled:!1},crosshairs:{stroke:{width:0}}}}}},{key:"area",value:function(){return{stroke:{width:4},fill:{type:"gradient",gradient:{inverseColors:!1,shade:"light",type:"vertical",opacityFrom:.65,opacityTo:.5,stops:[0,100,100]}},markers:{size:0,hover:{sizeOffset:6}},tooltip:{followCursor:!1}}}},{key:"brush",value:function(t){return d.extend(t,{chart:{toolbar:{autoSelected:"selection",show:!1},zoom:{enabled:!1}},dataLabels:{enabled:!1},stroke:{width:1},tooltip:{enabled:!1},xaxis:{tooltip:{enabled:!1}}})}},{key:"stacked100",value:function(){var t=this;this.opts.dataLabels=this.opts.dataLabels||{},this.opts.dataLabels.formatter=this.opts.dataLabels.formatter||void 0;var e=this.opts.dataLabels.formatter;this.opts.yaxis.forEach(function(e,i){t.opts.yaxis[i].min=0,t.opts.yaxis[i].max=100}),"bar"===this.opts.chart.type&&(this.opts.dataLabels.formatter=e||function(t){return"number"==typeof t&&t?t.toFixed(0)+"%":t})}},{key:"bubble",value:function(){return{dataLabels:{style:{colors:["#fff"]}},tooltip:{shared:!1,intersect:!0},xaxis:{crosshairs:{width:0}},fill:{type:"solid",gradient:{shade:"light",inverse:!0,shadeIntensity:.55,opacityFrom:.4,opacityTo:.8}}}}},{key:"scatter",value:function(){return{dataLabels:{enabled:!1},tooltip:{shared:!1,intersect:!0},markers:{size:6,strokeWidth:2,hover:{sizeOffset:2}}}}},{key:"heatmap",value:function(){return{chart:{stacked:!1,zoom:{enabled:!1}},fill:{opacity:1},dataLabels:{style:{colors:["#fff"]}},stroke:{colors:["#fff"]},tooltip:{followCursor:!0,marker:{show:!1},x:{show:!1}},legend:{position:"top",markers:{shape:"square",size:10,offsetY:2}},grid:{padding:{right:20}}}}},{key:"pie",value:function(){return{chart:{toolbar:{show:!1}},plotOptions:{pie:{donut:{labels:{show:!1}}}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"dark",shadeIntensity:.35,inverseColors:!1,stops:[0,100,100]}},padding:{right:0,left:0},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"donut",value:function(){return{chart:{toolbar:{show:!1}},dataLabels:{formatter:function(t){return t.toFixed(1)+"%"},style:{colors:["#fff"]},dropShadow:{enabled:!0}},stroke:{colors:["#fff"]},fill:{opacity:1,gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"vertical",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},tooltip:{theme:"dark",fillSeriesColor:!0},legend:{position:"right"}}}},{key:"radar",value:function(){return this.opts.yaxis[0].labels.style.fontSize="13px",this.opts.yaxis[0].labels.offsetY=6,{dataLabels:{enabled:!0,style:{colors:["#a8a8a8"],fontSize:"11px"}},stroke:{width:2},markers:{size:3,strokeWidth:1,strokeOpacity:1},fill:{opacity:.2},tooltip:{shared:!1,intersect:!0,followCursor:!0},grid:{show:!1},xaxis:{tooltip:{enabled:!1},crosshairs:{show:!1}}}}},{key:"radialBar",value:function(){return{chart:{animations:{dynamicAnimation:{enabled:!0,speed:800}},toolbar:{show:!1}},fill:{gradient:{shade:"dark",shadeIntensity:.4,inverseColors:!1,type:"diagonal2",opacityFrom:1,opacityTo:1,stops:[70,98,100]}},padding:{right:0,left:0},legend:{show:!1,position:"right"},tooltip:{enabled:!1,fillSeriesColor:!0}}}}],[{key:"convertCatToNumeric",value:function(t){t.xaxis.type="numeric",t.xaxis.convertedCatToNumeric=!0,t.xaxis.labels=t.xaxis.labels||{},t.xaxis.labels.formatter=t.xaxis.labels.formatter||function(t){return t},t.chart=t.chart||{},t.chart.zoom=t.chart.zoom||window.Apex.chart&&window.Apex.chart.zoom||{};var e=t.xaxis.labels.formatter,i=t.xaxis.categories&&t.xaxis.categories.length?t.xaxis.categories:t.labels;return i&&i.length&&(t.xaxis.labels.formatter=function(t){return e(i[t-1])}),t.xaxis.categories=[],t.labels=[],t.chart.zoom.enabled=t.chart.zoom.enabled||!1,t}}]),t}(),y=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getStackedSeriesTotals",value:function(){for(var t=this.w,e=[],i=0;i<t.globals.series[t.globals.maxValsInArrayIndex].length;i++){for(var s=0,a=0;a<t.globals.series.length;a++)s+=t.globals.series[a][i];e.push(s)}return t.globals.stackedSeriesTotals=e,e}},{key:"getSeriesTotalByIndex",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return null===t?this.w.config.series.reduce(function(t,e){return t+e},0):this.w.globals.series[t].reduce(function(t,e){return t+e},0)}},{key:"isSeriesNull",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null;return 0===(null===t?this.w.config.series.filter(function(t){return null!==t}):this.w.globals.series[t].filter(function(t){return null!==t})).length}},{key:"seriesHaveSameValues",value:function(t){return this.w.globals.series[t].every(function(t,e,i){return t===i[0]})}},{key:"getLargestSeries",value:function(){var t=this.w;t.globals.maxValsInArrayIndex=t.globals.series.map(function(t){return t.length}).indexOf(Math.max.apply(Math,t.globals.series.map(function(t){return t.length})))}},{key:"getLargestMarkerSize",value:function(){var t=this.w,e=0;return t.globals.markers.size.forEach(function(t){e=Math.max(e,t)}),t.globals.markers.largestSize=e,e}},{key:"getSeriesTotals",value:function(){var t=this.w;t.globals.seriesTotals=t.globals.series.map(function(t,e){var i=0;if(Array.isArray(t))for(var s=0;s<t.length;s++)i+=t[s];else i+=t;return i})}},{key:"getSeriesTotalsXRange",value:function(t,e){var i=this.w;return i.globals.series.map(function(s,a){for(var n=0,r=0;r<s.length;r++)i.globals.seriesX[a][r]>t&&i.globals.seriesX[a][r]<e&&(n+=s[r]);return n})}},{key:"getPercentSeries",value:function(){var t=this.w;t.globals.seriesPercent=t.globals.series.map(function(e,i){var s=[];if(Array.isArray(e))for(var a=0;a<e.length;a++){var n=t.globals.stackedSeriesTotals[a],r=100*e[a]/n;s.push(r)}else{var o=100*e/t.globals.seriesTotals.reduce(function(t,e){return t+e},0);s.push(o)}return s})}},{key:"getCalculatedRatios",value:function(){var t,e,i,s,a,n=this.w.globals,r=[],o=[],l=.1,h=0;if(n.yRange=[],n.isMultipleYAxis)for(var c=0;c<n.minYArr.length;c++)n.yRange.push(Math.abs(n.minYArr[c]-n.maxYArr[c])),o.push(0);else n.yRange.push(Math.abs(n.minY-n.maxY));n.xRange=Math.abs(n.maxX-n.minX),n.zRange=Math.abs(n.maxZ-n.minZ);for(var d=0;d<n.yRange.length;d++)r.push(n.yRange[d]/n.gridHeight);if(e=n.xRange/n.gridWidth,i=Math.abs(n.initialmaxX-n.initialminX)/n.gridWidth,t=n.yRange/n.gridWidth,s=n.xRange/n.gridHeight,a=n.zRange/n.gridHeight*16,n.minY!==Number.MIN_VALUE&&0!==Math.abs(n.minY)&&(n.hasNegs=!0),n.isMultipleYAxis){o=[];for(var u=0;u<r.length;u++)o.push(-n.minYArr[u]/r[u])}else o.push(-n.minY/r[0]),n.minY!==Number.MIN_VALUE&&0!==Math.abs(n.minY)&&(l=-n.minY/t,h=n.minX/e);return{yRatio:r,invertedYRatio:t,zRatio:a,xRatio:e,initialXRatio:i,invertedXRatio:s,baseLineInvertedY:l,baseLineY:o,baseLineX:h}}},{key:"getLogSeries",value:function(t){var e=this.w;return e.globals.seriesLog=t.map(function(t,i){return e.config.yaxis[i]&&e.config.yaxis[i].logarithmic?t.map(function(t){return null===t?null:(Math.log(t)-Math.log(e.globals.minYArr[i]))/(Math.log(e.globals.maxYArr[i])-Math.log(e.globals.minYArr[i]))}):t}),e.globals.seriesLog}},{key:"getLogYRatios",value:function(t){var e=this,i=this.w,s=this.w.globals;return s.yLogRatio=t.slice(),s.logYRange=s.yRange.map(function(t,a){if(i.config.yaxis[a]&&e.w.config.yaxis[a].logarithmic){var n,r=-Number.MAX_VALUE,o=Number.MIN_VALUE;return s.seriesLog.forEach(function(t,e){t.forEach(function(t){i.config.yaxis[e]&&i.config.yaxis[e].logarithmic&&(r=Math.max(t,r),o=Math.min(t,o))})}),n=Math.pow(s.yRange[a],Math.abs(o-r)/s.yRange[a]),s.yLogRatio[a]=n/s.gridHeight,n}}),s.yLogRatio}}],[{key:"checkComboSeries",value:function(t){var e=!1,i=!1;return t.length&&void 0!==t[0].type&&(e=!0,t.forEach(function(t){"bar"!==t.type&&"column"!==t.type||(i=!0)})),{comboCharts:e,comboChartsHasBars:i}}},{key:"extendArrayProps",value:function(t,e){return e.yaxis&&(e=t.extendYAxis(e)),e.annotations&&(e.annotations.yaxis&&(e=t.extendYAxisAnnotations(e)),e.annotations.xaxis&&(e=t.extendXAxisAnnotations(e)),e.annotations.points&&(e=t.extendPointAnnotations(e))),e}}]),t}(),w=function(){function i(t){e(this,i),this.opts=t}return s(i,[{key:"init",value:function(){var e=this.opts,i=new x,s=new v(e);this.chartType=e.chart.type,"histogram"===this.chartType&&(e.chart.type="bar",e=d.extend({plotOptions:{bar:{columnWidth:"99.99%"}}},e)),e.series=this.checkEmptySeries(e.series),e=this.extendYAxis(e),e=this.extendAnnotations(e);var a=i.init(),n={};if(e&&"object"===t(e)){var r={};switch(this.chartType){case"line":r=s.line();break;case"area":r=s.area();break;case"bar":r=s.bar();break;case"candlestick":r=s.candlestick();break;case"rangeBar":r=s.rangeBar();break;case"histogram":r=s.bar();break;case"bubble":r=s.bubble();break;case"scatter":r=s.scatter();break;case"heatmap":r=s.heatmap();break;case"pie":r=s.pie();break;case"donut":r=s.donut();break;case"radar":r=s.radar();break;case"radialBar":r=s.radialBar();break;default:r=s.line()}e.chart.brush&&e.chart.brush.enabled&&(r=s.brush(r)),e.chart.stacked&&"100%"===e.chart.stackType&&s.stacked100(),this.checkForDarkTheme(window.Apex),this.checkForDarkTheme(e),e.xaxis=e.xaxis||window.Apex.xaxis||{};var o=y.checkComboSeries(e.series);"line"!==e.chart.type&&"area"!==e.chart.type&&"scatter"!==e.chart.type||o.comboChartsHasBars||"datetime"===e.xaxis.type||"numeric"===e.xaxis.type||"between"===e.xaxis.tickPlacement||(e=v.convertCatToNumeric(e)),(e.chart.sparkline&&e.chart.sparkline.enabled||window.Apex.chart&&window.Apex.chart.sparkline&&window.Apex.chart.sparkline.enabled)&&(r=s.sparkline(r)),n=d.extend(a,r)}var l=d.extend(n,window.Apex);return a=d.extend(l,e),a=this.handleUserInputErrors(a)}},{key:"extendYAxis",value:function(t){var e=new x;return void 0===t.yaxis&&(t.yaxis={}),t.yaxis.constructor!==Array&&window.Apex.yaxis&&window.Apex.yaxis.constructor!==Array&&(t.yaxis=d.extend(t.yaxis,window.Apex.yaxis)),t.yaxis.constructor!==Array?t.yaxis=[d.extend(e.yAxis,t.yaxis)]:t.yaxis=d.extendArray(t.yaxis,e.yAxis),t}},{key:"extendAnnotations",value:function(t){return void 0===t.annotations&&(t.annotations={},t.annotations.yaxis=[],t.annotations.xaxis=[],t.annotations.points=[]),t=this.extendYAxisAnnotations(t),t=this.extendXAxisAnnotations(t),t=this.extendPointAnnotations(t)}},{key:"extendYAxisAnnotations",value:function(t){var e=new x;return t.annotations.yaxis=d.extendArray(void 0!==t.annotations.yaxis?t.annotations.yaxis:[],e.yAxisAnnotation),t}},{key:"extendXAxisAnnotations",value:function(t){var e=new x;return t.annotations.xaxis=d.extendArray(void 0!==t.annotations.xaxis?t.annotations.xaxis:[],e.xAxisAnnotation),t}},{key:"extendPointAnnotations",value:function(t){var e=new x;return t.annotations.points=d.extendArray(void 0!==t.annotations.points?t.annotations.points:[],e.pointAnnotation),t}},{key:"checkForDarkTheme",value:function(t){t.theme&&"dark"===t.theme.mode&&(t.tooltip||(t.tooltip={}),"light"!==t.tooltip.theme&&(t.tooltip.theme="dark"),t.chart.foreColor||(t.chart.foreColor="#f6f7f8"),t.theme.palette||(t.theme.palette="palette4"))}},{key:"checkEmptySeries",value:function(t){return 0===t.length?[{data:[]}]:t}},{key:"handleUserInputErrors",value:function(t){var e=t;if(e.tooltip.shared&&e.tooltip.intersect)throw new Error("tooltip.shared cannot be enabled when tooltip.intersect is true. Turn off any other option by setting it to false.");if(e.chart.scroller&&console.warn("Scroller has been deprecated since v2.0.0. Please remove the configuration for chart.scroller"),("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal){if(e.yaxis.length>1)throw new Error("Multiple Y Axis for bars are not supported. Switch to column chart by setting plotOptions.bar.horizontal=false");e.yaxis[0].reversed&&(e.yaxis[0].opposite=!0),e.xaxis.tooltip.enabled=!1,e.yaxis[0].tooltip.enabled=!1,e.chart.zoom.enabled=!1}return"bar"!==e.chart.type&&"rangeBar"!==e.chart.type||e.tooltip.shared&&("barWidth"===e.xaxis.crosshairs.width&&e.series.length>1&&(console.warn('crosshairs.width = "barWidth" is only supported in single series, not in a multi-series barChart.'),e.xaxis.crosshairs.width="tickWidth"),e.plotOptions.bar.horizontal&&(e.states.hover.type="none",e.tooltip.shared=!1),e.tooltip.followCursor||(console.warn("followCursor option in shared columns cannot be turned off. Please set %ctooltip.followCursor: true","color: blue;"),e.tooltip.followCursor=!0)),"candlestick"===e.chart.type&&e.yaxis[0].reversed&&(console.warn("Reversed y-axis in candlestick chart is not supported."),e.yaxis[0].reversed=!1),e.chart.group&&0===e.yaxis[0].labels.minWidth&&console.warn("It looks like you have multiple charts in synchronization. You must provide yaxis.labels.minWidth which must be EQUAL for all grouped charts to prevent incorrect behaviour."),Array.isArray(e.stroke.width)&&"line"!==e.chart.type&&"area"!==e.chart.type&&(console.warn("stroke.width option accepts array only for line and area charts. Reverted back to Number"),e.stroke.width=e.stroke.width[0]),e}}]),i}(),k=function(){function t(){e(this,t)}return s(t,[{key:"globalVars",value:function(t){return{chartID:null,cuid:null,events:{beforeMount:[],mounted:[],updated:[],clicked:[],selection:[],dataPointSelection:[],zoomed:[],scrolled:[]},colors:[],clientX:null,clientY:null,fill:{colors:[]},stroke:{colors:[]},dataLabels:{style:{colors:[]}},radarPolygons:{fill:{colors:[]}},markers:{colors:[],size:t.markers.size,largestSize:0},animationEnded:!1,isTouchDevice:"ontouchstart"in window||navigator.msMaxTouchPoints,isDirty:!1,initialConfig:null,lastXAxis:[],lastYAxis:[],series:[],seriesRangeStart:[],seriesRangeEnd:[],seriesPercent:[],seriesTotals:[],stackedSeriesTotals:[],seriesX:[],seriesZ:[],labels:[],timelineLabels:[],invertedTimelineLabels:[],seriesNames:[],noLabelsProvided:!1,allSeriesCollapsed:!1,collapsedSeries:[],collapsedSeriesIndices:[],ancillaryCollapsedSeries:[],ancillaryCollapsedSeriesIndices:[],risingSeries:[],dataFormatXNumeric:!1,selectedDataPoints:[],ignoreYAxisIndexes:[],padHorizontal:0,maxValsInArrayIndex:0,zoomEnabled:"zoom"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.zoom&&t.chart.zoom.enabled,panEnabled:"pan"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.pan,selectionEnabled:"selection"===t.chart.toolbar.autoSelected&&t.chart.toolbar.tools.selection,yaxis:null,minY:Number.MIN_VALUE,maxY:-Number.MAX_VALUE,minYArr:[],maxYArr:[],maxX:-Number.MAX_VALUE,initialmaxX:-Number.MAX_VALUE,minX:Number.MIN_VALUE,initialminX:Number.MIN_VALUE,minZ:Number.MIN_VALUE,maxZ:-Number.MAX_VALUE,minXDiff:Number.MAX_VALUE,mousedown:!1,lastClientPosition:{},visibleXRange:void 0,yRange:[],zRange:0,xRange:0,yValueDecimal:0,total:0,SVGNS:"http://www.w3.org/2000/svg",svgWidth:0,svgHeight:0,noData:!1,locale:{},dom:{},memory:{methodsToExec:[]},shouldAnimate:!0,skipLastTimelinelabel:!1,delayedElements:[],axisCharts:!0,isXNumeric:!1,isDataXYZ:!1,resized:!1,resizeTimer:null,comboCharts:!1,comboChartsHasBars:!1,dataChanged:!1,previousPaths:[],seriesXvalues:[],seriesYvalues:[],seriesCandleO:[],seriesCandleH:[],seriesCandleL:[],seriesCandleC:[],allSeriesHasEqualX:!0,dataPoints:0,pointsArray:[],dataLabelsRects:[],lastDrawnDataLabelsIndexes:[],hasNullValues:!1,easing:null,zoomed:!1,gridWidth:0,gridHeight:0,yAxisScale:[],xAxisScale:null,xAxisTicksPositions:[],timescaleTicks:[],rotateXLabels:!1,defaultLabels:!1,xLabelFormatter:void 0,yLabelFormatters:[],xaxisTooltipFormatter:void 0,ttKeyFormatter:void 0,ttVal:void 0,ttZFormatter:void 0,LINE_HEIGHT_RATIO:1.618,xAxisLabelsHeight:0,yAxisLabelsWidth:0,scaleX:1,scaleY:1,translateX:0,translateY:0,translateYAxisX:[],yLabelsCoords:[],yTitleCoords:[],yAxisWidths:[],translateXAxisY:0,translateXAxisX:0,tooltip:null,tooltipOpts:null}}},{key:"init",value:function(t){var e=this.globalVars(t);return e.initialConfig=d.extend({},t),e.initialSeries=JSON.parse(JSON.stringify(e.initialConfig.series)),e.lastXAxis=JSON.parse(JSON.stringify(e.initialConfig.xaxis)),e.lastYAxis=JSON.parse(JSON.stringify(e.initialConfig.yaxis)),e}}]),t}(),A=function(){function t(i){e(this,t),this.opts=i}return s(t,[{key:"init",value:function(){var t=new w(this.opts).init();return{config:t,globals:(new k).init(t)}}}]),t}(),S=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.opts=null,this.seriesIndex=0}return s(t,[{key:"clippedImgArea",value:function(t){var e=this.w,i=e.config,s=parseInt(e.globals.gridWidth),a=parseInt(e.globals.gridHeight),n=s>a?s:a,r=t.image,o=0,l=0;void 0===t.width&&void 0===t.height?void 0!==i.fill.image.width&&void 0!==i.fill.image.height?(o=i.fill.image.width+1,l=i.fill.image.height):(o=n+1,l=n):(o=t.width,l=t.height);var h=document.createElementNS(e.globals.SVGNS,"pattern");f.setAttrs(h,{id:t.patternID,patternUnits:t.patternUnits?t.patternUnits:"userSpaceOnUse",width:o+"px",height:l+"px"});var c=document.createElementNS(e.globals.SVGNS,"image");h.appendChild(c),c.setAttributeNS("http://www.w3.org/1999/xlink","href",r),f.setAttrs(c,{x:0,y:0,preserveAspectRatio:"none",width:o+"px",height:l+"px"}),c.style.opacity=t.opacity,e.globals.dom.elDefs.node.appendChild(h)}},{key:"getSeriesIndex",value:function(t){var e=this.w;return"bar"===e.config.chart.type&&e.config.plotOptions.bar.distributed||"heatmap"===e.config.chart.type?this.seriesIndex=t.seriesNumber:this.seriesIndex=t.seriesNumber%e.globals.series.length,this.seriesIndex}},{key:"fillPath",value:function(t){var e=this.w;this.opts=t;var i,s,a,n=this.w.config;this.seriesIndex=this.getSeriesIndex(t);var r=this.getFillColors(),o=r[this.seriesIndex];"function"==typeof o&&(o=o({seriesIndex:this.seriesIndex,value:t.value,w:e}));var l=this.getFillType(this.seriesIndex),h=Array.isArray(n.fill.opacity)?n.fill.opacity[this.seriesIndex]:n.fill.opacity,c=o;return t.color&&(o=t.color),-1===o.indexOf("rgb")?c=d.hexToRgba(o,h):o.indexOf("rgba")>-1&&(h="0."+d.getOpacityFromRGBA(r[this.seriesIndex])),"pattern"===l&&(s=this.handlePatternFill(s,o,h,c)),"gradient"===l&&(a=this.handleGradientFill(a,o,h,this.seriesIndex)),n.fill.image.src.length>0&&"image"===l?t.seriesNumber<n.fill.image.src.length?(this.clippedImgArea({opacity:h,image:n.fill.image.src[t.seriesNumber],patternUnits:t.patternUnits,patternID:"pattern".concat(e.globals.cuid).concat(t.seriesNumber+1)}),i="url(#pattern".concat(e.globals.cuid).concat(t.seriesNumber+1,")")):i=c:i="gradient"===l?a:"pattern"===l?s:c,t.solid&&(i=c),i}},{key:"getFillType",value:function(t){var e=this.w;return Array.isArray(e.config.fill.type)?e.config.fill.type[t]:e.config.fill.type}},{key:"getFillColors",value:function(){var t=this.w,e=t.config,i=this.opts,s=[];return t.globals.comboCharts?"line"===t.config.series[this.seriesIndex].type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors):"line"===e.chart.type?t.globals.stroke.colors instanceof Array?s=t.globals.stroke.colors:s.push(t.globals.stroke.colors):t.globals.fill.colors instanceof Array?s=t.globals.fill.colors:s.push(t.globals.fill.colors),void 0!==i.fillColors&&(s=[],i.fillColors instanceof Array?s=i.fillColors.slice():s.push(i.fillColors)),s}},{key:"handlePatternFill",value:function(t,e,i,s){var a=this.w.config,n=this.opts,r=new f(this.ctx),o=void 0===a.fill.pattern.strokeWidth?Array.isArray(a.stroke.width)?a.stroke.width[this.seriesIndex]:a.stroke.width:Array.isArray(a.fill.pattern.strokeWidth)?a.fill.pattern.strokeWidth[this.seriesIndex]:a.fill.pattern.strokeWidth,l=e;a.fill.pattern.style instanceof Array?t=void 0!==a.fill.pattern.style[n.seriesNumber]?r.drawPattern(a.fill.pattern.style[n.seriesNumber],a.fill.pattern.width,a.fill.pattern.height,l,o,i):s:t=r.drawPattern(a.fill.pattern.style,a.fill.pattern.width,a.fill.pattern.height,l,o,i);return t}},{key:"handleGradientFill",value:function(t,e,i,s){var a,n,r=this.w.config,o=this.opts,l=new f(this.ctx),h=new d,c=r.fill.gradient.type,u=void 0===r.fill.gradient.opacityFrom?i:Array.isArray(r.fill.gradient.opacityFrom)?r.fill.gradient.opacityFrom[s]:r.fill.gradient.opacityFrom,g=void 0===r.fill.gradient.opacityTo?i:Array.isArray(r.fill.gradient.opacityTo)?r.fill.gradient.opacityTo[s]:r.fill.gradient.opacityTo;if(a=e,n=void 0===r.fill.gradient.gradientToColors||0===r.fill.gradient.gradientToColors.length?"dark"===r.fill.gradient.shade?h.shadeColor(-1*parseFloat(r.fill.gradient.shadeIntensity),e):h.shadeColor(parseFloat(r.fill.gradient.shadeIntensity),e):r.fill.gradient.gradientToColors[o.seriesNumber],r.fill.gradient.inverseColors){var p=a;a=n,n=p}return l.drawGradient(c,a,n,u,g,o.size,r.fill.gradient.stops,r.fill.gradient.colorStops,s)}}]),t}(),C=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"setGlobalMarkerSize",value:function(){var t=this.w;if(t.globals.markers.size=Array.isArray(t.config.markers.size)?t.config.markers.size:[t.config.markers.size],t.globals.markers.size.length>0){if(t.globals.markers.size.length<t.globals.series.length+1)for(var e=0;e<=t.globals.series.length;e++)void 0===t.globals.markers.size[e]&&t.globals.markers.size.push(t.globals.markers.size[0])}else t.globals.markers.size=t.config.series.map(function(e){return t.config.markers.size})}},{key:"plotChartMarkers",value:function(t,e,i){var s,a=this,n=this.w,r=e,o=t,l=null,h=new f(this.ctx);if(n.globals.markers.size[e]>0&&(l=h.group({class:"apexcharts-series-markers"})).attr("clip-path","url(#gridRectMarkerMask".concat(n.globals.cuid,")")),o.x instanceof Array)for(var c=function(t){var c=i;1===i&&0===t&&(c=0),1===i&&1===t&&(c=1);var g="apexcharts-marker";if("line"!==n.config.chart.type&&"area"!==n.config.chart.type||n.globals.comboCharts||n.config.tooltip.intersect||(g+=" no-pointer-events"),Array.isArray(n.config.markers.size)?n.globals.markers.size[e]>0:n.config.markers.size>0){d.isNumber(o.y[t])?g+=" w".concat((Math.random()+1).toString(36).substring(4)):g="apexcharts-nullpoint";var f=a.getMarkerConfig(g,e);n.config.markers.discrete.map(function(t){t.seriesIndex===e&&t.dataPointIndex===c&&(f.pointStrokeColor=t.strokeColor,f.pointFillColor=t.fillColor,f.pSize=t.size)}),n.config.series[r].data[i]&&(n.config.series[r].data[i].fillColor&&(f.pointFillColor=n.config.series[r].data[i].fillColor),n.config.series[r].data[i].strokeColor&&(f.pointStrokeColor=n.config.series[r].data[i].strokeColor)),(s=h.drawMarker(o.x[t],o.y[t],f)).attr("rel",c),s.attr("j",c),s.attr("index",e),s.node.setAttribute("default-marker-size",f.pSize),new u(a.ctx).setSelectionFilter(s,e,c),a.addEvents(s),l&&l.add(s)}else void 0===n.globals.pointsArray[e]&&(n.globals.pointsArray[e]=[]),n.globals.pointsArray[e].push([o.x[t],o.y[t]])},g=0;g<o.x.length;g++)c(g);return l}},{key:"getMarkerConfig",value:function(t,e){var i=this.w,s=this.getMarkerStyle(e);return{pSize:i.globals.markers.size[e],pRadius:i.config.markers.radius,pWidth:i.config.markers.strokeWidth,pointStrokeColor:s.pointStrokeColor,pointFillColor:s.pointFillColor,shape:i.config.markers.shape instanceof Array?i.config.markers.shape[e]:i.config.markers.shape,class:t,pointStrokeOpacity:i.config.markers.strokeOpacity,pointFillOpacity:i.config.markers.fillOpacity,seriesIndex:e}}},{key:"addEvents",value:function(t){var e=new f(this.ctx);t.node.addEventListener("mouseenter",e.pathMouseEnter.bind(this.ctx,t)),t.node.addEventListener("mouseleave",e.pathMouseLeave.bind(this.ctx,t)),t.node.addEventListener("mousedown",e.pathMouseDown.bind(this.ctx,t)),t.node.addEventListener("touchstart",e.pathMouseDown.bind(this.ctx,t),{passive:!0})}},{key:"getMarkerStyle",value:function(t){var e=this.w,i=e.globals.markers.colors,s=e.config.markers.strokeColor||e.config.markers.strokeColors;return{pointStrokeColor:s instanceof Array?s[t]:s,pointFillColor:i instanceof Array?i[t]:i}}}]),t}(),L=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.radiusSizes=[]}return s(t,[{key:"draw",value:function(t,e,i){var s=this.w,a=new f(this.ctx),n=i.realIndex,r=i.pointsPos,o=i.zRatio,l=i.elParent,h=a.group({class:"apexcharts-series-markers apexcharts-series-".concat(s.config.chart.type)});if(h.attr("clip-path","url(#gridRectMarkerMask".concat(s.globals.cuid,")")),r.x instanceof Array)for(var c=0;c<r.x.length;c++){var d=e+1,u=!0;0===e&&0===c&&(d=0),0===e&&1===c&&(d=1);var g=0,p=s.globals.markers.size[n];o!==1/0&&(p=s.globals.seriesZ[n][d]/o,void 0===this.radiusSizes[n]&&this.radiusSizes.push([]),this.radiusSizes[n].push(p)),s.config.chart.animations.enabled||(g=p);var x=r.x[c],b=r.y[c];if(g=g||0,(0===x&&0===b||null===b||void 0===s.globals.series[n][d])&&(u=!1),u){var m=this.drawPoint(x,b,g,p,n,d,e);h.add(m)}l.add(h)}}},{key:"drawPoint",value:function(t,e,i,s,a,n,r){var o=this.w,l=a,h=new g(this.ctx),c=new u(this.ctx),d=new S(this.ctx),p=new C(this.ctx),x=new f(this.ctx),b=p.getMarkerConfig("apexcharts-marker",l),m=d.fillPath({seriesNumber:a,patternUnits:"objectBoundingBox",value:o.globals.series[a][r]}),v=x.drawCircle(i);if(o.config.series[l].data[n]&&o.config.series[l].data[n].fillColor&&(m=o.config.series[l].data[n].fillColor),v.attr({cx:t,cy:e,fill:m,stroke:b.pointStrokeColor,strokeWidth:b.pWidth}),o.config.chart.dropShadow.enabled){var y=o.config.chart.dropShadow;c.dropShadow(v,y,a)}if(this.initialAnim&&!o.globals.dataChanged){var w=1;o.globals.resized||(w=o.config.chart.animations.speed),h.animateCircleRadius(v,0,s,w,o.globals.easing)}if(o.globals.dataChanged)if(this.dynamicAnim){var k,A,L,z,P=o.config.chart.animations.dynamicAnimation.speed;null!=(z=o.globals.previousPaths[a]&&o.globals.previousPaths[a][r])&&(k=z.x,A=z.y,L=void 0!==z.r?z.r:s);for(var M=0;M<o.globals.collapsedSeries.length;M++)o.globals.collapsedSeries[M].index===a&&(P=1,s=0);0===t&&0===e&&(s=0),h.animateCircle(v,{cx:k,cy:A,r:L},{cx:t,cy:e,r:s},P,o.globals.easing)}else v.attr({r:s});return v.attr({rel:n,j:n,index:a,"default-marker-size":s}),c.setSelectionFilter(v,a,n),p.addEvents(v),v.node.classList.add("apexcharts-marker"),v}},{key:"centerTextInBubble",value:function(t){var e=this.w;return{y:t+=parseInt(e.config.dataLabels.style.fontSize)/4}}}]),t}(),z=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"dataLabelsCorrection",value:function(t,e,i,s,a,n,r){var o=this.w,l=!1,h=new f(this.ctx).getTextRects(i,r),c=h.width,d=h.height;void 0===o.globals.dataLabelsRects[s]&&(o.globals.dataLabelsRects[s]=[]),o.globals.dataLabelsRects[s].push({x:t,y:e,width:c,height:d});var u=o.globals.dataLabelsRects[s].length-2,g=void 0!==o.globals.lastDrawnDataLabelsIndexes[s]?o.globals.lastDrawnDataLabelsIndexes[s][o.globals.lastDrawnDataLabelsIndexes[s].length-1]:0;if(void 0!==o.globals.dataLabelsRects[s][u]){var p=o.globals.dataLabelsRects[s][g];(t>p.x+p.width+2||e>p.y+p.height+2||t+c<p.x)&&(l=!0)}return(0===a||n)&&(l=!0),{x:t,y:e,drawnextLabel:l}}},{key:"drawDataLabel",value:function(t,e,i){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:"top",a=this.w,n=new f(this.ctx),r=a.config.dataLabels,o=0,l=0,h=i,c=null;if(!r.enabled||t.x instanceof Array!=!0)return c;(c=n.group({class:"apexcharts-data-labels"})).attr("clip-path","url(#gridRectMarkerMask".concat(a.globals.cuid,")"));for(var d=0;d<t.x.length;d++)if(o=t.x[d]+r.offsetX,l=t.y[d]+r.offsetY-a.globals.markers.size[e]-5,"bottom"===s&&(l=l+2*a.globals.markers.size[e]+1.4*parseInt(r.style.fontSize)),!isNaN(o)){1===i&&0===d&&(h=0),1===i&&1===d&&(h=1);var u=a.globals.series[e][h],g="";if("bubble"===a.config.chart.type)g=a.globals.seriesZ[e][h],l=t.y[d]+a.config.dataLabels.offsetY,l=new L(this.ctx).centerTextInBubble(l,e,h).y;else null!=u&&(g=a.config.dataLabels.formatter(u,{ctx:this.ctx,seriesIndex:e,dataPointIndex:h,w:a}));this.plotDataLabelsText({x:o,y:l,text:g,i:e,j:h,parent:c,offsetCorrection:!0,dataLabelsConfig:a.config.dataLabels})}return c}},{key:"plotDataLabelsText",value:function(t){var e=this.w,i=new f(this.ctx),s=t.x,a=t.y,n=t.i,r=t.j,o=t.text,l=t.textAnchor,h=t.parent,c=t.dataLabelsConfig,d=t.alwaysDrawDataLabel,g=t.offsetCorrection;if(!(Array.isArray(e.config.dataLabels.enabledOnSeries)&&e.config.dataLabels.enabledOnSeries.indexOf(n)>-1)){var p={x:s,y:a,drawnextLabel:!0};if(g&&(p=this.dataLabelsCorrection(s,a,o,n,r,d,parseInt(c.style.fontSize))),e.globals.zoomed||(s=p.x,a=p.y),p.drawnextLabel){var x=i.drawText({width:100,height:parseInt(c.style.fontSize),x:s,y:a,foreColor:e.globals.dataLabels.style.colors[n],textAnchor:l||c.textAnchor,text:o,fontSize:c.style.fontSize,fontFamily:c.style.fontFamily});if(x.attr({class:"apexcharts-datalabel",cx:s,cy:a}),c.dropShadow.enabled){var b=c.dropShadow;new u(this.ctx).dropShadow(x,b)}h.add(x),void 0===e.globals.lastDrawnDataLabelsIndexes[n]&&(e.globals.lastDrawnDataLabelsIndexes[n]=[]),e.globals.lastDrawnDataLabelsIndexes[n].push(r)}}}}]),t}(),P=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w;var a=this.w;this.barOptions=a.config.plotOptions.bar,this.isHorizontal=this.barOptions.horizontal,this.strokeWidth=a.config.stroke.width,this.isNullValue=!1,this.xyRatios=s,null!==this.xyRatios&&(this.xRatio=s.xRatio,this.yRatio=s.yRatio,this.invertedXRatio=s.invertedXRatio,this.invertedYRatio=s.invertedYRatio,this.baseLineY=s.baseLineY,this.baseLineInvertedY=s.baseLineInvertedY),this.yaxisIndex=0,this.seriesLen=0}return s(t,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new y(this.ctx,i);t=a.getLogSeries(t),this.series=t,this.yRatio=a.getLogYRatios(this.yRatio),this.initVariables(t);var n=s.group({class:"apexcharts-bar-series apexcharts-plot-series"});i.config.dataLabels.enabled&&this.totalItems>i.config.plotOptions.bar.dataLabels.maxItems&&console.warn("WARNING: DataLabels are enabled but there are too many to display. This may cause performance issue when rendering.");for(var r=0,o=0;r<t.length;r++,o++){var l,h,c,u,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],w=i.globals.comboCharts?e[r]:r,k=s.group({class:"apexcharts-series",rel:r+1,seriesName:d.escapeString(i.globals.seriesNames[w]),"data:realIndex":w});this.ctx.series.addCollapsedClassToSeries(k,w),t[r].length>0&&(this.visibleI=this.visibleI+1);var A=0,S=0,C=0;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var L=this.initialPositions();b=L.y,S=L.barHeight,h=L.yDivision,u=L.zeroW,x=L.x,C=L.barWidth,l=L.xDivision,c=L.zeroH,this.horizontal||v.push(x+C/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[r][P]||null===t[r][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(A=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[w]:this.strokeWidth);var E=null;this.isHorizontal?(E=this.drawBarPaths({indexes:{i:r,j:P,realIndex:w,bc:o},barHeight:S,strokeWidth:A,pathTo:g,pathFrom:p,zeroW:u,x:x,y:b,yDivision:h,elSeries:k}),C=this.series[r][P]/this.invertedYRatio):(E=this.drawColumnPaths({indexes:{i:r,j:P,realIndex:w,bc:o},x:x,y:b,xDivision:l,pathTo:g,pathFrom:p,barWidth:C,zeroH:c,strokeWidth:A,elSeries:k}),S=this.series[r][P]/this.yRatio[this.yaxisIndex]),g=E.pathTo,p=E.pathFrom,b=E.y,x=E.x,P>0&&v.push(x+C/2),m.push(b);var T=this.getPathFillColor(t,r,P,w);k=this.renderSeries({realIndex:w,pathFill:T,j:P,i:r,pathFrom:p,pathTo:g,strokeWidth:A,elSeries:k,x:x,y:b,series:t,barHeight:S,barWidth:C,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"bar"})}i.globals.seriesXvalues[w]=v,i.globals.seriesYvalues[w]=m,n.add(k)}return n}},{key:"getPathFillColor",value:function(t,e,i,s){var a=this.w,n=new S(this.ctx),r=null,o=this.barOptions.distributed?i:e;this.barOptions.colors.ranges.length>0&&this.barOptions.colors.ranges.map(function(s){t[e][i]>=s.from&&t[e][i]<=s.to&&(r=s.color)});return a.config.series[e].data[i]&&a.config.series[e].data[i].fillColor&&(r=a.config.series[e].data[i].fillColor),n.fillPath({seriesNumber:this.barOptions.distributed?o:s,color:r,value:t[e][i]})}},{key:"renderSeries",value:function(t){var e=t.realIndex,i=t.pathFill,s=t.lineFill,a=t.j,n=t.i,r=t.pathFrom,o=t.pathTo,l=t.strokeWidth,h=t.elSeries,c=t.x,d=t.y,g=t.series,p=t.barHeight,x=t.barWidth,b=t.elDataLabelsWrap,m=t.visibleSeries,v=t.type,y=this.w,w=new f(this.ctx);s||(s=this.barOptions.distributed?y.globals.stroke.colors[a]:y.globals.stroke.colors[e]),y.config.series[n].data[a]&&y.config.series[n].data[a].strokeColor&&(s=y.config.series[n].data[a].strokeColor),this.isNullValue&&(i="none");var k=a/y.config.chart.animations.animateGradually.delay*(y.config.chart.animations.speed/y.globals.dataPoints)/2.4,A=w.renderPaths({i:n,j:a,realIndex:e,pathFrom:r,pathTo:o,stroke:s,strokeWidth:l,strokeLineCap:y.config.stroke.lineCap,fill:i,animationDelay:k,initialSpeed:y.config.chart.animations.speed,dataChangeSpeed:y.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(v,"-area"),id:"apexcharts-".concat(v,"-area")});A.attr("clip-path","url(#gridRectMask".concat(y.globals.cuid,")")),new u(this.ctx).setSelectionFilter(A,e,a),h.add(A);var S=this.calculateDataLabelsPos({x:c,y:d,i:n,j:a,series:g,realIndex:e,barHeight:p,barWidth:x,renderedPath:A,visibleSeries:m});return null!==S&&b.add(S),h.add(b),h}},{key:"initVariables",value:function(t){var e=this.w;this.series=t,this.totalItems=0,this.seriesLen=0,this.visibleI=-1,this.visibleItems=1;for(var i=0;i<t.length;i++)if(t[i].length>0&&(this.seriesLen=this.seriesLen+1,this.totalItems+=t[i].length),e.globals.isXNumeric)for(var s=0;s<t[i].length;s++)e.globals.seriesX[i][s]>e.globals.minX&&e.globals.seriesX[i][s]<e.globals.maxX&&this.visibleItems++;else this.visibleItems=e.globals.dataPoints;0===this.seriesLen&&(this.seriesLen=1)}},{key:"initialPositions",value:function(){var t,e,i,s,a,n,r,o,l=this.w;return this.isHorizontal?(a=(i=l.globals.gridHeight/l.globals.dataPoints)/this.seriesLen,l.globals.isXNumeric&&(a=(i=l.globals.gridHeight/this.totalItems)/this.seriesLen),a=a*parseInt(this.barOptions.barHeight)/100,o=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(i-a*this.seriesLen)/2):(n=(s=l.globals.gridWidth/this.visibleItems)/this.seriesLen*parseInt(this.barOptions.columnWidth)/100,l.globals.isXNumeric&&(n=(s=l.globals.minXDiff/this.xRatio)/this.seriesLen*parseInt(this.barOptions.columnWidth)/100),r=l.globals.gridHeight-this.baseLineY[this.yaxisIndex]-(this.isReversed?l.globals.gridHeight:0)+(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(s-n*this.seriesLen)/2),{x:t,y:e,yDivision:i,xDivision:s,barHeight:a,barWidth:n,zeroH:r,zeroW:o}}},{key:"drawBarPaths",value:function(t){var e=t.indexes,i=t.barHeight,s=t.strokeWidth,a=t.pathTo,n=t.pathFrom,r=t.zeroW,o=t.x,l=t.y,h=t.yDivision,c=t.elSeries,d=this.w,u=new f(this.ctx),g=e.i,p=e.j,x=e.realIndex,b=e.bc;d.globals.isXNumeric&&(l=(d.globals.seriesX[g][p]-d.globals.minX)/this.invertedXRatio-i);var m=l+i*this.visibleI;a=u.move(r,m),n=u.move(r,m),d.globals.previousPaths.length>0&&(n=this.getPathFrom(x,p));var v={barHeight:i,strokeWidth:s,barYPosition:m,x:o=void 0===this.series[g][p]||null===this.series[g][p]?r:r+this.series[g][p]/this.invertedYRatio-2*(this.isReversed?this.series[g][p]/this.invertedYRatio:0),zeroW:r},y=this.barEndingShape(d,v,this.series,g,p);if(a=a+u.line(y.newX,m)+y.path+u.line(r,m+i-s)+u.line(r,m),n=n+u.line(r,m)+y.ending_p_from+u.line(r,m+i-s)+u.line(r,m+i-s)+u.line(r,m),d.globals.isXNumeric||(l+=h),this.barOptions.colors.backgroundBarColors.length>0&&0===g){b>=this.barOptions.colors.backgroundBarColors.length&&(b=0);var w=this.barOptions.colors.backgroundBarColors[b],k=u.drawRect(0,m-i*this.visibleI,d.globals.gridWidth,i*this.seriesLen,0,w,this.barOptions.colors.backgroundBarOpacity);c.add(k),k.node.classList.add("apexcharts-backgroundBar")}return{pathTo:a,pathFrom:n,x:o,y:l,barYPosition:m}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=new f(this.ctx),g=e.i,p=e.j,x=e.realIndex,b=e.bc;d.globals.isXNumeric&&(i=(d.globals.seriesX[g][p]-d.globals.minX)/this.xRatio-o/2);var m=i+o*this.visibleI;n=u.move(m,l),r=u.move(m,l),d.globals.previousPaths.length>0&&(r=this.getPathFrom(x,p));var v={barWidth:o,strokeWidth:h,barXPosition:m,y:s=void 0===this.series[g][p]||null===this.series[g][p]?l:l-this.series[g][p]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[g][p]/this.yRatio[this.yaxisIndex]:0),zeroH:l},y=this.barEndingShape(d,v,this.series,g,p);if(n=n+u.line(m,y.newY)+y.path+u.line(m+o-h,l)+u.line(m-h/2,l),r=r+u.line(m,l)+y.ending_p_from+u.line(m+o-h,l)+u.line(m+o-h,l)+u.line(m-h/2,l),d.globals.isXNumeric||(i+=a),this.barOptions.colors.backgroundBarColors.length>0&&0===g){b>=this.barOptions.colors.backgroundBarColors.length&&(b=0);var w=this.barOptions.colors.backgroundBarColors[b],k=u.drawRect(m-o*this.visibleI,0,o*this.seriesLen,d.globals.gridHeight,0,w,this.barOptions.colors.backgroundBarOpacity);c.add(k),k.node.classList.add("apexcharts-backgroundBar")}return{pathTo:n,pathFrom:r,x:i,y:s,barXPosition:m}}},{key:"getPathFrom",value:function(t,e){for(var i,s=this.w,a=0;a<s.globals.previousPaths.length;a++){var n=s.globals.previousPaths[a];n.paths.length>0&&parseInt(n.realIndex)===parseInt(t)&&void 0!==s.globals.previousPaths[a].paths[e]&&(i=s.globals.previousPaths[a].paths[e].d)}return i}},{key:"calculateDataLabelsPos",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,n=t.realIndex,r=t.series,o=t.barHeight,l=t.barWidth,h=t.visibleSeries,c=t.renderedPath,d=this.w,u=new f(this.ctx),g=Array.isArray(this.strokeWidth)?this.strokeWidth[n]:this.strokeWidth,p=e+parseFloat(l*h),x=i+parseFloat(o*h);d.globals.isXNumeric&&!d.globals.isBarHorizontal&&(p=e+parseFloat(l*(h+1))-g,x=i+parseFloat(o*(h+1))-g);var b=e,m=i,v={},y=d.config.dataLabels,w=this.barOptions.dataLabels,k=y.offsetX,A=y.offsetY,S={width:0,height:0};return d.config.dataLabels.enabled&&(S=u.getTextRects(d.globals.yLabelFormatters[0](d.globals.maxY),parseInt(y.style.fontSize))),v=this.isHorizontal?this.calculateBarsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,bcy:x,barHeight:o,barWidth:l,textRects:S,strokeWidth:g,dataLabelsX:b,dataLabelsY:m,barDataLabelsConfig:w,offX:k,offY:A}):this.calculateColumnsDataLabelsPosition({x:e,y:i,i:s,j:a,renderedPath:c,realIndex:n,bcx:p,bcy:x,barHeight:o,barWidth:l,textRects:S,strokeWidth:g,dataLabelsY:m,barDataLabelsConfig:w,offX:k,offY:A}),c.attr({cy:v.bcy,cx:v.bcx,j:a,val:r[s][a],barHeight:o,barWidth:l}),this.drawCalculatedDataLabels({x:v.dataLabelsX,y:v.dataLabelsY,val:r[s][a],i:n,j:a,barWidth:l,barHeight:o,textRects:S,dataLabelsConfig:y})}},{key:"calculateColumnsDataLabelsPosition",value:function(t){var e,i=this.w,s=t.i,a=t.j,n=t.y,r=t.bcx,o=t.barWidth,l=t.barHeight,h=t.textRects,c=t.dataLabelsY,d=t.barDataLabelsConfig,u=t.strokeWidth,g=t.offX,f=t.offY,p=i.globals.gridWidth/i.globals.dataPoints;r-=u/2,e=i.globals.isXNumeric?r-o/2+g:r-p+o/2+g;var x=this.series[s][a]<=0;switch(this.isReversed&&(n-=l),d.position){case"center":c=x?n+l/2+h.height/2+f:n+l/2+h.height/2-f;break;case"bottom":c=x?n+l+h.height+u+f:n+l-h.height/2+u-f;break;case"top":c=x?n-h.height/2-f:n+h.height+f}return i.config.chart.stacked||(c<0?c=0+u:c+h.height/3>i.globals.gridHeight&&(c=i.globals.gridHeight-u)),{bcx:r,bcy:n,dataLabelsX:e,dataLabelsY:c}}},{key:"calculateBarsDataLabelsPosition",value:function(t){var e=this.w,i=t.x,s=t.i,a=t.j,n=t.bcy,r=t.barHeight,o=t.barWidth,l=t.textRects,h=t.dataLabelsX,c=t.strokeWidth,d=t.barDataLabelsConfig,u=t.offX,g=t.offY,f=n-e.globals.gridHeight/e.globals.dataPoints+r/2+l.height/2+g-3,p=this.series[s][a]<=0;switch(this.isReversed&&(i+=o),d.position){case"center":h=p?i-o/2-u:i-o/2+u;break;case"bottom":h=p?i-o-c-Math.round(l.width/2)-u:i-o+c+Math.round(l.width/2)+u;break;case"top":h=p?i-c+Math.round(l.width/2)-u:i-c-Math.round(l.width/2)+u}return e.config.chart.stacked||(h<0?h=h+l.width+c:h+l.width/2>e.globals.gridWidth&&(h=e.globals.gridWidth-l.width-c)),{bcx:i,bcy:n,dataLabelsX:h,dataLabelsY:f}}},{key:"drawCalculatedDataLabels",value:function(t){var e=t.x,i=t.y,s=t.val,a=t.i,n=t.j,r=t.textRects,o=t.barHeight,l=t.barWidth,h=t.dataLabelsConfig,c=this.w,d=new z(this.ctx),u=new f(this.ctx),g=h.formatter,p=null,x=c.globals.collapsedSeriesIndices.indexOf(a)>-1;if(h.enabled&&!x){p=u.group({class:"apexcharts-data-labels"});var b="";null!=s&&(b=g(s,{seriesIndex:a,dataPointIndex:n,w:c})),0===s&&c.config.chart.stacked&&(b=""),c.config.chart.stacked&&this.barOptions.dataLabels.hideOverflowingLabels&&(this.isHorizontal?(l=this.series[a][n]/this.yRatio[this.yaxisIndex],r.width/1.6>l&&(b="")):(o=this.series[a][n]/this.yRatio[this.yaxisIndex],r.height/1.6>o&&(b=""))),d.plotDataLabelsText({x:e,y:i,text:b,i:a,j:n,parent:p,dataLabelsConfig:h,alwaysDrawDataLabel:!0,offsetCorrection:!0})}return p}},{key:"barEndingShape",value:function(t,e,i,s,a){var n=new f(this.ctx);if(this.isHorizontal){var r=null,o=e.x;if(void 0!==i[s][a]||null!==i[s][a]){var l=i[s][a]<0,h=e.barHeight/2-e.strokeWidth;switch(l&&(h=-e.barHeight/2-e.strokeWidth),t.config.chart.stacked||"rounded"===this.barOptions.endingShape&&(o=e.x-h/2),this.barOptions.endingShape){case"flat":r=n.line(o,e.barYPosition+e.barHeight-e.strokeWidth);break;case"rounded":r=n.quadraticCurve(o+h,e.barYPosition+(e.barHeight-e.strokeWidth)/2,o,e.barYPosition+e.barHeight-e.strokeWidth)}}return{path:r,ending_p_from:"",newX:o}}var c=null,d=e.y;if(void 0!==i[s][a]||null!==i[s][a]){var u=i[s][a]<0,g=e.barWidth/2-e.strokeWidth;switch(u&&(g=-e.barWidth/2-e.strokeWidth),t.config.chart.stacked||"rounded"===this.barOptions.endingShape&&(d+=g/2),this.barOptions.endingShape){case"flat":c=n.line(e.barXPosition+e.barWidth-e.strokeWidth,d);break;case"rounded":c=n.quadraticCurve(e.barXPosition+(e.barWidth-e.strokeWidth)/2,d-g,e.barXPosition+e.barWidth-e.strokeWidth,d)}}return{path:c,ending_p_from:"",newY:d}}}]),t}(),M=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w;this.graphics=new f(this.ctx),this.fill=new S(this.ctx),this.bar=new P(this.ctx,this.xyRatios);var s=new y(this.ctx,i);t=s.getLogSeries(t),this.yRatio=s.getLogYRatios(this.yRatio),this.initVariables(t),"100%"===i.config.chart.stackType&&(t=i.globals.seriesPercent.slice()),this.series=t,this.totalItems=0,this.prevY=[],this.prevX=[],this.prevYF=[],this.prevXF=[],this.prevYVal=[],this.prevXVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[],this.yArrj=[],this.yArrjF=[],this.yArrjVal=[];for(var a=0;a<t.length;a++)t[a].length>0&&(this.totalItems+=t[a].length);for(var n=this.graphics.group({class:"apexcharts-bar-series apexcharts-plot-series"}),r=0,o=0,l=0,h=0;l<t.length;l++,h++){var c=void 0,u=void 0,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],w=i.globals.comboCharts?e[l]:l;this.yRatio.length>1&&(this.yaxisIndex=w),this.isReversed=i.config.yaxis[this.yaxisIndex]&&i.config.yaxis[this.yaxisIndex].reversed;var k=this.graphics.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[w]),rel:l+1,"data:realIndex":w}),A=this.graphics.group({class:"apexcharts-datalabels"}),C=0,L=0,z=0,M=this.initialPositions(r,o,g,p,x,b);o=M.y,L=M.barHeight,p=M.yDivision,b=M.zeroW,r=M.x,z=M.barWidth,g=M.xDivision,x=M.zeroH,this.yArrj=[],this.yArrjF=[],this.yArrjVal=[],this.xArrj=[],this.xArrjF=[],this.xArrjVal=[];for(var E=0;E<i.globals.dataPoints;E++){i.config.stroke.show&&(C=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[w]:this.strokeWidth);var T=null;this.isHorizontal?(T=this.drawBarPaths({indexes:{i:l,j:E,realIndex:w,bc:h},barHeight:L,strokeWidth:C,pathTo:c,pathFrom:u,zeroW:b,x:r,y:o,yDivision:p,elSeries:k}),z=this.series[l][E]/this.invertedYRatio):(T=this.drawColumnPaths({indexes:{i:l,j:E,realIndex:w,bc:h},x:r,y:o,xDivision:g,pathTo:c,pathFrom:u,barWidth:z,zeroH:x,strokeWidth:C,elSeries:k}),L=this.series[l][E]/this.yRatio[this.yaxisIndex]),c=T.pathTo,u=T.pathFrom,o=T.y,r=T.x,m.push(r),v.push(o);var X=this.bar.getPathFillColor(t,l,E,w);k=this.renderSeries({realIndex:w,pathFill:X,j:E,i:l,pathFrom:u,pathTo:c,strokeWidth:C,elSeries:k,x:r,y:o,series:t,barHeight:L,barWidth:z,elDataLabelsWrap:A,type:"bar",visibleSeries:0})}i.globals.seriesXvalues[w]=m,i.globals.seriesYvalues[w]=v,this.prevY.push(this.yArrj),this.prevYF.push(this.yArrjF),this.prevYVal.push(this.yArrjVal),this.prevX.push(this.xArrj),this.prevXF.push(this.xArrjF),this.prevXVal.push(this.xArrjVal),n.add(k)}return n}},{key:"initialPositions",value:function(t,e,i,s,a,n){var r,o,l=this.w;return this.isHorizontal?(r=(r=s=l.globals.gridHeight/l.globals.dataPoints)*parseInt(l.config.plotOptions.bar.barHeight)/100,n=this.baseLineInvertedY+l.globals.padHorizontal+(this.isReversed?l.globals.gridWidth:0)-(this.isReversed?2*this.baseLineInvertedY:0),e=(s-r)/2):(o=i=l.globals.gridWidth/l.globals.dataPoints,o=l.globals.isXNumeric?(i=l.globals.minXDiff/this.xRatio)*parseInt(this.barOptions.columnWidth)/100:o*parseInt(l.config.plotOptions.bar.columnWidth)/100,a=this.baseLineY[this.yaxisIndex]+(this.isReversed?l.globals.gridHeight:0)-(this.isReversed?2*this.baseLineY[this.yaxisIndex]:0),t=l.globals.padHorizontal+(i-o)/2),{x:t,y:e,yDivision:s,xDivision:i,barHeight:r,barWidth:o,zeroH:a,zeroW:n}}},{key:"drawBarPaths",value:function(t){for(var e,i=t.indexes,s=t.barHeight,a=t.strokeWidth,n=t.pathTo,r=t.pathFrom,o=t.zeroW,l=t.x,h=t.y,c=t.yDivision,d=t.elSeries,u=this.w,g=h,f=i.i,p=i.j,x=i.realIndex,b=i.bc,m=0,v=0;v<this.prevXF.length;v++)m+=this.prevXF[v][p];if(f>0){var y=o;this.prevXVal[f-1][p]<0?y=this.series[f][p]>=0?this.prevX[f-1][p]+m-2*(this.isReversed?m:0):this.prevX[f-1][p]:this.prevXVal[f-1][p]>=0&&(y=this.series[f][p]>=0?this.prevX[f-1][p]:this.prevX[f-1][p]-m+2*(this.isReversed?m:0)),e=y}else e=o;l=null===this.series[f][p]?e:e+this.series[f][p]/this.invertedYRatio-2*(this.isReversed?this.series[f][p]/this.invertedYRatio:0);var w={barHeight:s,strokeWidth:a,invertedYRatio:this.invertedYRatio,barYPosition:g,x:l},k=this.bar.barEndingShape(u,w,this.series,f,p);if(this.series.length>1&&f!==this.endingShapeOnSeriesNumber&&(k.path=this.graphics.line(k.newX,g+s-a)),this.xArrj.push(k.newX),this.xArrjF.push(Math.abs(e-k.newX)),this.xArrjVal.push(this.series[f][p]),n=this.graphics.move(e,g),r=this.graphics.move(e,g),u.globals.previousPaths.length>0&&(r=this.bar.getPathFrom(x,p,!1)),n=n+this.graphics.line(k.newX,g)+k.path+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),r=r+this.graphics.line(e,g)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g+s-a)+this.graphics.line(e,g),u.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===f){b>=u.config.plotOptions.bar.colors.backgroundBarColors.length&&(b=0);var A=u.config.plotOptions.bar.colors.backgroundBarColors[b],S=this.graphics.drawRect(0,g,u.globals.gridWidth,s,0,A,u.config.plotOptions.bar.colors.backgroundBarOpacity);d.add(S),S.node.classList.add("apexcharts-backgroundBar")}return{pathTo:n,pathFrom:r,x:l,y:h+=c}}},{key:"drawColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=t.y,a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=t.strokeWidth,c=t.elSeries,d=this.w,u=e.i,g=e.j,f=e.realIndex,p=e.bc;if(d.globals.isXNumeric){var x=d.globals.seriesX[u][g];x||(x=0),i=(x-d.globals.minX)/this.xRatio-o/2}for(var b,m=i,v=0,y=0;y<this.prevYF.length;y++)v+=this.prevYF[y][g];if(u>0&&!d.globals.isXNumeric||u>0&&d.globals.isXNumeric&&d.globals.seriesX[u-1][g]===d.globals.seriesX[u][g]){var w=this.prevY[u-1][g];b=this.prevYVal[u-1][g]<0?this.series[u][g]>=0?w-v+2*(this.isReversed?v:0):w:this.series[u][g]>=0?w:w+v-2*(this.isReversed?v:0)}else b=d.globals.gridHeight-l;s=b-this.series[u][g]/this.yRatio[this.yaxisIndex]+2*(this.isReversed?this.series[u][g]/this.yRatio[this.yaxisIndex]:0);var k={barWidth:o,strokeWidth:h,yRatio:this.yRatio[this.yaxisIndex],barXPosition:m,y:s},A=this.bar.barEndingShape(d,k,this.series,u,g);if(this.yArrj.push(A.newY),this.yArrjF.push(Math.abs(b-A.newY)),this.yArrjVal.push(this.series[u][g]),n=this.graphics.move(m,b),r=this.graphics.move(m,b),d.globals.previousPaths.length>0&&(r=this.bar.getPathFrom(f,g,!1)),n=n+this.graphics.line(m,A.newY)+A.path+this.graphics.line(m+o-h,b)+this.graphics.line(m-h/2,b),r=r+this.graphics.line(m,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m+o-h,b)+this.graphics.line(m-h/2,b),d.config.plotOptions.bar.colors.backgroundBarColors.length>0&&0===u){p>=d.config.plotOptions.bar.colors.backgroundBarColors.length&&(p=0);var S=d.config.plotOptions.bar.colors.backgroundBarColors[p],C=this.graphics.drawRect(m,0,o,d.globals.gridHeight,0,S,d.config.plotOptions.bar.colors.backgroundBarOpacity);c.add(C),C.node.classList.add("apexcharts-backgroundBar")}return i+=a,{pathTo:n,pathFrom:r,x:d.globals.isXNumeric?i-a:i,y:s}}},{key:"checkZeroSeries",value:function(t){for(var e=t.series,i=this.w,s=0;s<e.length;s++){for(var a=0,n=0;n<e[i.globals.maxValsInArrayIndex].length;n++)a+=e[s][n];0===a&&this.zeroSerieses.push(s)}for(var r=e.length-1;r>=0;r--)this.zeroSerieses.indexOf(r)>-1&&r===this.endingShapeOnSeriesNumber&&(this.endingShapeOnSeriesNumber-=1)}}]),i}(),E=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new S(this.ctx);this.candlestickOptions=this.w.config.plotOptions.candlestick;var n=new y(this.ctx,i);t=n.getLogSeries(t),this.series=t,this.yRatio=n.getLogYRatios(this.yRatio),this.initVariables(t);for(var r=s.group({class:"apexcharts-candlestick-series apexcharts-plot-series"}),o=0,l=0;o<t.length;o++,l++){var h,c,u=void 0,g=void 0,p=void 0,x=void 0,b=[],m=[],v=i.globals.comboCharts?e[o]:o,w=s.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[v]),rel:o+1,"data:realIndex":v});t[o].length>0&&(this.visibleI=this.visibleI+1);var k,A,C=0;this.yRatio.length>1&&(this.yaxisIndex=v);var L=this.initialPositions();x=L.y,k=L.barHeight,p=L.x,A=L.barWidth,h=L.xDivision,c=L.zeroH,m.push(p+A/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[o][P]||null===t[o][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(C=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[v]:this.strokeWidth);var E,T=this.drawCandleStickPaths({indexes:{i:o,j:P,realIndex:v,bc:l},x:p,y:x,xDivision:h,pathTo:u,pathFrom:g,barWidth:A,zeroH:c,strokeWidth:C,elSeries:w});u=T.pathTo,g=T.pathFrom,x=T.y,p=T.x,E=T.color,P>0&&m.push(p+A/2),b.push(x);var X=a.fillPath({seriesNumber:v,color:E,value:t[o][P]}),I=this.candlestickOptions.wick.useFillColor?E:void 0;w=this.renderSeries({realIndex:v,pathFill:X,lineFill:I,j:P,i:o,pathFrom:g,pathTo:u,strokeWidth:C,elSeries:w,x:p,y:x,series:t,barHeight:k,barWidth:A,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"candlestick"})}i.globals.seriesXvalues[v]=m,i.globals.seriesYvalues[v]=b,r.add(w)}return r}},{key:"drawCandleStickPaths",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.xDivision),a=t.pathTo,n=t.pathFrom,r=t.barWidth,o=t.zeroH,l=t.strokeWidth,h=this.w,c=new f(this.ctx),d=e.i,u=e.j,g=!0,p=h.config.plotOptions.candlestick.colors.upward,x=h.config.plotOptions.candlestick.colors.downward,b=this.yRatio[this.yaxisIndex],m=e.realIndex,v=this.getOHLCValue(m,u),y=o,w=o;v.o>v.c&&(g=!1);var k=Math.min(v.o,v.c),A=Math.max(v.o,v.c);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-r/2);var S=i+r*this.visibleI;return void 0===this.series[d][u]||null===this.series[d][u]?k=o:(k=o-k/b,A=o-A/b,y=o-v.h/b,w=o-v.l/b),c.move(S,o),n=c.move(S,k),h.globals.previousPaths.length>0&&(n=this.getPathFrom(m,u,!0)),a=c.move(S,A)+c.line(S+r/2,A)+c.line(S+r/2,y)+c.line(S+r/2,A)+c.line(S+r,A)+c.line(S+r,k)+c.line(S+r/2,k)+c.line(S+r/2,w)+c.line(S+r/2,k)+c.line(S,k)+c.line(S,A-l/2),n+=c.move(S,k),h.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:n,x:i,y:A,barXPosition:S,color:g?p:x}}},{key:"getOHLCValue",value:function(t,e){var i=this.w;return{o:i.globals.seriesCandleO[t][e],h:i.globals.seriesCandleH[t][e],l:i.globals.seriesCandleL[t][e],c:i.globals.seriesCandleC[t][e]}}}]),i}(),T=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"drawXCrosshairs",value:function(){var t=this.w,e=new f(this.ctx),i=new u(this.ctx),s=t.config.xaxis.crosshairs.fill.gradient,a=t.config.xaxis.crosshairs.dropShadow,n=t.config.xaxis.crosshairs.fill.type,r=s.colorFrom,o=s.colorTo,l=s.opacityFrom,h=s.opacityTo,c=s.stops,g=a.enabled,p=a.left,x=a.top,b=a.blur,m=a.color,v=a.opacity,y=t.config.xaxis.crosshairs.fill.color;if(t.config.xaxis.crosshairs.show){"gradient"===n&&(y=e.drawGradient("vertical",r,o,l,h,null,c,null));var w=e.drawRect();1===t.config.xaxis.crosshairs.width&&(w=e.drawLine()),w.attr({class:"apexcharts-xcrosshairs",x:0,y:0,y2:t.globals.gridHeight,width:d.isNumber(t.config.xaxis.crosshairs.width)?t.config.xaxis.crosshairs.width:0,height:t.globals.gridHeight,fill:y,filter:"none","fill-opacity":t.config.xaxis.crosshairs.opacity,stroke:t.config.xaxis.crosshairs.stroke.color,"stroke-width":t.config.xaxis.crosshairs.stroke.width,"stroke-dasharray":t.config.xaxis.crosshairs.stroke.dashArray}),g&&(w=i.dropShadow(w,{left:p,top:x,blur:b,color:m,opacity:v})),t.globals.dom.elGraphical.add(w)}}},{key:"drawYCrosshairs",value:function(){var t=this.w,e=new f(this.ctx),i=t.config.yaxis[0].crosshairs;if(t.config.yaxis[0].crosshairs.show){var s=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,i.stroke.dashArray,i.stroke.width);s.attr({class:"apexcharts-ycrosshairs"}),t.globals.dom.elGraphical.add(s)}var a=e.drawLine(0,0,t.globals.gridWidth,0,i.stroke.color,0,0);a.attr({class:"apexcharts-ycrosshairs-hidden"}),t.globals.dom.elGraphical.add(a)}}]),t}(),X=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w,this.xRatio=s.xRatio,this.yRatio=s.yRatio,this.negRange=!1,this.dynamicAnim=this.w.config.chart.animations.dynamicAnimation,this.rectRadius=this.w.config.plotOptions.heatmap.radius,this.strokeWidth=this.w.config.stroke.width}return s(t,[{key:"draw",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-heatmap"});s.attr("clip-path","url(#gridRectMask".concat(e.globals.cuid,")"));var a=e.globals.gridWidth/e.globals.dataPoints,n=e.globals.gridHeight/e.globals.series.length,r=0,o=!1;this.checkColorRange();var l=t.slice();e.config.yaxis[0].reversed&&(o=!0,l.reverse());for(var h=o?0:l.length-1;o?h<l.length:h>=0;o?h++:h--){var c=i.group({class:"apexcharts-series apexcharts-heatmap-series",seriesName:d.escapeString(e.globals.seriesNames[h]),rel:h+1,"data:realIndex":h});if(e.config.chart.dropShadow.enabled){var g=e.config.chart.dropShadow;new u(this.ctx).dropShadow(c,g,h)}for(var p=0,x=0;x<l[h].length;x++){var b=1,m=this.determineHeatColor(h,x);if(e.globals.hasNegs||this.negRange){var v=e.config.plotOptions.heatmap.shadeIntensity;b=e.config.plotOptions.heatmap.reverseNegativeShade?m.percent<0?m.percent/100*(1.25*v):(1-m.percent/100)*(1.25*v):m.percent<0?1-(1+m.percent/100)*v:(1-m.percent/100)*v}else b=1-m.percent/100;var y=m.color;if(e.config.plotOptions.heatmap.enableShades){var w=new d;y=d.hexToRgba(w.shadeColor(b,m.color),e.config.fill.opacity)}var k=this.rectRadius,A=i.drawRect(p,r,a,n,k);if(A.attr({cx:p,cy:r}),A.node.classList.add("apexcharts-heatmap-rect"),c.add(A),A.attr({fill:y,i:h,index:h,j:x,val:l[h][x],"stroke-width":this.strokeWidth,stroke:e.globals.stroke.colors[0],color:y}),A.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this,A)),A.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this,A)),A.node.addEventListener("mousedown",i.pathMouseDown.bind(this,A)),e.config.chart.animations.enabled&&!e.globals.dataChanged){var S=1;e.globals.resized||(S=e.config.chart.animations.speed),this.animateHeatMap(A,p,r,a,n,S)}if(e.globals.dataChanged){var C=1;if(this.dynamicAnim.enabled&&e.globals.shouldAnimate){C=this.dynamicAnim.speed;var L=e.globals.previousPaths[h]&&e.globals.previousPaths[h][x]&&e.globals.previousPaths[h][x].color;L||(L="rgba(255, 255, 255, 0)"),this.animateHeatColor(A,d.isColorHex(L)?L:d.rgb2hex(L),d.isColorHex(y)?y:d.rgb2hex(y),C)}}var z=this.calculateHeatmapDataLabels({x:p,y:r,i:h,j:x,series:l,rectHeight:n,rectWidth:a});null!==z&&c.add(z),p+=a}r+=n,s.add(c)}var P=e.globals.yAxisScale[0].result.slice();e.config.yaxis[0].reversed?P.unshift(""):P.push(""),e.globals.yAxisScale[0].result=P;var M=e.globals.gridHeight/e.globals.series.length;return e.config.yaxis[0].labels.offsetY=-M/2,s}},{key:"checkColorRange",value:function(){var t=this,e=this.w.config.plotOptions.heatmap;e.colorScale.ranges.length>0&&e.colorScale.ranges.map(function(e,i){e.from<0&&(t.negRange=!0)})}},{key:"determineHeatColor",value:function(t,e){var i=this.w,s=i.globals.series[t][e],a=i.config.plotOptions.heatmap,n=a.colorScale.inverse?e:t,r=i.globals.colors[n],o=Math.min.apply(Math,c(i.globals.series[t])),l=Math.max.apply(Math,c(i.globals.series[t]));a.distributed||(o=i.globals.minY,l=i.globals.maxY),void 0!==a.colorScale.min&&(o=a.colorScale.min<i.globals.minY?a.colorScale.min:i.globals.minY,l=a.colorScale.max>i.globals.maxY?a.colorScale.max:i.globals.maxY);var h=Math.abs(l)+Math.abs(o),d=100*s/(0===h?h-1e-6:h);a.colorScale.ranges.length>0&&a.colorScale.ranges.map(function(t,e){if(s>=t.from&&s<=t.to){r=t.color,o=t.from,l=t.to;var i=Math.abs(l)+Math.abs(o);d=100*s/(0===i?i-1e-6:i)}});return{color:r,percent:d}}},{key:"calculateHeatmapDataLabels",value:function(t){var e=t.x,i=t.y,s=t.i,a=t.j,n=(t.series,t.rectHeight),r=t.rectWidth,o=this.w,l=o.config.dataLabels,h=new f(this.ctx),c=new z(this.ctx),d=l.formatter,u=null;if(l.enabled){u=h.group({class:"apexcharts-data-labels"});var g=l.offsetX,p=l.offsetY,x=e+r/2+g,b=i+n/2+parseInt(l.style.fontSize)/3+p,m=d(o.globals.series[s][a],{seriesIndex:s,dataPointIndex:a,w:o});c.plotDataLabelsText({x:x,y:b,text:m,i:s,j:a,parent:u,dataLabelsConfig:l})}return u}},{key:"animateHeatMap",value:function(t,e,i,s,a,n){var r=this;new g(this.ctx).animateRect(t,{x:e+s/2,y:i+a/2,width:0,height:0},{x:e,y:i,width:s,height:a},n,function(){r.w.globals.animationEnded=!0})}},{key:"animateHeatColor",value:function(t,e,i,s){t.attr({fill:e}).animate(s).attr({fill:i})}}]),t}(),I=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animBeginArr=[0],this.animDur=0,this.donutDataLabels=this.w.config.plotOptions.pie.donut.labels;var s=this.w;this.lineColorArr=void 0!==s.globals.stroke.colors?s.globals.stroke.colors:s.globals.colors,this.defaultSize=s.globals.svgHeight<s.globals.svgWidth?s.globals.svgHeight-35:s.globals.gridWidth,this.centerY=this.defaultSize/2,this.centerX=s.globals.gridWidth/2,this.fullAngle=360,this.size=0,this.donutSize=0,this.sliceLabels=[],this.prevSectorAngleArr=[]}return s(t,[{key:"draw",value:function(t){for(var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-pie"}),a=0,n=0;n<t.length;n++)a+=d.negToZero(t[n]);var r=[],o=i.group();0===a&&(a=1e-5);for(var l=0;l<t.length;l++){var h=this.fullAngle*d.negToZero(t[l])/a;r.push(h)}if(e.globals.dataChanged){for(var c,u=0,g=0;g<e.globals.previousPaths.length;g++)u+=d.negToZero(e.globals.previousPaths[g]);for(var p=0;p<e.globals.previousPaths.length;p++)c=this.fullAngle*d.negToZero(e.globals.previousPaths[p])/u,this.prevSectorAngleArr.push(c)}this.size=this.defaultSize/2.05-e.config.stroke.width-e.config.chart.dropShadow.blur,void 0!==e.config.plotOptions.pie.size&&(this.size=e.config.plotOptions.pie.size),this.donutSize=this.size*parseInt(e.config.plotOptions.pie.donut.size)/100;var x=e.config.plotOptions.pie.customScale,b=e.globals.gridWidth/2,m=e.globals.gridHeight/2,v=b-e.globals.gridWidth/2*x,y=m-e.globals.gridHeight/2*x;if(this.donutDataLabels.show){var w=this.renderInnerDataLabels(this.donutDataLabels,{hollowSize:this.donutSize,centerX:this.centerX,centerY:this.centerY,opacity:this.donutDataLabels.show,translateX:v,translateY:y});s.add(w)}if("donut"===e.config.chart.type){var k=i.drawCircle(this.donutSize);k.attr({cx:this.centerX,cy:this.centerY,fill:e.config.plotOptions.pie.donut.background}),o.add(k)}var A=this.drawArcs(r,t);return this.sliceLabels.forEach(function(t){A.add(t)}),o.attr({transform:"translate(".concat(v,", ").concat(y-5,") scale(").concat(x,")")}),s.attr({"data:innerTranslateX":v,"data:innerTranslateY":y-25}),o.add(A),s.add(o),s}},{key:"drawArcs",value:function(t,e){var i=this.w,s=new u(this.ctx),a=new f(this.ctx),n=new S(this.ctx),r=a.group(),o=0,l=0,h=0,c=0;this.strokeWidth=i.config.stroke.show?i.config.stroke.width:0;for(var g=0;g<t.length;g++){var p=a.group({class:"apexcharts-series apexcharts-pie-series",seriesName:d.escapeString(i.globals.seriesNames[g]),id:"apexcharts-series-"+g,rel:g+1});r.add(p),l=c,h=(o=h)+t[g],c=l+this.prevSectorAngleArr[g];var x=h-o,b=n.fillPath({seriesNumber:g,size:this.size,value:e[g]}),m=this.getChangedPath(l,c),v=a.drawPath({d:m,stroke:this.lineColorArr instanceof Array?this.lineColorArr[g]:this.lineColorArr,strokeWidth:this.strokeWidth,fill:b,fillOpacity:i.config.fill.opacity,classes:"apexcharts-pie-area"});if(v.attr({id:"apexcharts-".concat(i.config.chart.type,"-slice-").concat(g),index:0,j:g}),i.config.chart.dropShadow.enabled){var y=i.config.chart.dropShadow;s.dropShadow(v,y,g)}this.addListeners(v,this.donutDataLabels),f.setAttrs(v.node,{"data:angle":x,"data:startAngle":o,"data:strokeWidth":this.strokeWidth,"data:value":e[g]});var w={x:0,y:0};"pie"===i.config.chart.type?w=d.polarToCartesian(this.centerX,this.centerY,this.size/1.25+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2):"donut"===i.config.chart.type&&(w=d.polarToCartesian(this.centerX,this.centerY,(this.size+this.donutSize)/2+i.config.plotOptions.pie.dataLabels.offset,o+(h-o)/2)),p.add(v);var k=0;if(!this.initialAnim||i.globals.resized||i.globals.dataChanged?this.animBeginArr.push(0):(k=(h-o)/this.fullAngle*i.config.chart.animations.speed,this.animDur=k+this.animDur,this.animBeginArr.push(this.animDur)),this.dynamicAnim&&i.globals.dataChanged?this.animatePaths(v,{endAngle:h,startAngle:o,prevStartAngle:l,prevEndAngle:c,animateStartingPos:!0,i:g,animBeginArr:this.animBeginArr,dur:i.config.chart.animations.dynamicAnimation.speed}):this.animatePaths(v,{endAngle:h,startAngle:o,i:g,totalItems:t.length-1,animBeginArr:this.animBeginArr,dur:k}),i.config.plotOptions.pie.expandOnClick&&v.click(this.pieClicked.bind(this,g)),i.config.dataLabels.enabled){var A=w.x,C=w.y,L=100*(h-o)/360+"%";if(0!==x&&i.config.plotOptions.pie.dataLabels.minAngleToShowLabel<t[g]){var z=i.config.dataLabels.formatter;void 0!==z&&(L=z(i.globals.seriesPercent[g][0],{seriesIndex:g,w:i}));var P=i.globals.dataLabels.style.colors[g],M=a.drawText({x:A,y:C,text:L,textAnchor:"middle",fontSize:i.config.dataLabels.style.fontSize,fontFamily:i.config.dataLabels.style.fontFamily,foreColor:P});if(i.config.dataLabels.dropShadow.enabled){var E=i.config.dataLabels.dropShadow;new u(this.ctx).dropShadow(M,E)}M.node.classList.add("apexcharts-pie-label"),i.config.chart.animations.animate&&!1===i.globals.resized&&(M.node.classList.add("apexcharts-pie-label-delay"),M.node.style.animationDelay=i.config.chart.animations.speed/940+"s"),this.sliceLabels.push(M)}}}return r}},{key:"addListeners",value:function(t,e){var i=new f(this.ctx);t.node.addEventListener("mouseenter",i.pathMouseEnter.bind(this,t)),t.node.addEventListener("mouseenter",this.printDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener("mouseleave",i.pathMouseLeave.bind(this,t)),t.node.addEventListener("mouseleave",this.revertDataLabelsInner.bind(this,t.node,e)),t.node.addEventListener("mousedown",i.pathMouseDown.bind(this,t)),t.node.addEventListener("mousedown",this.printDataLabelsInner.bind(this,t.node,e))}},{key:"animatePaths",value:function(t,e){var i=this.w,s=e.endAngle-e.startAngle,a=s,n=e.startAngle,r=e.startAngle;void 0!==e.prevStartAngle&&void 0!==e.prevEndAngle&&(n=e.prevEndAngle,a=e.prevEndAngle-e.prevStartAngle),e.i===i.config.series.length-1&&(s+r>this.fullAngle?e.endAngle=e.endAngle-(s+r):s+r<this.fullAngle&&(e.endAngle=e.endAngle+(this.fullAngle-(s+r)))),s===this.fullAngle&&(s=this.fullAngle-.01),this.animateArc(t,n,r,s,a,e)}},{key:"animateArc",value:function(t,e,i,s,a,n){var r,o=this,l=this.w,h=o.size;h||(h=n.size),(isNaN(e)||isNaN(a))&&(e=i,a=s,n.dur=0);var c=s,d=i,u=e-i;l.globals.dataChanged&&n.shouldSetPrevPaths&&(r=o.getPiePath({me:o,startAngle:d,angle:a,size:h}),t.attr({d:r})),0!==n.dur?t.animate(n.dur,l.globals.easing,n.animBeginArr[n.i]).afterAll(function(){"pie"!==l.config.chart.type&&"donut"!==l.config.chart.type||this.animate(300).attr({"stroke-width":l.config.stroke.width}),l.globals.animationEnded=!0}).during(function(l){c=u+(s-u)*l,n.animateStartingPos&&(c=a+(s-a)*l,d=e-a+(i-(e-a))*l),r=o.getPiePath({me:o,startAngle:d,angle:c,size:h}),t.node.setAttribute("data:pathOrig",r),t.attr({d:r})}):(r=o.getPiePath({me:o,startAngle:d,angle:s,size:h}),n.isTrack||(l.globals.animationEnded=!0),t.node.setAttribute("data:pathOrig",r),t.attr({d:r}))}},{key:"pieClicked",value:function(t){var e,i=this.w,s=this.size+4,a=i.globals.dom.Paper.select("#apexcharts-".concat(i.config.chart.type.toLowerCase(),"-slice-").concat(t)).members[0],n=a.attr("d");if("true"!==a.attr("data:pieClicked")){var r=i.globals.dom.baseEl.querySelectorAll(".apexcharts-pie-area");Array.prototype.forEach.call(r,function(t){t.setAttribute("data:pieClicked","false");var e=t.getAttribute("data:pathOrig");t.setAttribute("d",e)}),a.attr("data:pieClicked","true");var o=parseInt(a.attr("data:startAngle")),l=parseInt(a.attr("data:angle"));e=this.getPiePath({me:this,startAngle:o,angle:l,size:s}),360!==l&&a.plot(e).animate(1).plot(n).animate(100).plot(e)}else{a.attr({"data:pieClicked":"false"}),this.revertDataLabelsInner(a.node,this.donutDataLabels);var h=a.attr("data:pathOrig");a.attr({d:h})}}},{key:"getChangedPath",value:function(t,e){var i="";return this.dynamicAnim&&this.w.globals.dataChanged&&(i=this.getPiePath({me:this,startAngle:t,angle:e-t,size:this.size})),i}},{key:"getPiePath",value:function(t){var e=t.me,i=t.startAngle,s=t.angle,a=t.size,n=this.w,r=i,o=Math.PI*(r-90)/180,l=s+i;Math.ceil(l)>=360&&(l=359.99);var h=Math.PI*(l-90)/180,c=e.centerX+a*Math.cos(o),u=e.centerY+a*Math.sin(o),g=e.centerX+a*Math.cos(h),f=e.centerY+a*Math.sin(h),p=d.polarToCartesian(e.centerX,e.centerY,e.donutSize,l),x=d.polarToCartesian(e.centerX,e.centerY,e.donutSize,r),b=s>180?1:0;return"donut"===n.config.chart.type?["M",c,u,"A",a,a,0,b,1,g,f,"L",p.x,p.y,"A",e.donutSize,e.donutSize,0,b,0,x.x,x.y,"L",c,u,"z"].join(" "):"pie"===n.config.chart.type?["M",c,u,"A",a,a,0,b,1,g,f,"L",e.centerX,e.centerY,"L",c,u].join(" "):["M",c,u,"A",a,a,0,b,1,g,f].join(" ")}},{key:"renderInnerDataLabels",value:function(t,e){var i=this.w,s=new f(this.ctx),a=s.group({class:"apexcharts-datalabels-group",transform:"translate(".concat(e.translateX?e.translateX:0,", ").concat(e.translateY?e.translateY:0,")")}),n=t.total.show;a.node.style.opacity=e.opacity;var r,o,l=e.centerX,h=e.centerY;r=void 0===t.name.color?i.globals.colors[0]:t.name.color,o=void 0===t.value.color?i.config.chart.foreColor:t.value.color;var c=t.value.formatter,d="",u="";if(n?(r=t.total.color,u=t.total.label,d=t.total.formatter(i)):1===i.globals.series.length&&(d=c(i.globals.series[0],i),u=i.globals.seriesNames[0]),t.name.show){var g=s.drawText({x:l,y:h+parseInt(t.name.offsetY),text:u,textAnchor:"middle",foreColor:r,fontSize:t.name.fontSize,fontFamily:t.name.fontFamily});g.node.classList.add("apexcharts-datalabel-label"),a.add(g)}if(t.value.show){var p=t.name.show?parseInt(t.value.offsetY)+16:t.value.offsetY,x=s.drawText({x:l,y:h+p,text:d,textAnchor:"middle",foreColor:o,fontSize:t.value.fontSize,fontFamily:t.value.fontFamily});x.node.classList.add("apexcharts-datalabel-value"),a.add(x)}return a}},{key:"printInnerLabels",value:function(t,e,i,s){var a,n=this.w;s?a=void 0===t.name.color?n.globals.colors[parseInt(s.parentNode.getAttribute("rel"))-1]:t.name.color:n.globals.series.length>1&&t.total.show&&(a=t.total.color);var r=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-label"),o=n.globals.dom.baseEl.querySelector(".apexcharts-datalabel-value");i=(0,t.value.formatter)(i,n),s||"function"!=typeof t.total.formatter||(i=t.total.formatter(n)),null!==r&&(r.textContent=e),null!==o&&(o.textContent=i),null!==r&&(r.style.fill=a)}},{key:"printDataLabelsInner",value:function(t,e){var i=this.w,s=t.getAttribute("data:value"),a=i.globals.seriesNames[parseInt(t.parentNode.getAttribute("rel"))-1];i.globals.series.length>1&&this.printInnerLabels(e,a,s,t);var n=i.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");null!==n&&(n.style.opacity=1)}},{key:"revertDataLabelsInner",value:function(e,i,s){var a=this,n=this.w,r=n.globals.dom.baseEl.querySelector(".apexcharts-datalabels-group");if(i.total.show&&n.globals.series.length>1){new t(this.ctx).printInnerLabels(i,i.total.label,i.total.formatter(n))}else{var o=document.querySelectorAll(".apexcharts-pie-area"),l=!1;if(o.forEach(function(t){"true"===t.getAttribute("data:pieClicked")&&(l=!0,a.printDataLabelsInner(t,i))}),!l)if(n.globals.selectedDataPoints.length&&n.globals.series.length>1)if(n.globals.selectedDataPoints[0].length>0){var h=n.globals.selectedDataPoints[0],c=n.globals.dom.baseEl.querySelector("#apexcharts-".concat(n.config.chart.type.toLowerCase(),"-slice-").concat(h));this.printDataLabelsInner(c,i)}else r&&n.globals.selectedDataPoints.length&&0===n.globals.selectedDataPoints[0].length&&(r.style.opacity=0);else r&&n.globals.series.length>1&&(r.style.opacity=0)}}}]),t}(),Y=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.chartType=this.w.config.chart.type,this.initialAnim=this.w.config.chart.animations.enabled,this.dynamicAnim=this.initialAnim&&this.w.config.chart.animations.dynamicAnimation.enabled,this.animDur=0;var s=this.w;this.graphics=new f(this.ctx),this.lineColorArr=void 0!==s.globals.stroke.colors?s.globals.stroke.colors:s.globals.colors,this.defaultSize=s.globals.svgHeight<s.globals.svgWidth?s.globals.svgHeight-35:s.globals.gridWidth,this.maxValue=this.w.globals.maxY,this.polygons=s.config.plotOptions.radar.polygons,this.maxLabelWidth=20;var a=s.globals.labels.slice().sort(function(t,e){return e.length-t.length})[0],n=this.graphics.getTextRects(a,s.config.dataLabels.style.fontSize);this.size=this.defaultSize/2.1-s.config.stroke.width-s.config.chart.dropShadow.blur-n.width/1.75,void 0!==s.config.plotOptions.radar.size&&(this.size=s.config.plotOptions.radar.size),this.dataRadiusOfPercent=[],this.dataRadius=[],this.angleArr=[],this.yaxisLabelsTextsPos=[]}return s(t,[{key:"draw",value:function(t){var e=this,i=this.w,s=new S(this.ctx),a=[];this.dataPointsLen=t[i.globals.maxValsInArrayIndex].length,this.disAngle=2*Math.PI/this.dataPointsLen;var r=i.globals.gridWidth/2,o=i.globals.gridHeight/2,l=this.graphics.group({class:"apexcharts-radar-series","data:innerTranslateX":r,"data:innerTranslateY":o-25,transform:"translate(".concat(r||0,", ").concat(o||0,")")}),h=[],c=null;if(this.yaxisLabels=this.graphics.group({class:"apexcharts-yaxis"}),t.forEach(function(t,r){var o=e.graphics.group().attr({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[r]),rel:r+1,"data:realIndex":r});e.dataRadiusOfPercent[r]=[],e.dataRadius[r]=[],e.angleArr[r]=[],t.forEach(function(t,i){e.dataRadiusOfPercent[r][i]=t/e.maxValue,e.dataRadius[r][i]=e.dataRadiusOfPercent[r][i]*e.size,e.angleArr[r][i]=i*e.disAngle}),h=e.getDataPointsPos(e.dataRadius[r],e.angleArr[r]);var l=e.createPaths(h,{x:0,y:0});c=e.graphics.group({class:"apexcharts-series-markers-wrap hidden"}),i.globals.delayedElements.push({el:c.node,index:r});var g={i:r,realIndex:r,animationDelay:r,initialSpeed:i.config.chart.animations.speed,dataChangeSpeed:i.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-radar",id:"apexcharts-radar",shouldClipToGrid:!1,bindEventsOnPaths:!1,stroke:i.globals.stroke.colors[r],strokeLineCap:i.config.stroke.lineCap},f=null;i.globals.previousPaths.length>0&&(f=e.getPathFrom(r));for(var p=0;p<l.linePathsTo.length;p++){var x=e.graphics.renderPaths(n({},g,{pathFrom:null===f?l.linePathsFrom[p]:f,pathTo:l.linePathsTo[p],strokeWidth:Array.isArray(i.config.stroke.width)?i.config.stroke.width[r]:i.config.stroke.width,fill:"none",drawShadow:!1}));o.add(x);var b=s.fillPath({seriesNumber:r}),m=e.graphics.renderPaths(n({},g,{pathFrom:null===f?l.areaPathsFrom[p]:f,pathTo:l.areaPathsTo[p],strokeWidth:0,fill:b,drawShadow:!1}));if(i.config.chart.dropShadow.enabled){var v=new u(e.ctx),y=i.config.chart.dropShadow;v.dropShadow(m,Object.assign({},y,{noUserSpaceOnUse:!0}),r)}o.add(m)}t.forEach(function(t,i){var s=new C(e.ctx).getMarkerConfig("apexcharts-marker",r),a=e.graphics.drawMarker(h[i].x,h[i].y,s);a.attr("rel",i),a.attr("j",i),a.attr("index",r),a.node.setAttribute("default-marker-size",s.pSize);var n=e.graphics.group({class:"apexcharts-series-markers"});n&&n.add(a),c.add(n),o.add(c)}),a.push(o)}),this.drawPolygons({parent:l}),i.config.dataLabels.enabled){var g=this.drawLabels();l.add(g)}return l.add(this.yaxisLabels),a.forEach(function(t){l.add(t)}),l}},{key:"drawPolygons",value:function(t){for(var e=this,i=this.w,s=t.parent,a=i.globals.yAxisScale[0].result.reverse(),n=a.length,r=[],o=this.size/(n-1),l=0;l<n;l++)r[l]=o*l;r.reverse();var h=[],c=[];r.forEach(function(t,i){var s=e.getPolygonPos(t),a="";s.forEach(function(t,s){if(0===i){var n=e.graphics.drawLine(t.x,t.y,0,0,Array.isArray(e.polygons.connectorColors)?e.polygons.connectorColors[s]:e.polygons.connectorColors);c.push(n)}0===s&&e.yaxisLabelsTextsPos.push({x:t.x,y:t.y}),a+=t.x+","+t.y+" "}),h.push(a)}),h.forEach(function(t,a){var n=e.polygons.strokeColors,r=e.graphics.drawPolygon(t,Array.isArray(n)?n[a]:n,i.globals.radarPolygons.fill.colors[a]);s.add(r)}),c.forEach(function(t){s.add(t)}),i.config.yaxis[0].show&&this.yaxisLabelsTextsPos.forEach(function(t,i){var s=e.drawYAxisText(t.x,t.y,i,a[i]);e.yaxisLabels.add(s)})}},{key:"drawYAxisText",value:function(t,e,i,s){var a=this.w,n=a.config.yaxis[0],r=a.globals.yLabelFormatters[0];return this.graphics.drawText({x:t+n.labels.offsetX,y:e+n.labels.offsetY,text:r(s,i),textAnchor:"middle",fontSize:n.labels.style.fontSize,fontFamily:n.labels.style.fontFamily,foreColor:n.labels.style.color})}},{key:"drawLabels",value:function(){var t=this,e=this.w,i="middle",s=e.config.dataLabels,a=this.graphics.group({class:"apexcharts-datalabels"}),n=this.getPolygonPos(this.size),r=0,o=0;return e.globals.labels.forEach(function(l,h){var c=s.formatter,d=new z(t.ctx);if(n[h]){r=n[h].x,o=n[h].y,Math.abs(n[h].x)>=10?n[h].x>0?(i="start",r+=10):n[h].x<0&&(i="end",r-=10):i="middle",Math.abs(n[h].y)>=t.size-10&&(n[h].y<0?o-=10:n[h].y>0&&(o+=10));var u=c(l,{seriesIndex:-1,dataPointIndex:h,w:e});d.plotDataLabelsText({x:r,y:o,text:u,textAnchor:i,i:h,j:h,parent:a,dataLabelsConfig:s,offsetCorrection:!1})}}),a}},{key:"createPaths",value:function(t,e){var i=this,s=[],a=[],n=[],r=[];if(t.length){a=[this.graphics.move(e.x,e.y)],r=[this.graphics.move(e.x,e.y)];var o=this.graphics.move(t[0].x,t[0].y),l=this.graphics.move(t[0].x,t[0].y);t.forEach(function(e,s){o+=i.graphics.line(e.x,e.y),l+=i.graphics.line(e.x,e.y),s===t.length-1&&(o+="Z",l+="Z")}),s.push(o),n.push(l)}return{linePathsFrom:a,linePathsTo:s,areaPathsFrom:r,areaPathsTo:n}}},{key:"getPathFrom",value:function(t){for(var e=this.w,i=null,s=0;s<e.globals.previousPaths.length;s++){var a=e.globals.previousPaths[s];a.paths.length>0&&parseInt(a.realIndex)===parseInt(t)&&void 0!==e.globals.previousPaths[s].paths[0]&&(i=e.globals.previousPaths[s].paths[0].d)}return i}},{key:"getDataPointsPos",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:this.dataPointsLen;t=t||[],e=e||[];for(var s=[],a=0;a<i;a++){var n={};n.x=t[a]*Math.sin(e[a]),n.y=-t[a]*Math.cos(e[a]),s.push(n)}return s}},{key:"getPolygonPos",value:function(t){for(var e=[],i=2*Math.PI/this.dataPointsLen,s=0;s<this.dataPointsLen;s++){var a={};a.x=t*Math.sin(s*i),a.y=-t*Math.cos(s*i),e.push(a)}return e}}]),t}(),F=function(t){function i(t){var s;e(this,i),(s=h(this,o(i).call(this,t))).ctx=t,s.w=t.w,s.animBeginArr=[0],s.animDur=0;var a=s.w;return s.startAngle=a.config.plotOptions.radialBar.startAngle,s.endAngle=a.config.plotOptions.radialBar.endAngle,s.trackStartAngle=a.config.plotOptions.radialBar.track.startAngle,s.trackEndAngle=a.config.plotOptions.radialBar.track.endAngle,s.radialDataLabels=a.config.plotOptions.radialBar.dataLabels,s.trackStartAngle||(s.trackStartAngle=s.startAngle),s.trackEndAngle||(s.trackEndAngle=s.endAngle),360===s.endAngle&&(s.endAngle=359.99),s.fullAngle=360-a.config.plotOptions.radialBar.endAngle-a.config.plotOptions.radialBar.startAngle,s.margin=parseInt(a.config.plotOptions.radialBar.track.margin),s}return r(i,I),s(i,[{key:"draw",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-radialbar"}),a=i.group(),n=this.defaultSize/2,r=e.globals.gridWidth/2,o=this.defaultSize/2.05-e.config.stroke.width-e.config.chart.dropShadow.blur;void 0!==e.config.plotOptions.radialBar.size&&(o=e.config.plotOptions.radialBar.size);var l=e.globals.fill.colors;if(e.config.plotOptions.radialBar.track.show){var h=this.drawTracks({size:o,centerX:r,centerY:n,colorArr:l,series:t});a.add(h)}var c=this.drawArcs({size:o,centerX:r,centerY:n,colorArr:l,series:t});return a.add(c.g),"front"===e.config.plotOptions.radialBar.hollow.position&&(c.g.add(c.elHollow),c.dataLabels&&c.g.add(c.dataLabels)),s.add(a),s}},{key:"drawTracks",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group(),a=new u(this.ctx),n=new S(this.ctx),r=this.getStrokeWidth(t);t.size=t.size-r/2;for(var o=0;o<t.series.length;o++){var l=i.group({class:"apexcharts-radialbar-track apexcharts-track"});s.add(l),l.attr({id:"apexcharts-track-"+o,rel:o+1}),t.size=t.size-r-this.margin;var h=e.config.plotOptions.radialBar.track,c=n.fillPath({seriesNumber:0,size:t.size,fillColors:Array.isArray(h.background)?h.background[o]:h.background,solid:!0}),d=this.trackStartAngle,g=this.trackEndAngle;Math.abs(g)+Math.abs(d)>=360&&(g=360-Math.abs(this.startAngle)-.1);var p=i.drawPath({d:"",stroke:c,strokeWidth:r*parseInt(h.strokeWidth)/100,fill:"none",strokeOpacity:h.opacity,classes:"apexcharts-radialbar-area"});if(h.dropShadow.enabled){var x=h.dropShadow;a.dropShadow(p,x)}l.add(p),p.attr("id","apexcharts-radialbarTrack-"+o),new I(this.ctx).animatePaths(p,{centerX:t.centerX,centerY:t.centerY,endAngle:g,startAngle:d,size:t.size,i:o,totalItems:2,animBeginArr:0,dur:0,isTrack:!0,easing:e.globals.easing})}return s}},{key:"drawArcs",value:function(t){var e=this.w,i=new f(this.ctx),s=new S(this.ctx),a=new u(this.ctx),n=i.group(),r=this.getStrokeWidth(t);t.size=t.size-r/2;var o=e.config.plotOptions.radialBar.hollow.background,l=t.size-r*t.series.length-this.margin*t.series.length-r*parseInt(e.config.plotOptions.radialBar.track.strokeWidth)/100/2,h=l-e.config.plotOptions.radialBar.hollow.margin;void 0!==e.config.plotOptions.radialBar.hollow.image&&(o=this.drawHollowImage(t,n,l,o));var c=this.drawHollow({size:h,centerX:t.centerX,centerY:t.centerY,fill:o});if(e.config.plotOptions.radialBar.hollow.dropShadow.enabled){var g=e.config.plotOptions.radialBar.hollow.dropShadow;a.dropShadow(c,g)}var p=1;!this.radialDataLabels.total.show&&e.globals.series.length>1&&(p=0);var x=new I(this.ctx),b=null;this.radialDataLabels.show&&(b=x.renderInnerDataLabels(this.radialDataLabels,{hollowSize:l,centerX:t.centerX,centerY:t.centerY,opacity:p})),"back"===e.config.plotOptions.radialBar.hollow.position&&(n.add(c),b&&n.add(b));var m=!1;e.config.plotOptions.radialBar.inverseOrder&&(m=!0);for(var v=m?t.series.length-1:0;m?v>=0:v<t.series.length;m?v--:v++){var y=i.group({class:"apexcharts-series apexcharts-radial-series",seriesName:d.escapeString(e.globals.seriesNames[v])});n.add(y),y.attr({id:"apexcharts-series-"+v,rel:v+1}),this.ctx.series.addCollapsedClassToSeries(y,v),t.size=t.size-r-this.margin;var w=s.fillPath({seriesNumber:v,size:t.size,value:t.series[v]}),k=this.startAngle,A=void 0,C=Math.abs(e.config.plotOptions.radialBar.endAngle-e.config.plotOptions.radialBar.startAngle),L=d.negToZero(t.series[v]>100?100:t.series[v])/100,z=Math.round(C*L)+this.startAngle,P=void 0;e.globals.dataChanged&&(A=this.startAngle,P=Math.round(C*d.negToZero(e.globals.previousPaths[v])/100)+A),Math.abs(z)+Math.abs(k)>=360&&(z-=.01),Math.abs(P)+Math.abs(A)>=360&&(P-=.01);var M=z-k,E=Array.isArray(e.config.stroke.dashArray)?e.config.stroke.dashArray[v]:e.config.stroke.dashArray,T=i.drawPath({d:"",stroke:w,strokeWidth:r,fill:"none",fillOpacity:e.config.fill.opacity,classes:"apexcharts-radialbar-area",strokeDashArray:E});if(f.setAttrs(T.node,{"data:angle":M,"data:value":t.series[v]}),e.config.chart.dropShadow.enabled){var X=e.config.chart.dropShadow;a.dropShadow(T,X,v)}this.addListeners(T,this.radialDataLabels);var Y=new I(this.ctx);y.add(T),T.attr({id:"apexcharts-radialbar-slice-"+v,index:0,j:v});var F=0;!Y.initialAnim||e.globals.resized||e.globals.dataChanged||(F=(z-k)/360*e.config.chart.animations.speed,this.animDur=F/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),e.globals.dataChanged&&(F=(z-k)/360*e.config.chart.animations.dynamicAnimation.speed,this.animDur=F/(1.2*t.series.length)+this.animDur,this.animBeginArr.push(this.animDur)),Y.animatePaths(T,{centerX:t.centerX,centerY:t.centerY,endAngle:z,startAngle:k,prevEndAngle:P,prevStartAngle:A,size:t.size,i:v,totalItems:2,animBeginArr:this.animBeginArr,dur:F,shouldSetPrevPaths:!0,easing:e.globals.easing})}return{g:n,elHollow:c,dataLabels:b}}},{key:"drawHollow",value:function(t){var e=new f(this.ctx).drawCircle(2*t.size);return e.attr({class:"apexcharts-radialbar-hollow",cx:t.centerX,cy:t.centerY,r:t.size,fill:t.fill}),e}},{key:"drawHollowImage",value:function(t,e,i,s){var a=this.w,n=new S(this.ctx),r=(Math.random()+1).toString(36).substring(4),o=a.config.plotOptions.radialBar.hollow.image;if(a.config.plotOptions.radialBar.hollow.imageClipped)n.clippedImgArea({width:i,height:i,image:o,patternID:"pattern".concat(a.globals.cuid).concat(r)}),s="url(#pattern".concat(a.globals.cuid).concat(r,")");else{var l=a.config.plotOptions.radialBar.hollow.imageWidth,h=a.config.plotOptions.radialBar.hollow.imageHeight;if(void 0===l&&void 0===h){var c=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-e.width/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-e.height/2+a.config.plotOptions.radialBar.hollow.imageOffsetY)});e.add(c)}else{var d=a.globals.dom.Paper.image(o).loaded(function(e){this.move(t.centerX-l/2+a.config.plotOptions.radialBar.hollow.imageOffsetX,t.centerY-h/2+a.config.plotOptions.radialBar.hollow.imageOffsetY),this.size(l,h)});e.add(d)}}return s}},{key:"getStrokeWidth",value:function(t){var e=this.w;return t.size*(100-parseInt(e.config.plotOptions.radialBar.hollow.size))/100/(t.series.length+1)-this.margin}}]),i}(),R=function(t){function i(){return e(this,i),h(this,o(i).apply(this,arguments))}return r(i,P),s(i,[{key:"draw",value:function(t,e){var i=this.w,s=new f(this.ctx),a=new S(this.ctx);this.rangeBarOptions=this.w.config.plotOptions.rangeBar,this.series=t,this.seriesRangeStart=i.globals.seriesRangeStart,this.seriesRangeEnd=i.globals.seriesRangeEnd,this.initVariables(t);for(var n=s.group({class:"apexcharts-rangebar-series apexcharts-plot-series"}),r=0,o=0;r<t.length;r++,o++){var l,h,c,u,g=void 0,p=void 0,x=void 0,b=void 0,m=[],v=[],y=i.globals.comboCharts?e[r]:r,w=s.group({class:"apexcharts-series",seriesName:d.escapeString(i.globals.seriesNames[y]),rel:r+1,"data:realIndex":y});t[r].length>0&&(this.visibleI=this.visibleI+1);var k=0,A=0,C=0;this.yRatio.length>1&&(this.yaxisIndex=y);var L=this.initialPositions();b=L.y,h=L.yDivision,A=L.barHeight,u=L.zeroW,x=L.x,C=L.barWidth,l=L.xDivision,c=L.zeroH,v.push(x+C/2);for(var z=s.group({class:"apexcharts-datalabels"}),P=0,M=i.globals.dataPoints;P<i.globals.dataPoints;P++,M--){void 0===this.series[r][P]||null===t[r][P]?this.isNullValue=!0:this.isNullValue=!1,i.config.stroke.show&&(k=this.isNullValue?0:Array.isArray(this.strokeWidth)?this.strokeWidth[y]:this.strokeWidth);var E=null;this.isHorizontal?C=(E=this.drawRangeBarPaths({indexes:{i:r,j:P,realIndex:y,bc:o},barHeight:A,strokeWidth:k,pathTo:g,pathFrom:p,zeroW:u,x:x,y:b,yDivision:h,elSeries:w})).barWidth:A=(E=this.drawRangeColumnPaths({indexes:{i:r,j:P,realIndex:y,bc:o},x:x,y:b,xDivision:l,pathTo:g,pathFrom:p,barWidth:C,zeroH:c,strokeWidth:k,elSeries:w})).barHeight,g=E.pathTo,p=E.pathFrom,b=E.y,x=E.x,P>0&&v.push(x+C/2),m.push(b);var T=a.fillPath({seriesNumber:y}),X=i.globals.stroke.colors[y];w=this.renderSeries({realIndex:y,pathFill:T,lineFill:X,j:P,i:r,pathFrom:p,pathTo:g,strokeWidth:k,elSeries:w,x:x,y:b,series:t,barHeight:A,barWidth:C,elDataLabelsWrap:z,visibleSeries:this.visibleI,type:"rangebar"})}i.globals.seriesXvalues[y]=v,i.globals.seriesYvalues[y]=m,n.add(w)}return n}},{key:"drawRangeColumnPaths",value:function(t){var e=t.indexes,i=t.x,s=(t.y,t.strokeWidth),a=t.xDivision,n=t.pathTo,r=t.pathFrom,o=t.barWidth,l=t.zeroH,h=this.w,c=new f(this.ctx),d=e.i,u=e.j,g=this.yRatio[this.yaxisIndex],p=e.realIndex,x=this.getRangeValue(p,u),b=Math.min(x.start,x.end),m=Math.max(x.start,x.end);h.globals.isXNumeric&&(i=(h.globals.seriesX[d][u]-h.globals.minX)/this.xRatio-o/2);var v=i+o*this.visibleI;void 0===this.series[d][u]||null===this.series[d][u]?b=l:(b=l-b/g,m=l-m/g);var y=Math.abs(m-b);return c.move(v,l),r=c.move(v,b),h.globals.previousPaths.length>0&&(r=this.getPathFrom(p,u,!0)),n=c.move(v,m)+c.line(v+o,m)+c.line(v+o,b)+c.line(v,b)+c.line(v,m-s/2),r=r+c.move(v,b)+c.line(v+o,b)+c.line(v+o,b)+c.line(v,b),h.globals.isXNumeric||(i+=a),{pathTo:n,pathFrom:r,barHeight:y,x:i,y:m,barXPosition:v}}},{key:"drawRangeBarPaths",value:function(t){var e=t.indexes,i=(t.x,t.y),s=t.yDivision,a=t.pathTo,n=t.pathFrom,r=t.barHeight,o=t.zeroW,l=this.w,h=new f(this.ctx),c=e.i,d=e.j,u=e.realIndex,g=o,p=o;l.globals.isXNumeric&&(i=(l.globals.seriesX[c][d]-l.globals.minX)/this.invertedXRatio-r);var x=i+r*this.visibleI;void 0!==this.series[c][d]&&null!==this.series[c][d]&&(g=o+this.seriesRangeStart[c][d]/this.invertedYRatio,p=o+this.seriesRangeEnd[c][d]/this.invertedYRatio),h.move(o,x),n=h.move(o,x),l.globals.previousPaths.length>0&&(n=this.getPathFrom(u,d));var b=Math.abs(p-g);return a=h.move(g,x)+h.line(p,x)+h.line(p,x+r)+h.line(g,x+r)+h.line(g,x),n=n+h.line(g,x)+h.line(g,x+r)+h.line(g,x+r)+h.line(g,x),l.globals.isXNumeric||(i+=s),{pathTo:a,pathFrom:n,barWidth:b,x:p,y:i,barYPosition:x}}},{key:"getRangeValue",value:function(t,e){var i=this.w;return{start:i.globals.seriesRangeStart[t][e],end:i.globals.seriesRangeEnd[t][e]}}}]),i}(),D=function(){function t(i,s,a){e(this,t),this.ctx=i,this.w=i.w,this.xyRatios=s,this.pointsChart=!("bubble"!==this.w.config.chart.type&&"scatter"!==this.w.config.chart.type)||a,this.scatter=new L(this.ctx),this.noNegatives=this.w.globals.minX===Number.MAX_VALUE,this.yaxisIndex=0}return s(t,[{key:"draw",value:function(t,e,i){var s=this.w,a=new f(this.ctx),r=new S(this.ctx),o=s.globals.comboCharts?e:s.config.chart.type,l=a.group({class:"apexcharts-".concat(o,"-series apexcharts-plot-series")}),h=new y(this.ctx,s);t=h.getLogSeries(t);var c=this.xyRatios.yRatio;c=h.getLogYRatios(c);for(var u=this.xyRatios.zRatio,g=this.xyRatios.xRatio,p=this.xyRatios.baseLineY,x=[],b=[],m=0,v=0;v<t.length;v++){if("line"===o&&("gradient"===s.config.fill.type||"gradient"===s.config.fill.type[v])&&h.seriesHaveSameValues(v)){var w=t[v].slice();w[w.length-1]=w[w.length-1]+1e-6,t[v]=w}var k=s.globals.gridWidth/s.globals.dataPoints,A=s.globals.comboCharts?i[v]:v;c.length>1&&(this.yaxisIndex=A),this.isReversed=s.config.yaxis[this.yaxisIndex]&&s.config.yaxis[this.yaxisIndex].reversed;var L=[],P=[],M=s.globals.gridHeight-p[this.yaxisIndex]-(this.isReversed?s.globals.gridHeight:0)+(this.isReversed?2*p[this.yaxisIndex]:0),E=M;M>s.globals.gridHeight&&(E=s.globals.gridHeight),m=k/2;var T=s.globals.padHorizontal+m,X=1;s.globals.isXNumeric&&s.globals.seriesX.length>0&&(T=(s.globals.seriesX[A][0]-s.globals.minX)/g),P.push(T);var I=void 0,Y=void 0,F=void 0,R=void 0,D=[],N=[],O=a.group({class:"apexcharts-series",seriesName:d.escapeString(s.globals.seriesNames[A])}),H=a.group({class:"apexcharts-series-markers-wrap"}),W=a.group({class:"apexcharts-datalabels"});this.ctx.series.addCollapsedClassToSeries(O,A);var B=t[v].length===s.globals.dataPoints;O.attr({"data:longestSeries":B,rel:v+1,"data:realIndex":A}),this.appendPathFrom=!0;var V=T,G=void 0,_=V,j=M,U=0;if(j=this.determineFirstPrevY({i:v,series:t,yRatio:c[this.yaxisIndex],zeroY:M,prevY:j,prevSeriesY:b,lineYPosition:U}).prevY,L.push(j),G=j,null===t[v][0]){for(var q=0;q<t[v].length;q++)if(null!==t[v][q]){_=k*q,j=M-t[v][q]/c[this.yaxisIndex],I=a.move(_,j),Y=a.move(_,E);break}}else I=a.move(_,j),Y=a.move(_,E)+a.line(_,j);if(F=a.move(-1,M)+a.line(-1,M),R=a.move(-1,M)+a.line(-1,M),s.globals.previousPaths.length>0){var Z=this.checkPreviousPaths({pathFromLine:F,pathFromArea:R,realIndex:A});F=Z.pathFromLine,R=Z.pathFromArea}for(var $=s.globals.dataPoints>1?s.globals.dataPoints-1:s.globals.dataPoints,J=0;J<$;J++){if(s.globals.isXNumeric){var Q=s.globals.seriesX[A][J+1];void 0===s.globals.seriesX[A][J+1]&&(Q=s.globals.seriesX[A][$-1]),T=(Q-s.globals.minX)/g}else T+=k;var K=d.isNumber(s.globals.minYArr[A])?s.globals.minYArr[A]:s.globals.minY;s.config.chart.stacked?(U=v>0&&s.globals.collapsedSeries.length<s.config.series.length-1?b[v-1][J+1]:M,X=void 0===t[v][J+1]||null===t[v][J+1]?U-K/c[this.yaxisIndex]+2*(this.isReversed?K/c[this.yaxisIndex]:0):U-t[v][J+1]/c[this.yaxisIndex]+2*(this.isReversed?t[v][J+1]/c[this.yaxisIndex]:0)):X=void 0===t[v][J+1]||null===t[v][J+1]?M-K/c[this.yaxisIndex]+2*(this.isReversed?K/c[this.yaxisIndex]:0):M-t[v][J+1]/c[this.yaxisIndex]+2*(this.isReversed?t[v][J+1]/c[this.yaxisIndex]:0),P.push(T),L.push(X);var tt=this.createPaths({series:t,i:v,j:J,x:T,y:X,xDivision:k,pX:V,pY:G,areaBottomY:E,linePath:I,areaPath:Y,linePaths:D,areaPaths:N,seriesIndex:i});N=tt.areaPaths,D=tt.linePaths,V=tt.pX,G=tt.pY,Y=tt.areaPath,I=tt.linePath,this.appendPathFrom&&(F+=a.line(T,M),R+=a.line(T,M));var et=this.calculatePoints({series:t,x:T,y:X,realIndex:A,i:v,j:J,prevY:j,categoryAxisCorrection:m,xRatio:g});if(this.pointsChart)this.scatter.draw(O,J,{realIndex:A,pointsPos:et,zRatio:u,elParent:H});else{var it=new C(this.ctx);s.globals.dataPoints>1&&H.node.classList.add("hidden");var st=it.plotChartMarkers(et,A,J+1);null!==st&&H.add(st)}var at=!t[v][J+1]||t[v][J+1]>t[v][J]?"top":"bottom",nt=new z(this.ctx).drawDataLabel(et,A,J+1,null,at);null!==nt&&W.add(nt)}b.push(L),s.globals.seriesXvalues[A]=P,s.globals.seriesYvalues[A]=L,this.pointsChart||s.globals.delayedElements.push({el:H.node,index:A});var rt={i:v,realIndex:A,animationDelay:v,initialSpeed:s.config.chart.animations.speed,dataChangeSpeed:s.config.chart.animations.dynamicAnimation.speed,className:"apexcharts-".concat(o),id:"apexcharts-".concat(o)};if("area"===o)for(var ot=r.fillPath({seriesNumber:A}),lt=0;lt<N.length;lt++){var ht=a.renderPaths(n({},rt,{pathFrom:R,pathTo:N[lt],stroke:"none",strokeWidth:0,strokeLineCap:null,fill:ot}));O.add(ht)}if(s.config.stroke.show&&!this.pointsChart){var ct=null;ct="line"===o?r.fillPath({seriesNumber:A,i:v}):s.globals.stroke.colors[A];for(var dt=0;dt<D.length;dt++){var ut=a.renderPaths(n({},rt,{pathFrom:F,pathTo:D[dt],stroke:ct,strokeWidth:Array.isArray(s.config.stroke.width)?s.config.stroke.width[A]:s.config.stroke.width,strokeLineCap:s.config.stroke.lineCap,fill:"none"}));O.add(ut)}}O.add(H),O.add(W),x.push(O)}for(var gt=x.length;gt>0;gt--)l.add(x[gt-1]);return l}},{key:"createPaths",value:function(t){var e=t.series,i=t.i,s=t.j,a=t.x,n=t.y,r=t.pX,o=t.pY,l=t.xDivision,h=t.areaBottomY,c=t.linePath,d=t.areaPath,u=t.linePaths,g=t.areaPaths,p=t.seriesIndex,x=this.w,b=new f(this.ctx),m=x.config.stroke.curve;if(Array.isArray(x.config.stroke.curve)&&(m=Array.isArray(p)?x.config.stroke.curve[p[i]]:x.config.stroke.curve[i]),"smooth"===m){var v=.35*(a-r);x.globals.hasNullValues?(null!==e[i][s]&&(null!==e[i][s+1]?(c=b.move(r,o)+b.curve(r+v,o,a-v,n,a+1,n),d=b.move(r+1,o)+b.curve(r+v,o,a-v,n,a+1,n)+b.line(a,h)+b.line(r,h)+"z"):(c=b.move(r,o),d=b.move(r,o)+"z")),u.push(c),g.push(d)):(c+=b.curve(r+v,o,a-v,n,a,n),d+=b.curve(r+v,o,a-v,n,a,n)),r=a,o=n,s===e[i].length-2&&(d=d+b.curve(r,o,a,n,a,h)+b.move(a,n)+"z",x.globals.hasNullValues||(u.push(c),g.push(d)))}else null===e[i][s+1]&&(c+=b.move(a,n),d=d+b.line(a-l,h)+b.move(a,n)),null===e[i][s]&&(c+=b.move(a,n),d+=b.move(a,h)),"stepline"===m?(c=c+b.line(a,null,"H")+b.line(null,n,"V"),d=d+b.line(a,null,"H")+b.line(null,n,"V")):"straight"===m&&(c+=b.line(a,n),d+=b.line(a,n)),s===e[i].length-2&&(d=d+b.line(a,h)+b.move(a,n)+"z",u.push(c),g.push(d));return{linePaths:u,areaPaths:g,pX:r,pY:o,linePath:c,areaPath:d}}},{key:"calculatePoints",value:function(t){var e=t.series,i=t.realIndex,s=t.x,a=t.y,n=t.i,r=t.j,o=t.prevY,l=t.categoryAxisCorrection,h=t.xRatio,c=this.w,u=[],g=[];if(0===r){var f=l+c.config.markers.offsetX;c.globals.isXNumeric&&(f=(c.globals.seriesX[i][0]-c.globals.minX)/h+c.config.markers.offsetX),u.push(f),g.push(d.isNumber(e[n][0])?o+c.config.markers.offsetY:null),u.push(s+c.config.markers.offsetX),g.push(d.isNumber(e[n][r+1])?a+c.config.markers.offsetY:null)}else u.push(s+c.config.markers.offsetX),g.push(d.isNumber(e[n][r+1])?a+c.config.markers.offsetY:null);return{x:u,y:g}}},{key:"checkPreviousPaths",value:function(t){for(var e=t.pathFromLine,i=t.pathFromArea,s=t.realIndex,a=this.w,n=0;n<a.globals.previousPaths.length;n++){var r=a.globals.previousPaths[n];("line"===r.type||"area"===r.type)&&r.paths.length>0&&parseInt(r.realIndex)===parseInt(s)&&("line"===r.type?(this.appendPathFrom=!1,e=a.globals.previousPaths[n].paths[0].d):"area"===r.type&&(this.appendPathFrom=!1,i=a.globals.previousPaths[n].paths[0].d,a.config.stroke.show&&(e=a.globals.previousPaths[n].paths[1].d)))}return{pathFromLine:e,pathFromArea:i}}},{key:"determineFirstPrevY",value:function(t){var e=t.i,i=t.series,s=t.yRatio,a=t.zeroY,n=t.prevY,r=t.prevSeriesY,o=t.lineYPosition,l=this.w;if(void 0!==i[e][0])n=l.config.chart.stacked?(o=e>0?r[e-1][0]:a)-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0):a-i[e][0]/s+2*(this.isReversed?i[e][0]/s:0);else if(l.config.chart.stacked&&e>0&&void 0===i[e][0])for(var h=e-1;h>=0;h--)if(null!==i[h][0]&&void 0!==i[h][0]){n=o=r[h][0];break}return{prevY:n,lineYPosition:o}}}]),t}(),N=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.tooltipKeyFormat="dd MMM"}return s(t,[{key:"xLabelFormat",value:function(t,e){var i=this.w;if("datetime"===i.config.xaxis.type&&void 0===i.config.tooltip.x.formatter)return new m(this.ctx).formatDate(new Date(e),i.config.tooltip.x.format,!0,!0);return t(e)}},{key:"setLabelFormatters",value:function(){var t=this.w;return t.globals.xLabelFormatter=function(t){return t},t.globals.xaxisTooltipFormatter=function(t){return t},t.globals.ttKeyFormatter=function(t){return t},t.globals.ttZFormatter=function(t){return t},t.globals.legendFormatter=function(t){return t},"function"==typeof t.config.tooltip.x.formatter&&(t.globals.ttKeyFormatter=t.config.tooltip.x.formatter),"function"==typeof t.config.xaxis.tooltip.formatter&&(t.globals.xaxisTooltipFormatter=t.config.xaxis.tooltip.formatter),Array.isArray(t.config.tooltip.y)?t.globals.ttVal=t.config.tooltip.y:void 0!==t.config.tooltip.y.formatter&&(t.globals.ttVal=t.config.tooltip.y),void 0!==t.config.tooltip.z.formatter&&(t.globals.ttZFormatter=t.config.tooltip.z.formatter),void 0!==t.config.legend.formatter&&(t.globals.legendFormatter=t.config.legend.formatter),void 0!==t.config.xaxis.labels.formatter?t.globals.xLabelFormatter=t.config.xaxis.labels.formatter:t.globals.xLabelFormatter=function(e){return d.isNumber(e)?"numeric"===t.config.xaxis.type&&t.globals.dataPoints<50?e.toFixed(1):e.toFixed(0):e},t.config.yaxis.forEach(function(e,i){void 0!==e.labels.formatter?t.globals.yLabelFormatters[i]=e.labels.formatter:t.globals.yLabelFormatters[i]=function(i){return d.isNumber(i)?0!==t.globals.yValueDecimal?i.toFixed(void 0!==e.decimalsInFloat?e.decimalsInFloat:t.globals.yValueDecimal):t.globals.maxY-t.globals.minY<5?i.toFixed(1):i.toFixed(0):i}}),t.globals}},{key:"heatmapLabelFormatters",value:function(){var t=this.w;if("heatmap"===t.config.chart.type){t.globals.yAxisScale[0].result=t.globals.seriesNames.slice();var e=t.globals.seriesNames.reduce(function(t,e){return t.length>e.length?t:e},0);t.globals.yAxisScale[0].niceMax=e,t.globals.yAxisScale[0].niceMin=e}}}]),t}(),O=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getLabel",value:function(t,e,i,s){var a,n=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[],r=this.w,o=void 0===t[s]?"":t[s],l=r.globals.xLabelFormatter,h=r.config.xaxis.labels.formatter;return a=new N(this.ctx).xLabelFormat(l,o),void 0!==h&&(a=h(o,t[s],s)),e.length>0?(i=e[s].position,a=e[s].value):"datetime"===r.config.xaxis.type&&void 0===h&&(a=""),void 0===a&&(a=""),(0===(a=a.toString()).indexOf("NaN")||0===a.toLowerCase().indexOf("invalid")||a.toLowerCase().indexOf("infinity")>=0||n.indexOf(a)>=0&&!r.config.xaxis.labels.showDuplicates)&&(a=""),{x:i,text:a}}},{key:"drawYAxisTicks",value:function(t,e,i,s,a,n,r){var o=this.w,l=new f(this.ctx),h=o.globals.translateY;if(s.show){!0===o.config.yaxis[a].opposite&&(t+=s.width);for(var c=e;c>=0;c--){var d=h+e/10+o.config.yaxis[a].labels.offsetY-1;o.globals.isBarHorizontal&&(d=n*c);var u=l.drawLine(t+i.offsetX-s.width+s.offsetX,d+s.offsetY,t+i.offsetX+s.offsetX,d+s.offsetY,i.color);r.add(u),h+=n}}}}]),t}(),H=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.xaxisLabels=s.globals.labels.slice(),s.globals.timelineLabels.length>0&&(this.xaxisLabels=s.globals.timelineLabels.slice()),this.drawnLabels=[],"top"===s.config.xaxis.position?this.offY=0:this.offY=s.globals.gridHeight+1,this.offY=this.offY+s.config.xaxis.axisBorder.offsetY,this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.xaxisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xaxisBorderWidth=s.config.xaxis.axisBorder.width,this.xaxisBorderWidth.indexOf("%")>-1?this.xaxisBorderWidth=s.globals.gridWidth*parseInt(this.xaxisBorderWidth)/100:this.xaxisBorderWidth=parseInt(this.xaxisBorderWidth),this.xaxisBorderHeight=s.config.xaxis.axisBorder.height,this.yaxis=s.config.yaxis[0],this.axesUtils=new O(i)}return s(t,[{key:"drawXaxis",value:function(){var t,e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-xaxis",transform:"translate(".concat(e.config.xaxis.offsetX,", ").concat(e.config.xaxis.offsetY,")")}),a=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});s.add(a);for(var n=e.globals.padHorizontal,r=[],o=0;o<this.xaxisLabels.length;o++)r.push(this.xaxisLabels[o]);n=e.globals.isXNumeric?n+(t=e.globals.gridWidth/(r.length-1))/2+e.config.xaxis.labels.offsetX:n+(t=e.globals.gridWidth/r.length)+e.config.xaxis.labels.offsetX;var l=r.length;if(e.config.xaxis.labels.show)for(var h=0;h<=l-1;h++){var c=n-t/2+e.config.xaxis.labels.offsetX,d=this.axesUtils.getLabel(r,e.globals.timelineLabels,c,h,this.drawnLabels);this.drawnLabels.push(d.text);var u=28;e.globals.rotateXLabels&&(u=22);var g=i.drawText({x:d.x,y:this.offY+e.config.xaxis.labels.offsetY+u,text:"",textAnchor:"middle",fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[h]:this.xaxisForeColors,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});h===l-1&&e.globals.skipLastTimelinelabel&&(d.text=""),a.add(g),i.addTspan(g,d.text,this.xaxisFontFamily);var p=document.createElementNS(e.globals.SVGNS,"title");p.textContent=d.text,g.node.appendChild(p),n+=t}if(void 0!==e.config.xaxis.title.text){var x=i.group({class:"apexcharts-xaxis-title"}),b=i.drawText({x:e.globals.gridWidth/2+e.config.xaxis.title.offsetX,y:this.offY-parseInt(this.xaxisFontSize)+e.globals.xAxisLabelsHeight+e.config.xaxis.title.offsetY,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,foreColor:e.config.xaxis.title.style.color,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});x.add(b),s.add(x)}if(e.config.xaxis.axisBorder.show){var m=0;"bar"===e.config.chart.type&&e.globals.isXNumeric&&(m-=15);var v=i.drawLine(e.globals.padHorizontal+m+e.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,e.config.xaxis.axisBorder.color,0,this.xaxisBorderHeight);s.add(v)}return s}},{key:"drawXaxisInversed",value:function(t){var e,i,s=this.w,a=new f(this.ctx),n=s.config.yaxis[0].opposite?s.globals.translateYAxisX[t]:0,r=a.group({class:"apexcharts-yaxis apexcharts-xaxis-inversed",rel:t}),o=a.group({class:"apexcharts-yaxis-texts-g apexcharts-xaxis-inversed-texts-g",transform:"translate("+n+", 0)"});r.add(o);for(var l=[],h=0;h<this.xaxisLabels.length;h++)l.push(this.xaxisLabels[h]);i=-(e=s.globals.gridHeight/l.length)/2.2;var c=s.globals.yLabelFormatters[0],d=s.config.yaxis[0].labels;if(d.show)for(var u=0;u<=l.length-1;u++){var g=void 0===l[u]?"":l[u];g=c(g);var p=a.drawText({x:d.offsetX-15,y:i+e+d.offsetY,text:g,textAnchor:this.yaxis.opposite?"start":"end",foreColor:d.style.color?d.style.color:d.style.colors[u],fontSize:d.style.fontSize,fontFamily:d.style.fontFamily,cssClass:"apexcharts-yaxis-label "+d.style.cssClass});if(o.add(p),0!==s.config.yaxis[t].labels.rotate){var x=a.rotateAroundCenter(p.node);p.node.setAttribute("transform","rotate(".concat(s.config.yaxis[t].labels.rotate," ").concat(x.x," ").concat(x.y,")"))}i+=e}if(void 0!==s.config.yaxis[0].title.text){var b=a.group({class:"apexcharts-yaxis-title apexcharts-xaxis-title-inversed",transform:"translate("+n+", 0)"}),m=a.drawText({x:0,y:s.globals.gridHeight/2,text:s.config.yaxis[0].title.text,textAnchor:"middle",foreColor:s.config.yaxis[0].title.style.color,fontSize:s.config.yaxis[0].title.style.fontSize,fontFamily:s.config.yaxis[0].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+s.config.yaxis[0].title.style.cssClass});b.add(m),r.add(b)}if(s.config.xaxis.axisBorder.show){var v=a.drawLine(s.globals.padHorizontal+s.config.xaxis.axisBorder.offsetX,this.offY,this.xaxisBorderWidth,this.offY,this.yaxis.axisBorder.color,0,this.xaxisBorderHeight);r.add(v),this.axesUtils.drawYAxisTicks(0,l.length,s.config.yaxis[0].axisBorder,s.config.yaxis[0].axisTicks,0,e,r)}return r}},{key:"drawXaxisTicks",value:function(t,e){var i=this.w,s=t;if(!(t<0||t>i.globals.gridWidth)){var a=this.offY+i.config.xaxis.axisTicks.offsetY,n=a+i.config.xaxis.axisTicks.height;if(i.config.xaxis.axisTicks.show){var r=new f(this.ctx).drawLine(t+i.config.xaxis.axisTicks.offsetX,a+i.config.xaxis.offsetY,s+i.config.xaxis.axisTicks.offsetX,n+i.config.xaxis.offsetY,i.config.xaxis.axisTicks.color);e.add(r),r.node.classList.add("apexcharts-xaxis-tick")}}}},{key:"getXAxisTicksPositions",value:function(){var t=this.w,e=[],i=this.xaxisLabels.length,s=t.globals.padHorizontal;if(t.globals.timelineLabels.length>0)for(var a=0;a<i;a++)s=this.xaxisLabels[a].position,e.push(s);else for(var n=i,r=0;r<n;r++){var o=n;t.globals.isXNumeric&&"bar"!==t.config.chart.type&&(o-=1),s+=t.globals.gridWidth/o,e.push(s)}return e}},{key:"xAxisLabelCorrections",value:function(){var t=this.w,e=new f(this.ctx),i=t.globals.dom.baseEl.querySelector(".apexcharts-xaxis-texts-g"),s=t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-texts-g text"),a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis-inversed text"),n=t.globals.dom.baseEl.querySelectorAll(".apexcharts-xaxis-inversed-texts-g text");if(t.globals.rotateXLabels||t.config.xaxis.labels.rotateAlways)for(var r=0;r<s.length;r++){var o=e.rotateAroundCenter(s[r]);o.y=o.y-1,o.x=o.x+1,s[r].setAttribute("transform","rotate(".concat(t.config.xaxis.labels.rotate," ").concat(o.x," ").concat(o.y,")")),s[r].setAttribute("text-anchor","end");i.setAttribute("transform","translate(0, ".concat(-10,")"));var l=s[r].childNodes;t.config.xaxis.labels.trim&&e.placeTextWithEllipsis(l[0],l[0].textContent,t.config.xaxis.labels.maxHeight-40)}else for(var h=t.globals.gridWidth/t.globals.labels.length,c=0;c<s.length;c++){var d=s[c].childNodes;t.config.xaxis.labels.trim&&"datetime"!==t.config.xaxis.type&&e.placeTextWithEllipsis(d[0],d[0].textContent,h)}if(a.length>0){var u=a[a.length-1].getBBox(),g=a[0].getBBox();u.x<-20&&a[a.length-1].parentNode.removeChild(a[a.length-1]),g.x+g.width>t.globals.gridWidth&&a[0].parentNode.removeChild(a[0]);for(var p=0;p<n.length;p++)e.placeTextWithEllipsis(n[p],n[p].textContent,t.config.yaxis[0].labels.maxWidth-2*parseInt(t.config.yaxis[0].title.style.fontSize)-20)}}}]),t}(),W=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.xaxisFontSize=s.config.xaxis.labels.style.fontSize,this.axisFontFamily=s.config.xaxis.labels.style.fontFamily,this.xaxisForeColors=s.config.xaxis.labels.style.colors,this.xAxisoffX=0,"bottom"===s.config.xaxis.position&&(this.xAxisoffX=s.globals.gridHeight),this.drawnLabels=[],this.axesUtils=new O(i)}return s(t,[{key:"drawYaxis",value:function(t){var e=this.w,i=new f(this.ctx),s=e.config.yaxis[t].labels.style.fontSize,a=e.config.yaxis[t].labels.style.fontFamily,n=i.group({class:"apexcharts-yaxis",rel:t,transform:"translate("+e.globals.translateYAxisX[t]+", 0)"});if(!e.config.yaxis[t].show)return n;var r=i.group({class:"apexcharts-yaxis-texts-g"});n.add(r);var o=e.globals.yAxisScale[t].result.length-1,l=e.globals.gridHeight/o+.1,h=e.globals.translateY,c=e.globals.yLabelFormatters[t],d=e.globals.yAxisScale[t].result.slice();if(e.config.yaxis[t]&&e.config.yaxis[t].reversed&&d.reverse(),e.config.yaxis[t].labels.show)for(var u=o;u>=0;u--){var g=d[u];g=c(g,u);var p=e.config.yaxis[t].labels.padding;e.config.yaxis[t].opposite&&0!==e.config.yaxis.length&&(p*=-1);var x=i.drawText({x:p,y:h+o/10+e.config.yaxis[t].labels.offsetY+1,text:g,textAnchor:e.config.yaxis[t].opposite?"start":"end",fontSize:s,fontFamily:a,foreColor:e.config.yaxis[t].labels.style.color,cssClass:"apexcharts-yaxis-label "+e.config.yaxis[t].labels.style.cssClass});r.add(x);var b=i.rotateAroundCenter(x.node);0!==e.config.yaxis[t].labels.rotate&&x.node.setAttribute("transform","rotate(".concat(e.config.yaxis[t].labels.rotate," ").concat(b.x," ").concat(b.y,")")),h+=l}if(void 0!==e.config.yaxis[t].title.text){var m=i.group({class:"apexcharts-yaxis-title"}),v=0;e.config.yaxis[t].opposite&&(v=e.globals.translateYAxisX[t]);var y=i.drawText({x:v,y:e.globals.gridHeight/2+e.globals.translateY,text:e.config.yaxis[t].title.text,textAnchor:"end",foreColor:e.config.yaxis[t].title.style.color,fontSize:e.config.yaxis[t].title.style.fontSize,fontFamily:e.config.yaxis[t].title.style.fontFamily,cssClass:"apexcharts-yaxis-title-text "+e.config.yaxis[t].title.style.cssClass});m.add(y),n.add(m)}var w=e.config.yaxis[t].axisBorder;if(w.show){var k=31+w.offsetX;e.config.yaxis[t].opposite&&(k=-31-w.offsetX);var A=i.drawLine(k,e.globals.translateY+w.offsetY-2,k,e.globals.gridHeight+e.globals.translateY+w.offsetY+2,w.color);n.add(A),this.axesUtils.drawYAxisTicks(k,o,w,e.config.yaxis[t].axisTicks,t,l,n)}return n}},{key:"drawYaxisInversed",value:function(t){var e=this.w,i=new f(this.ctx),s=i.group({class:"apexcharts-xaxis apexcharts-yaxis-inversed"}),a=i.group({class:"apexcharts-xaxis-texts-g",transform:"translate(".concat(e.globals.translateXAxisX,", ").concat(e.globals.translateXAxisY,")")});s.add(a);var n=e.globals.yAxisScale[t].result.length-1,r=e.globals.gridWidth/n+.1,o=r+e.config.xaxis.labels.offsetX,l=e.globals.xLabelFormatter,h=e.globals.yAxisScale[t].result.slice(),c=e.globals.invertedTimelineLabels;c.length>0&&(this.xaxisLabels=c.slice(),n=(h=c.slice()).length),e.config.yaxis[t]&&e.config.yaxis[t].reversed&&h.reverse();var d=c.length;if(e.config.xaxis.labels.show)for(var u=d?0:n;d?u<d-1:u>=0;d?u++:u--){var g=h[u];g=l(g,u);var p=e.globals.gridWidth+e.globals.padHorizontal-(o-r+e.config.xaxis.labels.offsetX);if(c.length){var x=this.axesUtils.getLabel(h,c,p,u,this.drawnLabels);p=x.x,g=x.text,this.drawnLabels.push(x.text)}var b=i.drawText({x:p,y:this.xAxisoffX+e.config.xaxis.labels.offsetY+30,text:"",textAnchor:"middle",foreColor:Array.isArray(this.xaxisForeColors)?this.xaxisForeColors[t]:this.xaxisForeColors,fontSize:this.xaxisFontSize,fontFamily:this.xaxisFontFamily,cssClass:"apexcharts-xaxis-label "+e.config.xaxis.labels.style.cssClass});a.add(b),b.tspan(g);var m=document.createElementNS(e.globals.SVGNS,"title");m.textContent=g,b.node.appendChild(m),o+=r}if(void 0!==e.config.xaxis.title.text){var v=i.group({class:"apexcharts-xaxis-title apexcharts-yaxis-title-inversed"}),y=i.drawText({x:e.globals.gridWidth/2,y:this.xAxisoffX+parseInt(this.xaxisFontSize)+parseInt(e.config.xaxis.title.style.fontSize)+20,text:e.config.xaxis.title.text,textAnchor:"middle",fontSize:e.config.xaxis.title.style.fontSize,fontFamily:e.config.xaxis.title.style.fontFamily,cssClass:"apexcharts-xaxis-title-text "+e.config.xaxis.title.style.cssClass});v.add(y),s.add(v)}var w=e.config.yaxis[t].axisBorder;if(w.show){var k=i.drawLine(e.globals.padHorizontal+w.offsetX,1+w.offsetY,e.globals.padHorizontal+w.offsetX,e.globals.gridHeight+w.offsetY,w.color);s.add(k)}return s}},{key:"yAxisTitleRotate",value:function(t,e){var i=this.w,s=new f(this.ctx),a={width:0,height:0},n={width:0,height:0},r=i.globals.dom.baseEl.querySelector(" .apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-texts-g"));null!==r&&(a=r.getBoundingClientRect());var o=i.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(t,"'] .apexcharts-yaxis-title text"));if(null!==o&&(n=o.getBoundingClientRect()),null!==o){var l=this.xPaddingForYAxisTitle(t,a,n,e);o.setAttribute("x",l.xPos-(e?10:0))}if(null!==o){var h=s.rotateAroundCenter(o);e?o.setAttribute("transform","rotate(".concat(i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")")):o.setAttribute("transform","rotate(-".concat(i.config.yaxis[t].title.rotate," ").concat(h.x," ").concat(h.y,")"))}}},{key:"xPaddingForYAxisTitle",value:function(t,e,i,s){var a=this.w,n=0,r=0,o=10;return void 0===a.config.yaxis[t].title.text||t<0?{xPos:r,padd:0}:(s?(r=e.width+a.config.yaxis[t].title.offsetX+i.width/2+o/2,0===(n+=1)&&(r-=o/2)):(r=-1*e.width+a.config.yaxis[t].title.offsetX+o/2+i.width/2,a.globals.isBarHorizontal&&(o=25,r=-1*e.width-a.config.yaxis[t].title.offsetX-o)),{xPos:r,padd:o})}},{key:"setYAxisXPosition",value:function(t,e){var i=this.w,s=0,a=0,n=21,r=1;i.config.yaxis.length>1&&(this.multipleYs=!0),i.config.yaxis.map(function(o,l){var h=i.globals.ignoreYAxisIndexes.indexOf(l)>-1||!o.show||o.floating||0===t[l].width,c=t[l].width+e[l].width;o.opposite?i.globals.isBarHorizontal?(a=i.globals.gridWidth+i.globals.translateX-1,i.globals.translateYAxisX[l]=a-o.labels.offsetX):(a=i.globals.gridWidth+i.globals.translateX+r,h||(r=r+c+20),i.globals.translateYAxisX[l]=a-o.labels.offsetX+20):(s=i.globals.translateX-n,h||(n=n+c+20),i.globals.translateYAxisX[l]=s+o.labels.offsetX)})}},{key:"setYAxisTextAlignments",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis");(e=d.listToArray(e)).forEach(function(e,i){var s=t.config.yaxis[i];if(void 0!==s.labels.align){var a=t.globals.dom.baseEl.querySelector(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-texts-g")),n=t.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxis[rel='".concat(i,"'] .apexcharts-yaxis-label"));n=d.listToArray(n);var r=a.getBoundingClientRect();"left"===s.labels.align?(n.forEach(function(t,e){t.setAttribute("text-anchor","start")}),s.opposite||a.setAttribute("transform","translate(-".concat(r.width,", 0)"))):"center"===s.labels.align?(n.forEach(function(t,e){t.setAttribute("text-anchor","middle")}),a.setAttribute("transform","translate(".concat(r.width/2*(s.opposite?1:-1),", 0)"))):"right"===s.labels.align&&(n.forEach(function(t,e){t.setAttribute("text-anchor","end")}),s.opposite&&a.setAttribute("transform","translate(".concat(r.width,", 0)")))}})}}]),t}(),B=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"niceScale",value:function(t,e,i){var s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:0,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:10,n=this.w,r=void 0===this.w.config.yaxis[s].max&&void 0===this.w.config.yaxis[s].min||this.w.config.yaxis[s].forceNiceScale;if(t===Number.MIN_VALUE&&0===e||!d.isNumber(t)&&!d.isNumber(e)||t===Number.MIN_VALUE&&e===-Number.MAX_VALUE)return t=0,e=a,this.linearScale(t,e,a);t>e?(console.warn("yaxis.min cannot be greater than yaxis.max"),e=t+.1):t===e&&(t=0===t?0:t-.5,e=0===e?2:e+.5);var o=[],l=Math.abs(e-t);l<1&&r&&("candlestick"===n.config.chart.type||"candlestick"===n.config.series[s].type||n.globals.isRangeData)&&(e*=1.01),l<1e-5&&r&&e<10?e*=1.05:i>.1&&i<3&&r&&(e+=i/3);var h=a+1;h<2?h=2:h>2&&(h-=2);for(var c=l/h,u=Math.floor(d.log10(c)),g=Math.pow(10,u),f=parseInt(c/g)*g,p=f*Math.floor(t/f),x=f*Math.ceil(e/f),b=p;o.push(b),!((b+=f)>x););if(r)return{result:o,niceMin:o[0],niceMax:o[o.length-1]};var m=t;(o=[]).push(m);for(var v=Math.abs(e-t)/a,y=0;y<=a-1;y++)m+=v,o.push(m);return{result:o,niceMin:o[0],niceMax:o[o.length-1]}}},{key:"linearScale",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:10,s=Math.abs(e-t)/i;i===Number.MAX_VALUE&&(i=10,s=1);for(var a=[],n=t;i>=0;)a.push(n),n+=s,i-=1;return{result:a,niceMin:a[0],niceMax:a[a.length-1]}}},{key:"logarithmicScale",value:function(t,e,i,s){(e<0||e===Number.MIN_VALUE)&&(e=.01);for(var a=Math.log(e)/Math.log(10),n=Math.log(i)/Math.log(10),r=Math.abs(i-e)/s,o=[],l=e;s>=0;)o.push(l),l+=r,s-=1;var h=o.map(function(t,s){t<=0&&(t=.01);var r=(n-a)/(i-e),o=Math.pow(10,a+r*(t-a));return Math.round(o/d.roundToBase(o,10))*d.roundToBase(o,10)});return 0===h[0]&&(h[0]=1),{result:h,niceMin:h[0],niceMax:h[h.length-1]}}},{key:"setYScaleForIndex",value:function(t,e,i){var s=this.w.globals,a=this.w.config,n=s.isBarHorizontal?a.xaxis:a.yaxis[t];if(void 0===s.yAxisScale[t]&&(s.yAxisScale[t]=[]),n.logarithmic)s.allSeriesCollapsed=!1,s.yAxisScale[t]=this.logarithmicScale(t,e,i,n.tickAmount?n.tickAmount:Math.floor(Math.log10(i)));else if(i!==-Number.MAX_VALUE&&d.isNumber(i))if(s.allSeriesCollapsed=!1,void 0===n.min&&void 0===n.max||n.forceNiceScale){var r=Math.abs(i-e);s.yAxisScale[t]=this.niceScale(e,i,r,t,n.tickAmount?n.tickAmount:r<5&&r>1?r+1:5)}else s.yAxisScale[t]=this.linearScale(e,i,n.tickAmount);else s.yAxisScale[t]=this.linearScale(0,5,5)}},{key:"setMultipleYScales",value:function(){var t=this,e=this.w.globals,i=this.w.config,s=e.minYArr.concat([]),a=e.maxYArr.concat([]),n=[];i.yaxis.forEach(function(r,o){var l=o;i.series.forEach(function(t,i){t.name===r.seriesName&&-1===e.collapsedSeriesIndices.indexOf(i)&&(l=i,o!==i?n.push({index:i,similarIndex:o,alreadyExists:!0}):n.push({index:i}))});var h=s[l],c=a[l];t.setYScaleForIndex(o,h,c)}),this.sameScaleInMultipleAxes(s,a,n)}},{key:"sameScaleInMultipleAxes",value:function(t,e,i){var s=this,a=this.w.config,n=this.w.globals,r=[];i.forEach(function(t){t.alreadyExists&&(void 0===r[t.index]&&(r[t.index]=[]),r[t.index].push(t.index),r[t.index].push(t.similarIndex))}),r.forEach(function(t,e){r.forEach(function(i,s){var a,n;e!==s&&(a=t,n=i,a.filter(function(t){return-1!==n.indexOf(t)})).length>0&&(r[e]=r[e].concat(r[s]))})});var o=r.map(function(t){return t.filter(function(e,i){return t.indexOf(e)===i})}).map(function(t){return t.sort()});r=r.filter(function(t){return!!t});var l=o.slice(),h=l.map(function(t){return JSON.stringify(t)});l=l.filter(function(t,e){return h.indexOf(JSON.stringify(t))===e});var c=[],d=[];t.forEach(function(t,i){l.forEach(function(s,a){s.indexOf(i)>-1&&(void 0===c[a]&&(c[a]=[],d[a]=[]),c[a].push({key:i,value:t}),d[a].push({key:i,value:e[i]}))})});var u=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,Number.MIN_VALUE),g=Array.apply(null,Array(l.length)).map(Number.prototype.valueOf,-Number.MAX_VALUE);c.forEach(function(t,e){t.forEach(function(t,i){u[e]=Math.min(t.value,u[e])})}),d.forEach(function(t,e){t.forEach(function(t,i){g[e]=Math.max(t.value,g[e])})}),t.forEach(function(t,e){d.forEach(function(t,i){var r=u[i],o=g[i];t.forEach(function(i,l){t[l].key===e&&(void 0!==a.yaxis[e].min&&(r="function"==typeof a.yaxis[e].min?a.yaxis[e].min(n.minY):a.yaxis[e].min),void 0!==a.yaxis[e].max&&(o="function"==typeof a.yaxis[e].max?a.yaxis[e].max(n.maxY):a.yaxis[e].max),s.setYScaleForIndex(e,r,o))})})})}},{key:"autoScaleY",value:function(t,e){t||(t=this);var i=[];return t.w.config.series.forEach(function(t){var s,a,n=t.data.find(function(t){return t[0]>=e.xaxis.min})[1];a=s=n,t.data.forEach(function(t){t[0]<=e.xaxis.max&&t[0]>=e.xaxis.min&&(t[1]>a&&null!==t[1]&&(a=t[1]),t[1]<s&&null!==t[1]&&(s=t[1]))}),s*=.95,a*=1.05,i.push({min:s,max:a})}),i}}]),t}(),V=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.scales=new B(i)}return s(t,[{key:"init",value:function(){this.setYRange(),this.setXRange(),this.setZRange()}},{key:"getMinYMaxY",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Number.MAX_VALUE,i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:-Number.MAX_VALUE,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w.globals,n=-Number.MAX_VALUE,r=Number.MIN_VALUE;null===s&&(s=t+1);var o=a.series,l=o,h=o;"candlestick"===this.w.config.chart.type?(l=a.seriesCandleL,h=a.seriesCandleH):a.isRangeData&&(l=a.seriesRangeStart,h=a.seriesRangeEnd);for(var c=t;c<s;c++){a.dataPoints=Math.max(a.dataPoints,o[c].length);for(var u=0;u<a.series[c].length;u++){var g=o[c][u];null!==g&&d.isNumber(g)?(n=Math.max(n,h[c][u]),e=Math.min(e,l[c][u]),i=Math.max(i,l[c][u]),"candlestick"===this.w.config.chart.type&&(n=Math.max(n,a.seriesCandleO[c][u]),n=Math.max(n,a.seriesCandleH[c][u]),n=Math.max(n,a.seriesCandleL[c][u]),i=n=Math.max(n,a.seriesCandleC[c][u])),d.isFloat(g)&&(g=d.noExponents(g),a.yValueDecimal=Math.max(a.yValueDecimal,g.toString().split(".")[1].length)),r>l[c][u]&&l[c][u]<0&&(r=l[c][u])):a.hasNullValues=!0}}return{minY:r,maxY:n,lowestY:e,highestY:i}}},{key:"setYRange",value:function(){var t=this.w.globals,e=this.w.config;t.maxY=-Number.MAX_VALUE,t.minY=Number.MIN_VALUE;var i=Number.MAX_VALUE;if(t.isMultipleYAxis)for(var s=0;s<t.series.length;s++){var a=this.getMinYMaxY(s,i,null,s+1);t.minYArr.push(a.minY),t.maxYArr.push(a.maxY),i=a.lowestY}var n=this.getMinYMaxY(0,i,null,t.series.length);if(t.minY=n.minY,t.maxY=n.maxY,i=n.lowestY,e.chart.stacked){for(var r=[],o=[],l=0;l<t.series[t.maxValsInArrayIndex].length;l++)for(var h=0,c=0,u=0;u<t.series.length;u++)null!==t.series[u][l]&&d.isNumber(t.series[u][l])&&(t.series[u][l]>0?h=h+parseFloat(t.series[u][l])+1e-4:c+=parseFloat(t.series[u][l])),u===t.series.length-1&&(r.push(h),o.push(c));for(var g=0;g<r.length;g++)t.maxY=Math.max(t.maxY,r[g]),t.minY=Math.min(t.minY,o[g])}if(("line"===e.chart.type||"area"===e.chart.type||"candlestick"===e.chart.type)&&t.minY===Number.MIN_VALUE&&i!==-Number.MAX_VALUE&&i!==t.maxY){var f=t.maxY-i;i>=0&&i<=10&&(f=0),t.minY=i-5*f/100,t.maxY=t.maxY+5*f/100}return e.yaxis.map(function(e,i){void 0!==e.max&&("number"==typeof e.max?t.maxYArr[i]=e.max:"function"==typeof e.max&&(t.maxYArr[i]=e.max(t.maxY)),t.maxY=t.maxYArr[i]),void 0!==e.min&&("number"==typeof e.min?t.minYArr[i]=e.min:"function"==typeof e.min&&(t.minYArr[i]=e.min(t.minY)),t.minY=t.minYArr[i])}),t.isBarHorizontal&&(void 0!==e.xaxis.min&&"number"==typeof e.xaxis.min&&(t.minY=e.xaxis.min),void 0!==e.xaxis.max&&"number"==typeof e.xaxis.max&&(t.maxY=e.xaxis.max)),t.isMultipleYAxis?(this.scales.setMultipleYScales(),t.minY=i,t.yAxisScale.forEach(function(e,i){t.minYArr[i]=e.niceMin,t.maxYArr[i]=e.niceMax})):(this.scales.setYScaleForIndex(0,t.minY,t.maxY),t.minY=t.yAxisScale[0].niceMin,t.maxY=t.yAxisScale[0].niceMax,t.minYArr[0]=t.yAxisScale[0].niceMin,t.maxYArr[0]=t.yAxisScale[0].niceMax),{minY:t.minY,maxY:t.maxY,minYArr:t.minYArr,maxYArr:t.maxYArr}}},{key:"setXRange",value:function(){var t,e=this.w.globals,i=this.w.config,s="numeric"===i.xaxis.type||"datetime"===i.xaxis.type||"category"===i.xaxis.type&&!e.noLabelsProvided||e.noLabelsProvided||e.isXNumeric;if(e.isXNumeric)for(var a=0;a<e.series.length;a++)if(e.labels[a])for(var n=0;n<e.labels[a].length;n++)null!==e.labels[a][n]&&d.isNumber(e.labels[a][n])&&(e.maxX=Math.max(e.maxX,e.labels[a][n]),e.initialmaxX=Math.max(e.maxX,e.labels[a][n]),e.minX=Math.min(e.minX,e.labels[a][n]),e.initialminX=Math.min(e.minX,e.labels[a][n]));if(e.noLabelsProvided&&0===i.xaxis.categories.length&&(e.maxX=e.labels[e.labels.length-1],e.initialmaxX=e.labels[e.labels.length-1],e.minX=1,e.initialminX=1),(e.comboChartsHasBars||"candlestick"===i.chart.type||"bar"===i.chart.type&&e.isXNumeric)&&("category"!==i.xaxis.type||e.isXNumeric)){var r=e.minX-e.svgWidth/e.dataPoints*(Math.abs(e.maxX-e.minX)/e.svgWidth)/2;e.minX=r,e.initialminX=r;var o=e.maxX+e.svgWidth/e.dataPoints*(Math.abs(e.maxX-e.minX)/e.svgWidth)/2;e.maxX=o,e.initialmaxX=o}!e.isXNumeric&&!e.noLabelsProvided||i.xaxis.convertedCatToNumeric&&!e.dataFormatXNumeric||(void 0===i.xaxis.tickAmount?(t=Math.round(e.svgWidth/150),"numeric"===i.xaxis.type&&e.dataPoints<20&&(t=e.dataPoints-1),t>e.dataPoints&&0!==e.dataPoints&&(t=e.dataPoints-1)):t="dataPoints"===i.xaxis.tickAmount?e.series[e.maxValsInArrayIndex].length-1:i.xaxis.tickAmount,void 0!==i.xaxis.max&&"number"==typeof i.xaxis.max&&(e.maxX=i.xaxis.max),void 0!==i.xaxis.min&&"number"==typeof i.xaxis.min&&(e.minX=i.xaxis.min),void 0!==i.xaxis.range&&(e.minX=e.maxX-i.xaxis.range),e.minX!==Number.MAX_VALUE&&e.maxX!==-Number.MAX_VALUE?e.xAxisScale=this.scales.linearScale(e.minX,e.maxX,t):(e.xAxisScale=this.scales.linearScale(1,t,t),e.noLabelsProvided&&e.labels.length>0&&(e.xAxisScale=this.scales.linearScale(1,e.labels.length,t-1),e.seriesX=e.labels.slice())),s&&(e.labels=e.xAxisScale.result.slice()));if(e.minX===e.maxX)if("datetime"===i.xaxis.type){var l=new Date(e.minX);l.setDate(l.getDate()-2),e.minX=new Date(l).getTime();var h=new Date(e.maxX);h.setDate(h.getDate()+2),e.maxX=new Date(h).getTime()}else("numeric"===i.xaxis.type||"category"===i.xaxis.type&&!e.noLabelsProvided)&&(e.minX=e.minX-2,e.maxX=e.maxX+2);return e.isXNumeric&&(e.seriesX.forEach(function(t,i){t.forEach(function(t,s){if(s>0){var a=t-e.seriesX[i][s-1];e.minXDiff=Math.min(a,e.minXDiff)}})}),this.calcMinXDiffForTinySeries()),{minX:e.minX,maxX:e.maxX}}},{key:"calcMinXDiffForTinySeries",value:function(){var t=this.w,e=t.globals.labels.length;return 1===t.globals.labels.length?t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e/3:t.globals.minXDiff===Number.MAX_VALUE&&(t.globals.timelineLabels.length>0&&(e=t.globals.timelineLabels.length),e<3&&(e=3),t.globals.minXDiff=(t.globals.maxX-t.globals.minX)/e),t.globals.minXDiff}},{key:"setZRange",value:function(){var t=this.w.globals;if(t.isDataXYZ)for(var e=0;e<t.series.length;e++)if(void 0!==t.seriesZ[e])for(var i=0;i<t.seriesZ[e].length;i++)null!==t.seriesZ[e][i]&&d.isNumber(t.seriesZ[e][i])&&(t.maxZ=Math.max(t.maxZ,t.seriesZ[e][i]),t.minZ=Math.min(t.minZ,t.seriesZ[e][i]))}}]),t}(),G=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getAllSeriesEls",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series")}},{key:"getSeriesByName",value:function(t){return this.w.globals.dom.baseEl.querySelector("[seriesName='".concat(d.escapeString(t),"']"))}},{key:"addCollapsedClassToSeries",value:function(t,e){var i=this.w;function s(i){for(var s=0;s<i.length;s++)i[s].index===e&&t.node.classList.add("apexcharts-series-collapsed")}s(i.globals.collapsedSeries),s(i.globals.ancillaryCollapsedSeries)}},{key:"toggleSeriesOnHover",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(".apexcharts-series");if("mousemove"===t.type){var a=parseInt(e.getAttribute("rel"))-1,n=null;n=i.globals.axisCharts||"radialBar"===i.config.chart.type?i.globals.axisCharts?i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(a,"']")):i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"']")):i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(a+1,"'] path"));for(var r=0;r<s.length;r++)s[r].classList.add("legend-mouseover-inactive");null!==n&&(i.globals.axisCharts||n.parentNode.classList.remove("legend-mouseover-inactive"),n.classList.remove("legend-mouseover-inactive"))}else if("mouseout"===t.type)for(var o=0;o<s.length;o++)s[o].classList.remove("legend-mouseover-inactive")}},{key:"highlightRangeInSeries",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap-rect"),a=function(){for(var t=0;t<s.length;t++)s[t].classList.remove("legend-mouseover-inactive")};if("mousemove"===t.type){var n=parseInt(e.getAttribute("rel"))-1;a(),function(){for(var t=0;t<s.length;t++)s[t].classList.add("legend-mouseover-inactive")}(),function(t){for(var e=0;e<s.length;e++){var i=parseInt(s[e].getAttribute("val"));i>=t.from&&i<=t.to&&s[e].classList.remove("legend-mouseover-inactive")}}(i.config.plotOptions.heatmap.colorScale.ranges[n])}else"mouseout"===t.type&&a()}},{key:"getActiveSeriesIndex",value:function(){var t=this.w,e=0;if(t.globals.series.length>1)for(var i=t.globals.series.map(function(e,i){return e.length>0&&"bar"!==t.config.series[i].type&&"column"!==t.config.series[i].type?i:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:"getActiveConfigSeriesIndex",value:function(){var t=this.w,e=0;if(t.config.series.length>1)for(var i=t.config.series.map(function(t,e){return t.data&&t.data.length>0?e:-1}),s=0;s<i.length;s++)if(-1!==i[s]){e=i[s];break}return e}},{key:"getPreviousPaths",value:function(){var t=this.w;function e(e,i,s){for(var a=e[i].childNodes,n={type:s,paths:[],realIndex:e[i].getAttribute("data:realIndex")},r=0;r<a.length;r++)if(a[r].hasAttribute("pathTo")){var o=a[r].getAttribute("pathTo");n.paths.push({d:o})}t.globals.previousPaths.push(n)}t.globals.previousPaths=[];var i=t.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-series");if(i.length>0)for(var s=i.length-1;s>=0;s--)e(i,s,"line");var a=t.globals.dom.baseEl.querySelectorAll(".apexcharts-area-series .apexcharts-series");if(a.length>0)for(var n=a.length-1;n>=0;n--)e(a,n,"area");var r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series .apexcharts-series");if(r.length>0)for(var o=0;o<r.length;o++)e(r,o,"bar");var l=t.globals.dom.baseEl.querySelectorAll(".apexcharts-candlestick-series .apexcharts-series");if(l.length>0)for(var h=0;h<l.length;h++)e(l,h,"candlestick");var c=t.globals.dom.baseEl.querySelectorAll(".apexcharts-radar-series .apexcharts-series");if(c.length>0)for(var d=0;d<c.length;d++)e(c,d,"radar");var u=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series");if(u.length>0)for(var g=0;g<u.length;g++){for(var f=t.globals.dom.baseEl.querySelectorAll(".apexcharts-bubble-series .apexcharts-series[data\\:realIndex='".concat(g,"'] circle")),p=[],x=0;x<f.length;x++)p.push({x:f[x].getAttribute("cx"),y:f[x].getAttribute("cy"),r:f[x].getAttribute("r")});t.globals.previousPaths.push(p)}var b=t.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series");if(b.length>0)for(var m=0;m<b.length;m++){for(var v=t.globals.dom.baseEl.querySelectorAll(".apexcharts-scatter-series .apexcharts-series[data\\:realIndex='".concat(m,"'] circle")),y=[],w=0;w<v.length;w++)y.push({x:v[w].getAttribute("cx"),y:v[w].getAttribute("cy"),r:v[w].getAttribute("r")});t.globals.previousPaths.push(y)}var k=t.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series");if(k.length>0)for(var A=0;A<k.length;A++){for(var S=t.globals.dom.baseEl.querySelectorAll(".apexcharts-heatmap .apexcharts-series[data\\:realIndex='".concat(A,"'] rect")),C=[],L=0;L<S.length;L++)C.push({color:S[L].getAttribute("color")});t.globals.previousPaths.push(C)}t.globals.axisCharts||(t.globals.previousPaths=t.globals.series)}},{key:"handleNoData",value:function(){var t=this.w,e=t.config.noData,i=new f(this.ctx),s=t.globals.svgWidth/2,a=t.globals.svgHeight/2,n="middle";if(t.globals.noData=!0,t.globals.animationEnded=!0,"left"===e.align?(s=10,n="start"):"right"===e.align&&(s=t.globals.svgWidth-10,n="end"),"top"===e.verticalAlign?a=50:"bottom"===e.verticalAlign&&(a=t.globals.svgHeight-50),s+=e.offsetX,a=a+parseInt(e.style.fontSize)+2,void 0!==e.text&&""!==e.text){var r=i.drawText({x:s,y:a,text:e.text,textAnchor:n,fontSize:e.style.fontSize,fontFamily:e.style.fontFamily,foreColor:e.style.color,opacity:1,class:"apexcharts-text-nodata"});r.node.setAttribute("class","apexcharts-title-text"),t.globals.dom.Paper.add(r)}}},{key:"setNullSeriesToZeroValues",value:function(t){for(var e=this.w,i=0;i<t.length;i++)if(0===t[i].length)for(var s=0;s<t[e.globals.maxValsInArrayIndex].length;s++)t[i].push(0);return t}},{key:"hasAllSeriesEqualX",value:function(){for(var t=!0,e=this.w,i=this.filteredSeriesX(),s=0;s<i.length-1;s++)if(i[s][0]!==i[s+1][0]){t=!1;break}return e.globals.allSeriesHasEqualX=t,t}},{key:"filteredSeriesX",value:function(){var t=this.w.globals.seriesX.map(function(t,e){return t.length>0?t:[]});return t}}]),t}(),_=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.lgRect={},this.yAxisWidth=0,this.xAxisHeight=0,this.isSparkline=this.w.config.chart.sparkline.enabled,this.xPadRight=0,this.xPadLeft=0}return s(t,[{key:"plotCoords",value:function(){var t=this.w,e=t.globals,i=this.getLegendsRect();e.axisCharts?this.setGridCoordsForAxisCharts(i):this.setGridCoordsForNonAxisCharts(i),this.titleSubtitleOffset(),e.gridHeight=e.gridHeight-t.config.grid.padding.top-t.config.grid.padding.bottom,e.gridWidth=e.gridWidth-t.config.grid.padding.left-t.config.grid.padding.right-this.xPadRight-this.xPadLeft,e.translateX=e.translateX+t.config.grid.padding.left+this.xPadLeft,e.translateY=e.translateY+t.config.grid.padding.top}},{key:"conditionalChecksForAxisCoords",value:function(t,e){var i=this.w;this.xAxisHeight=(t.height+e.height)*i.globals.LINE_HEIGHT_RATIO+15,this.xAxisWidth=t.width,this.xAxisHeight-e.height>i.config.xaxis.labels.maxHeight&&(this.xAxisHeight=i.config.xaxis.labels.maxHeight),i.config.xaxis.labels.minHeight&&this.xAxisHeight<i.config.xaxis.labels.minHeight&&(this.xAxisHeight=i.config.xaxis.labels.minHeight),i.config.xaxis.floating&&(this.xAxisHeight=0),i.globals.isBarHorizontal?this.yAxisWidth=i.globals.yLabelsCoords[0].width+i.globals.yTitleCoords[0].width+15:this.yAxisWidth=this.getTotalYAxisWidth();var s=0,a=0;i.config.yaxis.forEach(function(t){s+=t.labels.minWidth,a+=t.labels.maxWidth}),this.yAxisWidth<s&&(this.yAxisWidth=s),this.yAxisWidth>a&&(this.yAxisWidth=a)}},{key:"setGridCoordsForAxisCharts",value:function(t){var e=this.w,i=e.globals,s=this.getyAxisLabelsCoords(),a=this.getxAxisLabelsCoords(),n=this.getyAxisTitleCoords(),r=this.getxAxisTitleCoords();e.globals.yLabelsCoords=[],e.globals.yTitleCoords=[],e.config.yaxis.map(function(t,i){e.globals.yLabelsCoords.push({width:s[i].width,index:i}),e.globals.yTitleCoords.push({width:n[i].width,index:i})}),this.conditionalChecksForAxisCoords(a,r),i.translateXAxisY=e.globals.rotateXLabels?this.xAxisHeight/8:-4,i.translateXAxisX=e.globals.rotateXLabels&&e.globals.isXNumeric&&e.config.xaxis.labels.rotate<=-45?-this.xAxisWidth/4:0,e.globals.isBarHorizontal&&(i.rotateXLabels=!1,i.translateXAxisY=parseInt(e.config.xaxis.labels.style.fontSize)/1.5*-1),i.translateXAxisY=i.translateXAxisY+e.config.xaxis.labels.offsetY,i.translateXAxisX=i.translateXAxisX+e.config.xaxis.labels.offsetX;var o=this.yAxisWidth,l=this.xAxisHeight;i.xAxisLabelsHeight=this.xAxisHeight,i.xAxisHeight=this.xAxisHeight;var h=10;switch(e.config.grid.show&&"radar"!==e.config.chart.type||(o=0,l=35),this.isSparkline&&(t={height:0,width:0},l=0,o=0,h=0),this.additionalPaddingXLabels(a),e.config.legend.position){case"bottom":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case"top":i.translateY=t.height+h,i.translateX=o,i.gridHeight=i.svgHeight-t.height-l-(this.isSparkline?0:e.globals.rotateXLabels?10:15),i.gridWidth=i.svgWidth-o;break;case"left":i.translateY=h,i.translateX=t.width+o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o;break;case"right":i.translateY=h,i.translateX=o,i.gridHeight=i.svgHeight-l-12,i.gridWidth=i.svgWidth-t.width-o-5;break;default:throw new Error("Legend position not supported")}this.setGridXPosForDualYAxis(n,s),new W(this.ctx).setYAxisXPosition(s,n)}},{key:"setGridCoordsForNonAxisCharts",value:function(t){var e=this.w,i=e.globals,s=0;e.config.legend.show&&!e.config.legend.floating&&(s=20);var a=10,n=0;if("pie"===e.config.chart.type||"donut"===e.config.chart.type?(a+=e.config.plotOptions.pie.offsetY,n+=e.config.plotOptions.pie.offsetX):"radialBar"===e.config.chart.type&&(a+=e.config.plotOptions.radialBar.offsetY,n+=e.config.plotOptions.radialBar.offsetX),!e.config.legend.show)return i.gridHeight=i.svgHeight-35,i.gridWidth=i.gridHeight,i.translateY=a-10,void(i.translateX=n+(i.svgWidth-i.gridWidth)/2);switch(e.config.legend.position){case"bottom":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=a-20,i.translateX=n+(i.svgWidth-i.gridWidth)/2;break;case"top":i.gridHeight=i.svgHeight-t.height-35,i.gridWidth=i.gridHeight,i.translateY=t.height+a,i.translateX=n+(i.svgWidth-i.gridWidth)/2;break;case"left":i.gridWidth=i.svgWidth-t.width-s,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=n+t.width+s;break;case"right":i.gridWidth=i.svgWidth-t.width-s-5,i.gridHeight=i.gridWidth,i.translateY=a,i.translateX=n+10;break;default:throw new Error("Legend position not supported")}}},{key:"setGridXPosForDualYAxis",value:function(t,e){var i=this.w;i.config.yaxis.map(function(s,a){-1===i.globals.ignoreYAxisIndexes.indexOf(a)&&!i.config.yaxis[a].floating&&i.config.yaxis[a].show&&s.opposite&&(i.globals.translateX=i.globals.translateX-(e[a].width+t[a].width)-parseInt(i.config.yaxis[a].labels.style.fontSize)/1.2-12)})}},{key:"additionalPaddingXLabels",value:function(t){var e=this,i=this.w;if("category"===i.config.xaxis.type&&i.globals.isBarHorizontal||"numeric"===i.config.xaxis.type||"datetime"===i.config.xaxis.type){var s=i.globals.isXNumeric;i.config.yaxis.forEach(function(a,n){var r;(!a.show||a.floating||-1!==i.globals.collapsedSeriesIndices.indexOf(n)||s||a.opposite&&i.globals.isBarHorizontal)&&((s&&i.globals.isMultipleYAxis&&-1!==i.globals.collapsedSeriesIndices.indexOf(n)||i.globals.isBarHorizontal&&a.opposite)&&(r=t,i.config.grid.padding.left<r.width&&(e.xPadLeft=r.width/2+1)),(!i.globals.isBarHorizontal&&a.opposite&&-1!==i.globals.collapsedSeriesIndices.indexOf(n)||s&&!i.globals.isMultipleYAxis)&&function(t){e.timescaleLabels?e.timescaleLabels[e.timescaleLabels.length-1].position+t.width>i.globals.gridWidth?i.globals.skipLastTimelinelabel=!0:i.globals.skipLastTimelinelabel=!1:"datetime"!==i.config.xaxis.type&&i.config.grid.padding.right<t.width&&(e.xPadRight=t.width/2+1)}(t))})}}},{key:"titleSubtitleOffset",value:function(){var t=this.w,e=t.globals,i=this.isSparkline||!t.globals.axisCharts?0:10;void 0!==t.config.title.text?i+=t.config.title.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,void 0!==t.config.subtitle.text?i+=t.config.subtitle.margin:i+=this.isSparkline||!t.globals.axisCharts?0:5,t.config.legend.show&&"bottom"===t.config.legend.position&&!t.config.legend.floating&&t.config.series.length>1&&(i+=10);var s=this.getTitleSubtitleCoords("title"),a=this.getTitleSubtitleCoords("subtitle");e.gridHeight=e.gridHeight-s.height-a.height-i,e.translateY=e.translateY+s.height+a.height+i}},{key:"getTotalYAxisWidth",value:function(){var t=this.w,e=0,i=10,s=function(e){return t.globals.ignoreYAxisIndexes.indexOf(e)>-1};return t.globals.yLabelsCoords.map(function(a,n){var r=t.config.yaxis[n].floating;a.width>0&&!r?(e=e+a.width+i,s(n)&&(e=e-a.width-i)):e+=r||!t.config.yaxis[n].show?0:5}),t.globals.yTitleCoords.map(function(a,n){var r=t.config.yaxis[n].floating;i=parseInt(t.config.yaxis[n].title.style.fontSize),a.width>0&&!r?(e=e+a.width+i,s(n)&&(e=e-a.width-i)):e+=r||!t.config.yaxis[n].show?0:5}),e}},{key:"getxAxisTimeScaleLabelsCoords",value:function(){var t,e=this.w;this.timescaleLabels=e.globals.timelineLabels.slice(),e.globals.isBarHorizontal&&"datetime"===e.config.xaxis.type&&(this.timescaleLabels=e.globals.invertedTimelineLabels.slice());var i=this.timescaleLabels.map(function(t){return t.value}),s=i.reduce(function(t,e){return void 0===t?(console.error("You have possibly supplied invalid Date format. Please supply a valid JavaScript Date"),0):t.length>e.length?t:e},0);return 1.05*(t=new f(this.ctx).getTextRects(s,e.config.xaxis.labels.style.fontSize)).width*i.length>e.globals.gridWidth&&0!==e.config.xaxis.labels.rotate&&(e.globals.overlappingXLabels=!0),t}},{key:"getxAxisLabelsCoords",value:function(){var t,e=this.w,i=e.globals.labels.slice();if(e.globals.timelineLabels.length>0){var s=this.getxAxisTimeScaleLabelsCoords();t={width:s.width,height:s.height}}else{var a="left"!==e.config.legend.position||"right"!==e.config.legend.position||e.config.legend.floating?0:this.lgRect.width,n=e.globals.xLabelFormatter,r=i.reduce(function(t,e){return t.length>e.length?t:e},0);e.globals.isBarHorizontal&&(r=e.globals.yAxisScale[0].result.reduce(function(t,e){return t.length>e.length?t:e},0)),r=new N(this.ctx).xLabelFormat(n,r);var o=new f(this.ctx),l=o.getTextRects(r,e.config.xaxis.labels.style.fontSize);(t={width:l.width,height:l.height}).width*i.length>e.globals.svgWidth-a-this.yAxisWidth&&0!==e.config.xaxis.labels.rotate?e.globals.isBarHorizontal||(e.globals.rotateXLabels=!0,l=o.getTextRects(r,e.config.xaxis.labels.style.fontSize,e.config.xaxis.labels.style.fontFamily,"rotate(".concat(e.config.xaxis.labels.rotate," 0 0)"),!1),t.height=l.height/1.66):e.globals.rotateXLabels=!1}return e.config.xaxis.labels.show||(t={width:0,height:0}),{width:t.width,height:t.height}}},{key:"getyAxisLabelsCoords",value:function(){var t=this,e=this.w,i=[],s=10;return e.config.yaxis.map(function(a,n){if(a.show&&a.labels.show&&e.globals.yAxisScale[n].result.length){var r=e.globals.yLabelFormatters[n],o=r(e.globals.yAxisScale[n].niceMax,-1);if(void 0!==o&&0!==o.length||(o=e.globals.yAxisScale[n].niceMax),e.globals.isBarHorizontal)s=0,o=r(o=e.globals.labels.slice().reduce(function(t,e){return t.length>e.length?t:e},0),-1);var l=new f(t.ctx).getTextRects(o,a.labels.style.fontSize);i.push({width:l.width+s,height:l.height})}else i.push({width:0,height:0})}),i}},{key:"getxAxisTitleCoords",value:function(){var t=this.w,e=0,i=0;if(void 0!==t.config.xaxis.title.text){var s=new f(this.ctx).getTextRects(t.config.xaxis.title.text,t.config.xaxis.title.style.fontSize);e=s.width,i=s.height}return{width:e,height:i}}},{key:"getyAxisTitleCoords",value:function(){var t=this,e=this.w,i=[];return e.config.yaxis.map(function(e,s){if(e.show&&void 0!==e.title.text){var a=new f(t.ctx).getTextRects(e.title.text,e.title.style.fontSize,e.title.style.fontFamily,"rotate(-90 0 0)",!1);i.push({width:a.width,height:a.height})}else i.push({width:0,height:0})}),i}},{key:"getTitleSubtitleCoords",value:function(t){var e=this.w,i=0,s=0,a="title"===t?e.config.title.floating:e.config.subtitle.floating,n=e.globals.dom.baseEl.querySelector(".apexcharts-".concat(t,"-text"));if(null!==n&&!a){var r=n.getBoundingClientRect();i=r.width,s=e.globals.axisCharts?r.height+5:r.height}return{width:i,height:s}}},{key:"getLegendsRect",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(".apexcharts-legend"),i=Object.assign({},d.getBoundingClientRect(e));return null!==e&&!t.config.legend.floating&&t.config.legend.show?this.lgRect={x:i.x,y:i.y,height:i.height,width:0===i.height?0:i.width}:this.lgRect={x:0,y:0,height:0,width:0},this.lgRect}}]),t}(),j=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.timeScaleArray=[]}return s(t,[{key:"calculateTimeScaleTicks",value:function(t,e){var i=this,s=this.w;if(s.globals.allSeriesCollapsed)return s.globals.labels=[],s.globals.timelineLabels=[],[];var a=new m(this.ctx),r=(e-t)/864e5;this.determineInterval(r),s.globals.disableZoomIn=!1,s.globals.disableZoomOut=!1,r<.005?s.globals.disableZoomIn=!0:r>5e4&&(s.globals.disableZoomOut=!0);var o=a.getTimeUnitsfromTimestamp(t,e),l=s.globals.gridWidth/r,h=l/24,c=h/60,d=Math.floor(24*r),u=Math.floor(24*r*60),g=Math.floor(r),f=Math.floor(r/30),p=Math.floor(r/365),x={minMinute:o.minMinute,minHour:o.minHour,minDate:o.minDate,minMonth:o.minMonth,minYear:o.minYear},b={firstVal:x,currentMinute:x.minMinute,currentHour:x.minHour,currentMonthDate:x.minDate,currentDate:x.minDate,currentMonth:x.minMonth,currentYear:x.minYear,daysWidthOnXAxis:l,hoursWidthOnXAxis:h,minutesWidthOnXAxis:c,numberOfMinutes:u,numberOfHours:d,numberOfDays:g,numberOfMonths:f,numberOfYears:p};switch(this.tickInterval){case"years":this.generateYearScale(b);break;case"months":case"half_year":this.generateMonthScale(b);break;case"months_days":case"months_fortnight":case"days":case"week_days":this.generateDayScale(b);break;case"hours":this.generateHourScale(b);break;case"minutes":this.generateMinuteScale(b)}var v=this.timeScaleArray.map(function(t){var e={position:t.position,unit:t.unit,year:t.year,day:t.day?t.day:1,hour:t.hour?t.hour:0,month:t.month+1};return"month"===t.unit?n({},e,{value:t.value+1}):"day"===t.unit||"hour"===t.unit?n({},e,{value:t.value}):"minute"===t.unit?n({},e,{value:t.value,minute:t.value}):t});return v.filter(function(t){var e=1,a=Math.ceil(s.globals.gridWidth/120),n=t.value;void 0!==s.config.xaxis.tickAmount&&(a=s.config.xaxis.tickAmount),v.length>a&&(e=Math.floor(v.length/a));var r=!1,o=!1;switch(i.tickInterval){case"half_year":e=7,"year"===t.unit&&(r=!0);break;case"months":e=1,"year"===t.unit&&(r=!0);break;case"months_fortnight":e=15,"year"!==t.unit&&"month"!==t.unit||(r=!0),30===n&&(o=!0);break;case"months_days":e=10,"month"===t.unit&&(r=!0),30===n&&(o=!0);break;case"week_days":e=8,"month"===t.unit&&(r=!0);break;case"days":e=1,"month"===t.unit&&(r=!0);break;case"hours":"day"===t.unit&&(r=!0);break;case"minutes":n%5!=0&&(o=!0)}if("minutes"===i.tickInterval||"hours"===i.tickInterval){if(!o)return!0}else if((n%e==0||r)&&!o)return!0})}},{key:"recalcDimensionsBasedOnFormat",value:function(t,e){var i=this.w,s=this.formatDates(t),a=this.removeOverlappingTS(s);e?i.globals.invertedTimelineLabels=a.slice():i.globals.timelineLabels=a.slice(),new _(this.ctx).plotCoords()}},{key:"determineInterval",value:function(t){switch(!0){case t>1825:this.tickInterval="years";break;case t>800&&t<=1825:this.tickInterval="half_year";break;case t>180&&t<=800:this.tickInterval="months";break;case t>90&&t<=180:this.tickInterval="months_fortnight";break;case t>60&&t<=90:this.tickInterval="months_days";break;case t>30&&t<=60:this.tickInterval="week_days";break;case t>2&&t<=30:this.tickInterval="days";break;case t>.1&&t<=2:this.tickInterval="hours";break;case t<.1:this.tickInterval="minutes";break;default:this.tickInterval="days"}}},{key:"generateYearScale",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.daysWidthOnXAxis,n=t.numberOfYears,r=e.minYear,o=0,l=new m(this.ctx);if(e.minDate>1&&e.minMonth>0){var h=l.determineRemainingDaysOfYear(e.minYear,e.minMonth,e.minDate);o=(l.determineDaysOfYear(e.minYear)-h+1)*a,r=e.minYear+1,this.timeScaleArray.push({position:o,value:r,unit:"year",year:r,month:d.monthMod(i+1)})}else 1===e.minDate&&0===e.minMonth&&this.timeScaleArray.push({position:o,value:r,unit:"year",year:s,month:d.monthMod(i+1)});for(var c=r,u=o,g=0;g<n;g++)c++,u=l.determineDaysOfYear(c-1)*a+u,this.timeScaleArray.push({position:u,value:c,unit:"year",year:c,month:1})}},{key:"generateMonthScale",value:function(t){var e=t.firstVal,i=t.currentMonthDate,s=t.currentMonth,a=t.currentYear,n=t.daysWidthOnXAxis,r=t.numberOfMonths,o=s,l=0,h=new m(this.ctx),c="month",u=0;if(e.minDate>1){l=(h.determineDaysOfMonths(s+1,e.minYear)-i+1)*n,o=d.monthMod(s+1);var g=a+u,f=d.monthMod(o),p=o;0===o&&(c="year",p=g,f=1,g+=u+=1),this.timeScaleArray.push({position:l,value:p,unit:c,year:g,month:f})}else this.timeScaleArray.push({position:l,value:o,unit:c,year:a,month:d.monthMod(s)});for(var x=o+1,b=l,v=0,y=1;v<r;v++,y++){0===(x=d.monthMod(x))?(c="year",u+=1):c="month";var w=a+Math.floor(x/12)+u;b=h.determineDaysOfMonths(x,w)*n+b;var k=0===x?w:x;this.timeScaleArray.push({position:b,value:k,unit:c,year:w,month:0===x?1:x}),x++}}},{key:"generateDayScale",value:function(t){var e=t.firstVal,i=t.currentMonth,s=t.currentYear,a=t.hoursWidthOnXAxis,n=t.numberOfDays,r=new m(this.ctx),o="day",l=(24-e.minHour)*a,h=e.minDate+1,c=h,u=function(t,e,i){return t>r.determineDaysOfMonths(e+1,i)?(g=1,o="month",c=e+=1,e):e},g=h,f=u(g,i,s);this.timeScaleArray.push({position:l,value:c,unit:o,year:s,month:d.monthMod(f),day:g});for(var p=l,x=0;x<n;x++){o="day",f=u(g+=1,f,s+Math.floor(f/12)+0);var b=s+Math.floor(f/12)+0;p=24*a+p;var v=1===g?d.monthMod(f):g;this.timeScaleArray.push({position:p,value:v,unit:o,year:b,month:d.monthMod(f),day:v})}}},{key:"generateHourScale",value:function(t){var e=t.firstVal,i=t.currentDate,s=t.currentMonth,a=t.currentYear,n=t.minutesWidthOnXAxis,r=t.numberOfHours,o=new m(this.ctx),l="hour",h=function(t,e){return t>o.determineDaysOfMonths(e+1,a)&&(x=1,e+=1),{month:e,date:x}},c=function(t,e){return t>o.determineDaysOfMonths(e+1,a)?e+=1:e},u=60-e.minMinute,g=u*n,f=e.minHour+1,p=f+1;60===u&&(g=0,p=(f=e.minHour)+1);var x=i,b=c(x,s);this.timeScaleArray.push({position:g,value:f,unit:l,day:x,hour:p,year:a,month:d.monthMod(b)});for(var v=g,y=0;y<r;y++){if(l="hour",p>=24)p=0,l="day",b=h(x+=1,b).month,b=c(x,b);var w=a+Math.floor(b/12)+0;v=0===p&&0===y?u*n:60*n+v;var k=0===p?x:p;this.timeScaleArray.push({position:v,value:k,unit:l,hour:p,day:x,year:w,month:d.monthMod(b)}),p++}}},{key:"generateMinuteScale",value:function(t){var e=t.firstVal,i=t.currentMinute,s=t.currentHour,a=t.currentDate,n=t.currentMonth,r=t.currentYear,o=t.minutesWidthOnXAxis,l=t.numberOfMinutes,h=o-(i-e.minMinute),c=e.minMinute+1,u=c+1,g=a,f=n,p=r,x=s;this.timeScaleArray.push({position:h,value:c,unit:"minute",day:g,hour:x,minute:u,year:p,month:d.monthMod(f)});for(var b=h,m=0;m<l;m++){u>=60&&(u=0,24===(x+=1)&&(x=0));var v=r+Math.floor(f/12)+0;b=o+b;var y=u;this.timeScaleArray.push({position:b,value:y,unit:"minute",hour:x,minute:u,day:g,year:v,month:d.monthMod(f)}),u++}}},{key:"createRawDateString",value:function(t,e){var i=t.year;return i+="-"+("0"+t.month.toString()).slice(-2),"day"===t.unit?i+="day"===t.unit?"-"+("0"+e).slice(-2):"-01":i+="-"+("0"+(t.day?t.day:"1")).slice(-2),"hour"===t.unit?i+="hour"===t.unit?"T"+("0"+e).slice(-2):"T00":i+="T"+("0"+(t.hour?t.hour:"0")).slice(-2),i+="minute"===t.unit?":"+("0"+e).slice(-2)+":00.000Z":":00:00.000Z"}},{key:"formatDates",value:function(t){var e=this,i=this.w;return t.map(function(t){var s=t.value.toString(),a=new m(e.ctx),n=e.createRawDateString(t,s),r=new Date(Date.parse(n));if(void 0===i.config.xaxis.labels.format){var o="dd MMM",l=i.config.xaxis.labels.datetimeFormatter;"year"===t.unit&&(o=l.year),"month"===t.unit&&(o=l.month),"day"===t.unit&&(o=l.day),"hour"===t.unit&&(o=l.hour),"minute"===t.unit&&(o=l.minute),s=a.formatDate(r,o,!0,!1)}else s=a.formatDate(r,i.config.xaxis.labels.format);return{dateString:n,position:t.position,value:s,unit:t.unit,year:t.year,month:t.month}})}},{key:"removeOverlappingTS",value:function(t){var e=this,i=new f(this.ctx),s=0,a=t.map(function(a,n){if(n>0&&e.w.config.xaxis.labels.hideOverlappingLabels){var r=i.getTextRects(t[s].value).width,o=t[s].position;return a.position>o+r+10?(s=n,a):null}return a});return a=a.filter(function(t){return null!==t})}}]),t}(),U=function(){function t(i,s){e(this,t),this.ctx=s,this.w=s.w,this.el=i,this.coreUtils=new y(this.ctx),this.twoDSeries=[],this.threeDSeries=[],this.twoDSeriesX=[]}return s(t,[{key:"setupElements",value:function(){var t=this.w.globals,e=this.w.config,i=e.chart.type;t.axisCharts=["line","area","bar","rangeBar","candlestick","radar","scatter","bubble","heatmap"].indexOf(i)>-1,t.xyCharts=["line","area","bar","rangeBar","candlestick","scatter","bubble"].indexOf(i)>-1,t.isBarHorizontal=("bar"===e.chart.type||"rangeBar"===e.chart.type)&&e.plotOptions.bar.horizontal,t.chartClass=".apexcharts"+t.cuid,t.dom.baseEl=this.el,t.dom.elWrap=document.createElement("div"),f.setAttrs(t.dom.elWrap,{id:t.chartClass.substring(1),class:"apexcharts-canvas "+t.chartClass.substring(1)}),this.el.appendChild(t.dom.elWrap),t.dom.Paper=new window.SVG.Doc(t.dom.elWrap),t.dom.Paper.attr({class:"apexcharts-svg","xmlns:data":"ApexChartsNS",transform:"translate(".concat(e.chart.offsetX,", ").concat(e.chart.offsetY,")")}),t.dom.Paper.node.style.background=e.chart.background,this.setSVGDimensions(),t.dom.elGraphical=t.dom.Paper.group().attr({class:"apexcharts-inner apexcharts-graphical"}),t.dom.elDefs=t.dom.Paper.defs(),t.dom.elLegendWrap=document.createElement("div"),t.dom.elLegendWrap.classList.add("apexcharts-legend"),t.dom.elWrap.appendChild(t.dom.elLegendWrap),t.dom.Paper.add(t.dom.elGraphical),t.dom.elGraphical.add(t.dom.elDefs)}},{key:"plotChartType",value:function(t,e){var i=this.w,s=i.config,a=i.globals,n={series:[],i:[]},r={series:[],i:[]},o={series:[],i:[]},l={series:[],i:[]},h={series:[],i:[]};a.series.map(function(e,s){void 0!==t[s].type?("column"===t[s].type||"bar"===t[s].type?(i.config.plotOptions.bar.horizontal=!1,l.series.push(e),l.i.push(s)):"area"===t[s].type?(r.series.push(e),r.i.push(s)):"line"===t[s].type?(n.series.push(e),n.i.push(s)):"scatter"===t[s].type?(o.series.push(e),o.i.push(s)):"bubble"===t[s].type||("candlestick"===t[s].type?(h.series.push(e),h.i.push(s)):console.warn("You have specified an unrecognized chart type. Available types for this propery are line/area/column/bar/scatter/bubble")),a.comboCharts=!0):(n.series.push(e),n.i.push(s))});var c=new D(this.ctx,e),d=new E(this.ctx,e),u=new I(this.ctx),g=new F(this.ctx),f=new R(this.ctx,e),p=new Y(this.ctx),x=[];if(a.comboCharts){if(r.series.length>0&&x.push(c.draw(r.series,"area",r.i)),l.series.length>0)if(i.config.chart.stacked){var b=new M(this.ctx,e);x.push(b.draw(l.series,l.i))}else{var m=new P(this.ctx,e);x.push(m.draw(l.series,l.i))}if(n.series.length>0&&x.push(c.draw(n.series,"line",n.i)),h.series.length>0&&x.push(d.draw(h.series,h.i)),o.series.length>0){var v=new D(this.ctx,e,!0);x.push(v.draw(o.series,"scatter",o.i))}}else switch(s.chart.type){case"line":x=c.draw(a.series,"line");break;case"area":x=c.draw(a.series,"area");break;case"bar":if(s.chart.stacked)x=new M(this.ctx,e).draw(a.series);else x=new P(this.ctx,e).draw(a.series);break;case"candlestick":x=new E(this.ctx,e).draw(a.series);break;case"rangeBar":x=f.draw(a.series);break;case"heatmap":x=new X(this.ctx,e).draw(a.series);break;case"pie":case"donut":x=u.draw(a.series);break;case"radialBar":x=g.draw(a.series);break;case"radar":x=p.draw(a.series);break;default:x=c.draw(a.series)}return x}},{key:"setSVGDimensions",value:function(){var t=this.w.globals,e=this.w.config;t.svgWidth=e.chart.width,t.svgHeight=e.chart.height;var i=d.getDimensions(this.el),s=e.chart.width.toString().split(/[0-9]+/g).pop();if("%"===s?d.isNumber(i[0])&&(0===i[0].width&&(i=d.getDimensions(this.el.parentNode)),t.svgWidth=i[0]*parseInt(e.chart.width)/100):"px"!==s&&""!==s||(t.svgWidth=parseInt(e.chart.width)),"auto"!==t.svgHeight&&""!==t.svgHeight)if("%"===e.chart.height.toString().split(/[0-9]+/g).pop()){var a=d.getDimensions(this.el.parentNode);t.svgHeight=a[1]*parseInt(e.chart.height)/100}else t.svgHeight=parseInt(e.chart.height);else t.axisCharts?t.svgHeight=t.svgWidth/1.61:t.svgHeight=t.svgWidth;f.setAttrs(t.dom.Paper.node,{width:t.svgWidth,height:t.svgHeight});var n=e.chart.sparkline.enabled?0:t.axisCharts?e.chart.parentHeightOffset:0;t.dom.Paper.node.parentNode.parentNode.style.minHeight=t.svgHeight+n+"px",t.dom.elWrap.style.width=t.svgWidth+"px",t.dom.elWrap.style.height=t.svgHeight+"px"}},{key:"shiftGraphPosition",value:function(){var t=this.w.globals,e=t.translateY,i={transform:"translate("+t.translateX+", "+e+")"};f.setAttrs(t.dom.elGraphical.node,i)}},{key:"coreCalculations",value:function(){new V(this.ctx).init()}},{key:"resetGlobals",value:function(){var t=this,e=this.w.globals;e.series=[],e.seriesCandleO=[],e.seriesCandleH=[],e.seriesCandleL=[],e.seriesCandleC=[],e.seriesRangeStart=[],e.seriesRangeEnd=[],e.seriesPercent=[],e.seriesX=[],e.seriesZ=[],e.seriesNames=[],e.seriesTotals=[],e.stackedSeriesTotals=[],e.labels=[],e.timelineLabels=[],e.noLabelsProvided=!1,e.timescaleTicks=[],e.resizeTimer=null,e.selectionResizeTimer=null,e.seriesXvalues=t.w.config.series.map(function(t){return[]}),e.seriesYvalues=t.w.config.series.map(function(t){return[]}),e.delayedElements=[],e.pointsArray=[],e.dataLabelsRects=[],e.isXNumeric=!1,e.isDataXYZ=!1,e.maxY=-Number.MAX_VALUE,e.minY=Number.MIN_VALUE,e.minYArr=[],e.maxYArr=[],e.maxX=-Number.MAX_VALUE,e.minX=Number.MAX_VALUE,e.initialmaxX=-Number.MAX_VALUE,e.initialminX=Number.MAX_VALUE,e.maxDate=0,e.minDate=Number.MAX_VALUE,e.minZ=Number.MAX_VALUE,e.maxZ=-Number.MAX_VALUE,e.minXDiff=Number.MAX_VALUE,e.yAxisScale=[],e.xAxisScale=null,e.xAxisTicksPositions=[],e.yLabelsCoords=[],e.yTitleCoords=[],e.xRange=0,e.yRange=[],e.zRange=0,e.dataPoints=0}},{key:"isMultipleY",value:function(){if(this.w.config.yaxis.constructor===Array&&this.w.config.yaxis.length>1)return this.w.config.chart.stacked=!1,this.w.globals.isMultipleYAxis=!0,!0}},{key:"excludeCollapsedSeriesInYAxis",value:function(){var t=this,e=this.w;e.globals.ignoreYAxisIndexes=e.globals.collapsedSeries.map(function(e,i){if(t.w.globals.isMultipleYAxis)return e.index})}},{key:"isMultiFormat",value:function(){return this.isFormatXY()||this.isFormat2DArray()}},{key:"isFormatXY",value:function(){var t=this.w.config.series.slice(),e=new G(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&null!==t[this.activeSeriesIndex].data[0]&&void 0!==t[this.activeSeriesIndex].data[0].x&&null!==t[this.activeSeriesIndex].data[0])return!0}},{key:"isFormat2DArray",value:function(){var t=this.w.config.series.slice(),e=new G(this.ctx);if(this.activeSeriesIndex=e.getActiveConfigSeriesIndex(),void 0!==t[this.activeSeriesIndex].data&&t[this.activeSeriesIndex].data.length>0&&void 0!==t[this.activeSeriesIndex].data[0]&&null!==t[this.activeSeriesIndex].data[0]&&t[this.activeSeriesIndex].data[0].constructor===Array)return!0}},{key:"handleFormat2DArray",value:function(t,e){for(var i=this.w.config,s=this.w.globals,a=0;a<t[e].data.length;a++)if(void 0!==t[e].data[a][1]&&(Array.isArray(t[e].data[a][1])&&4===t[e].data[a][1].length?this.twoDSeries.push(d.parseNumber(t[e].data[a][1][3])):this.twoDSeries.push(d.parseNumber(t[e].data[a][1])),s.dataFormatXNumeric=!0),"datetime"===i.xaxis.type){var n=new Date(t[e].data[a][0]);n=new Date(n).getTime(),this.twoDSeriesX.push(n)}else this.twoDSeriesX.push(t[e].data[a][0]);for(var r=0;r<t[e].data.length;r++)void 0!==t[e].data[r][2]&&(this.threeDSeries.push(t[e].data[r][2]),s.isDataXYZ=!0)}},{key:"handleFormatXY",value:function(t,e){var i=this.w.config,s=this.w.globals,a=new m(this.ctx),n=e;s.collapsedSeriesIndices.indexOf(e)>-1&&(n=this.activeSeriesIndex);for(var r=0;r<t[e].data.length;r++)void 0!==t[e].data[r].y&&(Array.isArray(t[e].data[r].y)?this.twoDSeries.push(d.parseNumber(t[e].data[r].y[t[e].data[r].y.length-1])):this.twoDSeries.push(d.parseNumber(t[e].data[r].y)));for(var o=0;o<t[n].data.length;o++){var l="string"==typeof t[n].data[o].x,h=!!a.isValidDate(t[n].data[o].x.toString());l||h?l?"datetime"!==i.xaxis.type||s.isRangeData?(this.fallbackToCategory=!0,this.twoDSeriesX.push(t[n].data[o].x)):this.twoDSeriesX.push(a.parseDate(t[n].data[o].x)):"datetime"===i.xaxis.type?this.twoDSeriesX.push(a.parseDate(t[n].data[o].x.toString())):(s.dataFormatXNumeric=!0,s.isXNumeric=!0,this.twoDSeriesX.push(parseFloat(t[n].data[o].x))):(s.isXNumeric=!0,s.dataFormatXNumeric=!0,this.twoDSeriesX.push(t[n].data[o].x))}if(t[e].data[0]&&void 0!==t[e].data[0].z){for(var c=0;c<t[e].data.length;c++)this.threeDSeries.push(t[e].data[c].z);s.isDataXYZ=!0}}},{key:"handleRangeData",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleRangeDataFormat("array",t,e):this.isFormatXY()&&(s=this.handleRangeDataFormat("xy",t,e)),i.seriesRangeStart.push(s.start),i.seriesRangeEnd.push(s.end),s}},{key:"handleCandleStickData",value:function(t,e){var i=this.w.globals,s={};return this.isFormat2DArray()?s=this.handleCandleStickDataFormat("array",t,e):this.isFormatXY()&&(s=this.handleCandleStickDataFormat("xy",t,e)),i.seriesCandleO.push(s.o),i.seriesCandleH.push(s.h),i.seriesCandleL.push(s.l),i.seriesCandleC.push(s.c),s}},{key:"handleRangeDataFormat",value:function(t,e,i){var s=[],a=[],n="Please provide [Start, End] values in valid format. Read more https://apexcharts.com/docs/series/#rangecharts",r=new G(this.ctx).getActiveConfigSeriesIndex();if("array"===t){if(2!==e[r].data[0][1].length)throw new Error(n);for(var o=0;o<e[i].data.length;o++)s.push(e[i].data[o][1][0]),a.push(e[i].data[o][1][1])}else if("xy"===t){if(2!==e[r].data[0].y.length)throw new Error(n);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l].y[0]),a.push(e[i].data[l].y[1])}return{start:s,end:a}}},{key:"handleCandleStickDataFormat",value:function(t,e,i){var s=[],a=[],n=[],r=[],o="Please provide [Open, High, Low and Close] values in valid format. Read more https://apexcharts.com/docs/series/#candlestick";if("array"===t){if(4!==e[i].data[0][1].length)throw new Error(o);for(var l=0;l<e[i].data.length;l++)s.push(e[i].data[l][1][0]),a.push(e[i].data[l][1][1]),n.push(e[i].data[l][1][2]),r.push(e[i].data[l][1][3])}else if("xy"===t){if(4!==e[i].data[0].y.length)throw new Error(o);for(var h=0;h<e[i].data.length;h++)s.push(e[i].data[h].y[0]),a.push(e[i].data[h].y[1]),n.push(e[i].data[h].y[2]),r.push(e[i].data[h].y[3])}return{o:s,h:a,l:n,c:r}}},{key:"parseDataAxisCharts",value:function(t){for(var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.ctx,i=this.w.config,s=this.w.globals,a=new m(e),n=0;n<t.length;n++){if(this.twoDSeries=[],this.twoDSeriesX=[],this.threeDSeries=[],void 0===t[n].data)return void console.error("It is a possibility that you may have not included 'data' property in series.");if("rangeBar"!==i.chart.type&&"rangeArea"!==i.chart.type&&"rangeBar"!==t[n].type&&"rangeArea"!==t[n].type||(s.isRangeData=!0,this.handleRangeData(t,n)),this.isMultiFormat())this.isFormat2DArray()?this.handleFormat2DArray(t,n):this.isFormatXY()&&this.handleFormatXY(t,n),"candlestick"!==i.chart.type&&"candlestick"!==t[n].type||this.handleCandleStickData(t,n),s.series.push(this.twoDSeries),s.labels.push(this.twoDSeriesX),s.seriesX.push(this.twoDSeriesX),this.fallbackToCategory||(s.isXNumeric=!0);else{if("datetime"===i.xaxis.type){s.isXNumeric=!0;for(var r=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice(),o=0;o<r.length;o++)if("string"==typeof r[o]){if(!a.isValidDate(r[o]))throw new Error("You have provided invalid Date format. Please provide a valid JavaScript Date");this.twoDSeriesX.push(a.parseDate(r[o]))}s.seriesX.push(this.twoDSeriesX)}else if("numeric"===i.xaxis.type){s.isXNumeric=!0;var l=i.labels.length>0?i.labels.slice():i.xaxis.categories.slice();l.length>0&&(this.twoDSeriesX=l,s.seriesX.push(this.twoDSeriesX))}s.labels.push(this.twoDSeriesX);var h=t[n].data.map(function(t){return d.parseNumber(t)});s.series.push(h)}s.seriesZ.push(this.threeDSeries),void 0!==t[n].name?s.seriesNames.push(t[n].name):s.seriesNames.push("series-"+parseInt(n+1))}return this.w}},{key:"parseDataNonAxisCharts",value:function(t){var e=this.w.globals,i=this.w.config;e.series=t.slice(),e.seriesNames=i.labels.slice();for(var s=0;s<e.series.length;s++)void 0===e.seriesNames[s]&&e.seriesNames.push("series-"+(s+1));return this.w}},{key:"handleExternalLabelsData",value:function(t){var e=this.w.config,i=this.w.globals;if(e.xaxis.categories.length>0)i.labels=e.xaxis.categories;else if(e.labels.length>0)i.labels=e.labels.slice();else if(this.fallbackToCategory)i.labels=i.labels[0];else{var s=[];if(i.axisCharts){for(var a=0;a<i.series[i.maxValsInArrayIndex].length;a++)s.push(a+1);for(var n=0;n<t.length;n++)i.seriesX.push(s);i.isXNumeric=!0}if(0===s.length){s=[0,10];for(var r=0;r<t.length;r++)i.seriesX.push(s)}i.labels=s,i.noLabelsProvided=!0}}},{key:"parseData",value:function(t){var e=this.w,i=e.config,s=e.globals;if(this.excludeCollapsedSeriesInYAxis(),this.fallbackToCategory=!1,this.resetGlobals(),this.isMultipleY(),s.axisCharts?this.parseDataAxisCharts(t):this.parseDataNonAxisCharts(t),this.coreUtils.getLargestSeries(),"bar"===i.chart.type&&i.chart.stacked){var a=new G(this.ctx);s.series=a.setNullSeriesToZeroValues(s.series)}this.coreUtils.getSeriesTotals(),s.axisCharts&&this.coreUtils.getStackedSeriesTotals(),this.coreUtils.getPercentSeries(),s.dataFormatXNumeric||s.isXNumeric&&("numeric"!==i.xaxis.type||0!==i.labels.length||0!==i.xaxis.categories.length)||this.handleExternalLabelsData(t)}},{key:"xySettings",value:function(){var t=null,e=this.w;if(e.globals.axisCharts){if("back"===e.config.xaxis.crosshairs.position)new T(this.ctx).drawXCrosshairs();if("back"===e.config.yaxis[0].crosshairs.position)new T(this.ctx).drawYCrosshairs();if(t=this.coreUtils.getCalculatedRatios(),"datetime"===e.config.xaxis.type&&void 0===e.config.xaxis.labels.formatter){var i,s=new j(this.ctx);isFinite(e.globals.minX)&&isFinite(e.globals.maxX)&&!e.globals.isBarHorizontal?(i=s.calculateTimeScaleTicks(e.globals.minX,e.globals.maxX),s.recalcDimensionsBasedOnFormat(i,!1)):e.globals.isBarHorizontal&&(i=s.calculateTimeScaleTicks(e.globals.minY,e.globals.maxY),s.recalcDimensionsBasedOnFormat(i,!0))}}return t}},{key:"drawAxis",value:function(t,e){var i,s,a=this.w.globals,n=this.w.config,r=new H(this.ctx),o=new W(this.ctx);a.axisCharts&&"radar"!==t&&(a.isBarHorizontal?(s=o.drawYaxisInversed(0),i=r.drawXaxisInversed(0),a.dom.elGraphical.add(i),a.dom.elGraphical.add(s)):(i=r.drawXaxis(),a.dom.elGraphical.add(i),n.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&(s=o.drawYaxis(e),a.dom.Paper.add(s))})));n.yaxis.map(function(t,e){-1===a.ignoreYAxisIndexes.indexOf(e)&&o.yAxisTitleRotate(e,t.opposite)})}},{key:"setupBrushHandler",value:function(){var t=this,e=this.w;e.config.chart.brush.enabled&&("function"!=typeof e.config.chart.events.selection&&(e.config.chart.brush.targets||[e.config.chart.brush.target]).forEach(function(i){var s=ApexCharts.getChartByID(i);s.w.globals.brushSource=t.ctx;var a=function(){t.ctx._updateOptions({chart:{selection:{xaxis:{min:s.w.globals.minX,max:s.w.globals.maxX}}}},!1,!1)};"function"!=typeof s.w.config.chart.events.zoomed&&(s.w.config.chart.events.zoomed=function(){a()}),"function"!=typeof s.w.config.chart.events.scrolled&&(s.w.config.chart.events.scrolled=function(){a()}),e.config.chart.events.selection=function(t,i){var a=d.clone(e.config.yaxis);e.config.chart.brush.autoScaleYaxis&&(a=new B(s).autoScaleY(s,i));s._updateOptions({xaxis:{min:i.xaxis.min,max:i.xaxis.max},yaxis:a},!1,!1,!1)}}))}}]),t}();var q=setTimeout;function Z(){}function $(t){if(!(this instanceof $))throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("not a function");this._state=0,this._handled=!1,this._value=void 0,this._deferreds=[],it(t,this)}function J(t,e){for(;3===t._state;)t=t._value;0!==t._state?(t._handled=!0,$._immediateFn(function(){var i=1===t._state?e.onFulfilled:e.onRejected;if(null!==i){var s;try{s=i(t._value)}catch(t){return void K(e.promise,t)}Q(e.promise,s)}else(1===t._state?Q:K)(e.promise,t._value)})):t._deferreds.push(e)}function Q(t,e){try{if(e===t)throw new TypeError("A promise cannot be resolved with itself.");if(e&&("object"==typeof e||"function"==typeof e)){var i=e.then;if(e instanceof $)return t._state=3,t._value=e,void tt(t);if("function"==typeof i)return void it((s=i,a=e,function(){s.apply(a,arguments)}),t)}t._state=1,t._value=e,tt(t)}catch(e){K(t,e)}var s,a}function K(t,e){t._state=2,t._value=e,tt(t)}function tt(t){2===t._state&&0===t._deferreds.length&&$._immediateFn(function(){t._handled||$._unhandledRejectionFn(t._value)});for(var e=0,i=t._deferreds.length;e<i;e++)J(t,t._deferreds[e]);t._deferreds=null}function et(t,e,i){this.onFulfilled="function"==typeof t?t:null,this.onRejected="function"==typeof e?e:null,this.promise=i}function it(t,e){var i=!1;try{t(function(t){i||(i=!0,Q(e,t))},function(t){i||(i=!0,K(e,t))})}catch(t){if(i)return;i=!0,K(e,t)}}$.prototype.catch=function(t){return this.then(null,t)},$.prototype.then=function(t,e){var i=new this.constructor(Z);return J(this,new et(t,e,i)),i},$.prototype.finally=function(t){var e=this.constructor;return this.then(function(i){return e.resolve(t()).then(function(){return i})},function(i){return e.resolve(t()).then(function(){return e.reject(i)})})},$.all=function(t){return new $(function(e,i){if(!t||void 0===t.length)throw new TypeError("Promise.all accepts an array");var s=Array.prototype.slice.call(t);if(0===s.length)return e([]);var a=s.length;function n(t,r){try{if(r&&("object"==typeof r||"function"==typeof r)){var o=r.then;if("function"==typeof o)return void o.call(r,function(e){n(t,e)},i)}s[t]=r,0==--a&&e(s)}catch(t){i(t)}}for(var r=0;r<s.length;r++)n(r,s[r])})},$.resolve=function(t){return t&&"object"==typeof t&&t.constructor===$?t:new $(function(e){e(t)})},$.reject=function(t){return new $(function(e,i){i(t)})},$.race=function(t){return new $(function(e,i){for(var s=0,a=t.length;s<a;s++)t[s].then(e,i)})},$._immediateFn="function"==typeof setImmediate&&function(t){setImmediate(t)}||function(t){q(t,0)},$._unhandledRejectionFn=function(t){"undefined"!=typeof console&&console&&console.warn("Possible Unhandled Promise Rejection:",t)};var st,at,nt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"getSvgString",value:function(){return this.w.globals.dom.Paper.svg()}},{key:"cleanup",value:function(){var t=this.w,e=t.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs"),i=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs");e&&e.setAttribute("x",-500),i&&(i.setAttribute("y1",-100),i.setAttribute("y2",-100))}},{key:"svgUrl",value:function(){this.cleanup();var t=this.getSvgString(),e=new Blob([t],{type:"image/svg+xml;charset=utf-8"});return URL.createObjectURL(e)}},{key:"dataURI",value:function(){var t=this;return new $(function(e){var i=t.w;t.cleanup();var s=document.createElement("canvas");s.width=i.globals.svgWidth,s.height=i.globals.svgHeight;var a="transparent"===i.config.chart.background?"#fff":i.config.chart.background,n=s.getContext("2d");n.fillStyle=a,n.fillRect(0,0,s.width,s.height);var r=window.URL||window.webkitURL||window,o=new Image;o.crossOrigin="anonymous";var l=t.getSvgString(),h="data:image/svg+xml,"+encodeURIComponent(l);o.onload=function(){n.drawImage(o,0,0),r.revokeObjectURL(h);var t=s.toDataURL("image/png");e(t)},o.src=h})}},{key:"exportToSVG",value:function(){this.triggerDownload(this.svgUrl(),".svg")}},{key:"exportToPng",value:function(){var t=this;this.dataURI().then(function(e){t.triggerDownload(e,".png")})}},{key:"triggerDownload",value:function(t,e){var i=document.createElement("a");i.href=t,i.download=this.w.globals.chartID+e,document.body.appendChild(i),i.click(),document.body.removeChild(i)}}]),t}(),rt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.anim=new g(this.ctx),this.xaxisLabels=s.globals.labels.slice(),this.animX=s.config.grid.xaxis.lines.animate&&s.config.chart.animations.enabled,this.animY=s.config.grid.yaxis.lines.animate&&s.config.chart.animations.enabled,s.globals.timelineLabels.length>0&&(this.xaxisLabels=s.globals.timelineLabels.slice())}return s(t,[{key:"drawGridArea",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this.w,i=new f(this.ctx);null===t&&(t=i.group({class:"apexcharts-grid"}));var s=i.drawLine(e.globals.padHorizontal,1,e.globals.padHorizontal,e.globals.gridHeight,"transparent"),a=i.drawLine(e.globals.padHorizontal,e.globals.gridHeight,e.globals.gridWidth,e.globals.gridHeight,"transparent");return t.add(a),t.add(s),t}},{key:"drawGrid",value:function(){var t=this.w,e=new H(this.ctx),i=new W(this.ctx),s=this.w.globals,a=null;if(s.axisCharts){if(t.config.grid.show)a=this.renderGrid(),s.dom.elGraphical.add(a.el),this.drawGridArea(a.el);else{var n=this.drawGridArea();s.dom.elGraphical.add(n)}null!==a&&e.xAxisLabelCorrections(a.xAxisTickWidth),i.setYAxisTextAlignments()}}},{key:"createGridMask",value:function(){var t=this.w,e=t.globals,i=new f(this.ctx),s=Array.isArray(t.config.stroke.width)?0:t.config.stroke.width;if(Array.isArray(t.config.stroke.width)){var a=0;t.config.stroke.width.forEach(function(t){a=Math.max(a,t)}),s=a}e.dom.elGridRectMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMask.setAttribute("id","gridRectMask".concat(e.cuid)),e.dom.elGridRectMarkerMask=document.createElementNS(e.SVGNS,"clipPath"),e.dom.elGridRectMarkerMask.setAttribute("id","gridRectMarkerMask".concat(e.cuid)),e.dom.elGridRect=i.drawRect(-s/2,-s/2,e.gridWidth+s,e.gridHeight+s,0,"#fff"),new y(this).getLargestMarkerSize();var n=t.globals.markers.largestSize+1;e.dom.elGridRectMarker=i.drawRect(-n,-n,e.gridWidth+2*n,e.gridHeight+2*n,0,"#fff"),e.dom.elGridRectMask.appendChild(e.dom.elGridRect.node),e.dom.elGridRectMarkerMask.appendChild(e.dom.elGridRectMarker.node);var r=e.dom.baseEl.querySelector("defs");r.appendChild(e.dom.elGridRectMask),r.appendChild(e.dom.elGridRectMarkerMask)}},{key:"renderGrid",value:function(){var t=this.w,e=new f(this.ctx),i=t.config.grid.strokeDashArray,s=e.group({class:"apexcharts-grid"}),a=e.group({class:"apexcharts-gridlines-horizontal"}),n=e.group({class:"apexcharts-gridlines-vertical"});s.add(a),s.add(n);for(var r,o=8,l=0;l<t.globals.series.length&&(void 0!==t.globals.yAxisScale[l]&&(o=t.globals.yAxisScale[l].result.length-1),!(o>2));l++);if(t.globals.isBarHorizontal){if(r=o,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show)for(var h,c=t.globals.padHorizontal,d=t.globals.gridHeight,u=0;u<r+1&&(h=c=c+t.globals.gridWidth/r+.3,u!==r-1);u++){if(t.config.grid.xaxis.lines.show){var g=e.drawLine(c,0,h,d,t.config.grid.borderColor,i);g.node.classList.add("apexcharts-gridline"),n.add(g),this.animX&&this.animateLine(g,{x1:0,x2:0},{x1:c,x2:h})}new H(this.ctx).drawXaxisTicks(c,s)}if(t.config.grid.yaxis.lines.show)for(var p=0,x=0,b=t.globals.gridWidth,m=0;m<t.globals.dataPoints+1;m++){var v=e.drawLine(0,p,b,x,t.config.grid.borderColor,i);a.add(v),v.node.classList.add("apexcharts-gridline"),this.animY&&this.animateLine(v,{y1:p+20,y2:x+20},{y1:p,y2:x}),x=p+=t.globals.gridHeight/t.globals.dataPoints}}else{if(r=this.xaxisLabels.length,t.config.grid.xaxis.lines.show||t.config.xaxis.axisTicks.show){var y,w=t.globals.padHorizontal,k=t.globals.gridHeight;if(t.globals.timelineLabels.length>0)for(var A=0;A<r;A++){if(w=this.xaxisLabels[A].position,y=this.xaxisLabels[A].position,t.config.grid.xaxis.lines.show&&w>0&&w<t.globals.gridWidth){var S=e.drawLine(w,0,y,k,t.config.grid.borderColor,i);S.node.classList.add("apexcharts-gridline"),n.add(S),this.animX&&this.animateLine(S,{x1:0,x2:0},{x1:w,x2:y})}var C=new H(this.ctx);A===r-1&&t.globals.skipLastTimelinelabel||C.drawXaxisTicks(w,s)}else for(var L=r,z=0;z<L;z++){var P=L;if(t.globals.isXNumeric&&"bar"!==t.config.chart.type&&(P-=1),y=w+=t.globals.gridWidth/P,z===P-1)break;if(t.config.grid.xaxis.lines.show){var M=e.drawLine(w,0,y,k,t.config.grid.borderColor,i);M.node.classList.add("apexcharts-gridline"),n.add(M),this.animX&&this.animateLine(M,{x1:0,x2:0},{x1:w,x2:y})}new H(this.ctx).drawXaxisTicks(w,s)}}if(t.config.grid.yaxis.lines.show)for(var E=0,T=0,X=t.globals.gridWidth,I=0;I<o+1;I++){var Y=e.drawLine(0,E,X,T,t.config.grid.borderColor,i);a.add(Y),Y.node.classList.add("apexcharts-gridline"),this.animY&&this.animateLine(Y,{y1:E+20,y2:T+20},{y1:E,y2:T}),T=E+=t.globals.gridHeight/o}}return this.drawGridBands(s,r,o),{el:s,xAxisTickWidth:t.globals.gridWidth/r}}},{key:"drawGridBands",value:function(t,e,i){var s=this.w,a=new f(this.ctx);if(void 0!==s.config.grid.row.colors&&s.config.grid.row.colors.length>0)for(var n=0,r=s.globals.gridHeight/i,o=s.globals.gridWidth,l=0,h=0;l<i;l++,h++){h>=s.config.grid.row.colors.length&&(h=0);var c=s.config.grid.row.colors[h],d=a.drawRect(0,n,o,r,0,c,s.config.grid.row.opacity);t.add(d),d.node.classList.add("apexcharts-gridRow"),n+=s.globals.gridHeight/i}if(void 0!==s.config.grid.column.colors&&s.config.grid.column.colors.length>0)for(var u=s.globals.padHorizontal,g=s.globals.padHorizontal+s.globals.gridWidth/e,p=s.globals.gridHeight,x=0,b=0;x<e;x++,b++){b>=s.config.grid.column.colors.length&&(b=0);var m=s.config.grid.column.colors[b],v=a.drawRect(u,0,g,p,0,m,s.config.grid.column.opacity);v.node.classList.add("apexcharts-gridColumn"),t.add(v),u+=s.globals.gridWidth/e}}},{key:"animateLine",value:function(t,e,i){var s=this.w,a=s.config.chart.animations;if(a&&!s.globals.resized&&!s.globals.dataChanged){var n=a.speed;this.anim.animateLine(t,e,i,n)}}}]),t}(),ot=function(){function t(i,s){e(this,t),this.ctx=i,this.w=i.w,this.onLegendClick=this.onLegendClick.bind(this),this.onLegendHovered=this.onLegendHovered.bind(this)}return s(t,[{key:"init",value:function(){var t=this.w,e=t.globals,i=t.config;if((i.legend.showForSingleSeries&&1===e.series.length||e.series.length>1||!e.axisCharts)&&i.legend.show){for(;e.dom.elLegendWrap.firstChild;)e.dom.elLegendWrap.removeChild(e.dom.elLegendWrap.firstChild);this.drawLegends(),d.isIE11()?document.getElementsByTagName("head")[0].appendChild(this.getLegendStyles()):this.appendToForeignObject(),"bottom"===i.legend.position||"top"===i.legend.position?this.legendAlignHorizontal():"right"!==i.legend.position&&"left"!==i.legend.position||this.legendAlignVertical()}}},{key:"appendToForeignObject",value:function(){var t=this.w.globals,e=document.createElementNS(t.SVGNS,"foreignObject");e.setAttribute("x",0),e.setAttribute("y",0),e.setAttribute("width",t.svgWidth),e.setAttribute("height",t.svgHeight),t.dom.elLegendWrap.setAttribute("xmlns","http://www.w3.org/1999/xhtml"),e.appendChild(t.dom.elLegendWrap),e.appendChild(this.getLegendStyles()),t.dom.Paper.node.insertBefore(e,t.dom.elGraphical.node)}},{key:"drawLegends",value:function(){var t=this.w,e=t.config.legend.fontFamily,i=t.globals.seriesNames,s=t.globals.colors.slice();if("heatmap"===t.config.chart.type){var a=t.config.plotOptions.heatmap.colorScale.ranges;i=a.map(function(t){return t.name?t.name:t.from+" - "+t.to}),s=a.map(function(t){return t.color})}for(var n=t.globals.legendFormatter,r=0;r<=i.length-1;r++){var o=n(i[r],{seriesIndex:r,w:t}),l=!1,h=!1;if(t.globals.collapsedSeries.length>0)for(var c=0;c<t.globals.collapsedSeries.length;c++)t.globals.collapsedSeries[c].index===r&&(l=!0);if(t.globals.ancillaryCollapsedSeriesIndices.length>0)for(var d=0;d<t.globals.ancillaryCollapsedSeriesIndices.length;d++)t.globals.ancillaryCollapsedSeriesIndices[d]===r&&(h=!0);var u=document.createElement("span");u.classList.add("apexcharts-legend-marker");var g=t.config.legend.markers.offsetX,p=t.config.legend.markers.offsetY,x=t.config.legend.markers.height,b=t.config.legend.markers.width,m=t.config.legend.markers.strokeWidth,v=t.config.legend.markers.strokeColor,w=t.config.legend.markers.radius,k=u.style;k.background=s[r],k.color=s[r],k.height=Array.isArray(x)?parseFloat(x[r])+"px":parseFloat(x)+"px",k.width=Array.isArray(b)?parseFloat(b[r])+"px":parseFloat(b)+"px",k.left=Array.isArray(g)?g[r]:g,k.top=Array.isArray(p)?p[r]:p,k.borderWidth=Array.isArray(m)?m[r]:m,k.borderColor=Array.isArray(v)?v[r]:v,k.borderRadius=Array.isArray(w)?parseFloat(w[r])+"px":parseFloat(w)+"px",t.config.legend.markers.customHTML&&(Array.isArray(t.config.legend.markers.customHTML)?u.innerHTML=t.config.legend.markers.customHTML[r]():u.innerHTML=t.config.legend.markers.customHTML()),f.setAttrs(u,{rel:r+1,"data:collapsed":l||h}),(l||h)&&u.classList.add("inactive-legend");var A=document.createElement("div"),S=document.createElement("span");S.classList.add("apexcharts-legend-text"),S.innerHTML=o;var C=t.config.legend.labels.useSeriesColors?t.globals.colors[r]:t.config.legend.labels.colors;C||(C=t.config.chart.foreColor),S.style.color=C,S.style.fontSize=parseFloat(t.config.legend.fontSize)+"px",S.style.fontFamily=e||t.config.chart.fontFamily,f.setAttrs(S,{rel:r+1,"data:collapsed":l||h}),A.appendChild(u),A.appendChild(S);var L=new y(this.ctx);if(!t.config.legend.showForZeroSeries)0===L.getSeriesTotalByIndex(r)&&L.seriesHaveSameValues(r)&&!L.isSeriesNull(r)&&-1===t.globals.collapsedSeriesIndices.indexOf(r)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(r)&&A.classList.add("apexcharts-hidden-zero-series");t.config.legend.showForNullSeries||L.isSeriesNull(r)&&-1===t.globals.collapsedSeriesIndices.indexOf(r)&&-1===t.globals.ancillaryCollapsedSeriesIndices.indexOf(r)&&A.classList.add("apexcharts-hidden-null-series"),t.globals.dom.elLegendWrap.appendChild(A),t.globals.dom.elLegendWrap.classList.add(t.config.legend.horizontalAlign),t.globals.dom.elLegendWrap.classList.add("position-"+t.config.legend.position),A.classList.add("apexcharts-legend-series"),A.style.margin="".concat(t.config.legend.itemMargin.horizontal,"px ").concat(t.config.legend.itemMargin.vertical,"px"),t.globals.dom.elLegendWrap.style.width=t.config.legend.width?t.config.legend.width+"px":"",t.globals.dom.elLegendWrap.style.height=t.config.legend.height?t.config.legend.height+"px":"",f.setAttrs(A,{rel:r+1,"data:collapsed":l||h}),(l||h)&&A.classList.add("inactive-legend"),t.config.legend.onItemClick.toggleDataSeries||A.classList.add("no-click")}"heatmap"!==t.config.chart.type&&t.config.legend.onItemClick.toggleDataSeries&&t.globals.dom.elWrap.addEventListener("click",this.onLegendClick,!0),t.config.legend.onItemHover.highlightDataSeries&&(t.globals.dom.elWrap.addEventListener("mousemove",this.onLegendHovered,!0),t.globals.dom.elWrap.addEventListener("mouseout",this.onLegendHovered,!0))}},{key:"getLegendBBox",value:function(){var t=this.w.globals.dom.baseEl.querySelector(".apexcharts-legend").getBoundingClientRect(),e=t.width;return{clwh:t.height,clww:e}}},{key:"setLegendWrapXY",value:function(t,e){var i=this.w,s=i.globals.dom.baseEl.querySelector(".apexcharts-legend"),a=s.getBoundingClientRect(),n=0,r=0;if("bottom"===i.config.legend.position)r+=i.globals.svgHeight-a.height/2;else if("top"===i.config.legend.position){var o=new _(this.ctx),l=o.getTitleSubtitleCoords("title").height,h=o.getTitleSubtitleCoords("subtitle").height;r=r+(l>0?l-10:0)+(h>0?h-10:0)}s.style.position="absolute",n=n+t+i.config.legend.offsetX,r=r+e+i.config.legend.offsetY,s.style.left=n+"px",s.style.top=r+"px","bottom"===i.config.legend.position?(s.style.top="auto",s.style.bottom=10+i.config.legend.offsetY+"px"):"right"===i.config.legend.position&&(s.style.left="auto",s.style.right=25+i.config.legend.offsetX+"px"),s.style.width&&(s.style.width=parseInt(i.config.legend.width)+"px"),s.style.height&&(s.style.height=parseInt(i.config.legend.height)+"px")}},{key:"legendAlignHorizontal",value:function(){var t=this.w;t.globals.dom.baseEl.querySelector(".apexcharts-legend").style.right=0;var e=this.getLegendBBox(),i=new _(this.ctx),s=i.getTitleSubtitleCoords("title"),a=i.getTitleSubtitleCoords("subtitle"),n=0;"bottom"===t.config.legend.position?n=-e.clwh/1.8:"top"===t.config.legend.position&&(n=s.height+a.height+t.config.title.margin+t.config.subtitle.margin-15),this.setLegendWrapXY(20,n)}},{key:"legendAlignVertical",value:function(){var t=this.w,e=this.getLegendBBox(),i=0;"left"===t.config.legend.position&&(i=20),"right"===t.config.legend.position&&(i=t.globals.svgWidth-e.clww-10),this.setLegendWrapXY(i,20)}},{key:"onLegendHovered",value:function(t){var e=this.w,i=t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker");if("heatmap"!==e.config.chart.type)!t.target.classList.contains("inactive-legend")&&i&&new G(this.ctx).toggleSeriesOnHover(t,t.target);else if(i){var s=parseInt(t.target.getAttribute("rel"))-1;this.ctx.fireEvent("legendHover",[this.ctx,s,this.w]),new G(this.ctx).highlightRangeInSeries(t,t.target)}}},{key:"onLegendClick",value:function(t){if(t.target.classList.contains("apexcharts-legend-text")||t.target.classList.contains("apexcharts-legend-marker")){var e=parseInt(t.target.getAttribute("rel"))-1,i="true"===t.target.getAttribute("data:collapsed"),s=this.w.config.chart.events.legendClick;"function"==typeof s&&s(this.ctx,e,this.w),this.ctx.fireEvent("legendClick",[this.ctx,e,this.w]);var a=this.w.config.legend.markers.onClick;"function"==typeof a&&t.target.classList.contains("apexcharts-legend-marker")&&(a(this.ctx,e,this.w),this.ctx.fireEvent("legendMarkerClick",[this.ctx,e,this.w])),this.toggleDataSeries(e,i)}}},{key:"getLegendStyles",value:function(){var t=document.createElement("style");t.setAttribute("type","text/css");var e=document.createTextNode("\n \n .apexcharts-legend {\n display: flex;\n overflow: auto;\n padding: 0 10px;\n }\n\n .apexcharts-legend.position-bottom, .apexcharts-legend.position-top {\n flex-wrap: wrap\n }\n .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n flex-direction: column;\n bottom: 0;\n }\n\n .apexcharts-legend.position-bottom.left, .apexcharts-legend.position-top.left, .apexcharts-legend.position-right, .apexcharts-legend.position-left {\n justify-content: flex-start;\n }\n\n .apexcharts-legend.position-bottom.center, .apexcharts-legend.position-top.center {\n justify-content: center; \n }\n\n .apexcharts-legend.position-bottom.right, .apexcharts-legend.position-top.right {\n justify-content: flex-end;\n }\n\n .apexcharts-legend-series {\n cursor: pointer;\n line-height: normal;\n }\n\n .apexcharts-legend.position-bottom .apexcharts-legend-series, .apexcharts-legend.position-top .apexcharts-legend-series{\n display: flex;\n align-items: center;\n }\n\n .apexcharts-legend-text {\n position: relative;\n font-size: 14px;\n }\n\n .apexcharts-legend-text *, .apexcharts-legend-marker * {\n pointer-events: none;\n }\n\n .apexcharts-legend-marker {\n position: relative;\n display: inline-block;\n cursor: pointer;\n margin-right: 3px;\n }\n \n .apexcharts-legend.right .apexcharts-legend-series, .apexcharts-legend.left .apexcharts-legend-series{\n display: inline-block;\n }\n\n .apexcharts-legend-series.no-click {\n cursor: auto;\n }\n\n .apexcharts-legend .apexcharts-hidden-zero-series, .apexcharts-legend .apexcharts-hidden-null-series {\n display: none !important;\n }\n\n .inactive-legend {\n opacity: 0.45;\n }");return t.appendChild(e),t}},{key:"resetToggleDataSeries",value:function(){var t=this.w,e=null,i=[];if(t.globals.axisCharts?(e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:realIndex]"),(e=d.listToArray(e)).forEach(function(t){i.push(parseInt(t.getAttribute("data:realIndex")))})):(e=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[rel]"),(e=d.listToArray(e)).forEach(function(t){i.push(parseInt(t.getAttribute("rel"))-1)})),i.sort(),t.globals.collapsedSeries.length>0){for(var s=t.globals.risingSeries.slice(),a=t.config.series.slice(),n=0;n<t.globals.collapsedSeries.length;n++){var r=i.indexOf(t.globals.collapsedSeries[n].index);-1!==r&&(t.globals.axisCharts?a[r].data=t.globals.collapsedSeries.slice()[n].data.slice():a[r]=t.globals.collapsedSeries.slice()[n].data,s.push(r))}t.globals.collapsedSeries=[],t.globals.ancillaryCollapsedSeries=[],t.globals.collapsedSeriesIndices=[],t.globals.ancillaryCollapsedSeriesIndices=[],t.globals.risingSeries=s,t.config.series=a,this.ctx._updateSeries(t.config.series,t.config.chart.animations.dynamicAnimation.enabled)}}},{key:"toggleDataSeries",value:function(t,e){var i=this.w;if(i.globals.axisCharts||"radialBar"===i.config.chart.type){i.globals.resized=!0;var s=null,a=null;if(i.globals.risingSeries=[],i.globals.axisCharts?(s=i.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(t,"']")),a=parseInt(s.getAttribute("data:realIndex"))):(s=i.globals.dom.baseEl.querySelector(".apexcharts-series[rel='".concat(t+1,"']")),a=parseInt(s.getAttribute("rel"))-1),e)this.riseCollapsedSeries(i.globals.collapsedSeries,i.globals.collapsedSeriesIndices,a),this.riseCollapsedSeries(i.globals.ancillaryCollapsedSeries,i.globals.ancillaryCollapsedSeriesIndices,a);else{if(i.globals.axisCharts){var n=!1;if(i.config.yaxis[a]&&i.config.yaxis[a].show&&i.config.yaxis[a].showAlways&&(n=!0,i.globals.ancillaryCollapsedSeriesIndices.indexOf(a)<0&&(i.globals.ancillaryCollapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split("-")[1]}),i.globals.ancillaryCollapsedSeriesIndices.push(a))),!n){i.globals.collapsedSeries.push({index:a,data:i.config.series[a].data.slice(),type:s.parentNode.className.baseVal.split("-")[1]}),i.globals.collapsedSeriesIndices.push(a);var r=i.globals.risingSeries.indexOf(a);i.globals.risingSeries.splice(r,1)}i.config.series[a].data=[]}else i.globals.collapsedSeries.push({index:a,data:i.config.series[a]}),i.globals.collapsedSeriesIndices.push(a),i.config.series[a]=0;for(var o=s.childNodes,l=0;l<o.length;l++)o[l].classList.contains("apexcharts-series-markers-wrap")&&(o[l].classList.contains("apexcharts-hide")?o[l].classList.remove("apexcharts-hide"):o[l].classList.add("apexcharts-hide"));i.globals.allSeriesCollapsed=i.globals.collapsedSeries.length===i.globals.series.length,this.ctx._updateSeries(i.config.series,i.config.chart.animations.dynamicAnimation.enabled)}}else{var h=i.globals.dom.Paper.select(" .apexcharts-series[rel='".concat(t+1,"'] path")),c=i.config.chart.type;if("pie"===c||"donut"===c){var d=i.config.plotOptions.pie.donut.labels,u=new f(this.ctx),g=new I(this.ctx);u.pathMouseDown(h.members[0],null),g.printDataLabelsInner(h.members[0].node,d)}h.fire("click")}}},{key:"riseCollapsedSeries",value:function(t,e,i){var s=this.w;if(t.length>0)for(var a=0;a<t.length;a++)t[a].index===i&&(s.globals.axisCharts?(s.config.series[i].data=t[a].data.slice(),t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)):(s.config.series[i]=t[a].data,t.splice(a,1),e.splice(a,1),s.globals.risingSeries.push(i)),this.ctx._updateSeries(s.config.series,s.config.chart.animations.dynamicAnimation.enabled))}}]),t}(),lt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"checkResponsiveConfig",value:function(t){var e=this,i=this.w,s=i.config;if(0!==s.responsive.length){var a=s.responsive.slice();a.sort(function(t,e){return t.breakpoint>e.breakpoint?1:e.breakpoint>t.breakpoint?-1:0}).reverse();var n=new w({}),r=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},s=a[0].breakpoint,r=window.innerWidth>0?window.innerWidth:screen.width;if(r>s){var o=y.extendArrayProps(n,i.globals.initialConfig);t=d.extend(o,t),t=d.extend(i.config,t),e.overrideResponsiveOptions(t)}else for(var l=0;l<a.length;l++)r<a[l].breakpoint&&(t=y.extendArrayProps(n,a[l].options),t=d.extend(i.config,t),e.overrideResponsiveOptions(t))};if(t){var o=y.extendArrayProps(n,t);o=d.extend(i.config,o),r(o=d.extend(o,t))}else r({})}}},{key:"overrideResponsiveOptions",value:function(t){var e=new w(t).init();this.w.config=e}}]),t}(),ht=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.colors=[]}return s(t,[{key:"init",value:function(){this.setDefaultColors()}},{key:"setDefaultColors",value:function(){var t=this.w,e=new d;if(t.globals.dom.elWrap.classList.add(t.config.theme.mode),void 0===t.config.colors?t.globals.colors=this.predefined():t.globals.colors=t.config.colors,t.config.theme.monochrome.enabled){var i=[],s=t.globals.series.length;t.config.plotOptions.bar.distributed&&"bar"===t.config.chart.type&&(s=t.globals.series[0].length*t.globals.series.length);for(var a=t.config.theme.monochrome.color,n=1/(s/t.config.theme.monochrome.shadeIntensity),r=t.config.theme.monochrome.shadeTo,o=0,l=0;l<s;l++){var h=void 0;"dark"===r?(h=e.shadeColor(-1*o,a),o+=n):(h=e.shadeColor(o,a),o+=n),i.push(h)}t.globals.colors=i.slice()}var c=t.globals.colors.slice();this.pushExtraColors(t.globals.colors),void 0===t.config.stroke.colors?t.globals.stroke.colors=c:t.globals.stroke.colors=t.config.stroke.colors,this.pushExtraColors(t.globals.stroke.colors),void 0===t.config.fill.colors?t.globals.fill.colors=c:t.globals.fill.colors=t.config.fill.colors,this.pushExtraColors(t.globals.fill.colors),void 0===t.config.dataLabels.style.colors?t.globals.dataLabels.style.colors=c:t.globals.dataLabels.style.colors=t.config.dataLabels.style.colors,this.pushExtraColors(t.globals.dataLabels.style.colors,50),void 0===t.config.plotOptions.radar.polygons.fill.colors?t.globals.radarPolygons.fill.colors=["dark"===t.config.theme.mode?"#202D48":"#fff"]:t.globals.radarPolygons.fill.colors=t.config.plotOptions.radar.polygons.fill.colors,this.pushExtraColors(t.globals.radarPolygons.fill.colors,20),void 0===t.config.markers.colors?t.globals.markers.colors=c:t.globals.markers.colors=t.config.markers.colors,this.pushExtraColors(t.globals.markers.colors)}},{key:"pushExtraColors",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=e||s.globals.series.length;if(null===i&&(i="bar"===s.config.chart.type&&s.config.plotOptions.bar.distributed||"heatmap"===s.config.chart.type&&s.config.plotOptions.heatmap.colorScale.inverse),i&&(a=s.globals.series[0].length*s.globals.series.length),t.length<a)for(var n=a-t.length,r=0;r<n;r++)t.push(t[r])}},{key:"updateThemeOptions",value:function(t){t.chart=t.chart||{},t.tooltip=t.tooltip||{};var e=t.theme.mode||"light",i=t.theme.palette?t.theme.palette:"dark"===e?"palette4":"palette1",s=t.chart.foreColor?t.chart.foreColor:"dark"===e?"#f6f7f8":"#373d3f";return t.tooltip.theme=e,t.chart.foreColor=s,t.theme.palette=i,t}},{key:"predefined",value:function(){switch(this.w.config.theme.palette){case"palette1":this.colors=["#008FFB","#00E396","#FEB019","#FF4560","#775DD0"];break;case"palette2":this.colors=["#3f51b5","#03a9f4","#4caf50","#f9ce1d","#FF9800"];break;case"palette3":this.colors=["#33b2df","#546E7A","#d4526e","#13d8aa","#A5978B"];break;case"palette4":this.colors=["#4ecdc4","#c7f464","#81D4FA","#fd6a6a","#546E7A"];break;case"palette5":this.colors=["#2b908f","#f9a3a4","#90ee7e","#fa4443","#69d2e7"];break;case"palette6":this.colors=["#449DD1","#F86624","#EA3546","#662E9B","#C5D86D"];break;case"palette7":this.colors=["#D7263D","#1B998B","#2E294E","#F46036","#E2C044"];break;case"palette8":this.colors=["#662E9B","#F86624","#F9C80E","#EA3546","#43BCCD"];break;case"palette9":this.colors=["#5C4742","#A5978B","#8D5B4C","#5A2A27","#C4BBAF"];break;case"palette10":this.colors=["#A300D6","#7D02EB","#5653FE","#2983FF","#00B1F2"];break;default:this.colors=["#008FFB","#00E396","#FEB019","#FF4560","#775DD0"]}return this.colors}}]),t}(),ct=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx}return s(t,[{key:"getNearestValues",value:function(t){var e=t.hoverArea,i=t.elGrid,s=t.clientX,a=t.clientY,n=t.hasBars,r=this.w,o=r.globals.gridWidth,l=o/(r.globals.dataPoints-1),h=i.getBoundingClientRect();(n&&r.globals.comboCharts||n)&&(l=o/r.globals.dataPoints);var c=s-h.left,d=a-h.top;c<0||d<0||c>r.globals.gridWidth||d>r.globals.gridHeight?(e.classList.remove("hovering-zoom"),e.classList.remove("hovering-pan")):r.globals.zoomEnabled?(e.classList.remove("hovering-pan"),e.classList.add("hovering-zoom")):r.globals.panEnabled&&(e.classList.remove("hovering-zoom"),e.classList.add("hovering-pan"));var u=Math.round(c/l);n&&(u=Math.ceil(c/l),u-=1);for(var g,f=null,p=null,x=[],b=0;b<r.globals.seriesXvalues.length;b++)x.push([r.globals.seriesXvalues[b][0]-1e-6].concat(r.globals.seriesXvalues[b]));return x=x.map(function(t){return t.filter(function(t){return t})}),g=r.globals.seriesYvalues.map(function(t){return t.filter(function(t){return t})}),r.globals.isXNumeric&&(f=(p=this.closestInMultiArray(c,d,x,g)).index,u=p.j,null!==f&&(x=r.globals.seriesXvalues[f],u=(p=this.closestInArray(c,x)).index)),(!u||u<1)&&(u=0),{capturedSeries:f,j:u,hoverX:c,hoverY:d}}},{key:"closestInMultiArray",value:function(t,e,i,s){var a=this.w,n=0,r=null,o=-1;a.globals.series.length>1?n=this.getFirstActiveXArray(i):r=0;var l=s[n][0],h=i[n][0],c=Math.abs(t-h),d=Math.abs(e-l),u=d+c;return s.map(function(a,n){a.map(function(a,l){var h=Math.abs(e-s[n][l]),g=Math.abs(t-i[n][l]),f=g+h;f<u&&(u=f,c=g,d=h,r=n,o=l)})}),{index:r,j:o}}},{key:"getFirstActiveXArray",value:function(t){for(var e=0,i=new y(this.ctx),s=t.map(function(t,e){return t.length>0?e:-1}),a=0;a<s.length;a++){var n=i.getSeriesTotalByIndex(a);if(-1!==s[a]&&0!==n&&!i.seriesHaveSameValues(a)){e=s[a];break}}return e}},{key:"closestInArray",value:function(t,e){for(var i=e[0],s=null,a=Math.abs(t-i),n=0;n<e.length;n++){var r=Math.abs(t-e[n]);r<a&&(a=r,i=e[n],s=n)}return{index:s}}},{key:"isXoverlap",value:function(t){var e=[],i=this.w.globals.seriesX.filter(function(t){return void 0!==t[0]});if(i.length>0)for(var s=0;s<i.length-1;s++)void 0!==i[s][t]&&void 0!==i[s+1][t]&&i[s][t]!==i[s+1][t]&&e.push("unEqual");return 0===e.length}},{key:"isinitialSeriesSameLen",value:function(){for(var t=!0,e=this.w.globals.initialSeries,i=0;i<e.length-1;i++)if(e[i].data.length!==e[i+1].data.length){t=!1;break}return t}},{key:"getBarsHeight",value:function(t){return c(t).reduce(function(t,e){return t+e.getBBox().height},0)}},{key:"toggleAllTooltipSeriesGroups",value:function(t){var e=this.w,i=this.ttCtx;0===i.allTooltipSeriesGroups.length&&(i.allTooltipSeriesGroups=e.globals.dom.baseEl.querySelectorAll(".apexcharts-tooltip-series-group"));for(var s=i.allTooltipSeriesGroups,a=0;a<s.length;a++)"enable"===t?(s[a].classList.add("active"),s[a].style.display=e.config.tooltip.items.display):(s[a].classList.remove("active"),s[a].style.display="none")}}]),t}(),dt=function(){function t(i){e(this,t),this.w=i.w,this.ctx=i.ctx,this.ttCtx=i,this.tooltipUtil=new ct(i)}return s(t,[{key:"drawSeriesTexts",value:function(t){var e=t.shared,i=void 0===e||e,s=t.ttItems,a=t.i,n=void 0===a?0:a,r=t.j,o=void 0===r?null:r;void 0!==this.w.config.tooltip.custom?this.handleCustomTooltip({i:n,j:o}):this.toggleActiveInactiveSeries(i);var l=this.getValuesToPrint({i:n,j:o});this.printLabels({i:n,j:o,values:l,ttItems:s,shared:i});var h=this.ttCtx.getElTooltip();this.ttCtx.tooltipRect.ttWidth=h.getBoundingClientRect().width,this.ttCtx.tooltipRect.ttHeight=h.getBoundingClientRect().height}},{key:"printLabels",value:function(t){var e,i=t.i,s=t.j,a=t.values,n=t.ttItems,r=t.shared,o=this.w,l=a.xVal,h=a.zVal,c=a.xAxisTTVal,d="",u=o.globals.colors[i];null!==s&&o.config.plotOptions.bar.distributed&&(u=o.globals.colors[s]);for(var g=0,f=o.globals.series.length-1;g<o.globals.series.length;g++,f--){var p=this.getFormatters(i);if(d=this.getSeriesName({fn:p.yLbTitleFormatter,index:i,seriesIndex:i,j:s}),r){var x=o.config.tooltip.inverseOrder?f:g;p=this.getFormatters(x),d=this.getSeriesName({fn:p.yLbTitleFormatter,index:x,seriesIndex:i,j:s}),u=o.globals.colors[x],e=p.yLbFormatter(o.globals.series[x][s],{series:o.globals.series,seriesIndex:x,dataPointIndex:s,w:o}),(this.ttCtx.hasBars()&&o.config.chart.stacked&&0===o.globals.series[x][s]||void 0===o.globals.series[x][s])&&(e=void 0)}else e=p.yLbFormatter(o.globals.series[i][s],{series:o.globals.series,seriesIndex:i,dataPointIndex:s,w:o});null===s&&(e=p.yLbFormatter(o.globals.series[i],o)),this.DOMHandling({t:g,ttItems:n,values:{val:e,xVal:l,xAxisTTVal:c,zVal:h},seriesName:d,shared:r,pColor:u})}}},{key:"getFormatters",value:function(t){var e,i=this.w,s=i.globals.yLabelFormatters[t];return void 0!==i.globals.ttVal?Array.isArray(i.globals.ttVal)?(s=i.globals.ttVal[t]&&i.globals.ttVal[t].formatter,e=i.globals.ttVal[t]&&i.globals.ttVal[t].title&&i.globals.ttVal[t].title.formatter):(s=i.globals.ttVal.formatter,"function"==typeof i.globals.ttVal.title.formatter&&(e=i.globals.ttVal.title.formatter)):e=i.config.tooltip.y.title.formatter,"function"!=typeof s&&(s=i.globals.yLabelFormatters[0]?i.globals.yLabelFormatters[0]:function(t){return t}),"function"!=typeof e&&(e=function(t){return t}),{yLbFormatter:s,yLbTitleFormatter:e}}},{key:"getSeriesName",value:function(t){var e=t.fn,i=t.index,s=t.seriesIndex,a=t.j,n=this.w;return e(String(n.globals.seriesNames[i]),{series:n.globals.series,seriesIndex:s,dataPointIndex:a,w:n})}},{key:"DOMHandling",value:function(t){var e=t.t,i=t.ttItems,s=t.values,a=t.seriesName,n=t.shared,r=t.pColor,o=this.w,l=this.ttCtx,h=s.val,c=s.xVal,d=s.xAxisTTVal,u=s.zVal,g=null;g=i[e].children,o.config.tooltip.fillSeriesColor&&(i[e].style.backgroundColor=r,g[0].style.display="none"),l.showTooltipTitle&&(null===l.tooltipTitle&&(l.tooltipTitle=o.globals.dom.baseEl.querySelector(".apexcharts-tooltip-title")),l.tooltipTitle.innerHTML=c),l.blxaxisTooltip&&(l.xaxisTooltipText.innerHTML=""!==d?d:c);var f=i[e].querySelector(".apexcharts-tooltip-text-label");f&&(f.innerHTML=a?a+": ":"");var p=i[e].querySelector(".apexcharts-tooltip-text-value");(p&&(p.innerHTML=h),g[0]&&g[0].classList.contains("apexcharts-tooltip-marker")&&(g[0].style.backgroundColor=r),o.config.tooltip.marker.show||(g[0].style.display="none"),null!==u)&&(i[e].querySelector(".apexcharts-tooltip-text-z-label").innerHTML=o.config.tooltip.z.title,i[e].querySelector(".apexcharts-tooltip-text-z-value").innerHTML=u);n&&g[0]&&(null==h||o.globals.collapsedSeriesIndices.indexOf(e)>-1?g[0].parentNode.style.display="none":g[0].parentNode.style.display=o.config.tooltip.items.display)}},{key:"toggleActiveInactiveSeries",value:function(t){var e=this.w;if(t)this.tooltipUtil.toggleAllTooltipSeriesGroups("enable");else{this.tooltipUtil.toggleAllTooltipSeriesGroups("disable");var i=e.globals.dom.baseEl.querySelector(".apexcharts-tooltip-series-group");i&&(i.classList.add("active"),i.style.display=e.config.tooltip.items.display)}}},{key:"getValuesToPrint",value:function(t){var e=t.i,i=t.j,s=this.w,a=this.ctx.series.filteredSeriesX(),n="",r=null,o=null,l={series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s},h=s.globals.ttZFormatter;null===i?o=s.globals.series[e]:s.globals.isXNumeric?(n=a[e][i],0===a[e].length&&(n=a[this.tooltipUtil.getFirstActiveXArray(a)][i])):n=void 0!==s.globals.labels[i]?s.globals.labels[i]:"";var c=n;s.globals.isXNumeric&&"datetime"===s.config.xaxis.type?n=new N(this.ctx).xLabelFormat(s.globals.ttKeyFormatter,c):n=s.globals.xLabelFormatter(c,l);return void 0!==s.config.tooltip.x.formatter&&(n=s.globals.ttKeyFormatter(c,l)),s.globals.seriesZ.length>0&&s.globals.seriesZ[0].length>0&&(r=h(s.globals.seriesZ[e][i],s)),{val:o,xVal:n,xAxisTTVal:"function"==typeof s.config.xaxis.tooltip.formatter?s.globals.xaxisTooltipFormatter(c,l):n,zVal:r}}},{key:"handleCustomTooltip",value:function(t){var e=t.i,i=t.j,s=this.w;this.ttCtx.getElTooltip().innerHTML=s.config.tooltip.custom({ctx:this.ctx,series:s.globals.series,seriesIndex:e,dataPointIndex:i,w:s})}}]),t}(),ut=function(){function t(i){e(this,t),this.ttCtx=i,this.ctx=i.ctx,this.w=i.w}return s(t,[{key:"moveXCrosshairs",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,i=this.ttCtx,s=this.w,a=i.getElXCrosshairs(),n=t-i.xcrosshairsWidth/2,r=s.globals.labels.slice().length;if(null!==e&&(n=s.globals.gridWidth/r*e),"tickWidth"===s.config.xaxis.crosshairs.width||"barWidth"===s.config.xaxis.crosshairs.width?n+i.xcrosshairsWidth>s.globals.gridWidth&&(n=s.globals.gridWidth-i.xcrosshairsWidth):null!==e&&(n+=s.globals.gridWidth/r/2),n<0&&(n=0),n>s.globals.gridWidth&&(n=s.globals.gridWidth),null!==a&&(a.setAttribute("x",n),a.setAttribute("x1",n),a.setAttribute("x2",n),a.setAttribute("y2",s.globals.gridHeight),a.classList.add("active")),i.blxaxisTooltip){var o=n;"tickWidth"!==s.config.xaxis.crosshairs.width&&"barWidth"!==s.config.xaxis.crosshairs.width||(o=n+i.xcrosshairsWidth/2),this.moveXAxisTooltip(o)}}},{key:"moveYCrosshairs",value:function(t){var e=this.ttCtx;null!==e.ycrosshairs&&(f.setAttrs(e.ycrosshairs,{y1:t,y2:t}),f.setAttrs(e.ycrosshairsHidden,{y1:t,y2:t}))}},{key:"moveXAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;if(null!==i.xaxisTooltip){i.xaxisTooltip.classList.add("active");var s=i.xaxisOffY+e.config.xaxis.tooltip.offsetY+e.globals.translateY+1+e.config.xaxis.offsetY;if(t-=i.xaxisTooltip.getBoundingClientRect().width/2,!isNaN(t)){t+=e.globals.translateX;var a;a=new f(this.ctx).getTextRects(i.xaxisTooltipText.innerHTML),i.xaxisTooltipText.style.minWidth=a.width+"px",i.xaxisTooltip.style.left=t+"px",i.xaxisTooltip.style.top=s+"px"}}}},{key:"moveYAxisTooltip",value:function(t){var e=this.w,i=this.ttCtx;null===i.yaxisTTEls&&(i.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));var s=parseInt(i.ycrosshairsHidden.getAttribute("y1")),a=e.globals.translateY+s,n=i.yaxisTTEls[t].getBoundingClientRect().height,r=e.globals.translateYAxisX[t]-2;e.config.yaxis[t].opposite&&(r-=26),a-=n/2,-1===e.globals.ignoreYAxisIndexes.indexOf(t)?(i.yaxisTTEls[t].classList.add("active"),i.yaxisTTEls[t].style.top=a+"px",i.yaxisTTEls[t].style.left=r+e.config.yaxis[t].tooltip.offsetX+"px"):i.yaxisTTEls[t].classList.remove("active")}},{key:"moveTooltip",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=this.w,a=this.ttCtx,n=a.getElTooltip(),r=a.tooltipRect,o=null!==i?parseInt(i):1,l=parseInt(t)+o+5,h=parseInt(e)+o/2;if(l>s.globals.gridWidth/2&&(l=l-r.ttWidth-o-15),l>s.globals.gridWidth-r.ttWidth-10&&(l=s.globals.gridWidth-r.ttWidth),l<-20&&(l=-20),s.config.tooltip.followCursor){var c=a.getElGrid().getBoundingClientRect();h=a.e.clientY+s.globals.translateY-c.top-r.ttHeight/2}var d=this.positionChecks(r,l,h);l=d.x,h=d.y,isNaN(l)||(l+=s.globals.translateX,n.style.left=l+"px",n.style.top=h+"px")}},{key:"positionChecks",value:function(t,e,i){var s=this.w;return t.ttHeight+i>s.globals.gridHeight&&(i=s.globals.gridHeight-t.ttHeight+s.globals.translateY),i<0&&(i=0),{x:e,y:i}}},{key:"moveMarkers",value:function(t,e){var i=this.w,s=this.ttCtx;if(i.globals.markers.size[t]>0)for(var a=i.globals.dom.baseEl.querySelectorAll(" .apexcharts-series[data\\:realIndex='".concat(t,"'] .apexcharts-marker")),n=0;n<a.length;n++)parseInt(a[n].getAttribute("rel"))===e&&(s.marker.resetPointsSize(),s.marker.enlargeCurrentPoint(e,a[n]));else s.marker.resetPointsSize(),this.moveDynamicPointOnHover(e,t)}},{key:"moveDynamicPointOnHover",value:function(t,e){var i,s,a=this.w,n=this.ttCtx,r=a.globals.pointsArray,o=a.config.markers.hover.size;void 0===o&&(o=a.globals.markers.size[e]+a.config.markers.hover.sizeOffset),i=r[e][t][0],s=r[e][t][1]?r[e][t][1]:0;var l=a.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(e,"'] .apexcharts-series-markers circle"));l&&(l.setAttribute("r",o),l.setAttribute("cx",i),l.setAttribute("cy",s)),this.moveXCrosshairs(i),n.fixedTooltip||this.moveTooltip(i,s,o)}},{key:"moveDynamicPointsOnHover",value:function(t){var e,i=this.ttCtx,s=i.w,a=0,n=0,r=s.globals.pointsArray;e=new G(this.ctx).getActiveSeriesIndex();var o=s.config.markers.hover.size;void 0===o&&(o=s.globals.markers.size[e]+s.config.markers.hover.sizeOffset),r[e]&&(a=r[e][t][0],n=r[e][t][1]);var l=null,h=i.getAllMarkers();if(null!==(l=null!==h?h:s.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers circle")))for(var c=0;c<l.length;c++){var d=r[c];if(d&&d.length){var u=r[c][t][1];l[c].setAttribute("cx",a);var g=parseInt(l[c].parentNode.parentNode.parentNode.getAttribute("data:realIndex"));null!==u?(l[g]&&l[g].setAttribute("r",o),l[g]&&l[g].setAttribute("cy",u)):l[g]&&l[g].setAttribute("r",0)}}if(this.moveXCrosshairs(a),!i.fixedTooltip){var f=n||s.globals.gridHeight;this.moveTooltip(a,f,o)}}},{key:"moveStickyTooltipOverBars",value:function(t){var e,i=this.w,s=this.ttCtx,a=i.globals.dom.baseEl.querySelector(".apexcharts-bar-series .apexcharts-series[rel='1'] path[j='".concat(t,"'], .apexcharts-candlestick-series .apexcharts-series[rel='1'] path[j='").concat(t,"'], .apexcharts-rangebar-series .apexcharts-series[rel='1'] path[j='").concat(t,"']")),n=a?parseFloat(a.getAttribute("cx")):0,r=a?parseFloat(a.getAttribute("barWidth")):0;i.globals.isXNumeric?n-=r/2:(n=s.xAxisTicksPositions[t-1]+s.dataPointsDividedWidth/2,isNaN(n)&&(n=s.xAxisTicksPositions[t]-s.dataPointsDividedWidth/2));var o=s.getElGrid().getBoundingClientRect();if(e=s.e.clientY-o.top-s.tooltipRect.ttHeight/2,this.moveXCrosshairs(n),!s.fixedTooltip){var l=e||i.globals.gridHeight;this.moveTooltip(n,l)}}}]),t}(),gt=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i,this.ctx=i.ctx,this.tooltipPosition=new ut(i)}return s(t,[{key:"drawDynamicPoints",value:function(){for(var t=this.w,e=new f(this.ctx),i=new C(this.ctx),s=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series"),a=0;a<s.length;a++){var n=parseInt(s[a].getAttribute("data:realIndex")),r=t.globals.dom.baseEl.querySelector(".apexcharts-series[data\\:realIndex='".concat(n,"'] .apexcharts-series-markers-wrap"));if(null!==r){var o=void 0,l="apexcharts-marker w".concat((Math.random()+1).toString(36).substring(4));"line"!==t.config.chart.type&&"area"!==t.config.chart.type||t.globals.comboCharts||t.config.tooltip.intersect||(l+=" no-pointer-events");var h=i.getMarkerConfig(l,n);(o=e.drawMarker(0,0,h)).node.setAttribute("default-marker-size",0);var c=document.createElementNS(t.globals.SVGNS,"g");c.classList.add("apexcharts-series-markers"),c.appendChild(o.node),r.appendChild(c)}}}},{key:"enlargeCurrentPoint",value:function(t,e){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,s=arguments.length>3&&void 0!==arguments[3]?arguments[3]:null,a=this.w;"bubble"!==a.config.chart.type&&this.newPointSize(t,e);var n=e.getAttribute("cx"),r=e.getAttribute("cy");if(null!==i&&null!==s&&(n=i,r=s),this.tooltipPosition.moveXCrosshairs(n),!this.fixedTooltip){if("radar"===a.config.chart.type){var o=this.ttCtx.getElGrid().getBoundingClientRect();n=this.ttCtx.e.clientX-o.left}this.tooltipPosition.moveTooltip(n,r,a.config.markers.hover.size)}}},{key:"enlargePoints",value:function(t){for(var e=this.w,i=this.ttCtx,s=t,a=e.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),n=e.config.markers.hover.size,r=0;r<a.length;r++){var o=a[r].getAttribute("rel"),l=a[r].getAttribute("index");if(void 0===n&&(n=e.globals.markers.size[l]+e.config.markers.hover.sizeOffset),s===parseInt(o)){this.newPointSize(s,a[r]);var h=a[r].getAttribute("cx"),c=a[r].getAttribute("cy");this.tooltipPosition.moveXCrosshairs(h),i.fixedTooltip||this.tooltipPosition.moveTooltip(h,c,n)}else this.oldPointSize(a[r])}}},{key:"newPointSize",value:function(t,e){var i=this.w,s=i.config.markers.hover.size,a=null;a=0===t?e.parentNode.firstChild:e.parentNode.lastChild;var n=parseInt(a.getAttribute("index"));void 0===s&&(s=i.globals.markers.size[n]+i.config.markers.hover.sizeOffset),a.setAttribute("r",s)}},{key:"oldPointSize",value:function(t){var e=parseInt(t.getAttribute("default-marker-size"));t.setAttribute("r",e)}},{key:"resetPointsSize",value:function(){for(var t=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series:not(.apexcharts-series-collapsed) .apexcharts-marker"),e=0;e<t.length;e++){var i=parseInt(t[e].getAttribute("default-marker-size"));d.isNumber(i)?t[e].setAttribute("r",i):t[e].setAttribute("r",0)}}}]),t}(),ft=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i}return s(t,[{key:"getAttr",value:function(t,e){return parseFloat(t.target.getAttribute(e))}},{key:"handleHeatTooltip",value:function(t){var e=t.e,i=t.opt,s=t.x,a=t.y,n=this.ttCtx,r=this.w;if(e.target.classList.contains("apexcharts-heatmap-rect")){var o=this.getAttr(e,"i"),l=this.getAttr(e,"j"),h=this.getAttr(e,"cx"),c=this.getAttr(e,"cy"),d=this.getAttr(e,"width"),u=this.getAttr(e,"height");if(n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:o,j:l,shared:!1}),s=h+n.tooltipRect.ttWidth/2+d,a=c+n.tooltipRect.ttHeight/2-u/2,n.tooltipPosition.moveXCrosshairs(h+d/2),s>r.globals.gridWidth/2&&(s=h-n.tooltipRect.ttWidth/2+d),n.w.config.tooltip.followCursor){var g=n.getElGrid().getBoundingClientRect();a=n.e.clientY-g.top+r.globals.translateY/2-10}}return{x:s,y:a}}},{key:"handleMarkerTooltip",value:function(t){var e,i,s=t.e,a=t.opt,n=t.x,r=t.y,o=this.w,l=this.ttCtx;if(s.target.classList.contains("apexcharts-marker")){var h=parseInt(a.paths.getAttribute("cx")),c=parseInt(a.paths.getAttribute("cy")),u=parseFloat(a.paths.getAttribute("val"));if(i=parseInt(a.paths.getAttribute("rel")),e=parseInt(a.paths.parentNode.parentNode.parentNode.getAttribute("rel"))-1,l.intersect){var g=d.findAncestor(a.paths,"apexcharts-series");g&&(e=parseInt(g.getAttribute("data:realIndex")))}if(l.tooltipLabels.drawSeriesTexts({ttItems:a.ttItems,i:e,j:i,shared:!l.showOnIntersect&&o.config.tooltip.shared}),"mouseup"===s.type&&l.markerClick(s,e,i),n=h,r=c+o.globals.translateY-1.4*l.tooltipRect.ttHeight,l.w.config.tooltip.followCursor){var f=l.getElGrid().getBoundingClientRect();r=l.e.clientY+o.globals.translateY-f.top}u<0&&(r=c),l.marker.enlargeCurrentPoint(i,a.paths,n,r)}return{x:n,y:r}}},{key:"handleBarTooltip",value:function(t){var e,i,s=t.e,a=t.opt,n=this.w,r=this.ttCtx,o=r.getElTooltip(),l=0,h=0,c=0,d=this.getBarTooltipXY({e:s,opt:a});e=d.i;var u=d.barHeight,g=d.j;if(n.globals.isBarHorizontal&&r.hasBars()||!n.config.tooltip.shared?(h=d.x,c=d.y,i=Array.isArray(n.config.stroke.width)?n.config.stroke.width[e]:n.config.stroke.width,l=h):n.globals.comboCharts||n.config.tooltip.shared||(l/=2),isNaN(c)&&(c=n.globals.svgHeight-r.tooltipRect.ttHeight),h+r.tooltipRect.ttWidth>n.globals.gridWidth?h-=r.tooltipRect.ttWidth:h<0&&(h+=r.tooltipRect.ttWidth),r.w.config.tooltip.followCursor){var f=r.getElGrid().getBoundingClientRect();c=r.e.clientY-f.top}if(null===r.tooltip&&(r.tooltip=n.globals.dom.baseEl.querySelector(".apexcharts-tooltip")),n.config.tooltip.shared||(n.globals.comboChartsHasBars?r.tooltipPosition.moveXCrosshairs(l+i/2):r.tooltipPosition.moveXCrosshairs(l)),!r.fixedTooltip&&(!n.config.tooltip.shared||n.globals.isBarHorizontal&&r.hasBars())){x&&(h=n.globals.gridWidth-h),o.style.left=h+n.globals.translateX+"px";var p=parseInt(a.paths.parentNode.getAttribute("data:realIndex")),x=n.globals.isMultipleYAxis?n.config.yaxis[p]&&n.config.yaxis[p].reversed:n.config.yaxis[0].reversed;!x||n.globals.isBarHorizontal&&r.hasBars()||(c=c+u-2*(n.globals.series[e][g]<0?u:0)),r.tooltipRect.ttHeight+c>n.globals.gridHeight?(c=n.globals.gridHeight-r.tooltipRect.ttHeight+n.globals.translateY,o.style.top=c+"px"):o.style.top=c+n.globals.translateY-r.tooltipRect.ttHeight/2+"px"}}},{key:"getBarTooltipXY",value:function(t){var e=t.e,i=t.opt,s=this.w,a=null,n=this.ttCtx,r=0,o=0,l=0,h=0,c=0,d=e.target.classList;if(d.contains("apexcharts-bar-area")||d.contains("apexcharts-candlestick-area")||d.contains("apexcharts-rangebar-area")){var u=e.target,g=u.getBoundingClientRect(),f=i.elGrid.getBoundingClientRect(),p=g.height;c=g.height;var x=g.width,b=parseInt(u.getAttribute("cx")),m=parseInt(u.getAttribute("cy"));h=parseFloat(u.getAttribute("barWidth"));var v="touchmove"===e.type?e.touches[0].clientX:e.clientX;a=parseInt(u.getAttribute("j")),r=parseInt(u.parentNode.getAttribute("rel"))-1,s.globals.comboCharts&&(r=parseInt(u.parentNode.getAttribute("data:realIndex"))),n.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:r,j:a,shared:!n.showOnIntersect&&s.config.tooltip.shared}),s.config.tooltip.followCursor?s.globals.isBarHorizontal?(o=v-f.left+15,l=m-n.dataPointsDividedHeight+p/2-n.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?b-x/2:b-n.dataPointsDividedWidth+x/2,l=e.clientY-f.top-n.tooltipRect.ttHeight/2-15):s.globals.isBarHorizontal?((o=b)<n.xyRatios.baseLineInvertedY&&(o=b-n.tooltipRect.ttWidth),l=m-n.dataPointsDividedHeight+p/2-n.tooltipRect.ttHeight/2):(o=s.globals.isXNumeric?b-x/2:b-n.dataPointsDividedWidth+x/2,l=m)}return{x:o,y:l,barHeight:c,barWidth:h,i:r,j:a}}}]),t}(),pt=function(){function t(i){e(this,t),this.w=i.w,this.ttCtx=i}return s(t,[{key:"drawXaxisTooltip",value:function(){var t=this.w,e=this.ttCtx,i="bottom"===t.config.xaxis.position;e.xaxisOffY=i?t.globals.gridHeight+1:1;var s=i?"apexcharts-xaxistooltip apexcharts-xaxistooltip-bottom":"apexcharts-xaxistooltip apexcharts-xaxistooltip-top",a=t.globals.dom.elWrap;e.blxaxisTooltip&&(null===t.globals.dom.baseEl.querySelector(".apexcharts-xaxistooltip")&&(e.xaxisTooltip=document.createElement("div"),e.xaxisTooltip.setAttribute("class",s+" "+t.config.tooltip.theme),a.appendChild(e.xaxisTooltip),e.xaxisTooltipText=document.createElement("div"),e.xaxisTooltipText.classList.add("apexcharts-xaxistooltip-text"),e.xaxisTooltipText.style.fontFamily=t.config.xaxis.tooltip.style.fontFamily||t.config.chart.fontFamily,e.xaxisTooltipText.style.fontSize=t.config.xaxis.tooltip.style.fontSize,e.xaxisTooltip.appendChild(e.xaxisTooltipText)))}},{key:"drawYaxisTooltip",value:function(){for(var t=this.w,e=this.ttCtx,i=0;i<t.config.yaxis.length;i++){var s=t.config.yaxis[i].opposite||t.config.yaxis[i].crosshairs.opposite;e.yaxisOffX=s?t.globals.gridWidth+1:1;var a="apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i,s?" apexcharts-yaxistooltip-right":" apexcharts-yaxistooltip-left"),n=t.globals.dom.elWrap;if(e.blyaxisTooltip)null===t.globals.dom.baseEl.querySelector(".apexcharts-yaxistooltip apexcharts-yaxistooltip-".concat(i))&&(e.yaxisTooltip=document.createElement("div"),e.yaxisTooltip.setAttribute("class",a+" "+t.config.tooltip.theme),n.appendChild(e.yaxisTooltip),0===i&&(e.yaxisTooltipText=[]),e.yaxisTooltipText.push(document.createElement("div")),e.yaxisTooltipText[i].classList.add("apexcharts-yaxistooltip-text"),e.yaxisTooltip.appendChild(e.yaxisTooltipText[i]))}}},{key:"setXCrosshairWidth",value:function(){var t=this.w,e=this.ttCtx,i=e.getElXCrosshairs();if(e.xcrosshairsWidth=parseInt(t.config.xaxis.crosshairs.width),t.globals.comboCharts){var s=t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");if(null!==s&&"barWidth"===t.config.xaxis.crosshairs.width){var a=parseFloat(s.getAttribute("barWidth"));e.xcrosshairsWidth=a}else if("tickWidth"===t.config.xaxis.crosshairs.width){var n=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/n}}else if("tickWidth"===t.config.xaxis.crosshairs.width){var r=t.globals.labels.length;e.xcrosshairsWidth=t.globals.gridWidth/r}else if("barWidth"===t.config.xaxis.crosshairs.width){var o=t.globals.dom.baseEl.querySelector(".apexcharts-bar-area");if(null!==o){var l=parseFloat(o.getAttribute("barWidth"));e.xcrosshairsWidth=l}else e.xcrosshairsWidth=1}t.globals.isBarHorizontal&&(e.xcrosshairsWidth=0),null!==i&&e.xcrosshairsWidth>0&&i.setAttribute("width",e.xcrosshairsWidth)}},{key:"handleYCrosshair",value:function(){var t=this.w,e=this.ttCtx;e.ycrosshairs=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs"),e.ycrosshairsHidden=t.globals.dom.baseEl.querySelector(".apexcharts-ycrosshairs-hidden")}},{key:"drawYaxisTooltipText",value:function(t,e,i){var s=this.ttCtx,a=this.w,n=a.globals.yLabelFormatters[t];if(s.blyaxisTooltip){var r=s.getElGrid().getBoundingClientRect(),o=(e-r.top)*i.yRatio[t],l=a.globals.maxYArr[t]-a.globals.minYArr[t],h=a.globals.minYArr[t]+(l-o);s.tooltipPosition.moveYCrosshairs(e-r.top),s.yaxisTooltipText[t].innerHTML=n(h),s.tooltipPosition.moveYAxisTooltip(t)}}}]),t}(),xt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w;var s=this.w;this.tConfig=s.config.tooltip,this.tooltipUtil=new ct(this),this.tooltipLabels=new dt(this),this.tooltipPosition=new ut(this),this.marker=new gt(this),this.intersect=new ft(this),this.axesTooltip=new pt(this),this.showOnIntersect=this.tConfig.intersect,this.showTooltipTitle=this.tConfig.x.show,this.fixedTooltip=this.tConfig.fixed.enabled,this.xaxisTooltip=null,this.yaxisTTEls=null,this.isBarShared=!s.globals.isBarHorizontal&&this.tConfig.shared}return s(t,[{key:"getElTooltip",value:function(t){return t||(t=this),t.w.globals.dom.baseEl.querySelector(".apexcharts-tooltip")}},{key:"getElXCrosshairs",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-xcrosshairs")}},{key:"getElGrid",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-grid")}},{key:"drawTooltip",value:function(t){var e=this.w;this.xyRatios=t,this.blxaxisTooltip=e.config.xaxis.tooltip.enabled&&e.globals.axisCharts,this.blyaxisTooltip=e.config.yaxis[0].tooltip.enabled&&e.globals.axisCharts,this.allTooltipSeriesGroups=[],e.globals.axisCharts||(this.showTooltipTitle=!1);var i=document.createElement("div");if(i.classList.add("apexcharts-tooltip"),i.classList.add(this.tConfig.theme),e.globals.dom.elWrap.appendChild(i),e.globals.axisCharts){this.axesTooltip.drawXaxisTooltip(),this.axesTooltip.drawYaxisTooltip(),this.axesTooltip.setXCrosshairWidth(),this.axesTooltip.handleYCrosshair();var s=new H(this.ctx);this.xAxisTicksPositions=s.getXAxisTicksPositions()}if((e.globals.comboCharts&&!this.tConfig.shared||this.tConfig.intersect&&!this.tConfig.shared||("bar"===e.config.chart.type||"rangeBar"===e.config.chart.type)&&!this.tConfig.shared)&&(this.showOnIntersect=!0),0!==e.config.markers.size&&0!==e.globals.markers.largestSize||this.marker.drawDynamicPoints(this),e.globals.collapsedSeries.length!==e.globals.series.length){this.dataPointsDividedHeight=e.globals.gridHeight/e.globals.dataPoints,this.dataPointsDividedWidth=e.globals.gridWidth/e.globals.dataPoints,this.showTooltipTitle&&(this.tooltipTitle=document.createElement("div"),this.tooltipTitle.classList.add("apexcharts-tooltip-title"),this.tooltipTitle.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,this.tooltipTitle.style.fontSize=this.tConfig.style.fontSize,i.appendChild(this.tooltipTitle));var a=e.globals.series.length;(e.globals.xyCharts||e.globals.comboCharts)&&this.tConfig.shared&&(a=this.showOnIntersect?1:e.globals.series.length),this.ttItems=this.createTTElements(a),this.addSVGEvents()}}},{key:"createTTElements",value:function(t){for(var e=this.w,i=[],s=this.getElTooltip(),a=0;a<t;a++){var n=document.createElement("div");n.classList.add("apexcharts-tooltip-series-group"),this.tConfig.shared&&this.tConfig.enabledOnSeries&&Array.isArray(this.tConfig.enabledOnSeries)&&this.tConfig.enabledOnSeries.indexOf(a)<0&&n.classList.add("apexcharts-tooltip-series-group-hidden");var r=document.createElement("span");r.classList.add("apexcharts-tooltip-marker"),r.style.backgroundColor=e.globals.colors[a],n.appendChild(r);var o=document.createElement("div");o.classList.add("apexcharts-tooltip-text"),o.style.fontFamily=this.tConfig.style.fontFamily||e.config.chart.fontFamily,o.style.fontSize=this.tConfig.style.fontSize;var l=document.createElement("div");l.classList.add("apexcharts-tooltip-y-group");var h=document.createElement("span");h.classList.add("apexcharts-tooltip-text-label"),l.appendChild(h);var c=document.createElement("span");c.classList.add("apexcharts-tooltip-text-value"),l.appendChild(c);var d=document.createElement("div");d.classList.add("apexcharts-tooltip-z-group");var u=document.createElement("span");u.classList.add("apexcharts-tooltip-text-z-label"),d.appendChild(u);var g=document.createElement("span");g.classList.add("apexcharts-tooltip-text-z-value"),d.appendChild(g),o.appendChild(l),o.appendChild(d),n.appendChild(o),s.appendChild(n),i.push(n)}return i}},{key:"addSVGEvents",value:function(){var t=this.w,e=t.config.chart.type,i=this.getElTooltip(),s=!("bar"!==e&&"candlestick"!==e&&"rangeBar"!==e),a=t.globals.dom.Paper.node,n=this.getElGrid();n&&(this.seriesBound=n.getBoundingClientRect());var r,o=[],l=[],h={hoverArea:a,elGrid:n,tooltipEl:i,tooltipY:o,tooltipX:l,ttItems:this.ttItems};if(t.globals.axisCharts&&("area"===e||"line"===e||"scatter"===e||"bubble"===e?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series[data\\:longestSeries='true'] .apexcharts-marker"):s?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-bar-area, .apexcharts-series .apexcharts-candlestick-area, .apexcharts-series .apexcharts-rangebar-area"):"heatmap"===e?r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-heatmap"):"radar"===e&&(r=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series .apexcharts-marker")),r&&r.length))for(var c=0;c<r.length;c++)o.push(r[c].getAttribute("cy")),l.push(r[c].getAttribute("cx"));if(t.globals.xyCharts&&!this.showOnIntersect||t.globals.comboCharts&&!this.showOnIntersect||s&&this.hasBars()&&this.tConfig.shared)this.addPathsEventListeners([a],h);else if(s&&!t.globals.comboCharts)this.addBarsEventListeners(h);else if("bubble"===e||"scatter"===e||"radar"===e||this.showOnIntersect&&("area"===e||"line"===e))this.addPointsEventsListeners(h);else if(!t.globals.axisCharts||"heatmap"===e){var d=t.globals.dom.baseEl.querySelectorAll(".apexcharts-series");this.addPathsEventListeners(d,h)}if(this.showOnIntersect){var u=t.globals.dom.baseEl.querySelectorAll(".apexcharts-line-series .apexcharts-marker");u.length>0&&this.addPathsEventListeners(u,h);var g=t.globals.dom.baseEl.querySelectorAll(".apexcharts-area-series .apexcharts-marker");g.length>0&&this.addPathsEventListeners(g,h),this.hasBars()&&!this.tConfig.shared&&this.addBarsEventListeners(h)}}},{key:"drawFixedTooltipRect",value:function(){var t=this.w,e=this.getElTooltip(),i=e.getBoundingClientRect(),s=i.width+10,a=i.height+10,n=this.tConfig.fixed.offsetX,r=this.tConfig.fixed.offsetY;return this.tConfig.fixed.position.toLowerCase().indexOf("right")>-1&&(n=n+t.globals.svgWidth-s+10),this.tConfig.fixed.position.toLowerCase().indexOf("bottom")>-1&&(r=r+t.globals.svgHeight-a-10),e.style.left=n+"px",e.style.top=r+"px",{x:n,y:r,ttWidth:s,ttHeight:a}}},{key:"addPointsEventsListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker");this.addPathsEventListeners(e,t)}},{key:"addBarsEventListeners",value:function(t){var e=this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-area, .apexcharts-candlestick-area, .apexcharts-rangebar-area");this.addPathsEventListeners(e,t)}},{key:"addPathsEventListeners",value:function(t,e){for(var i=this,s=this,a=function(a){var n={paths:t[a],tooltipEl:e.tooltipEl,tooltipY:e.tooltipY,tooltipX:e.tooltipX,elGrid:e.elGrid,hoverArea:e.hoverArea,ttItems:e.ttItems};i.w.globals.tooltipOpts=n;["mousemove","mouseup","touchmove","mouseout","touchend"].map(function(e){return t[a].addEventListener(e,s.seriesHover.bind(s,n),{capture:!1,passive:!0})})},n=0;n<t.length;n++)a(n)}},{key:"seriesHover",value:function(t,e){var i=this,s=[],a=this.w;a.config.chart.group&&(s=this.ctx.getGroupedCharts()),a.globals.axisCharts&&(a.globals.minX===-1/0&&a.globals.maxX===1/0||0===a.globals.dataPoints)||(s.length?s.forEach(function(s){var a=i.getElTooltip(s),n={paths:t.paths,tooltipEl:a,tooltipY:t.tooltipY,tooltipX:t.tooltipX,elGrid:t.elGrid,hoverArea:t.hoverArea,ttItems:s.w.globals.tooltip.ttItems};s.w.globals.minX===i.w.globals.minX&&s.w.globals.maxX===i.w.globals.maxX&&s.w.globals.tooltip.seriesHoverByContext({chartCtx:s,ttCtx:s.w.globals.tooltip,opt:n,e:e})}):this.seriesHoverByContext({chartCtx:this.ctx,ttCtx:this.w.globals.tooltip,opt:t,e:e}))}},{key:"seriesHoverByContext",value:function(t){var e=t.chartCtx,i=t.ttCtx,s=t.opt,a=t.e,n=e.w,r=this.getElTooltip();(i.tooltipRect={x:0,y:0,ttWidth:r.getBoundingClientRect().width,ttHeight:r.getBoundingClientRect().height},i.e=a,!i.hasBars()||n.globals.comboCharts||i.isBarShared)||this.tConfig.onDatasetHover.highlightDataSeries&&new G(e).toggleSeriesOnHover(a,a.target.parentNode);i.fixedTooltip&&i.drawFixedTooltipRect(),n.globals.axisCharts?i.axisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect}):i.nonAxisChartsTooltips({e:a,opt:s,tooltipRect:i.tooltipRect})}},{key:"axisChartsTooltips",value:function(t){var e,i,s,a=t.e,n=t.opt,r=this.w,o=null,l=n.elGrid.getBoundingClientRect(),h="touchmove"===a.type?a.touches[0].clientX:a.clientX,c="touchmove"===a.type?a.touches[0].clientY:a.clientY;if(this.clientY=c,this.clientX=h,c<l.top||c>l.top+l.height)this.handleMouseOut(n);else{if(Array.isArray(this.tConfig.enabledOnSeries)){var d=parseInt(n.paths.getAttribute("index"));if(this.tConfig.enabledOnSeries.indexOf(d)<0)return void this.handleMouseOut(n)}var u=this.getElTooltip(),g=this.getElXCrosshairs(),f=r.globals.xyCharts||"bar"===r.config.chart.type&&!r.globals.isBarHorizontal&&this.hasBars()&&this.tConfig.shared||r.globals.comboCharts&&this.hasBars;if(r.globals.isBarHorizontal&&this.hasBars()&&(f=!1),"mousemove"===a.type||"touchmove"===a.type||"mouseup"===a.type){if(null!==g&&g.classList.add("active"),null!==this.ycrosshairs&&this.blyaxisTooltip&&this.ycrosshairs.classList.add("active"),f&&!this.showOnIntersect){e=(o=this.tooltipUtil.getNearestValues({context:this,hoverArea:n.hoverArea,elGrid:n.elGrid,clientX:h,clientY:c,hasBars:this.hasBars})).j;var p=o.capturedSeries;if(o.hoverX<0||o.hoverX>r.globals.gridWidth)return void this.handleMouseOut(n);if(null!==p){if(null===r.globals.series[p][e])return void n.tooltipEl.classList.remove("active");void 0!==r.globals.series[p][e]?this.tConfig.shared&&this.tooltipUtil.isXoverlap(e)&&this.tooltipUtil.isinitialSeriesSameLen()?this.create(a,this,p,e,n.ttItems):this.create(a,this,p,e,n.ttItems,!1):this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,n.ttItems)}else this.tooltipUtil.isXoverlap(e)&&this.create(a,this,0,e,n.ttItems)}else if("heatmap"===r.config.chart.type){var x=this.intersect.handleHeatTooltip({e:a,opt:n,x:i,y:s});i=x.x,s=x.y,u.style.left=i+"px",u.style.top=s+"px"}else this.hasBars&&this.intersect.handleBarTooltip({e:a,opt:n}),this.hasMarkers&&this.intersect.handleMarkerTooltip({e:a,opt:n,x:i,y:s});if(this.blyaxisTooltip)for(var b=0;b<r.config.yaxis.length;b++)this.axesTooltip.drawYaxisTooltipText(b,c,this.xyRatios);n.tooltipEl.classList.add("active")}else"mouseout"!==a.type&&"touchend"!==a.type||this.handleMouseOut(n)}}},{key:"nonAxisChartsTooltips",value:function(t){var e=t.e,i=t.opt,s=t.tooltipRect,a=this.w,n=i.paths.getAttribute("rel"),r=this.getElTooltip(),o=a.globals.dom.elWrap.getBoundingClientRect();if("mousemove"===e.type||"touchmove"===e.type){r.classList.add("active"),this.tooltipLabels.drawSeriesTexts({ttItems:i.ttItems,i:parseInt(n)-1,shared:!1});var l=a.globals.clientX-o.left-s.ttWidth/2,h=a.globals.clientY-o.top-s.ttHeight-10;r.style.left=l+"px",r.style.top=h+"px"}else"mouseout"!==e.type&&"touchend"!==e.type||r.classList.remove("active")}},{key:"deactivateHoverFilter",value:function(){for(var t=this.w,e=new f(this.ctx),i=t.globals.dom.Paper.select(".apexcharts-bar-area"),s=0;s<i.length;s++)e.pathMouseLeave(i[s])}},{key:"handleMouseOut",value:function(t){var e=this.w,i=this.getElXCrosshairs();if(t.tooltipEl.classList.remove("active"),this.deactivateHoverFilter(),"bubble"!==e.config.chart.type&&this.marker.resetPointsSize(),null!==i&&i.classList.remove("active"),null!==this.ycrosshairs&&this.ycrosshairs.classList.remove("active"),this.blxaxisTooltip&&this.xaxisTooltip.classList.remove("active"),this.blyaxisTooltip){null===this.yaxisTTEls&&(this.yaxisTTEls=e.globals.dom.baseEl.querySelectorAll(".apexcharts-yaxistooltip"));for(var s=0;s<this.yaxisTTEls.length;s++)this.yaxisTTEls[s].classList.remove("active")}}},{key:"getElMarkers",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(" .apexcharts-series-markers")}},{key:"getAllMarkers",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-series-markers .apexcharts-marker")}},{key:"hasMarkers",value:function(){return this.getElMarkers().length>0}},{key:"getElBars",value:function(){return this.w.globals.dom.baseEl.querySelectorAll(".apexcharts-bar-series, .apexcharts-candlestick-series, .apexcharts-rangebar-series")}},{key:"hasBars",value:function(){return this.getElBars().length>0}},{key:"markerClick",value:function(t,e,i){var s=this.w;"function"==typeof s.config.chart.events.markerClick&&s.config.chart.events.markerClick(t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}),this.ctx.fireEvent("markerClick",[t,this.ctx,{seriesIndex:e,dataPointIndex:i,w:s}])}},{key:"create",value:function(t,e,i,s,a){var n=arguments.length>5&&void 0!==arguments[5]?arguments[5]:null,r=this.w,o=e;"mouseup"===t.type&&this.markerClick(t,i,s),null===n&&(n=this.tConfig.shared);var l=this.hasMarkers(),h=this.getElBars();if(n){if(o.tooltipLabels.drawSeriesTexts({ttItems:a,i:i,j:s,shared:!this.showOnIntersect&&this.tConfig.shared}),l&&(r.globals.markers.largestSize>0?o.marker.enlargePoints(s):o.tooltipPosition.moveDynamicPointsOnHover(s)),this.hasBars()&&(this.barSeriesHeight=this.tooltipUtil.getBarsHeight(h),this.barSeriesHeight>0)){var c=new f(this.ctx),d=r.globals.dom.Paper.select(".apexcharts-bar-area[j='".concat(s,"']"));this.deactivateHoverFilter(),this.tooltipPosition.moveStickyTooltipOverBars(s);for(var u=0;u<d.length;u++)c.pathMouseEnter(d[u])}}else o.tooltipLabels.drawSeriesTexts({shared:!1,ttItems:a,i:i,j:s}),this.hasBars()&&o.tooltipPosition.moveStickyTooltipOverBars(s),l&&o.tooltipPosition.moveMarkers(i,s)}}]),t}(),bt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w,this.ev=this.w.config.chart.events,this.localeValues=this.w.globals.locale.toolbar}return s(t,[{key:"createToolbar",value:function(){var t=this.w,e=document.createElement("div");if(e.setAttribute("class","apexcharts-toolbar"),t.globals.dom.elWrap.appendChild(e),this.elZoom=document.createElement("div"),this.elZoomIn=document.createElement("div"),this.elZoomOut=document.createElement("div"),this.elPan=document.createElement("div"),this.elSelection=document.createElement("div"),this.elZoomReset=document.createElement("div"),this.elMenuIcon=document.createElement("div"),this.elMenu=document.createElement("div"),this.elCustomIcons=[],this.t=t.config.chart.toolbar.tools,Array.isArray(this.t.customIcons))for(var i=0;i<this.t.customIcons.length;i++)this.elCustomIcons.push(document.createElement("div"));this.elMenuItems=[];var s=[];this.t.zoomin&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomIn,icon:"string"==typeof this.t.zoomin?this.t.zoomin:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n <path d="M0 0h24v24H0z" fill="none"/>\n <path d="M13 7h-2v4H7v2h4v4h2v-4h4v-2h-4V7zm-1-5C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n',title:this.localeValues.zoomIn,class:"apexcharts-zoom-in-icon"}),this.t.zoomout&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomOut,icon:"string"==typeof this.t.zoomout?this.t.zoomout:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24">\n <path d="M0 0h24v24H0z" fill="none"/>\n <path d="M7 11v2h10v-2H7zm5-9C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\n</svg>\n',title:this.localeValues.zoomOut,class:"apexcharts-zoom-out-icon"}),this.t.zoom&&t.config.chart.zoom.enabled&&s.push({el:this.elZoom,icon:"string"==typeof this.t.zoom?this.t.zoom:'<svg xmlns="http://www.w3.org/2000/svg" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n <path d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>\n <path d="M0 0h24v24H0V0z" fill="none"/>\n <path d="M12 10h-2v2H9v-2H7V9h2V7h1v2h2v1z"/>\n</svg>',title:this.localeValues.selectionZoom,class:t.globals.isTouchDevice?"hidden":"apexcharts-zoom-icon"}),this.t.selection&&t.config.chart.selection.enabled&&s.push({el:this.elSelection,icon:"string"==typeof this.t.selection?this.t.selection:'<svg fill="#6E8192" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n <path d="M0 0h24v24H0z" fill="none"/>\n <path d="M3 5h2V3c-1.1 0-2 .9-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2c0-1.1-.9-2-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8c1.1 0 2-.9 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2z"/>\n</svg>',title:this.localeValues.selection,class:t.globals.isTouchDevice?"hidden":"apexcharts-selection-icon"}),this.t.pan&&t.config.chart.zoom.enabled&&s.push({el:this.elPan,icon:"string"==typeof this.t.pan?this.t.pan:'<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" fill="#000000" height="24" viewBox="0 0 24 24" width="24">\n <defs>\n <path d="M0 0h24v24H0z" id="a"/>\n </defs>\n <clipPath id="b">\n <use overflow="visible" xlink:href="#a"/>\n </clipPath>\n <path clip-path="url(#b)" d="M23 5.5V20c0 2.2-1.8 4-4 4h-7.3c-1.08 0-2.1-.43-2.85-1.19L1 14.83s1.26-1.23 1.3-1.25c.22-.19.49-.29.79-.29.22 0 .42.06.6.16.04.01 4.31 2.46 4.31 2.46V4c0-.83.67-1.5 1.5-1.5S11 3.17 11 4v7h1V1.5c0-.83.67-1.5 1.5-1.5S15 .67 15 1.5V11h1V2.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5V11h1V5.5c0-.83.67-1.5 1.5-1.5s1.5.67 1.5 1.5z"/>\n</svg>',title:this.localeValues.pan,class:t.globals.isTouchDevice?"hidden":"apexcharts-pan-icon"}),this.t.reset&&t.config.chart.zoom.enabled&&s.push({el:this.elZoomReset,icon:"string"==typeof this.t.reset?this.t.reset:'<svg fill="#000000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg">\n <path d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/>\n <path d="M0 0h24v24H0z" fill="none"/>\n</svg>',title:this.localeValues.reset,class:"apexcharts-reset-zoom-icon"}),this.t.download&&s.push({el:this.elMenuIcon,icon:"string"==typeof this.t.download?this.t.download:'<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0V0z"/><path d="M3 18h18v-2H3v2zm0-5h18v-2H3v2zm0-7v2h18V6H3z"/></svg>',title:this.localeValues.menu,class:"apexcharts-menu-icon"});for(var a=0;a<this.elCustomIcons.length;a++)s.push({el:this.elCustomIcons[a],icon:this.t.customIcons[a].icon,title:this.t.customIcons[a].title,index:this.t.customIcons[a].index,class:"apexcharts-toolbar-custom-icon "+this.t.customIcons[a].class});s.forEach(function(t,e){t.index&&d.moveIndexInArray(s,e,t.index)});for(var n=0;n<s.length;n++)f.setAttrs(s[n].el,{class:s[n].class,title:s[n].title}),s[n].el.innerHTML=s[n].icon,e.appendChild(s[n].el);e.appendChild(this.elMenu),f.setAttrs(this.elMenu,{class:"apexcharts-menu"});for(var r=[{name:"exportSVG",title:this.localeValues.exportToSVG},{name:"exportPNG",title:this.localeValues.exportToPNG}],o=0;o<r.length;o++)this.elMenuItems.push(document.createElement("div")),this.elMenuItems[o].innerHTML=r[o].title,f.setAttrs(this.elMenuItems[o],{class:"apexcharts-menu-item ".concat(r[o].name),title:r[o].title}),this.elMenu.appendChild(this.elMenuItems[o]);t.globals.zoomEnabled?this.elZoom.classList.add("selected"):t.globals.panEnabled?this.elPan.classList.add("selected"):t.globals.selectionEnabled&&this.elSelection.classList.add("selected"),this.addToolbarEventListeners()}},{key:"addToolbarEventListeners",value:function(){var t=this;this.elZoomReset.addEventListener("click",this.handleZoomReset.bind(this)),this.elSelection.addEventListener("click",this.toggleSelection.bind(this)),this.elZoom.addEventListener("click",this.toggleZooming.bind(this)),this.elZoomIn.addEventListener("click",this.handleZoomIn.bind(this)),this.elZoomOut.addEventListener("click",this.handleZoomOut.bind(this)),this.elPan.addEventListener("click",this.togglePanning.bind(this)),this.elMenuIcon.addEventListener("click",this.toggleMenu.bind(this)),this.elMenuItems.forEach(function(e){e.classList.contains("exportSVG")?e.addEventListener("click",t.downloadSVG.bind(t)):e.classList.contains("exportPNG")&&e.addEventListener("click",t.downloadPNG.bind(t))});for(var e=0;e<this.t.customIcons.length;e++)this.elCustomIcons[e].addEventListener("click",this.t.customIcons[e].click)}},{key:"toggleSelection",value:function(){this.toggleOtherControls(),this.w.globals.selectionEnabled=!this.w.globals.selectionEnabled,this.elSelection.classList.contains("selected")?this.elSelection.classList.remove("selected"):this.elSelection.classList.add("selected")}},{key:"toggleZooming",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!this.w.globals.zoomEnabled,this.elZoom.classList.contains("selected")?this.elZoom.classList.remove("selected"):this.elZoom.classList.add("selected")}},{key:"getToolbarIconsReference",value:function(){var t=this.w;this.elZoom||(this.elZoom=t.globals.dom.baseEl.querySelector(".apexcharts-zoom-icon")),this.elPan||(this.elPan=t.globals.dom.baseEl.querySelector(".apexcharts-pan-icon")),this.elSelection||(this.elSelection=t.globals.dom.baseEl.querySelector(".apexcharts-selection-icon"))}},{key:"enableZooming",value:function(){this.toggleOtherControls(),this.w.globals.zoomEnabled=!0,this.elZoom&&this.elZoom.classList.add("selected"),this.elPan&&this.elPan.classList.remove("selected")}},{key:"enablePanning",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!0,this.elPan&&this.elPan.classList.add("selected"),this.elZoom&&this.elZoom.classList.remove("selected")}},{key:"togglePanning",value:function(){this.toggleOtherControls(),this.w.globals.panEnabled=!this.w.globals.panEnabled,this.elPan.classList.contains("selected")?this.elPan.classList.remove("selected"):this.elPan.classList.add("selected")}},{key:"toggleOtherControls",value:function(){var t=this.w;t.globals.panEnabled=!1,t.globals.zoomEnabled=!1,t.globals.selectionEnabled=!1,this.getToolbarIconsReference(),this.elPan&&this.elPan.classList.remove("selected"),this.elSelection&&this.elSelection.classList.remove("selected"),this.elZoom&&this.elZoom.classList.remove("selected")}},{key:"handleZoomIn",value:function(){var t=this.w,e=(t.globals.minX+t.globals.maxX)/2,i=(t.globals.minX+e)/2,s=(t.globals.maxX+e)/2;t.globals.disableZoomIn||this.zoomUpdateOptions(i,s)}},{key:"handleZoomOut",value:function(){var t=this.w;if(!("datetime"===t.config.xaxis.type&&new Date(t.globals.minX).getUTCFullYear()<1e3)){var e=(t.globals.minX+t.globals.maxX)/2,i=t.globals.minX-(e-t.globals.minX),s=t.globals.maxX-(e-t.globals.maxX);t.globals.disableZoomOut||this.zoomUpdateOptions(i,s)}}},{key:"zoomUpdateOptions",value:function(t,e){var i={min:t,max:e},s=this.getBeforeZoomRange(i);s&&(i=s.xaxis),this.w.globals.zoomed=!0,this.ctx._updateOptions({xaxis:i},!1,this.w.config.chart.animations.dynamicAnimation.enabled),this.zoomCallback(i)}},{key:"zoomCallback",value:function(t,e){"function"==typeof this.ev.zoomed&&this.ev.zoomed(this.ctx,{xaxis:t,yaxis:e})}},{key:"getBeforeZoomRange",value:function(t,e){var i=null;return"function"==typeof this.ev.beforeZoom&&(i=this.ev.beforeZoom(this,{xaxis:t,yaxis:e})),i}},{key:"toggleMenu",value:function(){this.elMenu.classList.contains("open")?this.elMenu.classList.remove("open"):this.elMenu.classList.add("open")}},{key:"downloadPNG",value:function(){var t=new nt(this.ctx);t.exportToPng(this.ctx),this.toggleMenu()}},{key:"downloadSVG",value:function(){var t=new nt(this.ctx);t.exportToSVG(),this.toggleMenu()}},{key:"handleZoomReset",value:function(t){var e=this;this.ctx.getSyncedCharts().forEach(function(t){var i=t.w;i.globals.minX!==i.globals.initialminX&&i.globals.maxX!==i.globals.initialmaxX&&(t.revertDefaultAxisMinMax(),"function"==typeof i.config.chart.events.zoomed&&e.zoomCallback({min:i.config.xaxis.min,max:i.config.xaxis.max}),i.globals.zoomed=!1,t._updateSeries(i.globals.initialSeries,i.config.chart.animations.dynamicAnimation.enabled))})}},{key:"destroy",value:function(){this.elZoomReset&&(this.elZoomReset.removeEventListener("click",this.handleZoomReset.bind(this)),this.elSelection.removeEventListener("click",this.toggleSelection.bind(this)),this.elZoom.removeEventListener("click",this.toggleZooming.bind(this)),this.elZoomIn.removeEventListener("click",this.handleZoomIn.bind(this)),this.elZoomOut.removeEventListener("click",this.handleZoomOut.bind(this)),this.elPan.removeEventListener("click",this.togglePanning.bind(this)),this.elMenuIcon.removeEventListener("click",this.toggleMenu.bind(this))),this.elZoom=null,this.elZoomIn=null,this.elZoomOut=null,this.elPan=null,this.elSelection=null,this.elZoomReset=null,this.elMenuIcon=null}}]),t}(),mt=function(t){function i(t){var s;return e(this,i),(s=h(this,o(i).call(this,t))).ctx=t,s.w=t.w,s.dragged=!1,s.graphics=new f(s.ctx),s.eventList=["mousedown","mousemove","touchstart","touchmove","mouseup","touchend"],s.clientX=0,s.clientY=0,s.startX=0,s.endX=0,s.dragX=0,s.startY=0,s.endY=0,s.dragY=0,s}return r(i,bt),s(i,[{key:"init",value:function(t){var e=this,i=t.xyRatios,s=this.w,a=this;this.xyRatios=i,this.zoomRect=this.graphics.drawRect(0,0,0,0),this.selectionRect=this.graphics.drawRect(0,0,0,0),this.gridRect=s.globals.dom.baseEl.querySelector(".apexcharts-grid"),this.zoomRect.node.classList.add("apexcharts-zoom-rect"),this.selectionRect.node.classList.add("apexcharts-selection-rect"),s.globals.dom.elGraphical.add(this.zoomRect),s.globals.dom.elGraphical.add(this.selectionRect),"x"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,minY:0,maxX:s.globals.gridWidth,maxY:s.globals.gridHeight}).on("dragmove",this.selectionDragging.bind(this,"dragging")):"y"===s.config.chart.selection.type?this.slDraggableRect=this.selectionRect.draggable({minX:0,maxX:s.globals.gridWidth}).on("dragmove",this.selectionDragging.bind(this,"dragging")):this.slDraggableRect=this.selectionRect.draggable().on("dragmove",this.selectionDragging.bind(this,"dragging")),this.preselectedSelection(),this.hoverArea=s.globals.dom.baseEl.querySelector(s.globals.chartClass),this.hoverArea.classList.add("zoomable"),this.eventList.forEach(function(t){e.hoverArea.addEventListener(t,a.svgMouseEvents.bind(a,i),{capture:!1,passive:!0})})}},{key:"destroy",value:function(){var t=this,e=this;this.eventList.forEach(function(i){t.hoverArea&&t.hoverArea.removeEventListener(i,e.svgMouseEvents.bind(e,e.xyRatios),{capture:!1,passive:!0})}),this.slDraggableRect&&(this.slDraggableRect.draggable(!1),this.slDraggableRect.off(),this.selectionRect.off()),this.selectionRect=null,this.zoomRect=null,this.gridRect=null}},{key:"svgMouseEvents",value:function(t,e){var i=this.w,s=this,a=this.ctx.toolbar,n=i.globals.zoomEnabled?i.config.chart.zoom.type:i.config.chart.selection.type;if(e.shiftKey?(this.shiftWasPressed=!0,a.enablePanning()):this.shiftWasPressed&&(a.enableZooming(),this.shiftWasPressed=!1),!(e.target.classList.contains("apexcharts-selection-rect")||e.target.parentNode.classList.contains("apexcharts-toolbar"))){if(s.clientX="touchmove"===e.type||"touchstart"===e.type?e.touches[0].clientX:"touchend"===e.type?e.changedTouches[0].clientX:e.clientX,s.clientY="touchmove"===e.type||"touchstart"===e.type?e.touches[0].clientY:"touchend"===e.type?e.changedTouches[0].clientY:e.clientY,"mousedown"===e.type&&1===e.which){var r=s.gridRect.getBoundingClientRect();s.startX=s.clientX-r.left,s.startY=s.clientY-r.top,s.dragged=!1,s.w.globals.mousedown=!0}if(("mousemove"===e.type&&1===e.which||"touchmove"===e.type)&&(s.dragged=!0,i.globals.panEnabled?(i.globals.selection=null,s.w.globals.mousedown&&s.panDragging({context:s,zoomtype:n,xyRatios:t})):(s.w.globals.mousedown&&i.globals.zoomEnabled||s.w.globals.mousedown&&i.globals.selectionEnabled)&&(s.selection=s.selectionDrawing({context:s,zoomtype:n}))),"mouseup"===e.type||"touchend"===e.type){var o=s.gridRect.getBoundingClientRect();s.w.globals.mousedown&&(s.endX=s.clientX-o.left,s.endY=s.clientY-o.top,s.dragX=Math.abs(s.endX-s.startX),s.dragY=Math.abs(s.endY-s.startY),(i.globals.zoomEnabled||i.globals.selectionEnabled)&&s.selectionDrawn({context:s,zoomtype:n})),i.globals.zoomEnabled&&s.hideSelectionRect(this.selectionRect),s.dragged=!1,s.w.globals.mousedown=!1}this.makeSelectionRectDraggable()}}},{key:"makeSelectionRectDraggable",value:function(){var t=this.w;if(this.selectionRect){var e=this.selectionRect.node.getBoundingClientRect();e.width>0&&e.height>0&&this.slDraggableRect.selectize().resize({constraint:{minX:0,minY:0,maxX:t.globals.gridWidth,maxY:t.globals.gridHeight}}).on("resizing",this.selectionDragging.bind(this,"resizing"))}}},{key:"preselectedSelection",value:function(){var t=this.w,e=this.xyRatios;if(!t.globals.zoomEnabled)if(void 0!==t.globals.selection&&null!==t.globals.selection)this.drawSelectionRect(t.globals.selection);else if(void 0!==t.config.chart.selection.xaxis.min&&void 0!==t.config.chart.selection.xaxis.max){var i=(t.config.chart.selection.xaxis.min-t.globals.minX)/e.xRatio,s={x:i,y:0,width:t.globals.gridWidth-(t.globals.maxX-t.config.chart.selection.xaxis.max)/e.xRatio-i,height:t.globals.gridHeight,translateX:0,translateY:0,selectionEnabled:!0};this.drawSelectionRect(s),this.makeSelectionRectDraggable(),"function"==typeof t.config.chart.events.selection&&t.config.chart.events.selection(this.ctx,{xaxis:{min:t.config.chart.selection.xaxis.min,max:t.config.chart.selection.xaxis.max},yaxis:{}})}}},{key:"drawSelectionRect",value:function(t){var e=t.x,i=t.y,s=t.width,a=t.height,n=t.translateX,r=t.translateY,o=this.w,l=this.zoomRect,h=this.selectionRect;if(this.dragged||null!==o.globals.selection){var c={transform:"translate("+n+", "+r+")"};o.globals.zoomEnabled&&this.dragged&&(l.attr({x:e,y:i,width:s,height:a,fill:o.config.chart.zoom.zoomedArea.fill.color,"fill-opacity":o.config.chart.zoom.zoomedArea.fill.opacity,stroke:o.config.chart.zoom.zoomedArea.stroke.color,"stroke-width":o.config.chart.zoom.zoomedArea.stroke.width,"stroke-opacity":o.config.chart.zoom.zoomedArea.stroke.opacity}),f.setAttrs(l.node,c)),o.globals.selectionEnabled&&(h.attr({x:e,y:i,width:s>0?s:0,height:a>0?a:0,fill:o.config.chart.selection.fill.color,"fill-opacity":o.config.chart.selection.fill.opacity,stroke:o.config.chart.selection.stroke.color,"stroke-width":o.config.chart.selection.stroke.width,"stroke-dasharray":o.config.chart.selection.stroke.dashArray,"stroke-opacity":o.config.chart.selection.stroke.opacity}),f.setAttrs(h.node,c))}}},{key:"hideSelectionRect",value:function(t){t&&t.attr({x:0,y:0,width:0,height:0})}},{key:"selectionDrawing",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,n=this.gridRect.getBoundingClientRect(),r=a.startX-1,o=a.startY,l=a.clientX-n.left-r,h=a.clientY-n.top-o,c=0,d=0,u={};return(Math.abs(l+r)>s.globals.gridWidth||a.clientX-n.left<0)&&(a.hideSelectionRect(this.zoomRect),a.dragged=!1,a.w.globals.mousedown=!1),r>a.clientX-n.left&&(c=-(l=Math.abs(l))),o>a.clientY-n.top&&(d=-(h=Math.abs(h))),u="x"===i?{x:r,y:0,width:l,height:s.globals.gridHeight,translateX:c,translateY:0}:"y"===i?{x:0,y:o,width:s.globals.gridWidth,height:h,translateX:0,translateY:d}:{x:r,y:o,width:l,height:h,translateX:c,translateY:d},a.drawSelectionRect(u),a.selectionDragging("resizing"),u}},{key:"selectionDragging",value:function(t,e){var i=this,s=this.w,a=this.xyRatios,n=this.selectionRect,r=0;"resizing"===t&&(r=30),"function"==typeof s.config.chart.events.selection&&s.globals.selectionEnabled&&(clearTimeout(this.w.globals.selectionResizeTimer),this.w.globals.selectionResizeTimer=window.setTimeout(function(){var t=i.gridRect.getBoundingClientRect(),e=n.node.getBoundingClientRect(),r=s.globals.xAxisScale.niceMin+(e.left-t.left)*a.xRatio,o=s.globals.xAxisScale.niceMin+(e.right-t.left)*a.xRatio,l=s.globals.yAxisScale[0].niceMin+(t.bottom-e.bottom)*a.yRatio[0],h=s.globals.yAxisScale[0].niceMax-(e.top-t.top)*a.yRatio[0];s.config.chart.events.selection(i.ctx,{xaxis:{min:r,max:o},yaxis:{min:l,max:h}})},r))}},{key:"selectionDrawn",value:function(t){var e=t.context,i=t.zoomtype,s=this.w,a=e,n=this.xyRatios,r=this.ctx.toolbar;if(a.startX>a.endX){var o=a.startX;a.startX=a.endX,a.endX=o}if(a.startY>a.endY){var l=a.startY;a.startY=a.endY,a.endY=l}var h=s.globals.xAxisScale.niceMin+a.startX*n.xRatio,c=s.globals.xAxisScale.niceMin+a.endX*n.xRatio,u=[],g=[];if(s.config.yaxis.forEach(function(t,e){u.push(Math.floor(s.globals.yAxisScale[e].niceMax-n.yRatio[e]*a.startY)),g.push(Math.floor(s.globals.yAxisScale[e].niceMax-n.yRatio[e]*a.endY))}),a.dragged&&(a.dragX>10||a.dragY>10)&&h!==c)if(s.globals.zoomEnabled){var f=d.clone(s.config.yaxis);s.globals.zoomed||(s.globals.lastXAxis=d.clone(s.config.xaxis),s.globals.lastYAxis=d.clone(s.config.yaxis));var p={min:h,max:c};if("xy"!==i&&"y"!==i||f.forEach(function(t,e){f[e].min=g[e],f[e].max=u[e]}),s.config.chart.zoom.autoScaleYaxis){var x=new B(a.ctx);f=x.autoScaleY(a.ctx,{xaxis:p})}if(r){var b=r.getBeforeZoomRange(p,f);b&&(p=b.xaxis?b.xaxis:p,f=b.yaxis?b.yaxe:f)}a.ctx._updateOptions({xaxis:p,yaxis:f},!1,a.w.config.chart.animations.dynamicAnimation.enabled),"function"==typeof s.config.chart.events.zoomed&&r.zoomCallback(p,f),s.globals.zoomed=!0}else if(s.globals.selectionEnabled){var m,v=null;m={min:h,max:c},"xy"!==i&&"y"!==i||(v=d.clone(s.config.yaxis)).forEach(function(t,e){v[e].min=g[e],v[e].max=u[e]}),s.globals.selection=a.selection,"function"==typeof s.config.chart.events.selection&&s.config.chart.events.selection(a.ctx,{xaxis:m,yaxis:v})}}},{key:"panDragging",value:function(t){var e,i=t.context,s=(t.zoomtype,this.w),a=i;if(void 0!==s.globals.lastClientPosition.x){var n=s.globals.lastClientPosition.x-a.clientX,r=s.globals.lastClientPosition.y-a.clientY;Math.abs(n)>Math.abs(r)&&n>0?e="left":Math.abs(n)>Math.abs(r)&&n<0?e="right":Math.abs(r)>Math.abs(n)&&r>0?e="up":Math.abs(r)>Math.abs(n)&&r<0&&(e="down")}s.globals.lastClientPosition={x:a.clientX,y:a.clientY};var o=s.globals.minX,l=s.globals.maxX;this.panScrolled(e,o,l)}},{key:"panScrolled",value:function(t,e,i){var s=this.w,a=this.xyRatios,n=d.clone(s.config.yaxis);"left"===t?(e=s.globals.minX+s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX+s.globals.gridWidth/15*a.xRatio):"right"===t&&(e=s.globals.minX-s.globals.gridWidth/15*a.xRatio,i=s.globals.maxX-s.globals.gridWidth/15*a.xRatio),(e<s.globals.initialminX||i>s.globals.initialmaxX)&&(e=s.globals.minX,i=s.globals.maxX);var r={min:e,max:i};s.config.chart.zoom.autoScaleYaxis&&(n=new B(me.ctx).autoScaleY(me.ctx,{xaxis:r}));this.ctx._updateOptions({xaxis:{min:e,max:i},yaxis:n},!1,!1),"function"==typeof s.config.chart.events.scrolled&&s.config.chart.events.scrolled(this.ctx,{xaxis:{min:e,max:i}})}}]),i}(),vt=function(){function t(i){e(this,t),this.ctx=i,this.w=i.w}return s(t,[{key:"draw",value:function(){this.drawTitleSubtitle("title"),this.drawTitleSubtitle("subtitle")}},{key:"drawTitleSubtitle",value:function(t){var e=this.w,i="title"===t?e.config.title:e.config.subtitle,s=e.globals.svgWidth/2,a=i.offsetY,n="middle";if("left"===i.align?(s=10,n="start"):"right"===i.align&&(s=e.globals.svgWidth-10,n="end"),s+=i.offsetX,a=a+parseInt(i.style.fontSize)+2,void 0!==i.text){var r=new f(this.ctx).drawText({x:s,y:a,text:i.text,textAnchor:n,fontSize:i.style.fontSize,fontFamily:i.style.fontFamily,foreColor:i.style.color,opacity:1});r.node.setAttribute("class","apexcharts-".concat(t,"-text")),e.globals.dom.Paper.add(r)}}}]),t}();st="undefined"!=typeof window?window:void 0,at=function(e,i){var s=(void 0!==this?this:e).SVG=function(t){if(s.supported)return t=new s.Doc(t),s.parser.draw||s.prepare(),t};if(s.ns="http://www.w3.org/2000/svg",s.xmlns="http://www.w3.org/2000/xmlns/",s.xlink="http://www.w3.org/1999/xlink",s.svgjs="http://svgjs.com/svgjs",s.supported=!0,!s.supported)return!1;s.did=1e3,s.eid=function(t){return"Svgjs"+d(t)+s.did++},s.create=function(t){var e=i.createElementNS(this.ns,t);return e.setAttribute("id",this.eid(t)),e},s.extend=function(){var t,e,i,a;for(e=(t=[].slice.call(arguments)).pop(),a=t.length-1;a>=0;a--)if(t[a])for(i in e)t[a].prototype[i]=e[i];s.Set&&s.Set.inherit&&s.Set.inherit()},s.invent=function(t){var e="function"==typeof t.create?t.create:function(){this.constructor.call(this,s.create(t.create))};return t.inherit&&(e.prototype=new t.inherit),t.extend&&s.extend(e,t.extend),t.construct&&s.extend(t.parent||s.Container,t.construct),e},s.adopt=function(t){return t?t.instance?t.instance:((i="svg"==t.nodeName?t.parentNode instanceof e.SVGElement?new s.Nested:new s.Doc:"linearGradient"==t.nodeName?new s.Gradient("linear"):"radialGradient"==t.nodeName?new s.Gradient("radial"):s[d(t.nodeName)]?new(s[d(t.nodeName)]):new s.Element(t)).type=t.nodeName,i.node=t,t.instance=i,i instanceof s.Doc&&i.namespace().defs(),i.setData(JSON.parse(t.getAttribute("svgjs:data"))||{}),i):null;var i},s.prepare=function(){var t=i.getElementsByTagName("body")[0],e=(t?new s.Doc(t):s.adopt(i.documentElement).nested()).size(2,0);s.parser={body:t||i.documentElement,draw:e.style("opacity:0;position:absolute;left:-100%;top:-100%;overflow:hidden").node,poly:e.polyline().node,path:e.path().node,native:s.create("svg")}},s.parser={native:s.create("svg")},i.addEventListener("DOMContentLoaded",function(){s.parser.draw||s.prepare()},!1),s.regex={numberAndUnit:/^([+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?)([a-z%]*)$/i,hex:/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i,rgb:/rgb\((\d+),(\d+),(\d+)\)/,reference:/#([a-z0-9\-_]+)/i,transforms:/\)\s*,?\s*/,whitespace:/\s/g,isHex:/^#[a-f0-9]{3,6}$/i,isRgb:/^rgb\(/,isCss:/[^:]+:[^;]+;?/,isBlank:/^(\s+)?$/,isNumber:/^[+-]?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,isPercent:/^-?[\d\.]+%$/,isImage:/\.(jpg|jpeg|png|gif|svg)(\?[^=]+.*)?/i,delimiter:/[\s,]+/,hyphen:/([^e])\-/gi,pathLetters:/[MLHVCSQTAZ]/gi,isPathLetter:/[MLHVCSQTAZ]/i,numbersWithDots:/((\d?\.\d+(?:e[+-]?\d+)?)((?:\.\d+(?:e[+-]?\d+)?)+))+/gi,dots:/\./g},s.utils={map:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)a.push(e(t[i]));return a},filter:function(t,e){var i,s=t.length,a=[];for(i=0;i<s;i++)e(t[i])&&a.push(t[i]);return a},radians:function(t){return t%360*Math.PI/180},degrees:function(t){return 180*t/Math.PI%360},filterSVGElements:function(t){return this.filter(t,function(t){return t instanceof e.SVGElement})}},s.defaults={attrs:{"fill-opacity":1,"stroke-opacity":1,"stroke-width":0,"stroke-linejoin":"miter","stroke-linecap":"butt",fill:"#000000",stroke:"#000000",opacity:1,x:0,y:0,cx:0,cy:0,width:0,height:0,r:0,rx:0,ry:0,offset:0,"stop-opacity":1,"stop-color":"#000000","font-size":16,"font-family":"Helvetica, Arial, sans-serif","text-anchor":"start"}},s.Color=function(e){var i,a;(this.r=0,this.g=0,this.b=0,e)&&("string"==typeof e?s.regex.isRgb.test(e)?(i=s.regex.rgb.exec(e.replace(s.regex.whitespace,"")),this.r=parseInt(i[1]),this.g=parseInt(i[2]),this.b=parseInt(i[3])):s.regex.isHex.test(e)&&(i=s.regex.hex.exec(4==(a=e).length?["#",a.substring(1,2),a.substring(1,2),a.substring(2,3),a.substring(2,3),a.substring(3,4),a.substring(3,4)].join(""):a),this.r=parseInt(i[1],16),this.g=parseInt(i[2],16),this.b=parseInt(i[3],16)):"object"===t(e)&&(this.r=e.r,this.g=e.g,this.b=e.b))},s.extend(s.Color,{toString:function(){return this.toHex()},toHex:function(){return"#"+u(this.r)+u(this.g)+u(this.b)},toRgb:function(){return"rgb("+[this.r,this.g,this.b].join()+")"},brightness:function(){return this.r/255*.3+this.g/255*.59+this.b/255*.11},morph:function(t){return this.destination=new s.Color(t),this},at:function(t){return this.destination?(t=t<0?0:t>1?1:t,new s.Color({r:~~(this.r+(this.destination.r-this.r)*t),g:~~(this.g+(this.destination.g-this.g)*t),b:~~(this.b+(this.destination.b-this.b)*t)})):this}}),s.Color.test=function(t){return t+="",s.regex.isHex.test(t)||s.regex.isRgb.test(t)},s.Color.isRgb=function(t){return t&&"number"==typeof t.r&&"number"==typeof t.g&&"number"==typeof t.b},s.Color.isColor=function(t){return s.Color.isRgb(t)||s.Color.test(t)},s.Array=function(t,e){0==(t=(t||[]).valueOf()).length&&e&&(t=e.valueOf()),this.value=this.parse(t)},s.extend(s.Array,{morph:function(t){if(this.destination=this.parse(t),this.value.length!=this.destination.length){for(var e=this.value[this.value.length-1],i=this.destination[this.destination.length-1];this.value.length>this.destination.length;)this.destination.push(i);for(;this.value.length<this.destination.length;)this.value.push(e)}return this},settle:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)-1==i.indexOf(this.value[t])&&i.push(this.value[t]);return this.value=i},at:function(t){if(!this.destination)return this;for(var e=0,i=this.value.length,a=[];e<i;e++)a.push(this.value[e]+(this.destination[e]-this.value[e])*t);return new s.Array(a)},toString:function(){return this.value.join(" ")},valueOf:function(){return this.value},parse:function(t){return t=t.valueOf(),Array.isArray(t)?t:this.split(t)},split:function(t){return t.trim().split(s.regex.delimiter).map(parseFloat)},reverse:function(){return this.value.reverse(),this},clone:function(){var t=new this.constructor;return t.value=function t(e){var i=e.slice(0);for(var s=i.length;s--;)Array.isArray(i[s])&&(i[s]=t(i[s]));return i}(this.value),t}}),s.PointArray=function(t,e){s.Array.call(this,t,e||[[0,0]])},s.PointArray.prototype=new s.Array,s.PointArray.prototype.constructor=s.PointArray,s.extend(s.PointArray,{toString:function(){for(var t=0,e=this.value.length,i=[];t<e;t++)i.push(this.value[t].join(","));return i.join(" ")},toLine:function(){return{x1:this.value[0][0],y1:this.value[0][1],x2:this.value[1][0],y2:this.value[1][1]}},at:function(t){if(!this.destination)return this;for(var e=0,i=this.value.length,a=[];e<i;e++)a.push([this.value[e][0]+(this.destination[e][0]-this.value[e][0])*t,this.value[e][1]+(this.destination[e][1]-this.value[e][1])*t]);return new s.PointArray(a)},parse:function(t){var e=[];if(t=t.valueOf(),Array.isArray(t)){if(Array.isArray(t[0]))return t.map(function(t){return t.slice()});if(null!=t[0].x)return t.map(function(t){return[t.x,t.y]})}else t=t.trim().split(s.regex.delimiter).map(parseFloat);t.length%2!=0&&t.pop();for(var i=0,a=t.length;i<a;i+=2)e.push([t[i],t[i+1]]);return e},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s=this.value.length-1;s>=0;s--)this.value[s]=[this.value[s][0]+t,this.value[s][1]+e];return this},size:function(t,e){var i,s=this.bbox();for(i=this.value.length-1;i>=0;i--)s.width&&(this.value[i][0]=(this.value[i][0]-s.x)*t/s.width+s.x),s.height&&(this.value[i][1]=(this.value[i][1]-s.y)*e/s.height+s.y);return this},bbox:function(){return s.parser.draw||s.prepare(),s.parser.poly.setAttribute("points",this.toString()),s.parser.poly.getBBox()}});for(var a={M:function(t,e,i){return e.x=i.x=t[0],e.y=i.y=t[1],["M",e.x,e.y]},L:function(t,e){return e.x=t[0],e.y=t[1],["L",t[0],t[1]]},H:function(t,e){return e.x=t[0],["H",t[0]]},V:function(t,e){return e.y=t[0],["V",t[0]]},C:function(t,e){return e.x=t[4],e.y=t[5],["C",t[0],t[1],t[2],t[3],t[4],t[5]]},S:function(t,e){return e.x=t[2],e.y=t[3],["S",t[0],t[1],t[2],t[3]]},Q:function(t,e){return e.x=t[2],e.y=t[3],["Q",t[0],t[1],t[2],t[3]]},T:function(t,e){return e.x=t[0],e.y=t[1],["T",t[0],t[1]]},Z:function(t,e,i){return e.x=i.x,e.y=i.y,["Z"]},A:function(t,e){return e.x=t[5],e.y=t[6],["A",t[0],t[1],t[2],t[3],t[4],t[5],t[6]]}},n="mlhvqtcsaz".split(""),r=0,o=n.length;r<o;++r)a[n[r]]=function(t){return function(e,i,s){if("H"==t)e[0]=e[0]+i.x;else if("V"==t)e[0]=e[0]+i.y;else if("A"==t)e[5]=e[5]+i.x,e[6]=e[6]+i.y;else for(var n=0,r=e.length;n<r;++n)e[n]=e[n]+(n%2?i.y:i.x);return a[t](e,i,s)}}(n[r].toUpperCase());s.PathArray=function(t,e){s.Array.call(this,t,e||[["M",0,0]])},s.PathArray.prototype=new s.Array,s.PathArray.prototype.constructor=s.PathArray,s.extend(s.PathArray,{toString:function(){return function(t){for(var e=0,i=t.length,s="";e<i;e++)s+=t[e][0],null!=t[e][1]&&(s+=t[e][1],null!=t[e][2]&&(s+=" ",s+=t[e][2],null!=t[e][3]&&(s+=" ",s+=t[e][3],s+=" ",s+=t[e][4],null!=t[e][5]&&(s+=" ",s+=t[e][5],s+=" ",s+=t[e][6],null!=t[e][7]&&(s+=" ",s+=t[e][7])))));return s+" "}(this.value)},move:function(t,e){var i=this.bbox();if(t-=i.x,e-=i.y,!isNaN(t)&&!isNaN(e))for(var s,a=this.value.length-1;a>=0;a--)"M"==(s=this.value[a][0])||"L"==s||"T"==s?(this.value[a][1]+=t,this.value[a][2]+=e):"H"==s?this.value[a][1]+=t:"V"==s?this.value[a][1]+=e:"C"==s||"S"==s||"Q"==s?(this.value[a][1]+=t,this.value[a][2]+=e,this.value[a][3]+=t,this.value[a][4]+=e,"C"==s&&(this.value[a][5]+=t,this.value[a][6]+=e)):"A"==s&&(this.value[a][6]+=t,this.value[a][7]+=e);return this},size:function(t,e){var i,s,a=this.bbox();for(i=this.value.length-1;i>=0;i--)"M"==(s=this.value[i][0])||"L"==s||"T"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y):"H"==s?this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x:"V"==s?this.value[i][1]=(this.value[i][1]-a.y)*e/a.height+a.y:"C"==s||"S"==s||"Q"==s?(this.value[i][1]=(this.value[i][1]-a.x)*t/a.width+a.x,this.value[i][2]=(this.value[i][2]-a.y)*e/a.height+a.y,this.value[i][3]=(this.value[i][3]-a.x)*t/a.width+a.x,this.value[i][4]=(this.value[i][4]-a.y)*e/a.height+a.y,"C"==s&&(this.value[i][5]=(this.value[i][5]-a.x)*t/a.width+a.x,this.value[i][6]=(this.value[i][6]-a.y)*e/a.height+a.y)):"A"==s&&(this.value[i][1]=this.value[i][1]*t/a.width,this.value[i][2]=this.value[i][2]*e/a.height,this.value[i][6]=(this.value[i][6]-a.x)*t/a.width+a.x,this.value[i][7]=(this.value[i][7]-a.y)*e/a.height+a.y);return this},equalCommands:function(t){var e,i,a;for(t=new s.PathArray(t),a=this.value.length===t.value.length,e=0,i=this.value.length;a&&e<i;e++)a=this.value[e][0]===t.value[e][0];return a},morph:function(t){return t=new s.PathArray(t),this.equalCommands(t)?this.destination=t:this.destination=null,this},at:function(t){if(!this.destination)return this;var e,i,a,n,r=this.value,o=this.destination.value,l=[],h=new s.PathArray;for(e=0,i=r.length;e<i;e++){for(l[e]=[r[e][0]],a=1,n=r[e].length;a<n;a++)l[e][a]=r[e][a]+(o[e][a]-r[e][a])*t;"A"===l[e][0]&&(l[e][4]=+(0!=l[e][4]),l[e][5]=+(0!=l[e][5]))}return h.value=l,h},parse:function(t){if(t instanceof s.PathArray)return t.valueOf();var e,i={M:2,L:2,H:1,V:1,C:6,S:4,Q:4,T:2,A:7,Z:0};t="string"==typeof t?t.replace(s.regex.numbersWithDots,h).replace(s.regex.pathLetters," $& ").replace(s.regex.hyphen,"$1 -").trim().split(s.regex.delimiter):t.reduce(function(t,e){return[].concat.call(t,e)},[]);var n=[],r=new s.Point,o=new s.Point,l=0,c=t.length;do{s.regex.isPathLetter.test(t[l])?(e=t[l],++l):"M"==e?e="L":"m"==e&&(e="l"),n.push(a[e].call(null,t.slice(l,l+=i[e.toUpperCase()]).map(parseFloat),r,o))}while(c>l);return n},bbox:function(){return s.parser.draw||s.prepare(),s.parser.path.setAttribute("d",this.toString()),s.parser.path.getBBox()}}),s.Number=s.invent({create:function(t,e){this.value=0,this.unit=e||"","number"==typeof t?this.value=isNaN(t)?0:isFinite(t)?t:t<0?-3.4e38:3.4e38:"string"==typeof t?(e=t.match(s.regex.numberAndUnit))&&(this.value=parseFloat(e[1]),"%"==e[5]?this.value/=100:"s"==e[5]&&(this.value*=1e3),this.unit=e[5]):t instanceof s.Number&&(this.value=t.valueOf(),this.unit=t.unit)},extend:{toString:function(){return("%"==this.unit?~~(1e8*this.value)/1e6:"s"==this.unit?this.value/1e3:this.value)+this.unit},toJSON:function(){return this.toString()},valueOf:function(){return this.value},plus:function(t){return t=new s.Number(t),new s.Number(this+t,this.unit||t.unit)},minus:function(t){return t=new s.Number(t),new s.Number(this-t,this.unit||t.unit)},times:function(t){return t=new s.Number(t),new s.Number(this*t,this.unit||t.unit)},divide:function(t){return t=new s.Number(t),new s.Number(this/t,this.unit||t.unit)},to:function(t){var e=new s.Number(this);return"string"==typeof t&&(e.unit=t),e},morph:function(t){return this.destination=new s.Number(t),t.relative&&(this.destination.value+=this.value),this},at:function(t){return this.destination?new s.Number(this.destination).minus(this).times(t).plus(this):this}}}),s.Element=s.invent({create:function(t){this._stroke=s.defaults.attrs.stroke,this._event=null,this.dom={},(this.node=t)&&(this.type=t.nodeName,this.node.instance=this,this._stroke=t.getAttribute("stroke")||this._stroke)},extend:{x:function(t){return this.attr("x",t)},y:function(t){return this.attr("y",t)},cx:function(t){return null==t?this.x()+this.width()/2:this.x(t-this.width()/2)},cy:function(t){return null==t?this.y()+this.height()/2:this.y(t-this.height()/2)},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},width:function(t){return this.attr("width",t)},height:function(t){return this.attr("height",t)},size:function(t,e){var i=g(this,t,e);return this.width(new s.Number(i.width)).height(new s.Number(i.height))},clone:function(t){this.writeDataToDom();var e=b(this.node.cloneNode(!0));return t?t.add(e):this.after(e),e},remove:function(){return this.parent()&&this.parent().removeElement(this),this},replace:function(t){return this.after(t).remove(),t},addTo:function(t){return t.put(this)},putIn:function(t){return t.add(this)},id:function(t){return this.attr("id",t)},inside:function(t,e){var i=this.bbox();return t>i.x&&e>i.y&&t<i.x+i.width&&e<i.y+i.height},show:function(){return this.style("display","")},hide:function(){return this.style("display","none")},visible:function(){return"none"!=this.style("display")},toString:function(){return this.attr("id")},classes:function(){var t=this.attr("class");return null==t?[]:t.trim().split(s.regex.delimiter)},hasClass:function(t){return-1!=this.classes().indexOf(t)},addClass:function(t){if(!this.hasClass(t)){var e=this.classes();e.push(t),this.attr("class",e.join(" "))}return this},removeClass:function(t){return this.hasClass(t)&&this.attr("class",this.classes().filter(function(e){return e!=t}).join(" ")),this},toggleClass:function(t){return this.hasClass(t)?this.removeClass(t):this.addClass(t)},reference:function(t){return s.get(this.attr(t))},parent:function(t){var i=this;if(!i.node.parentNode)return null;if(i=s.adopt(i.node.parentNode),!t)return i;for(;i&&i.node instanceof e.SVGElement;){if("string"==typeof t?i.matches(t):i instanceof t)return i;if(!i.node.parentNode||"#document"==i.node.parentNode.nodeName)return null;i=s.adopt(i.node.parentNode)}},doc:function(){return this instanceof s.Doc?this:this.parent(s.Doc)},parents:function(t){var e=[],i=this;do{if(!(i=i.parent(t))||!i.node)break;e.push(i)}while(i.parent);return e},matches:function(t){return function(t,e){return(t.matches||t.matchesSelector||t.msMatchesSelector||t.mozMatchesSelector||t.webkitMatchesSelector||t.oMatchesSelector).call(t,e)}(this.node,t)},native:function(){return this.node},svg:function(t){var e=i.createElement("svg");if(!(t&&this instanceof s.Parent))return e.appendChild(t=i.createElement("svg")),this.writeDataToDom(),t.appendChild(this.node.cloneNode(!0)),e.innerHTML.replace(/^<svg>/,"").replace(/<\/svg>$/,"");e.innerHTML="<svg>"+t.replace(/\n/,"").replace(/<([\w:-]+)([^<]+?)\/>/g,"<$1$2></$1>")+"</svg>";for(var a=0,n=e.firstChild.childNodes.length;a<n;a++)this.node.appendChild(e.firstChild.firstChild);return this},writeDataToDom:function(){(this.each||this.lines)&&(this.each?this:this.lines()).each(function(){this.writeDataToDom()});return this.node.removeAttribute("svgjs:data"),Object.keys(this.dom).length&&this.node.setAttribute("svgjs:data",JSON.stringify(this.dom)),this},setData:function(t){return this.dom=t,this},is:function(t){return function(t,e){return t instanceof e}(this,t)}}}),s.easing={"-":function(t){return t},"<>":function(t){return-Math.cos(t*Math.PI)/2+.5},">":function(t){return Math.sin(t*Math.PI/2)},"<":function(t){return 1-Math.cos(t*Math.PI/2)}},s.morph=function(t){return function(e,i){return new s.MorphObj(e,i).at(t)}},s.Situation=s.invent({create:function(t){this.init=!1,this.reversed=!1,this.reversing=!1,this.duration=new s.Number(t.duration).valueOf(),this.delay=new s.Number(t.delay).valueOf(),this.start=+new Date+this.delay,this.finish=this.start+this.duration,this.ease=t.ease,this.loop=0,this.loops=!1,this.animations={},this.attrs={},this.styles={},this.transforms=[],this.once={}}}),s.FX=s.invent({create:function(t){this._target=t,this.situations=[],this.active=!1,this.situation=null,this.paused=!1,this.lastPos=0,this.pos=0,this.absPos=0,this._speed=1},extend:{animate:function(e,i,a){"object"===t(e)&&(i=e.ease,a=e.delay,e=e.duration);var n=new s.Situation({duration:e||1e3,delay:a||0,ease:s.easing[i||"-"]||i});return this.queue(n),this},delay:function(t){var e=new s.Situation({duration:t,delay:0,ease:s.easing["-"]});return this.queue(e)},target:function(t){return t&&t instanceof s.Element?(this._target=t,this):this._target},timeToAbsPos:function(t){return(t-this.situation.start)/(this.situation.duration/this._speed)},absPosToTime:function(t){return this.situation.duration/this._speed*t+this.situation.start},startAnimFrame:function(){this.stopAnimFrame(),this.animationFrame=e.requestAnimationFrame(function(){this.step()}.bind(this))},stopAnimFrame:function(){e.cancelAnimationFrame(this.animationFrame)},start:function(){return!this.active&&this.situation&&(this.active=!0,this.startCurrent()),this},startCurrent:function(){return this.situation.start=+new Date+this.situation.delay/this._speed,this.situation.finish=this.situation.start+this.situation.duration/this._speed,this.initAnimations().step()},queue:function(t){return("function"==typeof t||t instanceof s.Situation)&&this.situations.push(t),this.situation||(this.situation=this.situations.shift()),this},dequeue:function(){return this.stop(),this.situation=this.situations.shift(),this.situation&&(this.situation instanceof s.Situation?this.start():this.situation.call(this)),this},initAnimations:function(){var t,e,i,a=this.situation;if(a.init)return this;for(t in a.animations)for(i=this.target()[t](),Array.isArray(i)||(i=[i]),Array.isArray(a.animations[t])||(a.animations[t]=[a.animations[t]]),e=i.length;e--;)a.animations[t][e]instanceof s.Number&&(i[e]=new s.Number(i[e])),a.animations[t][e]=i[e].morph(a.animations[t][e]);for(t in a.attrs)a.attrs[t]=new s.MorphObj(this.target().attr(t),a.attrs[t]);for(t in a.styles)a.styles[t]=new s.MorphObj(this.target().style(t),a.styles[t]);return a.initialTransformation=this.target().matrixify(),a.init=!0,this},clearQueue:function(){return this.situations=[],this},clearCurrent:function(){return this.situation=null,this},stop:function(t,e){var i=this.active;return this.active=!1,e&&this.clearQueue(),t&&this.situation&&(!i&&this.startCurrent(),this.atEnd()),this.stopAnimFrame(),this.clearCurrent()},reset:function(){if(this.situation){var t=this.situation;this.stop(),this.situation=t,this.atStart()}return this},finish:function(){for(this.stop(!0,!1);this.dequeue().situation&&this.stop(!0,!1););return this.clearQueue().clearCurrent(),this},atStart:function(){return this.at(0,!0)},atEnd:function(){return!0===this.situation.loops&&(this.situation.loops=this.situation.loop+1),"number"==typeof this.situation.loops?this.at(this.situation.loops,!0):this.at(1,!0)},at:function(t,e){var i=this.situation.duration/this._speed;return this.absPos=t,e||(this.situation.reversed&&(this.absPos=1-this.absPos),this.absPos+=this.situation.loop),this.situation.start=+new Date-this.absPos*i,this.situation.finish=this.situation.start+i,this.step(!0)},speed:function(t){return 0===t?this.pause():t?(this._speed=t,this.at(this.absPos,!0)):this._speed},loop:function(t,e){var i=this.last();return i.loops=null==t||t,i.loop=0,e&&(i.reversing=!0),this},pause:function(){return this.paused=!0,this.stopAnimFrame(),this},play:function(){return this.paused?(this.paused=!1,this.at(this.absPos,!0)):this},reverse:function(t){var e=this.last();return e.reversed=void 0===t?!e.reversed:t,this},progress:function(t){return t?this.situation.ease(this.pos):this.pos},after:function(t){var e=this.last();return this.target().on("finished.fx",function i(s){s.detail.situation==e&&(t.call(this,e),this.off("finished.fx",i))}),this._callStart()},during:function(t){var e=this.last(),i=function(i){i.detail.situation==e&&t.call(this,i.detail.pos,s.morph(i.detail.pos),i.detail.eased,e)};return this.target().off("during.fx",i).on("during.fx",i),this.after(function(){this.off("during.fx",i)}),this._callStart()},afterAll:function(t){var e=function e(i){t.call(this),this.off("allfinished.fx",e)};return this.target().off("allfinished.fx",e).on("allfinished.fx",e),this._callStart()},duringAll:function(t){var e=function(e){t.call(this,e.detail.pos,s.morph(e.detail.pos),e.detail.eased,e.detail.situation)};return this.target().off("during.fx",e).on("during.fx",e),this.afterAll(function(){this.off("during.fx",e)}),this._callStart()},last:function(){return this.situations.length?this.situations[this.situations.length-1]:this.situation},add:function(t,e,i){return this.last()[i||"animations"][t]=e,this._callStart()},step:function(t){var e,i,s;(t||(this.absPos=this.timeToAbsPos(+new Date)),!1!==this.situation.loops)?(e=Math.max(this.absPos,0),i=Math.floor(e),!0===this.situation.loops||i<this.situation.loops?(this.pos=e-i,s=this.situation.loop,this.situation.loop=i):(this.absPos=this.situation.loops,this.pos=1,s=this.situation.loop-1,this.situation.loop=this.situation.loops),this.situation.reversing&&(this.situation.reversed=this.situation.reversed!=Boolean((this.situation.loop-s)%2))):(this.absPos=Math.min(this.absPos,1),this.pos=this.absPos);this.pos<0&&(this.pos=0),this.situation.reversed&&(this.pos=1-this.pos);var a=this.situation.ease(this.pos);for(var n in this.situation.once)n>this.lastPos&&n<=a&&(this.situation.once[n].call(this.target(),this.pos,a),delete this.situation.once[n]);return this.active&&this.target().fire("during",{pos:this.pos,eased:a,fx:this,situation:this.situation}),this.situation?(this.eachAt(),1==this.pos&&!this.situation.reversed||this.situation.reversed&&0==this.pos?(this.stopAnimFrame(),this.target().fire("finished",{fx:this,situation:this.situation}),this.situations.length||(this.target().fire("allfinished"),this.situations.length||(this.target().off(".fx"),this.active=!1)),this.active?this.dequeue():this.clearCurrent()):!this.paused&&this.active&&this.startAnimFrame(),this.lastPos=a,this):this},eachAt:function(){var t,e,i,a=this,n=this.target(),r=this.situation;for(t in r.animations)i=[].concat(r.animations[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n[t].apply(n,i);for(t in r.attrs)i=[t].concat(r.attrs[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n.attr.apply(n,i);for(t in r.styles)i=[t].concat(r.styles[t]).map(function(t){return"string"!=typeof t&&t.at?t.at(r.ease(a.pos),a.pos):t}),n.style.apply(n,i);if(r.transforms.length){for(i=r.initialTransformation,t=0,e=r.transforms.length;t<e;t++){var o=r.transforms[t];o instanceof s.Matrix?i=o.relative?i.multiply((new s.Matrix).morph(o).at(r.ease(this.pos))):i.morph(o).at(r.ease(this.pos)):(o.relative||o.undo(i.extract()),i=i.multiply(o.at(r.ease(this.pos))))}n.matrix(i)}return this},once:function(t,e,i){var s=this.last();return i||(t=s.ease(t)),s.once[t]=e,this},_callStart:function(){return setTimeout(function(){this.start()}.bind(this),0),this}},parent:s.Element,construct:{animate:function(t,e,i){return(this.fx||(this.fx=new s.FX(this))).animate(t,e,i)},delay:function(t){return(this.fx||(this.fx=new s.FX(this))).delay(t)},stop:function(t,e){return this.fx&&this.fx.stop(t,e),this},finish:function(){return this.fx&&this.fx.finish(),this},pause:function(){return this.fx&&this.fx.pause(),this},play:function(){return this.fx&&this.fx.play(),this},speed:function(t){if(this.fx){if(null==t)return this.fx.speed();this.fx.speed(t)}return this}}}),s.MorphObj=s.invent({create:function(t,e){return s.Color.isColor(e)?new s.Color(t).morph(e):s.regex.delimiter.test(t)?s.regex.pathLetters.test(t)?new s.PathArray(t).morph(e):new s.Array(t).morph(e):s.regex.numberAndUnit.test(e)?new s.Number(t).morph(e):(this.value=t,void(this.destination=e))},extend:{at:function(t,e){return e<1?this.value:this.destination},valueOf:function(){return this.value}}}),s.extend(s.FX,{attr:function(e,i,s){if("object"===t(e))for(var a in e)this.attr(a,e[a]);else this.add(e,i,"attrs");return this},style:function(e,i){if("object"===t(e))for(var s in e)this.style(s,e[s]);else this.add(e,i,"styles");return this},x:function(t,e){if(this.target()instanceof s.G)return this.transform({x:t},e),this;var i=new s.Number(t);return i.relative=e,this.add("x",i)},y:function(t,e){if(this.target()instanceof s.G)return this.transform({y:t},e),this;var i=new s.Number(t);return i.relative=e,this.add("y",i)},cx:function(t){return this.add("cx",new s.Number(t))},cy:function(t){return this.add("cy",new s.Number(t))},move:function(t,e){return this.x(t).y(e)},center:function(t,e){return this.cx(t).cy(e)},size:function(t,e){var i;this.target()instanceof s.Text?this.attr("font-size",t):(t&&e||(i=this.target().bbox()),t||(t=i.width/i.height*e),e||(e=i.height/i.width*t),this.add("width",new s.Number(t)).add("height",new s.Number(e)));return this},width:function(t){return this.add("width",new s.Number(t))},height:function(t){return this.add("height",new s.Number(t))},plot:function(t,e,i,s){return 4==arguments.length?this.plot([t,e,i,s]):this.add("plot",new(this.target().morphArray)(t))},leading:function(t){return this.target().leading?this.add("leading",new s.Number(t)):this},viewbox:function(t,e,i,a){return this.target()instanceof s.Container&&this.add("viewbox",new s.ViewBox(t,e,i,a)),this},update:function(t){if(this.target()instanceof s.Stop){if("number"==typeof t||t instanceof s.Number)return this.update({offset:arguments[0],color:arguments[1],opacity:arguments[2]});null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",t.offset)}return this}}),s.Box=s.invent({create:function(e,i,a,n){if(!("object"!==t(e)||e instanceof s.Element))return s.Box.call(this,null!=e.left?e.left:e.x,null!=e.top?e.top:e.y,e.width,e.height);4==arguments.length&&(this.x=e,this.y=i,this.width=a,this.height=n),m(this)},extend:{merge:function(t){var e=new this.constructor;return e.x=Math.min(this.x,t.x),e.y=Math.min(this.y,t.y),e.width=Math.max(this.x+this.width,t.x+t.width)-e.x,e.height=Math.max(this.y+this.height,t.y+t.height)-e.y,m(e)},transform:function(t){var e,i=1/0,a=-1/0,n=1/0,r=-1/0;return[new s.Point(this.x,this.y),new s.Point(this.x2,this.y),new s.Point(this.x,this.y2),new s.Point(this.x2,this.y2)].forEach(function(e){e=e.transform(t),i=Math.min(i,e.x),a=Math.max(a,e.x),n=Math.min(n,e.y),r=Math.max(r,e.y)}),(e=new this.constructor).x=i,e.width=a-i,e.y=n,e.height=r-n,m(e),e}}}),s.BBox=s.invent({create:function(t){if(s.Box.apply(this,[].slice.call(arguments)),t instanceof s.Element){var e;try{if(!i.documentElement.contains){for(var a=t.node;a.parentNode;)a=a.parentNode;if(a!=i)throw new Error("Element not in the dom")}e=t.node.getBBox()}catch(i){if(t instanceof s.Shape){s.parser.draw||s.prepare();var n=t.clone(s.parser.draw.instance).show();e=n.node.getBBox(),n.remove()}else e={x:t.node.clientLeft,y:t.node.clientTop,width:t.node.clientWidth,height:t.node.clientHeight}}s.Box.call(this,e)}},inherit:s.Box,parent:s.Element,construct:{bbox:function(){return new s.BBox(this)}}}),s.BBox.prototype.constructor=s.BBox,s.extend(s.Element,{tbox:function(){return console.warn("Use of TBox is deprecated and mapped to RBox. Use .rbox() instead."),this.rbox(this.doc())}}),s.RBox=s.invent({create:function(t){s.Box.apply(this,[].slice.call(arguments)),t instanceof s.Element&&s.Box.call(this,t.node.getBoundingClientRect())},inherit:s.Box,parent:s.Element,extend:{addOffset:function(){return this.x+=e.pageXOffset,this.y+=e.pageYOffset,this}},construct:{rbox:function(t){return t?new s.RBox(this).transform(t.screenCTM().inverse()):new s.RBox(this).addOffset()}}}),s.RBox.prototype.constructor=s.RBox,s.Matrix=s.invent({create:function(e){var i,a=p([1,0,0,1,0,0]);for(e=e instanceof s.Element?e.matrixify():"string"==typeof e?p(e.split(s.regex.delimiter).map(parseFloat)):6==arguments.length?p([].slice.call(arguments)):Array.isArray(e)?p(e):"object"===t(e)?e:a,i=y.length-1;i>=0;--i)this[y[i]]=null!=e[y[i]]?e[y[i]]:a[y[i]]},extend:{extract:function(){var t=f(this,0,1),e=f(this,1,0),i=180/Math.PI*Math.atan2(t.y,t.x)-90;return{x:this.e,y:this.f,transformedX:(this.e*Math.cos(i*Math.PI/180)+this.f*Math.sin(i*Math.PI/180))/Math.sqrt(this.a*this.a+this.b*this.b),transformedY:(this.f*Math.cos(i*Math.PI/180)+this.e*Math.sin(-i*Math.PI/180))/Math.sqrt(this.c*this.c+this.d*this.d),skewX:-i,skewY:180/Math.PI*Math.atan2(e.y,e.x),scaleX:Math.sqrt(this.a*this.a+this.b*this.b),scaleY:Math.sqrt(this.c*this.c+this.d*this.d),rotation:i,a:this.a,b:this.b,c:this.c,d:this.d,e:this.e,f:this.f,matrix:new s.Matrix(this)}},clone:function(){return new s.Matrix(this)},morph:function(t){return this.destination=new s.Matrix(t),this},at:function(t){return this.destination?new s.Matrix({a:this.a+(this.destination.a-this.a)*t,b:this.b+(this.destination.b-this.b)*t,c:this.c+(this.destination.c-this.c)*t,d:this.d+(this.destination.d-this.d)*t,e:this.e+(this.destination.e-this.e)*t,f:this.f+(this.destination.f-this.f)*t}):this},multiply:function(t){return new s.Matrix(this.native().multiply(function(t){t instanceof s.Matrix||(t=new s.Matrix(t));return t}(t).native()))},inverse:function(){return new s.Matrix(this.native().inverse())},translate:function(t,e){return new s.Matrix(this.native().translate(t||0,e||0))},scale:function(t,e,i,a){return 1==arguments.length?e=t:3==arguments.length&&(a=i,i=e,e=t),this.around(i,a,new s.Matrix(t,0,0,e,0,0))},rotate:function(t,e,i){return t=s.utils.radians(t),this.around(e,i,new s.Matrix(Math.cos(t),Math.sin(t),-Math.sin(t),Math.cos(t),0,0))},flip:function(t,e){return"x"==t?this.scale(-1,1,e,0):"y"==t?this.scale(1,-1,0,e):this.scale(-1,-1,t,null!=e?e:t)},skew:function(t,e,i,a){return 1==arguments.length?e=t:3==arguments.length&&(a=i,i=e,e=t),t=s.utils.radians(t),e=s.utils.radians(e),this.around(i,a,new s.Matrix(1,Math.tan(e),Math.tan(t),1,0,0))},skewX:function(t,e,i){return this.skew(t,0,e,i)},skewY:function(t,e,i){return this.skew(0,t,e,i)},around:function(t,e,i){return this.multiply(new s.Matrix(1,0,0,1,t||0,e||0)).multiply(i).multiply(new s.Matrix(1,0,0,1,-t||0,-e||0))},native:function(){for(var t=s.parser.native.createSVGMatrix(),e=y.length-1;e>=0;e--)t[y[e]]=this[y[e]];return t},toString:function(){return"matrix("+v(this.a)+","+v(this.b)+","+v(this.c)+","+v(this.d)+","+v(this.e)+","+v(this.f)+")"}},parent:s.Element,construct:{ctm:function(){return new s.Matrix(this.node.getCTM())},screenCTM:function(){if(this instanceof s.Nested){var t=this.rect(1,1),e=t.node.getScreenCTM();return t.remove(),new s.Matrix(e)}return new s.Matrix(this.node.getScreenCTM())}}}),s.Point=s.invent({create:function(e,i){var s;s=Array.isArray(e)?{x:e[0],y:e[1]}:"object"===t(e)?{x:e.x,y:e.y}:null!=e?{x:e,y:null!=i?i:e}:{x:0,y:0},this.x=s.x,this.y=s.y},extend:{clone:function(){return new s.Point(this)},morph:function(t,e){return this.destination=new s.Point(t,e),this},at:function(t){return this.destination?new s.Point({x:this.x+(this.destination.x-this.x)*t,y:this.y+(this.destination.y-this.y)*t}):this},native:function(){var t=s.parser.native.createSVGPoint();return t.x=this.x,t.y=this.y,t},transform:function(t){return new s.Point(this.native().matrixTransform(t.native()))}}}),s.extend(s.Element,{point:function(t,e){return new s.Point(t,e).transform(this.screenCTM().inverse())}}),s.extend(s.Element,{attr:function(e,i,a){if(null==e){for(e={},a=(i=this.node.attributes).length-1;a>=0;a--)e[i[a].nodeName]=s.regex.isNumber.test(i[a].nodeValue)?parseFloat(i[a].nodeValue):i[a].nodeValue;return e}if("object"===t(e))for(i in e)this.attr(i,e[i]);else if(null===i)this.node.removeAttribute(e);else{if(null==i)return null==(i=this.node.getAttribute(e))?s.defaults.attrs[e]:s.regex.isNumber.test(i)?parseFloat(i):i;"stroke-width"==e?this.attr("stroke",parseFloat(i)>0?this._stroke:null):"stroke"==e&&(this._stroke=i),"fill"!=e&&"stroke"!=e||(s.regex.isImage.test(i)&&(i=this.doc().defs().image(i,0,0)),i instanceof s.Image&&(i=this.doc().defs().pattern(0,0,function(){this.add(i)}))),"number"==typeof i?i=new s.Number(i):s.Color.isColor(i)?i=new s.Color(i):Array.isArray(i)&&(i=new s.Array(i)),"leading"==e?this.leading&&this.leading(i):"string"==typeof a?this.node.setAttributeNS(a,e,i.toString()):this.node.setAttribute(e,i.toString()),!this.rebuild||"font-size"!=e&&"x"!=e||this.rebuild(e,i)}return this}}),s.extend(s.Element,{transform:function(e,i){var a,n;if("object"!==t(e))return a=new s.Matrix(this).extract(),"string"==typeof e?a[e]:a;if(a=new s.Matrix(this),i=!!i||!!e.relative,null!=e.a)a=i?a.multiply(new s.Matrix(e)):new s.Matrix(e);else if(null!=e.rotation)x(e,this),a=i?a.rotate(e.rotation,e.cx,e.cy):a.rotate(e.rotation-a.extract().rotation,e.cx,e.cy);else if(null!=e.scale||null!=e.scaleX||null!=e.scaleY){if(x(e,this),e.scaleX=null!=e.scale?e.scale:null!=e.scaleX?e.scaleX:1,e.scaleY=null!=e.scale?e.scale:null!=e.scaleY?e.scaleY:1,!i){var r=a.extract();e.scaleX=1*e.scaleX/r.scaleX,e.scaleY=1*e.scaleY/r.scaleY}a=a.scale(e.scaleX,e.scaleY,e.cx,e.cy)}else if(null!=e.skew||null!=e.skewX||null!=e.skewY){if(x(e,this),e.skewX=null!=e.skew?e.skew:null!=e.skewX?e.skewX:0,e.skewY=null!=e.skew?e.skew:null!=e.skewY?e.skewY:0,!i){r=a.extract();a=a.multiply((new s.Matrix).skew(r.skewX,r.skewY,e.cx,e.cy).inverse())}a=a.skew(e.skewX,e.skewY,e.cx,e.cy)}else e.flip?("x"==e.flip||"y"==e.flip?e.offset=null==e.offset?this.bbox()["c"+e.flip]:e.offset:null==e.offset?(n=this.bbox(),e.flip=n.cx,e.offset=n.cy):e.flip=e.offset,a=(new s.Matrix).flip(e.flip,e.offset)):null==e.x&&null==e.y||(i?a=a.translate(e.x,e.y):(null!=e.x&&(a.e=e.x),null!=e.y&&(a.f=e.y)));return this.attr("transform",a)}}),s.extend(s.FX,{transform:function(e,i){var a,n,r=this.target();return"object"!==t(e)?(a=new s.Matrix(r).extract(),"string"==typeof e?a[e]:a):(i=!!i||!!e.relative,null!=e.a?a=new s.Matrix(e):null!=e.rotation?(x(e,r),a=new s.Rotate(e.rotation,e.cx,e.cy)):null!=e.scale||null!=e.scaleX||null!=e.scaleY?(x(e,r),e.scaleX=null!=e.scale?e.scale:null!=e.scaleX?e.scaleX:1,e.scaleY=null!=e.scale?e.scale:null!=e.scaleY?e.scaleY:1,a=new s.Scale(e.scaleX,e.scaleY,e.cx,e.cy)):null!=e.skewX||null!=e.skewY?(x(e,r),e.skewX=null!=e.skewX?e.skewX:0,e.skewY=null!=e.skewY?e.skewY:0,a=new s.Skew(e.skewX,e.skewY,e.cx,e.cy)):e.flip?("x"==e.flip||"y"==e.flip?e.offset=null==e.offset?r.bbox()["c"+e.flip]:e.offset:null==e.offset?(n=r.bbox(),e.flip=n.cx,e.offset=n.cy):e.flip=e.offset,a=(new s.Matrix).flip(e.flip,e.offset)):null==e.x&&null==e.y||(a=new s.Translate(e.x,e.y)),a?(a.relative=i,this.last().transforms.push(a),this._callStart()):this)}}),s.extend(s.Element,{untransform:function(){return this.attr("transform",null)},matrixify:function(){return(this.attr("transform")||"").split(s.regex.transforms).slice(0,-1).map(function(t){var e=t.trim().split("(");return[e[0],e[1].split(s.regex.delimiter).map(function(t){return parseFloat(t)})]}).reduce(function(t,e){return"matrix"==e[0]?t.multiply(p(e[1])):t[e[0]].apply(t,e[1])},new s.Matrix)},toParent:function(t){if(this==t)return this;var e=this.screenCTM(),i=t.screenCTM().inverse();return this.addTo(t).untransform().transform(i.multiply(e)),this},toDoc:function(){return this.toParent(this.doc())}}),s.Transformation=s.invent({create:function(e,i){if(arguments.length>1&&"boolean"!=typeof i)return this.constructor.call(this,[].slice.call(arguments));if(Array.isArray(e))for(var s=0,a=this.arguments.length;s<a;++s)this[this.arguments[s]]=e[s];else if("object"===t(e))for(s=0,a=this.arguments.length;s<a;++s)this[this.arguments[s]]=e[this.arguments[s]];this.inversed=!1,!0===i&&(this.inversed=!0)},extend:{arguments:[],method:"",at:function(t){for(var e=[],i=0,a=this.arguments.length;i<a;++i)e.push(this[this.arguments[i]]);var n=this._undo||new s.Matrix;return n=(new s.Matrix).morph(s.Matrix.prototype[this.method].apply(n,e)).at(t),this.inversed?n.inverse():n},undo:function(t){for(var e=0,i=this.arguments.length;e<i;++e)t[this.arguments[e]]=void 0===this[this.arguments[e]]?0:t[this.arguments[e]];return t.cx=this.cx,t.cy=this.cy,this._undo=new(s[d(this.method)])(t,!0).at(1),this}}}),s.Translate=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["transformedX","transformedY"],method:"translate"}}),s.Rotate=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["rotation","cx","cy"],method:"rotate",at:function(t){var e=(new s.Matrix).rotate((new s.Number).morph(this.rotation-(this._undo?this._undo.rotation:0)).at(t),this.cx,this.cy);return this.inversed?e.inverse():e},undo:function(t){return this._undo=t,this}}}),s.Scale=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["scaleX","scaleY","cx","cy"],method:"scale"}}),s.Skew=s.invent({parent:s.Matrix,inherit:s.Transformation,create:function(t,e){this.constructor.apply(this,[].slice.call(arguments))},extend:{arguments:["skewX","skewY","cx","cy"],method:"skew"}}),s.extend(s.Element,{style:function(e,i){if(0==arguments.length)return this.node.style.cssText||"";if(arguments.length<2)if("object"===t(e))for(i in e)this.style(i,e[i]);else{if(!s.regex.isCss.test(e))return this.node.style[c(e)];for(e=e.split(/\s*;\s*/).filter(function(t){return!!t}).map(function(t){return t.split(/\s*:\s*/)});i=e.pop();)this.style(i[0],i[1])}else this.node.style[c(e)]=null===i||s.regex.isBlank.test(i)?"":i;return this}}),s.Parent=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Element,extend:{children:function(){return s.utils.map(s.utils.filterSVGElements(this.node.childNodes),function(t){return s.adopt(t)})},add:function(t,e){return null==e?this.node.appendChild(t.node):t.node!=this.node.childNodes[e]&&this.node.insertBefore(t.node,this.node.childNodes[e]),this},put:function(t,e){return this.add(t,e),t},has:function(t){return this.index(t)>=0},index:function(t){return[].slice.call(this.node.childNodes).indexOf(t.node)},get:function(t){return s.adopt(this.node.childNodes[t])},first:function(){return this.get(0)},last:function(){return this.get(this.node.childNodes.length-1)},each:function(t,e){var i,a,n=this.children();for(i=0,a=n.length;i<a;i++)n[i]instanceof s.Element&&t.apply(n[i],[i,n]),e&&n[i]instanceof s.Container&&n[i].each(t,e);return this},removeElement:function(t){return this.node.removeChild(t.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,this},defs:function(){return this.doc().defs()}}}),s.extend(s.Parent,{ungroup:function(t,e){return 0===e||this instanceof s.Defs||this.node==s.parser.draw?this:(t=t||(this instanceof s.Doc?this:this.parent(s.Parent)),e=e||1/0,this.each(function(){return this instanceof s.Defs?this:this instanceof s.Parent?this.ungroup(t,e-1):this.toParent(t)}),this.node.firstChild||this.remove(),this)},flatten:function(t,e){return this.ungroup(t,e)}}),s.Container=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Parent}),s.ViewBox=s.invent({create:function(e){var i,a,n,r,o,l,h,c=1,d=1,u=/[+-]?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?/gi;if(e instanceof s.Element){for(l=e,h=e,o=(e.attr("viewBox")||"").match(u),e.bbox,n=new s.Number(e.width()),r=new s.Number(e.height());"%"==n.unit;)c*=n.value,n=new s.Number(l instanceof s.Doc?l.parent().offsetWidth:l.parent().width()),l=l.parent();for(;"%"==r.unit;)d*=r.value,r=new s.Number(h instanceof s.Doc?h.parent().offsetHeight:h.parent().height()),h=h.parent();this.x=0,this.y=0,this.width=n*c,this.height=r*d,this.zoom=1,o&&(i=parseFloat(o[0]),a=parseFloat(o[1]),n=parseFloat(o[2]),r=parseFloat(o[3]),this.zoom=this.width/this.height>n/r?this.height/r:this.width/n,this.x=i,this.y=a,this.width=n,this.height=r)}else e="string"==typeof e?e.match(u).map(function(t){return parseFloat(t)}):Array.isArray(e)?e:"object"===t(e)?[e.x,e.y,e.width,e.height]:4==arguments.length?[].slice.call(arguments):[0,0,0,0],this.x=e[0],this.y=e[1],this.width=e[2],this.height=e[3]},extend:{toString:function(){return this.x+" "+this.y+" "+this.width+" "+this.height},morph:function(t,e,i,a){return this.destination=new s.ViewBox(t,e,i,a),this},at:function(t){return this.destination?new s.ViewBox([this.x+(this.destination.x-this.x)*t,this.y+(this.destination.y-this.y)*t,this.width+(this.destination.width-this.width)*t,this.height+(this.destination.height-this.height)*t]):this}},parent:s.Container,construct:{viewbox:function(t,e,i,a){return 0==arguments.length?new s.ViewBox(this):this.attr("viewBox",new s.ViewBox(t,e,i,a))}}}),["click","dblclick","mousedown","mouseup","mouseover","mouseout","mousemove","touchstart","touchmove","touchleave","touchend","touchcancel"].forEach(function(t){s.Element.prototype[t]=function(e){return s.on(this.node,t,e),this}}),s.listeners=[],s.handlerMap=[],s.listenerId=0,s.on=function(t,e,i,a,n){var r=i.bind(a||t.instance||t),o=(s.handlerMap.indexOf(t)+1||s.handlerMap.push(t))-1,l=e.split(".")[0],h=e.split(".")[1]||"*";s.listeners[o]=s.listeners[o]||{},s.listeners[o][l]=s.listeners[o][l]||{},s.listeners[o][l][h]=s.listeners[o][l][h]||{},i._svgjsListenerId||(i._svgjsListenerId=++s.listenerId),s.listeners[o][l][h][i._svgjsListenerId]=r,t.addEventListener(l,r,n||!1)},s.off=function(t,e,i){var a=s.handlerMap.indexOf(t),n=e&&e.split(".")[0],r=e&&e.split(".")[1],o="";if(-1!=a)if(i){if("function"==typeof i&&(i=i._svgjsListenerId),!i)return;s.listeners[a][n]&&s.listeners[a][n][r||"*"]&&(t.removeEventListener(n,s.listeners[a][n][r||"*"][i],!1),delete s.listeners[a][n][r||"*"][i])}else if(r&&n){if(s.listeners[a][n]&&s.listeners[a][n][r]){for(i in s.listeners[a][n][r])s.off(t,[n,r].join("."),i);delete s.listeners[a][n][r]}}else if(r)for(e in s.listeners[a])for(o in s.listeners[a][e])r===o&&s.off(t,[e,r].join("."));else if(n){if(s.listeners[a][n]){for(o in s.listeners[a][n])s.off(t,[n,o].join("."));delete s.listeners[a][n]}}else{for(e in s.listeners[a])s.off(t,e);delete s.listeners[a],delete s.handlerMap[a]}},s.extend(s.Element,{on:function(t,e,i,a){return s.on(this.node,t,e,i,a),this},off:function(t,e){return s.off(this.node,t,e),this},fire:function(t,i){return t instanceof e.Event?this.node.dispatchEvent(t):this.node.dispatchEvent(t=new s.CustomEvent(t,{detail:i,cancelable:!0})),this._event=t,this},event:function(){return this._event}}),s.Defs=s.invent({create:"defs",inherit:s.Container}),s.G=s.invent({create:"g",inherit:s.Container,extend:{x:function(t){return null==t?this.transform("x"):this.transform({x:t-this.x()},!0)},y:function(t){return null==t?this.transform("y"):this.transform({y:t-this.y()},!0)},cx:function(t){return null==t?this.gbox().cx:this.x(t-this.gbox().width/2)},cy:function(t){return null==t?this.gbox().cy:this.y(t-this.gbox().height/2)},gbox:function(){var t=this.bbox(),e=this.transform();return t.x+=e.x,t.x2+=e.x,t.cx+=e.x,t.y+=e.y,t.y2+=e.y,t.cy+=e.y,t}},construct:{group:function(){return this.put(new s.G)}}}),s.Doc=s.invent({create:function(t){t&&("svg"==(t="string"==typeof t?i.getElementById(t):t).nodeName?this.constructor.call(this,t):(this.constructor.call(this,s.create("svg")),t.appendChild(this.node),this.size("100%","100%")),this.namespace().defs())},inherit:s.Container,extend:{namespace:function(){return this.attr({xmlns:s.ns,version:"1.1"}).attr("xmlns:xlink",s.xlink,s.xmlns).attr("xmlns:svgjs",s.svgjs,s.xmlns)},defs:function(){var t;this._defs||((t=this.node.getElementsByTagName("defs")[0])?this._defs=s.adopt(t):this._defs=new s.Defs,this.node.appendChild(this._defs.node));return this._defs},parent:function(){return this.node.parentNode&&"#document"!=this.node.parentNode.nodeName?this.node.parentNode:null},spof:function(){var t=this.node.getScreenCTM();return t&&this.style("left",-t.e%1+"px").style("top",-t.f%1+"px"),this},remove:function(){return this.parent()&&this.parent().removeChild(this.node),this},clear:function(){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return delete this._defs,s.parser.draw&&!s.parser.draw.parentNode&&this.node.appendChild(s.parser.draw),this},clone:function(t){this.writeDataToDom();var e=this.node,i=b(e.cloneNode(!0));return t?(t.node||t).appendChild(i.node):e.parentNode.insertBefore(i.node,e.nextSibling),i}}}),s.extend(s.Element,{siblings:function(){return this.parent().children()},position:function(){return this.parent().index(this)},next:function(){return this.siblings()[this.position()+1]},previous:function(){return this.siblings()[this.position()-1]},forward:function(){var t=this.position()+1,e=this.parent();return e.removeElement(this).add(this,t),e instanceof s.Doc&&e.node.appendChild(e.defs().node),this},backward:function(){var t=this.position();return t>0&&this.parent().removeElement(this).add(this,t-1),this},front:function(){var t=this.parent();return t.node.appendChild(this.node),t instanceof s.Doc&&t.node.appendChild(t.defs().node),this},back:function(){return this.position()>0&&this.parent().removeElement(this).add(this,0),this},before:function(t){t.remove();var e=this.position();return this.parent().add(t,e),this},after:function(t){t.remove();var e=this.position();return this.parent().add(t,e+1),this}}),s.Mask=s.invent({create:function(){this.constructor.call(this,s.create("mask")),this.targets=[]},inherit:s.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unmask();return this.targets=[],s.Element.prototype.remove.call(this),this}},construct:{mask:function(){return this.defs().put(new s.Mask)}}}),s.extend(s.Element,{maskWith:function(t){return this.masker=t instanceof s.Mask?t:this.parent().mask().add(t),this.masker.targets.push(this),this.attr("mask",'url("#'+this.masker.attr("id")+'")')},unmask:function(){return delete this.masker,this.attr("mask",null)}}),s.ClipPath=s.invent({create:function(){this.constructor.call(this,s.create("clipPath")),this.targets=[]},inherit:s.Container,extend:{remove:function(){for(var t=this.targets.length-1;t>=0;t--)this.targets[t]&&this.targets[t].unclip();return this.targets=[],this.parent().removeElement(this),this}},construct:{clip:function(){return this.defs().put(new s.ClipPath)}}}),s.extend(s.Element,{clipWith:function(t){return this.clipper=t instanceof s.ClipPath?t:this.parent().clip().add(t),this.clipper.targets.push(this),this.attr("clip-path",'url("#'+this.clipper.attr("id")+'")')},unclip:function(){return delete this.clipper,this.attr("clip-path",null)}}),s.Gradient=s.invent({create:function(t){this.constructor.call(this,s.create(t+"Gradient")),this.type=t},inherit:s.Container,extend:{at:function(t,e,i){return this.put(new s.Stop).update(t,e,i)},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},fill:function(){return"url(#"+this.id()+")"},toString:function(){return this.fill()},attr:function(t,e,i){return"transform"==t&&(t="gradientTransform"),s.Container.prototype.attr.call(this,t,e,i)}},construct:{gradient:function(t,e){return this.defs().gradient(t,e)}}}),s.extend(s.Gradient,s.FX,{from:function(t,e){return"radial"==(this._target||this).type?this.attr({fx:new s.Number(t),fy:new s.Number(e)}):this.attr({x1:new s.Number(t),y1:new s.Number(e)})},to:function(t,e){return"radial"==(this._target||this).type?this.attr({cx:new s.Number(t),cy:new s.Number(e)}):this.attr({x2:new s.Number(t),y2:new s.Number(e)})}}),s.extend(s.Defs,{gradient:function(t,e){return this.put(new s.Gradient(t)).update(e)}}),s.Stop=s.invent({create:"stop",inherit:s.Element,extend:{update:function(t){return("number"==typeof t||t instanceof s.Number)&&(t={offset:arguments[0],color:arguments[1],opacity:arguments[2]}),null!=t.opacity&&this.attr("stop-opacity",t.opacity),null!=t.color&&this.attr("stop-color",t.color),null!=t.offset&&this.attr("offset",new s.Number(t.offset)),this}}}),s.Pattern=s.invent({create:"pattern",inherit:s.Container,extend:{fill:function(){return"url(#"+this.id()+")"},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},toString:function(){return this.fill()},attr:function(t,e,i){return"transform"==t&&(t="patternTransform"),s.Container.prototype.attr.call(this,t,e,i)}},construct:{pattern:function(t,e,i){return this.defs().pattern(t,e,i)}}}),s.extend(s.Defs,{pattern:function(t,e,i){return this.put(new s.Pattern).update(i).attr({x:0,y:0,width:t,height:e,patternUnits:"userSpaceOnUse"})}}),s.Shape=s.invent({create:function(t){this.constructor.call(this,t)},inherit:s.Element}),s.Bare=s.invent({create:function(t,e){if(this.constructor.call(this,s.create(t)),e)for(var i in e.prototype)"function"==typeof e.prototype[i]&&(this[i]=e.prototype[i])},inherit:s.Element,extend:{words:function(t){for(;this.node.hasChildNodes();)this.node.removeChild(this.node.lastChild);return this.node.appendChild(i.createTextNode(t)),this}}}),s.extend(s.Parent,{element:function(t,e){return this.put(new s.Bare(t,e))}}),s.Symbol=s.invent({create:"symbol",inherit:s.Container,construct:{symbol:function(){return this.put(new s.Symbol)}}}),s.Use=s.invent({create:"use",inherit:s.Shape,extend:{element:function(t,e){return this.attr("href",(e||"")+"#"+t,s.xlink)}},construct:{use:function(t,e){return this.put(new s.Use).element(t,e)}}}),s.Rect=s.invent({create:"rect",inherit:s.Shape,construct:{rect:function(t,e){return this.put(new s.Rect).size(t,e)}}}),s.Circle=s.invent({create:"circle",inherit:s.Shape,construct:{circle:function(t){return this.put(new s.Circle).rx(new s.Number(t).divide(2)).move(0,0)}}}),s.extend(s.Circle,s.FX,{rx:function(t){return this.attr("r",t)},ry:function(t){return this.rx(t)}}),s.Ellipse=s.invent({create:"ellipse",inherit:s.Shape,construct:{ellipse:function(t,e){return this.put(new s.Ellipse).size(t,e).move(0,0)}}}),s.extend(s.Ellipse,s.Rect,s.FX,{rx:function(t){return this.attr("rx",t)},ry:function(t){return this.attr("ry",t)}}),s.extend(s.Circle,s.Ellipse,{x:function(t){return null==t?this.cx()-this.rx():this.cx(t+this.rx())},y:function(t){return null==t?this.cy()-this.ry():this.cy(t+this.ry())},cx:function(t){return null==t?this.attr("cx"):this.attr("cx",t)},cy:function(t){return null==t?this.attr("cy"):this.attr("cy",t)},width:function(t){return null==t?2*this.rx():this.rx(new s.Number(t).divide(2))},height:function(t){return null==t?2*this.ry():this.ry(new s.Number(t).divide(2))},size:function(t,e){var i=g(this,t,e);return this.rx(new s.Number(i.width).divide(2)).ry(new s.Number(i.height).divide(2))}}),s.Line=s.invent({create:"line",inherit:s.Shape,extend:{array:function(){return new s.PointArray([[this.attr("x1"),this.attr("y1")],[this.attr("x2"),this.attr("y2")]])},plot:function(t,e,i,a){return null==t?this.array():(t=void 0!==e?{x1:t,y1:e,x2:i,y2:a}:new s.PointArray(t).toLine(),this.attr(t))},move:function(t,e){return this.attr(this.array().move(t,e).toLine())},size:function(t,e){var i=g(this,t,e);return this.attr(this.array().size(i.width,i.height).toLine())}},construct:{line:function(t,e,i,a){return s.Line.prototype.plot.apply(this.put(new s.Line),null!=t?[t,e,i,a]:[0,0,0,0])}}}),s.Polyline=s.invent({create:"polyline",inherit:s.Shape,construct:{polyline:function(t){return this.put(new s.Polyline).plot(t||new s.PointArray)}}}),s.Polygon=s.invent({create:"polygon",inherit:s.Shape,construct:{polygon:function(t){return this.put(new s.Polygon).plot(t||new s.PointArray)}}}),s.extend(s.Polyline,s.Polygon,{array:function(){return this._array||(this._array=new s.PointArray(this.attr("points")))},plot:function(t){return null==t?this.array():this.clear().attr("points","string"==typeof t?t:this._array=new s.PointArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("points",this.array().move(t,e))},size:function(t,e){var i=g(this,t,e);return this.attr("points",this.array().size(i.width,i.height))}}),s.extend(s.Line,s.Polyline,s.Polygon,{morphArray:s.PointArray,x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},width:function(t){var e=this.bbox();return null==t?e.width:this.size(t,e.height)},height:function(t){var e=this.bbox();return null==t?e.height:this.size(e.width,t)}}),s.Path=s.invent({create:"path",inherit:s.Shape,extend:{morphArray:s.PathArray,array:function(){return this._array||(this._array=new s.PathArray(this.attr("d")))},plot:function(t){return null==t?this.array():this.clear().attr("d","string"==typeof t?t:this._array=new s.PathArray(t))},clear:function(){return delete this._array,this},move:function(t,e){return this.attr("d",this.array().move(t,e))},x:function(t){return null==t?this.bbox().x:this.move(t,this.bbox().y)},y:function(t){return null==t?this.bbox().y:this.move(this.bbox().x,t)},size:function(t,e){var i=g(this,t,e);return this.attr("d",this.array().size(i.width,i.height))},width:function(t){return null==t?this.bbox().width:this.size(t,this.bbox().height)},height:function(t){return null==t?this.bbox().height:this.size(this.bbox().width,t)}},construct:{path:function(t){return this.put(new s.Path).plot(t||new s.PathArray)}}}),s.Image=s.invent({create:"image",inherit:s.Shape,extend:{load:function(t){if(!t)return this;var i=this,a=new e.Image;return s.on(a,"load",function(){s.off(a);var e=i.parent(s.Pattern);null!==e&&(0==i.width()&&0==i.height()&&i.size(a.width,a.height),e&&0==e.width()&&0==e.height()&&e.size(i.width(),i.height()),"function"==typeof i._loaded&&i._loaded.call(i,{width:a.width,height:a.height,ratio:a.width/a.height,url:t}))}),s.on(a,"error",function(t){s.off(a),"function"==typeof i._error&&i._error.call(i,t)}),this.attr("href",a.src=this.src=t,s.xlink)},loaded:function(t){return this._loaded=t,this},error:function(t){return this._error=t,this}},construct:{image:function(t,e,i){return this.put(new s.Image).load(t).size(e||0,i||e||0)}}}),s.Text=s.invent({create:function(){this.constructor.call(this,s.create("text")),this.dom.leading=new s.Number(1.3),this._rebuild=!0,this._build=!1,this.attr("font-family",s.defaults.attrs["font-family"])},inherit:s.Shape,extend:{x:function(t){return null==t?this.attr("x"):this.attr("x",t)},y:function(t){var e=this.attr("y"),i="number"==typeof e?e-this.bbox().y:0;return null==t?"number"==typeof e?e-i:e:this.attr("y","number"==typeof t.valueOf()?t+i:t)},cx:function(t){return null==t?this.bbox().cx:this.x(t-this.bbox().width/2)},cy:function(t){return null==t?this.bbox().cy:this.y(t-this.bbox().height/2)},text:function(t){if(void 0===t){t="";for(var e=this.node.childNodes,i=0,a=e.length;i<a;++i)0!=i&&3!=e[i].nodeType&&1==s.adopt(e[i]).dom.newLined&&(t+="\n"),t+=e[i].textContent;return t}if(this.clear().build(!0),"function"==typeof t)t.call(this,this);else{i=0;for(var n=(t=t.split("\n")).length;i<n;i++)this.tspan(t[i]).newLine()}return this.build(!1).rebuild()},size:function(t){return this.attr("font-size",t).rebuild()},leading:function(t){return null==t?this.dom.leading:(this.dom.leading=new s.Number(t),this.rebuild())},lines:function(){var t=(this.textPath&&this.textPath()||this).node,e=s.utils.map(s.utils.filterSVGElements(t.childNodes),function(t){return s.adopt(t)});return new s.Set(e)},rebuild:function(t){if("boolean"==typeof t&&(this._rebuild=t),this._rebuild){var e=this,i=0,a=this.dom.leading*new s.Number(this.attr("font-size"));this.lines().each(function(){this.dom.newLined&&(e.textPath()||this.attr("x",e.attr("x")),"\n"==this.text()?i+=a:(this.attr("dy",a+i),i=0))}),this.fire("rebuild")}return this},build:function(t){return this._build=!!t,this},setData:function(t){return this.dom=t,this.dom.leading=new s.Number(t.leading||1.3),this}},construct:{text:function(t){return this.put(new s.Text).text(t)},plain:function(t){return this.put(new s.Text).plain(t)}}}),s.Tspan=s.invent({create:"tspan",inherit:s.Shape,extend:{text:function(t){return null==t?this.node.textContent+(this.dom.newLined?"\n":""):("function"==typeof t?t.call(this,this):this.plain(t),this)},dx:function(t){return this.attr("dx",t)},dy:function(t){return this.attr("dy",t)},newLine:function(){var t=this.parent(s.Text);return this.dom.newLined=!0,this.dy(t.dom.leading*t.attr("font-size")).attr("x",t.x())}}}),s.extend(s.Text,s.Tspan,{plain:function(t){return!1===this._build&&this.clear(),this.node.appendChild(i.createTextNode(t)),this},tspan:function(t){var e=(this.textPath&&this.textPath()||this).node,i=new s.Tspan;return!1===this._build&&this.clear(),e.appendChild(i.node),i.text(t)},clear:function(){for(var t=(this.textPath&&this.textPath()||this).node;t.hasChildNodes();)t.removeChild(t.lastChild);return this},length:function(){return this.node.getComputedTextLength()}}),s.TextPath=s.invent({create:"textPath",inherit:s.Parent,parent:s.Text,construct:{morphArray:s.PathArray,path:function(t){for(var e=new s.TextPath,i=this.doc().defs().path(t);this.node.hasChildNodes();)e.node.appendChild(this.node.firstChild);return this.node.appendChild(e.node),e.attr("href","#"+i,s.xlink),this},array:function(){var t=this.track();return t?t.array():null},plot:function(t){var e=this.track(),i=null;return e&&(i=e.plot(t)),null==t?i:this},track:function(){var t=this.textPath();if(t)return t.reference("href")},textPath:function(){if(this.node.firstChild&&"textPath"==this.node.firstChild.nodeName)return s.adopt(this.node.firstChild)}}}),s.Nested=s.invent({create:function(){this.constructor.call(this,s.create("svg")),this.style("overflow","visible")},inherit:s.Container,construct:{nested:function(){return this.put(new s.Nested)}}}),s.A=s.invent({create:"a",inherit:s.Container,extend:{to:function(t){return this.attr("href",t,s.xlink)},show:function(t){return this.attr("show",t,s.xlink)},target:function(t){return this.attr("target",t)}},construct:{link:function(t){return this.put(new s.A).to(t)}}}),s.extend(s.Element,{linkTo:function(t){var e=new s.A;return"function"==typeof t?t.call(e,e):e.to(t),this.parent().put(e).put(this)}}),s.Marker=s.invent({create:"marker",inherit:s.Container,extend:{width:function(t){return this.attr("markerWidth",t)},height:function(t){return this.attr("markerHeight",t)},ref:function(t,e){return this.attr("refX",t).attr("refY",e)},update:function(t){return this.clear(),"function"==typeof t&&t.call(this,this),this},toString:function(){return"url(#"+this.id()+")"}},construct:{marker:function(t,e,i){return this.defs().marker(t,e,i)}}}),s.extend(s.Defs,{marker:function(t,e,i){return this.put(new s.Marker).size(t,e).ref(t/2,e/2).viewbox(0,0,t,e).attr("orient","auto").update(i)}}),s.extend(s.Line,s.Polyline,s.Polygon,s.Path,{marker:function(t,e,i,a){var n=["marker"];return"all"!=t&&n.push(t),n=n.join("-"),t=arguments[1]instanceof s.Marker?arguments[1]:this.doc().marker(e,i,a),this.attr(n,t)}});var l={stroke:["color","width","opacity","linecap","linejoin","miterlimit","dasharray","dashoffset"],fill:["color","opacity","rule"],prefix:function(t,e){return"color"==e?t:t+"-"+e}};function h(t,e,i,a){return i+a.replace(s.regex.dots," .")}function c(t){return t.toLowerCase().replace(/-(.)/g,function(t,e){return e.toUpperCase()})}function d(t){return t.charAt(0).toUpperCase()+t.slice(1)}function u(t){var e=t.toString(16);return 1==e.length?"0"+e:e}function g(t,e,i){if(null==e||null==i){var s=t.bbox();null==e?e=s.width/s.height*i:null==i&&(i=s.height/s.width*e)}return{width:e,height:i}}function f(t,e,i){return{x:e*t.a+i*t.c+0,y:e*t.b+i*t.d+0}}function p(t){return{a:t[0],b:t[1],c:t[2],d:t[3],e:t[4],f:t[5]}}function x(t,e){t.cx=null==t.cx?e.bbox().cx:t.cx,t.cy=null==t.cy?e.bbox().cy:t.cy}function b(t){for(var i=t.childNodes.length-1;i>=0;i--)t.childNodes[i]instanceof e.SVGElement&&b(t.childNodes[i]);return s.adopt(t).id(s.eid(t.nodeName))}function m(t){return null==t.x&&(t.x=0,t.y=0,t.width=0,t.height=0),t.w=t.width,t.h=t.height,t.x2=t.x+t.width,t.y2=t.y+t.height,t.cx=t.x+t.width/2,t.cy=t.y+t.height/2,t}function v(t){return Math.abs(t)>1e-37?t:0}["fill","stroke"].forEach(function(t){var e,i={};i[t]=function(i){if(void 0===i)return this;if("string"==typeof i||s.Color.isRgb(i)||i&&"function"==typeof i.fill)this.attr(t,i);else for(e=l[t].length-1;e>=0;e--)null!=i[l[t][e]]&&this.attr(l.prefix(t,l[t][e]),i[l[t][e]]);return this},s.extend(s.Element,s.FX,i)}),s.extend(s.Element,s.FX,{rotate:function(t,e,i){return this.transform({rotation:t,cx:e,cy:i})},skew:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({skew:t,cx:e,cy:i}):this.transform({skewX:t,skewY:e,cx:i,cy:s})},scale:function(t,e,i,s){return 1==arguments.length||3==arguments.length?this.transform({scale:t,cx:e,cy:i}):this.transform({scaleX:t,scaleY:e,cx:i,cy:s})},translate:function(t,e){return this.transform({x:t,y:e})},flip:function(t,e){return e="number"==typeof t?t:e,this.transform({flip:t||"both",offset:e})},matrix:function(t){return this.attr("transform",new s.Matrix(6==arguments.length?[].slice.call(arguments):t))},opacity:function(t){return this.attr("opacity",t)},dx:function(t){return this.x(new s.Number(t).plus(this instanceof s.FX?0:this.x()),!0)},dy:function(t){return this.y(new s.Number(t).plus(this instanceof s.FX?0:this.y()),!0)},dmove:function(t,e){return this.dx(t).dy(e)}}),s.extend(s.Rect,s.Ellipse,s.Circle,s.Gradient,s.FX,{radius:function(t,e){var i=(this._target||this).type;return"radial"==i||"circle"==i?this.attr("r",new s.Number(t)):this.rx(t).ry(null==e?t:e)}}),s.extend(s.Path,{length:function(){return this.node.getTotalLength()},pointAt:function(t){return this.node.getPointAtLength(t)}}),s.extend(s.Parent,s.Text,s.Tspan,s.FX,{font:function(e,i){if("object"===t(e))for(i in e)this.font(i,e[i]);return"leading"==e?this.leading(i):"anchor"==e?this.attr("text-anchor",i):"size"==e||"family"==e||"weight"==e||"stretch"==e||"variant"==e||"style"==e?this.attr("font-"+e,i):this.attr(e,i)}}),s.Set=s.invent({create:function(t){Array.isArray(t)?this.members=t:this.clear()},extend:{add:function(){var t,e,i=[].slice.call(arguments);for(t=0,e=i.length;t<e;t++)this.members.push(i[t]);return this},remove:function(t){var e=this.index(t);return e>-1&&this.members.splice(e,1),this},each:function(t){for(var e=0,i=this.members.length;e<i;e++)t.apply(this.members[e],[e,this.members]);return this},clear:function(){return this.members=[],this},length:function(){return this.members.length},has:function(t){return this.index(t)>=0},index:function(t){return this.members.indexOf(t)},get:function(t){return this.members[t]},first:function(){return this.get(0)},last:function(){return this.get(this.members.length-1)},valueOf:function(){return this.members},bbox:function(){if(0==this.members.length)return new s.RBox;var t=this.members[0].rbox(this.members[0].doc());return this.each(function(){t=t.merge(this.rbox(this.doc()))}),t}},construct:{set:function(t){return new s.Set(t)}}}),s.FX.Set=s.invent({create:function(t){this.set=t}}),s.Set.inherit=function(){var t=[];for(var e in s.Shape.prototype)"function"==typeof s.Shape.prototype[e]&&"function"!=typeof s.Set.prototype[e]&&t.push(e);for(var e in t.forEach(function(t){s.Set.prototype[t]=function(){for(var e=0,i=this.members.length;e<i;e++)this.members[e]&&"function"==typeof this.members[e][t]&&this.members[e][t].apply(this.members[e],arguments);return"animate"==t?this.fx||(this.fx=new s.FX.Set(this)):this}}),t=[],s.FX.prototype)"function"==typeof s.FX.prototype[e]&&"function"!=typeof s.FX.Set.prototype[e]&&t.push(e);t.forEach(function(t){s.FX.Set.prototype[t]=function(){for(var e=0,i=this.set.members.length;e<i;e++)this.set.members[e].fx[t].apply(this.set.members[e].fx,arguments);return this}})},s.extend(s.Element,{data:function(e,i,s){if("object"===t(e))for(i in e)this.data(i,e[i]);else if(arguments.length<2)try{return JSON.parse(this.attr("data-"+e))}catch(t){return this.attr("data-"+e)}else this.attr("data-"+e,null===i?null:!0===s||"string"==typeof i||"number"==typeof i?i:JSON.stringify(i));return this}}),s.extend(s.Element,{remember:function(e,i){if("object"===t(arguments[0]))for(var i in e)this.remember(i,e[i]);else{if(1==arguments.length)return this.memory()[e];this.memory()[e]=i}return this},forget:function(){if(0==arguments.length)this._memory={};else for(var t=arguments.length-1;t>=0;t--)delete this.memory()[arguments[t]];return this},memory:function(){return this._memory||(this._memory={})}}),s.get=function(t){var e=i.getElementById(function(t){var e=(t||"").toString().match(s.regex.reference);if(e)return e[1]}(t)||t);return s.adopt(e)},s.select=function(t,e){return new s.Set(s.utils.map((e||i).querySelectorAll(t),function(t){return s.adopt(t)}))},s.extend(s.Parent,{select:function(t){return s.select(t,this.node)}});var y="abcdef".split("");if("function"!=typeof e.CustomEvent){var w=function(t,e){e=e||{bubbles:!1,cancelable:!1,detail:void 0};var s=i.createEvent("CustomEvent");return s.initCustomEvent(t,e.bubbles,e.cancelable,e.detail),s};w.prototype=e.Event.prototype,s.CustomEvent=w}else s.CustomEvent=e.CustomEvent;return function(t){for(var i=0,s=["moz","webkit"],a=0;a<s.length&&!e.requestAnimationFrame;++a)t.requestAnimationFrame=t[s[a]+"RequestAnimationFrame"],t.cancelAnimationFrame=t[s[a]+"CancelAnimationFrame"]||t[s[a]+"CancelRequestAnimationFrame"];t.requestAnimationFrame=t.requestAnimationFrame||function(e){var s=(new Date).getTime(),a=Math.max(0,16-(s-i)),n=t.setTimeout(function(){e(s+a)},a);return i=s+a,n},t.cancelAnimationFrame=t.cancelAnimationFrame||t.clearTimeout}(e),s},"function"==typeof define&&define.amd?define(function(){return at(st,st.document)}):"object"===("undefined"==typeof exports?"undefined":t(exports))&&"undefined"!=typeof module?module.exports=st.document?at(st,st.document):function(t){return at(t,t.document)}:st.SVG=at(st,st.document),function(){SVG.Filter=SVG.invent({create:"filter",inherit:SVG.Parent,extend:{source:"SourceGraphic",sourceAlpha:"SourceAlpha",background:"BackgroundImage",backgroundAlpha:"BackgroundAlpha",fill:"FillPaint",stroke:"StrokePaint",autoSetIn:!0,put:function(t,e){return this.add(t,e),!t.attr("in")&&this.autoSetIn&&t.attr("in",this.source),t.attr("result")||t.attr("result",t),t},blend:function(t,e,i){return this.put(new SVG.BlendEffect(t,e,i))},colorMatrix:function(t,e){return this.put(new SVG.ColorMatrixEffect(t,e))},convolveMatrix:function(t){return this.put(new SVG.ConvolveMatrixEffect(t))},componentTransfer:function(t){return this.put(new SVG.ComponentTransferEffect(t))},composite:function(t,e,i){return this.put(new SVG.CompositeEffect(t,e,i))},flood:function(t,e){return this.put(new SVG.FloodEffect(t,e))},offset:function(t,e){return this.put(new SVG.OffsetEffect(t,e))},image:function(t){return this.put(new SVG.ImageEffect(t))},merge:function(){var t=[void 0];for(var e in arguments)t.push(arguments[e]);return this.put(new(SVG.MergeEffect.bind.apply(SVG.MergeEffect,t)))},gaussianBlur:function(t,e){return this.put(new SVG.GaussianBlurEffect(t,e))},morphology:function(t,e){return this.put(new SVG.MorphologyEffect(t,e))},diffuseLighting:function(t,e,i){return this.put(new SVG.DiffuseLightingEffect(t,e,i))},displacementMap:function(t,e,i,s,a){return this.put(new SVG.DisplacementMapEffect(t,e,i,s,a))},specularLighting:function(t,e,i,s){return this.put(new SVG.SpecularLightingEffect(t,e,i,s))},tile:function(){return this.put(new SVG.TileEffect)},turbulence:function(t,e,i,s,a){return this.put(new SVG.TurbulenceEffect(t,e,i,s,a))},toString:function(){return"url(#"+this.attr("id")+")"}}}),SVG.extend(SVG.Defs,{filter:function(t){var e=this.put(new SVG.Filter);return"function"==typeof t&&t.call(e,e),e}}),SVG.extend(SVG.Container,{filter:function(t){return this.defs().filter(t)}}),SVG.extend(SVG.Element,SVG.G,SVG.Nested,{filter:function(t){return this.filterer=t instanceof SVG.Element?t:this.doc().filter(t),this.doc()&&this.filterer.doc()!==this.doc()&&this.doc().defs().add(this.filterer),this.attr("filter",this.filterer),this.filterer},unfilter:function(t){return this.filterer&&!0===t&&this.filterer.remove(),delete this.filterer,this.attr("filter",null)}}),SVG.Effect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}}),SVG.ParentEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Parent,extend:{in:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in")+'"]').get(0)||this.attr("in"):this.attr("in",t)},result:function(t){return null==t?this.attr("result"):this.attr("result",t)},toString:function(){return this.result()}}});var t={blend:function(t,e){return this.parent()&&this.parent().blend(this,t,e)},colorMatrix:function(t,e){return this.parent()&&this.parent().colorMatrix(t,e).in(this)},convolveMatrix:function(t){return this.parent()&&this.parent().convolveMatrix(t).in(this)},componentTransfer:function(t){return this.parent()&&this.parent().componentTransfer(t).in(this)},composite:function(t,e){return this.parent()&&this.parent().composite(this,t,e)},flood:function(t,e){return this.parent()&&this.parent().flood(t,e)},offset:function(t,e){return this.parent()&&this.parent().offset(t,e).in(this)},image:function(t){return this.parent()&&this.parent().image(t)},merge:function(){return this.parent()&&this.parent().merge.apply(this.parent(),[this].concat(arguments))},gaussianBlur:function(t,e){return this.parent()&&this.parent().gaussianBlur(t,e).in(this)},morphology:function(t,e){return this.parent()&&this.parent().morphology(t,e).in(this)},diffuseLighting:function(t,e,i){return this.parent()&&this.parent().diffuseLighting(t,e,i).in(this)},displacementMap:function(t,e,i,s){return this.parent()&&this.parent().displacementMap(this,t,e,i,s)},specularLighting:function(t,e,i,s){return this.parent()&&this.parent().specularLighting(t,e,i,s).in(this)},tile:function(){return this.parent()&&this.parent().tile().in(this)},turbulence:function(t,e,i,s,a){return this.parent()&&this.parent().turbulence(t,e,i,s,a).in(this)}};SVG.extend(SVG.Effect,t),SVG.extend(SVG.ParentEffect,t),SVG.ChildEffect=SVG.invent({create:function(){this.constructor.call(this)},inherit:SVG.Element,extend:{in:function(t){this.attr("in",t)}}});var e={blend:function(t,e,i){this.attr({in:t,in2:e,mode:i||"normal"})},colorMatrix:function(t,e){"matrix"==t&&(e=a(e)),this.attr({type:t,values:void 0===e?null:e})},convolveMatrix:function(t){t=a(t),this.attr({order:Math.sqrt(t.split(" ").length),kernelMatrix:t})},composite:function(t,e,i){this.attr({in:t,in2:e,operator:i})},flood:function(t,e){this.attr("flood-color",t),null!=e&&this.attr("flood-opacity",e)},offset:function(t,e){this.attr({dx:t,dy:e})},image:function(t){this.attr("href",t,SVG.xlink)},displacementMap:function(t,e,i,s,a){this.attr({in:t,in2:e,scale:i,xChannelSelector:s,yChannelSelector:a})},gaussianBlur:function(t,e){null!=t||null!=e?this.attr("stdDeviation",function(t){if(!Array.isArray(t))return t;for(var e=0,i=t.length,s=[];e<i;e++)s.push(t[e]);return s.join(" ")}(Array.prototype.slice.call(arguments))):this.attr("stdDeviation","0 0")},morphology:function(t,e){this.attr({operator:t,radius:e})},tile:function(){},turbulence:function(t,e,i,s,a){this.attr({numOctaves:e,seed:i,stitchTiles:s,baseFrequency:t,type:a})}},i={merge:function(){var t;if(arguments[0]instanceof SVG.Set){var e=this;arguments[0].each(function(t){this instanceof SVG.MergeNode?e.put(this):(this instanceof SVG.Effect||this instanceof SVG.ParentEffect)&&e.put(new SVG.MergeNode(this))})}else{t=Array.isArray(arguments[0])?arguments[0]:arguments;for(var i=0;i<t.length;i++)t[i]instanceof SVG.MergeNode?this.put(t[i]):this.put(new SVG.MergeNode(t[i]))}},componentTransfer:function(t){if(this.rgb=new SVG.Set,["r","g","b","a"].forEach(function(t){this[t]=new(SVG["Func"+t.toUpperCase()])("identity"),this.rgb.add(this[t]),this.node.appendChild(this[t].node)}.bind(this)),t)for(var e in t.rgb&&(["r","g","b"].forEach(function(e){this[e].attr(t.rgb)}.bind(this)),delete t.rgb),t)this[e].attr(t[e])},diffuseLighting:function(t,e,i){this.attr({surfaceScale:t,diffuseConstant:e,kernelUnitLength:i})},specularLighting:function(t,e,i,s){this.attr({surfaceScale:t,diffuseConstant:e,specularExponent:i,kernelUnitLength:s})}},s={distantLight:function(t,e){this.attr({azimuth:t,elevation:e})},pointLight:function(t,e,i){this.attr({x:t,y:e,z:i})},spotLight:function(t,e,i,s,a,n){this.attr({x:t,y:e,z:i,pointsAtX:s,pointsAtY:a,pointsAtZ:n})},mergeNode:function(t){this.attr("in",t)}};function a(t){return Array.isArray(t)&&(t=new SVG.Array(t)),t.toString().replace(/^\s+/,"").replace(/\s+$/,"").replace(/\s+/g," ")}function n(){var t=function(){};for(var e in"function"==typeof arguments[arguments.length-1]&&(t=arguments[arguments.length-1],Array.prototype.splice.call(arguments,arguments.length-1,1)),arguments)for(var i in arguments[e])t(arguments[e][i],i,arguments[e])}["r","g","b","a"].forEach(function(t){s["Func"+t.toUpperCase()]=function(t){switch(this.attr("type",t),t){case"table":this.attr("tableValues",arguments[1]);break;case"linear":this.attr("slope",arguments[1]),this.attr("intercept",arguments[2]);break;case"gamma":this.attr("amplitude",arguments[1]),this.attr("exponent",arguments[2]),this.attr("offset",arguments[2])}}}),n(e,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+"Effect"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments),this.result(this.attr("id")+"Out")},inherit:SVG.Effect,extend:{}})}),n(i,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i+"Effect"]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments),this.result(this.attr("id")+"Out")},inherit:SVG.ParentEffect,extend:{}})}),n(s,function(t,e){var i=e.charAt(0).toUpperCase()+e.slice(1);SVG[i]=SVG.invent({create:function(){this.constructor.call(this,SVG.create("fe"+i)),t.apply(this,arguments)},inherit:SVG.ChildEffect,extend:{}})}),SVG.extend(SVG.MergeEffect,{in:function(t){return t instanceof SVG.MergeNode?this.add(t,0):this.add(new SVG.MergeNode(t),0),this}}),SVG.extend(SVG.CompositeEffect,SVG.BlendEffect,SVG.DisplacementMapEffect,{in2:function(t){return null==t?this.parent()&&this.parent().select('[result="'+this.attr("in2")+'"]').get(0)||this.attr("in2"):this.attr("in2",t)}}),SVG.filter={sepiatone:[.343,.669,.119,0,0,.249,.626,.13,0,0,.172,.334,.111,0,0,0,0,0,1,0]}}.call(void 0),function(){function t(t,a,n,r,o,l,h){for(var c=t.slice(a,n||h),d=r.slice(o,l||h),u=0,g={pos:[0,0],start:[0,0]},f={pos:[0,0],start:[0,0]};;){if(c[u]=e.call(g,c[u]),d[u]=e.call(f,d[u]),c[u][0]!=d[u][0]||"M"==c[u][0]||"A"==c[u][0]&&(c[u][4]!=d[u][4]||c[u][5]!=d[u][5])?(Array.prototype.splice.apply(c,[u,1].concat(s.call(g,c[u]))),Array.prototype.splice.apply(d,[u,1].concat(s.call(f,d[u])))):(c[u]=i.call(g,c[u]),d[u]=i.call(f,d[u])),++u==c.length&&u==d.length)break;u==c.length&&c.push(["C",g.pos[0],g.pos[1],g.pos[0],g.pos[1],g.pos[0],g.pos[1]]),u==d.length&&d.push(["C",f.pos[0],f.pos[1],f.pos[0],f.pos[1],f.pos[0],f.pos[1]])}return{start:c,dest:d}}function e(t){switch(t[0]){case"z":case"Z":t[0]="L",t[1]=this.start[0],t[2]=this.start[1];break;case"H":t[0]="L",t[2]=this.pos[1];break;case"V":t[0]="L",t[2]=t[1],t[1]=this.pos[0];break;case"T":t[0]="Q",t[3]=t[1],t[4]=t[2],t[1]=this.reflection[1],t[2]=this.reflection[0];break;case"S":t[0]="C",t[6]=t[4],t[5]=t[3],t[4]=t[2],t[3]=t[1],t[2]=this.reflection[1],t[1]=this.reflection[0]}return t}function i(t){var e=t.length;return this.pos=[t[e-2],t[e-1]],-1!="SCQT".indexOf(t[0])&&(this.reflection=[2*this.pos[0]-t[e-4],2*this.pos[1]-t[e-3]]),t}function s(t){var e=[t];switch(t[0]){case"M":return this.pos=this.start=[t[1],t[2]],e;case"L":t[5]=t[3]=t[1],t[6]=t[4]=t[2],t[1]=this.pos[0],t[2]=this.pos[1];break;case"Q":t[6]=t[4],t[5]=t[3],t[4]=1*t[4]/3+2*t[2]/3,t[3]=1*t[3]/3+2*t[1]/3,t[2]=1*this.pos[1]/3+2*t[2]/3,t[1]=1*this.pos[0]/3+2*t[1]/3;break;case"A":t=(e=function(t,e){var i,s,a,n,r,o,l,h,c,d,u,g,f,p,x,b,m,v,y,w,k,A,S,C,L,z,P=Math.abs(e[1]),M=Math.abs(e[2]),E=e[3]%360,T=e[4],X=e[5],I=e[6],Y=e[7],F=new SVG.Point(t),R=new SVG.Point(I,Y),D=[];if(0===P||0===M||F.x===R.x&&F.y===R.y)return[["C",F.x,F.y,R.x,R.y,R.x,R.y]];i=new SVG.Point((F.x-R.x)/2,(F.y-R.y)/2).transform((new SVG.Matrix).rotate(E)),(s=i.x*i.x/(P*P)+i.y*i.y/(M*M))>1&&(s=Math.sqrt(s),P*=s,M*=s);a=(new SVG.Matrix).rotate(E).scale(1/P,1/M).rotate(-E),F=F.transform(a),R=R.transform(a),n=[R.x-F.x,R.y-F.y],o=n[0]*n[0]+n[1]*n[1],r=Math.sqrt(o),n[0]/=r,n[1]/=r,l=o<4?Math.sqrt(1-o/4):0,T===X&&(l*=-1);h=new SVG.Point((R.x+F.x)/2+l*-n[1],(R.y+F.y)/2+l*n[0]),c=new SVG.Point(F.x-h.x,F.y-h.y),d=new SVG.Point(R.x-h.x,R.y-h.y),u=Math.acos(c.x/Math.sqrt(c.x*c.x+c.y*c.y)),c.y<0&&(u*=-1);g=Math.acos(d.x/Math.sqrt(d.x*d.x+d.y*d.y)),d.y<0&&(g*=-1);X&&u>g&&(g+=2*Math.PI);!X&&u<g&&(g-=2*Math.PI);for(p=Math.ceil(2*Math.abs(u-g)/Math.PI),b=[],m=u,f=(g-u)/p,x=4*Math.tan(f/4)/3,k=0;k<=p;k++)y=Math.cos(m),v=Math.sin(m),w=new SVG.Point(h.x+y,h.y+v),b[k]=[new SVG.Point(w.x+x*v,w.y-x*y),w,new SVG.Point(w.x-x*v,w.y+x*y)],m+=f;for(b[0][0]=b[0][1].clone(),b[b.length-1][2]=b[b.length-1][1].clone(),a=(new SVG.Matrix).rotate(E).scale(P,M).rotate(-E),k=0,A=b.length;k<A;k++)b[k][0]=b[k][0].transform(a),b[k][1]=b[k][1].transform(a),b[k][2]=b[k][2].transform(a);for(k=1,A=b.length;k<A;k++)w=b[k-1][2],S=w.x,C=w.y,w=b[k][0],L=w.x,z=w.y,w=b[k][1],I=w.x,Y=w.y,D.push(["C",S,C,L,z,I,Y]);return D}(this.pos,t))[0]}return t[0]="C",this.pos=[t[5],t[6]],this.reflection=[2*t[5]-t[3],2*t[6]-t[4]],e}function a(t,e){if(!1===e)return!1;for(var i=e,s=t.length;i<s;++i)if("M"==t[i][0])return i;return!1}SVG.extend(SVG.PathArray,{morph:function(e){for(var i=this.value,s=this.parse(e),n=0,r=0,o=!1,l=!1;!1!==n||!1!==r;){var h;o=a(i,!1!==n&&n+1),l=a(s,!1!==r&&r+1),!1===n&&(n=0==(h=new SVG.PathArray(c.start).bbox()).height||0==h.width?i.push(i[0])-1:i.push(["M",h.x+h.width/2,h.y+h.height/2])-1),!1===r&&(r=0==(h=new SVG.PathArray(c.dest).bbox()).height||0==h.width?s.push(s[0])-1:s.push(["M",h.x+h.width/2,h.y+h.height/2])-1);var c=t(i,n,o,s,r,l);i=i.slice(0,n).concat(c.start,!1===o?[]:i.slice(o)),s=s.slice(0,r).concat(c.dest,!1===l?[]:s.slice(l)),n=!1!==o&&n+c.start.length,r=!1!==l&&r+c.dest.length}return this.value=i,this.destination=new SVG.PathArray,this.destination.value=s,this}})}(),function(){function t(t){t.remember("_draggable",this),this.el=t}t.prototype.init=function(t,e){var i=this;this.constraint=t,this.value=e,this.el.on("mousedown.drag",function(t){i.start(t)}),this.el.on("touchstart.drag",function(t){i.start(t)})},t.prototype.transformPoint=function(t,e){var i=(t=t||window.event).changedTouches&&t.changedTouches[0]||t;return this.p.x=i.pageX-(e||0),this.p.y=i.pageY,this.p.matrixTransform(this.m)},t.prototype.getBBox=function(){var t=this.el.bbox();return this.el instanceof SVG.Nested&&(t=this.el.rbox()),(this.el instanceof SVG.G||this.el instanceof SVG.Use||this.el instanceof SVG.Nested)&&(t.x=this.el.x(),t.y=this.el.y()),t},t.prototype.start=function(t){if("click"!=t.type&&"mousedown"!=t.type&&"mousemove"!=t.type||1==(t.which||t.buttons)){var e=this;this.el.fire("beforedrag",{event:t,handler:this}),this.parent=this.parent||this.el.parent(SVG.Nested)||this.el.parent(SVG.Doc),this.p=this.parent.node.createSVGPoint(),this.m=this.el.node.getScreenCTM().inverse();var i,s=this.getBBox();if(this.el instanceof SVG.Text)switch(i=this.el.node.getComputedTextLength(),this.el.attr("text-anchor")){case"middle":i/=2;break;case"start":i=0}this.startPoints={point:this.transformPoint(t,i),box:s,transform:this.el.transform()},SVG.on(window,"mousemove.drag",function(t){e.drag(t)}),SVG.on(window,"touchmove.drag",function(t){e.drag(t)}),SVG.on(window,"mouseup.drag",function(t){e.end(t)}),SVG.on(window,"touchend.drag",function(t){e.end(t)}),this.el.fire("dragstart",{event:t,p:this.startPoints.point,m:this.m,handler:this}),t.preventDefault(),t.stopPropagation()}},t.prototype.drag=function(t){var e=this.getBBox(),i=this.transformPoint(t),s=this.startPoints.box.x+i.x-this.startPoints.point.x,a=this.startPoints.box.y+i.y-this.startPoints.point.y,n=this.constraint,r=i.x-this.startPoints.point.x,o=i.y-this.startPoints.point.y,l=new CustomEvent("dragmove",{detail:{event:t,p:i,m:this.m,handler:this},cancelable:!0});if(this.el.fire(l),l.defaultPrevented)return i;if("function"==typeof n){var h=n.call(this.el,s,a,this.m);"boolean"==typeof h&&(h={x:h,y:h}),!0===h.x?this.el.x(s):!1!==h.x&&this.el.x(h.x),!0===h.y?this.el.y(a):!1!==h.y&&this.el.y(h.y)}else"object"==typeof n&&(null!=n.minX&&s<n.minX?s=n.minX:null!=n.maxX&&s>n.maxX-e.width&&(s=n.maxX-e.width),null!=n.minY&&a<n.minY?a=n.minY:null!=n.maxY&&a>n.maxY-e.height&&(a=n.maxY-e.height),this.el instanceof SVG.G?this.el.matrix(this.startPoints.transform).transform({x:r,y:o},!0):this.el.move(s,a));return i},t.prototype.end=function(t){var e=this.drag(t);this.el.fire("dragend",{event:t,p:e,m:this.m,handler:this}),SVG.off(window,"mousemove.drag"),SVG.off(window,"touchmove.drag"),SVG.off(window,"mouseup.drag"),SVG.off(window,"touchend.drag")},SVG.extend(SVG.Element,{draggable:function(e,i){"function"!=typeof e&&"object"!=typeof e||(i=e,e=!0);var s=this.remember("_draggable")||new t(this);return(e=void 0===e||e)?s.init(i||{},e):(this.off("mousedown.drag"),this.off("touchstart.drag")),this}})}.call(void 0),function(){function t(t){this.el=t,t.remember("_selectHandler",this),this.pointSelection={isSelected:!1},this.rectSelection={isSelected:!1}}t.prototype.init=function(t,e){var i=this.el.bbox();for(var s in this.options={},this.el.selectize.defaults)this.options[s]=this.el.selectize.defaults[s],void 0!==e[s]&&(this.options[s]=e[s]);this.parent=this.el.parent(),this.nested=this.nested||this.parent.group(),this.nested.matrix(new SVG.Matrix(this.el).translate(i.x,i.y)),this.options.deepSelect&&-1!==["line","polyline","polygon"].indexOf(this.el.type)?this.selectPoints(t):this.selectRect(t),this.observe(),this.cleanup()},t.prototype.selectPoints=function(t){return this.pointSelection.isSelected=t,this.pointSelection.set?this:(this.pointSelection.set=this.parent.set(),this.drawCircles(),this)},t.prototype.getPointArray=function(){var t=this.el.bbox();return this.el.array().valueOf().map(function(e){return[e[0]-t.x,e[1]-t.y]})},t.prototype.drawCircles=function(){for(var t=this,e=this.getPointArray(),i=0,s=e.length;i<s;++i){var a=function(e){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;t.el.fire("point",{x:s,y:a,i:e,event:i})}}(i);this.pointSelection.set.add(this.nested.circle(this.options.radius).center(e[i][0],e[i][1]).addClass(this.options.classPoints).addClass(this.options.classPoints+"_point").on("touchstart",a).on("mousedown",a))}},t.prototype.updatePointSelection=function(){var t=this.getPointArray();this.pointSelection.set.each(function(e){this.cx()===t[e][0]&&this.cy()===t[e][1]||this.center(t[e][0],t[e][1])})},t.prototype.updateRectSelection=function(){var t=this.el.bbox();this.rectSelection.set.get(0).attr({width:t.width,height:t.height}),this.options.points&&(this.rectSelection.set.get(2).center(t.width,0),this.rectSelection.set.get(3).center(t.width,t.height),this.rectSelection.set.get(4).center(0,t.height),this.rectSelection.set.get(5).center(t.width/2,0),this.rectSelection.set.get(6).center(t.width,t.height/2),this.rectSelection.set.get(7).center(t.width/2,t.height),this.rectSelection.set.get(8).center(0,t.height/2)),this.options.rotationPoint&&(this.options.points?this.rectSelection.set.get(9).center(t.width/2,20):this.rectSelection.set.get(1).center(t.width/2,20))},t.prototype.selectRect=function(t){var e=this,i=this.el.bbox();function s(t){return function(i){(i=i||window.event).preventDefault?i.preventDefault():i.returnValue=!1,i.stopPropagation();var s=i.pageX||i.touches[0].pageX,a=i.pageY||i.touches[0].pageY;e.el.fire(t,{x:s,y:a,event:i})}}if(this.rectSelection.isSelected=t,this.rectSelection.set=this.rectSelection.set||this.parent.set(),this.rectSelection.set.get(0)||this.rectSelection.set.add(this.nested.rect(i.width,i.height).addClass(this.options.classRect)),this.options.points&&!this.rectSelection.set.get(1)){var a="touchstart",n="mousedown";this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,0).attr("class",this.options.classPoints+"_lt").on(n,s("lt")).on(a,s("lt"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,0).attr("class",this.options.classPoints+"_rt").on(n,s("rt")).on(a,s("rt"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height).attr("class",this.options.classPoints+"_rb").on(n,s("rb")).on(a,s("rb"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height).attr("class",this.options.classPoints+"_lb").on(n,s("lb")).on(a,s("lb"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,0).attr("class",this.options.classPoints+"_t").on(n,s("t")).on(a,s("t"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width,i.height/2).attr("class",this.options.classPoints+"_r").on(n,s("r")).on(a,s("r"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,i.height).attr("class",this.options.classPoints+"_b").on(n,s("b")).on(a,s("b"))),this.rectSelection.set.add(this.nested.circle(this.options.radius).center(0,i.height/2).attr("class",this.options.classPoints+"_l").on(n,s("l")).on(a,s("l"))),this.rectSelection.set.each(function(){this.addClass(e.options.classPoints)})}if(this.options.rotationPoint&&(this.options.points&&!this.rectSelection.set.get(9)||!this.options.points&&!this.rectSelection.set.get(1))){var r=function(t){(t=t||window.event).preventDefault?t.preventDefault():t.returnValue=!1,t.stopPropagation();var i=t.pageX||t.touches[0].pageX,s=t.pageY||t.touches[0].pageY;e.el.fire("rot",{x:i,y:s,event:t})};this.rectSelection.set.add(this.nested.circle(this.options.radius).center(i.width/2,20).attr("class",this.options.classPoints+"_rot").on("touchstart",r).on("mousedown",r))}},t.prototype.handler=function(){var t=this.el.bbox();this.nested.matrix(new SVG.Matrix(this.el).translate(t.x,t.y)),this.rectSelection.isSelected&&this.updateRectSelection(),this.pointSelection.isSelected&&this.updatePointSelection()},t.prototype.observe=function(){var t=this;if(MutationObserver)if(this.rectSelection.isSelected||this.pointSelection.isSelected)this.observerInst=this.observerInst||new MutationObserver(function(){t.handler()}),this.observerInst.observe(this.el.node,{attributes:!0});else try{this.observerInst.disconnect(),delete this.observerInst}catch(t){}else this.el.off("DOMAttrModified.select"),(this.rectSelection.isSelected||this.pointSelection.isSelected)&&this.el.on("DOMAttrModified.select",function(){t.handler()})},t.prototype.cleanup=function(){!this.rectSelection.isSelected&&this.rectSelection.set&&(this.rectSelection.set.each(function(){this.remove()}),this.rectSelection.set.clear(),delete this.rectSelection.set),!this.pointSelection.isSelected&&this.pointSelection.set&&(this.pointSelection.set.each(function(){this.remove()}),this.pointSelection.set.clear(),delete this.pointSelection.set),this.pointSelection.isSelected||this.rectSelection.isSelected||(this.nested.remove(),delete this.nested)},SVG.extend(SVG.Element,{selectize:function(e,i){return"object"==typeof e&&(i=e,e=!0),(this.remember("_selectHandler")||new t(this)).init(void 0===e||e,i||{}),this}}),SVG.Element.prototype.selectize.defaults={points:!0,classRect:"svg_select_boundingRect",classPoints:"svg_select_points",radius:7,rotationPoint:!0,deepSelect:!1}}(),function(){(function(){function t(t){t.remember("_resizeHandler",this),this.el=t,this.parameters={},this.lastUpdateCall=null,this.p=t.doc().node.createSVGPoint()}t.prototype.transformPoint=function(t,e,i){return this.p.x=t-(this.offset.x-window.pageXOffset),this.p.y=e-(this.offset.y-window.pageYOffset),this.p.matrixTransform(i||this.m)},t.prototype._extractPosition=function(t){return{x:null!=t.clientX?t.clientX:t.touches[0].clientX,y:null!=t.clientY?t.clientY:t.touches[0].clientY}},t.prototype.init=function(t){var e=this;if(this.stop(),"stop"!==t){for(var i in this.options={},this.el.resize.defaults)this.options[i]=this.el.resize.defaults[i],void 0!==t[i]&&(this.options[i]=t[i]);this.el.on("lt.resize",function(t){e.resize(t||window.event)}),this.el.on("rt.resize",function(t){e.resize(t||window.event)}),this.el.on("rb.resize",function(t){e.resize(t||window.event)}),this.el.on("lb.resize",function(t){e.resize(t||window.event)}),this.el.on("t.resize",function(t){e.resize(t||window.event)}),this.el.on("r.resize",function(t){e.resize(t||window.event)}),this.el.on("b.resize",function(t){e.resize(t||window.event)}),this.el.on("l.resize",function(t){e.resize(t||window.event)}),this.el.on("rot.resize",function(t){e.resize(t||window.event)}),this.el.on("point.resize",function(t){e.resize(t||window.event)}),this.update()}},t.prototype.stop=function(){return this.el.off("lt.resize"),this.el.off("rt.resize"),this.el.off("rb.resize"),this.el.off("lb.resize"),this.el.off("t.resize"),this.el.off("r.resize"),this.el.off("b.resize"),this.el.off("l.resize"),this.el.off("rot.resize"),this.el.off("point.resize"),this},t.prototype.resize=function(t){var e=this;this.m=this.el.node.getScreenCTM().inverse(),this.offset={x:window.pageXOffset,y:window.pageYOffset};var i=this._extractPosition(t.detail.event);if(this.parameters={type:this.el.type,p:this.transformPoint(i.x,i.y),x:t.detail.x,y:t.detail.y,box:this.el.bbox(),rotation:this.el.transform().rotation},"text"===this.el.type&&(this.parameters.fontSize=this.el.attr()["font-size"]),void 0!==t.detail.i){var s=this.el.array().valueOf();this.parameters.i=t.detail.i,this.parameters.pointCoords=[s[t.detail.i][0],s[t.detail.i][1]]}switch(t.type){case"lt":this.calc=function(t,e){var i=this.snapToGrid(t,e);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y+i[1]).size(this.parameters.box.width-i[0],this.parameters.box.height-i[1])}};break;case"rt":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).size(this.parameters.box.width+i[0],this.parameters.box.height-i[1])}};break;case"rb":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x-i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize+i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x,this.parameters.box.y).size(this.parameters.box.width+i[0],this.parameters.box.height+i[1])}};break;case"lb":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0&&this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return this.el.move(this.parameters.box.x+i[0],this.parameters.box.y),void this.el.attr("font-size",this.parameters.fontSize-i[0]);i=this.checkAspectRatio(i),this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).size(this.parameters.box.width-i[0],this.parameters.box.height+i[1])}};break;case"t":this.calc=function(t,e){var i=this.snapToGrid(t,e,2);if(this.parameters.box.height-i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y+i[1]).height(this.parameters.box.height-i[1])}};break;case"r":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.width+i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).width(this.parameters.box.width+i[0])}};break;case"b":this.calc=function(t,e){var i=this.snapToGrid(t,e,0);if(this.parameters.box.height+i[1]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x,this.parameters.box.y).height(this.parameters.box.height+i[1])}};break;case"l":this.calc=function(t,e){var i=this.snapToGrid(t,e,1);if(this.parameters.box.width-i[0]>0){if("text"===this.parameters.type)return;this.el.move(this.parameters.box.x+i[0],this.parameters.box.y).width(this.parameters.box.width-i[0])}};break;case"rot":this.calc=function(t,e){var i=t+this.parameters.p.x,s=e+this.parameters.p.y,a=Math.atan2(this.parameters.p.y-this.parameters.box.y-this.parameters.box.height/2,this.parameters.p.x-this.parameters.box.x-this.parameters.box.width/2),n=180*(Math.atan2(s-this.parameters.box.y-this.parameters.box.height/2,i-this.parameters.box.x-this.parameters.box.width/2)-a)/Math.PI;this.el.center(this.parameters.box.cx,this.parameters.box.cy).rotate(this.parameters.rotation+n-n%this.options.snapToAngle,this.parameters.box.cx,this.parameters.box.cy)};break;case"point":this.calc=function(t,e){var i=this.snapToGrid(t,e,this.parameters.pointCoords[0],this.parameters.pointCoords[1]),s=this.el.array().valueOf();s[this.parameters.i][0]=this.parameters.pointCoords[0]+i[0],s[this.parameters.i][1]=this.parameters.pointCoords[1]+i[1],this.el.plot(s)}}this.el.fire("resizestart",{dx:this.parameters.x,dy:this.parameters.y,event:t}),SVG.on(window,"touchmove.resize",function(t){e.update(t||window.event)}),SVG.on(window,"touchend.resize",function(){e.done()}),SVG.on(window,"mousemove.resize",function(t){e.update(t||window.event)}),SVG.on(window,"mouseup.resize",function(){e.done()})},t.prototype.update=function(t){if(t){var e=this._extractPosition(t),i=this.transformPoint(e.x,e.y),s=i.x-this.parameters.p.x,a=i.y-this.parameters.p.y;this.lastUpdateCall=[s,a],this.calc(s,a),this.el.fire("resizing",{dx:s,dy:a,event:t})}else this.lastUpdateCall&&this.calc(this.lastUpdateCall[0],this.lastUpdateCall[1])},t.prototype.done=function(){this.lastUpdateCall=null,SVG.off(window,"mousemove.resize"),SVG.off(window,"mouseup.resize"),SVG.off(window,"touchmove.resize"),SVG.off(window,"touchend.resize"),this.el.fire("resizedone")},t.prototype.snapToGrid=function(t,e,i,s){var a;return void 0!==s?a=[(i+t)%this.options.snapToGrid,(s+e)%this.options.snapToGrid]:(i=null==i?3:i,a=[(this.parameters.box.x+t+(1&i?0:this.parameters.box.width))%this.options.snapToGrid,(this.parameters.box.y+e+(2&i?0:this.parameters.box.height))%this.options.snapToGrid]),t-=Math.abs(a[0])<this.options.snapToGrid/2?a[0]:a[0]-(t<0?-this.options.snapToGrid:this.options.snapToGrid),e-=Math.abs(a[1])<this.options.snapToGrid/2?a[1]:a[1]-(e<0?-this.options.snapToGrid:this.options.snapToGrid),this.constraintToBox(t,e,i,s)},t.prototype.constraintToBox=function(t,e,i,s){var a,n,r=this.options.constraint||{};return void 0!==s?(a=i,n=s):(a=this.parameters.box.x+(1&i?0:this.parameters.box.width),n=this.parameters.box.y+(2&i?0:this.parameters.box.height)),void 0!==r.minX&&a+t<r.minX&&(t=r.minX-a),void 0!==r.maxX&&a+t>r.maxX&&(t=r.maxX-a),void 0!==r.minY&&n+e<r.minY&&(e=r.minY-n),void 0!==r.maxY&&n+e>r.maxY&&(e=r.maxY-n),[t,e]},t.prototype.checkAspectRatio=function(t){if(!this.options.saveAspectRatio)return t;var e=t.slice(),i=this.parameters.box.width/this.parameters.box.height,s=this.parameters.box.width+t[0],a=this.parameters.box.height-t[1],n=s/a;return n<i?e[1]=s/i-this.parameters.box.height:n>i&&(e[0]=this.parameters.box.width-a*i),e},SVG.extend(SVG.Element,{resize:function(e){return(this.remember("_resizeHandler")||new t(this)).init(e||{}),this}}),SVG.Element.prototype.resize.defaults={snapToAngle:.1,snapToGrid:1,constraint:{},saveAspectRatio:!1}}).call(this)}();return function(t,e){void 0===e&&(e={});var i=e.insertAt;if(t&&"undefined"!=typeof document){var s=document.head||document.getElementsByTagName("head")[0],a=document.createElement("style");a.type="text/css","top"===i&&s.firstChild?s.insertBefore(a,s.firstChild):s.appendChild(a),a.styleSheet?a.styleSheet.cssText=t:a.appendChild(document.createTextNode(t))}}('.apexcharts-canvas {\n position: relative;\n user-select: none;\n /* cannot give overflow: hidden as it will crop tooltips which overflow outside chart area */\n}\n\n/* scrollbar is not visible by default for legend, hence forcing the visibility */\n.apexcharts-canvas ::-webkit-scrollbar {\n -webkit-appearance: none;\n width: 6px;\n}\n.apexcharts-canvas ::-webkit-scrollbar-thumb {\n border-radius: 4px;\n background-color: rgba(0,0,0,.5);\n box-shadow: 0 0 1px rgba(255,255,255,.5);\n -webkit-box-shadow: 0 0 1px rgba(255,255,255,.5);\n}\n.apexcharts-canvas.dark {\n background: #343F57;\n}\n\n.apexcharts-inner {\n position: relative;\n}\n\n.legend-mouseover-inactive {\n transition: 0.15s ease all;\n opacity: 0.20;\n}\n\n.apexcharts-series-collapsed {\n opacity: 0;\n}\n\n.apexcharts-gridline, .apexcharts-text {\n pointer-events: none;\n}\n\n.apexcharts-tooltip {\n border-radius: 5px;\n box-shadow: 2px 2px 6px -4px #999;\n cursor: default;\n font-size: 14px;\n left: 62px;\n opacity: 0;\n pointer-events: none;\n position: absolute;\n top: 20px;\n overflow: hidden;\n white-space: nowrap;\n z-index: 12;\n transition: 0.15s ease all;\n}\n.apexcharts-tooltip.light {\n border: 1px solid #e3e3e3;\n background: rgba(255, 255, 255, 0.96);\n}\n.apexcharts-tooltip.dark {\n color: #fff;\n background: rgba(30,30,30, 0.8);\n}\n.apexcharts-tooltip * {\n font-family: inherit;\n}\n\n.apexcharts-tooltip .apexcharts-marker,\n.apexcharts-area-series .apexcharts-area,\n.apexcharts-line {\n pointer-events: none;\n}\n\n.apexcharts-tooltip.active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-tooltip-title {\n padding: 6px;\n font-size: 15px;\n margin-bottom: 4px;\n}\n.apexcharts-tooltip.light .apexcharts-tooltip-title {\n background: #ECEFF1;\n border-bottom: 1px solid #ddd;\n}\n.apexcharts-tooltip.dark .apexcharts-tooltip-title {\n background: rgba(0, 0, 0, 0.7);\n border-bottom: 1px solid #333;\n}\n\n.apexcharts-tooltip-text-value,\n.apexcharts-tooltip-text-z-value {\n display: inline-block;\n font-weight: 600;\n margin-left: 5px;\n}\n\n.apexcharts-tooltip-text-z-label:empty,\n.apexcharts-tooltip-text-z-value:empty {\n display: none;\n}\n\n.apexcharts-tooltip-text-value, \n.apexcharts-tooltip-text-z-value {\n font-weight: 600;\n}\n\n.apexcharts-tooltip-marker {\n width: 12px;\n height: 12px;\n position: relative;\n top: 0px;\n margin-right: 10px;\n border-radius: 50%;\n}\n\n.apexcharts-tooltip-series-group {\n padding: 0 10px;\n display: none;\n text-align: left;\n justify-content: left;\n align-items: center;\n}\n\n.apexcharts-tooltip-series-group.active .apexcharts-tooltip-marker {\n opacity: 1;\n}\n.apexcharts-tooltip-series-group.active, .apexcharts-tooltip-series-group:last-child {\n padding-bottom: 4px;\n}\n.apexcharts-tooltip-series-group-hidden {\n opacity: 0;\n height: 0;\n line-height: 0;\n padding: 0 !important;\n}\n.apexcharts-tooltip-y-group {\n padding: 6px 0 5px;\n}\n.apexcharts-tooltip-candlestick {\n padding: 4px 8px;\n}\n.apexcharts-tooltip-candlestick > div {\n margin: 4px 0;\n}\n.apexcharts-tooltip-candlestick span.value {\n font-weight: bold;\n}\n\n.apexcharts-tooltip-rangebar {\n padding: 5px 8px;\n}\n\n.apexcharts-tooltip-rangebar .category {\n font-weight: 600;\n color: #777;\n}\n\n.apexcharts-tooltip-rangebar .series-name {\n font-weight: bold;\n display: block;\n margin-bottom: 5px;\n}\n\n.apexcharts-xaxistooltip {\n opacity: 0;\n padding: 9px 10px;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n\tbackground: #ECEFF1;\n border: 1px solid #90A4AE;\n transition: 0.15s ease all;\n}\n\n.apexcharts-xaxistooltip.dark {\n background: rgba(0, 0, 0, 0.7);\n border: 1px solid rgba(0, 0, 0, 0.5);\n color: #fff;\n}\n\n.apexcharts-xaxistooltip:after, .apexcharts-xaxistooltip:before {\n\tleft: 50%;\n\tborder: solid transparent;\n\tcontent: " ";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n\n.apexcharts-xaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-left: -6px;\n}\n.apexcharts-xaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-left: -7px;\n}\n\n.apexcharts-xaxistooltip-bottom:after, .apexcharts-xaxistooltip-bottom:before {\n bottom: 100%;\n}\n\n.apexcharts-xaxistooltip-top:after, .apexcharts-xaxistooltip-top:before {\n top: 100%;\n}\n\n.apexcharts-xaxistooltip-bottom:after {\n border-bottom-color: #ECEFF1;\n}\n.apexcharts-xaxistooltip-bottom:before {\n border-bottom-color: #90A4AE;\n}\n\n.apexcharts-xaxistooltip-bottom.dark:after {\n border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-bottom.dark:before {\n border-bottom-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-xaxistooltip-top:after {\n border-top-color:#ECEFF1\n}\n.apexcharts-xaxistooltip-top:before {\n border-top-color: #90A4AE;\n}\n.apexcharts-xaxistooltip-top.dark:after {\n border-top-color:rgba(0, 0, 0, 0.5);\n}\n.apexcharts-xaxistooltip-top.dark:before {\n border-top-color: rgba(0, 0, 0, 0.5);\n}\n\n\n.apexcharts-xaxistooltip.active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-yaxistooltip {\n opacity: 0;\n padding: 4px 10px;\n pointer-events: none;\n color: #373d3f;\n font-size: 13px;\n text-align: center;\n border-radius: 2px;\n position: absolute;\n z-index: 10;\n\tbackground: #ECEFF1;\n border: 1px solid #90A4AE;\n}\n\n.apexcharts-yaxistooltip.dark {\n background: rgba(0, 0, 0, 0.7);\n border: 1px solid rgba(0, 0, 0, 0.5);\n color: #fff;\n}\n\n.apexcharts-yaxistooltip:after, .apexcharts-yaxistooltip:before {\n\ttop: 50%;\n\tborder: solid transparent;\n\tcontent: " ";\n\theight: 0;\n\twidth: 0;\n\tposition: absolute;\n\tpointer-events: none;\n}\n.apexcharts-yaxistooltip:after {\n\tborder-color: rgba(236, 239, 241, 0);\n\tborder-width: 6px;\n\tmargin-top: -6px;\n}\n.apexcharts-yaxistooltip:before {\n\tborder-color: rgba(144, 164, 174, 0);\n\tborder-width: 7px;\n\tmargin-top: -7px;\n}\n\n.apexcharts-yaxistooltip-left:after, .apexcharts-yaxistooltip-left:before {\n left: 100%;\n}\n\n.apexcharts-yaxistooltip-right:after, .apexcharts-yaxistooltip-right:before {\n right: 100%;\n}\n\n.apexcharts-yaxistooltip-left:after {\n border-left-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-left:before {\n border-left-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-left.dark:after {\n border-left-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-left.dark:before {\n border-left-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip-right:after {\n border-right-color: #ECEFF1;\n}\n.apexcharts-yaxistooltip-right:before {\n border-right-color: #90A4AE;\n}\n.apexcharts-yaxistooltip-right.dark:after {\n border-right-color: rgba(0, 0, 0, 0.5);\n}\n.apexcharts-yaxistooltip-right.dark:before {\n border-right-color: rgba(0, 0, 0, 0.5);\n}\n\n.apexcharts-yaxistooltip.active {\n opacity: 1;\n}\n\n.apexcharts-xcrosshairs, .apexcharts-ycrosshairs {\n pointer-events: none;\n opacity: 0;\n transition: 0.15s ease all;\n}\n\n.apexcharts-xcrosshairs.active, .apexcharts-ycrosshairs.active {\n opacity: 1;\n transition: 0.15s ease all;\n}\n\n.apexcharts-ycrosshairs-hidden {\n opacity: 0;\n}\n\n.apexcharts-zoom-rect {\n pointer-events: none;\n}\n.apexcharts-selection-rect {\n cursor: move;\n}\n\n.svg_select_points, .svg_select_points_rot {\n opacity: 0;\n visibility: hidden;\n}\n.svg_select_points_l, .svg_select_points_r {\n cursor: ew-resize;\n opacity: 1;\n visibility: visible;\n fill: #888;\n}\n.apexcharts-canvas.zoomable .hovering-zoom {\n cursor: crosshair\n}\n.apexcharts-canvas.zoomable .hovering-pan {\n cursor: move\n}\n\n.apexcharts-xaxis,\n.apexcharts-yaxis {\n pointer-events: none;\n}\n\n.apexcharts-zoom-icon, \n.apexcharts-zoom-in-icon,\n.apexcharts-zoom-out-icon,\n.apexcharts-reset-zoom-icon, \n.apexcharts-pan-icon, \n.apexcharts-selection-icon,\n.apexcharts-menu-icon, \n.apexcharts-toolbar-custom-icon {\n cursor: pointer;\n width: 20px;\n height: 20px;\n line-height: 24px;\n color: #6E8192;\n text-align: center;\n}\n\n\n.apexcharts-zoom-icon svg, \n.apexcharts-zoom-in-icon svg,\n.apexcharts-zoom-out-icon svg,\n.apexcharts-reset-zoom-icon svg,\n.apexcharts-menu-icon svg {\n fill: #6E8192;\n}\n.apexcharts-selection-icon svg {\n fill: #444;\n transform: scale(0.76)\n}\n\n.dark .apexcharts-zoom-icon svg, \n.dark .apexcharts-zoom-in-icon svg,\n.dark .apexcharts-zoom-out-icon svg,\n.dark .apexcharts-reset-zoom-icon svg, \n.dark .apexcharts-pan-icon svg, \n.dark .apexcharts-selection-icon svg,\n.dark .apexcharts-menu-icon svg, \n.dark .apexcharts-toolbar-custom-icon svg{\n fill: #f3f4f5;\n}\n\n.apexcharts-canvas .apexcharts-zoom-icon.selected svg, \n.apexcharts-canvas .apexcharts-selection-icon.selected svg, \n.apexcharts-canvas .apexcharts-reset-zoom-icon.selected svg {\n fill: #008FFB;\n}\n.light .apexcharts-selection-icon:not(.selected):hover svg,\n.light .apexcharts-zoom-icon:not(.selected):hover svg, \n.light .apexcharts-zoom-in-icon:hover svg, \n.light .apexcharts-zoom-out-icon:hover svg, \n.light .apexcharts-reset-zoom-icon:hover svg, \n.light .apexcharts-menu-icon:hover svg {\n fill: #333;\n}\n\n.apexcharts-selection-icon, .apexcharts-menu-icon {\n position: relative;\n}\n.apexcharts-reset-zoom-icon {\n margin-left: 5px;\n}\n.apexcharts-zoom-icon, .apexcharts-reset-zoom-icon, .apexcharts-menu-icon {\n transform: scale(0.85);\n}\n\n.apexcharts-zoom-in-icon, .apexcharts-zoom-out-icon {\n transform: scale(0.7)\n}\n\n.apexcharts-zoom-out-icon {\n margin-right: 3px;\n}\n\n.apexcharts-pan-icon {\n transform: scale(0.62);\n position: relative;\n left: 1px;\n top: 0px;\n}\n.apexcharts-pan-icon svg {\n fill: #fff;\n stroke: #6E8192;\n stroke-width: 2;\n}\n.apexcharts-pan-icon.selected svg {\n stroke: #008FFB;\n}\n.apexcharts-pan-icon:not(.selected):hover svg {\n stroke: #333;\n}\n\n.apexcharts-toolbar {\n position: absolute;\n z-index: 11;\n top: 0px;\n right: 3px;\n max-width: 176px;\n text-align: right;\n border-radius: 3px;\n padding: 0px 6px 2px 6px;\n display: flex;\n justify-content: space-between;\n align-items: center; \n}\n\n.apexcharts-toolbar svg {\n pointer-events: none;\n}\n\n.apexcharts-menu {\n background: #fff;\n position: absolute;\n top: 100%;\n border: 1px solid #ddd;\n border-radius: 3px;\n padding: 3px;\n right: 10px;\n opacity: 0;\n min-width: 110px;\n transition: 0.15s ease all;\n pointer-events: none;\n}\n\n.apexcharts-menu.open {\n opacity: 1;\n pointer-events: all;\n transition: 0.15s ease all;\n}\n\n.apexcharts-menu-item {\n padding: 6px 7px;\n font-size: 12px;\n cursor: pointer;\n}\n.light .apexcharts-menu-item:hover {\n background: #eee;\n}\n.dark .apexcharts-menu {\n background: rgba(0, 0, 0, 0.7);\n color: #fff;\n}\n\n@media screen and (min-width: 768px) {\n .apexcharts-toolbar {\n /*opacity: 0;*/\n }\n\n .apexcharts-canvas:hover .apexcharts-toolbar {\n opacity: 1;\n } \n}\n\n.apexcharts-datalabel.hidden {\n opacity: 0;\n}\n\n.apexcharts-pie-label,\n.apexcharts-datalabel, .apexcharts-datalabel-label, .apexcharts-datalabel-value {\n cursor: default;\n pointer-events: none;\n}\n\n.apexcharts-pie-label-delay {\n opacity: 0;\n animation-name: opaque;\n animation-duration: 0.3s;\n animation-fill-mode: forwards;\n animation-timing-function: ease;\n}\n\n.apexcharts-canvas .hidden {\n opacity: 0;\n}\n\n.apexcharts-hide .apexcharts-series-points {\n opacity: 0;\n}\n\n.apexcharts-area-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events,\n.apexcharts-line-series .apexcharts-series-markers .apexcharts-marker.no-pointer-events, .apexcharts-radar-series path, .apexcharts-radar-series polygon {\n pointer-events: none;\n}\n\n/* markers */\n\n.apexcharts-marker {\n transition: 0.15s ease all;\n}\n\n@keyframes opaque {\n 0% {\n opacity: 0;\n }\n 100% {\n opacity: 1;\n }\n}'),"document"in self&&("classList"in document.createElement("_")&&(!document.createElementNS||"classList"in document.createElementNS("http://www.w3.org/2000/svg","g"))||function(t){if("Element"in t){var e=t.Element.prototype,i=Object,s=String.prototype.trim||function(){return this.replace(/^\s+|\s+$/g,"")},a=Array.prototype.indexOf||function(t){for(var e=0,i=this.length;e<i;e++)if(e in this&&this[e]===t)return e;return-1},n=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},r=function(t,e){if(""===e)throw new n("SYNTAX_ERR","The token must not be empty.");if(/\s/.test(e))throw new n("INVALID_CHARACTER_ERR","The token must not contain space characters.");return a.call(t,e)},o=function(t){for(var e=s.call(t.getAttribute("class")||""),i=e?e.split(/\s+/):[],a=0,n=i.length;a<n;a++)this.push(i[a]);this._updateClassName=function(){t.setAttribute("class",this.toString())}},l=o.prototype=[],h=function(){return new o(this)};if(n.prototype=Error.prototype,l.item=function(t){return this[t]||null},l.contains=function(t){return~r(this,t+"")},l.add=function(){var t,e=arguments,i=0,s=e.length,a=!1;do{t=e[i]+"",~r(this,t)||(this.push(t),a=!0)}while(++i<s);a&&this._updateClassName()},l.remove=function(){var t,e,i=arguments,s=0,a=i.length,n=!1;do{for(t=i[s]+"",e=r(this,t);~e;)this.splice(e,1),n=!0,e=r(this,t)}while(++s<a);n&&this._updateClassName()},l.toggle=function(t,e){var i=this.contains(t),s=i?!0!==e&&"remove":!1!==e&&"add";return s&&this[s](t),!0===e||!1===e?e:!i},l.replace=function(t,e){var i=r(t+"");~i&&(this.splice(i,1,e),this._updateClassName())},l.toString=function(){return this.join(" ")},i.defineProperty){var c={get:h,enumerable:!0,configurable:!0};try{i.defineProperty(e,"classList",c)}catch(t){void 0!==t.number&&-2146823252!==t.number||(c.enumerable=!1,i.defineProperty(e,"classList",c))}}else i.prototype.__defineGetter__&&e.__defineGetter__("classList",h)}}(self),function(){var t=document.createElement("_");if(t.classList.add("c1","c2"),!t.classList.contains("c2")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var i,s=arguments.length;for(i=0;i<s;i++)t=arguments[i],e.call(this,t)}};e("add"),e("remove")}if(t.classList.toggle("c3",!1),t.classList.contains("c3")){var i=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:i.call(this,t)}}"replace"in document.createElement("_").classList||(DOMTokenList.prototype.replace=function(t,e){var i=this.toString().split(" "),s=i.indexOf(t+"");~s&&(i=i.slice(s),this.remove.apply(this,i),this.add(e),this.add.apply(this,i.slice(1)))}),t=null}()),function(){var t=!1;function e(t){var e=t.__resizeTriggers__,i=e.firstElementChild,s=e.lastElementChild,a=i.firstElementChild;s.scrollLeft=s.scrollWidth,s.scrollTop=s.scrollHeight,a.style.width=i.offsetWidth+1+"px",a.style.height=i.offsetHeight+1+"px",i.scrollLeft=i.scrollWidth,i.scrollTop=i.scrollHeight}function i(t){var i=this;e(this),this.__resizeRAF__&&r(this.__resizeRAF__),this.__resizeRAF__=n(function(){(function(t){return t.offsetWidth!=t.__resizeLast__.width||t.offsetHeight!=t.__resizeLast__.height})(i)&&(i.__resizeLast__.width=i.offsetWidth,i.__resizeLast__.height=i.offsetHeight,i.__resizeListeners__.forEach(function(e){e.call(t)}))})}var s,a,n=(s=window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||function(t){return window.setTimeout(t,20)},function(t){return s(t)}),r=(a=window.cancelAnimationFrame||window.mozCancelAnimationFrame||window.webkitCancelAnimationFrame||window.clearTimeout,function(t){return a(t)}),o=!1,l="",h="animationstart",c="Webkit Moz O ms".split(" "),d="webkitAnimationStart animationstart oAnimationStart MSAnimationStart".split(" "),u=document.createElement("fakeelement");if(void 0!==u.style.animationName&&(o=!0),!1===o)for(var g=0;g<c.length;g++)if(void 0!==u.style[c[g]+"AnimationName"]){l="-"+c[g].toLowerCase()+"-",h=d[g];break}var f="@"+l+"keyframes resizeanim { from { opacity: 0; } to { opacity: 0; } } ",p=l+"animation: 1ms resizeanim; ";window.addResizeListener=function(s,a){s.__resizeTriggers__||("static"==getComputedStyle(s).position&&(s.style.position="relative"),function(){if(!t){var e=(f||"")+".resize-triggers { "+(p||"")+'visibility: hidden; opacity: 0; } .resize-triggers, .resize-triggers > div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',i=document.head||document.getElementsByTagName("head")[0],s=document.createElement("style");s.type="text/css",s.styleSheet?s.styleSheet.cssText=e:s.appendChild(document.createTextNode(e)),i.appendChild(s),t=!0}}(),s.__resizeLast__={},s.__resizeListeners__=[],(s.__resizeTriggers__=document.createElement("div")).className="resize-triggers",s.__resizeTriggers__.innerHTML='<div class="expand-trigger"><div></div></div><div class="contract-trigger"></div>',s.appendChild(s.__resizeTriggers__),e(s),s.addEventListener("scroll",i,!0),h&&s.__resizeTriggers__.addEventListener(h,function(t){"resizeanim"==t.animationName&&e(s)})),s.__resizeListeners__.push(a)},window.removeResizeListener=function(t,e){t&&(t.__resizeListeners__.splice(t.__resizeListeners__.indexOf(e),1),t.__resizeListeners__.length||(t.removeEventListener("scroll",i),t.__resizeTriggers__=!t.removeChild(t.__resizeTriggers__)))}}(),window.Apex={},function(){function i(t,s){e(this,i),this.opts=s,this.ctx=this,this.w=new A(s).init(),this.el=t,this.w.globals.cuid=(Math.random()+1).toString(36).substring(4),this.w.globals.chartID=this.w.config.chart.id?this.w.config.chart.id:this.w.globals.cuid,this.initModules(),this.create=d.bind(this.create,this),this.windowResizeHandler=this.windowResize.bind(this)}return s(i,[{key:"render",value:function(){var t=this;return new $(function(e,i){if(null!==t.el){void 0===Apex._chartInstances&&(Apex._chartInstances=[]),t.w.config.chart.id&&Apex._chartInstances.push({id:t.w.globals.chartID,group:t.w.config.chart.group,chart:t}),t.setLocale(t.w.config.chart.defaultLocale);var s=t.w.config.chart.events.beforeMount;"function"==typeof s&&s(t,t.w),t.fireEvent("beforeMount",[t,t.w]),window.addEventListener("resize",t.windowResizeHandler),window.addResizeListener(t.el.parentNode,t.parentResizeCallback.bind(t));var a=t.create(t.w.config.series,{});if(!a)return e(t);t.mount(a).then(function(){e(a),"function"==typeof t.w.config.chart.events.mounted&&t.w.config.chart.events.mounted(t,t.w),t.fireEvent("mounted",[t,t.w])}).catch(function(t){i(t)})}else i(new Error("Element not found"))})}},{key:"initModules",value:function(){this.animations=new g(this),this.core=new U(this.el,this),this.grid=new rt(this),this.coreUtils=new y(this),this.config=new w({}),this.crosshairs=new T(this),this.options=new x,this.responsive=new lt(this),this.series=new G(this),this.theme=new ht(this),this.formatters=new N(this),this.titleSubtitle=new vt(this),this.legend=new ot(this),this.toolbar=new bt(this),this.dimensions=new _(this),this.zoomPanSelection=new mt(this),this.w.globals.tooltip=new xt(this)}},{key:"addEventListener",value:function(t,e){var i=this.w;i.globals.events.hasOwnProperty(t)?i.globals.events[t].push(e):i.globals.events[t]=[e]}},{key:"removeEventListener",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){var s=i.globals.events[t].indexOf(e);-1!==s&&i.globals.events[t].splice(s,1)}}},{key:"fireEvent",value:function(t,e){var i=this.w;if(i.globals.events.hasOwnProperty(t)){e&&e.length||(e=[]);for(var s=i.globals.events[t],a=s.length,n=0;n<a;n++)s[n].apply(null,e)}}},{key:"create",value:function(t,e){var i=this.w;this.initModules();var s=this.w.globals;if(s.noData=!1,s.animationEnded=!1,this.responsive.checkResponsiveConfig(e),null===this.el)return s.animationEnded=!0,null;if(this.core.setupElements(),0===s.svgWidth)return s.animationEnded=!0,null;var a=y.checkComboSeries(t);s.comboCharts=a.comboCharts,s.comboChartsHasBars=a.comboChartsHasBars,(0===t.length||1===t.length&&t[0].data&&0===t[0].data.length)&&this.series.handleNoData(),this.setupEventHandlers(),this.core.parseData(t),this.theme.init(),new C(this).setGlobalMarkerSize(),this.formatters.setLabelFormatters(),this.titleSubtitle.draw(),this.legend.init(),this.series.hasAllSeriesEqualX(),s.axisCharts&&(this.core.coreCalculations(),"category"!==i.config.xaxis.type&&this.formatters.setLabelFormatters()),this.formatters.heatmapLabelFormatters(),this.dimensions.plotCoords();var n=this.core.xySettings();this.grid.createGridMask();var r=this.core.plotChartType(t,n);this.core.shiftGraphPosition();var o={plot:{left:i.globals.translateX,top:i.globals.translateY,width:i.globals.gridWidth,height:i.globals.gridHeight}};return{elGraph:r,xyRatios:n,elInner:i.globals.dom.elGraphical,dimensions:o}}},{key:"mount",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,e=this,i=e.w;return new $(function(s,a){if(null===e.el)return a(new Error("Not enough data to display or target element not found"));if((null===t||i.globals.allSeriesCollapsed)&&e.series.handleNoData(),e.annotations=new b(e),e.core.drawAxis(i.config.chart.type,t.xyRatios),e.grid=new rt(e),"back"===i.config.grid.position&&e.grid.drawGrid(),"back"===i.config.annotations.position&&e.annotations.drawAnnotations(),t.elGraph instanceof Array)for(var n=0;n<t.elGraph.length;n++)i.globals.dom.elGraphical.add(t.elGraph[n]);else i.globals.dom.elGraphical.add(t.elGraph);if("front"===i.config.grid.position&&e.grid.drawGrid(),"front"===i.config.xaxis.crosshairs.position&&e.crosshairs.drawXCrosshairs(),"front"===i.config.yaxis[0].crosshairs.position&&e.crosshairs.drawYCrosshairs(),"front"===i.config.annotations.position&&e.annotations.drawAnnotations(),!i.globals.noData){if(i.config.tooltip.enabled&&!i.globals.noData&&e.w.globals.tooltip.drawTooltip(t.xyRatios),i.globals.axisCharts&&i.globals.isXNumeric)(i.config.chart.zoom.enabled||i.config.chart.selection&&i.config.chart.selection.enabled||i.config.chart.pan&&i.config.chart.pan.enabled)&&e.zoomPanSelection.init({xyRatios:t.xyRatios});else{var r=i.config.chart.toolbar.tools;r.zoom=!1,r.zoomin=!1,r.zoomout=!1,r.selection=!1,r.pan=!1,r.reset=!1}i.config.chart.toolbar.show&&!i.globals.allSeriesCollapsed&&e.toolbar.createToolbar()}i.globals.memory.methodsToExec.length>0&&i.globals.memory.methodsToExec.forEach(function(t){t.method(t.params,!1,t.context)}),s(e)})}},{key:"clearPreviousPaths",value:function(){var t=this.w;t.globals.previousPaths=[],t.globals.allSeriesCollapsed=!1,t.globals.collapsedSeries=[],t.globals.collapsedSeriesIndices=[]}},{key:"updateOptions",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],a=this.w;return t.series&&(t.series[0].data&&(t.series=t.series.map(function(t,e){return n({},a.config.series[e],{name:t.name?t.name:a.config.series[e]&&a.config.series[e].name,type:t.type?t.type:a.config.series[e]&&a.config.series[e].type,data:t.data?t.data:a.config.series[e]&&a.config.series[e].data})})),this.revertDefaultAxisMinMax()),t.xaxis&&((t.xaxis.min||t.xaxis.max)&&this.forceXAxisUpdate(t),t.xaxis.categories&&t.xaxis.categories.length&&a.config.xaxis.convertedCatToNumeric&&(t=v.convertCatToNumeric(t))),a.globals.collapsedSeriesIndices.length>0&&this.clearPreviousPaths(),t.theme&&(t=this.theme.updateThemeOptions(t)),this._updateOptions(t,e,i,s)}},{key:"_updateOptions",value:function(e){var i=arguments.length>1&&void 0!==arguments[1]&&arguments[1],s=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],a=arguments.length>3&&void 0!==arguments[3]&&arguments[3];this.getSyncedCharts().forEach(function(n){var r=n.w;return r.globals.shouldAnimate=s,i||(r.globals.resized=!0,r.globals.dataChanged=!0,s&&n.series.getPreviousPaths()),e&&"object"===t(e)&&(n.config=new w(e),e=y.extendArrayProps(n.config,e),r.config=d.extend(r.config,e),a&&(r.globals.lastXAxis=[],r.globals.lastYAxis=[],r.globals.initialConfig=d.extend({},r.config),r.globals.initialSeries=JSON.parse(JSON.stringify(r.config.series)))),n.update(e)})}},{key:"updateSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2];return this.revertDefaultAxisMinMax(),this._updateSeries(t,e,i)}},{key:"appendSeries",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],s=this.w.config.series.slice();return s.push(t),this.revertDefaultAxisMinMax(),this._updateSeries(s,e,i)}},{key:"_updateSeries",value:function(t,e){var i,s=arguments.length>2&&void 0!==arguments[2]&&arguments[2],a=this.w;return this.w.globals.shouldAnimate=e,a.globals.dataChanged=!0,a.globals.allSeriesCollapsed&&(a.globals.allSeriesCollapsed=!1),e&&this.series.getPreviousPaths(),a.globals.axisCharts?(0===(i=t.map(function(t,e){return n({},a.config.series[e],{name:t.name?t.name:a.config.series[e]&&a.config.series[e].name,type:t.type?t.type:a.config.series[e]&&a.config.series[e].type,data:t.data?t.data:a.config.series[e]&&a.config.series[e].data})})).length&&(i=[{data:[]}]),a.config.series=i):a.config.series=t.slice(),s&&(a.globals.initialConfig.series=JSON.parse(JSON.stringify(a.config.series)),a.globals.initialSeries=JSON.parse(JSON.stringify(a.config.series))),this.update()}},{key:"getSyncedCharts",value:function(){var t=this.getGroupedCharts(),e=[this];return t.length&&(e=[],t.forEach(function(t){e.push(t)})),e}},{key:"getGroupedCharts",value:function(){var t=this;return Apex._chartInstances.filter(function(t){if(t.group)return!0}).map(function(e){return t.w.config.chart.group===e.group?e.chart:t})}},{key:"appendData",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this;i.w.globals.dataChanged=!0,i.series.getPreviousPaths();for(var s=i.w.config.series.slice(),a=0;a<s.length;a++)if(void 0!==t[a])for(var n=0;n<t[a].data.length;n++)s[a].data.push(t[a].data[n]);return i.w.config.series=s,e&&(i.w.globals.initialSeries=JSON.parse(JSON.stringify(i.w.config.series))),this.update()}},{key:"update",value:function(t){var e=this;return new $(function(i,s){e.clear();var a=e.create(e.w.config.series,t);if(!a)return i(e);e.mount(a).then(function(){"function"==typeof e.w.config.chart.events.updated&&e.w.config.chart.events.updated(e,e.w),e.fireEvent("updated",[e,e.w]),e.w.globals.isDirty=!0,i(e)}).catch(function(t){s(t)})})}},{key:"forceXAxisUpdate",value:function(t){var e=this.w;void 0!==t.xaxis.min&&(e.config.xaxis.min=t.xaxis.min,e.globals.lastXAxis.min=t.xaxis.min),void 0!==t.xaxis.max&&(e.config.xaxis.max=t.xaxis.max,e.globals.lastXAxis.max=t.xaxis.max)}},{key:"revertDefaultAxisMinMax",value:function(){var t=this.w;t.config.xaxis.min=t.globals.lastXAxis.min,t.config.xaxis.max=t.globals.lastXAxis.max,t.config.yaxis.map(function(e,i){t.globals.zoomed&&void 0!==t.globals.lastYAxis[i]&&(e.min=t.globals.lastYAxis[i].min,e.max=t.globals.lastYAxis[i].max)})}},{key:"clear",value:function(){this.zoomPanSelection&&this.zoomPanSelection.destroy(),this.toolbar&&this.toolbar.destroy(),this.animations=null,this.annotations=null,this.core=null,this.grid=null,this.series=null,this.responsive=null,this.theme=null,this.formatters=null,this.titleSubtitle=null,this.legend=null,this.dimensions=null,this.options=null,this.crosshairs=null,this.zoomPanSelection=null,this.toolbar=null,this.w.globals.tooltip=null,this.clearDomElements()}},{key:"killSVG",value:function(t){return new $(function(e,i){t.each(function(t,e){this.removeClass("*"),this.off(),this.stop()},!0),t.ungroup(),t.clear(),e("done")})}},{key:"clearDomElements",value:function(){var t=this.w.globals.dom;if(null!==this.el)for(;this.el.firstChild;)this.el.removeChild(this.el.firstChild);this.killSVG(t.Paper),t.Paper.remove(),t.elWrap=null,t.elGraphical=null,t.elLegendWrap=null,t.baseEl=null,t.elGridRect=null,t.elGridRectMask=null,t.elGridRectMarkerMask=null,t.elDefs=null}},{key:"destroy",value:function(){this.clear();var t=this.w.config.chart.id;t&&Apex._chartInstances.forEach(function(e,i){e.id===t&&Apex._chartInstances.splice(i,1)}),window.removeEventListener("resize",this.windowResizeHandler),window.removeResizeListener(this.el.parentNode,this.parentResizeCallback.bind(this))}},{key:"toggleSeries",value:function(t){var e=this.series.getSeriesByName(t),i=parseInt(e.getAttribute("data:realIndex")),s=e.classList.contains("apexcharts-series-collapsed");this.legend.toggleDataSeries(i,s)}},{key:"resetToggleSeries",value:function(){this.legend.resetToggleDataSeries()}},{key:"setupEventHandlers",value:function(){var t=this.w,e=this,i=t.globals.dom.baseEl.querySelector(t.globals.chartClass),s=["mousedown","mousemove","touchstart","touchmove","mouseup","touchend"];s.forEach(function(s){i.addEventListener(s,function(i){"mousedown"===i.type&&1===i.which||("mouseup"===i.type&&1===i.which||"touchend"===i.type)&&("function"==typeof t.config.chart.events.click&&t.config.chart.events.click(i,e,t),e.fireEvent("click",[i,e,t]))},{capture:!1,passive:!0})}),s.forEach(function(e){document.addEventListener(e,function(e){t.globals.clientX="touchmove"===e.type?e.touches[0].clientX:e.clientX,t.globals.clientY="touchmove"===e.type?e.touches[0].clientY:e.clientY})}),this.core.setupBrushHandler()}},{key:"addXaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addXaxisAnnotationExternal(t,e,s)}},{key:"addYaxisAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addYaxisAnnotationExternal(t,e,s)}},{key:"addPointAnnotation",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addPointAnnotationExternal(t,e,s)}},{key:"clearAnnotations",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:void 0,e=this;t&&(e=t),e.annotations.clearAnnotations(e)}},{key:"addText",value:function(t){var e=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:void 0,s=this;i&&(s=i),s.annotations.addText(t,e,s)}},{key:"getChartArea",value:function(){return this.w.globals.dom.baseEl.querySelector(".apexcharts-inner")}},{key:"getSeriesTotalXRange",value:function(t,e){return this.coreUtils.getSeriesTotalsXRange(t,e)}},{key:"getHighestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new V(this.ctx).getMinYMaxY(t).highestY}},{key:"getLowestValueInSeries",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:0;return new V(this.ctx).getMinYMaxY(t).lowestY}},{key:"getSeriesTotal",value:function(){return this.w.globals.seriesTotals}},{key:"setLocale",value:function(t){this.setCurrentLocaleValues(t)}},{key:"setCurrentLocaleValues",value:function(t){var e=this.w.config.chart.locales;window.Apex.chart&&window.Apex.chart.locales&&window.Apex.chart.locales.length>0&&(e=this.w.config.chart.locales.concat(window.Apex.chart.locales));var i=e.filter(function(e){return e.name===t})[0];if(!i)throw new Error("Wrong locale name provided. Please make sure you set the correct locale name in options");var s=d.extend(p,i);this.w.globals.locale=s.options}},{key:"dataURI",value:function(){return new nt(this.ctx).dataURI()}},{key:"paper",value:function(){return this.w.globals.dom.Paper}},{key:"parentResizeCallback",value:function(){this.w.globals.animationEnded&&this.windowResize()}},{key:"windowResize",value:function(){var t=this;clearTimeout(this.w.globals.resizeTimer),this.w.globals.resizeTimer=window.setTimeout(function(){t.w.globals.resized=!0,t.w.globals.dataChanged=!1,t.update()},150)}}],[{key:"initOnLoad",value:function(){for(var t=document.querySelectorAll("[data-apexcharts]"),e=0;e<t.length;e++){new i(t[e],JSON.parse(t[e].getAttribute("data-options"))).render()}}},{key:"exec",value:function(t,e){var i=this.getChartByID(t);if(i){for(var s=arguments.length,a=new Array(s>2?s-2:0),n=2;n<s;n++)a[n-2]=arguments[n];switch(e){case"updateOptions":return i.updateOptions.apply(i,a);case"updateSeries":return i.updateSeries.apply(i,a);case"appendData":return i.appendData.apply(i,a);case"appendSeries":return i.appendSeries.apply(i,a);case"toggleSeries":return i.toggleSeries.apply(i,a);case"dataURI":return i.dataURI.apply(i,a);case"addXaxisAnnotation":return i.addXaxisAnnotation.apply(i,a);case"addYaxisAnnotation":return i.addYaxisAnnotation.apply(i,a);case"addPointAnnotation":return i.addPointAnnotation.apply(i,a);case"addText":return i.addText.apply(i,a);case"clearAnnotations":return i.clearAnnotations.apply(i,a);case"paper":return i.paper.apply(i,a);case"destroy":return i.destroy()}}}},{key:"merge",value:function(t,e){return d.extend(t,e)}},{key:"getChartByID",value:function(t){return Apex._chartInstances.filter(function(e){return e.id===t})[0].chart}}]),i}()}); +exports('apexcharts',ApexCharts); +}) \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/extends/eleTree.js b/src/main/resources/static/febs/lay/extends/eleTree.js new file mode 100644 index 0000000..bf34ab6 --- /dev/null +++ b/src/main/resources/static/febs/lay/extends/eleTree.js @@ -0,0 +1,1418 @@ +/** + * @Name: 基于layui的tree重写 + * @Author: 李祥 + * @License:MIT + * 最近修改时间: 2019/05/20 + * https://layuiextend.hsianglee.cn/eletree/ + */ + +layui.define(["jquery", "laytpl"], function (exports) { + var $ = layui.jquery; + var laytpl = layui.laytpl; + var hint = layui.hint(); + + var MOD_NAME = "eleTree"; + + //外部接口 + var eleTree = { + //事件监听 + on: function (events, callback) { + return layui.onevent.call(this, MOD_NAME, events, callback); + }, + render: function (options) { + var inst = new Class(options); + return thisTree.call(inst); + } + } + + var thisTree = function () { + var _self = this; + var options = _self.config; + + // 暴漏外面的方法 + return { + // 接收两个参数,1. 节点 key 2. 节点数据的数组 + updateKeyChildren: function (key, data) { + if (options.data.length === 0) return; + return _self.updateKeyChildren.call(_self, key, data); + }, + updateKeySelf: function (key, data) { + if (options.data.length === 0) return; + return _self.updateKeySelf.call(_self, key, data); + }, + remove: function (key) { + if (options.data.length === 0) return; + return _self.remove.call(_self, key); + }, + append: function (key, data) { + if (options.data.length === 0) return; + return _self.append.call(_self, key, data); + }, + insertBefore: function (key, data) { + if (options.data.length === 0) return; + return _self.insertBefore.call(_self, key, data); + }, + insertAfter: function (key, data) { + if (options.data.length === 0) return; + return _self.insertAfter.call(_self, key, data); + }, + // 接收两个 boolean 类型的参数,1. 是否只是叶子节点,默认值为 false 2. 是否包含半选节点,默认值为 false + getChecked: function (leafOnly, includeHalfChecked) { + if (options.data.length === 0) return; + return _self.getChecked.call(_self, leafOnly, includeHalfChecked); + }, + // 接收勾选节点数据的数组 + setChecked: function (data, isReset) { + if (options.data.length === 0) return; + return _self.setChecked.call(_self, data, isReset); + }, + // 取消选中 + unCheckNodes: function () { + if (options.data.length === 0) return; + return _self.unCheckNodes.call(_self); + }, + unCheckArrNodes: function (data) { + if (options.data.length === 0) return; + return _self.unCheckArrNodes.call(_self, data); + }, + expandAll: function () { + options.elem.children(".eleTree-node").children(".eleTree-node-group").empty(); + _self.expandAll.call(_self, options.data, [], 1, true); + _self.unCheckNodes(true); + _self.defaultChecked(); + _self.checkboxInit(); + }, + unExpandAll: function () { + return _self.unExpandAll.call(_self); + }, + reload: function (options) { + return _self.reload.call(_self, options); + }, + search: function (value) { + return _self.search.call(_self, value); + } + } + } + + // 模板渲染 + var TPL_ELEM = function (options, floor, parentStatus) { + return [ + '{{# for(var i=0;i<d.length;i++){ }}', + '<div class="eleTree-node {{# if(d[i].visible===false){ }}eleTree-search-hide{{# } }}" data-' + options.request.key + '="{{d[i]["' + options.request.key + '"]}}" eletree-floor="' + floor + '" style="display: none;">', + '<div class="eleTree-node-content" type="{{d[i]["' + options.request.data + '"].type}}" style="padding-left: ' + (options.indent * floor) + 'px;">', + '<span class="eleTree-node-content-icon">', + '<i class="layui-icon layui-icon-triangle-r ', + function () { + if (options.lazy) { + var str = [ + '{{# if(!d[i]["' + options.request.isLeaf + '"]){ }}', + 'lazy-icon" ></i>', + '{{# }else{ }}', + 'leaf-icon" style="color: transparent;" ></i>', + '{{# } }}' + ].join(""); + return str; + } + return ['{{# if(!d[i]["' + options.request.children + '"] || d[i]["' + options.request.children + '"].length===0){ }}', + 'leaf-icon" style="color: transparent;"', + '{{# } }}', + '"></i>' + ].join(""); + }(), + '</span>', + function () { + if (options.showCheckbox) { + var status = ""; + if (parentStatus === "1") { + status = '"1" checked'; + } else if (parentStatus === "2") { + status = '"2"'; + } else { + status = '"0"'; + } + return [ + '{{# if(d[i]["' + options.request.checked + '"]) { }}', + '<input type="checkbox" name="eleTree-node" lay-ignore eleTree-status="1" checked data-checked class="layui-hide eleTree-hideen ', + '{{# }else{ }}', + '<input type="checkbox" name="eleTree-node" lay-ignore eleTree-status=' + status + ' class="layui-hide eleTree-hideen ', + '{{# } }}', + + '{{# if(d[i]["' + options.request.disabled + '"]) { }}', + 'eleTree-disabled', + '{{# } }}', + '" />' + ].join(""); + } + return '' + }(), + '<span class="eleTree-node-content-label">{{d[i]["' + options.request.name + '"]}}</span>', + '</div>', + '<div class="eleTree-node-group">', + '</div>', + '</div>', + '{{# } }}' + ].join(""); + } + + var TPL_NoText = function () { + return '<h3 class="eleTree-noText" style="text-align: center;height: 30px;line-height: 30px;color: #888;">{{d.emptText}}</h3>'; + } + + var Class = function (options) { + options.response = $.extend({}, this.config.response, options.response); + options.request = $.extend({}, this.config.request, options.request); + this.config = $.extend({}, this.config, options); + this.prevClickEle = null; + this.nameIndex = 1; + this.render(); + }; + + Class.prototype = { + constructor: Class, + config: { + elem: "", + data: [], + emptText: "暂无数据", // 内容为空的时候展示的文本 + renderAfterExpand: true, // 是否在第一次展开某个树节点后才渲染其子节点 + highlightCurrent: false, // 是否高亮当前选中节点,默认值是 false。 + defaultExpandAll: false, // 是否默认展开所有节点 + expandOnClickNode: true, // 是否在点击节点的时候展开或者收缩节点, 默认值为 true,如果为 false,则只有点箭头图标的时候才会展开或者收缩节点。 + checkOnClickNode: false, // 是否在点击节点的时候选中节点,默认值为 false,即只有在点击复选框时才会选中节点。 + defaultExpandedKeys: [], // 默认展开的节点的 key 的数组 + autoExpandParent: true, // 展开子节点的时候是否自动展开父节点 + showCheckbox: false, // 节点是否可被选择 + checkStrictly: false, // 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 false + defaultCheckedKeys: [], // 默认勾选的节点的 key 的数组 + accordion: false, // 是否每次只打开一个同级树节点展开(手风琴效果) + indent: 16, // 相邻级节点间的水平缩进,单位为像素 + lazy: false, // 是否懒加载子节点,需与 load 方法结合使用 + load: function () { + }, // 加载子树数据的方法,仅当 lazy 属性为true 时生效 + draggable: false, // 是否开启拖拽节点功能 + contextmenuList: [], // 启用右键菜单,支持的操作有:"copy","add","edit","remove" + searchNodeMethod: null, // 对树节点进行筛选时执行的方法,返回 true 表示这个节点可以显示,返回 false 则表示这个节点会被隐藏 + + method: "get", + url: "", + contentType: "", + headers: {}, + done: null, + + response: { + statusName: "code", + statusCode: 0, + dataName: "data" + }, + request: { + name: "label", + key: "id", + children: "children", + disabled: "disabled", + checked: "checked", + isLeaf: "isLeaf" + } + }, + render: function () { + if (this.config.indent > 30) { + this.config.indent = 30; + } else if (this.config.indent < 10) { + this.config.indent = 10; + } + var options = this.config; + options.where = options.where || {}; + if (!options.elem) return hint.error("缺少elem参数"); + options.elem = typeof options.elem === "string" ? $(options.elem) : options.elem; + this.filter = options.elem.attr("lay-filter"); + // load加载框 + options.elem.append('<div class="eleTree-loadData"><i class="layui-icon layui-icon-loading layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i></div>') + + // 判断加载方式 + if (options.data.length === 0) { + this.ajaxGetData(); + } else { + this.renderData(); + } + }, + renderData: function () { + var options = this.config; + $(this.config.elem).off(); // 取消事件绑定,防止多次绑定事件 + // 渲染第一层 + laytpl(TPL_ELEM(options, 0)).render(options.data, function (string) { + options.elem.html(string).children().show(); + }); + // 懒加载 > 展开所有 > 初始展开项 > 初始渲染所有子节点 > 初始选中项 > 每次点击只渲染当前层(默认) + // 判断所有dom是否全部加载 + if (!options.lazy) { + if (!options.renderAfterExpand || options.defaultExpandAll || options.defaultExpandedKeys.length > 0 || options.defaultCheckedKeys.length > 0) { + this.expandAll(options.data, [], 1); + } + } + + this.eleTreeEvent(); + this.checkboxRender(); + this.checkboxEvent(); + this.defaultChecked(); + this.nodeEvent(); + this.rightClickMenu(); + if (!options.checkStrictly) { + this.checkboxInit(); + } + }, + ajaxGetData: function () { + var options = this.config; + var _self = this; + if (!options.url) { + laytpl(TPL_NoText()).render(options, function (string) { + options.elem.html(string); + }); + return; + } + var data = $.extend({}, options.where); + if (options.contentType && options.contentType.indexOf("application/json") == 0) { //提交 json 格式 + data = JSON.stringify(data); + } + + $.ajax({ + type: options.method || 'get' + , url: options.url + , contentType: options.contentType + , data: data + , dataType: 'json' + , headers: options.headers || {} + , success: function (res) { + if (res[options.response.statusName] != options.response.statusCode || !res[options.response.dataName]) { + hint.error("请检查数据格式是否符合规范"); + typeof options.done === 'function' && options.done(res); + return; + } + options.data = res[options.response.dataName]; + _self.renderData(); + typeof options.done === 'function' && options.done(res); + } + }); + }, + reload: function (options) { + var _self = this; + if (this.config.data && this.config.data.constructor === Array) this.config.data = []; + this.config = $.extend({}, this.config, options); + // $(this.config.elem).off(); // 取消事件绑定,防止多次绑定事件 + // reload记录选中的数据 + // this.getChecked().forEach(function(val) { + // if($.inArray(val.key,this.config.defaultCheckedKeys)===-1){ + // this.config.defaultCheckedKeys.push(val.key); + // } + // },this); + return eleTree.render(this.config) + }, + // 下拉 + eleTreeEvent: function () { + var _self = this; + var options = this.config; + // 下拉 + var expandOnClickNode = options.expandOnClickNode ? ".eleTree-node-content" : ".eleTree-node-content>.eleTree-node-content-icon"; + options.elem.on("click", expandOnClickNode, function (e) { + e.stopPropagation(); + var eleTreeNodeContent = $(this).parent(".eleTree-node").length === 0 ? $(this).parent(".eleTree-node-content") : $(this); + var eleNode = eleTreeNodeContent.parent(".eleTree-node"); + var sibNode = eleTreeNodeContent.siblings(".eleTree-node-group"); + var el = eleTreeNodeContent.children(".eleTree-node-content-icon").children(".layui-icon"); + + // 添加active背景 + if (_self.prevClickEle) _self.prevClickEle.removeClass("eleTree-node-content-active"); + if (options.highlightCurrent) eleTreeNodeContent.addClass("eleTree-node-content-active"); + _self.prevClickEle = eleTreeNodeContent; + + + if (el.hasClass("icon-rotate")) { + // 合并 + sibNode.children(".eleTree-node:not(.eleTree-search-hide)").hide("fast"); + el.removeClass("icon-rotate"); + return; + } + + if (sibNode.children(".eleTree-node").length === 0) { + var floor = Number(eleNode.attr("eletree-floor")) + 1; + + // 选择祖父 + var selectParentsFn = function () { + if (!options.checkStrictly) { + var eleNode1 = sibNode.children(".eleTree-node").eq(0); + if (eleNode1.length !== 0) { + var siblingNode1 = eleNode1.siblings(".eleTree-node"); + var item1 = eleNode1.children(".eleTree-node-content").children(".eleTree-hideen").get(0); + _self.selectParents(item1, eleNode1, siblingNode1); + } + } + } + + var data = _self.reInitData(eleNode); + var d = data.currentData; + // 是否懒加载 + if (options.lazy && el.hasClass("lazy-icon")) { + el.removeClass("layui-icon-triangle-r").addClass("layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"); + options.load(d, function (getData) { + // 如果原来有数据则合并,没有则赋值 + if (d[options.request.children]) { + d[options.request.children] = d[options.request.children].concat(getData); + } else { + d[options.request.children] = getData; + } + var eletreeStatus = eleTreeNodeContent.children("input.eleTree-hideen").attr("eletree-status"); + if (d[options.request.children] && d[options.request.children].length > 0) { + // 只渲染获取到的数据 + laytpl(TPL_ELEM(options, floor, eletreeStatus)).render(getData, function (string) { + sibNode.append(string).children().show("fast"); + }); + } else { + el.css("color", "transparent").addClass("leaf-icon"); + } + el.removeClass("lazy-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop").addClass("layui-icon-triangle-r icon-rotate"); + + // 懒加载子元素选择祖父(待写) + selectParentsFn(); + _self.checkboxRender(); + }) + } else { + var eletreeStatus = eleTreeNodeContent.children("input.eleTree-hideen").attr("eletree-status"); + d[options.request.children] && d[options.request.children].length > 0 && laytpl(TPL_ELEM(options, floor, eletreeStatus)).render(d[options.request.children], function (string) { + sibNode.append(string); + }); + // 选择祖父 + selectParentsFn(); + _self.checkboxRender(); + } + } + // 显示隐藏没有搜索类的 + sibNode.children(".eleTree-node:not(.eleTree-search-hide)").show("fast"); + el.addClass("icon-rotate"); + // 手风琴效果 + if (options.accordion) { + var node = eleTreeNodeContent.parent(".eleTree-node").siblings(".eleTree-node"); + node.children(".eleTree-node-group").children(".eleTree-node:not(.eleTree-search-hide)").hide("fast"); + node.children(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon").removeClass("icon-rotate"); + } + }) + }, + // checkbox选中 + checkboxEvent: function () { + var options = this.config; + var _self = this; + var checkOnClickNode = options.checkOnClickNode ? ".eleTree-node-content" : ".eleTree-checkbox"; + // input添加属性eleTree-status:即input的三种状态,"0":未选中,"1":选中,"2":子孙部分选中 + options.elem.on("click", checkOnClickNode, function (e) { + e.stopPropagation(); + var eleTreeNodeContent = $(this).parent(".eleTree-node").length === 0 ? $(this).parent(".eleTree-node-content") : $(this); + var checkbox = eleTreeNodeContent.children(".eleTree-checkbox"); + if (checkbox.hasClass("eleTree-checkbox-disabled")) return; + // 获取点击所在数据 + var node = eleTreeNodeContent.parent(".eleTree-node"); + // var d=_self.reInitData(node).currentData; + // 实际的input + var inp = checkbox.siblings(".eleTree-hideen").get(0); + var childNode = eleTreeNodeContent.siblings(".eleTree-node-group").find("input[name='eleTree-node']"); + + // 添加active背景 + if (_self.prevClickEle) _self.prevClickEle.removeClass("eleTree-node-content-active"); + if (options.highlightCurrent) eleTreeNodeContent.addClass("eleTree-node-content-active"); + _self.prevClickEle = eleTreeNodeContent; + + if (!inp) return; + + if (inp.checked) { + // 反选自身 + $(inp).prop("checked", false).attr("eleTree-status", "0"); + // 点击祖父层选中子孙层 + if (!options.checkStrictly) { + childNode.prop("checked", false); + childNode.attr("eleTree-status", "0"); + } + + } else { + // 反选自身 + $(inp).prop("checked", true).attr("eleTree-status", "1"); + // 点击祖父层选中子孙层 + if (!options.checkStrictly) { + childNode.prop("checked", true).attr("eleTree-status", "1"); + } + } + + var eleNode = eleTreeNodeContent.parent(".eleTree-node"); + // 点击子孙层选中祖父层(递归) + if (!options.checkStrictly) { + var siblingNode = eleNode.siblings(".eleTree-node"); + // 点击子孙层选中祖父层(递归) + _self.selectParents(inp, eleNode, siblingNode); + } + + _self.checkboxRender(); + + layui.event.call(inp, MOD_NAME, 'nodeChecked(' + _self.filter + ')', { + node: eleNode, + data: _self.reInitData(eleNode), + isChecked: inp.checked + }); + }) + }, + // 对后台数据有 checked:true 的默认选中项渲染父子层 + checkboxInit: function () { + var options = this.config; + var _self = this; + options.elem.find("input[data-checked]").each(function (index, item) { + var checkboxEl = $(item).siblings(".eleTree-checkbox"); + var childNode = checkboxEl.parent(".eleTree-node-content").siblings(".eleTree-node-group").find("input[name='eleTree-node']"); + // 选择当前 + $(item).prop("checked", "checked").attr("eleTree-status", "1"); + checkboxEl.addClass("eleTree-checkbox-checked"); + checkboxEl.children("i").addClass("layui-icon-ok").removeClass("eleTree-checkbox-line"); + if (options.checkStrictly) return; + // 选择子孙 + childNode.prop("checked", "checked").attr("eleTree-status", "1"); + childNode.siblings(".eleTree-checkbox").addClass("eleTree-checkbox-checked"); + childNode.siblings(".eleTree-checkbox").children("i").addClass("layui-icon-ok").removeClass("eleTree-checkbox-line"); + + // 选择祖父 + var eleNode = checkboxEl.parent(".eleTree-node-content").parent(".eleTree-node"); + var siblingNode = eleNode.siblings(".eleTree-node"); + _self.selectParents(item, eleNode, siblingNode); + }) + _self.checkboxRender(); + }, + // 通过子元素选中祖父元素 + selectParents: function (inp, eleNode, siblingNode) { + // inp: 实际input(dom元素) + // eleNode: input父层类(.eleTree-node) + // siblingNode: 父层同级兄弟 + while (Number(eleNode.attr("eletree-floor")) !== 0) { + // 同级input状态存入数组 + var arr = []; + arr.push($(inp).attr("eleTree-status")); + siblingNode.each(function (index, item) { + var siblingIsChecked = $(item).children(".eleTree-node-content").children("input[name='eleTree-node']").attr("eleTree-status"); + arr.push(siblingIsChecked); + }) + // 父元素的实际input + var parentInput = eleNode.parent(".eleTree-node-group").siblings(".eleTree-node-content").children("input[name='eleTree-node']"); + // 父元素的checkbox替代 + var parentCheckbox = parentInput.siblings(".eleTree-checkbox"); + // 子都选中则选中父 + if (arr.every(function (val) { + return val === "1"; + })) { + parentInput.prop("checked", true).attr("eleTree-status", "1"); + } + // 子有一个未选中则checkbox第三种状态 + if (arr.some(function (val) { + return val === "0" || val === "2"; + })) { + parentInput.attr("eleTree-status", "2"); + } + // 子全部未选中则取消父选中(并且取消第三种状态) + if (arr.every(function (val) { + return val === "0"; + })) { + parentInput.prop("checked", false); + parentInput.attr("eleTree-status", "0"); + } + + var parentNode = eleNode.parents("[eletree-floor='" + (Number(eleNode.attr("eletree-floor")) - 1) + "']"); + var parentCheckbox = parentNode.children(".eleTree-node-content").children("input[name='eleTree-node']").get(0); + var parentSiblingNode = parentNode.siblings(".eleTree-node"); + eleNode = parentNode; + inp = parentCheckbox; + siblingNode = parentSiblingNode; + } + }, + // 初始展开所有 + expandAll: function (data, arr, floor, isMethodsExpandAll) { + var options = this.config; + var _self = this; + data.forEach(function (val, index) { + arr.push(index); + if (val[options.request.children] && val[options.request.children].length > 0) { + var el = options.elem.children(".eleTree-node").eq(arr[0]).children(".eleTree-node-group"); + for (var i = 1; i < arr.length; i++) { + el = el.children(".eleTree-node").eq(arr[i]).children(".eleTree-node-group"); + } + laytpl(TPL_ELEM(options, floor)).render(val[options.request.children], function (string) { + el.append(string); + // 判断是否展开所有 + if (options.defaultExpandAll || isMethodsExpandAll) { + el.siblings(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon").addClass("icon-rotate"); + el.children().show(); + } else if (options.defaultExpandedKeys.length > 0) { + // 继续展开祖父层 + var f = function (eleP) { + if (options.autoExpandParent) { + eleP.parents(".eleTree-node").each(function (i, item) { + if ($(item).data(options.request.key)) { + $(item).children(".eleTree-node-group").siblings(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon").addClass("icon-rotate"); + $(item).children(".eleTree-node-group").children().show(); + } + }) + } + } + // 展开指定id项 + var id = el.parent(".eleTree-node").data(options.request.key); + if ($.inArray(id, options.defaultExpandedKeys) !== -1) { + // 直接展开子节点 + el.siblings(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon").addClass("icon-rotate"); + el.children().show(); + // 展开子项是否继续展开祖父项 + f(el.parent(".eleTree-node[data-" + options.request.key + "]")); + } else { + // 如当前节点的子节点有展开项,则展开当前子节点的祖父层 + el.children(".eleTree-node").each(function (index, item) { + var id = $(item).data(options.request.key); + if ($.inArray(id, options.defaultExpandedKeys) !== -1) { + f($(item)); + return false; + } + }) + } + } + }); + floor++; + _self.expandAll(val[options.request.children], arr, floor, isMethodsExpandAll); + floor--; + } + // 重置数组索引 + arr.pop(); + }) + + + }, + // 选中单个节点 + checkedOneNode: function (nodeContent) { + var options = this.config; + var inp = nodeContent.children("input.eleTree-hideen").get(0); + $(inp).prop("checked", true).attr("eleTree-status", "1"); + + if (options.checkStrictly) return; + + // 点击祖父层选中子孙层 + var childNode = nodeContent.siblings(".eleTree-node-group").find("input[name='eleTree-node']"); + childNode.prop("checked", true).attr("eleTree-status", "1"); + + var eleNode = nodeContent.parent(".eleTree-node"); + var siblingNode = eleNode.siblings(".eleTree-node"); + // 点击子孙层选中祖父层(递归) + this.selectParents(inp, eleNode, siblingNode); + }, + // 初始默认选中 + defaultChecked: function (dataChecked) { + var options = this.config; + var _self = this; + var arr = dataChecked || options.defaultCheckedKeys; + if (arr.length === 0) { + return false; + } + arr.forEach(function (val, index) { + var nodeContent = options.elem.find("[data-" + options.request.key + "='" + val + "']").children(".eleTree-node-content"); + nodeContent.length > 0 && _self.checkedOneNode(nodeContent); + }) + this.checkboxInit(); + }, + // 自定义checkbox解析 + checkboxRender: function () { + var options = this.config; + options.elem.find(".eleTree-checkbox").remove(); + options.elem.find("input.eleTree-hideen[type=checkbox]").each(function (index, item) { + if ($(item).hasClass("eleTree-disabled")) { + $(item).after('<div class="eleTree-checkbox eleTree-checkbox-disabled"><i class="layui-icon"></i></div>'); + } else { + $(item).after('<div class="eleTree-checkbox"><i class="layui-icon"></i></div>'); + } + + var checkbox = $(item).siblings(".eleTree-checkbox"); + if ($(item).attr("eletree-status") === "1") { + checkbox.addClass("eleTree-checkbox-checked"); + checkbox.children("i").addClass("layui-icon-ok").removeClass("eleTree-checkbox-line"); + } else if ($(item).attr("eletree-status") === "0") { + checkbox.removeClass("eleTree-checkbox-checked"); + checkbox.children("i").removeClass("layui-icon-ok eleTree-checkbox-line"); + } else if ($(item).attr("eletree-status") === "2") { + checkbox.addClass("eleTree-checkbox-checked"); + checkbox.children("i").removeClass("layui-icon-ok").addClass("eleTree-checkbox-line"); + } + + }) + }, + // 通过dom节点找对应数据 + reInitData: function (node) { + var options = this.config; + var i = node.index(); + var floor = Number(node.attr("eletree-floor")); + var arr = []; // 节点对应的index + while (floor >= 0) { + arr.push(i); + floor = floor - 1; + node = node.parents("[eletree-floor='" + floor + "']"); + i = node.index(); + } + arr = arr.reverse(); + var oData = this.config.data; + // 当前节点的父节点数据 + var parentData = oData[arr[0]]; + // 当前节点的data数据 + var d = oData[arr[0]]; + for (var j = 1; j < arr.length; j++) { + d = d[options.request.children] ? d[options.request.children][arr[j]] : d; + } + for (var k = 1; k < arr.length - 1; k++) { + parentData = parentData[options.request.children] ? parentData[options.request.children][arr[k]] : parentData; + } + + return { + currentData: d, + parentData: { + data: parentData, + childIndex: arr[arr.length - 1] + }, + index: arr + } + }, + // 通过key查找数据 + keySearchToOpera: function (key, callback) { + var options = this.config; + var _self = this; + // 查找数据 + var fn = function (data) { + var obj = { + i: 0, + len: data.length + } + for (; obj.i < obj.len; obj.i++) { + if (data[obj.i][options.request.key] != key) { + if (data[obj.i][options.request.children] && data[obj.i][options.request.children].length > 0) { + fn(data[obj.i][options.request.children]); + } + } else { + callback(data, obj); + } + } + } + fn(options.data); + }, + updateKeyChildren: function (key, data) { + var options = this.config; + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']"); + var floor = Number(node.attr("eletree-floor")) + 1; + var _self = this; + + this.keySearchToOpera(key, function (d, obj) { + // 数据更新 + d[obj.i][options.request.children] = data; + // dom更新 + node.length !== 0 && laytpl(TPL_ELEM(options, floor)).render(data, function (string) { + $(node).children(".eleTree-node-group").empty().append(string); + options.defaultExpandAll && $(node).children(".eleTree-node-group").children().show(); + }); + _self.unCheckNodes(true); + _self.defaultChecked(); + }); + }, + updateKeySelf: function (key, data) { + var options = this.config; + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']").children(".eleTree-node-content"); + var floor = Number(node.attr("eletree-floor")) + 1; + data[options.request.name] && node.children(".eleTree-node-content-label").text(data[options.request.name]); + data[options.request.disabled] && node.children(".eleTree-hideen").addClass("eleTree-disabled") + .siblings(".eleTree-checkbox").addClass("eleTree-checkbox-disabled"); + // 数据更新 + var getData = this.keySearchToOpera(key, function (d, obj) { + data[options.request.key] = d[obj.i][options.request.key]; + data[options.request.children] = d[obj.i][options.request.children]; + d[obj.i] = $.extend({}, d[obj.i], data); + }); + }, + remove: function (key) { + var options = this.config; + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']"); + var pElem = node.parent(".eleTree-node-group"); + // 数据删除 + this.keySearchToOpera(key, function (data, obj) { + data.splice(obj.i, 1); + obj.i--; + obj.len--; + + node.length !== 0 && options.elem.find("[data-" + options.request.key + "='" + key + "']").remove(); + if (pElem.children(".eleTree-node").length === 0) { + pElem.siblings(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon").css("color", "transparent"); + } + }); + this.unCheckNodes(true); + this.defaultChecked(); + this.checkboxInit(); + }, + append: function (key, data) { + var options = this.config; + // 如果不传key,则直接添加到根节点 + if (typeof key === "object" && key !== null) { + data = key; + key = null; + } + if (key === null || key === "") { + options.data.push(data); + laytpl(TPL_ELEM(options, 0, "0")).render([data], function (string) { + $(options.elem).append(string); + $(options.elem).children(".eleTree-node:last").show(); + }); + this.checkboxRender(); + return; + } + // 传key则添加到子节点 + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']"); + var floor = Number(node.attr("eletree-floor")) + 1; + // 数据更新 + this.keySearchToOpera(key, function (d, obj) { + if (d[obj.i][options.request.children]) { + d[obj.i][options.request.children].push(data); + } else { + d[obj.i][options.request.children] = [data]; + } + var arr = d[obj.i][options.request.children]; + var icon = node.children(".eleTree-node-content").find(".eleTree-node-content-icon .layui-icon"); + // 添加之后长度为1,则原来没有三角,添加三角 + if (arr.length === 1) { + icon.removeAttr("style"); + } + // 判断原来是否没有展开 + if (!icon.hasClass("icon-rotate")) { + var expandOnClickNode = options.expandOnClickNode ? node.children(".eleTree-node-content") : node.children(".eleTree-node-content").children(".eleTree-node-content-icon"); + expandOnClickNode.trigger("click"); + } + // 判断节点是否已存在 + var isExist = false; + node.children(".eleTree-node-group").children(".eleTree-node").each(function (index, item) { + if (data[options.request.key] == $(item).data(options.request.key)) { + isExist = true; + } + }) + if (!isExist) { + var len = arr.length; + var eletreeStatus = node.children(".eleTree-node-content").children("input.eleTree-hideen").attr("eletree-status"); + eletreeStatus = eletreeStatus === "2" ? "0" : eletreeStatus; + node.length !== 0 && laytpl(TPL_ELEM(options, floor, eletreeStatus)).render([arr[len - 1]], function (string) { + node.children(".eleTree-node-group").append(string).children().show(); + }); + } + + }); + this.checkboxRender(); + }, + insertBefore: function (key, data) { + var options = this.config; + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']"); + var floor = Number(node.attr("eletree-floor")); + // 数据更新 + this.keySearchToOpera(key, function (d, obj) { + d.splice(obj.i, 0, data); + obj.i++; + obj.len++; + var eletreeStatus = node.parent(".eleTree-node-group").length === 0 ? "0" : node.parent(".eleTree-node-group").parent(".eleTree-node") + .children(".eleTree-node-content").children("input.eleTree-hideen").attr("eletree-status"); + eletreeStatus = eletreeStatus === "2" ? "0" : eletreeStatus; + node.length !== 0 && laytpl(TPL_ELEM(options, floor, eletreeStatus)).render([data], function (string) { + node.before(string).prev(".eleTree-node").show(); + }); + }); + this.checkboxRender(); + }, + insertAfter: function (key, data) { + var options = this.config; + var node = options.elem.find("[data-" + options.request.key + "='" + key + "']"); + var floor = Number(node.attr("eletree-floor")); + // 数据更新 + this.keySearchToOpera(key, function (d, obj) { + d.splice(obj.i + 1, 0, data); + obj.i++; + obj.len++; + var eletreeStatus = node.parent(".eleTree-node-group").length === 0 ? "0" : node.parent(".eleTree-node-group").parent(".eleTree-node") + .children(".eleTree-node-content").children("input.eleTree-hideen").attr("eletree-status"); + eletreeStatus = eletreeStatus === "2" ? "0" : eletreeStatus; + node.length !== 0 && laytpl(TPL_ELEM(options, floor, eletreeStatus)).render([data], function (string) { + $(node).after(string).next(".eleTree-node").show(); + }); + }); + this.checkboxRender(); + // if(!options.lazy){ + // if(!options.renderAfterExpand || options.defaultExpandAll || options.defaultExpandedKeys.length>0){ + // this.expandAll(options.data,[],1); + // } + // } + }, + getChecked: function (leafOnly, includeHalfChecked) { + var options = this.config + , el + , arr = []; + leafOnly = leafOnly || false; + includeHalfChecked = includeHalfChecked || false; + if (leafOnly) { + el = options.elem.find(".layui-icon.leaf-icon").parent(".eleTree-node-content-icon") + .siblings("input.eleTree-hideen[eletree-status='1']"); + } else if (includeHalfChecked) { + el = options.elem.find("input.eleTree-hideen[eletree-status='1'],input.eleTree-hideen[eletree-status='2']"); + } else { + el = options.elem.find("input.eleTree-hideen[eletree-status='1']"); + } + el.each(function (index, item) { + var obj = {}; + var id = $(item).parent(".eleTree-node-content").parent(".eleTree-node").data(options.request.key); + var label = $(item).siblings(".eleTree-node-content-label").text(); + obj[options.request.key] = id; + obj[options.request.name] = label; + obj.elem = item; + obj.type = $(item).parent(".eleTree-node-content").attr('type'); + obj.othis = $(item).siblings(".eleTree-checkbox").get(0); + arr.push(obj); + }) + return arr; + }, + setChecked: function (arr, isReset) { + var options = this.config; + isReset = isReset || false; + if (isReset) { + this.unCheckNodes(); + options.defaultCheckedKeys = $.extend([], arr); + } else { + this.unCheckNodes(true); + arr.forEach(function (val) { + if ($.inArray(val, options.defaultCheckedKeys) === -1) { + options.defaultCheckedKeys.push(val); + } + }) + } + this.defaultChecked(); + }, + unCheckNodes: function (_internal) { + _internal = _internal || false; // _internal: 是否内部调用 + var options = this.config; + options.elem.find("input.eleTree-hideen[eletree-status='1'],input.eleTree-hideen[eletree-status='2']").each(function (index, item) { + $(item).attr("eletree-status", "0").prop("checked", false); + // 如果外部的取消选中,则所有的记录全部取消 + if (!_internal) { + $(item).removeAttr("data-checked"); + } + }); + this.checkboxRender(); + }, + unCheckArrNodes: function (arr) { + var options = this.config; + var dataChecked = []; + options.elem.find(".eleTree-hideen[eletree-status='1']").each(function (index, item) { + var id = $(item).parent(".eleTree-node-content").parent(".eleTree-node").data(options.request.key); + // 获取所有被选中项,并去除arr中包含的数据 + if (arr.some(function (val) { + return val == id; + })) { + // 如果id在arr数组中,则清除dom上面的checked数据 + $(item).removeAttr("data-checked"); + return; + } + dataChecked.push(id); + }) + + // 更新defaultCheckedKeys数据 + for (var j = 0; j < options.defaultCheckedKeys.length; j++) { + if (!dataChecked.some(function (val) { + return val == options.defaultCheckedKeys[j]; + })) { + options.defaultCheckedKeys.splice(j, 1); + j--; + } + } + this.unCheckNodes(true); + this.defaultChecked(dataChecked); + }, + unExpandAll: function () { + var options = this.config; + options.elem.find(".layui-icon.icon-rotate").removeClass("icon-rotate") + .parent(".eleTree-node-content-icon").parent(".eleTree-node-content") + .siblings(".eleTree-node-group").children(".eleTree-node").hide(); + }, + // 节点事件 + nodeEvent: function () { + var _self = this; + var options = this.config; + // 节点被点击的回调事件 + options.elem.on("click", ".eleTree-node-content", function (e) { + var eleNode = $(this).parent(".eleTree-node"); + $("#tree-menu").hide().remove(); + layui.event.call(eleNode, MOD_NAME, 'nodeClick(' + _self.filter + ')', { + node: eleNode, + data: _self.reInitData(eleNode), + event: e + }); + }) + // 节点右键的回调事件 + options.elem.on("contextmenu", ".eleTree-node-content", function (e) { + var eleNode = $(this).parent(".eleTree-node"); + layui.event.call(eleNode, MOD_NAME, 'nodeContextmenu(' + _self.filter + ')', { + node: eleNode, + data: _self.reInitData(eleNode), + event: e + }); + }) + // 节点被拖拽的回调事件 + options.draggable && options.elem.on("mousedown", ".eleTree-node-content", function (e) { + var time = 0; + var eleNode = $(this).parent(".eleTree-node"); + var eleFloor = Number(eleNode.attr("eletree-floor")); + var groupNode = eleNode.parent(".eleTree-node-group"); + + e.stopPropagation(); + options.elem.css("user-select", "none"); + var cloneNode = eleNode.clone(true); + var temNode = eleNode.clone(true); + + var x = e.clientX - options.elem.offset().left; + var y = e.clientY - options.elem.offset().top; + options.elem.append(cloneNode); + cloneNode.css({ + "display": "none", + "opacity": 0.7, + "position": "absolute", + "background-color": "#f5f5f5", + "width": "100%" + }) + + var currentData = _self.reInitData(eleNode); + + var isStop = false; + + $(document).on("mousemove", function (e) { + // t为了区别click事件 + time++; + if (time > 2) { + var xx = e.clientX - options.elem.offset().left + 10; + var yy = e.clientY - options.elem.offset().top + $(document).scrollTop() - 5; // 加上浏览器滚动高度 + + cloneNode.css({ + display: "block", + left: xx + "px", + top: yy + "px" + }) + } + }).on("mouseup", function (e) { + $(document).off("mousemove").off("mouseup"); + var target = $(e.target).parents(".eleTree-node").eq(0); + cloneNode.remove(); + options.elem.css("user-select", "auto"); + + + // 当前点击的是否时最外层 + var isCurrentOuterMost = eleNode.parent().get(0).isEqualNode(options.elem.get(0)) + // 目标是否时最外层 + var isTargetOuterMost = $(e.target).get(0).isEqualNode(options.elem.get(0)) + if (isTargetOuterMost) { + target = options.elem; + } + // 判断是否超出边界 + if (target.parents(options.elem).length === 0 && !isTargetOuterMost) { + return; + } + // 判断初始与结束是否是同一个节点 + if (target.get(0).isEqualNode(eleNode.get(0))) { + return; + } + // 判断是否是父节点放到子节点 + var tFloor = target.attr("eletree-floor"); + var isInChild = false; + eleNode.find("[eletree-floor='" + tFloor + "']").each(function () { + if (this.isEqualNode(target.get(0))) { + isInChild = true; + } + }) + if (isInChild) { + return; + } + + var targetData = _self.reInitData(target); + layui.event.call(target, MOD_NAME, 'nodeDrag(' + _self.filter + ')', { + current: { + node: eleNode, + data: currentData + }, + target: { + node: target, + data: targetData + }, + stop: function () { + isStop = true; + } + }); + // 拖拽是否取消 + if (isStop) { + return false; + } + + // 数据更改 + var currList = currentData.parentData.data[options.request.children] + var currIndex = currentData.parentData.childIndex + var currData = currentData.currentData; + var tarData = targetData.currentData; + // 当前是否是最外层 + isCurrentOuterMost ? options.data.splice(currIndex, 1) : currList.splice(currIndex, 1) + // 目标是否是最外层 + isTargetOuterMost ? options.data.push(currData) : (function () { + !tarData[options.request.children] ? tarData[options.request.children] = [] : ""; + tarData[options.request.children].push(currData); + })() + + // dom互换 + eleNode.remove(); + var floor = null; + // 最外层判断 + if (isTargetOuterMost) { + target.append(temNode); + floor = 0; + } else { + target.children(".eleTree-node-group").append(temNode); + floor = Number(target.attr("eletree-floor")) + 1; + } + // 加floor和padding + temNode.attr("eletree-floor", String(floor)); + temNode.children(".eleTree-node-content").css("padding-left", floor * options.indent + "px"); + // 通过floor差值计算子元素的floor + var countFloor = eleFloor - floor; + temNode.find(".eleTree-node").each(function (index, item) { + var f = Number($(item).attr("eletree-floor")) - countFloor; + $(item).attr("eletree-floor", String(f)); + $(item).children(".eleTree-node-content").css("padding-left", f * options.indent + "px"); + }) + // 原dom去三角 + var leaf = groupNode.children(".eleTree-node").length === 0; + leaf && groupNode.siblings(".eleTree-node-content") + .children(".eleTree-node-content-icon").children(".layui-icon") + .removeClass("icon-rotate").css("color", "transparent"); + // 当前的增加三角 + var cLeaf = target.children(".eleTree-node-group").children(".eleTree-node").length === 0; + !cLeaf && target.children(".eleTree-node-content") + .children(".eleTree-node-content-icon").children(".layui-icon") + .addClass("icon-rotate").removeAttr("style"); + + _self.unCheckNodes(true); + _self.defaultChecked(); + _self.checkboxInit(); + }) + }) + }, + rightClickMenu: function () { + var _self = this; + var options = this.config; + if (options.contextmenuList.length <= 0) { + return; + } + $(document).on("click", function () { + $("#tree-menu").hide().remove(); + }); + + var customizeMenu = []; // 用户自定义的 + var internalMenu = ["copy", "add", "add.async", "insertBefore", "insertAfter", "append", "edit", "edit.async", "remove", "remove.async"]; // 系统自带的 + var customizeStr = ''; + options.contextmenuList.forEach(function (val) { + if ($.inArray(val, internalMenu) === -1) { + customizeMenu.push(val); + customizeStr += '<li class="' + (val.eventName || val) + '"><a href="javascript:;">' + (val.text || val) + '</a></li>'; + } + }) + var menuStr = ['<ul id="tree-menu">' + , $.inArray("copy", options.contextmenuList) !== -1 ? '<li class="copy"><a href="javascript:;">复制</a></li>' : '' + , ($.inArray("add", options.contextmenuList) !== -1 || $.inArray("add.async", options.contextmenuList) !== -1) ? '<li class="add"><a href="javascript:;">新增</a></li>' + + '<li class="insertBefore"><a href="javascript:;">插入节点前</a></li>' + + '<li class="insertAfter"><a href="javascript:;">插入节点后</a></li>' + + '<li class="append"><a href="javascript:;">插入子节点</a></li>' : "" + , ($.inArray("edit", options.contextmenuList) !== -1 || $.inArray("edit.async", options.contextmenuList) !== -1) ? '<li class="edit"><a href="javascript:;">修改</a></li>' : '' + , ($.inArray("remove", options.contextmenuList) !== -1 || $.inArray("remove.async", options.contextmenuList) !== -1) ? '<li class="remove"><a href="javascript:;">删除</a></li>' : '' + , customizeStr + , '</ul>'].join(""); + this.treeMenu = $(menuStr); + options.elem.off("contextmenu").on("contextmenu", ".eleTree-node-content", function (e) { + var that = this; + e.stopPropagation(); + e.preventDefault(); + // 添加active背景 + if (_self.prevClickEle) _self.prevClickEle.removeClass("eleTree-node-content-active"); + $(this).addClass("eleTree-node-content-active"); + var eleNode = $(this).parent(".eleTree-node"); + var nodeData = _self.reInitData(eleNode); + + // 菜单位置 + $(document.body).after(_self.treeMenu); + $("#tree-menu").find("li.append,li.insertAfter,li.insertBefore").hide(); + $("#tree-menu").find(":not(li.append,li.insertAfter,li.insertBefore)").show(); + $("#tree-menu").css({ + left: e.clientX + $(document).scrollLeft(), + top: e.clientY + $(document).scrollTop() + }).show(); + // 复制 + $("#tree-menu li.copy").off().on("click", function () { + var el = $(that).children(".eleTree-node-content-label").get(0); + var selection = window.getSelection(); + var range = document.createRange(); + range.selectNodeContents(el); + selection.removeAllRanges(); + selection.addRange(range); + document.execCommand('Copy', 'false', null); + selection.removeAllRanges(); + }); + // 新增 + $("#tree-menu li.add").off().on("click", function (e) { + e.stopPropagation(); + $(this).hide().siblings("li:not(.append,.insertAfter,.insertBefore)").hide(); + $(this).siblings(".append,li.insertAfter,li.insertBefore").show(); + }) + // 添加的默认数据 + var obj = {}; + obj[options.request.key] = Date.now(); + obj[options.request.name] = "未命名" + _self.nameIndex; + if (options.lazy) { + obj[options.request.isLeaf] = true; + } + + var arr = ["Append", "InsertBefore", "InsertAfter"]; + arr.forEach(function (val) { + var s = val[0].toLocaleLowerCase() + val.slice(1, val.length); + $("#tree-menu li." + s).off().on("click", function (e) { + var node = $(that).parent(".eleTree-node"); + var key = node.data(options.request.key); + var isStop = false; + var s = val[0].toLocaleLowerCase() + val.slice(1, val.length); + // 每次只能添加一条数据,不可以批量添加 + _self[s](key, obj); + var nodeArr = []; + node.children(".eleTree-node-group").children(".eleTree-node").each(function (i, itemNode) { + nodeArr.push(itemNode); + }) + node.siblings(".eleTree-node").each(function (i, itemNode) { + nodeArr.push(itemNode); + }) + $.each(nodeArr, function (i, itemNode) { + if (obj[options.request.key] === $(itemNode).data(options.request.key)) { + var label = $(itemNode).children(".eleTree-node-content").children(".eleTree-node-content-label").hide(); + var text = label.text(); + var inp = "<input type='text' value='" + obj[options.request.name] + "' class='eleTree-node-content-input' />"; + label.after(inp); + + label.siblings(".eleTree-node-content-input").focus().off().on("blur", function () { + var v = $(this).val(); + obj[options.request.name] = v; + var inpThis = this; + + layui.event.call(node, MOD_NAME, 'node' + val + '(' + _self.filter + ')', { + node: node, + data: nodeData.currentData, + newData: obj, + // 重新设置数据 + setData: function (o) { + // obj[options.request.key]=Date.now(); + obj[options.request.name] = v; + if (options.lazy) { + obj[options.request.isLeaf] = true; + } + var newObj = $.extend({}, obj, o); + this.newData = newObj; + // 修改数据 + var d = _self.reInitData($(itemNode)).currentData; + d[options.request.name] = newObj[options.request.name]; + d[options.request.key] = newObj[options.request.key]; + // 修改dom + $(inpThis).siblings(".eleTree-node-content-label").text(newObj[options.request.name]).show(); + $(itemNode).attr("data-" + options.request.key, newObj[options.request.key]); // 改变页面上面的显示的key,之后可以获取dom + $(itemNode).data(options.request.key, newObj[options.request.key]); // 改变data数据,之后可以通过data获取key + $(inpThis).remove(); + + _self.nameIndex++; + isStop = true; + }, + // 停止添加 + stop: function () { + isStop = true; + this.newData = {}; + _self.remove(obj[options.request.key]); + } + }); + + // 不是异步添加 + if ($.inArray("add.async", options.contextmenuList) === -1) { + if (isStop) return; + // 修改数据 + _self.reInitData($(itemNode)).currentData[options.request.name] = v; + // 修改dom + $(this).siblings(".eleTree-node-content-label").text(v).show(); + $(this).remove(); + + _self.nameIndex++; + } + }).on("mousedown", function (e) { + // 防止input拖拽 + e.stopPropagation(); + }).on("click", function (e) { + e.stopPropagation(); + }) + } + }) + }) + }) + + // 编辑 + $("#tree-menu li.edit").off().on("click", function (e) { + e.stopPropagation(); + $("#tree-menu").hide().remove(); + var node = $(that).parent(".eleTree-node"); + var key = node.data(options.request.key); + var label = $(that).children(".eleTree-node-content-label").hide(); + var text = label.text(); + var inp = "<input type='text' value='" + text + "' class='eleTree-node-content-input' />"; + label.after(inp); + label.siblings(".eleTree-node-content-input").focus().select().off().on("blur", function () { + var val = $(this).val(); + var isStop = false; + var inpThis = this; + layui.event.call(node, MOD_NAME, 'nodeEdit(' + _self.filter + ')', { + node: node, + value: val, + data: nodeData.currentData, + // 停止添加 + stop: function () { + isStop = true; + $(inpThis).siblings(".eleTree-node-content-label").show(); + $(inpThis).remove(); + }, + async: function () { + if (isStop) return; + // 修改数据 + _self.reInitData(eleNode).currentData[options.request.name] = val; + // 修改dom + $(inpThis).siblings(".eleTree-node-content-label").text(val).show(); + $(inpThis).remove(); + } + }); + // 不是异步 + if ($.inArray("edit.async", options.contextmenuList) === -1) { + if (isStop) return; + // 修改数据 + _self.reInitData(eleNode).currentData[options.request.name] = val; + // 修改dom + $(this).siblings(".eleTree-node-content-label").text(val).show(); + $(this).remove(); + } + + }).on("mousedown", function (e) { + // 防止input拖拽 + e.stopPropagation(); + }) + }) + // 删除 + $("#tree-menu li.remove").off().on("click", function (e) { + var node = $(that).parent(".eleTree-node"); + var key = node.data(options.request.key); + var isStop = false; + layui.event.call(node, MOD_NAME, 'nodeRemove(' + _self.filter + ')', { + node: node, + data: nodeData.currentData, + // 停止添加 + stop: function () { + isStop = true; + return this; + }, + async: function () { + if (isStop) return; + _self.remove(key); + return this; + } + }); + // 不是异步 + if ($.inArray("remove.async", options.contextmenuList) === -1) { + if (isStop) return; + _self.remove(key); + } + + }) + + // 自定义菜单回调 + customizeMenu.forEach(function (val) { + var text = val.eventName || val; + $("#tree-menu li." + text).off().on("click", function () { + var node = $(that).parent(".eleTree-node"); + var isStop = false; + layui.event.call(node, MOD_NAME, 'node' + text.replace(text.charAt(0), text.charAt(0).toUpperCase()) + '(' + _self.filter + ')', { + node: node, + data: nodeData.currentData, + }); + }); + }) + + _self.prevClickEle = $(this); + }) + }, + search: function (value) { + var options = this.config; + if (!options.searchNodeMethod || typeof options.searchNodeMethod !== "function") { + return; + } + var data = options.data; + // 数据递归 + var traverse = function (data) { + data.forEach(function (val, index) { + // 所有查找到的节点增加属性 + val.visible = options.searchNodeMethod(value, val); + if (val[options.request.children] && val[options.request.children].length > 0) { + traverse(val[options.request.children]); + } + //如果当前节点属性为隐藏,判断其子节点是否有显示的,如果有,则当前节点改为显示 + if (!val.visible) { + var childSomeShow = false; + if (val[options.request.children] && val[options.request.children].length > 0) { + childSomeShow = val[options.request.children].some(function (v, i) { + return v.visible; + }) + } + val.visible = childSomeShow; + } + // 通过节点的属性,显示隐藏各个节点,并添加删除搜索类 + var el = options.elem.find("[data-" + options.request.key + "='" + val[options.request.key] + "']"); + if (val.visible) { + el.removeClass("eleTree-search-hide"); + // 判断父节点是否展开,如果父节点没有展开,则子节点也不要显示 + var parentEl = el.parent(".eleTree-node-group").parent(".eleTree-node"); + var isParentOpen = parentEl.children(".eleTree-node-content").children(".eleTree-node-content-icon").children(".layui-icon.layui-icon-triangle-r").hasClass("icon-rotate") + if ((parentEl.length > 0 && isParentOpen) || parentEl.length === 0) { + el.show(); + } + } else { + el.hide().addClass("eleTree-search-hide"); + } + // 删除子层属性 + // if(val[options.request.children] && val[options.request.children].length>0){ + // val[options.request.children].forEach(function(v,i) { + // delete v.visible; + // }) + // } + }) + } + traverse(data); + // 删除最外层属性 + var arr = []; + data.forEach(function (val) { + arr.push(val.visible); + // delete val.visible; + }) + var isNotext = options.elem.children(".eleTree-noText"); + // 如果第一层的所有的都隐藏,则显示文本 + if (arr.every(function (v) { + return v === false; + })) { + if (isNotext.length === 0) { + laytpl(TPL_NoText()).render(options, function (string) { + options.elem.append(string); + }); + } + } else { + isNotext.remove(); + } + } + } + + exports(MOD_NAME, eleTree); +}) diff --git a/src/main/resources/static/febs/lay/extends/formSelects-v4.min.js b/src/main/resources/static/febs/lay/extends/formSelects-v4.min.js new file mode 100644 index 0000000..7316855 --- /dev/null +++ b/src/main/resources/static/febs/lay/extends/formSelects-v4.min.js @@ -0,0 +1 @@ +"use strict";var _typeof=typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"?function(e){return typeof e}:function(e){return e&&typeof Symbol==="function"&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};function _defineProperty(e,t,n){if(t in e){Object.defineProperty(e,t,{value:n,enumerable:true,configurable:true,writable:true})}else{e[t]=n}return e}(function(e,t,n){if((typeof exports==="undefined"?"undefined":_typeof(exports))==="object"){module.exports=n()}else if(typeof define==="function"&&define.amd){define(n)}else if(t.layui&&e.define){e.define(["jquery"],function(e){e("formSelects",n())})}else{t.formSelects=n()}})(typeof layui=="undefined"?null:layui,window,function(){var t="4.0.0.0910",v="xm-select",m="xm-select-parent",y="xm-select-input",g="xm-select--suffix",w="xm-select-this",x="xm-select-label",k="xm-select-search",b="xm-select-search-type",C="xm-select-show-count",S="xm-select-create",d="xm-select-create-long",T="xm-select-max",L="xm-select-skin",j="xm-select-direction",A="xm-select-height",E="xm-dis-disabled",N="xm-select-dis",p="xm-select-temp",D="xm-select-radio",H="xm-select-linkage",F="xm-select-dl",h="xm-select-hide",_="xm-hide-input",O="xm-select-sj",e="xm-icon-close",I="xm-select-title",P="xm-form-select",f="xm-form-selected",V="xm-select-none",U="xm-select-empty",M="xm-input",W="xm-dl-input",J="xm-select-tips",s="xm-iconfont",B="XM_PID_VALUE",R="xm-cz",l="xm-cz-group",n="请选择",q={},z={on:{},endOn:{},filter:{},maxTips:{},opened:{},closed:{}},X={type:"get",header:{},first:true,data:{},searchUrl:"",searchName:"keyword",searchVal:null,keyName:"name",keyVal:"value",keySel:"selected",keyDis:"disabled",keyChildren:"children",dataType:"",delay:500,beforeSuccess:null,success:null,error:null,beforeSearch:null,response:{statusCode:0,statusName:"code",msgName:"msg",dataName:"data"},tree:{nextClick:function e(t,n,i){i([])},folderChoose:true,lazy:true}},i=[{icon:"xm-iconfont icon-quanxuan",name:"全选",click:function e(t,n){n.selectAll(t,true,true)}},{icon:"xm-iconfont icon-qingkong",name:"清空",click:function e(t,n){n.removeAll(t,true,true)}},{icon:"xm-iconfont icon-fanxuan",name:"反选",click:function e(t,n){n.reverse(t,true,true)}},{icon:"xm-iconfont icon-pifu",name:"换肤",click:function e(t,n){n.skin(t)}}],Q=window.$||window.layui&&window.layui.jquery,c=Q(window),Y={},a={},r={},$=function e(t){var l=this;this.config={name:null,max:null,maxTips:function e(t,n,i,a){var r=Q('[xid="'+l.config.name+'"]').prev().find("."+v);if(r.parents(".layui-form-item[pane]").length){r=r.parents(".layui-form-item[pane]")}r.attr("style","border-color: red !important");setTimeout(function(){r.removeAttr("style")},300)},init:null,on:null,opened:null,closed:null,filter:function e(t,n,i,a){return i.name.indexOf(n)==-1},clearid:-1,direction:"auto",height:null,isEmpty:false,btns:[i[0],i[1],i[2]],searchType:0,create:function e(t,n){return Date.now()},template:function e(t,n){return n.name},showCount:0,isCreate:false,placeholder:n,clearInput:false};this.select=null;this.values=[];Q.extend(this.config,t,{searchUrl:t.isSearch?t.searchUrl:null,placeholder:t.optionsFirst?t.optionsFirst.value?n:t.optionsFirst.innerHTML||n:n,btns:t.radio?[i[1]]:[i[0],i[1],i[2]]},r[t.name]||a);if(isNaN(this.config.showCount)||this.config.showCount<=0){this.config.showCount=19921012}};var o=function e(){this.appender();this.on();this.onreset()};o.prototype.appender=function(){if(!Array.prototype.map){Array.prototype.map=function(e,t){var n,i,a,r=Object(this),l=r.length>>>0;if(t){n=t}i=new Array(l);a=0;while(a<l){var o,s;if(a in r){o=r[a];s=e.call(n,o,a,r);i[a]=s}a++}return i}}if(!Array.prototype.forEach){Array.prototype.forEach=function e(t,n){var i,a;if(this==null){throw new TypeError("this is null or not defined")}var r=Object(this);var l=r.length>>>0;if(typeof t!=="function"){throw new TypeError(t+" is not a function")}if(arguments.length>1){i=n}a=0;while(a<l){var o;if(a in r){o=r[a];t.call(i,o,a,r)}a++}}}if(!Array.prototype.filter){Array.prototype.filter=function(e){if(this===void 0||this===null){throw new TypeError}var t=Object(this);var n=t.length>>>0;if(typeof e!=="function"){throw new TypeError}var i=[];var a=arguments[1];for(var r=0;r<n;r++){if(r in t){var l=t[r];if(e.call(a,l,r,t)){i.push(l)}}}return i}}};o.prototype.init=function(e){var h=this;Q(e?e:"select["+v+"]").each(function(e,t){var n=Q(t),i=n.attr(v),a=n.next(".layui-form-select"),r=n.next("."+m),l={name:i,disabled:t.disabled,max:n.attr(T)-0,isSearch:n.attr(k)!=undefined,searchUrl:n.attr(k),isCreate:n.attr(S)!=undefined,radio:n.attr(D)!=undefined,skin:n.attr(L),direction:n.attr(j),optionsFirst:t.options[0],height:n.attr(A),formname:n.attr("name")||n.attr("_name"),layverify:n.attr("lay-verify")||n.attr("_lay-verify"),layverType:n.attr("lay-verType"),searchType:n.attr(b)=="dl"?1:0,showCount:n.attr(C)-0},o=n.find("option[selected]").toArray().map(function(e){return{name:e.innerHTML,value:e.value}}),s=new $(l);s.values=o;if(s.config.init){s.values=s.config.init.map(function(e){if((typeof e==="undefined"?"undefined":_typeof(e))=="object"){return e}return{name:n.find('option[value="'+e+'"]').text(),value:e}}).filter(function(e){return e.name});s.config.init=s.values.concat([])}else{s.config.init=o.concat([])}!s.values&&(s.values=[]);q[i]=s;a[0]&&a.remove();r[0]&&r.remove();var d=h.renderSelect(i,s.config.placeholder,t);var c=!s.config.height||s.config.height=="auto"?"":'xm-hg style="height: 34px;"';var f=['<div class="'+x+'">','<input type="text" fsw class="'+M+" "+y+'" '+(s.config.isSearch?"":'style="display: none;"')+' autocomplete="off" debounce="0" />',"</div>"];var u=Q('<div class="'+P+'" '+L+'="'+s.config.skin+'">\n\t\t\t\t\t<input class="'+_+'" value="" name="'+s.config.formname+'" lay-verify="'+s.config.layverify+'" lay-verType="'+s.config.layverType+'" type="text" style="position: absolute;bottom: 0; z-index: -1;width: 100%; height: 100%; border: none; opacity: 0;"/>\n\t\t\t\t\t<div class="'+I+" "+(s.config.disabled?N:"")+'">\n\t\t\t\t\t\t<div class="'+M+" "+v+'" '+c+">\n\t\t\t\t\t\t\t"+f.join("")+'\n\t\t\t\t\t\t\t<i class="'+O+'"></i>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class="'+g+'">\n\t\t\t\t\t\t\t<input type="text" autocomplete="off" placeholder="'+s.config.placeholder+'" readonly="readonly" unselectable="on" class="'+M+'">\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<dl xid="'+i+'" class="'+F+" "+(s.config.radio?D:"")+'">'+d+"</dl>\n\t\t\t\t</div>");var p=Q('<div class="'+m+'" FS_ID="'+i+'"></div>');p.append(u);n.after(p);n.attr("lay-ignore","");n.removeAttr("name")&&n.attr("_name",s.config.formname);n.removeAttr("lay-verify")&&n.attr("_lay-verify",s.config.layverify);if(s.config.isSearch){Y[i]=Q.extend({},X,{searchUrl:s.config.searchUrl},Y[i]);Q(document).on("input","div."+m+'[FS_ID="'+i+'"] .'+y,function(e){h.search(i,e,s.config.searchUrl)});if(s.config.searchUrl){h.triggerSearch(u,true)}}else{u.find("dl dd."+W).css("display","none")}})};o.prototype.search=function(a,e,t,n){var r=this;var i=void 0;if(n){i=n}else{i=e.target;var l=e.keyCode;if(l===9||l===13||l===37||l===38||l===39||l===40){return false}}var o=Q.trim(i.value);this.changePlaceHolder(Q(i));var s=Y[a]?Y[a]:X;t=s.searchUrl||t;var d=q[a],c=d.config.isCreate,f=Q('dl[xid="'+a+'"]').parents("."+P);if(t){if(s.searchVal){o=s.searchVal;s.searchVal=""}if(!s.beforeSearch||s.beforeSearch&&s.beforeSearch instanceof Function&&s.beforeSearch(a,t,o)){var u=s.delay;if(s.first){s.first=false;u=10}clearTimeout(d.clearid);d.clearid=setTimeout(function(){f.find("dl > *:not(."+J+")").remove();f.find("dd."+V).addClass(U).text("请求中");r.ajax(a,t,o,false,null,true)},u)}}else{f.find("dl ."+h).removeClass(h);f.find("dl dd:not(."+J+")").each(function(e,t){var n=Q(t);var i=z.filter[a]||q[a].config.filter;if(i&&i(a,o,r.getItem(a,n),n.hasClass(E))==true){n.addClass(h)}});f.find("dl dt").each(function(e,t){if(!Q(t).nextUntil("dt",":not(."+h+")").length){Q(t).addClass(h)}});this.create(a,c,o);var p=f.find("dl dd:not(."+J+"):not(."+h+")");if(!p.length){f.find("dd."+V).addClass(U).text("无匹配项")}else{f.find("dd."+V).removeClass(U)}}};o.prototype.isArray=function(e){return Object.prototype.toString.call(e)=="[object Array]"};o.prototype.triggerSearch=function(e,i){var a=this;(e?[e]:Q("."+P).toArray()).forEach(function(e,t){e=Q(e);var n=e.find("dl").attr("xid");if(n&&q[n]&&q[n].config.isEmpty||i){a.search(n,null,null,q[n].config.searchType==0?e.find("."+x+" ."+y):e.find("dl ."+W+" ."+y))}})};o.prototype.clearInput=function(e){var t=Q("."+m+'[fs_id="'+e+'"]');var n=q[e].config.searchType==0?t.find("."+x+" ."+y):t.find("dl ."+W+" ."+y);n.val("")};o.prototype.ajax=function(i,a,r,l,o,s,d,c){var f=this;var u=Q("."+m+' dl[xid="'+i+'"]').parents("."+P);if(!u[0]||!a){return}var p=Y[i]?Y[i]:X;var e=Q.extend(true,{},p.data);e[p.searchName]=r;Q.ajax({type:p.type,headers:p.header,url:a,data:p.dataType=="json"?JSON.stringify(e):e,success:function e(t){if(typeof t=="string"){t=JSON.parse(t)}p.beforeSuccess&&p.beforeSuccess instanceof Function&&(t=p.beforeSuccess(i,a,r,t));if(f.isArray(t)){var n={};n[p.response.statusName]=p.response.statusCode;n[p.response.msgName]="";n[p.response.dataName]=t;t=n}if(t[p.response.statusName]!=p.response.statusCode){u.find("dd."+V).addClass(U).text(t[p.response.msgName])}else{u.find("dd."+V).removeClass(U);f.renderData(i,t[p.response.dataName],l,o,s,c);q[i].config.isEmpty=t[p.response.dataName].length==0}d&&d(i);p.success&&p.success instanceof Function&&p.success(i,a,r,t)},error:function e(t){u.find("dd[lay-value]:not(."+J+")").remove();u.find("dd."+V).addClass(U).text("服务异常");p.error&&p.error instanceof Function&&p.error(i,a,r,t)}})};o.prototype.renderData=function(n,e,t,i,a,r){var l=this;if(t){this.renderLinkage(n,e,i);return}if(r){this.renderReplace(n,e);return}var o=Q("."+m+' dl[xid="'+n+'"]').parents("."+P);var s=Y[n]?Y[n]:X;var d=o.find("."+g+" input");e=this.exchangeData(n,e);var c=[];o.find("dl").html(this.renderSelect(n,d.attr("placeholder")||d.attr("back"),e.map(function(e){var t=Q.extend({},e,{innerHTML:e[s.keyName],value:e[s.keyVal],sel:e[s.keySel],disabled:e[s.keyDis],type:e.type,name:e[s.keyName]});if(t.sel){c.push(t)}return t})));var f=o.find("."+x);var u=o.find("dl[xid]");if(a){var p=q[n].values;p.forEach(function(e,t){u.find('dd[lay-value="'+e.value+'"]').addClass(w)});c.forEach(function(e,t){if(l.indexOf(p,e)==-1){l.addLabel(n,f,e);u.find('dd[lay-value="'+e.value+'"]').addClass(w);p.push(e)}})}else{c.forEach(function(e,t){l.addLabel(n,f,e);u.find('dd[lay-value="'+e.value+'"]').addClass(w)});q[n].values=c}this.commonHandler(n,f)};o.prototype.renderLinkage=function(l,e,n){var i=[],a=0,o={0:e},s=Y[l]?Y[l]:X;G[l]={};var t=function e(){var r=i[a++]=[],t=o;o={};Q.each(t,function(a,e){Q.each(e,function(e,t){var n={pid:a,name:t[s.keyName],value:t[s.keyVal]};G[l][n.value]=Q.extend(t,n);r.push(n);var i=t[s.keyChildren];if(i&&i.length){o[n.value]=i}})})};do{t()}while(Object.getOwnPropertyNames(o).length);var r=Q("."+m+' dl[xid="'+l+'"]').parents("."+P);var d=['<div class="xm-select-linkage">'];Q.each(i,function(e,t){var i=['<div style="left: '+(n-0)*e+'px;" class="xm-select-linkage-group xm-select-linkage-group'+(e+1)+" "+(e!=0?"xm-select-linkage-hide":"")+'">'];Q.each(t,function(e,t){var n='<li title="'+t.name+'" pid="'+t.pid+'" xm-value="'+t.value+'"><span>'+t.name+"</span></li>";i.push(n)});i.push("</div>");d=d.concat(i)});d.push('<div style="clear: both; height: 288px;"></div>');d.push("</div>");r.find("dl").html(d.join(""));r.find("."+y).css("display","none")};o.prototype.renderReplace=function(n,e){var i=this;var t=Q("."+m+' dl[xid="'+n+'"]');var a=Y[n]?Y[n]:X;e=this.exchangeData(n,e);G[n]=e;var r=e.map(function(e){var t=Q.extend({},e,{innerHTML:e[a.keyName],value:e[a.keyVal],sel:e[a.keySel],disabled:e[a.keyDis],type:e.type,name:e[a.keyName]});return i.createDD(n,t)}).join("");t.find("dd:not(."+J+"),dt:not([style])").remove();t.find("dt[style]").after(Q(r))};o.prototype.exchangeData=function(e,t){var n=Y[e]?Y[e]:X;var i=n["keyChildren"];var a=n["keyDis"];G[e]={};var r=this.getChildrenList(t,i,a,[],false);return r};o.prototype.getChildrenList=function(e,t,n,i,a){var r=[],l=0;for(var o=0;o<e.length;o++){var s=e[o];if(s.type&&s.type=="optgroup"){r.push(s);continue}else{l++}var d=i.concat([]);d.push(l-1+"_E");s[B]=JSON.stringify(d);s[n]=s[n]||a;r.push(s);var c=s[t];if(c&&K.isArray(c)&&c.length){s["XM_TREE_FOLDER"]=true;var f=d.concat([]);var u=this.getChildrenList(c,t,n,f,s[n]);r=r.concat(u)}}return r};o.prototype.create=function(e,t,n){if(t&&n){var i=q[e],a=Q('[xid="'+e+'"]'),r=a.find("dd."+J+"."+W),l=null,o=a.find("dd."+p);a.find("dd:not(."+J+"):not(."+p+")").each(function(e,t){if(n==Q(t).find("span").attr("name")){l=t}});if(!l){var s=i.config.create(e,n);if(o[0]){o.attr("lay-value",s);o.find("span").text(n);o.find("span").attr("name",n);o.removeClass(h)}else{r.after(Q(this.createDD(e,{name:n,innerHTML:n,value:s},p+" "+d)))}}}else{Q("[xid="+e+"] dd."+p).remove()}};o.prototype.createDD=function(e,t,n){var i=Y[e]?Y[e]:X;var a=Q.trim(t.innerHTML);G[e][t.value]=Q(t).is("option")?t=function(){var e={};e[i.keyName]=a;e[i.keyVal]=t.value;e[i.keyDis]=t.disabled;return e}():t;var r=q[e].config.template(e,t);var l=t[B];l?l=JSON.parse(l):l=[-1];var o=l[0]==-1?"":'tree-id="'+l.join("-")+'" tree-folder="'+!!t["XM_TREE_FOLDER"]+'"';return'<dd lay-value="'+t.value+'" class="'+(t.disabled?E:"")+" "+(n?n:"")+'" '+o+'>\n\t\t\t\t\t<div class="xm-unselect xm-form-checkbox '+(t.disabled?E:"")+'" style="margin-left: '+(l.length-1)*30+'px">\n\t\t\t\t\t\t<i class="'+s+'"></i>\n\t\t\t\t\t\t<span name="'+a+'">'+r+"</span>\n\t\t\t\t\t</div>\n\t\t\t\t</dd>"};o.prototype.createQuickBtn=function(e,t){return'<div class="'+R+'" method="'+e.name+'" title="'+e.name+'" '+(t?'style="margin-right: '+t+'"':"")+'><i class="'+e.icon+'"></i><span>'+e.name+"</span></div>"};o.prototype.renderBtns=function(e,t,n){var i=this;var a=[];var r=Q('dl[xid="'+e+'"]');a.push('<div class="'+l+'" show="'+t+'" style="max-width: '+(r.prev().width()-54)+'px;">');Q.each(q[e].config.btns,function(e,t){a.push(i.createQuickBtn(t,n))});a.push("</div>");a.push(this.createQuickBtn({icon:"xm-iconfont icon-caidan",name:""}));return a.join("")};o.prototype.renderSelect=function(n,e,t){var i=this;G[n]={};var a=[];if(q[n].config.btns.length){setTimeout(function(){var e=Q('dl[xid="'+n+'"]');e.parents("."+P).attr(b,q[n].config.searchType);e.find("."+l).css("max-width",e.prev().width()-54+"px")},10);a.push(['<dd lay-value="" class="'+J+'" style="background-color: #FFF!important;">',this.renderBtns(n,null,"30px"),"</dd>",'<dd lay-value="" class="'+J+" "+W+'" style="background-color: #FFF!important;">','<i class="xm-iconfont icon-sousuo"></i>','<input type="text" class="'+M+" "+y+'" placeholder="请搜索"/>',"</dd>"].join(""))}else{a.push('<dd lay-value="" class="'+J+'">'+e+"</dd>")}if(this.isArray(t)){Q(t).each(function(e,t){if(t){if(t.type&&t.type==="optgroup"){a.push("<dt>"+t.name+"</dt>")}else{a.push(i.createDD(n,t))}}})}else{Q(t).find("*").each(function(e,t){if(t.tagName.toLowerCase()=="option"&&e==0&&!t.value){return}if(t.tagName.toLowerCase()==="optgroup"){a.push("<dt>"+t.label+"</dt>")}else{a.push(i.createDD(n,t))}})}a.push('<dt style="display:none;"> </dt>');a.push('<dd class="'+J+" "+V+" "+(a.length===2?U:"")+'">没有选项</dd>');return a.join("")};o.prototype.on=function(){var n=this;this.one();Q(document).on("click",function(e){if(!Q(e.target).parents("."+I)[0]){Q("."+m+" dl ."+h).removeClass(h);Q("."+m+" dl dd."+U).removeClass(U);Q("."+m+" dl dd."+p).remove();Q.each(q,function(e,t){n.clearInput(e);if(!t.values.length){n.changePlaceHolder(Q('div[FS_ID="'+e+'"] .'+x))}})}Q("."+m+" ."+f).each(function(e,t){n.changeShow(Q(t).find("."+I),false)})})};o.prototype.calcLabelLeft=function(e,t,n){var i=this.getPosition(e[0]);i.y=i.x+e[0].clientWidth;var a=e[0].offsetLeft;if(!e.find("span").length){a=0}else if(n){var r=e.find("span:last");r.css("display")=="none"?r=r.prev()[0]:r=r[0];var l=this.getPosition(r);l.y=l.x+r.clientWidth;if(l.y>i.y){a=a-(l.y-i.y)-5}else{a=0}}else{if(t<0){var o=e.find(":last");o.css("display")=="none"?o=o.prev()[0]:o=o[0];var s=this.getPosition(o);s.y=s.x+o.clientWidth;if(s.y>i.y){a-=10}}else{if(a<0){a+=10}if(a>0){a=0}}}e.css("left",a+"px")};o.prototype.one=function(e){var C=this;Q(e?e:document).off("click","."+I).on("click","."+I,function(e){var t=Q(e.target),n=t.is(I)?t:t.parents("."+I),i=n.next(),a=i.attr("xid");Q("dl[xid]").not(i).each(function(e,t){C.clearInput(Q(t).attr("xid"))});Q("dl[xid]").not(i).find("dd."+h).removeClass(h);if(n.hasClass(N)){return false}if(t.is("."+O)||t.is("."+y+"[readonly]")){C.changeShow(n,!n.parents("."+P).hasClass(f));return false}if(n.find("."+y+":not(readonly)")[0]){var r=n.find("."+y),l={x:e.pageX,y:e.pageY},o=C.getPosition(n[0]),s=n.width();while(l.x>o.x){if(Q(document.elementFromPoint(l.x,l.y)).is(r)){r.focus();C.changeShow(n,true);return false}l.x-=50}}if(t.is("."+y)){C.changeShow(n,true);return false}if(t.is('i[fsw="'+v+'"]')){var d=C.getItem(a,t),c=i.find("dd[lay-value='"+d.value+"']");if(c.hasClass(E)){return false}C.handlerLabel(a,c,false,d);return false}C.changeShow(n,!n.parents("."+P).hasClass(f));return false});Q(e?e:document).off("click","dl."+F).on("click","dl."+F,function(e){var t=Q(e.target);if(t.is("."+H)||t.parents("."+H)[0]){t=t.is("li")?t:t.parents("li[xm-value]");var n=t.parents(".xm-select-linkage-group"),i=t.parents("dl").attr("xid");if(!i){return false}n.find(".xm-select-active").removeClass("xm-select-active");t.addClass("xm-select-active");n.nextAll(".xm-select-linkage-group").addClass("xm-select-linkage-hide");var a=n.next(".xm-select-linkage-group");a.find("li").addClass("xm-select-linkage-hide");a.find('li[pid="'+t.attr("xm-value")+'"]').removeClass("xm-select-linkage-hide");if(!a[0]||a.find("li:not(.xm-select-linkage-hide)").length==0){var r=[],l=0,o=!t.hasClass("xm-select-this");if(q[i].config.radio){t.parents(".xm-select-linkage").find(".xm-select-this").removeClass("xm-select-this")}do{r[l++]={name:t.find("span").text(),value:t.attr("xm-value")};t=t.parents(".xm-select-linkage-group").prev().find('li[xm-value="'+t.attr("pid")+'"]')}while(t.length);r.reverse();var s={name:r.map(function(e){return e.name}).join("/"),value:r.map(function(e){return e.value}).join("/")};C.handlerLabel(i,null,o,s)}else{a.removeClass("xm-select-linkage-hide")}return false}if(t.is("dl")){return false}if(t.is("dt")){t.nextUntil("dt").each(function(e,t){t=Q(t);if(t.hasClass(E)||t.hasClass(w)){}else{t.find("i:not(.icon-expand)").click()}});return false}var d=t.is("dd")?t:t.parents("dd");var c=d.parent("dl").attr("xid");if(d.hasClass(E)){return false}if(t.is("i.icon-caidan")){var f=[],u=[];t.parents("dl").find('dd[tree-folder="true"]').each(function(e,t){Q(t).attr("xm-tree-hidn")==undefined?f.push(t):u.push(t)});var p=u.length?u:f;p.forEach(function(e){return e.click()});return false}var h=d.attr("tree-id");if(h){if(t.is("i:not(.icon-expand)")){C.handlerLabel(c,d,!d.hasClass(w));return false}var v=Y[c]||X;var m=v.tree;var y=d.nextAll('dd[tree-id^="'+h+'"]');if(y&&y.length){var g=y[0].clientHeight;g?(C.addTreeHeight(d,g),g=0):(g=d.attr("xm-tree-hidn")||36,d.removeAttr("xm-tree-hidn"),d.find(">i").remove(),y=y.filter(function(e,t){return Q(t).attr("tree-id").split("-").length-1==h.split("-").length}));y.animate({height:g},150);return false}else{if(m.nextClick&&m.nextClick instanceof Function){m.nextClick(c,C.getItem(c,d),function(e){if(!e||!e.length){C.handlerLabel(c,d,!d.hasClass(w))}else{d.attr("tree-folder","true");var n=[];e.forEach(function(e,t){e.innerHTML=e[v.keyName];e[B]=JSON.stringify(h.split("-").concat([t]));n.push(C.createDD(c,e));G[c][e[v.keyVal]]=e});d.after(n.join(""))}});return false}}}if(d.hasClass(J)){var x=t.is("."+R)?t:t.parents("."+R);if(!x[0]){return false}var k=x.attr("method");var b=q[c].config.btns.filter(function(e){return e.name==k})[0];b&&b.click&&b.click instanceof Function&&b.click(c,C);return false}C.handlerLabel(c,d,!d.hasClass(w));return false})};o.prototype.addTreeHeight=function(e,i){var a=this;var t=e.attr("tree-id");var n=e.nextAll('dd[tree-id^="'+t+'"]');if(n.length){e.append('<i class="xm-iconfont icon-expand"></i>');e.attr("xm-tree-hidn",i);n.each(function(e,t){var n=Q(t);a.addTreeHeight(n,i)})}};var G={};o.prototype.getItem=function(e,t){if(t instanceof Q){if(t.is('i[fsw="'+v+'"]')){var n=t.parent();return G[e][t]||{name:n.find("font").text(),value:n.attr("value")}}var i=t.attr("lay-value");return!G[e][i]?G[e][i]={name:t.find("span[name]").attr("name"),value:i}:G[e][i]}else if(typeof t=="string"&&t.indexOf("/")!=-1){return G[e][t]||{name:this.valToName(e,t),value:t}}return G[e][t]};o.prototype.linkageAdd=function(e,t){var n=Q('dl[xid="'+e+'"]');n.find(".xm-select-active").removeClass("xm-select-active");var i=t.value.split("/");var a=void 0,r=void 0,l=0;var o=[];do{a=i[l];r=n.find(".xm-select-linkage-group"+(l+1)+' li[xm-value="'+a+'"]');r[0]&&o.push(r);l++}while(r.length&&a!=undefined);if(o.length==i.length){Q.each(o,function(e,t){t.addClass("xm-select-this")})}};o.prototype.linkageDel=function(e,t){var n=Q('dl[xid="'+e+'"]');var i=t.value.split("/");var a=void 0,r=void 0,l=i.length-1;do{a=i[l];r=n.find(".xm-select-linkage-group"+(l+1)+' li[xm-value="'+a+'"]');if(!r.parent().next().find("li[pid="+a+"].xm-select-this").length){r.removeClass("xm-select-this")}l--}while(r.length&&a!=undefined)};o.prototype.valToName=function(e,t){var i=Q('dl[xid="'+e+'"]');var n=(t+"").split("/");if(!n.length){return null}var a=[];Q.each(n,function(e,t){var n=i.find(".xm-select-linkage-group"+(e+1)+' li[xm-value="'+t+'"] span').text();a.push(n)});return a.length==n.length?a.join("/"):null};o.prototype.commonHandler=function(e,t){if(!t||!t[0]){return}this.checkHideSpan(e,t);this.changePlaceHolder(t);this.retop(t.parents("."+P));this.calcLabelLeft(t,0,true);this.setHidnVal(e,t);t.parents("."+I+" ."+v).attr("title",q[e].values.map(function(e){return e.name}).join(","))};o.prototype.initVal=function(e){var o=this;var t={};if(e){t[e]=q[e]}else{t=q}Q.each(t,function(n,e){var t=e.values,i=Q('dl[xid="'+n+'"]').parent(),a=i.find("."+x),r=i.find("dl");r.find("dd."+w).removeClass(w);var l=t.concat([]);l.concat([]).forEach(function(e,t){o.addLabel(n,a,e);r.find('dd[lay-value="'+e.value+'"]').addClass(w)});if(e.config.radio){l.length&&t.push(l[l.length-1])}o.commonHandler(n,a)})};o.prototype.setHidnVal=function(e,t){if(!t||!t[0]){return}t.parents("."+m).find("."+_).val(q[e].values.map(function(e){return e.value}).join(","))};o.prototype.handlerLabel=function(e,t,n,i,a){var r=Q('[xid="'+e+'"]').prev().find("."+x),l=t&&this.getItem(e,t),o=q[e].values,s=q[e].config.on||z.on[e],d=q[e].config.endOn||z.endOn[e];if(i){l=i}var c=q[e];if(n&&c.config.max&&c.values.length>=c.config.max){var f=z.maxTips[e]||q[e].config.maxTips;f&&f(e,o.concat([]),l,c.config.max);return}if(!a){if(s&&s instanceof Function&&s(e,o.concat([]),l,n,t&&t.hasClass(E))==false){return}}var u=Q('dl[xid="'+e+'"]');n?(t&&t[0]?(t.addClass(w),t.removeClass(p)):u.find(".xm-select-linkage")[0]&&this.linkageAdd(e,l),this.addLabel(e,r,l),o.push(l)):(t&&t[0]?t.removeClass(w):u.find(".xm-select-linkage")[0]&&this.linkageDel(e,l),this.delLabel(e,r,l),this.remove(o,l));if(!r[0])return;if(c.config.radio){this.changeShow(r,false)}r.parents("."+I).prev().removeClass("layui-form-danger");c.config.clearInput&&this.clearInput(e);this.commonHandler(e,r);!a&&d&&d instanceof Function&&d(e,o.concat([]),l,n,t&&t.hasClass(E))};o.prototype.addLabel=function(e,t,n){if(!n)return;var i='fsw="'+v+'"';var a=[Q("<span "+i+' value="'+n.value+'"><font '+i+">"+n.name+"</font></span>"),Q("<i "+i+' class="xm-iconfont icon-close"></i>')],r=a[0],l=a[1];r.append(l);var o=q[e];if(o.config.radio){o.values.length=0;Q('dl[xid="'+e+'"]').find("dd."+w+':not([lay-value="'+n.value+'"])').removeClass(w);t.find("span").remove()}t.find("input").css("width","50px");t.find("input").before(r)};o.prototype.delLabel=function(e,t,n){if(!n)return;t.find('span[value="'+n.value+'"]:first').remove()};o.prototype.checkHideSpan=function(e,t){var n=t.parents("."+v)[0].offsetHeight+5;t.find("span.xm-span-hide").removeClass("xm-span-hide");t.find("span[style]").remove();var i=q[e].config.showCount;t.find("span").each(function(e,t){if(e>=i){Q(t).addClass("xm-span-hide")}});var a=t.find("span:eq("+i+")");a[0]&&a.before(Q('<span style="padding-right: 6px;" fsw="'+v+'"> + '+(t.find("span").length-i)+"</span>"))};o.prototype.retop=function(e){var t=e.find("dl"),n=e.offset().top+e.outerHeight()+5-c.scrollTop(),i=t.outerHeight();var a=e.hasClass("layui-form-selectup")||t.css("top").indexOf("-")!=-1||n+i>c.height()&&n>=i;e=e.find("."+v);var r=q[t.attr("xid")];var l=t.parents(".layui-form-pane")[0]&&t.prev()[0].clientHeight>38?14:10;if(r&&r.config.direction=="up"||a){a=true;if(r&&r.config.direction=="down"){a=false}}var o=e[0].offsetTop+e.height()+l;if(a){t.css({top:"auto",bottom:o+3+"px"})}else{t.css({top:o+"px",bottom:"auto"})}};o.prototype.changeShow=function(e,t){Q(".layui-form-selected").removeClass("layui-form-selected");var n=e.parents("."+P),i=n.hasClass(f),a=n.find("dl").attr("xid");Q("."+m+" ."+P).not(n).removeClass(f);if(t){this.retop(n);n.addClass(f);n.find("."+y).focus();if(!n.find("dl dd[lay-value]:not(."+J+")").length){n.find("dl ."+V).addClass(U)}}else{n.removeClass(f);this.clearInput(a);n.find("dl ."+U).removeClass(U);n.find("dl dd."+h).removeClass(h);n.find("dl dd."+p).remove();if(a&&q[a]&&q[a].config.isEmpty){this.triggerSearch(n)}this.changePlaceHolder(n.find("."+x))}if(t!=i){var r=q[a].config.opened||z.opened[a];t&&r&&r instanceof Function&&r(a);var l=q[a].config.closed||z.closed[a];!t&&l&&l instanceof Function&&l(a)}};o.prototype.changePlaceHolder=function(e){var t=e.parents("."+I);t[0]||(t=e.parents("dl").prev());if(!t[0]){return}var n=e.parents("."+m).find("dl[xid]").attr("xid");if(q[n]&&q[n].config.height){}else{var i=t.find("."+v)[0].clientHeight;t.css("height",(i>36?i+4:i)+"px");var a=t.parents("."+m).parent().prev();if(a.is(".layui-form-label")&&t.parents(".layui-form-pane")[0]){i=i>36?i+4:i;t.css("height",i+"px");a.css({height:i+2+"px",lineHeight:i-18+"px"})}}var r=t.find("."+g+" input"),l=!e.find("span:last")[0]&&!t.find("."+y).val();if(l){var o=r.attr("back");r.removeAttr("back");r.attr("placeholder",o)}else{var s=r.attr("placeholder");r.removeAttr("placeholder");r.attr("back",s)}};o.prototype.indexOf=function(e,t){for(var n=0;n<e.length;n++){if(e[n].value==t||e[n].value==(t?t.value:t)||e[n]==t||JSON.stringify(e[n])==JSON.stringify(t)){return n}}return-1};o.prototype.remove=function(e,t){var n=this.indexOf(e,t?t.value:t);if(n>-1){e.splice(n,1);return true}return false};o.prototype.selectAll=function(i,a,e){var r=this;var l=Q('[xid="'+i+'"]');if(!l[0]){return}if(l.find(".xm-select-linkage")[0]){return}l.find("dd[lay-value]:not(."+J+"):not(."+w+")"+(e?":not(."+E+")":"")).each(function(e,t){t=Q(t);var n=r.getItem(i,t);r.handlerLabel(i,l.find('dd[lay-value="'+n.value+'"]'),true,n,!a)})};o.prototype.removeAll=function(n,i,a){var r=this;var l=Q('[xid="'+n+'"]');if(!l[0]){return}if(l.find(".xm-select-linkage")[0]){q[n].values.concat([]).forEach(function(e,t){var n=e.value.split("/");var i=void 0,a=void 0,r=0;do{i=n[r++];a=l.find(".xm-select-linkage-group"+r+':not(.xm-select-linkage-hide) li[xm-value="'+i+'"]');a.click()}while(a.length&&i!=undefined)});return}q[n].values.concat([]).forEach(function(e,t){if(a&&l.find('dd[lay-value="'+e.value+'"]').hasClass(E)){}else{r.handlerLabel(n,l.find('dd[lay-value="'+e.value+'"]'),false,e,!i)}})};o.prototype.reverse=function(i,a,e){var r=this;var l=Q('[xid="'+i+'"]');if(!l[0]){return}if(l.find(".xm-select-linkage")[0]){return}l.find("dd[lay-value]:not(."+J+")"+(e?":not(."+E+")":"")).each(function(e,t){t=Q(t);var n=r.getItem(i,t);r.handlerLabel(i,l.find('dd[lay-value="'+n.value+'"]'),!t.hasClass(w),n,!a)})};o.prototype.skin=function(e){var t=["default","primary","normal","warm","danger"];var n=t[Math.floor(Math.random()*t.length)];Q('dl[xid="'+e+'"]').parents("."+m).find("."+P).attr("xm-select-skin",n);this.check(e)&&this.commonHandler(e,Q('dl[xid="'+e+'"]').parents("."+m).find("."+x))};o.prototype.getPosition=function(e){var t=0,n=0;while(e!=null){t+=e.offsetLeft;n+=e.offsetTop;e=e.offsetParent}return{x:t,y:n}};o.prototype.onreset=function(){Q(document).on("click","[type=reset]",function(e){Q(e.target).parents("form").find("."+m+" dl[xid]").each(function(e,t){var n=t.getAttribute("xid"),i=Q(t),a=void 0,r={};K.removeAll(n);q[n].config.init.forEach(function(e,t){if(e&&(!r[e]||q[n].config.repeat)&&(a=i.find('dd[lay-value="'+e.value+'"]'))[0]){K.handlerLabel(n,a,true);r[e]=1}})})})};o.prototype.bindEvent=function(n,e,i){if(e&&e instanceof Function){i=e;e=null}if(i&&i instanceof Function){if(!e){Q.each(q,function(e,t){q[e]?q[e].config[n]=i:z[n][e]=i})}else{q[e]?(q[e].config[n]=i,delete z[n][e]):z[n][e]=i}}};o.prototype.check=function(e,t){if(Q('dl[xid="'+e+'"]').length){return true}else if(Q('select[xm-select="'+e+'"]').length){if(!t){this.render(e,Q('select[xm-select="'+e+'"]'));return true}}else{delete q[e];return false}};o.prototype.render=function(e,t){K.init(t);K.one(Q('dl[xid="'+e+'"]').parents("."+m));K.initVal(e)};o.prototype.log=function(e){console.log(e)};var u=function e(){this.v=t;this.render()};var K=new o;u.prototype.value=function(i,e,t){if(typeof i!="string"){return[]}var a=q[i];if(!K.check(i)){return[]}if(typeof e=="string"||e==undefined){var n=a.values.concat([])||[];if(e=="val"){return n.map(function(e){return e.value})}if(e=="valStr"){return n.map(function(e){return e.value}).join(",")}if(e=="name"){return n.map(function(e){return e.name})}if(e=="nameStr"){return n.map(function(e){return e.name}).join(",")}return n}if(K.isArray(e)){var r=Q('[xid="'+i+'"]'),l={},o=void 0,s=true;if(t==false){s=false}else if(t==true){s=true}else{K.removeAll(i)}if(s){a.values.forEach(function(e,t){l[e.value]=1})}e.forEach(function(e,t){if(e&&(!l[e]||a.config.repeat)){if((o=r.find('dd[lay-value="'+e+'"]'))[0]){K.handlerLabel(i,o,s,null,true);l[e]=1}else{var n=K.valToName(i,e);if(n){K.handlerLabel(i,o,s,K.getItem(i,e),true);l[e]=1}}}})}};u.prototype.on=function(e,t,n){K.bindEvent(n?"endOn":"on",e,t);return this};u.prototype.filter=function(e,t){K.bindEvent("filter",e,t);return this};u.prototype.maxTips=function(e,t){K.bindEvent("maxTips",e,t);return this};u.prototype.opened=function(e,t){K.bindEvent("opened",e,t);return this};u.prototype.closed=function(e,t){K.bindEvent("closed",e,t);return this};u.prototype.config=function(e,n,t){if(e&&(typeof e==="undefined"?"undefined":_typeof(e))=="object"){t=n==true;n=e;e=null}if(n&&(typeof n==="undefined"?"undefined":_typeof(n))=="object"){if(t){n.header||(n.header={});n.header["Content-Type"]="application/json; charset=UTF-8";n.dataType="json"}e?(Y[e]=Q.extend(true,{},Y[e]||X,n),!K.check(e)&&this.render(e),q[e]&&n.direction&&(q[e].config.direction=n.direction),q[e]&&n.clearInput&&(q[e].config.clearInput=true),n.searchUrl&&q[e]&&K.triggerSearch(Q("."+m+' dl[xid="'+e+'"]').parents("."+P),true)):(Q.extend(true,X,n),Q.each(Y,function(e,t){Q.extend(true,t,n)}))}return this};u.prototype.render=function(e,t){var n;if(e&&(typeof e==="undefined"?"undefined":_typeof(e))=="object"){t=e;e=null}var i=t?(n={init:t.init,disabled:t.disabled,max:t.max,isSearch:t.isSearch,searchUrl:t.searchUrl,isCreate:t.isCreate,radio:t.radio,skin:t.skin,direction:t.direction,height:t.height,formname:t.formname,layverify:t.layverify,layverType:t.layverType,showCount:t.showCount,placeholder:t.placeholder,create:t.create,filter:t.filter,maxTips:t.maxTips,on:t.on},_defineProperty(n,"on",t.on),_defineProperty(n,"opened",t.opened),_defineProperty(n,"closed",t.closed),_defineProperty(n,"template",t.template),_defineProperty(n,"clearInput",t.clearInput),n):{};t&&t.searchType!=undefined&&(i.searchType=t.searchType=="dl"?1:0);if(e){r[e]={};Q.extend(r[e],q[e]?q[e].config:{},i)}else{Q.extend(a,i)}(Q("select["+v+'="'+e+'"]')[0]?Q("select["+v+'="'+e+'"]'):Q("select["+v+"]")).each(function(e,t){var n=t.getAttribute(v);K.render(n,t);setTimeout(function(){return K.setHidnVal(n,Q('select[xm-select="'+n+'"] + div.'+m+" ."+x))},10)});return this};u.prototype.disabled=function(e){var t={};e?K.check(e)&&(t[e]=q[e]):t=q;Q.each(t,function(e,t){Q('dl[xid="'+e+'"]').prev().addClass(N)});return this};u.prototype.undisabled=function(e){var t={};e?K.check(e)&&(t[e]=q[e]):t=q;Q.each(t,function(e,t){Q('dl[xid="'+e+'"]').prev().removeClass(N)});return this};u.prototype.data=function(e,t,n){if(!e||!t||!n){K.log("id: "+e+" param error !!!");return this}if(!K.check(e)){K.log("id: "+e+" not render !!!");return this}this.value(e,[]);this.config(e,n);if(t=="local"){K.renderData(e,n.arr,n.linkage==true,n.linkageWidth?n.linkageWidth:"100")}else if(t=="server"){K.ajax(e,n.url,n.keyword,n.linkage==true,n.linkageWidth?n.linkageWidth:"100")}return this};u.prototype.btns=function(e,o,s){if(e&&K.isArray(e)){o=e;e=null}if(!o||!K.isArray(o)){return this}var t={};e?K.check(e)&&(t[e]=q[e]):t=q;o=o.map(function(e){if(typeof e=="string"){if(e=="select"){return i[0]}if(e=="remove"){return i[1]}if(e=="reverse"){return i[2]}if(e=="skin"){return i[3]}}return e});Q.each(t,function(e,t){t.config.btns=o;var n=Q('dl[xid="'+e+'"]').find("."+J+":first");if(o.length){var i=s&&s.show&&(s.show=="name"||s.show=="icon")?s.show:"";var a=K.renderBtns(e,i,s&&s.space?s.space:"30px");n.html(a)}else{var r=n.parents("."+P).find("."+g+" input");var l=r.attr("placeholder")||r.attr("back");n.html(l);n.removeAttr("style")}});return this};u.prototype.search=function(e,t){if(e&&K.check(e)){Y[e]=Q.extend(true,{},Y[e]||X,{first:true,searchVal:t});K.triggerSearch(Q('dl[xid="'+e+'"]').parents("."+P),true)}return this};u.prototype.replace=function(e,t,n){var i=this;if(!e||!t||!n){K.log("id: "+e+" param error !!!");return this}if(!K.check(e,true)){K.log("id: "+e+" not render !!!");return this}var a=this.value(e,"val");this.value(e,[]);this.config(e,n);if(t=="local"){K.renderData(e,n.arr,n.linkage==true,n.linkageWidth?n.linkageWidth:"100",false,true);this.value(e,a,true)}else if(t=="server"){K.ajax(e,n.url,n.keyword,n.linkage==true,n.linkageWidth?n.linkageWidth:"100",false,function(e){i.value(e,a,true)},true)}};return new u}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/extends/treeSelect.js b/src/main/resources/static/febs/lay/extends/treeSelect.js new file mode 100644 index 0000000..884f94c --- /dev/null +++ b/src/main/resources/static/febs/lay/extends/treeSelect.js @@ -0,0 +1 @@ +layui.define(["form","jquery"],function(exports){var jQuery=layui.jquery,$=jQuery,form=layui.form,_MOD="treeSelect",trss={},TreeSelect=function(){this.v="1.0.4"};!function(r){var J,K,L,M,N,O,v,t={},w={},x={},P={treeId:"",treeObj:null,view:{addDiyDom:null,autoCancelSelected:!0,dblClickExpand:!0,expandSpeed:"fast",fontCss:{},nameIsHTML:!1,selectedMulti:!0,showIcon:!0,showLine:!0,showTitle:!0,txtSelectedEnable:!1},data:{key:{isParent:"isParent",children:"children",name:"name",title:"",url:"url",icon:"icon"},simpleData:{enable:!1,idKey:"id",pIdKey:"pId",rootPId:null},keep:{parent:!1,leaf:!1}},async:{enable:!1,contentType:"application/x-www-form-urlencoded",type:"post",dataType:"text",headers:{},xhrFields:{},url:"",autoParam:[],otherParam:[],dataFilter:null},callback:{beforeAsync:null,beforeClick:null,beforeDblClick:null,beforeRightClick:null,beforeMouseDown:null,beforeMouseUp:null,beforeExpand:null,beforeCollapse:null,beforeRemove:null,onAsyncError:null,onAsyncSuccess:null,onNodeCreated:null,onClick:null,onDblClick:null,onRightClick:null,onMouseDown:null,onMouseUp:null,onExpand:null,onCollapse:null,onRemove:null}},y=[function(i){var e=i.treeObj,t=g.event;e.bind(t.NODECREATED,function(e,t,n){h.apply(i.callback.onNodeCreated,[e,t,n])}),e.bind(t.CLICK,function(e,t,n,o,r){h.apply(i.callback.onClick,[t,n,o,r])}),e.bind(t.EXPAND,function(e,t,n){h.apply(i.callback.onExpand,[e,t,n])}),e.bind(t.COLLAPSE,function(e,t,n){h.apply(i.callback.onCollapse,[e,t,n])}),e.bind(t.ASYNC_SUCCESS,function(e,t,n,o){h.apply(i.callback.onAsyncSuccess,[e,t,n,o])}),e.bind(t.ASYNC_ERROR,function(e,t,n,o,r,a){h.apply(i.callback.onAsyncError,[e,t,n,o,r,a])}),e.bind(t.REMOVE,function(e,t,n){h.apply(i.callback.onRemove,[e,t,n])}),e.bind(t.SELECTED,function(e,t,n){h.apply(i.callback.onSelected,[t,n])}),e.bind(t.UNSELECTED,function(e,t,n){h.apply(i.callback.onUnSelected,[t,n])})}],z=[function(e){var t=g.event;e.treeObj.unbind(t.NODECREATED).unbind(t.CLICK).unbind(t.EXPAND).unbind(t.COLLAPSE).unbind(t.ASYNC_SUCCESS).unbind(t.ASYNC_ERROR).unbind(t.REMOVE).unbind(t.SELECTED).unbind(t.UNSELECTED)}],A=[function(t){var n=e.getCache(t);n||(n={},e.setCache(t,n)),n.nodes=[],n.doms=[]}],B=[function(t,n,o,r,a,i){if(o){var d=e.getRoot(t),l=e.nodeChildren(t,o);o.level=n,o.tId=t.treeId+"_"+ ++d.zId,o.parentTId=r?r.tId:null,o.open="string"==typeof o.open?h.eqs(o.open,"true"):!!o.open,n=e.nodeIsParent(t,o),h.isArray(l)&&!(!1===n||"string"==typeof n&&h.eqs(n,"false"))?(e.nodeIsParent(t,o,!0),o.zAsync=!0):(n=e.nodeIsParent(t,o,n),o.open=!(!n||t.async.enable)&&o.open,o.zAsync=!n),o.isFirstNode=a,o.isLastNode=i,o.getParentNode=function(){return e.getNodeCache(t,o.parentTId)},o.getPreNode=function(){return e.getPreNode(t,o)},o.getNextNode=function(){return e.getNextNode(t,o)},o.getIndex=function(){return e.getNodeIndex(t,o)},o.getPath=function(){return e.getNodePath(t,o)},o.isAjaxing=!1,e.fixPIdKeyValue(t,o)}}],u=[function(t){var n=t.target,o=e.getSetting(t.data.treeId),r="",a=null,i="",d="",l=null,s=null,c=null;if(h.eqs(t.type,"mousedown")?d="mousedown":h.eqs(t.type,"mouseup")?d="mouseup":h.eqs(t.type,"contextmenu")?d="contextmenu":h.eqs(t.type,"click")?h.eqs(n.tagName,"span")&&null!==n.getAttribute("treeNode"+g.id.SWITCH)?(r=h.getNodeMainDom(n).id,i="switchNode"):(c=h.getMDom(o,n,[{tagName:"a",attrName:"treeNode"+g.id.A}]))&&(r=h.getNodeMainDom(c).id,i="clickNode"):h.eqs(t.type,"dblclick")&&(d="dblclick",c=h.getMDom(o,n,[{tagName:"a",attrName:"treeNode"+g.id.A}]))&&(r=h.getNodeMainDom(c).id,i="switchNode"),0<d.length&&0==r.length&&(c=h.getMDom(o,n,[{tagName:"a",attrName:"treeNode"+g.id.A}]))&&(r=h.getNodeMainDom(c).id),0<r.length)switch(a=e.getNodeCache(o,r),i){case"switchNode":e.nodeIsParent(o,a)&&(h.eqs(t.type,"click")||h.eqs(t.type,"dblclick")&&h.apply(o.view.dblClickExpand,[o.treeId,a],o.view.dblClickExpand))?l=J:i="";break;case"clickNode":l=K}switch(d){case"mousedown":s=L;break;case"mouseup":s=M;break;case"dblclick":s=N;break;case"contextmenu":s=O}return{stop:!1,node:a,nodeEventType:i,nodeEventCallback:l,treeEventType:d,treeEventCallback:s}}],C=[function(t){var n=e.getRoot(t);n||(n={},e.setRoot(t,n)),e.nodeChildren(t,n,[]),n.expandTriggerFlag=!1,n.curSelectedList=[],n.noSelection=!0,n.createdNodes=[],n.zId=0,n._ver=(new Date).getTime()}],D=[],E=[],F=[],G=[],H=[],e={addNodeCache:function(t,n){e.getCache(t).nodes[e.getNodeCacheId(n.tId)]=n},getNodeCacheId:function(e){return e.substring(e.lastIndexOf("_")+1)},addAfterA:function(e){E.push(e)},addBeforeA:function(e){D.push(e)},addInnerAfterA:function(e){G.push(e)},addInnerBeforeA:function(e){F.push(e)},addInitBind:function(e){y.push(e)},addInitUnBind:function(e){z.push(e)},addInitCache:function(e){A.push(e)},addInitNode:function(e){B.push(e)},addInitProxy:function(e,t){t?u.splice(0,0,e):u.push(e)},addInitRoot:function(e){C.push(e)},addNodesData:function(t,n,o,r){var a=e.nodeChildren(t,n);a?o>=a.length&&(o=-1):(a=e.nodeChildren(t,n,[]),o=-1),0<a.length&&0===o?(a[0].isFirstNode=!1,j.setNodeLineIcos(t,a[0])):0<a.length&&o<0&&(a[a.length-1].isLastNode=!1,j.setNodeLineIcos(t,a[a.length-1])),e.nodeIsParent(t,n,!0),o<0?e.nodeChildren(t,n,a.concat(r)):(t=[o,0].concat(r),a.splice.apply(a,t))},addSelectedNode:function(t,n){var o=e.getRoot(t);e.isSelectedNode(t,n)||o.curSelectedList.push(n)},addCreatedNode:function(t,n){(t.callback.onNodeCreated||t.view.addDiyDom)&&e.getRoot(t).createdNodes.push(n)},addZTreeTools:function(e){H.push(e)},exSetting:function(e){r.extend(!0,P,e)},fixPIdKeyValue:function(e,t){e.data.simpleData.enable&&(t[e.data.simpleData.pIdKey]=t.parentTId?t.getParentNode()[e.data.simpleData.idKey]:e.data.simpleData.rootPId)},getAfterA:function(e,t,n){for(var o=0,r=E.length;o<r;o++)E[o].apply(this,arguments)},getBeforeA:function(e,t,n){for(var o=0,r=D.length;o<r;o++)D[o].apply(this,arguments)},getInnerAfterA:function(e,t,n){for(var o=0,r=G.length;o<r;o++)G[o].apply(this,arguments)},getInnerBeforeA:function(e,t,n){for(var o=0,r=F.length;o<r;o++)F[o].apply(this,arguments)},getCache:function(e){return x[e.treeId]},getNodeIndex:function(t,n){if(!n)return null;for(var o=n.parentTId?n.getParentNode():e.getRoot(t),r=0,a=(o=e.nodeChildren(t,o)).length-1;r<=a;r++)if(o[r]===n)return r;return-1},getNextNode:function(t,n){if(!n)return null;for(var o=n.parentTId?n.getParentNode():e.getRoot(t),r=0,a=(o=e.nodeChildren(t,o)).length-1;r<=a;r++)if(o[r]===n)return r==a?null:o[r+1];return null},getNodeByParam:function(t,n,o,r){if(!n||!o)return null;for(var a=0,i=n.length;a<i;a++){var d=n[a];if(d[o]==r)return n[a];if(d=e.nodeChildren(t,d),d=e.getNodeByParam(t,d,o,r))return d}return null},getNodeCache:function(t,n){return n&&x[t.treeId].nodes[e.getNodeCacheId(n)]||null},getNodePath:function(e,t){return t?((n=t.parentTId?t.getParentNode().getPath():[])&&n.push(t),n):null;var n},getNodes:function(t){return e.nodeChildren(t,e.getRoot(t))},getNodesByParam:function(t,n,o,r){if(!n||!o)return[];for(var a=[],i=0,d=n.length;i<d;i++){var l=n[i];l[o]==r&&a.push(l),l=e.nodeChildren(t,l),a=a.concat(e.getNodesByParam(t,l,o,r))}return a},getNodesByParamFuzzy:function(t,n,o,r){if(!n||!o)return[];for(var a=[],i=(r=r.toLowerCase(),0),d=n.length;i<d;i++){var l=n[i];"string"==typeof l[o]&&-1<n[i][o].toLowerCase().indexOf(r)&&a.push(l),l=e.nodeChildren(t,l),a=a.concat(e.getNodesByParamFuzzy(t,l,o,r))}return a},getNodesByFilter:function(t,n,o,r,a){if(!n)return r?null:[];for(var i=r?null:[],d=0,l=n.length;d<l;d++){var s=n[d];if(h.apply(o,[s,a],!1)){if(r)return s;i.push(s)}if(s=e.nodeChildren(t,s),s=e.getNodesByFilter(t,s,o,r,a),r&&s)return s;i=r?s:i.concat(s)}return i},getPreNode:function(t,n){if(!n)return null;for(var o=n.parentTId?n.getParentNode():e.getRoot(t),r=0,a=(o=e.nodeChildren(t,o)).length;r<a;r++)if(o[r]===n)return 0==r?null:o[r-1];return null},getRoot:function(e){return e?w[e.treeId]:null},getRoots:function(){return w},getSetting:function(e){return t[e]},getSettings:function(){return t},getZTreeTools:function(e){return(e=this.getRoot(this.getSetting(e)))?e.treeTools:null},initCache:function(e){for(var t=0,n=A.length;t<n;t++)A[t].apply(this,arguments)},initNode:function(e,t,n,o,r,a){for(var i=0,d=B.length;i<d;i++)B[i].apply(this,arguments)},initRoot:function(e){for(var t=0,n=C.length;t<n;t++)C[t].apply(this,arguments)},isSelectedNode:function(t,n){for(var o=e.getRoot(t),r=0,a=o.curSelectedList.length;r<a;r++)if(n===o.curSelectedList[r])return!0;return!1},nodeChildren:function(e,t,n){return t?(e=e.data.key.children,void 0!==n&&(t[e]=n),t[e]):null},nodeIsParent:function(e,t,n){return!!t&&(e=e.data.key.isParent,void 0!==n&&("string"==typeof n&&(n=h.eqs(n,"true")),t[e]=!!n),t[e])},nodeName:function(e,t,n){return e=e.data.key.name,void 0!==n&&(t[e]=n),""+t[e]},nodeTitle:function(e,t){return""+t[""===e.data.key.title?e.data.key.name:e.data.key.title]},removeNodeCache:function(t,n){var o=e.nodeChildren(t,n);if(o)for(var r=0,a=o.length;r<a;r++)e.removeNodeCache(t,o[r]);e.getCache(t).nodes[e.getNodeCacheId(n.tId)]=null},removeSelectedNode:function(t,n){for(var o=e.getRoot(t),r=0,a=o.curSelectedList.length;r<a;r++)n!==o.curSelectedList[r]&&e.getNodeCache(t,o.curSelectedList[r].tId)||(o.curSelectedList.splice(r,1),t.treeObj.trigger(g.event.UNSELECTED,[t.treeId,n]),r--,a--)},setCache:function(e,t){x[e.treeId]=t},setRoot:function(e,t){w[e.treeId]=t},setZTreeTools:function(e,t){for(var n=0,o=H.length;n<o;n++)H[n].apply(this,arguments)},transformToArrayFormat:function(n,t){function o(t){r.push(t),(t=e.nodeChildren(n,t))&&(r=r.concat(e.transformToArrayFormat(n,t)))}if(!t)return[];var r=[];if(h.isArray(t))for(var a=0,i=t.length;a<i;a++)o(t[a]);else o(t);return r},transformTozTreeFormat:function(t,n){var o,r,a=t.data.simpleData.idKey,i=t.data.simpleData.pIdKey;if(!a||""==a||!n)return[];if(h.isArray(n)){var d=[],l={};for(o=0,r=n.length;o<r;o++)l[n[o][a]]=n[o];for(o=0,r=n.length;o<r;o++){var s=l[n[o][i]];if(s&&n[o][a]!=n[o][i]){var c=e.nodeChildren(t,s);(c=c||e.nodeChildren(t,s,[])).push(n[o])}else d.push(n[o])}return d}return[n]}},n={bindEvent:function(e){for(var t=0,n=y.length;t<n;t++)y[t].apply(this,arguments)},unbindEvent:function(e){for(var t=0,n=z.length;t<n;t++)z[t].apply(this,arguments)},bindTree:function(e){var t={treeId:e.treeId},o=e.treeObj;e.view.txtSelectedEnable||o.bind("selectstart",v).css({"-moz-user-select":"-moz-none"}),o.bind("click",t,n.proxy),o.bind("dblclick",t,n.proxy),o.bind("mouseover",t,n.proxy),o.bind("mouseout",t,n.proxy),o.bind("mousedown",t,n.proxy),o.bind("mouseup",t,n.proxy),o.bind("contextmenu",t,n.proxy)},unbindTree:function(e){e.treeObj.unbind("selectstart",v).unbind("click",n.proxy).unbind("dblclick",n.proxy).unbind("mouseover",n.proxy).unbind("mouseout",n.proxy).unbind("mousedown",n.proxy).unbind("mouseup",n.proxy).unbind("contextmenu",n.proxy)},doProxy:function(e){for(var t=[],n=0,o=u.length;n<o;n++){var r=u[n].apply(this,arguments);if(t.push(r),r.stop)break}return t},proxy:function(t){var o=e.getSetting(t.data.treeId);if(!h.uCanDo(o,t))return!0;for(var r=!0,a=0,i=(o=n.doProxy(t)).length;a<i;a++){var d=o[a];d.nodeEventCallback&&(r=d.nodeEventCallback.apply(d,[t,d.node])&&r),d.treeEventCallback&&(r=d.treeEventCallback.apply(d,[t,d.node])&&r)}return r}};J=function(t,n){var o=e.getSetting(t.data.treeId);if(n.open){if(0==h.apply(o.callback.beforeCollapse,[o.treeId,n],!0))return!0}else if(0==h.apply(o.callback.beforeExpand,[o.treeId,n],!0))return!0;return e.getRoot(o).expandTriggerFlag=!0,j.switchNode(o,n),!0},K=function(t,n){var o=e.getSetting(t.data.treeId),r=o.view.autoCancelSelected&&(t.ctrlKey||t.metaKey)&&e.isSelectedNode(o,n)?0:o.view.autoCancelSelected&&(t.ctrlKey||t.metaKey)&&o.view.selectedMulti?2:1;return 0==h.apply(o.callback.beforeClick,[o.treeId,n,r],!0)||(0==r?j.cancelPreSelectedNode(o,n):j.selectNode(o,n,2==r),o.treeObj.trigger(g.event.CLICK,[t,o.treeId,n,r])),!0},L=function(t,n){var o=e.getSetting(t.data.treeId);return h.apply(o.callback.beforeMouseDown,[o.treeId,n],!0)&&h.apply(o.callback.onMouseDown,[t,o.treeId,n]),!0},M=function(t,n){var o=e.getSetting(t.data.treeId);return h.apply(o.callback.beforeMouseUp,[o.treeId,n],!0)&&h.apply(o.callback.onMouseUp,[t,o.treeId,n]),!0},N=function(t,n){var o=e.getSetting(t.data.treeId);return h.apply(o.callback.beforeDblClick,[o.treeId,n],!0)&&h.apply(o.callback.onDblClick,[t,o.treeId,n]),!0},O=function(t,n){var o=e.getSetting(t.data.treeId);return h.apply(o.callback.beforeRightClick,[o.treeId,n],!0)&&h.apply(o.callback.onRightClick,[t,o.treeId,n]),"function"!=typeof o.callback.onRightClick},v=function(e){return"input"===(e=e.originalEvent.srcElement.nodeName.toLowerCase())||"textarea"===e};var h={apply:function(e,t,n){return"function"==typeof e?e.apply(Q,t||[]):n},canAsync:function(t,n){var o=e.nodeChildren(t,n),r=e.nodeIsParent(t,n);return t.async.enable&&n&&r&&!(n.zAsync||o&&0<o.length)},clone:function(e){if(null===e)return null;var t,n=h.isArray(e)?[]:{};for(t in e)n[t]=e[t]instanceof Date?new Date(e[t].getTime()):"object"==typeof e[t]?h.clone(e[t]):e[t];return n},eqs:function(e,t){return e.toLowerCase()===t.toLowerCase()},isArray:function(e){return"[object Array]"===Object.prototype.toString.apply(e)},isElement:function(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName},$:function(e,t,n){return t&&"string"!=typeof t&&(n=t,t=""),"string"==typeof e?r(e,n?n.treeObj.get(0).ownerDocument:null):r("#"+e.tId+t,n?n.treeObj:null)},getMDom:function(e,t,n){if(!t)return null;for(;t&&t.id!==e.treeId;){for(var o=0,r=n.length;t.tagName&&o<r;o++)if(h.eqs(t.tagName,n[o].tagName)&&null!==t.getAttribute(n[o].attrName))return t;t=t.parentNode}return null},getNodeMainDom:function(e){return r(e).parent("li").get(0)||r(e).parentsUntil("li").parent().get(0)},isChildOrSelf:function(e,t){return 0<r(e).closest("#"+t).length},uCanDo:function(){return!0}},j={addNodes:function(t,n,o,r,a){var i=e.nodeIsParent(t,n);if(!t.data.keep.leaf||!n||i)if(h.isArray(r)||(r=[r]),t.data.simpleData.enable&&(r=e.transformTozTreeFormat(t,r)),n){i=l(n,g.id.SWITCH,t);var d=l(n,g.id.ICON,t),s=l(n,g.id.UL,t);n.open||(j.replaceSwitchClass(n,i,g.folder.CLOSE),j.replaceIcoClass(n,d,g.folder.CLOSE),n.open=!1,s.css({display:"none"})),e.addNodesData(t,n,o,r),j.createNodes(t,n.level+1,r,n,o),a||j.expandCollapseParentNode(t,n,!0)}else e.addNodesData(t,e.getRoot(t),o,r),j.createNodes(t,0,r,null,o)},appendNodes:function(t,n,o,r,a,i,d){if(!o)return[];var l,s,c=[],u=r||e.getRoot(t);(!(u=e.nodeChildren(t,u))||a>=u.length-o.length)&&(a=-1);for(var p=0,h=o.length;p<h;p++){var g=o[p];i&&(l=(0===a||u.length==o.length)&&0==p,s=a<0&&p==o.length-1,e.initNode(t,n,g,r,l,s,d),e.addNodeCache(t,g)),l=e.nodeIsParent(t,g),s=[];var f=e.nodeChildren(t,g);f&&0<f.length&&(s=j.appendNodes(t,n+1,f,g,-1,i,d&&g.open)),d&&(j.makeDOMNodeMainBefore(c,t,g),j.makeDOMNodeLine(c,t,g),e.getBeforeA(t,g,c),j.makeDOMNodeNameBefore(c,t,g),e.getInnerBeforeA(t,g,c),j.makeDOMNodeIcon(c,t,g),e.getInnerAfterA(t,g,c),j.makeDOMNodeNameAfter(c,t,g),e.getAfterA(t,g,c),l&&g.open&&j.makeUlHtml(t,g,c,s.join("")),j.makeDOMNodeMainAfter(c,t,g),e.addCreatedNode(t,g))}return c},appendParentULDom:function(t,n){var o=[],r=l(n,t);!r.get(0)&&n.parentTId&&(j.appendParentULDom(t,n.getParentNode()),r=l(n,t));var a=l(n,g.id.UL,t);a.get(0)&&a.remove(),a=e.nodeChildren(t,n),a=j.appendNodes(t,n.level+1,a,n,-1,!1,!0),j.makeUlHtml(t,n,o,a.join("")),r.append(o.join(""))},asyncNode:function(a,b,c,d){var f,i;if(f=e.nodeIsParent(a,b),b&&!f)return h.apply(d),!1;if(b&&b.isAjaxing)return!1;if(0==h.apply(a.callback.beforeAsync,[a.treeId,b],!0))return h.apply(d),!1;b&&(b.isAjaxing=!0,l(b,g.id.ICON,a).attr({style:"",class:g.className.BUTTON+" "+g.className.ICO_LOADING}));var m={},k=h.apply(a.async.autoParam,[a.treeId,b],a.async.autoParam);for(f=0,i=k.length;b&&f<i;f++){var q=k[f].split("="),o=q;1<q.length&&(o=q[1],q=q[0]),m[o]=b[q]}if(k=h.apply(a.async.otherParam,[a.treeId,b],a.async.otherParam),h.isArray(k))for(f=0,i=k.length;f<i;f+=2)m[k[f]]=k[f+1];else for(var n in k)m[n]=k[n];var s=e.getRoot(a)._ver;return r.ajax({contentType:a.async.contentType,cache:!1,type:a.async.type,url:h.apply(a.async.url,[a.treeId,b],a.async.url),data:-1<a.async.contentType.indexOf("application/json")?JSON.stringify(m):m,dataType:a.async.dataType,headers:a.async.headers,xhrFields:a.async.xhrFields,success:function(i){if(s==e.getRoot(a)._ver){var f=[];try{f=i&&0!=i.length?"string"==typeof i?eval("("+i+")"):i:[]}catch(e){f=i}b&&(b.isAjaxing=null,b.zAsync=!0),j.setNodeLineIcos(a,b),f&&""!==f?(f=h.apply(a.async.dataFilter,[a.treeId,b,f],f),j.addNodes(a,b,-1,f?h.clone(f):[],!!c)):j.addNodes(a,b,-1,[],!!c),a.treeObj.trigger(g.event.ASYNC_SUCCESS,[a.treeId,b,i]),h.apply(d)}},error:function(t,n,o){s==e.getRoot(a)._ver&&(b&&(b.isAjaxing=null),j.setNodeLineIcos(a,b),a.treeObj.trigger(g.event.ASYNC_ERROR,[a.treeId,b,t,n,o]))}}),!0},cancelPreSelectedNode:function(t,n,o){var r,a,i=e.getRoot(t).curSelectedList;for(r=i.length-1;0<=r;r--)if(n===(a=i[r])||!n&&(!o||o!==a)){if(l(a,g.id.A,t).removeClass(g.node.CURSELECTED),n){e.removeSelectedNode(t,n);break}i.splice(r,1),t.treeObj.trigger(g.event.UNSELECTED,[t.treeId,a])}},createNodeCallback:function(t){if(t.callback.onNodeCreated||t.view.addDiyDom)for(var n=e.getRoot(t);0<n.createdNodes.length;){var o=n.createdNodes.shift();h.apply(t.view.addDiyDom,[t.treeId,o]),t.callback.onNodeCreated&&t.treeObj.trigger(g.event.NODECREATED,[t.treeId,o])}},createNodes:function(t,n,o,a,i){if(o&&0!=o.length){var d,s,c=e.getRoot(t),u=!a||a.open||!!l(e.nodeChildren(t,a)[0],t).get(0);c.createdNodes=[],n=j.appendNodes(t,n,o,a,i,!0,u),a?(a=l(a,g.id.UL,t)).get(0)&&(d=a):d=t.treeObj,d&&(0<=i&&(s=d.children()[i]),0<=i&&s?r(s).before(n.join("")):d.append(n.join(""))),j.createNodeCallback(t)}},destroy:function(o){o&&(e.initCache(o),e.initRoot(o),n.unbindTree(o),n.unbindEvent(o),o.treeObj.empty(),delete t[o.treeId])},expandCollapseNode:function(t,n,o,r,a){var i,d=e.getRoot(t);if(n){var s=e.nodeChildren(t,n),c=e.nodeIsParent(t,n);if(d.expandTriggerFlag&&(i=a,a=function(){i&&i(),n.open?t.treeObj.trigger(g.event.EXPAND,[t.treeId,n]):t.treeObj.trigger(g.event.COLLAPSE,[t.treeId,n])},d.expandTriggerFlag=!1),!n.open&&c&&(!l(n,g.id.UL,t).get(0)||s&&0<s.length&&!l(s[0],t).get(0))&&(j.appendParentULDom(t,n),j.createNodeCallback(t)),n.open==o)h.apply(a,[]);else{o=l(n,g.id.UL,t),d=l(n,g.id.SWITCH,t);var u=l(n,g.id.ICON,t);c?(n.open=!n.open,n.iconOpen&&n.iconClose&&u.attr("style",j.makeNodeIcoStyle(t,n)),n.open?(j.replaceSwitchClass(n,d,g.folder.OPEN),j.replaceIcoClass(n,u,g.folder.OPEN),0==r||""==t.view.expandSpeed?(o.show(),h.apply(a,[])):s&&0<s.length?o.slideDown(t.view.expandSpeed,a):(o.show(),h.apply(a,[]))):(j.replaceSwitchClass(n,d,g.folder.CLOSE),j.replaceIcoClass(n,u,g.folder.CLOSE),0!=r&&""!=t.view.expandSpeed&&s&&0<s.length?o.slideUp(t.view.expandSpeed,a):(o.hide(),h.apply(a,[])))):h.apply(a,[])}}else h.apply(a,[])},expandCollapseParentNode:function(e,t,n,o,r){t&&(t.parentTId?(j.expandCollapseNode(e,t,n,o),t.parentTId&&j.expandCollapseParentNode(e,t.getParentNode(),n,o,r)):j.expandCollapseNode(e,t,n,o,r))},expandCollapseSonNode:function(t,n,o,r,a){var i=e.getRoot(t),d=(i=n?e.nodeChildren(t,n):e.nodeChildren(t,i),!n&&r),l=e.getRoot(t).expandTriggerFlag;if(e.getRoot(t).expandTriggerFlag=!1,i)for(var s=0,c=i.length;s<c;s++)i[s]&&j.expandCollapseSonNode(t,i[s],o,d);e.getRoot(t).expandTriggerFlag=l,j.expandCollapseNode(t,n,o,r,a)},isSelectedNode:function(t,n){if(!n)return!1;var o,r=e.getRoot(t).curSelectedList;for(o=r.length-1;0<=o;o--)if(n===r[o])return!0;return!1},makeDOMNodeIcon:function(t,n,o){var r=e.nodeName(n,o);r=n.view.nameIsHTML?r:r.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">"),t.push("<span id='",o.tId,g.id.ICON,"' title='' treeNode",g.id.ICON," class='",j.makeNodeIcoClass(n,o),"' style='",j.makeNodeIcoStyle(n,o),"'></span><span id='",o.tId,g.id.SPAN,"' class='",g.className.NAME,"'>",r,"</span>")},makeDOMNodeLine:function(e,t,n){e.push("<span id='",n.tId,g.id.SWITCH,"' title='' class='",j.makeNodeLineClass(t,n),"' treeNode",g.id.SWITCH,"></span>")},makeDOMNodeMainAfter:function(e){e.push("</li>")},makeDOMNodeMainBefore:function(e,t,n){e.push("<li id='",n.tId,"' class='",g.className.LEVEL,n.level,"' tabindex='0' hidefocus='true' treenode>")},makeDOMNodeNameAfter:function(e){e.push("</a>")},makeDOMNodeNameBefore:function(t,n,o){var r,a=e.nodeTitle(n,o),i=j.makeNodeUrl(n,o),d=j.makeNodeFontCss(n,o),l=[];for(r in d)l.push(r,":",d[r],";");t.push("<a id='",o.tId,g.id.A,"' class='",g.className.LEVEL,o.level,"' treeNode",g.id.A,' onclick="',o.click||"",'" ',null!=i&&0<i.length?"href='"+i+"'":""," target='",j.makeNodeTarget(o),"' style='",l.join(""),"'"),h.apply(n.view.showTitle,[n.treeId,o],n.view.showTitle)&&a&&t.push("title='",a.replace(/'/g,"'").replace(/</g,"<").replace(/>/g,">"),"'"),t.push(">")},makeNodeFontCss:function(e,t){var n=h.apply(e.view.fontCss,[e.treeId,t],e.view.fontCss);return n&&"function"!=typeof n?n:{}},makeNodeIcoClass:function(t,n){var o=["ico"];if(!n.isAjaxing){var r=e.nodeIsParent(t,n);o[0]=(n.iconSkin?n.iconSkin+"_":"")+o[0],r?o.push(n.open?g.folder.OPEN:g.folder.CLOSE):o.push(g.folder.DOCU)}return g.className.BUTTON+" "+o.join("_")},makeNodeIcoStyle:function(t,n){var o=[];if(!n.isAjaxing){var r=e.nodeIsParent(t,n)&&n.iconOpen&&n.iconClose?n.open?n.iconOpen:n.iconClose:n[t.data.key.icon];r&&o.push("background:url(",r,") 0 0 no-repeat;"),0!=t.view.showIcon&&h.apply(t.view.showIcon,[t.treeId,n],!0)||o.push("width:0px;height:0px;")}return o.join("")},makeNodeLineClass:function(t,n){var o=[];return t.view.showLine?0==n.level&&n.isFirstNode&&n.isLastNode?o.push(g.line.ROOT):0==n.level&&n.isFirstNode?o.push(g.line.ROOTS):n.isLastNode?o.push(g.line.BOTTOM):o.push(g.line.CENTER):o.push(g.line.NOLINE),e.nodeIsParent(t,n)?o.push(n.open?g.folder.OPEN:g.folder.CLOSE):o.push(g.folder.DOCU),j.makeNodeLineClassEx(n)+o.join("_")},makeNodeLineClassEx:function(e){return g.className.BUTTON+" "+g.className.LEVEL+e.level+" "+g.className.SWITCH+" "},makeNodeTarget:function(e){return e.target||"_blank"},makeNodeUrl:function(e,t){var n=e.data.key.url;return t[n]?t[n]:null},makeUlHtml:function(e,t,n,o){n.push("<ul id='",t.tId,g.id.UL,"' class='",g.className.LEVEL,t.level," ",j.makeUlLineClass(e,t),"' style='display:",t.open?"block":"none","'>"),n.push(o),n.push("</ul>")},makeUlLineClass:function(e,t){return e.view.showLine&&!t.isLastNode?g.line.LINE:""},removeChildNodes:function(t,n){if(n){var o=e.nodeChildren(t,n);if(o){for(var r=0,a=o.length;r<a;r++)e.removeNodeCache(t,o[r]);e.removeSelectedNode(t),delete n[t.data.key.children],t.data.keep.parent?l(n,g.id.UL,t).empty():(e.nodeIsParent(t,n,!1),n.open=!1,o=l(n,g.id.SWITCH,t),r=l(n,g.id.ICON,t),j.replaceSwitchClass(n,o,g.folder.DOCU),j.replaceIcoClass(n,r,g.folder.DOCU),l(n,g.id.UL,t).remove())}}},scrollIntoView:function(e,t){if(t)if("undefined"==typeof Element){var n=e.treeObj.get(0).getBoundingClientRect(),o=t.getBoundingClientRect();(o.top<n.top||o.bottom>n.bottom||o.right>n.right||o.left<n.left)&&t.scrollIntoView()}else Element.prototype.scrollIntoViewIfNeeded||(Element.prototype.scrollIntoViewIfNeeded=function(n){function e(e,t){return{start:e,length:t,end:e+t}}function t(e,t){return!1===n||t.start<e.end&&e.start<t.end?Math.max(e.end-t.length,Math.min(t.start,e.start)):(e.start+e.end-t.length)/2}function r(n,o){return{x:n,y:o,translate:function(e,t){return r(n+e,o+t)}}}function o(e,t){for(;e;)t=t.translate(e.offsetLeft,e.offsetTop),e=e.offsetParent;return t}for(var a,i=o(this,r(0,0)),d=r(this.offsetWidth,this.offsetHeight),l=this.parentNode;l instanceof HTMLElement;)a=o(l,r(l.clientLeft,l.clientTop)),l.scrollLeft=t(e(i.x-a.x,d.x),e(l.scrollLeft,l.clientWidth)),l.scrollTop=t(e(i.y-a.y,d.y),e(l.scrollTop,l.clientHeight)),i=i.translate(-l.scrollLeft,-l.scrollTop),l=l.parentNode}),t.scrollIntoViewIfNeeded()},setFirstNode:function(t,n){var o=e.nodeChildren(t,n);0<o.length&&(o[0].isFirstNode=!0)},setLastNode:function(t,n){var o=e.nodeChildren(t,n);0<o.length&&(o[o.length-1].isLastNode=!0)},removeNode:function(t,n){var o=e.getRoot(t),r=n.parentTId?n.getParentNode():o;if(n.isFirstNode=!1,n.isLastNode=!1,n.getPreNode=function(){return null},n.getNextNode=function(){return null},e.getNodeCache(t,n.tId)){l(n,t).remove(),e.removeNodeCache(t,n),e.removeSelectedNode(t,n);for(var a=e.nodeChildren(t,r),i=0,d=a.length;i<d;i++)if(a[i].tId==n.tId){a.splice(i,1);break}var s;if(j.setFirstNode(t,r),j.setLastNode(t,r),i=a.length,t.data.keep.parent||0!=i){if(t.view.showLine&&0<i){var c=a[i-1];i=l(c,g.id.UL,t),d=l(c,g.id.SWITCH,t),s=l(c,g.id.ICON,t),r==o?1==a.length?j.replaceSwitchClass(c,d,g.line.ROOT):(o=l(a[0],g.id.SWITCH,t),j.replaceSwitchClass(a[0],o,g.line.ROOTS),j.replaceSwitchClass(c,d,g.line.BOTTOM)):j.replaceSwitchClass(c,d,g.line.BOTTOM),i.removeClass(g.line.LINE)}}else e.nodeIsParent(t,r,!1),r.open=!1,delete r[t.data.key.children],i=l(r,g.id.UL,t),d=l(r,g.id.SWITCH,t),s=l(r,g.id.ICON,t),j.replaceSwitchClass(r,d,g.folder.DOCU),j.replaceIcoClass(r,s,g.folder.DOCU),i.css("display","none")}},replaceIcoClass:function(e,t,n){if(t&&!e.isAjaxing&&null!=(e=t.attr("class"))){switch(e=e.split("_"),n){case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:e[e.length-1]=n}t.attr("class",e.join("_"))}},replaceSwitchClass:function(e,t,n){if(t){var o=t.attr("class");if(null!=o){switch(o=o.split("_"),n){case g.line.ROOT:case g.line.ROOTS:case g.line.CENTER:case g.line.BOTTOM:case g.line.NOLINE:o[0]=j.makeNodeLineClassEx(e)+n;break;case g.folder.OPEN:case g.folder.CLOSE:case g.folder.DOCU:o[1]=n}t.attr("class",o.join("_")),n!==g.folder.DOCU?t.removeAttr("disabled"):t.attr("disabled","disabled")}}},selectNode:function(t,n,o){o||j.cancelPreSelectedNode(t,null,n),l(n,g.id.A,t).addClass(g.node.CURSELECTED),e.addSelectedNode(t,n),t.treeObj.trigger(g.event.SELECTED,[t.treeId,n])},setNodeFontCss:function(e,t){var n=l(t,g.id.A,e),o=j.makeNodeFontCss(e,t);o&&n.css(o)},setNodeLineIcos:function(t,n){if(n){var o=l(n,g.id.SWITCH,t),r=l(n,g.id.UL,t),a=l(n,g.id.ICON,t),i=j.makeUlLineClass(t,n);0==i.length?r.removeClass(g.line.LINE):r.addClass(i),o.attr("class",j.makeNodeLineClass(t,n)),e.nodeIsParent(t,n)?o.removeAttr("disabled"):o.attr("disabled","disabled"),a.removeAttr("style"),a.attr("style",j.makeNodeIcoStyle(t,n)),a.attr("class",j.makeNodeIcoClass(t,n))}},setNodeName:function(t,n){var o=e.nodeTitle(t,n),r=l(n,g.id.SPAN,t);r.empty(),t.view.nameIsHTML?r.html(e.nodeName(t,n)):r.text(e.nodeName(t,n)),h.apply(t.view.showTitle,[t.treeId,n],t.view.showTitle)&&l(n,g.id.A,t).attr("title",o||"")},setNodeTarget:function(e,t){l(t,g.id.A,e).attr("target",j.makeNodeTarget(t))},setNodeUrl:function(e,t){var n=l(t,g.id.A,e),o=j.makeNodeUrl(e,t);null==o||0==o.length?n.removeAttr("href"):n.attr("href",o)},switchNode:function(e,t){t.open||!h.canAsync(e,t)?j.expandCollapseNode(e,t,!t.open):e.async.enable?j.asyncNode(e,t)||j.expandCollapseNode(e,t,!t.open):t&&j.expandCollapseNode(e,t,!t.open)}};r.fn.zTree={consts:{className:{BUTTON:"button",LEVEL:"level",ICO_LOADING:"ico_loading",SWITCH:"switch",NAME:"node_name"},event:{NODECREATED:"ztree_nodeCreated",CLICK:"ztree_click",EXPAND:"ztree_expand",COLLAPSE:"ztree_collapse",ASYNC_SUCCESS:"ztree_async_success",ASYNC_ERROR:"ztree_async_error",REMOVE:"ztree_remove",SELECTED:"ztree_selected",UNSELECTED:"ztree_unselected"},id:{A:"_a",ICON:"_ico",SPAN:"_span",SWITCH:"_switch",UL:"_ul"},line:{ROOT:"root",ROOTS:"roots",CENTER:"center",BOTTOM:"bottom",NOLINE:"noline",LINE:"line"},folder:{OPEN:"open",CLOSE:"close",DOCU:"docu"},node:{CURSELECTED:"curSelectedNode"}},_z:{tools:h,view:j,event:n,data:e},getZTreeObj:function(t){return(t=e.getZTreeTools(t))?t:null},destroy:function(n){if(n&&0<n.length)j.destroy(e.getSetting(n));else for(var o in t)j.destroy(t[o])},init:function(o,a,i){var s=h.clone(P);r.extend(!0,s,a),s.treeId=o.attr("id"),s.treeObj=o,s.treeObj.empty(),t[s.treeId]=s,void 0===document.body.style.maxHeight&&(s.view.expandSpeed=""),e.initRoot(s),o=e.getRoot(s),i=i?h.clone(h.isArray(i)?i:[i]):[],s.data.simpleData.enable?e.nodeChildren(s,o,e.transformTozTreeFormat(s,i)):e.nodeChildren(s,o,i),e.initCache(s),n.unbindTree(s),n.bindTree(s),n.unbindEvent(s),n.bindEvent(s);var d={setting:s,addNodes:function(t,n,o,r){function a(){j.addNodes(s,t,n,d,1==r)}t=t||null;var i=e.nodeIsParent(s,t);if(t&&!i&&s.data.keep.leaf)return null;if(i=parseInt(n,10),n=isNaN(i)?(r=!!o,o=n,-1):i,!o)return null;var d=h.clone(h.isArray(o)?o:[o]);return h.canAsync(s,t)?j.asyncNode(s,t,r,a):a(),d},cancelSelectedNode:function(e){j.cancelPreSelectedNode(s,e)},destroy:function(){j.destroy(s)},expandAll:function(e){return e=!!e,j.expandCollapseSonNode(s,null,e,!0),e},expandNode:function(t,n,o,r,a){function i(){var e=l(t,s).get(0);e&&!1!==r&&j.scrollIntoView(s,e)}return t&&e.nodeIsParent(s,t)?(!0!==n&&!1!==n&&(n=!t.open),(a=!!a)&&n&&0==h.apply(s.callback.beforeExpand,[s.treeId,t],!0)||a&&!n&&0==h.apply(s.callback.beforeCollapse,[s.treeId,t],!0)?null:(n&&t.parentTId&&j.expandCollapseParentNode(s,t.getParentNode(),n,!1),n!==t.open||o?(e.getRoot(s).expandTriggerFlag=a,!h.canAsync(s,t)&&o?j.expandCollapseSonNode(s,t,n,!0,i):(t.open=!n,j.switchNode(this.setting,t),i()),n):null)):null},getNodes:function(){return e.getNodes(s)},getNodeByParam:function(t,n,o){return t?e.getNodeByParam(s,o?e.nodeChildren(s,o):e.getNodes(s),t,n):null},getNodeByTId:function(t){return e.getNodeCache(s,t)},getNodesByParam:function(t,n,o){return t?e.getNodesByParam(s,o?e.nodeChildren(s,o):e.getNodes(s),t,n):null},getNodesByParamFuzzy:function(t,n,o){return t?e.getNodesByParamFuzzy(s,o?e.nodeChildren(s,o):e.getNodes(s),t,n):null},getNodesByFilter:function(t,n,o,r){return n=!!n,t&&"function"==typeof t?e.getNodesByFilter(s,o?e.nodeChildren(s,o):e.getNodes(s),t,n,r):n?null:[]},getNodeIndex:function(t){if(!t)return null;for(var n=t.parentTId?t.getParentNode():e.getRoot(s),o=0,r=(n=e.nodeChildren(s,n)).length;o<r;o++)if(n[o]==t)return o;return-1},getSelectedNodes:function(){for(var t=[],n=e.getRoot(s).curSelectedList,o=0,r=n.length;o<r;o++)t.push(n[o]);return t},isSelectedNode:function(t){return e.isSelectedNode(s,t)},reAsyncChildNodesPromise:function(n,o,r){return new Promise(function(e,t){try{d.reAsyncChildNodes(n,o,r,function(){e(n)})}catch(e){t(e)}})},reAsyncChildNodes:function(t,n,o,r){if(this.setting.async.enable){var a=!t;if(a&&(t=e.getRoot(s)),"refresh"==n){for(var i=0,d=(n=e.nodeChildren(s,t))?n.length:0;i<d;i++)e.removeNodeCache(s,n[i]);e.removeSelectedNode(s),e.nodeChildren(s,t,[]),a?this.setting.treeObj.empty():l(t,g.id.UL,s).empty()}j.asyncNode(this.setting,a?null:t,!!o,r)}},refresh:function(){this.setting.treeObj.empty();var t=e.getRoot(s),n=e.nodeChildren(s,t);e.initRoot(s),e.nodeChildren(s,t,n),e.initCache(s),j.createNodes(s,0,e.nodeChildren(s,t),null,-1)},removeChildNodes:function(t){if(!t)return null;var n=e.nodeChildren(s,t);return j.removeChildNodes(s,t),n||null},removeNode:function(e,t){e&&((t=!!t)&&0==h.apply(s.callback.beforeRemove,[s.treeId,e],!0)||(j.removeNode(s,e),t&&this.setting.treeObj.trigger(g.event.REMOVE,[s.treeId,e])))},selectNode:function(t,e,n){if(t&&h.uCanDo(s)){if(e=s.view.selectedMulti&&e,t.parentTId)j.expandCollapseParentNode(s,t.getParentNode(),!0,!1,function(){if(!n){var e=l(t,s).get(0);j.scrollIntoView(s,e)}});else if(!n)try{l(t,s).focus().blur()}catch(e){}j.selectNode(s,t,e)}},transformTozTreeNodes:function(t){return e.transformTozTreeFormat(s,t)},transformToArray:function(t){return e.transformToArrayFormat(s,t)},updateNode:function(e){e&&l(e,s).get(0)&&h.uCanDo(s)&&(j.setNodeName(s,e),j.setNodeTarget(s,e),j.setNodeUrl(s,e),j.setNodeLineIcos(s,e),j.setNodeFontCss(s,e))}};return o.treeTools=d,e.setZTreeTools(s,d),(i=e.nodeChildren(s,o))&&0<i.length?j.createNodes(s,0,i,null,-1):s.async.enable&&s.async.url&&""!==s.async.url&&j.asyncNode(s),d}};var Q=r.fn.zTree,l=h.$,g=Q.consts}(jQuery),function(e){var d,l,s,t={event:{CHECK:"ztree_check"},id:{CHECK:"_check"},checkbox:{STYLE:"checkbox",DEFAULT:"chk",DISABLED:"disable",FALSE:"false",TRUE:"true",FULL:"full",PART:"part",FOCUS:"focus"},radio:{STYLE:"radio",TYPE_ALL:"all",TYPE_LEVEL:"level"}},n={check:{enable:!1,autoCheckTrigger:!1,chkStyle:t.checkbox.STYLE,nocheckInherit:!1,chkDisabledInherit:!1,radioType:t.radio.TYPE_LEVEL,chkboxType:{Y:"ps",N:"ps"}},data:{key:{checked:"checked"}},callback:{beforeCheck:null,onCheck:null}};d=function(e,t){if(!0===t.chkDisabled)return!1;var n=h.getSetting(e.data.treeId);if(0==c.apply(n.callback.beforeCheck,[n.treeId,t],!0))return!0;var o=h.nodeChecked(n,t);return h.nodeChecked(n,t,!o),p.checkNodeRelation(n,t),o=g(t,u.id.CHECK,n),p.setChkClass(n,o,t),p.repairParentChkClassWithSelf(n,t),n.treeObj.trigger(u.event.CHECK,[e,n.treeId,t]),!0},l=function(e,t){if(!0===t.chkDisabled)return!1;var n=h.getSetting(e.data.treeId),o=g(t,u.id.CHECK,n);return t.check_Focus=!0,p.setChkClass(n,o,t),!0},s=function(e,t){if(!0===t.chkDisabled)return!1;var n=h.getSetting(e.data.treeId),o=g(t,u.id.CHECK,n);return t.check_Focus=!1,p.setChkClass(n,o,t),!0},e.extend(!0,e.fn.zTree.consts,t),e.extend(!0,e.fn.zTree._z,{tools:{},view:{checkNodeRelation:function(e,t){var n,o,r;if(o=u.radio,n=h.nodeChecked(e,t),e.check.chkStyle==o.STYLE){var a=h.getRadioCheckedList(e);if(n)if(e.check.radioType==o.TYPE_ALL){for(o=a.length-1;0<=o;o--){n=a[o];var i=h.nodeChecked(e,n);i&&n!=t&&(h.nodeChecked(e,n,!1),a.splice(o,1),p.setChkClass(e,g(n,u.id.CHECK,e),n),n.parentTId!=t.parentTId&&p.repairParentChkClassWithSelf(e,n))}a.push(t)}else for(a=t.parentTId?t.getParentNode():h.getRoot(e),o=0,r=(a=h.nodeChildren(e,a)).length;o<r;o++)n=a[o],(i=h.nodeChecked(e,n))&&n!=t&&(h.nodeChecked(e,n,!1),p.setChkClass(e,g(n,u.id.CHECK,e),n));else if(e.check.radioType==o.TYPE_ALL)for(o=0,r=a.length;o<r;o++)if(t==a[o]){a.splice(o,1);break}}else a=h.nodeChildren(e,t),n&&(!a||0==a.length||-1<e.check.chkboxType.Y.indexOf("s"))&&p.setSonNodeCheckBox(e,t,!0),n||a&&0!=a.length&&!(-1<e.check.chkboxType.N.indexOf("s"))||p.setSonNodeCheckBox(e,t,!1),n&&-1<e.check.chkboxType.Y.indexOf("p")&&p.setParentNodeCheckBox(e,t,!0),!n&&-1<e.check.chkboxType.N.indexOf("p")&&p.setParentNodeCheckBox(e,t,!1)},makeChkClass:function(e,t){var n=u.checkbox,o=u.radio,r=h.nodeChecked(e,t),a=!0===t.chkDisabled?n.DISABLED:t.halfCheck?n.PART:e.check.chkStyle==o.STYLE?t.check_Child_State<1?n.FULL:n.PART:r?2===t.check_Child_State||-1===t.check_Child_State?n.FULL:n.PART:t.check_Child_State<1?n.FULL:n.PART;return o=e.check.chkStyle+"_"+(r?n.TRUE:n.FALSE)+"_"+a,o=t.check_Focus&&!0!==t.chkDisabled?o+"_"+n.FOCUS:o,u.className.BUTTON+" "+n.DEFAULT+" "+o},repairAllChk:function(e,t){if(e.check.enable&&e.check.chkStyle===u.checkbox.STYLE)for(var n=h.getRoot(e),o=0,r=(n=h.nodeChildren(e,n)).length;o<r;o++){var a=n[o];!0!==a.nocheck&&!0!==a.chkDisabled&&h.nodeChecked(e,a,t),p.setSonNodeCheckBox(e,a,t)}},repairChkClass:function(e,t){if(t&&(h.makeChkFlag(e,t),!0!==t.nocheck)){var n=g(t,u.id.CHECK,e);p.setChkClass(e,n,t)}},repairParentChkClass:function(e,t){if(t&&t.parentTId){var n=t.getParentNode();p.repairChkClass(e,n),p.repairParentChkClass(e,n)}},repairParentChkClassWithSelf:function(e,t){if(t){var n=h.nodeChildren(e,t);n&&0<n.length?p.repairParentChkClass(e,n[0]):p.repairParentChkClass(e,t)}},repairSonChkDisabled:function(e,t,n,o){if(t&&(t.chkDisabled!=n&&(t.chkDisabled=n),p.repairChkClass(e,t),(t=h.nodeChildren(e,t))&&o))for(var r=0,a=t.length;r<a;r++)p.repairSonChkDisabled(e,t[r],n,o)},repairParentChkDisabled:function(e,t,n,o){t&&(t.chkDisabled!=n&&o&&(t.chkDisabled=n),p.repairChkClass(e,t),p.repairParentChkDisabled(e,t.getParentNode(),n,o))},setChkClass:function(e,t,n){t&&(!0===n.nocheck?t.hide():t.show(),t.attr("class",p.makeChkClass(e,n)))},setParentNodeCheckBox:function(e,t,n,o){var r=g(t,u.id.CHECK,e);if(o=o||t,h.makeChkFlag(e,t),!0!==t.nocheck&&!0!==t.chkDisabled&&(h.nodeChecked(e,t,n),p.setChkClass(e,r,t),e.check.autoCheckTrigger&&t!=o&&e.treeObj.trigger(u.event.CHECK,[null,e.treeId,t])),t.parentTId){if(r=!0,!n)for(var a=h.nodeChildren(e,t.getParentNode()),i=0,d=a.length;i<d;i++){var l=a[i],s=h.nodeChecked(e,l);if(!0!==l.nocheck&&!0!==l.chkDisabled&&s||(!0===l.nocheck||!0===l.chkDisabled)&&0<l.check_Child_State){r=!1;break}}r&&p.setParentNodeCheckBox(e,t.getParentNode(),n,o)}},setSonNodeCheckBox:function(e,t,n,o){if(t){var r=g(t,u.id.CHECK,e);o=o||t;var a=!1,i=h.nodeChildren(e,t);if(i)for(var d=0,l=i.length;d<l;d++){var s=i[d];p.setSonNodeCheckBox(e,s,n,o),!0===s.chkDisabled&&(a=!0)}t!=h.getRoot(e)&&!0!==t.chkDisabled&&(a&&!0!==t.nocheck&&h.makeChkFlag(e,t),!0!==t.nocheck&&!0!==t.chkDisabled?(h.nodeChecked(e,t,n),a||(t.check_Child_State=i&&0<i.length?n?2:0:-1)):t.check_Child_State=-1,p.setChkClass(e,r,t),e.check.autoCheckTrigger&&t!=o&&!0!==t.nocheck&&!0!==t.chkDisabled&&e.treeObj.trigger(u.event.CHECK,[null,e.treeId,t]))}}},event:{},data:{getRadioCheckedList:function(e){for(var t=h.getRoot(e).radioCheckedList,n=0,o=t.length;n<o;n++)h.getNodeCache(e,t[n].tId)||(t.splice(n,1),n--,o--);return t},getCheckStatus:function(e,t){if(!e.check.enable||t.nocheck||t.chkDisabled)return null;var n=h.nodeChecked(e,t);return{checked:n,half:t.halfCheck?t.halfCheck:e.check.chkStyle==u.radio.STYLE?2===t.check_Child_State:n?-1<t.check_Child_State&&t.check_Child_State<2:0<t.check_Child_State}},getTreeCheckedNodes:function(e,t,n,o){if(!t)return[];for(var r=n&&e.check.chkStyle==u.radio.STYLE&&e.check.radioType==u.radio.TYPE_ALL,a=(o=o||[],0),i=t.length;a<i;a++){var d=t[a],l=h.nodeChildren(e,d),s=h.nodeChecked(e,d);if(!0!==d.nocheck&&!0!==d.chkDisabled&&s==n&&(o.push(d),r))break;if(h.getTreeCheckedNodes(e,l,n,o),r&&0<o.length)break}return o},getTreeChangeCheckedNodes:function(e,t,n){if(!t)return[];n=n||[];for(var o=0,r=t.length;o<r;o++){var a=t[o],i=h.nodeChildren(e,a),d=h.nodeChecked(e,a);!0!==a.nocheck&&!0!==a.chkDisabled&&d!=a.checkedOld&&n.push(a),h.getTreeChangeCheckedNodes(e,i,n)}return n},makeChkFlag:function(e,t){if(t){var n=-1,o=h.nodeChildren(e,t);if(o)for(var r=0,a=o.length;r<a;r++){var i=o[r],d=h.nodeChecked(e,i),l=-1;if(e.check.chkStyle==u.radio.STYLE){if(2==(l=!0===i.nocheck||!0===i.chkDisabled?i.check_Child_State:!0===i.halfCheck||d||0<i.check_Child_State?2:0)){n=2;break}0==l&&(n=0)}else if(e.check.chkStyle==u.checkbox.STYLE){if(1===(l=!0===i.nocheck||!0===i.chkDisabled?i.check_Child_State:!0===i.halfCheck?1:d?-1===i.check_Child_State||2===i.check_Child_State?2:1:0<i.check_Child_State?1:0)){n=1;break}if(2===l&&-1<n&&0<r&&l!==n){n=1;break}if(2===n&&-1<l&&l<2){n=1;break}-1<l&&(n=l)}}t.check_Child_State=n}}}});var c=(e=e.fn.zTree)._z.tools,u=e.consts,p=e._z.view,h=e._z.data,g=c.$;h.nodeChecked=function(e,t,n){return!!t&&(e=e.data.key.checked,void 0!==n&&("string"==typeof n&&(n=c.eqs(n,"true")),t[e]=!!n),t[e])},h.exSetting(n),h.addInitBind(function(r){r.treeObj.bind(u.event.CHECK,function(e,t,n,o){e.srcEvent=t,c.apply(r.callback.onCheck,[e,n,o])})}),h.addInitUnBind(function(e){e.treeObj.unbind(u.event.CHECK)}),h.addInitCache(function(){}),h.addInitNode(function(e,t,n,o){n&&(t=h.nodeChecked(e,n),t=h.nodeChecked(e,n,t),n.checkedOld=t,"string"==typeof n.nocheck&&(n.nocheck=c.eqs(n.nocheck,"true")),n.nocheck=!!n.nocheck||e.check.nocheckInherit&&o&&!!o.nocheck,"string"==typeof n.chkDisabled&&(n.chkDisabled=c.eqs(n.chkDisabled,"true")),n.chkDisabled=!!n.chkDisabled||e.check.chkDisabledInherit&&o&&!!o.chkDisabled,"string"==typeof n.halfCheck&&(n.halfCheck=c.eqs(n.halfCheck,"true")),n.halfCheck=!!n.halfCheck,n.check_Child_State=-1,n.check_Focus=!1,n.getCheckStatus=function(){return h.getCheckStatus(e,n)},e.check.chkStyle==u.radio.STYLE&&e.check.radioType==u.radio.TYPE_ALL&&t&&h.getRoot(e).radioCheckedList.push(n))}),h.addInitProxy(function(e){var t=e.target,n=h.getSetting(e.data.treeId),o="",r=null,a="",i=null;if(c.eqs(e.type,"mouseover")?n.check.enable&&c.eqs(t.tagName,"span")&&null!==t.getAttribute("treeNode"+u.id.CHECK)&&(o=c.getNodeMainDom(t).id,a="mouseoverCheck"):c.eqs(e.type,"mouseout")?n.check.enable&&c.eqs(t.tagName,"span")&&null!==t.getAttribute("treeNode"+u.id.CHECK)&&(o=c.getNodeMainDom(t).id,a="mouseoutCheck"):c.eqs(e.type,"click")&&n.check.enable&&c.eqs(t.tagName,"span")&&null!==t.getAttribute("treeNode"+u.id.CHECK)&&(o=c.getNodeMainDom(t).id,a="checkNode"),0<o.length)switch(r=h.getNodeCache(n,o),a){case"checkNode":i=d;break;case"mouseoverCheck":i=l;break;case"mouseoutCheck":i=s}return{stop:"checkNode"===a,node:r,nodeEventType:a,nodeEventCallback:i,treeEventType:"",treeEventCallback:null}},!0),h.addInitRoot(function(e){h.getRoot(e).radioCheckedList=[]}),h.addBeforeA(function(e,t,n){e.check.enable&&(h.makeChkFlag(e,t),n.push("<span ID='",t.tId,u.id.CHECK,"' class='",p.makeChkClass(e,t),"' treeNode",u.id.CHECK,!0===t.nocheck?" style='display:none;'":"","></span>"))}),h.addZTreeTools(function(a,o){o.checkNode=function(e,t,n,o){var r=h.nodeChecked(a,e);!0===e.chkDisabled||(!0!==t&&!1!==t&&(t=!r),o=!!o,r===t&&!n||o&&0==c.apply(this.setting.callback.beforeCheck,[this.setting.treeId,e],!0)||!c.uCanDo(this.setting)||!this.setting.check.enable||!0===e.nocheck)||(h.nodeChecked(a,e,t),t=g(e,u.id.CHECK,this.setting),!n&&this.setting.check.chkStyle!==u.radio.STYLE||p.checkNodeRelation(this.setting,e),p.setChkClass(this.setting,t,e),p.repairParentChkClassWithSelf(this.setting,e),o&&this.setting.treeObj.trigger(u.event.CHECK,[null,this.setting.treeId,e]))},o.checkAllNodes=function(e){p.repairAllChk(this.setting,!!e)},o.getCheckedNodes=function(e){e=!1!==e;var t=h.nodeChildren(a,h.getRoot(this.setting));return h.getTreeCheckedNodes(this.setting,t,e)},o.getChangeCheckedNodes=function(){var e=h.nodeChildren(a,h.getRoot(this.setting));return h.getTreeChangeCheckedNodes(this.setting,e)},o.setChkDisabled=function(e,t,n,o){t=!!t,n=!!n,p.repairSonChkDisabled(this.setting,e,t,!!o),p.repairParentChkDisabled(this.setting,e.getParentNode(),t,n)};var r=o.updateNode;o.updateNode=function(e,t){if(r&&r.apply(o,arguments),e&&this.setting.check.enable&&g(e,this.setting).get(0)&&c.uCanDo(this.setting)){var n=g(e,u.id.CHECK,this.setting);1!=t&&this.setting.check.chkStyle!==u.radio.STYLE||p.checkNodeRelation(this.setting,e),p.setChkClass(this.setting,n,e),p.repairParentChkClassWithSelf(this.setting,e)}}});var a=p.createNodes;p.createNodes=function(e,t,n,o,r){a&&a.apply(p,arguments),n&&p.repairParentChkClassWithSelf(e,o)};var o=p.removeNode;p.removeNode=function(e,t){var n=t.getParentNode();o&&o.apply(p,arguments),t&&n&&(p.repairChkClass(e,n),p.repairParentChkClass(e,n))};var f=p.appendNodes;p.appendNodes=function(e,t,n,o,r,a,i){var d="";return f&&(d=f.apply(p,arguments)),o&&h.makeChkFlag(e,o),d}}(jQuery),function(F){var H={event:{DRAG:"ztree_drag",DROP:"ztree_drop",RENAME:"ztree_rename",DRAGMOVE:"ztree_dragmove"},id:{EDIT:"_edit",INPUT:"_input",REMOVE:"_remove"},move:{TYPE_INNER:"inner",TYPE_PREV:"prev",TYPE_NEXT:"next"},node:{CURSELECTED_EDIT:"curSelectedNode_Edit",TMPTARGET_TREE:"tmpTargetzTree",TMPTARGET_NODE:"tmpTargetNode"}},s={onHoverOverNode:function(e,t){var n=K.getSetting(e.data.treeId),o=K.getRoot(n);o.curHoverNode!=t&&s.onHoverOutNode(e),o.curHoverNode=t,Y.addHoverDom(n,t)},onHoverOutNode:function(e){e=K.getSetting(e.data.treeId);var t=K.getRoot(e);t.curHoverNode&&!K.isSelectedNode(e,t.curHoverNode)&&(Y.removeTreeDom(e,t.curHoverNode),t.curHoverNode=null)},onMousedownNode:function(e,t){function d(e){if(0==b.dragFlag&&Math.abs(z-e.clientX)<k.edit.drag.minMoveSize&&Math.abs(A-e.clientY)<k.edit.drag.minMoveSize)return!0;var t,n,o,r;if(P.css("cursor","pointer"),0==b.dragFlag){if(0==B.apply(k.callback.beforeDrag,[k.treeId,y],!0))return C(e),!0;for(t=0,n=y.length;t<n;t++)0==t&&(b.dragNodeShowBefore=[]),o=y[t],K.nodeIsParent(k,o)&&o.open?(Y.expandCollapseNode(k,o,!o.open),b.dragNodeShowBefore[o.tId]=!0):b.dragNodeShowBefore[o.tId]=!1;b.dragFlag=1,m.showHoverDom=!1,B.showIfameMask(k,!0),r=!0;var a=-1;if(1<y.length)for(o=[],n=(c=y[t=0].parentTId?K.nodeChildren(k,y[0].getParentNode()):K.getNodes(k)).length;t<n;t++)if(void 0!==b.dragNodeShowBefore[c[t].tId]&&(r&&-1<a&&a+1!==t&&(r=!1),o.push(c[t]),a=t),y.length===o.length){y=o;break}for(r&&(x=y[0].getPreNode(),S=y[y.length-1].getNextNode()),T=V("<ul class='zTreeDragUL'></ul>",k),t=0,n=y.length;t<n;t++)(o=y[t]).editNameFlag=!1,Y.selectNode(k,o,0<t),Y.removeTreeDom(k,o),t>k.edit.drag.maxShowNodeNum-1||((r=V("<li id='"+o.tId+"_tmp'></li>",k)).append(V(o,U.id.A,k).clone()),r.css("padding","0"),r.children("#"+o.tId+U.id.A).removeClass(U.node.CURSELECTED),T.append(r),t==k.edit.drag.maxShowNodeNum-1&&(r=V("<li id='"+o.tId+"_moretmp'><a> ... </a></li>",k),T.append(r)));T.attr("id",y[0].tId+U.id.UL+"_tmp"),T.addClass(k.treeObj.attr("class")),T.appendTo(P),(E=V("<span class='tmpzTreeMove_arrow'></span>",k)).attr("id","zTreeMove_arrow_tmp"),E.appendTo(P),k.treeObj.trigger(U.event.DRAG,[e,k.treeId,y])}if(1==b.dragFlag){for(var i in I&&E.attr("id")==e.target.id&&R&&e.clientX+_.scrollLeft()+2>F("#"+R+U.id.A,I).offset().left?(o=F("#"+R+U.id.A,I),e.target=0<o.length?o.get(0):e.target):I&&(I.removeClass(U.node.TMPTARGET_TREE),R&&F("#"+R+U.id.A,I).removeClass(U.node.TMPTARGET_NODE+"_"+U.move.TYPE_PREV).removeClass(U.node.TMPTARGET_NODE+"_"+H.move.TYPE_NEXT).removeClass(U.node.TMPTARGET_NODE+"_"+H.move.TYPE_INNER)),R=I=null,L=!1,O=k,o=K.getSettings())o[i].treeId&&o[i].edit.enable&&o[i].treeId!=k.treeId&&(e.target.id==o[i].treeId||0<F(e.target).parents("#"+o[i].treeId).length)&&(L=!0,O=o[i]);i=_.scrollTop(),r=_.scrollLeft(),a=O.treeObj.offset(),t=O.treeObj.get(0).scrollHeight,o=O.treeObj.get(0).scrollWidth,n=e.clientY+i-a.top;var d=O.treeObj.height()+a.top-e.clientY-i,l=e.clientX+r-a.left,s=O.treeObj.width()+a.left-e.clientX-r,c=(a=n<k.edit.drag.borderMax&&n>k.edit.drag.borderMin,d<k.edit.drag.borderMax&&d>k.edit.drag.borderMin),u=l<k.edit.drag.borderMax&&l>k.edit.drag.borderMin,p=s<k.edit.drag.borderMax&&s>k.edit.drag.borderMin,h=(d=n>k.edit.drag.borderMin&&d>k.edit.drag.borderMin&&l>k.edit.drag.borderMin&&s>k.edit.drag.borderMin,l=a&&O.treeObj.scrollTop()<=0,s=c&&O.treeObj.scrollTop()+O.treeObj.height()+10>=t,u&&O.treeObj.scrollLeft()<=0),g=p&&O.treeObj.scrollLeft()+O.treeObj.width()+10>=o;if(e.target&&B.isChildOrSelf(e.target,O.treeId)){for(var f=e.target;f&&f.tagName&&!B.eqs(f.tagName,"li")&&f.id!=O.treeId;)f=f.parentNode;var N=!0;for(t=0,n=y.length;t<n;t++){if(o=y[t],f.id===o.tId){N=!1;break}if(0<V(o,k).find("#"+f.id).length){N=!1;break}}N&&e.target&&B.isChildOrSelf(e.target,f.id+U.id.A)&&(I=F(f),R=f.id)}if(o=y[0],d&&B.isChildOrSelf(e.target,O.treeId)&&(!I&&(e.target.id==O.treeId||l||s||h||g)&&(L||!L&&o.parentTId)&&(I=O.treeObj),a?O.treeObj.scrollTop(O.treeObj.scrollTop()-10):c&&O.treeObj.scrollTop(O.treeObj.scrollTop()+10),u?O.treeObj.scrollLeft(O.treeObj.scrollLeft()-10):p&&O.treeObj.scrollLeft(O.treeObj.scrollLeft()+10),I&&I!=O.treeObj&&I.offset().left<O.treeObj.offset().left&&O.treeObj.scrollLeft(O.treeObj.scrollLeft()+I.offset().left-O.treeObj.offset().left)),T.css({top:e.clientY+i+3+"px",left:e.clientX+r+3+"px"}),t=r=0,I&&I.attr("id")!=O.treeId){var v=null==R?null:K.getNodeCache(O,R);a=(e.ctrlKey||e.metaKey)&&k.edit.drag.isMove&&k.edit.drag.isCopy||!k.edit.drag.isMove&&k.edit.drag.isCopy,n=!(!x||R!==x.tId),u=!(!S||R!==S.tId),c=o.parentTId&&o.parentTId==R,o=(a||!u)&&B.apply(O.edit.drag.prev,[O.treeId,y,v],!!O.edit.drag.prev),n=(a||!n)&&B.apply(O.edit.drag.next,[O.treeId,y,v],!!O.edit.drag.next),a=(a||!c)&&!(O.data.keep.leaf&&!K.nodeIsParent(k,v))&&B.apply(O.edit.drag.inner,[O.treeId,y,v],!!O.edit.drag.inner),c=function(){I=null,R="",j=U.move.TYPE_INNER,E.css({display:"none"}),window.zTreeMoveTimer&&(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null)},o||n||a?(u=F("#"+R+U.id.A,I),p=v.isLastNode?null:F("#"+v.getNextNode().tId+U.id.A,I.next()),d=u.offset().top,l=u.offset().left,s=o?a?.25:n?.5:1:-1,h=n?a?.75:o?.5:0:-1,i=(e.clientY+i-d)/u.height(),(1==s||i<=s&&-.2<=i)&&o?(r=1-E.width(),t=d-E.height()/2,j=U.move.TYPE_PREV):(0==h||h<=i&&i<=1.2)&&n?(r=1-E.width(),t=null==p||K.nodeIsParent(k,v)&&v.open?d+u.height()-E.height()/2:p.offset().top-E.height()/2,j=U.move.TYPE_NEXT):a?(r=5-E.width(),t=d,j=U.move.TYPE_INNER):c(),I&&(E.css({display:"block",top:t+"px",left:l+r+"px"}),u.addClass(U.node.TMPTARGET_NODE+"_"+j),w==R&&D==j||(M=(new Date).getTime()),v&&K.nodeIsParent(k,v)&&j==U.move.TYPE_INNER&&(i=!0,window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId!==v.tId?(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null):window.zTreeMoveTimer&&window.zTreeMoveTargetNodeTId===v.tId&&(i=!1),i)&&(window.zTreeMoveTimer=setTimeout(function(){j==U.move.TYPE_INNER&&v&&K.nodeIsParent(k,v)&&!v.open&&(new Date).getTime()-M>O.edit.drag.autoOpenTime&&B.apply(O.callback.beforeDragOpen,[O.treeId,v],!0)&&(Y.switchNode(O,v),O.edit.drag.autoExpandTrigger&&O.treeObj.trigger(U.event.EXPAND,[O.treeId,v]))},O.edit.drag.autoOpenTime+50),window.zTreeMoveTargetNodeTId=v.tId))):c()}else j=U.move.TYPE_INNER,I&&B.apply(O.edit.drag.inner,[O.treeId,y,null],!!O.edit.drag.inner)?I.addClass(U.node.TMPTARGET_TREE):I=null,E.css({display:"none"}),window.zTreeMoveTimer&&(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null);w=R,D=j,k.treeObj.trigger(U.event.DRAGMOVE,[e,k.treeId,y])}return!1}function C(n){if(window.zTreeMoveTimer&&(clearTimeout(window.zTreeMoveTimer),window.zTreeMoveTargetNodeTId=null),D=w=null,_.unbind("mousemove",d),_.unbind("mouseup",C),_.unbind("selectstart",l),P.css("cursor",""),I&&(I.removeClass(U.node.TMPTARGET_TREE),R&&F("#"+R+U.id.A,I).removeClass(U.node.TMPTARGET_NODE+"_"+U.move.TYPE_PREV).removeClass(U.node.TMPTARGET_NODE+"_"+H.move.TYPE_NEXT).removeClass(U.node.TMPTARGET_NODE+"_"+H.move.TYPE_INNER)),B.showIfameMask(k,!1),m.showHoverDom=!0,0!=b.dragFlag){var e,t,o;for(e=b.dragFlag=0,t=y.length;e<t;e++)o=y[e],K.nodeIsParent(k,o)&&b.dragNodeShowBefore[o.tId]&&!o.open&&(Y.expandCollapseNode(k,o,!o.open),delete b.dragNodeShowBefore[o.tId]);T&&T.remove(),E&&E.remove();var r=(n.ctrlKey||n.metaKey)&&k.edit.drag.isMove&&k.edit.drag.isCopy||!k.edit.drag.isMove&&k.edit.drag.isCopy;if(!r&&I&&R&&y[0].parentTId&&R==y[0].parentTId&&j==U.move.TYPE_INNER&&(I=null),I){var a=null==R?null:K.getNodeCache(O,R);if(0==B.apply(k.callback.beforeDrop,[O.treeId,y,a,j,r],!0))Y.selectNodes(s,y);else{var i=r?B.clone(y):y;e=function(){if(L){if(!r)for(var e=0,t=y.length;e<t;e++)Y.removeNode(k,y[e]);j==U.move.TYPE_INNER?Y.addNodes(O,a,-1,i):Y.addNodes(O,a.getParentNode(),j==U.move.TYPE_PREV?a.getIndex():a.getIndex()+1,i)}else if(r&&j==U.move.TYPE_INNER)Y.addNodes(O,a,-1,i);else if(r)Y.addNodes(O,a.getParentNode(),j==U.move.TYPE_PREV?a.getIndex():a.getIndex()+1,i);else if(j!=U.move.TYPE_NEXT)for(e=0,t=i.length;e<t;e++)Y.moveNode(O,a,i[e],j,!1);else for(e=-1,t=i.length-1;e<t;t--)Y.moveNode(O,a,i[t],j,!1);Y.selectNodes(O,i),e=V(i[0],k).get(0),Y.scrollIntoView(k,e),k.treeObj.trigger(U.event.DROP,[n,O.treeId,i,a,j,r])},j==U.move.TYPE_INNER&&B.canAsync(O,a)?Y.asyncNode(O,a,!1,e):e()}}else Y.selectNodes(s,y),k.treeObj.trigger(U.event.DROP,[n,k.treeId,y,null,null,null])}}function l(){return!1}var n,o,k=K.getSetting(e.data.treeId),b=K.getRoot(k),m=K.getRoots();if(2==e.button||!k.edit.enable||!k.edit.drag.isCopy&&!k.edit.drag.isMove)return!0;var r=e.target,a=K.getRoot(k).curSelectedList,y=[];if(K.isSelectedNode(k,t))for(n=0,o=a.length;n<o;n++){if(a[n].editNameFlag&&B.eqs(r.tagName,"input")&&null!==r.getAttribute("treeNode"+U.id.INPUT))return!0;if(y.push(a[n]),y[0].parentTId!==a[n].parentTId){y=[t];break}}else y=[t];Y.editNodeBlur=!0,Y.cancelCurEditNode(k);var T,E,I,x,S,_=F(k.treeObj.get(0).ownerDocument),P=F(k.treeObj.get(0).ownerDocument.body),L=!1,O=k,s=k,w=null,D=null,R=null,j=U.move.TYPE_INNER,z=e.clientX,A=e.clientY,M=(new Date).getTime();return B.uCanDo(k)&&_.bind("mousemove",d),_.bind("mouseup",C),_.bind("selectstart",l),!0}};F.extend(!0,F.fn.zTree.consts,H),F.extend(!0,F.fn.zTree._z,{tools:{getAbs:function(e){return[(e=e.getBoundingClientRect()).left+(document.body.scrollLeft+document.documentElement.scrollLeft),e.top+(document.body.scrollTop+document.documentElement.scrollTop)]},inputFocus:function(e){e.get(0)&&(e.focus(),B.setCursorPosition(e.get(0),e.val().length))},inputSelect:function(e){e.get(0)&&(e.focus(),e.select())},setCursorPosition:function(e,t){if(e.setSelectionRange)e.focus(),e.setSelectionRange(t,t);else if(e.createTextRange){var n=e.createTextRange();n.collapse(!0),n.moveEnd("character",t),n.moveStart("character",t),n.select()}},showIfameMask:function(e,t){for(var n=K.getRoot(e);0<n.dragMaskList.length;)n.dragMaskList[0].remove(),n.dragMaskList.shift();if(t)for(var o=V("iframe",e),r=0,a=o.length;r<a;r++){var i=o.get(r),d=B.getAbs(i);(i=V("<div id='zTreeMask_"+r+"' class='zTreeMask' style='top:"+d[1]+"px; left:"+d[0]+"px; width:"+i.offsetWidth+"px; height:"+i.offsetHeight+"px;'></div>",e)).appendTo(V("body",e)),n.dragMaskList.push(i)}}},view:{addEditBtn:function(e,t){if(!(t.editNameFlag||0<V(t,U.id.EDIT,e).length)&&B.apply(e.edit.showRenameBtn,[e.treeId,t],e.edit.showRenameBtn)){var n=V(t,U.id.A,e),o="<span class='"+U.className.BUTTON+" edit' id='"+t.tId+U.id.EDIT+"' title='"+B.apply(e.edit.renameTitle,[e.treeId,t],e.edit.renameTitle)+"' treeNode"+U.id.EDIT+" style='display:none;'></span>";n.append(o),V(t,U.id.EDIT,e).bind("click",function(){return B.uCanDo(e)&&0!=B.apply(e.callback.beforeEditName,[e.treeId,t],!0)&&Y.editNode(e,t),!1}).show()}},addRemoveBtn:function(e,t){if(!(t.editNameFlag||0<V(t,U.id.REMOVE,e).length)&&B.apply(e.edit.showRemoveBtn,[e.treeId,t],e.edit.showRemoveBtn)){var n=V(t,U.id.A,e),o="<span class='"+U.className.BUTTON+" remove' id='"+t.tId+U.id.REMOVE+"' title='"+B.apply(e.edit.removeTitle,[e.treeId,t],e.edit.removeTitle)+"' treeNode"+U.id.REMOVE+" style='display:none;'></span>";n.append(o),V(t,U.id.REMOVE,e).bind("click",function(){return B.uCanDo(e)&&0!=B.apply(e.callback.beforeRemove,[e.treeId,t],!0)&&(Y.removeNode(e,t),e.treeObj.trigger(U.event.REMOVE,[e.treeId,t])),!1}).bind("mousedown",function(){return!0}).show()}},addHoverDom:function(e,t){K.getRoots().showHoverDom&&(t.isHover=!0,e.edit.enable&&(Y.addEditBtn(e,t),Y.addRemoveBtn(e,t)),B.apply(e.view.addHoverDom,[e.treeId,t]))},cancelCurEditNode:function(e,t,n){var o=K.getRoot(e),r=o.curEditNode;if(r){var a=o.curEditInput;if(t=t||(n?K.nodeName(e,r):a.val()),!1===B.apply(e.callback.beforeRename,[e.treeId,r,t,n],!0))return!1;K.nodeName(e,r,t),V(r,U.id.A,e).removeClass(U.node.CURSELECTED_EDIT),a.unbind(),Y.setNodeName(e,r),r.editNameFlag=!1,o.curEditNode=null,o.curEditInput=null,Y.selectNode(e,r,!1),e.treeObj.trigger(U.event.RENAME,[e.treeId,r,n])}return o.noSelection=!0},editNode:function(t,e){var n=K.getRoot(t);if(Y.editNodeBlur=!1,K.isSelectedNode(t,e)&&n.curEditNode==e&&e.editNameFlag)setTimeout(function(){B.inputFocus(n.curEditInput)},0);else{e.editNameFlag=!0,Y.removeTreeDom(t,e),Y.cancelCurEditNode(t),Y.selectNode(t,e,!1),V(e,U.id.SPAN,t).html("<input type=text class='rename' id='"+e.tId+U.id.INPUT+"' treeNode"+U.id.INPUT+" >");var o=V(e,U.id.INPUT,t);o.attr("value",K.nodeName(t,e)),t.edit.editNameSelectAll?B.inputSelect(o):B.inputFocus(o),o.bind("blur",function(){Y.editNodeBlur||Y.cancelCurEditNode(t)}).bind("keydown",function(e){"13"==e.keyCode?(Y.editNodeBlur=!0,Y.cancelCurEditNode(t)):"27"==e.keyCode&&Y.cancelCurEditNode(t,null,!0)}).bind("click",function(){return!1}).bind("dblclick",function(){return!1}),V(e,U.id.A,t).addClass(U.node.CURSELECTED_EDIT),n.curEditInput=o,n.noSelection=!1,n.curEditNode=e}},moveNode:function(e,t,n,o,r,a){var i=K.getRoot(e);if(t!=n&&(!e.data.keep.leaf||!t||K.nodeIsParent(e,t)||o!=U.move.TYPE_INNER)){var d,l,s=n.parentTId?n.getParentNode():i;(p=null===t||t==i)&&null===t&&(t=i),p&&(o=U.move.TYPE_INNER),i=t.parentTId?t.getParentNode():i,o!=U.move.TYPE_PREV&&o!=U.move.TYPE_NEXT&&(o=U.move.TYPE_INNER),o==U.move.TYPE_INNER&&(p?n.parentTId=null:(K.nodeIsParent(e,t)||(K.nodeIsParent(e,t,!0),t.open=!!t.open,Y.setNodeLineIcos(e,t)),n.parentTId=t.tId)),d=p?p=e.treeObj:(a||o!=U.move.TYPE_INNER?a||Y.expandCollapseNode(e,t.getParentNode(),!0,!1):Y.expandCollapseNode(e,t,!0,!1),p=V(t,e),d=V(t,U.id.UL,e),p.get(0)&&!d.get(0)&&(d=[],Y.makeUlHtml(e,t,d,""),p.append(d.join(""))),V(t,U.id.UL,e)),(c=V(n,e)).get(0)?p.get(0)||c.remove():c=Y.appendNodes(e,n.level,[n],null,-1,!1,!0).join(""),d.get(0)&&o==U.move.TYPE_INNER?d.append(c):p.get(0)&&o==U.move.TYPE_PREV?p.before(c):p.get(0)&&o==U.move.TYPE_NEXT&&p.after(c),d=-1;var c=0,u=null,p=null,h=n.level,g=K.nodeChildren(e,s),f=K.nodeChildren(e,i),N=K.nodeChildren(e,t);if(n.isFirstNode)d=0,1<g.length&&((u=g[1]).isFirstNode=!0);else if(n.isLastNode)(u=g[(d=g.length-1)-1]).isLastNode=!0;else for(i=0,l=g.length;i<l;i++)if(g[i].tId==n.tId){d=i;break}if(0<=d&&g.splice(d,1),o!=U.move.TYPE_INNER)for(i=0,l=f.length;i<l;i++)f[i].tId==t.tId&&(c=i);o==U.move.TYPE_INNER?(0<(N=N||K.nodeChildren(e,t,[])).length&&((p=N[N.length-1]).isLastNode=!1),N.splice(N.length,0,n),n.isLastNode=!0,n.isFirstNode=1==N.length):t.isFirstNode&&o==U.move.TYPE_PREV?(f.splice(c,0,n),(p=t).isFirstNode=!1,n.parentTId=t.parentTId,n.isFirstNode=!0,n.isLastNode=!1):t.isLastNode&&o==U.move.TYPE_NEXT?(f.splice(c+1,0,n),(p=t).isLastNode=!1,n.parentTId=t.parentTId,n.isFirstNode=!1,n.isLastNode=!0):(o==U.move.TYPE_PREV?f.splice(c,0,n):f.splice(c+1,0,n),n.parentTId=t.parentTId,n.isFirstNode=!1,n.isLastNode=!1),K.fixPIdKeyValue(e,n),K.setSonNodeLevel(e,n.getParentNode(),n),Y.setNodeLineIcos(e,n),Y.repairNodeLevelClass(e,n,h),!e.data.keep.parent&&g.length<1?(K.nodeIsParent(e,s,!1),s.open=!1,t=V(s,U.id.UL,e),o=V(s,U.id.SWITCH,e),i=V(s,U.id.ICON,e),Y.replaceSwitchClass(s,o,U.folder.DOCU),Y.replaceIcoClass(s,i,U.folder.DOCU),t.css("display","none")):u&&Y.setNodeLineIcos(e,u),p&&Y.setNodeLineIcos(e,p),e.check&&e.check.enable&&Y.repairChkClass&&(Y.repairChkClass(e,s),Y.repairParentChkClassWithSelf(e,s),s!=n.parent&&Y.repairParentChkClassWithSelf(e,n)),a||Y.expandCollapseParentNode(e,n.getParentNode(),!0,r)}},removeEditBtn:function(e,t){V(t,U.id.EDIT,e).unbind().remove()},removeRemoveBtn:function(e,t){V(t,U.id.REMOVE,e).unbind().remove()},removeTreeDom:function(e,t){t.isHover=!1,Y.removeEditBtn(e,t),Y.removeRemoveBtn(e,t),B.apply(e.view.removeHoverDom,[e.treeId,t])},repairNodeLevelClass:function(e,t,n){if(n!==t.level){var o=V(t,e),r=V(t,U.id.A,e);e=V(t,U.id.UL,e),n=U.className.LEVEL+n,t=U.className.LEVEL+t.level,o.removeClass(n),o.addClass(t),r.removeClass(n),r.addClass(t),e.removeClass(n),e.addClass(t)}},selectNodes:function(e,t){for(var n=0,o=t.length;n<o;n++)Y.selectNode(e,t[n],0<n)}},event:{},data:{setSonNodeLevel:function(e,t,n){if(n){var o=K.nodeChildren(e,n);if(n.level=t?t.level+1:0,o){t=0;for(var r=o.length;t<r;t++)o[t]&&K.setSonNodeLevel(e,n,o[t])}}}}});var e=F.fn.zTree,B=e._z.tools,U=e.consts,Y=e._z.view,K=e._z.data,V=B.$;K.exSetting({edit:{enable:!1,editNameSelectAll:!1,showRemoveBtn:!0,showRenameBtn:!0,removeTitle:"remove",renameTitle:"rename",drag:{autoExpandTrigger:!1,isCopy:!0,isMove:!0,prev:!0,next:!0,inner:!0,minMoveSize:5,borderMax:10,borderMin:-5,maxShowNodeNum:5,autoOpenTime:500}},view:{addHoverDom:null,removeHoverDom:null},callback:{beforeDrag:null,beforeDragOpen:null,beforeDrop:null,beforeEditName:null,beforeRename:null,onDrag:null,onDragMove:null,onDrop:null,onRename:null}}),K.addInitBind(function(d){var e=d.treeObj,t=U.event;e.bind(t.RENAME,function(e,t,n,o){B.apply(d.callback.onRename,[e,t,n,o])}),e.bind(t.DRAG,function(e,t,n,o){B.apply(d.callback.onDrag,[t,n,o])}),e.bind(t.DRAGMOVE,function(e,t,n,o){B.apply(d.callback.onDragMove,[t,n,o])}),e.bind(t.DROP,function(e,t,n,o,r,a,i){B.apply(d.callback.onDrop,[t,n,o,r,a,i])})}),K.addInitUnBind(function(e){e=e.treeObj;var t=U.event;e.unbind(t.RENAME),e.unbind(t.DRAG),e.unbind(t.DRAGMOVE),e.unbind(t.DROP)}),K.addInitCache(function(){}),K.addInitNode(function(e,t,n){n&&(n.isHover=!1,n.editNameFlag=!1)}),K.addInitProxy(function(e){var t=e.target,n=K.getSetting(e.data.treeId),o=e.relatedTarget,r="",a=null,i="",d=null,l=null;if(B.eqs(e.type,"mouseover")?(l=B.getMDom(n,t,[{tagName:"a",attrName:"treeNode"+U.id.A}]))&&(r=B.getNodeMainDom(l).id,i="hoverOverNode"):B.eqs(e.type,"mouseout")?(l=B.getMDom(n,o,[{tagName:"a",attrName:"treeNode"+U.id.A}]))||(r="remove",i="hoverOutNode"):B.eqs(e.type,"mousedown")&&(l=B.getMDom(n,t,[{tagName:"a",attrName:"treeNode"+U.id.A}]))&&(r=B.getNodeMainDom(l).id,i="mousedownNode"),0<r.length)switch(a=K.getNodeCache(n,r),i){case"mousedownNode":d=s.onMousedownNode;break;case"hoverOverNode":d=s.onHoverOverNode;break;case"hoverOutNode":d=s.onHoverOutNode}return{stop:!1,node:a,nodeEventType:i,nodeEventCallback:d,treeEventType:"",treeEventCallback:null}}),K.addInitRoot(function(e){e=K.getRoot(e);var t=K.getRoots();e.curEditNode=null,e.curEditInput=null,e.curHoverNode=null,e.dragFlag=0,e.dragNodeShowBefore=[],e.dragMaskList=[],t.showHoverDom=!0}),K.addZTreeTools(function(d,e){e.cancelEditName=function(e){K.getRoot(this.setting).curEditNode&&Y.cancelCurEditNode(this.setting,e||null,!0)},e.copyNode=function(e,t,n,o){if(!t)return null;var r=K.nodeIsParent(d,e);if(e&&!r&&this.setting.data.keep.leaf&&n===U.move.TYPE_INNER)return null;var a=this,i=B.clone(t);return e||(e=null,n=U.move.TYPE_INNER),n==U.move.TYPE_INNER?(t=function(){Y.addNodes(a.setting,e,-1,[i],o)},B.canAsync(this.setting,e)?Y.asyncNode(this.setting,e,o,t):t()):(Y.addNodes(this.setting,e.parentNode,-1,[i],o),Y.moveNode(this.setting,e,i,n,!1,o)),i},e.editName=function(e){e&&e.tId&&e===K.getNodeCache(this.setting,e.tId)&&(e.parentTId&&Y.expandCollapseParentNode(this.setting,e.getParentNode(),!0),Y.editNode(this.setting,e))},e.moveNode=function(e,t,n,o){function r(){Y.moveNode(i.setting,e,t,n,!1,o)}if(!t)return t;var a=K.nodeIsParent(d,e);if(e&&!a&&this.setting.data.keep.leaf&&n===U.move.TYPE_INNER)return null;if(e&&(t.parentTId==e.tId&&n==U.move.TYPE_INNER||0<V(t,this.setting).find("#"+e.tId).length))return null;e=e||null;var i=this;return B.canAsync(this.setting,e)&&n===U.move.TYPE_INNER?Y.asyncNode(this.setting,e,o,r):r(),t},e.setEditable=function(e){return this.setting.edit.enable=e,this.refresh()}});var a=Y.cancelPreSelectedNode;Y.cancelPreSelectedNode=function(e,t){for(var n=K.getRoot(e).curSelectedList,o=0,r=n.length;o<r&&(t&&t!==n[o]||(Y.removeTreeDom(e,n[o]),!t));o++);a&&a.apply(Y,arguments)};var i=Y.createNodes;Y.createNodes=function(e,t,n,o,r){i&&i.apply(Y,arguments),n&&Y.repairParentChkClassWithSelf&&Y.repairParentChkClassWithSelf(e,o)};var n=Y.makeNodeUrl;Y.makeNodeUrl=function(e,t){return e.edit.enable?null:n.apply(Y,arguments)};var o=Y.removeNode;Y.removeNode=function(e,t){var n=K.getRoot(e);n.curEditNode===t&&(n.curEditNode=null),o&&o.apply(Y,arguments)};var r=Y.selectNode;Y.selectNode=function(e,t,n){var o=K.getRoot(e);return!(K.isSelectedNode(e,t)&&o.curEditNode==t&&t.editNameFlag||(r&&r.apply(Y,arguments),Y.addHoverDom(e,t),0))};var d=B.uCanDo;B.uCanDo=function(e,t){var n=K.getRoot(e);return!(!t||!(B.eqs(t.type,"mouseover")||B.eqs(t.type,"mouseout")||B.eqs(t.type,"mousedown")||B.eqs(t.type,"mouseup")))||(n.curEditNode&&(Y.editNodeBlur=!1,n.curEditInput.focus()),!n.curEditNode&&(!d||d.apply(Y,arguments)))}}(jQuery),function(e){e.extend(!0,e.fn.zTree._z,{view:{clearOldFirstNode:function(e,t){for(var n=t.getNextNode();n;){if(n.isFirstNode){n.isFirstNode=!1,s.setNodeLineIcos(e,n);break}if(n.isLastNode)break;n=n.getNextNode()}},clearOldLastNode:function(e,t,n){for(t=t.getPreNode();t;){if(t.isLastNode){t.isLastNode=!1,n&&s.setNodeLineIcos(e,t);break}if(t.isFirstNode)break;t=t.getPreNode()}},makeDOMNodeMainBefore:function(e,t,n){t=c.isHidden(t,n),e.push("<li ",t?"style='display:none;' ":"","id='",n.tId,"' class='",r.className.LEVEL,n.level,"' tabindex='0' hidefocus='true' treenode>")},showNode:function(e,t){c.isHidden(e,t,!1),c.initShowForExCheck(e,t),a(t,e).show()},showNodes:function(e,t,n){if(t&&0!=t.length){var o,r,a={};for(o=0,r=t.length;o<r;o++){var i=t[o];if(!a[i.parentTId]){var d=i.getParentNode();a[i.parentTId]=null===d?c.getRoot(e):i.getParentNode()}s.showNode(e,i,n)}for(var l in a)t=c.nodeChildren(e,a[l]),s.setFirstNodeForShow(e,t),s.setLastNodeForShow(e,t)}},hideNode:function(e,t){c.isHidden(e,t,!0),t.isFirstNode=!1,t.isLastNode=!1,c.initHideForExCheck(e,t),s.cancelPreSelectedNode(e,t),a(t,e).hide()},hideNodes:function(e,t,n){if(t&&0!=t.length){var o,r,a={};for(o=0,r=t.length;o<r;o++){var i=t[o];if((i.isFirstNode||i.isLastNode)&&!a[i.parentTId]){var d=i.getParentNode();a[i.parentTId]=null===d?c.getRoot(e):i.getParentNode()}s.hideNode(e,i,n)}for(var l in a)t=c.nodeChildren(e,a[l]),s.setFirstNodeForHide(e,t),s.setLastNodeForHide(e,t)}},setFirstNode:function(e,t){var n=c.nodeChildren(e,t),o=c.isHidden(e,n[0],!1);0<n.length&&!o?n[0].isFirstNode=!0:0<n.length&&s.setFirstNodeForHide(e,n)},setLastNode:function(e,t){var n=c.nodeChildren(e,t),o=c.isHidden(e,n[0]);0<n.length&&!o?n[n.length-1].isLastNode=!0:0<n.length&&s.setLastNodeForHide(e,n)},setFirstNodeForHide:function(e,t){var n,o,r;for(o=0,r=t.length;o<r&&!(n=t[o]).isFirstNode;o++){if(!c.isHidden(e,n)&&!n.isFirstNode){n.isFirstNode=!0,s.setNodeLineIcos(e,n);break}n=null}return n},setFirstNodeForShow:function(e,t){var n,o,r,a,i;for(o=0,r=t.length;o<r;o++){n=t[o];var d=c.isHidden(e,n);if(!a&&!d&&n.isFirstNode){a=n;break}if(a||d||n.isFirstNode){if(a&&n.isFirstNode){n.isFirstNode=!1,i=n,s.setNodeLineIcos(e,n);break}}else n.isFirstNode=!0,a=n,s.setNodeLineIcos(e,n)}return{new:a,old:i}},setLastNodeForHide:function(e,t){var n,o;for(o=t.length-1;0<=o&&!(n=t[o]).isLastNode;o--){if(!c.isHidden(e,n)&&!n.isLastNode){n.isLastNode=!0,s.setNodeLineIcos(e,n);break}n=null}return n},setLastNodeForShow:function(e,t){var n,o,r,a;for(o=t.length-1;0<=o;o--){n=t[o];var i=c.isHidden(e,n);if(!r&&!i&&n.isLastNode){r=n;break}if(r||i||n.isLastNode){if(r&&n.isLastNode){n.isLastNode=!1,a=n,s.setNodeLineIcos(e,n);break}}else n.isLastNode=!0,r=n,s.setNodeLineIcos(e,n)}return{new:r,old:a}}},data:{initHideForExCheck:function(e,t){c.isHidden(e,t)&&e.check&&e.check.enable&&(void 0===t._nocheck&&(t._nocheck=!!t.nocheck,t.nocheck=!0),t.check_Child_State=-1,s.repairParentChkClassWithSelf&&s.repairParentChkClassWithSelf(e,t))},initShowForExCheck:function(e,t){if(!c.isHidden(e,t)&&e.check&&e.check.enable){if(void 0!==t._nocheck&&(t.nocheck=t._nocheck,delete t._nocheck),s.setChkClass){var n=a(t,r.id.CHECK,e);s.setChkClass(e,n,t)}s.repairParentChkClassWithSelf&&s.repairParentChkClassWithSelf(e,t)}}}});var o=(e=e.fn.zTree)._z.tools,r=e.consts,s=e._z.view,c=e._z.data,a=o.$;c.isHidden=function(e,t,n){return!!t&&(e=e.data.key.isHidden,void 0!==n&&("string"==typeof n&&(n=o.eqs(checked,"true")),t[e]=!!n),t[e])},c.exSetting({data:{key:{isHidden:"isHidden"}}}),c.addInitNode(function(e,t,n){t=c.isHidden(e,n),c.isHidden(e,n,t),c.initHideForExCheck(e,n)}),c.addBeforeA(function(){}),c.addZTreeTools(function(r,a){a.showNodes=function(e,t){s.showNodes(r,e,t)},a.showNode=function(e,t){e&&s.showNodes(r,[e],t)},a.hideNodes=function(e,t){s.hideNodes(r,e,t)},a.hideNode=function(e,t){e&&s.hideNodes(r,[e],t)};var i=a.checkNode;i&&(a.checkNode=function(e,t,n,o){e&&c.isHidden(r,e)||i.apply(a,arguments)})});var l=c.initNode;c.initNode=function(e,t,n,o,r,a,i){var d=(o||c.getRoot(e))[e.data.key.children];c.tmpHideFirstNode=s.setFirstNodeForHide(e,d),c.tmpHideLastNode=s.setLastNodeForHide(e,d),i&&(s.setNodeLineIcos(e,c.tmpHideFirstNode),s.setNodeLineIcos(e,c.tmpHideLastNode)),c.tmpHideFirstNode,a=c.tmpHideLastNode===n,l&&l.apply(c,arguments),i&&a&&s.clearOldLastNode(e,n,i)};var n=c.makeChkFlag;n&&(c.makeChkFlag=function(e,t){t&&c.isHidden(e,t)||n.apply(c,arguments)});var i=c.getTreeCheckedNodes;i&&(c.getTreeCheckedNodes=function(e,t,n,o){if(t&&0<t.length){var r=t[0].getParentNode();if(r&&c.isHidden(e,r))return[]}return i.apply(c,arguments)});var d=c.getTreeChangeCheckedNodes;d&&(c.getTreeChangeCheckedNodes=function(e,t,n){if(t&&0<t.length){var o=t[0].getParentNode();if(o&&c.isHidden(e,o))return[]}return d.apply(c,arguments)});var u=s.expandCollapseSonNode;u&&(s.expandCollapseSonNode=function(e,t,n,o,r){t&&c.isHidden(e,t)||u.apply(s,arguments)});var p=s.setSonNodeCheckBox;p&&(s.setSonNodeCheckBox=function(e,t,n,o){t&&c.isHidden(e,t)||p.apply(s,arguments)});var h=s.repairParentChkClassWithSelf;h&&(s.repairParentChkClassWithSelf=function(e,t){t&&c.isHidden(e,t)||h.apply(s,arguments)})}(jQuery),TreeSelect.prototype.render=function(e){var a=e.elem,t=e.data,n=void 0===e.type?"GET":e.type,i=e.click,o=e.success,r=void 0===e.placeholder?"请选择":e.placeholder,d=void 0!==e.search&&e.search,l=e.style,s=(new Date).getTime(),c={},u="layui-form-selected",p=void 0,h="treeSelect-input-"+s,g="layui-treeSelect-"+s,f="layui-select-title-"+s,N="layui-treeSelect-body-"+s,v="layui-treeSelect-search-ed",C={init:function(){return $.ajax({url:t,type:n,dataType:"json",success:function(e){c=e,C.hideElem().input().toggleSelect().loadCss().preventEvent(),$.fn.zTree.init($("#"+N),C.setting(),e),p=$.fn.zTree.getZTreeObj(N),d&&C.searchParam(),C.configStyle(),o&&o({treeId:g,data:e})}}),C},checkDefaultValue:function(){},setting:function(){return{callback:{onClick:C.onClick,onExpand:C.onExpand,onCollapse:C.onCollapse,beforeExpand:C.ztreeCallBack.beforeExpand}}},ztreeCallBack:{beforeExpand:function(){C.configStyle()}},onCollapse:function(){C.focusInput()},onExpand:function(){C.configStyle(),C.focusInput()},focusInput:function(){$("#"+h).focus()},onClick:function(e,t,n){var o=n.name,r=n.id;return $("#"+f+" input").val(o),$(a).attr("value",r).val(r),$("#"+g).removeClass(u),i&&i({data:c,current:n,treeId:g}),C},hideElem:function(){return $(a).hide(),C},input:function(){var e="";d||(e="readonly");var t='<div class="layui-treeSelect layui-unselect layui-form-select" id="'+g+'"><div class="layui-select-title" id="'+f+'"> <input type="text" id="'+h+'" placeholder="'+r+'" value="" '+e+' class="layui-input layui-unselect"><i class="layui-edge"></i></div><div class="layui-anim layui-anim-upbit" style=""><div class="layui-treeSelect-body ztree" id="'+N+'"></div></div></div>';return $(a).parent().append(t),C},toggleSelect:function(){var e="#"+f;return C.event("click",e,function(e){var t=$("#"+g);t.hasClass(u)?(t.removeClass(u),$("#"+h).blur()):($(".layui-form-select").removeClass(u),t.addClass(u)),e.stopPropagation()}),$(document).click(function(){var e=$("#"+g);e.hasClass(u)&&(e.removeClass(u),$("#"+h).blur())}),C},searchParam:function(){if(d){var e="#"+h;C.fuzzySearch(e,null,!0)}},fuzzySearch:function(o,e,r){var a=p;a||alert("fail to get ztree object");var i=a.setting.data.key.name;e=!1!==e,r=!!r,a.setting.view.nameIsHTML=e,new RegExp("[\\[\\]\\\\^\\$\\.\\|\\?\\*\\+\\(\\)]","gi"),$(o).bind("input propertychange",function(){var e;e=$(this).val(),t&&clearTimeout(t),t=setTimeout(function(){var t,n;n=(n=e)||"",function(e,t){if(e&&0<e.length)if(0<t.length)$.each(e,function(e,t){var n=t.getPath();if(n&&0<n.length)for(var o=0;o<n.length-1;o++)a.showNode(n[o]),a.expandNode(n[o],!0)});else{var n=a.getNodesByParam("level","0");$.each(n,function(e,t){a.expandNode(t,!0)})}}((t=a).getNodesByFilter(function(e){return e&&e.oldname&&0<e.oldname.length&&(e[i]=e.oldname),t.updateNode(e),0==n.length?(t.showNode(e),t.expandNode(e,r),!0):e[i]&&-1!=e[i].toLowerCase().indexOf(n.toLowerCase())?(t.showNode(e),!0):(t.hideNode(e),!1)}),n),$(o).focus()},500)});var t=null},checkNodes:function(e){for(var t=0;t<e.length;t++){var n=e[t],o=n.parentTId,r=n.tId;if(null!==o){$("#"+o).addClass(v);var a=p.getNodesByParam("tId",o,null);p.expandNode(a[0],!0,!1,!0)}$("#"+r).addClass(v)}},preventEvent:function(){var e="#"+g+" .layui-anim";return C.event("click",e,function(e){e.stopPropagation()}),C},loadCss:function(){return $head=$("head"),ztreeStyle=$head.find("style[ztree]"),0===ztreeStyle.length&&$head.append($("<style ztree>").append(".ztree *{padding:0;margin:0;font-size:12px;font-family:\"Helvetica Neue\",Helvetica,Tahoma,Arial,'PingFang SC','Source Han Sans CN','Source Han Sans','Hiragino Sans GB','WenQuanYi Micro Hei',sans-serif}.ztree{margin:0;padding:5px 10px;color:#333}.ztree li{padding:0;margin:0;list-style:none;line-height:14px;text-align:left;white-space:nowrap;outline:0}.ztree li ul{margin:0;padding:0 0 0 18px}.ztree li ul.line{background:url(./img/line_conn.gif) 0 0 repeat-y;}.ztree li a{padding:1px 3px 0 0;margin:0;cursor:pointer;height:17px;color:#333;background-color:transparent;text-decoration:none;vertical-align:top;display:inline-block}.ztree li a:hover{text-decoration:underline}.ztree li a.tmpTargetNode_inner{padding-top:0px;background-color:#316AC5;color:white;height:16px;border:1px #316AC5 solid;opacity:0.8;filter:alpha(opacity=80)}.ztree li a.tmpTargetNode_prev{}.ztree li a.tmpTargetNode_next{}.ztree li a input.rename{height:14px;width:80px;padding:0;margin:0;font-size:12px;border:1px #7EC4CC solid;*border:0px}.ztree li span{line-height:16px;margin-right:2px;padding-left:5px;}.ztree li span.button{line-height:0;margin:0;width:16px;height:16px;display:inline-block;vertical-align:middle;border:0 none;cursor:pointer;outline:none;background-color:transparent;background-repeat:no-repeat;background-attachment:scroll;background-image:url(\"./img/zTreeStandard.png\");*background-image:url(\"./img/zTreeStandard.gif\")}.ztree li span.button.chk{width:13px;height:13px;margin:0 3px 0 0;cursor:auto}.ztree li span.button.chk.checkbox_false_full{background-position:0 0}.ztree li span.button.chk.checkbox_false_full_focus{background-position:0 -14px}.ztree li span.button.chk.checkbox_false_part{background-position:0 -28px}.ztree li span.button.chk.checkbox_false_part_focus{background-position:0 -42px}.ztree li span.button.chk.checkbox_false_disable{background-position:0 -56px}.ztree li span.button.chk.checkbox_true_full{background-position:-14px 0}.ztree li span.button.chk.checkbox_true_full_focus{background-position:-14px -14px}.ztree li span.button.chk.checkbox_true_part{background-position:-14px -28px}.ztree li span.button.chk.checkbox_true_part_focus{background-position:-14px -42px}.ztree li span.button.chk.checkbox_true_disable{background-position:-14px -56px}.ztree li span.button.chk.radio_false_full{background-position:-28px 0}.ztree li span.button.chk.radio_false_full_focus{background-position:-28px -14px}.ztree li span.button.chk.radio_false_part{background-position:-28px -28px}.ztree li span.button.chk.radio_false_part_focus{background-position:-28px -42px}.ztree li span.button.chk.radio_false_disable{background-position:-28px -56px}.ztree li span.button.chk.radio_true_full{background-position:-42px 0}.ztree li span.button.chk.radio_true_full_focus{background-position:-42px -14px}.ztree li span.button.chk.radio_true_part{background-position:-42px -28px}.ztree li span.button.chk.radio_true_part_focus{background-position:-42px -42px}.ztree li span.button.chk.radio_true_disable{background-position:-42px -56px}.ztree li span.button.switch{width:18px;height:18px}.ztree li span.button.root_open{background-position:-92px -54px}.ztree li span.button.root_close{background-position:-74px -54px}.ztree li span.button.roots_open{background-position:-92px 0}.ztree li span.button.roots_close{background-position:-74px 0}.ztree li span.button.center_open{background-position:-92px -18px}.ztree li span.button.center_close{background-position:-74px -18px}.ztree li span.button.bottom_open{background-position:-92px -36px}.ztree li span.button.bottom_close{background-position:-74px -36px}.ztree li span.button.noline_open{background-position:-92px -72px}.ztree li span.button.noline_close{background-position:-74px -72px}.ztree li span.button.root_docu{background:none;}.ztree li span.button.roots_docu{background-position:-56px 0}.ztree li span.button.center_docu{background-position:-56px -18px}.ztree li span.button.bottom_docu{background-position:-56px -36px}.ztree li span.button.noline_docu{background:none;}.ztree li span.button.ico_open{margin-right:2px;background-position:-110px -16px;vertical-align:top;*vertical-align:middle}.ztree li span.button.ico_close{margin-right:2px;background-position:-110px 0;vertical-align:top;*vertical-align:middle}.ztree li span.button.ico_docu{margin-right:2px;background-position:-110px -32px;vertical-align:top;*vertical-align:middle}.ztree li span.button.edit{margin-right:2px;background-position:-110px -48px;vertical-align:top;*vertical-align:middle}.ztree li span.button.remove{margin-right:2px;background-position:-110px -64px;vertical-align:top;*vertical-align:middle}.ztree li span.button.ico_loading{margin-right:2px;background:url(./img/loading.gif) no-repeat scroll 0 0 transparent;vertical-align:top;*vertical-align:middle}ul.tmpTargetzTree{background-color:#FFE6B0;opacity:0.8;filter:alpha(opacity=80)}span.tmpzTreeMove_arrow{width:16px;height:16px;display:inline-block;padding:0;margin:2px 0 0 1px;border:0 none;position:absolute;background-color:transparent;background-repeat:no-repeat;background-attachment:scroll;background-position:-110px -80px;background-image:url(\"./img/zTreeStandard.png\");*background-image:url(\"./img/zTreeStandard.gif\")}ul.ztree.zTreeDragUL{margin:0;padding:0;position:absolute;width:auto;height:auto;overflow:hidden;background-color:#cfcfcf;border:1px #00B83F dotted;opacity:0.8;filter:alpha(opacity=80)}.zTreeMask{z-index:10000;background-color:#cfcfcf;opacity:0.0;filter:alpha(opacity=0);position:absolute}").append('.layui-treeSelect .ztree li span.button{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:none;line-height:inherit;}.layui-treeSelect .ztree li span.button.ico_open{display:none;}.layui-treeSelect .ztree li span.button.ico_close{display:none;}.layui-treeSelect .ztree li span.button.ico_docu:before{content:"\\e621";}.layui-treeSelect .ztree li span.button.bottom_close:before,.layui-treeSelect .ztree li span.button.center_close:before,.layui-treeSelect .ztree li span.button.roots_close:before{content:"\\e623";}.layui-treeSelect .ztree li span.button.bottom_open:before,.layui-treeSelect .ztree li span.button.roots_open:before,.layui-treeSelect .ztree li span.button.center_open:before{content:"\\e625";}.layui-treeSelect .ztree li a:hover{text-decoration:none;}.layui-treeSelect .ztree *{font-size:14px;}.layui-treeSelect .ztree li{line-height:inherit;padding:2px 0;}.layui-treeSelect .ztree li span.button.switch{position:relative;top:-7px;}.layui-treeSelect .ztree li a,.ztree li span{line-height:18px;height:inherit;}.layui-treeSelect .ztree li ul.line{background:none;}.layui-treeSelect .layui-anim::-webkit-scrollbar{width:6px;height:6px;background-color:#F5F5F5;}.layui-treeSelect .layui-anim::-webkit-scrollbar-track{box-shadow:inset 0 0 6px rgba(107,98,98,0.3);border-radius:10px;background-color:#F5F5F5;}.layui-treeSelect .layui-anim::-webkit-scrollbar-thumb{border-radius:10px;box-shadow:inset 0 0 6px rgba(107,98,98,0.3);background-color:#555;}.layui-treeSelect.layui-form-select .layui-anim{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:9999;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box;}.layui-treeSelect.layui-form-selected .layui-anim{display:block;}.layui-treeSelect .ztree li span.center_docu,.layui-treeSelect .ztree li span.bottom_docu,.layui-treeSelect .ztree li span.roots_docu {display:none};')),C},configStyle:function(){null!=l&&null!=l.line&&l.line.enable||$("#"+g).find("li .center_docu,li .bottom_docu").hide(),null!=l&&null!=l.folder&&l.folder.enable||($("#"+g).find("li span.button.ico_open").hide(),$("#"+g).find("li span.button.ico_close").hide())},event:function(e,t,n){$("body").on(e,t,n)}};return C.init(),new TreeSelect},TreeSelect.prototype.refresh=function(e){obj.treeObj(e).reAsyncChildNodes(null,"refresh")},TreeSelect.prototype.checkNode=function(e,t){var n=obj.filter(e),o=n.find(".layui-select-title input"),r=obj.treeObj(e),a=r.getNodeByParam("id",t,null),i=a.name;o.val(i),n.find("a[treenode_a]").removeClass("curSelectedNode"),obj.get(e).val(t).attr("value",t),r.selectNode(a)},TreeSelect.prototype.revokeNode=function(e,t){var n=obj.filter(e);n.find("a[treenode_a]").removeClass("curSelectedNode"),n.find(".layui-select-title input.layui-input").val(""),obj.get(e).attr("value","").val(""),obj.treeObj(e).expandAll(!1),t&&t({treeId:n.attr("id")})},TreeSelect.prototype.destroy=function(e){obj.filter(e).remove(),obj.get(e).show()},TreeSelect.prototype.zTree=function(e){return obj.treeObj(e)};var obj={get:function(e){return e||layui.hint().error("filter 不能为空"),$("*[lay-filter="+e+"]")},filter:function(e){return obj.get(e).next()},treeObj:function(e){var t=obj.filter(e).find(".layui-treeSelect-body").attr("id");return $.fn.zTree.getZTreeObj(t)}},mod=new TreeSelect;exports(_MOD,mod)}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/modules/api.js b/src/main/resources/static/febs/lay/modules/api.js new file mode 100644 index 0000000..35f83de --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/api.js @@ -0,0 +1,5 @@ +layui.define([],function(exports){ + exports('api',{ + getMenus: 'menu/' + currentUser.username + '?invalid_ie_cache=' + new Date().getTime() + }); +}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/modules/dropdown.js b/src/main/resources/static/febs/lay/modules/dropdown.js new file mode 100644 index 0000000..201b2f6 --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/dropdown.js @@ -0,0 +1,154 @@ +layui.define(['jquery'], function (exports) { + var $ = layui.jquery; + var CLS_DROPDOWN = 'layui-dropdown'; + var CLS_DROPDOWN_RIGHT = 'layui-dropdown-direright'; + var CLS_SELECT = 'layui-dropdown-select'; + var CLS_OPTION = 'layui-dropdown-option'; + var CLS_TITLE = 'layui-dropdown-title'; + var CLS_ARROW = 'febs-arrow-up'; + var HTML_DROPDOWN = '<div class="' + CLS_DROPDOWN + '"><div>'; + var DEPTH = 0; + var INDEX = 0; + + var Class = function (config) { + this.config = $.extend({}, this.config, config); + this.render(config) + }; + Class.prototype.config = { + width: 150, + trigger: 'click' + }; + Class.prototype.dropdownElem = ''; + Class.prototype.exists = false; + Class.prototype.depth = 0; + Class.prototype.index = 0; + Class.prototype.render = function (config) { + var self = this; + if (typeof this.config.elem == 'string') { + $(document).on('click', this.config.elem, event) + } else { + this.config.elem.click(event) + } + + function event(e) { + e.stopPropagation(); + if (self.dropdownElem === '') { + INDEX += 1; + self.index = INDEX; + + var dropdown = $(HTML_DROPDOWN).attr('lay-index', self.index); + $('.' + CLS_DROPDOWN + '[lay-index="' + self.index + '"]').remove(); + + dropdown.html(self.createOptionsHtml(config)); + $('body').prepend(dropdown); + dropdown.on('click', '.' + CLS_OPTION, function (e) { + e.stopPropagation(); + if ($.isFunction(config.click)) { + config.click($(this).attr('lay-name'), $(this), e); + dropdown.hide() + } + }); + self.dropdownElem = dropdown; + self.dropdownSelect = dropdown.find('.' + CLS_SELECT) + } + + var dropdown = self.dropdownElem; + + var top = $(this).offset().top + $(this).height() + 12; + var left = $(this).offset().left - 5; + dropdown.css({ + top: top - 10 + }); + var offsetWidth = (self.depth + 1) * self.config.width; + + if (left + offsetWidth > $(window).width()) { + dropdown + .addClass('layui-dropdown-right') + .css('left', left - dropdown.width() + $(this).width()); + self.dropdownSelect.css({left: 'auto', right: self.config.width}) + } else { + dropdown.removeClass('layui-dropdown-right').css('left', left); + self.dropdownSelect.css({right: 'auto', left: self.config.width}) + } + + $('body').one('click', function (e) { + dropdown.stop().animate( + { + top: '-=100000', + opacity: 0 + }, + 1 + ); + }); + + dropdown + .show() + .stop() + .animate( + { + top: '+=10', + opacity: 1 + }, + 250 + ) + } + }; + Class.prototype.createOptionsHtml = function (data, depth) { + depth = depth || 0; + var self = this; + var width = self.config.width + 'px;'; + var html = + '<div class="' + + CLS_SELECT + + '" style="width:' + + width + + (depth > 0 ? 'left:' + width : '') + + '">'; + if (depth === 0) { + html += '<div class="' + CLS_ARROW + '"></div>' + } + layui.each(data.options, function (i, option) { + var paserHtml = false; + var permissions = currentUser.permissionSet; + var options = option.options || []; + if (option.perms) { + if (permissions.indexOf(option.perms) !== -1) { + paserHtml = true; + } + } else { + paserHtml = true; + } + if (paserHtml) { + html += + '<div lay-name=' + + option.name + + ' class="' + + CLS_OPTION + + '"><p class="' + + CLS_TITLE + + ' layui-elip"><span class="layui-icon ' + + option.icon + + '"></span>' + + option.title + + '</p>' + + (options.length > 0 + ? '<i class="layui-icon layui-icon-right"></i>' + : ''); + option.options = option.options || []; + if (option.options.length > 0) + html += self.createOptionsHtml(option, depth + 1); + html += '</div>'; + if (self.depth < depth) self.depth = depth + } + }); + html += '</div>'; + return html + }; + + var self = { + render: function (config) { + new Class(config) + } + }; + exports('dropdown', self) +}); diff --git a/src/main/resources/static/febs/lay/modules/febs.js b/src/main/resources/static/febs/lay/modules/febs.js new file mode 100644 index 0000000..bbac870 --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/febs.js @@ -0,0 +1,671 @@ +layui.extend({ + conf: 'config', + api: 'lay/modules/api', + view: 'lay/modules/view' +}).define(['conf', 'view', 'api', 'jquery', 'table'], function (exports) { + POPUP_DATA = {}; + var conf = layui.conf; + var layuiTable = layui.table; + var view = layui.view; + var element = layui.element; + var $ = layui.jquery; + var $bread = $('#febs-layout .febs-breadcrumb'); + + layui.extend(conf.extend); + var self = {}; + var windowWidth = $(window).width(); + + conf.viewTabs = currentUser.isTab === '1'; + self.route = layui.router(); + self.view = view; + self.api = layui.api; + self.closeOnceHashChange = false; + self.ie8 = view.ie8; + self.get = view.request; + self.appBody = null; + self.shrinkCls = 'febs-sidebar-shrink'; + self.isInit = false; + self.routeLeaveFunc = null; + self.routeLeave = function (callback) { + this.routeLeaveFunc = callback + }; + self.render = function (elem) { + if (typeof elem == 'string') elem = $('#' + elem); + var action = elem.get(0).tagName === 'SCRIPT' ? 'next' : 'find'; + elem[action]('[is-template]').remove(); + view.parse(elem) + }; + //初始化整个页面 + self.initPage = function (initCallback) { + //加载样式文件 + layui.each(layui.conf.style, function (index, url) { + layui.link(url + '?v=' + conf.v) + }); + self.initView(self.route) + String.prototype.startsWith = function (str) { + if (str == null || str === "" || this.length === 0 || str.length > this.length) { + return false; + } + return this.substr(0, str.length) === str; + }; + }; + self.post = function (params) { + view.request($.extend({type: 'post'}, params)) + }; + + //初始化视图区域 + self.initView = function (route) { + if (!self.route.href || self.route.href === '/') { + self.route = layui.router('#' + conf.entry); + route = self.route + } + route.fileurl = '/' + route.path.join('/'); + + if ($.inArray(route.fileurl, conf.indPage) === -1) { + var loadRenderPage = function (params) { + if (conf.viewTabs === true) { + view.renderTabs(route) + } else { + view.render(route.fileurl) + } + }; + + if (view.containerBody == null) { + //加载layout文件 + view.renderLayout(function () { + //重新渲染导航 + element.render('nav', 'febs-sidebar'); + //加载视图文件 + loadRenderPage() + }) + } else { + //layout文件已加载,加载视图文件 + loadRenderPage() + } + } else { + //加载单页面 + view.renderIndPage(route.fileurl, function () { + if (conf.viewTabs === true) view.tab.clear() + }) + } + }; + //根据当前加载的 URL高亮左侧导航 + self.sidebarFocus = function (url) { + url = url || self.route.href; + var elem = $('#app-sidebar') + .find('[lay-href="' + url + '"]') + .eq(0); + // $bread.empty(); + if (elem.length > 0) { + // 生成面包屑 + // var breadHtml = ''; + // elem.parents('dl').prev('a').each(function (k, v) { + // var $this = $(this); + // breadHtml += '<a>' + $this[0].innerText + ' / </a>'; + // }); + // breadHtml += '<a>' + elem[0].innerText+ ' </a>'; + // $bread.append(breadHtml); + + elem.parents('.layui-nav-item').addClass('layui-nav-itemed') + .siblings().removeClass('layui-nav-itemed'); + elem.click(); + } + }; + self.flexible = function (open) { + if (open === true) { + view.container.removeClass(self.shrinkCls) + } else { + view.container.addClass(self.shrinkCls) + } + }; + self.on = function (name, callback) { + return layui.onevent(conf.eventName, 'system(' + name + ')', callback) + }; + self.event = function (name, params) { + layui.event(conf.eventName, 'system(' + name + ')', params) + }; + self.csshref = function (name) { + name = name === undefined ? self.route.path.join('/') : name; + return conf.css + 'views/' + name + '.css' + '?v=' + conf.v + }; + self.prev = function (n) { + if (n === undefined) n = -1; + window.history.go(n) + }; + self.navigate = function (url) { + if (url === conf.entry) url = '/'; + window.location.hash = url + }; + self.data = function (settings, storage) { + if (settings === undefined) return layui.data(conf.tableName); + if ($.isArray(settings)) { + layui.each(settings, function (i) { + layui.data(conf.tableName, settings[i], storage) + }) + } else { + layui.data(conf.tableName, settings, storage) + } + }; + + self.isUrl = function (str) { + return /^([hH][tT]{2}[pP]:\/\/|[hH][tT]{2}[pP][sS]:\/\/)(([A-Za-z0-9-~]+)\.)+([A-Za-z0-9-~\/])+$/.test( + str + ) + }; + self.popup = function (params) { + var url = params.url || ''; + var success = params.success || function () { + }; + params.skin = 'layui-layer-admin-page'; + POPUP_DATA = params.data || {}; + var defaultParams = { + type: 1, + area: $(window).width() <= 750 ? ['90%', '90%'] : ['60%', '90%'], + shadeClose: true + }; + + if (self.isUrl(url)) { + params.type = 2; + params.content = url; + layer.open($.extend(defaultParams, params)); + return + } + + view.tab.del(url); + + view.loadHtml(conf.views + url, function (res) { + var htmlElem = $('<div>' + res.html + '</div>'); + + if (params.title === undefined) { + params.title = htmlElem.find('title').text() || '信息'; + if (params.title) htmlElem.find('title').remove() + } + + params.content = htmlElem.html(); + params.success = function (layer, index) { + success(layer, index); + + view.parse(layer); + }; + + params = $.extend(defaultParams, params); + layer.open($.extend(defaultParams, params)); + }); + }; + + //当小于这个尺寸的时候会进行手机端的适配 + var mobileWidth = 991; + var isMobileAdapter = false; + + function mobileAdapter() { + self.flexible(false); + var device = layui.device(); + if (device.weixin || device.android || device.ios) { + //点击空白处关闭侧边栏 + $(document).on('click', '#' + conf.containerBody, function () { + if ( + $(window).width() < mobileWidth && + !view.container.hasClass(self.shrinkCls) + ) { + self.flexible(false) + } + }) + } + isMobileAdapter = true + } + + $(window).on('resize', function (e) { + if ($(window).width() < mobileWidth) { + if (isMobileAdapter === true) return; + mobileAdapter() + } else { + isMobileAdapter = false + } + }); + + $(window).on('hashchange', function (e) { + //移动端跳转链接先把导航关闭 + if ($(window).width() < mobileWidth) { + self.flexible(false) + } + self.route = layui.router(); + layer.closeAll(); + self.initView(self.route) + }); + + $(document).on('click', '[lay-href]', function (e) { + var href = $(this).attr('lay-href'); + var target = $(this).attr('target'); + + if (href === '') return; + if (href.startsWith('http')) { + window.open(href) + } + if (self.isUrl(href)) { + next() + } + + function next() { + target === '__blank' ? window.open(href) : self.navigate(href) + } + + if ($.isFunction(self.routeLeaveFunc)) { + self.routeLeaveFunc(self.route + "asdfasdf", href, next) + } else { + next() + } + + return false + }); + $(document).on('click', '[lay-popup]', function (e) { + var params = $(this).attr('lay-popup'); + self.popup( + params.indexOf('{') === 0 + ? new Function('return ' + $(this).attr('lay-popup'))() + : {url: params} + ); + return false + }); + $(document).on('mouseenter', '[lay-tips]', function (e) { + var title = $(this).attr('lay-tips'); + var dire = $(this).attr('lay-dire') || 3; + if (title) { + layer.tips(title, $(this), { + tips: [dire, '#263147'] + }) + } + }); + $(document).on('mouseleave', '[lay-tips]', function (e) { + layer.closeAll('tips') + }); + + $(document).on('click', '*[' + conf.eventName + ']', function (e) { + self.event($(this).attr(conf.eventName), $(this)) + }); + + var shrinkSidebarBtn = + '.' + self.shrinkCls + ' #app-sidebar .layui-nav-item a'; + + $(document).on('click', shrinkSidebarBtn, function (e) { + if (isMobileAdapter === true) return; + var chileLength = $(this) + .parent() + .find('.layui-nav-child').length; + if (chileLength > 0) { + self.flexible(true); + layer.closeAll('tips') + } + }); + $(document).on('mouseenter', shrinkSidebarBtn, function (e) { + var title = $(this).attr('title'); + if (title) { + layer.tips(title, $(this).find('.layui-icon'), { + tips: [2, '#263147'] + }) + } + }); + $(document).on('mouseleave', shrinkSidebarBtn, function (e) { + layer.closeAll('tips') + }); + + self.on('flexible', function (init) { + var status = view.container.hasClass(self.shrinkCls); + self.flexible(status); + self.data({key: 'flexible', value: status}) + }); + self.on('refresh', function (e) { + var url = self.route.href; + if (conf.viewTabs === true) { + //view.tab.refresh(url); + } else { + view.render(location.hash) + } + }); + self.on('prev', function (e) { + self.prev() + }); + + if ($(window).width() <= mobileWidth) { + mobileAdapter() + } else { + var flexibleOpen = self.data().flexible; + self.flexible(flexibleOpen === undefined ? true : flexibleOpen) + } + self.modal = {}; + + self.modal.base = function (msg, params) { + params = params || {}; + params.titleIcoColor = params.titleIcoColor || '#5a8bff'; + params.titleIco = params.titleIco || 'exclaimination'; + params.title = params.title || [ + '<i class="layui-icon layui-icon-' + + params.titleIco + + '" style="font-size:12px;background:' + + params.titleIcoColor + + ';display:inline-block;position:relative;top:-2px;height:21px;line-height:21px;text-align:center;width:21px;color:#fff;border-radius:50%;margin-right:12px;"></i>' + + params.titleValue, + 'background:#fff;border:none;font-weight:bold;font-size:16px;color:#08132b;padding-top:10px;height:36px;line-height:46px;padding-bottom:0;' + ]; + params = $.extend( + { + skin: 'layui-layer-admin-modal febs-alert', + area: [windowWidth <= 750 ? '60%' : '400px'], + closeBtn: 0, + shadeClose: false + }, + params + ); + layer.alert(msg, params); + }; + + // ----------------- 弹窗类 --------------------- // + + self.alert = {}; + + function alertParams(msg, params) { + params.time = 3000; + params.shade = 0; + params.btn = null; + params.title = [ + '<i class="layui-icon layui-icon-' + + params.titleIco + + '" style="font-size:12px;background:' + + params.titleIcoColor + + ';display:inline-block;font-weight:600;position:relative;top:-2px;height:21px;line-height:21px;text-align:center;width:21px;color:#fff;border-radius:50%;margin-right:12px;"></i>' + + (msg || '请填写提示信息'), + 'background:#fff;border:none;font-weight:500;font-size:14px;color:#08132b;margin-bottom:-50px;padding:16px;height:45px;line-height:14px;padding-bottom:0;' + ]; + params.offset = '40px'; + params.area = [windowWidth <= 750 ? '80%' : '400px']; + } + + self.alert.success = function (msg, params) { + params = params || {}; + params.titleIco = 'ok'; + params.titleIcoColor = '#30d180'; + alertParams(msg, params); + self.modal.base('', params); + }; + self.alert.warn = function (msg, params) { + params = params || {}; + params.titleIco = 'exclaimination'; + params.titleIcoColor = '#ffc107'; + alertParams(msg, params); + self.modal.base('', params); + }; + self.alert.error = function (msg, params) { + params = params || {}; + params.titleIco = 'close'; + params.titleIcoColor = '#ff5652'; + alertParams(msg, params); + self.modal.base('', params); + }; + self.alert.info = function (msg, params) { + params = params || {}; + params.titleIco = 'infomation'; + params.titleIcoColor = '#2db7f5'; + alertParams(msg, params); + self.modal.base('', params); + }; + + // ----------------- 模态框类 --------------------- // + + self.modal.confirm = function (title, msg, yes, no, params) { + params = params || {}; + params.titleIco = 'exclaimination'; + params.titleIcoColor = '#ffc107'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定', '取消'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + , btn2: function (index, layero) { + no && (no)(); + } + }, params); + self.modal.base(msg, params); + }; + + self.modal.info = function (title, msg, yes, params) { + params = params || {}; + params.titleIco = 'infomation'; + params.titleIcoColor = '#2db7f5'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + }, params); + self.modal.base(msg, params); + }; + + self.modal.warn = function (title, msg, yes, params) { + params = params || {}; + params.titleIco = 'exclaimination'; + params.titleIcoColor = '#ffc107'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + }, params); + self.modal.base(msg, params); + }; + + self.modal.success = function (title, msg, yes, params) { + params = params || {}; + params.titleIco = 'ok'; + params.titleIcoColor = '#30d180'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + }, params); + self.modal.base(msg, params); + }; + + self.modal.error = function (title, msg, yes, params) { + params = params || {}; + params.titleIco = 'close'; + params.titleIcoColor = '#ff5652'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + }, params); + self.modal.base(msg, params); + }; + + self.modal.open = function (title, url, params) { + params = $.extend({ + url: url, + maxmin: true, + shadeClose: false, + title: [ + (title || '请填写头部信息'), + 'font-size:16px;color:#08132b;line-height:46px;padding-bottom:0;border-bottom:1px solid #fcfcfc;background-color:#fcfcfc' + ] + }, params); + self.popup(params); + }; + + self.modal.view = function (title, url, params) { + params = $.extend({ + url: url, + maxmin: false, + shadeClose: false, + title: [ + title, + 'font-size:15px;color:#08132b;line-height:46px;height:48px;padding-bottom:0;background-color:#fff;border-bottom:none' + ], + area: $(window).width() <= 750 ? ['80%', '80%'] : ['50%', '60%'] + }, params); + self.popup(params); + }; + + // 数据表封装 + self.table = {}; + self.table.init = function (params) { + var defaultSetting = { + cellMinWidth: 80, + page: true, + skin: 'line row', + limit: 10, + limits: [5, 10, 20, 30, 40, 100], + autoSort: false, + request: { + pageName: 'pageNum', + limitName: 'pageSize' + }, + parseData: function (res) { + return { + "code": res.code === 200 ? 0 : res.code, + "count": res.data.total, + "data": res.data.rows + } + } + }; + return layuiTable.render( + $.extend({}, defaultSetting, params) + ); + }; + + // ajax get请求 + self.get = function (url, params, success) { + if (params) { + params.invalidate_ie_cache = new Date(); + } + $.get(url, params, function (r) { + resolveResponse(r, success); + }) + }; + + // ajax post请求 + self.post = function (url, params, success) { + if (params) { + params.invalidate_ie_cache = new Date(); + } + $.post(url, params, function (r) { + resolveResponse(r, success); + }) + }; + + // 文件下载 + self.download = function (url, params, fileName) { + self.view.loadBar.start(); + url += '?' + parseParams(params); + var xhr = new XMLHttpRequest(); + xhr.open('GET', url, true); + xhr.responseType = "blob"; + xhr.onload = function () { + if (this.status === 200) { + self.view.loadBar.finish(); + var fileType = this.response.type; + var blob = this.response; + var reader = new FileReader(); + reader.readAsDataURL(blob); + reader.onload = function (e) { + if ('msSaveOrOpenBlob' in navigator) { // IE,Edge + var base64file = e.target.result + ''; + window.navigator.msSaveOrOpenBlob(createFile(base64file.replace('data:' + fileType + ';base64,', ''), fileType), fileName); + } else { // chrome,firefox + var link = document.createElement('a'); + link.style.display = 'none'; + link.href = e.target.result; + link.setAttribute('download', fileName); + document.body.appendChild(link); + link.click(); + $(link).remove(); + } + } + } else { + self.view.loadBar.error(); + self.alert.error('下载失败'); + } + }; + xhr.send(); + }; + + // 判断 a种的属性是否 b都有,并且弱相等 + self.nativeEqual = function (a, b) { + var aProps = Object.getOwnPropertyNames(a); + var bProps = Object.getOwnPropertyNames(b); + for (var i = 0; i < aProps.length; i++) { + var propName = aProps[i]; + if (!compare(a[propName], b[propName])) { + return false; + } + } + return true; + }; + + function resolveResponse(r, f) { + if (r.code === 200) { + f(r) && (f)(); + } else if (r.code === 401) { + self.modal.info('登录失效', '登录已失效,请重新登录', function () { + window.location.href = ctx + 'login'; + }); + } else if (r.code === 403) { + self.alert.warn('对不起,您暂无该操作权限'); + } else { + self.alert.error(r.message ? r.message : '操作失败'); + console.error(r); + } + } + + function compare(a, b) { + if (a === '' && b === null) { + return true; + } else if (a === null && b === '') { + return true; + } else { + return a == b; + } + } + + function parseParams(param, key, encode) { + if (param == null) return ''; + var arr = []; + var t = typeof (param); + if (t === 'string' || t === 'number' || t === 'boolean') { + arr.push(key + '=' + ((encode == null || encode) ? encodeURIComponent(param) : param)); + } else { + for (var i in param) { + var k = key == null ? i : key + (param instanceof Array ? '[' + i + ']' : '.' + i); + arr.push(parseParams(param[i], k, encode)); + } + } + return arr.join("&"); + } + + // 解析 BASE64文件内容 for IE,Edge + function createFile(urlData, fileType) { + var bytes = window.atob(urlData), + n = bytes.length, + u8arr = new Uint8Array(n); + while (n--) { + u8arr[n] = bytes.charCodeAt(n); + } + return new Blob([u8arr], {type: fileType}); + } + + exports('febs', self) +}); diff --git a/src/main/resources/static/febs/lay/modules/loadBar.js b/src/main/resources/static/febs/lay/modules/loadBar.js new file mode 100644 index 0000000..ce79a80 --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/loadBar.js @@ -0,0 +1,85 @@ +layui.define(['jquery'], function (exports) { + var $ = layui.jquery; + var self = { + elem: null, + barTimer: 0, + barWidth: 0, + config: { + color: '#5a8bff', + errorColor: '#FF5722', + height: 2 + } + }; + + function randomNum(minNum, maxNum) { + switch (arguments.length) { + case 1: + return parseInt(Math.random() * minNum + 1, 10); + case 2: + return parseInt(Math.random() * (maxNum - minNum + 1) + minNum, 10); + default: + return 0; + } + } + + function setBarWidth(num) { + self.barWidth = num; + self.elem.css('width', self.barWidth + '%'); + } + + function addBarWidth(num) { + self.barWidth += num; + if (self.barWidth >= 100) self.barWidth = 100; + setBarWidth(self.barWidth); + return self.barWidth; + } + + function hideBar(barColor) { + clearInterval(self.barTimer); + addBarWidth(100); + self.elem.css({'backgroundColor': barColor}); + setTimeout(function () { + self.elem.css({ + 'opacity': 0 + }); + setBarWidth(0); + }, 250); + } + + self.start = function (config) { + this.config = $.extend(this.config, config || {}); + if (this.barTimer) { + clearInterval(this.barTimer); + setBarWidth(0); + } + if (this.elem == null) { + this.elem = $('<div id="febs-loadbar"></div>'); + $('body').prepend(this.elem); + } + this.elem.css({ + 'height': this.config.height, + 'backgroundColor': this.config.color, + 'position': 'fixed', + 'top': 0, + 'left': 0, + 'width': 0, + 'opacity': 1, + 'zIndex': 2000, + 'transition': 'all .2s linear' + }); + + addBarWidth(randomNum(1, 10)); + this.barTimer = setInterval(function () { + addBarWidth(randomNum(1, 10)); + if (self.barWidth >= 75) self.barWidth = 75 + }, 160); + + }; + self.finish = function () { + hideBar(this.config.color); + }; + self.error = function () { + hideBar(this.config.errorColor); + }; + exports('loadBar', self); +}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/modules/validate.js b/src/main/resources/static/febs/lay/modules/validate.js new file mode 100644 index 0000000..452e8a5 --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/validate.js @@ -0,0 +1,87 @@ +// 定义常用的校验,常用的正则 https://www.open-open.com/code/view/1430625516632 +layui.define(['jquery'], function (exports) { + var $ = layui.jquery; + exports('validate', { + username: function (value, item) { + if (!isEmpty(value)) { + var result = ''; + $.ajax({ + url: ctx + 'user/check/' + value, + data: { + "userId": item.getAttribute('id') + }, + async: false, + type: 'get', + success: function (d) { + (!d) && (result = '该用户名已存在') + } + }); + if (!isEmpty(result)) { + return result; + } + } + }, + cron: function (value, item) { + if (!isEmpty(value)) { + var result = ''; + $.ajax({ + url: ctx + 'job/cron/check', + data: { + "cron": value + }, + async: false, + type: 'get', + success: function (d) { + (!d) && (result = 'cron表达式不合法') + } + }); + if (!isEmpty(result)) { + return result; + } + } + }, + email: function (value) { + if (!isEmpty(value)) { + if (!new RegExp("^\\w+([-+.]\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$").test(value)) { + return '请填写正确的邮箱'; + } + } + }, + phone: function (value) { + if (!isEmpty(value)) { + if (!new RegExp("^1\\d{10}$").test(value)) { + return '请填写正确的手机号码'; + } + } + }, + number: function (value) { + if (!isEmpty(value)) { + if (!new RegExp("^[0-9]*$").test(value)) { + return '只能填写数字'; + } + } + }, + range: function (value, item) { + var minlength = item.getAttribute('minlength') ? item.getAttribute('minlength') : -1; + var maxlength = item.getAttribute('maxlength') ? item.getAttribute('maxlength') : -1; + var length = value.length; + if (minlength === -1) { + if (length > maxlength) { + return '长度不能超过 ' + maxlength + ' 个字符'; + } + } else if (maxlength === -1) { + if (length < minlength) { + return '长度不能少于 ' + minlength + ' 个字符'; + } + } else { + if (length > maxlength || length < minlength) { + return '长度范围 ' + minlength + ' ~ ' + maxlength + ' 个字符'; + } + } + } + }); + + function isEmpty(obj) { + return typeof obj == 'undefined' || obj == null || obj === ''; + } +}); \ No newline at end of file diff --git a/src/main/resources/static/febs/lay/modules/view.js b/src/main/resources/static/febs/lay/modules/view.js new file mode 100644 index 0000000..78dbb62 --- /dev/null +++ b/src/main/resources/static/febs/lay/modules/view.js @@ -0,0 +1,549 @@ +//视图路由 +layui + .extend({ + loadBar: 'lay/modules/loadBar', + dropdown: 'lay/modules/dropdown' + }) + .define( + ['jquery', 'laytpl', 'element', 'form', 'loadBar', 'dropdown'], + function (exports) { + var $ = layui.jquery; + var laytpl = layui.laytpl; + var conf = layui.conf; + conf.viewTabs = currentUser.isTab === '1'; + var loadBar = layui.loadBar; + var self = { + ie8: + navigator.appName === 'Microsoft Internet Explorer' && + navigator.appVersion.split(';')[1].replace(/[ ]/g, '') === 'MSIE8.0', + container: $('#' + conf.container), + containerBody: null + }; + self.loadBar = loadBar; + /** + * 字符串是否含有html标签的检测 + * @param htmlStr + */ + self.checkHtml = function (htmlStr) { + var reg = /<[^>]+>/g; + return reg.test(htmlStr) + }; + self.parse = function (container) { + if (container === undefined) container = self.containerBody; + var template = + container.get(0).tagName === 'SCRIPT' + ? container + : container.find('[template]'); + + var renderTemplate = function (template, data, callback) { + laytpl(template.html()).render(data, function (html) { + try { + html = $( + self.checkHtml(html) ? html : '<span>' + html + '</span>' + ) + } catch (err) { + html = $('<span>' + html + '</span>') + } + + html.attr('is-template', true); + template.after(html); + if ($.isFunction(callback)) callback(html) + }) + }; + + layui.each(template, function (index, t) { + var tem = $(t); + var url = tem.attr('lay-url') || ''; + var api = tem.attr('lay-api') || ''; + var type = tem.attr('lay-type') || 'get'; + var data = new Function('return ' + tem.attr('lay-data'))(); + var done = tem.attr('lay-done') || ''; + + if (url || api) { + //进行AJAX请求 + self.request({ + url: url, + api: api, + type: type, + data: data, + success: function (res) { + templateData = data; + renderTemplate(tem, res.data); + if (done) new Function(done)() + } + }) + } else { + renderTemplate( + tem, + {}, + self.ie8 + ? function (elem) { + if (elem[0] && elem[0].tagName !== 'LINK') return; + container.hide(); + elem.load(function () { + container.show() + }) + } + : null + ); + if (done) new Function(done)() + } + }) + }; + self.loading = function (elem) { + elem.append( + (this.elemLoad = $( + '<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon layui-icon-loading febs-loading"></i>' + )) + ) + }; + self.loadend = function () { + this.elemLoad && this.elemLoad.remove() + }; + + self.setTitle = function (title) { + $(document).attr({title: title + ' - ' + conf.name}) + }; + self.clear = function () { + self.containerBody.html('') + }; + + self.modal = {}; + + self.modal.base = function (msg, params) { + params = params || {}; + params.titleIcoColor = params.titleIcoColor || '#5a8bff'; + params.titleIco = params.titleIco || 'exclaimination'; + params.title = params.title || [ + '<i class="layui-icon layui-icon-' + + params.titleIco + + '" style="font-size:12px;background:' + + params.titleIcoColor + + ';display:inline-block;position:relative;top:-2px;height:21px;line-height:21px;text-align:center;width:21px;color:#fff;border-radius:50%;margin-right:12px;"></i>' + + params.titleValue, + 'background:#fff;border:none;font-weight:bold;font-size:16px;color:#08132b;padding-top:20px;height:36px;line-height:46px;padding-bottom:0;' + ]; + params = $.extend( + { + skin: 'layui-layer-admin-modal febs-alert', + area: [$(window).width() <= 750 ? '60%' : '400px'], + closeBtn: 0, + shadeClose: false + }, + params + ); + layer.alert(msg, params); + }; + + self.notify = function (title, msg, yes, params) { + params = params || {}; + params.titleIco = 'exclaimination'; + params.titleIcoColor = '#ffc107'; + params.titleValue = title; + params.shadeClose = false; + params = $.extend({ + btn: ['确定'] + , yes: function (index, layero) { + yes && (yes)(); + layer.close(index); + } + }, params); + self.modal.base(msg, params); + }; + + self.loadHtml = function (url, callback) { + url = url || conf.entry; + loadBar.start(); + var queryIndex = url.indexOf('?'); + if (queryIndex !== -1) url = url.slice(0, queryIndex); + $.ajax({ + url: + (url.indexOf(conf.base) === 0 ? '' : conf.views) + + url + + conf.engine + + '?v=' + + conf.v, + type: 'get', + data: { + 'invalid_ie_cache': new Date().getTime() + }, + dataType: 'html', + success: function (r) { + var result; + try { + result = JSON.parse(r); + } catch (e) { + result = {'code': 'err'}; + } + if (result.code === 401) { + self.notify('登录失效', '登录已失效,请重新登录', function () { + window.location.reload(); + window.location.hash = ''; + }); + loadBar.finish(); + return; + } + if (result.code === 403) { + self.tab.change('/403'); + loadBar.finish(); + return; + } + if (result.code === 404) { + self.tab.change('/404'); + loadBar.finish(); + return; + } + if (result.code === 500) { + self.tab.change('/500'); + loadBar.finish(); + return; + } + callback({html: r, url: url}); + loadBar.finish() + }, + error: function (res) { + if (res.status === 404) { + self.tab.change('/404'); + } + if (res.status === 403) { + self.tab.change('/403'); + } + if (res.status === 500) { + self.tab.change('/500'); + } + self.log( + '请求视图文件异常\n文件路径:' + url + '\n状态:' + res.status + ); + loadBar.error(); + } + }) + }; + + self.tab = { + isInit: false, + data: [], + tabMenuTplId: 'TPL-app-tabsmenu', + minLeft: null, + maxLeft: null, + wrap: '.febs-tabs-wrap', + menu: '.febs-tabs-menu', + next: '.febs-tabs-next', + prev: '.febs-tabs-prev', + step: 200, + init: function () { + var tab = this; + var btnCls = tab.wrap + ' .febs-tabs-btn'; + + layui.dropdown.render({ + elem: '.febs-tabs-down', + click: function (name) { + if (name === 'all') { + tab.delAll(); + } + if (name === 'other') { + tab.delOther(); + } + if (name === 'current') { + tab.del(layui.febs.route.fileurl); + } + if (name === 'refresh') { + tab.refresh(); + } + }, + options: [ + { + name: 'current', + title: '关闭当前选项卡' + }, + { + name: 'other', + title: '关闭其他选项卡' + }, + { + name: 'all', + title: '关闭所有选项卡' + }, + { + name: 'refresh', + title: '刷新当前选项卡' + } + ] + }); + + $(document).on('click', btnCls, function (e) { + var url = $(this).attr('lay-url'); + if ($(e.target).hasClass('febs-tabs-close')) { + tab.del(url) + } else { + var type = $(this).attr('data-type'); + if (type === 'page') { + tab.change(tab.has(url)) + } else if (type === 'prev' || type === 'next') { + tab.menuElem = $(tab.menu); + var menu = tab.menuElem; + tab.minLeft = tab.minLeft || parseInt(menu.css('left')); + tab.maxLeft = tab.maxLeft || $(tab.next).offset().left; + + var left = 0; + if (type === 'prev') { + left = parseInt(menu.css('left')) + tab.step; + if (left >= tab.minLeft) left = tab.minLeft + } else { + left = parseInt(menu.css('left')) - tab.step; + var last = menu.find('li:last'); + if (last.offset().left + last.width() < tab.maxLeft) return + } + menu.css('left', left) + } + } + }); + + $('.febs-tabs-hidden').addClass('layui-show'); + this.isInit = true + }, + has: function (url) { + var exists = false; + layui.each(this.data, function (i, data) { + if (data.fileurl === url) return (exists = data) + }); + return exists + }, + delAll: function (type) { + var tab = this; + var menuBtnClas = tab.menu + ' .febs-tabs-btn'; + $(menuBtnClas).each(function () { + var url = $(this).attr('lay-url'); + if (url === conf.entry) return true; + tab.del(url) + }) + }, + delOther: function () { + var tab = this; + var menuBtnClas = tab.menu + ' .febs-tabs-btn'; + $(menuBtnClas + '.febs-tabs-active') + .siblings() + .each(function () { + var url = $(this).attr('lay-url'); + tab.del(url) + }) + }, + del: function (url, backgroundDel) { + var tab = this; + if (tab.data.length <= 1 && backgroundDel === undefined) return; + layui.each(tab.data, function (i, data) { + if (data.fileurl === url) { + tab.data.splice(i, 1); + return true + } + }); + + var lay = '[lay-url="' + url + '"]'; + var thisBody = $( + '#' + conf.containerBody + ' > .febs-tabs-item' + lay + ); + var thisMenu = $(this.menu).find(lay); + thisMenu.remove(); + thisBody.remove(); + + if (backgroundDel === undefined) { + if (thisMenu.hasClass('febs-tabs-active')) { + $(this.menu + ' li:last').click() + } + } + }, + refresh: function (url) { + url = url || layui.febs.route.fileurl; + if (this.has(url)) { + this.del(url, true); + self.renderTabs(url) + } + }, + clear: function () { + this.data = []; + this.isInit = false; + $(document).off('click', this.wrap + ' .febs-tabs-btn') + }, + change: function (route, callback) { + if (typeof route == 'string') { + route = layui.router('#' + route); + route.fileurl = '/' + route.path.join('/') + } + var fileurl = route.fileurl; + var tab = this; + if (tab.isInit === false) tab.init(); + + var changeView = function (lay) { + $('#' + conf.containerBody + ' > .febs-tabs-item' + lay) + .show() + .siblings() + .hide() + }; + + var lay = '[lay-url="' + fileurl + '"]'; + + var activeCls = 'febs-tabs-active'; + + var existsTab = tab.has(fileurl); + if (existsTab) { + var menu = $(this.menu); + var currentMenu = menu.find(lay); + + if (existsTab.href !== route.href) { + tab.del(existsTab.fileurl, true); + tab.change(route); + return false + //tab.del(route.fileurl) + } + currentMenu + .addClass(activeCls) + .siblings() + .removeClass(activeCls); + + changeView(lay); + + this.minLeft = this.minLeft || parseInt(menu.css('left')); + + var offsetLeft = currentMenu.offset().left; + if (offsetLeft - this.minLeft - $(this.next).width() < 0) { + $(this.prev).click() + } else if (offsetLeft - this.minLeft > menu.width() * 0.5) { + $(this.next).click() + } + $(document).scrollTop(-100); + + layui.febs.navigate(route.href) + } else { + self.loadHtml(fileurl, function (res) { + var htmlElem = $( + "<div><div class='febs-tabs-item' lay-url='" + + fileurl + + "'>" + + res.html + + '</div></div>' + ); + var params = self.fillHtml(fileurl, htmlElem, 'prepend'); + route.title = params.title; + tab.data.push(route); + layui.febs.render(tab.tabMenuTplId); + + var currentMenu = $(tab.menu + ' ' + lay); + currentMenu.addClass(activeCls); + + changeView(lay); + + if ($.isFunction(callback)) callback(params) + }) + } + layui.febs.sidebarFocus(route.href); + return false + }, + onChange: function () { + } + }; + + self.fillHtml = function (url, htmlElem, modeName) { + var fluid = htmlElem.find('.layui-fluid[lay-title]'); + var title = ''; + if (fluid.length > 0) { + title = fluid.attr('lay-title'); + // self.setTitle(title) + } + + var container = self.containerBody || self.container; + container[modeName](htmlElem.html()); + if (modeName === 'prepend') { + self.parse(container.children('[lay-url="' + url + '"]')) + } else { + self.parse(container) + } + return {title: title, url: url, htmlElem: htmlElem} + }; + //解析普通文件 + self.render = function (fileurl, callback) { + self.loadHtml(fileurl, function (res) { + var htmlElem = $('<div>' + res.html + '</div>'); + var params = self.fillHtml(res.url, htmlElem, 'html'); + if ($.isFunction(callback)) callback(params) + }) + }; + //加载 tab + self.renderTabs = function (route, callback) { + var tab = self.tab; + tab.change(route, callback) + }; + //加载layout文件 + self.renderLayout = function (callback, url) { + if (url === undefined) url = 'layout'; + self.containerBody = null; + + self.render(url, function (res) { + self.containerBody = $('#' + conf.containerBody); + if (conf.viewTabs === true) { + self.containerBody.addClass('febs-tabs-body') + } + layui.febs.appBody = self.containerBody; + if ($.isFunction(callback)) callback() + }) + }; + //加载单页面 + self.renderIndPage = function (fileurl, callback) { + self.renderLayout(function () { + self.containerBody = null; + if ($.isFunction(callback)) callback() + }, fileurl) + }; + self.log = function (msg, type) { + if (conf.debug === false) return; + if (type === undefined) type = 'error'; + console.error(msg) + }; + self.createRequestParams = function (params) { + var success = params.success; + var error = params.error; + + if (params.api) { + if (!layui.api[params.api]) { + self.log('请求错误 api.' + params.api + ' 不存在'); + return + } + params.url = conf.requestUrl + layui.api[params.api] + } else if (params.url) { + params.url = conf.requestUrl + params.url + } + + var defaultParams = { + timeout: 5000, + type: 'get', + dataType: 'json', + headers: conf.requestHeaders || {}, + success: function (res) { + if ($.isFunction(success)) success(res) + }, + error: function (res) { + if (res.status === conf.logoutHttpCode) { + // do nothing + } else { + layer.msg('请检查您的网络连接'); + self.log('请检查您的网络连接,错误信息:' + JSON.stringify(res)) + } + + if ($.isFunction(error)) error(res) + } + }; + + if (self.ie8) { + if (conf.debug) $.support.cors = true; + defaultParams.cache = false + } + delete params.success; + delete params.error; + + return $.extend(defaultParams, params) + }; + self.request = function (params) { + params = self.createRequestParams(params); + $.ajax(params) + }; + exports('view', self) + } + ); diff --git a/src/main/resources/static/layui/css/layui.css b/src/main/resources/static/layui/css/layui.css new file mode 100644 index 0000000..0e8508f --- /dev/null +++ b/src/main/resources/static/layui/css/layui.css @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + .layui-inline,img{display:inline-block;vertical-align:middle}h1,h2,h3,h4,h5,h6{font-weight:400}.layui-edge,.layui-header,.layui-inline,.layui-main{position:relative}.layui-body,.layui-edge,.layui-elip{overflow:hidden}.layui-btn,.layui-edge,.layui-inline,img{vertical-align:middle}.layui-btn,.layui-disabled,.layui-icon,.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-elip,.layui-form-checkbox span,.layui-form-pane .layui-form-label{text-overflow:ellipsis;white-space:nowrap}.layui-breadcrumb,.layui-tree-btnGroup{visibility:hidden}blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,li,ol,p,pre,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}a:active,a:hover{outline:0}img{border:none}li{list-style:none}table{border-collapse:collapse;border-spacing:0}h4,h5,h6{font-size:100%}button,input,optgroup,option,select,textarea{font-family:inherit;font-size:inherit;font-style:inherit;font-weight:inherit;outline:0}pre{white-space:pre-wrap;white-space:-moz-pre-wrap;white-space:-pre-wrap;white-space:-o-pre-wrap;word-wrap:break-word}body{line-height:24px;font:14px Helvetica Neue,Helvetica,PingFang SC,Tahoma,Arial,sans-serif}hr{height:1px;margin:10px 0;border:0;clear:both}a{color:#333;text-decoration:none}a:hover{color:#777}a cite{font-style:normal;*cursor:pointer}.layui-border-box,.layui-border-box *{box-sizing:border-box}.layui-box,.layui-box *{box-sizing:content-box}.layui-clear{clear:both;*zoom:1}.layui-clear:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-inline{*display:inline;*zoom:1}.layui-edge{display:inline-block;width:0;height:0;border-width:6px;border-style:dashed;border-color:transparent}.layui-edge-top{top:-4px;border-bottom-color:#999;border-bottom-style:solid}.layui-edge-right{border-left-color:#999;border-left-style:solid}.layui-edge-bottom{top:2px;border-top-color:#999;border-top-style:solid}.layui-edge-left{border-right-color:#999;border-right-style:solid}.layui-disabled,.layui-disabled:hover{color:#d2d2d2!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=250);src:url(../font/iconfont.eot?v=250#iefix) format('embedded-opentype'),url(../font/iconfont.woff2?v=250) format('woff2'),url(../font/iconfont.woff?v=250) format('woff'),url(../font/iconfont.ttf?v=250) format('truetype'),url(../font/iconfont.svg?v=250#layui-icon) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-icon-reply-fill:before{content:"\e611"}.layui-icon-set-fill:before{content:"\e614"}.layui-icon-menu-fill:before{content:"\e60f"}.layui-icon-search:before{content:"\e615"}.layui-icon-share:before{content:"\e641"}.layui-icon-set-sm:before{content:"\e620"}.layui-icon-engine:before{content:"\e628"}.layui-icon-close:before{content:"\1006"}.layui-icon-close-fill:before{content:"\1007"}.layui-icon-chart-screen:before{content:"\e629"}.layui-icon-star:before{content:"\e600"}.layui-icon-circle-dot:before{content:"\e617"}.layui-icon-chat:before{content:"\e606"}.layui-icon-release:before{content:"\e609"}.layui-icon-list:before{content:"\e60a"}.layui-icon-chart:before{content:"\e62c"}.layui-icon-ok-circle:before{content:"\1005"}.layui-icon-layim-theme:before{content:"\e61b"}.layui-icon-table:before{content:"\e62d"}.layui-icon-right:before{content:"\e602"}.layui-icon-left:before{content:"\e603"}.layui-icon-cart-simple:before{content:"\e698"}.layui-icon-face-cry:before{content:"\e69c"}.layui-icon-face-smile:before{content:"\e6af"}.layui-icon-survey:before{content:"\e6b2"}.layui-icon-tree:before{content:"\e62e"}.layui-icon-upload-circle:before{content:"\e62f"}.layui-icon-add-circle:before{content:"\e61f"}.layui-icon-download-circle:before{content:"\e601"}.layui-icon-templeate-1:before{content:"\e630"}.layui-icon-util:before{content:"\e631"}.layui-icon-face-surprised:before{content:"\e664"}.layui-icon-edit:before{content:"\e642"}.layui-icon-speaker:before{content:"\e645"}.layui-icon-down:before{content:"\e61a"}.layui-icon-file:before{content:"\e621"}.layui-icon-layouts:before{content:"\e632"}.layui-icon-rate-half:before{content:"\e6c9"}.layui-icon-add-circle-fine:before{content:"\e608"}.layui-icon-prev-circle:before{content:"\e633"}.layui-icon-read:before{content:"\e705"}.layui-icon-404:before{content:"\e61c"}.layui-icon-carousel:before{content:"\e634"}.layui-icon-help:before{content:"\e607"}.layui-icon-code-circle:before{content:"\e635"}.layui-icon-water:before{content:"\e636"}.layui-icon-username:before{content:"\e66f"}.layui-icon-find-fill:before{content:"\e670"}.layui-icon-about:before{content:"\e60b"}.layui-icon-location:before{content:"\e715"}.layui-icon-up:before{content:"\e619"}.layui-icon-pause:before{content:"\e651"}.layui-icon-date:before{content:"\e637"}.layui-icon-layim-uploadfile:before{content:"\e61d"}.layui-icon-delete:before{content:"\e640"}.layui-icon-play:before{content:"\e652"}.layui-icon-top:before{content:"\e604"}.layui-icon-friends:before{content:"\e612"}.layui-icon-refresh-3:before{content:"\e9aa"}.layui-icon-ok:before{content:"\e605"}.layui-icon-layer:before{content:"\e638"}.layui-icon-face-smile-fine:before{content:"\e60c"}.layui-icon-dollar:before{content:"\e659"}.layui-icon-group:before{content:"\e613"}.layui-icon-layim-download:before{content:"\e61e"}.layui-icon-picture-fine:before{content:"\e60d"}.layui-icon-link:before{content:"\e64c"}.layui-icon-diamond:before{content:"\e735"}.layui-icon-log:before{content:"\e60e"}.layui-icon-rate-solid:before{content:"\e67a"}.layui-icon-fonts-del:before{content:"\e64f"}.layui-icon-unlink:before{content:"\e64d"}.layui-icon-fonts-clear:before{content:"\e639"}.layui-icon-triangle-r:before{content:"\e623"}.layui-icon-circle:before{content:"\e63f"}.layui-icon-radio:before{content:"\e643"}.layui-icon-align-center:before{content:"\e647"}.layui-icon-align-right:before{content:"\e648"}.layui-icon-align-left:before{content:"\e649"}.layui-icon-loading-1:before{content:"\e63e"}.layui-icon-return:before{content:"\e65c"}.layui-icon-fonts-strong:before{content:"\e62b"}.layui-icon-upload:before{content:"\e67c"}.layui-icon-dialogue:before{content:"\e63a"}.layui-icon-video:before{content:"\e6ed"}.layui-icon-headset:before{content:"\e6fc"}.layui-icon-cellphone-fine:before{content:"\e63b"}.layui-icon-add-1:before{content:"\e654"}.layui-icon-face-smile-b:before{content:"\e650"}.layui-icon-fonts-html:before{content:"\e64b"}.layui-icon-form:before{content:"\e63c"}.layui-icon-cart:before{content:"\e657"}.layui-icon-camera-fill:before{content:"\e65d"}.layui-icon-tabs:before{content:"\e62a"}.layui-icon-fonts-code:before{content:"\e64e"}.layui-icon-fire:before{content:"\e756"}.layui-icon-set:before{content:"\e716"}.layui-icon-fonts-u:before{content:"\e646"}.layui-icon-triangle-d:before{content:"\e625"}.layui-icon-tips:before{content:"\e702"}.layui-icon-picture:before{content:"\e64a"}.layui-icon-more-vertical:before{content:"\e671"}.layui-icon-flag:before{content:"\e66c"}.layui-icon-loading:before{content:"\e63d"}.layui-icon-fonts-i:before{content:"\e644"}.layui-icon-refresh-1:before{content:"\e666"}.layui-icon-rmb:before{content:"\e65e"}.layui-icon-home:before{content:"\e68e"}.layui-icon-user:before{content:"\e770"}.layui-icon-notice:before{content:"\e667"}.layui-icon-login-weibo:before{content:"\e675"}.layui-icon-voice:before{content:"\e688"}.layui-icon-upload-drag:before{content:"\e681"}.layui-icon-login-qq:before{content:"\e676"}.layui-icon-snowflake:before{content:"\e6b1"}.layui-icon-file-b:before{content:"\e655"}.layui-icon-template:before{content:"\e663"}.layui-icon-auz:before{content:"\e672"}.layui-icon-console:before{content:"\e665"}.layui-icon-app:before{content:"\e653"}.layui-icon-prev:before{content:"\e65a"}.layui-icon-website:before{content:"\e7ae"}.layui-icon-next:before{content:"\e65b"}.layui-icon-component:before{content:"\e857"}.layui-icon-more:before{content:"\e65f"}.layui-icon-login-wechat:before{content:"\e677"}.layui-icon-shrink-right:before{content:"\e668"}.layui-icon-spread-left:before{content:"\e66b"}.layui-icon-camera:before{content:"\e660"}.layui-icon-note:before{content:"\e66e"}.layui-icon-refresh:before{content:"\e669"}.layui-icon-female:before{content:"\e661"}.layui-icon-male:before{content:"\e662"}.layui-icon-password:before{content:"\e673"}.layui-icon-senior:before{content:"\e674"}.layui-icon-theme:before{content:"\e66a"}.layui-icon-tread:before{content:"\e6c5"}.layui-icon-praise:before{content:"\e6c6"}.layui-icon-star-fill:before{content:"\e658"}.layui-icon-rate:before{content:"\e67b"}.layui-icon-template-1:before{content:"\e656"}.layui-icon-vercode:before{content:"\e679"}.layui-icon-cellphone:before{content:"\e678"}.layui-icon-screen-full:before{content:"\e622"}.layui-icon-screen-restore:before{content:"\e758"}.layui-icon-cols:before{content:"\e610"}.layui-icon-export:before{content:"\e67d"}.layui-icon-print:before{content:"\e66d"}.layui-icon-slider:before{content:"\e714"}.layui-icon-addition:before{content:"\e624"}.layui-icon-subtraction:before{content:"\e67e"}.layui-icon-service:before{content:"\e626"}.layui-icon-transfer:before{content:"\e691"}.layui-main{width:1140px;margin:0 auto}.layui-header{z-index:1000;height:60px}.layui-header a:hover{transition:all .5s;-webkit-transition:all .5s}.layui-side{position:fixed;left:0;top:0;bottom:0;z-index:999;width:200px;overflow-x:hidden}.layui-side-scroll{position:relative;width:220px;height:100%;overflow-x:hidden}.layui-body{position:absolute;left:200px;right:0;top:0;bottom:0;z-index:998;width:auto;overflow-y:auto;box-sizing:border-box}.layui-layout-body{overflow:hidden}.layui-layout-admin .layui-header{background-color:#23262E}.layui-layout-admin .layui-side{top:60px;width:200px;overflow-x:hidden}.layui-layout-admin .layui-body{position:fixed;top:60px;bottom:44px}.layui-layout-admin .layui-main{width:auto;margin:0 15px}.layui-layout-admin .layui-footer{position:fixed;left:200px;right:0;bottom:0;height:44px;line-height:44px;padding:0 15px;background-color:#eee}.layui-layout-admin .layui-logo{position:absolute;left:0;top:0;width:200px;height:100%;line-height:60px;text-align:center;color:#009688;font-size:16px}.layui-layout-admin .layui-header .layui-nav{background:0 0}.layui-layout-left{position:absolute!important;left:200px;top:0}.layui-layout-right{position:absolute!important;right:0;top:0}.layui-container{position:relative;margin:0 auto;padding:0 15px;box-sizing:border-box}.layui-fluid{position:relative;margin:0 auto;padding:0 15px}.layui-row:after,.layui-row:before{content:'';display:block;clear:both}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9,.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9,.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9,.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{position:relative;display:block;box-sizing:border-box}.layui-col-xs1,.layui-col-xs10,.layui-col-xs11,.layui-col-xs12,.layui-col-xs2,.layui-col-xs3,.layui-col-xs4,.layui-col-xs5,.layui-col-xs6,.layui-col-xs7,.layui-col-xs8,.layui-col-xs9{float:left}.layui-col-xs1{width:8.33333333%}.layui-col-xs2{width:16.66666667%}.layui-col-xs3{width:25%}.layui-col-xs4{width:33.33333333%}.layui-col-xs5{width:41.66666667%}.layui-col-xs6{width:50%}.layui-col-xs7{width:58.33333333%}.layui-col-xs8{width:66.66666667%}.layui-col-xs9{width:75%}.layui-col-xs10{width:83.33333333%}.layui-col-xs11{width:91.66666667%}.layui-col-xs12{width:100%}.layui-col-xs-offset1{margin-left:8.33333333%}.layui-col-xs-offset2{margin-left:16.66666667%}.layui-col-xs-offset3{margin-left:25%}.layui-col-xs-offset4{margin-left:33.33333333%}.layui-col-xs-offset5{margin-left:41.66666667%}.layui-col-xs-offset6{margin-left:50%}.layui-col-xs-offset7{margin-left:58.33333333%}.layui-col-xs-offset8{margin-left:66.66666667%}.layui-col-xs-offset9{margin-left:75%}.layui-col-xs-offset10{margin-left:83.33333333%}.layui-col-xs-offset11{margin-left:91.66666667%}.layui-col-xs-offset12{margin-left:100%}@media screen and (max-width:768px){.layui-hide-xs{display:none!important}.layui-show-xs-block{display:block!important}.layui-show-xs-inline{display:inline!important}.layui-show-xs-inline-block{display:inline-block!important}}@media screen and (min-width:768px){.layui-container{width:750px}.layui-hide-sm{display:none!important}.layui-show-sm-block{display:block!important}.layui-show-sm-inline{display:inline!important}.layui-show-sm-inline-block{display:inline-block!important}.layui-col-sm1,.layui-col-sm10,.layui-col-sm11,.layui-col-sm12,.layui-col-sm2,.layui-col-sm3,.layui-col-sm4,.layui-col-sm5,.layui-col-sm6,.layui-col-sm7,.layui-col-sm8,.layui-col-sm9{float:left}.layui-col-sm1{width:8.33333333%}.layui-col-sm2{width:16.66666667%}.layui-col-sm3{width:25%}.layui-col-sm4{width:33.33333333%}.layui-col-sm5{width:41.66666667%}.layui-col-sm6{width:50%}.layui-col-sm7{width:58.33333333%}.layui-col-sm8{width:66.66666667%}.layui-col-sm9{width:75%}.layui-col-sm10{width:83.33333333%}.layui-col-sm11{width:91.66666667%}.layui-col-sm12{width:100%}.layui-col-sm-offset1{margin-left:8.33333333%}.layui-col-sm-offset2{margin-left:16.66666667%}.layui-col-sm-offset3{margin-left:25%}.layui-col-sm-offset4{margin-left:33.33333333%}.layui-col-sm-offset5{margin-left:41.66666667%}.layui-col-sm-offset6{margin-left:50%}.layui-col-sm-offset7{margin-left:58.33333333%}.layui-col-sm-offset8{margin-left:66.66666667%}.layui-col-sm-offset9{margin-left:75%}.layui-col-sm-offset10{margin-left:83.33333333%}.layui-col-sm-offset11{margin-left:91.66666667%}.layui-col-sm-offset12{margin-left:100%}}@media screen and (min-width:992px){.layui-container{width:970px}.layui-hide-md{display:none!important}.layui-show-md-block{display:block!important}.layui-show-md-inline{display:inline!important}.layui-show-md-inline-block{display:inline-block!important}.layui-col-md1,.layui-col-md10,.layui-col-md11,.layui-col-md12,.layui-col-md2,.layui-col-md3,.layui-col-md4,.layui-col-md5,.layui-col-md6,.layui-col-md7,.layui-col-md8,.layui-col-md9{float:left}.layui-col-md1{width:8.33333333%}.layui-col-md2{width:16.66666667%}.layui-col-md3{width:25%}.layui-col-md4{width:33.33333333%}.layui-col-md5{width:41.66666667%}.layui-col-md6{width:50%}.layui-col-md7{width:58.33333333%}.layui-col-md8{width:66.66666667%}.layui-col-md9{width:75%}.layui-col-md10{width:83.33333333%}.layui-col-md11{width:91.66666667%}.layui-col-md12{width:100%}.layui-col-md-offset1{margin-left:8.33333333%}.layui-col-md-offset2{margin-left:16.66666667%}.layui-col-md-offset3{margin-left:25%}.layui-col-md-offset4{margin-left:33.33333333%}.layui-col-md-offset5{margin-left:41.66666667%}.layui-col-md-offset6{margin-left:50%}.layui-col-md-offset7{margin-left:58.33333333%}.layui-col-md-offset8{margin-left:66.66666667%}.layui-col-md-offset9{margin-left:75%}.layui-col-md-offset10{margin-left:83.33333333%}.layui-col-md-offset11{margin-left:91.66666667%}.layui-col-md-offset12{margin-left:100%}}@media screen and (min-width:1200px){.layui-container{width:1170px}.layui-hide-lg{display:none!important}.layui-show-lg-block{display:block!important}.layui-show-lg-inline{display:inline!important}.layui-show-lg-inline-block{display:inline-block!important}.layui-col-lg1,.layui-col-lg10,.layui-col-lg11,.layui-col-lg12,.layui-col-lg2,.layui-col-lg3,.layui-col-lg4,.layui-col-lg5,.layui-col-lg6,.layui-col-lg7,.layui-col-lg8,.layui-col-lg9{float:left}.layui-col-lg1{width:8.33333333%}.layui-col-lg2{width:16.66666667%}.layui-col-lg3{width:25%}.layui-col-lg4{width:33.33333333%}.layui-col-lg5{width:41.66666667%}.layui-col-lg6{width:50%}.layui-col-lg7{width:58.33333333%}.layui-col-lg8{width:66.66666667%}.layui-col-lg9{width:75%}.layui-col-lg10{width:83.33333333%}.layui-col-lg11{width:91.66666667%}.layui-col-lg12{width:100%}.layui-col-lg-offset1{margin-left:8.33333333%}.layui-col-lg-offset2{margin-left:16.66666667%}.layui-col-lg-offset3{margin-left:25%}.layui-col-lg-offset4{margin-left:33.33333333%}.layui-col-lg-offset5{margin-left:41.66666667%}.layui-col-lg-offset6{margin-left:50%}.layui-col-lg-offset7{margin-left:58.33333333%}.layui-col-lg-offset8{margin-left:66.66666667%}.layui-col-lg-offset9{margin-left:75%}.layui-col-lg-offset10{margin-left:83.33333333%}.layui-col-lg-offset11{margin-left:91.66666667%}.layui-col-lg-offset12{margin-left:100%}}.layui-col-space1{margin:-.5px}.layui-col-space1>*{padding:.5px}.layui-col-space3{margin:-1.5px}.layui-col-space3>*{padding:1.5px}.layui-col-space5{margin:-2.5px}.layui-col-space5>*{padding:2.5px}.layui-col-space8{margin:-3.5px}.layui-col-space8>*{padding:3.5px}.layui-col-space10{margin:-5px}.layui-col-space10>*{padding:5px}.layui-col-space12{margin:-6px}.layui-col-space12>*{padding:6px}.layui-col-space15{margin:-7.5px}.layui-col-space15>*{padding:7.5px}.layui-col-space18{margin:-9px}.layui-col-space18>*{padding:9px}.layui-col-space20{margin:-10px}.layui-col-space20>*{padding:10px}.layui-col-space22{margin:-11px}.layui-col-space22>*{padding:11px}.layui-col-space25{margin:-12.5px}.layui-col-space25>*{padding:12.5px}.layui-col-space30{margin:-15px}.layui-col-space30>*{padding:15px}.layui-btn,.layui-input,.layui-select,.layui-textarea,.layui-upload-button{outline:0;-webkit-appearance:none;transition:all .3s;-webkit-transition:all .3s;box-sizing:border-box}.layui-elem-quote{margin-bottom:10px;padding:15px;line-height:22px;border-left:5px solid #009688;border-radius:0 2px 2px 0;background-color:#f2f2f2}.layui-quote-nm{border-style:solid;border-width:1px 1px 1px 5px;background:0 0}.layui-elem-field{margin-bottom:10px;padding:0;border-width:1px;border-style:solid}.layui-elem-field legend{margin-left:20px;padding:0 10px;font-size:20px;font-weight:300}.layui-field-title{margin:10px 0 20px;border-width:1px 0 0}.layui-field-box{padding:10px 15px}.layui-field-title .layui-field-box{padding:10px 0}.layui-progress{position:relative;height:6px;border-radius:20px;background-color:#e2e2e2}.layui-progress-bar{position:absolute;left:0;top:0;width:0;max-width:100%;height:6px;border-radius:20px;text-align:right;background-color:#5FB878;transition:all .3s;-webkit-transition:all .3s}.layui-progress-big,.layui-progress-big .layui-progress-bar{height:18px;line-height:18px}.layui-progress-text{position:relative;top:-20px;line-height:18px;font-size:12px;color:#666}.layui-progress-big .layui-progress-text{position:static;padding:0 10px;color:#fff}.layui-collapse{border-width:1px;border-style:solid;border-radius:2px}.layui-colla-content,.layui-colla-item{border-top-width:1px;border-top-style:solid}.layui-colla-item:first-child{border-top:none}.layui-colla-title{position:relative;height:42px;line-height:42px;padding:0 15px 0 35px;color:#333;background-color:#f2f2f2;cursor:pointer;font-size:14px;overflow:hidden}.layui-colla-content{display:none;padding:10px 15px;line-height:22px;color:#666}.layui-colla-icon{position:absolute;left:15px;top:0;font-size:14px}.layui-card{margin-bottom:15px;border-radius:2px;background-color:#fff;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.layui-card:last-child{margin-bottom:0}.layui-card-header{position:relative;height:42px;line-height:42px;padding:0 15px;border-bottom:1px solid #f6f6f6;color:#333;border-radius:2px 2px 0 0;font-size:14px}.layui-bg-black,.layui-bg-blue,.layui-bg-cyan,.layui-bg-green,.layui-bg-orange,.layui-bg-red{color:#fff!important}.layui-card-body{position:relative;padding:10px 15px;line-height:24px}.layui-card-body[pad15]{padding:15px}.layui-card-body[pad20]{padding:20px}.layui-card-body .layui-table{margin:5px 0}.layui-card .layui-tab{margin:0}.layui-panel-window{position:relative;padding:15px;border-radius:0;border-top:5px solid #E6E6E6;background-color:#fff}.layui-auxiliar-moving{position:fixed;left:0;right:0;top:0;bottom:0;width:100%;height:100%;background:0 0;z-index:9999999999}.layui-form-label,.layui-form-mid,.layui-form-select,.layui-input-block,.layui-input-inline,.layui-textarea{position:relative}.layui-bg-red{background-color:#FF5722!important}.layui-bg-orange{background-color:#FFB800!important}.layui-bg-green{background-color:#009688!important}.layui-bg-cyan{background-color:#2F4056!important}.layui-bg-blue{background-color:#1E9FFF!important}.layui-bg-black{background-color:#393D49!important}.layui-bg-gray{background-color:#eee!important;color:#666!important}.layui-badge-rim,.layui-colla-content,.layui-colla-item,.layui-collapse,.layui-elem-field,.layui-form-pane .layui-form-item[pane],.layui-form-pane .layui-form-label,.layui-input,.layui-layedit,.layui-layedit-tool,.layui-quote-nm,.layui-select,.layui-tab-bar,.layui-tab-card,.layui-tab-title,.layui-tab-title .layui-this:after,.layui-textarea{border-color:#e6e6e6}.layui-timeline-item:before,hr{background-color:#e6e6e6}.layui-text{line-height:22px;font-size:14px;color:#666}.layui-text h1,.layui-text h2,.layui-text h3{font-weight:500;color:#333}.layui-text h1{font-size:30px}.layui-text h2{font-size:24px}.layui-text h3{font-size:18px}.layui-text a:not(.layui-btn){color:#01AAED}.layui-text a:not(.layui-btn):hover{text-decoration:underline}.layui-text ul{padding:5px 0 5px 15px}.layui-text ul li{margin-top:5px;list-style-type:disc}.layui-text em,.layui-word-aux{color:#999!important;padding:0 5px!important}.layui-btn{display:inline-block;height:38px;line-height:38px;padding:0 18px;background-color:#009688;color:#fff;white-space:nowrap;text-align:center;font-size:14px;border:none;border-radius:2px;cursor:pointer}.layui-btn:hover{opacity:.8;filter:alpha(opacity=80);color:#fff}.layui-btn:active{opacity:1;filter:alpha(opacity=100)}.layui-btn+.layui-btn{margin-left:10px}.layui-btn-container{font-size:0}.layui-btn-container .layui-btn{margin-right:10px;margin-bottom:10px}.layui-btn-container .layui-btn+.layui-btn{margin-left:0}.layui-table .layui-btn-container .layui-btn{margin-bottom:9px}.layui-btn-radius{border-radius:100px}.layui-btn .layui-icon{margin-right:3px;font-size:18px;vertical-align:bottom;vertical-align:middle\9}.layui-btn-primary{border:1px solid #C9C9C9;background-color:#fff;color:#555}.layui-btn-primary:hover{border-color:#009688;color:#333}.layui-btn-normal{background-color:#1E9FFF}.layui-btn-warm{background-color:#FFB800}.layui-btn-danger{background-color:#FF5722}.layui-btn-checked{background-color:#5FB878}.layui-btn-disabled,.layui-btn-disabled:active,.layui-btn-disabled:hover{border:1px solid #e6e6e6;background-color:#FBFBFB;color:#C9C9C9;cursor:not-allowed;opacity:1}.layui-btn-lg{height:44px;line-height:44px;padding:0 25px;font-size:16px}.layui-btn-sm{height:30px;line-height:30px;padding:0 10px;font-size:12px}.layui-btn-sm i{font-size:16px!important}.layui-btn-xs{height:22px;line-height:22px;padding:0 5px;font-size:12px}.layui-btn-xs i{font-size:14px!important}.layui-btn-group{display:inline-block;vertical-align:middle;font-size:0}.layui-btn-group .layui-btn{margin-left:0!important;margin-right:0!important;border-left:1px solid rgba(255,255,255,.5);border-radius:0}.layui-btn-group .layui-btn-primary{border-left:none}.layui-btn-group .layui-btn-primary:hover{border-color:#C9C9C9;color:#009688}.layui-btn-group .layui-btn:first-child{border-left:none;border-radius:2px 0 0 2px}.layui-btn-group .layui-btn-primary:first-child{border-left:1px solid #c9c9c9}.layui-btn-group .layui-btn:last-child{border-radius:0 2px 2px 0}.layui-btn-group .layui-btn+.layui-btn{margin-left:0}.layui-btn-group+.layui-btn-group{margin-left:10px}.layui-btn-fluid{width:100%}.layui-input,.layui-select,.layui-textarea{height:38px;line-height:1.3;line-height:38px\9;border-width:1px;border-style:solid;background-color:#fff;border-radius:2px}.layui-input::-webkit-input-placeholder,.layui-select::-webkit-input-placeholder,.layui-textarea::-webkit-input-placeholder{line-height:1.3}.layui-input,.layui-textarea{display:block;width:100%;padding-left:10px}.layui-input:hover,.layui-textarea:hover{border-color:#D2D2D2!important}.layui-input:focus,.layui-textarea:focus{border-color:#C9C9C9!important}.layui-textarea{min-height:100px;height:auto;line-height:20px;padding:6px 10px;resize:vertical}.layui-select{padding:0 10px}.layui-form input[type=checkbox],.layui-form input[type=radio],.layui-form select{display:none}.layui-form [lay-ignore]{display:initial}.layui-form-item{margin-bottom:15px;clear:both;*zoom:1}.layui-form-item:after{content:'\20';clear:both;*zoom:1;display:block;height:0}.layui-form-label{float:left;display:block;padding:9px 15px;width:80px;font-weight:400;line-height:20px;text-align:right}.layui-form-label-col{display:block;float:none;padding:9px 0;line-height:20px;text-align:left}.layui-form-item .layui-inline{margin-bottom:5px;margin-right:10px}.layui-input-block{margin-left:110px;min-height:36px}.layui-input-inline{display:inline-block;vertical-align:middle}.layui-form-item .layui-input-inline{float:left;width:190px;margin-right:10px}.layui-form-text .layui-input-inline{width:auto}.layui-form-mid{float:left;display:block;padding:9px 0!important;line-height:20px;margin-right:10px}.layui-form-danger+.layui-form-select .layui-input,.layui-form-danger:focus{border-color:#FF5722!important}.layui-form-select .layui-input{padding-right:30px;cursor:pointer}.layui-form-select .layui-edge{position:absolute;right:10px;top:50%;margin-top:-3px;cursor:pointer;border-width:6px;border-top-color:#c2c2c2;border-top-style:solid;transition:all .3s;-webkit-transition:all .3s}.layui-form-select dl{display:none;position:absolute;left:0;top:42px;padding:5px 0;z-index:899;min-width:100%;border:1px solid #d2d2d2;max-height:300px;overflow-y:auto;background-color:#fff;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12);box-sizing:border-box}.layui-form-select dl dd,.layui-form-select dl dt{padding:0 10px;line-height:36px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.layui-form-select dl dt{font-size:12px;color:#999}.layui-form-select dl dd{cursor:pointer}.layui-form-select dl dd:hover{background-color:#f2f2f2;-webkit-transition:.5s all;transition:.5s all}.layui-form-select .layui-select-group dd{padding-left:20px}.layui-form-select dl dd.layui-select-tips{padding-left:10px!important;color:#999}.layui-form-select dl dd.layui-this{background-color:#5FB878;color:#fff}.layui-form-checkbox,.layui-form-select dl dd.layui-disabled{background-color:#fff}.layui-form-selected dl{display:block}.layui-form-checkbox,.layui-form-checkbox *,.layui-form-switch{display:inline-block;vertical-align:middle}.layui-form-selected .layui-edge{margin-top:-9px;-webkit-transform:rotate(180deg);transform:rotate(180deg);margin-top:-3px\9}:root .layui-form-selected .layui-edge{margin-top:-9px\0/IE9}.layui-form-selectup dl{top:auto;bottom:42px}.layui-select-none{margin:5px 0;text-align:center;color:#999}.layui-select-disabled .layui-disabled{border-color:#eee!important}.layui-select-disabled .layui-edge{border-top-color:#d2d2d2}.layui-form-checkbox{position:relative;height:30px;line-height:30px;margin-right:10px;padding-right:30px;cursor:pointer;font-size:0;-webkit-transition:.1s linear;transition:.1s linear;box-sizing:border-box}.layui-form-checkbox span{padding:0 10px;height:100%;font-size:14px;border-radius:2px 0 0 2px;background-color:#d2d2d2;color:#fff;overflow:hidden}.layui-form-checkbox:hover span{background-color:#c2c2c2}.layui-form-checkbox i{position:absolute;right:0;top:0;width:30px;height:28px;border:1px solid #d2d2d2;border-left:none;border-radius:0 2px 2px 0;color:#fff;font-size:20px;text-align:center}.layui-form-checkbox:hover i{border-color:#c2c2c2;color:#c2c2c2}.layui-form-checked,.layui-form-checked:hover{border-color:#5FB878}.layui-form-checked span,.layui-form-checked:hover span{background-color:#5FB878}.layui-form-checked i,.layui-form-checked:hover i{color:#5FB878}.layui-form-item .layui-form-checkbox{margin-top:4px}.layui-form-checkbox[lay-skin=primary]{height:auto!important;line-height:normal!important;min-width:18px;min-height:18px;border:none!important;margin-right:0;padding-left:28px;padding-right:0;background:0 0}.layui-form-checkbox[lay-skin=primary] span{padding-left:0;padding-right:15px;line-height:18px;background:0 0;color:#666}.layui-form-checkbox[lay-skin=primary] i{right:auto;left:0;width:16px;height:16px;line-height:16px;border:1px solid #d2d2d2;font-size:12px;border-radius:2px;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-checkbox[lay-skin=primary]:hover i{border-color:#5FB878;color:#fff}.layui-form-checked[lay-skin=primary] i{border-color:#5FB878!important;background-color:#5FB878;color:#fff}.layui-checkbox-disbaled[lay-skin=primary] span{background:0 0!important;color:#c2c2c2}.layui-checkbox-disbaled[lay-skin=primary]:hover i{border-color:#d2d2d2}.layui-form-item .layui-form-checkbox[lay-skin=primary]{margin-top:10px}.layui-form-switch{position:relative;height:22px;line-height:22px;min-width:35px;padding:0 5px;margin-top:8px;border:1px solid #d2d2d2;border-radius:20px;cursor:pointer;background-color:#fff;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch i{position:absolute;left:5px;top:3px;width:16px;height:16px;border-radius:20px;background-color:#d2d2d2;-webkit-transition:.1s linear;transition:.1s linear}.layui-form-switch em{position:relative;top:0;width:25px;margin-left:21px;padding:0!important;text-align:center!important;color:#999!important;font-style:normal!important;font-size:12px}.layui-form-onswitch{border-color:#5FB878;background-color:#5FB878}.layui-checkbox-disbaled,.layui-checkbox-disbaled i{border-color:#e2e2e2!important}.layui-form-onswitch i{left:100%;margin-left:-21px;background-color:#fff}.layui-form-onswitch em{margin-left:5px;margin-right:21px;color:#fff!important}.layui-checkbox-disbaled span{background-color:#e2e2e2!important}.layui-checkbox-disbaled:hover i{color:#fff!important}[lay-radio]{display:none}.layui-form-radio,.layui-form-radio *{display:inline-block;vertical-align:middle}.layui-form-radio{line-height:28px;margin:6px 10px 0 0;padding-right:10px;cursor:pointer;font-size:0}.layui-form-radio *{font-size:14px}.layui-form-radio>i{margin-right:8px;font-size:22px;color:#c2c2c2}.layui-form-radio>i:hover,.layui-form-radioed>i{color:#5FB878}.layui-radio-disbaled>i{color:#e2e2e2!important}.layui-form-pane .layui-form-label{width:110px;padding:8px 15px;height:38px;line-height:20px;border-width:1px;border-style:solid;border-radius:2px 0 0 2px;text-align:center;background-color:#FBFBFB;overflow:hidden;box-sizing:border-box}.layui-form-pane .layui-input-inline{margin-left:-1px}.layui-form-pane .layui-input-block{margin-left:110px;left:-1px}.layui-form-pane .layui-input{border-radius:0 2px 2px 0}.layui-form-pane .layui-form-text .layui-form-label{float:none;width:100%;border-radius:2px;box-sizing:border-box;text-align:left}.layui-form-pane .layui-form-text .layui-input-inline{display:block;margin:0;top:-1px;clear:both}.layui-form-pane .layui-form-text .layui-input-block{margin:0;left:0;top:-1px}.layui-form-pane .layui-form-text .layui-textarea{min-height:100px;border-radius:0 0 2px 2px}.layui-form-pane .layui-form-checkbox{margin:4px 0 4px 10px}.layui-form-pane .layui-form-radio,.layui-form-pane .layui-form-switch{margin-top:6px;margin-left:10px}.layui-form-pane .layui-form-item[pane]{position:relative;border-width:1px;border-style:solid}.layui-form-pane .layui-form-item[pane] .layui-form-label{position:absolute;left:0;top:0;height:100%;border-width:0 1px 0 0}.layui-form-pane .layui-form-item[pane] .layui-input-inline{margin-left:110px}@media screen and (max-width:450px){.layui-form-item .layui-form-label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-form-item .layui-inline{display:block;margin-right:0;margin-bottom:20px;clear:both}.layui-form-item .layui-inline:after{content:'\20';clear:both;display:block;height:0}.layui-form-item .layui-input-inline{display:block;float:none;left:-3px;width:auto;margin:0 0 10px 112px}.layui-form-item .layui-input-inline+.layui-form-mid{margin-left:110px;top:-5px;padding:0}.layui-form-item .layui-form-checkbox{margin-right:5px;margin-bottom:5px}}.layui-layedit{border-width:1px;border-style:solid;border-radius:2px}.layui-layedit-tool{padding:3px 5px;border-bottom-width:1px;border-bottom-style:solid;font-size:0}.layedit-tool-fixed{position:fixed;top:0;border-top:1px solid #e2e2e2}.layui-layedit-tool .layedit-tool-mid,.layui-layedit-tool .layui-icon{display:inline-block;vertical-align:middle;text-align:center;font-size:14px}.layui-layedit-tool .layui-icon{position:relative;width:32px;height:30px;line-height:30px;margin:3px 5px;color:#777;cursor:pointer;border-radius:2px}.layui-layedit-tool .layui-icon:hover{color:#393D49}.layui-layedit-tool .layui-icon:active{color:#000}.layui-layedit-tool .layedit-tool-active{background-color:#e2e2e2;color:#000}.layui-layedit-tool .layui-disabled,.layui-layedit-tool .layui-disabled:hover{color:#d2d2d2;cursor:not-allowed}.layui-layedit-tool .layedit-tool-mid{width:1px;height:18px;margin:0 10px;background-color:#d2d2d2}.layedit-tool-html{width:50px!important;font-size:30px!important}.layedit-tool-b,.layedit-tool-code,.layedit-tool-help{font-size:16px!important}.layedit-tool-d,.layedit-tool-face,.layedit-tool-image,.layedit-tool-unlink{font-size:18px!important}.layedit-tool-image input{position:absolute;font-size:0;left:0;top:0;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-layedit-iframe iframe{display:block;width:100%}#LAY_layedit_code{overflow:hidden}.layui-laypage{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;margin:10px 0;font-size:0}.layui-laypage>a:first-child,.layui-laypage>a:first-child em{border-radius:2px 0 0 2px}.layui-laypage>a:last-child,.layui-laypage>a:last-child em{border-radius:0 2px 2px 0}.layui-laypage>:first-child{margin-left:0!important}.layui-laypage>:last-child{margin-right:0!important}.layui-laypage a,.layui-laypage button,.layui-laypage input,.layui-laypage select,.layui-laypage span{border:1px solid #e2e2e2}.layui-laypage a,.layui-laypage span{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;padding:0 15px;height:28px;line-height:28px;margin:0 -1px 5px 0;background-color:#fff;color:#333;font-size:12px}.layui-flow-more a *,.layui-laypage input,.layui-table-view select[lay-ignore]{display:inline-block}.layui-laypage a:hover{color:#009688}.layui-laypage em{font-style:normal}.layui-laypage .layui-laypage-spr{color:#999;font-weight:700}.layui-laypage a{text-decoration:none}.layui-laypage .layui-laypage-curr{position:relative}.layui-laypage .layui-laypage-curr em{position:relative;color:#fff}.layui-laypage .layui-laypage-curr .layui-laypage-em{position:absolute;left:-1px;top:-1px;padding:1px;width:100%;height:100%;background-color:#009688}.layui-laypage-em{border-radius:2px}.layui-laypage-next em,.layui-laypage-prev em{font-family:Sim sun;font-size:16px}.layui-laypage .layui-laypage-count,.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh,.layui-laypage .layui-laypage-skip{margin-left:10px;margin-right:10px;padding:0;border:none}.layui-laypage .layui-laypage-limits,.layui-laypage .layui-laypage-refresh{vertical-align:top}.layui-laypage .layui-laypage-refresh i{font-size:18px;cursor:pointer}.layui-laypage select{height:22px;padding:3px;border-radius:2px;cursor:pointer}.layui-laypage .layui-laypage-skip{height:30px;line-height:30px;color:#999}.layui-laypage button,.layui-laypage input{height:30px;line-height:30px;border-radius:2px;vertical-align:top;background-color:#fff;box-sizing:border-box}.layui-laypage input{width:40px;margin:0 10px;padding:0 3px;text-align:center}.layui-laypage input:focus,.layui-laypage select:focus{border-color:#009688!important}.layui-laypage button{margin-left:10px;padding:0 10px;cursor:pointer}.layui-table,.layui-table-view{margin:10px 0}.layui-flow-more{margin:10px 0;text-align:center;color:#999;font-size:14px}.layui-flow-more a{height:32px;line-height:32px}.layui-flow-more a *{vertical-align:top}.layui-flow-more a cite{padding:0 20px;border-radius:3px;background-color:#eee;color:#333;font-style:normal}.layui-flow-more a cite:hover{opacity:.8}.layui-flow-more a i{font-size:30px;color:#737383}.layui-table{width:100%;background-color:#fff;color:#666}.layui-table tr{transition:all .3s;-webkit-transition:all .3s}.layui-table th{text-align:left;font-weight:400}.layui-table tbody tr:hover,.layui-table thead tr,.layui-table-click,.layui-table-header,.layui-table-hover,.layui-table-mend,.layui-table-patch,.layui-table-tool,.layui-table-total,.layui-table-total tr,.layui-table[lay-even] tr:nth-child(even){background-color:#f2f2f2}.layui-table td,.layui-table th,.layui-table-col-set,.layui-table-fixed-r,.layui-table-grid-down,.layui-table-header,.layui-table-page,.layui-table-tips-main,.layui-table-tool,.layui-table-total,.layui-table-view,.layui-table[lay-skin=line],.layui-table[lay-skin=row]{border-width:1px;border-style:solid;border-color:#e6e6e6}.layui-table td,.layui-table th{position:relative;padding:9px 15px;min-height:20px;line-height:20px;font-size:14px}.layui-table[lay-skin=line] td,.layui-table[lay-skin=line] th{border-width:0 0 1px}.layui-table[lay-skin=row] td,.layui-table[lay-skin=row] th{border-width:0 1px 0 0}.layui-table[lay-skin=nob] td,.layui-table[lay-skin=nob] th{border:none}.layui-table img{max-width:100px}.layui-table[lay-size=lg] td,.layui-table[lay-size=lg] th{padding:15px 30px}.layui-table-view .layui-table[lay-size=lg] .layui-table-cell{height:40px;line-height:40px}.layui-table[lay-size=sm] td,.layui-table[lay-size=sm] th{font-size:12px;padding:5px 10px}.layui-table-view .layui-table[lay-size=sm] .layui-table-cell{height:20px;line-height:20px}.layui-table[lay-data]{display:none}.layui-table-box{position:relative;overflow:hidden}.layui-table-view .layui-table{position:relative;width:auto;margin:0}.layui-table-view .layui-table[lay-skin=line]{border-width:0 1px 0 0}.layui-table-view .layui-table[lay-skin=row]{border-width:0 0 1px}.layui-table-view .layui-table td,.layui-table-view .layui-table th{padding:5px 0;border-top:none;border-left:none}.layui-table-view .layui-table th.layui-unselect .layui-table-cell span{cursor:pointer}.layui-table-view .layui-table td{cursor:default}.layui-table-view .layui-table td[data-edit=text]{cursor:text}.layui-table-view .layui-form-checkbox[lay-skin=primary] i{width:18px;height:18px}.layui-table-view .layui-form-radio{line-height:0;padding:0}.layui-table-view .layui-form-radio>i{margin:0;font-size:20px}.layui-table-init{position:absolute;left:0;top:0;width:100%;height:100%;text-align:center;z-index:110}.layui-table-init .layui-icon{position:absolute;left:50%;top:50%;margin:-15px 0 0 -15px;font-size:30px;color:#c2c2c2}.layui-table-header{border-width:0 0 1px;overflow:hidden}.layui-table-header .layui-table{margin-bottom:-1px}.layui-table-tool .layui-inline[lay-event]{position:relative;width:26px;height:26px;padding:5px;line-height:16px;margin-right:10px;text-align:center;color:#333;border:1px solid #ccc;cursor:pointer;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool .layui-inline[lay-event]:hover{border:1px solid #999}.layui-table-tool-temp{padding-right:120px}.layui-table-tool-self{position:absolute;right:17px;top:10px}.layui-table-tool .layui-table-tool-self .layui-inline[lay-event]{margin:0 0 0 10px}.layui-table-tool-panel{position:absolute;top:29px;left:-1px;padding:5px 0;min-width:150px;min-height:40px;border:1px solid #d2d2d2;text-align:left;overflow-y:auto;background-color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-table-cell,.layui-table-tool-panel li{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.layui-table-tool-panel li{padding:0 10px;line-height:30px;-webkit-transition:.5s all;transition:.5s all}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary]{width:100%;padding-left:28px}.layui-table-tool-panel li:hover{background-color:#f2f2f2}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] i{position:absolute;left:0;top:0}.layui-table-tool-panel li .layui-form-checkbox[lay-skin=primary] span{padding:0}.layui-table-tool .layui-table-tool-self .layui-table-tool-panel{left:auto;right:-1px}.layui-table-col-set{position:absolute;right:0;top:0;width:20px;height:100%;border-width:0 0 0 1px;background-color:#fff}.layui-table-sort{width:10px;height:20px;margin-left:5px;cursor:pointer!important}.layui-table-sort .layui-edge{position:absolute;left:5px;border-width:5px}.layui-table-sort .layui-table-sort-asc{top:3px;border-top:none;border-bottom-style:solid;border-bottom-color:#b2b2b2}.layui-table-sort .layui-table-sort-asc:hover{border-bottom-color:#666}.layui-table-sort .layui-table-sort-desc{bottom:5px;border-bottom:none;border-top-style:solid;border-top-color:#b2b2b2}.layui-table-sort .layui-table-sort-desc:hover{border-top-color:#666}.layui-table-sort[lay-sort=asc] .layui-table-sort-asc{border-bottom-color:#000}.layui-table-sort[lay-sort=desc] .layui-table-sort-desc{border-top-color:#000}.layui-table-cell{height:28px;line-height:28px;padding:0 15px;position:relative;box-sizing:border-box}.layui-table-cell .layui-form-checkbox[lay-skin=primary]{top:-1px;padding:0}.layui-table-cell .layui-table-link{color:#01AAED}.laytable-cell-checkbox,.laytable-cell-numbers,.laytable-cell-radio,.laytable-cell-space{padding:0;text-align:center}.layui-table-body{position:relative;overflow:auto;margin-right:-1px;margin-bottom:-1px}.layui-table-body .layui-none{line-height:26px;padding:15px;text-align:center;color:#999}.layui-table-fixed{position:absolute;left:0;top:0;z-index:101}.layui-table-fixed .layui-table-body{overflow:hidden}.layui-table-fixed-l{box-shadow:0 -1px 8px rgba(0,0,0,.08)}.layui-table-fixed-r{left:auto;right:-1px;border-width:0 0 0 1px;box-shadow:-1px 0 8px rgba(0,0,0,.08)}.layui-table-fixed-r .layui-table-header{position:relative;overflow:visible}.layui-table-mend{position:absolute;right:-49px;top:0;height:100%;width:50px}.layui-table-tool{position:relative;z-index:890;width:100%;min-height:50px;line-height:30px;padding:10px 15px;border-width:0 0 1px}.layui-table-tool .layui-btn-container{margin-bottom:-10px}.layui-table-page,.layui-table-total{border-width:1px 0 0;margin-bottom:-1px;overflow:hidden}.layui-table-page{position:relative;width:100%;padding:7px 7px 0;height:41px;font-size:12px;white-space:nowrap}.layui-table-page>div{height:26px}.layui-table-page .layui-laypage{margin:0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span{height:26px;line-height:26px;margin-bottom:10px;border:none;background:0 0}.layui-table-page .layui-laypage a,.layui-table-page .layui-laypage span.layui-laypage-curr{padding:0 12px}.layui-table-page .layui-laypage span{margin-left:0;padding:0}.layui-table-page .layui-laypage .layui-laypage-prev{margin-left:-7px!important}.layui-table-page .layui-laypage .layui-laypage-curr .layui-laypage-em{left:0;top:0;padding:0}.layui-table-page .layui-laypage button,.layui-table-page .layui-laypage input{height:26px;line-height:26px}.layui-table-page .layui-laypage input{width:40px}.layui-table-page .layui-laypage button{padding:0 10px}.layui-table-page select{height:18px}.layui-table-patch .layui-table-cell{padding:0;width:30px}.layui-table-edit{position:absolute;left:0;top:0;width:100%;height:100%;padding:0 14px 1px;border-radius:0;box-shadow:1px 1px 20px rgba(0,0,0,.15)}.layui-table-edit:focus{border-color:#5FB878!important}select.layui-table-edit{padding:0 0 0 10px;border-color:#C9C9C9}.layui-table-view .layui-form-checkbox,.layui-table-view .layui-form-radio,.layui-table-view .layui-form-switch{top:0;margin:0;box-sizing:content-box}.layui-table-view .layui-form-checkbox{top:-1px;height:26px;line-height:26px}.layui-table-view .layui-form-checkbox i{height:26px}.layui-table-grid .layui-table-cell{overflow:visible}.layui-table-grid-down{position:absolute;top:0;right:0;width:26px;height:100%;padding:5px 0;border-width:0 0 0 1px;text-align:center;background-color:#fff;color:#999;cursor:pointer}.layui-table-grid-down .layui-icon{position:absolute;top:50%;left:50%;margin:-8px 0 0 -8px}.layui-table-grid-down:hover{background-color:#fbfbfb}body .layui-table-tips .layui-layer-content{background:0 0;padding:0;box-shadow:0 1px 6px rgba(0,0,0,.12)}.layui-table-tips-main{margin:-44px 0 0 -1px;max-height:150px;padding:8px 15px;font-size:14px;overflow-y:scroll;background-color:#fff;color:#666}.layui-table-tips-c{position:absolute;right:-3px;top:-13px;width:20px;height:20px;padding:3px;cursor:pointer;background-color:#666;border-radius:50%;color:#fff}.layui-table-tips-c:hover{background-color:#777}.layui-table-tips-c:before{position:relative;right:-2px}.layui-upload-file{display:none!important;opacity:.01;filter:Alpha(opacity=1)}.layui-upload-drag,.layui-upload-form,.layui-upload-wrap{display:inline-block}.layui-upload-list{margin:10px 0}.layui-upload-choose{padding:0 10px;color:#999}.layui-upload-drag{position:relative;padding:30px;border:1px dashed #e2e2e2;background-color:#fff;text-align:center;cursor:pointer;color:#999}.layui-upload-drag .layui-icon{font-size:50px;color:#009688}.layui-upload-drag[lay-over]{border-color:#009688}.layui-upload-iframe{position:absolute;width:0;height:0;border:0;visibility:hidden}.layui-upload-wrap{position:relative;vertical-align:middle}.layui-upload-wrap .layui-upload-file{display:block!important;position:absolute;left:0;top:0;z-index:10;font-size:100px;width:100%;height:100%;opacity:.01;filter:Alpha(opacity=1);cursor:pointer}.layui-transfer-active,.layui-transfer-box{display:inline-block;vertical-align:middle}.layui-transfer-box,.layui-transfer-header,.layui-transfer-search{border-width:0;border-style:solid;border-color:#e6e6e6}.layui-transfer-box{position:relative;border-width:1px;width:200px;height:360px;border-radius:2px;background-color:#fff}.layui-transfer-box .layui-form-checkbox{width:100%;margin:0!important}.layui-transfer-header{height:38px;line-height:38px;padding:0 10px;border-bottom-width:1px}.layui-transfer-search{position:relative;padding:10px;border-bottom-width:1px}.layui-transfer-search .layui-input{height:32px;padding-left:30px;font-size:12px}.layui-transfer-search .layui-icon-search{position:absolute;left:20px;top:50%;margin-top:-8px;color:#666}.layui-transfer-active{margin:0 15px}.layui-transfer-active .layui-btn{display:block;margin:0;padding:0 15px;background-color:#5FB878;border-color:#5FB878;color:#fff}.layui-transfer-active .layui-btn-disabled{background-color:#FBFBFB;border-color:#e6e6e6;color:#C9C9C9}.layui-transfer-active .layui-btn:first-child{margin-bottom:15px}.layui-transfer-active .layui-btn .layui-icon{margin:0;font-size:14px!important}.layui-transfer-data{padding:5px 0;overflow:auto}.layui-transfer-data li{height:32px;line-height:32px;padding:0 10px}.layui-transfer-data li:hover{background-color:#f2f2f2;transition:.5s all}.layui-transfer-data .layui-none{padding:15px 10px;text-align:center;color:#999}.layui-nav{position:relative;padding:0 20px;background-color:#393D49;color:#fff;border-radius:2px;font-size:0;box-sizing:border-box}.layui-nav *{font-size:14px}.layui-nav .layui-nav-item{position:relative;display:inline-block;*display:inline;*zoom:1;vertical-align:middle;line-height:60px}.layui-nav .layui-nav-item a{display:block;padding:0 20px;color:#fff;color:rgba(255,255,255,.7);transition:all .3s;-webkit-transition:all .3s}.layui-nav .layui-this:after,.layui-nav-bar,.layui-nav-tree .layui-nav-itemed:after{position:absolute;left:0;top:0;width:0;height:5px;background-color:#5FB878;transition:all .2s;-webkit-transition:all .2s}.layui-nav-bar{z-index:1000}.layui-nav .layui-nav-item a:hover,.layui-nav .layui-this a{color:#fff}.layui-nav .layui-this:after{content:'';top:auto;bottom:0;width:100%}.layui-nav-img{width:30px;height:30px;margin-right:10px;border-radius:50%}.layui-nav .layui-nav-more{content:'';width:0;height:0;border-style:solid dashed dashed;border-color:#fff transparent transparent;overflow:hidden;cursor:pointer;transition:all .2s;-webkit-transition:all .2s;position:absolute;top:50%;right:3px;margin-top:-3px;border-width:6px;border-top-color:rgba(255,255,255,.7)}.layui-nav .layui-nav-mored,.layui-nav-itemed>a .layui-nav-more{margin-top:-9px;border-style:dashed dashed solid;border-color:transparent transparent #fff}.layui-nav-child{display:none;position:absolute;left:0;top:65px;min-width:100%;line-height:36px;padding:5px 0;box-shadow:0 2px 4px rgba(0,0,0,.12);border:1px solid #d2d2d2;background-color:#fff;z-index:100;border-radius:2px;white-space:nowrap}.layui-nav .layui-nav-child a{color:#333}.layui-nav .layui-nav-child a:hover{background-color:#f2f2f2;color:#000}.layui-nav-child dd{position:relative}.layui-nav .layui-nav-child dd.layui-this a,.layui-nav-child dd.layui-this{background-color:#5FB878;color:#fff}.layui-nav-child dd.layui-this:after{display:none}.layui-nav-tree{width:200px;padding:0}.layui-nav-tree .layui-nav-item{display:block;width:100%;line-height:45px}.layui-nav-tree .layui-nav-item a{position:relative;height:45px;line-height:45px;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-nav-tree .layui-nav-item a:hover{background-color:#4E5465}.layui-nav-tree .layui-nav-bar{width:5px;height:0;background-color:#009688}.layui-nav-tree .layui-nav-child dd.layui-this,.layui-nav-tree .layui-nav-child dd.layui-this a,.layui-nav-tree .layui-this,.layui-nav-tree .layui-this>a,.layui-nav-tree .layui-this>a:hover{background-color:#009688;color:#fff}.layui-nav-tree .layui-this:after{display:none}.layui-nav-itemed>a,.layui-nav-tree .layui-nav-title a,.layui-nav-tree .layui-nav-title a:hover{color:#fff!important}.layui-nav-tree .layui-nav-child{position:relative;z-index:0;top:0;border:none;box-shadow:none}.layui-nav-tree .layui-nav-child a{height:40px;line-height:40px;color:#fff;color:rgba(255,255,255,.7)}.layui-nav-tree .layui-nav-child,.layui-nav-tree .layui-nav-child a:hover{background:0 0;color:#fff}.layui-nav-tree .layui-nav-more{right:10px}.layui-nav-itemed>.layui-nav-child{display:block;padding:0;background-color:rgba(0,0,0,.3)!important}.layui-nav-itemed>.layui-nav-child>.layui-this>.layui-nav-child{display:block}.layui-nav-side{position:fixed;top:0;bottom:0;left:0;overflow-x:hidden;z-index:999}.layui-bg-blue .layui-nav-bar,.layui-bg-blue .layui-nav-itemed:after,.layui-bg-blue .layui-this:after{background-color:#93D1FF}.layui-bg-blue .layui-nav-child dd.layui-this{background-color:#1E9FFF}.layui-bg-blue .layui-nav-itemed>a,.layui-nav-tree.layui-bg-blue .layui-nav-title a,.layui-nav-tree.layui-bg-blue .layui-nav-title a:hover{background-color:#007DDB!important}.layui-breadcrumb{font-size:0}.layui-breadcrumb>*{font-size:14px}.layui-breadcrumb a{color:#999!important}.layui-breadcrumb a:hover{color:#5FB878!important}.layui-breadcrumb a cite{color:#666;font-style:normal}.layui-breadcrumb span[lay-separator]{margin:0 10px;color:#999}.layui-tab{margin:10px 0;text-align:left!important}.layui-tab[overflow]>.layui-tab-title{overflow:hidden}.layui-tab-title{position:relative;left:0;height:40px;white-space:nowrap;font-size:0;border-bottom-width:1px;border-bottom-style:solid;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li{display:inline-block;*display:inline;*zoom:1;vertical-align:middle;font-size:14px;transition:all .2s;-webkit-transition:all .2s;position:relative;line-height:40px;min-width:65px;padding:0 15px;text-align:center;cursor:pointer}.layui-tab-title li a{display:block}.layui-tab-title .layui-this{color:#000}.layui-tab-title .layui-this:after{position:absolute;left:0;top:0;content:'';width:100%;height:41px;border-width:1px;border-style:solid;border-bottom-color:#fff;border-radius:2px 2px 0 0;box-sizing:border-box;pointer-events:none}.layui-tab-bar{position:absolute;right:0;top:0;z-index:10;width:30px;height:39px;line-height:39px;border-width:1px;border-style:solid;border-radius:2px;text-align:center;background-color:#fff;cursor:pointer}.layui-tab-bar .layui-icon{position:relative;display:inline-block;top:3px;transition:all .3s;-webkit-transition:all .3s}.layui-tab-item{display:none}.layui-tab-more{padding-right:30px;height:auto!important;white-space:normal!important}.layui-tab-more li.layui-this:after{border-bottom-color:#e2e2e2;border-radius:2px}.layui-tab-more .layui-tab-bar .layui-icon{top:-2px;top:3px\9;-webkit-transform:rotate(180deg);transform:rotate(180deg)}:root .layui-tab-more .layui-tab-bar .layui-icon{top:-2px\0/IE9}.layui-tab-content{padding:10px}.layui-tab-title li .layui-tab-close{position:relative;display:inline-block;width:18px;height:18px;line-height:20px;margin-left:8px;top:1px;text-align:center;font-size:14px;color:#c2c2c2;transition:all .2s;-webkit-transition:all .2s}.layui-tab-title li .layui-tab-close:hover{border-radius:2px;background-color:#FF5722;color:#fff}.layui-tab-brief>.layui-tab-title .layui-this{color:#009688}.layui-tab-brief>.layui-tab-more li.layui-this:after,.layui-tab-brief>.layui-tab-title .layui-this:after{border:none;border-radius:0;border-bottom:2px solid #5FB878}.layui-tab-brief[overflow]>.layui-tab-title .layui-this:after{top:-1px}.layui-tab-card{border-width:1px;border-style:solid;border-radius:2px;box-shadow:0 2px 5px 0 rgba(0,0,0,.1)}.layui-tab-card>.layui-tab-title{background-color:#f2f2f2}.layui-tab-card>.layui-tab-title li{margin-right:-1px;margin-left:-1px}.layui-tab-card>.layui-tab-title .layui-this{background-color:#fff}.layui-tab-card>.layui-tab-title .layui-this:after{border-top:none;border-width:1px;border-bottom-color:#fff}.layui-tab-card>.layui-tab-title .layui-tab-bar{height:40px;line-height:40px;border-radius:0;border-top:none;border-right:none}.layui-tab-card>.layui-tab-more .layui-this{background:0 0;color:#5FB878}.layui-tab-card>.layui-tab-more .layui-this:after{border:none}.layui-timeline{padding-left:5px}.layui-timeline-item{position:relative;padding-bottom:20px}.layui-timeline-axis{position:absolute;left:-5px;top:0;z-index:10;width:20px;height:20px;line-height:20px;background-color:#fff;color:#5FB878;border-radius:50%;text-align:center;cursor:pointer}.layui-timeline-axis:hover{color:#FF5722}.layui-timeline-item:before{content:'';position:absolute;left:5px;top:0;z-index:0;width:1px;height:100%}.layui-timeline-item:last-child:before{display:none}.layui-timeline-item:first-child:before{display:block}.layui-timeline-content{padding-left:25px}.layui-timeline-title{position:relative;margin-bottom:10px}.layui-badge,.layui-badge-dot,.layui-badge-rim{position:relative;display:inline-block;padding:0 6px;font-size:12px;text-align:center;background-color:#FF5722;color:#fff;border-radius:2px}.layui-badge{height:18px;line-height:18px}.layui-badge-dot{width:8px;height:8px;padding:0;border-radius:50%}.layui-badge-rim{height:18px;line-height:18px;border-width:1px;border-style:solid;background-color:#fff;color:#666}.layui-btn .layui-badge,.layui-btn .layui-badge-dot{margin-left:5px}.layui-nav .layui-badge,.layui-nav .layui-badge-dot{position:absolute;top:50%;margin:-8px 6px 0}.layui-tab-title .layui-badge,.layui-tab-title .layui-badge-dot{left:5px;top:-2px}.layui-carousel{position:relative;left:0;top:0;background-color:#f8f8f8}.layui-carousel>[carousel-item]{position:relative;width:100%;height:100%;overflow:hidden}.layui-carousel>[carousel-item]:before{position:absolute;content:'\e63d';left:50%;top:50%;width:100px;line-height:20px;margin:-10px 0 0 -50px;text-align:center;color:#c2c2c2;font-family:layui-icon!important;font-size:30px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-carousel>[carousel-item]>*{display:none;position:absolute;left:0;top:0;width:100%;height:100%;background-color:#f8f8f8;transition-duration:.3s;-webkit-transition-duration:.3s}.layui-carousel-updown>*{-webkit-transition:.3s ease-in-out up;transition:.3s ease-in-out up}.layui-carousel-arrow{display:none\9;opacity:0;position:absolute;left:10px;top:50%;margin-top:-18px;width:36px;height:36px;line-height:36px;text-align:center;font-size:20px;border:0;border-radius:50%;background-color:rgba(0,0,0,.2);color:#fff;-webkit-transition-duration:.3s;transition-duration:.3s;cursor:pointer}.layui-carousel-arrow[lay-type=add]{left:auto!important;right:10px}.layui-carousel:hover .layui-carousel-arrow[lay-type=add],.layui-carousel[lay-arrow=always] .layui-carousel-arrow[lay-type=add]{right:20px}.layui-carousel[lay-arrow=always] .layui-carousel-arrow{opacity:1;left:20px}.layui-carousel[lay-arrow=none] .layui-carousel-arrow{display:none}.layui-carousel-arrow:hover,.layui-carousel-ind ul:hover{background-color:rgba(0,0,0,.35)}.layui-carousel:hover .layui-carousel-arrow{display:block\9;opacity:1;left:20px}.layui-carousel-ind{position:relative;top:-35px;width:100%;line-height:0!important;text-align:center;font-size:0}.layui-carousel[lay-indicator=outside]{margin-bottom:30px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind{top:10px}.layui-carousel[lay-indicator=outside] .layui-carousel-ind ul{background-color:rgba(0,0,0,.5)}.layui-carousel[lay-indicator=none] .layui-carousel-ind{display:none}.layui-carousel-ind ul{display:inline-block;padding:5px;background-color:rgba(0,0,0,.2);border-radius:10px;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li{display:inline-block;width:10px;height:10px;margin:0 3px;font-size:14px;background-color:#e2e2e2;background-color:rgba(255,255,255,.5);border-radius:50%;cursor:pointer;-webkit-transition-duration:.3s;transition-duration:.3s}.layui-carousel-ind li:hover{background-color:rgba(255,255,255,.7)}.layui-carousel-ind li.layui-this{background-color:#fff}.layui-carousel>[carousel-item]>.layui-carousel-next,.layui-carousel>[carousel-item]>.layui-carousel-prev,.layui-carousel>[carousel-item]>.layui-this{display:block}.layui-carousel>[carousel-item]>.layui-this{left:0}.layui-carousel>[carousel-item]>.layui-carousel-prev{left:-100%}.layui-carousel>[carousel-item]>.layui-carousel-next{left:100%}.layui-carousel>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel>[carousel-item]>.layui-carousel-prev.layui-carousel-right{left:0}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-left{left:-100%}.layui-carousel>[carousel-item]>.layui-this.layui-carousel-right{left:100%}.layui-carousel[lay-anim=updown] .layui-carousel-arrow{left:50%!important;top:20px;margin:0 0 0 -18px}.layui-carousel[lay-anim=updown]>[carousel-item]>*,.layui-carousel[lay-anim=fade]>[carousel-item]>*{left:0!important}.layui-carousel[lay-anim=updown] .layui-carousel-arrow[lay-type=add]{top:auto!important;bottom:20px}.layui-carousel[lay-anim=updown] .layui-carousel-ind{position:absolute;top:50%;right:20px;width:auto;height:auto}.layui-carousel[lay-anim=updown] .layui-carousel-ind ul{padding:3px 5px}.layui-carousel[lay-anim=updown] .layui-carousel-ind li{display:block;margin:6px 0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next{top:100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{top:0}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-left{top:-100%}.layui-carousel[lay-anim=updown]>[carousel-item]>.layui-this.layui-carousel-right{top:100%}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev{opacity:0}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-next.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-carousel-prev.layui-carousel-right{opacity:1}.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-left,.layui-carousel[lay-anim=fade]>[carousel-item]>.layui-this.layui-carousel-right{opacity:0}.layui-fixbar{position:fixed;right:15px;bottom:15px;z-index:999999}.layui-fixbar li{width:50px;height:50px;line-height:50px;margin-bottom:1px;text-align:center;cursor:pointer;font-size:30px;background-color:#9F9F9F;color:#fff;border-radius:2px;opacity:.95}.layui-fixbar li:hover{opacity:.85}.layui-fixbar li:active{opacity:1}.layui-fixbar .layui-fixbar-top{display:none;font-size:40px}body .layui-util-face{border:none;background:0 0}body .layui-util-face .layui-layer-content{padding:0;background-color:#fff;color:#666;box-shadow:none}.layui-util-face .layui-layer-TipsG{display:none}.layui-util-face ul{position:relative;width:372px;padding:10px;border:1px solid #D9D9D9;background-color:#fff;box-shadow:0 0 20px rgba(0,0,0,.2)}.layui-util-face ul li{cursor:pointer;float:left;border:1px solid #e8e8e8;height:22px;width:26px;overflow:hidden;margin:-1px 0 0 -1px;padding:4px 2px;text-align:center}.layui-util-face ul li:hover{position:relative;z-index:2;border:1px solid #eb7350;background:#fff9ec}.layui-code{position:relative;margin:10px 0;padding:15px;line-height:20px;border:1px solid #ddd;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New;font-size:12px}.layui-rate,.layui-rate *{display:inline-block;vertical-align:middle}.layui-rate{padding:10px 5px 10px 0;font-size:0}.layui-rate li i.layui-icon{font-size:20px;color:#FFB800;margin-right:5px;transition:all .3s;-webkit-transition:all .3s}.layui-rate li i:hover{cursor:pointer;transform:scale(1.12);-webkit-transform:scale(1.12)}.layui-rate[readonly] li i:hover{cursor:default;transform:scale(1)}.layui-colorpicker{width:26px;height:26px;border:1px solid #e6e6e6;padding:5px;border-radius:2px;line-height:24px;display:inline-block;cursor:pointer;transition:all .3s;-webkit-transition:all .3s}.layui-colorpicker:hover{border-color:#d2d2d2}.layui-colorpicker.layui-colorpicker-lg{width:34px;height:34px;line-height:32px}.layui-colorpicker.layui-colorpicker-sm{width:24px;height:24px;line-height:22px}.layui-colorpicker.layui-colorpicker-xs{width:22px;height:22px;line-height:20px}.layui-colorpicker-trigger-bgcolor{display:block;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==);border-radius:2px}.layui-colorpicker-trigger-span{display:block;height:100%;box-sizing:border-box;border:1px solid rgba(0,0,0,.15);border-radius:2px;text-align:center}.layui-colorpicker-trigger-i{display:inline-block;color:#FFF;font-size:12px}.layui-colorpicker-trigger-i.layui-icon-close{color:#999}.layui-colorpicker-main{position:absolute;z-index:66666666;width:280px;padding:7px;background:#FFF;border:1px solid #d2d2d2;border-radius:2px;box-shadow:0 2px 4px rgba(0,0,0,.12)}.layui-colorpicker-main-wrapper{height:180px;position:relative}.layui-colorpicker-basis{width:260px;height:100%;position:relative}.layui-colorpicker-basis-white{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(90deg,#FFF,hsla(0,0%,100%,0))}.layui-colorpicker-basis-black{width:100%;height:100%;position:absolute;top:0;left:0;background:linear-gradient(0deg,#000,transparent)}.layui-colorpicker-basis-cursor{width:10px;height:10px;border:1px solid #FFF;border-radius:50%;position:absolute;top:-3px;right:-3px;cursor:pointer}.layui-colorpicker-side{position:absolute;top:0;right:0;width:12px;height:100%;background:linear-gradient(red,#FF0,#0F0,#0FF,#00F,#F0F,red)}.layui-colorpicker-side-slider{width:100%;height:5px;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;left:0}.layui-colorpicker-main-alpha{display:none;height:12px;margin-top:7px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-alpha-bgcolor{height:100%;position:relative}.layui-colorpicker-alpha-slider{width:5px;height:100%;box-shadow:0 0 1px #888;box-sizing:border-box;background:#FFF;border-radius:1px;border:1px solid #f0f0f0;cursor:pointer;position:absolute;top:0}.layui-colorpicker-main-pre{padding-top:7px;font-size:0}.layui-colorpicker-pre{width:20px;height:20px;border-radius:2px;display:inline-block;margin-left:6px;margin-bottom:7px;cursor:pointer}.layui-colorpicker-pre:nth-child(11n+1){margin-left:0}.layui-colorpicker-pre-isalpha{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.layui-colorpicker-pre.layui-this{box-shadow:0 0 3px 2px rgba(0,0,0,.15)}.layui-colorpicker-pre>div{height:100%;border-radius:2px}.layui-colorpicker-main-input{text-align:right;padding-top:7px}.layui-colorpicker-main-input .layui-btn-container .layui-btn{margin:0 0 0 10px}.layui-colorpicker-main-input div.layui-inline{float:left;margin-right:10px;font-size:14px}.layui-colorpicker-main-input input.layui-input{width:150px;height:30px;color:#666}.layui-slider{height:4px;background:#e2e2e2;border-radius:3px;position:relative;cursor:pointer}.layui-slider-bar{border-radius:3px;position:absolute;height:100%}.layui-slider-step{position:absolute;top:0;width:4px;height:4px;border-radius:50%;background:#FFF;-webkit-transform:translateX(-50%);transform:translateX(-50%)}.layui-slider-wrap{width:36px;height:36px;position:absolute;top:-16px;-webkit-transform:translateX(-50%);transform:translateX(-50%);z-index:10;text-align:center}.layui-slider-wrap-btn{width:12px;height:12px;border-radius:50%;background:#FFF;display:inline-block;vertical-align:middle;cursor:pointer;transition:.3s}.layui-slider-wrap:after{content:"";height:100%;display:inline-block;vertical-align:middle}.layui-slider-wrap-btn.layui-slider-hover,.layui-slider-wrap-btn:hover{transform:scale(1.2)}.layui-slider-wrap-btn.layui-disabled:hover{transform:scale(1)!important}.layui-slider-tips{position:absolute;top:-42px;z-index:66666666;white-space:nowrap;display:none;-webkit-transform:translateX(-50%);transform:translateX(-50%);color:#FFF;background:#000;border-radius:3px;height:25px;line-height:25px;padding:0 10px}.layui-slider-tips:after{content:'';position:absolute;bottom:-12px;left:50%;margin-left:-6px;width:0;height:0;border-width:6px;border-style:solid;border-color:#000 transparent transparent}.layui-slider-input{width:70px;height:32px;border:1px solid #e6e6e6;border-radius:3px;font-size:16px;line-height:32px;position:absolute;right:0;top:-15px}.layui-slider-input-btn{display:none;position:absolute;top:0;right:0;width:20px;height:100%;border-left:1px solid #d2d2d2}.layui-slider-input-btn i{cursor:pointer;position:absolute;right:0;bottom:0;width:20px;height:50%;font-size:12px;line-height:16px;text-align:center;color:#999}.layui-slider-input-btn i:first-child{top:0;border-bottom:1px solid #d2d2d2}.layui-slider-input-txt{height:100%;font-size:14px}.layui-slider-input-txt input{height:100%;border:none}.layui-slider-input-btn i:hover{color:#009688}.layui-slider-vertical{width:4px;margin-left:34px}.layui-slider-vertical .layui-slider-bar{width:4px}.layui-slider-vertical .layui-slider-step{top:auto;left:0;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-wrap{top:auto;left:-16px;-webkit-transform:translateY(50%);transform:translateY(50%)}.layui-slider-vertical .layui-slider-tips{top:auto;left:2px}@media \0screen{.layui-slider-wrap-btn{margin-left:-20px}.layui-slider-vertical .layui-slider-wrap-btn{margin-left:0;margin-bottom:-20px}.layui-slider-vertical .layui-slider-tips{margin-left:-8px}.layui-slider>span{margin-left:8px}}.layui-tree{line-height:22px}.layui-tree .layui-form-checkbox{margin:0!important}.layui-tree-set{width:100%;position:relative}.layui-tree-pack{display:none;padding-left:20px;position:relative}.layui-tree-iconClick,.layui-tree-main{display:inline-block;vertical-align:middle}.layui-tree-line .layui-tree-pack{padding-left:27px}.layui-tree-line .layui-tree-set .layui-tree-set:after{content:'';position:absolute;top:14px;left:-9px;width:17px;height:0;border-top:1px dotted #c0c4cc}.layui-tree-entry{position:relative;padding:3px 0;height:20px;white-space:nowrap}.layui-tree-entry:hover{background-color:#eee}.layui-tree-line .layui-tree-entry:hover{background-color:rgba(0,0,0,0)}.layui-tree-line .layui-tree-entry:hover .layui-tree-txt{color:#999;text-decoration:underline;transition:.3s}.layui-tree-main{cursor:pointer;padding-right:10px}.layui-tree-line .layui-tree-set:before{content:'';position:absolute;top:0;left:-9px;width:0;height:100%;border-left:1px dotted #c0c4cc}.layui-tree-line .layui-tree-set.layui-tree-setLineShort:before{height:13px}.layui-tree-line .layui-tree-set.layui-tree-setHide:before{height:0}.layui-tree-iconClick{position:relative;height:20px;line-height:20px;margin:0 10px;color:#c0c4cc}.layui-tree-icon{height:12px;line-height:12px;width:12px;text-align:center;border:1px solid #c0c4cc}.layui-tree-iconClick .layui-icon{font-size:18px}.layui-tree-icon .layui-icon{font-size:12px;color:#666}.layui-tree-iconArrow{padding:0 5px}.layui-tree-iconArrow:after{content:'';position:absolute;left:4px;top:3px;z-index:100;width:0;height:0;border-width:5px;border-style:solid;border-color:transparent transparent transparent #c0c4cc;transition:.5s}.layui-tree-btnGroup,.layui-tree-editInput{position:relative;vertical-align:middle;display:inline-block}.layui-tree-spread>.layui-tree-entry>.layui-tree-iconClick>.layui-tree-iconArrow:after{transform:rotate(90deg) translate(3px,4px)}.layui-tree-txt{display:inline-block;vertical-align:middle;color:#555}.layui-tree-search{margin-bottom:15px;color:#666}.layui-tree-btnGroup .layui-icon{display:inline-block;vertical-align:middle;padding:0 2px;cursor:pointer}.layui-tree-btnGroup .layui-icon:hover{color:#999;transition:.3s}.layui-tree-entry:hover .layui-tree-btnGroup{visibility:visible}.layui-tree-editInput{height:20px;line-height:20px;padding:0 3px;border:none;background-color:rgba(0,0,0,.05)}.layui-tree-emptyText{text-align:center;color:#999}.layui-anim{-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-anim.layui-icon{display:inline-block}.layui-anim-loop{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.layui-trans,.layui-trans a{transition:all .3s;-webkit-transition:all .3s}@-webkit-keyframes layui-rotate{from{-webkit-transform:rotate(0)}to{-webkit-transform:rotate(360deg)}}@keyframes layui-rotate{from{transform:rotate(0)}to{transform:rotate(360deg)}}.layui-anim-rotate{-webkit-animation-name:layui-rotate;animation-name:layui-rotate;-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-timing-function:linear;animation-timing-function:linear}@-webkit-keyframes layui-up{from{-webkit-transform:translate3d(0,100%,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-up{from{transform:translate3d(0,100%,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-up{-webkit-animation-name:layui-up;animation-name:layui-up}@-webkit-keyframes layui-upbit{from{-webkit-transform:translate3d(0,30px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes layui-upbit{from{transform:translate3d(0,30px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-anim-upbit{-webkit-animation-name:layui-upbit;animation-name:layui-upbit}@-webkit-keyframes layui-scale{0%{opacity:.3;-webkit-transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale{0%{opacity:.3;-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-ms-transform:scale(1);transform:scale(1)}}.layui-anim-scale{-webkit-animation-name:layui-scale;animation-name:layui-scale}@-webkit-keyframes layui-scale-spring{0%{opacity:.5;-webkit-transform:scale(.5)}80%{opacity:.8;-webkit-transform:scale(1.1)}100%{opacity:1;-webkit-transform:scale(1)}}@keyframes layui-scale-spring{0%{opacity:.5;transform:scale(.5)}80%{opacity:.8;transform:scale(1.1)}100%{opacity:1;transform:scale(1)}}.layui-anim-scaleSpring{-webkit-animation-name:layui-scale-spring;animation-name:layui-scale-spring}@-webkit-keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}@keyframes layui-fadein{0%{opacity:0}100%{opacity:1}}.layui-anim-fadein{-webkit-animation-name:layui-fadein;animation-name:layui-fadein}@-webkit-keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}@keyframes layui-fadeout{0%{opacity:1}100%{opacity:0}}.layui-anim-fadeout{-webkit-animation-name:layui-fadeout;animation-name:layui-fadeout} \ No newline at end of file diff --git a/src/main/resources/static/layui/css/layui.mobile.css b/src/main/resources/static/layui/css/layui.mobile.css new file mode 100644 index 0000000..0743570 --- /dev/null +++ b/src/main/resources/static/layui/css/layui.mobile.css @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + blockquote,body,button,dd,div,dl,dt,form,h1,h2,h3,h4,h5,h6,input,legend,li,ol,p,td,textarea,th,ul{margin:0;padding:0;-webkit-tap-highlight-color:rgba(0,0,0,0)}html{font:12px 'Helvetica Neue','PingFang SC',STHeitiSC-Light,Helvetica,Arial,sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}a,button,input{-webkit-tap-highlight-color:rgba(255,0,0,0)}a{text-decoration:none;background:0 0}a:active,a:hover{outline:0}table{border-collapse:collapse;border-spacing:0}li{list-style:none}b,strong{font-weight:700}h1,h2,h3,h4,h5,h6{font-weight:500}address,cite,dfn,em,var{font-style:normal}dfn{font-style:italic}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}img{border:0;vertical-align:bottom}.layui-inline,input,label{vertical-align:middle}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0;outline:0}button,select{text-transform:none}select{-webkit-appearance:none;border:none}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}@font-face{font-family:layui-icon;src:url(../font/iconfont.eot?v=1.0.7);src:url(../font/iconfont.eot?v=1.0.7#iefix) format('embedded-opentype'),url(../font/iconfont.woff?v=1.0.7) format('woff'),url(../font/iconfont.ttf?v=1.0.7) format('truetype'),url(../font/iconfont.svg?v=1.0.7#iconfont) format('svg')}.layui-icon{font-family:layui-icon!important;font-size:16px;font-style:normal;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.layui-box,.layui-box *{-webkit-box-sizing:content-box!important;-moz-box-sizing:content-box!important;box-sizing:content-box!important}.layui-border-box,.layui-border-box *{-webkit-box-sizing:border-box!important;-moz-box-sizing:border-box!important;box-sizing:border-box!important}.layui-inline{position:relative;display:inline-block;*display:inline;*zoom:1}.layui-edge,.layui-upload-iframe{position:absolute;width:0;height:0}.layui-edge{border-style:dashed;border-color:transparent;overflow:hidden}.layui-elip{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-unselect{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-disabled,.layui-disabled:active{background-color:#d2d2d2!important;color:#fff!important;cursor:not-allowed!important}.layui-circle{border-radius:100%}.layui-show{display:block!important}.layui-hide{display:none!important}.layui-upload-iframe{border:0;visibility:hidden}.layui-upload-enter{border:1px solid #009E94;background-color:#009E94;color:#fff;-webkit-transform:scale(1.1);transform:scale(1.1)}@-webkit-keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layui-m-anim-scale{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.layui-m-anim-scale{animation-name:layui-m-anim-scale;-webkit-animation-name:layui-m-anim-scale}@-webkit-keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layui-m-anim-up{0%{opacity:0;-webkit-transform:translateY(800px);transform:translateY(800px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}.layui-m-anim-up{-webkit-animation-name:layui-m-anim-up;animation-name:layui-m-anim-up}@-webkit-keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-left{0%{-webkit-transform:translateX(100%);transform:translateX(100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-left{-webkit-animation-name:layui-m-anim-left;animation-name:layui-m-anim-left}@-webkit-keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes layui-m-anim-right{0%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}100%{-webkit-transform:translateX(0);transform:translateX(0)}}.layui-m-anim-right{-webkit-animation-name:layui-m-anim-right;animation-name:layui-m-anim-right}@-webkit-keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}@keyframes layui-m-anim-lout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(-100%);transform:translateX(-100%)}}.layui-m-anim-lout{-webkit-animation-name:layui-m-anim-lout;animation-name:layui-m-anim-lout}@-webkit-keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}@keyframes layui-m-anim-rout{0%{-webkit-transform:translateX(0);transform:translateX(0)}100%{-webkit-transform:translateX(100%);transform:translateX(100%)}}.layui-m-anim-rout{-webkit-animation-name:layui-m-anim-rout;animation-name:layui-m-anim-rout}.layui-m-layer{position:relative;z-index:19891014}.layui-m-layer *{-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box}.layui-m-layermain,.layui-m-layershade{position:fixed;left:0;top:0;width:100%;height:100%}.layui-m-layershade{background-color:rgba(0,0,0,.7);pointer-events:auto}.layui-m-layermain{display:table;font-family:Helvetica,arial,sans-serif;pointer-events:none}.layui-m-layermain .layui-m-layersection{display:table-cell;vertical-align:middle;text-align:center}.layui-m-layerchild{position:relative;display:inline-block;text-align:left;background-color:#fff;font-size:14px;border-radius:5px;box-shadow:0 0 8px rgba(0,0,0,.1);pointer-events:auto;-webkit-overflow-scrolling:touch;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}.layui-m-layer0 .layui-m-layerchild{width:90%;max-width:640px}.layui-m-layer1 .layui-m-layerchild{border:none;border-radius:0}.layui-m-layer2 .layui-m-layerchild{width:auto;max-width:260px;min-width:40px;border:none;background:0 0;box-shadow:none;color:#fff}.layui-m-layerchild h3{padding:0 10px;height:60px;line-height:60px;font-size:16px;font-weight:400;border-radius:5px 5px 0 0;text-align:center}.layui-m-layerbtn span,.layui-m-layerchild h3{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.layui-m-layercont{padding:50px 30px;line-height:22px;text-align:center}.layui-m-layer1 .layui-m-layercont{padding:0;text-align:left}.layui-m-layer2 .layui-m-layercont{text-align:center;padding:0;line-height:0}.layui-m-layer2 .layui-m-layercont i{width:25px;height:25px;margin-left:8px;display:inline-block;background-color:#fff;border-radius:100%;-webkit-animation:layui-m-anim-loading 1.4s infinite ease-in-out;animation:layui-m-anim-loading 1.4s infinite ease-in-out;-webkit-animation-fill-mode:both;animation-fill-mode:both}.layui-m-layerbtn,.layui-m-layerbtn span{position:relative;text-align:center;border-radius:0 0 5px 5px}.layui-m-layer2 .layui-m-layercont p{margin-top:20px}@-webkit-keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}@keyframes layui-m-anim-loading{0%,100%,80%{transform:scale(0);-webkit-transform:scale(0)}40%{transform:scale(1);-webkit-transform:scale(1)}}.layui-m-layer2 .layui-m-layercont i:first-child{margin-left:0;-webkit-animation-delay:-.32s;animation-delay:-.32s}.layui-m-layer2 .layui-m-layercont i.layui-m-layerload{-webkit-animation-delay:-.16s;animation-delay:-.16s}.layui-m-layer2 .layui-m-layercont>div{line-height:22px;padding-top:7px;margin-bottom:20px;font-size:14px}.layui-m-layerbtn{display:box;display:-moz-box;display:-webkit-box;width:100%;height:50px;line-height:50px;font-size:0;border-top:1px solid #D0D0D0;background-color:#F2F2F2}.layui-m-layerbtn span{display:block;-moz-box-flex:1;box-flex:1;-webkit-box-flex:1;font-size:14px;cursor:pointer}.layui-m-layerbtn span[yes]{color:#40AFFE}.layui-m-layerbtn span[no]{border-right:1px solid #D0D0D0;border-radius:0 0 0 5px}.layui-m-layerbtn span:active{background-color:#F6F6F6}.layui-m-layerend{position:absolute;right:7px;top:10px;width:30px;height:30px;border:0;font-weight:400;background:0 0;cursor:pointer;-webkit-appearance:none;font-size:30px}.layui-m-layerend::after,.layui-m-layerend::before{position:absolute;left:5px;top:15px;content:'';width:18px;height:1px;background-color:#999;transform:rotate(45deg);-webkit-transform:rotate(45deg);border-radius:3px}.layui-m-layerend::after{transform:rotate(-45deg);-webkit-transform:rotate(-45deg)}body .layui-m-layer .layui-m-layer-footer{position:fixed;width:95%;max-width:100%;margin:0 auto;left:0;right:0;bottom:10px;background:0 0}.layui-m-layer-footer .layui-m-layercont{padding:20px;border-radius:5px 5px 0 0;background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn{display:block;height:auto;background:0 0;border-top:none}.layui-m-layer-footer .layui-m-layerbtn span{background-color:rgba(255,255,255,.8)}.layui-m-layer-footer .layui-m-layerbtn span[no]{color:#FD482C;border-top:1px solid #c2c2c2;border-radius:0 0 5px 5px}.layui-m-layer-footer .layui-m-layerbtn span[yes]{margin-top:10px;border-radius:5px}body .layui-m-layer .layui-m-layer-msg{width:auto;max-width:90%;margin:0 auto;bottom:-150px;background-color:rgba(0,0,0,.7);color:#fff}.layui-m-layer-msg .layui-m-layercont{padding:10px 20px} \ No newline at end of file diff --git a/src/main/resources/static/layui/css/modules/code.css b/src/main/resources/static/layui/css/modules/code.css new file mode 100644 index 0000000..d5ecb86 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/code.css @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + html #layuicss-skincodecss{display:none;position:absolute;width:1989px}.layui-code-h3,.layui-code-view{position:relative;font-size:12px}.layui-code-view{display:block;margin:10px 0;padding:0;border:1px solid #e2e2e2;border-left-width:6px;background-color:#F2F2F2;color:#333;font-family:Courier New}.layui-code-h3{padding:0 10px;height:32px;line-height:32px;border-bottom:1px solid #e2e2e2}.layui-code-h3 a{position:absolute;right:10px;top:0;color:#999}.layui-code-view .layui-code-ol{position:relative;overflow:auto}.layui-code-view .layui-code-ol li{position:relative;margin-left:45px;line-height:20px;padding:0 5px;border-left:1px solid #e2e2e2;list-style-type:decimal-leading-zero;*list-style-type:decimal;background-color:#fff}.layui-code-view pre{margin:0}.layui-code-notepad{border:1px solid #0C0C0C;border-left-color:#3F3F3F;background-color:#0C0C0C;color:#C2BE9E}.layui-code-notepad .layui-code-h3{border-bottom:none}.layui-code-notepad .layui-code-ol li{background-color:#3F3F3F;border-left:none} \ No newline at end of file diff --git a/src/main/resources/static/layui/css/modules/laydate/default/laydate.css b/src/main/resources/static/layui/css/modules/laydate/default/laydate.css new file mode 100644 index 0000000..6b10891 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/laydate/default/laydate.css @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + .laydate-set-ym,.layui-laydate,.layui-laydate *,.layui-laydate-list{box-sizing:border-box}html #layuicss-laydate{display:none;position:absolute;width:1989px}.layui-laydate *{margin:0;padding:0}.layui-laydate{position:absolute;z-index:66666666;margin:5px 0;border-radius:2px;font-size:14px;-webkit-animation-duration:.3s;animation-duration:.3s;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-name:laydate-upbit;animation-name:laydate-upbit}.layui-laydate-main{width:272px}.layui-laydate-content td,.layui-laydate-header *,.layui-laydate-list li{transition-duration:.3s;-webkit-transition-duration:.3s}@-webkit-keyframes laydate-upbit{from{-webkit-transform:translate3d(0,20px,0);opacity:.3}to{-webkit-transform:translate3d(0,0,0);opacity:1}}@keyframes laydate-upbit{from{transform:translate3d(0,20px,0);opacity:.3}to{transform:translate3d(0,0,0);opacity:1}}.layui-laydate-static{position:relative;z-index:0;display:inline-block;margin:0;-webkit-animation:none;animation:none}.laydate-ym-show .laydate-next-m,.laydate-ym-show .laydate-prev-m{display:none!important}.laydate-ym-show .laydate-next-y,.laydate-ym-show .laydate-prev-y{display:inline-block!important}.laydate-time-show .laydate-set-ym span[lay-type=month],.laydate-time-show .laydate-set-ym span[lay-type=year],.laydate-time-show .layui-laydate-header .layui-icon,.laydate-ym-show .laydate-set-ym span[lay-type=month]{display:none!important}.layui-laydate-header{position:relative;line-height:30px;padding:10px 70px 5px}.laydate-set-ym span,.layui-laydate-header i{padding:0 5px;cursor:pointer}.layui-laydate-header *{display:inline-block;vertical-align:bottom}.layui-laydate-header i{position:absolute;top:10px;color:#999;font-size:18px}.layui-laydate-header i.laydate-prev-y{left:15px}.layui-laydate-header i.laydate-prev-m{left:45px}.layui-laydate-header i.laydate-next-y{right:15px}.layui-laydate-header i.laydate-next-m{right:45px}.laydate-set-ym{width:100%;text-align:center;text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.laydate-time-text{cursor:default!important}.layui-laydate-content{position:relative;padding:10px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.layui-laydate-content table{border-collapse:collapse;border-spacing:0}.layui-laydate-content td,.layui-laydate-content th{width:36px;height:30px;padding:5px;text-align:center}.layui-laydate-content td{position:relative;cursor:pointer}.laydate-day-mark{position:absolute;left:0;top:0;width:100%;height:100%;line-height:30px;font-size:12px;overflow:hidden}.laydate-day-mark::after{position:absolute;content:'';right:2px;top:2px;width:5px;height:5px;border-radius:50%}.layui-laydate-footer{position:relative;height:46px;line-height:26px;padding:10px 20px}.layui-laydate-footer span{margin-right:15px;display:inline-block;cursor:pointer;font-size:12px}.layui-laydate-footer span:hover{color:#5FB878}.laydate-footer-btns{position:absolute;right:10px;top:10px}.laydate-footer-btns span{height:26px;line-height:26px;margin:0 0 0 -1px;padding:0 10px;border:1px solid #C9C9C9;background-color:#fff;white-space:nowrap;vertical-align:top;border-radius:2px}.layui-laydate-list>li,.layui-laydate-range .layui-laydate-main{display:inline-block;vertical-align:middle}.layui-laydate-list{position:absolute;left:0;top:0;width:100%;height:100%;padding:10px;background-color:#fff}.layui-laydate-list>li{position:relative;width:33.3%;height:36px;line-height:36px;margin:3px 0;text-align:center;cursor:pointer}.laydate-month-list>li{width:25%;margin:17px 0}.laydate-time-list>li{height:100%;margin:0;line-height:normal;cursor:default}.laydate-time-list p{position:relative;top:-4px;line-height:29px}.laydate-time-list ol{height:181px;overflow:hidden}.laydate-time-list>li:hover ol{overflow-y:auto}.laydate-time-list ol li{width:130%;padding-left:33px;line-height:30px;text-align:left;cursor:pointer}.layui-laydate-hint{position:absolute;top:115px;left:50%;width:250px;margin-left:-125px;line-height:20px;padding:15px;text-align:center;font-size:12px}.layui-laydate-range{width:546px}.layui-laydate-range .laydate-main-list-0 .laydate-next-m,.layui-laydate-range .laydate-main-list-0 .laydate-next-y,.layui-laydate-range .laydate-main-list-1 .laydate-prev-m,.layui-laydate-range .laydate-main-list-1 .laydate-prev-y{display:none}.layui-laydate-range .laydate-main-list-1 .layui-laydate-content{border-left:1px solid #e2e2e2}.layui-laydate,.layui-laydate-hint{border:1px solid #d2d2d2;box-shadow:0 2px 4px rgba(0,0,0,.12);background-color:#fff;color:#666}.layui-laydate-header{border-bottom:1px solid #e2e2e2}.layui-laydate-header i:hover,.layui-laydate-header span:hover{color:#5FB878}.layui-laydate-content{border-top:none 0;border-bottom:none 0}.layui-laydate-content th{font-weight:400;color:#333}.layui-laydate-content td{color:#666}.layui-laydate-content td.laydate-selected{background-color:#00F7DE}.laydate-selected:hover{background-color:#00F7DE!important}.layui-laydate-content td:hover,.layui-laydate-list li:hover{background-color:#eaeaea;color:#333}.laydate-time-list li ol{margin:0;padding:0;border:1px solid #e2e2e2;border-left-width:0}.laydate-time-list li:first-child ol{border-left-width:1px}.laydate-time-list>li:hover{background:0 0}.layui-laydate-content .laydate-day-next,.layui-laydate-content .laydate-day-prev{color:#d2d2d2}.laydate-selected.laydate-day-next,.laydate-selected.laydate-day-prev{background-color:#f8f8f8!important}.layui-laydate-footer{border-top:1px solid #e2e2e2}.layui-laydate-hint{color:#FF5722}.laydate-day-mark::after{background-color:#5FB878}.layui-laydate-content td.layui-this .laydate-day-mark::after{display:none}.layui-laydate-footer span[lay-type=date]{color:#5FB878}.layui-laydate .layui-this{background-color:#009688!important;color:#fff!important}.layui-laydate .laydate-disabled,.layui-laydate .laydate-disabled:hover{background:0 0!important;color:#d2d2d2!important;cursor:not-allowed!important;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none}.laydate-theme-molv{border:none}.laydate-theme-molv.layui-laydate-range{width:548px}.laydate-theme-molv .layui-laydate-main{width:274px}.laydate-theme-molv .layui-laydate-header{border:none;background-color:#009688}.laydate-theme-molv .layui-laydate-header i,.laydate-theme-molv .layui-laydate-header span{color:#f6f6f6}.laydate-theme-molv .layui-laydate-header i:hover,.laydate-theme-molv .layui-laydate-header span:hover{color:#fff}.laydate-theme-molv .layui-laydate-content{border:1px solid #e2e2e2;border-top:none;border-bottom:none}.laydate-theme-molv .laydate-main-list-1 .layui-laydate-content{border-left:none}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li,.laydate-theme-grid .layui-laydate-content td,.laydate-theme-grid .layui-laydate-content thead,.laydate-theme-molv .layui-laydate-footer{border:1px solid #e2e2e2}.laydate-theme-grid .laydate-selected,.laydate-theme-grid .laydate-selected:hover{background-color:#f2f2f2!important;color:#009688!important}.laydate-theme-grid .laydate-selected.laydate-day-next,.laydate-theme-grid .laydate-selected.laydate-day-prev{color:#d2d2d2!important}.laydate-theme-grid .laydate-month-list,.laydate-theme-grid .laydate-year-list{margin:1px 0 0 1px}.laydate-theme-grid .laydate-month-list>li,.laydate-theme-grid .laydate-year-list>li{margin:0 -1px -1px 0}.laydate-theme-grid .laydate-year-list>li{height:43px;line-height:43px}.laydate-theme-grid .laydate-month-list>li{height:71px;line-height:71px} \ No newline at end of file diff --git a/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png b/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png new file mode 100644 index 0000000..bbbb669 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/icon-ext.png Binary files differ diff --git a/src/main/resources/static/layui/css/modules/layer/default/icon.png b/src/main/resources/static/layui/css/modules/layer/default/icon.png new file mode 100644 index 0000000..3e17da8 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/icon.png Binary files differ diff --git a/src/main/resources/static/layui/css/modules/layer/default/layer.css b/src/main/resources/static/layui/css/modules/layer/default/layer.css new file mode 100644 index 0000000..7c50462 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/layer.css @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + .layui-layer-imgbar,.layui-layer-imgtit a,.layui-layer-tab .layui-layer-title span,.layui-layer-title{text-overflow:ellipsis;white-space:nowrap}html #layuicss-layer{display:none;position:absolute;width:1989px}.layui-layer,.layui-layer-shade{position:fixed;_position:absolute;pointer-events:auto}.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px")}.layui-layer{-webkit-overflow-scrolling:touch;top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:2px;box-shadow:1px 1px 50px rgba(0,0,0,.3)}.layui-layer-close{position:absolute}.layui-layer-content{position:relative}.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2)}.layui-layer-load{background:url(loading-1.gif) center center no-repeat #eee}.layui-layer-ico{background:url(icon.png) no-repeat}.layui-layer-btn a,.layui-layer-dialog .layui-layer-ico,.layui-layer-setwin a{display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-move{display:none;position:fixed;*position:absolute;left:0;top:0;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647}.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize}.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s}@-webkit-keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceIn{0%{opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}100%{opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0) rotate(0);-ms-transform:translateX(0) rotate(0);transform:translateX(0) rotate(0)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}.layui-layer-title{padding:0 80px 0 20px;height:42px;line-height:42px;border-bottom:1px solid #eee;font-size:14px;color:#333;overflow:hidden;background-color:#F8F8F8;border-radius:2px 2px 0 0}.layui-layer-setwin{position:absolute;right:15px;*right:0;top:15px;font-size:0;line-height:initial}.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:10px;font-size:12px;_overflow:hidden}.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#2E2D3C;cursor:pointer;_overflow:hidden}.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA}.layui-layer-setwin .layui-layer-max{background-position:-32px -40px}.layui-layer-setwin .layui-layer-max:hover{background-position:-16px -40px}.layui-layer-setwin .layui-layer-maxmin{background-position:-65px -40px}.layui-layer-setwin .layui-layer-maxmin:hover{background-position:-49px -40px}.layui-layer-setwin .layui-layer-close1{background-position:1px -40px;cursor:pointer}.layui-layer-setwin .layui-layer-close1:hover{opacity:.7}.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px;margin-left:0;background-position:-149px -31px;*right:-18px;_display:none}.layui-layer-setwin .layui-layer-close2:hover{background-position:-180px -31px}.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none}.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:2px;font-weight:400;cursor:pointer;text-decoration:none}.layui-layer-btn a:hover{opacity:.9;text-decoration:none}.layui-layer-btn a:active{opacity:.8}.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff}.layui-layer-btn-l{text-align:left}.layui-layer-btn-c{text-align:center}.layui-layer-dialog{min-width:260px}.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto}.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:16px;left:15px;_left:-40px;width:30px;height:30px}.layui-layer-ico1{background-position:-30px 0}.layui-layer-ico2{background-position:-60px 0}.layui-layer-ico3{background-position:-90px 0}.layui-layer-ico4{background-position:-120px 0}.layui-layer-ico5{background-position:-150px 0}.layui-layer-ico6{background-position:-180px 0}.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none}.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none}.layui-layer-hui{min-width:100px;background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,.6);color:#fff;border:none}.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center}.layui-layer-dialog .layui-layer-padding{padding:20px 20px 20px 55px;text-align:left}.layui-layer-page .layui-layer-content{position:relative;overflow:auto}.layui-layer-iframe .layui-layer-btn,.layui-layer-page .layui-layer-btn{padding-top:10px}.layui-layer-nobg{background:0 0}.layui-layer-iframe iframe{display:block;width:100%}.layui-layer-loading{border-radius:100%;background:0 0;box-shadow:none;border:none}.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat}.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat}.layui-layer-ico16,.layui-layer-loading .layui-layer-loading2{width:32px;height:32px;background:url(loading-2.gif) no-repeat}.layui-layer-tips{background:0 0;box-shadow:none;border:none}.layui-layer-tips .layui-layer-content{position:relative;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:2px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff}.layui-layer-tips .layui-layer-close{right:-2px;top:-1px}.layui-layer-tips i.layui-layer-TipsG{position:absolute;width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden}.layui-layer-tips i.layui-layer-TipsB,.layui-layer-tips i.layui-layer-TipsT{left:5px;border-right-style:solid;border-right-color:#000}.layui-layer-tips i.layui-layer-TipsT{bottom:-8px}.layui-layer-tips i.layui-layer-TipsB{top:-8px}.layui-layer-tips i.layui-layer-TipsL,.layui-layer-tips i.layui-layer-TipsR{top:5px;border-bottom-style:solid;border-bottom-color:#000}.layui-layer-tips i.layui-layer-TipsR{left:-8px}.layui-layer-tips i.layui-layer-TipsL{right:-8px}.layui-layer-lan[type=dialog]{min-width:280px}.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none}.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333}.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5}.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none}.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95}.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1}.layui-layer-iconext{background:url(icon-ext.png) no-repeat}.layui-layer-prompt .layui-layer-input{display:block;width:230px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333}.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px}.layui-layer-prompt .layui-layer-content{padding:20px}.layui-layer-prompt .layui-layer-btn{padding-top:0}.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4)}.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible}.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:260px;padding:0 20px;text-align:center;overflow:hidden;cursor:pointer}.layui-layer-tab .layui-layer-title span.layui-this{height:43px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10}.layui-layer-tab .layui-layer-title span:first-child{border-left:none}.layui-layer-tabmain{line-height:24px;clear:both}.layui-layer-tabmain .layui-layer-tabli{display:none}.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block}.layui-layer-photos{-webkit-animation-duration:.8s;animation-duration:.8s}.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center}.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top}.layui-layer-imgbar,.layui-layer-imguide{display:none}.layui-layer-imgnext,.layui-layer-imgprev{position:absolute;top:50%;width:27px;_width:44px;height:44px;margin-top:-22px;outline:0;blr:expression(this.onFocus=this.blur())}.layui-layer-imgprev{left:10px;background-position:-5px -5px;_background-position:-70px -5px}.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px}.layui-layer-imgnext{right:10px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px}.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px}.layui-layer-imgbar{position:absolute;left:0;bottom:0;width:100%;height:32px;line-height:32px;background-color:rgba(0,0,0,.8);background-color:#000\9;filter:Alpha(opacity=80);color:#fff;overflow:hidden;font-size:0}.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px}.layui-layer-imgtit a{max-width:65%;overflow:hidden;color:#fff}.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline}.layui-layer-imgtit em{padding-left:10px;font-style:normal}@-webkit-keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes layer-bounceOut{100%{opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7)}30%{-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05)}0%{-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}}.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s}@media screen and (max-width:1100px){.layui-layer-iframe{overflow-y:auto;-webkit-overflow-scrolling:touch}} \ No newline at end of file diff --git a/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif b/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif new file mode 100644 index 0000000..6f3c953 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/loading-0.gif Binary files differ diff --git a/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif b/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif new file mode 100644 index 0000000..db3a483 --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/loading-1.gif Binary files differ diff --git a/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif b/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif new file mode 100644 index 0000000..5bb90fd --- /dev/null +++ b/src/main/resources/static/layui/css/modules/layer/default/loading-2.gif Binary files differ diff --git a/src/main/resources/static/layui/font/iconfont.eot b/src/main/resources/static/layui/font/iconfont.eot new file mode 100644 index 0000000..f30753f --- /dev/null +++ b/src/main/resources/static/layui/font/iconfont.eot Binary files differ diff --git a/src/main/resources/static/layui/font/iconfont.svg b/src/main/resources/static/layui/font/iconfont.svg new file mode 100644 index 0000000..f407df7 --- /dev/null +++ b/src/main/resources/static/layui/font/iconfont.svg @@ -0,0 +1,485 @@ +<?xml version="1.0" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" > +<!-- +2013-9-30: Created. +--> +<svg> +<metadata> +Created by iconfont +</metadata> +<defs> + +<font id="layui-icon" horiz-adv-x="1024" > + <font-face + font-family="layui-icon" + font-weight="500" + font-stretch="normal" + units-per-em="1024" + ascent="896" + descent="-128" + /> + <missing-glyph /> + + <glyph glyph-name="reply-fill" unicode="" d="M507.904 835.5840000000001q93.184 1.024 175.104-33.792t143.872-94.72 97.792-141.312 36.864-174.592q1.024-88.064-30.208-165.888t-87.04-137.728-131.072-98.816-162.304-48.128q-22.528-3.072-48.128-5.12t-56.832-3.072-69.632 0-86.528 6.144q-106.496 10.24-158.208 26.624t-41.472 18.432q54.272 9.216 93.184 29.696 20.48 11.264 16.896 32.256t-19.968 39.424q-52.224 57.344-84.48 133.632t-34.304 164.352q-1.024 93.184 33.792 175.104t95.232 143.36 142.336 97.28 175.104 36.864zM707.584 385.024q0-26.624 18.432-45.568t45.056-18.944 45.568 18.944 18.944 45.568-18.944 45.056-45.568 18.432-45.056-18.432-18.432-45.056zM450.56 385.024q0-26.624 19.456-46.08t46.08-19.456q27.648 0 46.592 19.456t18.944 46.08q0 27.648-18.944 46.592t-46.592 18.944q-26.624 0-46.08-18.944t-19.456-46.592zM196.608 386.048q0-26.624 18.944-46.08t45.568-19.456q27.648 0 46.592 19.456t18.944 46.08-18.944 45.568-46.592 18.944q-26.624 0-45.568-18.944t-18.944-45.568z" horiz-adv-x="1024" /> + + + <glyph glyph-name="set-fill" unicode="" d="M916.9398 445.2101l-69.9664 10.7833c-18.6619 2.863-38.1388 17.826-43.3424 33.2487-5.1618 15.3809-15.0883 65.4524-3.9288 80.6661l41.9004 57.135c11.1595 15.2346 9.3832 38.5985-3.9706 51.9314l-30.6364 30.6573c-13.3538 13.3538-36.7177 15.151-51.9314 3.9497l-57.135-41.8795c-15.2346-11.1804-39.4344-14.3987-53.7704-7.168-14.3569 7.2307-57.3022 35.7773-60.1652 54.4183l-10.7833 69.9664C570.3471 807.6016 552.542 822.8571 533.6712 822.8571h-43.34236734693877c-18.8709 0-36.6759-15.2555-39.5389-33.9174l-10.7833-69.9664c-2.863-18.6619-17.826-38.1388-33.2487-43.3424-15.4018-5.1827-65.4524-15.1092-80.687-3.9288L268.9567 713.5817c-15.2346 11.1804-38.6194 9.3832-51.9523-3.9497l-30.6364-30.6573c-13.3747-13.3538-15.151-36.7177-3.9706-51.9314l41.9004-57.135c11.1595-15.2346 14.3778-39.4136 7.168-53.7704-7.2307-14.3569-35.7773-57.2813-54.4183-60.1443l-69.9664-10.7833C88.3984 442.3471 73.1429 424.542 73.1429 405.6712v-43.34236734693877c0-18.8709 15.2555-36.6759 33.9174-39.5389l69.9664-10.7833c18.6619-2.863 38.1388-17.8469 43.3424-33.2487 5.1618-15.4018 15.0883-65.4733 3.9288-80.687l-41.9004-57.135c-11.1595-15.2346-9.3832-38.6194 3.9706-51.9314l30.6364-30.6573c13.3538-13.3538 36.7177-15.151 51.9523-3.9706l57.135 41.9213c15.2346 11.1386 39.4136 14.3778 53.7704 7.168 14.3569-7.2307 57.2813-35.7773 60.1443-54.4183l10.7833-69.9664c2.863-18.6619 20.6472-33.9174 39.5389-33.9174h43.34236734693877c18.8709 0 36.6759 15.2555 39.5389 33.9174l10.7833 69.9664c2.863 18.6619 17.826 38.1388 33.2487 43.3215 15.4018 5.1827 65.4524 15.0883 80.6661 3.9288l57.1559-41.9213c15.2346-11.1595 38.5985-9.3623 51.9314 3.9706l30.6364 30.6573c13.3747 13.3329 15.151 36.7177 3.9706 51.9314l-41.9004 57.135c-11.1595 15.2346-14.3778 39.4136-7.168 53.7496 7.2307 14.3778 35.7773 57.3231 54.4183 60.1861l69.9664 10.7833c18.6619 2.863 33.9174 20.6472 33.9174 39.5389v43.34236734693877C950.8571 424.542 935.6016 442.3471 916.9398 445.2101zM512 210.4633c-95.838 0-173.5367 77.6986-173.5367 173.5367s77.6986 173.5367 173.5367 173.5367 173.5367-77.6986 173.5367-173.5367S607.838 210.4633 512 210.4633zM512 384m-104.7824 0a5.014 5.014 0 1 1 209.5647 0 5.014 5.014 0 1 1-209.5647 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="menu-fill" unicode="" d="M511.999488 834.254727c-248.678712 0-450.273176-201.585181-450.273176-450.254727s201.594464-450.254727 450.273176-450.254727 450.273176 201.585181 450.273176 450.254727S760.6782 834.254727 511.999488 834.254727zM266.371377 589.705012l491.256222 0 0-33.772174L266.371377 555.932838 266.371377 589.705012zM757.627599 178.29396499999996L266.371377 178.29396499999996l0 33.773198 491.256222 0L757.627599 178.29396499999996zM140.487278 367.11340099999995l0 33.771151 743.024421 0 0-33.771151L140.487278 367.11340099999995z" horiz-adv-x="1024" /> + + + <glyph glyph-name="search" unicode="" d="M439.323351 120.52219c-49.280352 0-97.09834 9.656941-142.126681 28.699646-43.480015 18.388812-82.522793 44.706201-116.043584 78.225619s-59.841305 72.560596-78.230871 116.03883C83.878729 388.513804 74.222416 436.330856 74.222416 485.609189c0 49.284473 9.656313 97.104595 28.699798 142.133138 18.388542 43.479257 44.71008 82.520435 78.231894 116.03883 33.518745 33.515325 72.562546 59.832713 116.043584 78.219479 45.027318 19.039635 92.846329 28.694529 142.125658 28.694529 49.280352 0 97.099364-9.653871 142.126681-28.694529 43.481039-18.385742 82.525863-44.704155 116.044608-78.220502 33.520791-33.518395 59.842328-72.559573 78.230871-116.03883 19.042462-45.028543 28.699798-92.848665 28.699798-142.133138 0-49.278333-9.657336-97.095385-28.701845-142.122905-18.388542-43.47721-44.708033-82.520435-78.228824-116.03883s-72.563569-59.838853-116.043584-78.226642C536.422715 130.177084 488.603703 120.52219 439.323351 120.52219zM439.323351 797.483242c-171.975699 0-311.887855-139.906423-311.887855-311.875077S267.347652 173.734112 439.323351 173.734112s311.887855 139.907447 311.887855 311.874053S611.299051 797.483242 439.323351 797.483242zM890.678206-48.734702c-22.121716 0-42.90387 8.562003-58.541653 24.115234L674.672953 128.025071l37.039062 38.20616 157.888289-153.058978c5.606924-5.606695 13.091693-8.692986 21.077901-8.692986 7.983139 0 15.464837 3.087315 21.070738 8.69094 5.616135 5.622044 8.715856 13.126972 8.715856 21.123087 0 7.980765-3.091535 15.46318-8.702552 21.067828l-0.301888 0.306992L758.714395 213.230662l38.207726 37.035498 152.611906-157.427472c15.571265-15.638165 24.144876-36.422538 24.144876-58.549487 0-22.195511-8.625801-43.054585-24.287121-58.735729C933.723298-40.112324 912.876674-48.734702 890.678206-48.734702zM281.015489 327.245392c-42.340005 42.320874-65.652899 98.584296-65.643689 158.421102 0.008187 59.818387 23.319034 116.074645 65.637549 158.4078l37.634651-37.619806c-66.60666-66.629513-66.60973-175.00071-0.007163-241.577011L281.015489 327.245392z" horiz-adv-x="1024" /> + + + <glyph glyph-name="share" unicode="" d="M769.714 306.453c-51.754 0-97.702-24.851-126.571-63.269L394.479 367.94100000000003c3.93 13.798 6.034 28.364 6.034 43.424 0 16.496-2.527 32.399-7.211 47.35l247.724 124.288c28.71-40.052 75.647-66.151 128.687-66.151 87.388 0 158.229 70.84 158.229 158.229 0 87.388-70.841 158.229-158.229 158.229-87.389 0-158.229-70.841-158.229-158.229 0-6.046 0.352-12.009 1.011-17.88L351.22 526.116c-28.371 26.943-66.723 43.479-108.938 43.479-87.388 0-158.229-70.84-158.229-158.229s70.84-158.229 158.229-158.229c43.752 0 83.354 17.758 111.997 46.459l258.676-129.779c-0.964-7.062-1.474-14.266-1.474-21.592 0-87.389 70.84-158.229 158.229-158.229s158.229 70.84 158.229 158.229C927.938 235.61199999999997 857.103 306.453 769.714 306.453L769.714 306.453z" horiz-adv-x="1024" /> + + + <glyph glyph-name="set-sm" unicode="" d="M946.367 405.895c0.02 21.85-13.04 38.49-31.74 41.57-18.69 3.07-79.05 13.01-85.99 14.14-6.95 1.15-14.09 8.07-15.4 11.45-1.32 3.37-8.94 22.2-11.87 29.46-2.95 7.27-1.92 16.58 4.39 25.52 6.3 8.93 39.9 55.87 48.38 67.72 8.49 11.87 8.65 34.61-4.84 48.39-13.48 13.78-47.75 47.09-56.73 55.86-8.99 8.76-31.08 8.64-42.67 0.43-11.58-8.2-71.69-51.01-71.69-51.01s-9.97-6.89-20.67-2.64c-10.7 4.24-33.43 14.07-33.43 14.07s-7.19 5.43-9.68 19.79c-2.5 14.37-11.11 65.28-14.07 82.7-2.97 17.42-20.67 29.62-37.83 29.46-17.16-0.14-57.91 0-74.33 0s-32.26-15.68-34.75-29.46c-2.49-13.79-11.56-69.16-14.07-84.45-2.52-15.3-11.44-18.48-11.44-18.48s-19.56-8.06-29.91-12.31c-10.34-4.26-15.39-2.64-30.35 7.48-14.95 10.11-44.74 31.03-63.04 43.83-18.3 12.81-38.12 7.92-49.26-3.52s-36.06-35.77-51.02-50.43c-14.95-14.66-12.61-37.54 0.58-55.71 13.2-18.18 32.34-45.43 41.35-58.21 9.01-12.78 10.84-19.5 8.36-26.82-2.49-7.34-6.64-16.58-11.43-27.72-4.81-11.13-9.69-13.64-27.86-17.01-17.36-3.21-58.42-9.92-77.4-13.31-18.99-3.37-30.66-21.43-30.66-41.81l0-64.66c0-24.34 13.2-37.24 38.42-41.93 25.22-4.69 62.66-10.66 74.77-12.61 12.1-1.95 17.67-6.6 21.41-15.54 3.73-8.94 5.13-10.12 9.37-22.57 4.26-12.47 6.46-15.55-4.98-31.67-11.44-16.13-34.31-48.11-46.03-64.51-11.74-16.4-6.45-37.83 4.98-49.85 11.44-12.03 35.47-35.64 48.97-48.97 13.49-13.33 35.19-16.28 53.36-3.52 18.19 12.75 54.98 38.99 65.69 46.62 10.7 7.63 21.91 5.28 27.85 2.94 5.94-2.35 11.25-4.6 22-9.1 10.73-4.48 13.85-11.2 16.41-23.45 2.57-12.24 10.19-56.85 13.93-78.59 3.75-21.72 18.91-33.43 40.62-33.72 21.7-0.29 33.27-0.12 61.57 0 28.29 0.13 41.86 12.61 45.45 31.38 3.59 18.76 12.45 72.94 14.22 83.72 1.78 10.76 5.94 14.73 13.63 18.47 7.7 3.74 14.32 6.47 26.84 11.88 12.51 5.4 18.91 0.66 27.7-5.72 8.8-6.39 47.51-33.78 63.78-45.31 16.28-11.53 36.73-10.33 51.9 4.4 15.18 14.73 31.62 30.99 49.27 48.38 17.64 17.4 12.16 39.59 4.4 51.46-7.77 11.88-44.49 62.95-49.71 70.23-5.21 7.28-4.4 18.62-1.75 24.63 2.64 6.01 8.44 18.24 11.72 25.22 3.29 6.97 9.6 11.22 18.18 12.9 8.58 1.69 62.72 11 83.75 14.61 21.03 3.64 31.11 19.92 31.26 39.92C946.427 359.93499999999995 946.347 388.525 946.367 405.895zM908.587 338.615c0.21-5.76-4.66-10.65-8.82-11.38-4.17-0.73-63.26-11.38-81.48-14.29-18.21-2.92-33.23-15.07-38.72-28.06-3.98-9.44-5.47-13.51-10.59-26.96-5.12-13.44-4.64-32.19 2.56-42.26 7.2-10.08 46.82-64.9 50.38-70.45s4.27-11.95-1.28-17.5-40.99-41.2-47.39-47.39c-6.41-6.19-11.83-4.8-18.79 0-6.95 4.8-39.61 26.39-64.44 44.36-16.96 12.28-32.82 12.43-48.7 6.02-15.87-6.42 1.28 0.28-22.2-8.97-23.48-9.25-30.23-27.62-33.73-48.24-3.5-20.63-10.67-62.98-11.95-70.45-1.28-7.47-5.55-11.1-13.66-11.1l-64.9 0c-8.11 0-11.74 2.99-14.52 11.95-2.77 8.97-10.03 54.87-12.8 74.29-2.78 19.43-13.82 36.12-24.77 40.56-10.94 4.45-4.98 2.14-27.32 11.1-22.34 8.97-39.63 4.5-51.23-3.84-11.61-8.34-58.64-42.69-65.33-46.96-6.68-4.28-14.65-3.28-18.35 0.42-3.7 3.7-40.56 40.56-46.54 46.54-5.98 5.98-5.36 12.92 0 20.49 5.36 7.58 28.39 40.76 40.99 57.95 12.59 17.2 17.93 34.74 9.82 53.49-8.12 18.74-4.42 10.24-12.39 28.6-7.96 18.36-24.28 24.46-38.42 26.9-14.14 2.43-68.88 11.53-76.85 13.23-7.97 1.71-11.95 7.26-11.95 14.09l0 66.18c0 9.53 7.67 12.44 12.38 13.23 4.7 0.8 54.22 9.18 73 12.39 18.79 3.2 36.36 11.32 43.55 29.03 7.19 17.7 4.27 11.1 11.1 27.32 6.83 16.23 3.8 33.94-7.68 49.96-11.49 16.01-38.85 54-44.4 61.9-5.55 7.9-5.77 12.6 0.85 19.21 6.62 6.62 42.05 42.48 46.96 46.97 4.91 4.48 12.07 5.4 18.36 0.85 6.3-4.55 49.31-35.65 64.04-46.11 14.73-10.46 32.35-12.56 49.1-5.55 16.75 7.02 10.25 4.48 26.9 11.1s24.84 19.09 28.18 39.71c3.33 20.61 11.95 74.14 12.81 77.7 0.85 3.55 5.55 10.46 11.74 10.46s65.82-0.07 69.8 0c3.99 0.07 10.3-3.29 11.32-9.18 1.02-5.9 13.02-74.29 14.94-86.25 1.92-11.95 15.58-28.57 25.54-32.73 9.96-4.16 21.35-8.75 31.31-13.09 9.97-4.34 30.13-1.91 36.15 2.28 6.03 4.18 70.52 48.81 75.43 52.37 4.91 3.56 11.52 3.27 17.64-2.85s43.34-43.19 47.54-47.53c4.19-4.34 4.66-8.66 1.14-13.66-3.53-5.01-36.72-51.8-47.54-67.46-10.81-15.65-11.73-33.73-5.41-48.96 6.33-15.22 3.99-9.39 9.11-21.91 5.13-12.53 16.28-29.03 33.59-31.88 17.31-2.85 76.92-12.74 84.82-13.95 7.9-1.21 11.1-7.18 11.1-13.37S908.377 344.385 908.587 338.615zM526.833 573.1949999999999c-110.45 0-200-89.54-200-200s89.55-200 200-200c110.46 0 200 89.54 200 200S637.293 573.1949999999999 526.833 573.1949999999999zM526.833 208.19500000000005c-91.12 0-165 73.87-165 165s73.88 165 165 165c91.13 0 165-73.87 165-165S617.963 208.19500000000005 526.833 208.19500000000005z" horiz-adv-x="1024" /> + + + <glyph glyph-name="engine" unicode="" d="M422.214332 360.70413299999996L186.183684 360.70413299999996l0 46.568461 236.030648 0c10.379577 40.075407 46.47537 69.794509 89.785668 69.794509 51.432433 0 93.067103-41.657943 93.067103-93.067103C605.067103 332.56756700000005 563.40916 290.909624 512 290.909624 468.689703 290.909624 432.593909 320.65199900000005 422.214332 360.70413299999996L422.214332 360.70413299999996zM512 779.634098c-218.529658 0-395.634098-177.10444-395.634098-395.634098 0-218.529658 177.10444-395.634098 395.634098-395.634098 154.76275 0 288.417257 89.064217 353.440885 218.55293l101.398692-59.112389-23.063141-39.959044-62.161099 35.909613c-33.745261-51.595341-77.42792-96.115813-129.093079-129.744711l35.653614-61.765464-40.308133-23.295867-35.653614 61.765464c-53.620057-27.345298-113.360805-44.404109-176.894987-47.73209L535.319139-127.99706800000001l-46.568461 0 0 70.981412c-63.534182 3.327981-123.27493 20.386792-176.894987 47.73209l-35.653614-61.765464-40.308133 23.295867 35.653614 61.765464c-51.665159 33.628898-95.347818 78.149371-129.093079 129.744711l-62.161099-35.909613-23.295867 40.308133 62.114553 35.863067c-27.415116 53.550239-44.799743 113.104807-48.127724 176.685534L0.002932 360.70413299999996l0 46.568461 70.958139 0c3.327981 63.580727 20.712609 123.135295 48.127724 176.685534l-62.114553 35.863067 23.295867 40.308133 62.161099-35.909613c33.745261 51.595341 77.42792 96.115813 129.093079 129.744711l-35.653614 61.765464 40.308133 23.295867 35.653614-61.765464c53.620057 27.345298 113.360805 44.404109 176.894987 47.73209L488.727406 895.997068l46.568461 0 0-70.981412c63.534182-3.327981 123.27493-20.386792 176.894987-47.73209l35.653614 61.765464 40.308133-23.295867-35.653614-61.765464c51.665159-33.628898 95.347818-78.149371 129.093079-129.744711l62.161099 35.909613 23.063141-39.959044-101.398692-59.112389C800.417257 690.569881 666.76275 779.634098 512 779.634098L512 779.634098z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close" unicode="ဆ" d="M783.483 701.249L512 429.775 240.517 701.249c-10.082 10.083-26.429 10.083-36.51 0-10.083-10.082-10.083-26.429 0-36.509l271.481-271.475L204.008 121.78800000000001c-10.083-10.081-10.083-26.428 0-36.508 10.082-10.082 26.429-10.082 36.51 0L512 356.755l271.483-271.475c10.082-10.082 26.429-10.082 36.513 0 10.081 10.083 10.081 26.428 0 36.508L548.51 393.265l271.485 271.474c10.081 10.083 10.081 26.429 0 36.509C809.912 711.33 793.564 711.33 783.483 701.249z" horiz-adv-x="1024" /> + + + <glyph glyph-name="close-fill" unicode="ဇ" d="M512 822.022125c-217.47508 0-394.423141-176.949085-394.423141-394.423141 0-217.474057 176.948061-394.422118 394.423141-394.422118 217.473033 0 394.422118 176.948061 394.422118 394.422118C906.422118 645.07304 729.473033 822.022125 512 822.022125zM702.228529 270.92978200000005c8.030907-8.030907 8.030907-21.052478 0-29.083385s-21.052478-8.030907-29.083385 0L512 402.992563 350.853833 241.84741899999995c-8.030907-8.030907-21.052478-8.030907-29.083385 0s-8.030907 21.052478 0 29.083385l161.146167 161.146167L321.771471 593.222115c-8.030907 8.030907-8.030907 21.052478 0 29.083385s21.052478 8.030907 29.083385 0l161.146167-161.146167L673.145144 622.305501c8.030907 8.030907 21.052478 8.030907 29.083385 0s8.030907-21.052478 0-29.083385L541.082362 432.075949 702.228529 270.92978200000005z" horiz-adv-x="1024" /> + + + <glyph glyph-name="chart-screen" unicode="" d="M963.930903 179.21903299999997l0 34.824133-37.354769-2.675946L926.576133 694.8538169999999 691.413206 694.8538169999999l0 70.462818L330.260819 765.316635l0-70.462818L95.690386 694.8538169999999l0-480.809627-35.621289 0 0-34.824133 432.583253 0 0-141.228535-90.313935 0 0-35.307134 216.753649 0 0 35.307134-90.313935 0L528.778128 179.21903299999997 963.930903 179.21903299999997zM366.212636 730.008478L655.216819 730.008478l0-35.307134L366.212636 694.7013440000001 366.212636 730.008478zM364.817869 332.73133600000006L222.224244 406.252817l14.295588 27.736715 123.238812-63.523779 173.928285 159.755494 127.5807-92.634794 93.13826 122.414027 12.420891-9.449209 12.420891-9.449209L667.639756 394.365068l-131.636063 95.621824L364.817869 332.73133600000006z" horiz-adv-x="1024" /> + + + <glyph glyph-name="star" unicode="" d="M749.624889-84.152889c-15.672889 0-31.246222 3.882667-45.084444 11.306667l-192.526222 103.637333L319.544889-72.817778c-31.203556-16.64-70.314667-14.392889-99.043556 5.304889-29.511111 20.337778-44.743111 55.921778-38.840889 90.695111l37.703111 225.251556L56.661333 410.908444c-25.002667 24.888889-33.464889 60.984889-22.058667 94.193778 11.349333 32.910222 40.064 56.576 74.965333 61.752889l221.326222 32.896 96.128 199.580444c15.488 32.085333 48.853333 52.807111 84.992 52.807111 36.167111 0 69.518222-20.736 84.963556-52.807111l96.156444-199.580444 221.297778-32.910222c34.872889-5.162667 63.616-28.8 74.979556-61.696 11.392-33.28 2.944-69.361778-22.030222-94.250667L804.622222 248.433778l37.745778-225.28c5.845333-34.773333-9.386667-70.357333-38.812444-90.638222C787.569778-78.392889 768.938667-84.152889 749.624889-84.152889zM512.014222 91.548444c4.636444 0 9.272889-1.137778 13.482667-3.384889l205.937778-110.862222c12.373333-6.641778 28.316444-5.802667 39.936 2.133333 11.392 7.836444 17.123556 21.006222 14.890667 34.304L746.097778 253.496889c-1.507556 9.088 1.450667 18.332444 7.964444 24.832l173.141333 172.842667c9.457778 9.429333 12.686222 23.025778 8.405333 35.484444-4.380444 12.672-15.701333 21.873778-29.525333 23.921778L669.866667 545.706667c-9.315556 1.379556-17.365333 7.296-21.447111 15.786667L545.720889 774.641778c-6.030222 12.529778-19.256889 20.608-33.706667 20.608s-27.690667-8.092444-33.763556-20.622222L375.608889 561.493333c-4.081778-8.490667-12.131556-14.407111-21.447111-15.786667L117.930667 510.577778c-13.624889-2.033778-25.201778-11.434667-29.539556-23.992889-4.266667-12.416-1.024-25.984 8.433778-35.399111L269.937778 278.328889c6.513778-6.499556 9.472-15.744 7.964444-24.832l-40.135111-239.744c-2.247111-13.312 3.484444-26.439111 14.976-34.360889 11.434667-7.836444 27.349333-8.775111 39.950222-2.062222l205.852444 110.833778C502.741333 90.410667 507.377778 91.548444 512.014222 91.548444zM200.32 439.210667c-6.840889 0-12.885333 4.963556-14.023111 11.946667-1.251556 7.751111 4.010667 15.061333 11.761778 16.312889l9.443556 1.536c7.793778 1.336889 15.061333-4.010667 16.312889-11.761778 1.251556-7.751111-4.010667-15.061333-11.761778-16.312889l-9.443556-1.536C201.856 439.267556 201.073778 439.210667 200.32 439.210667zM252.544 447.687111c-6.684444 0-12.643556 4.721778-13.937778 11.534222-1.493333 7.708444 3.555556 15.175111 11.264 16.654222l153.927111 29.696 58.055111 133.148444c3.157333 7.182222 11.548444 10.496 18.716444 7.352889 7.210667-3.143111 10.510222-11.52 7.367111-18.716444l-61.056-140.017778c-1.877333-4.295111-5.745778-7.395556-10.353778-8.277333l-161.28-31.118222C254.336 447.758222 253.44 447.687111 252.544 447.687111z" horiz-adv-x="1024" /> + + + <glyph glyph-name="circle-dot" unicode="" d="M513.133312 830.6731560000001c-247.538793 0-448.208115-200.669322-448.208115-448.207092 0-247.538793 200.670346-448.208115 448.208115-448.208115 247.538793 0 448.208115 200.670346 448.208115 448.208115C961.341427 630.004857 760.673128 830.6731560000001 513.133312 830.6731560000001zM513.132288-6.649187999999981c-214.901465 0-389.113205 174.212764-389.113205 389.114229 0 214.902488 174.21174 389.115252 389.113205 389.115252 214.903511 0 389.115252-174.212764 389.115252-389.115252C902.24754 167.563576 728.0358-6.649187999999981 513.132288-6.649187999999981zM513.133312 382.46504100000004m-344.602456 0a336.754 336.754 0 1 1 689.204911 0 336.754 336.754 0 1 1-689.204911 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="chat" unicode="" d="M132.682393 414.567179c0 208.287837 166.471452 377.143593 379.317095 377.143593s385.380184-168.855756 385.380184-377.143593c0-177.196725-122.197086-325.812507-290.49821-366.259708l-116.291586-51.04763 0 41.126676C290.570353 52.175568999999996 132.682393 215.31206599999996 132.682393 414.567179zM83.799056 414.567179c0-211.946157 160.764474-387.135154 369.469819-415.152255-3.2623-20.458961-10.036587-65.024969-7.286963-65.024969 2.384303 0 114.89068 47.294143 189.700503 78.865185 176.193885 51.91437 304.518528 211.946157 304.518528 401.312038 0 231.432976-191.70823 419.042865-428.200432 419.042865S83.799056 646.0001560000001 83.799056 414.567179zM340.71952 276.63573699999995c22.935362-41.481763 89.831958-75.102489 170.391738-75.102489 79.650061 0 148.489916 32.909527 172.168198 73.681116-12.701277 5.979178-19.068288 8.02886-28.131711 12.21009-19.894096-31.257911-75.425853-59.661821-142.729725-59.661821-66.969251 0-122.836653 28.40391-143.598512 61.083194L340.71952 276.63573699999995z" horiz-adv-x="1024" /> + + + <glyph glyph-name="release" unicode="" d="M990.78144 828.5388800000001c-3.35872 1.59744-7.04512 2.37568-11.01824 2.37568-14.45888 0-27.60704-10.81344-27.40224-10.81344-8.8064-4.42368-880.59904-443.22816-911.44192-459.44832-17.408-9.13408-27.36128-24.73984-25.92768-40.71424 1.10592-13.14816 9.78944-23.51104 23.10144-27.77088 26.17344-8.27392 290.24256-91.58656 290.24256-91.58656l4.83328-1.47456 16.67072 50.05312-254.32064 79.54432 780.73856 406.28224c-82.82112-93.88032-420.53632-476.32384-436.10112-493.93664-20.11136-22.48704-29.4912-45.09696-29.40928-70.98368l0.28672-153.27232-0.08192 0c0 0 0.08192-53.49376 0.08192-53.6576l0-1.96608 0 0c1.18784-13.5168 12.73856-24.24832 26.54208-24.24832s25.51808 10.73152 26.74688 24.24832l0 0c0 0 0.53248 191.03744 0 205.08672-0.49152 12.4928 5.07904 26.54208 10.69056 33.05472 5.65248 6.38976 390.63552 442.61376 465.75616 527.81056-21.38112-106.41408-126.68928-629.76-128.24576-637.41952-0.8192-4.05504-2.58048-4.05504-3.35872-4.05504-0.6144 0-1.31072 0.12288-2.048 0.36864-7.45472 2.37568-268.82048 81.55136-279.92064 84.91008l-4.7104 1.4336-17.16224-50.50368 5.07904-1.59744c2.58048-0.77824 258.90816-79.09376 284.38528-86.46656 5.07904-1.47456 10.24-2.2528 15.44192-2.2528 26.99264 0 49.5616 19.37408 54.8864 46.98112 2.08896 10.93632 27.0336 134.67648 55.9104 277.99552 39.77216 197.14048 84.7872 420.61824 85.93408 427.6224l0.6144 3.31776C1009.70496 798.96576 1013.26848 817.9712 990.78144 828.5388800000001z" horiz-adv-x="1024" /> + + + <glyph glyph-name="list" unicode="" d="M618.04471 733.97072l-397.175835 0c-16.927531 0-30.699186-13.771655-30.699186-30.699186l0-638.543068c0-16.927531 13.771655-30.699186 30.699186-30.699186l582.261227 0c16.927531 0 30.699186 13.771655 30.699186 30.699186l-0.726547 476.760404L618.04471 733.97072zM803.771715 541.488871 619.537713 541.488871 619.537713 705.552483 803.771715 541.488871zM813.363164 64.728466c0-5.64251-4.590552-10.233062-10.233062-10.233062l-582.261227 0c-5.64251 0-10.233062 4.590552-10.233062 10.233062l0 638.543068c0 5.64251 4.590552 10.233062 10.233062 10.233062l378.202715 0 0-192.481849 214.291574 0L813.363164 64.728466zM298.129516 482.495268l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 468.168981l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM298.129516 342.044446l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 327.718159l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM298.129516 199.804884l55.258535 0 0-55.258535-55.258535 0 0 55.258535ZM399.777591 185.478598l323.364759 0 0-26.605961-323.364759 0 0 26.605961ZM881.315812 53.053566" horiz-adv-x="1024" /> + + + <glyph glyph-name="chart" unicode="" d="M953.440991 315.668729L784.061302 315.668729 681.06451 437.392024c-0.312108 0.373507-0.635473 0.737804-0.969071 1.094938-0.013303 0.014326-0.026606 0.027629-0.039909 0.041956-0.276293 0.293689-0.559748 0.582261-0.851391 0.86367-0.053212 0.051165-0.107447 0.099261-0.160659 0.150426-0.249687 0.237407-0.50142 0.470721-0.76134 0.697895-0.089028 0.078795-0.181125 0.153496-0.272199 0.230244-0.225127 0.191358-0.451278 0.381693-0.683569 0.565888-0.124843 0.099261-0.251733 0.192382-0.3776 0.288572-0.200568 0.153496-0.402159 0.306992-0.607844 0.454348-0.159636 0.11461-0.322341 0.224104-0.485047 0.334621-0.177032 0.12075-0.354064 0.242524-0.535189 0.35918-0.195451 0.12689-0.394996 0.246617-0.593518 0.367367-0.152473 0.092098-0.302899 0.186242-0.457418 0.275269-0.237407 0.137123-0.477884 0.268106-0.718361 0.397043-0.121773 0.065492-0.2415 0.132006-0.364297 0.195451-0.283456 0.146333-0.571005 0.285502-0.859577 0.420579-0.085958 0.040932-0.170892 0.082888-0.257873 0.122797-0.337691 0.154519-0.679475 0.298805-1.022283 0.437975-0.044002 0.017396-0.086981 0.036839-0.130983 0.055259-1.604544 0.638543-3.2623 1.113357-4.948709 1.416256-0.343831 0.062422-0.687662 0.112564-1.031493 0.160659-0.055259 0.008186-0.110517 0.01842-0.165776 0.025583-1.633197 0.216941-3.25923 0.26913-4.861728 0.173962-0.013303-0.001023-0.026606-0.001023-0.040932-0.002047-0.363274-0.022513-0.724501-0.054235-1.085728-0.091074-0.060375-0.00614-0.119727-0.011256-0.180102-0.017396-0.310062-0.034792-0.618077-0.077771-0.926092-0.122797-0.116657-0.017396-0.232291-0.032746-0.348947-0.051165-0.24764-0.040932-0.494257-0.086981-0.740874-0.135076-0.178055-0.033769-0.355087-0.067538-0.532119-0.105401-0.183172-0.039909-0.36532-0.083911-0.547469-0.127913-0.237407-0.056282-0.474814-0.113587-0.710175-0.176009-0.12075-0.032746-0.240477-0.068562-0.360204-0.102331-0.292666-0.082888-0.584308-0.168846-0.874927-0.26299-0.063445-0.020466-0.125867-0.042979-0.188288-0.063445-0.338714-0.112564-0.675382-0.230244-1.010003-0.357134-0.019443-0.007163-0.038886-0.01535-0.058328-0.022513-1.493004-0.571005-2.948145-1.284249-4.340865-2.149966-0.067538-0.041956-0.13303-0.088004-0.200568-0.12996-0.273223-0.172939-0.545422-0.346901-0.813528-0.531096-1.416256-0.971118-2.734274-2.089591-3.936659-3.333932-0.025583-0.026606-0.049119-0.053212-0.074701-0.079818-0.26299-0.275269-0.521886-0.555655-0.773619-0.843204-0.058328-0.066515-0.112564-0.134053-0.169869-0.200568-0.211824-0.246617-0.420579-0.496304-0.62217-0.751107-0.083911-0.106424-0.164752-0.214894-0.246617-0.322341-0.167822-0.218988-0.334621-0.437975-0.49528-0.663102-0.102331-0.14224-0.199545-0.287549-0.298805-0.431835-0.13303-0.194428-0.26606-0.387833-0.393973-0.586354-0.115634-0.179079-0.225127-0.360204-0.335644-0.541329-0.103354-0.168846-0.207731-0.336668-0.306992-0.508583-0.12689-0.220011-0.24764-0.443092-0.36839-0.666172-0.074701-0.138146-0.151449-0.275269-0.223081-0.416486-0.137123-0.265036-0.265036-0.533143-0.39295-0.802272-0.050142-0.105401-0.101307-0.209778-0.150426-0.316202-0.144286-0.317225-0.279363-0.63752-0.410346-0.958838-0.026606-0.064468-0.055259-0.127913-0.080841-0.193405-0.150426-0.378623-0.291642-0.760317-0.423649-1.14508-0.005117-0.016373-0.011256-0.031722-0.017396-0.048095-0.157589-0.463558-0.303922-0.930185-0.434905-1.400906l-97.897657-342.642824L435.093423 811.832042c-0.071631 0.569982-0.165776 1.13587-0.275269 1.696642-0.008186 0.040932-0.017396 0.081864-0.025583 0.12382-0.071631 0.356111-0.148379 0.709151-0.234337 1.061169-0.031722 0.128937-0.065492 0.255827-0.099261 0.38374-0.066515 0.254803-0.135076 0.508583-0.208754 0.760317-0.060375 0.206708-0.124843 0.411369-0.190335 0.615007-0.053212 0.166799-0.107447 0.332575-0.164752 0.49835-0.092098 0.26913-0.190335 0.535189-0.290619 0.800225-0.037862 0.098237-0.074701 0.196475-0.113587 0.293689-0.12382 0.313132-0.25378 0.623193-0.38988 0.930185-0.022513 0.050142-0.044002 0.100284-0.066515 0.150426-0.152473 0.338714-0.311085 0.672312-0.477884 1.00284-0.01228 0.024559-0.024559 0.049119-0.037862 0.074701-0.173962 0.343831-0.356111 0.682545-0.545422 1.017166-0.011256 0.019443-0.022513 0.039909-0.033769 0.059352-0.188288 0.330528-0.382717 0.654916-0.584308 0.975211-0.021489 0.034792-0.044002 0.068562-0.065492 0.103354-0.190335 0.298805-0.385786 0.592494-0.587378 0.88209-0.045025 0.065492-0.091074 0.12996-0.137123 0.194428-0.180102 0.252757-0.363274 0.502443-0.551562 0.74906-0.079818 0.105401-0.162706 0.208754-0.24457 0.312108-0.157589 0.199545-0.317225 0.396019-0.480954 0.590448-0.124843 0.149403-0.252757 0.295735-0.381693 0.442068-0.125867 0.14224-0.251733 0.284479-0.38067 0.424672-0.174985 0.191358-0.355087 0.378623-0.536212 0.563842-0.088004 0.090051-0.176009 0.180102-0.26606 0.26913-0.224104 0.222057-0.452301 0.440022-0.684592 0.653893-0.054235 0.050142-0.10847 0.100284-0.163729 0.150426-0.265036 0.240477-0.535189 0.474814-0.810459 0.704035-0.028653 0.023536-0.056282 0.047072-0.084934 0.070608-0.294712 0.243547-0.595564 0.479931-0.902556 0.711198-0.01535 0.011256-0.029676 0.022513-0.045025 0.033769-0.311085 0.232291-0.627287 0.458441-0.949628 0.677429-0.019443 0.013303-0.037862 0.025583-0.057305 0.038886-0.309038 0.208754-0.623193 0.411369-0.942465 0.606821-0.045025 0.027629-0.090051 0.054235-0.134053 0.081864-0.288572 0.174985-0.581238 0.343831-0.877997 0.50756-0.090051 0.050142-0.181125 0.098237-0.272199 0.147356-0.25071 0.134053-0.502443 0.265036-0.759293 0.391926-0.156566 0.077771-0.314155 0.151449-0.472767 0.226151-0.194428 0.091074-0.38988 0.182149-0.587378 0.268106-0.239454 0.105401-0.481977 0.204661-0.724501 0.302899-0.12382 0.049119-0.246617 0.100284-0.37146 0.148379-0.334621 0.128937-0.673335 0.249687-1.014096 0.36532-0.042979 0.014326-0.085958 0.029676-0.128937 0.044002-1.6158 0.536212-3.296069 0.915859-5.02034 1.119497-0.01535 0.002047-0.029676 0.004093-0.044002 0.00614-0.309038 0.035816-0.620124 0.062422-0.931209 0.086981-0.132006 0.010233-0.265036 0.025583-0.397043 0.033769-0.174985 0.011256-0.349971 0.01535-0.525979 0.022513-0.270153 0.01228-0.539282 0.024559-0.808412 0.027629-0.054235 0.001023-0.10847-0.001023-0.162706-0.001023-1.696642 0.010233-3.371794-0.149403-5.006014-0.466628-0.065492-0.01228-0.12996-0.027629-0.195451-0.039909-0.331551-0.067538-0.662079-0.13917-0.989537-0.218988-0.148379-0.035816-0.295735-0.075725-0.443092-0.11461-0.234337-0.061398-0.468674-0.124843-0.700965-0.192382-0.224104-0.065492-0.445138-0.135076-0.666172-0.206708-0.149403-0.048095-0.297782-0.096191-0.446162-0.147356-0.286526-0.098237-0.568958-0.201591-0.850367-0.309038-0.079818-0.030699-0.160659-0.061398-0.240477-0.093121-0.330528-0.12996-0.655939-0.267083-0.979304-0.410346-0.033769-0.01535-0.067538-0.029676-0.101307-0.045025-0.355087-0.159636-0.705058-0.325411-1.050935-0.500397-0.008186-0.004093-0.016373-0.008186-0.023536-0.01228-0.360204-0.182149-0.714268-0.372483-1.064238-0.569982-0.004093-0.002047-0.008186-0.005117-0.013303-0.007163-0.344854-0.196475-0.684592-0.399089-1.019213-0.610914-0.020466-0.013303-0.040932-0.025583-0.060375-0.038886-0.313132-0.199545-0.621147-0.404206-0.925069-0.61603-0.050142-0.034792-0.099261-0.070608-0.149403-0.105401-0.268106-0.190335-0.532119-0.38374-0.791016-0.583285-0.091074-0.069585-0.181125-0.141216-0.271176-0.212848-0.212848-0.167822-0.422625-0.337691-0.629333-0.512676-0.137123-0.11461-0.271176-0.232291-0.406253-0.349971-0.154519-0.1361-0.308015-0.272199-0.459464-0.412392-0.179079-0.164752-0.354064-0.332575-0.528026-0.502443-0.102331-0.100284-0.204661-0.199545-0.304945-0.301875-0.211824-0.212848-0.418532-0.430812-0.623193-0.651846-0.059352-0.064468-0.119727-0.128937-0.179079-0.194428-0.231267-0.254803-0.456395-0.515746-0.678452-0.780783-0.031722-0.037862-0.063445-0.075725-0.095167-0.11461-0.23536-0.285502-0.465604-0.577145-0.688685-0.874927-0.01842-0.024559-0.036839-0.048095-0.055259-0.072655-0.226151-0.301875-0.445138-0.60989-0.657986-0.923022-0.019443-0.028653-0.038886-0.057305-0.058328-0.084934-0.202615-0.300852-0.400113-0.606821-0.590448-0.916882-0.032746-0.053212-0.064468-0.105401-0.096191-0.158612-0.169869-0.282433-0.335644-0.567935-0.49528-0.857531-0.053212-0.097214-0.105401-0.194428-0.158612-0.292666-0.130983-0.24457-0.258896-0.490164-0.381693-0.73985-0.080841-0.162706-0.157589-0.326435-0.234337-0.491187-0.088004-0.189312-0.177032-0.378623-0.260943-0.571005-0.107447-0.245593-0.209778-0.493234-0.310062-0.741897-0.047072-0.11768-0.095167-0.234337-0.141216-0.354064-0.130983-0.340761-0.25378-0.684592-0.370437-1.030469-0.013303-0.037862-0.026606-0.075725-0.038886-0.113587-0.180102-0.543376-0.345877-1.092891-0.48914-1.650593L244.22942 305.59939599999996 67.355037 305.59939599999996c-14.128789 0-25.582655-11.453866-25.582655-25.582655s11.453866-25.582655 25.582655-25.582655l191.314257 0c0.867764 0 1.725294 0.044002 2.570545 0.128937 0.828878-0.080841 1.656733-0.1361 2.478448-0.1361 11.218506 0 21.512966 7.439436 24.644283 18.779715l113.358791 410.43686 103.412254-723.884758c0.00921-0.072655 0.021489-0.145309 0.030699-0.217964l0.046049-0.320295c0.002047-0.011256 0.005117-0.021489 0.00614-0.032746 0.109494-0.7552 0.25071-1.502213 0.425695-2.238994 0.01535-0.064468 0.031722-0.12689 0.047072-0.191358 0.166799-0.679475 0.358157-1.350764 0.579191-2.01182 0.041956-0.124843 0.088004-0.24764 0.130983-0.37146 0.210801-0.600681 0.437975-1.194198 0.692778-1.77646 0.068562-0.156566 0.144286-0.309038 0.215918-0.464581 0.223081-0.484024 0.460488-0.961908 0.713244-1.431605 0.106424-0.196475 0.213871-0.390903 0.325411-0.584308 0.265036-0.462534 0.545422-0.914836 0.838088-1.359974 0.088004-0.13303 0.170892-0.268106 0.260943-0.399089 0.354064-0.51677 0.732687-1.016143 1.12359-1.506307 0.078795-0.099261 0.156566-0.198521 0.237407-0.296759 0.420579-0.511653 0.864694-1.004887 1.325182-1.482771 0.051165-0.052189 0.101307-0.105401 0.152473-0.157589 0.494257-0.50449 1.010003-0.989537 1.548262-1.454118 0.00921-0.007163 0.017396-0.014326 0.026606-0.022513 1.636267-1.408069 3.466961-2.620687 5.466502-3.592828 0.075725-0.036839 0.151449-0.074701 0.228197-0.11154 0.576121-0.273223 1.165546-0.525979 1.768273-0.75827 0.158612-0.061398 0.319272-0.118704 0.478907-0.177032 0.558725-0.202615 1.124614-0.393973 1.704828-0.559748 0.005117-0.001023 0.010233-0.002047 0.01535-0.004093 0.278339-0.079818 0.562818-0.13917 0.844228-0.209778 0.394996-0.098237 0.789992-0.194428 1.184989-0.274246 0.283456-0.056282 0.568958-0.103354 0.854461-0.149403 0.445138-0.073678 0.889253-0.134053 1.333368-0.183172 0.229221-0.024559 0.456395-0.052189 0.686638-0.071631 0.710175-0.059352 1.418302-0.099261 2.122337-0.099261 0.337691 0 0.671289 0.027629 1.007957 0.040932 0.276293 0.011256 0.550539 0.013303 0.828878 0.033769 0.401136 0.029676 0.799202 0.079818 1.196245 0.127913 0.191358 0.022513 0.38067 0.033769 0.572028 0.061398 0.069585 0.010233 0.1361 0.024559 0.205685 0.034792 0.232291 0.034792 0.462534 0.075725 0.692778 0.116657 0.463558 0.082888 0.921999 0.176009 1.3743 0.283456 0.109494 0.025583 0.218988 0.047072 0.327458 0.074701 0.582261 0.145309 1.152243 0.316202 1.716084 0.499373 0.098237 0.031722 0.196475 0.063445 0.293689 0.097214 1.90335 0.644683 3.694135 1.50119 5.351891 2.540869 0.014326 0.00921 0.028653 0.01842 0.042979 0.027629 1.089821 0.686638 2.121314 1.452071 3.087315 2.287089 0.083911 0.071631 0.167822 0.143263 0.25071 0.215918 0.424672 0.3776 0.837064 0.76748 1.235131 1.170662 0.12382 0.124843 0.243547 0.254803 0.36532 0.382717 0.317225 0.334621 0.626263 0.677429 0.925069 1.028423 0.155543 0.183172 0.308015 0.36839 0.458441 0.556679 0.26606 0.331551 0.523933 0.670266 0.773619 1.01512 0.130983 0.180102 0.261966 0.35918 0.387833 0.543376 0.294712 0.429789 0.575098 0.86981 0.843204 1.316995 0.099261 0.165776 0.195451 0.334621 0.290619 0.503467 0.283456 0.499373 0.555655 1.004887 0.806365 1.52268 0.031722 0.065492 0.060375 0.13303 0.091074 0.199545 0.276293 0.584308 0.530073 1.178849 0.762363 1.784646 0.00614 0.017396 0.014326 0.034792 0.020466 0.051165 0.251733 0.661056 0.472767 1.336438 0.669242 2.020006 0.002047 0.008186 0.00614 0.016373 0.008186 0.024559l0.061398 0.215918c0.029676 0.106424 0.062422 0.210801 0.090051 0.317225l117.579929 411.527704 79.800487-94.308923c0.070608-0.083911 0.146333-0.161682 0.217964-0.243547 0.190335-0.220011 0.38374-0.436952 0.581238-0.649799 0.134053-0.144286 0.26913-0.285502 0.405229-0.425695 0.164752-0.168846 0.331551-0.335644 0.50142-0.500397 0.164752-0.159636 0.329505-0.319272 0.496304-0.473791 0.138146-0.12689 0.279363-0.25071 0.419556-0.37453 0.198521-0.174985 0.397043-0.350994 0.599657-0.518816 0.081864-0.067538 0.166799-0.132006 0.249687-0.198521 0.817622-0.661056 1.667989-1.264806 2.545986-1.811252 0.098237-0.061398 0.195451-0.125867 0.294712-0.185218 0.228197-0.138146 0.459464-0.267083 0.691755-0.398066 0.157589-0.089028 0.315178-0.178055 0.474814-0.264013 0.200568-0.107447 0.403183-0.208754 0.606821-0.311085 0.202615-0.101307 0.406253-0.201591 0.611937-0.297782 0.173962-0.080841 0.348947-0.159636 0.523933-0.237407 0.245593-0.10847 0.494257-0.212848 0.743944-0.313132 0.144286-0.058328 0.289596-0.115634 0.434905-0.171915 0.291642-0.11154 0.586354-0.216941 0.883113-0.317225 0.11154-0.037862 0.223081-0.076748 0.334621-0.113587 0.337691-0.109494 0.677429-0.210801 1.02126-0.305969 0.078795-0.021489 0.157589-0.046049 0.236384-0.066515 0.376577-0.101307 0.757247-0.193405 1.140986-0.277316 0.050142-0.011256 0.100284-0.023536 0.150426-0.034792 0.405229-0.085958 0.813528-0.162706 1.225921-0.229221 0.031722-0.005117 0.063445-0.01228 0.096191-0.017396 0.412392-0.065492 0.828878-0.12075 1.24741-0.165776 0.032746-0.004093 0.064468-0.00921 0.097214-0.01228 0.382717-0.039909 0.768503-0.068562 1.155313-0.092098 0.068562-0.004093 0.1361-0.01228 0.204661-0.01535 0.25992-0.013303 0.521886-0.01535 0.782829-0.020466 0.188288-0.004093 0.376577-0.01535 0.564865-0.01535 0.008186 0 0.01535 0.001023 0.023536 0.001023l181.208085 0c14.129812 0 25.582655 11.453866 25.582655 25.582655S967.56978 315.668729 953.440991 315.668729z" horiz-adv-x="1024" /> + + + <glyph glyph-name="ok-circle" unicode="စ" d="M516.152065-63.152063c-60.696384 0-119.594819 11.894911-175.056991 35.353183-53.55473 22.651906-101.646028 55.073316-142.936433 96.364745-41.291428 41.291428-73.712839 89.381703-96.363721 142.936433-23.458271 55.462173-35.353183 114.359584-35.353183 175.055968s11.894911 119.594819 35.353183 175.056991c22.651906 53.55473 55.073316 101.646028 96.363721 142.936433 41.290405 41.291428 89.381703 73.712839 142.936433 96.363721 55.462173 23.458271 114.359584 35.353183 175.056991 35.353183s119.594819-11.894911 175.056991-35.353183c53.55473-22.651906 101.645005-55.073316 142.936433-96.363721 41.291428-41.290405 73.711815-89.38068 96.363721-142.936433 23.459295-55.462173 35.353183-114.359584 35.353183-175.056991 0-60.696384-11.893888-119.593795-35.353183-175.055968-22.651906-53.55473-55.072293-101.645005-96.363721-142.936433s-89.381703-73.712839-142.936433-96.364745C635.747907-51.25715200000002 576.849472-63.152063 516.152065-63.152063zM516.152065 774.870222c-214.115566 0-388.311956-174.196391-388.311956-388.311956s174.196391-388.311956 388.311956-388.311956 388.311956 174.196391 388.311956 388.311956S730.268654 774.870222 516.152065 774.870222zM434.74908 132.830517L209.49278 358.08784 289.087583 437.68162 434.74908 292.020122 743.218594 600.488613 822.812373 520.89381Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layim-theme" unicode="" d="M958.830745 538.643056L740.659817 692.753993l-100.539834 0-3.977591-9.332553c-0.37146-0.871857-38.021965-86.8613-124.772748-88.667435-35.691897 0.76441-67.206658 15.500019-93.680613 43.828204-20.658506 22.106484-30.374798 44.584428-30.456662 44.776809l-3.955078 9.393951-100.587929 0L64.518433 538.643056 169.320337 379.756349l89.956801 65.019853-19.016099-368.05254 268.86654 0 4.093225 0 269.866311 0-19.016099 368.051517 89.956801-65.018829L958.830745 538.643056zM730.105437 507.20402l20.655436-399.781172-237.540068 0-4.093225 0L272.587282 107.42284700000005l20.656459 399.781172-115.938546-83.797521-36.3243 55.070246 159.440315 111.641683-19.276019 30.638811L121.066333 508.667348l-14.548344 22.056342 185.921433 131.330094 71.077825 0c5.332449-10.04375 15.433504-26.779923 30.951943-43.580564 32.047904-34.69622 72.256674-53.486168 116.345822-54.411237l0-0.031722c0.203638 0.00307 0.406253 0.01228 0.60989 0.016373 0.203638-0.00307 0.406253-0.013303 0.60989-0.016373l0 0.031722c44.073798 0.925069 84.359316 19.703761 116.566856 54.379515 15.623839 16.821107 25.814945 33.579793 31.188326 43.612287l71.120804 0 185.921433-131.330094-14.548344-22.056342L742.203986 620.7551920000001l-19.276019-30.638811 159.440315-111.641683-36.3243-55.070246L730.105437 507.20402z" horiz-adv-x="1024" /> + + + <glyph glyph-name="table" unicode="" d="M304.738028 343.684806M729.544153 511.153982M595.52788 637.723655M143.806755 686.614156l0-601.704045L881.172549 84.91011100000003l0 601.704045L143.806755 686.614156zM420.318416 299.80441299999995l0 128.936581 184.341448 0 0-128.936581L420.318416 299.80441299999995zM604.659865 256.825552l0-128.936581L420.318416 127.88897099999997l0 128.936581L604.659865 256.825552zM604.659865 600.656435l0-128.936581L420.318416 471.719854l0 128.936581L604.659865 600.656435zM374.232798 600.656435l0-128.936581L189.89135 471.719854l0 128.936581L374.232798 600.656435zM189.89135 428.740994L374.232798 428.740994l0-128.936581L189.89135 299.80441299999995 189.89135 428.740994zM650.745483 428.740994l184.341448 0 0-128.936581L650.745483 299.80441299999995 650.745483 428.740994zM650.745483 471.719854l0 128.936581 184.341448 0 0-128.936581L650.745483 471.719854zM189.89135 256.825552L374.232798 256.825552l0-128.936581L189.89135 127.88897099999997 189.89135 256.825552zM650.745483 127.88897099999997l0 128.936581 184.341448 0 0-128.936581L650.745483 127.88897099999997z" horiz-adv-x="1024" /> + + + <glyph glyph-name="right" unicode="" d="M283.648 721.9189759999999L340.873216 780.926976 740.352 383.99795200000005 340.876288-12.925952000000052 283.648 46.07795199999998 619.52 383.99795200000005Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="left" unicode="" d="M740.352 721.9189759999999L683.126784 780.926976 283.648 383.99795200000005 683.123712-12.925952000000052 740.352 46.07795199999998 404.48 383.99795200000005Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cart-simple" unicode="" d="M235.097303 196.866982C247.384597 160.417152 286.382106 132.37606800000003 324.772759 132.37606800000003L861.658537 132.37606800000003 880.429732 132.37606800000003 885.649214 150.54185399999994 1009.08775 580.154957C1021.388907 622.967661 993.187631 660.786325 949.051586 660.786325L424.585365 660.786325C410.791718 660.786325 399.609756 649.5207379999999 399.609756 635.623932 399.609756 621.727125 410.791718 610.461538 424.585365 610.461538L949.051586 610.461538C959.924 610.461538 964.161052 604.779539 961.106394 594.148171L837.667859 164.53506800000002 861.658537 182.70085500000005 324.772759 182.70085500000005C307.742153 182.70085500000005 287.789837 197.04752900000005 282.395194 213.05054900000005L73.600164 832.433664C69.16437 845.592294 54.980454 852.636656 41.919502 848.167687 28.858551 843.698719 21.86648 829.408727 26.302275 816.250097L235.097303 196.866982ZM399.609756-6.017094000000043C399.609756 49.57012899999995 354.881911 94.63247799999999 299.707317 94.63247799999999 244.532723 94.63247799999999 199.804878 49.57012899999995 199.804878-6.017094000000043 199.804878-61.604318000000035 244.532723-106.66666699999996 299.707317-106.66666699999996 354.881911-106.66666699999996 399.609756-61.604318000000035 399.609756-6.017094000000043ZM249.756098-6.017094000000043C249.756098 21.77651800000001 272.120021 44.30769299999997 299.707317 44.30769299999997 327.294613 44.30769299999997 349.658537 21.77651800000001 349.658537-6.017094000000043 349.658537-33.810704999999984 327.294613-56.34187899999995 299.707317-56.34187899999995 272.120021-56.34187899999995 249.756098-33.810704999999984 249.756098-6.017094000000043ZM924.097562-6.017094000000043C924.097562 49.57012899999995 879.369715 94.63247799999999 824.195121 94.63247799999999 769.020529 94.63247799999999 724.292683 49.57012899999995 724.292683-6.017094000000043 724.292683-61.604318000000035 769.020529-106.66666699999996 824.195121-106.66666699999996 879.369715-106.66666699999996 924.097562-61.604318000000035 924.097562-6.017094000000043ZM774.243902-6.017094000000043C774.243902 21.77651800000001 796.607825 44.30769299999997 824.195121 44.30769299999997 851.782419 44.30769299999997 874.146342 21.77651800000001 874.146342-6.017094000000043 874.146342-33.810704999999984 851.782419-56.34187899999995 824.195121-56.34187899999995 796.607825-56.34187899999995 774.243902-33.810704999999984 774.243902-6.017094000000043Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="face-cry" unicode="" d="M1024 384C1024 666.769792 794.769792 896 512 896 229.230208 896 0 666.769792 0 384 0 101.23020799999995 229.230208-128 512-128 629.410831-128 740.826187-88.33104600000001 830.768465-16.686661999999956 841.557579-8.092490999999995 843.33693 7.620766000000003 834.742758 18.409879000000046 826.148587 29.198990999999978 810.43533 30.978341999999998 799.646219 22.384173000000033 718.470035-42.277495000000044 618.001779-78.04878099999996 512-78.04878099999996 256.817504-78.04878099999996 49.951219 128.81750399999999 49.951219 384 49.951219 639.182496 256.817504 846.048781 512 846.048781 767.182496 846.048781 974.048781 639.182496 974.048781 384 974.048781 296.507166 949.714859 212.66323599999998 904.470807 140.039307 897.177109 128.33175700000004 900.755245 112.92820300000005 912.462793 105.63450699999999 924.170342 98.34080900000004 939.573897 101.91894200000002 946.867595 113.62649199999998 997.013826 194.11920399999997 1024 287.101621 1024 384ZM337.170731 396.487806C371.654852 396.487806 399.609756 424.442709 399.609756 458.926829 399.609756 493.41095 371.654852 521.365854 337.170731 521.365854 302.686611 521.365854 274.731708 493.41095 274.731708 458.926829 274.731708 424.442709 302.686611 396.487806 337.170731 396.487806ZM711.804879 396.487806C746.288998 396.487806 774.243902 424.442709 774.243902 458.926829 774.243902 493.41095 746.288998 521.365854 711.804879 521.365854 677.320757 521.365854 649.365854 493.41095 649.365854 458.926829 649.365854 424.442709 677.320757 396.487806 711.804879 396.487806ZM352.788105 191.21547499999997C396.165222 225.91716899999994 453.151987 246.639629 524.487806 246.639629 595.823622 246.639629 652.810387 225.91716899999994 696.187505 191.21547499999997 722.700531 170.00505399999997 738.882517 148.42907300000002 746.631548 132.931012 752.800254 120.59359800000004 747.799529 105.59142399999996 735.462114 99.42271600000004 723.124702 93.25401 708.122526 98.25473499999998 701.953818 110.59214899999995 701.03616 112.42746499999998 698.492224 116.61747600000001 694.165854 122.38597100000004 686.602473 132.47047699999996 676.927317 142.654852 664.983226 152.21012499999995 630.311565 179.947456 584.273939 196.68840999999998 524.487806 196.68840999999998 464.70167 196.68840999999998 418.664045 179.947456 383.992384 152.21012499999995 372.048292 142.654852 362.373137 132.47047699999996 354.809756 122.38597100000004 350.483386 116.61747600000001 347.93945 112.42746499999998 347.021792 110.59214899999995 340.853084 98.25473499999998 325.850908 93.25401 313.513495 99.42271600000004 301.176081 105.59142399999996 296.175356 120.59359800000004 302.344062 132.931012 310.093092 148.42907300000002 326.275078 170.00505399999997 352.788105 191.21547499999997Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="face-smile" unicode="" d="M1024 384C1024 666.769792 794.769792 896 512 896 229.230208 896 0 666.769792 0 384 0 101.23020799999995 229.230208-128 512-128 629.410831-128 740.826187-88.33104600000001 830.768465-16.686661999999956 841.557579-8.092490999999995 843.33693 7.620766000000003 834.742758 18.409879000000046 826.148587 29.198990999999978 810.43533 30.978341999999998 799.646219 22.384173000000033 718.470035-42.277495000000044 618.001779-78.04878099999996 512-78.04878099999996 256.817504-78.04878099999996 49.951219 128.81750399999999 49.951219 384 49.951219 639.182496 256.817504 846.048781 512 846.048781 767.182496 846.048781 974.048781 639.182496 974.048781 384 974.048781 296.507166 949.714859 212.66323599999998 904.470807 140.039307 897.177109 128.33175700000004 900.755245 112.92820300000005 912.462793 105.63450699999999 924.170342 98.34080900000004 939.573897 101.91894200000002 946.867595 113.62649199999998 997.013826 194.11920399999997 1024 287.101621 1024 384ZM337.170731 396.487806C371.654852 396.487806 399.609756 424.442709 399.609756 458.926829 399.609756 493.41095 371.654852 521.365854 337.170731 521.365854 302.686611 521.365854 274.731708 493.41095 274.731708 458.926829 274.731708 424.442709 302.686611 396.487806 337.170731 396.487806ZM711.804879 396.487806C746.288998 396.487806 774.243902 424.442709 774.243902 458.926829 774.243902 493.41095 746.288998 521.365854 711.804879 521.365854 677.320757 521.365854 649.365854 493.41095 649.365854 458.926829 649.365854 424.442709 677.320757 396.487806 711.804879 396.487806ZM352.788105 127.22903299999996C396.165222 92.52733899999998 453.151987 71.80487900000003 524.487806 71.80487900000003 595.823622 71.80487900000003 652.810387 92.52733899999998 696.187505 127.22903299999996 722.700531 148.43945399999996 738.882517 170.01543500000002 746.631548 185.51349500000003 752.800254 197.850908 747.799529 212.85308399999997 735.462114 219.021792 723.124702 225.19049800000005 708.122526 220.18977299999995 701.953818 207.85235799999998 701.03616 206.01704299999994 698.492224 201.82703100000003 694.165854 196.058537 686.602473 185.97402899999997 676.927317 175.78965500000004 664.983226 166.23438299999998 630.311565 138.49705200000005 584.273939 121.75609799999995 524.487806 121.75609799999995 464.70167 121.75609799999995 418.664045 138.49705200000005 383.992384 166.23438299999998 372.048292 175.78965500000004 362.373137 185.97402899999997 354.809756 196.058537 350.483386 201.82703100000003 347.93945 206.01704299999994 347.021792 207.85235799999998 340.853084 220.18977299999995 325.850908 225.19049800000005 313.513495 219.021792 301.176081 212.85308399999997 296.175356 197.850908 302.344062 185.51349500000003 310.093092 170.01543500000002 326.275078 148.43945399999996 352.788105 127.22903299999996Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="survey" unicode="" d="M722.355804 849.454545C761.006291 849.454545 792.380951 818.166023 792.380951 779.627344L792.380951 437.500928 799.081094 453.813218 401.874746 51.22138 418.539682 58.181818 138.070006 58.181818C99.387643 58.181818 68.063492 89.328555 68.063492 127.771428L68.063492 872.727273 44.698413 849.454545 722.355804 849.454545ZM21.333333 896 21.333333 872.727273 21.333333 127.771428C21.333333 63.604277 73.59726 11.636363 138.070006 11.636363L418.539682 11.636363 428.337293 11.636363 435.204619 18.596802 832.410967 421.18864 839.11111 427.979625 839.11111 437.500928 839.11111 779.627344C839.11111 843.859757 786.827324 896 722.355804 896L44.698413 896 21.333333 896ZM775.859347 307.365395 759.337741 290.90909 775.859347 274.452787 869.319663 181.361879 885.841269 164.905574 902.362876 181.361879 972.458114 251.18006 988.979721 267.636363 972.458114 284.092668 878.997796 377.183575 862.47619 393.639878 845.954583 377.183575 775.859347 307.365395ZM845.954583 344.27097 939.414901 251.18006 939.414901 284.092668 869.319663 214.274485 902.362876 214.274485 808.902558 307.365395 808.902558 274.452787 878.997796 344.27097 845.954583 344.27097ZM518.843473 51.365395 513.841133 46.382827 512.453734 39.473248 489.088655-76.890387 482.215251-111.121568 516.58227-104.275332 633.407665-81.002605 640.344663-79.620689 645.347004-74.638121 902.362876 181.361879 918.884482 197.818182 902.362876 214.274485 808.902558 307.365395 792.380951 323.821698 775.859347 307.365395 518.843473 51.365395ZM775.859347 274.452787 869.319663 181.361879 869.319663 214.274485 612.303791-41.725515 624.243127-35.361033 507.41773-58.633758 534.911345-86.018703 558.276425 30.344934 551.886686 18.452787 808.902558 274.452787 775.859347 274.452787ZM426.576706 298.269073C444.201086 298.269073 458.488469 284.053815 458.488469 266.500753L458.488469 258.086116C458.488469 240.540958 444.323959 226.317797 426.576706 226.317797L426.576706 226.317797C408.952326 226.317797 394.664943 240.533054 394.664943 258.086116L394.664943 266.500753C394.664943 284.045911 408.829453 298.269073 426.576706 298.269073L426.576706 298.269073ZM278.349205 552.435127C278.349205 552.435127 280.851125 530.485568 305.477133 530.485568 330.103138 530.485568 331.559155 552.435127 331.559155 552.435127 329.927383 623.508937 362.988497 657.25782 430.67155 653.905282 475.722639 648.839223 499.06407 623.508937 500.624896 577.839917 497.503245 557.501184 480.405116 531.202385 449.969026 499.092521 409.671358 458.489557 389.522524 422.133143 389.522524 390.023279L389.522524 357.093903C389.522524 357.093903 392.614705 337.454532 414.885933 337.454532 437.157161 337.454532 440.249342 357.093903 440.249342 357.093903L440.249342 379.965664C440.249342 406.785969 459.546816 439.044836 498.21271 476.369762 538.652271 513.471183 558.730159 547.369069 558.730159 577.839917 555.395669 662.323878 511.195938 706.353877 425.776235 709.780917 327.515198 711.419936 278.349205 658.971339 278.349205 552.435127Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tree" unicode="" d="M962.691679 258.53447400000005c-8.721639 54.163597-34.298154 97.584526-73.089645 133.8638-44.721551 41.825594-99.282191 65.724911-156.512636 84.432994-26.935466 8.80555-54.079686 16.971533-81.129762 25.427112 41.188074 7.485485 81.495082 10.991332 121.872698 12.269441 39.906895 1.26276 79.885422 0.276293 120.633475 0.276293-30.644951 44.233434-74.588789 71.110571-127.260405 84.384899-53.004191 13.357216-103.742782 9.715269-152.261822-32.081673 18.715247 66.336848 12.464893 120.18936-38.810934 160.830989-32.450063 25.719778-77.127611 31.000038-111.319341 14.916734 58.583257-31.127951 82.051761-84.265172 94.304829-145.102772-44.638663 69.056795-110.067838 96.432283-187.710173 86.487793-56.123228-7.187703-110.723777-26.270317-166.003801-40.048111 15.677051-14.358009 31.136138-24.116257 47.932686-27.839045 51.427276-11.399631 103.405091-20.301372 155.098427-30.524201 37.036521-7.323802 75.163887-12.144598 104.448864-40.879036-78.096682 23.458271-155.928329 30.034037-235.541551 9.092076C186.718589 530.20385 104.838743 479.821369 81.996502 429.437865c46.955428 23.955598 95.807043 18.776645 144.606469 17.139356 37.737486-1.266853 76.089979-3.461845 113.238041 1.594311 52.683896 7.170307 104.513332 20.624736 159.209048 31.909757-91.88164-62.077847-186.516997-122.342396-159.194722-259.889075 58.852386 100.205213 163.392324 150.107763 229.951229 238.105956-16.239869-91.498924 6.980995-169.376619 66.432015-237.83785 41.815361-48.152696 89.979314-92.010577 110.706381-156.013263 12.758582 141.877311-25.823132 270.789333-97.911984 396.334677C755.996107 391.809873 858.199837 325.909977 962.691679 258.53447400000005zM513.476631 320.10169099999996c-27.767414-14.065344-39.008432-35.954887-42.252313-64.998363-6.078439-54.437843-15.162328-108.532879-21.799492-162.916487-3.90903-32.026414-5.519714-64.333214-8.16496-96.53052 30.078039 0 55.507198 0 79.961146 0 9.912767 78.200036 19.732413 154.247037 28.913517 230.369761 0.883113 7.322779-0.756223 15.746636-3.705392 22.591531C536.246217 272.25086999999996 524.967336 295.41135899999995 513.476631 320.10169099999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="upload-circle" unicode="" d="M512-128c282.768 0 512 229.216 512 512C1024 666.768 794.768 896 512 896 229.216 896 0 666.768 0 384 0 101.21600000000001 229.216-128 512-128zM512 848c256.272 0 464-207.744 464-464 0-256.272-207.728-464-464-464S48 127.72799999999995 48 384C48 640.256 255.728 848 512 848zM377.728 534.544L480 534.544l0-478c0-17.664 14.336-32 32-32s32 14.336 32 32L544 534.544l102.272 0c17.616 0 23.424 11.568 12.944 25.68l-128.128 172.624c-10.496 14.128-27.664 14.128-38.16 0L364.8 560.24C354.32 546.1120000000001 360.128 534.544 377.728 534.544z" horiz-adv-x="1024" /> + + + <glyph glyph-name="add-circle" unicode="" d="M675.04 412.736l-127.04 0 0 127.264c0 20.064-16.288 36.32-36.32 36.32-20.064 0-36.32-16.192-36.32-36.32l0-127.232-127.072 0c-20.064 0-36.352-16.32-36.352-36.352 0-20.064 16.224-36.352 36.352-36.352l127.072 0 0-127.232c0-20 16.256-36.384 36.32-36.384 20.032 0 36.32 16.256 36.32 36.384l0 127.136 127.04 0c19.968 0 36.352 16.256 36.352 36.384C711.36 396.448 695.136 412.736 675.04 412.736L675.04 412.736zM511.328 830.56c-250.24 0-453.952-203.616-453.952-453.952 0-250.336 203.712-453.952 453.952-453.952 250.336 0 453.984 203.584 453.984 453.952C965.312 626.944 761.696 830.56 511.328 830.56L511.328 830.56zM511.328-20.576000000000022c-219.04 0-397.184 178.176-397.184 397.152 0 219.104 178.144 397.216 397.184 397.216s397.216-178.112 397.216-397.216C908.576 157.63199999999995 730.368-20.576000000000022 511.328-20.576000000000022L511.328-20.576000000000022zM511.328-20.576000000000022" horiz-adv-x="1024" /> + + + <glyph glyph-name="download-circle" unicode="" d="M510.771521 828.211081c-244.998947 0-443.597097-198.60429-443.597097-443.590957s198.59815-443.591981 443.597097-443.591981c244.986667 0 443.583794 198.60429 443.583794 443.591981S755.758188 828.211081 510.771521 828.211081zM510.771521-30.044013999999947c-229.010811 0-414.664138 185.65435-414.664138 414.664138 0 229.010811 185.653327 414.657998 414.664138 414.657998 228.996484 0 414.652881-185.647187 414.652881-414.657998C925.424402 155.60931300000004 739.768005-30.044013999999947 510.771521-30.044013999999947zM662.749888 352.39518799999996L537.719266 245.82501100000002l0 324.388065c0 14.887059-12.06478 26.953885-26.947745 26.953885-14.894222 0-26.961048-12.066827-26.961048-26.953885l0-325.410348L357.936647 352.39518799999996c-10.56359 10.599406-27.693736 10.599406-38.267559 0-10.56359-10.596336-10.56359-27.777647 0-38.375006l170.181961-161.220868c5.629207-5.652743 13.111622-8.060583 20.49887-7.680936 7.373944-0.379647 14.859429 2.02717 20.488637 7.680936l170.181961 161.220868c10.562567 10.597359 10.562567 27.77867 0 38.375006C690.443623 362.99561700000004 673.313477 362.99561700000004 662.749888 352.39518799999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="templeate-1" unicode="" d="M320 384L106.666667 384c-35.349333 0-64-28.650667-64-64l0-213.333333c0-35.349333 28.650667-64 64-64l213.333333 0c35.349333 0 64 28.650667 64 64L384 320C384 355.349333 355.349333 384 320 384zM256 341.33333300000004l0-256L170.666667 85.33333300000004 170.666667 341.33333300000004 256 341.33333300000004zM85.333333 106.66666699999996L85.333333 320c0 11.754667 9.578667 21.333333 21.333333 21.333333l42.666667 0 0-256L106.666667 85.33333300000004C94.912 85.33333300000004 85.333333 94.91200000000003 85.333333 106.66666699999996zM341.333333 106.66666699999996c0-11.754667-9.578667-21.333333-21.333333-21.333333l-42.666667 0L277.333333 341.33333300000004l42.666667 0c11.754667 0 21.333333-9.578667 21.333333-21.333333L341.333333 106.66666699999996zM576 554.666667L234.666667 554.666667c-47.061333 0-85.333333-38.272-85.333333-85.333333l0-42.666667 42.666667 0 0 42.666667c0 23.530667 19.136 42.666667 42.666667 42.666667l42.666667 0 0-96 21.333333 0L298.666667 512l213.333333 0 0-426.666667-85.333333 0-21.333333-42.666667 170.666667 0c47.061333 0 85.333333 38.272 85.333333 85.333333L661.333333 469.333333C661.333333 516.394667 623.061333 554.666667 576 554.666667zM618.666667 128c0-23.530667-19.136-42.666667-42.666667-42.666667l-42.666667 0L533.333333 512l42.666667 0c23.530667 0 42.666667-19.136 42.666667-42.666667L618.666667 128zM853.333333 42.66666699999996c47.061333 0 85.333333 38.272 85.333333 85.333333L938.666667 640c0 47.061333-38.272 85.333333-85.333333 85.333333L341.333333 725.333333c-47.061333 0-85.333333-38.272-85.333333-85.333333l0-42.666667 42.666667 0 0 42.666667c0 23.530667 19.136 42.666667 42.666667 42.666667l85.333333 0 0-85.333333 21.333333 0 0 85.333333 298.666667 0 0-597.333333-42.666667 0-21.333333-42.666667L853.333333 42.66666699999996zM896 128c0-23.530667-19.136-42.666667-42.666667-42.666667l-85.333333 0L768 682.666667l85.333333 0c23.530667 0 42.666667-19.136 42.666667-42.666667L896 128z" horiz-adv-x="1024" /> + + + <glyph glyph-name="util" unicode="" d="M282.127566 639.0826059999999c-13.120832-13.221116-30.625508-20.50808-49.278333-20.50808-18.618033 0-36.157501 7.286963-49.311079 20.50808l-32.885991 33.019021 98.623181 99.027387 32.885991-33.019021c13.186324-13.221116 20.473287-30.829146 20.473287-49.548486C302.599829 669.8769589999999 295.347658 652.26893 282.127566 639.0826059999999L282.127566 639.0826059999999zM249.308089 705.0899489999999l-0.032746 0-32.884968-32.987299c4.418636-4.417613 10.252505-6.845918 16.458857-6.845918 6.206352 0 12.041244 2.428306 16.426111 6.813173 4.418636 4.452405 6.845918 10.288321 6.845918 16.493649C256.121262 694.802652 253.693979 700.671313 249.308089 705.0899489999999L249.308089 705.0899489999999zM396.703067 496.343671L249.578242 638.778684l32.278147 33.626865 147.157571-142.468782L396.703067 496.343671 396.703067 496.343671zM751.45979 133.92852400000004L618.131179 274.071332l32.884968 32.985252 133.330658-140.141784L751.45979 133.92852400000004 751.45979 133.92852400000004zM850.184279 67.95597399999997c-22.700001-22.766516-52.481282-34.168194-82.264609-34.168194-29.714765 0-59.395762 11.333116-81.994456 34.033118L538.194592 222.398462l32.884968 33.021068L718.811206 100.806149c27.117614-27.183106 71.269183-27.116591 98.488105 0.169869 27.186176 27.287483 27.117614 71.773673-0.135076 99.196233l-147.426701 154.273642 32.851199 33.021068 147.461493-154.308435C895.447159 187.557956 895.514697 113.421468 850.184279 67.95597399999997L850.184279 67.95597399999997zM801.716404 468.380806c-30.726815-30.860868-71.605851-47.861054-115.082038-47.861054-43.442418 0-84.321454 16.999163-115.082038 47.861054-30.760584 30.861892-47.692209 71.877027-47.692209 115.521037s16.931624 84.691891 47.692209 115.554806l42.497906 42.666752 32.885991-32.986275-42.497906-42.667775c-21.99085-22.090111-34.099632-51.367925-34.065863-82.566484 0-31.163767 12.108782-60.441581 34.065863-82.499969 21.956058-22.058388 51.16531-34.20094 82.196047-34.20094 31.064506 0 60.239989 12.142551 82.196047 34.20094l42.49893 42.665729 32.884968-33.019021L801.716404 468.380806 801.716404 468.380806zM844.214311 511.049604l-49.311079 49.51267-16.45988-16.493649c-17.538445-17.638729-40.879036-27.352975-65.73719-27.352975l-0.032746 0c-24.824385 0-48.198745 9.713222-65.73719 27.352975-17.539468 17.607006-27.252691 41.082674-27.252691 66.007343 0 24.925692 9.679453 48.400337 27.252691 66.040089l16.458857 16.495696-49.344848 49.51267 32.885991 33.021068 82.196047-82.533738-49.311079-49.482995c-8.769734-8.835226-13.626345-20.571525-13.626345-33.051767 0-12.446473 4.856611-24.183795 13.626345-32.987299 8.768711-8.835226 20.439518-13.69286 32.884968-13.69286 12.411681 0 24.082488 4.857635 32.852222 13.69286l49.344848 49.514717 82.196047-82.534761L844.214311 511.049604 844.214311 511.049604zM233.591129 129.139451l0 46.681182 46.512337 0 0-46.681182L233.591129 129.139451 233.591129 129.139451zM538.160823 356.538555l-92.247984 91.572602 32.717146 33.18889 92.214215-91.539856L538.160823 356.538555 538.160823 356.538555zM304.2187 101.04355599999997l173.634596 239.842507 37.641295-27.454282L338.318332 69.23715300000003c-21.923312-22.057365-51.132564-34.20094-82.19707-34.20094-31.028691 0-60.237943 12.143575-82.196047 34.168194-21.958104 22.057365-34.065863 51.335179-34.065863 82.533738 0 31.198559 12.107759 60.476373 34.065863 82.533738l2.765997 2.360767L417.243893 412.054963l27.353998-37.742603L205.596542 200.00340600000004c-12.411681-13.053294-19.224854-30.119995-19.224854-48.26526 0-18.71934 7.252171-36.291554 20.438495-49.513694C232.747925 76.15265599999998 277.775444 75.71263499999998 304.2187 101.04355599999997L304.2187 101.04355599999997z" horiz-adv-x="1024" /> + + + <glyph glyph-name="face-surprised" unicode="" d="M485.656116-128C221.592397-128 6.762016 86.81718000000001 6.762016 350.87649799999997s214.830381 478.867697 478.8941 478.867697c264.041716 0 478.854495-214.812779 478.854495-478.867697S749.697832-128 485.656116-128zM485.656116 798.834741c-247.024795 0-447.975846-200.959852-447.975846-447.962644 0-247.002792 200.951051-447.962644 447.975846-447.962644 247.002792 0 447.953843 200.959852 447.953843 447.962644C933.609959 597.8748889999999 732.658908 798.834741 485.656116 798.834741zM352.033458 447.380528c0-30.469398-24.682677-55.147675-55.143274-55.147675-30.451796 0-55.143274 24.678276-55.143274 55.147675 0 30.460597 24.691478 55.138874 55.143274 55.138874C327.350781 502.519402 352.033458 477.845526 352.033458 447.380528zM674.417647 502.519402c-30.460597 0-55.156476-24.678276-55.156476-55.138874 0-30.469398 24.695879-55.147675 55.156476-55.147675 30.451796 0 55.143274 24.678276 55.143274 55.147675C729.560922 477.845526 704.869444 502.519402 674.417647 502.519402zM562.005634 165.30976499999997c0-59.733046-34.192262-108.165484-76.349518-108.165484-42.166057 0-76.36272 48.432438-76.36272 108.165484 0 59.724245 34.196663 108.152282 76.36272 108.152282C527.813371 273.45764699999995 562.005634 225.03400999999997 562.005634 165.30976499999997zM835.631745 793.712503c0 0 12.871605 56.819883 41.959231 85.925112 29.083226 29.096427 69.915916 15.124685 78.492585-8.801097 9.461179-26.385689-2.033053-50.069442-29.092027-56.164202C899.404495 808.463141 874.880237 826.192952 835.631745 793.712503zM916.698651 757.570797c0 0 35.767659 20.576965 64.877288 19.393218 29.136032-1.174946 41.431165-29.144833 33.109728-45.110024-9.192746-17.588993-27.054573-22.966463-43.217788-11.797871C954.979023 731.44034 952.453108 752.721393 916.698651 757.570797z" horiz-adv-x="1024" /> + + + <glyph glyph-name="edit" unicode="" d="M769.089 516.251l-125.896 125.89 62.974 62.947c20.866 20.838 54.652 20.838 75.517 0l50.353-50.351c20.865-20.865 20.865-54.703 0-75.567L769.089 516.251zM403.349 150.52700000000004L277.453 276.418 619.706 615.982 745.601 490.09ZM176.314 47.283000000000015L252.912 251.87699999999995 377.753 127.01199999999994Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="speaker" unicode="" d="M587.182306 754.7203c-6.003737 2.705622-13.043061 1.642406-17.984606-2.721994l-259.223926-229.293243-148.246369 0c-9.253758 0-16.752546-7.498788-16.752546-16.756639l0-267.886213c0-9.249665 7.498788-16.756639 16.752546-16.756639l144.050814 0c9.253758 0 16.752546 7.506974 16.752546 16.756639L322.530764 490.391099c1.774413 0.704035 3.433192 1.719154 4.892427 3.010567l236.127905 208.861912 0-653.332912-160.751171 137.64287c-2.12643 1.824555-90.300632 78.69941-93.927229 76.162634-4.427846-3.097548-15.768125-17.59882-18.419512-22.512736-0.953721-1.768273-2.196015-1.334391 15.413038-16.379039 25.674753-21.936615 73.780377-61.548798 75.144444-62.717414l10.007935-8.570189 178.388876-152.761196c3.093455-2.653433 6.978948-4.028757 10.900258-4.028757 2.369977 0 4.756327 0.503467 7.003508 1.534959 5.939269 2.738367 9.749038 8.677637 9.749038 15.217586L597.060281 739.446431C597.060281 746.034477 593.190137 752.013655 587.182306 754.7203L587.182306 754.7203zM290.453185 254.814756l-115.040083 0L175.413102 489.195877l115.03906 0 0-234.381122L290.453185 254.814756zM747.742119 375.98444300000006c0-51.55212-34.83232-96.658434-84.702124-109.693308-1.415232-0.375553-2.846838-0.551562-4.245697-0.551562-7.438413 0-14.234189 4.992711-16.200984 12.523221-2.338255 8.949836 3.021823 18.104333 11.967566 20.442588 35.136242 9.18929 59.672054 40.96397 59.672054 77.279061 0 36.307927-24.535813 68.090794-59.672054 77.271898-8.945743 2.346441-14.305821 11.492752-11.967566 20.450774 2.342348 8.953929 11.499915 14.305821 20.446681 11.967566C712.909799 472.643899 747.742119 427.530422 747.742119 375.98444300000006L747.742119 375.98444300000006zM864.950588 375.793084c0-88.87619-48.554856-170.44495-126.718053-212.883505-2.537799-1.375324-5.276167-2.02717-7.982812-2.02717-5.939269 0-11.69946 3.166109-14.733563 8.762571-4.417613 8.134261-1.39886 18.303878 6.727215 22.720468 67.350944 36.566824 109.198028 106.851587 109.198028 183.427636 0 76.844156-42.055838 147.272181-109.741403 183.78784-8.154727 4.396123-11.192923 14.557554-6.795776 22.700001 4.38896 8.142447 14.558577 11.184737 22.701025 6.795776C816.151162 546.697499 864.950588 464.976266 864.950588 375.793084L864.950588 375.793084z" horiz-adv-x="1024" /> + + + <glyph glyph-name="down" unicode="" d="M888.306 619.94c15.615 15.617 40.93 15.617 56.545 0v0c15.617-15.615 15.617-40.93 0-56.545l-405.733-405.734c-15.615-15.617-40.928-15.617-56.545 0v0c-15.615 15.615-15.615 40.93 0 56.545l405.733 405.734zM538.619 214.20600000000002c15.617-15.615 15.617-40.93 0-56.545v0c-15.615-15.617-40.928-15.617-56.545 0l-405.734 405.734c-15.615 15.615-15.615 40.93 0 56.545v0c15.617 15.617 40.93 15.617 56.547 0l405.732-405.734zM538.619 214.20600000000002z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file" unicode="" d="M887.443911 598.6304l0-44.578133 0-45.511111 0-477.866667c0-37.705956-30.560711-68.266667-68.266667-68.266667l-614.4 0c-37.705956 0-68.266667 30.560711-68.266667 68.266667l0 705.422222c0 37.6832 30.560711 68.266667 68.266667 68.266667l386.844444 0 45.511111 0 38.024533 0c7.805156 2.594133 16.566044 1.2288 22.778311-5.006222l183.136711-183.159467C885.919289 611.373511 887.876267 604.9564439999999 887.443911 598.6304zM659.888356 531.296711c-12.583822 0-22.755556 10.171733-22.755556 22.755556l0 204.8-45.511111 0-364.088889 0c-25.122133 0-45.511111-20.388978-45.511111-45.511111l0-659.911111c0-25.122133 20.388978-45.511111 45.511111-45.511111l568.888889 0c25.122133 0 45.511111 20.388978 45.511111 45.511111l0 455.111111 0 22.755556L659.888356 531.296711zM682.643911 750.273422l0-173.4656 159.288889 0 0 14.176711L682.643911 750.273422z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layouts" unicode="" d="M917.213-103.239h-810.426c-23.151 0-41.918 18.766-41.918 41.917l0 698.644c0 23.148 18.767 41.917 41.918 41.917h810.426c23.149 0 41.918-18.769 41.918-41.917v-698.643c0-23.151-18.769-41.918-41.918-41.918zM316.38-61.321h600.833v363.294h-600.833v-363.294zM106.787-61.321h167.674v363.294h-167.674v-363.294zM148.705 637.322c-23.151 0-41.918-18.769-41.918-41.92s18.767-41.92 41.918-41.92 41.92 18.768 41.92 41.92-18.769 41.92-41.92 41.92zM274.461 637.322c-23.151 0-41.918-18.769-41.918-41.92s18.767-41.92 41.918-41.92c23.151 0 41.92 18.768 41.92 41.92s-18.77 41.92-41.92 41.92zM400.216 637.322c-23.15 0-41.918-18.769-41.918-41.92s18.769-41.92 41.918-41.92c23.152 0 41.92 18.768 41.92 41.92s-18.768 41.92-41.92 41.92zM875.293 511.566h-768.506v-167.675h810.426l0 167.675h-41.921z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rate-half" unicode="" d="M1012.064 504l-359.552 31.008-140.512 331.04-140.512-331.552-359.552-30.496 273.024-236.544-82.016-351.552 309.056 186.528 309.056-186.528-81.504 351.552 272.544 236.544zM512 195.96799999999996l0 465.056 85.504-202.016 219.04-19.008-166.016-144.032 50.016-214.016-188.512 114.016z" horiz-adv-x="1024" /> + + + <glyph glyph-name="add-circle-fine" unicode="" d="M509.989715-60.972421000000054c-246.734474 0-446.75195 200.023616-446.75195 446.75809 0 246.732427 200.017476 446.75195 446.75195 446.75195 246.733451 0 446.757067-200.019523 446.757067-446.75195C956.746782 139.051195 756.723166-60.972421000000054 509.989715-60.972421000000054L509.989715-60.972421000000054zM509.989715 812.433746c-235.633648 0-426.650123-191.014428-426.650123-426.648077 0-235.639788 191.016475-426.654216 426.650123-426.654216 235.638765 0 426.654216 191.014428 426.654216 426.654216C936.643931 621.419318 745.62848 812.433746 509.989715 812.433746L509.989715 812.433746zM527.863804 153.46957999999995l-35.741016 0L492.122789 367.909533 277.678742 367.909533 277.678742 403.653619l214.443024 0L492.121765 618.0956189999999l35.741016 0L527.862781 403.653619l214.442 0 0-35.744086L527.863804 367.909533 527.863804 153.46957999999995 527.863804 153.46957999999995zM527.863804 153.46957999999995" horiz-adv-x="1024" /> + + + <glyph glyph-name="prev-circle" unicode="" d="M508.638018 827.97307c-246.403458 0-446.845649-200.463469-446.845649-446.845649 0-246.382179 200.442191-446.845649 446.845649-446.845649 246.382179 0 446.845649 200.463469 446.845649 446.845649C955.483667 627.5096 755.041476 827.97307 508.638018 827.97307zM508.638018-23.16149900000005c-222.933422 0-404.28892 181.355498-404.28892 404.28892 0 222.933422 181.355498 404.28892 404.28892 404.28892 222.912144 0 404.28892-181.355498 404.28892-404.28892C912.926939 158.19399899999996 731.57144-23.16149900000005 508.638018-23.16149900000005zM252.87208 485.1999c8.639016 26.129831-32.470784 37.215859-41.067243 11.32009-27.810822-83.730363-22.321004-168.545923 14.086277-248.573851 11.362646-24.938243 48.025268-3.298146 36.747735 21.491148C230.976644 339.081373 228.806251 412.853462 252.87208 485.1999zM599.262572 247.73335499999996l-127.627629 133.394065 127.47868 133.223838c9.043305 9.064583 9.022026 23.789211-0.021278 32.832516-8.809243 8.830521-24.087108 8.766686-32.832516 0l-148.310199-148.310199c-4.617405-4.638683-6.979303-11.064749-6.553736-17.746156-0.404289-6.702685 1.936331-13.107472 6.575015-17.788712l148.310199-148.28892c4.383343-4.383343 10.213615-6.787798 16.405619-6.787798 6.170726 0 12.000997 2.404455 16.405619 6.787798C608.156928 224.114371 608.156928 238.83899899999994 599.262572 247.73335499999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="read" unicode="" d="M335.282306 712.495464C399.587328 713.451107 442.778899 696.882717 470.183494 669.3706540000001 479.127332 660.39174 485.691302 650.857363 490.241971 641.442689 492.795622 636.159553 494.049041 632.438701 494.358795 631.0740940000001L493.723712 636.7409230000001 493.723706 196.90019600000005C493.723706 199.018106 495.816045 203.920655 503.591595 207.36436700000002 511.039185 210.66283299999998 515.68422 209.16527399999995 517.176538 207.906613L500.671543 188.33763 521.297207 203.50146800000005C514.140179 213.23636899999997 499.631258 225.71450900000002 476.134074 237.35914000000002 439.577969 255.475456 390.86048 266.10507900000005 328.491925 266.10508200000004 265.860796 266.10508200000004 219.424582 255.71817999999996 186.827162 237.741581 164.977332 225.69198700000004 152.538132 212.28117299999997 147.220271 201.30886999999996L170.257196 190.14374199999997 151.035786 207.05224299999998C152.884078 209.15336100000002 158.307299 211.80336599999998 167.849005 208.050434 177.092077 204.41496099999995 179.2 199.20011699999998 179.2 196.66445199999998L179.2 497.049743 179.2 636.7409230000001 175.817447 624.023021C177.078908 626.226721 180.088681 630.807811 184.828724 636.965629 192.95423 647.521524 202.792594 658.127492 214.297641 668.007961 247.526453 696.544681 287.381649 713.209056 334.514421 712.495571L335.282306 712.495464ZM335.289387 763.689705C274.661039 764.607483 223.081402 743.04085 180.940156 706.850184 156.32698 685.712527 139.975514 664.470237 131.382553 649.4588249999999L128 643.549699 128 636.7409230000001 128 497.049743 128 196.66445199999998C128 159.26104999999995 164.542545 144.88818300000003 189.478606 173.23524099999997L191.776657 175.84764199999995 193.294121 178.978613C194.07832 180.59664399999997 199.156367 186.07133399999998 211.552092 192.907243 236.030601 206.40648099999999 274.024879 214.905082 328.491925 214.905082 383.221547 214.905079 424.163878 205.97190999999998 453.399258 191.483569 469.376966 183.56540600000005 477.614626 176.48075300000005 480.045882 173.17379000000005L481.844905 170.72677999999996 484.166551 168.768644C511.279708 145.90070000000003 544.923706 160.801293 544.923706 196.90019600000005L544.923712 636.740922 544.288627 642.407751C540.427211 659.419023 529.175531 682.697124 506.45814 705.503602 468.987716 743.1209699999999 412.352271 764.846461 334.521502 763.689812L335.289387 763.689705ZM0 506.026694L0 27.856867999999963C0-8.875636999999983 34.793167-23.40043300000002 61.4635 1.2485080000000153L63.46242 3.315859000000046C65.301149 5.444836000000009 69.655573 9.862312999999972 76.498228 15.820363000000043 88.306297 26.101906999999983 102.566352 36.46294 119.251411 46.17438500000003 167.295691 74.13829099999998 224.90855 90.95018200000004 292.337329 90.95018200000004 358.378978 90.95018000000005 409.459345 71.66956600000003 448.125308 39.64774 461.506042 28.56627400000002 472.380655 16.734758000000056 480.912593 4.997000999999955 485.832384-1.7713730000000396 488.762874-6.741985999999997 489.872527-9.02252199999998 496.058545-21.73590200000001 511.379537-27.027375000000006 524.092917-20.84135500000002 536.806298-14.655337000000031 542.097771 0.6656550000000152 535.91175 13.379036000000042 527.471002 30.726293000000055 509.777717 55.06771800000001 480.782336 79.08069999999998 433.134118 118.54132300000003 370.586889 142.15017999999998 292.337329 142.15018199999997 215.474895 142.15018499999996 149.074727 122.77408400000002 93.495781 90.424668 59.761154 70.78961500000003 36.872315 50.859801999999945 24.713677 36.78188399999999L44.088049 20.048869999999965 26.712598 38.84923500000002C28.162783 40.189508000000046 32.877261 41.946117999999956 40.792576 38.64178100000004 49.035365 35.200736000000006 51.2 30.12989200000004 51.2 27.856867999999963L51.2 506.026694C51.2 520.165184 39.73849 531.626694 25.6 531.626694 11.46151 531.626694 0 520.165184 0 506.026694L0 506.026694ZM696.80221 763.689812C618.971441 764.846461 562.335996 743.1209699999999 524.86557 705.503602 502.148181 682.697124 490.896501 659.419023 487.035083 642.407751L486.4 636.740922 486.400004 196.90019600000005C486.400006 160.801293 520.044004 145.90070000000003 547.157161 168.768644L549.478807 170.72677999999996 551.27783 173.17379000000005C553.709086 176.48075300000005 561.946746 183.56540600000005 577.924452 191.483569 607.159834 205.97190999999998 648.102165 214.905079 702.831787 214.905082 757.298833 214.905082 795.293111 206.40648099999999 819.77162 192.907243 832.167345 186.07133399999998 837.245391 180.59664399999997 838.029591 178.978613L839.547055 175.84764199999995 841.845105 173.23524099999997C866.781167 144.88818300000003 903.323712 159.26104999999995 903.323712 196.66445199999998L903.323712 497.049743 903.323712 636.7409230000001 903.323712 643.549699 899.941158 649.4588249999999C891.348196 664.470237 874.996732 685.712527 850.383556 706.850184 808.24231 743.04085 756.662673 764.607483 696.034325 763.689705L696.80221 763.689812ZM696.809291 712.495571C743.942063 713.209056 783.797257 696.544681 817.026071 668.007961 828.531119 658.127492 838.369481 647.521524 846.494989 636.965629 851.235031 630.807811 854.244804 626.226721 855.506263 624.023021L852.123712 636.7409230000001 852.123712 497.049743 852.123712 196.66445199999998C852.123712 199.20011699999998 854.231635 204.41496099999995 863.474707 208.050434 873.016412 211.80336599999998 878.439633 209.15336100000002 880.287925 207.05224299999998L861.066515 190.14374199999997 884.103441 201.30886999999996C878.785579 212.28117299999997 866.346381 225.69198700000004 844.49655 237.741581 811.89913 255.71817999999996 765.462916 266.10508200000004 702.831785 266.10508200000004 640.463232 266.10507900000005 591.745741 255.475456 555.189638 237.35914000000002 531.692454 225.71450900000002 517.183533 213.23636899999997 510.026502 203.50146800000005L530.652166 188.33763 514.147172 207.906613C515.63949 209.16527399999995 520.284527 210.66283299999998 527.732117 207.36436700000002 535.507665 203.920655 537.600004 199.018106 537.600004 196.90019600000005L537.6 636.7409230000001 536.964917 631.0740940000001C537.274671 632.438701 538.52809 636.159553 541.081741 641.442689 545.63241 650.857363 552.196378 660.39174 561.140218 669.3706540000001 588.544813 696.882717 631.736384 713.451107 696.041406 712.495464L696.809291 712.495571ZM972.799998 506.026694L972.799998 27.856867999999963C972.799998 30.12989200000004 974.964631 35.200736000000006 983.207422 38.64178100000004 991.122737 41.946117999999956 995.837214 40.189508000000046 997.287401 38.84923500000002L979.911949 20.048869999999965 999.286321 36.78188399999999C987.127682 50.859801999999945 964.238844 70.78961500000003 930.504218 90.424668 874.925269 122.77408400000002 808.525103 142.15018499999996 731.662669 142.15018199999997 653.132708 142.15017999999998 590.55104 117.26282200000003 543.127755 75.73800100000005 514.370099 50.55719499999998 496.945662 25.10259599999995 488.705389 7.022771000000034 482.841769-5.842485000000011 488.517717-21.02524200000005 501.382974-26.888862000000017 514.248233-32.752481999999986 529.430987-27.07653300000004 535.294607-14.211275 536.420563-11.740835999999945 539.350332-6.450639000000024 544.25735 0.7178109999999833 552.731727 13.097653000000037 563.54464 25.561581000000047 576.856734 37.21792900000003 615.190044 70.78337499999998 665.901421 90.95018000000005 731.662669 90.95018200000004 799.091447 90.95018200000004 856.704307 74.13829099999998 904.748587 46.17438500000003 921.433645 36.46294 935.6937 26.101906999999983 947.501771 15.820363000000043 954.344425 9.862312999999972 958.698848 5.444836000000009 960.537577 3.315859000000046L962.536497 1.2485080000000153C989.206831-23.40043300000002 1023.999998-8.875636999999983 1023.999998 27.856867999999963L1023.999998 506.026694C1023.999998 520.165184 1012.538487 531.626694 998.399998 531.626694 984.261508 531.626694 972.799998 520.165184 972.799998 506.026694L972.799998 506.026694Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="404" unicode="" d="M300.197309 299.705317l4.427931 1.803972c1.147982-2.787956 10.167841-7.543882 26.89558-14.267777l5.411915-12.955798c10.659833-24.927611 23.123639-62.483024 37.555413-112.66624 14.431775 5.575913 34.439462 0.983985 60.351057-13.611787l1.803972-4.427931L389.575913 107.828315l18.203716-42.639334c2.459962-5.575913-12.463805-15.579757-44.7713-29.847534-11.151826 7.215887-19.84369 9.675849-26.403587 7.05189l-0.983985 2.131967c-10.823831 25.419603-16.235746 42.311339-16.399744 50.675208l-4.427931-1.803972 6.3959-14.923767-11.151826-4.263933c-41.655349-16.235746-71.830878-18.695708-90.690583-7.871877l-4.427931-1.803972-1.803972 4.263933c-7.05189 16.727739 3.607944 77.406791 32.307495 182.037156 11.479821 4.427931 19.1877 14.923767 22.959641 31.323511C281.337604 290.685458 291.83344 296.425368 300.197309 299.705317L300.197309 299.705317zM216.230621 80.276746c28.371557 19.515695 40.999359 32.799488 38.047406 39.68738-0.983985 2.131967-0.65599 5.575913 0.65599 10.167841l-0.983985 2.131967c-25.5836-21.483664-38.047406-32.963485-37.391416-34.439462C215.246637 88.804612 215.082639 83.064702 216.230621 80.276746L216.230621 80.276746zM216.722614 72.896861l0.983985-2.131967c11.643818 1.147982 21.155669 3.279949 28.699552 6.231903 0.819987 0.327995 7.379885 5.411915 19.84369 15.251762l-0.983985 2.131967c-7.543882-2.951954-12.7918-0.983985-15.743754 6.067905C226.398463 85.032671 215.574632 75.848815 216.722614 72.896861L216.722614 72.896861zM225.90647 143.743754l11.151826 4.263933c-1.147982-2.623959-6.3959-8.691864-15.579757-18.53171-2.295964-10.823831-2.787956-17.547726-1.639974-20.335682 27.715567 20.663677 40.34337 33.783472 37.883408 39.523382l0.819987 10.331839-3.443946-3.935939-9.019859-3.443946-0.983985 2.131967c11.151826 4.263933 17.875721 16.891736 20.49968 37.719411l-0.983985 2.131967C239.35426 172.443306 227.21845 160.307495 227.874439 157.027546L225.90647 143.743754 225.90647 143.743754zM231.646381 173.42729l0.983985-2.131967 2.131967 0.819987c28.371557 23.123639 40.179372 40.179372 35.423447 51.331198 1.475977 0.65599 1.967969 1.639974 1.475977 2.951954l-2.295964-0.819987c-28.863549-21.647662-40.999359-38.047406-36.407431-49.035234C231.482383 175.723254 230.990391 174.73927 231.646381 173.42729L231.646381 173.42729zM240.994234 211.966688l0.983985-2.131967c13.775785 10.331839 35.915439 29.847534 66.418962 58.21909l2.131967 0.819987-6.3959 14.923767 0.491992 5.083921-2.295964-0.819987c-36.571429-32.963485-55.431134-51.82319-56.579116-56.743113L240.994234 211.966688 240.994234 211.966688zM311.67713 107.336323l-35.751441-13.939782c-1.475977-0.491992-6.887892-4.263933-16.235746-11.315823l0.819987-1.967969 12.299808 2.131967 20.007687 7.871877c11.643818 4.591928 32.143498 19.84369 61.171044 46.08328l-6.3959 14.923767-2.131967-0.819987c-24.107623-16.891736-34.439462-29.191544-31.159513-36.899423C315.449071 110.616272 314.629084 108.484305 311.67713 107.336323L311.67713 107.336323zM267.889814 264.773863l0.819987-1.967969c17.875721 16.891736 27.387572 25.419603 28.207559 25.747598l-0.983985 2.131967-8.855862-3.443946C274.941704 282.485586 268.545804 274.941704 267.889814 264.773863L267.889814 264.773863zM275.597694 222.954516c16.071749-37.883408 20.007687-67.894939 11.971813-90.034593l-3.443946-28.863549 26.89558 10.495836c-7.543882 30.011531-18.367713 65.598975-32.471493 106.926329l-0.983985 2.131967L275.597694 222.954516 275.597694 222.954516zM279.369635 231.810378l6.3959-14.923767c13.44779 15.087764 24.435618 24.271621 32.63549 27.55157l-3.607944 8.527867-2.459962 11.643818-2.131967-0.819987C289.045484 247.06214 278.713645 236.566304 279.369635 231.810378L279.369635 231.810378zM292.817425 194.58296c23.943626 17.219731 33.619475 30.995516 29.191544 41.491352l-2.787956 6.3959-2.295964-0.819987c-21.483664-18.859705-30.667521-31.651505-27.879564-38.3754L292.817425 194.58296 292.817425 194.58296zM294.457399 190.483024l2.787956-6.3959 2.295964-11.807816 2.295964 0.819987-0.491992-5.083921 6.3959-14.923767 32.471493 27.387572-6.3959 15.087764c-9.347854-10.331839-16.235746-16.399744-20.827675-18.203716l-2.295964-0.983985c-0.65599 1.639974 6.067905 10.167841 20.335682 25.419603l-3.115951 13.611787-0.983985 2.131967L294.457399 190.483024 294.457399 190.483024zM307.413197 148.171685l2.787956-6.3959 2.295964-11.643818c23.943626 17.219731 35.259449 27.387572 33.94747 30.503523l-5.411915 12.955798C329.224856 165.719411 318.07303 157.191544 307.413197 148.171685L307.413197 148.171685zM355.792441 131.935939c-23.779628-17.711723-34.111467-30.011531-30.995516-37.227418l1.475977-9.347854c25.255605 18.039718 36.899423 29.355541 34.931454 33.783472 24.435618 21.155669 38.703395 32.471493 42.803331 33.94747l-0.819987 1.967969c-1.803972 2.787956-6.723895 4.099936-14.595772 4.427931l-30.831518-31.9795L355.792441 131.935939 355.792441 131.935939zM327.912876 81.26073l4.591928-10.659833-0.491992-5.083921 2.295964 0.819987c23.451634 14.595772 34.275464 23.615631 32.63549 27.55157l-5.411915 12.955798L327.912876 81.26073 327.912876 81.26073zM333.816784 61.253043l5.411915-12.7918c25.747598 13.283792 37.719411 22.139654 35.915439 26.403587l-4.591928 10.659833C348.412556 70.272902 336.112748 62.237028 333.816784 61.253043L333.816784 61.253043zM357.596413 139.971813l1.803972-4.099936c4.919923 1.967969 8.527867 9.839846 10.823831 23.943626l-2.295964-0.819987C364.648302 147.679693 361.204356 141.44779 357.596413 139.971813L357.596413 139.971813zM731.674568 256.081999l3.935939-0.163997c-0.163997-2.459962 4.755926-9.019859 14.759769-19.515695l-0.65599-11.315823c-1.147982-21.975657-5.411915-53.955157-12.955798-95.774504 12.627803-0.65599 25.911595-10.659833 39.68738-30.175529l-0.163997-3.935939-47.887252-10.823831-1.967969-37.719411c-0.327995-4.919923-14.923767-7.379885-43.951313-7.379885-5.575913 9.019859-11.151826 13.775785-16.891736 13.939782l0.163997 1.967969c1.147982 22.467649 3.279949 36.735426 6.231903 42.967329l-3.935939 0.163997-0.65599-13.119795-9.839846 0.491992c-36.571429 1.803972-60.023062 9.839846-70.026906 24.271621l-3.935939 0.163997 0.163997 3.771941c0.819987 14.759769 30.667521 56.087124 89.706598 124.14606 10.167841-0.491992 19.515695 4.755926 28.371557 15.579757C714.290839 255.754004 724.294683 256.573991 731.674568 256.081999L731.674568 256.081999zM587.848815 115.86419l-0.163997-1.967969c9.019859-2.951954 16.891736-4.591928 23.615631-4.919923 0.65599 0 7.379885 1.475977 20.171685 4.755926l0.163997 1.967969c-6.723895 0.327995-9.839846 3.607944-9.511851 9.675849C599.328635 121.6041 588.012812 118.324151 587.848815 115.86419L587.848815 115.86419zM590.144779 121.440102c28.043562 5.083921 42.147341 10.659833 42.475336 16.727739 0.163997 1.803972 1.475977 4.263933 4.099936 7.215887l0.163997 1.967969c-26.731582-7.379885-40.015375-11.807816-40.179372-13.119795C592.440743 128.163997 590.308776 123.900064 590.144779 121.440102L590.144779 121.440102zM620.15631 165.227418l9.839846-0.491992c-1.803972-1.475977-7.871877-4.427931-18.367713-8.527867-5.575913-7.215887-8.527867-12.13581-8.527867-14.595772 28.043562 6.067905 42.147341 11.643818 42.311339 16.727739l4.263933 7.379885-3.935939-1.803972-8.035874 0.327995 0.163997 1.967969c9.839846-0.491992 19.351698 6.559898 28.863549 21.155669l0.163997 1.967969c-26.23959-7.379885-39.68738-12.463805-40.34337-14.923767L620.15631 165.227418 620.15631 165.227418zM670.667521 109.960282l-31.487508 1.475977c-1.31198 0-6.559898-0.983985-16.071749-2.951954l-0.163997-1.803972 9.839846-2.459962 17.711723-0.819987c10.331839-0.491992 30.995516 4.099936 61.991031 13.939782l0.65599 13.119795-1.803972 0.163997c-23.943626-4.591928-36.079436-10.167841-36.407431-16.891736C674.603459 110.944266 673.29148 109.796284 670.667521 109.960282L670.667521 109.960282zM635.244074 185.399103l-0.163997-1.967969 1.803972-0.163997c29.355541 7.70788 44.279308 16.563741 44.7713 26.23959 1.31198 0 2.131967 0.491992 2.131967 1.639974l-1.967969 0.163997c-29.191544-6.3959-44.115311-14.595772-44.607303-24.271621C635.900064 187.039078 635.244074 186.547085 635.244074 185.399103L635.244074 185.399103zM685.755285 207.37476c-1.803972-33.29148-9.675849-56.907111-23.615631-70.682896l-12.955798-20.171685 23.779628-1.147982c5.247918 24.763613 10.167841 54.611147 14.595772 89.870596l0.163997 1.967969L685.755285 207.37476 685.755285 207.37476zM656.071749 210.818706l-0.163997-1.967969c13.939782 3.115951 37.391416 10.167841 70.354901 21.155669l1.803972-0.163997 0.65599 13.119795 2.295964 3.607944-1.967969 0.163997c-39.03139-12.299808-59.859065-20.007687-62.483024-23.287636L656.071749 210.818706 656.071749 210.818706zM670.339526 68.46893l-0.65599-11.315823c23.943626 1.31198 35.915439 3.935939 36.079436 7.70788l0.491992 9.347854C684.443306 70.272902 672.471493 68.304933 670.339526 68.46893L670.339526 68.46893zM673.29148 85.196669l-0.491992-9.347854-2.295964-3.607944 1.967969-0.163997c22.631646 2.951954 33.94747 6.231903 34.111467 9.511851l0.65599 11.315823L673.29148 85.196669 673.29148 85.196669zM712.158873 113.568225c-23.943626-5.247918-36.079436-10.987828-36.407431-17.219731l-2.295964-7.379885c25.255605 5.083921 37.883408 9.511851 38.211403 13.44779 25.747598 7.543882 40.34337 11.151826 43.951313 10.987828l0.163997 1.803972c-0.327995 2.623959-3.443946 5.247918-9.347854 8.035874l-34.439462-13.44779L712.158873 113.568225 712.158873 113.568225zM682.147341 141.611787l-0.327995-5.73991-2.459962-9.347854c23.943626 4.755926 36.079436 8.691864 36.079436 11.479821l0.65599 11.315823C704.778988 147.351698 693.463165 144.727739 682.147341 141.611787L682.147341 141.611787zM688.051249 177.199231l-0.327995-5.73991-2.623959-9.511851 1.967969-0.163997-2.295964-3.607944-0.65599-13.119795 33.94747 9.511851 0.65599 13.283792c-10.659833-4.591928-18.039718-6.723895-21.975657-6.559898l-1.967969 0.163997c0 1.475977 8.199872 5.411915 24.271621 12.13581l2.623959 11.151826 0.163997 1.967969L688.051249 177.199231 688.051249 177.199231zM688.215247 180.807175c23.943626 4.755926 36.243434 11.807816 36.735426 20.991672l0.327995 5.73991-1.967969 0.163997c-22.631646-6.887892-34.275464-13.283792-34.603459-19.1877L688.215247 180.807175 688.215247 180.807175zM691.82319 212.786675l-0.65599-13.119795c15.415759 6.723895 26.89558 10.003844 34.111467 9.511851l0.327995 7.543882 2.459962 9.511851-1.803972 0.163997C704.450993 220.986547 692.971172 216.558616 691.82319 212.786675L691.82319 212.786675zM695.103139 240.994234l-0.163997-1.803972c19.351698 6.559898 29.355541 9.839846 30.339526 9.839846l0.163997 1.967969-7.871877 0.327995C706.746957 251.818065 699.367072 248.374119 695.103139 240.994234L695.103139 240.994234zM716.422806 118.980141l-0.163997-3.607944c4.427931-0.163997 10.003844 4.427931 16.727739 14.10378l-1.967969 0.163997C724.45868 122.26009 719.538757 118.816143 716.422806 118.980141L716.422806 118.980141zM479.118514 382.196028c53.627162 10.167841 89.870596 1.967969 109.222293-24.599616 9.675849-18.695708 15.579757-33.455477 17.875721-44.279308 11.807816-56.743113-5.903908-103.154388-53.299167-138.741832-12.463805-5.083921-22.631646-8.363869-30.339526-10.003844-31.651505-6.067905-63.631006 5.083921-95.938501 33.455477-9.347854 16.399744-15.251762 31.159513-18.039718 44.279308-13.283792 63.795003 1.967969 108.238309 45.919283 133.165919L479.118514 382.196028 479.118514 382.196028zM410.075593 265.429853c6.231903 5.247918 11.479821 8.199872 15.579757 9.019859-9.675849-9.347854-14.431775-15.087764-13.939782-17.219731-0.327995-5.411915-0.163997-10.167841 0.819987-14.267777l2.131967 0.327995c24.271621 15.743754 35.915439 25.5836 35.095452 29.519539l-2.131967 10.003844c-4.099936-3.607944-8.035874-5.73991-11.643818-6.559898l-0.819987 4.099936c10.823831 2.131967 15.251762 11.971813 13.44779 29.519539l-1.967969-0.327995c-22.467649-16.399744-34.603459-27.715567-36.407431-33.94747C409.255605 273.30173 409.255605 269.857783 410.075593 265.429853L410.075593 265.429853zM410.23959 286.257527c33.127482 21.647662 47.887252 40.34337 44.607303 56.251121-29.683536-23.615631-44.443306-36.079436-44.279308-37.555413C409.747598 295.769379 409.5836 289.537476 410.23959 286.257527L410.23959 286.257527zM412.699552 315.777066l0.491992-2.131967c27.059577 20.663677 44.607303 37.227418 52.643177 49.527226 10.331839 1.967969 17.055734 7.379885 20.49968 16.235746l-2.131967-0.491992C447.303011 372.028187 423.523382 350.872518 412.699552 315.777066L412.699552 315.777066zM414.339526 234.926329c2.459962-4.919923 4.263933-9.347854 5.083921-13.44779 18.859705 14.759769 30.339526 22.467649 34.111467 23.123639l-3.771941 18.039718C444.18706 261.493914 432.379244 252.310058 414.339526 234.926329L414.339526 234.926329zM421.883408 220.002562c2.131967-9.839846 5.247918-14.759769 9.675849-14.759769l27.879564 21.975657c-0.327995 1.147982-2.131967 6.231903-5.411915 15.415759C437.299167 228.530429 426.639334 220.986547 421.883408 220.002562L421.883408 220.002562zM432.707239 199.174888c5.083921-5.903908 8.527867-8.691864 10.495836-8.363869l3.935939 0.819987c10.987828 10.495836 19.1877 16.235746 24.599616 17.219731-0.819987 3.935939-3.935939 8.855862-9.511851 14.759769C442.21909 209.014734 432.379244 200.814862 432.707239 199.174888L432.707239 199.174888zM448.450993 185.563101l0.491992-2.131967c2.459962 0.491992 6.3959-0.819987 11.807816-3.771941 18.859705 10.003844 28.207559 16.727739 28.207559 19.84369-6.067905 1.639974-9.511851 4.427931-10.331839 8.363869C466.818706 202.946829 456.814862 195.566944 448.450993 185.563101L448.450993 185.563101zM469.442665 179.331198l0.491992-2.131967 14.923767 0.65599 12.627803 2.459962c2.459962 0.491992 8.199872 3.771941 17.547726 9.839846l-0.491992 2.131967c-6.887892-1.31198-13.611787 0.163997-20.49968 4.263933L469.442665 179.331198 469.442665 179.331198zM476.494555 249.030109l4.591928-21.811659c2.951954-14.431775 12.463805-25.091608 28.535554-31.9795l4.099936 0.819987c24.599616 34.275464 32.143498 73.798847 22.795644 118.570147l-2.459962 11.971813-6.231903 19.515695-6.067905-1.147982c-3.935939-0.819987-14.267777 0-30.831518 2.295964C473.870596 316.597053 469.278668 283.961563 476.494555 249.030109L476.494555 249.030109zM476.494555 363.172325l0.327995-1.967969c10.823831-2.131967 17.547726-3.115951 20.007687-2.623959 13.939782 10.167841 21.647662 17.875721 23.287636 23.287636l-21.319667-1.967969C496.174247 379.408072 488.630365 373.832159 476.494555 363.172325L476.494555 363.172325zM508.966047 363.172325l3.771941 2.787956c1.147982 0.163997 6.231903-2.951954 15.087764-9.675849 10.331839 13.119795 18.203716 20.171685 23.779628 21.155669-0.65599 2.951954-8.199872 4.263933-22.467649 4.099936C515.361947 370.716208 508.638053 364.648302 508.966047 363.172325L508.966047 363.172325zM511.590006 185.235106l0.491992-2.131967 4.099936 0.819987c19.84369 3.771941 35.751441 17.219731 47.723254 40.34337C554.557335 214.754644 537.173607 201.634849 511.590006 185.235106L511.590006 185.235106zM521.921845 197.534914c38.211403 24.271621 56.087124 42.311339 53.79116 53.79116 1.967969 4.919923 2.623959 8.527867 2.295964 10.823831-35.095452-26.567585-51.495195-44.935298-49.363229-54.939142C526.349776 206.71877 524.217809 203.602819 521.921845 197.534914L521.921845 197.534914zM528.64574 352.348495l7.543882-15.251762 2.131967 0.491992c4.263933 5.73991 13.283792 14.431775 27.059577 25.911595l-0.491992 2.131967c-5.411915 5.247918-8.363869 8.855862-8.855862 10.823831l-4.099936-0.819987L528.64574 352.348495 528.64574 352.348495zM536.845612 333.324792l4.263933-9.675849-0.491992-8.363869 4.099936 0.819987c19.515695 17.711723 29.027546 27.059577 28.863549 28.371557l-0.491992 2.131967c-1.967969 9.347854-4.263933 13.611787-7.05189 13.119795C548.817425 342.508648 539.141576 333.652787 536.845612 333.324792L536.845612 333.324792zM539.797566 236.402306c27.715567 19.84369 40.999359 32.63549 39.68738 38.703395 1.31198 7.215887 1.803972 12.13581 1.147982 14.759769l-1.967969-0.327995-35.095452-29.519539C540.78155 245.586163 539.469571 237.714286 539.797566 236.402306L539.797566 236.402306zM542.257527 307.413197l2.459962-11.971813 10.003844 3.935939c-7.05189-7.871877-10.331839-12.627803-10.003844-14.267777-0.65599-10.495836-0.819987-16.727739-0.327995-18.695708 18.695708 13.611787 30.831518 24.927611 36.243434 33.94747l-2.459962 11.971813c-7.05189-7.05189-12.7918-10.987828-16.727739-11.807816 8.035874 11.315823 13.939782 17.383728 17.711723 18.039718l-4.099936 19.84369C554.557335 320.532992 543.733504 310.201153 542.257527 307.413197L542.257527 307.413197zM307.249199 569.153107c-9.675849 0-17.711723-6.887892-19.84369-16.071749-4.263933-12.463805 1.639974-28.863549 29.519539-35.751441 1.31198 35.587444 0 49.527226 0 49.527226C313.809097 568.33312 310.693145 569.153107 307.249199 569.153107L307.249199 569.153107zM709.862908 537.173607c0-1.147982 0-2.131967-0.163997-3.115951 2.131967 3.279949 3.279949 7.215887 3.279949 11.479821 0 11.643818-9.183857 21.155669-20.49968 21.155669-3.443946 0-6.723895-0.819987-9.511851-2.459962C697.891095 563.905189 709.862908 551.933376 709.862908 537.173607L709.862908 537.173607zM531.761691 520.281871c0.65599 15.743754-32.963485 49.199231-32.963485 49.199231 0-18.203716 9.347854-42.803331 12.463805-48.707239-8.035874-11.643818-13.283792-32.307495-13.283792-32.307495S531.105701 504.374119 531.761691 520.281871L531.761691 520.281871zM488.794363 507.326073c2.459962 0 4.427931 1.967969 4.427931 4.427931 0 2.459962-1.967969 4.427931-4.427931 4.427931-2.459962 0-4.427931-1.967969-4.427931-4.427931C484.366432 509.294042 486.334401 507.326073 488.794363 507.326073L488.794363 507.326073zM445.335042 629.668161c-0.819987 8.855862-2.131967 16.235746-2.131967 16.235746s-53.627162 7.05189-63.959001-30.503523C395.151826 632.94811 427.623318 631.144138 445.335042 629.668161L445.335042 629.668161zM620.648302 614.908392c-9.675849 37.719411-63.303011 31.651505-63.303011 31.651505s-1.475977-7.379885-2.459962-16.235746C572.597053 631.636131 605.232543 632.784113 620.648302 614.908392L620.648302 614.908392zM419.587444 518.313901c29.847534 0 53.955157 21.975657 53.955157 49.035234 0 27.059577-24.271621 49.035234-53.955157 49.035234-29.847534 0-53.955157-21.975657-53.955157-49.035234C365.632287 540.289558 389.903908 518.313901 419.587444 518.313901L419.587444 518.313901zM419.587444 613.76041c28.371557 0 51.331198-20.827675 51.331198-46.411275 0-25.5836-22.959641-46.411275-51.331198-46.411275-28.207559 0-51.331198 20.827675-51.331198 46.411275C368.256246 592.932735 391.379885 613.76041 419.587444 613.76041L419.587444 613.76041zM419.587444 534.38565c20.007687 0 36.243434 14.759769 36.243434 32.799488 0 18.203716-16.235746 32.799488-36.243434 32.799488s-36.243434-14.759769-36.243434-32.799488C383.34401 549.14542 399.579757 534.38565 419.587444 534.38565L419.587444 534.38565zM435.331198 552.261371c1.967969 2.131967 4.919923 2.623959 6.559898 1.147982 1.639974-1.475977 1.475977-4.263933-0.491992-6.3959-1.967969-2.131967-4.919923-2.623959-6.559898-1.147982C433.035234 547.341448 433.199231 550.129404 435.331198 552.261371L435.331198 552.261371zM395.971813 585.880846c5.411915 5.73991 13.283792 7.05189 17.875721 3.115951 4.591928-3.935939 3.935939-11.807816-1.475977-17.547726-5.411915-5.73991-13.283792-7.05189-17.875721-3.115951C389.903908 572.433056 390.559898 580.304933 395.971813 585.880846L395.971813 585.880846zM584.240871 518.313901c29.847534 0 53.955157 21.975657 53.955157 49.035234 0 27.059577-24.271621 49.035234-53.955157 49.035234-29.847534 0-53.955157-21.975657-53.955157-49.035234C530.121717 540.289558 554.393338 518.313901 584.240871 518.313901L584.240871 518.313901zM584.240871 613.76041c28.371557 0 51.331198-20.827675 51.331198-46.411275 0-25.5836-22.959641-46.411275-51.331198-46.411275-28.207559 0-51.331198 20.827675-51.331198 46.411275C532.909673 592.932735 555.869315 613.76041 584.240871 613.76041L584.240871 613.76041zM584.240871 534.38565c20.007687 0 36.243434 14.759769 36.243434 32.799488 0 18.203716-16.235746 32.799488-36.243434 32.799488-20.007687 0-36.243434-14.759769-36.243434-32.799488C547.997438 549.14542 564.233184 534.38565 584.240871 534.38565L584.240871 534.38565zM599.820628 552.261371c1.967969 2.131967 4.919923 2.623959 6.559898 1.147982 1.639974-1.475977 1.475977-4.263933-0.491992-6.3959-1.967969-2.131967-4.919923-2.623959-6.559898-1.147982C597.688661 547.341448 597.852659 550.129404 599.820628 552.261371L599.820628 552.261371zM560.62524 585.880846c5.411915 5.73991 13.283792 7.05189 17.875721 3.115951 4.591928-3.935939 3.935939-11.807816-1.475977-17.547726-5.411915-5.73991-13.283792-7.05189-17.875721-3.115951C554.557335 572.433056 555.213325 580.304933 560.62524 585.880846L560.62524 585.880846zM957.171044 381.540038C957.171044 381.540038 957.171044 381.540038 957.171044 381.540038c-0.65599 0.983985-1.31198 1.803972-1.967969 2.951954-0.327995 0.327995-0.491992 0.65599-0.819987 0.983985-0.327995 0.327995-1.967969 0.65599-2.295964 0.983985-11.315823 14.759769-29.355541 40.34337-62.975016 46.247277l0 34.931454c0 4.263933-0.819987 8.691864-5.083921 8.691864L685.919283 476.330557c-0.163997 10.331839-0.327995 18.203716-0.65599 27.879564 24.435618 1.803972 43.295324 19.351698 43.295324 41.491352 0 22.467649-19.84369 40.671365-45.263293 41.819347-1.967969 78.226778-5.903908 143.98975-7.70788 150.549648l-0.491992 0.983985c-1.967969 2.295964-9.511851 5.247918-21.155669 8.363869 0.327995 13.939782-3.279949 29.355541-11.643818 46.08328 3.443946-21.647662-22.795644-36.079436-26.567585-38.047406-0.163997 0-0.327995 0-0.491992 0 0.163997 4.427931 0 57.727098-88.230621 97.90647-1.475977-44.115311-14.10378-70.682896-31.9795-86.754644L494.534273 766.606022l-5.411915-0.327995 0-0.163997 0 0 0 0 0.327995 0 0.327995-0.163997c-0.819987-0.163997-0.983985-0.491992-1.147982-1.147982-10.331839-8.035874-28.043562-18.203716-64.450993-18.203716-13.283792 0-28.207559 1.31198-44.607303 3.935939-4.099936 0.819987-7.70788 1.147982-11.151826 1.147982-5.575913 0-10.003844-0.983985-16.071749-2.295964l-0.327995 0-0.327995-0.163997c-17.547726-4.099936-27.55157-7.70788-30.011531-10.659833l-0.491992-0.983985c-0.491992-2.131967-2.295964-8.363869-5.73991-150.549648-25.255605-0.983985-45.263293-19.351698-45.263293-41.983344 0-22.139654 18.859705-39.523382 43.459321-41.163357-0.163997-9.675849-0.327995-17.547726-0.65599-27.879564L132.099936 476.002562c-4.427931 0-10.495836-4.591928-10.495836-8.691864l0-97.414478c-11.807816-0.65599-19.679693-2.295964-26.731582-4.755926-29.027546-10.495836-35.751441-35.915439-35.587444-60.023062 0-1.475977 0.491992-2.787956 0.983985-3.771941-6.723895-11.643818-6.231903-25.5836-5.083921-35.587444 0.983985-8.035874 2.623959-12.13581 4.427931-13.939782-4.263933-8.855862-0.983985-18.859705 1.967969-26.731582 3.771941-10.167841 12.13581-11.971813 22.139654-10.003844-4.755926-9.019859-2.459962-17.219731 11.643818-28.699552 4.427931-3.607944 14.267777 7.05189 26.075593 16.071749l0-267.151826c0-4.263933 6.067905-6.067905 10.331839-6.067905l751.928251 0c4.427931 0 5.083921 1.803972 5.083921 6.067905L888.784113 248.374119c16.727739 0.983985 29.355541 7.70788 38.539398 19.84369 4.591928 6.231903 7.871877 11.807816 8.691864 16.891736C977.670724 313.153107 982.262652 344.640615 957.171044 381.540038L957.171044 381.540038zM316.433056 508.638053c-22.959641 0.491992-40.835362 16.727739-40.835362 36.735426 0 20.335682 18.859705 36.899423 41.983344 36.899423l0 2.623959 0.163997-0.65599c0-0.819987 0-1.475977 0-2.295964 0.491992 0.163997 0.983985 0.163997 1.475977 0.327995l1.803972 0 0 0.491992c5.247918 1.31198 12.7918 2.951954 19.351698 3.771941 10.003844 35.095452 34.111467 64.122998 34.111467 64.122998s-9.839846 28.863549-13.939782 67.238949c51.167201-85.11467 229.268418-81.178732 280.107623-10.823831-4.591928-32.799488-12.627803-56.415119-12.627803-56.415119s24.107623-28.863549 34.111467-64.122998c6.559898-0.819987 13.939782-1.147982 19.023703-2.295964 0 0.491992 0 2.623959 0 2.623959l0.491992 0c23.123639 0 41.983344-18.695708 41.983344-39.03139 0-9.347854-3.935939-18.695708-10.495836-25.419603-10.167841-6.723895-25.091608-10.331839-40.835362-10.331839 0-6.723895 0.983985-19.351698 1.803972-35.423447L318.401025 476.658552c0.163997 10.331839 0.491992 19.84369 0.65599 30.175529l0 2.131967L316.433056 508.638053 316.433056 508.638053zM126.524023 462.554773c0 4.099936 6.3959 9.183857 10.823831 9.183857l741.432415 0c4.263933 0 5.575913-4.919923 5.575913-9.183857l0-29.027546c0 0.491992-6.723895 1.475977-10.823831 1.147982-22.795644-2.295964-44.443306-3.607944-60.679052-9.183857L176.215247 425.491352l-1.31198-2.787956 0-60.18706c-10.823831 5.903908-25.5836 8.363869-48.215247 7.871877L126.68802 462.554773 126.524023 462.554773zM821.381166-13.693786 180.807175-13.693786 180.807175 282.649584c10.823831 4.263933 15.579757 10.987828 15.087764 21.975657-0.491992 8.363869-4.263933 13.611787-15.087764 16.727739l0 7.379885c5.903908 1.967969 3.935939 4.263933 5.247918 6.723895 5.411915 10.495836 5.575913 18.203716-5.247918 23.779628l0 55.759129 615.318386 0c-2.787956-5.575913-4.755926-7.871877-5.575913-12.299808-1.475977-8.035874-1.639974-18.367713-1.147982-28.207559L697.891095 315.449071c0 0-28.371557-15.251762-16.727739-32.799488 11.643818-17.383728 32.307495-11.479821 50.511211-0.327995 12.13581 7.379885 39.68738 23.287636 63.959001 40.179372 0.163997-0.163997 0.327995-0.163997 0.491992-0.327995-1.803972-1.31198-2.951954-2.295964-2.951954-2.295964-11.151826-7.543882-6.887892-36.899423 15.415759-41.327354 3.115951-0.65599 9.675849 0 9.675849 1.147982l0-293.391416L821.381166-13.693786 821.381166-13.693786zM177.855221 271.169763c0 3.443946-2.131967 6.231903-4.755926 8.035874 1.639974 0.491992 3.771941 0.983985 4.755926 1.475977L177.855221 271.169763 177.855221 271.169763zM177.855221 322.828956c-0.983985 0.163997-1.639974 0.327995-2.459962 0.491992 0.819987 0.491992 1.475977 0.983985 2.459962 1.475977L177.855221 322.828956 177.855221 322.828956zM878.780269-65.516976 137.347854-65.516976c-4.263933 0-10.823831 2.131967-10.823831 6.3959L126.524023 206.882767c5.903908 1.147982 4.919923 2.295964 6.723895 3.279949 19.679693 8.035874 38.047406 25.255605 25.747598 33.127482-0.163997 0-1.475977 0.163997-1.639974 0.163997 9.511851 3.771941 17.547726 9.839846 17.547726 20.663677l0-289.29148 655.169763 2.459962 0 291.915439c9.839846-9.675849 21.647662-14.595772 34.603459-10.331839 3.279949-6.559898 13.611787-9.839846 19.515695-10.331839l0-307.495195C884.192184-63.38501 883.044202-65.516976 878.780269-65.516976L878.780269-65.516976zM878.780269-65.516976" horiz-adv-x="1024" /> + + + <glyph glyph-name="carousel" unicode="" d="M1002.069333 144.38400000000001L1002.069333 611.6906670000001c0 24.213333-16.917333 49.578667-42.069333 49.578667l-64 0 1.152 6.4c0 31.338667-26.005333 57.6-58.538667 57.6L186.432 725.269333c-31.936 0-58.410667-31.957333-58.410667-64l-0.213333 0.96L67.178667 662.229333c-25.152 0-45.226667-20.288-45.226667-44.501333l0-467.328L21.354667 150.39999999999998c0-24.789333 20.629333-44.693333 45.312-44.693333L127.786667 105.70666700000004l0-5.184C127.786667 69.03466700000001 153.792 42.66666699999996 186.432 42.66666699999996l652.842667 0c31.658667 0 56.277333 10.901333 56.725333 42.602667l64 0c24.661333 0 42.666667 34.325333 42.666667 59.114667L1002.069333 144.38400000000001zM128 149.26933299999996L64 149.26933299999996l0 469.333333 64 0L128 149.26933299999996zM853.333333 106.602667c0-6.421333-14.848-21.333333-21.333333-21.333333l-640 0c-6.485333 0-21.333333 14.848-21.333333 21.333333l0 554.666667c0 6.378667 9.258667 18.56 15.744 18.56l5.589333 2.773333 640 0c6.442667 0 21.333333-14.954667 21.333333-21.333333L853.333333 106.602667zM960 127.93600000000004l-64 0 0 490.666667 60.842667 1.984c4.970667 0 3.157333 2.944 3.157333-1.984l0-469.333333C960 144.29866700000002 965.013333 127.93600000000004 960 127.93600000000004zM412.458667 399.829333c43.925333 0 79.637333 34.773333 79.637333 77.482667 0 42.752-35.712 77.482667-79.637333 77.482667-43.925333 0-79.637333-34.730667-79.637333-77.482667C332.8 434.602667 368.533333 399.829333 412.458667 399.829333zM412.458667 516.0533330000001c21.952 0 39.829333-17.365333 39.829333-38.741333 0-21.333333-17.877333-38.741333-39.829333-38.741333-21.952 0-39.829333 17.408-39.829333 38.741333C372.629333 498.709333 390.506667 516.0533330000001 412.458667 516.0533330000001zM785.92 457.386667c-95.914667-23.338667-137.728-87.765333-168.256-134.805333-24.213333-37.269333-39.082667-58.346667-65.109333-58.346667l-0.042667 0c-35.456 0-57.109333 14.272-80.042667 28.16-24.362667 14.741333-49.536 29.952-88.64 29.952-75.648 0-156.906667-93.269333-165.930667-103.893333L213.333333 167.38133300000004c0-10.709333 8.917333-18.112 19.925333-18.112l557.504 0c10.986667 0 19.904 7.402667 19.904 18.112L810.666667 438.570667c0 5.973333-2.837333 11.626667-7.658667 15.296C798.186667 457.536 791.872 458.858667 785.92 457.386667zM770.858667 188.52266699999996L253.162667 188.52266699999996c24.874667 27.733333 85.290667 95.082667 130.666667 95.082667 27.733333 0 46.229333-11.157333 67.605333-24.128 25.152-15.168 53.632-32.426667 99.712-33.941333l2.944-0.064c47.637333 0 71.722667 37.12 97.237333 76.416 26.645333 41.088 56.469333 79.104 119.530667 102.485333L770.858667 188.52266699999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="help" unicode="" d="M690.2 741.8C635.2 783.6 573.2 798 494.6 798c-59.6 0-110.6-12.2-151-39.4C284 718 256 649.8 256 542l153.6 0c0 28.8-2.8 59.8 14 86.4 16.8 26.6 40.2 47 80.4 47 40.8 0 61.8-11.8 81.6-36.2 16.8-20.8 23.2-45.6 23.2-72 0-22.8-11.6-43.8-25.4-62.8-7.6-11.2-17.6-21.2-30.2-30.8 0 0-83-49.4-112.2-96.2-21.8-34.8-29.6-78.4-31.4-130.6-0.2-3.8 1.2-11.6 14.4-11.6 13 0 112 0 123.6 0 11.6 0 14 8.8 14.2 12.4 0.8 19 3.2 48.2 6.6 59.2 6.6 20.8 19.4 39 39.4 54.6l41.4 28.6c37.4 29.2 67.2 53 80.4 71.8 22.6 30.8 38.4 68.8 38.4 113.8C768 649 741 703.2 690.2 741.8zM484 155.6c-51.8 1.6-94.6-34.4-96.4-90.6-1.6-56.4 39-93.4 91-95 54-1.6 95.8 33.2 97.4 89.4C577.6 115.6 538 154 484 155.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="code-circle" unicode="" d="M513.544163 893.525741c-282.101629 0-510.78094-228.679311-510.78094-510.76288 0-282.083569 228.679311-510.76288 510.78094-510.76288s510.76288 228.679311 510.76288 510.76288C1024.325103 664.8464309999999 795.645793 893.525741 513.544163 893.525741zM513.544163-83.46335899999997c-257.503523 0-466.22622 208.740757-466.22622 466.22622S256.0587 848.989082 513.544163 848.989082s466.22622-208.740757 466.22622-466.22622S771.047686-83.46335899999997 513.544163-83.46335899999997zM171.771357 359.77212099999997L414.357086 256.088033 414.357086 300.805295 221.978945 380.50532599999997 414.357086 459.464886 414.357086 504.182148 171.771357 401.76228ZM442.585309 193.38272800000004L478.814238 193.38272800000004 584.737801 572.1429949999999 548.743656 572.1429949999999ZM612.749301 504.182148L612.749301 459.464886 804.874598 380.50532599999997 612.749301 300.805295 612.749301 256.088033 855.33503 359.77212099999997 855.33503 401.76228Z" horiz-adv-x="1025" /> + + + <glyph glyph-name="water" unicode="" d="M862.315763 33.684211000000005C802.869868 33.684211000000005 754.526289 82.94399999999996 754.526289 143.50371900000005 754.526289 162.33094700000004 759.35885 180.96056099999998 768.520956 197.43438600000002 768.64671 197.79368399999998 768.808394 198.15298199999995 769.006008 198.49431600000003L849.075622 334.542596 849.057657 334.542596 862.315763 357.052632 875.573868 334.542596 875.573868 334.542596 955.140464 199.356632C955.715341 198.67396499999995 956.164464 197.865544 956.380043 196.96729800000003 965.380464 180.60126300000002 970.123201 162.151298 970.105236 143.50371900000005 970.105236 82.94399999999996 921.761657 33.684211000000005 862.315763 33.684211000000005L862.315763 33.684211000000005ZM924.33064 188.57768399999998C924.204885 188.79326300000002 924.115061 189.02680699999996 924.025236 189.27831600000002L862.315763 302.996211 800.606289 189.260351C800.516464 189.02680699999996 800.42664 188.79326300000002 800.300885 188.57768399999998 793.977236 176.505263 790.635763 162.81600000000003 790.635763 148.965053 790.635763 105.29235100000005 822.792956 69.75775399999998 862.333727 69.75775399999998 901.856534 69.75775399999998 933.995763 105.29235100000005 933.995763 148.98301800000002 933.995763 162.81600000000003 930.654289 176.52322800000002 924.33064 188.57768399999998L924.33064 188.57768399999998ZM682.684605 392.982456C593.50678 392.982456 520.982429 469.602807 520.982429 563.8108070000001 520.982429 593.093614 528.240254 622.071018 541.965447 647.706947 542.163061 648.281825 542.396605 648.820772 542.684043 649.341754L662.815412 860.968421 662.797447 860.968421 682.684605 896 702.571763 860.968421 702.535833 860.968421 821.89471 650.689123C822.774991 649.647158 823.439692 648.3716489999999 823.781026 646.970386 837.25471 621.514105 844.368815 592.8241399999999 844.35085 563.8108070000001 844.35085 469.602807 771.844464 392.982456 682.684605 392.982456L682.684605 392.982456ZM791.408254 630.1192980000001C791.21064 630.4965609999999 791.030991 630.891789 790.887271 631.322947L682.684605 823.924772 574.446008 631.287018C574.320254 630.891789 574.140605 630.4965609999999 573.942991 630.1013330000001 562.840675 609.6931930000001 556.912254 596.075789 556.912254 572.631579 556.912254 498.634105 613.375973 428.876351 682.684605 428.876351 751.993236 428.876351 808.367131 489.058807 808.367131 563.056281 808.367131 586.500491 802.492605 609.6931930000001 791.408254 630.1192980000001L791.408254 630.1192980000001ZM538.695833 276.983018C540.115061 275.330246 541.174991 273.33614 541.713938 271.12645599999996 563.433517 231.11859600000003 574.895131 186.02666699999997 574.895131 140.43171900000004 574.895131-7.581192999999985 458.051341-128 314.403903-128 170.738499-128 53.89471-7.581192999999985 53.89471 140.43171900000004 53.89471 186.47578899999996 65.589868 231.998877 87.704675 272.294175 88.010078 273.17445599999996 88.387341 274.01880700000004 88.872394 274.863158L282.408394 607.411649 282.372464 607.411649 314.403903 662.45614 346.453306 607.411649 346.399412 607.411649 538.695833 276.983018 538.695833 276.983018ZM314.403903 590.614456L119.807973 257.79649099999995C119.556464 257.113825 119.251061 256.449123 118.873798 255.78442099999995 98.932745 220.48336800000004 88.387341 180.42161399999998 88.387341 139.91073700000004 88.387341 12.072420999999963 189.799271-91.89052600000002 314.421868-91.89052600000002 439.026499-91.89052600000002 540.420464 12.072420999999963 540.402499 139.91073700000004 540.402499 180.42161399999998 529.857096 220.50133300000005 509.916043 255.78442099999995 509.53878 256.449123 509.233377 257.131789 508.963903 257.86835099999996L314.403903 590.614456 314.403903 590.614456Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="username" unicode="" d="M514.594 824.888c-144.11 0-260.979-118.46-260.979-264.558 0-88.783 43.497-166.928 109.711-214.898-135.361-59.354-230.159-195.858-230.159-354.931h0.894c1.541-21.375 18.641-38.377 40.117-38.377s38.575 17.051 40.117 38.377h0.645c0 0.944-0.099 1.79-0.099 2.734 0 0.05 0 0.099 0 0.149 0 0.099-0.05 0.149-0.05 0.199 0.05 159.967 120 291.054 273.009 304.924 8.948-0.944 17.598-2.734 26.844-2.734 144.11 0 260.979 118.46 260.979 264.558s-116.919 264.558-261.029 264.558zM514.594 377.54499999999996c-99.769 0-180.698 81.972-180.698 183.183s80.879 183.183 180.698 183.183c99.719 0 180.647-81.972 180.647-183.183s-80.879-183.183-180.647-183.183zM896.021-6.615000000000009c0 0.348-0.199 0.645-0.199 0.994-1.043 105.038-43.397 200.034-111.35 269.131v0c-7.157 7.357-17.001 11.98-27.986 11.98-21.574 0-39.122-17.747-39.122-39.668 0-11.135 4.573-21.127 11.83-28.334l-0.099-0.05c52.742-55.229 85.302-130.589 85.302-213.853 0-1.043-0.149-1.987-0.149-3.034h0.994c1.491-21.375 18.691-38.377 40.117-38.377 21.475 0 38.575 17.051 40.117 38.377h0.597c0 0.796-0.099 1.491-0.099 2.287-0.05 0.149 0.05 0.348 0.05 0.547z" horiz-adv-x="1024" /> + + + <glyph glyph-name="find-fill" unicode="" d="M512 896C229.236364 896 0 666.763636 0 384c0-282.786909 229.236364-512 512-512s512 229.213091 512 512C1024 666.763636 794.763636 896 512 896zM657.291636 383.976727c0-77.195636-60.392727-139.729455-136.424727-144.407273l-175.732364-151.714909-22.877091 13.242182 58.228364 222.021818c-8.634182 18.548364-13.800727 39.074909-13.800727 60.858182 0 77.195636 60.369455 139.729455 136.378182 144.430545l175.802182 151.714909 22.877091-13.172364-58.251636-222.068364C652.125091 426.309818 657.291636 405.806545 657.291636 383.976727zM512 384m-66.048 0a2.838 2.838 0 1 1 132.096 0 2.838 2.838 0 1 1-132.096 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="about" unicode="" d="M514.27174 834.607768c-249.516844 0-451.789687-202.272843-451.789687-451.789687s202.272843-451.789687 451.789687-451.789687 451.789687 202.272843 451.789687 451.789687S763.788583 834.607768 514.27174 834.607768zM514.27174-20.12919999999997c-222.541469 0-402.947282 180.405813-402.947282 402.947282s180.405813 402.947282 402.947282 402.947282 402.947282-180.405813 402.947282-402.947282S736.814232-20.12919999999997 514.27174-20.12919999999997zM514.295276 593.979362c-9.44614-10.360975-14.307867-22.951735-14.307867-37.483706 0-11.960403 3.886517-22.396079 11.534707-30.457686 7.783267-8.211009 17.853623-12.450567 29.313629-12.450567 9.312086 0 23.139 2.849908 35.782971 16.900925 9.865695 10.641361 14.866592 23.437805 14.866592 37.693484 0 11.68104-4.031826 21.900799-11.744485 29.832446C562.925856 615.325529 532.358677 613.449809 514.295276 593.979362zM549.461193 293.282882c-12.110829-11.541871-20.589944-18.759249-26.236548-23.316032 2.77009 14.953573 9.976212 44.614104 27.330462 103.023398 17.297968 57.890478 18.799158 67.991534 18.799158 72.955592 0 8.65717-3.63683 16.335037-9.921977 21.642926-14.124695 11.661597-39.035038 9.349949-69.131497-7.677866-16.779152-9.408277-34.595936-24.759917-54.493102-46.576805l-10.377348-11.541871 34.425044-26.548656 8.818853 8.715499c9.573029 9.292644 16.086373 15.35164 20.411889 19.393699-26.294876-86.460164-39.093367-140.190903-39.093367-164.262134 0-10.907421 3.172249-19.970844 9.573029-26.839275 6.460132-7.039323 15.510252-10.736529 25.891693-10.736529 10.146081 0 21.792329 3.926426 35.922141 11.949146 12.741185 7.212262 31.883151 23.029506 58.641585 48.190559l10.837836 10.391674-31.30703 30.475082L549.461193 293.282882z" horiz-adv-x="1024" /> + + + <glyph glyph-name="location" unicode="" d="M451.673935-98.39569900000004C478.883834-129.01914699999998 524.254807-128.8089789999999 551.400292-97.92885100000001 553.755808-95.38790800000004 558.821323-89.79676199999994 565.872444-81.84834999999998 577.572838-68.65901699999995 590.597131-53.62432000000001 604.615947-36.99831500000005 644.662065 10.495494000000008 684.708678 61.282182000000034 722.129538 113.35355300000003 759.658524 165.575381 792.492213 216.29072599999995 819.314991 264.54153799999995 868.685946 353.35368300000005 896 430.456574 896 493.714285 896 715.890551 719.301715 896 501.333333 896 283.364952 896 106.666667 715.890551 106.666667 493.714285 106.666667 430.401284 134.05152 353.19426999999996 183.54613 264.23737800000004 210.371803 216.02347099999997 243.193308 165.34812399999998 280.699364 113.16684599999996 318.155192 61.05544999999995 358.239268 10.22578999999996 398.322835-37.31103099999996 412.354743-53.95207300000004 425.391185-69.00072999999998 437.102468-82.20257900000001 444.160087-90.15846599999998 449.230214-95.75492099999997 451.982775-98.73670600000003L451.673935-98.39569900000004ZM486.822684-65.32134799999994C484.281231-62.568254000000024 479.425084-57.207989 472.585916-49.49835900000005 461.135889-36.591016999999965 448.364015-21.84776099999999 434.602351-5.527214999999956 395.275714 41.11192700000004 355.949587 90.98045200000001 319.289224 141.985137 282.808749 192.739548 250.983685 241.87642200000005 225.158316 288.29247799999996 179.388826 370.55419500000005 154.50505 440.709839 154.50505 493.714285 154.50505 688.960095 309.785362 847.238095 501.333333 847.238095 692.881306 847.238095 848.161617 688.960095 848.161617 493.714285 848.161617 440.753978 823.345286 370.701737 777.693969 288.58074899999997 751.873483 242.13293399999998 720.038415 192.96007499999996 683.537446 142.16873799999996 646.912604 91.20503299999996 607.624538 41.38032599999997 568.335977-5.21503800000005 554.587654-21.52024300000005 541.828177-36.24924999999996 530.389289-49.14379699999995 523.556841-56.84571100000005 518.705521-62.20043499999997 516.166694-64.95052599999997 507.543772-74.74891100000002 495.255793-74.80583000000001 487.131524-65.66235300000005L486.822684-65.32134799999994ZM714.955981 428.971194C723.919106 453.372045 728.565658 479.331002 728.565658 505.904762 728.565658 627.091817 632.184774 725.333333 513.29293 725.333333 394.401086 725.333333 298.020202 627.091817 298.020202 505.904762 298.020202 384.717709 394.401086 286.47619 513.29293 286.47619 549.003859 286.47619 583.510052 295.36805300000003 614.373097 312.125591 626.032316 318.456132 630.449257 333.22218 624.238611 345.10648100000003 618.027966 356.99078199999997 603.541579 361.49299399999995 591.882359 355.16245100000003 567.900883 342.14136099999996 541.111735 335.23809500000004 513.29293 335.23809500000004 420.821495 335.23809500000004 345.858586 411.648164 345.858586 505.904762 345.858586 600.161359 420.821495 676.571428 513.29293 676.571428 605.764365 676.571428 680.727273 600.161359 680.727273 505.904762 680.727273 485.192019 677.117041 465.022684 670.154965 446.069408 665.522846 433.459117 671.796821 419.408892 684.168282 414.687349 696.53974 409.965809 710.323861 416.360905 714.955981 428.971194L714.955981 428.971194Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="up" unicode="" d="M513.6 539.2l384-384c12.8-12.8 32-12.8 44.8 0 12.801 12.8 12.801 32 0 44.8l-403.2 403.2C532.8 609.6 520 616 513.6 616c-6.4 0-19.2 0-25.599-6.4L78.399 200c-12.8-12.8-12.8-32 0-44.8s32-12.8 44.8 0L513.6 539.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="pause" unicode="" d="M512-128c-282.714 0-511.893 229.232-511.893 512 0 282.768 229.179 512 511.893 512 282.714 0 511.893-229.232 511.893-512 0-282.768-229.179-512-511.893-512zM512 863.996c-265.043 0-479.9-214.91-479.9-479.996 0-265.097 214.857-479.996 479.9-479.996 265.043 0 479.9 214.899 479.9 479.996 0 265.086-214.857 479.996-479.9 479.996zM639.973 181.32299999999998h-21.329c-23.558 0-42.658 19.1-42.658 42.658v319.933c0 23.558 19.1 42.658 42.658 42.658h21.329c23.558 0 42.658-19.1 42.658-42.658v-319.933c0-23.558-19.1-42.658-42.658-42.658zM405.356 181.32299999999998h-21.329c-23.558 0-42.658 19.1-42.658 42.658v319.933c0 23.558 19.1 42.658 42.658 42.658h21.329c23.558 0 42.658-19.1 42.658-42.658v-319.933c0-23.558-19.1-42.658-42.658-42.658z" horiz-adv-x="1024" /> + + + <glyph glyph-name="date" unicode="" d="M933.185668 758.3591759999999l-167.054737 0 0 56.506968L732.333174 814.866145l0-56.506968L539.505447 758.3591759999999l0 56.506968-33.796734 0 0-56.506968-216.255299 0 0 56.506968-33.796734 0 0-56.506968L88.005356 758.3591759999999c-12.255115 0-22.224164-9.970072-22.224164-22.224164l0-706.60521c0-12.255115 9.970072-22.225187 22.224164-22.225187l845.179288 0c12.255115 0 22.225187 9.970072 22.225187 22.225187L955.409832 736.135012C955.409832 748.389104 945.43976 758.3591759999999 933.185668 758.3591759999999zM939.036933 29.528778999999986c0-3.226484-2.62478-5.852288-5.852288-5.852288l-845.179288 0c-3.226484 0-5.851265 2.62478-5.851265 5.852288L82.154092 736.135012c0 3.226484 2.62478 5.851265 5.851265 5.851265l167.650301 0 0-55.657624 33.796734 0 0 55.657624 216.255299 0 0-55.657624 33.796734 0 0 55.657624L732.333174 741.986277l0-55.657624 33.796734 0 0 55.657624 167.054737 0c3.226484 0 5.852288-2.62478 5.852288-5.851265L939.036933 29.528778999999986zM206.835765 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 608.260623l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM206.835765 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 433.345871l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM206.835765 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM458.879152 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071ZM684.827207 257.877511l129.098263 0 0-94.008071-129.098263 0 0 94.008071Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layim-uploadfile" unicode="" d="M914.7359263333336 663.0359498888887c-20.806884999999987 20.806885000000012-48.471967999999976 32.265868000000026-77.89816099999994 32.265868000000054l-352.221993 2.2737367544323206e-13-120.26099099999992 95.03035300000005-11.157106999999995 8.816806000000007-14.220886 9.769962616701378e-15L197.09333633333344 799.148976888889c-51.69538300000001 2.1316282072803006e-14-93.75224400000005-42.88778599999995-93.75224400000006-95.60442799999993l-1.5631940186722204e-13-255.13888799999998c-1.7763568394002505e-15-2.302439 0.08391099999999785-4.716417999999999 0.24968699999999489-7.196911999999999l-1.9895196601282805e-13-340.692403c-1.9539925233402755e-14-29.426192999999998 11.458982999999954-57.09127599999999 32.26586799999994-77.89816100000002 20.806884999999987-20.806885000000012 48.471967999999976-32.265868000000026 77.89816099999994-32.265868000000054l623.083981-3.410605131648481e-13c29.426192999999998-1.9539925233402755e-14 57.09127599999999 11.458982999999954 77.89816100000002 32.26586799999994 20.806885000000012 20.806884999999987 32.265868000000026 48.471967999999976 32.265868000000054 77.89816099999994L947.0028173333335 585.1377888888885C947.0017943333336 614.5639818888885 935.5428113333334 642.2280418888886 914.7359263333336 663.0359498888887zM197.09333633333372 758.2167298888891l141.88345099999998-8.526512829121202e-14L470.3948853333333 654.369569888889l366.44287999999995-2.2737367544323206e-13c38.236859-2.1316282072803006e-14 69.23178099999997-30.99492100000004 69.23178099999994-69.23178100000004L906.0695463333333 465.9195468888886 144.27334033333327 465.91954688888893 144.2733403333336 703.5445488888892C144.2733403333336 733.7361748888891 167.92296933333355 758.2167298888891 197.09333633333372 758.2167298888891zM836.8377653333331 31.28558888888881L213.75480733333322 31.28558888888915c-38.236859 2.1316282072803006e-14-69.23178099999997 30.99492100000004-69.23178099999994 69.23178100000004L144.52302633333338 424.4776928888892l761.546519-6.252776074688882e-13-2.2737367544323206e-13-323.96134599999993C906.0695463333333 62.28050988888867 875.0746243333334 31.285588888888583 836.8377653333331 31.28558888888881z" horiz-adv-x="1024" /> + + + <glyph glyph-name="delete" unicode="" d="M738.923 24.288h-451.956c-27.2 0-49.327 21.603-49.327 48.157v418.017c0 26.548 22.129 48.147 49.327 48.147h451.956c27.2 0 49.327-21.598 49.327-48.147v-418.017c0-26.555-22.129-48.157-49.327-48.157zM286.966 494.547c-4.447 0-7.168-2.644-7.168-4.084v-418.017c0-1.443 2.722-4.093 7.168-4.093h451.956c4.448 0 7.168 2.651 7.168 4.093v418.017c0 1.44-2.722 4.084-7.168 4.084h-451.956zM832.199 496.302h-640.401c-27.201 0-49.327 20.131-49.327 44.876v61.045c0 24.74 22.128 44.867 49.327 44.867h640.401c27.2 0 49.327-20.127 49.327-44.867v-61.045c0-24.744-22.129-44.876-49.327-44.876zM184.631 541.327c0.387-0.733 2.722-2.866 7.168-2.866h640.401c4.445 0 6.782 2.132 7.168 2.867v60.741c-0.393 0.736-2.733 2.863-7.168 2.863h-640.401c-4.437 0-6.776-2.128-7.168-2.863v-60.742zM600.748 605.354h-174.546c-27.201 0-49.327 20.13-49.327 44.876v10.736c0 24.74 22.128 44.867 49.327 44.867h174.546c27.2 0 49.327-20.126 49.327-44.867v-10.736c0-24.745-22.128-44.876-49.327-44.876zM419.034 650.378c0.387-0.733 2.722-2.865 7.168-2.865h174.546c4.446 0 6.782 2.131 7.168 2.865v10.432c-0.393 0.736-2.734 2.862-7.168 2.862h-174.546c-4.437 0-6.776-2.126-7.168-2.862v-10.432zM404.099 430.833h-30.097c-7.297 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.916-13.212 13.213-13.212h30.098c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213zM659.583 430.833h-30.097c-7.298 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.917-13.212 13.213-13.212h30.097c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213zM531.841 430.833h-30.098c-7.297 0-13.213-5.916-13.213-13.213v-272.34c0-7.297 5.917-13.212 13.213-13.212h30.098c7.297 0 13.212 5.916 13.212 13.212v272.341c0 7.297-5.916 13.213-13.212 13.213z" horiz-adv-x="1024" /> + + + <glyph glyph-name="play" unicode="" d="M512 896C229.376 896 0 666.624 0 384 0 101.37599999999998 229.376-128 512-128 794.624-128 1024 101.37599999999998 1024 384 1024 666.624 794.624 896 512 896L512 896 512 896zM512-95.23199999999997C245.76-95.23199999999997 32.768 117.75999999999999 32.768 384 32.768 650.24 245.76 863.232 512 863.232S991.232 650.24 991.232 384C991.232 117.75999999999999 778.24-95.23199999999997 512-95.23199999999997L512-95.23199999999997 512-95.23199999999997zM733.184 392.192L393.216 588.8c-4.096 4.096-8.192 4.096-12.288 0C376.832 588.8 372.736 584.704 372.736 580.608l0-393.216c0-4.096 4.096-8.192 4.096-8.192 4.096-4.096 8.192-4.096 12.288 0l344.064 196.608c4.096 4.096 4.096 4.096 4.096 8.192C741.376 388.096 737.28 392.192 733.184 392.192L733.184 392.192 733.184 392.192zM733.184 392.192" horiz-adv-x="1024" /> + + + <glyph glyph-name="top" unicode="" d="M812 153.4l-300 172.8-300-172.8 300 604L812 153.4zM264.5 209.2l247.5 142.5 247.5-142.5L512 707.5 264.5 209.2zM371.7 138.3l0-126.2-15.9 0 0 126.2-45.9 0L309.9 153l107.4 0 0-14.8L371.7 138.2zM506.6 154.5c26.6 0 43.3-3.9 50-11.7 6.7-7.8 10-27.2 10-58.3 0-33.5-3.2-54.2-9.6-62-6.4-7.8-23.2-11.8-50.4-11.8-27 0-43.8 3.9-50.3 11.7-6.5 7.8-9.8 27.9-9.8 60.3l0 9.9 0.2 13.3c0 18.7 4.2 31.5 12.6 38.4C467.8 151 483.5 154.5 506.6 154.5zM506.5 141c-22.3 0-35.3-2.5-39.1-7.4-3.8-5-5.7-22-5.7-51 0-29.1 1.9-46.1 5.7-51.1 3.8-5 16.8-7.4 39.1-7.4 22.4 0 35.4 2.5 39.2 7.4 3.8 5 5.7 22 5.7 51.1l0 9.2-0.1 13.3c0 15.6-2.6 25.4-7.8 29.6S525.9 141 506.5 141zM608.4 12.1 608.4 153l59.2 0 5.4 0c15.9 0 26.7-3.1 32.5-9.2 5.8-6.1 8.7-17.6 8.7-34.4 0-16.1-3-27.1-9-32.9-6-5.9-17.3-8.8-33.9-8.8l-6.2-0.1-40.7 0 0-55.5L608.4 12.1zM624.3 81.1l37.7 0c15.8 0 25.9 1.6 30.3 4.9 4.4 3.2 6.7 10.7 6.7 22.3 0 13.6-1.5 22.2-4.5 25.9-3 3.6-10.1 5.4-21.3 5.4l-6.1 0.1-42.7 0L624.4 81.1z" horiz-adv-x="1024" /> + + + <glyph glyph-name="friends" unicode="" d="M672.02974 765.933689c7.66047-32.266891 8.420787-62.237483 7.713682-95.365998-0.283456-12.778024-7.291057-71.832002-5.3918-89.926102 1.561565-14.936177 5.132904-16.128329 10.759041-28.436656 9.803273-21.422915 6.51846-50.970882 2.76088-72.566736-2.056845-11.816117-6.404873-28.64541-13.017478-38.287001-7.291057-10.645454-21.864984-10.711969-28.319999-23.12365-9.29469-17.848507-4.045129-42.930765-9.903557-62.21497-6.65763-21.883403-23.599488-23.420409-24.877597-52.040237 8.316409-1.243317 16.59598-2.479471 24.877597-3.722788 8.316409-18.498306 23.533996-55.70265 39.08518-66.900689 13.024641-3.728928 26.048259-7.448646 39.07904-11.156084 45.641503-19.593244 96.365768-43.032072 142.108578-63.215764 41.656749-18.381649 91.51325-24.937972 106.575294-70.629617 0-31.026644 2.795673-104.309694 2.025123-144.978952L58.155515-56.631556000000046c-0.757247 40.669258 2.029216 113.952308 2.029216 144.978952 15.065114 45.691645 64.928778 52.247968 106.578364 70.629617 45.74281 20.182668 96.467075 43.62252 142.098345 63.215764 13.027711 3.707438 26.054399 7.427156 39.08211 11.156084 15.554254 11.197016 30.78105 48.402383 39.09439 66.900689l18.492166 4.710278c-4.196579 24.429389-18.658965 26.322505-24.682146 43.62559-2.356674 26.013467-4.729721 52.052516-7.095605 78.079286 0.107447-1.234107-17.006326 3.246951-19.252483 4.716418-24.130583 15.838733-24.618701 80.075757-26.941606 106.793258-1.063215 12.222369 15.163351 22.240537 10.654664 44.62536-26.433022 131.125433 11.437493 219.776496 71.330582 240.123916 41.564651 17.633612 119.167077 50.323129 191.563944 3.716648l17.971303-17.428951 29.061896-5.237281C662.71663 795.172617 672.02974 765.933689 672.02974 765.933689z" horiz-adv-x="1024" /> + + + <glyph glyph-name="refresh-3" unicode="" d="M820.376904 697.14807C740.637816 774.519228 631.884926 822.157201 511.999488 822.157201c-244.621347 0-442.925808-198.305485-442.925808-442.926832 0-244.6193 198.304462-442.925808 442.925808-442.925808 206.075449 0 379.271046 140.739395 428.740738 331.337337L822.859445 267.64189899999997c-45.759183-127.45381-167.656441-218.623229-310.859957-218.623229-182.371584 0-330.210677 147.842163-330.210677 330.210677 0 182.371584 147.840116 330.2117 330.210677 330.2117 88.762603 0 169.32443-35.035958 228.655723-92.015693L557.051567 433.822732l280.641725 0 113.880677 0 3.351328 0L954.925297 831.695438 820.376904 697.14807z" horiz-adv-x="1024" /> + + + <glyph glyph-name="ok" unicode="" d="M960 640L915.2 684.8 371.2 172.79999999999995 108.8 454.4 64 409.6 358.4 83.20000000000005 364.8 89.60000000000002 371.2 83.20000000000005Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="layer" unicode="" d="M96.089 724.318l0-684.236 831.822 0L927.911 724.318 96.089 724.318zM884.178 84.457L140.464 84.457 140.464 489.559l743.714 0L884.178 84.457z" horiz-adv-x="1024" /> + + + <glyph glyph-name="face-smile-fine" unicode="" d="M511.558443 852.9315573333333c-246.787686 0-447.597201-200.783932-447.597201-447.598224 0-246.815315 200.783932-447.598224 447.597201-447.598224 246.841921 0 447.64939 200.782909 447.64939 447.598224C959.207833 652.1476253333334 758.400365 852.9315573333333 511.558443 852.9315573333333zM511.558443-4.962310666666667c-226.247884 0-410.295644 184.046736-410.295644 410.295644 0 226.249931 184.072319 410.296667 410.295644 410.296667 226.27449 0 410.346809-184.046736 410.346809-410.296667C921.905252 179.08442633333334 737.832933-4.962310666666667 511.558443-4.962310666666667zM724.38055 303.5726953333334c-9.698896 3.457752-20.366863-1.566682-23.848151-11.264555-28.500101-79.45461-104.372116-132.844587-188.82353-132.844587-84.798315 0-160.770614 53.689806-189.070146 133.590578-3.432169 9.723455-14.075577 14.772448-23.823592 11.364839-9.699919-3.432169-14.797008-14.100136-11.364839-23.823592 33.547047-94.77248 123.668601-158.434405 224.234017-158.434405 100.142791 0 190.140525 63.314001 223.935212 157.564595C739.125369 289.3978573333334 734.102982 300.0903843333334 724.38055 303.5726953333334zM302.49494 515.3479593333334c0-24.653493 19.98517-44.638663 44.638663-44.638663 24.653493 0 44.638663 19.98517 44.638663 44.638663s-19.98517 44.63764-44.638663 44.63764C322.48011 559.9855993333333 302.49494 540.0014523333333 302.49494 515.3479593333334L302.49494 515.3479593333334zM631.398856 515.3479593333334c0-24.653493 19.98517-44.638663 44.63764-44.638663 24.653493 0 44.63764 19.98517 44.63764 44.638663s-19.984147 44.63764-44.63764 44.63764C651.384026 559.9855993333333 631.398856 540.0014523333333 631.398856 515.3479593333334L631.398856 515.3479593333334z" horiz-adv-x="1024" /> + + + <glyph glyph-name="dollar" unicode="" d="M517.565-65.45399999999995c-244.263 0-442.299 198.014-442.299 442.299s198.014 442.299 442.299 442.299c244.263 0 442.299-198.014 442.299-442.299 0-244.263-198.014-442.299-442.299-442.299zM517.565 863.383c-268.751 0-486.564-217.834-486.564-486.564s217.834-486.564 486.564-486.564c268.751 0 486.564 217.834 486.564 486.564 0 268.751-217.834 486.564-486.564 486.564zM497.036 425.349c-18.443 6.957-33.605 16.314-45.238 27.617-11.581 11.306-20.059 23.465-25.468 36.742-5.423 13.177-8.178 26.235-8.178 39.172-0.004 18.194 2.564 34.357 7.846 48.514 5.327 14.231 13.748 25.85 25.468 35.02 11.581 9.167 26.798 15.204 45.482 18.295v-205.52zM534.455 356.13199999999995c16.937-6.756 32.277-14.997 46.035-24.855 13.748-9.678 24.613-21.601 32.929-35.57 8.204-13.909 12.436-30.734 12.622-50.307 0-14.231-1.859-27.907-5.785-40.833-3.858-12.866-9.542-24.531-17.271-34.804-7.691-10.211-17.271-18.443-28.678-24.613-11.328-6.318-24.613-9.678-39.76-10.341v221.377zM534.455 94.18299999999999c29.037 3.318 53.978 11.306 74.785 24.134 20.985 12.866 37.018 30.15 48.281 51.734 11.125 21.535 16.876 46.832 16.937 76.196 0 16.08-1.67 30.377-5.033 42.985-3.318 12.622-8.204 24.15-14.836 34.357-6.739 10.341-14.836 20.189-24.613 29.326-8.853 8.204-19.107 15.957-30.659 23.041-11.328 7.197-22.836 13.706-34.281 19.261-11.581 5.694-21.601 10.516-30.659 14.231v221.377c14.527-3.318 26.662-8.594 36.62-16.192 9.859-7.395 17.766-16.192 23.776-26.384 5.941-10.211 10.341-20.985 12.972-32.345 2.666-11.328 4.026-22.836 3.858-34.097h46.155c0.004 16.314-1.566 32.345-5.327 48.281-3.543 15.957-9.938 30.909-19.107 44.969-8.996 13.909-21.601 26.235-37.684 36.742-16.192 10.521-36.62 18.295-61.318 23.562v49.426h-37.441v-53.316c-23.465-2.624-42.985-8.178-58.595-16.314-15.633-8.204-28.279-18.194-37.684-29.562-9.441-11.328-16.523-23.302-21.226-35.317-4.59-12.062-7.846-23.302-9.316-33.326-1.566-10.211-2.256-18.194-2.115-24.029 0.004-21.601 3.452-40.612 9.863-57.238 6.479-16.523 15.58-30.909 27.178-43.441 11.659-12.436 25.361-23.562 40.833-33.204 15.633-9.678 32.649-18.443 51.098-26.235v-237.329c-18.194 1.984-33.326 7.197-45.094 15.633-11.97 8.369-21.074 19.107-27.714 31.902-6.739 12.972-11.011 27.178-13.363 42.701-2.256 15.58-3.034 31.313-2.115 47.367h-47.803c-1.183-23.776 0.397-46.035 5.033-66.676s12.357-39.03 23.376-55.019c10.892-16.08 25.361-29.037 43.142-39.03 17.847-9.863 39.472-16.08 64.586-18.295v-65.283h37.441v65.283z" horiz-adv-x="1024" /> + + + <glyph glyph-name="group" unicode="" d="M1383.17753-39.75895700000001L1380.048488-13.938771999999972 1373.005994 17.35852699999998 1362.834458 47.090445000000045 1348.751189 77.605053 1334.667921 101.07716700000003 1315.107539 123.76659099999995 1293.199086 141.76331100000004 1262.684478 158.97562200000004 1240.777745 169.147158 1211.828518 176.18965200000002 1182.87757 183.23042599999997 1157.840075 192.61927200000002 1126.544497 207.48523 1101.507002 219.22214799999995 1070.992393 233.30541600000004 1047.52028 246.607714 1047.52028 329.54366300000004 1057.690095 341.280581 1067.080661 356.92751 1074.121435 372.57615899999996 1079.598549 392.136541 1085.858352 415.610375 1088.204704 433.605376 1091.595216 432.822685 1098.37624 433.866846 1103.593603 438.040048 1109.330466 447.428894 1112.982449 458.3814 1115.06905 471.943448 1117.676871 496.459723 1118.719312 517.324016 1117.676871 535.059266 1114.024889 546.0134929999999 1106.722645 550.186695 1102.549442 549.142535 1106.201425 572.614649 1109.330466 600.782906 1110.374627 626.341621 1109.851687 646.684693 1106.722645 665.4623839999999 1100.984061 683.718855 1093.160597 700.409945 1082.20637 719.189356 1069.688483 734.838006 1055.082274 746.8346730000001 1036.304583 758.83134 1012.832469 769.785566 993.010617 775.00121 969.017283 779.174412 945.543448 779.695632 921.550114 775.52243 898.599221 767.698965 878.256148 759.35256 860.520898 747.877113 844.089558 733.2726250000001 828.440908 716.058594 814.35764 695.715522 804.186104 673.8087889999999 797.92802 648.771294 797.14533 616.691305 800.274372 586.959387 804.186104 548.621314 795.579949 548.621314 790.102836 541.57882 788.539175 529.060933 790.102836 499.329015 794.014568 464.902674 797.14533 447.688644 802.622443 438.299798 812.793979 432.822685 819.052063 433.605376 822.965515 406.221529 826.877248 389.790189 833.137051 371.79346899999996 841.743207 353.79846799999996 851.914743 339.7152 859.738207 329.54366300000004 858.955517 245.04233299999999 867.267518 242.13003600000002 878.734364 238.975192 891.063029 234.389141 902.817148 229.80137100000002 913.712888 225.78814699999998 923.459535 220.91310299999998 935.215374 216.03977999999995 948.116866 208.58615799999995 961.018358 201.13081599999998 971.625104 193.38992099999996 985.386695 183.06872699999997 997.142535 172.174708 1008.323827 158.41311700000006 1020.077947 143.21860000000004 1032.549389 125.72933699999999 1043.300632 105.086951 1052.476173 82.72436500000003 1060.502621 62.08197800000005 1066.093267 42.72974099999999 1069.963715 22.517404000000056 1073.834162-0.27523199999995995 1076.41446-26.93831499999999 1076.84451-45.000403000000006 1075.984411-61.12726799999996 1072.328988-73.59870999999998 1065.377664-87.28805299999999 1057.277248-96.391345 1042.440532-103.91721500000006 1351.099261-103.91721500000006 1365.182529-96.87472100000002 1376.136756-85.92221500000005 1383.17753-74.18529799999999 1384.742911-59.319339000000014ZM438.650719 816.389195L421.44873 797.467007 405.96694 775.104421 394.785647 751.021637 387.904851 723.498455 387.044752 688.234377 390.48515 655.550598 394.785647 613.4057250000001 385.324553 613.4057250000001 379.303857 605.6648299999999 377.583658 591.903239 379.303857 559.21946 383.604354 521.375084 387.044752 502.452896 393.065448 492.131703 404.246741 486.111007 411.127537 486.971106 415.428034 456.867625 419.728531 438.805537 426.609327 419.02325 436.070421 399.240962 447.251713 383.75917200000004 455.852708 372.57787900000005 454.992609 279.687139 440.370918 270.226045 405.96694 253.88415499999996 370.702863 238.40236500000003 342.319581 224.64077399999996 319.956995 215.17967999999996 295.014111 207.43878500000005 269.211128 202.278188 244.268244 196.25749199999996 218.46526 185.07619899999997 194.382475 173.034807 172.879989 157.55301699999995 148.797205 133.470232 131.595216 108.52734799999996 118.693724 84.44456400000001 108.372531 58.641579999999976 98.051337 29.398198999999977 92.89074 6.175514000000021 88.590243-13.606772999999976 86.009945-36.829458000000045 86.009945-57.47184500000003 89.450343-78.11423200000002 99.771536-91.87582299999997 115.253326-102.19701699999996 135.035613-103.91721500000006 995.995162-103.91721500000006 1011.476952-96.17632000000003 1023.518344-84.13492799999995 1031.259239-71.23343599999998 1032.979438-54.891546999999946 1031.259239-33.38906099999997 1027.818842-5.005778999999961 1020.077947 29.398198999999977 1008.896654 62.08197800000005 993.414864 95.625857 977.933074 121.42884000000004 956.430587 146.37172399999997 932.347803 166.15401199999997 898.803924 185.07619899999997 874.72114 196.25749199999996 842.89746 203.99838699999998 811.07378 211.739282 783.550598 222.060476 749.14662 238.40236500000003 721.623438 251.303857 688.079559 266.78564700000004 662.276576 281.407338 662.276576 372.57787900000005 673.457869 385.479371 683.779062 402.68136 691.519957 419.883349 697.540653 441.385835 704.421449 467.188819 707.001747 486.971106 710.729418 486.111007 718.18304 487.258379 723.916463 491.84443 730.224432 502.165623 734.237656 514.207015 736.532402 529.1159789999999 739.398253 556.066335 740.545626 579.001747 739.398253 598.496761 735.385029 610.538153 727.356861 615.1259239999999 722.77081 613.9785509999999 726.784034 639.7815350000001 730.224432 670.7451149999999 731.371805 698.842844 730.797258 721.205429 727.356861 741.847816 721.050611 761.915656 712.449617 780.265018 700.408225 800.907405 686.646634 818.109394 670.590297 831.2981589999999 649.94791 844.485204 624.144927 856.526596 602.356888 862.261739 575.979358 866.847789 550.176374 867.422336 523.800564 862.834565 498.570407 854.233571 476.207822 845.05975 456.712807 832.443811Z" horiz-adv-x="1449" /> + + + <glyph glyph-name="layim-download" unicode="" d="M186.888458 77.07363199999998l0 581.729108c14.85022-14.450107 35.050284-23.436782 57.359382-23.436782l560.03604 0 0-151.561881 25.029046 0 0 176.591951-585.065086 0c-31.191396 0-57.359382 26.166963-57.359382 57.359382 0 31.191396 26.165939 57.359382 57.359382 57.359382l572.551074 0L816.798914 800.143838 244.24784 800.143838c-45.431725 0-82.388429-36.957727-82.388429-82.388429l0-640.681778c0-41.796942 34.000372-75.789127 75.789127-75.789127l225.950102 0 0 25.029046L237.648538 26.31355099999996C209.661114 26.31355099999996 186.888458 49.078021000000035 186.888458 77.07363199999998zM236.947574 730.269421l560.38601 0 0-25.029046-560.38601 0 0 25.029046ZM686.086897 428.171012c-85.917812 0-164.908864-55.248302-194.553021-135.882783-30.013571-81.641415-4.269233-175.567621 62.624293-230.942813 67.00302-55.465243 164.474982-62.808488 238.931764-17.720593 74.094532 44.868907 113.272833 133.533272 96.080266 218.517829C869.882923 357.47283300000004 783.297916 428.171012 686.086897 428.171012zM686.086897 38.82858599999997c-75.595722 0-145.060817 48.634674-171.092703 119.595842-26.354228 71.839165-3.63069 154.438395 55.287187 203.074092 59.017138 48.718585 144.762011 55.029314 210.191186 15.237029 65.11195-39.59888 99.396801-117.681236 84.064604-192.408171C847.384513 100.72940100000005 771.387655 38.82858599999997 686.086897 38.82858599999997zM698.600909 152.23547199999996L698.600909 311.02496499999995 673.571862 311.02496499999995 673.571862 152.28459099999998 604.675726 221.17254100000002 586.978668 203.47548400000005 686.111456 104.35190499999999 785.185916 203.42738799999995 767.489882 221.123422Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="picture-fine" unicode="" d="M958.648085 84.30682933333333L65.772494 84.30682933333333 65.772494 721.9115253333333l892.87559 0L958.648085 84.30682933333333zM97.660762 116.20328333333339l829.099055 0L926.759817 690.0570263333334 97.660762 690.0570263333334 97.660762 116.20328333333339zM648.731616 419.05893933333334l-1.991354 0c-47.801702 0-86.696548 38.900985-86.696548 86.695524l0 1.978051c0 47.809889 38.894845 86.671988 86.696548 86.671988l1.991354 0c47.801702 0 86.698594-38.862099 86.698594-86.671988l0-1.978051C735.43021 457.95992433333333 696.533318 419.05893933333334 648.731616 419.05893933333334zM646.740262 562.5193053333333c-30.224372 0-54.810327-24.582885-54.810327-54.787814l0-1.978051c0-30.230512 24.584931-54.803163 54.810327-54.803163l1.991354 0c30.222325 0 54.810327 24.572652 54.810327 54.803163l0 1.978051c0 30.203906-24.586978 54.787814-54.810327 54.787814L646.740262 562.5193053333333zM91.097276 181.7900473333334l-22.748097 22.338774 274.373974 279.332916 22.750143-22.351054L91.097276 181.7900473333334zM604.886015 215.92242633333342L339.999113 480.74793033333333l22.548552 22.525016L627.433544 238.4638153333334 604.886015 215.92242633333342zM619.007641 202.70744933333333l-22.763446 22.337751 167.989015 171.035398 22.765493-22.350031L619.007641 202.70744933333333zM925.622924 222.7939273333334L758.534418 389.8343373333333l22.548552 22.529109 167.086459-167.044504L925.622924 222.7939273333334z" horiz-adv-x="1024" /> + + + <glyph glyph-name="link" unicode="" d="M262.4-121.60000000000002c-64 0-128 25.6-179.2 76.8-102.4 102.4-102.4 262.4 0 364.8l134.4 134.4 89.6-89.6-134.4-134.4c-51.2-51.2-51.2-128 0-179.2 51.2-51.2 128-51.2 179.2 0l179.2 179.2c25.6 25.6 38.4 57.6 38.4 89.6S556.8 384 537.6 409.6L467.2 473.6l89.6 89.6 70.4-70.4C672 448 697.6 384 697.6 313.6c0-70.4-25.6-134.4-76.8-179.2l-179.2-179.2C396.8-96 326.4-121.60000000000002 262.4-121.60000000000002zM467.2 204.79999999999995L396.8 268.79999999999995c-102.4 102.4-102.4 262.4 0 364.8l179.2 179.2c102.4 102.4 262.4 102.4 364.8 0 102.4-102.4 102.4-262.4 0-364.8l-134.4-134.4-89.6 89.6 134.4 134.4c51.2 51.2 51.2 128 0 179.2-51.2 51.2-134.4 51.2-179.2 0L486.4 544c-51.2-51.2-51.2-128 0-179.2l70.4-70.4L467.2 204.79999999999995z" horiz-adv-x="1024" /> + + + <glyph glyph-name="diamond" unicode="" d="M998.4 526.933333L797.866667 802.133333c-4.266667 6.4-12.8 10.666667-19.2 10.666667L243.2 812.8c0 0-14.933333-2.133333-23.466667-17.066667C194.133333 753.066667 32 512 32 512L21.333333 494.933333l12.8-14.933333L469.333333-27.733333000000016c4.266667-4.266667 6.4-6.4 10.666667-8.533333 6.4-4.266667 32-10.666667 46.933333 0 4.266667 2.133333 6.4 6.4 10.666667 8.533333l409.6 420.266667c10.666667 8.533333 10.666667 25.6 0 34.133333-8.533333 10.666667-23.466667 10.666667-32 0L561.066667 61.86666700000001l153.6 422.4 0 0 251.733333 0c2.133333 0 19.2 0 23.466667 4.266667l2.133333 2.133333C1004.8 497.066667 1006.933333 512 998.4 526.933333zM782.933333 763.733333l-96-226.133333L341.333333 537.6l-85.333333 226.133333L782.933333 763.733333zM221.866667 714.666667l72.533333-179.2-192 0L221.866667 714.666667zM91.733333 488.533333l215.466667 0 138.666667-416L91.733333 488.533333zM503.466667 44.799999999999955l-147.2 443.733333 307.2 0L503.466667 44.799999999999955zM736 535.4666669999999L810.666667 701.866667l119.466667-168.533333L736 533.333333z" horiz-adv-x="1024" /> + + + <glyph glyph-name="log" unicode="" d="M828.01742 700.357158C743.476979 784.899646 631.076002 831.458031 511.516999 831.458031c-119.55798 0-231.959979-46.558385-316.500421-131.09985C110.47716 615.81774 63.918775 503.41574 63.918775 383.85776c0-87.103824 25.045419-171.548074 72.429613-244.204861 9.393951-14.402011 28.685319-18.46249 43.087331-9.071609 14.404058 9.393951 18.46556 28.685319 9.072633 43.089377-40.768519 62.511729-62.317301 135.194098-62.317301 210.187093 0 212.469066 172.85586 385.326972 385.325949 385.326972s385.325949-172.857906 385.325949-385.326972-172.85586-385.326972-385.325949-385.326972c-70.357418 0-139.188062 19.131733-199.052498 55.323003-14.71412 8.900717-33.856086 4.180206-42.753733-10.534937-8.896624-14.71719-4.180206-33.856086 10.534937-42.753733 69.584821-42.070164 149.556201-64.307631 231.271294-64.307631 119.559003 0 231.959979 46.558385 316.500421 131.09985 84.539418 84.539418 131.097804 196.941418 131.097804 316.499397S912.556838 615.81774 828.01742 700.357158zM494.28964 690.216193c-21.782096 0-39.397289-17.658172-39.397289-39.439244l0-283.524378c0-1.360997 0.358157-2.706645 0.493234-4.03285 2.020006-19.886933 18.959817-34.573423 39.379892-34.573423l0 0 0.146333 0.832971 223.590358 0c21.782096 0 39.438221 17.616216 39.438221 39.397289s-17.658172 39.397289-39.439244 39.397289L533.686928 408.273846l0 242.503103C533.686928 672.5580219999999 516.071735 690.216193 494.28964 690.216193z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rate-solid" unicode="" d="M957.111079 492.519576c-3.927449 11.669784-14.447037 19.86442-26.723641 20.816095L647.68068 535.250796 540.183388 811.873997c-4.586458 11.803837-15.951297 19.579941-28.614711 19.579941s-24.02723-7.776104-28.614711-19.579941L375.458719 535.250796l-282.708803-21.915126c-12.276604-0.951675-22.796192-9.146311-26.723641-20.816095-3.927449-11.669784-0.50142-24.557302 8.701173-32.737612l217.547735-193.358823-67.980277-291.298436c-2.848884-12.20702 2.009773-24.919553 12.273535-32.114418 10.264784-7.195889 23.87271-7.42818 34.375925-0.586354l240.624313 156.709111 240.625336-156.709111c5.099135-3.320629 10.92891-4.974291 16.752546-4.974291 6.173606 0 12.342096 1.858324 17.623379 5.561669 10.263761 7.194866 15.122419 19.907399 12.273535 32.114418l-67.980277 291.299459L948.409906 459.781964C957.613522 467.962274 961.037505 480.849792 957.111079 492.519576z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-del" unicode="" d="M928 448l-143.616 0c-3.456 55.616-14.272 106.56-29.504 144.96C725.504 666.816 617.344 768 464.32 768L256 768l0-320L96 448C78.336 448 64 433.664 64 416S78.336 384 96 384L256 384l0-320 229.632 0c156.288 0 240.768 97.856 267.904 167.488C772.736 280.96000000000004 782.272 333.312 784.96 384L928 384C945.664 384 960 398.336 960 416S945.664 448 928 448zM349.376 711.488l63.936 0c35.712 0 251.84 27.968 266.944-263.488l-330.88 0L349.376 711.488zM439.296 120.51199999999994L349.376 120.51199999999994 349.376 382.528 349.376 384l330.88 0C665.344 113.98400000000004 467.968 120.51199999999994 439.296 120.51199999999994z" horiz-adv-x="1024" /> + + + <glyph glyph-name="unlink" unicode="" d="M150.336 767.6800000000001C133.44 762.304 124.16 744.3199999999999 129.472 727.488 131.2 722.1759999999999 134.208 717.44 138.304 713.664l122.624-122.432C270.208 576.192 289.92 571.52 304.96 580.736 320 590.0799999999999 324.672 609.7280000000001 315.456 624.832 312.832 629.056 309.184 632.64 304.96 635.264L182.336 757.696C175.168 765.44 164.672 769.216 154.304 767.6800000000001 152.96 767.808 151.552 767.808 150.336 767.6800000000001L150.336 767.6800000000001zM406.08 831.424c-13.696-4.48-22.72-17.6-22.016-32L384.064 672c0-17.664 14.336-32 32-32s31.872 14.336 31.872 32L447.936 799.424C448.256 817.088 434.304 831.6800000000001 416.64 832 414.464 832.064 412.16 831.808 410.048 831.424 408.704 831.552 407.296 831.552 406.08 831.424L406.08 831.424zM91.392 511.872C73.728 509.12 61.632 492.544 64.384 474.88 67.136 457.28 83.712 445.248 101.376 448L224 448C241.664 448 256 462.208 256 479.872s-14.336 32-32 32L101.376 511.872c-1.984 0.192-3.968 0.192-6.016 0C94.016 512 92.608 512 91.392 511.872L91.392 511.872zM795.456 320c-17.728-2.752-29.824-14.08-27.072-31.744 2.752-17.6 19.328-35.008 36.992-32.256L928 256c17.664 0 32 19.584 32 37.248S945.664 320 928 320l-122.624 0c-1.984 0.192-3.968 0.192-6.016 0-1.344 0.128-2.688 0.128-4.032 0L795.456 320zM598.272 127.42399999999998c-13.76-4.48-22.72-17.6-22.08-32L576.192-32c0-17.664 14.336-32 32-32S640-49.66399999999999 640-32l0 127.424c0.32 17.6-13.568 32.256-31.232 32.576-2.176 0.064-4.352-0.192-6.592-0.576-1.344 0.128-2.688 0.128-4.032 0L598.272 127.42399999999998zM726.272 191.67999999999995c-16.896-5.376-26.24-23.36-20.864-40.192 1.664-5.312 4.736-10.048 8.832-13.824l122.56-122.432c9.28-15.04 28.928-19.776 44.032-10.496 14.976 9.344 19.712 28.992 10.368 44.032-2.624 4.224-6.144 7.808-10.368 10.432l-122.56 122.432c-7.168 7.744-17.6 11.52-28.032 9.984-1.344 0.128-2.688 0.128-4.032 0L726.272 191.61599999999999zM339.968 28.03200000000004c-49.152 0-98.304 18.688-135.744 56.128-74.816 74.88-74.816 196.608 0 271.488l87.744 87.744c12.48 12.48 32.768 12.48 45.248 0s12.48-32.768 0-45.248L249.408 310.46400000000006c-49.92-49.856-49.92-131.136 0-180.992 49.856-49.856 131.136-49.856 180.992 0l87.744 87.744c12.48 12.48 32.768 12.48 45.248 0s12.48-32.768 0-45.248l-87.744-87.744C438.272 46.72000000000003 389.12 28.03200000000004 339.968 28.03200000000004zM702.144 323.712c-8.192 0-16.384 3.136-22.656 9.344-12.48 12.48-12.48 32.768 0 45.248l87.744 87.744c49.856 49.92 49.856 131.072 0 180.992-49.856 49.856-131.136 49.856-180.992 0L498.496 559.296c-12.48-12.48-32.768-12.48-45.248 0s-12.48 32.768 0 45.248l87.744 87.744c74.88 74.88 196.608 74.88 271.488 0 74.88-74.816 74.88-196.672 0-271.488l-87.744-87.744C718.528 326.784 710.336 323.712 702.144 323.712z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-clear" unicode="" d="M944.787709 197.20939699999997L857.081297 197.20939699999997 741.092979-127.73993700000005 815.146059-127.73993700000005 832.440281-65.58476199999996 966.82809-65.58476199999996 984.512408-127.73993700000005 1062.011328-127.73993700000005 944.787709 197.20939699999997 944.787709 197.20939699999997ZM848.04409 1.1865400000000363L898.951519 153.25866699999995 949.923963 1.1865400000000363 848.04409 1.1865400000000363 848.04409 1.1865400000000363ZM210.238376 489.910857L183.386821 513.121524 12.46009 313.522794C-5.874386 292.652698-3.728862 260.989968 17.271265 242.720508 38.401424 224.45104800000001 70.454249 226.66158700000005 88.853741 247.53168300000004L100.361551 260.599873C106.603075 267.55657099999996 117.200662 268.20673 124.287392 262.22527 131.309106 256.048762 132.024281 245.51619000000005 125.912789 238.55949199999998 107.448281 217.62438099999997 98.085995 173.08850800000005 119.216154 154.81904799999995 140.281297 136.614603 183.841932 151.76330199999995 202.371455 172.69841299999996 208.417932 179.525079 219.145551 180.30526999999995 226.167265 174.19377799999995 233.188979 168.14730199999997 233.904154 157.61473 227.792662 150.65803200000005 209.328154 129.85295199999996 199.965868 85.05701599999998 221.096027 66.91758700000003 242.16117 48.648127000000045 285.656789 63.86184100000003 304.186313 84.666921 310.362821 91.62361899999996 321.025424 92.40381000000002 327.982122 86.29231700000003 335.068852 80.18082500000003 335.784027 69.71326999999997 329.672535 62.75657100000001 311.143011 41.82146 301.845741-2.9094599999999673 322.910884-20.983873000000017 344.041043-39.253333 387.601678-24.039619000000016 406.00117-3.234540000000038 412.177678 3.7221590000000333 422.840281 4.437332999999967 429.927011-1.6091430000000173 436.948725-7.720635000000016 437.598884-18.31822199999999 431.487392-25.144889000000035 413.022884-46.08000000000004 403.725614-90.81092100000001 424.790757-109.01536499999997 445.920916-127.15479400000004 477.973741-125.00927000000001 496.373233-104.20419000000004L667.299963 95.52457100000004 658.652852 132.90869799999996 210.238376 489.910857 210.238376 489.910857ZM844.013106 329.516698L680.10809 471.12127 929.639011 715.190857C933.2799 718.376635 936.725741 721.562413 939.976535 725.203302 977.815773 768.048762 973.524725 833.129651 930.28917 870.513778 887.183646 907.702857 821.58263 903.281778 783.808408 860.631365L783.483328 860.761397 564.249805 571.3107299999999 399.824662 713.56546C385.391138 726.113524 363.480789 724.553143 350.867709 710.249651L248.14263 593.871238 225.322059 567.994921 251.393424 545.434413 695.7119 161.25561900000002 726.26936 136.679619 847.328916 281.014857C859.941995 295.318349 858.44663 316.96863499999995 844.013106 329.516698L844.013106 329.516698ZM817.941741 830.724063C839.136916 854.779937 876.000916 857.315556 900.186821 836.250413 924.372725 815.380317 926.908344 778.906413 905.648154 754.85054 884.452979 730.924698 847.588979 728.389079 823.403075 749.3892060000001 799.21717 770.324317 796.811582 806.798222 817.941741 830.724063L817.941741 830.724063ZM765.473932 758.491429C768.919773 741.522286 777.6319 725.593397 791.80536 713.305397 806.043836 701.017397 823.533106 694.580825 841.087392 693.540571L643.634186 494.526984 593.116852 538.2176509999999 765.473932 758.491429 765.473932 758.491429ZM776.006503 299.739429L709.755328 219.314794 307.502122 566.369524 376.809043 645.03873C382.920535 651.865397 393.38809 652.5155560000001 400.409805 646.534095L774.381106 323.01511100000005C781.337805 317.098667 782.117995 306.69612700000005 776.006503 299.739429L776.006503 299.739429Z" horiz-adv-x="1063" /> + + + <glyph glyph-name="triangle-r" unicode="" d="M293.291 728.256l426.88-355.456-426.88-355.52z" horiz-adv-x="1024" /> + + + <glyph glyph-name="circle" unicode="" d="M511.998 847.999C255.739 847.999 48 640.26 48 383.999c0-256.258 207.739-463.998 463.998-463.998C768.261-79.99900000000002 976 127.74199999999996 976 383.999 976 640.26 768.261 847.999 511.998 847.999zM512.002-16.000999999999976c-220.915 0-400.002 179.088-400.002 400 0 220.917 179.086 400 400.002 400 220.912 0 399.998-179.083 399.998-400C912 163.087 732.914-16.000999999999976 512.002-16.000999999999976z" horiz-adv-x="1024" /> + + + <glyph glyph-name="radio" unicode="" d="M512.5 383.5m-192 0a192 192 0 1 1 384 0 192 192 0 1 1-384 0ZM511.998 847.999C255.739 847.999 48 640.26 48 383.999c0-256.258 207.739-463.998 463.998-463.998C768.261-79.99900000000002 976 127.74199999999996 976 383.999 976 640.26 768.261 847.999 511.998 847.999zM512.002-16.000999999999976c-220.915 0-400.002 179.088-400.002 400 0 220.917 179.086 400 400.002 400 220.912 0 399.998-179.083 399.998-400C912 163.087 732.914-16.000999999999976 512.002-16.000999999999976z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-center" unicode="" d="M992 448L32 448C14.32 448 0 462.336 0 480 0 497.664 14.32 512 32 512L992 512C1009.68 512 1024 497.664 1024 480 1024 462.336 1009.68 448 992 448ZM800 704C817.664 704 832 689.664 832 672 832 654.336 817.664 640 800 640L224 640C206.32 640 192 654.336 192 672 192 689.664 206.32 704 224 704L800 704ZM992 832L32 832C14.32 832 0 846.336 0 864 0 881.664 14.32 896 32 896L992 896C1009.68 896 1024 881.664 1024 864 1024 846.336 1009.68 832 992 832ZM224 256C206.32 256 192 270.336 192 288 192 305.664 206.32 320 224 320L800 320C817.664 320 832 305.664 832 288 832 270.336 817.664 256 800 256L224 256ZM32 128L992 128C1009.68 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.68 64 992 64L32 64C14.32 64 0 78.33600000000001 0 96 0 113.66399999999999 14.32 128 32 128ZM224-64L800-64C817.664-64 832-78.33600000000001 832-96 832-113.66399999999999 817.664-128 800-128L224-128C206.32-128 192-113.66399999999999 192-96 192-78.33600000000001 206.32-64 224-64Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-right" unicode="" d="M992 64L32 64C14.32 64 0 78.33600000000001 0 96 0 113.66399999999999 14.32 128 32 128L992 128C1009.68 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.68 64 992 64ZM992 256L288 256C270.32 256 256 270.336 256 288 256 305.664 270.32 320 288 320L992 320C1009.68 320 1024 305.664 1024 288 1024 270.336 1009.68 256 992 256ZM992 448L32 448C14.32 448 0 462.336 0 480 0 497.664 14.32 512 32 512L992 512C1009.68 512 1024 497.664 1024 480 1024 462.336 1009.68 448 992 448ZM992 640L288 640C270.32 640 256 654.336 256 672 256 689.664 270.32 704 288 704L992 704C1009.68 704 1024 689.664 1024 672 1024 654.336 1009.68 640 992 640ZM992 832L32 832C14.32 832 0 846.336 0 864 0 881.664 14.32 896 32 896L992 896C1009.68 896 1024 881.664 1024 864 1024 846.336 1009.68 832 992 832ZM288-64L992-64C1009.68-64 1024-78.33600000000001 1024-96 1024-113.66399999999999 1009.68-128 992-128L288-128C270.32-128 256-113.66399999999999 256-96 256-78.33600000000001 270.32-64 288-64Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="align-left" unicode="" d="M992 448L32 448C14.336 448 0 462.336 0 480 0 497.664 14.336 512 32 512L992 512C1009.664 512 1024 497.664 1024 480 1024 462.336 1009.664 448 992 448ZM32 704L736 704C753.68 704 768 689.664 768 672 768 654.336 753.68 640 736 640L32 640C14.336 640 0 654.336 0 672 0 689.664 14.336 704 32 704ZM992 832L32 832C14.336 832 0 846.336 0 864 0 881.664 14.336 896 32 896L992 896C1009.664 896 1024 881.664 1024 864 1024 846.336 1009.664 832 992 832ZM32 320L736 320C753.68 320 768 305.664 768 288 768 270.336 753.68 256 736 256L32 256C14.336 256 0 270.336 0 288 0 305.664 14.336 320 32 320ZM32 128L992 128C1009.664 128 1024 113.66399999999999 1024 96 1024 78.33600000000001 1009.664 64 992 64L32 64C14.336 64 0 78.33600000000001 0 96 0 113.66399999999999 14.336 128 32 128ZM32-64L736-64C753.68-64 768-78.33600000000001 768-96 768-113.66399999999999 753.68-128 736-128L32-128C14.336-128 0-113.66399999999999 0-96 0-78.33600000000001 14.336-64 32-64Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="loading-1" unicode="" d="M537.574469 831.696462c-14.123672 0-25.574469-11.447726-25.574469-25.574469 0-14.123672 11.450796-25.574469 25.574469-25.574469 204.495464 0 370.82877-166.358889 370.82877-370.82877 0-14.123672 11.450796-25.574469 25.574469-25.574469 14.123672 0 25.574469 11.450796 25.574469 25.574469C959.551152 642.385838 770.241552 831.696462 537.574469 831.696462z" horiz-adv-x="1024" /> + + + <glyph glyph-name="return" unicode="" d="M927.858848 417.938973L168.863431 417.938973l308.721247 308.86758c11.685133 11.69025 11.435447 30.881334-0.557702 42.868343-11.992125 11.985986-31.18321 12.226462-42.868343 0.536212L75.199191 411.071565c-1.994424-1.662873-3.773953-3.583618-5.294586-5.713119-4.047176-5.373381-6.013971-11.839653-5.9055-18.328437-0.12996-7.794523 2.725064-15.561417 8.595772-21.432125l361.565802-361.744881c11.685133-11.691273 30.876218-11.449773 42.868343 0.535189 11.993149 11.985986 12.242835 31.17707 0.557702 42.868343L168.441828 356.54571799999997l759.417019 0c16.527418 0 29.925566 13.738909 29.925566 30.694069S944.386266 417.938973 927.858848 417.938973z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-strong" unicode="" d="M199.092919 848.487893l355.326704 0c70.335928 0 122.780371-2.942005 157.349701-8.809643 34.568307-5.884011 65.491597-18.131963 92.78522-36.759205 27.27725-18.627243 50.01409-43.427068 68.209498-74.397431 18.195408-30.986735 27.293623-65.699328 27.293623-104.169501 0-41.7161-11.17655-79.977519-33.496905-114.802676s-52.604078-60.951187-90.818425-78.362742c54.075593-15.765055 95.647407-42.626843 124.715443-80.585363s43.602054-82.58388 43.602054-133.877103c0-40.388872-9.417487-79.673597-28.220738-117.839849-18.803251-38.182624-44.482097-68.673056-77.035514-91.489714-32.55444-22.833031-72.702835-36.855396-120.414487-42.09984-29.931706-3.229554-102.122889-5.260817-216.572524-6.060019L199.092919-40.765192999999954 199.092919 848.487893zM378.171504 700.1084940000001l0-205.684546 117.64849 0c69.935816 0 113.410979 1.006933 130.390699 3.038196 30.730908 3.629667 54.891168 14.246469 72.478731 31.850405 17.588587 17.588587 26.381857 40.756239 26.381857 69.473281 0 27.501354-7.594979 49.838082-22.75219 67.042929-15.158235 17.188474-37.702694 27.597545-67.618027 31.242562-17.796318 2.01489-68.945255 3.038196-153.431461 3.038196L378.171504 700.109518zM378.171504 346.04454999999996l0-236.383732 166.622902 0c64.85203 0 106.008382 1.807159 123.43631 5.420453 26.750247 4.828982 48.543599 16.58063 65.363683 35.272341s25.247011 43.714617 25.247011 75.085092c0 26.526143-6.491855 49.03888-19.459191 67.538209-12.983709 18.48398-31.722492 31.961946-56.250118 40.404222s-77.739549 12.663414-159.619394 12.663414L378.171504 346.04454999999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="upload" unicode="" d="M831.488 478.208C831.488 478.208 831.488 478.208 831.488 478.208c0 143.36-114.688 258.048-253.952 258.048-98.304 0-184.32-57.344-225.28-139.264C327.68 605.184 307.2 609.28 286.72 609.28c-90.112 0-159.744-73.728-159.744-159.744 0-16.384 4.096-28.672 8.192-40.96C57.344 379.904 0 310.27200000000005 0 224.25599999999997c0-106.496 86.016-192.512 192.512-192.512l192.512 0 0 192.512L258.048 224.25599999999997l258.048 258.048 258.048-258.048-126.976 0 0-192.512 192.512 0L839.68 35.84000000000003c106.496 16.384 192.512 110.592 192.512 221.184C1024 371.712 937.984 465.92 831.488 478.208z" horiz-adv-x="1033" /> + + + <glyph glyph-name="dialogue" unicode="" d="M998.4 500.992C998.4 682.24 811.392 829.696 581.632 829.696c-121.216 0-235.904-41.472-315.264-114.048 37.504 8.192 76.416 13.056 115.456 14.464 59.264 30.592 128.256 46.72 199.808 46.72 198.144 0 359.296-123.776 359.296-275.968 0-31.872-7.04-63.232-20.992-93.056 7.552-28.16 11.264-57.344 11.008-86.528C975.104 374.784 998.4 436.736 998.4 500.992L998.4 500.992zM442.368 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328S473.088 398.72 442.368 398.72zM243.328 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328C299.264 375.67999999999995 274.176 398.72 243.328 398.72zM641.28 398.72c-30.72 0-55.808-23.04-55.808-51.328s25.088-51.328 55.808-51.328 55.808 23.04 55.808 51.328S672.128 398.72 641.28 398.72zM442.368 677.888C212.608 677.888 25.6 530.432 25.6 349.312c0-179.968 173.696-296.192 332.544-321.664l60.8-78.336c5.632-7.424 14.464-11.008 23.296-11.008 8.832 0 17.792 3.712 23.424 11.008l60.8 78.464C685.312 53.24800000000005 859.008 169.47199999999998 859.008 349.44000000000005 859.136 530.432 672.128 677.888 442.368 677.888zM714.88 173.82399999999996c-52.224-45.184-124.288-77.952-197.376-89.6C503.168 81.91999999999996 490.112 74.24000000000001 481.28 62.72000000000003l-38.784-49.92-38.912 49.92c-8.96 11.52-21.888 19.2-36.224 21.504-73.216 11.776-145.152 44.416-197.376 89.728-39.68 34.304-86.912 92.544-86.912 175.36 0 69.76 35.584 136.192 100.352 187.264 68.736 54.144 160.768 84.096 258.944 84.096 98.304 0 190.336-29.824 259.072-84.096 64.768-51.072 100.352-117.504 100.352-187.264C801.664 266.36800000000005 754.56 208.12800000000004 714.88 173.82399999999996z" horiz-adv-x="1024" /> + + + <glyph glyph-name="video" unicode="" d="M952.523633 599.2477269999999L952.523633 599.2477269999999 952.523633 599.2477269999999zM100.53762400000005 661.054062C100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062 100.53762400000005 661.054062zM100.74228 720.404517L100.74228 720.404517 100.74228 720.404517zM660.990107 739.9449716666666c8.697911 0 17.498151-0.511642 25.684421-2.353553 12.279404-2.865194 23.22854-8.18627 34.382332-16.679524 15.144599-11.460777 26.196063-29.572899 32.02878-52.187469 3.479165-13.405016 2.967523-28.651944 2.558209-42.05696-0.102328-4.195463-0.204657-8.083941-0.204657-11.665434l0-37.759169 101.407415 70.401919 25.479764 17.60048c0.511642 0.306985 1.330269 1.023284 2.148896 1.637254 4.40012 3.376836 11.051464 8.595583 20.977316 11.051464 3.274508 0.818627 6.549016 1.22794 10.02818 1.22794 9.618867 0 19.44239-3.274508 27.730987999999996-9.311882 18.82842-13.916657999999998 18.726092-35.405616 18.726092-51.061857 0-1.023284 0-2.148896 0-3.172179l0-409.620466c0-15.963226 0.102328-37.963825-19.647047-51.982812-6.753672-4.809433-16.679524-8.390926-27.219346-8.390926-5.01409 0-10.130509 0.818627-15.144599 2.762866-7.162986 2.762866-12.279404 6.856000999999999-16.065554 9.823524-0.920955 0.716299-1.841911 1.432597-2.353553 1.841911l-24.968122 17.395823-101.10043 70.094934 0-37.963825c0-3.581493 0.102328-7.367643 0.204657-11.460777 0.409313-14.735285 0.818627-29.982212-2.865194-43.796542-5.62806-21.488957999999997-16.679524-39.396423-31.107825-50.447886-7.879285-6.037374-18.930748-13.405016-34.075347-16.986509-7.776956-1.841911-16.167882-2.353553-24.45648-2.353553-4.297792 0-8.595583 0.102328-12.688718 0.204657-3.683821 0.102328-7.162986 0.204657-10.232837 0.204657L167.15339300000005 84.94107466666674c-1.944239 0-3.888478 0-5.832717 0-1.944239 0-3.990806 0-5.935045 0-16.577196 0-33.461377 0.61397-47.787349 6.549016-27.935644999999997 11.563106-46.764065 37.759169-53.006096 73.574098l-0.409313 2.251224 0 2.353553c-0.102328 18.930748-0.204657 37.861497-0.306985 56.792245l0 0.511642L53.87588699999998 598.0155226666666c0 4.40012-0.102328 8.902568-0.102328 13.712001999999998-0.306985 27.01469-0.716299 54.950335 9.311882 76.643949 9.823524 21.284300999999996 27.526331999999996 38.066154 48.708304 45.945438 5.730389 2.148896 11.051464 2.762866 15.04227 3.172179 1.023284 0.102328 2.353553 0.306985 3.069851 0.409313l4.093135 1.534926 500.9997 0c3.581493 0 7.572299 0.102328 11.767763 0.306985C651.166583 739.7403146666667 656.078345 739.9449716666666 660.990107 739.9449716666666M304.273409 266.7785886666668L559.889677 394.2797376666667l0 33.973019L304.273409 555.9585626666667 304.273409 266.7785886666668M660.990107 780.8763196666666c-5.62806 0-10.949136-0.204657-15.758569-0.306985-3.888478-0.102328-7.469971-0.204657-10.437494-0.204657L133.79434400000002 780.3646776666667l-7.265314 0-6.446687-2.353553c-5.3210749999999996-0.61397-13.609673-1.841911-22.716898-5.218747-31.210153-11.665434-57.303887-36.121915-71.629859-67.229739-13.814329999999998-30.084541-13.405016-64.159888-12.995703-94.244429 0.102328-4.604777 0.102328-9.004897 0.102328-13.20036l0-371.349655 0-0.102328 0-0.102328 0-0.511642c0.102328-18.930748 0.204657-37.861497 0.306985-56.792245l0-2.251224 0-3.479165 0.61397-3.376836 0.409313-2.251224c4.195463-23.944839 12.791046-45.126811 25.479764-62.727291 13.609673-18.82842 31.107825-32.847407 52.08514-41.545318 21.488957999999997-8.902568 44.001199-9.618867 63.443589-9.618867 2.046567 0 4.093135 0 6.139702 0 1.841911 0 3.78615 0 5.62806 0l473.166384 0c2.558209 0 5.62806-0.102328 9.004897-0.204657 4.195463-0.102328 8.902568-0.306985 13.916657999999998-0.306985 13.302688 0 24.149495 1.125612 33.973019 3.479165 22.819227 5.423404 39.089437 16.474868 49.322274 24.251824 21.693613999999997 16.577196 37.963825 42.363944999999994 45.84311 72.653143 2.251224 8.595583 3.376836 17.088838 3.990806 25.377436l36.838213-25.582093 24.558809-17.088838c0.306985-0.204657 0.61397-0.511642 0.920955-0.716299 4.809433-3.683821 13.609673-10.642149999999999 26.400719-15.656241 9.516538-3.683821 19.647047-5.62806 30.084541-5.62806 18.009793 0 36.53122799999999 5.832717 50.8572 15.963226 16.577196 11.767763 27.730987999999996 27.935644999999997 33.052064 48.094334 3.78615 14.4283 3.78615 27.628659999999996 3.78615 37.34985499999999l0 409.518137c0 0.920955 0 1.739582 0 2.660538l0 0.409313c0 9.41421 0.102328 22.409913-3.479165 36.53122799999999-5.116419 19.749375-15.758569 35.81493-31.721795 47.68502-15.144599 11.153792-33.666034 17.293495-52.08514 17.293495-6.753672 0-13.507345-0.818627-19.954032-2.455881-18.21445-4.604777-30.289198-13.916657999999998-36.019586-18.419107l0 0c-0.204657-0.204657-0.511642-0.409313-0.716299-0.511642l-25.172779-17.293495-0.102328 0-0.102328 0-37.14519799999999-25.786749c-0.511642 7.674628-1.637254 15.553912-3.683821 23.433197-8.18627 31.721795-24.354152 57.508544-46.866394 74.597382-15.758569 11.972419-32.02878 19.851704-49.833916 23.944839C685.8559009999999 779.7507076666667 674.702109 780.8763196666666 660.990107 780.8763196666666L660.990107 780.8763196666666zM345.204757 332.9850436666668L345.204757 489.75210666666663l157.074048-78.48586L345.204757 332.9850436666668 345.204757 332.9850436666668zM347.455981 429.177975L347.455981 308.02118499999995 347.455981 429.177975Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="headset" unicode="" d="M356.285031 2.1522690000000466L356.396571 2.1522690000000466 356.396571 285.236626 253.462201 285.236626 253.462201 2.1522690000000466ZM665.076886 285.236626l103.042841 0 0-283.08538-103.042841 0 0 283.08538ZM63.809793 301.950286c0-38.758746-3.195785-112.220874 5.457292-148.208507l65.735144 0c-10.112312 35.644825-7.747451 109.176538-7.747451 148.208507 0 219.937155 172.264389 398.231887 384.763131 398.231887 212.498742 0 384.763131-178.294732 384.763131-398.231887 0-39.031968 2.266623-112.563682-7.845689-148.208507l65.735144 0c8.653077 35.987632 5.555529 109.449761 5.555529 148.208507 0 256.20415-200.670346 463.898469-448.208115 463.898469C264.479115 765.848755 63.809793 558.1544349999999 63.809793 301.950286z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cellphone-fine" unicode="" d="M731.514252 896L292.485748 896C195.323702 896 116.154627 816.830925 116.154627 719.6688790000001l0-671.337759c0-97.162046 79.169075-176.331121 176.331121-176.331121l438.628661 0c97.162046 0 176.331121 79.169075 176.331121 176.331121L907.445529 719.6688790000001C907.845373 816.830925 828.676298 896 731.514252 896zM292.485748 853.216712l438.628661 0c70.772355 0 128.349863-55.178446 133.147989-124.751269L159.737602 728.465443C164.135884 798.038266 222.113237 853.216712 292.485748 853.216712zM865.062085 48.73096399999997c0-73.571261-59.976572-133.547833-133.547833-133.547833L292.485748-84.816868c-73.571261 0-133.547833 59.976572-133.547833 133.547833l0 45.582194 705.724326 0L864.662241 48.73096399999997zM865.062085 137.096447L158.937915 137.096447 158.937915 685.682155l705.724326 0L864.662241 137.096447zM512-54.82858299999998c13.59469 0 26.789535 5.597813 36.385787 15.194065 9.596251 9.596251 15.194065 22.791097 15.194065 36.385787 0 13.59469-5.597813 26.789535-15.194065 36.385787-9.596251 9.596251-22.791097 15.194065-36.385787 15.194065-13.59469 0-26.789535-5.597813-36.385787-15.194065-9.596251-9.596251-15.194065-22.791097-15.194065-36.385787 0-13.59469 5.597813-26.789535 15.194065-36.385787C485.210465-49.23076900000001 498.40531-54.82858299999998 512-54.82858299999998z" horiz-adv-x="1024" /> + + + <glyph glyph-name="add-1" unicode="" d="M566.935 57.63900000000001c0-30.366-24.612-54.972-54.935-54.972v0c-30.384 0-54.996 24.612-54.996 54.972v610.057c0 30.361 24.612 54.972 54.996 54.972v0c30.33 0 54.935-24.612 54.935-54.972v-610.057zM817.004 417.633c30.384 0 54.996-24.606 54.996-54.966v0c0-30.354-24.612-54.966-54.996-54.966h-610.062c-30.33 0-54.942 24.612-54.942 54.966v0c0 30.359 24.612 54.966 54.942 54.966h610.062zM817.004 417.633z" horiz-adv-x="1024" /> + + + <glyph glyph-name="face-smile-b" unicode="" d="M511.931733-128c-136.738133 0-265.284267 53.213867-361.984 149.879467C53.282133 118.51093300000002 0 247.09119999999996 0 384c0 136.738133 53.282133 265.3184 150.050133 362.0864C246.749867 842.683733 375.296 896 512.136533 896s265.4208-53.316267 362.1888-149.9136c199.645867-199.714133 199.543467-524.5952 0-724.206933C777.454933-74.71786699999996 648.772267-128 511.931733-128L511.931733-128 511.931733-128 511.931733-128 511.931733-128 511.931733-128zM512.034133 829.303467c-118.920533 0-230.741333-46.2848-314.914133-130.389333C113.083733 614.8778669999999 66.7648 502.8864 66.7648 384c0-118.9888 46.2848-230.912 130.3552-315.016533 84.0704-84.0704 195.857067-130.321067 314.811733-130.321067 119.022933 0 230.946133 46.318933 315.016533 130.423467 173.704533 173.636267 173.704533 456.157867 0 629.794133C742.877867 782.984533 631.057067 829.303467 512.034133 829.303467L512.034133 829.303467 512.034133 829.303467 512.034133 829.303467 512.034133 829.303467 512.034133 829.303467zM330.103467 244.25813300000004c0 0 59.904-95.9488 181.828267-95.9488s201.8304 95.9488 201.8304 95.9488 45.294933 0.136533 45.192533-47.957333c0 0-78.506667-111.8208-247.022933-111.8208s-223.368533 111.8208-223.368533 111.8208S286.856533 244.25813300000004 330.103467 244.25813300000004L330.103467 244.25813300000004 330.103467 244.25813300000004 330.103467 244.25813300000004 330.103467 244.25813300000004zM363.2128 548.590933c-34.5088 0-62.702933-28.091733-62.702933-62.737067 0-34.679467 28.194133-62.6688 62.702933-62.6688 34.679467 0 62.702933 28.091733 62.702933 62.6688C425.915733 520.4992 397.858133 548.590933 363.2128 548.590933L363.2128 548.590933 363.2128 548.590933 363.2128 548.590933 363.2128 548.590933 363.2128 548.590933zM684.544 548.590933c-34.679467 0-62.702933-28.091733-62.702933-62.737067 0-34.679467 28.023467-62.6688 62.702933-62.6688 34.6112 0 62.600533 28.091733 62.600533 62.6688C747.144533 520.4992 719.121067 548.590933 684.544 548.590933L684.544 548.590933 684.544 548.590933 684.544 548.590933 684.544 548.590933 684.544 548.590933zM684.544 548.590933" horiz-adv-x="1025" /> + + + <glyph glyph-name="fonts-html" unicode="" d="M194.33 416.235h-101.295v101.28h-46.035v-267.03h46.035v119.7h101.28v-119.7h46.035v267.03h-46.035v-101.28zM277.205 480.69h73.665v-230.205h46.035v230.205h73.665v36.825h-193.365v-36.825zM627.815 335.58000000000004l-46.755 181.935h-73.665v-267.03h46.035v211.785l46.035-211.785h55.245l46.83 213.93-0.795-213.93h46.035v267.03h-73.665l-45.3-181.935zM848.09 287.30999999999995v230.205h-46.035v-267.03h174.945v36.825h-128.91z" horiz-adv-x="1024" /> + + + <glyph glyph-name="screen-full" unicode="" d="M641.750109 511.899972l205.227128 204.519-0.704035-115.89966c-0.282433-9.611915 7.489578-18.09103 17.101493-17.808598l12.297071 0c9.611915 0.283456 17.667382 5.936199 17.808598 15.689331l0.565888 172.57752c0 0.14224 0.282433 9.187243 0.282433 9.187243 0.14224 4.804423-0.99056 9.187243-4.100388 12.297071-3.109828 3.109828-7.347339 5.086855-12.297071 4.946662l-8.763594-0.14224c-0.141216 0-0.278339 0-0.420579-0.14224L697.581696 797.833213c-9.611915-0.283456-17.667382-8.200776-17.808598-17.950837l0-12.297071c1.416256-11.44875 10.458189-18.092054 20.070104-17.808598l112.789832-0.283456-204.66124-203.814965c-9.329483-9.329483-9.329483-24.449855 0-33.778314 9.329483-9.470699 24.452925-9.470699 33.782408 0L641.750109 511.899972zM383.095141 319.11010699999997L177.726797 115.29411900000002l0.707105 115.338888c0.283456 9.607822-7.492648 18.086937-17.104563 17.808598l-13.001105 0c-9.611915-0.283456-17.667382-5.937223-17.808598-15.690354l-0.565888-172.718737c0-0.14224-0.282433-9.187243-0.282433-9.187243-0.14224-4.808516 0.99056-9.187243 4.096295-12.297071 3.109828-3.109828 7.351432-5.086855 12.297071-4.946662l8.762571 0.14224c0.14224 0 0.283456 0 0.425695 0.14224l171.873486-0.708128c9.607822 0.283456 17.667382 8.196683 17.808598 17.950837L344.93503 63.42477399999996c-1.415232 11.44875-10.461259 18.092054-20.074198 17.808598L212.069977 81.51682800000003 416.59 285.32872299999997c9.329483 9.329483 9.329483 24.453948 0 33.782408C407.40685 328.58182999999997 392.424624 328.58182999999997 383.095141 319.11010699999997L383.095141 319.11010699999997zM894.047276 60.03251399999999l-0.424672 172.718737c-0.283456 9.612938-8.200776 15.406898-17.809621 15.690354l-12.296047 0c-9.612938 0.278339-17.243733-8.200776-17.105586-17.808598l0.708128-115.903753L641.750109 319.11010699999997c-9.329483 9.329483-24.452925 9.329483-33.782408 0-9.325389-9.328459-9.325389-24.452925 0-33.782408L812.490795 81.51682800000003l-112.789832-0.283456c-9.611915 0.283456-18.515702-6.502088-20.073174-17.808598l0-12.297071c0.282433-9.611915 8.200776-17.667382 17.808598-17.950837l171.166381 0.708128c0.141216 0 0.282433-0.14224 0.424672-0.14224l8.763594-0.14224c4.803399-0.141216 9.187243 1.694595 12.296047 4.946662 3.109828 3.109828 4.238534 7.488555 4.097318 12.297071 0 0-0.14224 9.046027-0.14224 9.187243L894.047276 60.03149099999996zM212.216309 749.493252l112.789832 0.283456c9.607822-0.283456 18.512632 6.502088 20.070104 17.808598L345.076246 779.883399c-0.283456 9.611915-8.196683 17.667382-17.808598 17.950837l-172.011632-0.708128c-0.14224 0-0.283456 0.14224-0.425695 0.14224l-8.761548 0.14224c-4.808516 0.141216-9.187243-1.694595-12.297071-4.946662-3.109828-3.109828-4.242627-7.488555-4.096295-12.297071 0 0 0.282433-9.046027 0.282433-9.187243l0.420579-172.718737c0.14224-9.608845 8.200776-15.406898 17.808598-15.686261l13.005198 0c9.611915-0.282433 17.242709 8.196683 17.10047 17.808598l-0.564865 115.334795 205.231221-203.958228c9.324366-9.329483 24.448832-9.329483 33.777291 0 9.329483 9.329483 9.329483 24.452925 0 33.782408L212.216309 749.493252 212.216309 749.493252zM212.216309 749.493252" horiz-adv-x="1024" /> + + + <glyph glyph-name="form" unicode="" d="M314.278111 437.019389l395.439892 0 0-30.297458-395.439892 0L314.278111 437.019389zM314.278111 315.83495200000004l395.439892 0 0-30.297458-395.439892 0L314.278111 315.83495200000004zM314.278111 194.62833l263.626661 0 0-30.297458L314.278111 164.330872 314.278111 194.62833zM609.376235 739.9931730000001c-7.849678 42.966669-48.394988 75.742447-97.378777 75.742447-48.961604 0-89.51311-32.775778-97.380776-75.742447L116.55177 739.9931730000001l0-787.725922 790.893774 0 0 787.725922L609.376235 739.9931730000001zM446.091342 670.440529l0 17.613058 0 36.791056c0 33.410348 29.57295 60.594317 65.906116 60.594317 36.352353 0 65.907115-27.183969 65.907115-60.594317l0-36.791056 0-17.621053 16.672696-8.712493c32.358061-16.929922 57.169039-42.663874 71.406386-73.213161L358.043239 588.50688c14.240345 30.555683 39.051523 56.281241 71.408385 73.213161L446.091342 670.440529zM874.489888-17.436289999999985L149.505227-17.436289999999985 149.505227 709.694715 413.138884 709.694715l0-21.641327c-51.44492-26.923746-88.727643-74.124144-98.86377-129.845165l395.44289 0c-10.102151 55.730615-47.40466 102.921419-98.859773 129.845165l0 21.641327 263.631658 0L874.489888-17.436289999999985z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cart" unicode="" d="M365.920994 84.618469c-39.030945 0-70.78516-31.754215-70.78516-70.78516s31.754215-70.784136 70.78516-70.784136c39.030945 0 70.784136 31.753191 70.784136 70.784136S404.951939 84.618469 365.920994 84.618469zM365.920994-5.784493999999995c-10.818393 0-19.61985 8.801457-19.61985 19.618826 0 10.818393 8.801457 19.61985 19.61985 19.61985s19.618826-8.801457 19.618826-19.61985C385.540843 3.015939000000003 376.739387-5.784493999999995 365.920994-5.784493999999995zM808.821219 84.618469c-39.030945 0-70.784136-31.754215-70.784136-70.78516s31.753191-70.784136 70.784136-70.784136 70.78516 31.753191 70.78516 70.784136S847.852164 84.618469 808.821219 84.618469zM808.821219-5.784493999999995c-10.81737 0-19.618826 8.801457-19.618826 19.618826 0 10.818393 8.801457 19.61985 19.618826 19.61985 10.818393 0 19.61985-8.801457 19.61985-19.61985C828.441069 3.015939000000003 819.640636-5.784493999999995 808.821219-5.784493999999995zM443.99107 305.940157c-14.057157-1.416256-24.305569-13.959943-22.890336-28.0171 1.328251-13.187347 12.446473-23.02132 25.423019-23.02132 0.856507 0 1.723248 0.042979 2.594081 0.130983l439.314561 44.245713c0.088004 0.007163 0.174985 0.01842 0.261966 0.026606l0.180102 0.01842c0.50449 0.051165 1.001817 0.119727 1.496074 0.198521 0.222057 0.035816 0.443092 0.076748 0.663102 0.11768 0.552585 0.103354 1.100054 0.217964 1.638313 0.355087 0.085958 0.022513 0.169869 0.047072 0.254803 0.069585 0.586354 0.156566 1.161453 0.334621 1.728364 0.530073 0.077771 0.026606 0.155543 0.051165 0.233314 0.078795 0.626263 0.222057 1.239224 0.469698 1.840928 0.737804 0.039909 0.017396 0.078795 0.035816 0.118704 0.054235 1.277086 0.577145 2.496867 1.252527 3.647063 2.020006 0.001023 0.001023 0.002047 0.001023 0.00307 0.002047 0.553609 0.369414 1.088798 0.76134 1.609661 1.170662 0.069585 0.054235 0.137123 0.10847 0.205685 0.163729 0.48607 0.38988 0.958838 0.795109 1.413186 1.218758 0.092098 0.084934 0.180102 0.173962 0.270153 0.25992 0.394996 0.378623 0.778736 0.76748 1.14815 1.169639 0.11154 0.121773 0.222057 0.243547 0.331551 0.367367 0.333598 0.3776 0.653893 0.766456 0.964978 1.163499 0.12382 0.158612 0.249687 0.314155 0.370437 0.475837 0.322341 0.432859 0.629333 0.876973 0.925069 1.329275 0.113587 0.173962 0.224104 0.348947 0.333598 0.525979 0.296759 0.479931 0.580215 0.968048 0.845251 1.467421 0.069585 0.130983 0.134053 0.265036 0.201591 0.397043 0.289596 0.568958 0.563842 1.147126 0.811482 1.738597 0.00307 0.007163 0.005117 0.014326 0.008186 0.021489 0.569982 1.369184 1.019213 2.796696 1.345648 4.26514 0 0.001023 0 0.002047 0.001023 0.00307l0.00307 0.013303c0.035816 0.162706 0.075725 0.323365 0.10847 0.487094l56.17951 252.734118c0.895393 4.030803 0.780783 8.04728-0.165776 11.794627 0.50449 2.003634 0.774643 4.101411 0.774643 6.261611 0 14.128789-11.452843 25.582655-25.582655 25.582655L195.47502 616.098125l-52.358485 159.553902c-3.631714 11.067057-14.093996 17.972327-25.177426 17.590634-0.207731 0.005117-0.413416 0.01535-0.62217 0.01535L54.663994 793.258011c-14.128789 0-25.582655-11.453866-25.582655-25.582655s11.453866-25.582655 25.582655-25.582655l45.614897 0 197.955514-603.235934c3.536546-10.776438 13.546527-17.613146 24.303522-17.613146 2.067079 0 4.16281 0.26299 6.245238 0.788969l567.583946 0c14.129812 0 25.582655 11.453866 25.582655 25.582655s-11.452843 25.582655-25.582655 25.582655L340.816223 173.1979 212.265428 564.933839l701.224666 0-48.137347-216.557174L443.99107 305.940157z" horiz-adv-x="1024" /> + + + <glyph glyph-name="camera-fill" unicode="" d="M512 480C436.515555 480 375.111111 419.712 375.111111 345.6 375.111111 271.48800000000006 436.515555 211.20000000000005 512 211.20000000000005 587.484446 211.20000000000005 648.888887 271.48800000000006 648.888887 345.6 648.888887 419.712 587.484446 480 512 480M512 172.79999999999995C414.808889 172.79999999999995 336 250.15679999999998 336 345.6 336 441.0432 414.808889 518.4 512 518.4 609.210667 518.4 688 441.0432 688 345.6 688 250.15679999999998 609.210667 172.79999999999995 512 172.79999999999995M903.111113 691.2L723.767113 691.2C713.383113 691.2 703.448887 695.2512 696.115554 702.4512L640.792887 756.7488C633.459554 763.9488 623.505779 768 613.141333 768L512 768 410.878222 768C400.494222 768 390.56 763.9488 383.226667 756.7488L327.904 702.4512C320.570667 695.2512 310.616889 691.2 300.252445 691.2L120.888889 691.2C77.866667 691.2 42.666667 656.64 42.666667 614.4L42.666667 76.79999999999995C42.666667 34.559999999999945 77.866667 0 120.888889 0L903.111113 0C946.133333 0 981.333333 34.559999999999945 981.333333 76.79999999999995L981.333333 614.4C981.333333 656.64 946.133333 691.2 903.111113 691.2" horiz-adv-x="1024" /> + + + <glyph glyph-name="tabs" unicode="" d="M310.30303 523.636364L124.121212 523.636364c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-186.181818c0-17.128727 13.901576-31.030303 31.030303-31.030303l186.181818 0c17.128727 0 31.030303 13.901576 31.030303 31.030303L341.333333 492.606061C341.333333 509.734788 327.431758 523.636364 310.30303 523.636364zM294.787879 306.42424200000005L139.636364 306.42424200000005c-17.128727 0-15.515152-1.613576-15.515152 15.515152L124.121212 477.090909c0 17.128727-1.613576 15.515152 15.515152 15.515152l155.151515 0c17.128727 0 15.515152 1.613576 15.515152-15.515152l0-155.151515C310.30303 304.81066699999997 311.916606 306.42424200000005 294.787879 306.42424200000005zM418.909091 352.969697l480.969697 0 0 31.030303L418.909091 384 418.909091 352.969697zM418.909091 228.84848499999998l480.969697 0 0 31.030303L418.909091 259.878788 418.909091 228.84848499999998zM418.909091 89.21212100000002l480.969697 0 0 31.030303L418.909091 120.24242400000003 418.909091 89.21212100000002zM418.909091 492.606061l480.969697 0 0 31.030303L418.909091 523.636364 418.909091 492.606061zM992.969697 725.333333l-15.515152 0L977.454545 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L775.757576 880.484848c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-124.121212-139.636364 0L605.090909 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L403.393939 880.484848c-17.128727 0-31.030303-13.901576-31.030303-31.030303l0-124.121212-124.121212 0L248.242424 849.454545c0 17.128727-13.901576 31.030303-31.030303 31.030303L31.030303 880.484848C13.901576 880.484848 0 866.583273 0 849.454545l0-946.424242c0-17.128727 13.901576-31.030303 31.030303-31.030303l961.939394 0c17.128727 0 31.030303 13.901576 31.030303 31.030303L1024 694.30303C1024 711.431758 1010.098424 725.333333 992.969697 725.333333zM992.969697-65.939394c0-17.128727-13.901576-31.030303-31.030303-31.030303L62.060606-96.969697c-17.128727 0-31.030303 13.901576-31.030303 31.030303L31.030303 818.424242c0 17.128727 13.901576 31.030303 31.030303 31.030303l124.121212 0c17.128727 0 31.030303-13.901576 31.030303-31.030303l0-124.121212 744.727273 0c17.128727 0 31.030303-13.901576 31.030303-31.030303L992.969697-65.939394z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-code" unicode="" d="M270 626c-12 12-32 12-44 0L9 409c-12-12-12-32 0-44l217-217c6-6 14-9 22-9s16 3 22 9c12 12 12 32 0 44L75 387 270 582C282 595 282 614 270 626zM1015 409L798 626c-12 12-32 12-44 0-12-12-12-32 0-44l195-195L754 192c-12-12-12-32 0-44 6-6 14-9 22-9s16 3 22 9l217 217C1027 377 1027 397 1015 409zM624 696L624 696c-16 6-34-3-40-19L382 119c-6-16 2-34 19-40l0 0c16-6 34 3 40 19l202 558C648 672 640 690 624 696z" horiz-adv-x="1025" /> + + + <glyph glyph-name="fire" unicode="" d="M890.059904 352.19948999999997C845.890699 458.956706 840.554889 548.4951550000001 857.396326 618.42714 859.144623 625.686731 860.991676 631.9776790000001 862.858846 637.425182 863.763607 640.064841 865.906573 645.659889 866.16406 646.532651L880.890349 696.448108 833.062903 675.9309969999999C832.106692 675.5208 830.618069 674.894716 827.426684 673.550492 824.667648 672.380966 822.310677 671.354022 819.868514 670.244809 813.291441 667.2575449999999 807.049466 664.090938 800.697749 660.4128450000001 784.089623 650.795565 768.486253 638.656896 753.86285 623.033596 727.630498 595.007563 706.526618 557.766355 691.78157 509.713231 675.041103 455.157161 671.516484 411.46006 673.004574 347.939834 673.477918 327.73476900000003 673.463923 322.197583 672.83965 318.324215 673.779618 324.156339 684.455526 333.67819899999995 696.104608 329.19567600000005 693.056849 330.36844199999996 685.695898 339.012828 676.314007 361.368339 660.550914 398.92921 646.834249 460.170272 636.817284 549.350468 625.445924 650.588768 630.103925 734.7280519999999 644.646978 801.338628 647.677924 815.221065 650.899934 827.082435 654.086773 836.904609 655.91465 842.538316 657.254607 846.094657 657.880284 847.554385L678.645286 896 628.243642 880.578031C617.409833 877.263087 599.94569 869.52239 578.105438 855.845223 542.547644 833.577626 507.199569 802.385036 474.400401 760.836776 447.596676 726.883228 423.611383 687.30061 403.118547 641.7016189999999 378.907516 587.829195 363.003277 542.798944 353.158029 503.238462 349.274261 487.632585 346.433259 473.323627 344.1945 458.925156 343.334411 453.39353 342.592734 448.063234 341.804612 441.911844 341.502524 439.553997 340.356619 430.329551 340.073506 428.145504 337.596047 409.033293 335.848224 404.35337 329.235273 398.312868 336.081933 404.566848 343.232634 404.098227 346.608002 402.086756 344.852318 403.133013 341.598345 406.493651 337.991853 411.887149 327.030897 428.279226 317.980358 454.883162 313.690598 489.339595 311.250185 508.941598 310.203772 539.08627 310.370048 576.545325 310.480474 601.422138 311.113088 628.122479 312.099068 654.977888 312.481453 665.393013 312.891081 675.105466 313.30045 683.8491750000001 313.545346 689.079919 313.735044 692.813105 313.84201 694.783403L317.55517 763.179488 271.360516 712.604139C270.467691 711.626645 268.852992 709.837042 266.618705 707.326295 262.927895 703.178805 258.823678 698.493751 254.407949 693.3614689999999 241.78797 678.693606 229.164348 663.340425 217.341267 648.004036 211.724185 640.717803 206.411389 633.591345 201.450577 626.6638379999999 176.017063 591.147305 156.617347 555.4025280000001 138.122768 512.155497 90.841957 401.595812 76.97672 299.64870599999995 99.261816 188.13489300000003 126.80821 50.29373899999996 188.553235-37.64422200000001 278.8297-84.690336 344.19104-118.75233700000001 408.837235-128 507.940695-128 525.713007-128 557.977207-125.567138 590.857378-120.46215900000004 641.152493-112.65333099999998 687.496192-99.78932299999997 726.063273-80.59104400000001 738.155853-74.57148800000004 743.07901-59.88870199999997 737.059454-47.79612199999997 731.039898-35.70354299999997 716.357111-30.780384000000026 704.264531-36.79993999999999 670.855859-53.43041900000003 629.092954-65.02289699999994 583.352478-72.12456999999995 552.984316-76.83953499999996 523.228215-79.08327499999996 507.940695-79.08327499999996 416.16215-79.08327499999996 357.934257-70.75375399999996 301.436271-41.310745999999995 224.830174-1.3887230000000272 171.977796 73.88423 147.230072 197.72094500000003 126.99711 298.965952 139.514783 391.004811 183.099329 492.921284 200.282663 533.1021499999999 218.020237 565.784358 241.22153 598.183718 245.831691 604.6215589999999 250.802959 611.289899 256.082244 618.137961 267.31885 632.713596 279.402035 647.409487 291.488864 661.457681 298.732051 669.8762429999999 304.338773 676.1767130000001 307.478705 679.614406L264.997214 697.435142C264.883874 695.347445 264.688038 691.493511 264.43725 686.13688 264.020474 677.234965 263.603959 667.359281 263.215279 656.7726250000001 262.21142 629.430212 261.566827 602.224414 261.453805 576.7624579999999 261.278897 537.3588179999999 262.385015 505.49418 265.148621 483.296209 276.058157 395.668083 322.627019 326.024497 362.226031 362.19561799999997 379.341732 377.829698 384.756649 392.328523 388.584361 421.857186 397.932742 493.974714 407.332926 531.746825 447.736538 621.64966 466.587287 663.594818 488.484326 699.731218 512.795234 730.526996 542.034492 767.565749 573.156162 795.028785 604.068111 814.386984 614.696751 821.043029 624.472062 826.201428 633.124687 830.036563 638.02329 832.207788 641.258688 833.404991 642.556233 833.802016L612.91959 866.825663C608.658554 856.884484 602.686705 838.478616 596.856038 811.772799 581.186705 740.003594 576.231674 650.498985 588.206246 543.890345 607.295279 373.94226100000003 638.819345 298.82556999999997 678.537329 283.542234 701.302332 274.78234499999996 717.731637 289.43566899999996 721.133156 310.5407 722.475759 318.870999 722.489387 324.26340300000004 721.907881 349.08549100000005 720.532565 407.791853 723.691247 446.952173 738.546223 495.36355 751.151827 536.44438 768.544047 567.135763 789.576147 589.605967 809.230566 610.60429 821.725461 617.839716 852.347733 630.9761169999999L842.705318 653.453557 819.246577 660.374464C822.235501 670.505564 813.450321 644.87463 809.839253 629.8801189999999 790.647573 550.1890470000001 796.611315 450.1135 844.8591 333.498332 883.105728 241.056017 874.587669 126.06492400000002 824.002925 61.39712899999995 815.680378 50.75754500000005 817.558709 35.38570000000004 828.198295 27.063153000000057 838.837879 18.740607999999952 854.209724 20.618939999999952 862.532269 31.258523999999966 924.762731 110.81426299999998 934.658528 244.404363 890.059904 352.19948999999997Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="set" unicode="" d="M466.496-126.62400000000002l-1.056 0.064c-25.184 2.08-47.456 22.368-51.744 47.232l-17.344 102.4c-0.672 4.064-6.624 11.04-10.56 12.416l-30.336 12.416c-5.44 2.496-15.424 0.8-17.472-0.64l-84.992-60.16c-19.584-14.016-51.456-12.736-70.08 3.168l-64.288 64c-17.952 20.48-19.488 50.592-4.736 71.296l60.416 84.672c2.176 3.072 2.784 11.52 1.024 15.04l0 0c0 0-1.664 3.104-7.264 16.608-6.176 14.848-6.816 17.44-6.816 17.44-0.992 3.04-7.456 8.672-11.36 9.376l-102.56 17.248c-25.152 4.288-45.44 26.624-47.168 52L0 428.288c2.112 27.36 22.496 49.6 47.52 53.728l102.528 17.344c4.128 0.672 11.008 6.56 12.416 10.496l12.608 30.336c2.368 4.992 1.6 14.112-0.8 17.504L113.984 642.24C99.36 662.88 100.704 692.896 117.056 712.192l64.416 64.224c20.672 18.208 51.296 18.784 71.36 4.64l84.992-60.16c1.952-1.376 13.28-2.016 15.04-1.056 0.384 0.192 2.528 1.344 16.704 7.168 14.24 5.92 16.576 6.592 16.576 6.592 3.84 1.184 9.504 7.648 10.144 11.424l17.44 102.4c4.32 25.152 26.752 45.376 52.128 47.104l90.528 0.064c27.328-2.112 49.632-22.368 53.952-47.232l17.344-102.432c0.672-4.064 6.656-11.04 10.624-12.48l30.304-12.352c6.24-2.784 15.456-0.8 17.44 0.608l85.024 60.16c19.52 14.016 51.392 12.704 70.08-3.136l64.288-64.032c17.952-20.48 19.456-50.56 4.736-71.264l-60.416-84.672c-2.208-3.136-2.848-11.616-1.056-15.04 0.16-0.352 1.376-2.56 7.232-16.672 5.856-14.112 6.592-16.512 6.592-16.512 1.248-4.032 7.712-9.6 11.648-10.304l102.56-17.248c25.152-4.224 45.44-26.592 47.168-52l0.096-90.304c-2.112-27.392-22.528-49.6-47.552-53.728l-102.528-17.376c-4.128-0.672-10.944-6.496-12.32-10.432l-12.736-30.432c-2.336-4.928-1.568-14.112 0.832-17.472l60.288-84.512c14.624-20.736 13.216-50.816-3.232-70.048l-64.192-64.096c-11.328-9.92-24.64-14.72-38.784-14.72l0 0c-11.904 0-23.52 3.552-32.704 10.016l-84.992 60.16c-1.952 1.408-13.312 2.016-15.072 1.056-0.288-0.16-2.432-1.312-16.608-7.2-14.08-5.792-16.384-6.496-16.384-6.496-4.16-1.28-9.792-7.776-10.432-11.52l-17.408-102.4c-4.352-25.152-26.72-45.344-52.032-47.104L466.496-126.62400000000002zM347.84 100.60799999999995c10.368 0 20.192-2.112 28.48-6.112l27.648-11.296c20.416-7.072 38.976-28.992 42.848-51.584l17.344-102.336c0.288-1.6 3.136-4.32 5.056-4.832l87.296 0.064c-0.032 0.064 3.04 2.944 3.328 4.672l17.408 102.368c3.872 22.656 23.328 44.832 45.28 51.584 0 0 0 0 0 0-0.096 0 2.976 1.152 12.448 5.056 9.472 3.936 12.384 5.248 13.12 5.568 18.208 9.6 49.44 8.032 67.776-4.96l84.928-60.16c0.192-0.128 1.312-0.64 3.104-0.64l0 0c2.048 0 3.52 0.672 3.872 0.96l61.536 61.408 0 0c-0.16 0 0.064 4.416-0.992 5.952l-60.224 84.448c-13.248 18.624-15.68 47.168-5.792 67.872l11.648 27.84c6.944 19.968 29.408 38.912 51.68 42.496l102.464 17.376c1.824 0.384 4.736 3.648 4.864 5.408L972.8 428.288l0 0c-0.096 0-2.88 3.072-4.576 3.424l-102.72 17.28c-23.168 4.032-44.896 22.976-51.776 45.056l0 0c-0.032 0-1.216 3.04-5.12 12.512-3.968 9.568-5.28 12.512-5.632 13.248-10.24 19.36-8.288 48.736 4.96 67.456L868.448 672c0.96 1.408 0.736 5.6-0.384 6.912l-61.408 61.184c0.704-0.8-0.768-0.192-2.848-0.192-1.728 0-2.784-0.416-3.008-0.576l-85.024-60.16c-17.824-12.8-47.776-15.36-68-5.664l-27.712 11.296c-20.512 7.2-39.04 29.088-42.88 51.584l-17.344 102.336c-0.288 1.76-3.616 4.704-5.504 4.864L467.616 843.52c0-0.064-3.104-2.944-3.392-4.672l-17.408-102.336c-3.84-22.624-23.264-44.8-45.216-51.584 0-0.032-3.008-1.184-12.416-5.088-9.568-3.936-12.512-5.248-13.248-5.568-17.984-9.568-49.344-8.032-67.744 4.992L223.264 739.36c-0.416 0.32-6.176 0.288-6.848-0.224L154.688 677.6320000000001c0 0 0 0 0 0 0.224 0 0.032-4.384 1.056-5.856L216 587.264c13.312-18.752 15.744-47.296 5.76-67.968l-11.52-27.648c-6.976-20.032-29.472-38.944-51.776-42.624L55.968 431.68c-1.824-0.384-4.704-3.648-4.832-5.408l0.096-86.56 0 0c0.096 0 2.912-3.104 4.608-3.424l102.656-17.28c23.04-4 44.704-22.912 51.712-44.928 0.256-0.736 1.44-3.84 5.088-12.64 3.68-8.832 5.024-11.84 5.472-12.736 10.592-20.288 8.672-48.96-4.672-67.904l-60.512-84.768c-0.96-1.408-0.736-5.632 0.384-6.912l61.408-61.184c-0.736 0.8 0.736 0.224 2.816 0.192 1.728 0 2.784 0.416 3.008 0.576l84.992 60.16C318.624 96.32000000000005 333.088 100.60799999999995 347.84 100.60799999999995zM512.032 133.856c-138.336 0-250.848 112.224-250.848 250.176 0 137.92 112.544 250.144 250.848 250.144s250.848-112.224 250.848-250.144C762.88 246.08000000000004 650.336 133.856 512.032 133.856zM512.032 583.136c-110.08 0-199.648-89.312-199.648-199.104s89.568-199.136 199.648-199.136 199.648 89.344 199.648 199.136S622.112 583.136 512.032 583.136z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-u" unicode="" d="M0-49.23076900000001L945.230769-49.23076900000001 945.230769-128 0-128 0-49.23076900000001ZM0 896L407.076943 896 407.076943 834.065644 319.153861 827.872177 299.076923 809.911217 299.076923 365.841959C299.076923 281.19796199999996 317.076716 220.709337 353.076933 184.37435100000005 389.077071 148.03936499999998 448.153442 129.87210800000003 530.307702 129.87210800000003 606.000364 129.87210800000003 660.807522 149.17482299999995 694.730752 187.78072599999996 728.653982 226.38662899999997 745.61536 289.66226700000004 745.61536 377.60953099999995L745.61536 804.956475 724.153817 826.633531 633.461524 834.065644 633.461524 896 955.384596 896 955.384596 834.065644 868.846119 826.633531 849.461563 804.956475 849.461563 364.60331299999996C849.461563 246.92743900000005 819.923338 161.66533900000002 760.846178 108.81441500000005 701.76894 55.96348999999998 606.462188 29.53846199999998 474.923087 29.53846199999998 406.153531 29.53846199999998 345.807951 38.51886300000001 293.884613 56.47990200000004 241.961275 74.44093999999996 201.230887 100.143419 171.692347 133.58820400000002 149.076834 160.01362700000004 133.038474 190.25793999999996 123.57695 224.32200899999998 114.115348 258.386078 109.384625 307.21047599999997 109.384625 370.796702L109.384625 809.911217 89.307687 827.872177 0 834.065644 0 896Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="triangle-d" unicode="" d="M773.128299 88.65234199999998M889.696178 575.195553L158.862147 575.195553 524.357446 209.64704300000005 889.696178 575.195553Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tips" unicode="" d="M967.280184 578.537671c-24.915459 58.887178-60.544935 111.76755-105.96745 157.161413-45.393863 45.393863-98.273211 81.051991-157.160389 105.96745-60.988026 25.803689-125.735679 38.853913-192.494129 38.853913-66.729797 0-131.504056-13.0799-192.494129-38.853913-58.887178-24.916483-111.766526-60.544935-157.160389-105.96745-45.393863-45.393863-81.051991-98.274234-105.96745-157.161413-25.803689-60.988026-38.884612-125.734656-38.884612-192.464453s13.0799-131.50508 38.884612-192.464453c24.915459-58.887178 60.544935-111.737874 105.96745-157.161413 45.393863-45.393863 98.273211-81.051991 157.160389-105.96745 60.988026-25.803689 125.735679-38.853913 192.494129-38.853913 66.729797 0 131.504056 13.0799 192.494129 38.853913 58.887178 24.916483 111.766526 60.544935 157.160389 105.96745 45.393863 45.393863 81.051991 98.274234 105.96745 157.161413 25.803689 60.988026 38.853913 125.734656 38.853913 192.464453S993.084896 517.549645 967.280184 578.537671zM511.687892-55.138552000000004c-243.302305 0-441.241446 197.909465-441.241446 441.21177S268.385587 827.284989 511.687892 827.284989c243.273652-0.029676 441.210747-197.938118 441.210747-441.21177S754.990197-55.138552000000004 511.687892-55.138552000000004zM511.657192 573.565427m-45.511543 0a44.475 44.475 0 1 1 91.023086 0 44.475 44.475 0 1 1-91.023086 0ZM542.729885 184.14011300000004c0-17.162892-13.906731-31.071669-31.070646-31.071669l0 0c-17.163915 0-31.070646 13.907755-31.070646 31.071669L480.588593 426.998303c0 17.162892 13.906731 31.071669 31.070646 31.071669l0 0c17.163915 0 31.070646-13.907755 31.070646-31.071669L542.729885 184.14011300000004z" horiz-adv-x="1024" /> + + + <glyph glyph-name="picture" unicode="" d="M765.376 615.424c0 0 103.04 1.024 103.04-100.992 0 0 9.536-98.752-103.04-100.928 0 0-100.864-2.176-99.84 100.928C665.536 514.496 664.448 605.8879999999999 765.376 615.424ZM968.32 770.56c0 0 54.208-4.224 54.208-52.032l0-712.832c0 0-3.2-51.008-54.208-52.096L968.32 770.56ZM1.472 5.631999999999948c0 0 2.176-52.096 52.096-52.096L968.32-46.464000000000055l0 150.848-99.712 0-203.072 206.144-153.024-153.984L304.32 413.568l-205.056-307.072-45.632-1.024L52.48 718.4639999999999 1.472 718.4639999999999 1.472 5.631999999999948ZM968.32 770.56L53.568 770.56c0 0-52.096 1.088-52.096-52.032L968.32 718.528 968.32 770.56Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="more-vertical" unicode="" d="M511.998465 623.681848c40.525995 0 73.386404 35.771715 73.386404 79.892585s-32.860409 79.892585-73.386404 79.892585c-40.524972 0-73.384357-35.771715-73.384357-79.892585S471.47247 623.681848 511.998465 623.681848L511.998465 623.681848zM511.998465 463.893608c-40.524972 0-73.384357-35.772738-73.384357-79.893608 0-44.12087 32.859385-79.892585 73.384357-79.892585 40.525995 0 73.386404 35.772738 73.386404 79.892585C585.384869 428.12087 552.52446 463.893608 511.998465 463.893608L511.998465 463.893608zM511.998465 144.320199c-40.524972 0-73.384357-35.733852-73.384357-79.894631 0-44.119847 32.859385-79.893608 73.384357-79.893608 40.525995 0 73.386404 35.772738 73.386404 79.893608C585.383846 108.58634600000005 552.52446 144.320199 511.998465 144.320199L511.998465 144.320199z" horiz-adv-x="1024" /> + + + <glyph glyph-name="flag" unicode="" d="M878.368178 798.272211c-11.363815 4.799306-24.470321 2.360767-33.31578-6.245238-0.36532-0.350994-37.162388-35.304064-95.163383-56.05262-75.462692-26.993794-150.763702-18.409279-223.812415 25.517163-38.347376 23.060205-81.875752 40.665165-129.376603 52.327786-37.582967 9.228175-77.742619 14.777565-119.363552 16.496719-70.805626 2.925632-121.493052-6.224772-123.615389-6.615675-14.56574-2.682086-25.140587-15.380292-25.140587-30.191626L128.58047-31.312913999999978c0-16.954137 13.745049-30.699186 30.699186-30.699186s30.699186 13.745049 30.699186 30.699186L189.978842 266.68306099999995c15.562441 5.250584 47.994084 14.447037 91.40171 17.48728 35.985586 2.51938 72.440869 0.378623 108.35073-6.363941 44.847417-8.420787 89.059362-24.102954 131.409912-46.611597 46.26879-24.591071 93.776803-41.069371 141.203976-48.977481 38.270629-6.380314 76.541257-7.219425 113.740484-2.491751 64.277956 8.16803 103.877859 30.461779 105.532545 31.406291 9.56689 5.464455 15.471366 15.637142 15.471366 26.656103L897.089565 769.958352C897.091612 782.298402 889.73711 793.470859 878.368178 798.272211zM835.69324 257.496841c-14.58416-5.755074-38.82526-13.530155-70.319555-17.225313-30.990828-3.635807-62.940494-2.676969-94.952582 2.851954-40.201607 6.943133-80.731696 21.171182-120.464629 42.289152-48.455595 25.753547-99.208513 43.61945-150.848637 53.101405-29.29214 5.378497-58.896388 8.079002-88.407516 8.079002-12.228509 0-24.443715-0.464581-36.609803-1.39272-34.879392-2.663666-63.618946-8.741082-84.111676-14.355963L189.978842 766.569162c19.971867 2.003634 50.446949 3.910053 86.392626 2.334161 58.186214-2.554172 143.250588-15.041578 218.064504-60.029188 61.32674-36.877909 119.196753-49.491181 169.691797-49.488111 42.293245 0.002047 79.416747 8.854669 109.019972 19.711947 24.269753 8.901741 45.327348 19.747763 62.544475 30.179346L835.692217 257.496841z" horiz-adv-x="1024" /> + + + <glyph glyph-name="loading" unicode="" d="M511.999488 756.654348m-70.608128 0a69 69 0 1 1 141.216255 0 69 69 0 1 1-141.216255 0ZM236.047576 639.997442m-68.561515 0a67 67 0 1 1 137.123031 0 67 67 0 1 1-137.123031 0ZM125.530506 382.12428m-62.421678 0a61 61 0 1 1 124.843356 0 61 61 0 1 1-124.843356 0ZM227.861126 100.71507499999996m-54.235229 0a53 53 0 1 1 108.470457 0 53 53 0 1 1-108.470457 0ZM514.166851-16.84438799999998m-47.192835 0a46.118 46.118 0 1 1 94.385671 0 46.118 46.118 0 1 1-94.385671 0ZM804.730553 91.450061m-33.834596 0a33.064 33.064 0 1 1 67.669192 0 33.064 33.064 0 1 1-67.669192 0ZM935.55411 383.395226m-23.969924 0a23.424 23.424 0 1 1 47.939849 0 23.424 23.424 0 1 1-47.939849 0ZM856.723717 634.80007m-17.135262 0a16.745 16.745 0 1 1 34.270525 0 16.745 16.745 0 1 1-34.270525 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="fonts-i" unicode="" d="M897.948 834.255l0-64.322-128.65 0L447.674-1.9329999999999927l128.65 0 0-64.32L126.052-66.25300000000004l0 64.32 128.65 0 321.622 771.866-128.65 0L447.674 834.255 897.948 834.255z" horiz-adv-x="1024" /> + + + <glyph glyph-name="refresh-1" unicode="" d="M688.146 736l-192 128v-256l192 128.001zM496.146 767.7090000000001c-231.174-8.416-416-198.479-416-431.709 0-238.587 193.413-432 432-432 233.23 0 423.293 184.826 431.709 416h-64.05c-8.377-195.817-169.778-352-367.658-352-203.241 0-368 164.759-368 368 0 197.88 156.183 359.282 352 367.658v64.051z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rmb" unicode="" d="M511.998465 896C229.23338 896 0.004605 666.769178 0.004605 384.001023c0-282.773272 229.227752-512.001023 511.99386-512.001023 282.769178 0 511.994883 229.227752 511.994883 512.001023C1023.994372 666.769178 794.767644 896 511.998465 896zM511.998465-91.59690499999999c-262.660188 0-475.589742 212.930577-475.589742 475.597929 0 262.663258 212.929554 475.594859 475.589742 475.594859 262.663258 0 475.590765-212.9316 475.590765-475.594859C987.590254 121.33469500000001 774.662747-91.59690499999999 511.998465-91.59690499999999zM738.742652 301.137781L544.432155 301.137781l0 69.780273 194.310497 0c17.835204 0 32.249495 14.43885 32.249495 32.220842 0 17.784038-14.414291 32.19526-32.249495 32.19526L589.7462 435.334155l149.620669 209.579249c8.916067 15.397688 3.63069 35.099403-11.82021 43.988864-15.398712 8.891508-35.097356 3.629667-44.017516-11.793604L512.187777 437.098335 340.84334 677.108664c-8.864902 15.423271-28.617781 20.685111-44.016493 11.793604-15.395642-8.889461-20.685111-28.590152-11.82021-43.988864l149.622716-209.579249L285.628808 435.334155c-17.781992 0-32.245402-14.411221-32.245402-32.19526 0-17.781992 14.46341-32.220842 32.245402-32.220842l194.310497 0 0-69.780273L285.628808 301.137781c-17.781992 0-32.245402-14.413268-32.245402-32.19526s14.46341-32.220842 32.245402-32.220842l194.310497 0 0-132.435265c0-17.780969 14.46341-32.19526 32.248472-32.19526 17.835204 0 32.245402 14.414291 32.245402 32.19526L544.433178 236.72065499999997l194.310497 0c17.835204 0 32.249495 14.43885 32.249495 32.220842S756.577856 301.137781 738.742652 301.137781" horiz-adv-x="1024" /> + + + <glyph glyph-name="addition" unicode="" d="M544 768L480 768 480 416 128 416 128 352 480 352 480 0 544 0 544 352 895.936 352 895.936 416 544 416Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="home" unicode="" d="M824.084343-40.42033900000001H232.898863c-74.604138 0-85.85232 28.334325-85.852321 49.997718l-0.584307 5.314029V447.645552h48.806589v-402.916582c0-25.547863 13.548574-36.343743 37.629015-36.343743h568.020898c25.928532 0 27.978215 6.220678 27.978215 37.84391V447.585177l48.806589 0.118704c0.022513-14.346753 0-382.76666 0-433.098999 0-38.130436-12.726859-54.765301-51.858088-54.765301l-1.76111-0.25992zM1012.470921 493.103884C849.773422 615.120868 687.101505 737.137853 524.404006 859.153814c-6.207375 4.659113-18.433838 4.659113-24.641213 0C337.077573 737.137853 174.393377 615.120868 11.696902 493.103884c-24.856108-18.635429-0.572028-61.044308 24.642236-42.13361A15995638.709915 15995638.709915 0 0 1 512.025071 807.737794c0.988514-0.715291 1.644453-1.144056 2.823302-2.037403 18.040888-13.524015 36.057217-27.036773 54.073546-40.560788 58.291614-43.718711 116.583229-87.437421 174.874843-131.143852 81.33647-61.008492 162.696476-122.015961 244.033969-183.024454 25.212218-18.911722 49.496298 23.497157 24.64019 42.132587z" horiz-adv-x="1024" /> + + + <glyph glyph-name="user" unicode="" d="M611.2 342.4c70.4 54.4 115.2 140.8 115.2 230.4 0 156.8-128 288-284.8 288s-284.8-128-284.8-284.8c0-92.8 44.8-182.4 115.2-236.8C108.8 272 0 105.60000000000002 0-80c0-9.6 9.6-19.2 19.2-19.2h848c9.6 0 19.2 9.6 19.2 19.2 0 188.8-112 355.2-275.2 422.4z m-576-396.8C44.8 115.20000000000005 156.8 268.79999999999995 320 320c6.4 3.2 12.8 9.6 12.8 16s-3.2 16-9.6 19.2c-76.8 41.6-128 131.2-128 224 0 134.4 112 246.4 246.4 246.4s246.4-112 246.4-249.6c0-89.6-51.2-176-128-220.8-6.4-3.2-9.6-9.6-9.6-19.2 0-6.4 6.4-12.8 12.8-16 160-51.2 275.2-204.8 281.6-377.6H35.2zM812.8 361.6c54.4 41.6 86.4 108.8 86.4 176 0 89.6-54.4 172.8-134.4 208-9.6 3.2-22.4 0-25.6-9.6-3.2-9.6 0-22.4 9.6-25.6 67.2-28.8 112-99.2 112-172.8 0-67.2-38.4-131.2-96-163.2-6.4-3.2-9.6-9.6-9.6-19.2 0-6.4 6.4-12.8 12.8-16 131.2-41.6 217.6-160 217.6-297.6 0-9.6 9.6-19.2 19.2-19.2s19.2 9.6 19.2 19.2c-3.2 140.8-86.4 262.4-211.2 320z" horiz-adv-x="1024" /> + + + <glyph glyph-name="notice" unicode="" d="M544 798.976V864h-64v-65.024C289.536 786.304 160 658.624 160 416v-288h64V416c0 192 115.456 320 288 320 180.544 0 288-128 288-320v-288h64V416c0 242.88-122.496 370.56-320 382.976zM672 64a160 160 0 1 0-320 0h64a96 96 0 0 1 192 0h64zM64 128h896v-64H64v64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="login-weibo" unicode="" d="M411.270737 288.350316c-17.973895 7.504842-41.189053-0.229053-52.264421-17.542737-11.223579-17.394526-5.955368-38.103579 11.870316-46.201263 18.108632-8.232421 42.132211-0.417684 53.342316 17.421474C435.253895 260.05557899999997 429.446737 280.62989500000003 411.270737 288.350316zM455.545263 306.64757899999995c-6.885053 2.721684-15.508211-0.579368-19.550316-7.329684-3.920842-6.790737-1.751579-14.524632 5.146947-17.367579 7.019789-2.883368 16.006737 0.458105 20.048842 7.370105C465.071158 296.259368 462.551579 304.087579 455.545263 306.64757899999995zM427.52 426.684632c-115.968-11.439158-203.924211-82.216421-196.378947-158.073263 7.531789-75.910737 107.654737-128.161684 223.649684-116.749474 115.994947 11.439158 203.924211 82.216421 196.392421 158.140632C643.664842 385.859368 543.541895 438.110316 427.52 426.684632zM529.300211 247.70021099999997c-23.673263-53.355789-91.769263-81.798737-149.530947-63.232-55.754105 17.933474-79.373474 72.811789-54.945684 122.246737 23.956211 48.464842 86.352842 75.870316 141.541053 61.561263C523.506526 353.562947 552.663579 299.85684200000003 529.300211 247.70021099999997zM512 896C229.241263 896 0 666.772211 0 384c0-282.758737 229.241263-512 512-512 282.772211 0 512 229.241263 512 512C1024 666.772211 794.772211 896 512 896zM455.531789 101.02568399999996c-145.354105 0-293.941895 70.197895-293.941895 185.667368 0 60.362105 38.386526 130.182737 104.474947 196.069053 88.252632 87.929263 191.164632 127.986526 229.874526 89.397895 17.084632-17.003789 18.741895-46.457263 7.760842-81.623579-5.726316-17.690947 16.666947-7.895579 16.666947-7.936 71.343158 29.763368 133.564632 31.514947 156.321684-0.862316 12.139789-17.246316 10.954105-41.472-0.215579-69.510737-5.173895-12.921263 1.589895-14.928842 11.466105-17.879579 40.178526-12.422737 84.924632-42.455579 84.924632-95.380211C772.837053 211.36168399999997 646.090105 101.02568399999996 455.531789 101.02568399999996zM718.672842 468.197053c4.715789 14.457263 1.765053 30.962526-9.202526 43.061895-10.954105 12.072421-27.136 16.666947-42.037895 13.527579l0 0.026947c-12.463158-2.694737-24.724211 5.268211-27.392 17.664-2.667789 12.463158 5.281684 24.697263 17.744842 27.338105 30.531368 6.467368 63.595789-2.937263 85.989053-27.715368 22.447158-24.764632 28.456421-58.489263 18.849684-88.064-3.907368-12.099368-16.936421-18.728421-29.062737-14.848-12.139789 3.920842-18.782316 16.922947-14.874947 28.995368L718.672842 468.183579zM853.261474 424.865684c-0.013474-0.013474-0.013474-0.080842-0.013474-0.107789-4.567579-14.026105-19.712-21.706105-33.778526-17.165474-14.133895 4.554105-21.854316 19.590737-17.300211 33.670737l0 0.013474c13.999158 43.169684 5.12 92.429474-27.567158 128.565895-32.714105 36.122947-80.949895 49.92-125.507368 40.488421-14.484211-3.085474-28.752842 6.130526-31.838316 20.574316-3.098947 14.403368 6.144 28.631579 20.641684 31.717053l0.026947 0c62.625684 13.271579 130.519579-6.117053 176.545684-56.966737C860.483368 554.886737 872.892632 485.618526 853.261474 424.865684z" horiz-adv-x="1024" /> + + + <glyph glyph-name="voice" unicode="" d="M463.380164 644.0568969999999v-0.003069c-4.550643 4.549619-10.484795 7.02295-16.913205 7.02295s-12.365632-2.473331-16.915251-7.02295c-4.549619-4.551666-7.020904-10.485819-7.020904-16.914229s2.471284-12.365632 7.020904-16.915251c60.437487-60.438511 93.675496-140.756791 93.675496-226.222301 0-85.464487-33.238009-165.783791-93.675496-226.220255-4.549619-4.551666-7.020904-10.487865-7.020904-16.915252 0-6.429433 2.471284-12.365632 7.020904-16.914228 4.550643-4.549619 10.486842-7.02295 16.915251-7.02295s12.364609 2.473331 16.913205 7.02295c35.114752 35.116799 62.317301 76.06849 80.814584 121.668037 17.904789 44.018539 26.90579 90.608647 26.90579 138.384768s-9.101285 94.26799-26.90579 138.384767c-18.59552 45.697785-45.698808 86.550215-80.814584 121.667013zM781.892405 618.929614v-0.002047c-31.358195 77.452-77.550237 146.990772-137.098471 206.539007-4.550643 4.549619-10.485819 7.02295-16.915252 7.02295-6.42841 0-12.363585-2.473331-16.914228-7.02295-9.29776-9.299807-9.29776-24.531719 0-33.82948 54.997592-54.998615 97.631598-119.195729 126.613676-190.71153 27.993564-69.044516 42.237987-142.045133 42.237987-216.924541s-14.244422-147.882072-42.237987-216.923518c-28.982078-71.517847-71.616084-135.616724-126.613676-190.711529-9.29776-9.298783-9.29776-24.531719 0-33.82948 4.551666-4.551666 10.485819-7.02295 16.914228-7.02295 6.429433 0 12.366655 2.471284 16.915252 7.02295 59.547211 59.547211 105.740276 129.085984 137.098471 206.53696 30.369681 74.78117 45.699832 153.817248 45.699831 234.928591 0 81.111343-15.331173 160.146397-45.699831 234.927567zM299.474141 427.621497c-11.670807 11.573593-27.103288 18.004049-43.522236 18.004049-16.419971 0-31.852452-6.429433-43.52326-18.004049-11.57257-11.57257-18.003026-27.104311-18.003026-43.522236 0-16.420995 6.42841-31.851429 18.003026-43.52326 11.574616-11.57257 27.103288-18.003026 43.52326-18.003025s31.852452 6.429433 43.522236 18.003025c11.573593 11.573593 18.003026 27.104311 18.003025 43.52326 0 16.419971-6.427386 31.852452-18.003025 43.522236z" horiz-adv-x="1024" /> + + + <glyph glyph-name="upload-drag" unicode="" d="M666.931 445.918l-124.245 99.362c-7.221 5.639-16.428 9.042-26.429 9.042-9.963 0-19.136-3.376-26.438-9.047l-124.215-99.391c-9.615-7.772-15.713-19.565-15.713-32.782 0-9.946 3.453-19.084 9.223-26.284 13.828-17.359 41.51-20.465 58.918-6.505l56.252 45.022v-261.12c0-23.177 18.842-41.984 41.95-41.984s41.95 18.842 41.95 41.984v261.12l56.286-45.056c17.545-13.892 45.09-10.718 58.914 6.554 5.754 7.137 9.236 16.316 9.236 26.308 0 13.211-6.086 24.999-15.609 32.716zM235.827 142.95000000000005c-85.026 0-152.542 31.71-188.655 89.839-36.113 58.095-34.406 134.724 4.335 195.174 37.342 58.334 102.366 92.023 178.995 94.549-19.866 130.492 42.667 202.377 84.753 235.008 90.112 69.871 234.257 79.053 335.565 21.367 58.982-33.587 94.037-85.675 100.454-146.978 113.937 18.978 177.562-33.826 206.814-69.905 63.317-78.131 71.27-204.39 18.91-300.203-46.524-85.06-130.389-127.317-229.82-116.497-18.739 2.116-32.222 18.978-30.174 37.683s19.285 32.017 37.683 30.174c96.7-10.718 143.258 46.353 162.406 81.408 39.014 71.373 33.826 167.868-12.049 224.495-38.673 47.684-100.352 60.518-178.483 37.069-2.94-0.916-6.319-1.443-9.822-1.443-18.851 0-34.133 15.282-34.133 34.133 0 1.495 0.096 2.969 0.283 4.414 8.549 68.506-31.114 106.53-65.93 126.362-77.346 44.066-191.522 37.035-259.925-15.974-58.266-45.193-75.947-117.18-51.132-208.179 0.761-2.688 1.198-5.775 1.198-8.963 0-18.851-15.282-34.133-34.133-34.133-1.481 0-2.94 0.094-4.371 0.277-70.759 8.822-128.991-13.535-159.677-61.424-24.61-38.434-26.146-86.46-3.823-122.368 27.716-44.578 86.05-64.375 164.147-55.637 1.132 0.133 2.443 0.209 3.772 0.209 18.853 0 34.138-15.284 34.138-34.138 0-17.525-13.205-31.965-30.208-33.914-14.153-1.653-27.874-2.404-41.118-2.404z" horiz-adv-x="1024" /> + + + <glyph glyph-name="login-qq" unicode="" d="M512 896C229.227789 896 0 666.772211 0 384c0-282.745263 229.227789-512 512-512s512 229.254737 512 512C1024 666.772211 794.772211 896 512 896L512 896zM738.856421 258.93726300000003c0 0-16.208842-44.220632-45.945263-83.941053 0 0 53.126737-18.054737 48.64-64.983579 0 0 1.778526-52.345263-113.461895-48.734316 0 0-81.071158 6.319158-105.377684 40.609684l-21.423158 0c-24.306526-34.304-105.350737-40.609684-105.350737-40.609684-115.280842-3.610947-113.475368 48.734316-113.475368 48.734316-4.500211 46.928842 48.626526 64.983579 48.626526 64.983579-29.709474 39.720421-45.918316 83.941053-45.918316 83.941053-72.057263-116.439579-64.848842 16.249263-64.848842 16.249263 13.527579 78.524632 70.238316 129.967158 70.238316 129.967158-8.111158 71.316211 21.611789 83.941053 21.611789 83.941053C318.410105 709.712842 508.025263 705.859368 512 705.751579c3.988211 0.107789 193.576421 3.961263 199.828211-216.643368 0 0 29.709474-12.638316 21.611789-83.941053 0 0 56.737684-51.442526 70.238316-129.967158l0 0C803.678316 275.18652599999996 810.873263 142.49768400000005 738.856421 258.93726300000003L738.856421 258.93726300000003zM738.856421 258.93726300000003" horiz-adv-x="1024" /> + + + <glyph glyph-name="snowflake" unicode="" d="M480.695-64h63.725V59.291000000000054l68.854-68.242 44.945 44.546-113.798 112.79v180.02l177.271-102.44 41.67-155.652 60.725 16.284-25.398 94.872 85.259-49.266 31.87 55.246-84.726 48.961 94.497 25.343-16.495 61.622-156.068-41.855-176.934 102.245 177.667 102.667 155.513-41.709 16.274 60.793-94.78 25.418 85.255 49.264-31.869 55.247-84.733-48.965 25.326 94.594-61.557 16.51-41.817-156.206-176.948-102.251V644.461l113.849 113.951-44.459 44.496-69.392-69.454V832h-63.725v-97.935l-69.188 69.249-45.068-45.107 114.256-114.355V438.89l-156.557 90.469L283.45 684.39l-60.188-16.458 24.84-94.632-107.544 62.145-31.868-55.247 106.667-61.639-93.463-25.557 16.074-61.237 154.482 42.243 156.169-90.243-156.138-90.226-154.485 42.243-15.855-60.409 94.289-25.784-107.534-62.14 31.868-55.247 106.672 61.642-24.621-93.801 61.012-16.685 40.69 155.028 156.179 90.25v-180.455l-113.801-112.79 44.338-43.944 69.463 68.845V-64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="file-b" unicode="" d="M790.08 177.91999999999996l-138.112-119.232V177.91999999999996h138.112zM198.848 763.008h627.328v-516.16H617.088a34.56 34.56 0 0 1-34.816-34.432v-206.528H198.848V763.008z m662.208 68.8H164.032a34.56 34.56 0 0 1-34.816-34.432v-825.92a34.56 34.56 0 0 1 34.816-34.432h453.056l278.784 240.896V797.376a34.56 34.56 0 0 1-34.816 34.432z" horiz-adv-x="1024" /> + + + <glyph glyph-name="template" unicode="" d="M734 172.89999999999998v82.8h-59.9v-37l-35.7-9.7 15.7-57.8zM674.1 419.3H734v-81.8h-59.9zM734 600.2l-95.6-26 15.7-57.8 20 5.4v-20.7H734zM866.1 131.29999999999995v-37l-35.7-9.7 7.9-28.9 7.8-28.9 79.9 21.7v82.8h-29.9zM740.9 60.299999999999955L651.4 36l7.9-28.9 7.8-29 89.5 24.4-7.8 28.9zM740.9 781.7l-89.5-24.3 7.9-28.9 7.8-28.9 89.5 24.3-7.8 28.9zM830.4 806l7.9-28.9 7.8-28.9 20 5.5v-20.8H926V832zM866.1 612.6v-120.3H926V612.6h-29.9zM866.1 371.9v-120.3H926V371.9h-29.9zM541.9 665.6l35.7 9.7-7.8 28.9-7.8 28.9-50-13.6L98 832v-783.5l384.1-104.3L512-64l29.9 8.1 35.7 9.7-7.8 28.9-7.8 28.9-20-5.4V120.79999999999995l35.7 9.7-15.7 57.8-20-5.4V486l35.7 9.7-15.7 57.8-20-5.4V665.6z m-59.8-659.4l-324.2 88.1V753.7l324.2-88.1V548l-192 52.2v-427.3l192-52.2v-114.5z m0 360.9V182.79999999999995l-132.2 35.9V521.8l132.2-35.9v-118.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="transfer" unicode="" d="M320 768H128c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h192c35.2 0 64 28.8 64 64V704c0 35.2-28.8 64-64 64z m0-672c0-16-16-32-32-32H160c-16 0-32 16-32 32V672c0 16 16 32 32 32h128c16 0 32-16 32-32v-576z m256 544h-64c-19.2 0-32-12.8-32-32s16-32 32-32h64c19.2 0 32 12.8 32 32s-16 32-32 32z m-64-448h-64c-19.2 0-32-12.8-32-32s16-32 32-32h64c19.2 0 32 12.8 32 32s-16 32-32 32z m384 576H704c-35.2 0-64-28.8-64-64v-640c0-35.2 28.8-64 64-64h192c35.2 0 64 28.8 64 64V704c0 35.2-28.8 64-64 64z m0-672c0-16-16-32-32-32H736c-16 0-32 16-32 32V672c0 16 16 32 32 32h128c16 0 32-16 32-32v-576z" horiz-adv-x="1024" /> + + + <glyph glyph-name="auz" unicode="" d="M324.266667 435.2c-17.066667 17.066667-39.822222 17.066667-51.2 0-17.066667-17.066667-17.066667-39.822222 0-51.2l153.6-159.288889c5.688889-5.688889 17.066667-11.377778 28.444444-11.377778s17.066667 5.688889 28.444445 11.377778l295.822222 290.133333c17.066667 17.066667 17.066667 39.822222 0 51.2-17.066667 17.066667-39.822222 17.066667-51.2 0L455.111111 304.355556 324.266667 435.2zM927.288889 753.777778L523.377778 896h-22.755556L96.711111 753.777778c-17.066667-5.688889-28.444444-17.066667-28.444444-34.133334v-432.355555c11.377778-250.311111 409.6-409.6 426.666666-415.288889h22.755556c17.066667 5.688889 415.288889 159.288889 426.666667 415.288889V719.644444c11.377778 17.066667 0 28.444444-17.066667 34.133334z m-45.511111-460.8c-5.688889-182.044444-301.511111-312.888889-369.777778-341.333334-113.777778 45.511111-358.4 182.044444-369.777778 341.333334v398.222222L512 822.044444l369.777778-125.155555v-403.911111z" horiz-adv-x="1024" /> + + + <glyph glyph-name="console" unicode="" d="M30.552 104.72699999999998c4.654-16.29 23.272-23.272 37.236-18.618 16.291 4.655 23.273 23.273 18.618 37.236C16.588 314.182 84.08 521.31 237.68 640c11.636 9.31 23.273 16.29 37.236 25.6 25.6 16.29 53.528 30.255 83.782 39.564 58.182 20.945 118.691 30.254 176.873 27.927h25.6c6.982 0 11.636 0 18.618-2.327 30.255-4.655 58.182-11.637 88.436-23.273 235.055-86.11 356.073-346.764 269.964-581.818-4.654-16.291 2.327-32.582 18.618-37.237 16.291-4.654 32.582 2.328 37.237 18.619 41.89 116.363 39.563 239.709 0 349.09h2.327C921.897 656.2909999999999 738.043 784.2909999999999 537.897 793.6h-48.873c-200.145-9.31-384-137.31-458.472-337.455-39.564-109.381-41.891-232.727 0-351.418z m707.49 386.328a29.498 29.498 0 0 1-41.89 0L521.606 316.509c-4.654 2.327-9.309 2.327-13.963 2.327-32.582 0-58.182-25.6-58.182-58.181s25.6-58.182 58.182-58.182 58.181 25.6 58.181 58.182c0 4.654 0 9.309-2.327 16.29l174.546 174.546c11.636 11.636 11.636 30.254 0 39.564z m228.073-458.473H58.48c-16.29 0-30.255-13.964-30.255-30.255 0-16.29 13.964-30.254 30.255-30.254h907.636c16.291 0 30.255 13.963 30.255 30.254 0 16.291-13.964 30.255-30.255 30.255z" horiz-adv-x="1024" /> + + + <glyph glyph-name="app" unicode="" d="M432.022 818.946h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM391.517 471.196h-295.169v295.169h295.021v-295.169zM976.847 635.717l-211.95 211.95c-8.837 8.837-23.124 8.837-31.963 0l-211.95-211.95c-8.837-8.837-8.837-23.124 0-31.963l211.95-212.098c8.837-8.837 23.124-8.837 31.963 0l211.95 211.95c8.837 8.987 8.837 23.271 0 32.109zM432.022 313.45000000000005h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM391.517-34.15499999999997h-295.169v295.021h295.021v-295.021zM932.511 313.45000000000005h-376.324c-6.627 0-12.078-5.45-12.078-12.078v-376.324c0-6.627 5.45-12.078 12.078-12.078h376.324c6.627 0 12.078 5.45 12.078 12.078v376.473c0 6.627-5.45 11.93-12.078 11.93zM891.859-34.15499999999997h-295.021v295.021h295.021v-295.021z" horiz-adv-x="1024" /> + + + <glyph glyph-name="prev" unicode="" d="M62.573 384.103l423.401 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.751-18.976-68.727 0l-39.753 39.753 0.269 0.246-385.655 385.661zM451.365 384.103l423.407 423.662c18.985 18.985 49.757 18.985 68.727 0 18.982-18.972 18.985-49.746 0-68.729l-355.058-355.067 356.796-356.796c18.977-18.971 18.976-49.746 0-68.727-18.982-18.976-49.757-18.977-68.727 0l-39.762 39.754 0.273 0.249-385.662 385.661zM451.365 384.103z" horiz-adv-x="1024" /> + + + <glyph glyph-name="website" unicode="" d="M777.073418 147.443038c-30.460759 21.387342-40.83038 40.182278-76.47595 53.792405 25.275949 60.273418 40.182278 83.605063 42.126583 154.896203H887.898734c-3.888608-99.159494-45.367089-143.878481-110.825316-208.688608zM136.101266 356.13164600000005h167.210126c1.944304-71.291139 16.850633-94.622785 42.126583-154.896203-34.997468-13.610127-68.050633-31.756962-98.511393-53.792405C181.468354 212.25316499999997 139.989873 256.97215200000005 136.101266 356.13164600000005z m103.048101 259.888607c29.164557-23.979747 61.56962-42.774684 96.567089-57.681012-19.443038-53.792405-30.460759-90.734177-31.756962-152.951899H136.101266c3.240506 90.734177 46.663291 147.767089 103.048101 210.632911z m309.144304-209.98481V523.989873c47.311392 1.296203 71.291139 10.36962 114.065823 25.27595 18.146835-51.2 28.516456-84.901266 30.460759-143.23038H548.293671z m104.344304-195.078481c-40.182278 12.962025-60.273418 20.091139-104.344304 21.387342V356.13164600000005h144.526582c-1.944304-68.050633-16.202532-88.141772-40.182278-145.174684z m36.941772-57.681013c31.756962-12.313924 39.534177-28.516456 66.75443-47.311392-51.848101-44.718987-114.713924-73.883544-182.116455-84.901266 36.941772 37.589873 90.734177 82.308861 115.362025 132.212658z m-163.321519-137.397468l22.035443 165.913924c40.182278-1.296203 56.38481-7.777215 92.678481-18.794937-27.220253-56.38481-66.106329-106.288608-113.417722-147.118987h-1.296202z m-75.827848 5.18481c-67.402532 11.017722-130.268354 40.83038-182.764557 84.901266 27.868354 19.443038 57.681013 34.997468 88.789873 47.311392 23.331646-48.607595 55.088608-93.326582 93.974684-132.212658z m47.311392 335.068355v-123.787342c-44.070886-1.296203-64.162025-8.425316-104.344304-21.387342-23.979747 57.681013-38.237975 77.124051-40.182278 145.174684h144.526582zM383.675949 549.265823c42.774684-14.906329 66.75443-23.331646 114.065823-25.27595v-117.95443H353.21519c1.944304 58.329114 12.313924 92.03038 30.460759 143.23038z m-37.589873 57.032911c-31.756962 12.962025-60.921519 30.460759-88.141772 51.848101 53.792405 51.848101 115.362025 91.382278 192.486076 104.344304-44.718987-44.718987-80.364557-97.863291-104.344304-156.192405z m151.655696 161.377215v-193.782278c-44.070886 1.296203-64.162025 9.073418-103.696202 22.683544 29.164557 68.698734 49.903797 127.027848 102.4 171.098734h1.296202z m75.827848-4.536708c77.772152-13.610127 149.711392-49.903797 206.744304-104.344304-29.164557-22.035443-46.01519-37.589873-80.364557-51.848102-25.275949 59.625316-82.956962 112.76962-126.379747 156.192406z m-46.01519 4.536708c54.440506-46.01519 97.21519-104.992405 124.435443-171.098734-39.534177-13.610127-59.625316-21.387342-103.696202-22.683544l-22.035443 193.782278h1.296202z m-31.10886-751.149367c-46.663291 38.886076-62.865823 88.789873-91.382279 147.118988 36.293671 11.665823 53.144304 17.498734 93.326582 18.794936v-165.913924h-1.944303zM887.898734 406.035443h-145.174683c-1.296203 61.56962-12.313924 98.511392-31.756962 152.303798 37.589873 15.55443 57.032911 33.053165 88.789873 57.681012 56.38481-62.865823 84.901266-119.898734 88.141772-209.98481z m-375.898734 427.746835c-244.334177 0-442.005063-197.670886-442.005063-442.005063S267.665823-50.227847999999994 512-50.227847999999994s442.005063 197.670886 442.005063 442.005063S756.334177 833.782278 512 833.782278z" horiz-adv-x="1024" /> + + + <glyph glyph-name="next" unicode="" d="M948.066926 382.958838l-411.990051-412.24426c-18.47333-18.47333-48.417689-18.47333-66.875207 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L814.691135 383.088983 467.512212 730.269123c-18.466032 18.458735-18.466032 48.405526 0 66.873991 18.468465 18.464816 48.410391 18.464816 66.872774 0l38.682336-38.682336-0.261507-0.239614 375.259894-375.265975v0.003649m-378.312834 0L157.756743-29.28542200000004c-18.47333-18.47333-48.415256-18.47333-66.872775 0-18.47333 18.461167-18.47333 48.405526 0 66.875207L436.369787 383.088983 89.19208 730.269123c-18.4636 18.458735-18.4636 48.405526 0 66.873991 18.470898 18.464816 48.415256 18.464816 66.872774 0l38.692067-38.682336-0.266372-0.239614 375.267191-375.265975-0.004865 0.003649m0 0z" horiz-adv-x="1024" /> + + + <glyph glyph-name="component" unicode="" d="M917.376 652.544L500.8 891.2a34.304 34.304 0 0 1-34.176 0L50.112 652.48a33.92 33.92 0 0 1-17.088-29.376v-477.44c0-12.16 6.528-23.296 17.088-29.44l416.512-238.72a35.136 35.136 0 0 1 34.176 0l416.576 238.72a33.92 33.92 0 0 1 17.088 29.44v477.44a33.92 33.92 0 0 1-17.088 29.44z m-51.264-487.36l-382.4-219.136-382.336 219.136V603.52l382.336 219.136 382.4-219.136v-438.272zM198.784 535.488a33.792 33.792 0 0 1 12.544-46.4l237.824-136.32V83.20000000000005c0-18.816 15.232-33.92 34.176-33.92a33.92 33.92 0 0 1 34.176 33.92V352.384l238.656 136.832a33.856 33.856 0 0 1 12.544 46.4 34.368 34.368 0 0 1-46.72 12.416L483.712 411.52 245.504 548.0319999999999a34.432 34.432 0 0 1-46.72-12.544z" horiz-adv-x="1024" /> + + + <glyph glyph-name="more" unicode="" d="M224 288c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z m288 0c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z m288 0c-52.928 0-96 43.072-96 96s43.072 96 96 96 96-43.072 96-96-43.072-96-96-96z" horiz-adv-x="1024" /> + + + <glyph glyph-name="login-wechat" unicode="" d="M516.464646 896C233.714646 896 4.464646 666.75 4.464646 384S233.714646-128 516.464646-128s512 229.25 512 512S799.214646 896 516.464646 896z m-74-523.375c-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.75-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.5-1.125-0.5-1.875-0.25-0.75-0.25-1.125-0.5-1.875s-0.5-1.125-0.5-1.875c-0.25-0.75-0.25-1.125-0.5-1.875s-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875-0.25-1.125-0.5-1.875c0-0.75-0.25-1.125-0.25-1.875s-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875-0.25-1.125-0.25-1.875 0-1.125-0.25-1.875c0-0.75-0.25-1.125-0.25-1.875s0-1.125-0.25-1.875c0-0.75 0-1.125-0.25-1.875 0-0.75 0-1.125-0.25-1.875v-22.5c0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0-1.125 0.25-1.875 0-0.75 0.25-1.125 0.25-1.875s0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.25-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875l0.25-0.875c-4.25-0.25-8.625-0.75-12.75-0.75-3.75-0.25-7.25-0.25-11-0.25-3.5 0-7 0-10.5 0.25-7.25 0.25-14 0.875-20.75 1.875-4.25 0.5-8.125 1.125-12.375 1.875-3.5 0.5-6.75 1.125-10.25 1.875-3 0.5-6.25 1.125-9.25 1.875-3 0.75-5.875 1.125-8.875 1.875-2.75 0.75-5.875 1.125-8.875 1.875-2.75 0.5-5.625 1.125-8.375 1.625l-3.25-1.625-3.75-1.875-4 1.375-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-2.75-1.375-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-3.75-1.875-2.5-1.375 0.5 1.375 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.75 1.875 0.5 1.125c-0.5 0.25-0.75 0.5-1.125 0.75-0.875 0.75-1.625 1.125-2.5 1.875s-1.625 1.125-2.5 1.875-1.625 1.125-2.5 1.875c-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.625 1.125-2.375 1.875-0.75 0.75-1.375 1.125-2.375 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-2.125 1.875-0.75 0.75-1.375 1.125-1.875 1.875-0.75 0.75-1.375 1.125-1.875 1.875l-1.875 1.875-1.875 1.875-1.875 1.875-1.875 1.875c-0.75 0.75-1.125 1.125-1.625 1.875s-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-1.125 1.125-1.625 1.875-0.875 1.125-1.625 1.875c-0.5 0.75-0.875 1.125-1.625 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.375 1.875-0.5 0.75-0.875 1.125-1.125 1.875-0.5 0.75-0.875 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.5 0.75-0.75 1.125-1.125 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.75 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.875 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.75 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.5 1.125-0.5 1.875-0.25 0.75-0.25 1.125-0.5 1.875s-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.5 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875-0.25 1.125-0.25 1.875 0 1.125-0.25 1.875c0 0.75 0 1.125-0.25 1.875 0 0.75 0 1.125-0.25 1.875 0 0.75 0 1.125-0.25 1.875V457.25v1.875 1.875 1.875 1.875 1.875 0.875 0.875 1.875 1.875 1.875 1.875 1.875 1.875c0 0.75 0 1.125 0.25 1.875 0 0.75 0 1.125 0.25 1.875 0 0.75 0 1.125 0.25 1.875 0 0.75 0.25 1.125 0.25 1.875s0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.25 1.875 0.25 1.125 0.5 1.875c0 0.75 0.25 1.125 0.5 1.875s0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.25 1.125 0.5 1.875 0.5 1.125 0.5 1.875c0.25 0.75 0.5 1.125 0.5 1.875 0.25 0.75 0.5 1.125 0.5 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.75 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.5 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 0.875 1.875 0.25 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.75 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.125 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.375 1.875 0.5 0.75 0.875 1.125 1.625 1.875 0.5 0.75 0.875 1.125 1.625 1.875 0.5 0.75 1.125 1.125 1.625 1.875s1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875 1.125 1.125 1.625 1.875l1.875 1.875 1.875 1.875 1.875 1.875 1.875 1.875c0.75 0.75 1.375 1.125 1.875 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.125 1.875 0.75 0.75 1.375 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.75 0.75 1.625 1.125 2.375 1.875 0.875 0.75 1.625 1.125 2.5 1.875s1.625 1.125 2.5 1.875 1.875 1.125 2.5 1.875c0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 2.75 1.875 0.875 0.75 1.875 1.125 3 1.875 0.875 0.75 2.125 1.125 3 1.875s2.125 1.125 3 1.875c1.125 0.75 2.125 1.125 3.25 1.875 1.125 0.75 2.375 1.125 3.25 1.875 1.125 0.75 2.375 1.125 3.5 1.875 1.125 0.75 2.375 1.125 3.75 1.875 1.125 0.75 2.5 1.125 3.75 1.875 1.375 0.75 2.5 1.125 4 1.875 1.375 0.75 2.75 1.125 4.25 1.875 1.375 0.75 2.75 1.125 4.25 1.875 1.375 0.75 3 1.125 4.375 1.875 1.625 0.75 3 1.125 4.625 1.875 1.625 0.75 3.25 1.125 4.875 1.875 1.875 0.75 3.5 1.125 5.375 1.875s3.75 1.125 5.625 1.875c2.125 0.75 4.25 1.125 6 1.875 2.375 0.75 4.375 1.125 6.75 1.875 2.5 0.75 4.875 1.125 7.5 1.875 2.75 0.75 5.625 1.125 8.625 1.875 3.5 0.75 6.75 1.125 10.25 1.875 4.375 0.75 8.875 1.375 13.25 1.875 11 1.125 22.125 1.875 33.25 1.875h2.5c11.125 0 22.375-0.75 33.5-1.875 4.375-0.5 8.875-1.125 13.25-1.875 3.5-0.5 7-1.125 10.25-1.875 2.75-0.5 5.875-1.125 8.625-1.875 2.5-0.5 5.125-1.125 7.625-1.875 2.375-0.5 4.625-1.125 6.75-1.875 2.125-0.5 4.25-1.125 6.25-1.875 1.875-0.75 4-1.125 5.875-1.875s3.75-1.125 5.375-1.875c1.625-0.75 3.5-1.125 5.125-1.875 1.625-0.75 3.25-1.125 4.875-1.875 1.625-0.75 3-1.125 4.625-1.875 1.375-0.75 3-1.125 4.375-1.875s2.75-1.125 4.25-1.875c1.375-0.75 2.75-1.125 4-1.875 1.375-0.75 2.5-1.125 3.75-1.875 1.125-0.75 2.5-1.125 3.75-1.875 1.125-0.75 2.375-1.125 3.5-1.875 1.125-0.75 2.375-1.125 3.5-1.875 1.125-0.75 2.375-1.125 3.25-1.875 1.125-0.75 2.125-1.125 3.25-1.875 1.125-0.75 2.125-1.125 3-1.875s2.125-1.125 3-1.875 1.875-1.125 3-1.875c0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.75-1.875 0.875-0.75 1.875-1.125 2.5-1.875 0.875-0.75 1.625-1.125 2.5-1.875s1.625-1.125 2.5-1.875 1.625-1.125 2.375-1.875c0.75-0.75 1.625-1.125 2.375-1.875 0.75-0.75 1.625-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.375-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 2.125-1.875 0.75-0.75 1.375-1.125 1.875-1.875 0.75-0.75 1.375-1.125 1.875-1.875l1.875-1.875 1.875-1.875 1.875-1.875 1.875-1.875c0.75-0.75 1.125-1.125 1.625-1.875s1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 1.125-1.125 1.625-1.875 0.875-1.125 1.625-1.875c0.5-0.75 0.875-1.125 1.625-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.375-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.875-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 1.125-1.875 0.5-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.75-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.875-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.75-1.875 0.25-0.75 0.5-1.125 0.5-1.875 0.25-0.75 0.5-1.125 0.5-1.875 0.25-0.75 0.25-1.125 0.5-1.875s0.5-1.125 0.5-1.875c0.25-0.75 0.25-1.125 0.5-1.875s0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875 0.25-1.125 0.5-1.875c0-0.5 0.25-0.75 0.25-1.125-4.625 0.5-9.25 0.875-14 1.125-3.5 0.25-7 0.25-10.75 0.25-4 0-8.125 0-12.125-0.25-6.75-0.25-13.25-0.875-19.5-1.875-3.75-0.5-7.625-1.125-11.375-1.875-3-0.5-5.875-1.125-8.875-1.875-2.5-0.5-5.125-1.125-7.5-1.875-2.125-0.5-4.375-1.125-6.5-1.875-1.875-0.5-4-1.125-5.875-1.875-1.875-0.5-3.5-1.125-5.375-1.875-1.625-0.75-3.25-1.125-4.875-1.875-1.625-0.75-3-1.125-4.625-1.875-1.375-0.75-3-1.125-4.375-1.875s-2.75-1.125-4.25-1.875c-1.375-0.75-2.5-1.125-4-1.875-1.125-0.75-2.5-1.125-3.75-1.875-1.125-0.75-2.375-1.125-3.5-1.875-1.125-0.75-2.375-1.125-3.5-1.875-1.125-0.75-2.125-1.125-3.25-1.875-0.875-0.75-2.125-1.125-3-1.875s-2.125-1.125-3-1.875-1.875-1.125-3-1.875c-0.875-0.75-1.875-1.125-2.75-1.875-0.875-0.75-1.875-1.125-2.75-1.875-0.875-0.75-1.875-1.125-2.5-1.875-0.875-0.75-1.625-1.125-2.5-1.875s-1.625-1.125-2.5-1.875c-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.625-1.125-2.375-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-2.125-1.875-0.75-0.75-1.375-1.125-1.875-1.875l-1.875-1.875-1.875-1.875-1.875-1.875c-0.75-0.75-1.125-1.125-1.625-1.875s-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-1.125-1.125-1.625-1.875-0.875-1.125-1.625-1.875c-0.5-0.75-0.875-1.125-1.625-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.375-1.875-0.5-0.75-0.875-1.125-1.125-1.875-0.5-0.75-0.875-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.5-0.75-0.75-1.125-1.125-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.75-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.875-1.875-0.25-0.75-0.5-1.125-0.75-1.875-3.125-4.625-3.375-5.125-3.625-5.75z m433.625-71.25v-11.375c0-0.5 0-0.875-0.25-1.625 0-0.5 0-0.875-0.25-1.625 0-0.5 0-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.25-1.625 0-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.25-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.5-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.75-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.5-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.25-0.5-0.75-0.875-0.875-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.75-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.125-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625-0.5-0.5-0.875-0.875-1.375-1.625l-1.625-1.625-1.625-1.625c-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.5-0.5-1.125-0.875-1.625-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.125-0.875-1.875-1.625-0.75-0.5-1.375-0.875-1.875-1.625-0.75-0.5-1.375-0.875-1.875-1.625-0.75-0.5-1.375-0.875-2.125-1.625-0.75-0.5-1.375-0.875-2.125-1.625l-0.75-0.5 0.25-0.875 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.5-1.625 0.25-1.125-2.125 1.125-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-2.75 1.625-0.5 0.25-0.875-0.25c-2.125-0.5-4.25-0.875-6-1.625-2.125-0.5-4.25-0.875-6.25-1.625-2.125-0.5-4.25-0.875-6.5-1.625-2.375-0.5-4.375-0.875-6.75-1.625-2.375-0.5-4.875-1.125-7.25-1.625-2.75-0.5-5.375-1.125-8.125-1.625-3.25-0.5-6.5-1.125-9.75-1.625-5.375-0.75-10.75-1.125-15.875-1.625-2.75-0.25-5.875-0.25-8.625-0.25-3.75 0-7.5 0-11.125 0.25-6.5 0.25-12.75 0.75-19.125 1.625-3.75 0.5-7.5 0.875-11 1.625-2.75 0.5-5.875 0.875-8.625 1.625-2.375 0.5-4.875 0.875-7.25 1.625-2.125 0.5-4.25 0.875-6.25 1.625-1.875 0.5-3.75 0.875-5.625 1.625-1.875 0.5-3.5 0.875-5.125 1.625-1.625 0.5-3.25 0.875-4.875 1.625-1.375 0.5-3 0.875-4.375 1.625-1.375 0.5-2.75 0.875-4.25 1.625-1.375 0.5-2.5 0.875-4 1.625-1.125 0.5-2.5 0.875-3.75 1.625-1.125 0.5-2.375 0.875-3.75 1.625-1.125 0.5-2.375 0.875-3.5 1.625-1.125 0.5-2.125 0.875-3.25 1.625-1.125 0.5-2.125 0.875-3.25 1.625-0.875 0.5-2.125 0.875-3 1.625-0.875 0.5-1.875 0.875-3 1.625-0.875 0.5-1.875 0.875-2.75 1.625-0.875 0.5-1.875 0.875-2.75 1.625-0.875 0.5-1.875 0.875-2.5 1.625-0.875 0.5-1.625 0.875-2.5 1.625-0.875 0.5-1.625 0.875-2.5 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.625 0.875-2.375 1.625-0.75 0.5-1.375 0.875-2.375 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-2.125 1.625-0.75 0.5-1.375 0.875-1.875 1.625-0.75 0.5-1.375 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.75 0.5-1.125 0.875-1.875 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625-0.5 0.5-1.125 0.875-1.625 1.625l-1.625 1.625-1.625 1.625c-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.375 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.875 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.5 0.5-0.75 0.875-1.125 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.75 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.875 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.75 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.5 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.5 1.625-0.25 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5-0.25 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625 0 0.5 0 0.875-0.25 1.625v1.625 1.625 1.625 3.25 1.625 3.25 1.375 1.625 1.625 1.625 1.625 1.625 1.625 1.625 1.625 1.625c0 0.5 0 0.875 0.25 1.625 0 0.5 0 0.875 0.25 1.625 0 0.5 0 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0 0.5 0.25 0.875 0.25 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.25 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.5 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.75 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.5 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 0.875 1.625 0.25 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.75 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.125 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625 0.5 0.5 0.875 0.875 1.375 1.625l1.625 1.625 1.625 1.625c0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.625 1.625 0.5 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.125 0.875 1.875 1.625 0.75 0.5 1.375 0.875 1.875 1.625 0.75 0.5 1.375 0.875 1.875 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.125 1.625 0.75 0.5 1.375 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.75 0.5 1.625 0.875 2.375 1.625 0.875 0.5 1.625 0.875 2.5 1.625 0.875 0.5 1.625 0.875 2.5 1.625 0.875 0.5 1.875 0.875 2.5 1.625 0.875 0.5 1.875 0.875 2.75 1.625 0.875 0.5 1.875 0.875 2.75 1.625 0.875 0.5 1.875 0.875 3 1.625 0.875 0.5 2.125 0.875 3 1.625 1.125 0.5 2.125 0.875 3.25 1.625 1.125 0.5 2.125 0.875 3.25 1.625 1.125 0.5 2.375 0.875 3.5 1.625 1.125 0.5 2.375 0.875 3.75 1.625 1.125 0.5 2.5 0.875 3.75 1.625 1.375 0.5 2.5 0.875 4 1.625 1.375 0.5 2.75 0.875 4.25 1.625 1.375 0.5 3 0.875 4.375 1.625 1.625 0.5 3.25 0.875 4.875 1.625 1.625 0.5 3.5 0.875 5.125 1.625 1.875 0.5 3.75 0.875 5.875 1.625 2.125 0.5 4.25 1.125 6.25 1.625 2.375 0.5 4.875 1.125 7.25 1.625 2.75 0.5 5.875 1.125 8.625 1.625 3.75 0.75 7.5 1.125 11.125 1.625 9.25 1.125 19.125 1.625 28.875 1.625h1.375c9.25 0 18.375-0.75 27.5-1.625 3.75-0.5 7.25-0.875 10.75-1.625 2.75-0.5 5.625-0.875 8.375-1.625 2.375-0.5 4.625-0.875 7-1.625 2.125-0.5 4.25-0.875 6.25-1.625 1.875-0.5 3.75-0.875 5.625-1.625 1.625-0.5 3.5-0.875 5.125-1.625 1.625-0.5 3.25-0.875 4.625-1.625 1.375-0.5 3-0.875 4.375-1.625 1.375-0.5 2.75-0.875 4.25-1.625 1.375-0.5 2.5-0.875 4-1.625 1.125-0.5 2.5-0.875 3.75-1.625 1.125-0.5 2.375-0.875 3.5-1.625 1.125-0.5 2.375-0.875 3.5-1.625 1.125-0.5 2.125-0.875 3.25-1.625 1.125-0.5 2.125-0.875 3.25-1.625 0.875-0.5 2.125-0.875 3-1.625 0.875-0.5 1.875-0.875 3-1.625 0.875-0.5 1.875-0.875 2.75-1.625 0.875-0.5 1.875-0.875 2.75-1.625 0.875-0.5 1.875-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.875-0.5 1.625-0.875 2.5-1.625 0.75-0.5 1.625-0.875 2.375-1.625 0.75-0.5 1.625-0.875 2.375-1.625 0.75-0.5 1.375-0.875 2.375-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 2.125-1.625 0.75-0.5 1.375-0.875 1.875-1.625 0.75-0.5 1.375-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.75-0.5 1.125-0.875 1.875-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625 0.5-0.5 1.125-0.875 1.625-1.625l1.625-1.625 1.625-1.625c0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.375-1.625 0.5-0.5 0.875-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.875-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 1.125-1.625 0.5-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.75-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.875-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.75-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.5-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0.25-0.5 0.25-0.875 0.5-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0.25-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625 0-0.5 0-0.875 0.25-1.625v-11.375h-3.125zM589.714646 384c-12.625 0-25.375-12.75-25.375-25.375 0-12.75 12.75-25.375 25.375-25.375 19.375 0 31.875 12.625 31.875 25.375-0.125 12.625-12.75 25.375-31.875 25.375zM729.589646 384c-12.625 0-25.375-12.75-25.375-25.375 0-12.75 12.75-25.375 25.375-25.375 19.125 0 31.875 12.625 31.875 25.375 0 12.625-12.75 25.375-31.875 25.375zM328.714646 568.75c-19.125 0-38.375-12.625-38.375-31.625 0-19.125 19.375-31.875 38.375-31.875s31.875 12.75 31.875 31.875-12.875 31.625-31.875 31.625zM506.964646 568.75c-19.125 0-38.125-12.625-38.125-31.625 0-19.125 19.125-31.875 38.125-31.875 19.125 0 31.875 12.75 31.875 31.875s-12.875 31.625-31.875 31.625z" horiz-adv-x="1059" /> + + + <glyph glyph-name="shrink-right" unicode="" d="M52.294-28.71900000000005h899.793c16.546 0 29.999 13.405 29.999 29.999v59.974c-0.013 16.562-13.436 29.985-29.998 29.999h-899.795c-16.57 0-29.999-13.429-29.999-29.999v-59.974c0-16.617 13.429-29.999 29.999-29.999zM952.087 451.165h-479.884c-16.57 0-29.999-13.405-29.999-29.999v-59.974c0 0 0 0 0 0 0-16.572 13.428-30.01 29.997-30.022h479.885c16.571 0.013 29.999 13.448 29.999 30.022 0 0 0 0 0 0v59.974c0 16.593-13.429 29.999-29.999 29.999zM52.294 691.0840000000001h899.793c16.554 0.013 29.972 13.423 29.999 29.974v59.999c0 16.57-13.429 29.999-29.999 29.999h-899.793c-16.57 0-29.999-13.429-29.999-29.999v-59.997c0-16.546 13.429-29.975 29.999-29.975zM45.183 383.53499999999997l239.919-150.598v301.196l-239.919-150.598z" horiz-adv-x="1024" /> + + + <glyph glyph-name="spread-left" unicode="" d="M942.974 770.924h-843.556c-15.513 0-28.124-12.567-28.124-28.124v-56.226c0.012-15.527 12.596-28.111 28.123-28.124h843.559c15.534 0 28.124 12.59 28.124 28.124v56.226c0 15.578-12.59 28.124-28.124 28.124zM99.418 321.033h449.891c15.534 0 28.124 12.567 28.124 28.124v56.226c0 0 0 0 0 0 0 15.537-12.589 28.134-28.122 28.146h-449.892c-15.534-0.012-28.124-12.608-28.124-28.146 0 0 0 0 0 0v-56.226c0-15.556 12.59-28.124 28.124-28.124zM942.974 96.10900000000004h-843.556c-15.519-0.012-28.099-12.584-28.124-28.101v-56.249c0-15.534 12.59-28.124 28.124-28.124h843.556c15.534 0 28.124 12.59 28.124 28.124v56.248c0 15.513-12.59 28.103-28.124 28.102zM949.641 384.436l-224.924 141.186v-282.37l224.924 141.186z" horiz-adv-x="1024" /> + + + <glyph glyph-name="camera" unicode="" d="M884.3 648.6H704.2L679.5 698l-0.2 0.4c-1.9 3.6-3.6 6.9-5.1 9.9-12 23.4-21.5 41.9-54.1 41.9H416.7c-32.9 0-43.7-21.3-55.1-43.8-1.3-2.6-2.7-5.3-4.2-8.1l-24.8-49.7H152.4c-34 0-61.7-27.7-61.7-61.7v-488c0-34 27.7-61.7 61.7-61.7h731.9c34 0 61.7 27.7 61.7 61.7v488c0 34-27.7 61.7-61.7 61.7zM904 98.89999999999998c0-10.8-8.8-19.7-19.7-19.7H152.4c-10.8 0-19.7 8.8-19.7 19.7v488c0 10.8 8.8 19.7 19.7 19.7h206.1l36.2 72.5c1.5 2.9 2.9 5.7 4.3 8.3 10.6 20.8 11.1 20.8 17.7 20.8H620c4.6 0 5.8-0.6 5.8-0.6 2-1.2 7.2-11.2 10.9-18.5 1.6-3.1 3.3-6.5 5.3-10.1l36.2-72.4h206.1c10.8 0 19.7-8.8 19.7-19.7v-488zM525.5 565.5c-123.5 0-223.6-100.1-223.6-223.6S402 118.20000000000005 525.5 118.20000000000005s223.7 100.1 223.7 223.7c0 123.5-100.2 223.6-223.7 223.6z m0-402.5c-98.8 0-178.9 80.1-178.9 178.9 0 98.8 80.1 178.9 178.9 178.9 98.8 0 178.9-80.1 178.9-178.9 0-98.8-80.1-178.9-178.9-178.9z m246 402.5v-44.7H861v44.7h-89.5z" horiz-adv-x="1024" /> + + + <glyph glyph-name="note" unicode="" d="M987.2 384.36L512.43 859.13a84.75 84.75 0 0 1-65 24.71L111.55 864.09a84.83 84.83 0 0 1-79.65-79.65L12.15 448.57a84.57 84.57 0 0 1 24.69-65l474.8-474.8a84.91 84.91 0 0 1 119.93 0L987.2 264.41999999999996a84.9 84.9 0 0 1 0 119.94z m-39.28-80.66L592.29-51.91999999999996a29.31 29.31 0 0 0-41.37 0L76.1 422.9a29.22 29.22 0 0 0-8.49 22.38l19.74 335.88a29.29 29.29 0 0 0 27.48 27.48l335.9 19.75a29.32 29.32 0 0 0 22.38-8.52l474.8-474.8a29.31 29.31 0 0 0 0.01-41.37zM236.86 659.14c-50.92-50.95-50.92-133.8 0-184.72a130.61 130.61 0 1 1 184.71 184.72c-50.89 50.86-133.77 50.86-184.71 0zM382.29 513.7c-28.38-28.38-77.78-28.38-106.15 0a75.08 75.08 0 1 0 106.15 0z" horiz-adv-x="1024" /> + + + <glyph glyph-name="refresh" unicode="" d="M928 810.666667c-18.133333 0-32-13.866667-32-32v-164.266667C816 747.733333 669.866667 832 512 832 264.533333 832 64 631.4666669999999 64 384s200.533333-448 448-448c230.4 0 422.4 172.8 445.866667 402.133333 2.133333 17.066667-10.666667 33.066667-28.8 35.2-17.066667 2.133333-33.066667-10.666667-35.2-28.8C873.6 148.26666699999998 709.333333 0 512 0c-212.266667 0-384 171.733333-384 384s171.733333 384 384 384c137.6 0 264.533333-74.666667 332.8-192H693.333333c-18.133333 0-32-13.866667-32-32s13.866667-32 32-32h266.666667V778.666667c0 18.133333-14.933333 32-32 32z" horiz-adv-x="1024" /> + + + <glyph glyph-name="female" unicode="" d="M774.4 800c-48 35.2-108.8 51.2-172.8 51.2-105.6 0-208-51.2-268.8-150.4-89.6-134.4-57.6-313.6 60.8-416l-32-51.2-188.8 121.6S128 384 108.8 352c-22.4-35.2 22.4-64 22.4-64l188.8-121.6-105.6-163.2s-19.2-32 16-51.2c38.4-22.4 57.6 12.8 57.6 12.8l102.4 160 185.6-121.6s48-28.8 70.4 6.4c19.2 28.8-25.6 57.6-25.6 57.6L432 192l32 48c44.8-22.4 92.8-32 137.6-32 105.6 0 208 51.2 268.8 150.4 96 147.2 51.2 345.6-96 441.6z m35.2-400c-44.8-67.2-118.4-108.8-201.6-108.8-44.8 0-92.8 12.8-131.2 38.4-112 73.6-147.2 220.8-73.6 332.8 44.8 64 121.6 105.6 201.6 108.8 44.8 0 92.8-12.8 131.2-38.4 112-73.6 147.2-220.8 73.6-332.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="male" unicode="" d="M889.6 800h-240s-35.2 0-38.4-41.6c0-19.2 16-38.4 38.4-38.4h140.8l-179.2-179.2C556.8 582.4 489.6 608 416 608 240 608 96 464 96 288s144-320 320-320 320 144 320 320c0 73.6-25.6 140.8-67.2 195.2l179.2 179.2v-140.8c0-22.4 19.2-38.4 38.4-38.4 22.4 0 38.4 19.2 38.4 41.6V764.8h3.2C924.8 800 889.6 800 889.6 800zM416 48c-131.2 0-236.8 105.6-236.8 236.8 0 131.2 105.6 236.8 236.8 236.8s236.8-105.6 236.8-236.8c0-131.2-105.6-236.8-236.8-236.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="screen-restore" unicode="" d="M582.6 454.6v320h50V540l274 274 35.4-35.4-274-274h234.6v-50h-320zM117.4-46l274 274v-234.6h50v320h-320v-50H356l-274-274 35.4-35.4zM132 764h302V814H82v-352h50V764z m760-760H590v-50h352V306h-50v-302z" horiz-adv-x="1024" /> + + + <glyph glyph-name="password" unicode="" d="M519.2 343.29999999999995c-41.1 0-74.4-33.3-74.4-74.4 0-29.7 17.5-55 42.5-67.1v-81.9c0-17.6 14.3-31.9 31.9-31.9 17.6 0 31.9 14.3 31.9 31.9v81.9c25.1 12 42.5 37.4 42.5 66.9 0 41.3-33.2 74.6-74.4 74.6zM827.6-62.10000000000002H189.4c-35.9 0-65.1 29.2-65.1 65.1V428.4c0 35.9 29.2 65.1 65.1 65.1h638.2c17.3 0 33.7-6.7 46-19.1 12.3-12.3 19.1-28.7 19.1-46V3c0-35.9-29.2-65.1-65.1-65.1zM231.9 427.2c-34.8 0-41.3-6.6-41.3-41.3v-340.4c0-34.8 6.6-41.3 41.3-41.3h553.2c34.8 0 41.3 6.6 41.3 41.3V385.9c0 34.8-6.6 41.3-41.3 41.3H231.9zM519.2 86.70000000000005c-18.3 0-33.2 14.8-33.2 33.2V201c-26.3 12.8-42.6 38.8-42.6 67.8 0 41.8 33.9 75.7 75.7 75.7s75.7-33.9 75.7-75.7c0-29-16.3-55-42.5-67.8v-81.1c0.1-18.2-14.9-33.2-33.1-33.2zM519.2 342c-40.4 0-73.2-32.9-73.2-73.2 0-28.3 16.1-53.6 41.9-65.8l0.7-0.4V120c0-17 13.7-30.7 30.7-30.7S550 103.10000000000002 550 120v82.6l0.7 0.4c25.8 12.3 41.9 37.5 41.9 65.8-0.2 40.4-33.1 73.2-73.4 73.2zM207 523.1c-9.1 0-17.6 3.5-23.9 10-6.4 6.4-10 15-10 23.9v2h-0.2l0.2 1.4c0.1 0.5 0.1 0.9 0.2 1.4l0.2 1c0.1 0.6 0.2 1.4 0.4 2 15.3 75.7 57 144.2 117.2 193 29.9 24.2 63.4 43 99.8 56 37.5 13.3 77 20.2 117.5 20.2 61 0 120.8-16.3 173-47.2 50.6-29.9 93-72.8 122.5-123.8 4-5.6 6.1-12.2 6.1-19.2 0-18.3-15-33.3-33.3-33.3-13.2 0-25.1 7.7-30.4 19.8-49.2 84.6-140.4 137.4-238 137.4-128.1 0-238.2-87.1-267.6-211.8v-0.2c-0.7-18.4-15.4-32.6-33.7-32.6z" horiz-adv-x="1024" /> + + + <glyph glyph-name="senior" unicode="" d="M719.9 249.39999999999998L514.7 379.5V485.1C615.6 419 731.5 344 731.5 344s139.2-45.6 139.2 106.5c0 93-172.5 112.1-197.2 11.8l-69.6 47.3s24.2 101.5 162.4 106.5c138.2 4.9 192-94.6 190.9-199.6-1.2-104.7-136-198.3-237.3-167.1zM561 414c-4-19-23-33.7-47.6-33.7l-6.9 4.3-217.3 137.8S171 555.2 160.8 439c-10.2-116.1 147.4-129.5 186.8-23.8l81.7-47.6s-65.1-119.1-198.5-119.1C97.3 248.5 0.6 423.8 114 546.3c113.5 122.4 218.6 64.6 257 35.7 16.4-12.4 85.3-57.9 158.6-105.9l3.1-2.4c28.3-18.2 33.4-35.6 28.3-59.7zM434.1 149.70000000000005h212c16.7 0 30.3-13.6 30.3-30.3v-15.1c0-16.7-13.6-30.3-30.3-30.3h-212c-16.7 0-30.3 13.6-30.3 30.3v15.1c0 16.8 13.6 30.3 30.3 30.3z" horiz-adv-x="1024" /> + + + <glyph glyph-name="theme" unicode="" d="M512 800C229.696 800 0 570.304 0 288c0-90.368 30.304-174.496 85.344-236.896 55.264-62.624 129.152-97.12 208.128-97.12 81.568 0 161.536 36.832 231.264 106.592l2.272 2.496c65.792 81.472 132.896 121.056 205.088 121.056 46.72 0 89.216-15.872 126.688-29.92 30.336-11.328 56.576-21.12 81.216-21.12C1024 133.08799999999997 1024 241.664 1024 288c0 282.304-229.696 512-512 512z m428-602.912c-13.088 0-35.296 8.288-58.784 17.088-40.48 15.136-90.848 33.952-149.12 33.952-92.352 0-175.328-46.944-253.76-143.456-57.184-56.704-121.056-86.688-184.832-86.688-60.352 0-117.216 26.784-160.128 75.456C88.64 144.12800000000004 64 213.216 64 288 64 535.04 264.96 736 512 736s448-200.96 448-448c0-27.328-1.952-90.912-20-90.912zM800.704 379.93600000000004m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM457.024 582.624m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM672.704 555.9359999999999m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM291.392 443.936m-64 0a64 64 0 1 1 128 0 64 64 0 1 1-128 0ZM278.4 197.24800000000005m-96 0a96 96 0 1 1 192 0 96 96 0 1 1-192 0Z" horiz-adv-x="1024" /> + + + <glyph glyph-name="tread" unicode="" d="M860.8 172.79999999999995l6.4-57.6-6.4 57.6c12.8 0 25.6 3.2 35.2 12.8 6.4 9.6 6.4 22.4 3.2 32l57.6 12.8-57.6-12.8L800 553.6c-6.4 28.8-25.6 51.2-48 64-9.6 6.4-22.4 9.6-32 9.6H182.4c-22.4 3.2-41.6-6.4-51.2-25.6-6.4-9.6-6.4-19.2-9.6-28.8v-342.4c0-19.2 9.6-38.4 28.8-48 6.4-3.2 12.8-6.4 19.2-6.4h192l19.2-25.6 147.2-188.8c6.4-9.6 19.2-12.8 28.8-9.6 16 3.2 25.6 19.2 22.4 35.2l-9.6 118.4-6.4 67.2h297.6z m-233.6-57.6l9.6-128c3.2-28.8-9.6-54.4-28.8-73.6-35.2-32-92.8-28.8-124.8 6.4l-156.8 195.2H179.2c-19.2 0-38.4 6.4-57.6 16-35.2 19.2-57.6 57.6-57.6 99.2V572.8c0 19.2 6.4 38.4 16 57.6 19.2 38.4 57.6 60.8 99.2 54.4h537.6c67.2-3.2 121.6-48 137.6-112l102.4-339.2c6.4-28.8 3.2-57.6-12.8-80-19.2-22.4-48-38.4-76.8-38.4h-240zM304 627.2v-451.2h57.6V627.2H304z" horiz-adv-x="1024" /> + + + <glyph glyph-name="praise" unicode="" d="M860.8 595.2h-297.6l6.4 67.2 9.6 118.4c3.2 16-6.4 32-22.4 35.2-9.6 3.2-22.4 0-28.8-9.6l-147.2-188.8-19.2-25.6h-192c-6.4 0-12.8-3.2-19.2-6.4-19.2-9.6-28.8-28.8-28.8-48v-342.4c0-9.6 3.2-22.4 9.6-28.8 9.6-19.2 28.8-28.8 48-25.6h537.6c12.8 0 22.4 3.2 32 9.6 25.6 12.8 44.8 35.2 48 64l102.4 336 57.6-12.8-57.6 12.8c3.2 9.6 0 22.4-3.2 32-9.6 6.4-22.4 12.8-35.2 12.8l6.4 57.6-6.4-57.6z m-233.6 57.6h240c28.8 0 57.6-12.8 76.8-38.4 16-22.4 19.2-54.4 12.8-80l-102.4-339.2c-16-64-70.4-108.8-137.6-112H179.2c-41.6-3.2-80 19.2-99.2 54.4-9.6 19.2-16 38.4-16 57.6V537.6c0 41.6 22.4 80 57.6 99.2 19.2 9.6 38.4 12.8 57.6 16h144L480 848c32 35.2 89.6 38.4 124.8 6.4 19.2-19.2 32-44.8 28.8-73.6l-6.4-128z m-323.2-512h57.6V592H304v-451.2z" horiz-adv-x="1024" /> + + + <glyph glyph-name="star-fill" unicode="" d="M752-43.200000000000045c-9.6 0-20.8 3.2-30.4 8l-208 104-209.6-104c-20.8-11.2-48-9.6-67.2 4.8-19.2 14.4-30.4 40-25.6 64l43.2 224L89.6 411.2C72 428.8 65.6 456 72 478.4c8 24 27.2 41.6 52.8 44.8l228.8 41.6 102.4 208c11.2 22.4 33.6 36.8 57.6 36.8s48-14.4 57.6-36.8l102.4-208 228.8-40c24-3.2 44.8-20.8 51.2-44.8 8-24 1.6-49.6-16-67.2L772.8 257.6l41.6-224c4.8-25.6-6.4-49.6-25.6-64-9.6-8-22.4-12.8-36.8-12.8z" horiz-adv-x="1024" /> + + + <glyph glyph-name="rate" unicode="" d="M959.008 489.984l-308 47.008L512 832 372.992 536.992l-308-47.008 223.008-228-52.992-324L512 90.976l276.992-152.992-52.992 324zM512 156L304 39.00800000000004l40 235.008-179.008 182.016 242.016 32 104.992 224 104-224 240.992-34.016L680 273.024l36.992-235.008z" horiz-adv-x="1024" /> + + + <glyph glyph-name="template-1" unicode="" d="M512 384zM43.52 601.6l409.6-176.64c58.88-30.72 110.08 0 110.08 0l414.72 174.08 2.56 2.56c10.24 5.12 15.36 15.36 15.36 28.16 0 15.36-10.24 28.16-23.04 30.72L563.2 837.12c-56.32 23.04-97.28 0-97.28 0L46.08 660.48c-12.8-5.12-20.48-17.92-20.48-30.72s7.68-23.04 17.92-28.16z m0 0M512 222.72000000000003c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 12.8 20.48 17.92 33.28 12.8L512 276.48 988.16 486.4c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04c-2.56-2.56-7.68-2.56-10.24-2.56zM512 71.67999999999995c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 10.24 20.48 17.92 33.28 10.24L512 125.44000000000005 988.16 332.79999999999995c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04H512zM512-79.36000000000001c-2.56 0-7.68 0-10.24 2.56l-486.4 215.04c-12.8 5.12-17.92 20.48-12.8 33.28 5.12 12.8 20.48 17.92 33.28 12.8L512-25.600000000000023l476.16 209.92c12.8 5.12 28.16 0 33.28-12.8 5.12-12.8 0-28.16-12.8-33.28l-486.4-215.04c-2.56-2.56-7.68-2.56-10.24-2.56z" horiz-adv-x="1024" /> + + + <glyph glyph-name="vercode" unicode="" d="M513.807059-128C351.171765-128 58.428235 126.19294100000002 54.211765 376.16941199999997V662.287059a93.364706 93.364706 0 0 0 81.317647 88.545882 570.428235 570.428235 0 0 1 163.237647 40.357647A393.336471 393.336471 0 0 1 446.945882 872.508235a101.797647 101.797647 0 0 0 120.470589 5.421177A629.458824 629.458824 0 0 1 716.8 792.395294a1255.303529 1255.303529 0 0 1 169.863529-38.550588 98.785882 98.785882 0 0 0 79.510589-90.955294 2911.171765 2911.171765 0 0 0-3.011765-291.538824C924.611765 49.09176500000001 672.828235-128 513.807059-128z m0 963.764706a39.152941 39.152941 0 0 1-24.696471-7.830588A438.512941 438.512941 0 0 0 319.247059 734.569412a608.376471 608.376471 0 0 0-180.705883-43.369412 33.731765 33.731765 0 0 1-24.094117-30.117647v-283.708235C118.663529 155.10588199999995 389.722353-67.76470600000005 513.807059-67.76470600000005s354.183529 148.178824 391.529412 444.536471c9.035294 175.887059 0 281.901176 0 283.105882a38.550588 38.550588 0 0 1-29.515295 33.731765 1287.830588 1287.830588 0 0 0-180.705882 41.562353A676.442353 676.442353 0 0 0 536.094118 829.741176a37.345882 37.345882 0 0 1-24.094118 6.02353zM784.865882 479.171765L487.905882 198.47529399999996a40.357647 40.357647 0 0 0-49.392941-4.818823l-7.830588 6.625882-161.430588 171.068235a40.357647 40.357647 0 1 0 60.235294 55.416471l133.722353-141.552941 267.444706 252.988235a40.357647 40.357647 0 1 0 55.41647-60.235294" horiz-adv-x="1024" /> + + + <glyph glyph-name="service" unicode="" d="M895.44035 502.006246A31.340412 31.340412 0 0 1 895.44035 512.2398499999999 383.76015 383.76015 0 0 1 127.92005 512.2398499999999a31.340412 31.340412 0 0 1 0-10.233604 167.575265 167.575265 0 0 1-127.92005-159.900062V320.359775a168.854466 168.854466 0 0 1 140.712055-163.098064A351.140537 351.140537 0 0 1 401.029357-63.400375000000054h5.756402a95.940037 95.940037 0 1 1 0 63.960025 287.180512 287.180512 0 0 0-195.717677 156.062461h35.817614A40.294816 40.294816 0 0 1 287.820112 192.43972499999995V468.747033a40.294816 40.294816 0 0 1-40.934416 39.015615H191.880075A30.061212 30.061212 0 0 1 191.880075 512.2398499999999a319.800125 319.800125 0 0 0 639.60025 0 30.061212 30.061212 0 0 1 0-3.837601h-55.005622a40.294816 40.294816 0 0 1-40.934416-39.015616V192.43972499999995a40.294816 40.294816 0 0 1 40.934416-39.015615h72.274829A170.773267 170.773267 0 0 1 1023.3604 320.359775v21.746409a167.575265 167.575265 0 0 1-127.92005 159.900062zM496.329794 0.5596500000000333a31.980012 31.980012 0 1 0-31.980013-31.980012 31.980012 31.980012 0 0 0 31.980013 31.980012zM223.860087 220.582136h-49.249219A106.813242 106.813242 0 0 0 63.960025 320.359775v21.746409a106.813242 106.813242 0 0 0 110.650843 102.33604h49.249219zM959.400375 320.359775a106.813242 106.813242 0 0 0-110.650843-102.33604h-49.24922V444.442224h49.24922A106.813242 106.813242 0 0 0 959.400375 342.106184zM650.473454 750.171143l-23.665209 8.314803a31.980012 31.980012 0 0 1-19.827608-63.960025l18.548407-7.035602a31.980012 31.980012 0 1 1 24.94441 58.843223zM305.089319 674.698314A31.980012 31.980012 0 0 1 358.17614 640.1599 202.113679 202.113679 0 0 0 511.6802 716.91193a31.980012 31.980012 0 0 1 0 63.960025 263.515303 263.515303 0 0 1-206.590881-106.173641z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cellphone" unicode="" d="M785.066667 896H238.933333a102.4 102.4 0 0 1-102.4-102.4v-819.2a102.4 102.4 0 0 1 102.4-102.4h546.133334a102.4 102.4 0 0 1 102.4 102.4V793.6a102.4 102.4 0 0 1-102.4 102.4zM238.933333 827.733333h546.133334a34.133333 34.133333 0 0 0 34.133333-34.133333v-648.533333H204.8V793.6a34.133333 34.133333 0 0 0 34.133333 34.133333z m546.133334-887.466666H238.933333a34.133333 34.133333 0 0 0-34.133333 34.133333v102.4h614.4v-102.4a34.133333 34.133333 0 0 0-34.133333-34.133333zM512 8.53333299999997m-34.133333 0a34.133333 34.133333 0 1 1 68.266666 0 34.133333 34.133333 0 1 1-68.266666 0ZM426.666667 725.333333h170.666666a17.066667 17.066667 0 0 1 0 34.133334h-170.666666a17.066667 17.066667 0 0 1 0-34.133334z" horiz-adv-x="1024" /> + + + <glyph glyph-name="print" unicode="" d="M843.946667 603.733333h-47.36V725.333333a90.026667 90.026667 0 0 1-94.72 85.333334H312.32a81.493333 81.493333 0 0 1-85.333333-85.333334v-121.6H170.666667a81.493333 81.493333 0 0 1-85.333334-85.333333v-325.12a89.173333 89.173333 0 0 1 85.333334-93.866667h56.746666v-52.48a89.6 89.6 0 0 1 89.6-89.6h389.973334a89.6 89.6 0 0 1 89.6 89.6v52.48h47.36a97.706667 97.706667 0 0 1 94.72 93.866667V518.4a90.026667 90.026667 0 0 1-94.72 85.333333zM279.466667 725.333333a30.72 30.72 0 0 0 32.853333 33.706667h389.546667c18.773333 0 42.666667-11.52 42.666666-33.706667v-121.6H279.466667z m465.066666-678.4a37.546667 37.546667 0 0 0-37.546666-37.973333H317.013333a37.546667 37.546667 0 0 0-37.546666 37.973333v170.666667a37.546667 37.546667 0 0 0 37.546666 38.4h389.973334a37.546667 37.546667 0 0 0 37.546666-37.973333z m142.506667 146.346667a45.653333 45.653333 0 0 0-42.666667-42.666667h-47.786666v66.133334a89.6 89.6 0 0 1-89.6 89.6H317.013333a89.6 89.6 0 0 1-89.6-89.6v-65.28H170.666667a37.546667 37.546667 0 0 0-33.28 42.666666v324.266667A31.146667 31.146667 0 0 0 170.666667 552.106667h673.28c19.2 0 42.666667-11.52 42.666666-33.706667z m-640 281.173333h-37.546667a13.226667 13.226667 0 0 0 0 26.026667h38.826667a13.226667 13.226667 0 1 0 0-26.026667z m94.293333 0H298.666667a13.226667 13.226667 0 1 0 0 26.026667h42.666666a13.226667 13.226667 0 0 0 0-26.026667z m426.666667-116.48H248.32a13.226667 13.226667 0 0 0 0 26.026667H768a13.226667 13.226667 0 0 0 0-26.026667z" horiz-adv-x="1024" /> + + + <glyph glyph-name="cols" unicode="" d="M128 448h384V832H128z m64 320h256v-256H192zM576 832v-384h384V832z m320-320H640V768h256zM192 384h64v-384H192zM384 384h64v-384H384zM640 384h64v-384H640zM832 384h64v-384h-64z" horiz-adv-x="1024" /> + + + <glyph glyph-name="export" unicode="" d="M896.4374528 479.830016c0 26.673152-21.6236032 48.2967552-48.2967552 48.2967552H630.8069376c-26.673152 0-48.2967552-21.6236032-48.2967552-48.2967552v-83.04831147H384.69522773l-2.71428266 5.36849067c-41.336832 87.44686933-35.95195733 204.128256 150.601728 199.94487467v-108.91537067l172.19037866 164.757504L532.58267307 822.7110912v-106.57245867c-228.64418133 5.70709333-263.651328-183.517184-157.433856-314.01028266l4.6891008-5.34664534h-88.46595414c-26.673152 0-48.2967552-21.6236032-48.2967552-48.2967552v-66.78882986h-98.43616426c-26.673152 0-40.4258816-21.6236032-30.71781547-48.2967552l79.10304427-217.33485227c9.70806613-26.673152 39.20145067-48.2967552 65.87460266-48.2967552h603.70670934c23.75898453 0 37.2506624 17.16169387 33.05745066 39.76178347 0.4980736 2.77108053 0.77441707 5.619712 0.77441707 8.53497173v463.765504z m-60.37067093-306.4528896l-21.8464256 60.02223787c-9.70806613 26.673152-39.20145067 48.2967552-65.87460267 48.2967552H303.44697173v30.56708266c0 13.336576 10.81125547 24.14783147 24.14783147 24.14783147h315.28605013v107.1972352c0 13.336576 10.81125547 24.14783147 24.14783147 24.14783147h144.88917333c13.336576 0 24.14783147-10.81125547 24.14783147-24.14783147v-270.2311424z" horiz-adv-x="1024" /> + + + <glyph glyph-name="slider" unicode="" d="M228.7 683.9v-66.7H112v66.7h116.7z m333.2-266.6v-66.7H112v66.7h449.9zM295.4 150.60000000000002V84H112v66.7h183.4v-0.1z m116.6 600c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H278.8c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.3-9.9 23.5V717.1c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.3 9.9 23.5 9.9h133.3v0.1h-0.1z m66.7-533.3c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H345.3c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.5-9.9 23.5V183.89999999999998c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.3 9.9 23.5 9.9h133.4v0.1zM912 683.9v-66.7H462.1v66.7H912z m0-533.3V84H528.6v66.7h383.3v-0.1h0.1zM745.2 483.9c9 0 16.8-3.3 23.5-9.9 6.5-6.5 9.9-14.5 9.9-23.5v-133.3c0-9-3.3-16.8-9.9-23.5-6.5-6.5-14.5-9.9-23.5-9.9H612c-9 0-16.8 3.3-23.5 9.9-6.5 6.5-9.9 14.3-9.9 23.5V450.6c0 9 3.3 16.8 9.9 23.5 6.5 6.5 14.5 9.9 23.5 9.9l133.2-0.1zM912 417.3v-66.7H795.3v66.7H912z" horiz-adv-x="1024" /> + + + <glyph glyph-name="subtraction" unicode="" d="M785 348H239c-19.8 0-36 16.2-36 36s16.2 36 36 36h546c19.8 0 36-16.2 36-36s-16.2-36-36-36z" horiz-adv-x="1024" /> + + + + + </font> +</defs></svg> diff --git a/src/main/resources/static/layui/font/iconfont.ttf b/src/main/resources/static/layui/font/iconfont.ttf new file mode 100644 index 0000000..3c22a23 --- /dev/null +++ b/src/main/resources/static/layui/font/iconfont.ttf Binary files differ diff --git a/src/main/resources/static/layui/font/iconfont.woff b/src/main/resources/static/layui/font/iconfont.woff new file mode 100644 index 0000000..8c660ce --- /dev/null +++ b/src/main/resources/static/layui/font/iconfont.woff Binary files differ diff --git a/src/main/resources/static/layui/font/iconfont.woff2 b/src/main/resources/static/layui/font/iconfont.woff2 new file mode 100644 index 0000000..928d66a --- /dev/null +++ b/src/main/resources/static/layui/font/iconfont.woff2 Binary files differ diff --git a/src/main/resources/static/layui/images/face/0.gif b/src/main/resources/static/layui/images/face/0.gif new file mode 100644 index 0000000..a63f0d5 --- /dev/null +++ b/src/main/resources/static/layui/images/face/0.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/1.gif b/src/main/resources/static/layui/images/face/1.gif new file mode 100644 index 0000000..b2b78b2 --- /dev/null +++ b/src/main/resources/static/layui/images/face/1.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/10.gif b/src/main/resources/static/layui/images/face/10.gif new file mode 100644 index 0000000..556c7e3 --- /dev/null +++ b/src/main/resources/static/layui/images/face/10.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/11.gif b/src/main/resources/static/layui/images/face/11.gif new file mode 100644 index 0000000..2bfc58b --- /dev/null +++ b/src/main/resources/static/layui/images/face/11.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/12.gif b/src/main/resources/static/layui/images/face/12.gif new file mode 100644 index 0000000..1c321c7 --- /dev/null +++ b/src/main/resources/static/layui/images/face/12.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/13.gif b/src/main/resources/static/layui/images/face/13.gif new file mode 100644 index 0000000..300bbc2 --- /dev/null +++ b/src/main/resources/static/layui/images/face/13.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/14.gif b/src/main/resources/static/layui/images/face/14.gif new file mode 100644 index 0000000..43b6d0a --- /dev/null +++ b/src/main/resources/static/layui/images/face/14.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/15.gif b/src/main/resources/static/layui/images/face/15.gif new file mode 100644 index 0000000..c9f25fa --- /dev/null +++ b/src/main/resources/static/layui/images/face/15.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/16.gif b/src/main/resources/static/layui/images/face/16.gif new file mode 100644 index 0000000..34f28e4 --- /dev/null +++ b/src/main/resources/static/layui/images/face/16.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/17.gif b/src/main/resources/static/layui/images/face/17.gif new file mode 100644 index 0000000..39cd035 --- /dev/null +++ b/src/main/resources/static/layui/images/face/17.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/18.gif b/src/main/resources/static/layui/images/face/18.gif new file mode 100644 index 0000000..7bce299 --- /dev/null +++ b/src/main/resources/static/layui/images/face/18.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/19.gif b/src/main/resources/static/layui/images/face/19.gif new file mode 100644 index 0000000..adac542 --- /dev/null +++ b/src/main/resources/static/layui/images/face/19.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/2.gif b/src/main/resources/static/layui/images/face/2.gif new file mode 100644 index 0000000..7edbb58 --- /dev/null +++ b/src/main/resources/static/layui/images/face/2.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/20.gif b/src/main/resources/static/layui/images/face/20.gif new file mode 100644 index 0000000..50631a6 --- /dev/null +++ b/src/main/resources/static/layui/images/face/20.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/21.gif b/src/main/resources/static/layui/images/face/21.gif new file mode 100644 index 0000000..b984212 --- /dev/null +++ b/src/main/resources/static/layui/images/face/21.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/22.gif b/src/main/resources/static/layui/images/face/22.gif new file mode 100644 index 0000000..1f0bd8b --- /dev/null +++ b/src/main/resources/static/layui/images/face/22.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/23.gif b/src/main/resources/static/layui/images/face/23.gif new file mode 100644 index 0000000..e05e0f9 --- /dev/null +++ b/src/main/resources/static/layui/images/face/23.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/24.gif b/src/main/resources/static/layui/images/face/24.gif new file mode 100644 index 0000000..f35928a --- /dev/null +++ b/src/main/resources/static/layui/images/face/24.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/25.gif b/src/main/resources/static/layui/images/face/25.gif new file mode 100644 index 0000000..0b4a883 --- /dev/null +++ b/src/main/resources/static/layui/images/face/25.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/26.gif b/src/main/resources/static/layui/images/face/26.gif new file mode 100644 index 0000000..45c4fb5 --- /dev/null +++ b/src/main/resources/static/layui/images/face/26.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/27.gif b/src/main/resources/static/layui/images/face/27.gif new file mode 100644 index 0000000..7a4c013 --- /dev/null +++ b/src/main/resources/static/layui/images/face/27.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/28.gif b/src/main/resources/static/layui/images/face/28.gif new file mode 100644 index 0000000..fc5a0cf --- /dev/null +++ b/src/main/resources/static/layui/images/face/28.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/29.gif b/src/main/resources/static/layui/images/face/29.gif new file mode 100644 index 0000000..5dd7442 --- /dev/null +++ b/src/main/resources/static/layui/images/face/29.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/3.gif b/src/main/resources/static/layui/images/face/3.gif new file mode 100644 index 0000000..86df67b --- /dev/null +++ b/src/main/resources/static/layui/images/face/3.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/30.gif b/src/main/resources/static/layui/images/face/30.gif new file mode 100644 index 0000000..b751f98 --- /dev/null +++ b/src/main/resources/static/layui/images/face/30.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/31.gif b/src/main/resources/static/layui/images/face/31.gif new file mode 100644 index 0000000..c9476d7 --- /dev/null +++ b/src/main/resources/static/layui/images/face/31.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/32.gif b/src/main/resources/static/layui/images/face/32.gif new file mode 100644 index 0000000..9931b06 --- /dev/null +++ b/src/main/resources/static/layui/images/face/32.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/33.gif b/src/main/resources/static/layui/images/face/33.gif new file mode 100644 index 0000000..59111a3 --- /dev/null +++ b/src/main/resources/static/layui/images/face/33.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/34.gif b/src/main/resources/static/layui/images/face/34.gif new file mode 100644 index 0000000..a334548 --- /dev/null +++ b/src/main/resources/static/layui/images/face/34.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/35.gif b/src/main/resources/static/layui/images/face/35.gif new file mode 100644 index 0000000..a932264 --- /dev/null +++ b/src/main/resources/static/layui/images/face/35.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/36.gif b/src/main/resources/static/layui/images/face/36.gif new file mode 100644 index 0000000..6de432a --- /dev/null +++ b/src/main/resources/static/layui/images/face/36.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/37.gif b/src/main/resources/static/layui/images/face/37.gif new file mode 100644 index 0000000..d05f2da --- /dev/null +++ b/src/main/resources/static/layui/images/face/37.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/38.gif b/src/main/resources/static/layui/images/face/38.gif new file mode 100644 index 0000000..8b1c88a --- /dev/null +++ b/src/main/resources/static/layui/images/face/38.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/39.gif b/src/main/resources/static/layui/images/face/39.gif new file mode 100644 index 0000000..38b84a5 --- /dev/null +++ b/src/main/resources/static/layui/images/face/39.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/4.gif b/src/main/resources/static/layui/images/face/4.gif new file mode 100644 index 0000000..d52200c --- /dev/null +++ b/src/main/resources/static/layui/images/face/4.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/40.gif b/src/main/resources/static/layui/images/face/40.gif new file mode 100644 index 0000000..ae42991 --- /dev/null +++ b/src/main/resources/static/layui/images/face/40.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/41.gif b/src/main/resources/static/layui/images/face/41.gif new file mode 100644 index 0000000..b9c715c --- /dev/null +++ b/src/main/resources/static/layui/images/face/41.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/42.gif b/src/main/resources/static/layui/images/face/42.gif new file mode 100644 index 0000000..0eb1434 --- /dev/null +++ b/src/main/resources/static/layui/images/face/42.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/43.gif b/src/main/resources/static/layui/images/face/43.gif new file mode 100644 index 0000000..ac0b700 --- /dev/null +++ b/src/main/resources/static/layui/images/face/43.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/44.gif b/src/main/resources/static/layui/images/face/44.gif new file mode 100644 index 0000000..ad44497 --- /dev/null +++ b/src/main/resources/static/layui/images/face/44.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/45.gif b/src/main/resources/static/layui/images/face/45.gif new file mode 100644 index 0000000..6837fca --- /dev/null +++ b/src/main/resources/static/layui/images/face/45.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/46.gif b/src/main/resources/static/layui/images/face/46.gif new file mode 100644 index 0000000..d62916d --- /dev/null +++ b/src/main/resources/static/layui/images/face/46.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/47.gif b/src/main/resources/static/layui/images/face/47.gif new file mode 100644 index 0000000..58a0836 --- /dev/null +++ b/src/main/resources/static/layui/images/face/47.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/48.gif b/src/main/resources/static/layui/images/face/48.gif new file mode 100644 index 0000000..7ffd161 --- /dev/null +++ b/src/main/resources/static/layui/images/face/48.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/49.gif b/src/main/resources/static/layui/images/face/49.gif new file mode 100644 index 0000000..959b992 --- /dev/null +++ b/src/main/resources/static/layui/images/face/49.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/5.gif b/src/main/resources/static/layui/images/face/5.gif new file mode 100644 index 0000000..4e8b09f --- /dev/null +++ b/src/main/resources/static/layui/images/face/5.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/50.gif b/src/main/resources/static/layui/images/face/50.gif new file mode 100644 index 0000000..6e22e7f --- /dev/null +++ b/src/main/resources/static/layui/images/face/50.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/51.gif b/src/main/resources/static/layui/images/face/51.gif new file mode 100644 index 0000000..ad3f4d3 --- /dev/null +++ b/src/main/resources/static/layui/images/face/51.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/52.gif b/src/main/resources/static/layui/images/face/52.gif new file mode 100644 index 0000000..39f8a22 --- /dev/null +++ b/src/main/resources/static/layui/images/face/52.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/53.gif b/src/main/resources/static/layui/images/face/53.gif new file mode 100644 index 0000000..a181ee7 --- /dev/null +++ b/src/main/resources/static/layui/images/face/53.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/54.gif b/src/main/resources/static/layui/images/face/54.gif new file mode 100644 index 0000000..e289d92 --- /dev/null +++ b/src/main/resources/static/layui/images/face/54.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/55.gif b/src/main/resources/static/layui/images/face/55.gif new file mode 100644 index 0000000..4351083 --- /dev/null +++ b/src/main/resources/static/layui/images/face/55.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/56.gif b/src/main/resources/static/layui/images/face/56.gif new file mode 100644 index 0000000..e0eff22 --- /dev/null +++ b/src/main/resources/static/layui/images/face/56.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/57.gif b/src/main/resources/static/layui/images/face/57.gif new file mode 100644 index 0000000..0bf130f --- /dev/null +++ b/src/main/resources/static/layui/images/face/57.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/58.gif b/src/main/resources/static/layui/images/face/58.gif new file mode 100644 index 0000000..0f06508 --- /dev/null +++ b/src/main/resources/static/layui/images/face/58.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/59.gif b/src/main/resources/static/layui/images/face/59.gif new file mode 100644 index 0000000..7081e4f --- /dev/null +++ b/src/main/resources/static/layui/images/face/59.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/6.gif b/src/main/resources/static/layui/images/face/6.gif new file mode 100644 index 0000000..f7715bf --- /dev/null +++ b/src/main/resources/static/layui/images/face/6.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/60.gif b/src/main/resources/static/layui/images/face/60.gif new file mode 100644 index 0000000..6e15f89 --- /dev/null +++ b/src/main/resources/static/layui/images/face/60.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/61.gif b/src/main/resources/static/layui/images/face/61.gif new file mode 100644 index 0000000..f092d7e --- /dev/null +++ b/src/main/resources/static/layui/images/face/61.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/62.gif b/src/main/resources/static/layui/images/face/62.gif new file mode 100644 index 0000000..7fe4984 --- /dev/null +++ b/src/main/resources/static/layui/images/face/62.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/63.gif b/src/main/resources/static/layui/images/face/63.gif new file mode 100644 index 0000000..cf8e23e --- /dev/null +++ b/src/main/resources/static/layui/images/face/63.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/64.gif b/src/main/resources/static/layui/images/face/64.gif new file mode 100644 index 0000000..a779719 --- /dev/null +++ b/src/main/resources/static/layui/images/face/64.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/65.gif b/src/main/resources/static/layui/images/face/65.gif new file mode 100644 index 0000000..7bb98f2 --- /dev/null +++ b/src/main/resources/static/layui/images/face/65.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/66.gif b/src/main/resources/static/layui/images/face/66.gif new file mode 100644 index 0000000..bb6d077 --- /dev/null +++ b/src/main/resources/static/layui/images/face/66.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/67.gif b/src/main/resources/static/layui/images/face/67.gif new file mode 100644 index 0000000..6e33f7c --- /dev/null +++ b/src/main/resources/static/layui/images/face/67.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/68.gif b/src/main/resources/static/layui/images/face/68.gif new file mode 100644 index 0000000..1a6c400 --- /dev/null +++ b/src/main/resources/static/layui/images/face/68.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/69.gif b/src/main/resources/static/layui/images/face/69.gif new file mode 100644 index 0000000..a02f0b2 --- /dev/null +++ b/src/main/resources/static/layui/images/face/69.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/7.gif b/src/main/resources/static/layui/images/face/7.gif new file mode 100644 index 0000000..e6d4db8 --- /dev/null +++ b/src/main/resources/static/layui/images/face/7.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/70.gif b/src/main/resources/static/layui/images/face/70.gif new file mode 100644 index 0000000..416c5c1 --- /dev/null +++ b/src/main/resources/static/layui/images/face/70.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/71.gif b/src/main/resources/static/layui/images/face/71.gif new file mode 100644 index 0000000..c17d60c --- /dev/null +++ b/src/main/resources/static/layui/images/face/71.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/8.gif b/src/main/resources/static/layui/images/face/8.gif new file mode 100644 index 0000000..66f967b --- /dev/null +++ b/src/main/resources/static/layui/images/face/8.gif Binary files differ diff --git a/src/main/resources/static/layui/images/face/9.gif b/src/main/resources/static/layui/images/face/9.gif new file mode 100644 index 0000000..6044740 --- /dev/null +++ b/src/main/resources/static/layui/images/face/9.gif Binary files differ diff --git a/src/main/resources/static/layui/lay/modules/carousel.js b/src/main/resources/static/layui/lay/modules/carousel.js new file mode 100644 index 0000000..684fff8 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/carousel.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"":"")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"":"")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/code.js b/src/main/resources/static/layui/lay/modules/code.js new file mode 100644 index 0000000..d72b548 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/code.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/colorpicker.js b/src/main/resources/static/layui/lay/modules/colorpicker.js new file mode 100644 index 0000000..9c9cccc --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/colorpicker.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t="colorpicker",n="layui-show",l="layui-colorpicker",c=".layui-colorpicker-main",a="layui-icon-down",s="layui-icon-close",f="layui-colorpicker-trigger-span",d="layui-colorpicker-trigger-i",u="layui-colorpicker-side",p="layui-colorpicker-side-slider",g="layui-colorpicker-basis",v="layui-colorpicker-alpha-bgcolor",h="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",b="layui-colorpicker-main-input",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]="0"+i)}),r.join("")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['<div class="layui-unselect layui-colorpicker">',"<span "+("rgb"==o.format&&o.alpha?'class="layui-colorpicker-trigger-bgcolor"':"")+">",'<span class="layui-colorpicker-trigger-span" ','lay-type="'+("rgb"==o.format?o.alpha?"rgba":"torgb":"")+'" ','style="'+function(){var e="";return o.color?(e=o.color,(o.color.match(/[0-9]{1,3}/g)||[]).length>3&&(o.alpha&&"rgb"==o.format||(e="#"+C(k(P(o.color))))),"background: "+e):e}()+'">','<i class="layui-icon layui-colorpicker-trigger-i '+(o.color?a:s)+'"></i>',"</span>","</span>","</div>"].join("")),t=i(o.elem);o.size&&r.addClass("layui-colorpicker-"+o.size),t.addClass("layui-inline").html(e.elemColorBox=r),e.color=e.elemColorBox.find("."+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['<div id="layui-colorpicker'+e.index+'" data-index="'+e.index+'" class="layui-anim layui-anim-upbit layui-colorpicker-main">','<div class="layui-colorpicker-main-wrapper">','<div class="layui-colorpicker-basis">','<div class="layui-colorpicker-basis-white"></div>','<div class="layui-colorpicker-basis-black"></div>','<div class="layui-colorpicker-basis-cursor"></div>',"</div>",'<div class="layui-colorpicker-side">','<div class="layui-colorpicker-side-slider"></div>',"</div>","</div>",'<div class="layui-colorpicker-main-alpha '+(o.alpha?n:"")+'">','<div class="layui-colorpicker-alpha-bgcolor">','<div class="layui-colorpicker-alpha-slider"></div>',"</div>","</div>",function(){if(o.predefine){var e=['<div class="layui-colorpicker-main-pre">'];return layui.each(o.colors,function(i,o){e.push(['<div class="layui-colorpicker-pre'+((o.match(/[0-9]{1,3}/g)||[]).length>3?" layui-colorpicker-pre-isalpha":"")+'">','<div style="background:'+o+'"></div>',"</div>"].join(""))}),e.push("</div>"),e.join("")}return""}(),'<div class="layui-colorpicker-main-input">','<div class="layui-inline">','<input type="text" class="layui-input">',"</div>",'<div class="layui-btn-container">','<button class="layui-btn layui-btn-primary layui-btn-sm" colorpicker-events="clear">清空</button>','<button class="layui-btn layui-btn-sm" colorpicker-events="confirm">确定</button>',"</div","</div>","</div>"].join(""));e.elemColorBox.find("."+f)[0];i(c)[0]&&i(c).data("index")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i("body").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i("#layui-colorpicker"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a("width")?f=a("width")-n-s:f<s&&(f=s),d+l+s>a()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+("fixed"===i.position?0:c(1))+"px",r.style.top=d+("fixed"===i.position?0:c())+"px"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+f)),o=e.elemPicker.find("."+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr("lay-type");if(e.select(n.h,n.s,n.b),"torgb"===l&&o.find("input").val(t),"rgba"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+h).css("left",280);else{o.find("input").val(t);var a=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+h).css("left",a)}e.elemPicker.find("."+v)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),o.find("input").val(""),e.elemPicker.find("."+v)[0].style.background="",e.elemPicker.find("."+h).css("left",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=r.attr("lay-type"),n=e.elemPicker.find("."+u),l=e.elemPicker.find("."+p),c=e.elemPicker.find("."+g),y=e.elemPicker.find("."+m),C=e.elemPicker.find("."+v),w=e.elemPicker.find("."+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find("."+d),F=e.elemPicker.find(".layui-colorpicker-pre").children("div"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background="rgb("+f.r+", "+f.g+", "+f.b+")","torgb"===t&&e.elemPicker.find("."+b).find("input").val("rgb("+f.r+", "+f.g+", "+f.b+")"),"rgba"===t){var d=0;d=280*c,w.css("left",d),e.elemPicker.find("."+b).find("input").val("rgba("+f.r+", "+f.g+", "+f.b+", "+c+")"),r[0].style.background="rgba("+f.r+", "+f.g+", "+f.b+", "+c+")",C[0].style.background="linear-gradient(to right, rgba("+f.r+", "+f.g+", "+f.b+", 0), rgb("+f.r+", "+f.g+", "+f.b+"))"}o.change&&o.change(e.elemPicker.find("."+b).find("input").val())},M=i(['<div class="layui-auxiliar-moving" id="LAY-colorpicker-moving"></div'].join("")),Y=function(e){i("#LAY-colorpicker-moving")[0]||i("body").append(M),M.on("mousemove",e),M.on("mouseup",function(){M.remove()}).on("mouseleave",function(){M.remove()})};l.on("mousedown",function(e){var i=this.offsetTop,o=e.clientY,r=function(e){var r=i+(e.clientY-o),t=n[0].offsetHeight;r<0&&(r=0),r>t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on("click",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on("mousedown",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on("mousedown",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,"mousedown")}),w.on("mousedown",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on("click",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(",")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find("."+p).css("top",c),t.elemPicker.find("."+g)[0].style.background="#"+n,t.elemPicker.find("."+m).css({top:a,left:s}),"change"!==r&&t.elemPicker.find("."+b).find("input").val("#"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=e.elemPicker.find("."+b+" input"),n={clear:function(i){r[0].style.background="",e.elemColorBox.find("."+d).removeClass(a).addClass(s),e.color="",o.done&&o.done(""),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(",")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c="#"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===r.attr("lay-type")){var u=280*l.slice(l.lastIndexOf(",")+1,l.length-1);e.elemPicker.find("."+h).css("left",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c="#"+C(f),e.elemColorBox.find("."+d).removeClass(s).addClass(a);return"change"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),o=e.attr("colorpicker-events");n[o]&&n[o].call(this,e)}),t.on("keyup",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:"change")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f);e.elemColorBox.on("click",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on("click",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents("."+l)[0]&&!i(o.target).hasClass(c.replace(/\./g,""))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find("."+d).removeClass(a).addClass(s);r[0].style.background=e.color||"",e.removePicker()}}),B.on("resize",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/element.js b/src/main/resources/static/layui/lay/modules/element.js new file mode 100644 index 0000000..93610f8 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/element.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='<li lay-id="'+(i.id||"")+'"'+(i.attr?' lay-attr="'+i.attr+'"':"")+">"+(i.title||"unnaming")+"</li>";return s[0]?s.before(r):n.append(r),o.append('<div class="layui-tab-item">'+(i.content||"")+"</div>"),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('<span class="layui-unselect layui-tab-bar" '+r+"><i "+r+' class="layui-icon"></i></span>');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('<i class="layui-icon layui-unselect '+l+'">ဆ</i>');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a('<span class="'+c+'"></span>'),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append('<span class="'+y+'"></span>'),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after("<span "+i+">"+e+"</span>")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html('<span class="'+t+'-text">'+l+"</span>")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append('<i class="layui-icon layui-colla-icon">'+(l?"":"")+"</i>"),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/flow.js b/src/main/resources/static/layui/lay/modules/flow.js new file mode 100644 index 0000000..9343bcc --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/flow.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon "></i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/form.js b/src/main/resources/static/layui/lay/modules/form.js new file mode 100644 index 0000000..1297eb0 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/form.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",s="layui-this",o="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:function(e){if(!e||isNaN(e))return"只能填写数字"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter="'+e+'"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,t){if(t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name){if(/^.*\[\]$/.test(t.name)){var i=t.name.match(/^(.*)\[\]$/g)[0];a[i]=0|a[i],t.name=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]++ +"]")}/^checkbox|radio$/.test(t.type)&&!t.checked||(n[t.name]=t.value)}}),n},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),d={select:function(){var e,i="请选择",a="layui-form-select",n="layui-select-title",r="layui-select-none",d="",f=u.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find("."+n),k=m.find("input"),g=i.find("dl"),x=g.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(o),y=null,x.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||$(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr("placeholder")&&(d=""),k.val(d||""))})},T=function(){var e=g.children("dd."+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),g.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){k.focus()}),k.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=g.children("dd."+s);if(g.children("dd."+o)[0]&&"next"===t){var i=g.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n<e.index()&&!i.hasClass(s))return i.eq(0).prev()[0]?i.eq(0).prev():g.children(":last")}return a&&a[0]?a:y&&y[0]?y:e}();return l=r[t](),n=r[t]("dd:not(."+o+")"),l[0]?(y=r[t](),n[0]&&!n.hasClass(c)||!y[0]?(n.addClass(s).siblings().removeClass(s),void T()):i(t,y)):y=null};38===t&&i("prev"),40===t&&i("next"),13===t&&(e.preventDefault(),g.children("dd."+s).trigger("click"))});var $=function(e,i,a){var n=0;layui.each(x,function(){var i=t(this),l=i.text(),r=l.indexOf(e)===-1;(""===e||"blur"===a?e!==l:r)&&n++,"keyup"===a&&i[r?"addClass":"removeClass"](o)});var l=n===x.length;return i(l),l},q=function(e){var t=this.value,i=e.keyCode;return 9!==i&&13!==i&&37!==i&&38!==i&&39!==i&&40!==i&&($(t,function(e){e?g.find("."+r)[0]||g.append('<p class="'+r+'">无匹配项</p>'):g.find("."+r).remove()},"keyup"),""===t&&g.find("."+r).remove(),void T())};f&&k.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr("placeholder")&&(d=""),setTimeout(function(){$(k.val(),function(e){d||k.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),o=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['<div class="'+(h?"":"layui-unselect ")+a,(u?" layui-select-disabled":"")+'">','<div class="'+n+'">','<input type="text" placeholder="'+p+'" '+('value="'+(d?f.html():"")+'"')+(h?"":" readonly")+' class="layui-input'+(h?"":" layui-unselect")+(u?" "+c:"")+'">','<i class="layui-edge"></i></div>','<dl class="layui-anim layui-anim-upbit'+(r.find("optgroup")[0]?" layui-select-group":"")+'">',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?t.push("<dt>"+a.label+"</dt>"):t.push('<dd lay-value="'+a.value+'" class="'+(d===a.value?s:"")+(a.disabled?" "+c:"")+'">'+a.innerHTML+"</dd>"):t.push('<dd lay-value="" class="layui-select-tips">'+(a.innerHTML||i)+"</dd>")}),0===t.length&&t.push('<dd lay-value="" class="'+c+'">没有选项</dd>'),t.join("")}(r.find("*"))+"</dl>","</div>"].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=u.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['<div class="layui-unselect '+u[0],n.checked?" "+u[1]:"",o?" layui-checkbox-disbaled "+c:"",'"',r?' lay-skin="'+r+'"':"",">",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?"<span>"+n.title+"</span>":"",'<i class="layui-icon layui-icon-ok"></i>'].join(""),_switch:"<em>"+((n.checked?s[0]:s[1])||"")+"</em><i></i>"};return t[r]||t.checkbox}(),"</div>"].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=u.find("input[type=radio]"),n=function(a){var n=t(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=t(['<div class="layui-unselect '+e,l.checked?" "+e+"ed":"",(o?" layui-radio-disbaled "+c:"")+'">','<i class="layui-anim layui-icon">'+i[l.checked?0:1]+"</i>","<div>"+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"</div>","</div>"].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);f.render(),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/jquery.js b/src/main/resources/static/layui/lay/modules/jquery.js new file mode 100644 index 0000000..5b0d3e8 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/jquery.js @@ -0,0 +1,5 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x<d;x++)if(a=e[x],a||0===a)if("object"===pe.type(a))pe.merge(v,a.nodeType?[a]:a);else if(Ue.test(a)){for(u=u||y.appendChild(t.createElement("div")),l=(We.exec(a)||["",""])[1].toLowerCase(),f=Xe[l]||Xe._default,u.innerHTML=f[1]+pe.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!fe.leadingWhitespace&&$e.test(a)&&v.push(t.createTextNode($e.exec(a)[0])),!fe.tbody)for(a="table"!==l||Ve.test(a)?"<table>"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r<i;r++)pe.event.add(t,n,s[n][r])}a.data&&(a.data=pe.extend({},a.data))}}function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!fe.noCloneEvent&&t[pe.expando]){i=pe._data(t);for(r in i.events)pe.removeEvent(t,r,i.handle);t.removeAttribute(pe.expando)}"script"===n&&t.text!==e.text?(C(t).text=e.text,E(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),fe.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-1,p=t[0],g=pe.isFunction(p);if(g||f>1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c<f;c++)o=l,c!==d&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,"script"))),n.call(e[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,pe.map(s,E),c=0;c<a;c++)o=s[c],Ie.test(o.type||"")&&!pe._data(o,"globalEval")&&pe.contains(u,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ot,"")));l=i=null}return e}function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||pe.cleanData(h(r)),r.parentNode&&(n&&pe.contains(r.ownerDocument,r)&&g(h(r,"script")),r.parentNode.removeChild(r));return e}function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n[0],"display");return n.detach(),r}function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(ut||pe("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style&&(o[a]=pe._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&Re(r)&&(o[a]=pe._data(r,"olddisplay",j(r.nodeName)))):(i=Re(r),(n&&"none"!==n||!i)&&pe._data(r,"olddisplay",i?n:pe.css(r,"display"))));for(a=0;a<s;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;o<4;o+=2)"margin"===n&&(a+=pe.css(e,n+Oe[o],!0,i)),r?("content"===n&&(a-=pe.css(e,"padding"+Oe[o],!0,i)),"margin"!==n&&(a-=pe.css(e,"border"+Oe[o]+"Width",!0,i))):(a+=pe.css(e,"padding"+Oe[o],!0,i),"padding"!==n&&(a+=pe.css(e,"border"+Oe[o]+"Width",!0,i)));return a}function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=ht(t),s=fe.boxSizing&&"border-box"===pe.css(t,"boxSizing",!1,a);if(re.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=gt(t,n,a),(o<0||null==o)&&(o=t.style[n]),ft.test(o))return o;i=s&&(fe.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+F(t,n,r||(s?"border":"content"),i,a)+"px"}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType&&Re(e),g=pe._data(e,"fxshow");n.queue||(s=pe._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,f.always(function(){f.always(function(){s.unqueued--,pe.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],l=pe.css(e,"display"),c="none"===l?pe._data(e,"olddisplay")||j(e.nodeName):l,"inline"===c&&"none"===pe.css(e,"float")&&(fe.inlineBlockNeedsLayout&&"inline"!==j(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",fe.shrinkWrapBlocks()||f.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],St.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(h?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;h=!0}d[r]=g&&g[r]||pe.style(e,r)}else l=void 0;if(pe.isEmptyObject(d))"inline"===("none"===l?j(e.nodeName):l)&&(p.display=l);else{g?"hidden"in g&&(h=g.hidden):g=pe._data(e,"fxshow",{}),o&&(g.hidden=!h),h?pe(e).show():f.done(function(){pe(e).hide()}),f.done(function(){var t;pe._removeData(e,"fxshow");for(t in d)pe.style(e,t,d[t])});for(r in d)a=B(h?g[r]:0,r,f),r in g||(g[r]=a.start,h&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e[n],pe.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=pe.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Nt||R(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),o<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:pe.extend({},t),opts:pe.extend(!0,{specialEasing:{},easing:pe.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||R(),duration:n.duration,tweens:[],createTween:function(t,n){var r=pe.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o<a;o++)if(r=$.prefilters[o].call(l,e,c,l.opts))return pe.isFunction(r.stop)&&(pe._queueHooks(l.elem,l.opts.queue).stop=pe.proxy(r.stop,r)),r;return pe.map(c,B,l),pe.isFunction(l.opts.start)&&l.opts.start.call(e,l),pe.fx.timer(pe.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){return pe.attr(e,"class")||""}function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(De)||[];if(pe.isFunction(n))for(;r=o[i++];)"+"===r.charAt(0)?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||a||o[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var o={},a=e===Qt;return i(t.dataTypes[0])||!o["*"]&&i("*")}function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&pe.extend(!0,e,n),e}function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(a in s)if(s[a]&&s[a].test(i)){u.unshift(a);break}if(u[0]in n)o=u[0];else{for(a in n){if(!u[0]||e.converters[a+" "+u[0]]){o=a;break}r||(r=a)}o=o||r}if(o)return o!==u[0]&&u.unshift(o),n[o]}function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(a=l[u+" "+o]||l["* "+o],!a)for(i in l)if(s=i.split(" "),s[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){a===!0?a=l[i]:l[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}function G(e){return e.style&&e.style.display||pe.css(e,"display")}function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn.test(e)?r(e,i):Q(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==pe.type(t))r(e,t);else for(i in t)Q(e+"["+i+"]",t[i],n,r)}function Z(){try{return new e.XMLHttpRequest}catch(t){}}function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var ne=[],re=e.document,ie=ne.slice,oe=ne.concat,ae=ne.push,se=ne.indexOf,ue={},le=ue.toString,ce=ue.hasOwnProperty,fe={},de="1.12.3",pe=function(e,t){return new pe.fn.init(e,t)},he=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ge=/^-ms-/,me=/-([\da-z])/gi,ye=function(e,t){return t.toUpperCase()};pe.fn=pe.prototype={jquery:de,constructor:pe,selector:"",length:0,toArray:function(){return ie.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:ie.call(this)},pushStack:function(e){var t=pe.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return pe.each(this,e)},map:function(e){return this.pushStack(pe.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ie.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ae,sort:ne.sort,splice:ne.splice},pe.extend=pe.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||pe.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(l&&n&&(pe.isPlainObject(n)||(t=pe.isArray(n)))?(t?(t=!1,o=e&&pe.isArray(e)?e:[]):o=e&&pe.isPlainObject(e)?e:{},a[r]=pe.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},pe.extend({expando:"jQuery"+(de+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===pe.type(e)},isArray:Array.isArray||function(e){return"array"===pe.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!pe.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;i<r&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(he,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?pe.merge(r,"string"==typeof e?[e]:e):ae.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(se)return se.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,r){var i,o,a=0,s=[];if(n(e))for(i=e.length;a<i;a++)o=t(e[a],a,r),null!=o&&s.push(o);else for(a in e)o=t(e[a],a,r),null!=o&&s.push(o);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if("string"==typeof t&&(i=e[t],t=e,e=i),pe.isFunction(e))return n=ie.call(arguments,2),r=function(){return e.apply(t||this,n.concat(ie.call(arguments)))},r.guid=e.guid=e.guid||pe.guid++,r},now:function(){return+new Date},support:fe}),"function"==typeof Symbol&&(pe.fn[Symbol.iterator]=ne[Symbol.iterator]),pe.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){ue["[object "+t+"]"]=t.toLowerCase()});var ve=function(e){function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&((t?t.ownerDocument||t:B)!==H&&L(t),t=t||H,_)){if(11!==g&&(l=ye.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(w.qsa&&!X[e+" "]&&(!F||!F.test(e))){if(1!==g)h=t,p=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(xe,"\\$&"):t.setAttribute("id",s=P),f=N(e),o=f.length,u=de.test(s)?"#"+s:"[id='"+s+"']";o--;)f[o]=u+" "+d(f[o]);p=f.join(","),h=ve.test(e)&&c(t.parentNode)||t}if(p)try{return Q.apply(n,h.querySelectorAll(p)),n}catch(m){}finally{s===P&&t.removeAttribute("id")}}}return S(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[P]||(t[P]={}),u=l[t.uniqueID]||(l[t.uniqueID]={}),(s=u[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(u[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,y=r||g(t||"*",s.nodeType?[s]:s,[]),v=!e||!r&&t?y:m(y,d,e,s,u),x=n?o||(r?e:h||i)?[]:a:v;if(n&&n(v,x,s,u),i)for(l=m(x,p),i(l,[],s,u),c=l.length;c--;)(f=l[c])&&(x[p[c]]=!(v[p[c]]=f));if(r){if(o||e){if(o){for(l=[],c=x.length;c--;)(f=x[c])&&l.push(v[c]=f);o(null,x=[],l,u)}for(c=x.length;c--;)(f=x[c])&&(l=o?ee(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s<i;s++)if(n=T.relative[e[s].type])c=[p(h(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;r<i&&!T.relative[e[r].type];r++);return y(s>1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s<r&&v(e.slice(s,r)),r<i&&v(e=e.slice(r)),r<i&&d(e))}c.push(n)}return h(c)}function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),ue=new RegExp("^"+ne+"*,"+ne+"*"),le=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="<a id='"+P+"'></a><select id='"+P+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}), +l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})T.pseudos[b]=u(b);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,N=t.tokenize=function(e,n){var r,i,o,a,s,u,l,c=z[e+" "];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(i=ue.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=le.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in T.filter)!(i=pe[a].exec(s))||l[a]&&!(i=l[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},k=t.compile=function(e,t){var n,r=[],i=[],o=X[e+" "];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=v(t[n]),o[P]?r.push(o):i.push(o);o=X(e,x(i,r)),o.selector=e}return o},S=t.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,f=!r&&N(e=l.selector||e);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t<i;t++)if(pe.contains(r[t],this))return!0}));for(t=0;t<i;t++)pe.find(e,r[t],n);return n=this.pushStack(i>1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(pe.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=we.test(e)||"string"!=typeof e?pe(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<a.length;)a[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:"")},c={add:function(){return a&&(n&&!t&&(u=a.length-1,s.push(n)),function r(t){pe.each(t,function(t,n){pe.isFunction(n)?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==pe.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return pe.each(arguments,function(e,t){for(var n;(n=pe.inArray(t,a,n))>-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i<a;i++)o[i]&&pe.isFunction(o[i].promise)?o[i].promise().progress(l(i,n,t)).done(l(i,r,o)).fail(u.reject):--s;return s||u.resolveWith(r,o),u.promise()}});var je;pe.fn.ready=function(e){return pe.ready.promise().done(e),this},pe.extend({isReady:!1,readyWait:1,holdReady:function(e){e?pe.readyWait++:pe.ready(!0)},ready:function(e){(e===!0?--pe.readyWait:pe.isReady)||(pe.isReady=!0,e!==!0&&--pe.readyWait>0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?pe.queue(this[0],e):void 0===t?this:this.each(function(){var n=pe.queue(this,e,t);pe._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&pe.dequeue(this,e)})},dequeue:function(e){return this.each(function(){pe.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=pe.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=pe._data(o[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;fe.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=re.getElementsByTagName("body")[0],n&&n.style?(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(re.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Fe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Me=new RegExp("^(?:([+-])=|)("+Fe+")([a-z%]*)$","i"),Oe=["Top","Right","Bottom","Left"],Re=function(e,t){return e=t||e,"none"===pe.css(e,"display")||!pe.contains(e.ownerDocument,e)},Pe=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===pe.type(n)){i=!0;for(s in n)Pe(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,pe.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(pe(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Be=/^(?:checkbox|radio)$/i,We=/<([\w:-]+)/,Ie=/^$|\/(?:java|ecma)script/i,$e=/^\s+/,ze="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=re.createElement("div"),t=re.createDocumentFragment(),n=re.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav></:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:fe.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/<tbody/i;!function(){var t,n,r=re.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(fe[t]=n in e)||(r.setAttribute(n,"t"),fe[t]=r.attributes[n].expando===!1);r=null}();var Ye=/^(?:input|select|textarea)$/i,Je=/^key/,Ge=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^(?:focusinfocus|focusoutblur)$/,Qe=/^([^.]*)(?:\.(.+)|)/;pe.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe._data(e);if(m){for(n.handler&&(u=n,n=u.handler,i=u.selector),n.guid||(n.guid=pe.guid++),(a=m.events)||(a=m.events={}),(c=m.handle)||(c=m.handle=function(e){return"undefined"==typeof pe||e&&pe.event.triggered===e.type?void 0:pe.event.dispatch.apply(c.elem,arguments)},c.elem=e),t=(t||"").match(De)||[""],s=t.length;s--;)o=Qe.exec(t[s])||[],p=g=o[1],h=(o[2]||"").split(".").sort(),p&&(l=pe.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=pe.event.special[p]||{},f=pe.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&pe.expr.match.needsContext.test(i),namespace:h.join(".")},u),(d=a[p])||(d=a[p]=[],d.delegateCount=0,l.setup&&l.setup.call(e,r,h,c)!==!1||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent("on"+p,c))),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,f):d.push(f),pe.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe.hasData(e)&&pe._data(e);if(m&&(c=m.events)){for(t=(t||"").match(De)||[""],l=t.length;l--;)if(s=Qe.exec(t[l])||[],p=g=s[1],h=(s[2]||"").split(".").sort(),p){for(f=pe.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=c[p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=d.length;o--;)a=d[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(d.splice(o,1),a.selector&&d.delegateCount--,f.remove&&f.remove.call(e,a));u&&!d.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||pe.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)pe.event.remove(e,p+t[l],n,r,!0);pe.isEmptyObject(c)&&(delete m.handle,pe._removeData(e,"events"))}},trigger:function(t,n,r,i){var o,a,s,u,l,c,f,d=[r||re],p=ce.call(t,"type")?t.type:t,h=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=c=r=r||re,3!==r.nodeType&&8!==r.nodeType&&!Ke.test(p+pe.event.triggered)&&(p.indexOf(".")>-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n<s;n++)o=t[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?pe(i,this).index(u)>-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[pe.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=Ge.test(i)?this.mouseHooks:Je.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new pe.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||re),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||re,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==b()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){if(this===b()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if(pe.nodeName(this,"input")&&"checkbox"===this.type&&this.click)return this.click(),!1},_default:function(e){return pe.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=pe.extend(new pe.Event,n,{type:e,isSimulated:!0});pe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},pe.removeEvent=re.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r="on"+t;e.detachEvent&&("undefined"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},pe.Event=function(e,t){return this instanceof pe.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?v:x):this.type=e,t&&pe.extend(this,t),this.timeStamp=e&&e.timeStamp||pe.now(),void(this[pe.expando]=!0)):new pe.Event(e,t)},pe.Event.prototype={constructor:pe.Event,isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=v,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=v,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=v,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},pe.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){pe.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||pe.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),fe.submit||(pe.event.special.submit={setup:function(){return!pe.nodeName(this,"form")&&void pe.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=pe.nodeName(t,"input")||pe.nodeName(t,"button")?pe.prop(t,"form"):void 0;n&&!pe._data(n,"submit")&&(pe.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),pe._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&pe.event.simulate("submit",this.parentNode,e))},teardown:function(){return!pe.nodeName(this,"form")&&void pe.event.remove(this,"._submit")}}),fe.change||(pe.event.special.change={setup:function(){return Ye.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(pe.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),pe.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),pe.event.simulate("change",this,e)})),!1):void pe.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ye.test(t.nodeName)&&!pe._data(t,"change")&&(pe.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||pe.event.simulate("change",this.parentNode,e)}),pe._data(t,"change",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return pe.event.remove(this,"._change"),!Ye.test(this.nodeName)}}),fe.focusin||pe.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){pe.event.simulate(t,e.target,pe.event.fix(e))};pe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=pe._data(r,t);i||r.addEventListener(e,n,!0),pe._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=pe._data(r,t)-1;i?pe._data(r,t,i):(r.removeEventListener(e,n,!0),pe._removeData(r,t))}}}),pe.fn.extend({on:function(e,t,n,r){return w(this,e,t,n,r)},one:function(e,t,n,r){return w(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,pe(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=x),this.each(function(){pe.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){pe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return pe.event.trigger(e,t,n,!0)}});var Ze=/ jQuery\d+="(?:null|\d+)"/g,et=new RegExp("<(?:"+ze+")[\\s/>]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/<script|<style|<link/i,rt=/checked\s*(?:[^=]|=\s*.checked.)/i,it=/^true\/(.*)/,ot=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(pe.cleanData(h(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return S(this,arguments,function(t){var n=this.parentNode;pe.inArray(this,e)<0&&(pe.cleanData(h(this)), +n&&n.replaceChild(t,this))},e)}}),pe.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){pe.fn[e]=function(e){for(var n,r=0,i=[],o=pe(e),a=o.length-1;r<=a;r++)n=r===a?this:this.clone(!0),pe(o[r])[t](n),ae.apply(i,n.get());return this.pushStack(i)}});var ut,lt={HTML:"block",BODY:"block"},ct=/^margin/,ft=new RegExp("^("+Fe+")(?!px)[a-z%]+$","i"),dt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},pt=re.documentElement;!function(){function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=i=s=!1,r=a=!0,e.getComputedStyle&&(c=e.getComputedStyle(l),n="1%"!==(c||{}).top,s="2px"===(c||{}).marginLeft,i="4px"===(c||{width:"4px"}).width,l.style.marginRight="50%",r="4px"===(c||{marginRight:"4px"}).marginRight,t=l.appendChild(re.createElement("div")),t.style.cssText=l.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",t.style.marginRight=t.style.width="0",l.style.width="1px",a=!parseFloat((e.getComputedStyle(t)||{}).marginRight),l.removeChild(t)),l.style.display="none",o=0===l.getClientRects().length,o&&(l.style.display="",l.innerHTML="<table><tr><td></td><td>t</td></tr></table>",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a<i;a++)o[t[a]]=pe.css(e,t[a],!1,r);return o}return void 0!==n?pe.style(e,t,n):pe.css(e,t)},e,t,arguments.length>1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r<i;r++)n=e[r],$.tweeners[n]=$.tweeners[n]||[],$.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?$.prefilters.unshift(e):$.prefilters.push(e)}}),pe.speed=function(e,t,n){var r=e&&"object"==typeof e?pe.extend({},e):{complete:n||!n&&t||pe.isFunction(e)&&e,duration:e,easing:n&&t||t&&!pe.isFunction(t)&&t};return r.duration=pe.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in pe.fx.speeds?pe.fx.speeds[r.duration]:pe.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){pe.isFunction(r.old)&&r.old.call(this),r.queue&&pe.dequeue(this,r.queue)},r},pe.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Re).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=pe.isEmptyObject(e),o=pe.speed(t,n,r),a=function(){var t=$(this,pe.extend({},e),o);(i||pe._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=pe.timers,a=pe._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&At.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||pe.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=pe._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=pe.timers,a=r?r.length:0;for(n.finish=!0,pe.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),pe.each(["toggle","show","hide"],function(e,t){var n=pe.fn[t];pe.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(P(t,!0),e,r,i)}}),pe.each({slideDown:P("show"),slideUp:P("hide"),slideToggle:P("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){pe.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),pe.timers=[],pe.fx.tick=function(){var e,t=pe.timers,n=0;for(Nt=pe.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||pe.fx.stop(),Nt=void 0},pe.fx.timer=function(e){pe.timers.push(e),e()?pe.fx.start():pe.timers.pop()},pe.fx.interval=13,pe.fx.start=function(){kt||(kt=e.setInterval(pe.fx.tick,pe.fx.interval))},pe.fx.stop=function(){e.clearInterval(kt),kt=null},pe.fx.speeds={slow:600,fast:200,_default:400},pe.fn.delay=function(t,n){return t=pe.fx?pe.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e,t=re.createElement("input"),n=re.createElement("div"),r=re.createElement("select"),i=r.appendChild(re.createElement("option"));n=re.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&(fe.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!pe.nodeName(n.parentNode,"optgroup"))){if(t=pe(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=pe.makeArray(t),a=i.length;a--;)if(r=i[a],pe.inArray(pe.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("<div>").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){ +for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/laydate.js b/src/main/resources/static/layui/lay/modules/laydate.js new file mode 100644 index 0000000..4b79bec --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/laydate.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期<br>建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]="object"==typeof t[0]?t[0]:{};e<t.length;e++)"object"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||"ActiveXObject"in window)&&((e.match(/msie\s(\d+)/)||[])[1]||"11")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if("function"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a="";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+="0";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){new RegExp("\\b"+n+"\\b").test(e)||(e=e+" "+n)}),e.replace(/^\s|\s$/,"")},C.removeStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){var a=new RegExp("\\b"+n+"\\b");a.test(e)&&(e=e.replace(a,""))}),e.replace(/\s+/," ").replace(/^\s|\s$/,"")},C.prototype.find=function(e){var t=this,n=0,a=[],i="object"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+" ":"")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?"removeStr":"addStr"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp("\\b"+e+"\\b").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\d+-\d+-\d+/)||[""])[0].split("-"),i=(t[n].match(/\d+:\d+:\d+/)||[""])[0].split(":");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID="layui-laydate"+t.elem.attr("lay-key"),(t.show||a)&&e.render(),a||e.events(),t.value&&t.isInitValue&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a="static"===t.position,i=e.elem=w.elem("div",{id:e.elemID,"class":["layui-laydate",t.range?" layui-laydate-range":"",a?" "+c:"",t.theme&&"default"!==t.theme&&!/^#/.test(t.theme)?" laydate-theme-"+t.theme:""].join("")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem("div",{"class":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push('<span lay-type="datetime" class="laydate-btns-time">'+n.timeTips+"</span>"),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push('<span lay-type="'+r+'" class="laydate-btns-'+r+'">'+o+"</span>"))}),e.push('<div class="laydate-footer-btns">'+i.join("")+"</div>"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));t.elem&&(n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return"limit"===e?(c(o),i):(l=l||r.value,"string"==typeof l&&(l=l.replace(/\s+/g," ").replace(/^\s|\s$/g,"")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),"string"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(" "+r.range+" "),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint("日期格式不合法<br>必须遵循下述格式:<br>"+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"<br>已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class="laydate-day-mark">'+n+"</span>"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.year<d[0]&&(l.year=d[0],r.hint("最低只能支持到公元"+d[0]+"年")),l.year>d[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e<t?(c=a-t+e,n.addClass("laydate-day-prev"),d=r.getAsYM(l.year,l.month,"sub")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass("laydate-day-next"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr("lay-ymd",d.join("-")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr("lay-ym",l.year+"-"+(l.month+1)),w(f[1]).attr("lay-ym",l.year+"-"+(l.month+1)),"cn"===s.lang?(w(f[0]).attr("lay-type","year").html(l.year+"年"),w(f[1]).attr("lay-type","month").html(l.month+1+"月")):(w(f[0]).attr("lay-type","month").html(m.month[l.month]),w(f[1]).attr("lay-type","year").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+("year"===s.type?1:0),month:l.month+("month"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),"time"===s.type?r.setBtnStatus("时间",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,["hours","minutes","seconds"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&"date"!==a.type&&"datetime"!==a.type,d=w.elem("ul",{"class":m+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[e]}),c=n.elemHeader[t],u=w(c[2]).find("span"),h=n.elemCont[t||0],y=w(h).find("."+m)[0],f="cn"===a.lang,p=f?"年":"",T=n.listYM[t]||{},C=["hours","minutes","seconds"],x=["startTime","endTime"][t];if(T[0]<1&&(T[0]=1),"year"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem("li",{"lay-ym":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["<p>"+r.time[e]+"</p><ol>"];w.each(new Array(t),function(t){i.push("<li"+(n[x][C[e]]===t?' class="'+o+'"':"")+">"+w.digit(t,2)+"</li>")}),a.innerHTML=i.join("")+"</ol>",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){"month"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],"function"==typeof a[t||"done"]&&a[t||"done"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find("td"),r=e.attr("lay-ymd").split("-"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each(["startTime","endTime"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+" "+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,"change")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?"removeClass":"addClass"](s)}else"static"===n.position?(l(!0),t.calendar().done().done(null,"change")):"date"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):"datetime"===n.type&&(l(!0),t.calendar().done(null,"change"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r="static"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list("time",0),a.range&&n.list("time",1),w(e).attr("lay-type","date").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr("lay-type","datetime").html(n.lang().timeTips)},clear:function(){n.setValue("").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done(["",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint("请先选择日期范围");if(w(e).hasClass(s))return n.hint("time"===a.type?l.replace(/日期/g,"时间"):l)}else if(w(e).hasClass(s))return n.hint("不在有效日期或时间范围内");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&("year"===n.type||"month"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=["startDate","endDate"][e],d=w(r).find(".laydate-year-list")[0],c=w(r).find(".laydate-month-list")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list("year",e)),c&&(s?o[0]--:o[0]++,t.list("month",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,"change"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s("sub")||(a.year--,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,"sub");w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextYear:function(){s()||(a.year++,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on("click",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on("click",function(n){e.change(t).prevYear()}),w(n[1]).on("click",function(n){e.change(t).prevMonth()}),w(n[2]).find("span").on("click",function(n){var a=w(this),i=a.attr("lay-ym"),r=a.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on("click",function(n){e.change(t).nextMonth()}),w(n[4]).on("click",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find("td");a.on("click",function(){e.choose(w(this))})}),w(e.footer).find("span").on("click",function(){var t=w(this).attr("lay-type");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,"bind"),n(t.eventElem),w(document).on("click",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on("keydown",function(t){13===t.keyCode&&w("#"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on("resize",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):"function"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}(); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/layedit.js b/src/main/resources/static/layui/lay/modules/layedit.js new file mode 100644 index 0000000..282c6c4 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/layedit.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['<div class="'+r+'">','<div class="layui-unselect layui-layedit-tool">'+f+"</div>",'<div class="layui-layedit-iframe">','<iframe id="'+u+'" name="'+u+'" textarea="'+t+'" frameborder="0"></iframe>',"</div>","</div>"].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e(["<style>","*{margin: 0; padding: 0;}","body{padding: 10px; line-height: 20px; overflow-x: hidden; word-wrap: break-word; font: 14px Helvetica Neue,Helvetica,PingFang SC,Microsoft YaHei,Tahoma,Arial,sans-serif; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}","a{color:#01AAED; text-decoration:none;}a:hover{color:#c00}","p{margin-bottom: 10px;}","img{display: inline-block; border: none; vertical-align: middle;}","pre{margin: 10px 0; padding: 10px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #F2F2F2; color: #333; font-family: Courier New; font-size: 12px;}","</style>"].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"<p>")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"<p>"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"<p>"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['<ul class="layui-form" style="margin: 15px;">','<li class="layui-form-item">','<label class="layui-form-label" style="width: 60px;">URL</label>','<div class="layui-input-block" style="margin-left: 90px">','<input name="url" lay-verify="url" value="'+(t.href||"")+'" autofocus="true" autocomplete="off" class="layui-input">',"</div>","</li>",'<li class="layui-form-item">','<label class="layui-form-label" style="width: 60px;">打开方式</label>','<div class="layui-input-block" style="margin-left: 90px">','<input type="radio" name="target" value="_self" class="layui-input" title="当前窗口"'+("_self"!==t.target&&t.target?"":"checked")+">",'<input type="radio" name="target" value="_blank" class="layui-input" title="新窗口" '+("_blank"===t.target?"checked":"")+">","</div>","</li>",'<li class="layui-form-item" style="text-align: center;">','<button type="button" lay-submit lay-filter="layedit-link-yes" class="layui-btn"> 确定 </button>','<button style="margin-left: 20px;" type="button" class="layui-btn layui-btn-primary"> 取消 </button>',"</li>","</ul>"].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('<li title="'+e+'"><img src="'+i+'" alt="'+e+'"></li>')}),'<ul class="layui-clear">'+t.join("")+"</ul>"}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['<ul class="layui-form layui-form-pane" style="margin: 15px;">','<li class="layui-form-item">','<label class="layui-form-label">请选择语言</label>','<div class="layui-input-block">','<select name="lang">','<option value="JavaScript">JavaScript</option>','<option value="HTML">HTML</option>','<option value="CSS">CSS</option>','<option value="Java">Java</option>','<option value="PHP">PHP</option>','<option value="C#">C#</option>','<option value="Python">Python</option>','<option value="Ruby">Ruby</option>','<option value="Go">Go</option>',"</select>","</div>","</li>",'<li class="layui-form-item layui-form-text">','<label class="layui-form-label">代码</label>','<div class="layui-input-block">','<textarea name="code" lay-verify="required" autofocus="true" class="layui-textarea" style="height: 200px;"></textarea>',"</div>","</li>",'<li class="layui-form-item" style="text-align: center;">','<button type="button" lay-submit lay-filter="layedit-code-yes" class="layui-btn"> 确定 </button>','<button style="margin-left: 20px;" type="button" class="layui-btn layui-btn-primary"> 取消 </button>',"</li>","</ul>"].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'<i class="layui-icon layedit-tool-html" title="HTML源代码" lay-command="html" layedit-event="html""></i><span class="layedit-tool-mid"></span>',strong:'<i class="layui-icon layedit-tool-b" title="加粗" lay-command="Bold" layedit-event="b""></i>',italic:'<i class="layui-icon layedit-tool-i" title="斜体" lay-command="italic" layedit-event="i""></i>',underline:'<i class="layui-icon layedit-tool-u" title="下划线" lay-command="underline" layedit-event="u""></i>',del:'<i class="layui-icon layedit-tool-d" title="删除线" lay-command="strikeThrough" layedit-event="d""></i>',"|":'<span class="layedit-tool-mid"></span>',left:'<i class="layui-icon layedit-tool-left" title="左对齐" lay-command="justifyLeft" layedit-event="left""></i>',center:'<i class="layui-icon layedit-tool-center" title="居中对齐" lay-command="justifyCenter" layedit-event="center""></i>',right:'<i class="layui-icon layedit-tool-right" title="右对齐" lay-command="justifyRight" layedit-event="right""></i>',link:'<i class="layui-icon layedit-tool-link" title="插入链接" layedit-event="link""></i>',unlink:'<i class="layui-icon layedit-tool-unlink layui-disabled" title="清除链接" lay-command="unlink" layedit-event="unlink""></i>',face:'<i class="layui-icon layedit-tool-face" title="表情" layedit-event="face""></i>',image:'<i class="layui-icon layedit-tool-image" title="图片" layedit-event="image"><input type="file" name="file"></i>',code:'<i class="layui-icon layedit-tool-code" title="插入代码" layedit-event="code"></i>',help:'<i class="layui-icon layedit-tool-help" title="帮助" layedit-event="help"></i>'},w=new c;t(n,w)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/layer.js b/src/main/resources/static/layui/lay/modules/layer.js new file mode 100644 index 0000000..bc81661 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/layer.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'<div class="layui-layer-title" style="'+(f?r.title[1]:"")+'">'+(f?r.title[0]:r.title)+"</div>":"";return r.zIndex=s,t([r.shade?'<div class="layui-layer-shade" id="layui-layer-shade'+a+'" times="'+a+'" style="'+("z-index:"+(s-1)+"; ")+'"></div>':"",'<div class="'+l[0]+(" layui-layer-"+o.type[r.type])+(0!=r.type&&2!=r.type||r.shade?"":" layui-layer-border")+" "+(r.skin||"")+'" id="'+l[0]+a+'" type="'+o.type[r.type]+'" times="'+a+'" showtime="'+r.time+'" conType="'+(e?"object":"string")+'" style="z-index: '+s+"; width:"+r.area[0]+";height:"+r.area[1]+(r.fixed?"":";position:absolute;")+'">'+(e&&2!=r.type?"":u)+'<div id="'+(r.id||"")+'" class="layui-layer-content'+(0==r.type&&r.icon!==-1?" layui-layer-padding":"")+(3==r.type?" layui-layer-loading"+r.icon:"")+'">'+(0==r.type&&r.icon!==-1?'<i class="layui-layer-ico layui-layer-ico'+r.icon+'"></i>':"")+(1==r.type&&e?"":r.content||"")+'</div><span class="layui-layer-setwin">'+function(){var e=c?'<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>':"";return r.closeBtn&&(e+='<a class="layui-layer-ico '+l[7]+" "+l[7]+(r.title?r.closeBtn:4==r.type?"1":"2")+'" href="javascript:;"></a>'),e}()+"</span>"+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t<i;t++)e+='<a class="'+l[6]+t+'">'+r.btn[t]+"</a>";return'<div class="'+l[6]+" layui-layer-btn-"+(r.btnAlign||"")+'">'+e+"</div>"}():"")+(r.resize?'<span class="layui-layer-resize"></span>':"")+"</div>"],u,i('<div class="layui-layer-move"></div>')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='<iframe scrolling="'+(t.content[1]||"auto")+'" allowtransparency="true" id="'+l[4]+a+'" name="'+l[4]+a+'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="'+t.content[0]+'"></iframe>';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'<i class="layui-layer-TipsG"></i>',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;a<c.stX&&(a=c.stX),a>f&&(a=f),o<c.stY&&(o=c.stY),o>u&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'<textarea class="layui-layer-input"'+a+"></textarea>":function(){return'<input type="'+(1==e.formType?"password":"text")+'" class="layui-layer-input">'}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a='<span class="'+n+'">'+t[0].title+"</span>";i<e;i++)a+="<span>"+t[i].title+"</span>";return a}(),content:'<ul class="layui-layer-tabmain">'+function(){var e=t.length,i=1,a="";if(e>0)for(a='<li class="layui-layer-tabli '+n+'">'+(t[0].content||"no content")+"</li>";i<e;i++)a+='<li class="layui-layer-tabli">'+(t[i].content||"no content")+"</li>";return a}()+"</ul>",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}return[a[0]+"px",a[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,isOutAnim:!1,skin:"layui-layer-photos"+c("photos"),content:'<div class="layui-layer-phimg"><img src="'+u[d].src+'" alt="'+(u[d].alt||"")+'" layer-pid="'+u[d].pid+'"><div class="layui-layer-imgsee">'+(u.length>1?'<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>':"")+'<div class="layui-layer-imgbar" style="display:'+(a?"block":"")+'"><span class="layui-layer-imgtit"><a href="javascript:;">'+(u[d].alt||"")+"</a><em>"+s.imgIndex+"/"+u.length+"</em></span></div></div></div>",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常<br>是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/laypage.js b/src/main/resources/static/layui/lay/modules/laypage.js new file mode 100644 index 0000000..478c11f --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/laypage.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">…</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">…</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">到第','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','页<button type="button" class="layui-laypage-btn">确定</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/laytpl.js b/src/main/resources/static/layui/lay/modules/laytpl.js new file mode 100644 index 0000000..dd0d567 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/laytpl.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/mobile.js b/src/main/resources/static/layui/lay/modules/mobile.js new file mode 100644 index 0000000..bd2fe1b --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/mobile.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(function(i){i("layui.mobile",layui.v)});layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var t=(window,document),i="querySelectorAll",n="getElementsByClassName",a=function(e){return t[i](e)},s={type:0,shade:!0,shadeClose:!0,fixed:!0,anim:"scale"},l={extend:function(e){var t=JSON.parse(JSON.stringify(s));for(var i in e)t[i]=e[i];return t},timer:{},end:{}};l.touch=function(e,t){e.addEventListener("click",function(e){t.call(this,e)},!1)};var o=0,r=["layui-m-layer"],d=function(e){var t=this;t.config=l.extend(e),t.view()};d.prototype.view=function(){var e=this,i=e.config,s=t.createElement("div");e.id=s.id=r[0]+o,s.setAttribute("class",r[0]+" "+r[0]+(i.type||0)),s.setAttribute("index",o);var l=function(){var e="object"==typeof i.title;return i.title?'<h3 style="'+(e?i.title[1]:"")+'">'+(e?i.title[0]:i.title)+"</h3>":""}(),d=function(){"string"==typeof i.btn&&(i.btn=[i.btn]);var e,t=(i.btn||[]).length;return 0!==t&&i.btn?(e='<span yes type="1">'+i.btn[0]+"</span>",2===t&&(e='<span no type="0">'+i.btn[1]+"</span>"+e),'<div class="layui-m-layerbtn">'+e+"</div>"):""}();if(i.fixed||(i.top=i.hasOwnProperty("top")?i.top:100,i.style=i.style||"",i.style+=" top:"+(t.body.scrollTop+i.top)+"px"),2===i.type&&(i.content='<i></i><i class="layui-m-layerload"></i><i></i><p>'+(i.content||"")+"</p>"),i.skin&&(i.anim="up"),"msg"===i.skin&&(i.shade=!1),s.innerHTML=(i.shade?"<div "+("string"==typeof i.shade?'style="'+i.shade+'"':"")+' class="layui-m-layershade"></div>':"")+'<div class="layui-m-layermain" '+(i.fixed?"":'style="position:static;"')+'><div class="layui-m-layersection"><div class="layui-m-layerchild '+(i.skin?"layui-m-layer-"+i.skin+" ":"")+(i.className?i.className:"")+" "+(i.anim?"layui-m-anim-"+i.anim:"")+'" '+(i.style?'style="'+i.style+'"':"")+">"+l+'<div class="layui-m-layercont">'+i.content+"</div>"+d+"</div></div></div>",!i.type||2===i.type){var y=t[n](r[0]+i.type),u=y.length;u>=1&&c.close(y[0].getAttribute("index"))}document.body.appendChild(s);var m=e.elem=a("#"+e.id)[0];i.success&&i.success(m),e.index=o++,e.action(i,m)},d.prototype.action=function(e,t){var i=this;e.time&&(l.timer[i.index]=setTimeout(function(){c.close(i.index)},1e3*e.time));var a=function(){var t=this.getAttribute("type");0==t?(e.no&&e.no(),c.close(i.index)):e.yes?e.yes(i.index):c.close(i.index)};if(e.btn)for(var s=t[n]("layui-m-layerbtn")[0].children,o=s.length,r=0;r<o;r++)l.touch(s[r],a);if(e.shade&&e.shadeClose){var d=t[n]("layui-m-layershade")[0];l.touch(d,function(){c.close(i.index,e.end)})}e.end&&(l.end[i.index]=e.end)};var c={v:"2.0 m",index:o,open:function(e){var t=new d(e||{});return t.index},close:function(e){var i=a("#"+r[0]+e)[0];i&&(i.innerHTML="",t.body.removeChild(i),clearTimeout(l.timer[e]),delete l.timer[e],"function"==typeof l.end[e]&&l.end[e](),delete l.end[e])},closeAll:function(){for(var e=t[n](r[0]),i=0,a=e.length;i<a;i++)c.close(0|e[0].getAttribute("index"))}};e("layer-mobile",c)});layui.define(function(t){var e=function(){function t(t){return null==t?String(t):J[W.call(t)]||"object"}function e(e){return"function"==t(e)}function n(t){return null!=t&&t==t.window}function r(t){return null!=t&&t.nodeType==t.DOCUMENT_NODE}function i(e){return"object"==t(e)}function o(t){return i(t)&&!n(t)&&Object.getPrototypeOf(t)==Object.prototype}function a(t){var e=!!t&&"length"in t&&t.length,r=T.type(t);return"function"!=r&&!n(t)&&("array"==r||0===e||"number"==typeof e&&e>0&&e-1 in t)}function s(t){return A.call(t,function(t){return null!=t})}function u(t){return t.length>0?T.fn.concat.apply([],t):t}function c(t){return t.replace(/::/g,"/").replace(/([A-Z]+)([A-Z][a-z])/g,"$1_$2").replace(/([a-z\d])([A-Z])/g,"$1_$2").replace(/_/g,"-").toLowerCase()}function l(t){return t in F?F[t]:F[t]=new RegExp("(^|\\s)"+t+"(\\s|$)")}function f(t,e){return"number"!=typeof e||k[c(t)]?e:e+"px"}function h(t){var e,n;return $[t]||(e=L.createElement(t),L.body.appendChild(e),n=getComputedStyle(e,"").getPropertyValue("display"),e.parentNode.removeChild(e),"none"==n&&(n="block"),$[t]=n),$[t]}function p(t){return"children"in t?D.call(t.children):T.map(t.childNodes,function(t){if(1==t.nodeType)return t})}function d(t,e){var n,r=t?t.length:0;for(n=0;n<r;n++)this[n]=t[n];this.length=r,this.selector=e||""}function m(t,e,n){for(j in e)n&&(o(e[j])||Q(e[j]))?(o(e[j])&&!o(t[j])&&(t[j]={}),Q(e[j])&&!Q(t[j])&&(t[j]=[]),m(t[j],e[j],n)):e[j]!==E&&(t[j]=e[j])}function v(t,e){return null==e?T(t):T(t).filter(e)}function g(t,n,r,i){return e(n)?n.call(t,r,i):n}function y(t,e,n){null==n?t.removeAttribute(e):t.setAttribute(e,n)}function x(t,e){var n=t.className||"",r=n&&n.baseVal!==E;return e===E?r?n.baseVal:n:void(r?n.baseVal=e:t.className=e)}function b(t){try{return t?"true"==t||"false"!=t&&("null"==t?null:+t+""==t?+t:/^[\[\{]/.test(t)?T.parseJSON(t):t):t}catch(e){return t}}function w(t,e){e(t);for(var n=0,r=t.childNodes.length;n<r;n++)w(t.childNodes[n],e)}var E,j,T,S,C,N,O=[],P=O.concat,A=O.filter,D=O.slice,L=window.document,$={},F={},k={"column-count":1,columns:1,"font-weight":1,"line-height":1,opacity:1,"z-index":1,zoom:1},M=/^\s*<(\w+|!)[^>]*>/,R=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,z=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,Z=/^(?:body|html)$/i,q=/([A-Z])/g,H=["val","css","html","text","data","width","height","offset"],I=["after","prepend","before","append"],V=L.createElement("table"),_=L.createElement("tr"),B={tr:L.createElement("tbody"),tbody:V,thead:V,tfoot:V,td:_,th:_,"*":L.createElement("div")},U=/complete|loaded|interactive/,X=/^[\w-]*$/,J={},W=J.toString,Y={},G=L.createElement("div"),K={tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},Q=Array.isArray||function(t){return t instanceof Array};return Y.matches=function(t,e){if(!e||!t||1!==t.nodeType)return!1;var n=t.matches||t.webkitMatchesSelector||t.mozMatchesSelector||t.oMatchesSelector||t.matchesSelector;if(n)return n.call(t,e);var r,i=t.parentNode,o=!i;return o&&(i=G).appendChild(t),r=~Y.qsa(i,e).indexOf(t),o&&G.removeChild(t),r},C=function(t){return t.replace(/-+(.)?/g,function(t,e){return e?e.toUpperCase():""})},N=function(t){return A.call(t,function(e,n){return t.indexOf(e)==n})},Y.fragment=function(t,e,n){var r,i,a;return R.test(t)&&(r=T(L.createElement(RegExp.$1))),r||(t.replace&&(t=t.replace(z,"<$1></$2>")),e===E&&(e=M.test(t)&&RegExp.$1),e in B||(e="*"),a=B[e],a.innerHTML=""+t,r=T.each(D.call(a.childNodes),function(){a.removeChild(this)})),o(n)&&(i=T(r),T.each(n,function(t,e){H.indexOf(t)>-1?i[t](e):i.attr(t,e)})),r},Y.Z=function(t,e){return new d(t,e)},Y.isZ=function(t){return t instanceof Y.Z},Y.init=function(t,n){var r;if(!t)return Y.Z();if("string"==typeof t)if(t=t.trim(),"<"==t[0]&&M.test(t))r=Y.fragment(t,RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}else{if(e(t))return T(L).ready(t);if(Y.isZ(t))return t;if(Q(t))r=s(t);else if(i(t))r=[t],t=null;else if(M.test(t))r=Y.fragment(t.trim(),RegExp.$1,n),t=null;else{if(n!==E)return T(n).find(t);r=Y.qsa(L,t)}}return Y.Z(r,t)},T=function(t,e){return Y.init(t,e)},T.extend=function(t){var e,n=D.call(arguments,1);return"boolean"==typeof t&&(e=t,t=n.shift()),n.forEach(function(n){m(t,n,e)}),t},Y.qsa=function(t,e){var n,r="#"==e[0],i=!r&&"."==e[0],o=r||i?e.slice(1):e,a=X.test(o);return t.getElementById&&a&&r?(n=t.getElementById(o))?[n]:[]:1!==t.nodeType&&9!==t.nodeType&&11!==t.nodeType?[]:D.call(a&&!r&&t.getElementsByClassName?i?t.getElementsByClassName(o):t.getElementsByTagName(e):t.querySelectorAll(e))},T.contains=L.documentElement.contains?function(t,e){return t!==e&&t.contains(e)}:function(t,e){for(;e&&(e=e.parentNode);)if(e===t)return!0;return!1},T.type=t,T.isFunction=e,T.isWindow=n,T.isArray=Q,T.isPlainObject=o,T.isEmptyObject=function(t){var e;for(e in t)return!1;return!0},T.isNumeric=function(t){var e=Number(t),n=typeof t;return null!=t&&"boolean"!=n&&("string"!=n||t.length)&&!isNaN(e)&&isFinite(e)||!1},T.inArray=function(t,e,n){return O.indexOf.call(e,t,n)},T.camelCase=C,T.trim=function(t){return null==t?"":String.prototype.trim.call(t)},T.uuid=0,T.support={},T.expr={},T.noop=function(){},T.map=function(t,e){var n,r,i,o=[];if(a(t))for(r=0;r<t.length;r++)n=e(t[r],r),null!=n&&o.push(n);else for(i in t)n=e(t[i],i),null!=n&&o.push(n);return u(o)},T.each=function(t,e){var n,r;if(a(t)){for(n=0;n<t.length;n++)if(e.call(t[n],n,t[n])===!1)return t}else for(r in t)if(e.call(t[r],r,t[r])===!1)return t;return t},T.grep=function(t,e){return A.call(t,e)},window.JSON&&(T.parseJSON=JSON.parse),T.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(t,e){J["[object "+e+"]"]=e.toLowerCase()}),T.fn={constructor:Y.Z,length:0,forEach:O.forEach,reduce:O.reduce,push:O.push,sort:O.sort,splice:O.splice,indexOf:O.indexOf,concat:function(){var t,e,n=[];for(t=0;t<arguments.length;t++)e=arguments[t],n[t]=Y.isZ(e)?e.toArray():e;return P.apply(Y.isZ(this)?this.toArray():this,n)},map:function(t){return T(T.map(this,function(e,n){return t.call(e,n,e)}))},slice:function(){return T(D.apply(this,arguments))},ready:function(t){return U.test(L.readyState)&&L.body?t(T):L.addEventListener("DOMContentLoaded",function(){t(T)},!1),this},get:function(t){return t===E?D.call(this):this[t>=0?t:t+this.length]},toArray:function(){return this.get()},size:function(){return this.length},remove:function(){return this.each(function(){null!=this.parentNode&&this.parentNode.removeChild(this)})},each:function(t){return O.every.call(this,function(e,n){return t.call(e,n,e)!==!1}),this},filter:function(t){return e(t)?this.not(this.not(t)):T(A.call(this,function(e){return Y.matches(e,t)}))},add:function(t,e){return T(N(this.concat(T(t,e))))},is:function(t){return this.length>0&&Y.matches(this[0],t)},not:function(t){var n=[];if(e(t)&&t.call!==E)this.each(function(e){t.call(this,e)||n.push(this)});else{var r="string"==typeof t?this.filter(t):a(t)&&e(t.item)?D.call(t):T(t);this.forEach(function(t){r.indexOf(t)<0&&n.push(t)})}return T(n)},has:function(t){return this.filter(function(){return i(t)?T.contains(this,t):T(this).find(t).size()})},eq:function(t){return t===-1?this.slice(t):this.slice(t,+t+1)},first:function(){var t=this[0];return t&&!i(t)?t:T(t)},last:function(){var t=this[this.length-1];return t&&!i(t)?t:T(t)},find:function(t){var e,n=this;return e=t?"object"==typeof t?T(t).filter(function(){var t=this;return O.some.call(n,function(e){return T.contains(e,t)})}):1==this.length?T(Y.qsa(this[0],t)):this.map(function(){return Y.qsa(this,t)}):T()},closest:function(t,e){var n=[],i="object"==typeof t&&T(t);return this.each(function(o,a){for(;a&&!(i?i.indexOf(a)>=0:Y.matches(a,t));)a=a!==e&&!r(a)&&a.parentNode;a&&n.indexOf(a)<0&&n.push(a)}),T(n)},parents:function(t){for(var e=[],n=this;n.length>0;)n=T.map(n,function(t){if((t=t.parentNode)&&!r(t)&&e.indexOf(t)<0)return e.push(t),t});return v(e,t)},parent:function(t){return v(N(this.pluck("parentNode")),t)},children:function(t){return v(this.map(function(){return p(this)}),t)},contents:function(){return this.map(function(){return this.contentDocument||D.call(this.childNodes)})},siblings:function(t){return v(this.map(function(t,e){return A.call(p(e.parentNode),function(t){return t!==e})}),t)},empty:function(){return this.each(function(){this.innerHTML=""})},pluck:function(t){return T.map(this,function(e){return e[t]})},show:function(){return this.each(function(){"none"==this.style.display&&(this.style.display=""),"none"==getComputedStyle(this,"").getPropertyValue("display")&&(this.style.display=h(this.nodeName))})},replaceWith:function(t){return this.before(t).remove()},wrap:function(t){var n=e(t);if(this[0]&&!n)var r=T(t).get(0),i=r.parentNode||this.length>1;return this.each(function(e){T(this).wrapAll(n?t.call(this,e):i?r.cloneNode(!0):r)})},wrapAll:function(t){if(this[0]){T(this[0]).before(t=T(t));for(var e;(e=t.children()).length;)t=e.first();T(t).append(this)}return this},wrapInner:function(t){var n=e(t);return this.each(function(e){var r=T(this),i=r.contents(),o=n?t.call(this,e):t;i.length?i.wrapAll(o):r.append(o)})},unwrap:function(){return this.parent().each(function(){T(this).replaceWith(T(this).children())}),this},clone:function(){return this.map(function(){return this.cloneNode(!0)})},hide:function(){return this.css("display","none")},toggle:function(t){return this.each(function(){var e=T(this);(t===E?"none"==e.css("display"):t)?e.show():e.hide()})},prev:function(t){return T(this.pluck("previousElementSibling")).filter(t||"*")},next:function(t){return T(this.pluck("nextElementSibling")).filter(t||"*")},html:function(t){return 0 in arguments?this.each(function(e){var n=this.innerHTML;T(this).empty().append(g(this,t,e,n))}):0 in this?this[0].innerHTML:null},text:function(t){return 0 in arguments?this.each(function(e){var n=g(this,t,e,this.textContent);this.textContent=null==n?"":""+n}):0 in this?this.pluck("textContent").join(""):null},attr:function(t,e){var n;return"string"!=typeof t||1 in arguments?this.each(function(n){if(1===this.nodeType)if(i(t))for(j in t)y(this,j,t[j]);else y(this,t,g(this,e,n,this.getAttribute(t)))}):0 in this&&1==this[0].nodeType&&null!=(n=this[0].getAttribute(t))?n:E},removeAttr:function(t){return this.each(function(){1===this.nodeType&&t.split(" ").forEach(function(t){y(this,t)},this)})},prop:function(t,e){return t=K[t]||t,1 in arguments?this.each(function(n){this[t]=g(this,e,n,this[t])}):this[0]&&this[0][t]},removeProp:function(t){return t=K[t]||t,this.each(function(){delete this[t]})},data:function(t,e){var n="data-"+t.replace(q,"-$1").toLowerCase(),r=1 in arguments?this.attr(n,e):this.attr(n);return null!==r?b(r):E},val:function(t){return 0 in arguments?(null==t&&(t=""),this.each(function(e){this.value=g(this,t,e,this.value)})):this[0]&&(this[0].multiple?T(this[0]).find("option").filter(function(){return this.selected}).pluck("value"):this[0].value)},offset:function(t){if(t)return this.each(function(e){var n=T(this),r=g(this,t,e,n.offset()),i=n.offsetParent().offset(),o={top:r.top-i.top,left:r.left-i.left};"static"==n.css("position")&&(o.position="relative"),n.css(o)});if(!this.length)return null;if(L.documentElement!==this[0]&&!T.contains(L.documentElement,this[0]))return{top:0,left:0};var e=this[0].getBoundingClientRect();return{left:e.left+window.pageXOffset,top:e.top+window.pageYOffset,width:Math.round(e.width),height:Math.round(e.height)}},css:function(e,n){if(arguments.length<2){var r=this[0];if("string"==typeof e){if(!r)return;return r.style[C(e)]||getComputedStyle(r,"").getPropertyValue(e)}if(Q(e)){if(!r)return;var i={},o=getComputedStyle(r,"");return T.each(e,function(t,e){i[e]=r.style[C(e)]||o.getPropertyValue(e)}),i}}var a="";if("string"==t(e))n||0===n?a=c(e)+":"+f(e,n):this.each(function(){this.style.removeProperty(c(e))});else for(j in e)e[j]||0===e[j]?a+=c(j)+":"+f(j,e[j])+";":this.each(function(){this.style.removeProperty(c(j))});return this.each(function(){this.style.cssText+=";"+a})},index:function(t){return t?this.indexOf(T(t)[0]):this.parent().children().indexOf(this[0])},hasClass:function(t){return!!t&&O.some.call(this,function(t){return this.test(x(t))},l(t))},addClass:function(t){return t?this.each(function(e){if("className"in this){S=[];var n=x(this),r=g(this,t,e,n);r.split(/\s+/g).forEach(function(t){T(this).hasClass(t)||S.push(t)},this),S.length&&x(this,n+(n?" ":"")+S.join(" "))}}):this},removeClass:function(t){return this.each(function(e){if("className"in this){if(t===E)return x(this,"");S=x(this),g(this,t,e,S).split(/\s+/g).forEach(function(t){S=S.replace(l(t)," ")}),x(this,S.trim())}})},toggleClass:function(t,e){return t?this.each(function(n){var r=T(this),i=g(this,t,n,x(this));i.split(/\s+/g).forEach(function(t){(e===E?!r.hasClass(t):e)?r.addClass(t):r.removeClass(t)})}):this},scrollTop:function(t){if(this.length){var e="scrollTop"in this[0];return t===E?e?this[0].scrollTop:this[0].pageYOffset:this.each(e?function(){this.scrollTop=t}:function(){this.scrollTo(this.scrollX,t)})}},scrollLeft:function(t){if(this.length){var e="scrollLeft"in this[0];return t===E?e?this[0].scrollLeft:this[0].pageXOffset:this.each(e?function(){this.scrollLeft=t}:function(){this.scrollTo(t,this.scrollY)})}},position:function(){if(this.length){var t=this[0],e=this.offsetParent(),n=this.offset(),r=Z.test(e[0].nodeName)?{top:0,left:0}:e.offset();return n.top-=parseFloat(T(t).css("margin-top"))||0,n.left-=parseFloat(T(t).css("margin-left"))||0,r.top+=parseFloat(T(e[0]).css("border-top-width"))||0,r.left+=parseFloat(T(e[0]).css("border-left-width"))||0,{top:n.top-r.top,left:n.left-r.left}}},offsetParent:function(){return this.map(function(){for(var t=this.offsetParent||L.body;t&&!Z.test(t.nodeName)&&"static"==T(t).css("position");)t=t.offsetParent;return t})}},T.fn.detach=T.fn.remove,["width","height"].forEach(function(t){var e=t.replace(/./,function(t){return t[0].toUpperCase()});T.fn[t]=function(i){var o,a=this[0];return i===E?n(a)?a["inner"+e]:r(a)?a.documentElement["scroll"+e]:(o=this.offset())&&o[t]:this.each(function(e){a=T(this),a.css(t,g(this,i,e,a[t]()))})}}),I.forEach(function(e,n){var r=n%2;T.fn[e]=function(){var e,i,o=T.map(arguments,function(n){var r=[];return e=t(n),"array"==e?(n.forEach(function(t){return t.nodeType!==E?r.push(t):T.zepto.isZ(t)?r=r.concat(t.get()):void(r=r.concat(Y.fragment(t)))}),r):"object"==e||null==n?n:Y.fragment(n)}),a=this.length>1;return o.length<1?this:this.each(function(t,e){i=r?e:e.parentNode,e=0==n?e.nextSibling:1==n?e.firstChild:2==n?e:null;var s=T.contains(L.documentElement,i);o.forEach(function(t){if(a)t=t.cloneNode(!0);else if(!i)return T(t).remove();i.insertBefore(t,e),s&&w(t,function(t){if(!(null==t.nodeName||"SCRIPT"!==t.nodeName.toUpperCase()||t.type&&"text/javascript"!==t.type||t.src)){var e=t.ownerDocument?t.ownerDocument.defaultView:window;e.eval.call(e,t.innerHTML)}})})})},T.fn[r?e+"To":"insert"+(n?"Before":"After")]=function(t){return T(t)[e](this),this}}),Y.Z.prototype=d.prototype=T.fn,Y.uniq=N,Y.deserializeValue=b,T.zepto=Y,T}();!function(t){function e(t){return t._zid||(t._zid=h++)}function n(t,n,o,a){if(n=r(n),n.ns)var s=i(n.ns);return(v[e(t)]||[]).filter(function(t){return t&&(!n.e||t.e==n.e)&&(!n.ns||s.test(t.ns))&&(!o||e(t.fn)===e(o))&&(!a||t.sel==a)})}function r(t){var e=(""+t).split(".");return{e:e[0],ns:e.slice(1).sort().join(" ")}}function i(t){return new RegExp("(?:^| )"+t.replace(" "," .* ?")+"(?: |$)")}function o(t,e){return t.del&&!y&&t.e in x||!!e}function a(t){return b[t]||y&&x[t]||t}function s(n,i,s,u,l,h,p){var d=e(n),m=v[d]||(v[d]=[]);i.split(/\s/).forEach(function(e){if("ready"==e)return t(document).ready(s);var i=r(e);i.fn=s,i.sel=l,i.e in b&&(s=function(e){var n=e.relatedTarget;if(!n||n!==this&&!t.contains(this,n))return i.fn.apply(this,arguments)}),i.del=h;var d=h||s;i.proxy=function(t){if(t=c(t),!t.isImmediatePropagationStopped()){t.data=u;var e=d.apply(n,t._args==f?[t]:[t].concat(t._args));return e===!1&&(t.preventDefault(),t.stopPropagation()),e}},i.i=m.length,m.push(i),"addEventListener"in n&&n.addEventListener(a(i.e),i.proxy,o(i,p))})}function u(t,r,i,s,u){var c=e(t);(r||"").split(/\s/).forEach(function(e){n(t,e,i,s).forEach(function(e){delete v[c][e.i],"removeEventListener"in t&&t.removeEventListener(a(e.e),e.proxy,o(e,u))})})}function c(e,n){return!n&&e.isDefaultPrevented||(n||(n=e),t.each(T,function(t,r){var i=n[t];e[t]=function(){return this[r]=w,i&&i.apply(n,arguments)},e[r]=E}),e.timeStamp||(e.timeStamp=Date.now()),(n.defaultPrevented!==f?n.defaultPrevented:"returnValue"in n?n.returnValue===!1:n.getPreventDefault&&n.getPreventDefault())&&(e.isDefaultPrevented=w)),e}function l(t){var e,n={originalEvent:t};for(e in t)j.test(e)||t[e]===f||(n[e]=t[e]);return c(n,t)}var f,h=1,p=Array.prototype.slice,d=t.isFunction,m=function(t){return"string"==typeof t},v={},g={},y="onfocusin"in window,x={focus:"focusin",blur:"focusout"},b={mouseenter:"mouseover",mouseleave:"mouseout"};g.click=g.mousedown=g.mouseup=g.mousemove="MouseEvents",t.event={add:s,remove:u},t.proxy=function(n,r){var i=2 in arguments&&p.call(arguments,2);if(d(n)){var o=function(){return n.apply(r,i?i.concat(p.call(arguments)):arguments)};return o._zid=e(n),o}if(m(r))return i?(i.unshift(n[r],n),t.proxy.apply(null,i)):t.proxy(n[r],n);throw new TypeError("expected function")},t.fn.bind=function(t,e,n){return this.on(t,e,n)},t.fn.unbind=function(t,e){return this.off(t,e)},t.fn.one=function(t,e,n,r){return this.on(t,e,n,r,1)};var w=function(){return!0},E=function(){return!1},j=/^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,T={preventDefault:"isDefaultPrevented",stopImmediatePropagation:"isImmediatePropagationStopped",stopPropagation:"isPropagationStopped"};t.fn.delegate=function(t,e,n){return this.on(e,t,n)},t.fn.undelegate=function(t,e,n){return this.off(e,t,n)},t.fn.live=function(e,n){return t(document.body).delegate(this.selector,e,n),this},t.fn.die=function(e,n){return t(document.body).undelegate(this.selector,e,n),this},t.fn.on=function(e,n,r,i,o){var a,c,h=this;return e&&!m(e)?(t.each(e,function(t,e){h.on(t,n,r,e,o)}),h):(m(n)||d(i)||i===!1||(i=r,r=n,n=f),i!==f&&r!==!1||(i=r,r=f),i===!1&&(i=E),h.each(function(f,h){o&&(a=function(t){return u(h,t.type,i),i.apply(this,arguments)}),n&&(c=function(e){var r,o=t(e.target).closest(n,h).get(0);if(o&&o!==h)return r=t.extend(l(e),{currentTarget:o,liveFired:h}),(a||i).apply(o,[r].concat(p.call(arguments,1)))}),s(h,e,i,r,n,c||a)}))},t.fn.off=function(e,n,r){var i=this;return e&&!m(e)?(t.each(e,function(t,e){i.off(t,n,e)}),i):(m(n)||d(r)||r===!1||(r=n,n=f),r===!1&&(r=E),i.each(function(){u(this,e,r,n)}))},t.fn.trigger=function(e,n){return e=m(e)||t.isPlainObject(e)?t.Event(e):c(e),e._args=n,this.each(function(){e.type in x&&"function"==typeof this[e.type]?this[e.type]():"dispatchEvent"in this?this.dispatchEvent(e):t(this).triggerHandler(e,n)})},t.fn.triggerHandler=function(e,r){var i,o;return this.each(function(a,s){i=l(m(e)?t.Event(e):e),i._args=r,i.target=s,t.each(n(s,e.type||e),function(t,e){if(o=e.proxy(i),i.isImmediatePropagationStopped())return!1})}),o},"focusin focusout focus blur load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select keydown keypress keyup error".split(" ").forEach(function(e){t.fn[e]=function(t){return 0 in arguments?this.bind(e,t):this.trigger(e)}}),t.Event=function(t,e){m(t)||(e=t,t=e.type);var n=document.createEvent(g[t]||"Events"),r=!0;if(e)for(var i in e)"bubbles"==i?r=!!e[i]:n[i]=e[i];return n.initEvent(t,r,!0),c(n)}}(e),function(t){function e(e,n,r){var i=t.Event(n);return t(e).trigger(i,r),!i.isDefaultPrevented()}function n(t,n,r,i){if(t.global)return e(n||x,r,i)}function r(e){e.global&&0===t.active++&&n(e,null,"ajaxStart")}function i(e){e.global&&!--t.active&&n(e,null,"ajaxStop")}function o(t,e){var r=e.context;return e.beforeSend.call(r,t,e)!==!1&&n(e,r,"ajaxBeforeSend",[t,e])!==!1&&void n(e,r,"ajaxSend",[t,e])}function a(t,e,r,i){var o=r.context,a="success";r.success.call(o,t,a,e),i&&i.resolveWith(o,[t,a,e]),n(r,o,"ajaxSuccess",[e,r,t]),u(a,e,r)}function s(t,e,r,i,o){var a=i.context;i.error.call(a,r,e,t),o&&o.rejectWith(a,[r,e,t]),n(i,a,"ajaxError",[r,i,t||e]),u(e,r,i)}function u(t,e,r){var o=r.context;r.complete.call(o,e,t),n(r,o,"ajaxComplete",[e,r]),i(r)}function c(t,e,n){if(n.dataFilter==l)return t;var r=n.context;return n.dataFilter.call(r,t,e)}function l(){}function f(t){return t&&(t=t.split(";",2)[0]),t&&(t==T?"html":t==j?"json":w.test(t)?"script":E.test(t)&&"xml")||"text"}function h(t,e){return""==e?t:(t+"&"+e).replace(/[&?]{1,2}/,"?")}function p(e){e.processData&&e.data&&"string"!=t.type(e.data)&&(e.data=t.param(e.data,e.traditional)),!e.data||e.type&&"GET"!=e.type.toUpperCase()&&"jsonp"!=e.dataType||(e.url=h(e.url,e.data),e.data=void 0)}function d(e,n,r,i){return t.isFunction(n)&&(i=r,r=n,n=void 0),t.isFunction(r)||(i=r,r=void 0),{url:e,data:n,success:r,dataType:i}}function m(e,n,r,i){var o,a=t.isArray(n),s=t.isPlainObject(n);t.each(n,function(n,u){o=t.type(u),i&&(n=r?i:i+"["+(s||"object"==o||"array"==o?n:"")+"]"),!i&&a?e.add(u.name,u.value):"array"==o||!r&&"object"==o?m(e,u,r,n):e.add(n,u)})}var v,g,y=+new Date,x=window.document,b=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,w=/^(?:text|application)\/javascript/i,E=/^(?:text|application)\/xml/i,j="application/json",T="text/html",S=/^\s*$/,C=x.createElement("a");C.href=window.location.href,t.active=0,t.ajaxJSONP=function(e,n){if(!("type"in e))return t.ajax(e);var r,i,u=e.jsonpCallback,c=(t.isFunction(u)?u():u)||"Zepto"+y++,l=x.createElement("script"),f=window[c],h=function(e){t(l).triggerHandler("error",e||"abort")},p={abort:h};return n&&n.promise(p),t(l).on("load error",function(o,u){clearTimeout(i),t(l).off().remove(),"error"!=o.type&&r?a(r[0],p,e,n):s(null,u||"error",p,e,n),window[c]=f,r&&t.isFunction(f)&&f(r[0]),f=r=void 0}),o(p,e)===!1?(h("abort"),p):(window[c]=function(){r=arguments},l.src=e.url.replace(/\?(.+)=\?/,"?$1="+c),x.head.appendChild(l),e.timeout>0&&(i=setTimeout(function(){h("timeout")},e.timeout)),p)},t.ajaxSettings={type:"GET",beforeSend:l,success:l,error:l,complete:l,context:null,global:!0,xhr:function(){return new window.XMLHttpRequest},accepts:{script:"text/javascript, application/javascript, application/x-javascript",json:j,xml:"application/xml, text/xml",html:T,text:"text/plain"},crossDomain:!1,timeout:0,processData:!0,cache:!0,dataFilter:l},t.ajax=function(e){var n,i,u=t.extend({},e||{}),d=t.Deferred&&t.Deferred();for(v in t.ajaxSettings)void 0===u[v]&&(u[v]=t.ajaxSettings[v]);r(u),u.crossDomain||(n=x.createElement("a"),n.href=u.url,n.href=n.href,u.crossDomain=C.protocol+"//"+C.host!=n.protocol+"//"+n.host),u.url||(u.url=window.location.toString()),(i=u.url.indexOf("#"))>-1&&(u.url=u.url.slice(0,i)),p(u);var m=u.dataType,y=/\?.+=\?/.test(u.url);if(y&&(m="jsonp"),u.cache!==!1&&(e&&e.cache===!0||"script"!=m&&"jsonp"!=m)||(u.url=h(u.url,"_="+Date.now())),"jsonp"==m)return y||(u.url=h(u.url,u.jsonp?u.jsonp+"=?":u.jsonp===!1?"":"callback=?")),t.ajaxJSONP(u,d);var b,w=u.accepts[m],E={},j=function(t,e){E[t.toLowerCase()]=[t,e]},T=/^([\w-]+:)\/\//.test(u.url)?RegExp.$1:window.location.protocol,N=u.xhr(),O=N.setRequestHeader;if(d&&d.promise(N),u.crossDomain||j("X-Requested-With","XMLHttpRequest"),j("Accept",w||"*/*"),(w=u.mimeType||w)&&(w.indexOf(",")>-1&&(w=w.split(",",2)[0]),N.overrideMimeType&&N.overrideMimeType(w)),(u.contentType||u.contentType!==!1&&u.data&&"GET"!=u.type.toUpperCase())&&j("Content-Type",u.contentType||"application/x-www-form-urlencoded"),u.headers)for(g in u.headers)j(g,u.headers[g]);if(N.setRequestHeader=j,N.onreadystatechange=function(){if(4==N.readyState){N.onreadystatechange=l,clearTimeout(b);var e,n=!1;if(N.status>=200&&N.status<300||304==N.status||0==N.status&&"file:"==T){if(m=m||f(u.mimeType||N.getResponseHeader("content-type")),"arraybuffer"==N.responseType||"blob"==N.responseType)e=N.response;else{e=N.responseText;try{e=c(e,m,u),"script"==m?(0,eval)(e):"xml"==m?e=N.responseXML:"json"==m&&(e=S.test(e)?null:t.parseJSON(e))}catch(r){n=r}if(n)return s(n,"parsererror",N,u,d)}a(e,N,u,d)}else s(N.statusText||null,N.status?"error":"abort",N,u,d)}},o(N,u)===!1)return N.abort(),s(null,"abort",N,u,d),N;var P=!("async"in u)||u.async;if(N.open(u.type,u.url,P,u.username,u.password),u.xhrFields)for(g in u.xhrFields)N[g]=u.xhrFields[g];for(g in E)O.apply(N,E[g]);return u.timeout>0&&(b=setTimeout(function(){N.onreadystatechange=l,N.abort(),s(null,"timeout",N,u,d)},u.timeout)),N.send(u.data?u.data:null),N},t.get=function(){return t.ajax(d.apply(null,arguments))},t.post=function(){var e=d.apply(null,arguments);return e.type="POST",t.ajax(e)},t.getJSON=function(){var e=d.apply(null,arguments);return e.dataType="json",t.ajax(e)},t.fn.load=function(e,n,r){if(!this.length)return this;var i,o=this,a=e.split(/\s/),s=d(e,n,r),u=s.success;return a.length>1&&(s.url=a[0],i=a[1]),s.success=function(e){o.html(i?t("<div>").html(e.replace(b,"")).find(i):e),u&&u.apply(o,arguments)},t.ajax(s),this};var N=encodeURIComponent;t.param=function(e,n){var r=[];return r.add=function(e,n){t.isFunction(n)&&(n=n()),null==n&&(n=""),this.push(N(e)+"="+N(n))},m(r,e,n),r.join("&").replace(/%20/g,"+")}}(e),function(t){t.fn.serializeArray=function(){var e,n,r=[],i=function(t){return t.forEach?t.forEach(i):void r.push({name:e,value:t})};return this[0]&&t.each(this[0].elements,function(r,o){n=o.type,e=o.name,e&&"fieldset"!=o.nodeName.toLowerCase()&&!o.disabled&&"submit"!=n&&"reset"!=n&&"button"!=n&&"file"!=n&&("radio"!=n&&"checkbox"!=n||o.checked)&&i(t(o).val())}),r},t.fn.serialize=function(){var t=[];return this.serializeArray().forEach(function(e){t.push(encodeURIComponent(e.name)+"="+encodeURIComponent(e.value))}),t.join("&")},t.fn.submit=function(e){if(0 in arguments)this.bind("submit",e);else if(this.length){var n=t.Event("submit");this.eq(0).trigger(n),n.isDefaultPrevented()||this.get(0).submit()}return this}}(e),function(){try{getComputedStyle(void 0)}catch(t){var e=getComputedStyle;window.getComputedStyle=function(t,n){try{return e(t,n)}catch(r){return null}}}}(),t("zepto",e)});layui.define(function(i){i("layim-mobile",layui.v)});layui["layui.mobile"]||layui.config({base:layui.cache.dir+"lay/modules/mobile/"}).extend({"layer-mobile":"layer-mobile",zepto:"zepto","upload-mobile":"upload-mobile","layim-mobile":"layim-mobile"}),layui.define(["layer-mobile","zepto","layim-mobile"],function(l){l("mobile",{layer:layui["layer-mobile"],layim:layui["layim-mobile"]})}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/rate.js b/src/main/resources/static/layui/lay/modules/rate.js new file mode 100644 index 0000000..bcc103f --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/rate.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/slider.js b/src/main/resources/static/layui/lay/modules/slider.js new file mode 100644 index 0000000..c39707d --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/slider.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.max<t.min&&(t.max=t.min+t.step),t.range){t.value="object"==typeof t.value?t.value:[t.min,t.value];var a=Math.min(t.value[0],t.value[1]),n=Math.max(t.value[0],t.value[1]);t.value[0]=a>t.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.value<t.min&&(t.value=t.min),t.value>t.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='<div class="layui-slider '+("vertical"===t.type?"layui-slider-vertical":"")+'">'+(t.tips?'<div class="layui-slider-tips"></div>':"")+'<div class="layui-slider-bar" style="background:'+p+"; "+("vertical"===t.type?"height":"width")+":"+m+";"+("vertical"===t.type?"bottom":"left")+":"+(r||0)+';"></div><div class="layui-slider-wrap" style="'+("vertical"===t.type?"bottom":"left")+":"+(r||m)+';"><div class="layui-slider-wrap-btn" style="border: 2px solid '+p+';"></div></div>'+(t.range?'<div class="layui-slider-wrap" style="'+("vertical"===t.type?"bottom":"left")+":"+v+';"><div class="layui-slider-wrap-btn" style="border: 2px solid '+p+';"></div></div>':"")+"</div>",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x<g+1;x++){var T=100*x/g;T<100&&(b+='<div class="layui-slider-step" style="'+("vertical"===t.type?"bottom":"left")+":"+T+'%"></div>')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('<div class="layui-slider-input layui-input"><div class="layui-slider-input-txt"><input type="text" class="layui-input"></div><div class="layui-slider-input-btn"><i class="layui-icon layui-icon-up"></i><i class="layui-icon layui-icon-down"></i></div></div>');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['<div class="layui-auxiliar-moving" id="LAY-slider-moving"></div'].join("")),M=function(e,t){var a=function(){t&&t(),w.remove()};i("#LAY-slider-moving")[0]||i("body").append(w),w.on("mousemove",e),w.on("mouseup",a).on("mouseleave",a)};if("set"===e)return x(t,a);s.find("."+u).each(function(e){var t=i(this);t.on("mousedown",function(i){i=i||window.event;var a=t.parent()[0].offsetLeft,n=i.clientX;"vertical"===l.type&&(a=f()-t.parent()[0].offsetTop-h.height(),n=i.clientY);var r=function(i){i=i||window.event;var r=a+("vertical"===l.type?n-i.clientY:i.clientX-n);r<0&&(r=0),r>f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.step<l.min?l.min:Number(g)-l.step:Number(g)+l.step>l.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=e<l.min?l.min:e,e=e>l.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/table.js b/src/main/resources/static/layui/lay/modules/table.js new file mode 100644 index 0000000..51b697f --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/table.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("<div>"+o+"</div>").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',"<thead>","{{# layui.each(d.data.cols, function(i1, item1){ }}","<tr>","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'<th data-field="{{ item2.field||i2 }}" data-key="{{d.index}}-{{i1}}-{{i2}}" {{# if( item2.parentKey){ }}data-parentkey="{{ item2.parentKey }}"{{# } }} {{# if(item2.minWidth){ }}data-minwidth="{{item2.minWidth}}"{{# } }} '+t+' {{# if(item2.unresize || item2.colGroup){ }}data-unresize="true"{{# } }} class="{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}">','<div class="layui-table-cell laytable-cell-',"{{# if(item2.colGroup){ }}","group","{{# } else { }}","{{d.index}}-{{i1}}-{{i2}}",'{{# if(item2.type !== "normal"){ }}'," laytable-cell-{{ item2.type }}","{{# } }}","{{# } }}",'" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>','{{# if(item2.type === "checkbox"){ }}','<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',"{{# } else { }}",'<span>{{item2.title||""}}</span>',"{{# if(isSort){ }}",'<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc" title="升序"></i><i class="layui-edge layui-table-sort-desc" title="降序"></i></span>',"{{# } }}","{{# } }}","</div>","</th>",e.fixed?"{{# }; }}":"","{{# }); }}","</tr>","{{# }); }}","</thead>","</table>"].join("")},z=['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',"<tbody></tbody>","</table>"].join(""),H=['<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" lay-id="{{ d.data.id }}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">',"{{# if(d.data.toolbar){ }}",'<div class="layui-table-tool">','<div class="layui-table-tool-temp"></div>','<div class="layui-table-tool-self"></div>',"</div>","{{# } }}",'<div class="layui-table-box">',"{{# if(d.data.loading){ }}",'<div class="layui-table-init" style="background-color: #fff;">','<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>',"</div>","{{# } }}","{{# var left, right; }}",'<div class="layui-table-header">',E(),"</div>",'<div class="layui-table-body layui-table-main">',z,"</div>","{{# if(left){ }}",'<div class="layui-table-fixed layui-table-fixed-l">','<div class="layui-table-header">',E({fixed:!0}),"</div>",'<div class="layui-table-body">',z,"</div>","</div>","{{# }; }}","{{# if(right){ }}",'<div class="layui-table-fixed layui-table-fixed-r">','<div class="layui-table-header">',E({fixed:"right"}),'<div class="layui-table-mend"></div>',"</div>",'<div class="layui-table-body">',z,"</div>","</div>","{{# }; }}","</div>","{{# if(d.data.totalRow){ }}",'<div class="layui-table-total">','<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>','<tbody><tr><td><div class="layui-table-cell" style="visibility: hidden;">Total</div></td></tr></tbody>',"</table>","</div>","{{# } }}","{{# if(d.data.page){ }}",'<div class="layui-table-page">','<div id="layui-table-page{{d.index}}"></div>',"</div>","{{# } }}","<style>","{{# layui.each(d.data.cols, function(i1, item1){","layui.each(item1, function(i2, item2){ }}",".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ ","{{# if(item2.width){ }}","width: {{item2.width}}px;","{{# } }}"," }","{{# });","}); }}","</style>","</div>"].join(""),R=t(window),F=t(document),j=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};j.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},j.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},j.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},j.prototype.renderToolbar=function(){var e=this,a=e.config,l=['<div class="layui-inline" lay-event="add"><i class="layui-icon layui-icon-add-1"></i></div>','<div class="layui-inline" lay-event="update"><i class="layui-icon layui-icon-edit"></i></div>','<div class="layui-inline" lay-event="delete"><i class="layui-icon layui-icon-delete"></i></div>'].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&d.push('<div class="layui-inline" title="'+i.title+'" lay-event="'+i.layEvent+'"><i class="layui-icon '+i.icon+'"></i></div>')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},j.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},j.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},j.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&l<s&&(a--,c=s):(c=d.width||0,/\d+%$/.test(c)?(c=Math.floor(parseFloat(c)/100*o),c<s&&(c=s)):c||(d.width=c=0,a++)),d.hide&&(c=0),n+=c)):void r.splice(i,1)})}),o>n&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},j.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},j.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},j.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('<div class="'+p+'">'+(e||"Error")+"</div>");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},j.prototype.page=1,j.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},j.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},j.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['<td data-field="'+c+'" data-key="'+h+'" '+function(){var e=[];return r.edit&&e.push('data-edit="'+r.edit+'"'),r.align&&e.push('align="'+r.align+'"'),r.templet&&e.push('data-content="'+v+'"'),r.toolbar&&e.push('data-off="true"'),r.event&&e.push('lay-event="'+r.event+'"'),r.style&&e.push('style="'+r.style+'"'),r.minWidth&&e.push('data-minwidth="'+r.minWidth+'"'),e.join(" ")}()+' class="'+function(){var e=[];return r.hide&&e.push(f),r.field||e.push("layui-table-col-special"),e.join(" ")}()+'">','<div class="layui-table-cell laytable-cell-'+function(){return"normal"===r.type?h:h+" laytable-cell-"+r.type}()+'">'+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'<input type="checkbox" name="layTableCheckbox" lay-skin="primary" '+function(){return r[o]?(l[o]=r[o],r[o]?"checked":""):n[o]?"checked":""}()+">";case"radio":return n[o]&&(e=a),'<input type="radio" name="layTableRadio_'+s.index+'" '+(n[o]?"checked":"")+' lay-type="layTableRadio">';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"</div></td>"].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push('<tr data-index="'+a+'">'+o.join("")+"</tr>"),v.push('<tr data-index="'+a+'">'+y.join("")+"</tr>"),m.push('<tr data-index="'+a+'">'+p.join("")+"</tr>"))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'<i class="layui-icon"></i>',next:'<i class="layui-icon"></i>',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},j.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})}),t.dataTotal={};var l=[];t.eachCols(function(e,n){var o=n.field||e,r=function(){var e=n.totalRowText||"",t=parseFloat(a[o]).toFixed(2),i={};return i[o]=t,t=u(n,t,i),n.totalRow?t||e:e}(),d=['<td data-field="'+o+'" data-key="'+i.index+"-"+n.key+'" '+function(){var e=[];return n.align&&e.push('align="'+n.align+'"'),n.style&&e.push('style="'+n.style+'"'),n.minWidth&&e.push('data-minwidth="'+n.minWidth+'"'),e.join(" ")}()+' class="'+function(){var e=[];return n.hide&&e.push(f),n.field||e.push("layui-table-col-special"),e.join(" ")}()+'">','<div class="layui-table-cell laytable-cell-'+function(){var e=i.index+"-"+n.key;return"normal"===n.type?e:e+" laytable-cell-"+n.type}()+'">'+r,"</div></td>"].join("");n.field&&(t.dataTotal[o]=r),l.push(d)}),t.layTotal.find("tbody").html("<tr>"+l.join("")+"</tr>")}},j.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},j.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},j.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},j.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},j.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['<div class="layui-table-init">','<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>',"</div>"].join("")),i.layBox.append(i.layInit)))},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},j.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},j.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},j.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('<ul class="layui-table-tool-panel"></ul>');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('<li><input type="checkbox" name="'+i.field+'" data-key="'+i.key+'" data-parentkey="'+(i.parentKey||"")+'" lay-skin="primary" '+(i.hide?"":"checked")+' title="'+(i.title||i.field)+'" lay-filter="LAY_TABLE_TOOL_COLS"></li>')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['<li data-type="csv">导出到 Csv 文件</li>','<li data-type="xls">导出到 Excel 文件</li>'].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=["<style>","body{font-size: 12px; color: #666;}","table{width: 100%; border-collapse: collapse; border-spacing: 0;}","th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}","a{color: #666; text-decoration:none;}","*.layui-hide{display: none}","</style>"].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a<c.minWidth&&(a=c.minWidth),c.rule.style.width=a+"px",l.close(i.tipsIndex)}e=1}}).on("mouseup",function(t){c.resizeStart&&(c={},o.css("cursor",""),i.scrollPatch()),2===e&&(e=null)}),s.on("click",function(a){var l,n=t(this),o=n.find(S),r=o.attr("lay-sort");return o[0]&&1!==e?(l="asc"===r?"desc":"desc"===r?null:"asc",void i.sort(n,l,null,!0)):e=2}).find(S+" .layui-edge ").on("click",function(e){var a=t(this),l=a.index(),n=a.parents("th").eq(0).data("field");layui.stope(e),0===l?i.sort(n,"asc",null,!0):i.sort(n,"desc",null,!0)});var v=function(e){var a=t(this),l=a.parents("tr").eq(0).data("index"),n=i.layBody.find('tr[data-index="'+l+'"]'),o=d.cache[i.key]||[];return o=o[l]||{},t.extend({tr:n,data:d.clearCacheKey(o),del:function(){d.cache[i.key][l]=[],n.remove(),i.scrollPatch()},update:function(e){e=e||{},layui.each(e,function(e,t){if(e in o){var a,l=n.children('td[data-field="'+e+'"]');o[e]=t,i.eachCols(function(t,i){i.field==e&&i.templet&&(a=i.templet)}),l.children(h).html(u({templet:a},t,o)),l.data("content",t)}})}},e)};i.elem.on("click",'input[name="layTableCheckbox"]+',function(){var e=t(this).prev(),a=i.layBody.find('input[name="layTableCheckbox"]'),l=e.parents("tr").eq(0).data("index"),n=e[0].checked,o="layTableAllChoose"===e.attr("lay-filter");o?(a.each(function(e,t){t.checked=n,i.setCheckData(e,n)}),i.syncCheckAll(),i.renderForm("checkbox")):(i.setCheckData(l,n),i.syncCheckAll()),layui.event.call(e[0],y,"checkbox("+p+")",v.call(e[0],{checked:n,type:o?"all":"one"}))}),i.elem.on("click",'input[lay-type="layTableRadio"]+',function(){var e=t(this).prev(),a=e[0].checked,l=d.cache[i.key],n=e.parents("tr").eq(0).data("index");layui.each(l,function(e,t){n===e?t.LAY_CHECKED=!0:delete t.LAY_CHECKED}),i.setThisRowChecked(n),layui.event.call(this,y,"radio("+p+")",v.call(this,{checked:a}))}),i.layBody.on("mouseenter","tr",function(){var e=t(this),a=e.index();e.data("off")||i.layBody.find("tr:eq("+a+")").addClass(_)}).on("mouseleave","tr",function(){var e=t(this),a=e.index();e.data("off")||i.layBody.find("tr:eq("+a+")").removeClass(_)}).on("click","tr",function(){m.call(this,"row")}).on("dblclick","tr",function(){m.call(this,"rowDouble")});var m=function(e){var i=t(this);i.data("off")||layui.event.call(this,y,e+"("+p+")",v.call(i.children("td")[0]))};i.layBody.on("change","."+W,function(){var e=t(this),a=this.value,l=e.parent().data("field"),n=e.parents("tr").eq(0).data("index"),o=d.cache[i.key][n];o[l]=a,layui.event.call(this,y,"edit("+p+")",v.call(this,{value:a,field:l}))}).on("blur","."+W,function(){var e,a=t(this),l=this,n=a.parent().data("field"),o=a.parents("tr").eq(0).data("index"),r=d.cache[i.key][o];i.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),a.siblings(h).html(function(t){return u({templet:e},t,r)}(l.value)),a.parent().data("content",l.value),a.remove()}),i.layBody.on("click","td",function(e){var i=t(this),a=(i.data("field"),i.data("edit")),l=i.children(h);if(!i.data("off")&&a){var n=t('<input class="layui-input '+W+'">');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('<div class="'+g+'"><i class="layui-icon layui-icon-down"></i></div>')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['<div class="layui-table-tips-main" style="margin-top: -'+(d.height()+16)+"px;"+function(){return"sm"===a.size?"padding: 4px 15px; font-size: 12px;":"lg"===a.size?"padding: 14px 15px;":""}()+'">',d.html(),"</div>",'<i class="layui-icon layui-table-tips-c layui-icon-close"></i>'].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),R.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new j(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/transfer.js b/src/main/resources/static/layui/lay/modules/transfer.js new file mode 100644 index 0000000..6b7b677 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/transfer.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['<div class="layui-transfer-box" data-index="'+e.index+'">','<div class="layui-transfer-header">','<input type="checkbox" name="'+e.checkAllName+'" lay-filter="layTransferCheckbox" lay-type="all" lay-skin="primary" title="{{ d.data.title['+e.index+"] || 'list"+(e.index+1)+"' }}\">","</div>","{{# if(d.data.showSearch){ }}",'<div class="layui-transfer-search">','<i class="layui-icon layui-icon-search"></i>','<input type="input" class="layui-input" placeholder="关键词搜索">',"</div>","{{# } }}",'<ul class="layui-transfer-data"></ul>',"</div>"].join("")},v=['<div class="layui-transfer layui-form layui-border-box" lay-filter="LAY-transfer-{{ d.index }}">',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'<div class="layui-transfer-active">','<button type="button" class="layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled" data-index="0">','<i class="layui-icon layui-icon-next"></i>',"</button>",'<button type="button" class="layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled" data-index="1">','<i class="layui-icon layui-icon-prev"></i>',"</button>","</div>",p({index:1,checkAllName:"layTransferRightCheckAll"}),"</div>"].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["<li>",'<input type="checkbox" name="'+a[t].checkName+'" lay-skin="primary" lay-filter="layTransferCheckbox" title="'+e.title+'"'+(e.disabled?" disabled":"")+(e.checked?" checked":"")+' value="'+e.value+'">',"</li>"].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('<p class="layui-none">'+(t||"")+"</p>");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/tree.js b/src/main/resources/static/layui/lay/modules/tree.js new file mode 100644 index 0000000..15fb294 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/tree.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('<div class="layui-tree'+(a.showCheckbox?" layui-form":"")+(a.showLine?" layui-tree-line":"")+'" lay-filter="LAY-tree-'+e.index+'"></div>');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('<div class="layui-tree-emptyText">'+a.text.none+"</div>"),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('<div class="layui-tree-pack" '+(r.spread?'style="display: block;"':"")+'"></div>'),h=i(['<div data-id="'+r.id+'" class="layui-tree-set'+(r.spread?" layui-tree-spread":"")+(r.checked?" layui-tree-checkedFirst":"")+'">','<div class="layui-tree-entry">','<div class="layui-tree-main">',function(){return t.showLine?l?'<span class="layui-tree-iconClick layui-tree-icon"><i class="layui-icon '+(r.spread?"layui-icon-subtraction":"layui-icon-addition")+'"></i></span>':'<span class="layui-tree-iconClick"><i class="layui-icon layui-icon-file"></i></span>':'<span class="layui-tree-iconClick"><i class="layui-tree-iconArrow '+(l?"":c)+'"></i></span>'}(),function(){return t.showCheckbox?'<input type="checkbox" name="'+(r.field||"layuiTreeCheck_"+r.id)+'" same="layuiTreeCheck" lay-skin="primary" '+(r.disabled?"disabled":"")+' value="'+r.id+'">':""}(),function(){return t.isJump&&r.href?'<a href="'+r.href+'" target="_blank" class="'+y+'">'+(r.title||r.label||t.text.defaultNodeName)+"</a>":'<span class="'+y+(r.disabled?" "+d:"")+'">'+(r.title||r.label||t.text.defaultNodeName)+"</span>"}(),"</div>",function(){if(!t.edit)return"";var e={add:'<i class="layui-icon layui-icon-add-1" data-type="add"></i>',update:'<i class="layui-icon layui-icon-edit" data-type="update"></i>',del:'<i class="layui-icon layui-icon-delete" data-type="del"></i>'},i=['<div class="layui-btn-group layui-tree-btnGroup">'];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"</div>"):void 0}(),"</div></div>"].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('<div class="layui-tree-pack"></div>'));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append('<input type="text" class="layui-tree-editInput">'),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "<span style="color: #999;">'+(a.title||"")+'</span>" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/upload.js b/src/main/resources/static/layui/lay/modules/upload.js new file mode 100644 index 0000000..262b513 --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/upload.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['<input class="'+u+'" type="file" accept="'+i.acceptMime+'" name="'+i.field+'"',i.multiple?" multiple":"",">"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('<div class="layui-upload-wrap"></div>'),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t('<iframe id="'+f+'" class="'+f+'" name="'+f+'" frameborder="0"></iframe>'),o=t(['<form target="'+f+'" class="'+c+'" method="post" key="set-mine" enctype="multipart/form-data" action="'+i.url+'">',"</form>"].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('<input type="hidden" name="'+t+'" value="'+i+'">')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),t.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("请求上传接口出现异常"),m(e),u()},xhr:function(){var e=new XMLHttpRequest;return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);"function"==typeof l.progress&&l.progress(t,e)}}),e}})})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after('<span class="layui-inline '+s+'">'+a+"</span>")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/lay/modules/util.js b/src/main/resources/static/layui/lay/modules/util.js new file mode 100644 index 0000000..256f47a --- /dev/null +++ b/src/main/resources/static/layui/lay/modules/util.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['<ul class="'+a+'">',t.bar1?'<li class="layui-icon" lay-type="bar1" style="'+t.bgcolor+'">'+c[0]+"</li>":"",t.bar2?'<li class="layui-icon" lay-type="bar2" style="'+t.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+t.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n<e;n++)i+="0";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,n=new Date(t||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return e=e||"yyyy-MM-dd HH:mm:ss",e.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(t){return String(t||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)}); \ No newline at end of file diff --git a/src/main/resources/static/layui/layui.all.js b/src/main/resources/static/layui/layui.all.js new file mode 100644 index 0000000..1d911b3 --- /dev/null +++ b/src/main/resources/static/layui/layui.all.js @@ -0,0 +1,5 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.5.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;o<e.length&&!t.call(e[o],o,e[o]);o++);return n},n.prototype.sort=function(e,t,o){var n=JSON.parse(JSON.stringify(e||[]));return t?(n.sort(function(e,o){var n=/^-?\d+$/,r=e[t],i=o[t];return n.test(r)&&(r=parseFloat(r)),n.test(i)&&(i=parseFloat(i)),r&&!i?1:!r&&i?-1:r>i?1:r<i?-1:0}),o&&n.reverse(),n):n},n.prototype.stope=function(t){t=t||e.event;try{t.stopPropagation()}catch(o){t.cancelBubble=!0}},n.prototype.onevent=function(e,t,o){return"string"!=typeof e||"function"!=typeof o?this:n.event(e,t,null,o)},n.prototype.event=n.event=function(e,t,n,r){var i=this,a=null,u=t.match(/\((.*)\)$/)||[],l=(e+"."+t).replace(u[0],""),s=u[1]||"",c=function(e,t){var o=t&&t.call(i,n);o===!1&&null===a&&(a=!1)};return r?(o.event[l]=o.event[l]||{},o.event[l][s]=[r],this):(layui.each(o.event[l],function(e,t){return"{*}"===s?void layui.each(t,c):(""===e&&layui.each(t,c),void(s&&e===s&&layui.each(t,c)))}),a)},e.layui=new n}(window);layui.define(function(a){var i=layui.cache;layui.config({dir:i.dir.replace(/lay\/dest\/$/,"")}),a("layui.all",layui.v)});layui.define(function(e){"use strict";var r={open:"{{",close:"}}"},c={exp:function(e){return new RegExp(e,"g")},query:function(e,c,t){var o=["#([\\s\\S])+?","([^{#}])*?"][e||0];return n((c||"")+r.open+o+r.close+(t||""))},escape:function(e){return String(e||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},error:function(e,r){var c="Laytpl Error:";return"object"==typeof console&&console.error(c+e+"\n"+(r||"")),c+e}},n=c.exp,t=function(e){this.tpl=e};t.pt=t.prototype,window.errors=0,t.pt.parse=function(e,t){var o=this,p=e,a=n("^"+r.open+"#",""),l=n(r.close+"$","");e=e.replace(/\s+|\r|\t|\n/g," ").replace(n(r.open+"#"),r.open+"# ").replace(n(r.close+"}"),"} "+r.close).replace(/\\/g,"\\\\").replace(n(r.open+"!(.+?)!"+r.close),function(e){return e=e.replace(n("^"+r.open+"!"),"").replace(n("!"+r.close),"").replace(n(r.open+"|"+r.close),function(e){return e.replace(/(.)/g,"\\$1")})}).replace(/(?="|')/g,"\\").replace(c.query(),function(e){return e=e.replace(a,"").replace(l,""),'";'+e.replace(/\\/g,"")+';view+="'}).replace(c.query(1),function(e){var c='"+(';return e.replace(/\s/g,"")===r.open+r.close?"":(e=e.replace(n(r.open+"|"+r.close),""),/^=/.test(e)&&(e=e.replace(/^=/,""),c='"+_escape_('),c+e.replace(/\\/g,"")+')+"')}),e='"use strict";var view = "'+e+'";return view;';try{return o.cache=e=new Function("d, _escape_",e),e(t,c.escape)}catch(u){return delete o.cache,c.error(u,p)}},t.pt.render=function(e,r){var n,t=this;return e?(n=t.cache?t.cache(e,c.escape):t.parse(t.tpl,e),r?void r(n):n):c.error("no data")};var o=function(e){return"string"!=typeof e?c.error("Template not found"):new t(e)};o.config=function(e){e=e||{};for(var c in e)r[c]=e[c]},o.v="1.2.0",e("laytpl",o)});layui.define(function(e){"use strict";var a=document,t="getElementById",n="getElementsByTagName",i="laypage",r="layui-disabled",u=function(e){var a=this;a.config=e||{},a.config.index=++s.index,a.render(!0)};u.prototype.type=function(){var e=this.config;if("object"==typeof e.elem)return void 0===e.elem.length?2:3},u.prototype.view=function(){var e=this,a=e.config,t=a.groups="groups"in a?0|a.groups:5;a.layout="object"==typeof a.layout?a.layout:["prev","page","next"],a.count=0|a.count,a.curr=0|a.curr||1,a.limits="object"==typeof a.limits?a.limits:[10,20,30,40,50],a.limit=0|a.limit||10,a.pages=Math.ceil(a.count/a.limit)||1,a.curr>a.pages&&(a.curr=a.pages),t<0?t=1:t>a.pages&&(t=a.pages),a.prev="prev"in a?a.prev:"上一页",a.next="next"in a?a.next:"下一页";var n=a.pages>t?Math.ceil((a.curr+(t>1?1:0))/(t>0?t:1)):1,i={prev:function(){return a.prev?'<a href="javascript:;" class="layui-laypage-prev'+(1==a.curr?" "+r:"")+'" data-page="'+(a.curr-1)+'">'+a.prev+"</a>":""}(),page:function(){var e=[];if(a.count<1)return"";n>1&&a.first!==!1&&0!==t&&e.push('<a href="javascript:;" class="layui-laypage-first" data-page="1" title="首页">'+(a.first||1)+"</a>");var i=Math.floor((t-1)/2),r=n>1?a.curr-i:1,u=n>1?function(){var e=a.curr+(t-i-1);return e>a.pages?a.pages:e}():t;for(u-r<t-1&&(r=u-t+1),a.first!==!1&&r>2&&e.push('<span class="layui-laypage-spr">…</span>');r<=u;r++)r===a.curr?e.push('<span class="layui-laypage-curr"><em class="layui-laypage-em" '+(/^#/.test(a.theme)?'style="background-color:'+a.theme+';"':"")+"></em><em>"+r+"</em></span>"):e.push('<a href="javascript:;" data-page="'+r+'">'+r+"</a>");return a.pages>t&&a.pages>u&&a.last!==!1&&(u+1<a.pages&&e.push('<span class="layui-laypage-spr">…</span>'),0!==t&&e.push('<a href="javascript:;" class="layui-laypage-last" title="尾页" data-page="'+a.pages+'">'+(a.last||a.pages)+"</a>")),e.join("")}(),next:function(){return a.next?'<a href="javascript:;" class="layui-laypage-next'+(a.curr==a.pages?" "+r:"")+'" data-page="'+(a.curr+1)+'">'+a.next+"</a>":""}(),count:'<span class="layui-laypage-count">共 '+a.count+" 条</span>",limit:function(){var e=['<span class="layui-laypage-limits"><select lay-ignore>'];return layui.each(a.limits,function(t,n){e.push('<option value="'+n+'"'+(n===a.limit?"selected":"")+">"+n+" 条/页</option>")}),e.join("")+"</select></span>"}(),refresh:['<a href="javascript:;" data-page="'+a.curr+'" class="layui-laypage-refresh">','<i class="layui-icon layui-icon-refresh"></i>',"</a>"].join(""),skip:function(){return['<span class="layui-laypage-skip">到第','<input type="text" min="1" value="'+a.curr+'" class="layui-input">','页<button type="button" class="layui-laypage-btn">确定</button>',"</span>"].join("")}()};return['<div class="layui-box layui-laypage layui-laypage-'+(a.theme?/^#/.test(a.theme)?"molv":a.theme:"default")+'" id="layui-laypage-'+a.index+'">',function(){var e=[];return layui.each(a.layout,function(a,t){i[t]&&e.push(i[t])}),e.join("")}(),"</div>"].join("")},u.prototype.jump=function(e,a){if(e){var t=this,i=t.config,r=e.children,u=e[n]("button")[0],l=e[n]("input")[0],p=e[n]("select")[0],c=function(){var e=0|l.value.replace(/\s|\D/g,"");e&&(i.curr=e,t.render())};if(a)return c();for(var o=0,y=r.length;o<y;o++)"a"===r[o].nodeName.toLowerCase()&&s.on(r[o],"click",function(){var e=0|this.getAttribute("data-page");e<1||e>i.pages||(i.curr=e,t.render())});p&&s.on(p,"change",function(){var e=this.value;i.curr*e>i.count&&(i.curr=Math.ceil(i.count/e)),i.limit=e,t.render()}),u&&s.on(u,"click",function(){c()})}},u.prototype.skip=function(e){if(e){var a=this,t=e[n]("input")[0];t&&s.on(t,"keyup",function(t){var n=this.value,i=t.keyCode;/^(37|38|39|40)$/.test(i)||(/\D/.test(n)&&(this.value=n.replace(/\D/,"")),13===i&&a.jump(e,!0))})}},u.prototype.render=function(e){var n=this,i=n.config,r=n.type(),u=n.view();2===r?i.elem&&(i.elem.innerHTML=u):3===r?i.elem.html(u):a[t](i.elem)&&(a[t](i.elem).innerHTML=u),i.jump&&i.jump(i,e);var s=a[t]("layui-laypage-"+i.index);n.jump(s),i.hash&&!e&&(location.hash="!"+i.hash+"="+i.curr),n.skip(s)};var s={render:function(e){var a=new u(e);return a.index},index:layui.laypage?layui.laypage.index+1e4:0,on:function(e,a,t){return e.attachEvent?e.attachEvent("on"+a,function(a){a.target=a.srcElement,t.call(e,a)}):e.addEventListener(a,t,!1),this}};e(i,s)});!function(){"use strict";var e=window.layui&&layui.define,t={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,n=t.length-1,a=n;a>0;a--)if("interactive"===t[a].readyState){e=t[a].src;break}return e||t[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),getStyle:function(e,t){var n=e.currentStyle?e.currentStyle:window.getComputedStyle(e,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](t)},link:function(e,a,i){if(n.path){var r=document.getElementsByTagName("head")[0],o=document.createElement("link");"string"==typeof a&&(i=a);var s=(i||e).replace(/\.|\//g,""),l="layuicss-"+s,d=0;o.rel="stylesheet",o.href=n.path+e,o.id=l,document.getElementById(l)||r.appendChild(o),"function"==typeof a&&!function c(){return++d>80?window.console&&console.error("laydate.css: Invalid"):void(1989===parseInt(t.getStyle(document.getElementById(l),"width"))?a():setTimeout(c,100))}()}}},n={v:"5.0.9",config:{},index:window.laydate&&window.laydate.v?1e5:0,path:t.getPath,set:function(e){var t=this;return t.config=w.extend({},t.config,e),t},ready:function(a){var i="laydate",r="",o=(e?"modules/laydate/":"theme/")+"default/laydate.css?v="+n.v+r;return e?layui.addcss(o,a,i):t.link(o,a,i),this}},a=function(){var e=this;return{hint:function(t){e.hint.call(e,t)},config:e.config}},i="laydate",r=".layui-laydate",o="layui-this",s="laydate-disabled",l="开始日期超出了结束日期<br>建议重新选择",d=[100,2e5],c="layui-laydate-static",m="layui-laydate-list",u="laydate-selected",h="layui-laydate-hint",y="laydate-day-prev",f="laydate-day-next",p="layui-laydate-footer",g=".laydate-btns-confirm",v="laydate-time-text",D=".laydate-btns-time",T=function(e){var t=this;t.index=++n.index,t.config=w.extend({},t.config,n.config,e),n.ready(function(){t.init()})},w=function(e){return new C(e)},C=function(e){for(var t=0,n="object"==typeof e?[e]:(this.selector=e,document.querySelectorAll(e||null));t<n.length;t++)this.push(n[t])};C.prototype=[],C.prototype.constructor=C,w.extend=function(){var e=1,t=arguments,n=function(e,t){e=e||(t.constructor===Array?[]:{});for(var a in t)e[a]=t[a]&&t[a].constructor===Object?n(e[a],t[a]):t[a];return e};for(t[0]="object"==typeof t[0]?t[0]:{};e<t.length;e++)"object"==typeof t[e]&&n(t[0],t[e]);return t[0]},w.ie=function(){var e=navigator.userAgent.toLowerCase();return!!(window.ActiveXObject||"ActiveXObject"in window)&&((e.match(/msie\s(\d+)/)||[])[1]||"11")}(),w.stope=function(e){e=e||window.event,e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},w.each=function(e,t){var n,a=this;if("function"!=typeof t)return a;if(e=e||[],e.constructor===Object){for(n in e)if(t.call(e[n],n,e[n]))break}else for(n=0;n<e.length&&!t.call(e[n],n,e[n]);n++);return a},w.digit=function(e,t,n){var a="";e=String(e),t=t||2;for(var i=e.length;i<t;i++)a+="0";return e<Math.pow(10,t)?a+(0|e):e},w.elem=function(e,t){var n=document.createElement(e);return w.each(t||{},function(e,t){n.setAttribute(e,t)}),n},C.addStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){new RegExp("\\b"+n+"\\b").test(e)||(e=e+" "+n)}),e.replace(/^\s|\s$/,"")},C.removeStr=function(e,t){return e=e.replace(/\s+/," "),t=t.replace(/\s+/," ").split(" "),w.each(t,function(t,n){var a=new RegExp("\\b"+n+"\\b");a.test(e)&&(e=e.replace(a,""))}),e.replace(/\s+/," ").replace(/^\s|\s$/,"")},C.prototype.find=function(e){var t=this,n=0,a=[],i="object"==typeof e;return this.each(function(r,o){for(var s=i?[e]:o.querySelectorAll(e||null);n<s.length;n++)a.push(s[n]);t.shift()}),i||(t.selector=(t.selector?t.selector+" ":"")+e),w.each(a,function(e,n){t.push(n)}),t},C.prototype.each=function(e){return w.each.call(this,this,e)},C.prototype.addClass=function(e,t){return this.each(function(n,a){a.className=C[t?"removeStr":"addStr"](a.className,e)})},C.prototype.removeClass=function(e){return this.addClass(e,!0)},C.prototype.hasClass=function(e){var t=!1;return this.each(function(n,a){new RegExp("\\b"+e+"\\b").test(a.className)&&(t=!0)}),t},C.prototype.attr=function(e,t){var n=this;return void 0===t?function(){if(n.length>0)return n[0].getAttribute(e)}():n.each(function(n,a){a.setAttribute(e,t)})},C.prototype.removeAttr=function(e){return this.each(function(t,n){n.removeAttribute(e)})},C.prototype.html=function(e){return this.each(function(t,n){n.innerHTML=e})},C.prototype.val=function(e){return this.each(function(t,n){n.value=e})},C.prototype.append=function(e){return this.each(function(t,n){"object"==typeof e?n.appendChild(e):n.innerHTML=n.innerHTML+e})},C.prototype.remove=function(e){return this.each(function(t,n){e?n.removeChild(e):n.parentNode.removeChild(n)})},C.prototype.on=function(e,t){return this.each(function(n,a){a.attachEvent?a.attachEvent("on"+e,function(e){e.target=e.srcElement,t.call(a,e)}):a.addEventListener(e,t,!1)})},C.prototype.off=function(e,t){return this.each(function(n,a){a.detachEvent?a.detachEvent("on"+e,t):a.removeEventListener(e,t,!1)})},T.isLeapYear=function(e){return e%4===0&&e%100!==0||e%400===0},T.prototype.config={type:"date",range:!1,format:"yyyy-MM-dd",value:null,isInitValue:!0,min:"1900-1-1",max:"2099-12-31",trigger:"focus",show:!1,showBottom:!0,btns:["clear","now","confirm"],lang:"cn",theme:"default",position:null,calendar:!1,mark:{},zIndex:null,done:null,change:null},T.prototype.lang=function(){var e=this,t=e.config,n={cn:{weeks:["日","一","二","三","四","五","六"],time:["时","分","秒"],timeTips:"选择时间",startTime:"开始时间",endTime:"结束时间",dateTips:"返回日期",month:["一","二","三","四","五","六","七","八","九","十","十一","十二"],tools:{confirm:"确定",clear:"清空",now:"现在"}},en:{weeks:["Su","Mo","Tu","We","Th","Fr","Sa"],time:["Hours","Minutes","Seconds"],timeTips:"Select Time",startTime:"Start Time",endTime:"End Time",dateTips:"Select Date",month:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],tools:{confirm:"Confirm",clear:"Clear",now:"Now"}}};return n[t.lang]||n.cn},T.prototype.init=function(){var e=this,t=e.config,n="yyyy|y|MM|M|dd|d|HH|H|mm|m|ss|s",a="static"===t.position,i={year:"yyyy",month:"yyyy-MM",date:"yyyy-MM-dd",time:"HH:mm:ss",datetime:"yyyy-MM-dd HH:mm:ss"};t.elem=w(t.elem),t.eventElem=w(t.eventElem),t.elem[0]&&(t.range===!0&&(t.range="-"),t.format===i.date&&(t.format=i[t.type]),e.format=t.format.match(new RegExp(n+"|.","g"))||[],e.EXP_IF="",e.EXP_SPLIT="",w.each(e.format,function(t,a){var i=new RegExp(n).test(a)?"\\d{"+function(){return new RegExp(n).test(e.format[0===t?t+1:t-1]||"")?/^yyyy|y$/.test(a)?4:a.length:/^yyyy$/.test(a)?"1,4":/^y$/.test(a)?"1,308":"1,2"}()+"}":"\\"+a;e.EXP_IF=e.EXP_IF+i,e.EXP_SPLIT=e.EXP_SPLIT+"("+i+")"}),e.EXP_IF=new RegExp("^"+(t.range?e.EXP_IF+"\\s\\"+t.range+"\\s"+e.EXP_IF:e.EXP_IF)+"$"),e.EXP_SPLIT=new RegExp("^"+e.EXP_SPLIT+"$",""),e.isInput(t.elem[0])||"focus"===t.trigger&&(t.trigger="click"),t.elem.attr("lay-key")||(t.elem.attr("lay-key",e.index),t.eventElem.attr("lay-key",e.index)),t.mark=w.extend({},t.calendar&&"cn"===t.lang?{"0-1-1":"元旦","0-2-14":"情人","0-3-8":"妇女","0-3-12":"植树","0-4-1":"愚人","0-5-1":"劳动","0-5-4":"青年","0-6-1":"儿童","0-9-10":"教师","0-9-18":"国耻","0-10-1":"国庆","0-12-25":"圣诞"}:{},t.mark),w.each(["min","max"],function(e,n){var a=[],i=[];if("number"==typeof t[n]){var r=t[n],o=(new Date).getTime(),s=864e5,l=new Date(r?r<s?o+r*s:r:o);a=[l.getFullYear(),l.getMonth()+1,l.getDate()],r<s||(i=[l.getHours(),l.getMinutes(),l.getSeconds()])}else a=(t[n].match(/\d+-\d+-\d+/)||[""])[0].split("-"),i=(t[n].match(/\d+:\d+:\d+/)||[""])[0].split(":");t[n]={year:0|a[0]||(new Date).getFullYear(),month:a[1]?(0|a[1])-1:(new Date).getMonth(),date:0|a[2]||(new Date).getDate(),hours:0|i[0],minutes:0|i[1],seconds:0|i[2]}}),e.elemID="layui-laydate"+t.elem.attr("lay-key"),(t.show||a)&&e.render(),a||e.events(),t.value&&t.isInitValue&&(t.value.constructor===Date?e.setValue(e.parse(0,e.systemDate(t.value))):e.setValue(t.value)))},T.prototype.render=function(){var e=this,t=e.config,n=e.lang(),a="static"===t.position,i=e.elem=w.elem("div",{id:e.elemID,"class":["layui-laydate",t.range?" layui-laydate-range":"",a?" "+c:"",t.theme&&"default"!==t.theme&&!/^#/.test(t.theme)?" laydate-theme-"+t.theme:""].join("")}),r=e.elemMain=[],o=e.elemHeader=[],s=e.elemCont=[],l=e.table=[],d=e.footer=w.elem("div",{"class":p});if(t.zIndex&&(i.style.zIndex=t.zIndex),w.each(new Array(2),function(e){if(!t.range&&e>0)return!0;var a=w.elem("div",{"class":"layui-laydate-header"}),i=[function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-y"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-prev-m"});return e.innerHTML="",e}(),function(){var e=w.elem("div",{"class":"laydate-set-ym"}),t=w.elem("span"),n=w.elem("span");return e.appendChild(t),e.appendChild(n),e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-m"});return e.innerHTML="",e}(),function(){var e=w.elem("i",{"class":"layui-icon laydate-icon laydate-next-y"});return e.innerHTML="",e}()],d=w.elem("div",{"class":"layui-laydate-content"}),c=w.elem("table"),m=w.elem("thead"),u=w.elem("tr");w.each(i,function(e,t){a.appendChild(t)}),m.appendChild(u),w.each(new Array(6),function(e){var t=c.insertRow(0);w.each(new Array(7),function(a){if(0===e){var i=w.elem("th");i.innerHTML=n.weeks[a],u.appendChild(i)}t.insertCell(a)})}),c.insertBefore(m,c.children[0]),d.appendChild(c),r[e]=w.elem("div",{"class":"layui-laydate-main laydate-main-list-"+e}),r[e].appendChild(a),r[e].appendChild(d),o.push(i),s.push(d),l.push(c)}),w(d).html(function(){var e=[],i=[];return"datetime"===t.type&&e.push('<span lay-type="datetime" class="laydate-btns-time">'+n.timeTips+"</span>"),w.each(t.btns,function(e,r){var o=n.tools[r]||"btn";t.range&&"now"===r||(a&&"clear"===r&&(o="cn"===t.lang?"重置":"Reset"),i.push('<span lay-type="'+r+'" class="laydate-btns-'+r+'">'+o+"</span>"))}),e.push('<div class="laydate-footer-btns">'+i.join("")+"</div>"),e.join("")}()),w.each(r,function(e,t){i.appendChild(t)}),t.showBottom&&i.appendChild(d),/^#/.test(t.theme)){var m=w.elem("style"),u=["#{{id}} .layui-laydate-header{background-color:{{theme}};}","#{{id}} .layui-this{background-color:{{theme}} !important;}"].join("").replace(/{{id}}/g,e.elemID).replace(/{{theme}}/g,t.theme);"styleSheet"in m?(m.setAttribute("type","text/css"),m.styleSheet.cssText=u):m.innerHTML=u,w(i).addClass("laydate-theme-molv"),i.appendChild(m)}e.remove(T.thisElemDate),a?t.elem.append(i):(document.body.appendChild(i),e.position()),e.checkDate().calendar(),e.changeEvent(),T.thisElemDate=e.elemID,"function"==typeof t.ready&&t.ready(w.extend({},t.dateTime,{month:t.dateTime.month+1}))},T.prototype.remove=function(e){var t=this,n=(t.config,w("#"+(e||t.elemID)));return n.hasClass(c)||t.checkDate(function(){n.remove()}),t},T.prototype.position=function(){var e=this,t=e.config,n=e.bindElem||t.elem[0],a=n.getBoundingClientRect(),i=e.elem.offsetWidth,r=e.elem.offsetHeight,o=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},s=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},l=5,d=a.left,c=a.bottom;d+i+l>s("width")&&(d=s("width")-i-l),c+r+l>s()&&(c=a.top>r?a.top-r:s()-r,c-=2*l),t.position&&(e.elem.style.position=t.position),e.elem.style.left=d+("fixed"===t.position?0:o(1))+"px",e.elem.style.top=c+("fixed"===t.position?0:o())+"px"},T.prototype.hint=function(e){var t=this,n=(t.config,w.elem("div",{"class":h}));t.elem&&(n.innerHTML=e||"",w(t.elem).find("."+h).remove(),t.elem.appendChild(n),clearTimeout(t.hinTimer),t.hinTimer=setTimeout(function(){w(t.elem).find("."+h).remove()},3e3))},T.prototype.getAsYM=function(e,t,n){return n?t--:t++,t<0&&(t=11,e--),t>11&&(t=0,e++),[e,t]},T.prototype.systemDate=function(e){var t=e||new Date;return{year:t.getFullYear(),month:t.getMonth(),date:t.getDate(),hours:e?e.getHours():0,minutes:e?e.getMinutes():0,seconds:e?e.getSeconds():0}},T.prototype.checkDate=function(e){var t,a,i=this,r=(new Date,i.config),o=r.dateTime=r.dateTime||i.systemDate(),s=i.bindElem||r.elem[0],l=(i.isInput(s)?"val":"html",i.isInput(s)?s.value:"static"===r.position?"":s.innerHTML),c=function(e){e.year>d[1]&&(e.year=d[1],a=!0),e.month>11&&(e.month=11,a=!0),e.hours>23&&(e.hours=0,a=!0),e.minutes>59&&(e.minutes=0,e.hours++,a=!0),e.seconds>59&&(e.seconds=0,e.minutes++,a=!0),t=n.getEndDate(e.month+1,e.year),e.date>t&&(e.date=t,a=!0)},m=function(e,t,n){var o=["startTime","endTime"];t=(t.match(i.EXP_SPLIT)||[]).slice(1),n=n||0,r.range&&(i[o[n]]=i[o[n]]||{}),w.each(i.format,function(s,l){var c=parseFloat(t[s]);t[s].length<l.length&&(a=!0),/yyyy|y/.test(l)?(c<d[0]&&(c=d[0],a=!0),e.year=c):/MM|M/.test(l)?(c<1&&(c=1,a=!0),e.month=c-1):/dd|d/.test(l)?(c<1&&(c=1,a=!0),e.date=c):/HH|H/.test(l)?(c<1&&(c=0,a=!0),e.hours=c,r.range&&(i[o[n]].hours=c)):/mm|m/.test(l)?(c<1&&(c=0,a=!0),e.minutes=c,r.range&&(i[o[n]].minutes=c)):/ss|s/.test(l)&&(c<1&&(c=0,a=!0),e.seconds=c,r.range&&(i[o[n]].seconds=c))}),c(e)};return"limit"===e?(c(o),i):(l=l||r.value,"string"==typeof l&&(l=l.replace(/\s+/g," ").replace(/^\s|\s$/g,"")),i.startState&&!i.endState&&(delete i.startState,i.endState=!0),"string"==typeof l&&l?i.EXP_IF.test(l)?r.range?(l=l.split(" "+r.range+" "),i.startDate=i.startDate||i.systemDate(),i.endDate=i.endDate||i.systemDate(),r.dateTime=w.extend({},i.startDate),w.each([i.startDate,i.endDate],function(e,t){m(t,l[e],e)})):m(o,l):(i.hint("日期格式不合法<br>必须遵循下述格式:<br>"+(r.range?r.format+" "+r.range+" "+r.format:r.format)+"<br>已为你重置"),a=!0):l&&l.constructor===Date?r.dateTime=i.systemDate(l):(r.dateTime=i.systemDate(),delete i.startState,delete i.endState,delete i.startDate,delete i.endDate,delete i.startTime,delete i.endTime),c(o),a&&l&&i.setValue(r.range?i.endDate?i.parse():"":i.parse()),e&&e(),i)},T.prototype.mark=function(e,t){var n,a=this,i=a.config;return w.each(i.mark,function(e,a){var i=e.split("-");i[0]!=t[0]&&0!=i[0]||i[1]!=t[1]&&0!=i[1]||i[2]!=t[2]||(n=a||t[2])}),n&&e.html('<span class="laydate-day-mark">'+n+"</span>"),a},T.prototype.limit=function(e,t,n,a){var i,r=this,o=r.config,l={},d=o[n>41?"endDate":"dateTime"],c=w.extend({},d,t||{});return w.each({now:c,min:o.min,max:o.max},function(e,t){l[e]=r.newDate(w.extend({year:t.year,month:t.month,date:t.date},function(){var e={};return w.each(a,function(n,a){e[a]=t[a]}),e}())).getTime()}),i=l.now<l.min||l.now>l.max,e&&e[i?"addClass":"removeClass"](s),i},T.prototype.calendar=function(e){var t,a,i,r=this,s=r.config,l=e||s.dateTime,c=new Date,m=r.lang(),u="date"!==s.type&&"datetime"!==s.type,h=e?1:0,y=w(r.table[h]).find("td"),f=w(r.elemHeader[h][2]).find("span");if(l.year<d[0]&&(l.year=d[0],r.hint("最低只能支持到公元"+d[0]+"年")),l.year>d[1]&&(l.year=d[1],r.hint("最高只能支持到公元"+d[1]+"年")),r.firstDate||(r.firstDate=w.extend({},l)),c.setFullYear(l.year,l.month,1),t=c.getDay(),a=n.getEndDate(l.month||12,l.year),i=n.getEndDate(l.month+1,l.year),w.each(y,function(e,n){var d=[l.year,l.month],c=0;n=w(n),n.removeAttr("class"),e<t?(c=a-t+e,n.addClass("laydate-day-prev"),d=r.getAsYM(l.year,l.month,"sub")):e>=t&&e<i+t?(c=e-t,s.range||c+1===l.date&&n.addClass(o)):(c=e-i-t,n.addClass("laydate-day-next"),d=r.getAsYM(l.year,l.month)),d[1]++,d[2]=c+1,n.attr("lay-ymd",d.join("-")).html(d[2]),r.mark(n,d).limit(n,{year:d[0],month:d[1]-1,date:d[2]},e)}),w(f[0]).attr("lay-ym",l.year+"-"+(l.month+1)),w(f[1]).attr("lay-ym",l.year+"-"+(l.month+1)),"cn"===s.lang?(w(f[0]).attr("lay-type","year").html(l.year+"年"),w(f[1]).attr("lay-type","month").html(l.month+1+"月")):(w(f[0]).attr("lay-type","month").html(m.month[l.month]),w(f[1]).attr("lay-type","year").html(l.year)),u&&(s.range&&(e?r.endDate=r.endDate||{year:l.year+("year"===s.type?1:0),month:l.month+("month"===s.type?0:-1)}:r.startDate=r.startDate||{year:l.year,month:l.month},e&&(r.listYM=[[r.startDate.year,r.startDate.month+1],[r.endDate.year,r.endDate.month+1]],r.list(s.type,0).list(s.type,1),"time"===s.type?r.setBtnStatus("时间",w.extend({},r.systemDate(),r.startTime),w.extend({},r.systemDate(),r.endTime)):r.setBtnStatus(!0))),s.range||(r.listYM=[[l.year,l.month+1]],r.list(s.type,0))),s.range&&!e){var p=r.getAsYM(l.year,l.month);r.calendar(w.extend({},l,{year:p[0],month:p[1]}))}return s.range||r.limit(w(r.footer).find(g),null,0,["hours","minutes","seconds"]),s.range&&e&&!u&&r.stampRange(),r},T.prototype.list=function(e,t){var n=this,a=n.config,i=a.dateTime,r=n.lang(),l=a.range&&"date"!==a.type&&"datetime"!==a.type,d=w.elem("ul",{"class":m+" "+{year:"laydate-year-list",month:"laydate-month-list",time:"laydate-time-list"}[e]}),c=n.elemHeader[t],u=w(c[2]).find("span"),h=n.elemCont[t||0],y=w(h).find("."+m)[0],f="cn"===a.lang,p=f?"年":"",T=n.listYM[t]||{},C=["hours","minutes","seconds"],x=["startTime","endTime"][t];if(T[0]<1&&(T[0]=1),"year"===e){var M,b=M=T[0]-7;b<1&&(b=M=1),w.each(new Array(15),function(e){var i=w.elem("li",{"lay-ym":M}),r={year:M};M==T[0]&&w(i).addClass(o),i.innerHTML=M+p,d.appendChild(i),M<n.firstDate.year?(r.month=a.min.month,r.date=a.min.date):M>=n.firstDate.year&&(r.month=a.max.month,r.date=a.max.date),n.limit(w(i),r,t),M++}),w(u[f?0:1]).attr("lay-ym",M-8+"-"+T[1]).html(b+p+" - "+(M-1+p))}else if("month"===e)w.each(new Array(12),function(e){var i=w.elem("li",{"lay-ym":e}),s={year:T[0],month:e};e+1==T[1]&&w(i).addClass(o),i.innerHTML=r.month[e]+(f?"月":""),d.appendChild(i),T[0]<n.firstDate.year?s.date=a.min.date:T[0]>=n.firstDate.year&&(s.date=a.max.date),n.limit(w(i),s,t)}),w(u[f?0:1]).attr("lay-ym",T[0]+"-"+T[1]).html(T[0]+p);else if("time"===e){var E=function(){w(d).find("ol").each(function(e,a){w(a).find("li").each(function(a,i){n.limit(w(i),[{hours:a},{hours:n[x].hours,minutes:a},{hours:n[x].hours,minutes:n[x].minutes,seconds:a}][e],t,[["hours"],["hours","minutes"],["hours","minutes","seconds"]][e])})}),a.range||n.limit(w(n.footer).find(g),n[x],0,["hours","minutes","seconds"])};a.range?n[x]||(n[x]={hours:0,minutes:0,seconds:0}):n[x]=i,w.each([24,60,60],function(e,t){var a=w.elem("li"),i=["<p>"+r.time[e]+"</p><ol>"];w.each(new Array(t),function(t){i.push("<li"+(n[x][C[e]]===t?' class="'+o+'"':"")+">"+w.digit(t,2)+"</li>")}),a.innerHTML=i.join("")+"</ol>",d.appendChild(a)}),E()}if(y&&h.removeChild(y),h.appendChild(d),"year"===e||"month"===e)w(n.elemMain[t]).addClass("laydate-ym-show"),w(d).find("li").on("click",function(){var r=0|w(this).attr("lay-ym");if(!w(this).hasClass(s)){if(0===t)i[e]=r,l&&(n.startDate[e]=r),n.limit(w(n.footer).find(g),null,0);else if(l)n.endDate[e]=r;else{var c="year"===e?n.getAsYM(r,T[1]-1,"sub"):n.getAsYM(T[0],r,"sub");w.extend(i,{year:c[0],month:c[1]})}"year"===a.type||"month"===a.type?(w(d).find("."+o).removeClass(o),w(this).addClass(o),"month"===a.type&&"year"===e&&(n.listYM[t][0]=r,l&&(n[["startDate","endDate"][t]].year=r),n.list("month",t))):(n.checkDate("limit").calendar(),n.closeList()),n.setBtnStatus(),a.range||n.done(null,"change"),w(n.footer).find(D).removeClass(s)}});else{var S=w.elem("span",{"class":v}),k=function(){w(d).find("ol").each(function(e){var t=this,a=w(t).find("li");t.scrollTop=30*(n[x][C[e]]-2),t.scrollTop<=0&&a.each(function(e,n){if(!w(this).hasClass(s))return t.scrollTop=30*(e-2),!0})})},H=w(c[2]).find("."+v);k(),S.innerHTML=a.range?[r.startTime,r.endTime][t]:r.timeTips,w(n.elemMain[t]).addClass("laydate-time-show"),H[0]&&H.remove(),c[2].appendChild(S),w(d).find("ol").each(function(e){var t=this;w(t).find("li").on("click",function(){var r=0|this.innerHTML;w(this).hasClass(s)||(a.range?n[x][C[e]]=r:i[C[e]]=r,w(t).find("."+o).removeClass(o),w(this).addClass(o),E(),k(),(n.endDate||"time"===a.type)&&n.done(null,"change"),n.setBtnStatus())})})}return n},T.prototype.listYM=[],T.prototype.closeList=function(){var e=this;e.config;w.each(e.elemCont,function(t,n){w(this).find("."+m).remove(),w(e.elemMain[t]).removeClass("laydate-ym-show laydate-time-show")}),w(e.elem).find("."+v).remove()},T.prototype.setBtnStatus=function(e,t,n){var a,i=this,r=i.config,o=w(i.footer).find(g),d=r.range&&"date"!==r.type&&"time"!==r.type;d&&(t=t||i.startDate,n=n||i.endDate,a=i.newDate(t).getTime()>i.newDate(n).getTime(),i.limit(null,t)||i.limit(null,n)?o.addClass(s):o[a?"addClass":"removeClass"](s),e&&a&&i.hint("string"==typeof e?l.replace(/日期/g,e):l))},T.prototype.parse=function(e,t){var n=this,a=n.config,i=t||(e?w.extend({},n.endDate,n.endTime):a.range?w.extend({},n.startDate,n.startTime):a.dateTime),r=n.format.concat();return w.each(r,function(e,t){/yyyy|y/.test(t)?r[e]=w.digit(i.year,t.length):/MM|M/.test(t)?r[e]=w.digit(i.month+1,t.length):/dd|d/.test(t)?r[e]=w.digit(i.date,t.length):/HH|H/.test(t)?r[e]=w.digit(i.hours,t.length):/mm|m/.test(t)?r[e]=w.digit(i.minutes,t.length):/ss|s/.test(t)&&(r[e]=w.digit(i.seconds,t.length))}),a.range&&!e?r.join("")+" "+a.range+" "+n.parse(1):r.join("")},T.prototype.newDate=function(e){return e=e||{},new Date(e.year||1,e.month||0,e.date||1,e.hours||0,e.minutes||0,e.seconds||0)},T.prototype.setValue=function(e){var t=this,n=t.config,a=t.bindElem||n.elem[0],i=t.isInput(a)?"val":"html";return"static"===n.position||w(a)[i](e||""),this},T.prototype.stampRange=function(){var e,t,n=this,a=n.config,i=w(n.elem).find("td");if(a.range&&!n.endDate&&w(n.footer).find(g).addClass(s),n.endDate)return e=n.newDate({year:n.startDate.year,month:n.startDate.month,date:n.startDate.date}).getTime(),t=n.newDate({year:n.endDate.year,month:n.endDate.month,date:n.endDate.date}).getTime(),e>t?n.hint(l):void w.each(i,function(a,i){var r=w(i).attr("lay-ymd").split("-"),s=n.newDate({year:r[0],month:r[1]-1,date:r[2]}).getTime();w(i).removeClass(u+" "+o),s!==e&&s!==t||w(i).addClass(w(i).hasClass(y)||w(i).hasClass(f)?u:o),s>e&&s<t&&w(i).addClass(u)})},T.prototype.done=function(e,t){var n=this,a=n.config,i=w.extend({},n.startDate?w.extend(n.startDate,n.startTime):a.dateTime),r=w.extend({},w.extend(n.endDate,n.endTime));return w.each([i,r],function(e,t){"month"in t&&w.extend(t,{month:t.month+1})}),e=e||[n.parse(),i,r],"function"==typeof a[t||"done"]&&a[t||"done"].apply(a,e),n},T.prototype.choose=function(e){var t=this,n=t.config,a=n.dateTime,i=w(t.elem).find("td"),r=e.attr("lay-ymd").split("-"),l=function(e){new Date;e&&w.extend(a,r),n.range&&(t.startDate?w.extend(t.startDate,r):t.startDate=w.extend({},r,t.startTime),t.startYMD=r)};if(r={year:0|r[0],month:(0|r[1])-1,date:0|r[2]},!e.hasClass(s))if(n.range){if(w.each(["startTime","endTime"],function(e,n){t[n]=t[n]||{hours:0,minutes:0,seconds:0}}),t.endState)l(),delete t.endState,delete t.endDate,t.startState=!0,i.removeClass(o+" "+u),e.addClass(o);else if(t.startState){if(e.addClass(o),t.endDate?w.extend(t.endDate,r):t.endDate=w.extend({},r,t.endTime),t.newDate(r).getTime()<t.newDate(t.startYMD).getTime()){var d=w.extend({},t.endDate,{hours:t.startDate.hours,minutes:t.startDate.minutes,seconds:t.startDate.seconds});w.extend(t.endDate,t.startDate,{hours:t.endDate.hours,minutes:t.endDate.minutes,seconds:t.endDate.seconds}),t.startDate=d}n.showBottom||t.done(),t.stampRange(),t.endState=!0,t.done(null,"change")}else e.addClass(o),l(),t.startState=!0;w(t.footer).find(g)[t.endDate?"removeClass":"addClass"](s)}else"static"===n.position?(l(!0),t.calendar().done().done(null,"change")):"date"===n.type?(l(!0),t.setValue(t.parse()).remove().done()):"datetime"===n.type&&(l(!0),t.calendar().done(null,"change"))},T.prototype.tool=function(e,t){var n=this,a=n.config,i=a.dateTime,r="static"===a.position,o={datetime:function(){w(e).hasClass(s)||(n.list("time",0),a.range&&n.list("time",1),w(e).attr("lay-type","date").html(n.lang().dateTips))},date:function(){n.closeList(),w(e).attr("lay-type","datetime").html(n.lang().timeTips)},clear:function(){n.setValue("").remove(),r&&(w.extend(i,n.firstDate),n.calendar()),a.range&&(delete n.startState,delete n.endState,delete n.endDate,delete n.startTime,delete n.endTime),n.done(["",{},{}])},now:function(){var e=new Date;w.extend(i,n.systemDate(),{hours:e.getHours(),minutes:e.getMinutes(),seconds:e.getSeconds()}),n.setValue(n.parse()).remove(),r&&n.calendar(),n.done()},confirm:function(){if(a.range){if(!n.endDate)return n.hint("请先选择日期范围");if(w(e).hasClass(s))return n.hint("time"===a.type?l.replace(/日期/g,"时间"):l)}else if(w(e).hasClass(s))return n.hint("不在有效日期或时间范围内");n.done(),n.setValue(n.parse()).remove()}};o[t]&&o[t]()},T.prototype.change=function(e){var t=this,n=t.config,a=n.dateTime,i=n.range&&("year"===n.type||"month"===n.type),r=t.elemCont[e||0],o=t.listYM[e],s=function(s){var l=["startDate","endDate"][e],d=w(r).find(".laydate-year-list")[0],c=w(r).find(".laydate-month-list")[0];return d&&(o[0]=s?o[0]-15:o[0]+15,t.list("year",e)),c&&(s?o[0]--:o[0]++,t.list("month",e)),(d||c)&&(w.extend(a,{year:o[0]}),i&&(t[l].year=o[0]),n.range||t.done(null,"change"),t.setBtnStatus(),n.range||t.limit(w(t.footer).find(g),{year:o[0]})),d||c};return{prevYear:function(){s("sub")||(a.year--,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))},prevMonth:function(){var e=t.getAsYM(a.year,a.month,"sub");w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextMonth:function(){var e=t.getAsYM(a.year,a.month);w.extend(a,{year:e[0],month:e[1]}),t.checkDate("limit").calendar(),n.range||t.done(null,"change")},nextYear:function(){s()||(a.year++,t.checkDate("limit").calendar(),n.range||t.done(null,"change"))}}},T.prototype.changeEvent=function(){var e=this;e.config;w(e.elem).on("click",function(e){w.stope(e)}),w.each(e.elemHeader,function(t,n){w(n[0]).on("click",function(n){e.change(t).prevYear()}),w(n[1]).on("click",function(n){e.change(t).prevMonth()}),w(n[2]).find("span").on("click",function(n){var a=w(this),i=a.attr("lay-ym"),r=a.attr("lay-type");i&&(i=i.split("-"),e.listYM[t]=[0|i[0],0|i[1]],e.list(r,t),w(e.footer).find(D).addClass(s))}),w(n[3]).on("click",function(n){e.change(t).nextMonth()}),w(n[4]).on("click",function(n){e.change(t).nextYear()})}),w.each(e.table,function(t,n){var a=w(n).find("td");a.on("click",function(){e.choose(w(this))})}),w(e.footer).find("span").on("click",function(){var t=w(this).attr("lay-type");e.tool(this,t)})},T.prototype.isInput=function(e){return/input|textarea/.test(e.tagName.toLocaleLowerCase())},T.prototype.events=function(){var e=this,t=e.config,n=function(n,a){n.on(t.trigger,function(){a&&(e.bindElem=this),e.render()})};t.elem[0]&&!t.elem[0].eventHandler&&(n(t.elem,"bind"),n(t.eventElem),w(document).on("click",function(n){n.target!==t.elem[0]&&n.target!==t.eventElem[0]&&n.target!==w(t.closeStop)[0]&&e.remove()}).on("keydown",function(t){13===t.keyCode&&w("#"+e.elemID)[0]&&e.elemID===T.thisElem&&(t.preventDefault(),w(e.footer).find(g)[0].click())}),w(window).on("resize",function(){return!(!e.elem||!w(r)[0])&&void e.position()}),t.elem[0].eventHandler=!0)},n.render=function(e){var t=new T(e);return a.call(t)},n.getEndDate=function(e,t){var n=new Date;return n.setFullYear(t||n.getFullYear(),e||n.getMonth()+1,1),new Date(n.getTime()-864e5).getDate()},window.lay=window.lay||w,e?(n.ready(),layui.define(function(e){n.path=layui.cache.dir,e(i,n)})):"function"==typeof define&&define.amd?define(function(){return n}):function(){n.ready(),window.laydate=n}()}();!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=!!e&&"length"in e&&e.length,n=pe.type(e);return"function"!==n&&!pe.isWindow(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function r(e,t,n){if(pe.isFunction(t))return pe.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return pe.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(Ce.test(t))return pe.filter(t,e,n);t=pe.filter(t,e)}return pe.grep(e,function(e){return pe.inArray(e,t)>-1!==n})}function i(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}function o(e){var t={};return pe.each(e.match(De)||[],function(e,n){t[n]=!0}),t}function a(){re.addEventListener?(re.removeEventListener("DOMContentLoaded",s),e.removeEventListener("load",s)):(re.detachEvent("onreadystatechange",s),e.detachEvent("onload",s))}function s(){(re.addEventListener||"load"===e.event.type||"complete"===re.readyState)&&(a(),pe.ready())}function u(e,t,n){if(void 0===n&&1===e.nodeType){var r="data-"+t.replace(_e,"-$1").toLowerCase();if(n=e.getAttribute(r),"string"==typeof n){try{n="true"===n||"false"!==n&&("null"===n?null:+n+""===n?+n:qe.test(n)?pe.parseJSON(n):n)}catch(i){}pe.data(e,t,n)}else n=void 0}return n}function l(e){var t;for(t in e)if(("data"!==t||!pe.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}function c(e,t,n,r){if(He(e)){var i,o,a=pe.expando,s=e.nodeType,u=s?pe.cache:e,l=s?e[a]:e[a]&&a;if(l&&u[l]&&(r||u[l].data)||void 0!==n||"string"!=typeof t)return l||(l=s?e[a]=ne.pop()||pe.guid++:a),u[l]||(u[l]=s?{}:{toJSON:pe.noop}),"object"!=typeof t&&"function"!=typeof t||(r?u[l]=pe.extend(u[l],t):u[l].data=pe.extend(u[l].data,t)),o=u[l],r||(o.data||(o.data={}),o=o.data),void 0!==n&&(o[pe.camelCase(t)]=n),"string"==typeof t?(i=o[t],null==i&&(i=o[pe.camelCase(t)])):i=o,i}}function f(e,t,n){if(He(e)){var r,i,o=e.nodeType,a=o?pe.cache:e,s=o?e[pe.expando]:pe.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){pe.isArray(t)?t=t.concat(pe.map(t,pe.camelCase)):t in r?t=[t]:(t=pe.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;for(;i--;)delete r[t[i]];if(n?!l(r):!pe.isEmptyObject(r))return}(n||(delete a[s].data,l(a[s])))&&(o?pe.cleanData([e],!0):fe.deleteExpando||a!=a.window?delete a[s]:a[s]=void 0)}}}function d(e,t,n,r){var i,o=1,a=20,s=r?function(){return r.cur()}:function(){return pe.css(e,t,"")},u=s(),l=n&&n[3]||(pe.cssNumber[t]?"":"px"),c=(pe.cssNumber[t]||"px"!==l&&+u)&&Me.exec(pe.css(e,t));if(c&&c[3]!==l){l=l||c[3],n=n||[],c=+u||1;do o=o||".5",c/=o,pe.style(e,t,c+l);while(o!==(o=s()/u)&&1!==o&&--a)}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}function p(e){var t=ze.split("|"),n=e.createDocumentFragment();if(n.createElement)for(;t.length;)n.createElement(t.pop());return n}function h(e,t){var n,r,i=0,o="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):void 0;if(!o)for(o=[],n=e.childNodes||e;null!=(r=n[i]);i++)!t||pe.nodeName(r,t)?o.push(r):pe.merge(o,h(r,t));return void 0===t||t&&pe.nodeName(e,t)?pe.merge([e],o):o}function g(e,t){for(var n,r=0;null!=(n=e[r]);r++)pe._data(n,"globalEval",!t||pe._data(t[r],"globalEval"))}function m(e){Be.test(e.type)&&(e.defaultChecked=e.checked)}function y(e,t,n,r,i){for(var o,a,s,u,l,c,f,d=e.length,y=p(t),v=[],x=0;x<d;x++)if(a=e[x],a||0===a)if("object"===pe.type(a))pe.merge(v,a.nodeType?[a]:a);else if(Ue.test(a)){for(u=u||y.appendChild(t.createElement("div")),l=(We.exec(a)||["",""])[1].toLowerCase(),f=Xe[l]||Xe._default,u.innerHTML=f[1]+pe.htmlPrefilter(a)+f[2],o=f[0];o--;)u=u.lastChild;if(!fe.leadingWhitespace&&$e.test(a)&&v.push(t.createTextNode($e.exec(a)[0])),!fe.tbody)for(a="table"!==l||Ve.test(a)?"<table>"!==f[1]||Ve.test(a)?0:u:u.firstChild,o=a&&a.childNodes.length;o--;)pe.nodeName(c=a.childNodes[o],"tbody")&&!c.childNodes.length&&a.removeChild(c);for(pe.merge(v,u.childNodes),u.textContent="";u.firstChild;)u.removeChild(u.firstChild);u=y.lastChild}else v.push(t.createTextNode(a));for(u&&y.removeChild(u),fe.appendChecked||pe.grep(h(v,"input"),m),x=0;a=v[x++];)if(r&&pe.inArray(a,r)>-1)i&&i.push(a);else if(s=pe.contains(a.ownerDocument,a),u=h(y.appendChild(a),"script"),s&&g(u),n)for(o=0;a=u[o++];)Ie.test(a.type||"")&&n.push(a);return u=null,y}function v(){return!0}function x(){return!1}function b(){try{return re.activeElement}catch(e){}}function w(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)w(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),i===!1)i=x;else if(!i)return e;return 1===o&&(a=i,i=function(e){return pe().off(e),a.apply(this,arguments)},i.guid=a.guid||(a.guid=pe.guid++)),e.each(function(){pe.event.add(this,t,i,r,n)})}function T(e,t){return pe.nodeName(e,"table")&&pe.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function C(e){return e.type=(null!==pe.find.attr(e,"type"))+"/"+e.type,e}function E(e){var t=it.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function N(e,t){if(1===t.nodeType&&pe.hasData(e)){var n,r,i,o=pe._data(e),a=pe._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;r<i;r++)pe.event.add(t,n,s[n][r])}a.data&&(a.data=pe.extend({},a.data))}}function k(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!fe.noCloneEvent&&t[pe.expando]){i=pe._data(t);for(r in i.events)pe.removeEvent(t,r,i.handle);t.removeAttribute(pe.expando)}"script"===n&&t.text!==e.text?(C(t).text=e.text,E(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),fe.html5Clone&&e.innerHTML&&!pe.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Be.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}}function S(e,t,n,r){t=oe.apply([],t);var i,o,a,s,u,l,c=0,f=e.length,d=f-1,p=t[0],g=pe.isFunction(p);if(g||f>1&&"string"==typeof p&&!fe.checkClone&&rt.test(p))return e.each(function(i){var o=e.eq(i);g&&(t[0]=p.call(this,i,o.html())),S(o,t,n,r)});if(f&&(l=y(t,e[0].ownerDocument,!1,e,r),i=l.firstChild,1===l.childNodes.length&&(l=i),i||r)){for(s=pe.map(h(l,"script"),C),a=s.length;c<f;c++)o=l,c!==d&&(o=pe.clone(o,!0,!0),a&&pe.merge(s,h(o,"script"))),n.call(e[c],o,c);if(a)for(u=s[s.length-1].ownerDocument,pe.map(s,E),c=0;c<a;c++)o=s[c],Ie.test(o.type||"")&&!pe._data(o,"globalEval")&&pe.contains(u,o)&&(o.src?pe._evalUrl&&pe._evalUrl(o.src):pe.globalEval((o.text||o.textContent||o.innerHTML||"").replace(ot,"")));l=i=null}return e}function A(e,t,n){for(var r,i=t?pe.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||pe.cleanData(h(r)),r.parentNode&&(n&&pe.contains(r.ownerDocument,r)&&g(h(r,"script")),r.parentNode.removeChild(r));return e}function D(e,t){var n=pe(t.createElement(e)).appendTo(t.body),r=pe.css(n[0],"display");return n.detach(),r}function j(e){var t=re,n=lt[e];return n||(n=D(e,t),"none"!==n&&n||(ut=(ut||pe("<iframe frameborder='0' width='0' height='0'/>")).appendTo(t.documentElement),t=(ut[0].contentWindow||ut[0].contentDocument).document,t.write(),t.close(),n=D(e,t),ut.detach()),lt[e]=n),n}function L(e,t){return{get:function(){return e()?void delete this.get:(this.get=t).apply(this,arguments)}}}function H(e){if(e in Et)return e;for(var t=e.charAt(0).toUpperCase()+e.slice(1),n=Ct.length;n--;)if(e=Ct[n]+t,e in Et)return e}function q(e,t){for(var n,r,i,o=[],a=0,s=e.length;a<s;a++)r=e[a],r.style&&(o[a]=pe._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&Re(r)&&(o[a]=pe._data(r,"olddisplay",j(r.nodeName)))):(i=Re(r),(n&&"none"!==n||!i)&&pe._data(r,"olddisplay",i?n:pe.css(r,"display"))));for(a=0;a<s;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}function _(e,t,n){var r=bt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function F(e,t,n,r,i){for(var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;o<4;o+=2)"margin"===n&&(a+=pe.css(e,n+Oe[o],!0,i)),r?("content"===n&&(a-=pe.css(e,"padding"+Oe[o],!0,i)),"margin"!==n&&(a-=pe.css(e,"border"+Oe[o]+"Width",!0,i))):(a+=pe.css(e,"padding"+Oe[o],!0,i),"padding"!==n&&(a+=pe.css(e,"border"+Oe[o]+"Width",!0,i)));return a}function M(t,n,r){var i=!0,o="width"===n?t.offsetWidth:t.offsetHeight,a=ht(t),s=fe.boxSizing&&"border-box"===pe.css(t,"boxSizing",!1,a);if(re.msFullscreenElement&&e.top!==e&&t.getClientRects().length&&(o=Math.round(100*t.getBoundingClientRect()[n])),o<=0||null==o){if(o=gt(t,n,a),(o<0||null==o)&&(o=t.style[n]),ft.test(o))return o;i=s&&(fe.boxSizingReliable()||o===t.style[n]),o=parseFloat(o)||0}return o+F(t,n,r||(s?"border":"content"),i,a)+"px"}function O(e,t,n,r,i){return new O.prototype.init(e,t,n,r,i)}function R(){return e.setTimeout(function(){Nt=void 0}),Nt=pe.now()}function P(e,t){var n,r={height:e},i=0;for(t=t?1:0;i<4;i+=2-t)n=Oe[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function B(e,t,n){for(var r,i=($.tweeners[t]||[]).concat($.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function W(e,t,n){var r,i,o,a,s,u,l,c,f=this,d={},p=e.style,h=e.nodeType&&Re(e),g=pe._data(e,"fxshow");n.queue||(s=pe._queueHooks(e,"fx"),null==s.unqueued&&(s.unqueued=0,u=s.empty.fire,s.empty.fire=function(){s.unqueued||u()}),s.unqueued++,f.always(function(){f.always(function(){s.unqueued--,pe.queue(e,"fx").length||s.empty.fire()})})),1===e.nodeType&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],l=pe.css(e,"display"),c="none"===l?pe._data(e,"olddisplay")||j(e.nodeName):l,"inline"===c&&"none"===pe.css(e,"float")&&(fe.inlineBlockNeedsLayout&&"inline"!==j(e.nodeName)?p.zoom=1:p.display="inline-block")),n.overflow&&(p.overflow="hidden",fe.shrinkWrapBlocks()||f.always(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t)if(i=t[r],St.exec(i)){if(delete t[r],o=o||"toggle"===i,i===(h?"hide":"show")){if("show"!==i||!g||void 0===g[r])continue;h=!0}d[r]=g&&g[r]||pe.style(e,r)}else l=void 0;if(pe.isEmptyObject(d))"inline"===("none"===l?j(e.nodeName):l)&&(p.display=l);else{g?"hidden"in g&&(h=g.hidden):g=pe._data(e,"fxshow",{}),o&&(g.hidden=!h),h?pe(e).show():f.done(function(){pe(e).hide()}),f.done(function(){var t;pe._removeData(e,"fxshow");for(t in d)pe.style(e,t,d[t])});for(r in d)a=B(h?g[r]:0,r,f),r in g||(g[r]=a.start,h&&(a.end=a.start,a.start="width"===r||"height"===r?1:0))}}function I(e,t){var n,r,i,o,a;for(n in e)if(r=pe.camelCase(n),i=t[r],o=e[n],pe.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),a=pe.cssHooks[r],a&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function $(e,t,n){var r,i,o=0,a=$.prefilters.length,s=pe.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=Nt||R(),n=Math.max(0,l.startTime+l.duration-t),r=n/l.duration||0,o=1-r,a=0,u=l.tweens.length;a<u;a++)l.tweens[a].run(o);return s.notifyWith(e,[l,o,n]),o<1&&u?n:(s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:pe.extend({},t),opts:pe.extend(!0,{specialEasing:{},easing:pe.easing._default},n),originalProperties:t,originalOptions:n,startTime:Nt||R(),duration:n.duration,tweens:[],createTween:function(t,n){var r=pe.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(I(c,l.opts.specialEasing);o<a;o++)if(r=$.prefilters[o].call(l,e,c,l.opts))return pe.isFunction(r.stop)&&(pe._queueHooks(l.elem,l.opts.queue).stop=pe.proxy(r.stop,r)),r;return pe.map(c,B,l),pe.isFunction(l.opts.start)&&l.opts.start.call(e,l),pe.fx.timer(pe.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always)}function z(e){return pe.attr(e,"class")||""}function X(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(De)||[];if(pe.isFunction(n))for(;r=o[i++];)"+"===r.charAt(0)?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function U(e,t,n,r){function i(s){var u;return o[s]=!0,pe.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||a||o[l]?a?!(u=l):void 0:(t.dataTypes.unshift(l),i(l),!1)}),u}var o={},a=e===Qt;return i(t.dataTypes[0])||!o["*"]&&i("*")}function V(e,t){var n,r,i=pe.ajaxSettings.flatOptions||{};for(r in t)void 0!==t[r]&&((i[r]?e:n||(n={}))[r]=t[r]);return n&&pe.extend(!0,e,n),e}function Y(e,t,n){for(var r,i,o,a,s=e.contents,u=e.dataTypes;"*"===u[0];)u.shift(),void 0===i&&(i=e.mimeType||t.getResponseHeader("Content-Type"));if(i)for(a in s)if(s[a]&&s[a].test(i)){u.unshift(a);break}if(u[0]in n)o=u[0];else{for(a in n){if(!u[0]||e.converters[a+" "+u[0]]){o=a;break}r||(r=a)}o=o||r}if(o)return o!==u[0]&&u.unshift(o),n[o]}function J(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];for(o=c.shift();o;)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(a=l[u+" "+o]||l["* "+o],!a)for(i in l)if(s=i.split(" "),s[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){a===!0?a=l[i]:l[i]!==!0&&(o=s[0],c.unshift(s[1]));break}if(a!==!0)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(f){return{state:"parsererror",error:a?f:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}function G(e){return e.style&&e.style.display||pe.css(e,"display")}function K(e){for(;e&&1===e.nodeType;){if("none"===G(e)||"hidden"===e.type)return!0;e=e.parentNode}return!1}function Q(e,t,n,r){var i;if(pe.isArray(t))pe.each(t,function(t,i){n||rn.test(e)?r(e,i):Q(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==pe.type(t))r(e,t);else for(i in t)Q(e+"["+i+"]",t[i],n,r)}function Z(){try{return new e.XMLHttpRequest}catch(t){}}function ee(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function te(e){return pe.isWindow(e)?e:9===e.nodeType&&(e.defaultView||e.parentWindow)}var ne=[],re=e.document,ie=ne.slice,oe=ne.concat,ae=ne.push,se=ne.indexOf,ue={},le=ue.toString,ce=ue.hasOwnProperty,fe={},de="1.12.3",pe=function(e,t){return new pe.fn.init(e,t)},he=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,ge=/^-ms-/,me=/-([\da-z])/gi,ye=function(e,t){return t.toUpperCase()};pe.fn=pe.prototype={jquery:de,constructor:pe,selector:"",length:0,toArray:function(){return ie.call(this)},get:function(e){return null!=e?e<0?this[e+this.length]:this[e]:ie.call(this)},pushStack:function(e){var t=pe.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e){return pe.each(this,e)},map:function(e){return this.pushStack(pe.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(ie.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:ae,sort:ne.sort,splice:ne.splice},pe.extend=pe.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||pe.isFunction(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(i=arguments[s]))for(r in i)e=a[r],n=i[r],a!==n&&(l&&n&&(pe.isPlainObject(n)||(t=pe.isArray(n)))?(t?(t=!1,o=e&&pe.isArray(e)?e:[]):o=e&&pe.isPlainObject(e)?e:{},a[r]=pe.extend(l,o,n)):void 0!==n&&(a[r]=n));return a},pe.extend({expando:"jQuery"+(de+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isFunction:function(e){return"function"===pe.type(e)},isArray:Array.isArray||function(e){return"array"===pe.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){var t=e&&e.toString();return!pe.isArray(e)&&t-parseFloat(t)+1>=0},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},isPlainObject:function(e){var t;if(!e||"object"!==pe.type(e)||e.nodeType||pe.isWindow(e))return!1;try{if(e.constructor&&!ce.call(e,"constructor")&&!ce.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}if(!fe.ownFirst)for(t in e)return ce.call(e,t);for(t in e);return void 0===t||ce.call(e,t)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?ue[le.call(e)]||"object":typeof e},globalEval:function(t){t&&pe.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(ge,"ms-").replace(me,ye)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t){var r,i=0;if(n(e))for(r=e.length;i<r&&t.call(e[i],i,e[i])!==!1;i++);else for(i in e)if(t.call(e[i],i,e[i])===!1)break;return e},trim:function(e){return null==e?"":(e+"").replace(he,"")},makeArray:function(e,t){var r=t||[];return null!=e&&(n(Object(e))?pe.merge(r,"string"==typeof e?[e]:e):ae.call(r,e)),r},inArray:function(e,t,n){var r;if(t){if(se)return se.call(t,e,n);for(r=t.length,n=n?n<0?Math.max(0,r+n):n:0;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;)e[i++]=t[r++];if(n!==n)for(;void 0!==t[r];)e[i++]=t[r++];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)r=!t(e[o],o),r!==s&&i.push(e[o]);return i},map:function(e,t,r){var i,o,a=0,s=[];if(n(e))for(i=e.length;a<i;a++)o=t(e[a],a,r),null!=o&&s.push(o);else for(a in e)o=t(e[a],a,r),null!=o&&s.push(o);return oe.apply([],s)},guid:1,proxy:function(e,t){var n,r,i;if("string"==typeof t&&(i=e[t],t=e,e=i),pe.isFunction(e))return n=ie.call(arguments,2),r=function(){return e.apply(t||this,n.concat(ie.call(arguments)))},r.guid=e.guid=e.guid||pe.guid++,r},now:function(){return+new Date},support:fe}),"function"==typeof Symbol&&(pe.fn[Symbol.iterator]=ne[Symbol.iterator]),pe.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){ue["[object "+t+"]"]=t.toLowerCase()});var ve=function(e){function t(e,t,n,r){var i,o,a,s,u,l,f,p,h=t&&t.ownerDocument,g=t?t.nodeType:9;if(n=n||[],"string"!=typeof e||!e||1!==g&&9!==g&&11!==g)return n;if(!r&&((t?t.ownerDocument||t:B)!==H&&L(t),t=t||H,_)){if(11!==g&&(l=ye.exec(e)))if(i=l[1]){if(9===g){if(!(a=t.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(h&&(a=h.getElementById(i))&&R(t,a)&&a.id===i)return n.push(a),n}else{if(l[2])return Q.apply(n,t.getElementsByTagName(e)),n;if((i=l[3])&&w.getElementsByClassName&&t.getElementsByClassName)return Q.apply(n,t.getElementsByClassName(i)),n}if(w.qsa&&!X[e+" "]&&(!F||!F.test(e))){if(1!==g)h=t,p=e;else if("object"!==t.nodeName.toLowerCase()){for((s=t.getAttribute("id"))?s=s.replace(xe,"\\$&"):t.setAttribute("id",s=P),f=N(e),o=f.length,u=de.test(s)?"#"+s:"[id='"+s+"']";o--;)f[o]=u+" "+d(f[o]);p=f.join(","),h=ve.test(e)&&c(t.parentNode)||t}if(p)try{return Q.apply(n,h.querySelectorAll(p)),n}catch(m){}finally{s===P&&t.removeAttribute("id")}}}return S(e.replace(se,"$1"),t,n,r)}function n(){function e(n,r){return t.push(n+" ")>T.cacheLength&&delete e[t.shift()],e[n+" "]=r}var t=[];return e}function r(e){return e[P]=!0,e}function i(e){var t=H.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function o(e,t){for(var n=e.split("|"),r=n.length;r--;)T.attrHandle[n[r]]=t}function a(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||V)-(~e.sourceIndex||V);if(r)return r;if(n)for(;n=n.nextSibling;)if(n===t)return-1;return e?1:-1}function s(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function u(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function l(e){return r(function(t){return t=+t,r(function(n,r){for(var i,o=e([],n.length,t),a=o.length;a--;)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function c(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}function f(){}function d(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function p(e,t,n){var r=t.dir,i=n&&"parentNode"===r,o=I++;return t.first?function(t,n,o){for(;t=t[r];)if(1===t.nodeType||i)return e(t,n,o)}:function(t,n,a){var s,u,l,c=[W,o];if(a){for(;t=t[r];)if((1===t.nodeType||i)&&e(t,n,a))return!0}else for(;t=t[r];)if(1===t.nodeType||i){if(l=t[P]||(t[P]={}),u=l[t.uniqueID]||(l[t.uniqueID]={}),(s=u[r])&&s[0]===W&&s[1]===o)return c[2]=s[2];if(u[r]=c,c[2]=e(t,n,a))return!0}}}function h(e){return e.length>1?function(t,n,r){for(var i=e.length;i--;)if(!e[i](t,n,r))return!1;return!0}:e[0]}function g(e,n,r){for(var i=0,o=n.length;i<o;i++)t(e,n[i],r);return r}function m(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function y(e,t,n,i,o,a){return i&&!i[P]&&(i=y(i)),o&&!o[P]&&(o=y(o,a)),r(function(r,a,s,u){var l,c,f,d=[],p=[],h=a.length,y=r||g(t||"*",s.nodeType?[s]:s,[]),v=!e||!r&&t?y:m(y,d,e,s,u),x=n?o||(r?e:h||i)?[]:a:v;if(n&&n(v,x,s,u),i)for(l=m(x,p),i(l,[],s,u),c=l.length;c--;)(f=l[c])&&(x[p[c]]=!(v[p[c]]=f));if(r){if(o||e){if(o){for(l=[],c=x.length;c--;)(f=x[c])&&l.push(v[c]=f);o(null,x=[],l,u)}for(c=x.length;c--;)(f=x[c])&&(l=o?ee(r,f):d[c])>-1&&(r[l]=!(a[l]=f))}}else x=m(x===a?x.splice(h,x.length):x),o?o(null,a,x,u):Q.apply(a,x)})}function v(e){for(var t,n,r,i=e.length,o=T.relative[e[0].type],a=o||T.relative[" "],s=o?1:0,u=p(function(e){return e===t},a,!0),l=p(function(e){return ee(t,e)>-1},a,!0),c=[function(e,n,r){var i=!o&&(r||n!==A)||((t=n).nodeType?u(e,n,r):l(e,n,r));return t=null,i}];s<i;s++)if(n=T.relative[e[s].type])c=[p(h(c),n)];else{if(n=T.filter[e[s].type].apply(null,e[s].matches),n[P]){for(r=++s;r<i&&!T.relative[e[r].type];r++);return y(s>1&&h(c),s>1&&d(e.slice(0,s-1).concat({value:" "===e[s-2].type?"*":""})).replace(se,"$1"),n,s<r&&v(e.slice(s,r)),r<i&&v(e=e.slice(r)),r<i&&d(e))}c.push(n)}return h(c)}function x(e,n){var i=n.length>0,o=e.length>0,a=function(r,a,s,u,l){var c,f,d,p=0,h="0",g=r&&[],y=[],v=A,x=r||o&&T.find.TAG("*",l),b=W+=null==v?1:Math.random()||.1,w=x.length;for(l&&(A=a===H||a||l);h!==w&&null!=(c=x[h]);h++){if(o&&c){for(f=0,a||c.ownerDocument===H||(L(c),s=!_);d=e[f++];)if(d(c,a||H,s)){u.push(c);break}l&&(W=b)}i&&((c=!d&&c)&&p--,r&&g.push(c))}if(p+=h,i&&h!==p){for(f=0;d=n[f++];)d(g,y,a,s);if(r){if(p>0)for(;h--;)g[h]||y[h]||(y[h]=G.call(u));y=m(y)}Q.apply(u,y),l&&!r&&y.length>0&&p+n.length>1&&t.uniqueSort(u)}return l&&(W=b,A=v),g};return i?r(a):a}var b,w,T,C,E,N,k,S,A,D,j,L,H,q,_,F,M,O,R,P="sizzle"+1*new Date,B=e.document,W=0,I=0,$=n(),z=n(),X=n(),U=function(e,t){return e===t&&(j=!0),0},V=1<<31,Y={}.hasOwnProperty,J=[],G=J.pop,K=J.push,Q=J.push,Z=J.slice,ee=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},te="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",ne="[\\x20\\t\\r\\n\\f]",re="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",ie="\\["+ne+"*("+re+")(?:"+ne+"*([*^$|!~]?=)"+ne+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+re+"))|)"+ne+"*\\]",oe=":("+re+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+ie+")*)|.*)\\)|)",ae=new RegExp(ne+"+","g"),se=new RegExp("^"+ne+"+|((?:^|[^\\\\])(?:\\\\.)*)"+ne+"+$","g"),ue=new RegExp("^"+ne+"*,"+ne+"*"),le=new RegExp("^"+ne+"*([>+~]|"+ne+")"+ne+"*"),ce=new RegExp("="+ne+"*([^\\]'\"]*?)"+ne+"*\\]","g"),fe=new RegExp(oe),de=new RegExp("^"+re+"$"),pe={ID:new RegExp("^#("+re+")"),CLASS:new RegExp("^\\.("+re+")"),TAG:new RegExp("^("+re+"|[*])"),ATTR:new RegExp("^"+ie),PSEUDO:new RegExp("^"+oe),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+ne+"*(even|odd|(([+-]|)(\\d*)n|)"+ne+"*(?:([+-]|)"+ne+"*(\\d+)|))"+ne+"*\\)|)","i"),bool:new RegExp("^(?:"+te+")$","i"),needsContext:new RegExp("^"+ne+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+ne+"*((?:-\\d)?\\d*)"+ne+"*\\)|)(?=[^-]|$)","i")},he=/^(?:input|select|textarea|button)$/i,ge=/^h\d$/i,me=/^[^{]+\{\s*\[native \w/,ye=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ve=/[+~]/,xe=/'|\\/g,be=new RegExp("\\\\([\\da-f]{1,6}"+ne+"?|("+ne+")|.)","ig"),we=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},Te=function(){L()};try{Q.apply(J=Z.call(B.childNodes),B.childNodes),J[B.childNodes.length].nodeType}catch(Ce){Q={apply:J.length?function(e,t){K.apply(e,Z.call(t))}:function(e,t){for(var n=e.length,r=0;e[n++]=t[r++];);e.length=n-1}}}w=t.support={},E=t.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},L=t.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:B;return r!==H&&9===r.nodeType&&r.documentElement?(H=r,q=H.documentElement,_=!E(H),(n=H.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",Te,!1):n.attachEvent&&n.attachEvent("onunload",Te)),w.attributes=i(function(e){return e.className="i",!e.getAttribute("className")}),w.getElementsByTagName=i(function(e){return e.appendChild(H.createComment("")),!e.getElementsByTagName("*").length}),w.getElementsByClassName=me.test(H.getElementsByClassName),w.getById=i(function(e){return q.appendChild(e).id=P,!H.getElementsByName||!H.getElementsByName(P).length}),w.getById?(T.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&_){var n=t.getElementById(e);return n?[n]:[]}},T.filter.ID=function(e){var t=e.replace(be,we);return function(e){return e.getAttribute("id")===t}}):(delete T.find.ID,T.filter.ID=function(e){var t=e.replace(be,we);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}}),T.find.TAG=w.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):w.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){for(;n=o[i++];)1===n.nodeType&&r.push(n);return r}return o},T.find.CLASS=w.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&_)return t.getElementsByClassName(e)},M=[],F=[],(w.qsa=me.test(H.querySelectorAll))&&(i(function(e){q.appendChild(e).innerHTML="<a id='"+P+"'></a><select id='"+P+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&F.push("[*^$]="+ne+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||F.push("\\["+ne+"*(?:value|"+te+")"),e.querySelectorAll("[id~="+P+"-]").length||F.push("~="),e.querySelectorAll(":checked").length||F.push(":checked"),e.querySelectorAll("a#"+P+"+*").length||F.push(".#.+[+~]")}),i(function(e){var t=H.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&F.push("name"+ne+"*[*^$|!~]?="),e.querySelectorAll(":enabled").length||F.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),F.push(",.*:")})),(w.matchesSelector=me.test(O=q.matches||q.webkitMatchesSelector||q.mozMatchesSelector||q.oMatchesSelector||q.msMatchesSelector))&&i(function(e){w.disconnectedMatch=O.call(e,"div"),O.call(e,"[s!='']:x"),M.push("!=",oe)}),F=F.length&&new RegExp(F.join("|")),M=M.length&&new RegExp(M.join("|")),t=me.test(q.compareDocumentPosition),R=t||me.test(q.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)for(;t=t.parentNode;)if(t===e)return!0;return!1},U=t?function(e,t){if(e===t)return j=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n?n:(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1,1&n||!w.sortDetached&&t.compareDocumentPosition(e)===n?e===H||e.ownerDocument===B&&R(B,e)?-1:t===H||t.ownerDocument===B&&R(B,t)?1:D?ee(D,e)-ee(D,t):0:4&n?-1:1)}:function(e,t){if(e===t)return j=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,s=[e],u=[t];if(!i||!o)return e===H?-1:t===H?1:i?-1:o?1:D?ee(D,e)-ee(D,t):0;if(i===o)return a(e,t);for(n=e;n=n.parentNode;)s.unshift(n);for(n=t;n=n.parentNode;)u.unshift(n);for(;s[r]===u[r];)r++;return r?a(s[r],u[r]):s[r]===B?-1:u[r]===B?1:0},H):H},t.matches=function(e,n){return t(e,null,null,n)},t.matchesSelector=function(e,n){if((e.ownerDocument||e)!==H&&L(e),n=n.replace(ce,"='$1']"),w.matchesSelector&&_&&!X[n+" "]&&(!M||!M.test(n))&&(!F||!F.test(n)))try{var r=O.call(e,n);if(r||w.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(i){}return t(n,H,null,[e]).length>0},t.contains=function(e,t){return(e.ownerDocument||e)!==H&&L(e),R(e,t)},t.attr=function(e,t){(e.ownerDocument||e)!==H&&L(e);var n=T.attrHandle[t.toLowerCase()],r=n&&Y.call(T.attrHandle,t.toLowerCase())?n(e,t,!_):void 0;return void 0!==r?r:w.attributes||!_?e.getAttribute(t):(r=e.getAttributeNode(t))&&r.specified?r.value:null},t.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},t.uniqueSort=function(e){var t,n=[],r=0,i=0;if(j=!w.detectDuplicates,D=!w.sortStable&&e.slice(0),e.sort(U),j){for(;t=e[i++];)t===e[i]&&(r=n.push(i));for(;r--;)e.splice(n[r],1)}return D=null,e},C=t.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=C(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r++];)n+=C(t);return n},T=t.selectors={cacheLength:50,createPseudo:r,match:pe,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(be,we),e[3]=(e[3]||e[4]||e[5]||"").replace(be,we),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||t.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&t.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return pe.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&fe.test(n)&&(t=N(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(be,we).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=$[e+" "];return t||(t=new RegExp("(^|"+ne+")"+e+"("+ne+"|$)"))&&$(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,n,r){return function(i){var o=t.attr(i,e);return null==o?"!="===n:!n||(o+="","="===n?o===r:"!="===n?o!==r:"^="===n?r&&0===o.indexOf(r):"*="===n?r&&o.indexOf(r)>-1:"$="===n?r&&o.slice(-r.length)===r:"~="===n?(" "+o.replace(ae," ")+" ").indexOf(r)>-1:"|="===n&&(o===r||o.slice(0,r.length+1)===r+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,d,p,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!u&&!s,x=!1;if(m){if(o){for(;g;){for(d=t;d=d[g];)if(s?d.nodeName.toLowerCase()===y:1===d.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){for(d=m,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}), +l=c[e]||[],p=l[0]===W&&l[1],x=p&&l[2],d=p&&m.childNodes[p];d=++p&&d&&d[g]||(x=p=0)||h.pop();)if(1===d.nodeType&&++x&&d===t){c[e]=[W,p,x];break}}else if(v&&(d=t,f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),l=c[e]||[],p=l[0]===W&&l[1],x=p),x===!1)for(;(d=++p&&d&&d[g]||(x=p=0)||h.pop())&&((s?d.nodeName.toLowerCase()!==y:1!==d.nodeType)||!++x||(v&&(f=d[P]||(d[P]={}),c=f[d.uniqueID]||(f[d.uniqueID]={}),c[e]=[W,x]),d!==t)););return x-=i,x===r||x%r===0&&x/r>=0}}},PSEUDO:function(e,n){var i,o=T.pseudos[e]||T.setFilters[e.toLowerCase()]||t.error("unsupported pseudo: "+e);return o[P]?o(n):o.length>1?(i=[e,e,"",n],T.setFilters.hasOwnProperty(e.toLowerCase())?r(function(e,t){for(var r,i=o(e,n),a=i.length;a--;)r=ee(e,i[a]),e[r]=!(t[r]=i[a])}):function(e){return o(e,0,i)}):o}},pseudos:{not:r(function(e){var t=[],n=[],i=k(e.replace(se,"$1"));return i[P]?r(function(e,t,n,r){for(var o,a=i(e,null,r,[]),s=e.length;s--;)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,r,o){return t[0]=e,i(t,null,o,n),t[0]=null,!n.pop()}}),has:r(function(e){return function(n){return t(e,n).length>0}}),contains:r(function(e){return e=e.replace(be,we),function(t){return(t.textContent||t.innerText||C(t)).indexOf(e)>-1}}),lang:r(function(e){return de.test(e||"")||t.error("unsupported lang: "+e),e=e.replace(be,we).toLowerCase(),function(t){var n;do if(n=_?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===q},focus:function(e){return e===H.activeElement&&(!H.hasFocus||H.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!T.pseudos.empty(e)},header:function(e){return ge.test(e.nodeName)},input:function(e){return he.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:l(function(){return[0]}),last:l(function(e,t){return[t-1]}),eq:l(function(e,t,n){return[n<0?n+t:n]}),even:l(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:l(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:l(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:l(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},T.pseudos.nth=T.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})T.pseudos[b]=s(b);for(b in{submit:!0,reset:!0})T.pseudos[b]=u(b);return f.prototype=T.filters=T.pseudos,T.setFilters=new f,N=t.tokenize=function(e,n){var r,i,o,a,s,u,l,c=z[e+" "];if(c)return n?0:c.slice(0);for(s=e,u=[],l=T.preFilter;s;){r&&!(i=ue.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),r=!1,(i=le.exec(s))&&(r=i.shift(),o.push({value:r,type:i[0].replace(se," ")}),s=s.slice(r.length));for(a in T.filter)!(i=pe[a].exec(s))||l[a]&&!(i=l[a](i))||(r=i.shift(),o.push({value:r,type:a,matches:i}),s=s.slice(r.length));if(!r)break}return n?s.length:s?t.error(e):z(e,u).slice(0)},k=t.compile=function(e,t){var n,r=[],i=[],o=X[e+" "];if(!o){for(t||(t=N(e)),n=t.length;n--;)o=v(t[n]),o[P]?r.push(o):i.push(o);o=X(e,x(i,r)),o.selector=e}return o},S=t.select=function(e,t,n,r){var i,o,a,s,u,l="function"==typeof e&&e,f=!r&&N(e=l.selector||e);if(n=n||[],1===f.length){if(o=f[0]=f[0].slice(0),o.length>2&&"ID"===(a=o[0]).type&&w.getById&&9===t.nodeType&&_&&T.relative[o[1].type]){if(t=(T.find.ID(a.matches[0].replace(be,we),t)||[])[0],!t)return n;l&&(t=t.parentNode),e=e.slice(o.shift().value.length)}for(i=pe.needsContext.test(e)?0:o.length;i--&&(a=o[i],!T.relative[s=a.type]);)if((u=T.find[s])&&(r=u(a.matches[0].replace(be,we),ve.test(o[0].type)&&c(t.parentNode)||t))){if(o.splice(i,1),e=r.length&&d(o),!e)return Q.apply(n,r),n;break}}return(l||k(e,f))(r,t,!_,n,!t||ve.test(e)&&c(t.parentNode)||t),n},w.sortStable=P.split("").sort(U).join("")===P,w.detectDuplicates=!!j,L(),w.sortDetached=i(function(e){return 1&e.compareDocumentPosition(H.createElement("div"))}),i(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||o("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),w.attributes&&i(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||o("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),i(function(e){return null==e.getAttribute("disabled")})||o(te,function(e,t,n){var r;if(!n)return e[t]===!0?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),t}(e);pe.find=ve,pe.expr=ve.selectors,pe.expr[":"]=pe.expr.pseudos,pe.uniqueSort=pe.unique=ve.uniqueSort,pe.text=ve.getText,pe.isXMLDoc=ve.isXML,pe.contains=ve.contains;var xe=function(e,t,n){for(var r=[],i=void 0!==n;(e=e[t])&&9!==e.nodeType;)if(1===e.nodeType){if(i&&pe(e).is(n))break;r.push(e)}return r},be=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},we=pe.expr.match.needsContext,Te=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,Ce=/^.[^:#\[\.,]*$/;pe.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?pe.find.matchesSelector(r,e)?[r]:[]:pe.find.matches(e,pe.grep(t,function(e){return 1===e.nodeType}))},pe.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(pe(e).filter(function(){for(t=0;t<i;t++)if(pe.contains(r[t],this))return!0}));for(t=0;t<i;t++)pe.find(e,r[t],n);return n=this.pushStack(i>1?pe.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},filter:function(e){return this.pushStack(r(this,e||[],!1))},not:function(e){return this.pushStack(r(this,e||[],!0))},is:function(e){return!!r(this,"string"==typeof e&&we.test(e)?pe(e):e||[],!1).length}});var Ee,Ne=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,ke=pe.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||Ee,"string"==typeof e){if(r="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:Ne.exec(e),!r||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof pe?t[0]:t,pe.merge(this,pe.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:re,!0)),Te.test(r[1])&&pe.isPlainObject(t))for(r in t)pe.isFunction(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}if(i=re.getElementById(r[2]),i&&i.parentNode){if(i.id!==r[2])return Ee.find(e);this.length=1,this[0]=i}return this.context=re,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):pe.isFunction(e)?"undefined"!=typeof n.ready?n.ready(e):e(pe):(void 0!==e.selector&&(this.selector=e.selector,this.context=e.context),pe.makeArray(e,this))};ke.prototype=pe.fn,Ee=pe(re);var Se=/^(?:parents|prev(?:Until|All))/,Ae={children:!0,contents:!0,next:!0,prev:!0};pe.fn.extend({has:function(e){var t,n=pe(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(pe.contains(this,n[t]))return!0})},closest:function(e,t){for(var n,r=0,i=this.length,o=[],a=we.test(e)||"string"!=typeof e?pe(e,t||this.context):0;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&pe.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?pe.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?pe.inArray(this[0],pe(e)):pe.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(pe.uniqueSort(pe.merge(this.get(),pe(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}}),pe.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return xe(e,"parentNode")},parentsUntil:function(e,t,n){return xe(e,"parentNode",n)},next:function(e){return i(e,"nextSibling")},prev:function(e){return i(e,"previousSibling")},nextAll:function(e){return xe(e,"nextSibling")},prevAll:function(e){return xe(e,"previousSibling")},nextUntil:function(e,t,n){return xe(e,"nextSibling",n)},prevUntil:function(e,t,n){return xe(e,"previousSibling",n)},siblings:function(e){return be((e.parentNode||{}).firstChild,e)},children:function(e){return be(e.firstChild)},contents:function(e){return pe.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:pe.merge([],e.childNodes)}},function(e,t){pe.fn[e]=function(n,r){var i=pe.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=pe.filter(r,i)),this.length>1&&(Ae[e]||(i=pe.uniqueSort(i)),Se.test(e)&&(i=i.reverse())),this.pushStack(i)}});var De=/\S+/g;pe.Callbacks=function(e){e="string"==typeof e?o(e):pe.extend({},e);var t,n,r,i,a=[],s=[],u=-1,l=function(){for(i=e.once,r=t=!0;s.length;u=-1)for(n=s.shift();++u<a.length;)a[u].apply(n[0],n[1])===!1&&e.stopOnFalse&&(u=a.length,n=!1);e.memory||(n=!1),t=!1,i&&(a=n?[]:"")},c={add:function(){return a&&(n&&!t&&(u=a.length-1,s.push(n)),function r(t){pe.each(t,function(t,n){pe.isFunction(n)?e.unique&&c.has(n)||a.push(n):n&&n.length&&"string"!==pe.type(n)&&r(n)})}(arguments),n&&!t&&l()),this},remove:function(){return pe.each(arguments,function(e,t){for(var n;(n=pe.inArray(t,a,n))>-1;)a.splice(n,1),n<=u&&u--}),this},has:function(e){return e?pe.inArray(e,a)>-1:a.length>0},empty:function(){return a&&(a=[]),this},disable:function(){return i=s=[],a=n="",this},disabled:function(){return!a},lock:function(){return i=!0,n||c.disable(),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=n||[],n=[e,n.slice?n.slice():n],s.push(n),t||l()),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},pe.extend({Deferred:function(e){var t=[["resolve","done",pe.Callbacks("once memory"),"resolved"],["reject","fail",pe.Callbacks("once memory"),"rejected"],["notify","progress",pe.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return pe.Deferred(function(n){pe.each(t,function(t,o){var a=pe.isFunction(e[t])&&e[t];i[o[1]](function(){var e=a&&a.apply(this,arguments);e&&pe.isFunction(e.promise)?e.promise().progress(n.notify).done(n.resolve).fail(n.reject):n[o[0]+"With"](this===r?n.promise():this,a?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?pe.extend(e,r):r}},i={};return r.pipe=r.then,pe.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t,n,r,i=0,o=ie.call(arguments),a=o.length,s=1!==a||e&&pe.isFunction(e.promise)?a:0,u=1===s?e:pe.Deferred(),l=function(e,n,r){return function(i){n[e]=this,r[e]=arguments.length>1?ie.call(arguments):i,r===t?u.notifyWith(n,r):--s||u.resolveWith(n,r)}};if(a>1)for(t=new Array(a),n=new Array(a),r=new Array(a);i<a;i++)o[i]&&pe.isFunction(o[i].promise)?o[i].promise().progress(l(i,n,t)).done(l(i,r,o)).fail(u.reject):--s;return s||u.resolveWith(r,o),u.promise()}});var je;pe.fn.ready=function(e){return pe.ready.promise().done(e),this},pe.extend({isReady:!1,readyWait:1,holdReady:function(e){e?pe.readyWait++:pe.ready(!0)},ready:function(e){(e===!0?--pe.readyWait:pe.isReady)||(pe.isReady=!0,e!==!0&&--pe.readyWait>0||(je.resolveWith(re,[pe]),pe.fn.triggerHandler&&(pe(re).triggerHandler("ready"),pe(re).off("ready"))))}}),pe.ready.promise=function(t){if(!je)if(je=pe.Deferred(),"complete"===re.readyState||"loading"!==re.readyState&&!re.documentElement.doScroll)e.setTimeout(pe.ready);else if(re.addEventListener)re.addEventListener("DOMContentLoaded",s),e.addEventListener("load",s);else{re.attachEvent("onreadystatechange",s),e.attachEvent("onload",s);var n=!1;try{n=null==e.frameElement&&re.documentElement}catch(r){}n&&n.doScroll&&!function i(){if(!pe.isReady){try{n.doScroll("left")}catch(t){return e.setTimeout(i,50)}a(),pe.ready()}}()}return je.promise(t)},pe.ready.promise();var Le;for(Le in pe(fe))break;fe.ownFirst="0"===Le,fe.inlineBlockNeedsLayout=!1,pe(function(){var e,t,n,r;n=re.getElementsByTagName("body")[0],n&&n.style&&(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",fe.inlineBlockNeedsLayout=e=3===t.offsetWidth,e&&(n.style.zoom=1)),n.removeChild(r))}),function(){var e=re.createElement("div");fe.deleteExpando=!0;try{delete e.test}catch(t){fe.deleteExpando=!1}e=null}();var He=function(e){var t=pe.noData[(e.nodeName+" ").toLowerCase()],n=+e.nodeType||1;return(1===n||9===n)&&(!t||t!==!0&&e.getAttribute("classid")===t)},qe=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,_e=/([A-Z])/g;pe.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?pe.cache[e[pe.expando]]:e[pe.expando],!!e&&!l(e)},data:function(e,t,n){return c(e,t,n)},removeData:function(e,t){return f(e,t)},_data:function(e,t,n){return c(e,t,n,!0)},_removeData:function(e,t){return f(e,t,!0)}}),pe.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=pe.data(o),1===o.nodeType&&!pe._data(o,"parsedAttrs"))){for(n=a.length;n--;)a[n]&&(r=a[n].name,0===r.indexOf("data-")&&(r=pe.camelCase(r.slice(5)),u(o,r,i[r])));pe._data(o,"parsedAttrs",!0)}return i}return"object"==typeof e?this.each(function(){pe.data(this,e)}):arguments.length>1?this.each(function(){pe.data(this,e,t)}):o?u(o,e,pe.data(o,e)):void 0},removeData:function(e){return this.each(function(){pe.removeData(this,e)})}}),pe.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=pe._data(e,t),n&&(!r||pe.isArray(n)?r=pe._data(e,t,pe.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=pe.queue(e,t),r=n.length,i=n.shift(),o=pe._queueHooks(e,t),a=function(){pe.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return pe._data(e,n)||pe._data(e,n,{empty:pe.Callbacks("once memory").add(function(){pe._removeData(e,t+"queue"),pe._removeData(e,n)})})}}),pe.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?pe.queue(this[0],e):void 0===t?this:this.each(function(){var n=pe.queue(this,e,t);pe._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&pe.dequeue(this,e)})},dequeue:function(e){return this.each(function(){pe.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=pe.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};for("string"!=typeof e&&(t=e,e=void 0),e=e||"fx";a--;)n=pe._data(o[a],e+"queueHooks"),n&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}}),function(){var e;fe.shrinkWrapBlocks=function(){if(null!=e)return e;e=!1;var t,n,r;return n=re.getElementsByTagName("body")[0],n&&n.style?(t=re.createElement("div"),r=re.createElement("div"),r.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",n.appendChild(r).appendChild(t),"undefined"!=typeof t.style.zoom&&(t.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",t.appendChild(re.createElement("div")).style.width="5px",e=3!==t.offsetWidth),n.removeChild(r),e):void 0}}();var Fe=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,Me=new RegExp("^(?:([+-])=|)("+Fe+")([a-z%]*)$","i"),Oe=["Top","Right","Bottom","Left"],Re=function(e,t){return e=t||e,"none"===pe.css(e,"display")||!pe.contains(e.ownerDocument,e)},Pe=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===pe.type(n)){i=!0;for(s in n)Pe(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,pe.isFunction(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(pe(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},Be=/^(?:checkbox|radio)$/i,We=/<([\w:-]+)/,Ie=/^$|\/(?:java|ecma)script/i,$e=/^\s+/,ze="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";!function(){var e=re.createElement("div"),t=re.createDocumentFragment(),n=re.createElement("input");e.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",fe.leadingWhitespace=3===e.firstChild.nodeType,fe.tbody=!e.getElementsByTagName("tbody").length,fe.htmlSerialize=!!e.getElementsByTagName("link").length,fe.html5Clone="<:nav></:nav>"!==re.createElement("nav").cloneNode(!0).outerHTML,n.type="checkbox",n.checked=!0,t.appendChild(n),fe.appendChecked=n.checked,e.innerHTML="<textarea>x</textarea>",fe.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue,t.appendChild(e),n=re.createElement("input"),n.setAttribute("type","radio"),n.setAttribute("checked","checked"),n.setAttribute("name","t"),e.appendChild(n),fe.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,fe.noCloneEvent=!!e.addEventListener,e[pe.expando]=1,fe.attributes=!e.getAttribute(pe.expando)}();var Xe={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:fe.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};Xe.optgroup=Xe.option,Xe.tbody=Xe.tfoot=Xe.colgroup=Xe.caption=Xe.thead,Xe.th=Xe.td;var Ue=/<|&#?\w+;/,Ve=/<tbody/i;!function(){var t,n,r=re.createElement("div");for(t in{submit:!0,change:!0,focusin:!0})n="on"+t,(fe[t]=n in e)||(r.setAttribute(n,"t"),fe[t]=r.attributes[n].expando===!1);r=null}();var Ye=/^(?:input|select|textarea)$/i,Je=/^key/,Ge=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ke=/^(?:focusinfocus|focusoutblur)$/,Qe=/^([^.]*)(?:\.(.+)|)/;pe.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe._data(e);if(m){for(n.handler&&(u=n,n=u.handler,i=u.selector),n.guid||(n.guid=pe.guid++),(a=m.events)||(a=m.events={}),(c=m.handle)||(c=m.handle=function(e){return"undefined"==typeof pe||e&&pe.event.triggered===e.type?void 0:pe.event.dispatch.apply(c.elem,arguments)},c.elem=e),t=(t||"").match(De)||[""],s=t.length;s--;)o=Qe.exec(t[s])||[],p=g=o[1],h=(o[2]||"").split(".").sort(),p&&(l=pe.event.special[p]||{},p=(i?l.delegateType:l.bindType)||p,l=pe.event.special[p]||{},f=pe.extend({type:p,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&pe.expr.match.needsContext.test(i),namespace:h.join(".")},u),(d=a[p])||(d=a[p]=[],d.delegateCount=0,l.setup&&l.setup.call(e,r,h,c)!==!1||(e.addEventListener?e.addEventListener(p,c,!1):e.attachEvent&&e.attachEvent("on"+p,c))),l.add&&(l.add.call(e,f),f.handler.guid||(f.handler.guid=n.guid)),i?d.splice(d.delegateCount++,0,f):d.push(f),pe.event.global[p]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,d,p,h,g,m=pe.hasData(e)&&pe._data(e);if(m&&(c=m.events)){for(t=(t||"").match(De)||[""],l=t.length;l--;)if(s=Qe.exec(t[l])||[],p=g=s[1],h=(s[2]||"").split(".").sort(),p){for(f=pe.event.special[p]||{},p=(r?f.delegateType:f.bindType)||p,d=c[p]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),u=o=d.length;o--;)a=d[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(d.splice(o,1),a.selector&&d.delegateCount--,f.remove&&f.remove.call(e,a));u&&!d.length&&(f.teardown&&f.teardown.call(e,h,m.handle)!==!1||pe.removeEvent(e,p,m.handle),delete c[p])}else for(p in c)pe.event.remove(e,p+t[l],n,r,!0);pe.isEmptyObject(c)&&(delete m.handle,pe._removeData(e,"events"))}},trigger:function(t,n,r,i){var o,a,s,u,l,c,f,d=[r||re],p=ce.call(t,"type")?t.type:t,h=ce.call(t,"namespace")?t.namespace.split("."):[];if(s=c=r=r||re,3!==r.nodeType&&8!==r.nodeType&&!Ke.test(p+pe.event.triggered)&&(p.indexOf(".")>-1&&(h=p.split("."),p=h.shift(),h.sort()),a=p.indexOf(":")<0&&"on"+p,t=t[pe.expando]?t:new pe.Event(p,"object"==typeof t&&t),t.isTrigger=i?2:3,t.namespace=h.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=r),n=null==n?[t]:pe.makeArray(n,[t]),l=pe.event.special[p]||{},i||!l.trigger||l.trigger.apply(r,n)!==!1)){if(!i&&!l.noBubble&&!pe.isWindow(r)){for(u=l.delegateType||p,Ke.test(u+p)||(s=s.parentNode);s;s=s.parentNode)d.push(s),c=s;c===(r.ownerDocument||re)&&d.push(c.defaultView||c.parentWindow||e)}for(f=0;(s=d[f++])&&!t.isPropagationStopped();)t.type=f>1?u:l.bindType||p,o=(pe._data(s,"events")||{})[t.type]&&pe._data(s,"handle"),o&&o.apply(s,n),o=a&&s[a],o&&o.apply&&He(s)&&(t.result=o.apply(s,n),t.result===!1&&t.preventDefault());if(t.type=p,!i&&!t.isDefaultPrevented()&&(!l._default||l._default.apply(d.pop(),n)===!1)&&He(r)&&a&&r[p]&&!pe.isWindow(r)){c=r[a],c&&(r[a]=null),pe.event.triggered=p;try{r[p]()}catch(g){}pe.event.triggered=void 0,c&&(r[a]=c)}return t.result}},dispatch:function(e){e=pe.event.fix(e);var t,n,r,i,o,a=[],s=ie.call(arguments),u=(pe._data(this,"events")||{})[e.type]||[],l=pe.event.special[e.type]||{};if(s[0]=e,e.delegateTarget=this,!l.preDispatch||l.preDispatch.call(this,e)!==!1){for(a=pe.event.handlers.call(this,e,u),t=0;(i=a[t++])&&!e.isPropagationStopped();)for(e.currentTarget=i.elem,n=0;(o=i.handlers[n++])&&!e.isImmediatePropagationStopped();)e.rnamespace&&!e.rnamespace.test(o.namespace)||(e.handleObj=o,e.data=o.data,r=((pe.event.special[o.origType]||{}).handle||o.handler).apply(i.elem,s),void 0!==r&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()));return l.postDispatch&&l.postDispatch.call(this,e),e.result}},handlers:function(e,t){var n,r,i,o,a=[],s=t.delegateCount,u=e.target;if(s&&u.nodeType&&("click"!==e.type||isNaN(e.button)||e.button<1))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(r=[],n=0;n<s;n++)o=t[n],i=o.selector+" ",void 0===r[i]&&(r[i]=o.needsContext?pe(i,this).index(u)>-1:pe.find(i,this,null,[u]).length),r[i]&&r.push(o);r.length&&a.push({elem:u,handlers:r})}return s<t.length&&a.push({elem:this,handlers:t.slice(s)}),a},fix:function(e){if(e[pe.expando])return e;var t,n,r,i=e.type,o=e,a=this.fixHooks[i];for(a||(this.fixHooks[i]=a=Ge.test(i)?this.mouseHooks:Je.test(i)?this.keyHooks:{}),r=a.props?this.props.concat(a.props):this.props,e=new pe.Event(o),t=r.length;t--;)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||re),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,a.filter?a.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,t){var n,r,i,o=t.button,a=t.fromElement;return null==e.pageX&&null!=t.clientX&&(r=e.target.ownerDocument||re,i=r.documentElement,n=r.body,e.pageX=t.clientX+(i&&i.scrollLeft||n&&n.scrollLeft||0)-(i&&i.clientLeft||n&&n.clientLeft||0),e.pageY=t.clientY+(i&&i.scrollTop||n&&n.scrollTop||0)-(i&&i.clientTop||n&&n.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?t.toElement:a),e.which||void 0===o||(e.which=1&o?1:2&o?3:4&o?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==b()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){if(this===b()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if(pe.nodeName(this,"input")&&"checkbox"===this.type&&this.click)return this.click(),!1},_default:function(e){return pe.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n){var r=pe.extend(new pe.Event,n,{type:e,isSimulated:!0});pe.event.trigger(r,null,t),r.isDefaultPrevented()&&n.preventDefault()}},pe.removeEvent=re.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)}:function(e,t,n){var r="on"+t;e.detachEvent&&("undefined"==typeof e[r]&&(e[r]=null),e.detachEvent(r,n))},pe.Event=function(e,t){return this instanceof pe.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&e.returnValue===!1?v:x):this.type=e,t&&pe.extend(this,t),this.timeStamp=e&&e.timeStamp||pe.now(),void(this[pe.expando]=!0)):new pe.Event(e,t)},pe.Event.prototype={constructor:pe.Event,isDefaultPrevented:x,isPropagationStopped:x,isImmediatePropagationStopped:x,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=v,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=v,e&&!this.isSimulated&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=v,e&&e.stopImmediatePropagation&&e.stopImmediatePropagation(),this.stopPropagation()}},pe.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){pe.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||pe.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),fe.submit||(pe.event.special.submit={setup:function(){return!pe.nodeName(this,"form")&&void pe.event.add(this,"click._submit keypress._submit",function(e){var t=e.target,n=pe.nodeName(t,"input")||pe.nodeName(t,"button")?pe.prop(t,"form"):void 0;n&&!pe._data(n,"submit")&&(pe.event.add(n,"submit._submit",function(e){e._submitBubble=!0}),pe._data(n,"submit",!0))})},postDispatch:function(e){e._submitBubble&&(delete e._submitBubble,this.parentNode&&!e.isTrigger&&pe.event.simulate("submit",this.parentNode,e))},teardown:function(){return!pe.nodeName(this,"form")&&void pe.event.remove(this,"._submit")}}),fe.change||(pe.event.special.change={setup:function(){return Ye.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(pe.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._justChanged=!0)}),pe.event.add(this,"click._change",function(e){this._justChanged&&!e.isTrigger&&(this._justChanged=!1),pe.event.simulate("change",this,e)})),!1):void pe.event.add(this,"beforeactivate._change",function(e){var t=e.target;Ye.test(t.nodeName)&&!pe._data(t,"change")&&(pe.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||pe.event.simulate("change",this.parentNode,e)}),pe._data(t,"change",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||"radio"!==t.type&&"checkbox"!==t.type)return e.handleObj.handler.apply(this,arguments)},teardown:function(){return pe.event.remove(this,"._change"),!Ye.test(this.nodeName)}}),fe.focusin||pe.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){pe.event.simulate(t,e.target,pe.event.fix(e))};pe.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=pe._data(r,t);i||r.addEventListener(e,n,!0),pe._data(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=pe._data(r,t)-1;i?pe._data(r,t,i):(r.removeEventListener(e,n,!0),pe._removeData(r,t))}}}),pe.fn.extend({on:function(e,t,n,r){return w(this,e,t,n,r)},one:function(e,t,n,r){return w(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,pe(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return t!==!1&&"function"!=typeof t||(n=t,t=void 0),n===!1&&(n=x),this.each(function(){pe.event.remove(this,e,n,t)})},trigger:function(e,t){return this.each(function(){pe.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return pe.event.trigger(e,t,n,!0)}});var Ze=/ jQuery\d+="(?:null|\d+)"/g,et=new RegExp("<(?:"+ze+")[\\s/>]","i"),tt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,nt=/<script|<style|<link/i,rt=/checked\s*(?:[^=]|=\s*.checked.)/i,it=/^true\/(.*)/,ot=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,at=p(re),st=at.appendChild(re.createElement("div"));pe.extend({htmlPrefilter:function(e){return e.replace(tt,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s,u=pe.contains(e.ownerDocument,e);if(fe.html5Clone||pe.isXMLDoc(e)||!et.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(st.innerHTML=e.outerHTML,st.removeChild(o=st.firstChild)),!(fe.noCloneEvent&&fe.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||pe.isXMLDoc(e)))for(r=h(o),s=h(e),a=0;null!=(i=s[a]);++a)r[a]&&k(i,r[a]);if(t)if(n)for(s=s||h(e),r=r||h(o),a=0;null!=(i=s[a]);a++)N(i,r[a]);else N(e,o);return r=h(o,"script"),r.length>0&&g(r,!u&&h(e,"script")),r=s=i=null,o},cleanData:function(e,t){for(var n,r,i,o,a=0,s=pe.expando,u=pe.cache,l=fe.attributes,c=pe.event.special;null!=(n=e[a]);a++)if((t||He(n))&&(i=n[s],o=i&&u[i])){if(o.events)for(r in o.events)c[r]?pe.event.remove(n,r):pe.removeEvent(n,r,o.handle);u[i]&&(delete u[i],l||"undefined"==typeof n.removeAttribute?n[s]=void 0:n.removeAttribute(s),ne.push(i))}}}),pe.fn.extend({domManip:S,detach:function(e){return A(this,e,!0)},remove:function(e){return A(this,e)},text:function(e){return Pe(this,function(e){return void 0===e?pe.text(this):this.empty().append((this[0]&&this[0].ownerDocument||re).createTextNode(e))},null,e,arguments.length)},append:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.appendChild(e)}})},prepend:function(){return S(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=T(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return S(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++){for(1===e.nodeType&&pe.cleanData(h(e,!1));e.firstChild;)e.removeChild(e.firstChild);e.options&&pe.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return pe.clone(this,e,t)})},html:function(e){return Pe(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e)return 1===t.nodeType?t.innerHTML.replace(Ze,""):void 0;if("string"==typeof e&&!nt.test(e)&&(fe.htmlSerialize||!et.test(e))&&(fe.leadingWhitespace||!$e.test(e))&&!Xe[(We.exec(e)||["",""])[1].toLowerCase()]){e=pe.htmlPrefilter(e);try{for(;n<r;n++)t=this[n]||{},1===t.nodeType&&(pe.cleanData(h(t,!1)),t.innerHTML=e);t=0}catch(i){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return S(this,arguments,function(t){var n=this.parentNode;pe.inArray(this,e)<0&&(pe.cleanData(h(this)), +n&&n.replaceChild(t,this))},e)}}),pe.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){pe.fn[e]=function(e){for(var n,r=0,i=[],o=pe(e),a=o.length-1;r<=a;r++)n=r===a?this:this.clone(!0),pe(o[r])[t](n),ae.apply(i,n.get());return this.pushStack(i)}});var ut,lt={HTML:"block",BODY:"block"},ct=/^margin/,ft=new RegExp("^("+Fe+")(?!px)[a-z%]+$","i"),dt=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i},pt=re.documentElement;!function(){function t(){var t,c,f=re.documentElement;f.appendChild(u),l.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",n=i=s=!1,r=a=!0,e.getComputedStyle&&(c=e.getComputedStyle(l),n="1%"!==(c||{}).top,s="2px"===(c||{}).marginLeft,i="4px"===(c||{width:"4px"}).width,l.style.marginRight="50%",r="4px"===(c||{marginRight:"4px"}).marginRight,t=l.appendChild(re.createElement("div")),t.style.cssText=l.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",t.style.marginRight=t.style.width="0",l.style.width="1px",a=!parseFloat((e.getComputedStyle(t)||{}).marginRight),l.removeChild(t)),l.style.display="none",o=0===l.getClientRects().length,o&&(l.style.display="",l.innerHTML="<table><tr><td></td><td>t</td></tr></table>",t=l.getElementsByTagName("td"),t[0].style.cssText="margin:0;border:0;padding:0;display:none",o=0===t[0].offsetHeight,o&&(t[0].style.display="",t[1].style.display="none",o=0===t[0].offsetHeight)),f.removeChild(u)}var n,r,i,o,a,s,u=re.createElement("div"),l=re.createElement("div");l.style&&(l.style.cssText="float:left;opacity:.5",fe.opacity="0.5"===l.style.opacity,fe.cssFloat=!!l.style.cssFloat,l.style.backgroundClip="content-box",l.cloneNode(!0).style.backgroundClip="",fe.clearCloneStyle="content-box"===l.style.backgroundClip,u=re.createElement("div"),u.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",l.innerHTML="",u.appendChild(l),fe.boxSizing=""===l.style.boxSizing||""===l.style.MozBoxSizing||""===l.style.WebkitBoxSizing,pe.extend(fe,{reliableHiddenOffsets:function(){return null==n&&t(),o},boxSizingReliable:function(){return null==n&&t(),i},pixelMarginRight:function(){return null==n&&t(),r},pixelPosition:function(){return null==n&&t(),n},reliableMarginRight:function(){return null==n&&t(),a},reliableMarginLeft:function(){return null==n&&t(),s}}))}();var ht,gt,mt=/^(top|right|bottom|left)$/;e.getComputedStyle?(ht=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n.getPropertyValue(t)||n[t]:void 0,""!==a&&void 0!==a||pe.contains(e.ownerDocument,e)||(a=pe.style(e,t)),n&&!fe.pixelMarginRight()&&ft.test(a)&&ct.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o),void 0===a?a:a+""}):pt.currentStyle&&(ht=function(e){return e.currentStyle},gt=function(e,t,n){var r,i,o,a,s=e.style;return n=n||ht(e),a=n?n[t]:void 0,null==a&&s&&s[t]&&(a=s[t]),ft.test(a)&&!mt.test(t)&&(r=s.left,i=e.runtimeStyle,o=i&&i.left,o&&(i.left=e.currentStyle.left),s.left="fontSize"===t?"1em":a,a=s.pixelLeft+"px",s.left=r,o&&(i.left=o)),void 0===a?a:a+""||"auto"});var yt=/alpha\([^)]*\)/i,vt=/opacity\s*=\s*([^)]*)/i,xt=/^(none|table(?!-c[ea]).+)/,bt=new RegExp("^("+Fe+")(.*)$","i"),wt={position:"absolute",visibility:"hidden",display:"block"},Tt={letterSpacing:"0",fontWeight:"400"},Ct=["Webkit","O","Moz","ms"],Et=re.createElement("div").style;pe.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=gt(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":fe.cssFloat?"cssFloat":"styleFloat"},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=pe.camelCase(t),u=e.style;if(t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:u[t];if(o=typeof n,"string"===o&&(i=Me.exec(n))&&i[1]&&(n=d(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(pe.cssNumber[s]?"":"px")),fe.clearCloneStyle||""!==n||0!==t.indexOf("background")||(u[t]="inherit"),!(a&&"set"in a&&void 0===(n=a.set(e,n,r)))))try{u[t]=n}catch(l){}}},css:function(e,t,n,r){var i,o,a,s=pe.camelCase(t);return t=pe.cssProps[s]||(pe.cssProps[s]=H(s)||s),a=pe.cssHooks[t]||pe.cssHooks[s],a&&"get"in a&&(o=a.get(e,!0,n)),void 0===o&&(o=gt(e,t,r)),"normal"===o&&t in Tt&&(o=Tt[t]),""===n||n?(i=parseFloat(o),n===!0||isFinite(i)?i||0:o):o}}),pe.each(["height","width"],function(e,t){pe.cssHooks[t]={get:function(e,n,r){if(n)return xt.test(pe.css(e,"display"))&&0===e.offsetWidth?dt(e,wt,function(){return M(e,t,r)}):M(e,t,r)},set:function(e,n,r){var i=r&&ht(e);return _(e,n,r?F(e,t,r,fe.boxSizing&&"border-box"===pe.css(e,"boxSizing",!1,i),i):0)}}}),fe.opacity||(pe.cssHooks.opacity={get:function(e,t){return vt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=pe.isNumeric(t)?"alpha(opacity="+100*t+")":"",o=r&&r.filter||n.filter||"";n.zoom=1,(t>=1||""===t)&&""===pe.trim(o.replace(yt,""))&&n.removeAttribute&&(n.removeAttribute("filter"),""===t||r&&!r.filter)||(n.filter=yt.test(o)?o.replace(yt,i):o+" "+i)}}),pe.cssHooks.marginRight=L(fe.reliableMarginRight,function(e,t){if(t)return dt(e,{display:"inline-block"},gt,[e,"marginRight"])}),pe.cssHooks.marginLeft=L(fe.reliableMarginLeft,function(e,t){if(t)return(parseFloat(gt(e,"marginLeft"))||(pe.contains(e.ownerDocument,e)?e.getBoundingClientRect().left-dt(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}):0))+"px"}),pe.each({margin:"",padding:"",border:"Width"},function(e,t){pe.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+Oe[r]+t]=o[r]||o[r-2]||o[0];return i}},ct.test(e)||(pe.cssHooks[e+t].set=_)}),pe.fn.extend({css:function(e,t){return Pe(this,function(e,t,n){var r,i,o={},a=0;if(pe.isArray(t)){for(r=ht(e),i=t.length;a<i;a++)o[t[a]]=pe.css(e,t[a],!1,r);return o}return void 0!==n?pe.style(e,t,n):pe.css(e,t)},e,t,arguments.length>1)},show:function(){return q(this,!0)},hide:function(){return q(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){Re(this)?pe(this).show():pe(this).hide()})}}),pe.Tween=O,O.prototype={constructor:O,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||pe.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(pe.cssNumber[n]?"":"px")},cur:function(){var e=O.propHooks[this.prop];return e&&e.get?e.get(this):O.propHooks._default.get(this)},run:function(e){var t,n=O.propHooks[this.prop];return this.options.duration?this.pos=t=pe.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):O.propHooks._default.set(this),this}},O.prototype.init.prototype=O.prototype,O.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=pe.css(e.elem,e.prop,""),t&&"auto"!==t?t:0)},set:function(e){pe.fx.step[e.prop]?pe.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[pe.cssProps[e.prop]]&&!pe.cssHooks[e.prop]?e.elem[e.prop]=e.now:pe.style(e.elem,e.prop,e.now+e.unit)}}},O.propHooks.scrollTop=O.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},pe.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},pe.fx=O.prototype.init,pe.fx.step={};var Nt,kt,St=/^(?:toggle|show|hide)$/,At=/queueHooks$/;pe.Animation=pe.extend($,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return d(n.elem,e,Me.exec(t),n),n}]},tweener:function(e,t){pe.isFunction(e)?(t=e,e=["*"]):e=e.match(De);for(var n,r=0,i=e.length;r<i;r++)n=e[r],$.tweeners[n]=$.tweeners[n]||[],$.tweeners[n].unshift(t)},prefilters:[W],prefilter:function(e,t){t?$.prefilters.unshift(e):$.prefilters.push(e)}}),pe.speed=function(e,t,n){var r=e&&"object"==typeof e?pe.extend({},e):{complete:n||!n&&t||pe.isFunction(e)&&e,duration:e,easing:n&&t||t&&!pe.isFunction(t)&&t};return r.duration=pe.fx.off?0:"number"==typeof r.duration?r.duration:r.duration in pe.fx.speeds?pe.fx.speeds[r.duration]:pe.fx.speeds._default,null!=r.queue&&r.queue!==!0||(r.queue="fx"),r.old=r.complete,r.complete=function(){pe.isFunction(r.old)&&r.old.call(this),r.queue&&pe.dequeue(this,r.queue)},r},pe.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Re).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=pe.isEmptyObject(e),o=pe.speed(t,n,r),a=function(){var t=$(this,pe.extend({},e),o);(i||pe._data(this,"finish"))&&t.stop(!0)};return a.finish=a,i||o.queue===!1?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=pe.timers,a=pe._data(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&At.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||pe.dequeue(this,e)})},finish:function(e){return e!==!1&&(e=e||"fx"),this.each(function(){var t,n=pe._data(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=pe.timers,a=r?r.length:0;for(n.finish=!0,pe.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),pe.each(["toggle","show","hide"],function(e,t){var n=pe.fn[t];pe.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(P(t,!0),e,r,i)}}),pe.each({slideDown:P("show"),slideUp:P("hide"),slideToggle:P("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){pe.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),pe.timers=[],pe.fx.tick=function(){var e,t=pe.timers,n=0;for(Nt=pe.now();n<t.length;n++)e=t[n],e()||t[n]!==e||t.splice(n--,1);t.length||pe.fx.stop(),Nt=void 0},pe.fx.timer=function(e){pe.timers.push(e),e()?pe.fx.start():pe.timers.pop()},pe.fx.interval=13,pe.fx.start=function(){kt||(kt=e.setInterval(pe.fx.tick,pe.fx.interval))},pe.fx.stop=function(){e.clearInterval(kt),kt=null},pe.fx.speeds={slow:600,fast:200,_default:400},pe.fn.delay=function(t,n){return t=pe.fx?pe.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e,t=re.createElement("input"),n=re.createElement("div"),r=re.createElement("select"),i=r.appendChild(re.createElement("option"));n=re.createElement("div"),n.setAttribute("className","t"),n.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",e=n.getElementsByTagName("a")[0],t.setAttribute("type","checkbox"),n.appendChild(t),e=n.getElementsByTagName("a")[0],e.style.cssText="top:1px",fe.getSetAttribute="t"!==n.className,fe.style=/top/.test(e.getAttribute("style")),fe.hrefNormalized="/a"===e.getAttribute("href"),fe.checkOn=!!t.value,fe.optSelected=i.selected,fe.enctype=!!re.createElement("form").enctype,r.disabled=!0,fe.optDisabled=!i.disabled,t=re.createElement("input"),t.setAttribute("value",""),fe.input=""===t.getAttribute("value"),t.value="t",t.setAttribute("type","radio"),fe.radioValue="t"===t.value}();var Dt=/\r/g,jt=/[\x20\t\r\n\f]+/g;pe.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=pe.isFunction(e),this.each(function(n){var i;1===this.nodeType&&(i=r?e.call(this,n,pe(this).val()):e,null==i?i="":"number"==typeof i?i+="":pe.isArray(i)&&(i=pe.map(i,function(e){return null==e?"":e+""})),t=pe.valHooks[this.type]||pe.valHooks[this.nodeName.toLowerCase()],t&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return t=pe.valHooks[i.type]||pe.valHooks[i.nodeName.toLowerCase()],t&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:(n=i.value,"string"==typeof n?n.replace(Dt,""):null==n?"":n)}}}),pe.extend({valHooks:{option:{get:function(e){var t=pe.find.attr(e,"value");return null!=t?t:pe.trim(pe.text(e)).replace(jt," ")}},select:{get:function(e){for(var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||i<0,a=o?null:[],s=o?i+1:r.length,u=i<0?s:o?i:0;u<s;u++)if(n=r[u],(n.selected||u===i)&&(fe.optDisabled?!n.disabled:null===n.getAttribute("disabled"))&&(!n.parentNode.disabled||!pe.nodeName(n.parentNode,"optgroup"))){if(t=pe(n).val(),o)return t;a.push(t)}return a},set:function(e,t){for(var n,r,i=e.options,o=pe.makeArray(t),a=i.length;a--;)if(r=i[a],pe.inArray(pe.valHooks.option.get(r),o)>-1)try{r.selected=n=!0}catch(s){r.scrollHeight}else r.selected=!1;return n||(e.selectedIndex=-1),i}}}}),pe.each(["radio","checkbox"],function(){pe.valHooks[this]={set:function(e,t){if(pe.isArray(t))return e.checked=pe.inArray(pe(e).val(),t)>-1}},fe.checkOn||(pe.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Lt,Ht,qt=pe.expr.attrHandle,_t=/^(?:checked|selected)$/i,Ft=fe.getSetAttribute,Mt=fe.input;pe.fn.extend({attr:function(e,t){return Pe(this,pe.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){pe.removeAttr(this,e)})}}),pe.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?pe.prop(e,t,n):(1===o&&pe.isXMLDoc(e)||(t=t.toLowerCase(),i=pe.attrHooks[t]||(pe.expr.match.bool.test(t)?Ht:Lt)),void 0!==n?null===n?void pe.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:(r=pe.find.attr(e,t),null==r?void 0:r))},attrHooks:{type:{set:function(e,t){if(!fe.radioValue&&"radio"===t&&pe.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(De);if(o&&1===e.nodeType)for(;n=o[i++];)r=pe.propFix[n]||n,pe.expr.match.bool.test(n)?Mt&&Ft||!_t.test(n)?e[r]=!1:e[pe.camelCase("default-"+n)]=e[r]=!1:pe.attr(e,n,""),e.removeAttribute(Ft?n:r)}}),Ht={set:function(e,t,n){return t===!1?pe.removeAttr(e,n):Mt&&Ft||!_t.test(n)?e.setAttribute(!Ft&&pe.propFix[n]||n,n):e[pe.camelCase("default-"+n)]=e[n]=!0,n}},pe.each(pe.expr.match.bool.source.match(/\w+/g),function(e,t){var n=qt[t]||pe.find.attr;Mt&&Ft||!_t.test(t)?qt[t]=function(e,t,r){var i,o;return r||(o=qt[t],qt[t]=i,i=null!=n(e,t,r)?t.toLowerCase():null,qt[t]=o),i}:qt[t]=function(e,t,n){if(!n)return e[pe.camelCase("default-"+t)]?t.toLowerCase():null}}),Mt&&Ft||(pe.attrHooks.value={set:function(e,t,n){return pe.nodeName(e,"input")?void(e.defaultValue=t):Lt&&Lt.set(e,t,n)}}),Ft||(Lt={set:function(e,t,n){var r=e.getAttributeNode(n);if(r||e.setAttributeNode(r=e.ownerDocument.createAttribute(n)),r.value=t+="","value"===n||t===e.getAttribute(n))return t}},qt.id=qt.name=qt.coords=function(e,t,n){var r;if(!n)return(r=e.getAttributeNode(t))&&""!==r.value?r.value:null},pe.valHooks.button={get:function(e,t){var n=e.getAttributeNode(t);if(n&&n.specified)return n.value},set:Lt.set},pe.attrHooks.contenteditable={set:function(e,t,n){Lt.set(e,""!==t&&t,n)}},pe.each(["width","height"],function(e,t){pe.attrHooks[t]={set:function(e,n){if(""===n)return e.setAttribute(t,"auto"),n}}})),fe.style||(pe.attrHooks.style={get:function(e){return e.style.cssText||void 0},set:function(e,t){return e.style.cssText=t+""}});var Ot=/^(?:input|select|textarea|button|object)$/i,Rt=/^(?:a|area)$/i;pe.fn.extend({prop:function(e,t){return Pe(this,pe.prop,e,t,arguments.length>1)},removeProp:function(e){return e=pe.propFix[e]||e,this.each(function(){try{this[e]=void 0,delete this[e]}catch(t){}})}}),pe.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&pe.isXMLDoc(e)||(t=pe.propFix[t]||t,i=pe.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=pe.find.attr(e,"tabindex");return t?parseInt(t,10):Ot.test(e.nodeName)||Rt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),fe.hrefNormalized||pe.each(["href","src"],function(e,t){pe.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),fe.optSelected||(pe.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),pe.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){pe.propFix[this.toLowerCase()]=this}),fe.enctype||(pe.propFix.enctype="encoding");var Pt=/[\t\r\n\f]/g;pe.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).addClass(e.call(this,t,z(this)))});if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)r.indexOf(" "+o+" ")<0&&(r+=o+" ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(pe.isFunction(e))return this.each(function(t){pe(this).removeClass(e.call(this,t,z(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof e&&e)for(t=e.match(De)||[];n=this[u++];)if(i=z(n),r=1===n.nodeType&&(" "+i+" ").replace(Pt," ")){for(a=0;o=t[a++];)for(;r.indexOf(" "+o+" ")>-1;)r=r.replace(" "+o+" "," ");s=pe.trim(r),i!==s&&pe.attr(n,"class",s)}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):pe.isFunction(e)?this.each(function(n){pe(this).toggleClass(e.call(this,n,z(this),t),t)}):this.each(function(){var t,r,i,o;if("string"===n)for(r=0,i=pe(this),o=e.match(De)||[];t=o[r++];)i.hasClass(t)?i.removeClass(t):i.addClass(t);else void 0!==e&&"boolean"!==n||(t=z(this),t&&pe._data(this,"__className__",t),pe.attr(this,"class",t||e===!1?"":pe._data(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;for(t=" "+e+" ";n=this[r++];)if(1===n.nodeType&&(" "+z(n)+" ").replace(Pt," ").indexOf(t)>-1)return!0;return!1}}),pe.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){pe.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),pe.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}});var Bt=e.location,Wt=pe.now(),It=/\?/,$t=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;pe.parseJSON=function(t){if(e.JSON&&e.JSON.parse)return e.JSON.parse(t+"");var n,r=null,i=pe.trim(t+"");return i&&!pe.trim(i.replace($t,function(e,t,i,o){return n&&t&&(r=0),0===r?e:(n=i||t,r+=!o-!i,"")}))?Function("return "+i)():pe.error("Invalid JSON: "+t)},pe.parseXML=function(t){var n,r;if(!t||"string"!=typeof t)return null;try{e.DOMParser?(r=new e.DOMParser,n=r.parseFromString(t,"text/xml")):(n=new e.ActiveXObject("Microsoft.XMLDOM"),n.async="false",n.loadXML(t))}catch(i){n=void 0}return n&&n.documentElement&&!n.getElementsByTagName("parsererror").length||pe.error("Invalid XML: "+t),n};var zt=/#.*$/,Xt=/([?&])_=[^&]*/,Ut=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Vt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Yt=/^(?:GET|HEAD)$/,Jt=/^\/\//,Gt=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Kt={},Qt={},Zt="*/".concat("*"),en=Bt.href,tn=Gt.exec(en.toLowerCase())||[];pe.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:en,type:"GET",isLocal:Vt.test(tn[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Zt,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":pe.parseJSON,"text xml":pe.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?V(V(e,pe.ajaxSettings),t):V(pe.ajaxSettings,e)},ajaxPrefilter:X(Kt),ajaxTransport:X(Qt),ajax:function(t,n){function r(t,n,r,i){var o,f,v,x,w,C=n;2!==b&&(b=2,u&&e.clearTimeout(u),c=void 0,s=i||"",T.readyState=t>0?4:0,o=t>=200&&t<300||304===t,r&&(x=Y(d,T,r)),x=J(d,x,T,o),o?(d.ifModified&&(w=T.getResponseHeader("Last-Modified"),w&&(pe.lastModified[a]=w),w=T.getResponseHeader("etag"),w&&(pe.etag[a]=w)),204===t||"HEAD"===d.type?C="nocontent":304===t?C="notmodified":(C=x.state,f=x.data,v=x.error,o=!v)):(v=C,!t&&C||(C="error",t<0&&(t=0))),T.status=t,T.statusText=(n||C)+"",o?g.resolveWith(p,[f,C,T]):g.rejectWith(p,[T,C,v]),T.statusCode(y),y=void 0,l&&h.trigger(o?"ajaxSuccess":"ajaxError",[T,d,o?f:v]),m.fireWith(p,[T,C]),l&&(h.trigger("ajaxComplete",[T,d]),--pe.active||pe.event.trigger("ajaxStop")))}"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,d=pe.ajaxSetup({},n),p=d.context||d,h=d.context&&(p.nodeType||p.jquery)?pe(p):pe.event,g=pe.Deferred(),m=pe.Callbacks("once memory"),y=d.statusCode||{},v={},x={},b=0,w="canceled",T={readyState:0,getResponseHeader:function(e){var t;if(2===b){if(!f)for(f={};t=Ut.exec(s);)f[t[1].toLowerCase()]=t[2];t=f[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return 2===b?s:null},setRequestHeader:function(e,t){var n=e.toLowerCase();return b||(e=x[n]=x[n]||e,v[e]=t),this},overrideMimeType:function(e){return b||(d.mimeType=e),this},statusCode:function(e){var t;if(e)if(b<2)for(t in e)y[t]=[y[t],e[t]];else T.always(e[T.status]);return this},abort:function(e){var t=e||w;return c&&c.abort(t),r(0,t),this}};if(g.promise(T).complete=m.add,T.success=T.done,T.error=T.fail,d.url=((t||d.url||en)+"").replace(zt,"").replace(Jt,tn[1]+"//"),d.type=n.method||n.type||d.method||d.type,d.dataTypes=pe.trim(d.dataType||"*").toLowerCase().match(De)||[""],null==d.crossDomain&&(i=Gt.exec(d.url.toLowerCase()),d.crossDomain=!(!i||i[1]===tn[1]&&i[2]===tn[2]&&(i[3]||("http:"===i[1]?"80":"443"))===(tn[3]||("http:"===tn[1]?"80":"443")))),d.data&&d.processData&&"string"!=typeof d.data&&(d.data=pe.param(d.data,d.traditional)),U(Kt,d,n,T),2===b)return T;l=pe.event&&d.global,l&&0===pe.active++&&pe.event.trigger("ajaxStart"),d.type=d.type.toUpperCase(),d.hasContent=!Yt.test(d.type),a=d.url,d.hasContent||(d.data&&(a=d.url+=(It.test(a)?"&":"?")+d.data,delete d.data),d.cache===!1&&(d.url=Xt.test(a)?a.replace(Xt,"$1_="+Wt++):a+(It.test(a)?"&":"?")+"_="+Wt++)),d.ifModified&&(pe.lastModified[a]&&T.setRequestHeader("If-Modified-Since",pe.lastModified[a]),pe.etag[a]&&T.setRequestHeader("If-None-Match",pe.etag[a])),(d.data&&d.hasContent&&d.contentType!==!1||n.contentType)&&T.setRequestHeader("Content-Type",d.contentType),T.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+("*"!==d.dataTypes[0]?", "+Zt+"; q=0.01":""):d.accepts["*"]);for(o in d.headers)T.setRequestHeader(o,d.headers[o]);if(d.beforeSend&&(d.beforeSend.call(p,T,d)===!1||2===b))return T.abort();w="abort";for(o in{success:1,error:1,complete:1})T[o](d[o]);if(c=U(Qt,d,n,T)){if(T.readyState=1,l&&h.trigger("ajaxSend",[T,d]),2===b)return T;d.async&&d.timeout>0&&(u=e.setTimeout(function(){T.abort("timeout")},d.timeout));try{b=1,c.send(v,r)}catch(C){if(!(b<2))throw C;r(-1,C)}}else r(-1,"No Transport");return T},getJSON:function(e,t,n){return pe.get(e,t,n,"json")},getScript:function(e,t){return pe.get(e,void 0,t,"script")}}),pe.each(["get","post"],function(e,t){pe[t]=function(e,n,r,i){return pe.isFunction(n)&&(i=i||r,r=n,n=void 0),pe.ajax(pe.extend({url:e,type:t,dataType:i,data:n,success:r},pe.isPlainObject(e)&&e))}}),pe._evalUrl=function(e){return pe.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},pe.fn.extend({wrapAll:function(e){if(pe.isFunction(e))return this.each(function(t){pe(this).wrapAll(e.call(this,t))});if(this[0]){var t=pe(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){for(var e=this;e.firstChild&&1===e.firstChild.nodeType;)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return pe.isFunction(e)?this.each(function(t){pe(this).wrapInner(e.call(this,t))}):this.each(function(){var t=pe(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=pe.isFunction(e);return this.each(function(n){pe(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){pe.nodeName(this,"body")||pe(this).replaceWith(this.childNodes)}).end()}}),pe.expr.filters.hidden=function(e){return fe.reliableHiddenOffsets()?e.offsetWidth<=0&&e.offsetHeight<=0&&!e.getClientRects().length:K(e)},pe.expr.filters.visible=function(e){return!pe.expr.filters.hidden(e)};var nn=/%20/g,rn=/\[\]$/,on=/\r?\n/g,an=/^(?:submit|button|image|reset|file)$/i,sn=/^(?:input|select|textarea|keygen)/i;pe.param=function(e,t){var n,r=[],i=function(e,t){t=pe.isFunction(t)?t():null==t?"":t,r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};if(void 0===t&&(t=pe.ajaxSettings&&pe.ajaxSettings.traditional),pe.isArray(e)||e.jquery&&!pe.isPlainObject(e))pe.each(e,function(){i(this.name,this.value)});else for(n in e)Q(n,e[n],t,i);return r.join("&").replace(nn,"+")},pe.fn.extend({serialize:function(){return pe.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=pe.prop(this,"elements");return e?pe.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!pe(this).is(":disabled")&&sn.test(this.nodeName)&&!an.test(e)&&(this.checked||!Be.test(e))}).map(function(e,t){var n=pe(this).val();return null==n?null:pe.isArray(n)?pe.map(n,function(e){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),pe.ajaxSettings.xhr=void 0!==e.ActiveXObject?function(){return this.isLocal?ee():re.documentMode>8?Z():/^(get|post|head|put|delete|options)$/i.test(this.type)&&Z()||ee()}:Z;var un=0,ln={},cn=pe.ajaxSettings.xhr();e.attachEvent&&e.attachEvent("onunload",function(){for(var e in ln)ln[e](void 0,!0)}),fe.cors=!!cn&&"withCredentials"in cn,cn=fe.ajax=!!cn,cn&&pe.ajaxTransport(function(t){if(!t.crossDomain||fe.cors){var n;return{send:function(r,i){var o,a=t.xhr(),s=++un;if(a.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(o in t.xhrFields)a[o]=t.xhrFields[o];t.mimeType&&a.overrideMimeType&&a.overrideMimeType(t.mimeType),t.crossDomain||r["X-Requested-With"]||(r["X-Requested-With"]="XMLHttpRequest");for(o in r)void 0!==r[o]&&a.setRequestHeader(o,r[o]+"");a.send(t.hasContent&&t.data||null),n=function(e,r){var o,u,l;if(n&&(r||4===a.readyState))if(delete ln[s],n=void 0,a.onreadystatechange=pe.noop,r)4!==a.readyState&&a.abort();else{l={},o=a.status,"string"==typeof a.responseText&&(l.text=a.responseText);try{u=a.statusText}catch(c){u=""}o||!t.isLocal||t.crossDomain?1223===o&&(o=204):o=l.text?200:404}l&&i(o,u,l,a.getAllResponseHeaders())},t.async?4===a.readyState?e.setTimeout(n):a.onreadystatechange=ln[s]=n:n()},abort:function(){n&&n(void 0,!0)}}}}),pe.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return pe.globalEval(e),e}}}),pe.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),pe.ajaxTransport("script",function(e){if(e.crossDomain){var t,n=re.head||pe("head")[0]||re.documentElement;return{send:function(r,i){t=re.createElement("script"),t.async=!0,e.scriptCharset&&(t.charset=e.scriptCharset),t.src=e.url,t.onload=t.onreadystatechange=function(e,n){(n||!t.readyState||/loaded|complete/.test(t.readyState))&&(t.onload=t.onreadystatechange=null,t.parentNode&&t.parentNode.removeChild(t),t=null,n||i(200,"success"))},n.insertBefore(t,n.firstChild)},abort:function(){t&&t.onload(void 0,!0)}}}});var fn=[],dn=/(=)\?(?=&|$)|\?\?/;pe.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=fn.pop()||pe.expando+"_"+Wt++;return this[e]=!0,e}}),pe.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=t.jsonp!==!1&&(dn.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&dn.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=pe.isFunction(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(dn,"$1"+i):t.jsonp!==!1&&(t.url+=(It.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||pe.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?pe(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,fn.push(i)),a&&pe.isFunction(o)&&o(a[0]),a=o=void 0}),"script"}),pe.parseHTML=function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||re;var r=Te.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=y([e],t,i),i&&i.length&&pe(i).remove(),pe.merge([],r.childNodes))};var pn=pe.fn.load;return pe.fn.load=function(e,t,n){if("string"!=typeof e&&pn)return pn.apply(this,arguments);var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=pe.trim(e.slice(s,e.length)),e=e.slice(0,s)),pe.isFunction(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&pe.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?pe("<div>").append(pe.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},pe.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){pe.fn[t]=function(e){return this.on(t,e)}}),pe.expr.filters.animated=function(e){return pe.grep(pe.timers,function(t){return e===t.elem}).length},pe.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=pe.css(e,"position"),f=pe(e),d={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=pe.css(e,"top"),u=pe.css(e,"left"),l=("absolute"===c||"fixed"===c)&&pe.inArray("auto",[o,u])>-1,l?(r=f.position(),a=r.top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),pe.isFunction(t)&&(t=t.call(e,n,pe.extend({},s))),null!=t.top&&(d.top=t.top-s.top+a),null!=t.left&&(d.left=t.left-s.left+i),"using"in t?t.using.call(e,d):f.css(d)}},pe.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){pe.offset.setOffset(this,e,t)});var t,n,r={top:0,left:0},i=this[0],o=i&&i.ownerDocument;if(o)return t=o.documentElement,pe.contains(t,i)?("undefined"!=typeof i.getBoundingClientRect&&(r=i.getBoundingClientRect()),n=te(o),{top:r.top+(n.pageYOffset||t.scrollTop)-(t.clientTop||0),left:r.left+(n.pageXOffset||t.scrollLeft)-(t.clientLeft||0)}):r},position:function(){if(this[0]){var e,t,n={top:0,left:0},r=this[0];return"fixed"===pe.css(r,"position")?t=r.getBoundingClientRect():(e=this.offsetParent(),t=this.offset(),pe.nodeName(e[0],"html")||(n=e.offset()),n.top+=pe.css(e[0],"borderTopWidth",!0),n.left+=pe.css(e[0],"borderLeftWidth",!0)),{top:t.top-n.top-pe.css(r,"marginTop",!0),left:t.left-n.left-pe.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){ +for(var e=this.offsetParent;e&&!pe.nodeName(e,"html")&&"static"===pe.css(e,"position");)e=e.offsetParent;return e||pt})}}),pe.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n=/Y/.test(t);pe.fn[e]=function(r){return Pe(this,function(e,r,i){var o=te(e);return void 0===i?o?t in o?o[t]:o.document.documentElement[r]:e[r]:void(o?o.scrollTo(n?pe(o).scrollLeft():i,n?i:pe(o).scrollTop()):e[r]=i)},e,r,arguments.length,null)}}),pe.each(["top","left"],function(e,t){pe.cssHooks[t]=L(fe.pixelPosition,function(e,n){if(n)return n=gt(e,t),ft.test(n)?pe(e).position()[t]+"px":n})}),pe.each({Height:"height",Width:"width"},function(e,t){pe.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){pe.fn[r]=function(r,i){var o=arguments.length&&(n||"boolean"!=typeof r),a=n||(r===!0||i===!0?"margin":"border");return Pe(this,function(t,n,r){var i;return pe.isWindow(t)?t.document.documentElement["client"+e]:9===t.nodeType?(i=t.documentElement,Math.max(t.body["scroll"+e],i["scroll"+e],t.body["offset"+e],i["offset"+e],i["client"+e])):void 0===r?pe.css(t,n,a):pe.style(t,n,r,a)},t,o?r:void 0,o,null)}})}),pe.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),pe.fn.size=function(){return this.length},pe.fn.andSelf=pe.fn.addBack,layui.define(function(e){layui.$=pe,e("jquery",pe)}),pe});!function(e,t){"use strict";var i,n,a=e.layui&&layui.define,o={getPath:function(){var e=document.currentScript?document.currentScript.src:function(){for(var e,t=document.scripts,i=t.length-1,n=i;n>0;n--)if("interactive"===t[n].readyState){e=t[n].src;break}return e||t[i].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),config:{},end:{},minIndex:0,minLeft:[],btn:["确定","取消"],type:["dialog","page","iframe","loading","tips"],getStyle:function(t,i){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](i)},link:function(t,i,n){if(r.path){var a=document.getElementsByTagName("head")[0],s=document.createElement("link");"string"==typeof i&&(n=i);var l=(n||t).replace(/\.|\//g,""),f="layuicss-"+l,c=0;s.rel="stylesheet",s.href=r.path+t,s.id=f,document.getElementById(f)||a.appendChild(s),"function"==typeof i&&!function u(){return++c>80?e.console&&console.error("layer.css: Invalid"):void(1989===parseInt(o.getStyle(document.getElementById(f),"width"))?i():setTimeout(u,100))}()}}},r={v:"3.1.1",ie:function(){var t=navigator.userAgent.toLowerCase();return!!(e.ActiveXObject||"ActiveXObject"in e)&&((t.match(/msie\s(\d+)/)||[])[1]||"11")}(),index:e.layer&&e.layer.v?1e5:0,path:o.getPath,config:function(e,t){return e=e||{},r.cache=o.config=i.extend({},o.config,e),r.path=o.config.path||r.path,"string"==typeof e.extend&&(e.extend=[e.extend]),o.config.path&&r.ready(),e.extend?(a?layui.addcss("modules/layer/"+e.extend):o.link("theme/"+e.extend),this):this},ready:function(e){var t="layer",i="",n=(a?"modules/layer/":"theme/")+"default/layer.css?v="+r.v+i;return a?layui.addcss(n,e,t):o.link(n,e,t),this},alert:function(e,t,n){var a="function"==typeof t;return a&&(n=t),r.open(i.extend({content:e,yes:n},a?{}:t))},confirm:function(e,t,n,a){var s="function"==typeof t;return s&&(a=n,n=t),r.open(i.extend({content:e,btn:o.btn,yes:n,btn2:a},s?{}:t))},msg:function(e,n,a){var s="function"==typeof n,f=o.config.skin,c=(f?f+" "+f+"-msg":"")||"layui-layer-msg",u=l.anim.length-1;return s&&(a=n),r.open(i.extend({content:e,time:3e3,shade:!1,skin:c,title:!1,closeBtn:!1,btn:!1,resize:!1,end:a},s&&!o.config.skin?{skin:c+" layui-layer-hui",anim:u}:function(){return n=n||{},(n.icon===-1||n.icon===t&&!o.config.skin)&&(n.skin=c+" "+(n.skin||"layui-layer-hui")),n}()))},load:function(e,t){return r.open(i.extend({type:3,icon:e||0,resize:!1,shade:.01},t))},tips:function(e,t,n){return r.open(i.extend({type:4,content:[e,t],closeBtn:!1,time:3e3,shade:!1,resize:!1,fixed:!1,maxWidth:210},n))}},s=function(e){var t=this;t.index=++r.index,t.config=i.extend({},t.config,o.config,e),document.body?t.creat():setTimeout(function(){t.creat()},30)};s.pt=s.prototype;var l=["layui-layer",".layui-layer-title",".layui-layer-main",".layui-layer-dialog","layui-layer-iframe","layui-layer-content","layui-layer-btn","layui-layer-close"];l.anim=["layer-anim-00","layer-anim-01","layer-anim-02","layer-anim-03","layer-anim-04","layer-anim-05","layer-anim-06"],s.pt.config={type:0,shade:.3,fixed:!0,move:l[1],title:"信息",offset:"auto",area:"auto",closeBtn:1,time:0,zIndex:19891014,maxWidth:360,anim:0,isOutAnim:!0,icon:-1,moveType:1,resize:!0,scrollbar:!0,tips:2},s.pt.vessel=function(e,t){var n=this,a=n.index,r=n.config,s=r.zIndex+a,f="object"==typeof r.title,c=r.maxmin&&(1===r.type||2===r.type),u=r.title?'<div class="layui-layer-title" style="'+(f?r.title[1]:"")+'">'+(f?r.title[0]:r.title)+"</div>":"";return r.zIndex=s,t([r.shade?'<div class="layui-layer-shade" id="layui-layer-shade'+a+'" times="'+a+'" style="'+("z-index:"+(s-1)+"; ")+'"></div>':"",'<div class="'+l[0]+(" layui-layer-"+o.type[r.type])+(0!=r.type&&2!=r.type||r.shade?"":" layui-layer-border")+" "+(r.skin||"")+'" id="'+l[0]+a+'" type="'+o.type[r.type]+'" times="'+a+'" showtime="'+r.time+'" conType="'+(e?"object":"string")+'" style="z-index: '+s+"; width:"+r.area[0]+";height:"+r.area[1]+(r.fixed?"":";position:absolute;")+'">'+(e&&2!=r.type?"":u)+'<div id="'+(r.id||"")+'" class="layui-layer-content'+(0==r.type&&r.icon!==-1?" layui-layer-padding":"")+(3==r.type?" layui-layer-loading"+r.icon:"")+'">'+(0==r.type&&r.icon!==-1?'<i class="layui-layer-ico layui-layer-ico'+r.icon+'"></i>':"")+(1==r.type&&e?"":r.content||"")+'</div><span class="layui-layer-setwin">'+function(){var e=c?'<a class="layui-layer-min" href="javascript:;"><cite></cite></a><a class="layui-layer-ico layui-layer-max" href="javascript:;"></a>':"";return r.closeBtn&&(e+='<a class="layui-layer-ico '+l[7]+" "+l[7]+(r.title?r.closeBtn:4==r.type?"1":"2")+'" href="javascript:;"></a>'),e}()+"</span>"+(r.btn?function(){var e="";"string"==typeof r.btn&&(r.btn=[r.btn]);for(var t=0,i=r.btn.length;t<i;t++)e+='<a class="'+l[6]+t+'">'+r.btn[t]+"</a>";return'<div class="'+l[6]+" layui-layer-btn-"+(r.btnAlign||"")+'">'+e+"</div>"}():"")+(r.resize?'<span class="layui-layer-resize"></span>':"")+"</div>"],u,i('<div class="layui-layer-move"></div>')),n},s.pt.creat=function(){var e=this,t=e.config,a=e.index,s=t.content,f="object"==typeof s,c=i("body");if(!t.id||!i("#"+t.id)[0]){switch("string"==typeof t.area&&(t.area="auto"===t.area?["",""]:[t.area,""]),t.shift&&(t.anim=t.shift),6==r.ie&&(t.fixed=!1),t.type){case 0:t.btn="btn"in t?t.btn:o.btn[0],r.closeAll("dialog");break;case 2:var s=t.content=f?t.content:[t.content||"","auto"];t.content='<iframe scrolling="'+(t.content[1]||"auto")+'" allowtransparency="true" id="'+l[4]+a+'" name="'+l[4]+a+'" onload="this.className=\'\';" class="layui-layer-load" frameborder="0" src="'+t.content[0]+'"></iframe>';break;case 3:delete t.title,delete t.closeBtn,t.icon===-1&&0===t.icon,r.closeAll("loading");break;case 4:f||(t.content=[t.content,"body"]),t.follow=t.content[1],t.content=t.content[0]+'<i class="layui-layer-TipsG"></i>',delete t.title,t.tips="object"==typeof t.tips?t.tips:[t.tips,!0],t.tipsMore||r.closeAll("tips")}if(e.vessel(f,function(n,r,u){c.append(n[0]),f?function(){2==t.type||4==t.type?function(){i("body").append(n[1])}():function(){s.parents("."+l[0])[0]||(s.data("display",s.css("display")).show().addClass("layui-layer-wrap").wrap(n[1]),i("#"+l[0]+a).find("."+l[5]).before(r))}()}():c.append(n[1]),i(".layui-layer-move")[0]||c.append(o.moveElem=u),e.layero=i("#"+l[0]+a),t.scrollbar||l.html.css("overflow","hidden").attr("layer-full",a)}).auto(a),i("#layui-layer-shade"+e.index).css({"background-color":t.shade[1]||"#000",opacity:t.shade[0]||t.shade}),2==t.type&&6==r.ie&&e.layero.find("iframe").attr("src",s[0]),4==t.type?e.tips():e.offset(),t.fixed&&n.on("resize",function(){e.offset(),(/^\d+%$/.test(t.area[0])||/^\d+%$/.test(t.area[1]))&&e.auto(a),4==t.type&&e.tips()}),t.time<=0||setTimeout(function(){r.close(e.index)},t.time),e.move().callback(),l.anim[t.anim]){var u="layer-anim "+l.anim[t.anim];e.layero.addClass(u).one("webkitAnimationEnd mozAnimationEnd MSAnimationEnd oanimationend animationend",function(){i(this).removeClass(u)})}t.isOutAnim&&e.layero.data("isOutAnim",!0)}},s.pt.auto=function(e){var t=this,a=t.config,o=i("#"+l[0]+e);""===a.area[0]&&a.maxWidth>0&&(r.ie&&r.ie<8&&a.btn&&o.width(o.innerWidth()),o.outerWidth()>a.maxWidth&&o.width(a.maxWidth));var s=[o.innerWidth(),o.innerHeight()],f=o.find(l[1]).outerHeight()||0,c=o.find("."+l[6]).outerHeight()||0,u=function(e){e=o.find(e),e.height(s[1]-f-c-2*(0|parseFloat(e.css("padding-top"))))};switch(a.type){case 2:u("iframe");break;default:""===a.area[1]?a.maxHeight>0&&o.outerHeight()>a.maxHeight?(s[1]=a.maxHeight,u("."+l[5])):a.fixed&&s[1]>=n.height()&&(s[1]=n.height(),u("."+l[5])):u("."+l[5])}return t},s.pt.offset=function(){var e=this,t=e.config,i=e.layero,a=[i.outerWidth(),i.outerHeight()],o="object"==typeof t.offset;e.offsetTop=(n.height()-a[1])/2,e.offsetLeft=(n.width()-a[0])/2,o?(e.offsetTop=t.offset[0],e.offsetLeft=t.offset[1]||e.offsetLeft):"auto"!==t.offset&&("t"===t.offset?e.offsetTop=0:"r"===t.offset?e.offsetLeft=n.width()-a[0]:"b"===t.offset?e.offsetTop=n.height()-a[1]:"l"===t.offset?e.offsetLeft=0:"lt"===t.offset?(e.offsetTop=0,e.offsetLeft=0):"lb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=0):"rt"===t.offset?(e.offsetTop=0,e.offsetLeft=n.width()-a[0]):"rb"===t.offset?(e.offsetTop=n.height()-a[1],e.offsetLeft=n.width()-a[0]):e.offsetTop=t.offset),t.fixed||(e.offsetTop=/%$/.test(e.offsetTop)?n.height()*parseFloat(e.offsetTop)/100:parseFloat(e.offsetTop),e.offsetLeft=/%$/.test(e.offsetLeft)?n.width()*parseFloat(e.offsetLeft)/100:parseFloat(e.offsetLeft),e.offsetTop+=n.scrollTop(),e.offsetLeft+=n.scrollLeft()),i.attr("minLeft")&&(e.offsetTop=n.height()-(i.find(l[1]).outerHeight()||0),e.offsetLeft=i.css("left")),i.css({top:e.offsetTop,left:e.offsetLeft})},s.pt.tips=function(){var e=this,t=e.config,a=e.layero,o=[a.outerWidth(),a.outerHeight()],r=i(t.follow);r[0]||(r=i("body"));var s={width:r.outerWidth(),height:r.outerHeight(),top:r.offset().top,left:r.offset().left},f=a.find(".layui-layer-TipsG"),c=t.tips[0];t.tips[1]||f.remove(),s.autoLeft=function(){s.left+o[0]-n.width()>0?(s.tipLeft=s.left+s.width-o[0],f.css({right:12,left:"auto"})):s.tipLeft=s.left},s.where=[function(){s.autoLeft(),s.tipTop=s.top-o[1]-10,f.removeClass("layui-layer-TipsB").addClass("layui-layer-TipsT").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left+s.width+10,s.tipTop=s.top,f.removeClass("layui-layer-TipsL").addClass("layui-layer-TipsR").css("border-bottom-color",t.tips[1])},function(){s.autoLeft(),s.tipTop=s.top+s.height+10,f.removeClass("layui-layer-TipsT").addClass("layui-layer-TipsB").css("border-right-color",t.tips[1])},function(){s.tipLeft=s.left-o[0]-10,s.tipTop=s.top,f.removeClass("layui-layer-TipsR").addClass("layui-layer-TipsL").css("border-bottom-color",t.tips[1])}],s.where[c-1](),1===c?s.top-(n.scrollTop()+o[1]+16)<0&&s.where[2]():2===c?n.width()-(s.left+s.width+o[0]+16)>0||s.where[3]():3===c?s.top-n.scrollTop()+s.height+o[1]+16-n.height()>0&&s.where[0]():4===c&&o[0]+16-s.left>0&&s.where[1](),a.find("."+l[5]).css({"background-color":t.tips[1],"padding-right":t.closeBtn?"30px":""}),a.css({left:s.tipLeft-(t.fixed?n.scrollLeft():0),top:s.tipTop-(t.fixed?n.scrollTop():0)})},s.pt.move=function(){var e=this,t=e.config,a=i(document),s=e.layero,l=s.find(t.move),f=s.find(".layui-layer-resize"),c={};return t.move&&l.css("cursor","move"),l.on("mousedown",function(e){e.preventDefault(),t.move&&(c.moveStart=!0,c.offset=[e.clientX-parseFloat(s.css("left")),e.clientY-parseFloat(s.css("top"))],o.moveElem.css("cursor","move").show())}),f.on("mousedown",function(e){e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],c.area=[s.outerWidth(),s.outerHeight()],o.moveElem.css("cursor","se-resize").show()}),a.on("mousemove",function(i){if(c.moveStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1],l="fixed"===s.css("position");if(i.preventDefault(),c.stX=l?0:n.scrollLeft(),c.stY=l?0:n.scrollTop(),!t.moveOut){var f=n.width()-s.outerWidth()+c.stX,u=n.height()-s.outerHeight()+c.stY;a<c.stX&&(a=c.stX),a>f&&(a=f),o<c.stY&&(o=c.stY),o>u&&(o=u)}s.css({left:a,top:o})}if(t.resize&&c.resizeStart){var a=i.clientX-c.offset[0],o=i.clientY-c.offset[1];i.preventDefault(),r.style(e.index,{width:c.area[0]+a,height:c.area[1]+o}),c.isResize=!0,t.resizing&&t.resizing(s)}}).on("mouseup",function(e){c.moveStart&&(delete c.moveStart,o.moveElem.hide(),t.moveEnd&&t.moveEnd(s)),c.resizeStart&&(delete c.resizeStart,o.moveElem.hide())}),e},s.pt.callback=function(){function e(){var e=a.cancel&&a.cancel(t.index,n);e===!1||r.close(t.index)}var t=this,n=t.layero,a=t.config;t.openLayer(),a.success&&(2==a.type?n.find("iframe").on("load",function(){a.success(n,t.index)}):a.success(n,t.index)),6==r.ie&&t.IE6(n),n.find("."+l[6]).children("a").on("click",function(){var e=i(this).index();if(0===e)a.yes?a.yes(t.index,n):a.btn1?a.btn1(t.index,n):r.close(t.index);else{var o=a["btn"+(e+1)]&&a["btn"+(e+1)](t.index,n);o===!1||r.close(t.index)}}),n.find("."+l[7]).on("click",e),a.shadeClose&&i("#layui-layer-shade"+t.index).on("click",function(){r.close(t.index)}),n.find(".layui-layer-min").on("click",function(){var e=a.min&&a.min(n);e===!1||r.min(t.index,a)}),n.find(".layui-layer-max").on("click",function(){i(this).hasClass("layui-layer-maxmin")?(r.restore(t.index),a.restore&&a.restore(n)):(r.full(t.index,a),setTimeout(function(){a.full&&a.full(n)},100))}),a.end&&(o.end[t.index]=a.end)},o.reselect=function(){i.each(i("select"),function(e,t){var n=i(this);n.parents("."+l[0])[0]||1==n.attr("layer")&&i("."+l[0]).length<1&&n.removeAttr("layer").show(),n=null})},s.pt.IE6=function(e){i("select").each(function(e,t){var n=i(this);n.parents("."+l[0])[0]||"none"===n.css("display")||n.attr({layer:"1"}).hide(),n=null})},s.pt.openLayer=function(){var e=this;r.zIndex=e.config.zIndex,r.setTop=function(e){var t=function(){r.zIndex++,e.css("z-index",r.zIndex+1)};return r.zIndex=parseInt(e[0].style.zIndex),e.on("mousedown",t),r.zIndex}},o.record=function(e){var t=[e.width(),e.height(),e.position().top,e.position().left+parseFloat(e.css("margin-left"))];e.find(".layui-layer-max").addClass("layui-layer-maxmin"),e.attr({area:t})},o.rescollbar=function(e){l.html.attr("layer-full")==e&&(l.html[0].style.removeProperty?l.html[0].style.removeProperty("overflow"):l.html[0].style.removeAttribute("overflow"),l.html.removeAttr("layer-full"))},e.layer=r,r.getChildFrame=function(e,t){return t=t||i("."+l[4]).attr("times"),i("#"+l[0]+t).find("iframe").contents().find(e)},r.getFrameIndex=function(e){return i("#"+e).parents("."+l[4]).attr("times")},r.iframeAuto=function(e){if(e){var t=r.getChildFrame("html",e).outerHeight(),n=i("#"+l[0]+e),a=n.find(l[1]).outerHeight()||0,o=n.find("."+l[6]).outerHeight()||0;n.css({height:t+a+o}),n.find("iframe").css({height:t})}},r.iframeSrc=function(e,t){i("#"+l[0]+e).find("iframe").attr("src",t)},r.style=function(e,t,n){var a=i("#"+l[0]+e),r=a.find(".layui-layer-content"),s=a.attr("type"),f=a.find(l[1]).outerHeight()||0,c=a.find("."+l[6]).outerHeight()||0;a.attr("minLeft");s!==o.type[3]&&s!==o.type[4]&&(n||(parseFloat(t.width)<=260&&(t.width=260),parseFloat(t.height)-f-c<=64&&(t.height=64+f+c)),a.css(t),c=a.find("."+l[6]).outerHeight(),s===o.type[2]?a.find("iframe").css({height:parseFloat(t.height)-f-c}):r.css({height:parseFloat(t.height)-f-c-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom"))}))},r.min=function(e,t){var a=i("#"+l[0]+e),s=a.find(l[1]).outerHeight()||0,f=a.attr("minLeft")||181*o.minIndex+"px",c=a.css("position");o.record(a),o.minLeft[0]&&(f=o.minLeft[0],o.minLeft.shift()),a.attr("position",c),r.style(e,{width:180,height:s,left:f,top:n.height()-s,position:"fixed",overflow:"hidden"},!0),a.find(".layui-layer-min").hide(),"page"===a.attr("type")&&a.find(l[4]).hide(),o.rescollbar(e),a.attr("minLeft")||o.minIndex++,a.attr("minLeft",f)},r.restore=function(e){var t=i("#"+l[0]+e),n=t.attr("area").split(",");t.attr("type");r.style(e,{width:parseFloat(n[0]),height:parseFloat(n[1]),top:parseFloat(n[2]),left:parseFloat(n[3]),position:t.attr("position"),overflow:"visible"},!0),t.find(".layui-layer-max").removeClass("layui-layer-maxmin"),t.find(".layui-layer-min").show(),"page"===t.attr("type")&&t.find(l[4]).show(),o.rescollbar(e)},r.full=function(e){var t,a=i("#"+l[0]+e);o.record(a),l.html.attr("layer-full")||l.html.css("overflow","hidden").attr("layer-full",e),clearTimeout(t),t=setTimeout(function(){var t="fixed"===a.css("position");r.style(e,{top:t?0:n.scrollTop(),left:t?0:n.scrollLeft(),width:n.width(),height:n.height()},!0),a.find(".layui-layer-min").hide()},100)},r.title=function(e,t){var n=i("#"+l[0]+(t||r.index)).find(l[1]);n.html(e)},r.close=function(e){var t=i("#"+l[0]+e),n=t.attr("type"),a="layer-anim-close";if(t[0]){var s="layui-layer-wrap",f=function(){if(n===o.type[1]&&"object"===t.attr("conType")){t.children(":not(."+l[5]+")").remove();for(var a=t.find("."+s),r=0;r<2;r++)a.unwrap();a.css("display",a.data("display")).removeClass(s)}else{if(n===o.type[2])try{var f=i("#"+l[4]+e)[0];f.contentWindow.document.write(""),f.contentWindow.close(),t.find("."+l[5])[0].removeChild(f)}catch(c){}t[0].innerHTML="",t.remove()}"function"==typeof o.end[e]&&o.end[e](),delete o.end[e]};t.data("isOutAnim")&&t.addClass("layer-anim "+a),i("#layui-layer-moves, #layui-layer-shade"+e).remove(),6==r.ie&&o.reselect(),o.rescollbar(e),t.attr("minLeft")&&(o.minIndex--,o.minLeft.push(t.attr("minLeft"))),r.ie&&r.ie<10||!t.data("isOutAnim")?f():setTimeout(function(){f()},200)}},r.closeAll=function(e){i.each(i("."+l[0]),function(){var t=i(this),n=e?t.attr("type")===e:1;n&&r.close(t.attr("times")),n=null})};var f=r.cache||{},c=function(e){return f.skin?" "+f.skin+" "+f.skin+"-"+e:""};r.prompt=function(e,t){var a="";if(e=e||{},"function"==typeof e&&(t=e),e.area){var o=e.area;a='style="width: '+o[0]+"; height: "+o[1]+';"',delete e.area}var s,l=2==e.formType?'<textarea class="layui-layer-input"'+a+"></textarea>":function(){return'<input type="'+(1==e.formType?"password":"text")+'" class="layui-layer-input">'}(),f=e.success;return delete e.success,r.open(i.extend({type:1,btn:["确定","取消"],content:l,skin:"layui-layer-prompt"+c("prompt"),maxWidth:n.width(),success:function(t){s=t.find(".layui-layer-input"),s.val(e.value||"").focus(),"function"==typeof f&&f(t)},resize:!1,yes:function(i){var n=s.val();""===n?s.focus():n.length>(e.maxlength||500)?r.tips("最多输入"+(e.maxlength||500)+"个字数",s,{tips:1}):t&&t(n,i,s)}},e))},r.tab=function(e){e=e||{};var t=e.tab||{},n="layui-this",a=e.success;return delete e.success,r.open(i.extend({type:1,skin:"layui-layer-tab"+c("tab"),resize:!1,title:function(){var e=t.length,i=1,a="";if(e>0)for(a='<span class="'+n+'">'+t[0].title+"</span>";i<e;i++)a+="<span>"+t[i].title+"</span>";return a}(),content:'<ul class="layui-layer-tabmain">'+function(){var e=t.length,i=1,a="";if(e>0)for(a='<li class="layui-layer-tabli '+n+'">'+(t[0].content||"no content")+"</li>";i<e;i++)a+='<li class="layui-layer-tabli">'+(t[i].content||"no content")+"</li>";return a}()+"</ul>",success:function(t){var o=t.find(".layui-layer-title").children(),r=t.find(".layui-layer-tabmain").children();o.on("mousedown",function(t){t.stopPropagation?t.stopPropagation():t.cancelBubble=!0;var a=i(this),o=a.index();a.addClass(n).siblings().removeClass(n),r.eq(o).show().siblings().hide(),"function"==typeof e.change&&e.change(o)}),"function"==typeof a&&a(t)}},e))},r.photos=function(t,n,a){function o(e,t,i){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,t(n)},void(n.onerror=function(e){n.onerror=null,i(e)}))}var s={};if(t=t||{},t.photos){var l=t.photos.constructor===Object,f=l?t.photos:{},u=f.data||[],d=f.start||0;s.imgIndex=(0|d)+1,t.img=t.img||"img";var y=t.success;if(delete t.success,l){if(0===u.length)return r.msg("没有图片")}else{var p=i(t.photos),h=function(){u=[],p.find(t.img).each(function(e){var t=i(this);t.attr("layer-index",e),u.push({alt:t.attr("alt"),pid:t.attr("layer-pid"),src:t.attr("layer-src")||t.attr("src"),thumb:t.attr("src")})})};if(h(),0===u.length)return;if(n||p.on("click",t.img,function(){var e=i(this),n=e.attr("layer-index");r.photos(i.extend(t,{photos:{start:n,data:u,tab:t.tab},full:t.full}),!0),h()}),!n)return}s.imgprev=function(e){s.imgIndex--,s.imgIndex<1&&(s.imgIndex=u.length),s.tabimg(e)},s.imgnext=function(e,t){s.imgIndex++,s.imgIndex>u.length&&(s.imgIndex=1,t)||s.tabimg(e)},s.keyup=function(e){if(!s.end){var t=e.keyCode;e.preventDefault(),37===t?s.imgprev(!0):39===t?s.imgnext(!0):27===t&&r.close(s.index)}},s.tabimg=function(e){if(!(u.length<=1))return f.start=s.imgIndex-1,r.close(s.index),r.photos(t,!0,e)},s.event=function(){s.bigimg.hover(function(){s.imgsee.show()},function(){s.imgsee.hide()}),s.bigimg.find(".layui-layer-imgprev").on("click",function(e){e.preventDefault(),s.imgprev()}),s.bigimg.find(".layui-layer-imgnext").on("click",function(e){e.preventDefault(),s.imgnext()}),i(document).on("keyup",s.keyup)},s.loadi=r.load(1,{shade:!("shade"in t)&&.9,scrollbar:!1}),o(u[d].src,function(n){r.close(s.loadi),s.index=r.open(i.extend({type:1,id:"layui-layer-photos",area:function(){var a=[n.width,n.height],o=[i(e).width()-100,i(e).height()-100];if(!t.full&&(a[0]>o[0]||a[1]>o[1])){var r=[a[0]/o[0],a[1]/o[1]];r[0]>r[1]?(a[0]=a[0]/r[0],a[1]=a[1]/r[0]):r[0]<r[1]&&(a[0]=a[0]/r[1],a[1]=a[1]/r[1])}return[a[0]+"px",a[1]+"px"]}(),title:!1,shade:.9,shadeClose:!0,closeBtn:!1,move:".layui-layer-phimg img",moveType:1,scrollbar:!1,moveOut:!0,isOutAnim:!1,skin:"layui-layer-photos"+c("photos"),content:'<div class="layui-layer-phimg"><img src="'+u[d].src+'" alt="'+(u[d].alt||"")+'" layer-pid="'+u[d].pid+'"><div class="layui-layer-imgsee">'+(u.length>1?'<span class="layui-layer-imguide"><a href="javascript:;" class="layui-layer-iconext layui-layer-imgprev"></a><a href="javascript:;" class="layui-layer-iconext layui-layer-imgnext"></a></span>':"")+'<div class="layui-layer-imgbar" style="display:'+(a?"block":"")+'"><span class="layui-layer-imgtit"><a href="javascript:;">'+(u[d].alt||"")+"</a><em>"+s.imgIndex+"/"+u.length+"</em></span></div></div></div>",success:function(e,i){s.bigimg=e.find(".layui-layer-phimg"),s.imgsee=e.find(".layui-layer-imguide,.layui-layer-imgbar"),s.event(e),t.tab&&t.tab(u[d],e),"function"==typeof y&&y(e)},end:function(){s.end=!0,i(document).off("keyup",s.keyup)}},t))},function(){r.close(s.loadi),r.msg("当前图片地址异常<br>是否继续查看下一张?",{time:3e4,btn:["下一张","不看了"],yes:function(){u.length>1&&s.imgnext(!0,!0)}})})}},o.run=function(t){i=t,n=i(e),l.html=i("html"),r.open=function(e){var t=new s(e);return t.index}},e.layui&&layui.define?(r.ready(),layui.define("jquery",function(t){r.path=layui.cache.dir,o.run(layui.$),e.layer=r,t("layer",r)})):"function"==typeof define&&define.amd?define(["jquery"],function(){return o.run(e.jQuery),r}):function(){o.run(e.jQuery),r.ready()}()}(window);layui.define("jquery",function(t){"use strict";var a=layui.$,i=(layui.hint(),layui.device()),e="element",l="layui-this",n="layui-show",s=function(){this.config={}};s.prototype.set=function(t){var i=this;return a.extend(!0,i.config,t),i},s.prototype.on=function(t,a){return layui.onevent.call(this,e,t,a)},s.prototype.tabAdd=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.children(".layui-tab-bar"),o=l.children(".layui-tab-content"),r='<li lay-id="'+(i.id||"")+'"'+(i.attr?' lay-attr="'+i.attr+'"':"")+">"+(i.title||"unnaming")+"</li>";return s[0]?s.before(r):n.append(r),o.append('<div class="layui-tab-item">'+(i.content||"")+"</div>"),f.hideTabMore(!0),f.tabAuto(),this},s.prototype.tabDelete=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabDelete(null,s),this},s.prototype.tabChange=function(t,i){var e=".layui-tab-title",l=a(".layui-tab[lay-filter="+t+"]"),n=l.children(e),s=n.find('>li[lay-id="'+i+'"]');return f.tabClick.call(s[0],null,null,s),this},s.prototype.tab=function(t){t=t||{},b.on("click",t.headerElem,function(i){var e=a(this).index();f.tabClick.call(this,i,e,null,t)})},s.prototype.progress=function(t,i){var e="layui-progress",l=a("."+e+"[lay-filter="+t+"]"),n=l.find("."+e+"-bar"),s=n.find("."+e+"-text");return n.css("width",i),s.text(i),this};var o=".layui-nav",r="layui-nav-item",c="layui-nav-bar",u="layui-nav-tree",d="layui-nav-child",y="layui-nav-more",h="layui-anim layui-anim-upbit",f={tabClick:function(t,i,s,o){o=o||{};var r=s||a(this),i=i||r.parent().children("li").index(r),c=o.headerElem?r.parent():r.parents(".layui-tab").eq(0),u=o.bodyElem?a(o.bodyElem):c.children(".layui-tab-content").children(".layui-tab-item"),d=r.find("a"),y=c.attr("lay-filter");"javascript:;"!==d.attr("href")&&"_blank"===d.attr("target")||(r.addClass(l).siblings().removeClass(l),u.eq(i).addClass(n).siblings().removeClass(n)),layui.event.call(this,e,"tab("+y+")",{elem:c,index:i})},tabDelete:function(t,i){var n=i||a(this).parent(),s=n.index(),o=n.parents(".layui-tab").eq(0),r=o.children(".layui-tab-content").children(".layui-tab-item"),c=o.attr("lay-filter");n.hasClass(l)&&(n.next()[0]?f.tabClick.call(n.next()[0],null,s+1):n.prev()[0]&&f.tabClick.call(n.prev()[0],null,s-1)),n.remove(),r.eq(s).remove(),setTimeout(function(){f.tabAuto()},50),layui.event.call(this,e,"tabDelete("+c+")",{elem:o,index:s})},tabAuto:function(){var t="layui-tab-more",e="layui-tab-bar",l="layui-tab-close",n=this;a(".layui-tab").each(function(){var s=a(this),o=s.children(".layui-tab-title"),r=(s.children(".layui-tab-content").children(".layui-tab-item"),'lay-stope="tabmore"'),c=a('<span class="layui-unselect layui-tab-bar" '+r+"><i "+r+' class="layui-icon"></i></span>');if(n===window&&8!=i.ie&&f.hideTabMore(!0),s.attr("lay-allowClose")&&o.find("li").each(function(){var t=a(this);if(!t.find("."+l)[0]){var i=a('<i class="layui-icon layui-unselect '+l+'">ဆ</i>');i.on("click",f.tabDelete),t.append(i)}}),"string"!=typeof s.attr("lay-unauto"))if(o.prop("scrollWidth")>o.outerWidth()+1){if(o.find("."+e)[0])return;o.append(c),s.attr("overflow",""),c.on("click",function(a){o[this.title?"removeClass":"addClass"](t),this.title=this.title?"":"收缩"})}else o.find("."+e).remove(),s.removeAttr("overflow")})},hideTabMore:function(t){var i=a(".layui-tab-title");t!==!0&&"tabmore"===a(t.target).attr("lay-stope")||(i.removeClass("layui-tab-more"),i.find(".layui-tab-bar").attr("title",""))},clickThis:function(){var t=a(this),i=t.parents(o),n=i.attr("lay-filter"),s=t.parent(),c=t.siblings("."+d),y="string"==typeof s.attr("lay-unselect");"javascript:;"!==t.attr("href")&&"_blank"===t.attr("target")||y||c[0]||(i.find("."+l).removeClass(l),s.addClass(l)),i.hasClass(u)&&(c.removeClass(h),c[0]&&(s["none"===c.css("display")?"addClass":"removeClass"](r+"ed"),"all"===i.attr("lay-shrink")&&s.siblings().removeClass(r+"ed"))),layui.event.call(this,e,"nav("+n+")",t)},collapse:function(){var t=a(this),i=t.find(".layui-colla-icon"),l=t.siblings(".layui-colla-content"),s=t.parents(".layui-collapse").eq(0),o=s.attr("lay-filter"),r="none"===l.css("display");if("string"==typeof s.attr("lay-accordion")){var c=s.children(".layui-colla-item").children("."+n);c.siblings(".layui-colla-title").children(".layui-colla-icon").html(""),c.removeClass(n)}l[r?"addClass":"removeClass"](n),i.html(r?"":""),layui.event.call(this,e,"collapse("+o+")",{title:t,content:l,show:r})}};s.prototype.init=function(t,e){var l=function(){return e?'[lay-filter="'+e+'"]':""}(),s={tab:function(){f.tabAuto.call({})},nav:function(){var t=200,e={},s={},p={},b=function(l,o,r){var c=a(this),f=c.find("."+d);o.hasClass(u)?l.css({top:c.position().top,height:c.children("a").outerHeight(),opacity:1}):(f.addClass(h),l.css({left:c.position().left+parseFloat(c.css("marginLeft")),top:c.position().top+c.height()-l.height()}),e[r]=setTimeout(function(){l.css({width:c.width(),opacity:1})},i.ie&&i.ie<10?0:t),clearTimeout(p[r]),"block"===f.css("display")&&clearTimeout(s[r]),s[r]=setTimeout(function(){f.addClass(n),c.find("."+y).addClass(y+"d")},300))};a(o+l).each(function(i){var l=a(this),o=a('<span class="'+c+'"></span>'),h=l.find("."+r);l.find("."+c)[0]||(l.append(o),h.on("mouseenter",function(){b.call(this,o,l,i)}).on("mouseleave",function(){l.hasClass(u)||(clearTimeout(s[i]),s[i]=setTimeout(function(){l.find("."+d).removeClass(n),l.find("."+y).removeClass(y+"d")},300))}),l.on("mouseleave",function(){clearTimeout(e[i]),p[i]=setTimeout(function(){l.hasClass(u)?o.css({height:0,top:o.position().top+o.height()/2,opacity:0}):o.css({width:0,left:o.position().left+o.width()/2,opacity:0})},t)})),h.find("a").each(function(){var t=a(this),i=(t.parent(),t.siblings("."+d));i[0]&&!t.children("."+y)[0]&&t.append('<span class="'+y+'"></span>'),t.off("click",f.clickThis).on("click",f.clickThis)})})},breadcrumb:function(){var t=".layui-breadcrumb";a(t+l).each(function(){var t=a(this),i="lay-separator",e=t.attr(i)||"/",l=t.find("a");l.next("span["+i+"]")[0]||(l.each(function(t){t!==l.length-1&&a(this).after("<span "+i+">"+e+"</span>")}),t.css("visibility","visible"))})},progress:function(){var t="layui-progress";a("."+t+l).each(function(){var i=a(this),e=i.find(".layui-progress-bar"),l=e.attr("lay-percent");e.css("width",function(){return/^.+\/.+$/.test(l)?100*new Function("return "+l)()+"%":l}()),i.attr("lay-showPercent")&&setTimeout(function(){e.html('<span class="'+t+'-text">'+l+"</span>")},350)})},collapse:function(){var t="layui-collapse";a("."+t+l).each(function(){var t=a(this).find(".layui-colla-item");t.each(function(){var t=a(this),i=t.find(".layui-colla-title"),e=t.find(".layui-colla-content"),l="none"===e.css("display");i.find(".layui-colla-icon").remove(),i.append('<i class="layui-icon layui-colla-icon">'+(l?"":"")+"</i>"),i.off("click",f.collapse).on("click",f.collapse)})})}};return s[t]?s[t]():layui.each(s,function(t,a){a()})},s.prototype.render=s.prototype.init;var p=new s,b=a(document);p.render();var v=".layui-tab-title li";b.on("click",v,f.tabClick),b.on("click",f.hideTabMore),a(window).on("resize",f.tabAuto),t(e,p)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,n=layui.hint(),o=layui.device(),a={config:{},set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,r,e,t)}},l=function(){var e=this;return{upload:function(t){e.upload.call(e,t)},reload:function(t){e.reload.call(e,t)},config:e.config}},r="upload",u="layui-upload-file",c="layui-upload-form",f="layui-upload-iframe",s="layui-upload-choose",p=function(e){var i=this;i.config=t.extend({},i.config,a.config,e),i.render()};p.prototype.config={accept:"images",exts:"",auto:!0,bindAction:"",url:"",field:"file",acceptMime:"",method:"post",data:{},drag:!0,size:0,number:0,multiple:!1},p.prototype.render=function(e){var i=this,e=i.config;e.elem=t(e.elem),e.bindAction=t(e.bindAction),i.file(),i.events()},p.prototype.file=function(){var e=this,i=e.config,n=e.elemFile=t(['<input class="'+u+'" type="file" accept="'+i.acceptMime+'" name="'+i.field+'"',i.multiple?" multiple":"",">"].join("")),a=i.elem.next();(a.hasClass(u)||a.hasClass(c))&&a.remove(),o.ie&&o.ie<10&&i.elem.wrap('<div class="layui-upload-wrap"></div>'),e.isFile()?(e.elemFile=i.elem,i.field=i.elem[0].name):i.elem.after(n),o.ie&&o.ie<10&&e.initIE()},p.prototype.initIE=function(){var e=this,i=e.config,n=t('<iframe id="'+f+'" class="'+f+'" name="'+f+'" frameborder="0"></iframe>'),o=t(['<form target="'+f+'" class="'+c+'" method="post" key="set-mine" enctype="multipart/form-data" action="'+i.url+'">',"</form>"].join(""));t("#"+f)[0]||t("body").append(n),i.elem.next().hasClass(c)||(e.elemFile.wrap(o),i.elem.next("."+c).append(function(){var e=[];return layui.each(i.data,function(t,i){i="function"==typeof i?i():i,e.push('<input type="hidden" name="'+t+'" value="'+i+'">')}),e.join("")}()))},p.prototype.msg=function(e){return i.msg(e,{icon:2,shift:6})},p.prototype.isFile=function(){var e=this.config.elem[0];if(e)return"input"===e.tagName.toLocaleLowerCase()&&"file"===e.type},p.prototype.preview=function(e){var t=this;window.FileReader&&layui.each(t.chooseFiles,function(t,i){var n=new FileReader;n.readAsDataURL(i),n.onload=function(){e&&e(t,i,this.result)}})},p.prototype.upload=function(e,i){var n,a=this,l=a.config,r=a.elemFile[0],u=function(){var i=0,n=0,o=e||a.files||a.chooseFiles||r.files,u=function(){l.multiple&&i+n===a.fileLength&&"function"==typeof l.allDone&&l.allDone({total:a.fileLength,successful:i,aborted:n})};layui.each(o,function(e,o){var r=new FormData;r.append(l.field,o),layui.each(l.data,function(e,t){t="function"==typeof t?t():t,r.append(e,t)}),t.ajax({url:l.url,type:"post",data:r,contentType:!1,processData:!1,dataType:"json",headers:l.headers||{},success:function(t){i++,d(e,t),u()},error:function(){n++,a.msg("请求上传接口出现异常"),m(e),u()},xhr:function(){var e=new XMLHttpRequest;return e.upload.addEventListener("progress",function(e){if(e.lengthComputable){var t=Math.floor(e.loaded/e.total*100);"function"==typeof l.progress&&l.progress(t,e)}}),e}})})},c=function(){var e=t("#"+f);a.elemFile.parent().submit(),clearInterval(p.timer),p.timer=setInterval(function(){var t,i=e.contents().find("body");try{t=i.text()}catch(n){a.msg("获取上传后的响应信息出现异常"),clearInterval(p.timer),m()}t&&(clearInterval(p.timer),i.html(""),d(0,t))},30)},d=function(e,t){if(a.elemFile.next("."+s).remove(),r.value="","object"!=typeof t)try{t=JSON.parse(t)}catch(i){return t={},a.msg("请对上传接口返回有效JSON")}"function"==typeof l.done&&l.done(t,e||0,function(e){a.upload(e)})},m=function(e){l.auto&&(r.value=""),"function"==typeof l.error&&l.error(e||0,function(e){a.upload(e)})},h=l.exts,v=function(){var t=[];return layui.each(e||a.chooseFiles,function(e,i){t.push(i.name)}),t}(),g={preview:function(e){a.preview(e)},upload:function(e,t){var i={};i[e]=t,a.upload(i)},pushFile:function(){return a.files=a.files||{},layui.each(a.chooseFiles,function(e,t){a.files[e]=t}),a.files},resetFile:function(e,t,i){var n=new File([t],i);a.files=a.files||{},a.files[e]=n}},y=function(){if("choose"!==i&&!l.auto||(l.choose&&l.choose(g),"choose"!==i))return l.before&&l.before(g),o.ie?o.ie>9?u():c():void u()};if(v=0===v.length?r.value.match(/[^\/\\]+\..+/g)||[]||"":v,0!==v.length){switch(l.accept){case"file":if(h&&!RegExp("\\w\\.("+h+")$","i").test(escape(v)))return a.msg("选择的文件中包含不支持的格式"),r.value="";break;case"video":if(!RegExp("\\w\\.("+(h||"avi|mp4|wma|rmvb|rm|flash|3gp|flv")+")$","i").test(escape(v)))return a.msg("选择的视频中包含不支持的格式"),r.value="";break;case"audio":if(!RegExp("\\w\\.("+(h||"mp3|wav|mid")+")$","i").test(escape(v)))return a.msg("选择的音频中包含不支持的格式"),r.value="";break;default:if(layui.each(v,function(e,t){RegExp("\\w\\.("+(h||"jpg|png|gif|bmp|jpeg$")+")","i").test(escape(t))||(n=!0)}),n)return a.msg("选择的图片中包含不支持的格式"),r.value=""}if(a.fileLength=function(){var t=0,i=e||a.files||a.chooseFiles||r.files;return layui.each(i,function(){t++}),t}(),l.number&&a.fileLength>l.number)return a.msg("同时最多只能上传的数量为:"+l.number);if(l.size>0&&!(o.ie&&o.ie<10)){var F;if(layui.each(a.chooseFiles,function(e,t){if(t.size>1024*l.size){var i=l.size/1024;i=i>=1?i.toFixed(2)+"MB":l.size+"KB",r.value="",F=i}}),F)return a.msg("文件不能超过"+F)}y()}},p.prototype.reload=function(e){e=e||{},delete e.elem,delete e.bindAction;var i=this,e=i.config=t.extend({},i.config,a.config,e),n=e.elem.next();n.attr({name:e.name,accept:e.acceptMime,multiple:e.multiple})},p.prototype.events=function(){var e=this,i=e.config,a=function(t){e.chooseFiles={},layui.each(t,function(t,i){var n=(new Date).getTime();e.chooseFiles[n+"-"+t]=i})},l=function(t,n){var o=e.elemFile,a=t.length>1?t.length+"个文件":(t[0]||{}).name||o[0].value.match(/[^\/\\]+\..+/g)||[]||"";o.next().hasClass(s)&&o.next().remove(),e.upload(null,"choose"),e.isFile()||i.choose||o.after('<span class="layui-inline '+s+'">'+a+"</span>")};i.elem.off("upload.start").on("upload.start",function(){var o=t(this),a=o.attr("lay-data");if(a)try{a=new Function("return "+a)(),e.config=t.extend({},i,a)}catch(l){n.error("Upload element property lay-data configuration item has a syntax error: "+a)}e.config.item=o,e.elemFile[0].click()}),o.ie&&o.ie<10||i.elem.off("upload.over").on("upload.over",function(){var e=t(this);e.attr("lay-over","")}).off("upload.leave").on("upload.leave",function(){var e=t(this);e.removeAttr("lay-over")}).off("upload.drop").on("upload.drop",function(n,o){var r=t(this),u=o.originalEvent.dataTransfer.files||[];r.removeAttr("lay-over"),a(u),i.auto?e.upload(u):l(u)}),e.elemFile.off("upload.change").on("upload.change",function(){var t=this.files||[];a(t),i.auto?e.upload():l(t)}),i.bindAction.off("upload.action").on("upload.action",function(){e.upload()}),i.elem.data("haveEvents")||(e.elemFile.on("change",function(){t(this).trigger("upload.change")}),i.elem.on("click",function(){e.isFile()||t(this).trigger("upload.start")}),i.drag&&i.elem.on("dragover",function(e){e.preventDefault(),t(this).trigger("upload.over")}).on("dragleave",function(e){t(this).trigger("upload.leave")}).on("drop",function(e){e.preventDefault(),t(this).trigger("upload.drop",e)}),i.bindAction.on("click",function(){t(this).trigger("upload.action")}),i.elem.data("haveEvents",!0))},a.render=function(e){var t=new p(e);return l.call(t)},e(r,a)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,t={config:{},index:layui.slider?layui.slider.index+1e4:0,set:function(e){var t=this;return t.config=i.extend({},t.config,e),t},on:function(e,i){return layui.onevent.call(this,n,e,i)}},a=function(){var e=this,i=e.config;return{setValue:function(i,t){return e.slide("set",i,t||0)},config:i}},n="slider",l="layui-disabled",s="layui-slider",r="layui-slider-bar",o="layui-slider-wrap",u="layui-slider-wrap-btn",d="layui-slider-tips",v="layui-slider-input",c="layui-slider-input-txt",m="layui-slider-input-btn",p="layui-slider-hover",f=function(e){var a=this;a.index=++t.index,a.config=i.extend({},a.config,t.config,e),a.render()};f.prototype.config={type:"default",min:0,max:100,value:0,step:1,showstep:!1,tips:!0,input:!1,range:!1,height:200,disabled:!1,theme:"#009688"},f.prototype.render=function(){var e=this,t=e.config;if(t.step<1&&(t.step=1),t.max<t.min&&(t.max=t.min+t.step),t.range){t.value="object"==typeof t.value?t.value:[t.min,t.value];var a=Math.min(t.value[0],t.value[1]),n=Math.max(t.value[0],t.value[1]);t.value[0]=a>t.min?a:t.min,t.value[1]=n>t.min?n:t.min,t.value[0]=t.value[0]>t.max?t.max:t.value[0],t.value[1]=t.value[1]>t.max?t.max:t.value[1];var r=Math.floor((t.value[0]-t.min)/(t.max-t.min)*100),v=Math.floor((t.value[1]-t.min)/(t.max-t.min)*100),m=v-r+"%";r+="%",v+="%"}else{"object"==typeof t.value&&(t.value=Math.min.apply(null,t.value)),t.value<t.min&&(t.value=t.min),t.value>t.max&&(t.value=t.max);var m=Math.floor((t.value-t.min)/(t.max-t.min)*100)+"%"}var p=t.disabled?"#c2c2c2":t.theme,f='<div class="layui-slider '+("vertical"===t.type?"layui-slider-vertical":"")+'">'+(t.tips?'<div class="layui-slider-tips"></div>':"")+'<div class="layui-slider-bar" style="background:'+p+"; "+("vertical"===t.type?"height":"width")+":"+m+";"+("vertical"===t.type?"bottom":"left")+":"+(r||0)+';"></div><div class="layui-slider-wrap" style="'+("vertical"===t.type?"bottom":"left")+":"+(r||m)+';"><div class="layui-slider-wrap-btn" style="border: 2px solid '+p+';"></div></div>'+(t.range?'<div class="layui-slider-wrap" style="'+("vertical"===t.type?"bottom":"left")+":"+v+';"><div class="layui-slider-wrap-btn" style="border: 2px solid '+p+';"></div></div>':"")+"</div>",h=i(t.elem),y=h.next("."+s);if(y[0]&&y.remove(),e.elemTemp=i(f),t.range?(e.elemTemp.find("."+o).eq(0).data("value",t.value[0]),e.elemTemp.find("."+o).eq(1).data("value",t.value[1])):e.elemTemp.find("."+o).data("value",t.value),h.html(e.elemTemp),"vertical"===t.type&&e.elemTemp.height(t.height+"px"),t.showstep){for(var g=(t.max-t.min)/t.step,b="",x=1;x<g+1;x++){var T=100*x/g;T<100&&(b+='<div class="layui-slider-step" style="'+("vertical"===t.type?"bottom":"left")+":"+T+'%"></div>')}e.elemTemp.append(b)}if(t.input&&!t.range){var w=i('<div class="layui-slider-input layui-input"><div class="layui-slider-input-txt"><input type="text" class="layui-input"></div><div class="layui-slider-input-btn"><i class="layui-icon layui-icon-up"></i><i class="layui-icon layui-icon-down"></i></div></div>');h.css("position","relative"),h.append(w),h.find("."+c).children("input").val(t.value),"vertical"===t.type?w.css({left:0,top:-48}):e.elemTemp.css("margin-right",w.outerWidth()+15)}t.disabled?(e.elemTemp.addClass(l),e.elemTemp.find("."+u).addClass(l)):e.slide(),e.elemTemp.find("."+u).on("mouseover",function(){var a="vertical"===t.type?t.height:e.elemTemp[0].offsetWidth,n=e.elemTemp.find("."+o),l="vertical"===t.type?a-i(this).parent()[0].offsetTop-n.height():i(this).parent()[0].offsetLeft,s=l/a*100,r=i(this).parent().data("value"),u=t.setTips?t.setTips(r):r;e.elemTemp.find("."+d).html(u),"vertical"===t.type?e.elemTemp.find("."+d).css({bottom:s+"%","margin-bottom":"20px",display:"inline-block"}):e.elemTemp.find("."+d).css({left:s+"%",display:"inline-block"})}).on("mouseout",function(){e.elemTemp.find("."+d).css("display","none")})},f.prototype.slide=function(e,t,a){var n=this,l=n.config,s=n.elemTemp,f=function(){return"vertical"===l.type?l.height:s[0].offsetWidth},h=s.find("."+o),y=s.next("."+v),g=y.children("."+c).children("input").val(),b=100/((l.max-l.min)/Math.ceil(l.step)),x=function(e,i){e=Math.ceil(e)*b>100?Math.ceil(e)*b:Math.round(e)*b,e=e>100?100:e,h.eq(i).css("vertical"===l.type?"bottom":"left",e+"%");var t=T(h[0].offsetLeft),a=l.range?T(h[1].offsetLeft):0;"vertical"===l.type?(s.find("."+d).css({bottom:e+"%","margin-bottom":"20px"}),t=T(f()-h[0].offsetTop-h.height()),a=l.range?T(f()-h[1].offsetTop-h.height()):0):s.find("."+d).css("left",e+"%"),t=t>100?100:t,a=a>100?100:a;var n=Math.min(t,a),o=Math.abs(t-a);"vertical"===l.type?s.find("."+r).css({height:o+"%",bottom:n+"%"}):s.find("."+r).css({width:o+"%",left:n+"%"});var u=l.min+Math.round((l.max-l.min)*e/100);if(g=u,y.children("."+c).children("input").val(g),h.eq(i).data("value",u),u=l.setTips?l.setTips(u):u,s.find("."+d).html(u),l.range){var v=[h.eq(0).data("value"),h.eq(1).data("value")];v[0]>v[1]&&v.reverse()}l.change&&l.change(l.range?v:u)},T=function(e){var i=e/f()*100/b,t=Math.round(i)*b;return e==f()&&(t=Math.ceil(i)*b),t},w=i(['<div class="layui-auxiliar-moving" id="LAY-slider-moving"></div'].join("")),M=function(e,t){var a=function(){t&&t(),w.remove()};i("#LAY-slider-moving")[0]||i("body").append(w),w.on("mousemove",e),w.on("mouseup",a).on("mouseleave",a)};if("set"===e)return x(t,a);s.find("."+u).each(function(e){var t=i(this);t.on("mousedown",function(i){i=i||window.event;var a=t.parent()[0].offsetLeft,n=i.clientX;"vertical"===l.type&&(a=f()-t.parent()[0].offsetTop-h.height(),n=i.clientY);var r=function(i){i=i||window.event;var r=a+("vertical"===l.type?n-i.clientY:i.clientX-n);r<0&&(r=0),r>f()&&(r=f());var o=r/f()*100/b;x(o,e),t.addClass(p),s.find("."+d).show(),i.preventDefault()},o=function(){t.removeClass(p),s.find("."+d).hide()};M(r,o)})}),s.on("click",function(e){var t=i("."+u);if(!t.is(event.target)&&0===t.has(event.target).length&&t.length){var a,n="vertical"===l.type?f()-e.clientY+i(this).offset().top:e.clientX-i(this).offset().left;n<0&&(n=0),n>f()&&(n=f());var s=n/f()*100/b;a=l.range?"vertical"===l.type?Math.abs(n-parseInt(i(h[0]).css("bottom")))>Math.abs(n-parseInt(i(h[1]).css("bottom")))?1:0:Math.abs(n-h[0].offsetLeft)>Math.abs(n-h[1].offsetLeft)?1:0:0,x(s,a),e.preventDefault()}}),y.hover(function(){var e=i(this);e.children("."+m).fadeIn("fast")},function(){var e=i(this);e.children("."+m).fadeOut("fast")}),y.children("."+m).children("i").each(function(e){i(this).on("click",function(){g=1==e?g-l.step<l.min?l.min:Number(g)-l.step:Number(g)+l.step>l.max?l.max:Number(g)+l.step;var i=(g-l.min)/(l.max-l.min)*100/b;x(i,0)})});var q=function(){var e=this.value;e=isNaN(e)?0:e,e=e<l.min?l.min:e,e=e>l.max?l.max:e,this.value=e;var i=(e-l.min)/(l.max-l.min)*100/b;x(i,0)};y.children("."+c).children("input").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),q.call(this))}).on("change",q)},f.prototype.events=function(){var e=this;e.config},t.render=function(e){var i=new f(e);return a.call(i)},e(n,t)});layui.define("jquery",function(e){"use strict";var i=layui.jquery,o={config:{},index:layui.colorpicker?layui.colorpicker.index+1e4:0,set:function(e){var o=this;return o.config=i.extend({},o.config,e),o},on:function(e,i){return layui.onevent.call(this,"colorpicker",e,i)}},r=function(){var e=this,i=e.config;return{config:i}},t="colorpicker",n="layui-show",l="layui-colorpicker",c=".layui-colorpicker-main",a="layui-icon-down",s="layui-icon-close",f="layui-colorpicker-trigger-span",d="layui-colorpicker-trigger-i",u="layui-colorpicker-side",p="layui-colorpicker-side-slider",g="layui-colorpicker-basis",v="layui-colorpicker-alpha-bgcolor",h="layui-colorpicker-alpha-slider",m="layui-colorpicker-basis-cursor",b="layui-colorpicker-main-input",k=function(e){var i={h:0,s:0,b:0},o=Math.min(e.r,e.g,e.b),r=Math.max(e.r,e.g,e.b),t=r-o;return i.b=r,i.s=0!=r?255*t/r:0,0!=i.s?e.r==r?i.h=(e.g-e.b)/t:e.g==r?i.h=2+(e.b-e.r)/t:i.h=4+(e.r-e.g)/t:i.h=-1,r==o&&(i.h=0),i.h*=60,i.h<0&&(i.h+=360),i.s*=100/255,i.b*=100/255,i},y=function(e){var e=e.indexOf("#")>-1?e.substring(1):e;if(3==e.length){var i=e.split("");e=i[0]+i[0]+i[1]+i[1]+i[2]+i[2]}e=parseInt(e,16);var o={r:e>>16,g:(65280&e)>>8,b:255&e};return k(o)},x=function(e){var i={},o=e.h,r=255*e.s/100,t=255*e.b/100;if(0==r)i.r=i.g=i.b=t;else{var n=t,l=(255-r)*t/255,c=(n-l)*(o%60)/60;360==o&&(o=0),o<60?(i.r=n,i.b=l,i.g=l+c):o<120?(i.g=n,i.b=l,i.r=n-c):o<180?(i.g=n,i.r=l,i.b=l+c):o<240?(i.b=n,i.r=l,i.g=n-c):o<300?(i.b=n,i.g=l,i.r=l+c):o<360?(i.r=n,i.g=l,i.b=n-c):(i.r=0,i.g=0,i.b=0)}return{r:Math.round(i.r),g:Math.round(i.g),b:Math.round(i.b)}},C=function(e){var o=x(e),r=[o.r.toString(16),o.g.toString(16),o.b.toString(16)];return i.each(r,function(e,i){1==i.length&&(r[e]="0"+i)}),r.join("")},P=function(e){var i=/[0-9]{1,3}/g,o=e.match(i)||[];return{r:o[0],g:o[1],b:o[2]}},B=i(window),w=i(document),D=function(e){var r=this;r.index=++o.index,r.config=i.extend({},r.config,o.config,e),r.render()};D.prototype.config={color:"",size:null,alpha:!1,format:"hex",predefine:!1,colors:["#009688","#5FB878","#1E9FFF","#FF5722","#FFB800","#01AAED","#999","#c00","#ff8c00","#ffd700","#90ee90","#00ced1","#1e90ff","#c71585","rgb(0, 186, 189)","rgb(255, 120, 0)","rgb(250, 212, 0)","#393D49","rgba(0,0,0,.5)","rgba(255, 69, 0, 0.68)","rgba(144, 240, 144, 0.5)","rgba(31, 147, 255, 0.73)"]},D.prototype.render=function(){var e=this,o=e.config,r=i(['<div class="layui-unselect layui-colorpicker">',"<span "+("rgb"==o.format&&o.alpha?'class="layui-colorpicker-trigger-bgcolor"':"")+">",'<span class="layui-colorpicker-trigger-span" ','lay-type="'+("rgb"==o.format?o.alpha?"rgba":"torgb":"")+'" ','style="'+function(){var e="";return o.color?(e=o.color,(o.color.match(/[0-9]{1,3}/g)||[]).length>3&&(o.alpha&&"rgb"==o.format||(e="#"+C(k(P(o.color))))),"background: "+e):e}()+'">','<i class="layui-icon layui-colorpicker-trigger-i '+(o.color?a:s)+'"></i>',"</span>","</span>","</div>"].join("")),t=i(o.elem);o.size&&r.addClass("layui-colorpicker-"+o.size),t.addClass("layui-inline").html(e.elemColorBox=r),e.color=e.elemColorBox.find("."+f)[0].style.background,e.events()},D.prototype.renderPicker=function(){var e=this,o=e.config,r=e.elemColorBox[0],t=e.elemPicker=i(['<div id="layui-colorpicker'+e.index+'" data-index="'+e.index+'" class="layui-anim layui-anim-upbit layui-colorpicker-main">','<div class="layui-colorpicker-main-wrapper">','<div class="layui-colorpicker-basis">','<div class="layui-colorpicker-basis-white"></div>','<div class="layui-colorpicker-basis-black"></div>','<div class="layui-colorpicker-basis-cursor"></div>',"</div>",'<div class="layui-colorpicker-side">','<div class="layui-colorpicker-side-slider"></div>',"</div>","</div>",'<div class="layui-colorpicker-main-alpha '+(o.alpha?n:"")+'">','<div class="layui-colorpicker-alpha-bgcolor">','<div class="layui-colorpicker-alpha-slider"></div>',"</div>","</div>",function(){if(o.predefine){var e=['<div class="layui-colorpicker-main-pre">'];return layui.each(o.colors,function(i,o){e.push(['<div class="layui-colorpicker-pre'+((o.match(/[0-9]{1,3}/g)||[]).length>3?" layui-colorpicker-pre-isalpha":"")+'">','<div style="background:'+o+'"></div>',"</div>"].join(""))}),e.push("</div>"),e.join("")}return""}(),'<div class="layui-colorpicker-main-input">','<div class="layui-inline">','<input type="text" class="layui-input">',"</div>",'<div class="layui-btn-container">','<button class="layui-btn layui-btn-primary layui-btn-sm" colorpicker-events="clear">清空</button>','<button class="layui-btn layui-btn-sm" colorpicker-events="confirm">确定</button>',"</div","</div>","</div>"].join(""));e.elemColorBox.find("."+f)[0];i(c)[0]&&i(c).data("index")==e.index?e.removePicker(D.thisElemInd):(e.removePicker(D.thisElemInd),i("body").append(t)),D.thisElemInd=e.index,D.thisColor=r.style.background,e.position(),e.pickerEvents()},D.prototype.removePicker=function(e){var o=this;o.config;return i("#layui-colorpicker"+(e||o.index)).remove(),o},D.prototype.position=function(){var e=this,i=e.config,o=e.bindElem||e.elemColorBox[0],r=e.elemPicker[0],t=o.getBoundingClientRect(),n=r.offsetWidth,l=r.offsetHeight,c=function(e){return e=e?"scrollLeft":"scrollTop",document.body[e]|document.documentElement[e]},a=function(e){return document.documentElement[e?"clientWidth":"clientHeight"]},s=5,f=t.left,d=t.bottom;f-=(n-o.offsetWidth)/2,d+=s,f+n+s>a("width")?f=a("width")-n-s:f<s&&(f=s),d+l+s>a()&&(d=t.top>l?t.top-l:a()-l,d-=2*s),i.position&&(r.style.position=i.position),r.style.left=f+("fixed"===i.position?0:c(1))+"px",r.style.top=d+("fixed"===i.position?0:c())+"px"},D.prototype.val=function(){var e=this,i=(e.config,e.elemColorBox.find("."+f)),o=e.elemPicker.find("."+b),r=i[0],t=r.style.backgroundColor;if(t){var n=k(P(t)),l=i.attr("lay-type");if(e.select(n.h,n.s,n.b),"torgb"===l&&o.find("input").val(t),"rgba"===l){var c=P(t);if(3==(t.match(/[0-9]{1,3}/g)||[]).length)o.find("input").val("rgba("+c.r+", "+c.g+", "+c.b+", 1)"),e.elemPicker.find("."+h).css("left",280);else{o.find("input").val(t);var a=280*t.slice(t.lastIndexOf(",")+1,t.length-1);e.elemPicker.find("."+h).css("left",a)}e.elemPicker.find("."+v)[0].style.background="linear-gradient(to right, rgba("+c.r+", "+c.g+", "+c.b+", 0), rgb("+c.r+", "+c.g+", "+c.b+"))"}}else e.select(0,100,100),o.find("input").val(""),e.elemPicker.find("."+v)[0].style.background="",e.elemPicker.find("."+h).css("left",280)},D.prototype.side=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=r.attr("lay-type"),n=e.elemPicker.find("."+u),l=e.elemPicker.find("."+p),c=e.elemPicker.find("."+g),y=e.elemPicker.find("."+m),C=e.elemPicker.find("."+v),w=e.elemPicker.find("."+h),D=l[0].offsetTop/180*360,E=100-(y[0].offsetTop+3)/180*100,H=(y[0].offsetLeft+3)/260*100,W=Math.round(w[0].offsetLeft/280*100)/100,j=e.elemColorBox.find("."+d),F=e.elemPicker.find(".layui-colorpicker-pre").children("div"),L=function(i,n,l,c){e.select(i,n,l);var f=x({h:i,s:n,b:l});if(j.addClass(a).removeClass(s),r[0].style.background="rgb("+f.r+", "+f.g+", "+f.b+")","torgb"===t&&e.elemPicker.find("."+b).find("input").val("rgb("+f.r+", "+f.g+", "+f.b+")"),"rgba"===t){var d=0;d=280*c,w.css("left",d),e.elemPicker.find("."+b).find("input").val("rgba("+f.r+", "+f.g+", "+f.b+", "+c+")"),r[0].style.background="rgba("+f.r+", "+f.g+", "+f.b+", "+c+")",C[0].style.background="linear-gradient(to right, rgba("+f.r+", "+f.g+", "+f.b+", 0), rgb("+f.r+", "+f.g+", "+f.b+"))"}o.change&&o.change(e.elemPicker.find("."+b).find("input").val())},M=i(['<div class="layui-auxiliar-moving" id="LAY-colorpicker-moving"></div'].join("")),Y=function(e){i("#LAY-colorpicker-moving")[0]||i("body").append(M),M.on("mousemove",e),M.on("mouseup",function(){M.remove()}).on("mouseleave",function(){M.remove()})};l.on("mousedown",function(e){var i=this.offsetTop,o=e.clientY,r=function(e){var r=i+(e.clientY-o),t=n[0].offsetHeight;r<0&&(r=0),r>t&&(r=t);var l=r/180*360;D=l,L(l,H,E,W),e.preventDefault()};Y(r),e.preventDefault()}),n.on("click",function(e){var o=e.clientY-i(this).offset().top;o<0&&(o=0),o>this.offsetHeight&&(o=this.offsetHeight);var r=o/180*360;D=r,L(r,H,E,W),e.preventDefault()}),y.on("mousedown",function(e){var i=this.offsetTop,o=this.offsetLeft,r=e.clientY,t=e.clientX,n=function(e){var n=i+(e.clientY-r),l=o+(e.clientX-t),a=c[0].offsetHeight-3,s=c[0].offsetWidth-3;n<-3&&(n=-3),n>a&&(n=a),l<-3&&(l=-3),l>s&&(l=s);var f=(l+3)/260*100,d=100-(n+3)/180*100;E=d,H=f,L(D,f,d,W),e.preventDefault()};layui.stope(e),Y(n),e.preventDefault()}),c.on("mousedown",function(e){var o=e.clientY-i(this).offset().top-3+B.scrollTop(),r=e.clientX-i(this).offset().left-3+B.scrollLeft();o<-3&&(o=-3),o>this.offsetHeight-3&&(o=this.offsetHeight-3),r<-3&&(r=-3),r>this.offsetWidth-3&&(r=this.offsetWidth-3);var t=(r+3)/260*100,n=100-(o+3)/180*100;E=n,H=t,L(D,t,n,W),e.preventDefault(),y.trigger(e,"mousedown")}),w.on("mousedown",function(e){var i=this.offsetLeft,o=e.clientX,r=function(e){var r=i+(e.clientX-o),t=C[0].offsetWidth;r<0&&(r=0),r>t&&(r=t);var n=Math.round(r/280*100)/100;W=n,L(D,H,E,n),e.preventDefault()};Y(r),e.preventDefault()}),C.on("click",function(e){var o=e.clientX-i(this).offset().left;o<0&&(o=0),o>this.offsetWidth&&(o=this.offsetWidth);var r=Math.round(o/280*100)/100;W=r,L(D,H,E,r),e.preventDefault()}),F.each(function(){i(this).on("click",function(){i(this).parent(".layui-colorpicker-pre").addClass("selected").siblings().removeClass("selected");var e,o=this.style.backgroundColor,r=k(P(o)),t=o.slice(o.lastIndexOf(",")+1,o.length-1);D=r.h,H=r.s,E=r.b,3==(o.match(/[0-9]{1,3}/g)||[]).length&&(t=1),W=t,e=280*t,L(r.h,r.s,r.b,t)})})},D.prototype.select=function(e,i,o,r){var t=this,n=(t.config,C({h:e,s:100,b:100})),l=C({h:e,s:i,b:o}),c=e/360*180,a=180-o/100*180-3,s=i/100*260-3;t.elemPicker.find("."+p).css("top",c),t.elemPicker.find("."+g)[0].style.background="#"+n,t.elemPicker.find("."+m).css({top:a,left:s}),"change"!==r&&t.elemPicker.find("."+b).find("input").val("#"+l)},D.prototype.pickerEvents=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f),t=e.elemPicker.find("."+b+" input"),n={clear:function(i){r[0].style.background="",e.elemColorBox.find("."+d).removeClass(a).addClass(s),e.color="",o.done&&o.done(""),e.removePicker()},confirm:function(i,n){var l=t.val(),c=l,f={};if(l.indexOf(",")>-1){if(f=k(P(l)),e.select(f.h,f.s,f.b),r[0].style.background=c="#"+C(f),(l.match(/[0-9]{1,3}/g)||[]).length>3&&"rgba"===r.attr("lay-type")){var u=280*l.slice(l.lastIndexOf(",")+1,l.length-1);e.elemPicker.find("."+h).css("left",u),r[0].style.background=l,c=l}}else f=y(l),r[0].style.background=c="#"+C(f),e.elemColorBox.find("."+d).removeClass(s).addClass(a);return"change"===n?(e.select(f.h,f.s,f.b,n),void(o.change&&o.change(c))):(e.color=l,o.done&&o.done(l),void e.removePicker())}};e.elemPicker.on("click","*[colorpicker-events]",function(){var e=i(this),o=e.attr("colorpicker-events");n[o]&&n[o].call(this,e)}),t.on("keyup",function(e){var o=i(this);n.confirm.call(this,o,13===e.keyCode?null:"change")})},D.prototype.events=function(){var e=this,o=e.config,r=e.elemColorBox.find("."+f);e.elemColorBox.on("click",function(){e.renderPicker(),i(c)[0]&&(e.val(),e.side())}),o.elem[0]&&!e.elemColorBox[0].eventHandler&&(w.on("click",function(o){if(!i(o.target).hasClass(l)&&!i(o.target).parents("."+l)[0]&&!i(o.target).hasClass(c.replace(/\./g,""))&&!i(o.target).parents(c)[0]&&e.elemPicker){if(e.color){var t=k(P(e.color));e.select(t.h,t.s,t.b)}else e.elemColorBox.find("."+d).removeClass(a).addClass(s);r[0].style.background=e.color||"",e.removePicker()}}),B.on("resize",function(){return!(!e.elemPicker||!i(c)[0])&&void e.position()}),e.elemColorBox[0].eventHandler=!0)},o.render=function(e){var i=new D(e);return r.call(i)},e(t,o)});layui.define("layer",function(e){"use strict";var t=layui.$,i=layui.layer,a=layui.hint(),n=layui.device(),l="form",r=".layui-form",s="layui-this",o="layui-hide",c="layui-disabled",u=function(){this.config={verify:{required:[/[\S]+/,"必填项不能为空"],phone:[/^1\d{10}$/,"请输入正确的手机号"],email:[/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/,"邮箱格式不正确"],url:[/(^#)|(^http(s*):\/\/[^\s]+\.[^\s]+)/,"链接格式不正确"],number:function(e){if(!e||isNaN(e))return"只能填写数字"},date:[/^(\d{4})[-\/](\d{1}|0\d{1}|1[0-2])([-\/](\d{1}|0\d{1}|[1-2][0-9]|3[0-1]))*$/,"日期格式不正确"],identity:[/(^\d{15}$)|(^\d{17}(x|X|\d)$)/,"请输入正确的身份证号"]}}};u.prototype.set=function(e){var i=this;return t.extend(!0,i.config,e),i},u.prototype.verify=function(e){var i=this;return t.extend(!0,i.config.verify,e),i},u.prototype.on=function(e,t){return layui.onevent.call(this,l,e,t)},u.prototype.val=function(e,i){var a=this,n=t(r+'[lay-filter="'+e+'"]');return n.each(function(e,a){var n=t(this);layui.each(i,function(e,t){var i,a=n.find('[name="'+e+'"]');a[0]&&(i=a[0].type,"checkbox"===i?a[0].checked=t:"radio"===i?a.each(function(){this.value==t&&(this.checked=!0)}):a.val(t))})}),f.render(null,e),a.getValue(e)},u.prototype.getValue=function(e,i){i=i||t(r+'[lay-filter="'+e+'"]').eq(0);var a={},n={},l=i.find("input,select,textarea");return layui.each(l,function(e,t){if(t.name=(t.name||"").replace(/^\s*|\s*&/,""),t.name){if(/^.*\[\]$/.test(t.name)){var i=t.name.match(/^(.*)\[\]$/g)[0];a[i]=0|a[i],t.name=t.name.replace(/^(.*)\[\]$/,"$1["+a[i]++ +"]")}/^checkbox|radio$/.test(t.type)&&!t.checked||(n[t.name]=t.value)}}),n},u.prototype.render=function(e,i){var n=this,u=t(r+function(){return i?'[lay-filter="'+i+'"]':""}()),d={select:function(){var e,i="请选择",a="layui-form-select",n="layui-select-title",r="layui-select-none",d="",f=u.find("select"),v=function(i,l){t(i.target).parent().hasClass(n)&&!l||(t("."+a).removeClass(a+"ed "+a+"up"),e&&d&&e.val(d)),e=null},y=function(i,u,f){var y,p=t(this),m=i.find("."+n),k=m.find("input"),g=i.find("dl"),x=g.children("dd"),b=this.selectedIndex;if(!u){var C=function(){var e=i.offset().top+i.outerHeight()+5-h.scrollTop(),t=g.outerHeight();b=p[0].selectedIndex,i.addClass(a+"ed"),x.removeClass(o),y=null,x.eq(b).addClass(s).siblings().removeClass(s),e+t>h.height()&&e>=t&&i.addClass(a+"up"),T()},w=function(e){i.removeClass(a+"ed "+a+"up"),k.blur(),y=null,e||$(k.val(),function(e){var i=p[0].selectedIndex;e&&(d=t(p[0].options[i]).html(),0===i&&d===k.attr("placeholder")&&(d=""),k.val(d||""))})},T=function(){var e=g.children("dd."+s);if(e[0]){var t=e.position().top,i=g.height(),a=e.height();t>i&&g.scrollTop(t+g.scrollTop()-i+a-5),t<0&&g.scrollTop(t+g.scrollTop()-5)}};m.on("click",function(e){i.hasClass(a+"ed")?w():(v(e,!0),C()),g.find("."+r).remove()}),m.find(".layui-edge").on("click",function(){k.focus()}),k.on("keyup",function(e){var t=e.keyCode;9===t&&C()}).on("keydown",function(e){var t=e.keyCode;9===t&&w();var i=function(t,a){var n,l;e.preventDefault();var r=function(){var e=g.children("dd."+s);if(g.children("dd."+o)[0]&&"next"===t){var i=g.children("dd:not(."+o+",."+c+")"),n=i.eq(0).index();if(n>=0&&n<e.index()&&!i.hasClass(s))return i.eq(0).prev()[0]?i.eq(0).prev():g.children(":last")}return a&&a[0]?a:y&&y[0]?y:e}();return l=r[t](),n=r[t]("dd:not(."+o+")"),l[0]?(y=r[t](),n[0]&&!n.hasClass(c)||!y[0]?(n.addClass(s).siblings().removeClass(s),void T()):i(t,y)):y=null};38===t&&i("prev"),40===t&&i("next"),13===t&&(e.preventDefault(),g.children("dd."+s).trigger("click"))});var $=function(e,i,a){var n=0;layui.each(x,function(){var i=t(this),l=i.text(),r=l.indexOf(e)===-1;(""===e||"blur"===a?e!==l:r)&&n++,"keyup"===a&&i[r?"addClass":"removeClass"](o)});var l=n===x.length;return i(l),l},q=function(e){var t=this.value,i=e.keyCode;return 9!==i&&13!==i&&37!==i&&38!==i&&39!==i&&40!==i&&($(t,function(e){e?g.find("."+r)[0]||g.append('<p class="'+r+'">无匹配项</p>'):g.find("."+r).remove()},"keyup"),""===t&&g.find("."+r).remove(),void T())};f&&k.on("keyup",q).on("blur",function(i){var a=p[0].selectedIndex;e=k,d=t(p[0].options[a]).html(),0===a&&d===k.attr("placeholder")&&(d=""),setTimeout(function(){$(k.val(),function(e){d||k.val("")},"blur")},200)}),x.on("click",function(){var e=t(this),a=e.attr("lay-value"),n=p.attr("lay-filter");return!e.hasClass(c)&&(e.hasClass("layui-select-tips")?k.val(""):(k.val(e.text()),e.addClass(s)),e.siblings().removeClass(s),p.val(a).removeClass("layui-form-danger"),layui.event.call(this,l,"select("+n+")",{elem:p[0],value:a,othis:i}),w(!0),!1)}),i.find("dl>dt").on("click",function(e){return!1}),t(document).off("click",v).on("click",v)}};f.each(function(e,l){var r=t(this),o=r.next("."+a),u=this.disabled,d=l.value,f=t(l.options[l.selectedIndex]),v=l.options[0];if("string"==typeof r.attr("lay-ignore"))return r.show();var h="string"==typeof r.attr("lay-search"),p=v?v.value?i:v.innerHTML||i:i,m=t(['<div class="'+(h?"":"layui-unselect ")+a,(u?" layui-select-disabled":"")+'">','<div class="'+n+'">','<input type="text" placeholder="'+p+'" '+('value="'+(d?f.html():"")+'"')+(h?"":" readonly")+' class="layui-input'+(h?"":" layui-unselect")+(u?" "+c:"")+'">','<i class="layui-edge"></i></div>','<dl class="layui-anim layui-anim-upbit'+(r.find("optgroup")[0]?" layui-select-group":"")+'">',function(e){var t=[];return layui.each(e,function(e,a){0!==e||a.value?"optgroup"===a.tagName.toLowerCase()?t.push("<dt>"+a.label+"</dt>"):t.push('<dd lay-value="'+a.value+'" class="'+(d===a.value?s:"")+(a.disabled?" "+c:"")+'">'+a.innerHTML+"</dd>"):t.push('<dd lay-value="" class="layui-select-tips">'+(a.innerHTML||i)+"</dd>")}),0===t.length&&t.push('<dd lay-value="" class="'+c+'">没有选项</dd>'),t.join("")}(r.find("*"))+"</dl>","</div>"].join(""));o[0]&&o.remove(),r.after(m),y.call(this,m,u,h)})},checkbox:function(){var e={checkbox:["layui-form-checkbox","layui-form-checked","checkbox"],_switch:["layui-form-switch","layui-form-onswitch","switch"]},i=u.find("input[type=checkbox]"),a=function(e,i){var a=t(this);e.on("click",function(){var t=a.attr("lay-filter"),n=(a.attr("lay-text")||"").split("|");a[0].disabled||(a[0].checked?(a[0].checked=!1,e.removeClass(i[1]).find("em").text(n[1])):(a[0].checked=!0,e.addClass(i[1]).find("em").text(n[0])),layui.event.call(a[0],l,i[2]+"("+t+")",{elem:a[0],value:a[0].value,othis:e}))})};i.each(function(i,n){var l=t(this),r=l.attr("lay-skin"),s=(l.attr("lay-text")||"").split("|"),o=this.disabled;"switch"===r&&(r="_"+r);var u=e[r]||e.checkbox;if("string"==typeof l.attr("lay-ignore"))return l.show();var d=l.next("."+u[0]),f=t(['<div class="layui-unselect '+u[0],n.checked?" "+u[1]:"",o?" layui-checkbox-disbaled "+c:"",'"',r?' lay-skin="'+r+'"':"",">",function(){var e=n.title.replace(/\s/g,""),t={checkbox:[e?"<span>"+n.title+"</span>":"",'<i class="layui-icon layui-icon-ok"></i>'].join(""),_switch:"<em>"+((n.checked?s[0]:s[1])||"")+"</em><i></i>"};return t[r]||t.checkbox}(),"</div>"].join(""));d[0]&&d.remove(),l.after(f),a.call(this,f,u)})},radio:function(){var e="layui-form-radio",i=["",""],a=u.find("input[type=radio]"),n=function(a){var n=t(this),s="layui-anim-scaleSpring";a.on("click",function(){var o=n[0].name,c=n.parents(r),u=n.attr("lay-filter"),d=c.find("input[name="+o.replace(/(\.|#|\[|\])/g,"\\$1")+"]");n[0].disabled||(layui.each(d,function(){var a=t(this).next("."+e);this.checked=!1,a.removeClass(e+"ed"),a.find(".layui-icon").removeClass(s).html(i[1])}),n[0].checked=!0,a.addClass(e+"ed"),a.find(".layui-icon").addClass(s).html(i[0]),layui.event.call(n[0],l,"radio("+u+")",{elem:n[0],value:n[0].value,othis:a}))})};a.each(function(a,l){var r=t(this),s=r.next("."+e),o=this.disabled;if("string"==typeof r.attr("lay-ignore"))return r.show();s[0]&&s.remove();var u=t(['<div class="layui-unselect '+e,l.checked?" "+e+"ed":"",(o?" layui-radio-disbaled "+c:"")+'">','<i class="layui-anim layui-icon">'+i[l.checked?0:1]+"</i>","<div>"+function(){var e=l.title||"";return"string"==typeof r.next().attr("lay-radio")&&(e=r.next().html(),r.next().remove()),e}()+"</div>","</div>"].join(""));r.after(u),n.call(this,u)})}};return e?d[e]?d[e]():a.error("不支持的"+e+"表单渲染"):layui.each(d,function(e,t){t()}),n};var d=function(){var e=null,a=f.config.verify,s="layui-form-danger",o={},c=t(this),u=c.parents(r),d=u.find("*[lay-verify]"),v=c.parents("form")[0],h=c.attr("lay-filter");return layui.each(d,function(l,r){var o=t(this),c=o.attr("lay-verify").split("|"),u=o.attr("lay-verType"),d=o.val();if(o.removeClass(s),layui.each(c,function(t,l){var c,f="",v="function"==typeof a[l];if(a[l]){var c=v?f=a[l](d,r):!a[l][0].test(d);if(f=f||a[l][1],"required"===l&&(f=o.attr("lay-reqText")||f),c)return"tips"===u?i.tips(f,function(){return"string"==typeof o.attr("lay-ignore")||"select"!==r.tagName.toLowerCase()&&!/^checkbox|radio$/.test(r.type)?o:o.next()}(),{tips:1}):"alert"===u?i.alert(f,{title:"提示",shadeClose:!0}):i.msg(f,{icon:5,shift:6}),n.android||n.ios||setTimeout(function(){r.focus()},7),o.addClass(s),e=!0}}),e)return e}),!e&&(o=f.getValue(null,u),layui.event.call(this,l,"submit("+h+")",{elem:this,form:v,field:o}))},f=new u,v=t(document),h=t(window);f.render(),v.on("reset",r,function(){var e=t(this).attr("lay-filter");setTimeout(function(){f.render(null,e)},50)}),v.on("submit",r,d).on("click","*[lay-submit]",d),e(l,f)});layui.define("form",function(e){"use strict";var i=layui.$,a=layui.form,n=layui.layer,t="tree",r={config:{},index:layui[t]?layui[t].index+1e4:0,set:function(e){var a=this;return a.config=i.extend({},a.config,e),a},on:function(e,i){return layui.onevent.call(this,t,e,i)}},l=function(){var e=this,i=e.config,a=i.id||e.index;return l.that[a]=e,l.config[a]=i,{config:i,reload:function(i){e.reload.call(e,i)},getChecked:function(){return e.getChecked.call(e)},setChecked:function(i){return e.setChecked.call(e,i)}}},c="layui-hide",d="layui-disabled",s="layui-tree-set",o="layui-tree-iconClick",h="layui-icon-addition",u="layui-icon-subtraction",p="layui-tree-entry",f="layui-tree-main",y="layui-tree-txt",v="layui-tree-pack",C="layui-tree-spread",k="layui-tree-setLineShort",m="layui-tree-showLine",x="layui-tree-lineExtend",b=function(e){var a=this;a.index=++r.index,a.config=i.extend({},a.config,r.config,e),a.render()};b.prototype.config={data:[],showCheckbox:!1,showLine:!0,accordion:!1,onlyIconControl:!1,isJump:!1,edit:!1,text:{defaultNodeName:"未命名",none:"无数据"}},b.prototype.reload=function(e){var a=this;layui.each(e,function(e,i){i.constructor===Array&&delete a.config[e]}),a.config=i.extend(!0,{},a.config,e),a.render()},b.prototype.render=function(){var e=this,a=e.config;e.checkids=[];var n=i('<div class="layui-tree'+(a.showCheckbox?" layui-form":"")+(a.showLine?" layui-tree-line":"")+'" lay-filter="LAY-tree-'+e.index+'"></div>');e.tree(n);var t=a.elem=i(a.elem);if(t[0]){if(e.key=a.id||e.index,e.elem=n,e.elemNone=i('<div class="layui-tree-emptyText">'+a.text.none+"</div>"),t.html(e.elem),0==e.elem.find(".layui-tree-set").length)return e.elem.append(e.elemNone);a.showCheckbox&&e.renderForm("checkbox"),e.elem.find(".layui-tree-set").each(function(){var e=i(this);e.parent(".layui-tree-pack")[0]||e.addClass("layui-tree-setHide"),!e.next()[0]&&e.parents(".layui-tree-pack").eq(1).hasClass("layui-tree-lineExtend")&&e.addClass(k),e.next()[0]||e.parents(".layui-tree-set").eq(0).next()[0]||e.addClass(k)}),e.events()}},b.prototype.renderForm=function(e){a.render(e,"LAY-tree-"+this.index)},b.prototype.tree=function(e,a){var n=this,t=n.config,r=a||t.data;layui.each(r,function(a,r){var l=r.children&&r.children.length>0,o=i('<div class="layui-tree-pack" '+(r.spread?'style="display: block;"':"")+'"></div>'),h=i(['<div data-id="'+r.id+'" class="layui-tree-set'+(r.spread?" layui-tree-spread":"")+(r.checked?" layui-tree-checkedFirst":"")+'">','<div class="layui-tree-entry">','<div class="layui-tree-main">',function(){return t.showLine?l?'<span class="layui-tree-iconClick layui-tree-icon"><i class="layui-icon '+(r.spread?"layui-icon-subtraction":"layui-icon-addition")+'"></i></span>':'<span class="layui-tree-iconClick"><i class="layui-icon layui-icon-file"></i></span>':'<span class="layui-tree-iconClick"><i class="layui-tree-iconArrow '+(l?"":c)+'"></i></span>'}(),function(){return t.showCheckbox?'<input type="checkbox" name="'+(r.field||"layuiTreeCheck_"+r.id)+'" same="layuiTreeCheck" lay-skin="primary" '+(r.disabled?"disabled":"")+' value="'+r.id+'">':""}(),function(){return t.isJump&&r.href?'<a href="'+r.href+'" target="_blank" class="'+y+'">'+(r.title||r.label||t.text.defaultNodeName)+"</a>":'<span class="'+y+(r.disabled?" "+d:"")+'">'+(r.title||r.label||t.text.defaultNodeName)+"</span>"}(),"</div>",function(){if(!t.edit)return"";var e={add:'<i class="layui-icon layui-icon-add-1" data-type="add"></i>',update:'<i class="layui-icon layui-icon-edit" data-type="update"></i>',del:'<i class="layui-icon layui-icon-delete" data-type="del"></i>'},i=['<div class="layui-btn-group layui-tree-btnGroup">'];return t.edit===!0&&(t.edit=["update","del"]),"object"==typeof t.edit?(layui.each(t.edit,function(a,n){i.push(e[n]||"")}),i.join("")+"</div>"):void 0}(),"</div></div>"].join(""));l&&(h.append(o),n.tree(o,r.children)),e.append(h),h.prev("."+s)[0]&&h.prev().children(".layui-tree-pack").addClass("layui-tree-showLine"),l||h.parent(".layui-tree-pack").addClass("layui-tree-lineExtend"),n.spread(h,r),t.showCheckbox&&(r.checked&&n.checkids.push(r.id),n.checkClick(h,r)),t.edit&&n.operate(h,r)})},b.prototype.spread=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f),c=r.find("."+o),k=r.find("."+y),m=t.onlyIconControl?c:l,x="";m.on("click",function(i){var a=e.children("."+v),n=m.children(".layui-icon")[0]?m.children(".layui-icon"):m.find(".layui-tree-icon").children(".layui-icon");if(a[0]){if(e.hasClass(C))e.removeClass(C),a.slideUp(200),n.removeClass(u).addClass(h);else if(e.addClass(C),a.slideDown(200),n.addClass(u).removeClass(h),t.accordion){var r=e.siblings("."+s);r.removeClass(C),r.children("."+v).slideUp(200),r.find(".layui-tree-icon").children(".layui-icon").removeClass(u).addClass(h)}}else x="normal"}),k.on("click",function(){var n=i(this);n.hasClass(d)||(x=e.hasClass(C)?t.onlyIconControl?"open":"close":t.onlyIconControl?"close":"open",t.click&&t.click({elem:e,state:x,data:a}))})},b.prototype.setCheckbox=function(e,i,a){var n=this,t=(n.config,a.prop("checked"));if(!a.prop("disabled")){if("object"==typeof i.children||e.find("."+v)[0]){var r=e.find("."+v).find('input[same="layuiTreeCheck"]');r.each(function(){this.disabled||(this.checked=t)})}var l=function(e){if(e.parents("."+s)[0]){var i,a=e.parent("."+v),n=a.parent(),r=a.prev().find('input[same="layuiTreeCheck"]');t?r.prop("checked",t):(a.find('input[same="layuiTreeCheck"]').each(function(){this.checked&&(i=!0)}),i||r.prop("checked",!1)),l(n)}};l(e),n.renderForm("checkbox")}},b.prototype.checkClick=function(e,a){var n=this,t=n.config,r=e.children("."+p),l=r.children("."+f);l.on("click",'input[same="layuiTreeCheck"]+',function(r){layui.stope(r);var l=i(this).prev(),c=l.prop("checked");l.prop("disabled")||(n.setCheckbox(e,a,l),t.oncheck&&t.oncheck({elem:e,checked:c,data:a}))})},b.prototype.operate=function(e,a){var t=this,r=t.config,l=e.children("."+p),d=l.children("."+f);l.children(".layui-tree-btnGroup").on("click",".layui-icon",function(l){layui.stope(l);var f=i(this).data("type"),b=e.children("."+v),g={data:a,type:f,elem:e};if("add"==f){b[0]||(r.showLine?(d.find("."+o).addClass("layui-tree-icon"),d.find("."+o).children(".layui-icon").addClass(h).removeClass("layui-icon-file")):d.find(".layui-tree-iconArrow").removeClass(c),e.append('<div class="layui-tree-pack"></div>'));var w=r.operate&&r.operate(g),N={};if(N.title=r.text.defaultNodeName,N.id=w,t.tree(e.children("."+v),[N]),r.showLine)if(b[0])b.hasClass(x)||b.addClass(x),e.find("."+v).each(function(){i(this).children("."+s).last().addClass(k)}),b.children("."+s).last().prev().hasClass(k)?b.children("."+s).last().prev().removeClass(k):b.children("."+s).last().removeClass(k),!e.parent("."+v)[0]&&e.next()[0]&&b.children("."+s).last().removeClass(k);else{var T=e.siblings("."+s),L=1,A=e.parent("."+v);layui.each(T,function(e,a){i(a).children("."+v)[0]||(L=0)}),1==L?(T.children("."+v).addClass(m),T.children("."+v).children("."+s).removeClass(k),e.children("."+v).addClass(m),A.removeClass(x),A.children("."+s).last().children("."+v).children("."+s).last().addClass(k)):e.children("."+v).children("."+s).addClass(k)}if(!r.showCheckbox)return;if(d.find('input[same="layuiTreeCheck"]')[0].checked){var I=e.children("."+v).children("."+s).last();I.find('input[same="layuiTreeCheck"]')[0].checked=!0}t.renderForm("checkbox")}else if("update"==f){var F=d.children("."+y).html();d.children("."+y).html(""),d.append('<input type="text" class="layui-tree-editInput">'),d.children(".layui-tree-editInput").val(F).focus();var j=function(e){var i=e.val().trim();i=i?i:r.text.defaultNodeName,e.remove(),d.children("."+y).html(i),g.data.title=i,r.operate&&r.operate(g)};d.children(".layui-tree-editInput").blur(function(){j(i(this))}),d.children(".layui-tree-editInput").on("keydown",function(e){13===e.keyCode&&(e.preventDefault(),j(i(this)))})}else n.confirm('确认删除该节点 "<span style="color: #999;">'+(a.title||"")+'</span>" 吗?',function(a){if(r.operate&&r.operate(g),g.status="remove",n.close(a),!e.prev("."+s)[0]&&!e.next("."+s)[0]&&!e.parent("."+v)[0])return e.remove(),void t.elem.append(t.elemNone);if(e.siblings("."+s).children("."+p)[0]){if(r.showCheckbox){var l=function(e){if(e.parents("."+s)[0]){var a=e.siblings("."+s).children("."+p),n=e.parent("."+v).prev(),r=n.find('input[same="layuiTreeCheck"]')[0],c=1,d=0;0==r.checked&&(a.each(function(e,a){var n=i(a).find('input[same="layuiTreeCheck"]')[0];0!=n.checked||n.disabled||(c=0),n.disabled||(d=1)}),1==c&&1==d&&(r.checked=!0,t.renderForm("checkbox"),l(n.parent("."+s))))}};l(e)}if(r.showLine){var d=e.siblings("."+s),h=1,f=e.parent("."+v);layui.each(d,function(e,a){i(a).children("."+v)[0]||(h=0)}),1==h?(b[0]||(f.removeClass(x),d.children("."+v).addClass(m),d.children("."+v).children("."+s).removeClass(k)),e.next()[0]?f.children("."+s).last().children("."+v).children("."+s).last().addClass(k):e.prev().children("."+v).children("."+s).last().addClass(k),e.next()[0]||e.parents("."+s)[1]||e.parents("."+s).eq(0).next()[0]||e.prev("."+s).addClass(k)):!e.next()[0]&&e.hasClass(k)&&e.prev().addClass(k)}}else{var y=e.parent("."+v).prev();if(r.showLine){y.find("."+o).removeClass("layui-tree-icon"),y.find("."+o).children(".layui-icon").removeClass(u).addClass("layui-icon-file");var w=y.parents("."+v).eq(0);w.addClass(x),w.children("."+s).each(function(){i(this).children("."+v).children("."+s).last().addClass(k)})}else y.find(".layui-tree-iconArrow").addClass(c);e.parents("."+s).eq(0).removeClass(C),e.parent("."+v).remove()}e.remove()})})},b.prototype.events=function(){var e=this,a=e.config;e.elem.find(".layui-tree-checkedFirst");e.setChecked(e.checkids),e.elem.find(".layui-tree-search").on("keyup",function(){var n=i(this),t=n.val(),r=n.nextAll(),l=[];r.find("."+y).each(function(){var e=i(this).parents("."+p);if(i(this).html().indexOf(t)!=-1){l.push(i(this).parent());var a=function(e){e.addClass("layui-tree-searchShow"),e.parent("."+v)[0]&&a(e.parent("."+v).parent("."+s))};a(e.parent("."+s))}}),r.find("."+p).each(function(){var e=i(this).parent("."+s);e.hasClass("layui-tree-searchShow")||e.addClass(c)}),0==r.find(".layui-tree-searchShow").length&&e.elem.append(e.elemNone),a.onsearch&&a.onsearch({elem:l})}),e.elem.find(".layui-tree-search").on("keydown",function(){i(this).nextAll().find("."+p).each(function(){var e=i(this).parent("."+s);e.removeClass("layui-tree-searchShow "+c)}),i(".layui-tree-emptyText")[0]&&i(".layui-tree-emptyText").remove()})},b.prototype.getChecked=function(){var e=this,a=e.config,n=[],t=[];e.elem.find(".layui-form-checked").each(function(){n.push(i(this).prev()[0].value)});var r=function(e,a){layui.each(e,function(e,t){layui.each(n,function(e,n){if(t.id==n){var l=i.extend({},t);return delete l.children,a.push(l),t.children&&(l.children=[],r(t.children,l.children)),!0}})})};return r(i.extend({},a.data),t),t},b.prototype.setChecked=function(e){var a=this;a.config;a.elem.find("."+s).each(function(a,n){var t=i(this).data("id"),r=i(n).children("."+p).find('input[same="layuiTreeCheck"]'),l=r.next();if("number"==typeof e){if(t==e)return r[0].checked||l.click(),!1}else"object"==typeof e&&layui.each(e,function(e,i){if(i==t&&!r[0].checked)return l.click(),!0})})},l.that={},l.config={},r.reload=function(e,i){var a=l.that[e];return a.reload(i),l.call(a)},r.getChecked=function(e){var i=l.that[e];return i.getChecked()},r.setChecked=function(e,i){var a=l.that[e];return a.setChecked(i)},r.render=function(e){var i=new b(e);return l.call(i)},e(t,r)});layui.define(["laytpl","form"],function(e){"use strict";var a=layui.$,t=layui.laytpl,n=layui.form,i="transfer",l={config:{},index:layui[i]?layui[i].index+1e4:0,set:function(e){var t=this;return t.config=a.extend({},t.config,e),t},on:function(e,a){return layui.onevent.call(this,i,e,a)}},r=function(){var e=this,a=e.config,t=a.id||e.index;return r.that[t]=e,r.config[t]=a,{config:a,reload:function(a){e.reload.call(e,a)},getData:function(){return e.getData.call(e)}}},c="layui-hide",o="layui-btn-disabled",d="layui-none",s="layui-transfer-box",u="layui-transfer-header",h="layui-transfer-search",f="layui-transfer-active",y="layui-transfer-data",p=function(e){return e=e||{},['<div class="layui-transfer-box" data-index="'+e.index+'">','<div class="layui-transfer-header">','<input type="checkbox" name="'+e.checkAllName+'" lay-filter="layTransferCheckbox" lay-type="all" lay-skin="primary" title="{{ d.data.title['+e.index+"] || 'list"+(e.index+1)+"' }}\">","</div>","{{# if(d.data.showSearch){ }}",'<div class="layui-transfer-search">','<i class="layui-icon layui-icon-search"></i>','<input type="input" class="layui-input" placeholder="关键词搜索">',"</div>","{{# } }}",'<ul class="layui-transfer-data"></ul>',"</div>"].join("")},v=['<div class="layui-transfer layui-form layui-border-box" lay-filter="LAY-transfer-{{ d.index }}">',p({index:0,checkAllName:"layTransferLeftCheckAll"}),'<div class="layui-transfer-active">','<button type="button" class="layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled" data-index="0">','<i class="layui-icon layui-icon-next"></i>',"</button>",'<button type="button" class="layui-btn layui-btn-sm layui-btn-primary layui-btn-disabled" data-index="1">','<i class="layui-icon layui-icon-prev"></i>',"</button>","</div>",p({index:1,checkAllName:"layTransferRightCheckAll"}),"</div>"].join(""),x=function(e){var t=this;t.index=++l.index,t.config=a.extend({},t.config,l.config,e),t.render()};x.prototype.config={title:["列表一","列表二"],width:200,height:360,data:[],value:[],showSearch:!1,id:"",text:{none:"无数据",searchNone:"无匹配数据"}},x.prototype.reload=function(e){var t=this;layui.each(e,function(e,a){a.constructor===Array&&delete t.config[e]}),t.config=a.extend(!0,{},t.config,e),t.render()},x.prototype.render=function(){var e=this,n=e.config,i=e.elem=a(t(v).render({data:n,index:e.index})),l=n.elem=a(n.elem);l[0]&&(n.data=n.data||[],n.value=n.value||[],e.key=n.id||e.index,l.html(e.elem),e.layBox=e.elem.find("."+s),e.layHeader=e.elem.find("."+u),e.laySearch=e.elem.find("."+h),e.layData=i.find("."+y),e.layBtn=i.find("."+f+" .layui-btn"),e.layBox.css({width:n.width,height:n.height}),e.layData.css({height:function(){return n.height-e.layHeader.outerHeight()-e.laySearch.outerHeight()-2}()}),e.renderData(),e.events())},x.prototype.renderData=function(){var e=this,a=(e.config,[{checkName:"layTransferLeftCheck",views:[]},{checkName:"layTransferRightCheck",views:[]}]);e.parseData(function(e){var t=e.selected?1:0,n=["<li>",'<input type="checkbox" name="'+a[t].checkName+'" lay-skin="primary" lay-filter="layTransferCheckbox" title="'+e.title+'"'+(e.disabled?" disabled":"")+(e.checked?" checked":"")+' value="'+e.value+'">',"</li>"].join("");a[t].views.push(n),delete e.selected}),e.layData.eq(0).html(a[0].views.join("")),e.layData.eq(1).html(a[1].views.join("")),e.renderCheckBtn()},x.prototype.renderForm=function(e){n.render(e,"LAY-transfer-"+this.index)},x.prototype.renderCheckBtn=function(e){var t=this,n=t.config;e=e||{},t.layBox.each(function(i){var l=a(this),r=l.find("."+y),d=l.find("."+u).find('input[type="checkbox"]'),s=r.find('input[type="checkbox"]'),h=0,f=!1;if(s.each(function(){var e=a(this).data("hide");(this.checked||this.disabled||e)&&h++,this.checked&&!e&&(f=!0)}),d.prop("checked",f&&h===s.length),t.layBtn.eq(i)[f?"removeClass":"addClass"](o),!e.stopNone){var p=r.children("li:not(."+c+")").length;t.noneView(r,p?"":n.text.none)}}),t.renderForm("checkbox")},x.prototype.noneView=function(e,t){var n=a('<p class="layui-none">'+(t||"")+"</p>");e.find("."+d)[0]&&e.find("."+d).remove(),t.replace(/\s/g,"")&&e.append(n)},x.prototype.setValue=function(){var e=this,t=e.config,n=[];return e.layBox.eq(1).find("."+y+' input[type="checkbox"]').each(function(){var e=a(this).data("hide");e||n.push(this.value)}),t.value=n,e},x.prototype.parseData=function(e){var t=this,n=t.config,i=[];return layui.each(n.data,function(t,l){l=("function"==typeof n.parseData?n.parseData(l):l)||l,i.push(l=a.extend({},l)),layui.each(n.value,function(e,a){a==l.value&&(l.selected=!0)}),e&&e(l)}),n.data=i,t},x.prototype.getData=function(e){var a=this,t=a.config,n=[];return a.setValue(),layui.each(e||t.value,function(e,a){layui.each(t.data,function(e,t){delete t.selected,a==t.value&&n.push(t)})}),n},x.prototype.events=function(){var e=this,t=e.config;e.elem.on("click",'input[lay-filter="layTransferCheckbox"]+',function(){var t=a(this).prev(),n=t[0].checked,i=t.parents("."+s).eq(0).find("."+y);t[0].disabled||("all"===t.attr("lay-type")&&i.find('input[type="checkbox"]').each(function(){this.disabled||(this.checked=n)}),e.renderCheckBtn({stopNone:!0}))}),e.layBtn.on("click",function(){var n=a(this),i=n.data("index"),l=e.layBox.eq(i),r=[];if(!n.hasClass(o)){e.layBox.eq(i).each(function(t){var n=a(this),i=n.find("."+y);i.children("li").each(function(){var t=a(this),n=t.find('input[type="checkbox"]'),i=n.data("hide");n[0].checked&&!i&&(n[0].checked=!1,l.siblings("."+s).find("."+y).append(t.clone()),t.remove(),r.push(n[0].value)),e.setValue()})}),e.renderCheckBtn();var c=l.siblings("."+s).find("."+h+" input");""===c.val()||c.trigger("keyup"),t.onchange&&t.onchange(e.getData(r),i)}}),e.laySearch.find("input").on("keyup",function(){var n=this.value,i=a(this).parents("."+h).eq(0).siblings("."+y),l=i.children("li");l.each(function(){var e=a(this),t=e.find('input[type="checkbox"]'),i=t[0].title.indexOf(n)!==-1;e[i?"removeClass":"addClass"](c),t.data("hide",!i)}),e.renderCheckBtn();var r=l.length===i.children("li."+c).length;e.noneView(i,r?t.text.searchNone:"")})},r.that={},r.config={},l.reload=function(e,a){var t=r.that[e];return t.reload(a),r.call(t)},l.getData=function(e){var a=r.that[e];return a.getData()},l.render=function(e){var a=new x(e);return r.call(a)},e(i,l)});layui.define(["laytpl","laypage","layer","form","util"],function(e){"use strict";var t=layui.$,i=layui.laytpl,a=layui.laypage,l=layui.layer,n=layui.form,o=(layui.util,layui.hint()),r=layui.device(),d={config:{checkName:"LAY_CHECKED",indexName:"LAY_TABLE_INDEX"},cache:{},index:layui.table?layui.table.index+1e4:0,set:function(e){var i=this;return i.config=t.extend({},i.config,e),i},on:function(e,t){return layui.onevent.call(this,y,e,t)}},c=function(){var e=this,t=e.config,i=t.id||t.index;return i&&(c.that[i]=e,c.config[i]=t),{config:t,reload:function(t){e.reload.call(e,t)},setColsWidth:function(){e.setColsWidth.call(e)},resize:function(){e.resize.call(e)}}},s=function(e){var t=c.config[e];return t||o.error("The ID option was not found in the table instance"),t||null},u=function(e,a,l,n){var o=e.templet?function(){return"function"==typeof e.templet?e.templet(l):i(t(e.templet).html()||String(a)).render(l)}():a;return n?t("<div>"+o+"</div>").text():o},y="table",h=".layui-table",f="layui-hide",p="layui-none",v="layui-table-view",m=".layui-table-tool",g=".layui-table-box",b=".layui-table-init",x=".layui-table-header",k=".layui-table-body",C=".layui-table-main",w=".layui-table-fixed",T=".layui-table-fixed-l",A=".layui-table-fixed-r",L=".layui-table-total",N=".layui-table-page",S=".layui-table-sort",W="layui-table-edit",_="layui-table-hover",E=function(e){var t='{{#if(item2.colspan){}} colspan="{{item2.colspan}}"{{#} if(item2.rowspan){}} rowspan="{{item2.rowspan}}"{{#}}}';return e=e||{},['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',"<thead>","{{# layui.each(d.data.cols, function(i1, item1){ }}","<tr>","{{# layui.each(item1, function(i2, item2){ }}",'{{# if(item2.fixed && item2.fixed !== "right"){ left = true; } }}','{{# if(item2.fixed === "right"){ right = true; } }}',function(){return e.fixed&&"right"!==e.fixed?'{{# if(item2.fixed && item2.fixed !== "right"){ }}':"right"===e.fixed?'{{# if(item2.fixed === "right"){ }}':""}(),"{{# var isSort = !(item2.colGroup) && item2.sort; }}",'<th data-field="{{ item2.field||i2 }}" data-key="{{d.index}}-{{i1}}-{{i2}}" {{# if( item2.parentKey){ }}data-parentkey="{{ item2.parentKey }}"{{# } }} {{# if(item2.minWidth){ }}data-minwidth="{{item2.minWidth}}"{{# } }} '+t+' {{# if(item2.unresize || item2.colGroup){ }}data-unresize="true"{{# } }} class="{{# if(item2.hide){ }}layui-hide{{# } }}{{# if(isSort){ }} layui-unselect{{# } }}{{# if(!item2.field){ }} layui-table-col-special{{# } }}">','<div class="layui-table-cell laytable-cell-',"{{# if(item2.colGroup){ }}","group","{{# } else { }}","{{d.index}}-{{i1}}-{{i2}}",'{{# if(item2.type !== "normal"){ }}'," laytable-cell-{{ item2.type }}","{{# } }}","{{# } }}",'" {{#if(item2.align){}}align="{{item2.align}}"{{#}}}>','{{# if(item2.type === "checkbox"){ }}','<input type="checkbox" name="layTableCheckbox" lay-skin="primary" lay-filter="layTableAllChoose" {{# if(item2[d.data.checkName]){ }}checked{{# }; }}>',"{{# } else { }}",'<span>{{item2.title||""}}</span>',"{{# if(isSort){ }}",'<span class="layui-table-sort layui-inline"><i class="layui-edge layui-table-sort-asc" title="升序"></i><i class="layui-edge layui-table-sort-desc" title="降序"></i></span>',"{{# } }}","{{# } }}","</div>","</th>",e.fixed?"{{# }; }}":"","{{# }); }}","</tr>","{{# }); }}","</thead>","</table>"].join("")},z=['<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>',"<tbody></tbody>","</table>"].join(""),H=['<div class="layui-form layui-border-box {{d.VIEW_CLASS}}" lay-filter="LAY-table-{{d.index}}" lay-id="{{ d.data.id }}" style="{{# if(d.data.width){ }}width:{{d.data.width}}px;{{# } }} {{# if(d.data.height){ }}height:{{d.data.height}}px;{{# } }}">',"{{# if(d.data.toolbar){ }}",'<div class="layui-table-tool">','<div class="layui-table-tool-temp"></div>','<div class="layui-table-tool-self"></div>',"</div>","{{# } }}",'<div class="layui-table-box">',"{{# if(d.data.loading){ }}",'<div class="layui-table-init" style="background-color: #fff;">','<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>',"</div>","{{# } }}","{{# var left, right; }}",'<div class="layui-table-header">',E(),"</div>",'<div class="layui-table-body layui-table-main">',z,"</div>","{{# if(left){ }}",'<div class="layui-table-fixed layui-table-fixed-l">','<div class="layui-table-header">',E({fixed:!0}),"</div>",'<div class="layui-table-body">',z,"</div>","</div>","{{# }; }}","{{# if(right){ }}",'<div class="layui-table-fixed layui-table-fixed-r">','<div class="layui-table-header">',E({fixed:"right"}),'<div class="layui-table-mend"></div>',"</div>",'<div class="layui-table-body">',z,"</div>","</div>","{{# }; }}","</div>","{{# if(d.data.totalRow){ }}",'<div class="layui-table-total">','<table cellspacing="0" cellpadding="0" border="0" class="layui-table" ','{{# if(d.data.skin){ }}lay-skin="{{d.data.skin}}"{{# } }} {{# if(d.data.size){ }}lay-size="{{d.data.size}}"{{# } }} {{# if(d.data.even){ }}lay-even{{# } }}>','<tbody><tr><td><div class="layui-table-cell" style="visibility: hidden;">Total</div></td></tr></tbody>',"</table>","</div>","{{# } }}","{{# if(d.data.page){ }}",'<div class="layui-table-page">','<div id="layui-table-page{{d.index}}"></div>',"</div>","{{# } }}","<style>","{{# layui.each(d.data.cols, function(i1, item1){","layui.each(item1, function(i2, item2){ }}",".laytable-cell-{{d.index}}-{{i1}}-{{i2}}{ ","{{# if(item2.width){ }}","width: {{item2.width}}px;","{{# } }}"," }","{{# });","}); }}","</style>","</div>"].join(""),R=t(window),F=t(document),j=function(e){var i=this;i.index=++d.index,i.config=t.extend({},i.config,d.config,e),i.render()};j.prototype.config={limit:10,loading:!0,cellMinWidth:60,defaultToolbar:["filter","exports","print"],autoSort:!0,text:{none:"无数据"}},j.prototype.render=function(){var e=this,a=e.config;if(a.elem=t(a.elem),a.where=a.where||{},a.id=a.id||a.elem.attr("id")||e.index,a.request=t.extend({pageName:"page",limitName:"limit"},a.request),a.response=t.extend({statusName:"code",statusCode:0,msgName:"msg",dataName:"data",countName:"count"},a.response),"object"==typeof a.page&&(a.limit=a.page.limit||a.limit,a.limits=a.page.limits||a.limits,e.page=a.page.curr=a.page.curr||1,delete a.page.elem,delete a.page.jump),!a.elem[0])return e;a.height&&/^full-\d+$/.test(a.height)&&(e.fullHeightGap=a.height.split("-")[1],a.height=R.height()-e.fullHeightGap),e.setInit();var l=a.elem,n=l.next("."+v),o=e.elem=t(i(H).render({VIEW_CLASS:v,data:a,index:e.index}));if(a.index=e.index,e.key=a.id||a.index,n[0]&&n.remove(),l.after(o),e.layTool=o.find(m),e.layBox=o.find(g),e.layHeader=o.find(x),e.layMain=o.find(C),e.layBody=o.find(k),e.layFixed=o.find(w),e.layFixLeft=o.find(T),e.layFixRight=o.find(A),e.layTotal=o.find(L),e.layPage=o.find(N),e.renderToolbar(),e.fullSize(),a.cols.length>1){var r=e.layFixed.find(x).find("th");r.height(e.layHeader.height()-1-parseFloat(r.css("padding-top"))-parseFloat(r.css("padding-bottom")))}e.pullData(e.page),e.events()},j.prototype.initOpts=function(e){var t=this,i=(t.config,{checkbox:48,radio:48,space:15,numbers:40});e.checkbox&&(e.type="checkbox"),e.space&&(e.type="space"),e.type||(e.type="normal"),"normal"!==e.type&&(e.unresize=!0,e.width=e.width||i[e.type])},j.prototype.setInit=function(e){var t=this,i=t.config;return i.clientWidth=i.width||function(){var e=function(t){var a,l;t=t||i.elem.parent(),a=t.width();try{l="none"===t.css("display")}catch(n){}return!t[0]||a&&!l?a:e(t.parent())};return e()}(),"width"===e?i.clientWidth:void layui.each(i.cols,function(e,a){layui.each(a,function(l,n){if(!n)return void a.splice(l,1);if(n.key=e+"-"+l,n.hide=n.hide||!1,n.colGroup||n.colspan>1){var o=0;layui.each(i.cols[e+1],function(t,i){i.HAS_PARENT||o>1&&o==n.colspan||(i.HAS_PARENT=!0,i.parentKey=e+"-"+l,o+=parseInt(i.colspan>1?i.colspan:1))}),n.colGroup=!0}t.initOpts(n)})})},j.prototype.renderToolbar=function(){var e=this,a=e.config,l=['<div class="layui-inline" lay-event="add"><i class="layui-icon layui-icon-add-1"></i></div>','<div class="layui-inline" lay-event="update"><i class="layui-icon layui-icon-edit"></i></div>','<div class="layui-inline" lay-event="delete"><i class="layui-icon layui-icon-delete"></i></div>'].join(""),n=e.layTool.find(".layui-table-tool-temp");if("default"===a.toolbar)n.html(l);else if("string"==typeof a.toolbar){var o=t(a.toolbar).html()||"";o&&n.html(i(o).render(a))}var r={filter:{title:"筛选列",layEvent:"LAYTABLE_COLS",icon:"layui-icon-cols"},exports:{title:"导出",layEvent:"LAYTABLE_EXPORT",icon:"layui-icon-export"},print:{title:"打印",layEvent:"LAYTABLE_PRINT",icon:"layui-icon-print"}},d=[];"object"==typeof a.defaultToolbar&&layui.each(a.defaultToolbar,function(e,t){var i="string"==typeof t?r[t]:t;i&&d.push('<div class="layui-inline" title="'+i.title+'" lay-event="'+i.layEvent+'"><i class="layui-icon '+i.icon+'"></i></div>')}),e.layTool.find(".layui-table-tool-self").html(d.join(""))},j.prototype.setParentCol=function(e,t){var i=this,a=i.config,l=i.layHeader.find('th[data-key="'+a.index+"-"+t+'"]'),n=parseInt(l.attr("colspan"))||0;if(l[0]){var o=t.split("-"),r=a.cols[o[0]][o[1]];e?n--:n++,l.attr("colspan",n),l[n<1?"addClass":"removeClass"](f),r.colspan=n,r.hide=n<1;var d=l.data("parentkey");d&&i.setParentCol(e,d)}},j.prototype.setColsPatch=function(){var e=this,t=e.config;layui.each(t.cols,function(t,i){layui.each(i,function(t,i){i.hide&&e.setParentCol(i.hide,i.parentKey)})})},j.prototype.setColsWidth=function(){var e=this,t=e.config,i=0,a=0,l=0,n=0,o=e.setInit("width");e.eachCols(function(e,t){t.hide||i++}),o=o-function(){return"line"===t.skin||"nob"===t.skin?2:i+1}()-e.getScrollWidth(e.layMain[0])-1;var r=function(e){layui.each(t.cols,function(i,r){layui.each(r,function(i,d){var c=0,s=d.minWidth||t.cellMinWidth;return d?void(d.colGroup||d.hide||(e?l&&l<s&&(a--,c=s):(c=d.width||0,/\d+%$/.test(c)?(c=Math.floor(parseFloat(c)/100*o),c<s&&(c=s)):c||(d.width=c=0,a++)),d.hide&&(c=0),n+=c)):void r.splice(i,1)})}),o>n&&a&&(l=(o-n)/a)};r(),r(!0),e.autoColNums=a,e.eachCols(function(i,a){var n=a.minWidth||t.cellMinWidth;a.colGroup||a.hide||(0===a.width?e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(l>=n?l:n)+"px"}):/\d+%$/.test(a.width)&&e.getCssRule(t.index+"-"+a.key,function(e){e.style.width=Math.floor(parseFloat(a.width)/100*o)+"px"}))});var d=e.layMain.width()-e.getScrollWidth(e.layMain[0])-e.layMain.children("table").outerWidth();if(e.autoColNums&&d>=-i&&d<=i){var c=function(t){var i;return t=t||e.layHeader.eq(0).find("thead th:last-child"),i=t.data("field"),!i&&t.prev()[0]?c(t.prev()):t},s=c(),u=s.data("key");e.getCssRule(u,function(t){var i=t.style.width||s.outerWidth();t.style.width=parseFloat(i)+d+"px",e.layMain.height()-e.layMain.prop("clientHeight")>0&&(t.style.width=parseFloat(t.style.width)-1+"px")})}e.loading(!0)},j.prototype.resize=function(){var e=this;e.fullSize(),e.setColsWidth(),e.scrollPatch()},j.prototype.reload=function(e){var i=this;e=e||{},delete i.haveInit,e.data&&e.data.constructor===Array&&delete i.config.data,i.config=t.extend(!0,{},i.config,e),i.render()},j.prototype.errorView=function(e){var i=this,a=i.layMain.find("."+p),l=t('<div class="'+p+'">'+(e||"Error")+"</div>");a[0]&&(i.layNone.remove(),a.remove()),i.layFixed.addClass(f),i.layMain.find("tbody").html(""),i.layMain.append(i.layNone=l),d.cache[i.key]=[]},j.prototype.page=1,j.prototype.pullData=function(e){var i=this,a=i.config,l=a.request,n=a.response,o=function(){"object"==typeof a.initSort&&i.sort(a.initSort.field,a.initSort.type)};if(i.startTime=(new Date).getTime(),a.url){var r={};r[l.pageName]=e,r[l.limitName]=a.limit;var d=t.extend(r,a.where);a.contentType&&0==a.contentType.indexOf("application/json")&&(d=JSON.stringify(d)),i.loading(),t.ajax({type:a.method||"get",url:a.url,contentType:a.contentType,data:d,dataType:"json",headers:a.headers||{},success:function(t){"function"==typeof a.parseData&&(t=a.parseData(t)||t),t[n.statusName]!=n.statusCode?(i.renderForm(),i.errorView(t[n.msgName]||'返回的数据不符合规范,正确的成功状态码应为:"'+n.statusName+'": '+n.statusCode)):(i.renderData(t,e,t[n.countName]),o(),a.time=(new Date).getTime()-i.startTime+" ms"),i.setColsWidth(),"function"==typeof a.done&&a.done(t,e,t[n.countName])},error:function(e,t){i.errorView("数据接口请求异常:"+t),i.renderForm(),i.setColsWidth()}})}else if(a.data&&a.data.constructor===Array){var c={},s=e*a.limit-a.limit;c[n.dataName]=a.data.concat().splice(s,a.limit),c[n.countName]=a.data.length,i.renderData(c,e,c[n.countName]),o(),i.setColsWidth(),"function"==typeof a.done&&a.done(c,e,c[n.countName])}},j.prototype.eachCols=function(e){var t=this;return d.eachCols(null,e,t.config.cols),t},j.prototype.renderData=function(e,n,o,r){var c=this,s=c.config,y=e[s.response.dataName]||[],h=[],v=[],m=[],g=function(){var e;return!r&&c.sortKey?c.sort(c.sortKey.field,c.sortKey.sort,!0):(layui.each(y,function(a,l){var o=[],y=[],p=[],g=a+s.limit*(n-1)+1;0!==l.length&&(r||(l[d.config.indexName]=a),c.eachCols(function(n,r){var c=r.field||n,h=s.index+"-"+r.key,v=l[c];if(void 0!==v&&null!==v||(v=""),!r.colGroup){var m=['<td data-field="'+c+'" data-key="'+h+'" '+function(){var e=[];return r.edit&&e.push('data-edit="'+r.edit+'"'),r.align&&e.push('align="'+r.align+'"'),r.templet&&e.push('data-content="'+v+'"'),r.toolbar&&e.push('data-off="true"'),r.event&&e.push('lay-event="'+r.event+'"'),r.style&&e.push('style="'+r.style+'"'),r.minWidth&&e.push('data-minwidth="'+r.minWidth+'"'),e.join(" ")}()+' class="'+function(){var e=[];return r.hide&&e.push(f),r.field||e.push("layui-table-col-special"),e.join(" ")}()+'">','<div class="layui-table-cell laytable-cell-'+function(){return"normal"===r.type?h:h+" laytable-cell-"+r.type}()+'">'+function(){var n=t.extend(!0,{LAY_INDEX:g},l),o=d.config.checkName;switch(r.type){case"checkbox":return'<input type="checkbox" name="layTableCheckbox" lay-skin="primary" '+function(){return r[o]?(l[o]=r[o],r[o]?"checked":""):n[o]?"checked":""}()+">";case"radio":return n[o]&&(e=a),'<input type="radio" name="layTableRadio_'+s.index+'" '+(n[o]?"checked":"")+' lay-type="layTableRadio">';case"numbers":return g}return r.toolbar?i(t(r.toolbar).html()||"").render(n):u(r,v,n)}(),"</div></td>"].join("");o.push(m),r.fixed&&"right"!==r.fixed&&y.push(m),"right"===r.fixed&&p.push(m)}}),h.push('<tr data-index="'+a+'">'+o.join("")+"</tr>"),v.push('<tr data-index="'+a+'">'+y.join("")+"</tr>"),m.push('<tr data-index="'+a+'">'+p.join("")+"</tr>"))}),c.layBody.scrollTop(0),c.layMain.find("."+p).remove(),c.layMain.find("tbody").html(h.join("")),c.layFixLeft.find("tbody").html(v.join("")),c.layFixRight.find("tbody").html(m.join("")),c.renderForm(),"number"==typeof e&&c.setThisRowChecked(e),c.syncCheckAll(),c.haveInit?c.scrollPatch():setTimeout(function(){c.scrollPatch()},50),c.haveInit=!0,l.close(c.tipsIndex),s.HAS_SET_COLS_PATCH||c.setColsPatch(),void(s.HAS_SET_COLS_PATCH=!0))};return d.cache[c.key]=y,c.layPage[0==o||0===y.length&&1==n?"addClass":"removeClass"](f),r?g():0===y.length?(c.renderForm(),c.errorView(s.text.none)):(c.layFixed.removeClass(f),g(),c.renderTotal(y),void(s.page&&(s.page=t.extend({elem:"layui-table-page"+s.index,count:o,limit:s.limit,limits:s.limits||[10,20,30,40,50,60,70,80,90],groups:3,layout:["prev","page","next","skip","count","limit"],prev:'<i class="layui-icon"></i>',next:'<i class="layui-icon"></i>',jump:function(e,t){t||(c.page=e.curr,s.limit=e.limit,c.pullData(e.curr))}},s.page),s.page.count=o,a.render(s.page))))},j.prototype.renderTotal=function(e){var t=this,i=t.config,a={};if(i.totalRow){layui.each(e,function(e,i){0!==i.length&&t.eachCols(function(e,t){var l=t.field||e,n=i[l];t.totalRow&&(a[l]=(a[l]||0)+(parseFloat(n)||0))})}),t.dataTotal={};var l=[];t.eachCols(function(e,n){var o=n.field||e,r=function(){var e=n.totalRowText||"",t=parseFloat(a[o]).toFixed(2),i={};return i[o]=t,t=u(n,t,i),n.totalRow?t||e:e}(),d=['<td data-field="'+o+'" data-key="'+i.index+"-"+n.key+'" '+function(){var e=[];return n.align&&e.push('align="'+n.align+'"'),n.style&&e.push('style="'+n.style+'"'),n.minWidth&&e.push('data-minwidth="'+n.minWidth+'"'),e.join(" ")}()+' class="'+function(){var e=[];return n.hide&&e.push(f),n.field||e.push("layui-table-col-special"),e.join(" ")}()+'">','<div class="layui-table-cell laytable-cell-'+function(){var e=i.index+"-"+n.key;return"normal"===n.type?e:e+" laytable-cell-"+n.type}()+'">'+r,"</div></td>"].join("");n.field&&(t.dataTotal[o]=r),l.push(d)}),t.layTotal.find("tbody").html("<tr>"+l.join("")+"</tr>")}},j.prototype.getColElem=function(e,t){var i=this,a=i.config;return e.eq(0).find(".laytable-cell-"+(a.index+"-"+t)+":eq(0)")},j.prototype.renderForm=function(e){n.render(e,"LAY-table-"+this.index)},j.prototype.setThisRowChecked=function(e){var t=this,i=(t.config,"layui-table-click"),a=t.layBody.find('tr[data-index="'+e+'"]');a.addClass(i).siblings("tr").removeClass(i)},j.prototype.sort=function(e,i,a,l){var n,r,c=this,s={},u=c.config,h=u.elem.attr("lay-filter"),f=d.cache[c.key];"string"==typeof e&&c.layHeader.find("th").each(function(i,a){var l=t(this),o=l.data("field");if(o===e)return e=l,n=o,!1});try{var n=n||e.data("field"),p=e.data("key");if(c.sortKey&&!a&&n===c.sortKey.field&&i===c.sortKey.sort)return;var v=c.layHeader.find("th .laytable-cell-"+p).find(S);c.layHeader.find("th").find(S).removeAttr("lay-sort"),v.attr("lay-sort",i||null),c.layFixed.find("th")}catch(m){return o.error("Table modules: Did not match to field")}c.sortKey={field:n,sort:i},u.autoSort&&("asc"===i?r=layui.sort(f,n):"desc"===i?r=layui.sort(f,n,!0):(r=layui.sort(f,d.config.indexName),delete c.sortKey)),s[u.response.dataName]=r||f,c.renderData(s,c.page,c.count,!0),l&&layui.event.call(e,y,"sort("+h+")",{field:n,type:i})},j.prototype.loading=function(e){var i=this,a=i.config;a.loading&&(e?(i.layInit&&i.layInit.remove(),delete i.layInit,i.layBox.find(b).remove()):(i.layInit=t(['<div class="layui-table-init">','<i class="layui-icon layui-icon-loading layui-anim layui-anim-rotate layui-anim-loop"></i>',"</div>"].join("")),i.layBox.append(i.layInit)))},j.prototype.setCheckData=function(e,t){var i=this,a=i.config,l=d.cache[i.key];l[e]&&l[e].constructor!==Array&&(l[e][a.checkName]=t)},j.prototype.syncCheckAll=function(){var e=this,t=e.config,i=e.layHeader.find('input[name="layTableCheckbox"]'),a=function(i){return e.eachCols(function(e,a){"checkbox"===a.type&&(a[t.checkName]=i)}),i};i[0]&&(d.checkStatus(e.key).isAll?(i[0].checked||(i.prop("checked",!0),e.renderForm("checkbox")),a(!0)):(i[0].checked&&(i.prop("checked",!1),e.renderForm("checkbox")),a(!1)))},j.prototype.getCssRule=function(e,t){var i=this,a=i.elem.find("style")[0],l=a.sheet||a.styleSheet||{},n=l.cssRules||l.rules;layui.each(n,function(i,a){if(a.selectorText===".laytable-cell-"+e)return t(a),!0})},j.prototype.fullSize=function(){var e,t=this,i=t.config,a=i.height;t.fullHeightGap&&(a=R.height()-t.fullHeightGap,a<135&&(a=135),t.elem.css("height",a)),a&&(e=parseFloat(a)-(t.layHeader.outerHeight()||38),i.toolbar&&(e-=t.layTool.outerHeight()||50),i.totalRow&&(e-=t.layTotal.outerHeight()||40),i.page&&(e-=t.layPage.outerHeight()||41),t.layMain.css("height",e-2))},j.prototype.getScrollWidth=function(e){var t=0;return e?t=e.offsetWidth-e.clientWidth:(e=document.createElement("div"),e.style.width="100px",e.style.height="100px",e.style.overflowY="scroll",document.body.appendChild(e),t=e.offsetWidth-e.clientWidth,document.body.removeChild(e)),t},j.prototype.scrollPatch=function(){var e=this,i=e.layMain.children("table"),a=e.layMain.width()-e.layMain.prop("clientWidth"),l=e.layMain.height()-e.layMain.prop("clientHeight"),n=(e.getScrollWidth(e.layMain[0]),i.outerWidth()-e.layMain.width()),o=function(e){if(a&&l){if(e=e.eq(0),!e.find(".layui-table-patch")[0]){var i=t('<th class="layui-table-patch"><div class="layui-table-cell"></div></th>');i.find("div").css({width:a}),e.find("tr").append(i)}}else e.find(".layui-table-patch").remove()};o(e.layHeader),o(e.layTotal);var r=e.layMain.height(),d=r-l;e.layFixed.find(k).css("height",i.height()>=d?d:"auto"),e.layFixRight[n>0?"removeClass":"addClass"](f),e.layFixRight.css("right",a-1)},j.prototype.events=function(){var e,i=this,a=i.config,o=t("body"),c={},s=i.layHeader.find("th"),h=".layui-table-cell",p=a.elem.attr("lay-filter");i.layTool.on("click","*[lay-event]",function(e){var o=t(this),c=o.attr("lay-event"),s=function(e){var l=t(e.list),n=t('<ul class="layui-table-tool-panel"></ul>');n.html(l),a.height&&n.css("max-height",a.height-(i.layTool.outerHeight()||50)),o.find(".layui-table-tool-panel")[0]||o.append(n),i.renderForm(),n.on("click",function(e){layui.stope(e)}),e.done&&e.done(n,l)};switch(layui.stope(e),F.trigger("table.tool.panel.remove"),l.close(i.tipsIndex),c){case"LAYTABLE_COLS":s({list:function(){var e=[];return i.eachCols(function(t,i){i.field&&"normal"==i.type&&e.push('<li><input type="checkbox" name="'+i.field+'" data-key="'+i.key+'" data-parentkey="'+(i.parentKey||"")+'" lay-skin="primary" '+(i.hide?"":"checked")+' title="'+(i.title||i.field)+'" lay-filter="LAY_TABLE_TOOL_COLS"></li>')}),e.join("")}(),done:function(){n.on("checkbox(LAY_TABLE_TOOL_COLS)",function(e){var l=t(e.elem),n=this.checked,o=l.data("key"),r=l.data("parentkey");layui.each(a.cols,function(e,t){layui.each(t,function(t,l){if(e+"-"+t===o){var d=l.hide;l.hide=!n,i.elem.find('*[data-key="'+a.index+"-"+o+'"]')[n?"removeClass":"addClass"](f),d!=l.hide&&i.setParentCol(!n,r),i.resize()}})})})}});break;case"LAYTABLE_EXPORT":r.ie?l.tips("导出功能不支持 IE,请用 Chrome 等高级浏览器导出",this,{tips:3}):s({list:function(){return['<li data-type="csv">导出到 Csv 文件</li>','<li data-type="xls">导出到 Excel 文件</li>'].join("")}(),done:function(e,l){l.on("click",function(){var e=t(this).data("type");d.exportFile.call(i,a.id,null,e)})}});break;case"LAYTABLE_PRINT":var u=window.open("打印窗口","_blank"),h=["<style>","body{font-size: 12px; color: #666;}","table{width: 100%; border-collapse: collapse; border-spacing: 0;}","th,td{line-height: 20px; padding: 9px 15px; border: 1px solid #ccc; text-align: left; font-size: 12px; color: #666;}","a{color: #666; text-decoration:none;}","*.layui-hide{display: none}","</style>"].join(""),v=t(i.layHeader.html());v.append(i.layMain.find("table").html()),v.append(i.layTotal.find("table").html()),v.find("th.layui-table-patch").remove(),v.find(".layui-table-col-special").remove(),u.document.write(h+v.prop("outerHTML")),u.document.close(),u.print(),u.close()}layui.event.call(this,y,"toolbar("+p+")",t.extend({event:c,config:a},{}))}),s.on("mousemove",function(e){var i=t(this),a=i.offset().left,l=e.clientX-a;i.data("unresize")||c.resizeStart||(c.allowResize=i.width()-l<=10,o.css("cursor",c.allowResize?"col-resize":""))}).on("mouseleave",function(){t(this);c.resizeStart||o.css("cursor","")}).on("mousedown",function(e){var l=t(this);if(c.allowResize){var n=l.data("key");e.preventDefault(),c.resizeStart=!0,c.offset=[e.clientX,e.clientY],i.getCssRule(n,function(e){var t=e.style.width||l.outerWidth();c.rule=e,c.ruleWidth=parseFloat(t),c.minWidth=l.data("minwidth")||a.cellMinWidth})}}),F.on("mousemove",function(t){if(c.resizeStart){if(t.preventDefault(),c.rule){var a=c.ruleWidth+t.clientX-c.offset[0];a<c.minWidth&&(a=c.minWidth),c.rule.style.width=a+"px",l.close(i.tipsIndex)}e=1}}).on("mouseup",function(t){c.resizeStart&&(c={},o.css("cursor",""),i.scrollPatch()),2===e&&(e=null)}),s.on("click",function(a){var l,n=t(this),o=n.find(S),r=o.attr("lay-sort");return o[0]&&1!==e?(l="asc"===r?"desc":"desc"===r?null:"asc",void i.sort(n,l,null,!0)):e=2}).find(S+" .layui-edge ").on("click",function(e){var a=t(this),l=a.index(),n=a.parents("th").eq(0).data("field");layui.stope(e),0===l?i.sort(n,"asc",null,!0):i.sort(n,"desc",null,!0)});var v=function(e){var a=t(this),l=a.parents("tr").eq(0).data("index"),n=i.layBody.find('tr[data-index="'+l+'"]'),o=d.cache[i.key]||[];return o=o[l]||{},t.extend({tr:n,data:d.clearCacheKey(o),del:function(){d.cache[i.key][l]=[],n.remove(),i.scrollPatch()},update:function(e){e=e||{},layui.each(e,function(e,t){if(e in o){var a,l=n.children('td[data-field="'+e+'"]');o[e]=t,i.eachCols(function(t,i){i.field==e&&i.templet&&(a=i.templet)}),l.children(h).html(u({templet:a},t,o)),l.data("content",t)}})}},e)};i.elem.on("click",'input[name="layTableCheckbox"]+',function(){var e=t(this).prev(),a=i.layBody.find('input[name="layTableCheckbox"]'),l=e.parents("tr").eq(0).data("index"),n=e[0].checked,o="layTableAllChoose"===e.attr("lay-filter");o?(a.each(function(e,t){t.checked=n,i.setCheckData(e,n)}),i.syncCheckAll(),i.renderForm("checkbox")):(i.setCheckData(l,n),i.syncCheckAll()),layui.event.call(e[0],y,"checkbox("+p+")",v.call(e[0],{checked:n,type:o?"all":"one"}))}),i.elem.on("click",'input[lay-type="layTableRadio"]+',function(){var e=t(this).prev(),a=e[0].checked,l=d.cache[i.key],n=e.parents("tr").eq(0).data("index");layui.each(l,function(e,t){n===e?t.LAY_CHECKED=!0:delete t.LAY_CHECKED}),i.setThisRowChecked(n),layui.event.call(this,y,"radio("+p+")",v.call(this,{checked:a}))}),i.layBody.on("mouseenter","tr",function(){var e=t(this),a=e.index();e.data("off")||i.layBody.find("tr:eq("+a+")").addClass(_)}).on("mouseleave","tr",function(){var e=t(this),a=e.index();e.data("off")||i.layBody.find("tr:eq("+a+")").removeClass(_)}).on("click","tr",function(){m.call(this,"row")}).on("dblclick","tr",function(){m.call(this,"rowDouble")});var m=function(e){var i=t(this);i.data("off")||layui.event.call(this,y,e+"("+p+")",v.call(i.children("td")[0]))};i.layBody.on("change","."+W,function(){var e=t(this),a=this.value,l=e.parent().data("field"),n=e.parents("tr").eq(0).data("index"),o=d.cache[i.key][n];o[l]=a,layui.event.call(this,y,"edit("+p+")",v.call(this,{value:a,field:l}))}).on("blur","."+W,function(){var e,a=t(this),l=this,n=a.parent().data("field"),o=a.parents("tr").eq(0).data("index"),r=d.cache[i.key][o];i.eachCols(function(t,i){i.field==n&&i.templet&&(e=i.templet)}),a.siblings(h).html(function(t){return u({templet:e},t,r)}(l.value)),a.parent().data("content",l.value),a.remove()}),i.layBody.on("click","td",function(e){var i=t(this),a=(i.data("field"),i.data("edit")),l=i.children(h);if(!i.data("off")&&a){var n=t('<input class="layui-input '+W+'">');return n[0].value=i.data("content")||l.text(),i.find("."+W)[0]||i.append(n),n.focus(),void layui.stope(e)}}).on("mouseenter","td",function(){b.call(this)}).on("mouseleave","td",function(){b.call(this,"hide")});var g="layui-table-grid-down",b=function(e){var i=t(this),a=i.children(h);if(!i.data("off"))if(e)i.find(".layui-table-grid-down").remove();else if(a.prop("scrollWidth")>a.outerWidth()){if(a.find("."+g)[0])return;i.append('<div class="'+g+'"><i class="layui-icon layui-icon-down"></i></div>')}};i.layBody.on("click","."+g,function(e){var n=t(this),o=n.parent(),d=o.children(h);i.tipsIndex=l.tips(['<div class="layui-table-tips-main" style="margin-top: -'+(d.height()+16)+"px;"+function(){return"sm"===a.size?"padding: 4px 15px; font-size: 12px;":"lg"===a.size?"padding: 14px 15px;":""}()+'">',d.html(),"</div>",'<i class="layui-icon layui-table-tips-c layui-icon-close"></i>'].join(""),d[0],{tips:[3,""],time:-1,anim:-1,maxWidth:r.ios||r.android?300:i.elem.width()/2,isOutAnim:!1,skin:"layui-table-tips",success:function(e,t){e.find(".layui-table-tips-c").on("click",function(){l.close(t)})}}),layui.stope(e)}),i.layBody.on("click","*[lay-event]",function(){var e=t(this),a=e.parents("tr").eq(0).data("index");layui.event.call(this,y,"tool("+p+")",v.call(this,{event:e.attr("lay-event")})),i.setThisRowChecked(a)}),i.layMain.on("scroll",function(){var e=t(this),a=e.scrollLeft(),n=e.scrollTop();i.layHeader.scrollLeft(a),i.layTotal.scrollLeft(a),i.layFixed.find(k).scrollTop(n),l.close(i.tipsIndex)}),R.on("resize",function(){i.resize()})},function(){F.on("click",function(){F.trigger("table.remove.tool.panel")}),F.on("table.remove.tool.panel",function(){t(".layui-table-tool-panel").remove()})}(),d.init=function(e,i){i=i||{};var a=this,l=t(e?'table[lay-filter="'+e+'"]':h+"[lay-data]"),n="Table element property lay-data configuration item has a syntax error: ";return l.each(function(){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){o.error(n+l)}var c=[],s=t.extend({elem:this,cols:[],data:[],skin:a.attr("lay-skin"),size:a.attr("lay-size"),even:"string"==typeof a.attr("lay-even")},d.config,i,l);e&&a.hide(),a.find("thead>tr").each(function(e){s.cols[e]=[],t(this).children().each(function(i){var a=t(this),l=a.attr("lay-data");try{l=new Function("return "+l)()}catch(r){return o.error(n+l)}var d=t.extend({title:a.text(),colspan:a.attr("colspan")||0,rowspan:a.attr("rowspan")||0},l);d.colspan<2&&c.push(d),s.cols[e].push(d)})}),a.find("tbody>tr").each(function(e){var i=t(this),a={};i.children("td").each(function(e,i){var l=t(this),n=l.data("field");if(n)return a[n]=l.html()}),layui.each(c,function(e,t){var l=i.children("td").eq(e);a[t.field]=l.html()}),s.data[e]=a}),d.render(s)}),a},c.that={},c.config={},d.eachCols=function(e,i,a){var l=c.config[e]||{},n=[],o=0;a=t.extend(!0,[],a||l.cols),layui.each(a,function(e,t){layui.each(t,function(t,i){if(i.colGroup){var l=0;o++,i.CHILD_COLS=[],layui.each(a[e+1],function(e,t){t.PARENT_COL_INDEX||l>1&&l==i.colspan||(t.PARENT_COL_INDEX=o,i.CHILD_COLS.push(t),l+=parseInt(t.colspan>1?t.colspan:1))})}i.PARENT_COL_INDEX||n.push(i)})});var r=function(e){layui.each(e||n,function(e,t){return t.CHILD_COLS?r(t.CHILD_COLS):void("function"==typeof i&&i(e,t))})};r()},d.checkStatus=function(e){var t=0,i=0,a=[],l=d.cache[e]||[];return layui.each(l,function(e,l){return l.constructor===Array?void i++:void(l[d.config.checkName]&&(t++,a.push(d.clearCacheKey(l))))}),{data:a,isAll:!!l.length&&t===l.length-i}},d.exportFile=function(e,t,i){var a=this;t=t||d.clearCacheKey(d.cache[e]),i=i||"csv";var l=c.config[e]||{},n={csv:"text/csv",xls:"application/vnd.ms-excel"}[i],s=document.createElement("a");return r.ie?o.error("IE_NOT_SUPPORT_EXPORTS"):(s.href="data:"+n+";charset=utf-8,\ufeff"+encodeURIComponent(function(){var i=[],l=[],n=[];return layui.each(t,function(t,a){var n=[];"object"==typeof e?(layui.each(e,function(e,a){0==t&&i.push(a||"")}),layui.each(d.clearCacheKey(a),function(e,t){n.push('"'+(t||"")+'"')})):d.eachCols(e,function(e,l){if(l.field&&"normal"==l.type&&!l.hide){var o=a[l.field];void 0!==o&&null!==o||(o=""),0==t&&i.push(l.title||""),n.push('"'+u(l,o,a,"text")+'"')}}),l.push(n.join(","))}),layui.each(a.dataTotal,function(e,t){n.push(t)}),i.join(",")+"\r\n"+l.join("\r\n")+"\r\n"+n.join(",")}()),s.download=(l.title||"table_"+(l.index||""))+"."+i,document.body.appendChild(s),s.click(),void document.body.removeChild(s))},d.resize=function(e){if(e){var t=s(e);if(!t)return;c.that[e].resize()}else layui.each(c.that,function(){this.resize()})},d.reload=function(e,t){var i=s(e);if(i){var a=c.that[e];return a.reload(t),c.call(a)}},d.render=function(e){var t=new j(e);return c.call(t)},d.clearCacheKey=function(e){return e=t.extend({},e),delete e[d.config.checkName],delete e[d.config.indexName],e},d.init(),e(y,d)});layui.define("jquery",function(e){"use strict";var i=layui.$,n=(layui.hint(),layui.device(),{config:{},set:function(e){var n=this;return n.config=i.extend({},n.config,e),n},on:function(e,i){return layui.onevent.call(this,t,e,i)}}),t="carousel",a="layui-this",l=">*[carousel-item]>*",o="layui-carousel-left",r="layui-carousel-right",d="layui-carousel-prev",s="layui-carousel-next",u="layui-carousel-arrow",c="layui-carousel-ind",m=function(e){var t=this;t.config=i.extend({},t.config,n.config,e),t.render()};m.prototype.config={width:"600px",height:"280px",full:!1,arrow:"hover",indicator:"inside",autoplay:!0,interval:3e3,anim:"",trigger:"click",index:0},m.prototype.render=function(){var e=this,n=e.config;n.elem=i(n.elem),n.elem[0]&&(e.elemItem=n.elem.find(l),n.index<0&&(n.index=0),n.index>=e.elemItem.length&&(n.index=e.elemItem.length-1),n.interval<800&&(n.interval=800),n.full?n.elem.css({position:"fixed",width:"100%",height:"100%",zIndex:9999}):n.elem.css({width:n.width,height:n.height}),n.elem.attr("lay-anim",n.anim),e.elemItem.eq(n.index).addClass(a),e.elemItem.length<=1||(e.indicator(),e.arrow(),e.autoplay(),e.events()))},m.prototype.reload=function(e){var n=this;clearInterval(n.timer),n.config=i.extend({},n.config,e),n.render()},m.prototype.prevIndex=function(){var e=this,i=e.config,n=i.index-1;return n<0&&(n=e.elemItem.length-1),n},m.prototype.nextIndex=function(){var e=this,i=e.config,n=i.index+1;return n>=e.elemItem.length&&(n=0),n},m.prototype.addIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index+e,n.index>=i.elemItem.length&&(n.index=0)},m.prototype.subIndex=function(e){var i=this,n=i.config;e=e||1,n.index=n.index-e,n.index<0&&(n.index=i.elemItem.length-1)},m.prototype.autoplay=function(){var e=this,i=e.config;i.autoplay&&(clearInterval(e.timer),e.timer=setInterval(function(){e.slide()},i.interval))},m.prototype.arrow=function(){var e=this,n=e.config,t=i(['<button class="layui-icon '+u+'" lay-type="sub">'+("updown"===n.anim?"":"")+"</button>",'<button class="layui-icon '+u+'" lay-type="add">'+("updown"===n.anim?"":"")+"</button>"].join(""));n.elem.attr("lay-arrow",n.arrow),n.elem.find("."+u)[0]&&n.elem.find("."+u).remove(),n.elem.append(t),t.on("click",function(){var n=i(this),t=n.attr("lay-type");e.slide(t)})},m.prototype.indicator=function(){var e=this,n=e.config,t=e.elemInd=i(['<div class="'+c+'"><ul>',function(){var i=[];return layui.each(e.elemItem,function(e){i.push("<li"+(n.index===e?' class="layui-this"':"")+"></li>")}),i.join("")}(),"</ul></div>"].join(""));n.elem.attr("lay-indicator",n.indicator),n.elem.find("."+c)[0]&&n.elem.find("."+c).remove(),n.elem.append(t),"updown"===n.anim&&t.css("margin-top",-(t.height()/2)),t.find("li").on("hover"===n.trigger?"mouseover":n.trigger,function(){var t=i(this),a=t.index();a>n.index?e.slide("add",a-n.index):a<n.index&&e.slide("sub",n.index-a)})},m.prototype.slide=function(e,i){var n=this,l=n.elemItem,u=n.config,c=u.index,m=u.elem.attr("lay-filter");n.haveSlide||("sub"===e?(n.subIndex(i),l.eq(u.index).addClass(d),setTimeout(function(){l.eq(c).addClass(r),l.eq(u.index).addClass(r)},50)):(n.addIndex(i),l.eq(u.index).addClass(s),setTimeout(function(){l.eq(c).addClass(o),l.eq(u.index).addClass(o)},50)),setTimeout(function(){l.removeClass(a+" "+d+" "+s+" "+o+" "+r),l.eq(u.index).addClass(a),n.haveSlide=!1},300),n.elemInd.find("li").eq(u.index).addClass(a).siblings().removeClass(a),n.haveSlide=!0,layui.event.call(this,t,"change("+m+")",{index:u.index,prevIndex:c,item:l.eq(u.index)}))},m.prototype.events=function(){var e=this,i=e.config;i.elem.data("haveEvents")||(i.elem.on("mouseenter",function(){clearInterval(e.timer)}).on("mouseleave",function(){e.autoplay()}),i.elem.data("haveEvents",!0))},n.render=function(e){var i=new m(e);return i},e(t,n)});layui.define("jquery",function(e){"use strict";var a=layui.jquery,i={config:{},index:layui.rate?layui.rate.index+1e4:0,set:function(e){var i=this;return i.config=a.extend({},i.config,e),i},on:function(e,a){return layui.onevent.call(this,n,e,a)}},l=function(){var e=this,a=e.config;return{setvalue:function(a){e.setvalue.call(e,a)},config:a}},n="rate",t="layui-rate",o="layui-icon-rate",s="layui-icon-rate-solid",u="layui-icon-rate-half",r="layui-icon-rate-solid layui-icon-rate-half",c="layui-icon-rate-solid layui-icon-rate",f="layui-icon-rate layui-icon-rate-half",v=function(e){var l=this;l.index=++i.index,l.config=a.extend({},l.config,i.config,e),l.render()};v.prototype.config={length:5,text:!1,readonly:!1,half:!1,value:0,theme:""},v.prototype.render=function(){var e=this,i=e.config,l=i.theme?'style="color: '+i.theme+';"':"";i.elem=a(i.elem),parseInt(i.value)!==i.value&&(i.half||(i.value=Math.ceil(i.value)-i.value<.5?Math.ceil(i.value):Math.floor(i.value)));for(var n='<ul class="layui-rate" '+(i.readonly?"readonly":"")+">",u=1;u<=i.length;u++){var r='<li class="layui-inline"><i class="layui-icon '+(u>Math.floor(i.value)?o:s)+'" '+l+"></i></li>";i.half&&parseInt(i.value)!==i.value&&u==Math.ceil(i.value)?n=n+'<li><i class="layui-icon layui-icon-rate-half" '+l+"></i></li>":n+=r}n+="</ul>"+(i.text?'<span class="layui-inline">'+i.value+"星":"")+"</span>";var c=i.elem,f=c.next("."+t);f[0]&&f.remove(),e.elemTemp=a(n),i.span=e.elemTemp.next("span"),i.setText&&i.setText(i.value),c.html(e.elemTemp),c.addClass("layui-inline"),i.readonly||e.action()},v.prototype.setvalue=function(e){var a=this,i=a.config;i.value=e,a.render()},v.prototype.action=function(){var e=this,i=e.config,l=e.elemTemp,n=l.find("i").width();l.children("li").each(function(e){var t=e+1,v=a(this);v.on("click",function(e){if(i.value=t,i.half){var o=e.pageX-a(this).offset().left;o<=n/2&&(i.value=i.value-.5)}i.text&&l.next("span").text(i.value+"星"),i.choose&&i.choose(i.value),i.setText&&i.setText(i.value)}),v.on("mousemove",function(e){if(l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+t+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half){var c=e.pageX-a(this).offset().left;c<=n/2&&v.children("i").addClass(u).removeClass(s)}}),v.on("mouseleave",function(){l.find("i").each(function(){a(this).addClass(o).removeClass(r)}),l.find("i:lt("+Math.floor(i.value)+")").each(function(){a(this).addClass(s).removeClass(f)}),i.half&&parseInt(i.value)!==i.value&&l.children("li:eq("+Math.floor(i.value)+")").children("i").addClass(u).removeClass(c)})})},v.prototype.events=function(){var e=this;e.config},i.render=function(e){var a=new v(e);return l.call(a)},e(n,i)});layui.define("jquery",function(t){"use strict";var e=layui.$,i={fixbar:function(t){var i,n,a="layui-fixbar",o="layui-fixbar-top",r=e(document),l=e("body");t=e.extend({showHeight:200},t),t.bar1=t.bar1===!0?"":t.bar1,t.bar2=t.bar2===!0?"":t.bar2,t.bgcolor=t.bgcolor?"background-color:"+t.bgcolor:"";var c=[t.bar1,t.bar2,""],g=e(['<ul class="'+a+'">',t.bar1?'<li class="layui-icon" lay-type="bar1" style="'+t.bgcolor+'">'+c[0]+"</li>":"",t.bar2?'<li class="layui-icon" lay-type="bar2" style="'+t.bgcolor+'">'+c[1]+"</li>":"",'<li class="layui-icon '+o+'" lay-type="top" style="'+t.bgcolor+'">'+c[2]+"</li>","</ul>"].join("")),s=g.find("."+o),u=function(){var e=r.scrollTop();e>=t.showHeight?i||(s.show(),i=1):i&&(s.hide(),i=0)};e("."+a)[0]||("object"==typeof t.css&&g.css(t.css),l.append(g),u(),g.find("li").on("click",function(){var i=e(this),n=i.attr("lay-type");"top"===n&&e("html,body").animate({scrollTop:0},200),t.click&&t.click.call(this,n)}),r.on("scroll",function(){clearTimeout(n),n=setTimeout(function(){u()},100)}))},countdown:function(t,e,i){var n=this,a="function"==typeof e,o=new Date(t).getTime(),r=new Date(!e||a?(new Date).getTime():e).getTime(),l=o-r,c=[Math.floor(l/864e5),Math.floor(l/36e5)%24,Math.floor(l/6e4)%60,Math.floor(l/1e3)%60];a&&(i=e);var g=setTimeout(function(){n.countdown(t,r+1e3,i)},1e3);return i&&i(l>0?c:[0,0,0,0],e,g),l<=0&&clearTimeout(g),g},timeAgo:function(t,e){var i=this,n=[[],[]],a=(new Date).getTime()-new Date(t).getTime();return a>6912e5?(a=new Date(t),n[0][0]=i.digit(a.getFullYear(),4),n[0][1]=i.digit(a.getMonth()+1),n[0][2]=i.digit(a.getDate()),e||(n[1][0]=i.digit(a.getHours()),n[1][1]=i.digit(a.getMinutes()),n[1][2]=i.digit(a.getSeconds())),n[0].join("-")+" "+n[1].join(":")):a>=864e5?(a/1e3/60/60/24|0)+"天前":a>=36e5?(a/1e3/60/60|0)+"小时前":a>=12e4?(a/1e3/60|0)+"分钟前":a<0?"未来":"刚刚"},digit:function(t,e){var i="";t=String(t),e=e||2;for(var n=t.length;n<e;n++)i+="0";return t<Math.pow(10,e)?i+(0|t):t},toDateString:function(t,e){var i=this,n=new Date(t||new Date),a=[i.digit(n.getFullYear(),4),i.digit(n.getMonth()+1),i.digit(n.getDate())],o=[i.digit(n.getHours()),i.digit(n.getMinutes()),i.digit(n.getSeconds())];return e=e||"yyyy-MM-dd HH:mm:ss",e.replace(/yyyy/g,a[0]).replace(/MM/g,a[1]).replace(/dd/g,a[2]).replace(/HH/g,o[0]).replace(/mm/g,o[1]).replace(/ss/g,o[2])},escape:function(t){return String(t||"").replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")},event:function(t,n,a){n=i.event[t]=e.extend(!0,i.event[t],n)||{},e("body").on(a||"click","*["+t+"]",function(){var i=e(this),a=i.attr(t);n[a]&&n[a].call(this,i)})}};!function(t,e,i){"$:nomunge";function n(){a=e[l](function(){o.each(function(){var e=t(this),i=e.width(),n=e.height(),a=t.data(this,g);(i!==a.w||n!==a.h)&&e.trigger(c,[a.w=i,a.h=n])}),n()},r[s])}var a,o=t([]),r=t.resize=t.extend(t.resize,{}),l="setTimeout",c="resize",g=c+"-special-event",s="delay",u="throttleWindow";r[s]=250,r[u]=!0,t.event.special[c]={setup:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.add(e),t.data(this,g,{w:e.width(),h:e.height()}),1===o.length&&n()},teardown:function(){if(!r[u]&&this[l])return!1;var e=t(this);o=o.not(e),e.removeData(g),o.length||clearTimeout(a)},add:function(e){function n(e,n,o){var r=t(this),l=t.data(this,g)||{};l.w=n!==i?n:r.width(),l.h=o!==i?o:r.height(),a.apply(this,arguments)}if(!r[u]&&this[l])return!1;var a;return t.isFunction(e)?(a=e,n):(a=e.handler,void(e.handler=n))}}}(e,window),t("util",i)});layui.define("jquery",function(e){"use strict";var l=layui.$,o=function(e){},t='<i class="layui-anim layui-anim-rotate layui-anim-loop layui-icon "></i>';o.prototype.load=function(e){var o,i,n,r,a=this,c=0;e=e||{};var f=l(e.elem);if(f[0]){var m=l(e.scrollElem||document),u=e.mb||50,s=!("isAuto"in e)||e.isAuto,v=e.end||"没有更多了",y=e.scrollElem&&e.scrollElem!==document,d="<cite>加载更多</cite>",h=l('<div class="layui-flow-more"><a href="javascript:;">'+d+"</a></div>");f.find(".layui-flow-more")[0]||f.append(h);var p=function(e,t){e=l(e),h.before(e),t=0==t||null,t?h.html(v):h.find("a").html(d),i=t,o=null,n&&n()},g=function(){o=!0,h.find("a").html(t),"function"==typeof e.done&&e.done(++c,p)};if(g(),h.find("a").on("click",function(){l(this);i||o||g()}),e.isLazyimg)var n=a.lazyimg({elem:e.elem+" img",scrollElem:e.scrollElem});return s?(m.on("scroll",function(){var e=l(this),t=e.scrollTop();r&&clearTimeout(r),i||(r=setTimeout(function(){var i=y?e.height():l(window).height(),n=y?e.prop("scrollHeight"):document.documentElement.scrollHeight;n-t-i<=u&&(o||g())},100))}),a):a}},o.prototype.lazyimg=function(e){var o,t=this,i=0;e=e||{};var n=l(e.scrollElem||document),r=e.elem||"img",a=e.scrollElem&&e.scrollElem!==document,c=function(e,l){var o=n.scrollTop(),r=o+l,c=a?function(){return e.offset().top-n.offset().top+o}():e.offset().top;if(c>=o&&c<=r&&!e.attr("src")){var m=e.attr("lay-src");layui.img(m,function(){var l=t.lazyimg.elem.eq(i);e.attr("src",m).removeAttr("lay-src"),l[0]&&f(l),i++})}},f=function(e,o){var f=a?(o||n).height():l(window).height(),m=n.scrollTop(),u=m+f;if(t.lazyimg.elem=l(r),e)c(e,f);else for(var s=0;s<t.lazyimg.elem.length;s++){var v=t.lazyimg.elem.eq(s),y=a?function(){return v.offset().top-n.offset().top+m}():v.offset().top;if(c(v,f),i=s,y>u)break}};if(f(),!o){var m;n.on("scroll",function(){var e=l(this);m&&clearTimeout(m),m=setTimeout(function(){f(null,e)},50)}),o=!0}return f},e("flow",new o)});layui.define(["layer","form"],function(t){"use strict";var e=layui.$,i=layui.layer,a=layui.form,l=(layui.hint(),layui.device()),n="layedit",o="layui-show",r="layui-disabled",c=function(){var t=this;t.index=0,t.config={tool:["strong","italic","underline","del","|","left","center","right","|","link","unlink","face","image"],hideTool:[],height:280}};c.prototype.set=function(t){var i=this;return e.extend(!0,i.config,t),i},c.prototype.on=function(t,e){return layui.onevent(n,t,e)},c.prototype.build=function(t,i){i=i||{};var a=this,n=a.config,r="layui-layedit",c=e("string"==typeof t?"#"+t:t),u="LAY_layedit_"+ ++a.index,d=c.next("."+r),y=e.extend({},n,i),f=function(){var t=[],e={};return layui.each(y.hideTool,function(t,i){e[i]=!0}),layui.each(y.tool,function(i,a){C[a]&&!e[a]&&t.push(C[a])}),t.join("")}(),m=e(['<div class="'+r+'">','<div class="layui-unselect layui-layedit-tool">'+f+"</div>",'<div class="layui-layedit-iframe">','<iframe id="'+u+'" name="'+u+'" textarea="'+t+'" frameborder="0"></iframe>',"</div>","</div>"].join(""));return l.ie&&l.ie<8?c.removeClass("layui-hide").addClass(o):(d[0]&&d.remove(),s.call(a,m,c[0],y),c.addClass("layui-hide").after(m),a.index)},c.prototype.getContent=function(t){var e=u(t);if(e[0])return d(e[0].document.body.innerHTML)},c.prototype.getText=function(t){var i=u(t);if(i[0])return e(i[0].document.body).text()},c.prototype.setContent=function(t,i,a){var l=u(t);l[0]&&(a?e(l[0].document.body).append(i):e(l[0].document.body).html(i),layedit.sync(t))},c.prototype.sync=function(t){var i=u(t);if(i[0]){var a=e("#"+i[1].attr("textarea"));a.val(d(i[0].document.body.innerHTML))}},c.prototype.getSelection=function(t){var e=u(t);if(e[0]){var i=m(e[0].document);return document.selection?i.text:i.toString()}};var s=function(t,i,a){var l=this,n=t.find("iframe");n.css({height:a.height}).on("load",function(){var o=n.contents(),r=n.prop("contentWindow"),c=o.find("head"),s=e(["<style>","*{margin: 0; padding: 0;}","body{padding: 10px; line-height: 20px; overflow-x: hidden; word-wrap: break-word; font: 14px Helvetica Neue,Helvetica,PingFang SC,Microsoft YaHei,Tahoma,Arial,sans-serif; -webkit-box-sizing: border-box !important; -moz-box-sizing: border-box !important; box-sizing: border-box !important;}","a{color:#01AAED; text-decoration:none;}a:hover{color:#c00}","p{margin-bottom: 10px;}","img{display: inline-block; border: none; vertical-align: middle;}","pre{margin: 10px 0; padding: 10px; line-height: 20px; border: 1px solid #ddd; border-left-width: 6px; background-color: #F2F2F2; color: #333; font-family: Courier New; font-size: 12px;}","</style>"].join("")),u=o.find("body");c.append(s),u.attr("contenteditable","true").css({"min-height":a.height}).html(i.value||""),y.apply(l,[r,n,i,a]),g.call(l,r,t,a)})},u=function(t){var i=e("#LAY_layedit_"+t),a=i.prop("contentWindow");return[a,i]},d=function(t){return 8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),t},y=function(t,a,n,o){var r=t.document,c=e(r.body);c.on("keydown",function(t){var e=t.keyCode;if(13===e){var a=m(r),l=p(a),n=l.parentNode;if("pre"===n.tagName.toLowerCase()){if(t.shiftKey)return;return i.msg("请暂时用shift+enter"),!1}r.execCommand("formatBlock",!1,"<p>")}}),e(n).parents("form").on("submit",function(){var t=c.html();8==l.ie&&(t=t.replace(/<.+>/g,function(t){return t.toLowerCase()})),n.value=t}),c.on("paste",function(e){r.execCommand("formatBlock",!1,"<p>"),setTimeout(function(){f.call(t,c),n.value=c.html()},100)})},f=function(t){var i=this;i.document;t.find("*[style]").each(function(){var t=this.style.textAlign;this.removeAttribute("style"),e(this).css({"text-align":t||""})}),t.find("table").addClass("layui-table"),t.find("script,link").remove()},m=function(t){return t.selection?t.selection.createRange():t.getSelection().getRangeAt(0)},p=function(t){return t.endContainer||t.parentElement().childNodes[0]},v=function(t,i,a){var l=this.document,n=document.createElement(t);for(var o in i)n.setAttribute(o,i[o]);if(n.removeAttribute("text"),l.selection){var r=a.text||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.pasteHTML(e(n).prop("outerHTML")),a.select()}else{var r=a.toString()||i.text;if("a"===t&&!r)return;r&&(n.innerHTML=r),a.deleteContents(),a.insertNode(n)}},h=function(t,i){var a=this.document,l="layedit-tool-active",n=p(m(a)),o=function(e){return t.find(".layedit-tool-"+e)};i&&i[i.hasClass(l)?"removeClass":"addClass"](l),t.find(">i").removeClass(l),o("unlink").addClass(r),e(n).parents().each(function(){var t=this.tagName.toLowerCase(),e=this.style.textAlign;"b"!==t&&"strong"!==t||o("b").addClass(l),"i"!==t&&"em"!==t||o("i").addClass(l),"u"===t&&o("u").addClass(l),"strike"===t&&o("d").addClass(l),"p"===t&&("center"===e?o("center").addClass(l):"right"===e?o("right").addClass(l):o("left").addClass(l)),"a"===t&&(o("link").addClass(l),o("unlink").removeClass(r))})},g=function(t,a,l){var n=t.document,o=e(n.body),c={link:function(i){var a=p(i),l=e(a).parent();b.call(o,{href:l.attr("href"),target:l.attr("target")},function(e){var a=l[0];"A"===a.tagName?a.href=e.url:v.call(t,"a",{target:e.target,href:e.url,text:e.url},i)})},unlink:function(t){n.execCommand("unlink")},face:function(e){x.call(this,function(i){v.call(t,"img",{src:i.src,alt:i.alt},e)})},image:function(a){var n=this;layui.use("upload",function(o){var r=l.uploadImage||{};o.render({url:r.url,method:r.type,elem:e(n).find("input")[0],done:function(e){0==e.code?(e.data=e.data||{},v.call(t,"img",{src:e.data.src,alt:e.data.title},a)):i.msg(e.msg||"上传失败")}})})},code:function(e){k.call(o,function(i){v.call(t,"pre",{text:i.code,"lay-lang":i.lang},e)})},help:function(){i.open({type:2,title:"帮助",area:["600px","380px"],shadeClose:!0,shade:.1,skin:"layui-layer-msg",content:["http://www.layui.com/about/layedit/help.html","no"]})}},s=a.find(".layui-layedit-tool"),u=function(){var i=e(this),a=i.attr("layedit-event"),l=i.attr("lay-command");if(!i.hasClass(r)){o.focus();var u=m(n);u.commonAncestorContainer;l?(n.execCommand(l),/justifyLeft|justifyCenter|justifyRight/.test(l)&&n.execCommand("formatBlock",!1,"<p>"),setTimeout(function(){o.focus()},10)):c[a]&&c[a].call(this,u),h.call(t,s,i)}},d=/image/;s.find(">i").on("mousedown",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)||u.call(this)}).on("click",function(){var t=e(this),i=t.attr("layedit-event");d.test(i)&&u.call(this)}),o.on("click",function(){h.call(t,s),i.close(x.index)})},b=function(t,e){var l=this,n=i.open({type:1,id:"LAY_layedit_link",area:"350px",shade:.05,shadeClose:!0,moveType:1,title:"超链接",skin:"layui-layer-msg",content:['<ul class="layui-form" style="margin: 15px;">','<li class="layui-form-item">','<label class="layui-form-label" style="width: 60px;">URL</label>','<div class="layui-input-block" style="margin-left: 90px">','<input name="url" lay-verify="url" value="'+(t.href||"")+'" autofocus="true" autocomplete="off" class="layui-input">',"</div>","</li>",'<li class="layui-form-item">','<label class="layui-form-label" style="width: 60px;">打开方式</label>','<div class="layui-input-block" style="margin-left: 90px">','<input type="radio" name="target" value="_self" class="layui-input" title="当前窗口"'+("_self"!==t.target&&t.target?"":"checked")+">",'<input type="radio" name="target" value="_blank" class="layui-input" title="新窗口" '+("_blank"===t.target?"checked":"")+">","</div>","</li>",'<li class="layui-form-item" style="text-align: center;">','<button type="button" lay-submit lay-filter="layedit-link-yes" class="layui-btn"> 确定 </button>','<button style="margin-left: 20px;" type="button" class="layui-btn layui-btn-primary"> 取消 </button>',"</li>","</ul>"].join(""),success:function(t,n){var o="submit(layedit-link-yes)";a.render("radio"),t.find(".layui-btn-primary").on("click",function(){i.close(n),l.focus()}),a.on(o,function(t){i.close(b.index),e&&e(t.field)})}});b.index=n},x=function(t){var a=function(){var t=["[微笑]","[嘻嘻]","[哈哈]","[可爱]","[可怜]","[挖鼻]","[吃惊]","[害羞]","[挤眼]","[闭嘴]","[鄙视]","[爱你]","[泪]","[偷笑]","[亲亲]","[生病]","[太开心]","[白眼]","[右哼哼]","[左哼哼]","[嘘]","[衰]","[委屈]","[吐]","[哈欠]","[抱抱]","[怒]","[疑问]","[馋嘴]","[拜拜]","[思考]","[汗]","[困]","[睡]","[钱]","[失望]","[酷]","[色]","[哼]","[鼓掌]","[晕]","[悲伤]","[抓狂]","[黑线]","[阴险]","[怒骂]","[互粉]","[心]","[伤心]","[猪头]","[熊猫]","[兔子]","[ok]","[耶]","[good]","[NO]","[赞]","[来]","[弱]","[草泥马]","[神马]","[囧]","[浮云]","[给力]","[围观]","[威武]","[奥特曼]","[礼物]","[钟]","[话筒]","[蜡烛]","[蛋糕]"],e={};return layui.each(t,function(t,i){e[i]=layui.cache.dir+"images/face/"+t+".gif"}),e}();return x.hide=x.hide||function(t){"face"!==e(t.target).attr("layedit-event")&&i.close(x.index)},x.index=i.tips(function(){var t=[];return layui.each(a,function(e,i){t.push('<li title="'+e+'"><img src="'+i+'" alt="'+e+'"></li>')}),'<ul class="layui-clear">'+t.join("")+"</ul>"}(),this,{tips:1,time:0,skin:"layui-box layui-util-face",maxWidth:500,success:function(l,n){l.css({marginTop:-4,marginLeft:-10}).find(".layui-clear>li").on("click",function(){t&&t({src:a[this.title],alt:this.title}),i.close(n)}),e(document).off("click",x.hide).on("click",x.hide)}})},k=function(t){var e=this,l=i.open({type:1,id:"LAY_layedit_code",area:"550px",shade:.05,shadeClose:!0,moveType:1,title:"插入代码",skin:"layui-layer-msg",content:['<ul class="layui-form layui-form-pane" style="margin: 15px;">','<li class="layui-form-item">','<label class="layui-form-label">请选择语言</label>','<div class="layui-input-block">','<select name="lang">','<option value="JavaScript">JavaScript</option>','<option value="HTML">HTML</option>','<option value="CSS">CSS</option>','<option value="Java">Java</option>','<option value="PHP">PHP</option>','<option value="C#">C#</option>','<option value="Python">Python</option>','<option value="Ruby">Ruby</option>','<option value="Go">Go</option>',"</select>","</div>","</li>",'<li class="layui-form-item layui-form-text">','<label class="layui-form-label">代码</label>','<div class="layui-input-block">','<textarea name="code" lay-verify="required" autofocus="true" class="layui-textarea" style="height: 200px;"></textarea>',"</div>","</li>",'<li class="layui-form-item" style="text-align: center;">','<button type="button" lay-submit lay-filter="layedit-code-yes" class="layui-btn"> 确定 </button>','<button style="margin-left: 20px;" type="button" class="layui-btn layui-btn-primary"> 取消 </button>',"</li>","</ul>"].join(""),success:function(l,n){var o="submit(layedit-code-yes)";a.render("select"),l.find(".layui-btn-primary").on("click",function(){i.close(n),e.focus()}),a.on(o,function(e){i.close(k.index),t&&t(e.field)})}});k.index=l},C={html:'<i class="layui-icon layedit-tool-html" title="HTML源代码" lay-command="html" layedit-event="html""></i><span class="layedit-tool-mid"></span>',strong:'<i class="layui-icon layedit-tool-b" title="加粗" lay-command="Bold" layedit-event="b""></i>',italic:'<i class="layui-icon layedit-tool-i" title="斜体" lay-command="italic" layedit-event="i""></i>',underline:'<i class="layui-icon layedit-tool-u" title="下划线" lay-command="underline" layedit-event="u""></i>',del:'<i class="layui-icon layedit-tool-d" title="删除线" lay-command="strikeThrough" layedit-event="d""></i>',"|":'<span class="layedit-tool-mid"></span>',left:'<i class="layui-icon layedit-tool-left" title="左对齐" lay-command="justifyLeft" layedit-event="left""></i>',center:'<i class="layui-icon layedit-tool-center" title="居中对齐" lay-command="justifyCenter" layedit-event="center""></i>',right:'<i class="layui-icon layedit-tool-right" title="右对齐" lay-command="justifyRight" layedit-event="right""></i>',link:'<i class="layui-icon layedit-tool-link" title="插入链接" layedit-event="link""></i>',unlink:'<i class="layui-icon layedit-tool-unlink layui-disabled" title="清除链接" lay-command="unlink" layedit-event="unlink""></i>',face:'<i class="layui-icon layedit-tool-face" title="表情" layedit-event="face""></i>',image:'<i class="layui-icon layedit-tool-image" title="图片" layedit-event="image"><input type="file" name="file"></i>',code:'<i class="layui-icon layedit-tool-code" title="插入代码" layedit-event="code"></i>',help:'<i class="layui-icon layedit-tool-help" title="帮助" layedit-event="help"></i>'},w=new c;t(n,w)});layui.define("jquery",function(e){"use strict";var a=layui.$,l="http://www.layui.com/doc/modules/code.html";e("code",function(e){var t=[];e=e||{},e.elem=a(e.elem||".layui-code"),e.about=!("about"in e)||e.about,e.elem.each(function(){t.push(this)}),layui.each(t.reverse(),function(t,i){var c=a(i),o=c.html();(c.attr("lay-encode")||e.encode)&&(o=o.replace(/&(?!#?[a-zA-Z0-9]+;)/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/'/g,"'").replace(/"/g,""")),c.html('<ol class="layui-code-ol"><li>'+o.replace(/[\r\t\n]+/g,"</li><li>")+"</li></ol>"),c.find(">.layui-code-h3")[0]||c.prepend('<h3 class="layui-code-h3">'+(c.attr("lay-title")||e.title||"code")+(e.about?'<a href="'+l+'" target="_blank">layui.code</a>':"")+"</h3>");var d=c.find(">.layui-code-ol");c.addClass("layui-box layui-code-view"),(c.attr("lay-skin")||e.skin)&&c.addClass("layui-code-"+(c.attr("lay-skin")||e.skin)),(d.find("li").length/100|0)>0&&d.css("margin-left",(d.find("li").length/100|0)+"px"),(c.attr("lay-height")||e.height)&&d.css("max-height",c.attr("lay-height")||e.height)})})}).addcss("modules/code.css","skincodecss"); \ No newline at end of file diff --git a/src/main/resources/static/layui/layui.js b/src/main/resources/static/layui/layui.js new file mode 100644 index 0000000..4615b57 --- /dev/null +++ b/src/main/resources/static/layui/layui.js @@ -0,0 +1,2 @@ +/** layui-v2.5.5 MIT License By https://www.layui.com */ + ;!function(e){"use strict";var t=document,o={modules:{},status:{},timeout:10,event:{}},n=function(){this.v="2.5.5"},r=function(){var e=t.currentScript?t.currentScript.src:function(){for(var e,o=t.scripts,n=o.length-1,r=n;r>0;r--)if("interactive"===o[r].readyState){e=o[r].src;break}return e||o[n].src}();return e.substring(0,e.lastIndexOf("/")+1)}(),i=function(t){e.console&&console.error&&console.error("Layui hint: "+t)},a="undefined"!=typeof opera&&"[object Opera]"===opera.toString(),u={layer:"modules/layer",laydate:"modules/laydate",laypage:"modules/laypage",laytpl:"modules/laytpl",layim:"modules/layim",layedit:"modules/layedit",form:"modules/form",upload:"modules/upload",transfer:"modules/transfer",tree:"modules/tree",table:"modules/table",element:"modules/element",rate:"modules/rate",colorpicker:"modules/colorpicker",slider:"modules/slider",carousel:"modules/carousel",flow:"modules/flow",util:"modules/util",code:"modules/code",jquery:"modules/jquery",mobile:"modules/mobile","layui.all":"../layui.all"};n.prototype.cache=o,n.prototype.define=function(e,t){var n=this,r="function"==typeof e,i=function(){var e=function(e,t){layui[e]=t,o.status[e]=!0};return"function"==typeof t&&t(function(n,r){e(n,r),o.callback[n]=function(){t(e)}}),this};return r&&(t=e,e=[]),!layui["layui.all"]&&layui["layui.mobile"]?i.call(n):(n.use(e,i),n)},n.prototype.use=function(e,n,l){function s(e,t){var n="PLaySTATION 3"===navigator.platform?/^complete$/:/^(complete|loaded)$/;("load"===e.type||n.test((e.currentTarget||e.srcElement).readyState))&&(o.modules[f]=t,d.removeChild(v),function r(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void(o.status[f]?c():setTimeout(r,4))}())}function c(){l.push(layui[f]),e.length>1?y.use(e.slice(1),n,l):"function"==typeof n&&n.apply(layui,l)}var y=this,p=o.dir=o.dir?o.dir:r,d=t.getElementsByTagName("head")[0];e="string"==typeof e?[e]:e,window.jQuery&&jQuery.fn.on&&(y.each(e,function(t,o){"jquery"===o&&e.splice(t,1)}),layui.jquery=layui.$=jQuery);var f=e[0],m=0;if(l=l||[],o.host=o.host||(p.match(/\/\/([\s\S]+?)\//)||["//"+location.host+"/"])[0],0===e.length||layui["layui.all"]&&u[f]||!layui["layui.all"]&&layui["layui.mobile"]&&u[f])return c(),y;if(o.modules[f])!function g(){return++m>1e3*o.timeout/4?i(f+" is not a valid module"):void("string"==typeof o.modules[f]&&o.status[f]?c():setTimeout(g,4))}();else{var v=t.createElement("script"),h=(u[f]?p+"lay/":/^\{\/\}/.test(y.modules[f])?"":o.base||"")+(y.modules[f]||f)+".js";h=h.replace(/^\{\/\}/,""),v.async=!0,v.charset="utf-8",v.src=h+function(){var e=o.version===!0?o.v||(new Date).getTime():o.version||"";return e?"?v="+e:""}(),d.appendChild(v),!v.attachEvent||v.attachEvent.toString&&v.attachEvent.toString().indexOf("[native code")<0||a?v.addEventListener("load",function(e){s(e,h)},!1):v.attachEvent("onreadystatechange",function(e){s(e,h)}),o.modules[f]=h}return y},n.prototype.getStyle=function(t,o){var n=t.currentStyle?t.currentStyle:e.getComputedStyle(t,null);return n[n.getPropertyValue?"getPropertyValue":"getAttribute"](o)},n.prototype.link=function(e,n,r){var a=this,u=t.createElement("link"),l=t.getElementsByTagName("head")[0];"string"==typeof n&&(r=n);var s=(r||e).replace(/\.|\//g,""),c=u.id="layuicss-"+s,y=0;return u.rel="stylesheet",u.href=e+(o.debug?"?v="+(new Date).getTime():""),u.media="all",t.getElementById(c)||l.appendChild(u),"function"!=typeof n?a:(function p(){return++y>1e3*o.timeout/100?i(e+" timeout"):void(1989===parseInt(a.getStyle(t.getElementById(c),"width"))?function(){n()}():setTimeout(p,100))}(),a)},o.callback={},n.prototype.factory=function(e){if(layui[e])return"function"==typeof o.callback[e]?o.callback[e]:null},n.prototype.addcss=function(e,t,n){return layui.link(o.dir+"css/"+e,t,n)},n.prototype.img=function(e,t,o){var n=new Image;return n.src=e,n.complete?t(n):(n.onload=function(){n.onload=null,"function"==typeof t&&t(n)},void(n.onerror=function(e){n.onerror=null,"function"==typeof o&&o(e)}))},n.prototype.config=function(e){e=e||{};for(var t in e)o[t]=e[t];return this},n.prototype.modules=function(){var e={};for(var t in u)e[t]=u[t];return e}(),n.prototype.extend=function(e){var t=this;e=e||{};for(var o in e)t[o]||t.modules[o]?i("模块名 "+o+" 已被占用"):t.modules[o]=e[o];return t},n.prototype.router=function(e){var t=this,e=e||location.hash,o={path:[],search:{},hash:(e.match(/[^#](#.*$)/)||[])[1]||""};return/^#\//.test(e)?(e=e.replace(/^#\//,""),o.href="/"+e,e=e.replace(/([^#])(#.*$)/,"$1").split("/")||[],t.each(e,function(e,t){/^\w+=/.test(t)?function(){t=t.split("="),o.search[t[0]]=t[1]}():o.path.push(t)}),o):o},n.prototype.data=function(t,o,n){if(t=t||"layui",n=n||localStorage,e.JSON&&e.JSON.parse){if(null===o)return delete n[t];o="object"==typeof o?o:{key:o};try{var r=JSON.parse(n[t])}catch(i){var r={}}return"value"in o&&(r[o.key]=o.value),o.remove&&delete r[o.key],n[t]=JSON.stringify(r),o.key?r[o.key]:r}},n.prototype.sessionData=function(e,t){return this.data(e,t,sessionStorage)},n.prototype.device=function(t){var o=navigator.userAgent.toLowerCase(),n=function(e){var t=new RegExp(e+"/([^\\s\\_\\-]+)");return e=(o.match(t)||[])[1],e||!1},r={os:function(){return/windows/.test(o)?"windows":/linux/.test(o)?"linux":/iphone|ipod|ipad|ios/.test(o)?"ios":/mac/.test(o)?"mac":void 0}(),ie:function(){return!!(e.ActiveXObject||"ActiveXObject"in e)&&((o.match(/msie\s(\d+)/)||[])[1]||"11")}(),weixin:n("micromessenger")};return t&&!r[t]&&(r[t]=n(t)),r.android=/android/.test(o),r.ios="ios"===r.os,r},n.prototype.hint=function(){return{error:i}},n.prototype.each=function(e,t){var o,n=this;if("function"!=typeof t)return n;if(e=e||[],e.constructor===Object){for(o in e)if(t.call(e[o],o,e[o]))break}else for(o=0;o<e.length&&!t.call(e[o],o,e[o]);o++);return n},n.prototype.sort=function(e,t,o){var n=JSON.parse(JSON.stringify(e||[]));return t?(n.sort(function(e,o){var n=/^-?\d+$/,r=e[t],i=o[t];return n.test(r)&&(r=parseFloat(r)),n.test(i)&&(i=parseFloat(i)),r&&!i?1:!r&&i?-1:r>i?1:r<i?-1:0}),o&&n.reverse(),n):n},n.prototype.stope=function(t){t=t||e.event;try{t.stopPropagation()}catch(o){t.cancelBubble=!0}},n.prototype.onevent=function(e,t,o){return"string"!=typeof e||"function"!=typeof o?this:n.event(e,t,null,o)},n.prototype.event=n.event=function(e,t,n,r){var i=this,a=null,u=t.match(/\((.*)\)$/)||[],l=(e+"."+t).replace(u[0],""),s=u[1]||"",c=function(e,t){var o=t&&t.call(i,n);o===!1&&null===a&&(a=!1)};return r?(o.event[l]=o.event[l]||{},o.event[l][s]=[r],this):(layui.each(o.event[l],function(e,t){return"{*}"===s?void layui.each(t,c):(""===e&&layui.each(t,c),void(s&&e===s&&layui.each(t,c)))}),a)},e.layui=new n}(window); \ No newline at end of file diff --git a/src/main/resources/templates/error/403.html b/src/main/resources/templates/error/403.html new file mode 100644 index 0000000..dd959d4 --- /dev/null +++ b/src/main/resources/templates/error/403.html @@ -0,0 +1,40 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <meta charset="utf-8"> + <title>FEBS 权限系统</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" th:href="@{layui/css/layui.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/febs.css}" media="all"> + <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/> +</head> +<body> +<div class="layui-fluid" id="febs-error-403" lay-title="403"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs3 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/403.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs7"> + <h1 style="font-size: 60px">403</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,你无权访问该页面</h2> + <button class="layui-btn layui-btn-normal" id="home">返回首页</button> + </div> + </div> +</div> +<script th:src="@{layui/layui.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery'], function () { + var $ = layui.jquery, + ctx = [[@{/}]], + $view = $('#febs-error-403'); + $view.on('click', 'button', function () { + window.location.href = ctx + 'index'; + }); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/error/404.html b/src/main/resources/templates/error/404.html new file mode 100644 index 0000000..c099153 --- /dev/null +++ b/src/main/resources/templates/error/404.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <meta charset="utf-8"> + <title>FEBS 权限系统</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" th:href="@{layui/css/layui.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/febs.css}" media="all"> + <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/> +</head> +<body> +<div class="layui-fluid" id="febs-error-404" lay-title="页面不存在"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs3 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/404.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs7"> + <h1 style="font-size: 60px">404</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,你访问的页面不存在</h2> + <button class="layui-btn layui-btn-normal"> + 返回首页 + </button> + </div> + </div> +</div> +<script th:src="@{layui/layui.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery'], function () { + var $ = layui.jquery, + ctx = [[@{/}]], + $view = $('#febs-error-404'); + $view.on('click', 'button', function () { + window.location.href = ctx + 'index'; + }); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/error/500.html b/src/main/resources/templates/error/500.html new file mode 100644 index 0000000..bb38464 --- /dev/null +++ b/src/main/resources/templates/error/500.html @@ -0,0 +1,42 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <meta charset="utf-8"> + <title>FEBS 权限系统</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" th:href="@{layui/css/layui.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/febs.css}" media="all"> + <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/> +</head> +<body> +<div class="layui-fluid" id="febs-error-500" lay-title="500"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs4 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/500.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs6"> + <h1 style="font-size: 60px">500</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,服务器出错了</h2> + <button class="layui-btn layui-btn-normal"> + 返回首页 + </button> + </div> + </div> +</div> +<script th:src="@{layui/layui.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery'], function () { + var $ = layui.jquery, + ctx = [[@{/}]], + $view = $('#febs-error-500'); + $view.on('click', 'button', function () { + window.location.href = ctx + 'index'; + }); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/error/403.html b/src/main/resources/templates/febs/views/error/403.html new file mode 100644 index 0000000..676f3c0 --- /dev/null +++ b/src/main/resources/templates/febs/views/error/403.html @@ -0,0 +1,23 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-error-403" lay-title="403"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs3 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/403.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs7"> + <h1 style="font-size: 60px">403</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,你无权访问该页面</h2> + <button class="layui-btn layui-btn-normal" id="home">返回首页</button> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $('#febs-error-403'); + $view.find('button#home').on('click', function () { + febs.view.tab.del(ctx + '403'); + febs.view.tab.change(ctx + "index"); + }) + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/error/404.html b/src/main/resources/templates/febs/views/error/404.html new file mode 100644 index 0000000..eebe5f8 --- /dev/null +++ b/src/main/resources/templates/febs/views/error/404.html @@ -0,0 +1,25 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-error-404" lay-title="页面不存在"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs3 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/404.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs7"> + <h1 style="font-size: 60px">404</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,你访问的页面不存在</h2> + <button class="layui-btn layui-btn-normal" id="home"> + 返回首页 + </button> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $('#febs-error-404'); + $view.find('button#home').on('click', function () { + febs.view.tab.del('/404'); + febs.view.tab.change("/index"); + }) + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/error/500.html b/src/main/resources/templates/febs/views/error/500.html new file mode 100644 index 0000000..2f43d06 --- /dev/null +++ b/src/main/resources/templates/febs/views/error/500.html @@ -0,0 +1,23 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-error-500" lay-title="500"> + <div class="layui-row layui-col-space10" style="margin-top:100px"> + <div class="layui-col-xs3 layui-col-xs-offset2"> + <img data-th-src="@{febs/images/error/500.svg}" alt="" width="85%"/> + </div> + <div class="layui-col-xs7"> + <h1 style="font-size: 60px">500</h1> + <h2 class="febs-mar-b20 febs-c-gray">抱歉,服务器出错了</h2> + <button class="layui-btn layui-btn-normal" id="home">返回首页</button> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $('#febs-error-500'); + $view.find('button#home').on('click', function () { + febs.view.tab.del(ctx + '500'); + febs.view.tab.change(ctx + "index"); + }) + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/generator/configure.html b/src/main/resources/templates/febs/views/generator/configure.html new file mode 100644 index 0000000..104d870 --- /dev/null +++ b/src/main/resources/templates/febs/views/generator/configure.html @@ -0,0 +1,168 @@ +<style> + #febs-generator-configure .layui-form-label { + width: 130px + } + + #febs-generator-configure .layui-input-block { + margin-left: 160px; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-generator-configure" lay-title="生成配置"> + <div class="layui-row febs-container"> + <div class="layui-card"> + <div class="layui-card-body" style="padding: 15px;"> + <form class="layui-form" action="" lay-filter="generator-configure-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">ID:</label> + <div class="layui-input-block"> + <input type="text" name="id" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">作者名称:</label> + <div class="layui-input-block"> + <input type="text" name="author" autocomplete="off" maxlength="20" lay-verify="required" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">基础包名:</label> + <div class="layui-input-block"> + <input type="text" name="basePackage" autocomplete="off" maxlength="50" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">entity包名:</label> + <div class="layui-input-block"> + <input type="text" name="entityPackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">service包名:</label> + <div class="layui-input-block"> + <input type="text" name="servicePackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">serviceImpl包名:</label> + <div class="layui-input-block"> + <input type="text" name="serviceImplPackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">mapper包名:</label> + <div class="layui-input-block"> + <input type="text" name="mapperPackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">mapperXml包名:</label> + <div class="layui-input-block"> + <input type="text" name="mapperXmlPackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">controller包名:</label> + <div class="layui-input-block"> + <input type="text" name="controllerPackage" autocomplete="off" maxlength="20" + lay-verify="required" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否去除表前缀:</label> + <div class="layui-input-block"> + <input type="radio" name="isTrim" value="1" lay-filter="isTrim" title="是" checked=""> + <input type="radio" name="isTrim" value="0" lay-filter="isTrim" title="否"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">表前缀:</label> + <div class="layui-input-block"> + <input type="text" name="trimValue" autocomplete="off" maxlength="20" class="layui-input"> + </div> + </div> + <div class="layui-form-item" shiro:hasPermission="generator:configure:update"> + <div class="layui-input-block"> + <button class="layui-btn" lay-submit="" lay-filter="generator-configure-form-submit">保存配置 + </button> + </div> + </div> + </form> + </div> + </div> + </div> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form'], function () { + var $ = layui.$, + febs = layui.febs, + form = layui.form, + $view = $('#febs-generator-configure'), + $trimValue = $view.find('input[name="trimValue"]'), + $trimValueItem = $trimValue.parents('.layui-form-item'); + + var config = [[${config}]]; + + form.render(); + initFormValue(); + + form.on("radio(isTrim)", function (data) { + if (data.value === '1') { + trimValueItemShow(); + } else { + trimValueItemHide(); + } + }); + + function initFormValue() { + form.val("generator-configure-form", { + "id": config.id, + "author": config.author, + "basePackage": config.basePackage, + "entityPackage": config.entityPackage, + "mapperPackage": config.mapperPackage, + "mapperXmlPackage": config.mapperXmlPackage, + "servicePackage": config.servicePackage, + "serviceImplPackage": config.serviceImplPackage, + "controllerPackage": config.controllerPackage, + "isTrim": config.isTrim, + "trimValue": config.trimValue + }); + + if (config.isTrim === '1') { + trimValueItemShow(); + } else { + trimValueItemHide(); + } + } + + function trimValueItemShow() { + $trimValueItem.show(); + } + + function trimValueItemHide() { + form.val("generator-configure-form", { + "trimValue": '' + }); + $trimValueItem.hide(); + } + + form.on('submit(generator-configure-form-submit)', function (data) { + if (febs.nativeEqual(data.field, config)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'generatorConfig/update', data.field, function (r) { + febs.alert.success('修改成功'); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/generator/generator.html b/src/main/resources/templates/febs/views/generator/generator.html new file mode 100644 index 0000000..a3634fc --- /dev/null +++ b/src/main/resources/templates/febs/views/generator/generator.html @@ -0,0 +1,131 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-generator" lay-title="代码生成"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="generator-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">表名</label> + <div class="layui-input-inline"> + <input type="text" name="tableName" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">数据库</label> + <div class="layui-input-inline"> + <select name="datasource" id="datasource" lay-filter="datasource"> + </select> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" + id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" + id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="configureTable" lay-data="{id: 'configureTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="generator-option"> + <span shiro:lacksPermission="generator:generate"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="generate" shiro:hasPermission="generator:generate"><i class="layui-icon febs-edit-area febs-blue"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'form', 'table', 'febs', 'laydate'], function () { + var $ = layui.jquery, + form = layui.form, + table = layui.table, + febs = layui.febs, + laydate = layui.laydate, + $view = $('#febs-generator'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + $datasource = $view.find('#datasource'), + tableIns; + + laydate.render({ + elem: '#createTime', + range: true + }); + + form.render(); + getDatasource(); + initTable(); + + $query.on('click', function () { + tableIns.reload({where: getQueryParams(), page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + tableIns.reload({where: getQueryParams(), page: {curr: 1}}); + }); + + function getDatasource() { + febs.get(ctx + 'generator/datasource', null, function (r) { + var options = '<option value="">请选择</option>'; + for (var item of r.data) { + options += '<option value="' + item + '">' + item + '</option>' + } + $datasource.append(options) + form.render(); + form.on('select(datasource)', function(data){ + $query.click(); + }); + }); + } + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'configureTable', + url: ctx + 'generator/tables/info', + cols: [[ + {type: 'checkbox'}, + {field: 'name', title: '表名'}, + {field: 'remark', title: '备注'}, + {field: 'dataRows', title: '数据量(行)'}, + {field: 'createTime', title: '创建时间', minWidth: 180}, + {field: 'updateTime', title: '修改时间', minWidth: 180}, + {title: '操作', toolbar: '#generator-option', minWidth: 140} + ]] + }); + } + + function getQueryParams() { + return { + tableName: $searchForm.find("input[name='tableName']").val().trim(), + datasource: $searchForm.find("select[name='datasource']").val(), + invalidate_ie_cache: new Date() + }; + } + + table.on('tool(configureTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + data.datasource = $searchForm.find("select[name='datasource']").val(); + if (layEvent === 'generate') { + febs.modal.confirm('代码生成', '确定生成数据表<strong> ' + data.name + ' </strong>对应的前后端代码?', function () { + febs.download(ctx + 'generator', data, data.name + '_code.zip'); + }); + } + }); + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/index.html b/src/main/resources/templates/febs/views/index.html new file mode 100644 index 0000000..d27068d --- /dev/null +++ b/src/main/resources/templates/febs/views/index.html @@ -0,0 +1,428 @@ +<style> + #febs-index .welcome-info { + border: 1px solid #f1f1f1; + margin-bottom: .5rem; + padding: .5rem; + } + + #febs-index .welcome-info-wrapper { + padding: .2rem; + display: inline-block + } + + #febs-index .welcome-info-wrapper .user-header { + display: inline-block; + vertical-align: middle + } + + #febs-index .welcome-info-wrapper .user-header img { + width: 5rem; + margin: .5rem 1rem; + border-radius: 50% + } + + #febs-index .welcome-info-wrapper .user-info { + display: inline-block; + vertical-align: middle + } + + #febs-index .welcome-info-wrapper .user-info .random-message { + font-size: 1rem; + margin-bottom: .2rem; + max-width: 21rem + } + + #febs-index .welcome-info-wrapper .user-info .user-dept, #febs-index .welcome-info-wrapper .user-info .user-login-info { + color: rgba(0, 0, 0, 0.45); + } + + #febs-index .login-count-table { + width: 100%; + margin: 1rem; + } + + #febs-index .login-count-table .count { + padding-top: .8rem; + font-size: 1rem; + font-weight: 600; + color: #1890ff + } + + #febs-index .project-table { + padding: .5rem; + border: 1px solid #f1f1f1; + width: 100% + } + + #febs-index .project-table-td { + padding: .5rem 0.7rem; + border: 1px solid #f1f1f1; + } + + #febs-index .project-table-td a { + color: #42b983; + font-size: .9rem; + font-weight: 600; + } + + #febs-index .project-desc { + color: rgba(0, 0, 0, 0.45); + } +</style> +<div class="layui-fluid layui-anim febs-anim-up" id="febs-index" lay-title="系统首页"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body layui-anim layui-anim-fadein"> + <div class="layui-row welcome-info"> + <div class="layui-col-md6 layui-col-sm12 layui-col-xs12"> + <div class="layui-row welcome-info-wrapper"> + <div class="user-header"> + <img alt="头像" id="user-avatar" data-th-src="@{febs/images/avatar/empty.jpg}"> + </div> + <div class="user-info"> + <div class="layui-row"> + <div class="random-message"> + <span id="welcome-message"></span> + </div> + <div class="user-dept"> + <span id="user-dept"></span> | <span id="user-role"></span> + </div> + <div class="user-login-info"> + 上次登录时间:<span id="last-login-time">2019-05-23 18:45:12</span> + </div> + </div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm12 layui-col-xs12"> + <div class="layui-col-md-offset5"> + <table class="login-count-table"> + <tr> + <td>今日IP</td> + <td>今日访问</td> + <td>总访问量</td> + </tr> + <tr> + <td class="count" id="today-ip"> + 0 + </td> + <td class="count" id="today-visit-count"> + 0 + </td> + <td class="count" id="total-visit-count"> + 0 + </td> + </tr> + </table> + </div> + </div> + </div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body"> + <div id="chart" style="height: 350px"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body"> + <table class="project-table"> + <tr> + <td style="padding: .8rem;">进行中的项目</td> + <td style="padding: .8rem;text-align: right"> + <a target="_blank" href="https://github.com/wuyouzhuguli?tab=repositories">所有项目</a> + </td> + </tr> + <tr> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Cloud">FEBS + Cloud</a> + </div> + <div class="project-desc"> + Spring Cloud 微服务权限管理系统。 + </div> + </div> + </div> + </div> + </td> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Cloud-Web">FEBS + Cloud Web</a> + </div> + <div class="project-desc"> + FEBS-Cloud前端,使用 vue-element-admin 构建。 + </div> + </div> + </div> + </div> + </td> + </tr> + <tr> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Shiro">FEBS + Shiro</a> + </div> + <div class="project-desc"> + Spring Boot 2.0.4 & Shiro1.4.0 权限管理系统。 + </div> + </div> + </div> + </div> + </td> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Security">FEBS + Security</a> + </div> + <div class="project-desc"> + Spring Boot 2.0.4 & Spring Security 5.0.7 权限管理系统。 + </div> + </div> + </div> + </div> + </td> + </tr> + <tr> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Actuator">FEBS + Cloud K8S</a> + </div> + <div class="project-desc"> + FEBS Cloud K8S集群部署脚本。 + </div> + </div> + </div> + </div> + </td> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/SpringAll">SpringAll</a> + </div> + <div class="project-desc"> + 循序渐进学习Spring Boot、Spring Cloud与Spring Security。 + </div> + </div> + </div> + </div> + </td> + </tr> + <tr> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Vue">FEBS + Vue</a> + </div> + <div class="project-desc"> + FEBS-Shiro前后端分离版本,前端架构采用Vue全家桶。 + </div> + </div> + </div> + </div> + </td> + <td class="project-table-td"> + <div class="layui-row"> + <div class="layui-col-md12 layui-col-xs12"> + <div class="layui-row"> + <div class="layui-col-md12"> + <a target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Actuator">FEBS Actuator</a> + </div> + <div class="project-desc"> + 使用Spring Boot Admin 2.0.2构建,用于监控FEBS。 + </div> + </div> + </div> + </div> + </td> + </tr> + </table> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts', 'febs', 'jquery', 'util'], function () { + var $ = layui.jquery, + util = layui.util, + $view = $('#febs-index'), + febs = layui.febs; + + febs.get(ctx + 'index/' + currentUser.username, null, function (r) { + handleSuccess(r.data); + }); + + function handleSuccess(data) { + var hour = new Date().getHours(); + var time = hour < 6 ? '早上好' : (hour <= 11 ? '上午好' : (hour <= 13 ? '中午好' : (hour <= 18 ? '下午好' : '晚上好'))); + var welcomeArr = [ + '喝杯咖啡休息下吧☕', + '要不要和朋友打局LOL', + '今天又写了几个Bug呢', + '今天在群里吹水了吗', + '今天吃了什么好吃的呢', + '今天您微笑了吗😊', + '今天帮助别人了吗', + '准备吃些什么呢', + '周末要不要去看电影?' + ]; + var index = Math.floor((Math.random() * welcomeArr.length)); + var welcomeMessage = time + ',<a id="febs-index-user">' + currentUser.username + '</a>,' + welcomeArr[index]; + $view.find('#today-ip').text(data.todayIp).end() + .find('#today-visit-count').text(data.todayVisitCount).end() + .find('#total-visit-count').text(data.totalVisitCount).end() + .find('#user-dept').text(currentUser.deptName ? currentUser.deptName : '暂无所属部门').end() + .find('#user-role').text(currentUser.roleName ? currentUser.roleName : '暂无角色').end() + .find('#last-login-time').text(currentUser.lastLoginTime ? currentUser.lastLoginTime : '第一次访问系统').end() + .find('#welcome-message').html(welcomeMessage).end() + .find('#user-avatar').attr('src', ctx + "febs/images/avatar/" + currentUser.avatar); + + var currentTime = new Date().getTime(); + var yourVisitCount = []; + var totalVisitCount = []; + var lastTenDays = [ + util.toDateString(new Date(currentTime - 1000 * 9 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 8 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 7 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 6 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 5 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 4 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 3 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 2 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime - 1000 * 86400), 'MM-dd'), + util.toDateString(new Date(currentTime), 'MM-dd') + ]; + + + layui.each(lastTenDays, function (k, i) { + var contain = false; + layui.each(data.lastSevenUserVisitCount, function (key, item) { + if (i === item.days) { + yourVisitCount.push(item.count); + contain = true; + } + }); + if (!contain) yourVisitCount.push(0); + contain = false; + layui.each(data.lastSevenVisitCount, function (key, item) { + if (i === item.days) { + totalVisitCount.push(item.count); + contain = true; + } + }); + if (!contain) totalVisitCount.push(0); + }); + + var options = { + chart: { + height: 350, + type: 'area', + toolbar: { + show: false + } + }, + colors: ['#1890ff', '#0acf97'], + plotOptions: { + bar: { + horizontal: false, + columnWidth: '32rem' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: [3, 3], + curve: 'smooth' + }, + series: [{ + name: '总数', + data: totalVisitCount + }, { + name: '您', + data: yourVisitCount + }], + xaxis: { + categories: lastTenDays, + axisTicks: { + show: true + }, + axisBorder: { + show: true, + color: '#f1f1f1' + } + }, + fill: { + type: 'gradient', + gradient: { + shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 90, 100] + } + }, + title: { + text: '近10天系统访问记录', + align: 'left', + style: { + color: 'rgba(0, 0, 0, .65)' + } + }, + tooltip: { + y: { + formatter: function (val) { + return "访问次数 " + val + " 次" + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f1f1' + } + }; + + new ApexCharts( + document.querySelector("#chart"), + options + ).render(); + } + + $view.on('click', '#febs-index-user',function () { + febs.navigate("/user/profile"); + }) + + }); +</script> diff --git a/src/main/resources/templates/febs/views/job/job.html b/src/main/resources/templates/febs/views/job/job.html new file mode 100644 index 0000000..4a27fad --- /dev/null +++ b/src/main/resources/templates/febs/views/job/job.html @@ -0,0 +1,285 @@ +<style> + #febs-job .layui-form-label { + width: 65px; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-job" lay-title="定时任务"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="job-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">Bean名称</label> + <div class="layui-input-inline"> + <input type="text" name="beanName" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">方法名称</label> + <div class="layui-input-inline"> + <input type="text" name="methodName" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">状态</label> + <div class="layui-input-inline"> + <select name="status"> + <option value=""></option> + <option value="0">正常</option> + <option value="1">暂停</option> + </select> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="job:add,job:delete,job:pause,job:resume,job:run,job:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="jobTable" lay-data="{id: 'jobTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="job-status"> + {{# + var status = { + 0: {title: '正常', color: 'green'}, + 1: {title: '暂停', color: 'volcano'} + }[d.status]; + }} + <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> +</script> +<script type="text/html" id="job-option"> + <span shiro:lacksPermission="job:update,job:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="edit" shiro:hasPermission="job:update"><i class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="del" shiro:hasPermission="job:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + dropdown = layui.dropdown, + $view = $('#febs-job'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns; + + form.render(); + initTable(); + + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + var checkStatus = table.checkStatus('jobTable'); + if (name === 'add') { + febs.modal.open('新增任务', 'job/job/add', { + btn: ['提交', '重置'], + area: $(window).width() <= 750 ? '95%' : '50%', + yes: function (index, layero) { + $('#job-add').find('#submit').trigger('click'); + }, + btn2: function () { + $('#job-add').find('#reset').trigger('click'); + return false; + } + }); + } + if (name === 'delete') { + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要删除的任务'); + } else { + febs.modal.confirm('删除任务', '确定删除所选任务?', function () { + var jobIds = []; + layui.each(checkStatus.data, function (key, item) { + jobIds.push(item.jobId) + }); + deleteJobs(jobIds.join(',')) + }); + } + } + if (name === 'pause') { + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要暂停的任务'); + } else { + febs.modal.confirm('暂停任务', '确定暂停所选任务?', function () { + var jobIds = []; + layui.each(checkStatus.data, function (key, item) { + jobIds.push(item.jobId) + }); + febs.get(ctx + 'job/pause/' + jobIds.join(','), null, function () { + febs.alert.success('暂停任务成功'); + $query.click(); + }) + }); + } + } + if (name === 'resume') { + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要恢复的任务'); + } else { + febs.modal.confirm('恢复任务', '确定恢复所选任务?', function () { + var jobIds = []; + layui.each(checkStatus.data, function (key, item) { + jobIds.push(item.jobId) + }); + febs.get(ctx + 'job/resume/' + jobIds.join(','), null, function () { + febs.alert.success('恢复任务成功'); + $query.click(); + }) + }); + } + } + if (name === 'run') { + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要执行的任务'); + } else { + febs.modal.confirm('执行任务', '确定执行所选任务?', function () { + var jobIds = []; + layui.each(checkStatus.data, function (key, item) { + jobIds.push(item.jobId) + }); + febs.get(ctx + 'job/run/' + jobIds.join(','), null, function () { + febs.alert.success('执行任务成功'); + $query.click(); + }) + }); + } + } + if (name === 'export') { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'job/excel', params, '任务表.xlsx'); + } + }, + options: [{ + name: 'add', + title: '新增任务', + perms: 'job:add' + }, { + name: 'delete', + title: '删除任务', + perms: 'job:delete' + }, { + name: 'pause', + title: '暂停任务', + perms: 'job:pause' + }, { + name: 'resume', + title: '恢复任务', + perms: 'job:resume' + }, { + name: 'run', + title: '执行任务', + perms: 'job:run' + }, { + name: 'export', + title: '导出Excel', + perms: 'job:export' + }] + }); + + table.on('tool(jobTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'del') { + febs.modal.confirm('删除任务', '确定删除该任务?', function () { + deleteJobs(data.jobId); + }); + } + if (layEvent === 'edit') { + febs.modal.open('修改任务', 'job/job/update/' + data.jobId, { + area: $(window).width() <= 750 ? '90%' : '50%', + btn: ['提交', '取消'], + yes: function (index, layero) { + $('#job-update').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + }); + + table.on('sort(jobTable)', function (obj) { + sortObject = obj; + tableIns.reload({ + initSort: obj, + where: $.extend(getQueryParams(), { + field: obj.field, + order: obj.type + }) + }); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'jobTable', + url: ctx + 'job', + cols: [[ + {type: 'checkbox'}, + {field: 'jobId', title: '任务ID', width: 80}, + {field: 'beanName', title: 'Bean名称'}, + {field: 'methodName', title: '方法名称', maxWidth: 200}, + {field: 'params', title: '方法参数', maxWidth: 180}, + {field: 'cronExpression', title: 'cron表达式', maxWidth: 180}, + {field: 'remark', title: '备注', maxWidth: 200}, + {field: 'createTime', title: '创建时间', minWidth: 180, sort: true}, + {title: '状态', templet: '#job-status'}, + {title: '操作', toolbar: '#job-option', minWidth: 140} + ]] + }); + } + + function deleteJobs(jobIds) { + febs.get(ctx + 'job/delete/' + jobIds, null, function () { + febs.alert.success('删除任务成功'); + $query.click(); + }); + } + + function getQueryParams() { + return { + status: $searchForm.find("select[name='status']").val(), + beanName: $searchForm.find("input[name='beanName']").val().trim(), + methodName: $searchForm.find("input[name='methodName']").val().trim(), + invalidate_ie_cache: new Date() + }; + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/job/jobAdd.html b/src/main/resources/templates/febs/views/job/jobAdd.html new file mode 100644 index 0000000..e6bd06c --- /dev/null +++ b/src/main/resources/templates/febs/views/job/jobAdd.html @@ -0,0 +1,78 @@ +<style> + #job-add { + padding: 20px 25px 25px 0; + } + + #job-add .layui-form-label { + width: 88px; + } + + #job-add .layui-input-block { + margin-left: 120px; + } +</style> +<div class="layui-fluid" id="job-add"> + <form class="layui-form" action="" lay-filter="job-add-form"> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">Bean名称:</label> + <div class="layui-input-block"> + <input type="text" name="beanName" maxlength="20" lay-verify="range|required" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">方法名称:</label> + <div class="layui-input-block"> + <input type="text" name="methodName" maxlength="50" lay-verify="range|required" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">方法参数:</label> + <div class="layui-input-block"> + <input type="text" name="params" maxlength="50" lay-verify="range" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">cron表达式:</label> + <div class="layui-input-block"> + <input type="text" name="cronExpression" maxlength="20" lay-verify="range|required|cron" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">任务备注:</label> + <div class="layui-input-block"> + <textarea name="remark" maxlength="50" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="job-add-form-submit" id="submit"></button> + <button type="reset" class="layui-btn" id="reset"></button> + </div> + </form> +</div> + +<script> + layui.use(['jquery', 'febs', 'form', 'validate'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + $view = $('#job-add'), + validate = layui.validate; + + form.verify(validate); + form.render(); + + form.on('submit(job-add-form-submit)', function (data) { + febs.post(ctx + 'job', data.field, function () { + layer.closeAll(); + febs.alert.success('新增任务成功'); + $('#febs-job').find('#query').click(); + }); + return false; + }); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/job/jobLog.html b/src/main/resources/templates/febs/views/job/jobLog.html new file mode 100644 index 0000000..419e8ab --- /dev/null +++ b/src/main/resources/templates/febs/views/job/jobLog.html @@ -0,0 +1,209 @@ +<style> + #febs-job-log .layui-form-label{ + width: 65px; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-job-log" lay-title="调度日志"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="job-log-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">Bean名称</label> + <div class="layui-input-inline"> + <input type="text" name="beanName" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">方法名称</label> + <div class="layui-input-inline"> + <input type="text" name="methodName" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">状态</label> + <div class="layui-input-inline"> + <select name="status"> + <option value=""></option> + <option value="0">成功</option> + <option value="1">失败</option> + </select> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="job:log:delete,job:log:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="jobLogTable" lay-data="{id: 'jobLogTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="jobLog-times"> + <div> + {{# if (d.times < 500) { }} + <span class="layui-badge febs-tag-green">{{d.times}} ms</span> + {{# } else if (d.times < 1000) { }} + <span class="layui-badge febs-tag-cyan">{{d.times}} ms</span> + {{# } else if (d.times < 1500) { }} + <span class="layui-badge febs-tag-orange">{{d.times}} ms</span> + {{# } else { }} + <span class="layui-badge febs-tag-red">{{d.times}} ms</span> + {{# } }} + </div> +</script> +<script type="text/html" id="jobLog-status"> + {{# + var status = { + 0: {title: '成功', color: 'green'}, + 1: {title: '失败', color: 'volcano'} + }[d.status]; + }} + <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> +</script> +<script type="text/html" id="jobLog-option"> + <span shiro:lacksPermission="job:log:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="del" shiro:hasPermission="job:log:delete"><i + class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'form', 'table', 'febs'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + dropdown = layui.dropdown, + $view = $('#febs-job-log'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns; + + form.render(); + initTable(); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + var checkStatus = table.checkStatus('jobLogTable'); + if (name === 'delete') { + if (!checkStatus.data.length) { + febs.alert.warn('请选择需要删除的调度日志'); + } else { + febs.modal.confirm('删除日志', '确定删除该调度日志?', function () { + var jobLogIds = []; + layui.each(checkStatus.data, function (key, item) { + jobLogIds.push(item.logId) + }); + deleteJobsLogs(jobLogIds.join(',')); + }); + } + } + if (name === 'export') { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'jobLog/excel', params, '调度日志表.xlsx'); + } + }, + options: [{ + name: 'delete', + title: '删除日志', + perms: 'job:log:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'job:log:export' + }] + }); + + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + table.on('tool(jobLogTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'del') { + febs.modal.confirm('删除调度日志', '确定删除调度日志?', function () { + deleteJobsLogs(data.logId); + }); + } + }); + + table.on('sort(jobLogTable)', function (obj) { + sortObject = obj; + tableIns.reload({ + initSort: obj, + where: $.extend(getQueryParams(), { + field: obj.field, + order: obj.type + }) + }); + }); + + function deleteJobsLogs(jobLogIds) { + febs.get(ctx + 'jobLog/delete/' + jobLogIds, null, function () { + febs.alert.success('删除调度日志成功'); + $query.click(); + }); + } + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'jobLogTable', + url: ctx + 'jobLog', + cols: [[ + {type: 'checkbox'}, + {field: 'jobId', title: '任务ID', width: 80}, + {field: 'beanName', title: 'Bean名称'}, + {field: 'methodName', title: '方法名称', maxWidth: 200}, + {field: 'params', title: '方法参数', maxWidth: 180}, + {title: '状态', templet: '#jobLog-status'}, + {field: 'error', title: '异常信息', maxWidth: 200}, + {title: '耗时', templet: '#jobLog-times'}, + {field: 'createTime', title: '执行时间', minWidth: 180, sort: true}, + {title: '操作', toolbar: '#jobLog-option', minWidth: 140} + ]] + }); + } + + function getQueryParams() { + return { + status: $searchForm.find("select[name='status']").val(), + beanName: $searchForm.find("input[name='beanName']").val().trim(), + methodName: $searchForm.find("input[name='methodName']").val().trim(), + invalidate_ie_cache: new Date() + }; + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/job/jobUpdate.html b/src/main/resources/templates/febs/views/job/jobUpdate.html new file mode 100644 index 0000000..2a8c672 --- /dev/null +++ b/src/main/resources/templates/febs/views/job/jobUpdate.html @@ -0,0 +1,109 @@ +<style> + #job-update { + padding: 20px 25px 25px 0; + } + + #job-update .layui-form-label { + width: 88px; + } + + #job-update .layui-input-block { + margin-left: 120px; + } +</style> +<div class="layui-fluid" id="job-update"> + <form class="layui-form" action="" lay-filter="job-update-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">id:</label> + <div class="layui-input-block"> + <input type="text" name="jobId" class="layui-input"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">状态:</label> + <div class="layui-input-block"> + <input type="text" name="status" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">Bean名称:</label> + <div class="layui-input-block"> + <input type="text" name="beanName" maxlength="20" lay-verify="range|required" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">方法名称:</label> + <div class="layui-input-block"> + <input type="text" name="methodName" maxlength="50" lay-verify="range|required" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">方法参数:</label> + <div class="layui-input-block"> + <input type="text" name="params" maxlength="50" lay-verify="range" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">cron表达式:</label> + <div class="layui-input-block"> + <input type="text" name="cronExpression" maxlength="20" lay-verify="range|required|cron" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">任务备注:</label> + <div class="layui-input-block"> + <textarea name="remark" maxlength="50" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="job-update-form-submit" id="submit"></button> + <button type="reset" class="layui-btn" id="reset"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['jquery', 'febs', 'form', 'validate'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + job = [[${job}]], + $view = $('#job-update'), + validate = layui.validate; + + form.verify(validate); + form.render(); + + initJobValue(); + + function initJobValue() { + form.val("job-update-form", { + "jobId": job.jobId, + "status": job.status, + "beanName": job.beanName, + "methodName": job.methodName, + "params": job.params, + "cronExpression": job.cronExpression, + "remark": job.remark + }); + } + + form.on('submit(job-update-form-submit)', function (data) { + if (febs.nativeEqual(data.field, job)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'job/update', data.field, function () { + layer.closeAll(); + febs.alert.success('任务修改成功'); + $('#febs-job').find('#query').click(); + }); + return false; + }); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/layout.html b/src/main/resources/templates/febs/views/layout.html new file mode 100644 index 0000000..514ecb5 --- /dev/null +++ b/src/main/resources/templates/febs/views/layout.html @@ -0,0 +1,180 @@ +<div class="layui-layout layui-layout-admin" id="febs-layout"> + <div class="layui-header layui-anim febs-anim-down" id="app-header"> + <script type="text/html" + template + lay-done="layui.element.render('nav','febs-header')"> + <ul class="layui-nav layui-layout-left" lay-filter="febs-header"> + <li class="layui-nav-item" lay-unselect> + <a febs-event="flexible" title="侧边伸缩"> + <i class="layui-icon layui-icon-shrink-right"></i> + </a> + </li> + <span class="febs-breadcrumb"></span> + </ul> + <ul class="layui-nav layui-layout-right" lay-filter="febs-header"> + <li class="layui-nav-item layui-hide-xs" id="fullscreen" lay-unselect> + <a title="切换全屏"> + <i class="layui-icon layui-icon-screen-full"></i> + </a> + </li> + <li class="layui-nav-item layui-user" lay-unselect> + <a> + <img style="width: 1.9rem;margin-right:.5rem;border-radius: 50%" + src="{{= ctx + 'febs/images/avatar/' + currentUser.avatar }}" title="头像"> + {{ currentUser.username }} + </a> + <dl class="layui-nav-child"> + <dd><a class="layui-nav-child-href" id="user-profile">个人中心</a></dd> + <dd><a class="layui-nav-child-href" id="password-update">密码修改</a></dd> + <dd><a class="layui-nav-child-href" target="_blank" href="https://github.com/wuyouzhuguli/FEBS-Shiro">项目地址</a></dd> + <hr/> + <dd><a class="layui-nav-child-href" data-th-href="@{logout}">退出登录</a></dd> + </dl> + </li> + </ul> + </script> + </div> + + <div class="febs-tabs-hidden"> + <script type="text/html" id="TPL-app-tabsmenu" template> + {{# if(layui.conf.viewTabs){ }} + <div class="febs-tabs-wrap"> + <span class="febs-tabs-btn febs-tabs-action febs-tabs-prev" data-type="prev"> + <i class="layui-icon layui-icon-left"></i> + </span> + <span class="febs-tabs-btn febs-tabs-action febs-tabs-next" data-type="next"> + <i class="layui-icon layui-icon-right"></i> + </span> + <span class="febs-tabs-btn febs-tabs-action febs-tabs-down" data-type="down"> + <i class="layui-icon layui-icon-close"></i> + </span> + <ul class="febs-tabs-menu"> + {{# layui.each(layui.view.tab.data,function(i, item){ }} + <li data-type="page" class="febs-tabs-btn" lay-url="{{item.fileurl}}"> + <i class="febs-tabs-ball"></i>{{ item.title }}<b class="layui-icon layui-icon-close febs-tabs-close"></b> + </li> + {{# }) }} + </ul> + </div> + {{# } }} + </script> + </div> + + <!-- 侧边菜单 --> + <div class="layui-side" id="app-sidebar"> + <div class="layui-side-scroll"> + <div class="layui-logo" style="cursor: pointer"> + <img data-th-src="@{febs/images/logo.png}"> + <span>FEBS 权限系统</span> + </div> + <script + type="text/html" + template + lay-api="getMenus" + lay-done="layui.element.render('nav','febs-sidebar');layui.febs.sidebarFocus()"> + <ul class="layui-nav layui-nav-tree" lay-filter="febs-sidebar" lay-shrink="all"> + {{# + function __createSlidebar(data,index){ + if(!data || data.length == 0) return ''; + var html = ' + <dl class="layui-nav-child">'; + layui.each(data, function(i, child) { + var left = index == 0 ? 50 : 50 + index * 20; + var title = child.title; + if (child.icon) { + title = '<i class="layui-icon '+child.icon+'"></i>' + child.title + } + html += ' + <dd><a style="padding-left:' + left + 'px" target="'+(child.target||'')+'" + lay-href="'+ (child.href||'') +'">' + title + '</a>'; + if(child.childs) html += __createSlidebar(child.childs,index+1); + html += '</dd>'; + }); + html = html +'</dl>'; + return html; + } + layui.each(d.childs, function(i,child){ + }} + <li class="layui-nav-item"> + <a lay-href="{{child.href||''}}" target="{{child.target||''}}" title="{{child.title}}"><i + class="layui-icon {{child.icon}}"></i>{{child.title}} {{# if(child.notice){ }}<span + class="layui-badge">{{ child.notice }}</span>{{# } }}</a> + {{ __createSlidebar(child.childs,0) }} + </li> + {{# }) }} + </ul> + </script> + </div> + </div> + <!-- 主体内容 --> + <div class="layui-body" id="febs-body"></div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery', 'febs', 'element'], function () { + var $ = layui.jquery, + $view = $('#febs-layout'), + febs = layui.febs; + + var element = layui.element; + + initTheme(); + + $view.find('#user-avatar').attr('src', ctx + "febs/images/avatar/" + currentUser.avatar); + + $view.on('click', '.layui-logo', function () { + febs.navigate("/index"); + }); + + $view.on('click', '#fullscreen', function () { + var $this = $(this); + var normalCls = 'layui-icon-screen-full'; + var activeCls = 'layui-icon-screen-restore'; + var ico = $this.find('.layui-icon'); + + if (ico.hasClass(normalCls)) { + var a = document.body; + a.webkitRequestFullScreen + ? a.webkitRequestFullScreen() + : a.mozRequestFullScreen + ? a.mozRequestFullScreen() + : a.requestFullScreen && a.requestFullscreen(); + ico.removeClass(normalCls).addClass(activeCls) + } else { + var b = document; + b.webkitCancelFullScreen + ? b.webkitCancelFullScreen() + : b.mozCancelFullScreen + ? b.mozCancelFullScreen() + : b.cancelFullScreen + ? b.cancelFullScreen() + : b.exitFullscreen && b.exitFullscreen(); + ico.removeClass(activeCls).addClass(normalCls) + } + }); + + $view.on('click', '#password-update', function () { + febs.modal.view('密码修改', 'password/update', { + area: $(window).width() <= 750 ? '90%' : '500px', + btn: ['确定'], + yes: function () { + $('#user-password-update').find('#submit').trigger('click'); + } + }); + }); + + $view.on('click', '#user-profile', function () { + febs.navigate("/user/profile"); + }); + + function initTheme() { + var theme = currentUser.theme; + var $sidebar = $('#app-sidebar'); + if (theme === 'black') { + $sidebar.removeClass('febs-theme-white'); + } + if (theme === 'white') { + $sidebar.addClass('febs-theme-white'); + } + } + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/login.html b/src/main/resources/templates/febs/views/login.html new file mode 100644 index 0000000..2741f64 --- /dev/null +++ b/src/main/resources/templates/febs/views/login.html @@ -0,0 +1,213 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org"> +<head> + <meta charset="utf-8"> + <title>FEBS 权限系统</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" th:href="@{layui/css/layui.css(t=2)}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/febs.css(t=2)}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/login.css(t=2)}" media="all"> + <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/> +</head> +<body> +<div id="febs-login" lay-title="登录"> + <div class="login-wrap"> + <div class="layui-container"> + <div class="layui-row"> + <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4 febs-tc"> + <div class="layui-logo"><span><b>FEBS</b> 权限系统</span></div> + </div> + <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4" id="login-div"> + <div class="layui-form" lay-filter="login-form"> + <div class="layui-anim layui-anim-upbit"> + <ul class="login-type-tab"> + <li class="active">系统登录</li> + </ul> + <div class="normal-login-form"> + <div class="layui-form-item"> + <label class="layui-icon label-icon layui-icon-username"></label> + <input type="text" name="username" lay-verify="required" + placeholder="用户名" autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-item password-block"> + <label class="layui-icon label-icon layui-icon-password"></label> + <input type="password" name="password" lay-verify="required" + placeholder="密码" autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-item"> + <div class="layui-row"> + <div class="layui-col-xs7"> + <label class="layui-icon label-icon layui-icon-vercode"></label> + <input type="text" maxlength="4" name="verifyCode" lay-verify="required" + placeholder="验证码" class="layui-input" autocomplete="off"> + </div> + <div class="layui-col-xs5"> + <img class="codeimg" id="codeimg"/> + </div> + </div> + </div> + <div class="layui-form-item" style="margin-top: -10px;"> + <input type="checkbox" name="rememberMe" title="记住我" lay-skin="primary"> + </div> + <div class="layui-form-item"> + <button class="layui-btn layui-btn-normal layui-btn-fluid" lay-submit + lay-filter="login-submit" id="login"> + <i style="display: none" + class="layui-icon layui-icon-loading layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i> + 立即登录 + </button> + </div> + </div> + <div class="layui-form-item febs-tr"> + <a id="regist-href">注册账号</a> + </div> + </div> + </div> + </div> + + <div class="layui-col-xs12 layui-col-lg4 layui-col-lg-offset4 febs-hide" id="regist-div"> + <div class="layui-form" lay-filter="regist-form"> + <div class="layui-anim layui-anim-upbit"> + <ul class="login-type-tab"> + <li class="active">账号注册</li> + </ul> + <div class="normal-login-form"> + <div class="layui-form-item"> + <label class="layui-icon label-icon layui-icon-username"></label> + <input type="text" name="username" minlength="2" maxlength="10" lay-verify="range" + placeholder="用户名" autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-item password-block"> + <label class="layui-icon label-icon layui-icon-password"></label> + <input type="password" name="password" minlength="6" lay-verify="range" + placeholder="密码" autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-item password-block"> + <label class="layui-icon label-icon layui-icon-password"></label> + <input type="password" name="passwordB" lay-verify="required" + placeholder="密码确认" autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-item"> + <button class="layui-btn layui-btn-normal layui-btn-fluid" lay-submit + lay-filter="regist-submit" id="regist"> + <i style="display: none" + class="layui-icon layui-icon-loading layui-icon layui-anim layui-anim-rotate layui-anim-loop"></i> + 立即注册 + </button> + </div> + </div> + </div> + <div class="layui-form-item febs-tr"> + <a id="login-href">已有账号?马上登录</a> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script th:src="@{layui/layui.js}"></script> +<script th:inline="javascript"> + var ctx = [[@{/}]]; + + layui.extend({ + validate: './febs/lay/modules/validate' + }).use(['form', 'layer', 'validate'], function (form, layer) { + var $ = layui.jquery, + validate = layui.validate, + $view = $('#febs-login'), + type = 'login', + $loginDiv = $view.find('#login-div'), + $registDiv = $view.find('#regist-div'); + + form.verify(validate); + form.render(); + initCode(); + + //提交登录表单 + form.on('submit(login-submit)', function (data) { + var loading = $(this).find('.layui-icon'); + if (loading.is(":visible")) return; + loading.show(); + $.post(ctx + 'login', data.field, function (r) { + if (r.code === 200) { + location.href = ctx + 'index'; + } else { + layer.msg(r.message); + loading.hide(); + initCode(); + } + }); + return false; + }); + + //提交注册表单 + form.on('submit(regist-submit)', function (data) { + if (data.field.password !== data.field.passwordB) { + layer.msg('两次密码输入不一致!'); + return; + } + var loading = $(this).find('.layui-icon'); + if (loading.is(":visible")) return; + loading.show(); + $.post(ctx + 'regist', data.field, function (r) { + if (r.code === 200) { + layer.msg('注册成功,请登录'); + loading.hide(); + $view.find('#login-href').trigger('click'); + } else { + layer.msg(r.message); + loading.hide(); + } + }); + return false; + }); + + function initCode() { + $view.find('#codeimg').attr("src", ctx + "images/captcha?data=" + new Date().getTime()); + } + + $view.find('#codeimg').on('click', function () { + initCode(); + }); + + $view.find('#regist-href').on('click', function () { + resetForm(); + type = 'regist'; + $loginDiv.hide(); + $registDiv.show(); + }); + + $view.find('#login-href').on('click', function () { + resetForm(); + type = 'login'; + $loginDiv.show(); + $registDiv.hide(); + }); + + function resetForm() { + $registDiv.find('input[name="username"]').val('') + .end().find('input[name="password"]').val('') + .end().find('input[name="passwordB"]').val(''); + + $loginDiv.find('input[name="username"]').val('') + .end().find('input[name="password"]').val('') + .end().find('input[name="verifyCode"]').val(''); + } + + $(document).on('keydown', function (e) { + if (e.keyCode === 13) { + if (type === 'login') + $view.find('#login').trigger("click"); + if (type === 'regist') + $view.find('#regist').trigger("click"); + } + }); + }); +</script> +</body> +</html> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/httpTrace.html b/src/main/resources/templates/febs/views/monitor/httpTrace.html new file mode 100644 index 0000000..6db72e5 --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/httpTrace.html @@ -0,0 +1,137 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-httptrace" lay-title="请求追踪"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="httptrace-table-form"> + <div class="layui-row"> + <div class="layui-col-md11"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">请求方法</label> + <div class="layui-input-inline"> + <select name="method"> + <option value=""></option> + <option value="GET">GET</option> + <option value="POST">POST</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">请求URL</label> + <div class="layui-input-inline"> + <input type="text" name="url" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md1 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <span class="febs-alert-base febs-alert-success">共追踪到 <strong id="count">0</strong> 条近期HTTP请求记录</span> + <table lay-filter="httptraceTable" lay-data="{id: 'httptraceTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="httptrace-method"> + <div> + {{# if (d.method === 'GET') { }} + <span class="layui-badge febs-bg-green">GET</span> + {{# } else if (d.method === 'POST') { }} + <span class="layui-badge febs-bg-blue">POST</span> + {{# } else { }} + <span class="layui-badge febs-bg-purple">{{d.method}}</span> + {{# } }} + </div> +</script> +<script type="text/html" id="httptrace-status"> + <div> + {{# if (d.status < 200) { }} + <span class="layui-badge febs-tag-purple">{{d.status}}</span> + {{# } else if (d.status < 201) { }} + <span class="layui-badge febs-tag-green">{{d.status}}</span> + {{# } else if (d.status < 399) { }} + <span class="layui-badge febs-tag-cyan">{{d.status}}</span> + {{# } else if (d.status < 403) { }} + <span class="layui-badge febs-tag-orange">{{d.status}}</span> + {{# } else if (d.status < 501) { }} + <span class="layui-badge febs-tag-red">{{d.status}}</span> + {{# } else { }} + <span class="layui-badge febs-bg-geekblue">{{d.status}}</span> + {{# } }} + </div> +</script> +<script type="text/html" id="httptrace-time"> + <div> + {{# if (d.timeTaken < 500) { }} + <span class="layui-badge febs-tag-green">{{d.timeTaken}} ms</span> + {{# } else if (d.timeTaken < 1000) { }} + <span class="layui-badge febs-tag-cyan">{{d.timeTaken}} ms</span> + {{# } else if (d.timeTaken < 1500) { }} + <span class="layui-badge febs-tag-orange">{{d.timeTaken}} ms</span> + {{# } else { }} + <span class="layui-badge febs-tag-red">{{d.timeTaken}} ms</span> + {{# } }} + </div> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'table', 'febs', 'form'], function () { + var $ = layui.jquery, + table = layui.table, + febs = layui.febs, + $view = $('#febs-httptrace'), + $searchForm = $view.find('form'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + form = layui.form, + tableIns; + + form.render(); + initTable(); + + $query.on('click', function () { + tableIns.reload({where: getQueryParams()}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + tableIns.reload({where: getQueryParams()}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + page: false, + id: 'httptraceTable', + url: ctx + 'febs/actuator/httptrace', + cols: [[ + {field: 'requestTime', title: '请求时间', minWidth: 180}, + {title: '请求方法', templet: "#httptrace-method"}, + {field: 'url', title: '请求URL', minWidth: 380}, + {title: '响应状态', templet: '#httptrace-status'}, + {title: '请求耗时', templet: '#httptrace-time'} + ]], + done: function (r) { + $view.find('#count').text(r.count); + } + }); + } + + function getQueryParams() { + return { + method: $searchForm.find('select[name="method"]').val(), + url: $searchForm.find('input[name="url"]').val().trim(), + invalidate_ie_cache: new Date() + }; + } + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/jvmInfo.html b/src/main/resources/templates/febs/views/monitor/jvmInfo.html new file mode 100644 index 0000000..aca9119 --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/jvmInfo.html @@ -0,0 +1,179 @@ +<style> + #febs-jvminfo table th, #febs-jvminfo table td { + height: 28px; + line-height: 28px; + padding: 9px 15px; + position: relative; + box-sizing: border-box; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-jvminfo" lay-title="JVM信息"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <span class="febs-alert-base febs-alert-success"> + 数据获取时间 <strong id="time"></strong> + + <a id="refresh">点击刷新</a> + </span> + <div class="layui-form layui-border-box layui-table-view" lay-id="jvminfoTable"> + <div class="layui-table-box"> + <table cellspacing="0" cellpadding="0" border="0" class="layui-table" lay-skin="line"> + <tr> + <th>参数</th> + <th>描述</th> + <th>当前值</th> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + jvm.memory.max + </span> + </td> + <td>JVM 最大内存</td> + <td data-th-text="${jvm.jvmMemoryMax} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + jvm.memory.committed + </span> + </td> + <td>JVM 可用内存</td> + <td data-th-text="${jvm.jvmMemoryCommitted} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + jvm.memory.used + </span> + </td> + <td>JVM 已用内存</td> + <td data-th-text="${jvm.jvmMemoryUsed} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + jvm.buffer.memory.used + </span> + </td> + <td>JVM 缓冲区已用内存</td> + <td data-th-text="${jvm.jvmBufferMemoryUsed} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + jvm.buffer.count + </span> + </td> + <td>当前缓冲区数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmBufferCount, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-green"> + jvm.threads.daemon + </span> + </td> + <td>JVM 守护线程数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmThreadsdaemon, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-green"> + jvm.threads.live + </span> + </td> + <td>JVM 当前活跃线程数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmThreadsLive, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-green"> + jvm.threads.peak + </span> + </td> + <td>JVM 峰值线程数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmThreadsPeak, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-red"> + jvm.gc.memory.allocated + </span> + </td> + <td>GC 时, 年轻代分配的内存空间</td> + <td data-th-text="${jvm.jvmGcMemoryAllocated} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-red"> + jvm.gc.memory.promoted + </span> + </td> + <td>GC 时, 老年代分配的内存空间</td> + <td data-th-text="${jvm.jvmGcMemoryPromoted} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-red"> + jvm.gc.max.data.size + </span> + </td> + <td>GC 时, 老年代的最大内存空间</td> + <td data-th-text="${jvm.jvmGcMaxDataSize} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-red"> + jvm.gc.live.data.size + </span> + </td> + <td>FullGC 时, 老年代的内存空间</td> + <td data-th-text="${jvm.jvmGcLiveDataSize} + ' MB'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-blue"> + jvm.classes.loaded + </span> + </td> + <td>JVM 已加载 Class 数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmClassesLoaded, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-blue"> + jvm.classes.unloaded + </span> + </td> + <td>JVM 未加载 Class 数量</td> + <td data-th-text="${#numbers.formatInteger(jvm.jvmClassesUnloaded, 0)} + ' 个'"></td> + </tr> + </table> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + util = layui.util, + $view = $('#febs-jvminfo'); + $view.find('#time').text(util.toDateString(new Date().getTime(), 'yyyy年MM月dd日 HH时mm分ss秒')); + + $view.find('a#refresh').on('click', function () { + var isTab = currentUser.isTab; + if (isTab === '1') { + febs.view.tab.refresh(); + } else { + window.location.reload(); + } + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/log.html b/src/main/resources/templates/febs/views/monitor/log.html new file mode 100644 index 0000000..d8e07e0 --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/log.html @@ -0,0 +1,207 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-log" lay-title="系统日志"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="log-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">操作人</label> + <div class="layui-input-inline"> + <input type="text" name="username" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">操作时间</label> + <div class="layui-input-inline"> + <input type="text" name="createTime" id="log-createTime" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">操作描述</label> + <div class="layui-input-inline"> + <input type="text" name="operation" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="log:delete,log:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="logTable" lay-data="{id: 'logTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="log-time"> + <div> + {{# if (d.time < 500) { }} + <span class="layui-badge febs-tag-green">{{d.time}} ms</span> + {{# } else if (d.time < 1000) { }} + <span class="layui-badge febs-tag-cyan">{{d.time}} ms</span> + {{# } else if (d.time < 1500) { }} + <span class="layui-badge febs-tag-orange">{{d.time}} ms</span> + {{# } else { }} + <span class="layui-badge febs-tag-red">{{d.time}} ms</span> + {{# } }} + </div> +</script> +<script type="text/html" id="log-option"> + <span shiro:lacksPermission="log:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="del" shiro:hasPermission="log:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'laydate', 'form', 'table', 'febs', 'dropdown'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + dropdown = layui.dropdown, + $view = $('#febs-log'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $delete = $view.find('#delete'), + $searchForm = $view.find('form'), + sortObject = {field: 'time', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + laydate.render({ + elem: '#log-createTime', + range: true, + trigger: 'click' + }); + + form.render(); + initTable(); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + if (name === 'delete') { + var checkStatus = table.checkStatus('logTable'); + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要删除的日志'); + } else { + febs.modal.confirm('删除日志', '确定删除所选日志?', function () { + var logIds = []; + layui.each(checkStatus.data, function (key, item) { + logIds.push(item.id) + }); + deleteLogs(logIds.join(',')) + }); + } + } + if (name === 'export') { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'log/excel', params, '系统日志表.xlsx'); + } + }, + options: [{ + name: 'delete', + title: '删除日志', + perms: 'log:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'log:export' + }] + }); + + table.on('tool(logTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'del') { + febs.modal.confirm('删除日志', '确定删除该条系统日志?', function () { + deleteLogs(data.id); + }); + } + }); + + table.on('sort(logTable)', function (obj) { + sortObject = obj; + tableIns.reload({ + initSort: obj, + where: $.extend(getQueryParams(), { + field: obj.field, + order: obj.type + }) + }); + }); + + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + createTimeTo = null; + createTimeFrom = null; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'logTable', + url: ctx + 'log/list', + cols: [[ + {type: 'checkbox'}, + {field: 'username', title: '操作人'}, + {field: 'operation', title: '操作描述'}, + {field: 'time', title: '耗时', templet: "#log-time", sort: true}, + {field: 'method', title: '操作方法'}, + {field: 'params', title: '方法参数'}, + {field: 'ip', title: 'IP地址'}, + {field: 'location', title: '操作地点'}, + {field: 'createTime', title: '创建时间', minWidth: 180, sort: true}, + {title: '操作', toolbar: '#log-option'} + ]] + }); + } + + function deleteLogs(logIds) { + febs.get(ctx + 'log/delete/' + logIds, null, function () { + febs.alert.success('删除系统日志成功'); + $query.click(); + }); + } + + function getQueryParams() { + var createTime = $searchForm.find('input[name="createTime"]').val(); + if (createTime) { + createTimeFrom = createTime.split(' - ')[0]; + createTimeTo = createTime.split(' - ')[1]; + } + return { + createTimeFrom: createTimeFrom, + createTimeTo: createTimeTo, + username: $searchForm.find('input[name="username"]').val().trim(), + operation: $searchForm.find('input[name="operation"]').val().trim(), + invalidate_ie_cache: new Date() + }; + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/loginLog.html b/src/main/resources/templates/febs/views/monitor/loginLog.html new file mode 100644 index 0000000..a5ab948 --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/loginLog.html @@ -0,0 +1,184 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-login-log" lay-title="登录日志"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="login-log-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">登录用户</label> + <div class="layui-input-inline"> + <input type="text" name="username" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">登录时间</label> + <div class="layui-input-inline"> + <input type="text" name="createTime" id="login-log-createTime" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="loginlog:delete,loginlog:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="loginLogTable" lay-data="{id: 'loginLogTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="login-log-option"> + <span shiro:lacksPermission="loginlog:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="del" shiro:hasPermission="loginlog:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'laydate', 'form', 'table', 'febs', 'dropdown'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + dropdown = layui.dropdown, + $view = $('#febs-login-log'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'loginTime', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + laydate.render({ + elem: '#login-log-createTime', + range: true, + trigger: 'click' + }); + + form.render(); + + initTable(); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + if (name === 'delete') { + var checkStatus = table.checkStatus('loginLogTable'); + if (!checkStatus.data.length) { + febs.alert.warn('请勾选需要删除的日志'); + } else { + febs.modal.confirm('删除日志', '确定删除所选日志?', function () { + var logIds = []; + layui.each(checkStatus.data, function (key, item) { + logIds.push(item.id) + }); + deleteLogs(logIds.join(',')) + }); + } + } + if (name === 'export') { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'loginLog/excel', params, '登录日志表.xlsx'); + } + }, + options: [ { + name: 'delete', + title: '删除日志', + perms: 'loginlog:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'loginlog:export' + }] + }); + + table.on('tool(loginLogTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'del') { + febs.modal.confirm('删除日志', '确定删除该条登录日志?', function () { + deleteLogs(data.id); + }); + } + }); + + table.on('sort(loginLogTable)', function (obj) { + sortObject = obj; + tableIns.reload({ + initSort: obj, + where: $.extend(getQueryParams(), { + field: obj.field, + order: obj.type + }) + }); + }); + + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + sortObject.type = 'null'; + createTimeTo = null; + createTimeFrom = null; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'loginLogTable', + url: ctx + 'loginLog/list', + cols: [[ + {type: 'checkbox'}, + {field: 'username', title: '登录用户'}, + {field: 'ip', title: 'IP地址'}, + {field: 'location', title: '登录地点', minWidth: 180}, + {field: 'loginTime', title: '登录时间', minWidth: 180, sort: true}, + {field: 'system', title: '登录系统'}, + {field: 'browser', title: '浏览器'}, + {title: '操作', toolbar: '#login-log-option'} + ]] + }); + } + + function deleteLogs(logIds) { + febs.get(ctx + 'loginLog/delete/' + logIds, null, function () { + febs.alert.success('删除登录日志成功'); + $query.click(); + }); + } + + function getQueryParams() { + var createTime = $searchForm.find('input[name="createTime"]').val(); + if (createTime) { + createTimeFrom = createTime.split(' - ')[0]; + createTimeTo = createTime.split(' - ')[1]; + } + return { + loginTimeFrom: createTimeFrom, + loginTimeTo: createTimeTo, + username: $searchForm.find('input[name="username"]').val().trim() + }; + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/online.html b/src/main/resources/templates/febs/views/monitor/online.html new file mode 100644 index 0000000..b457c8f --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/online.html @@ -0,0 +1,137 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-online" lay-title="在线用户"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="online-table-form"> + <div class="layui-row"> + <div class="layui-col-md11"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">用户名</label> + <div class="layui-input-inline"> + <input type="text" name="username" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md1 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <div class="febs-hide"> + <span class="febs-alert-base febs-alert-success" id="count"></span> + </div> + <table lay-filter="onlineTable" lay-data="{id: 'onlineTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="online-username"> + <div> + {{d.username}} + {{# + if (d.current) { + }} + <span class="layui-badge febs-tag-red">current</span> + {{# + } + }} + </div> +</script> +<script type="text/html" id="online-status"> + {{# + var status = { + 1: {title: '在线', color: 'green'}, + 0: {title: '离线', color: 'volcano'} + }[d.status]; + }} + <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> +</script> +<script type="text/html" id="online-option"> + <span shiro:lacksPermission="user:kickout"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="del" shiro:hasPermission="user:kickout"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'form', 'table', 'febs'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + $view = $('#febs-online'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + tableIns; + + form.render(); + + initTable(); + + table.on('tool(onlineTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'del') { + febs.modal.confirm('踢出用户', '确定将该用户踢出?', function () { + if (data.current) { + $.get(ctx + 'logout', function () { + window.location.reload(); + }); + } else { + febs.get(ctx + "session/delete/" + data.id, null, function () { + febs.alert.success('踢出用户成功'); + $query.click(); + }); + } + }); + } + }); + + $query.on('click', function () { + tableIns.reload({where: getQueryParams()}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + tableIns.reload({where: getQueryParams()}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'onlineTable', + url: ctx + 'session/list', + page: false, + cols: [[ + {title: '用户名', templet: '#online-username', minWidth: 180}, + {field: 'startTimestamp', title: '登录时间', minWidth: 180}, + {field: 'lastAccessTime', title: '最后访问时间', minWidth: 180}, + {field: 'host', title: 'IP地址', minWidth: 165}, + {field: 'location', title: '登录地点', minWidth: 180}, + {title: '状态', templet: '#online-status'}, + {title: '操作', toolbar: '#online-option'} + ]], + done: function (r) { + $view.find('span#count').html('当前共<strong> ' + r.count + ' </strong>人在线') + .parents('div.febs-hide').show(); + } + }); + } + + function getQueryParams() { + return { + username: $searchForm.find('input[name="username"]').val().trim() + }; + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/serverInfo.html b/src/main/resources/templates/febs/views/monitor/serverInfo.html new file mode 100644 index 0000000..e3ee1d8 --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/serverInfo.html @@ -0,0 +1,125 @@ +<style> + #febs-server-info table th, #febs-server-info table td { + height: 28px; + line-height: 28px; + padding: 9px 15px; + position: relative; + box-sizing: border-box; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-server-info" lay-title="服务器信息"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <span class="febs-alert-base febs-alert-success"> + 数据获取时间 <strong id="time"></strong> + + <a id="refresh">点击刷新</a> + </span> + <div class="layui-form layui-border-box layui-table-view" lay-id="tomcat-infoTable"> + <div class="layui-table-box"> + <table cellspacing="0" cellpadding="0" border="0" class="layui-table" lay-skin="line"> + <tr> + <th>参数</th> + <th>描述</th> + <th>当前值</th> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-green"> + system.cpu.count + </span> + </td> + <td>CPU核心数</td> + <td data-th-text="${#numbers.formatInteger(server.systemCpuCount, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-green"> + system.cpu.usage + </span> + </td> + <td>服务器CPU使用率</td> + <td data-th-text="${#numbers.formatDecimal((server.systemCpuUsage*100), 2, 2,'POINT')} + ' %'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + process.startTime + </span> + </td> + <td>应用启动时间点</td> + <td data-th-text="${server.processStartTime}"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + process.uptime + </span> + </td> + <td>应用已运行时间</td> + <td data-th-text="${server.processUptime} + ' 秒'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + process.cpu.usage + </span> + </td> + <td>应用应用CPU占用率</td> + <td data-th-text="${#numbers.formatDecimal((server.processCpuUsage*100), 2, 2,'POINT')} + ' %'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + jdbc.connections.active + </span> + </td> + <td>JDBC活跃连接数</td> + <td data-th-text="${#numbers.formatInteger(server.jdbcConnectionsActive, 0)}"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + jdbc.connections.max + </span> + </td> + <td>JDBC最大连接数</td> + <td data-th-text="${#numbers.formatInteger(server.jdbcConnectionsMax, 0)}"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + jdbc.connections.min + </span> + </td> + <td>JDBC最小连接数</td> + <td data-th-text="${#numbers.formatInteger(server.jdbcConnectionsMin, 0)}"></td> + </tr> + </table> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + util = layui.util, + $view = $('#febs-server-info'); + $view.find('#time').text(util.toDateString(new Date().getTime(), 'yyyy年MM月dd日 HH时mm分ss秒')); + + $view.find('a#refresh').on('click', function () { + var isTab = currentUser.isTab; + if (isTab === '1') { + febs.view.tab.refresh(); + } else { + window.location.reload(); + } + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/swagger.html b/src/main/resources/templates/febs/views/monitor/swagger.html new file mode 100644 index 0000000..6966f8f --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/swagger.html @@ -0,0 +1,12 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-swagger" lay-title="Swagger文档"> + <div class="layui-row febs-container"> + <iframe id="container" data-th-src="@{/swagger-ui.html}" frameborder="no" style="width: 100%;" scrolling="auto" /> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery'], function () { + var $ = layui.jquery, + $view = $('#febs-swagger'); + $view.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'}); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/monitor/tomcatInfo.html b/src/main/resources/templates/febs/views/monitor/tomcatInfo.html new file mode 100644 index 0000000..1541a3a --- /dev/null +++ b/src/main/resources/templates/febs/views/monitor/tomcatInfo.html @@ -0,0 +1,152 @@ +<style> + #febs-tomcat-info table th, #febs-tomcat-info table td { + height: 28px; + line-height: 28px; + padding: 9px 15px; + position: relative; + box-sizing: border-box; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-tomcat-info" lay-title="Tomcat信息"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <span class="febs-alert-base febs-alert-success"> + 数据获取时间 <strong id="time"></strong> + + <a id="refresh">点击刷新</a> + </span> + <div class="layui-form layui-border-box layui-table-view" lay-id="tomcat-infoTable"> + <div class="layui-table-box"> + <table cellspacing="0" cellpadding="0" border="0" class="layui-table" lay-skin="line"> + <tr> + <th>参数</th> + <th>描述</th> + <th>当前值</th> + </tr> +<!-- <tr>--> +<!-- <td>--> +<!-- <span class="layui-badge febs-tag-green">--> +<!-- tomcat.sessions.created--> +<!-- </span>--> +<!-- </td>--> +<!-- <td>tomcat 已创建 session 数</td>--> +<!-- <td data-th-text="${#numbers.formatInteger(tomcat.tomcatSessionsCreated, 0)} + ' 个'"></td>--> +<!-- </tr>--> +<!-- <tr>--> +<!-- <td>--> +<!-- <span class="layui-badge febs-tag-green">--> +<!-- tomcat.sessions.expired--> +<!-- </span>--> +<!-- </td>--> +<!-- <td>tomcat 已过期 session 数</td>--> +<!-- <td data-th-text="${#numbers.formatInteger(tomcat.tomcatSessionsExpired, 0)} + ' 个'"></td>--> +<!-- </tr>--> +<!-- <tr>--> +<!-- <td>--> +<!-- <span class="layui-badge febs-tag-green">--> +<!-- tomcat.sessions.active.current--> +<!-- </span>--> +<!-- </td>--> +<!-- <td>tomcat 当前活跃 session 数</td>--> +<!-- <td data-th-text="${#numbers.formatInteger(tomcat.tomcatSessionsActiveCurrent, 0)} + ' 个'"></td>--> +<!-- </tr>--> +<!-- <tr>--> +<!-- <td>--> +<!-- <span class="layui-badge febs-tag-green">--> +<!-- tomcat.sessions.active.max--> +<!-- </span>--> +<!-- </td>--> +<!-- <td>tomcat 活跃 session 数峰值</td>--> +<!-- <td data-th-text="${#numbers.formatInteger(tomcat.tomcatSessionsActiveMax, 0)} + ' 个'"></td>--> +<!-- </tr>--> +<!-- <tr>--> +<!-- <td>--> +<!-- <span class="layui-badge febs-tag-green">--> +<!-- tomcat.sessions.rejected--> +<!-- </span>--> +<!-- </td>--> +<!-- <td>超过session 最大配置后,拒绝的 session 个数</td>--> +<!-- <td data-th-text="${#numbers.formatInteger(tomcat.tomcatSessionsRejected, 0)} + ' 个'"></td>--> +<!-- </tr>--> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + tomcat.global.sent + </span> + </td> + <td>发送的字节数</td> + <td data-th-text="${tomcat.tomcatGlobalSent} + ' bytes'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + tomcat.global.request.max + </span> + </td> + <td>request 请求最长耗时</td> + <td data-th-text="${tomcat.tomcatGlobalRequestMax} + ' 秒'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-purple"> + tomcat.global.error + </span> + </td> + <td>tomcat 全局异常数量</td> + <td data-th-text="${#numbers.formatInteger(tomcat.tomcatGlobalError, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + tomcat.threads.current + </span> + </td> + <td>tomcat 当前线程数(包括守护线程)</td> + <td data-th-text="${#numbers.formatInteger(tomcat.tomcatThreadsCurrent, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + tomcat.threads.config.max + </span> + </td> + <td>tomcat 配置的线程最大数</td> + <td data-th-text="${#numbers.formatInteger(tomcat.tomcatThreadsConfigMax, 0)} + ' 个'"></td> + </tr> + <tr> + <td> + <span class="layui-badge febs-tag-cyan"> + tomcat.threads.busy + </span> + </td> + <td>tomcat 当前繁忙线程数</td> + <td data-th-text="${#numbers.formatInteger(tomcat.tomcatThreadsBusy, 0)} + ' 个'"></td> + </tr> + </table> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + util = layui.util, + $view = $('#febs-tomcat-info'); + $view.find('#time').text(util.toDateString(new Date().getTime(), 'yyyy年MM月dd日 HH时mm分ss秒')); + + $view.find('a#refresh').on('click', function () { + var isTab = currentUser.isTab; + if (isTab === '1') { + febs.view.tab.refresh(); + } else { + window.location.reload(); + } + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/area.html b/src/main/resources/templates/febs/views/others/apex/area.html new file mode 100644 index 0000000..e9cf205 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/area.html @@ -0,0 +1,756 @@ +<style> + #febs-apex-area .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-area" lay-title="面积图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">基础面积图</div> + <div class="layui-card-body"> + <div id="basicAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">仿真图</div> + <div class="layui-card-body"> + <div id="splineAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带负值面积图</div> + <div class="layui-card-body"> + <div id="negativeAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">层叠面积图</div> + <div class="layui-card-body"> + <div id="stackedAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">不规则时间序列面积图</div> + <div class="layui-card-body"> + <div id="irregularTimeseriesAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">非连续性面积图</div> + <div class="layui-card-body"> + <div id="nullValuesAreaChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-src="@{febs/lay/data/dataSeries.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts'], function () { + // ------------- basicAreaChart ------------------- + var basicAreaChartOptions = { + chart: { + height: 320, + type: 'area', + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + curve: 'straight', + width: [3] + }, + series: [{ + name: "STOCK ABC", + data: series.monthDataSeries1.prices + }], + labels: series.monthDataSeries1.dates, + xaxis: { + type: 'datetime' + }, + yaxis: { + opposite: true + }, + legend: { + horizontalAlign: 'left' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + // --------------- basicAreaChart -------------- + new ApexCharts( + document.querySelector("#basicAreaChart"), + basicAreaChartOptions + ).render(); + + var splineAreaChartOptions = { + chart: { + height: 320, + type: 'area', + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: [3, 3], + curve: 'smooth' + }, + series: [{ + name: 'series1', + data: [31, 40, 28, 51, 42, 109, 100] + }, { + name: 'series2', + data: [11, 32, 45, 32, 34, 52, 41] + }], + colors: ['#6c5ce7', '#ff3e6d'], + xaxis: { + type: 'datetime', + categories: ["2018-09-19T00:00:00", "2018-09-19T01:30:00", "2018-09-19T02:30:00", "2018-09-19T03:30:00", "2018-09-19T04:30:00", "2018-09-19T05:30:00", "2018-09-19T06:30:00"], + }, + tooltip: { + x: { + format: 'dd/MM/yy HH:mm' + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#splineAreaChart"), + splineAreaChartOptions + ).render(); + + // ------------- negativeAreaChart ----------------- + var negativeAreaChartOptions = { + chart: { + height: 320, + type: 'area', + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: [3, 3], + curve: 'straight' + }, + series: [{ + name: 'north', + data: [{ + x: 1996, + y: 322 + }, + { + x: 1997, + y: 324 + }, + { + x: 1998, + y: 329 + }, + { + x: 1999, + y: 342 + }, + { + x: 2000, + y: 348 + }, + { + x: 2001, + y: 334 + }, + { + x: 2002, + y: 325 + }, + { + x: 2003, + y: 316 + }, + { + x: 2004, + y: 318 + }, + { + x: 2005, + y: 330 + }, + { + x: 2006, + y: 355 + }, + { + x: 2007, + y: 366 + }, + { + x: 2008, + y: 337 + }, + { + x: 2009, + y: 352 + }, + { + x: 2010, + y: 377 + }, + { + x: 2011, + y: 383 + }, + { + x: 2012, + y: 344 + }, + { + x: 2013, + y: 366 + }, + { + x: 2014, + y: 389 + }, + { + x: 2015, + y: 334 + } + ] + }, { + name: 'south', + data: [ + + { + x: 1996, + y: 162 + }, + { + x: 1997, + y: 90 + }, + { + x: 1998, + y: 50 + }, + { + x: 1999, + y: 77 + }, + { + x: 2000, + y: 35 + }, + { + x: 2001, + y: -45 + }, + { + x: 2002, + y: -88 + }, + { + x: 2003, + y: -120 + }, + { + x: 2004, + y: -156 + }, + { + x: 2005, + y: -123 + }, + { + x: 2006, + y: -88 + }, + { + x: 2007, + y: -66 + }, + { + x: 2008, + y: -45 + }, + { + x: 2009, + y: -29 + }, + { + x: 2010, + y: -45 + }, + { + x: 2011, + y: -88 + }, + { + x: 2012, + y: -132 + }, + { + x: 2013, + y: -146 + }, + { + x: 2014, + y: -169 + }, + { + x: 2015, + y: -184 + } + ] + }], + xaxis: { + type: 'datetime', + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + yaxis: { + tickAmount: 4, + floating: false, + + labels: { + style: { + color: '#8e8da4' + }, + offsetY: -7, + offsetX: 0 + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + colors: ['#0acf97', '#FFA41B'], + fill: { + type: ['gradient', 'gradient'], + opacity: 1 + }, + tooltip: { + x: { + format: "yyyy" + }, + fixed: { + enabled: false, + position: 'topRight' + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#negativeAreaChart"), + negativeAreaChartOptions + ).render(); + + // ------------- stackedAreaChart ---------------- + var stackedAreaChartOptions = { + chart: { + height: 320, + type: 'area', + stacked: true, + events: { + selection: function (chart, e) { + console.log(new Date(e.xaxis.min)) + } + }, + toolbar: { + show: false + } + + }, + colors: ['#008FFB', '#00E396', '#CED4DC'], + dataLabels: { + enabled: false + }, + stroke: { + width: [3, 3, 3], + curve: 'smooth' + }, + + series: [{ + name: 'South', + data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, { + min: 10, + max: 60 + }) + }, + { + name: 'North', + data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, { + min: 10, + max: 20 + }) + }, + + { + name: 'Central', + data: generateDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 20, { + min: 10, + max: 15 + }) + } + ], + fill: { + type: 'gradient', + gradient: { + opacityFrom: 0.6, + opacityTo: 0.8 + } + }, + legend: { + position: 'top', + horizontalAlign: 'left' + }, + xaxis: { + type: 'datetime' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + new ApexCharts( + document.querySelector("#stackedAreaChart"), + stackedAreaChartOptions + ).render(); + + function generateDayWiseTimeSeries(baseval, count, yrange) { + var i = 0; + var series = []; + while (i < count) { + var x = baseval; + var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min; + + series.push([x, y]); + baseval += 86400000; + i++; + } + return series; + } + + // ------------------ irregularTimeseriesAreaChart --------------- + + var ts1 = 1388534400000; + var ts2 = 1388620800000; + var ts3 = 1389052800000; + + var dataSet1 = []; + var dataSet2 = []; + var dataSet3 = []; + + for (var j = 0; j < 12; j++) { + ts1 = ts1 + 86400000; + var innerArr1 = [ts1, dataSeries[2][j].value]; + dataSet1.push(innerArr1) + } + for (var k = 0; k < 18; k++) { + ts2 = ts2 + 86400000; + var innerArr2 = [ts2, dataSeries[1][k].value]; + dataSet2.push(innerArr2) + } + for (var l = 0; l < 12; l++) { + ts3 = ts3 + 86400000; + var innerArr3 = [ts3, dataSeries[0][l].value]; + dataSet3.push(innerArr3) + } + + var irregularTimeseriesAreaChartOptions = { + chart: { + type: 'area', + stacked: false, + height: 320, + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + plotOptions: { + line: { + curve: 'smooth' + } + }, + dataLabels: { + enabled: false + }, + series: [{ + name: 'PRODUCT A', + data: dataSet1 + }, { + name: 'PRODUCT B', + data: dataSet2 + }, { + name: 'PRODUCT C', + data: dataSet3 + }], + markers: { + size: 0, + style: 'full' + }, + fill: { + type: 'gradient', + gradient: { + shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.45, + opacityTo: 0.05, + stops: [20, 100, 100, 100] + } + }, + yaxis: { + labels: { + style: { + color: '#8e8da4' + }, + offsetX: 0, + formatter: function (val) { + return (val / 1000000).toFixed(2); + } + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + } + }, + xaxis: { + type: 'datetime', + tickAmount: 8, + min: new Date("01/01/2014").getTime(), + max: new Date("01/20/2014").getTime(), + labels: { + rotate: -15, + rotateAlways: true + } + }, + tooltip: { + shared: true + }, + stroke: { + width: [3, 3, 3] + }, + legend: { + position: 'top', + horizontalAlign: 'right', + offsetX: -10 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#irregularTimeseriesAreaChart"), + irregularTimeseriesAreaChartOptions + ).render(); + + // ------------- nullValuesAreaChart ------------------- + var nullValuesAreaChartOptions = { + chart: { + height: 320, + type: 'area', + animations: { + enabled: false + }, + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: [3], + curve: 'straight' + }, + colors: ['#7b88ff'], + series: [{ + name: 'Network', + data: [{ + x: 'Dec 23 2017', + y: null + }, + { + x: 'Dec 24 2017', + y: 44 + }, + { + x: 'Dec 25 2017', + y: 31 + }, + { + x: 'Dec 26 2017', + y: 38 + }, + { + x: 'Dec 27 2017', + y: null + }, + { + x: 'Dec 28 2017', + y: 32 + }, + { + x: 'Dec 29 2017', + y: 55 + }, + { + x: 'Dec 30 2017', + y: 51 + }, + { + x: 'Dec 31 2017', + y: 67 + }, + { + x: 'Jan 01 2018', + y: 22 + }, + { + x: 'Jan 02 2018', + y: 34 + }, + { + x: 'Jan 03 2018', + y: null + }, + { + x: 'Jan 04 2018', + y: null + }, + { + x: 'Jan 05 2018', + y: 11 + }, + { + x: 'Jan 06 2018', + y: 4 + }, + { + x: 'Jan 07 2018', + y: 15 + }, + { + x: 'Jan 08 2018', + y: null + }, + { + x: 'Jan 09 2018', + y: 9 + }, + { + x: 'Jan 10 2018', + y: 34 + }, + { + x: 'Jan 11 2018', + y: null + }, + { + x: 'Jan 12 2018', + y: null + }, + { + x: 'Jan 13 2018', + y: 13 + }, + { + x: 'Jan 14 2018', + y: null + } + ] + }], + markers: { + size: 4, + hover: { + size: 5 + } + }, + tooltip: { + intersect: true, + shared: false + }, + theme: { + palette: 'palette1' + }, + xaxis: { + type: 'datetime' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#nullValuesAreaChart"), + nullValuesAreaChartOptions + ).render(); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/bar.html b/src/main/resources/templates/febs/views/others/apex/bar.html new file mode 100644 index 0000000..bff10ce --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/bar.html @@ -0,0 +1,631 @@ +<style> + #febs-apex-bar .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-bar" lay-title="条形图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">基础条形图表</div> + <div class="layui-card-body"> + <div id="basicBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">组合条形图表</div> + <div class="layui-card-body"> + <div id="groupBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">层叠条形图表</div> + <div class="layui-card-body"> + <div id="stackedBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">百分比层叠条形图表</div> + <div class="layui-card-body"> + <div id="stackedBar100Chart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带负值的条形图表</div> + <div class="layui-card-body"> + <div id="negativeBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带负值的条形图表</div> + <div class="layui-card-body"> + <div id="timelineBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带数据标签的条形图表</div> + <div class="layui-card-body"> + <div id="customDataLabelsBarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">自定义图案图表</div> + <div class="layui-card-body"> + <div id="patternedBarChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts'], function () { + // ------------ basicBarChart ---------------- + var basicBarChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true + } + }, + dataLabels: { + enabled: false + }, + series: [{ + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380] + }], + xaxis: { + categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'Germany'], + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#basicBarChart"), + basicBarChartOptions + ).render(); + + // ------------- groupBarChart -------------- + var groupBarChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true, + dataLabels: { + position: 'top' + } + } + }, + dataLabels: { + enabled: true, + offsetX: -6, + style: { + fontSize: '12px', + colors: ['#fff'] + } + }, + stroke: { + show: true, + width: 1, + colors: ['#fff'] + }, + series: [{ + data: [55, 41, 64, 22, 43, 21] + }, { + data: [32, 33, 52, 13, 44, 32] + }], + xaxis: { + categories: [2003, 2004, 2005, 2006, 2007] + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#groupBarChart"), + groupBarChartOptions + ).render(); + + // --------------- stackedBarChart ----------------- + var stackedBarChartOptions = { + chart: { + height: 320, + type: 'bar', + stacked: true, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true + } + }, + stroke: { + width: 1, + colors: ['#fff'] + }, + series: [{ + name: 'Marine Sprite', + data: [44, 55, 41, 37, 22, 43, 21] + }, { + name: 'Striking Calf', + data: [53, 32, 33, 52, 13, 43, 32] + }, { + name: 'Tank Picture', + data: [12, 17, 11, 9, 15, 11, 20] + }, { + name: 'Bucket Slope', + data: [9, 7, 5, 8, 6, 9, 4] + }, { + name: 'Reborn Kid', + data: [25, 12, 19, 32, 25, 24, 10] + }], + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014], + labels: { + formatter: function (val) { + return val + "K" + } + } + }, + tooltip: { + y: { + formatter: function (val) { + return val + "K" + } + } + }, + fill: { + opacity: 1 + }, + legend: { + position: 'top', + horizontalAlign: 'left', + offsetX: 40 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#stackedBarChart"), + stackedBarChartOptions + ).render(); + + // ---------------- stackedBar100Chart ----------------- + var stackedBar100ChartOptions = { + chart: { + height: 320, + type: 'bar', + stacked: true, + stackType: '100%', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true + } + }, + stroke: { + width: 1, + colors: ['#fff'] + }, + series: [{ + name: 'Marine Sprite', + data: [44, 55, 41, 37, 22, 43, 21] + }, { + name: 'Striking Calf', + data: [53, 32, 33, 52, 13, 43, 32] + }, { + name: 'Tank Picture', + data: [12, 17, 11, 9, 15, 11, 20] + }, { + name: 'Bucket Slope', + data: [9, 7, 5, 8, 6, 9, 4] + }, { + name: 'Reborn Kid', + data: [25, 12, 19, 32, 25, 24, 10] + }], + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014] + }, + + tooltip: { + y: { + formatter: function (val) { + return val + "K" + } + } + }, + fill: { + opacity: 1 + }, + legend: { + position: 'top', + horizontalAlign: 'left', + offsetX: 40 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#stackedBar100Chart"), + stackedBar100ChartOptions + ).render(); + + // ------------- negativeBarChart ------------ + var negativeBarChartOptions = { + chart: { + height: 320, + type: 'bar', + stacked: true, + toolbar: { + show: false + } + }, + colors: ['#008FFB', '#FF4560'], + plotOptions: { + bar: { + horizontal: true, + barHeight: '80%' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 1, + colors: ["#fff"] + }, + series: [{ + name: 'Males', + data: [0.4, 0.65, 0.76, 0.88, 1.5, 2.1, 2.9, 3.8, 3.9, 4.2, 4, 4.3] + }, + { + name: 'Females', + data: [-0.8, -1.05, -1.06, -1.18, -1.4, -2.2, -2.85, -3.7, -3.96, -4.22, -4.3, -4.4] + } + ], + yaxis: { + min: -5, + max: 5 + }, + tooltip: { + shared: false, + x: { + formatter: function (val) { + return val + } + }, + y: { + formatter: function (val) { + return Math.abs(val) + "%" + } + } + }, + xaxis: { + categories: ['85+', '80-84', '75-79', '70-74', '65-69', '60-64', '55-59', '50-54', '45-49', '40-44', '35-39', '30-34', '25-29'], + title: { + text: 'Percent' + }, + labels: { + formatter: function (val) { + return Math.abs(Math.round(val)) + "%" + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#negativeBarChart"), + negativeBarChartOptions + ).render(); + + // ------------ timelineBarChart ---------------- + var timelineBarChartOptions = { + chart: { + height: 320, + type: 'rangeBar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true + } + }, + series: [{ + name: 'Bob', + data: [{ + x: 'Design', + y: [new Date('2019-03-02').getTime(), new Date('2019-03-03').getTime()] + }, { + x: 'Code', + y: [new Date('2019-03-02').getTime(), new Date('2019-03-04').getTime()] + + }, { + x: 'Test', + y: [new Date('2019-03-04').getTime(), new Date('2019-03-07').getTime()] + }, { + x: 'Deployment', + y: [new Date('2019-03-11').getTime(), new Date('2019-03-12').getTime()] + }] + }, { + name: 'Joe', + data: [{ + x: 'Design', + y: [new Date('2019-03-01').getTime(), new Date('2019-03-02').getTime()] + }, { + x: 'Code', + y: [new Date('2019-03-03').getTime(), new Date('2019-03-07').getTime()] + }, { + x: 'Test', + y: [new Date('2019-03-06').getTime(), new Date('2019-03-09').getTime()] + }, { + x: 'Deployment', + y: [new Date('2019-03-10').getTime(), new Date('2019-03-11').getTime()] + }] + }], + yaxis: { + min: new Date('2019-03-01').getTime(), + max: new Date('2019-03-14').getTime() + }, + xaxis: { + type: 'datetime' + }, + fill: { + type: 'gradient', + gradient: { + shade: 'light', + type: "vertical", + shadeIntensity: 0.25, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [50, 0, 100, 100] + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#timelineBarChart"), + timelineBarChartOptions + ).render(); + + // -------------- customDataLabelsBarChart ------------- + var customDataLabelsBarChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + barHeight: '100%', + distributed: true, + horizontal: true, + dataLabels: { + position: 'bottom' + } + } + }, + dataLabels: { + enabled: true, + textAnchor: 'start', + style: { + colors: ['#fff'] + }, + formatter: function (val, opt) { + return opt.w.globals.labels[opt.dataPointIndex] + ": " + val + }, + offsetX: 0, + dropShadow: { + enabled: true + } + }, + series: [{ + data: [400, 430, 448, 470, 540, 580, 690, 1100, 1200, 1380] + }], + stroke: { + width: 1, + colors: ['#fff'] + }, + xaxis: { + categories: ['South Korea', 'Canada', 'United Kingdom', 'Netherlands', 'Italy', 'France', 'Japan', 'United States', 'China', 'India'], + }, + yaxis: { + labels: { + show: false + } + }, + title: { + text: 'Custom DataLabels', + align: 'center', + floating: true + }, + subtitle: { + text: 'Category Names as DataLabels inside bars', + align: 'center' + }, + tooltip: { + theme: 'dark', + x: { + show: false + }, + y: { + title: { + formatter: function () { + return '' + } + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#customDataLabelsBarChart"), + customDataLabelsBarChartOptions + ).render(); + + // ------------ patternedBarChart ------------------- + var patternedBarChartOptions = { + chart: { + height: 320, + type: 'bar', + stacked: true, + shadow: { + enabled: true, + blur: 1, + opacity: 0.5 + }, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: true, + barHeight: '60%' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: 2 + }, + series: [{ + name: 'Marine Sprite', + data: [44, 55, 41, 37, 22, 43, 21] + }, { + name: 'Striking Calf', + data: [53, 32, 33, 52, 13, 43, 32] + }, { + name: 'Tank Picture', + data: [12, 17, 11, 9, 15, 11, 20] + }, { + name: 'Bucket Slope', + data: [9, 7, 5, 8, 6, 9, 4] + }], + xaxis: { + categories: [2008, 2009, 2010, 2011, 2012, 2013, 2014] + }, + yaxis: { + title: { + text: undefined + } + }, + tooltip: { + shared: false, + y: { + formatter: function (val) { + return val + "K" + } + } + }, + fill: { + type: 'pattern', + opacity: 1, + pattern: { + style: ['circles', 'slantedLines', 'verticalLines', 'horizontalLines'] + } + }, + states: { + hover: { + filter: 'none' + } + }, + legend: { + position: 'right', + offsetY: 40 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#patternedBarChart"), + patternedBarChartOptions + ).render(); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/column.html b/src/main/resources/templates/febs/views/others/apex/column.html new file mode 100644 index 0000000..2d86baf --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/column.html @@ -0,0 +1,480 @@ +<style> + #febs-apex-column .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-column" lay-title="柱状图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">基础柱状图</div> + <div class="layui-card-body"> + <div id="basicColumnChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带数据标签柱状图</div> + <div class="layui-card-body"> + <div id="dataLabelsColumnChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">层叠柱状图</div> + <div class="layui-card-body"> + <div id="stackedColumnChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">百分比层叠柱状图</div> + <div class="layui-card-body"> + <div id="stackedColumnChart100"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带负值的柱状图</div> + <div class="layui-card-body"> + <div id="columnWithNegativeChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">范围柱状图</div> + <div class="layui-card-body"> + <div id="rangeColumnChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-src="@{febs/lay/data/dataSeries.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts'], function () { + + // ----------------- basicColumnChart ------------------- + var basicColumnChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: '50%' + } + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + series: [{ + name: 'Net Profit', + data: [44, 55, 57, 56, 61, 58, 63, 60, 66] + }, { + name: 'Revenue', + data: [76, 85, 101, 98, 87, 105, 91, 114, 94] + }, { + name: 'Free Cash Flow', + data: [35, 41, 36, 26, 45, 48, 52, 53, 41] + }], + xaxis: { + categories: ['Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct'] + }, + fill: { + opacity: 1 + + }, + tooltip: { + y: { + formatter: function (val) { + return "$ " + val + " thousands" + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#basicColumnChart"), + basicColumnChartOptions + ).render(); + + // -------------- dataLabelsColumnChart --------------- + var dataLabelsColumnChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + dataLabels: { + position: 'top' // top, center, bottom + } + } + }, + dataLabels: { + enabled: true, + formatter: function (val) { + return val + "%"; + }, + offsetY: -20, + style: { + fontSize: '12px', + colors: ["#304758"] + } + }, + series: [{ + name: 'Inflation', + data: [2.3, 3.1, 4.0, 10.1, 4.0, 3.6, 3.2, 2.3, 1.4, 0.8, 0.5, 0.2] + }], + xaxis: { + categories: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"], + position: 'top', + labels: { + offsetY: -18 + + }, + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + crosshairs: { + fill: { + type: 'gradient', + gradient: { + colorFrom: '#D8E3F0', + colorTo: '#BED1E6', + stops: [0, 100], + opacityFrom: 0.4, + opacityTo: 0.5 + } + } + }, + tooltip: { + enabled: true, + offsetY: -35 + + } + }, + fill: { + gradient: { + shade: 'light', + type: "horizontal", + shadeIntensity: 0.25, + gradientToColors: undefined, + inverseColors: true, + opacityFrom: 1, + opacityTo: 1, + stops: [50, 0, 100, 100] + } + }, + yaxis: { + axisBorder: { + show: false + }, + axisTicks: { + show: false + }, + labels: { + show: false, + formatter: function (val) { + return val + "%"; + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#dataLabelsColumnChart"), + dataLabelsColumnChartOptions + ).render(); + + // ---------------- stackedColumnChart -------------- + var stackedColumnChartOptions = { + chart: { + height: 320, + type: 'bar', + stacked: true, + toolbar: { + show: false + }, + zoom: { + enabled: true + } + }, + responsive: [{ + breakpoint: 480, + options: { + legend: { + position: 'bottom', + offsetX: -10, + offsetY: 0 + } + } + }], + plotOptions: { + bar: { + horizontal: false + } + }, + series: [{ + name: 'PRODUCT A', + data: [44, 55, 41, 67, 22, 43] + }, { + name: 'PRODUCT B', + data: [13, 23, 20, 8, 13, 27] + }, { + name: 'PRODUCT C', + data: [11, 17, 15, 15, 21, 14] + }, { + name: 'PRODUCT D', + data: [21, 7, 25, 13, 22, 8] + }], + xaxis: { + type: 'datetime', + categories: ['01/01/2011 GMT', '01/02/2011 GMT', '01/03/2011 GMT', '01/04/2011 GMT', '01/05/2011 GMT', '01/06/2011 GMT'], + }, + legend: { + position: 'right', + offsetY: 40 + }, + fill: { + opacity: 1 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#stackedColumnChart"), + stackedColumnChartOptions + ).render(); + + // ------------ stackedColumnChart100 ------------- + var stackedColumnChart100Options = { + chart: { + height: 320, + type: 'bar', + stacked: true, + stackType: '100%', + toolbar: { + show: false + } + }, + responsive: [{ + breakpoint: 480, + options: { + legend: { + position: 'bottom', + offsetX: -10, + offsetY: 0 + } + } + }], + series: [{ + name: 'PRODUCT A', + data: [44, 55, 41, 67, 22, 43, 21, 49] + }, { + name: 'PRODUCT B', + data: [13, 23, 20, 8, 13, 27, 33, 12] + }, { + name: 'PRODUCT C', + data: [11, 17, 15, 15, 21, 14, 15, 13] + }], + xaxis: { + categories: ['2011 Q1', '2011 Q2', '2011 Q3', '2011 Q4', '2012 Q1', '2012 Q2', '2012 Q3', '2012 Q4'], + }, + fill: { + opacity: 1 + }, + + legend: { + position: 'right', + offsetX: 0, + offsetY: 50 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#stackedColumnChart100"), + stackedColumnChart100Options + ).render(); + + // ----------------- columnWithNegativeChart ------------- + var columnWithNegativeChartOptions = { + chart: { + height: 320, + type: 'bar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + colors: { + ranges: [ + { + from: -100, + to: -46, + color: '#F15B46' + }, { + from: -45, + to: 0, + color: '#FEB019' + } + ] + }, + columnWidth: '80%' + } + }, + dataLabels: { + enabled: false + }, + series: [{ + name: 'Cash Flow', + data: [1.45, 5.42, 5.9, -0.42, -12.6, -18.1, -18.2, -14.16, -11.1, -6.09, 0.34, 3.88, 13.07, + 5.8, 2, 7.37, 8.1, 13.57, 15.75, 17.1, 19.8, -27.03, -54.4, -47.2, -43.3, -18.6 + ] + }], + + yaxis: { + labels: { + formatter: function (y) { + return y.toFixed(0) + "%"; + } + } + + }, + xaxis: { + categories: [ + '1', '2', '3', '4', '5', '6', + '7', '8', '9', '10', '11', '12', + '13', '14', '15', '16', '17', '18', + '19', '20', '21', '22', '23', '24', + '25', '26' + ], + labels: { + rotate: -90 + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#columnWithNegativeChart"), + columnWithNegativeChartOptions + ).render(); + + // -------------- rangeColumnChart ------------- + var rangeColumnChartOptions = { + chart: { + height: 320, + type: 'rangeBar', + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false + } + }, + dataLabels: { + enabled: true + }, + series: [{ + data: [{ + x: 'Team A', + y: [1, 5] + }, { + x: 'Team B', + y: [4, 6] + }, { + x: 'Team C', + y: [5, 8] + }, { + x: 'Team D', + y: [3, 11] + }] + }, { + data: [{ + x: 'Team A', + y: [2, 6] + }, { + x: 'Team B', + y: [1, 3] + }, { + x: 'Team C', + y: [7, 8] + }, { + x: 'Team D', + y: [5, 9] + }] + }], + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#rangeColumnChart"), + rangeColumnChartOptions + ).render(); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/line.html b/src/main/resources/templates/febs/views/others/apex/line.html new file mode 100644 index 0000000..2669c03 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/line.html @@ -0,0 +1,923 @@ +<style> + #febs-apex-line .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-line" lay-title="线性图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">基本折线图</div> + <div class="layui-card-body"> + <div id="basicLineChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带标签的折线图</div> + <div class="layui-card-body"> + <div id="lineChartDatalabels"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">可缩放的折线图</div> + <div class="layui-card-body"> + <div id="lineChartZoomable"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">带标注的折线图</div> + <div class="layui-card-body"> + <div id="lineChartAnnotations"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">同步折线图</div> + <div class="layui-card-body"> + <div id="syncingChart1"></div> + <div id="syncingChart2"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">台阶折线图</div> + <div class="layui-card-body"> + <div id="stepLineChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">渐变折线图</div> + <div class="layui-card-body"> + <div id="gradientLineChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">非连续性折线图</div> + <div class="layui-card-body"> + <div id="missNullChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">虚线折线图</div> + <div class="layui-card-body"> + <div id="dashedChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">实时折线图</div> + <div class="layui-card-body"> + <div id="realTimeChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-src="@{febs/lay/data/dataSeries.js}"></script> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts', 'febs'], function () { + var febs = layui.febs; + // ------------ basicLineChart ------------------- + var basicLineChartOptions = { + chart: { + height: 320, + type: 'line', + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + colors: ['#ffbc00'], + stroke: { + width: 4, + curve: 'straight' + }, + series: [{ + name: "产量", + data: [10, 41, 35, 51, 49, 62, 69, 91, 148] + }], + title: { + text: '月生产曲线', + align: 'left' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + }, + xaxis: { + categories: ['一月', '二月', '三月', '四月', '五月', '六月', '七月', '八月', '九月'] + } + }; + + new ApexCharts( + document.querySelector("#basicLineChart"), + basicLineChartOptions + ).render(); + + // --------------- lineChartDatalabels ---------------- + var lineChartDatalabelsOptions = { + chart: { + height: 320, + type: 'line', + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + colors: ['#727cf5', '#0acf97'], + dataLabels: { + enabled: true + }, + stroke: { + width: [3, 3], + curve: 'smooth' + }, + series: [{ + name: '最高温', + data: [28, 29, 33, 36, 32, 32, 33] + }, { + name: '最低温', + data: [12, 11, 14, 18, 17, 13, 13] + }], + title: { + text: '月平均温度曲线', + align: 'left' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + }, + markers: { + style: 'inverted', + size: 5, + hover: { + size: 6 + } + }, + xaxis: { + categories: ['一月', '二月', '三月', '四月', '五月', '六月', '七月'] + }, + yaxis: { + title: { + text: '℃' + }, + min: 5, + max: 40 + }, + legend: { + position: 'top', + horizontalAlign: 'right', + floating: true, + offsetY: -25, + offsetX: -5 + }, + responsive: [{ + breakpoint: 600, + options: { + chart: { + toolbar: { + show: false + } + }, + legend: { + show: false + } + } + }] + }; + + new ApexCharts( + document.querySelector("#lineChartDatalabels"), + lineChartDatalabelsOptions + ).render(); + + // ---------------- lineChartZoomable ------------------- + var ts2 = 14844186e5; + var dates = []; + for (var i = 0; i < 120; i++) { + var innerArr = [ts2 += 864e5, dataSeries[1][i].value]; + dates.push(innerArr); + } + + var lineChartZoomableOptions = { + chart: { + type: 'area', + stacked: false, + height: 320, + zoom: { + type: 'x', + enabled: true + }, + toolbar: { + autoSelected: 'zoom' + } + }, + dataLabels: { + enabled: false + }, + series: [{ + name: '价格(元)', + data: dates + }], + markers: { + size: 0 + }, + title: { + text: 'XX价格走势图', + align: 'left' + }, + fill: { + type: 'gradient', + gradient: { + shadeIntensity: 1, + inverseColors: false, + opacityFrom: 0.5, + opacityTo: 0, + stops: [0, 90, 100] + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + }, + yaxis: { + min: 20000000, + max: 250000000, + labels: { + formatter: function (val) { + return (val / 1000000).toFixed(0); + } + } + }, + xaxis: { + type: 'datetime' + }, + colors: ['#7b88ff'], + tooltip: { + shared: false, + y: { + formatter: function (val) { + return (val / 1000000).toFixed(0) + } + } + } + }; + + new ApexCharts( + document.querySelector("#lineChartZoomable"), + lineChartZoomableOptions + ).render(); + + // ------------- lineChartAnnotations ---------------- + + var lineChartAnnotationsOptions = { + annotations: { + yaxis: [{ + y: 8200, + borderColor: '#0acf97', + label: { + borderColor: '#0acf97', + style: { + color: '#fff', + background: '#0acf97' + }, + text: 'Annotation4' + } + }], + xaxis: [{ + x: new Date('23 Nov 2017').getTime(), + borderColor: '#775DD0', + label: { + borderColor: '#775DD0', + style: { + color: '#fff', + background: '#775DD0' + }, + text: 'Annotation3' + } + }, { + x: new Date('03 Dec 2017').getTime(), + borderColor: '#ffbc00', + label: { + borderColor: '#ffbc00', + style: { + color: '#fff', + background: '#ffbc00' + }, + orientation: 'horizontal', + text: 'Annotation2' + } + }], + points: [{ + x: new Date('27 Nov 2017').getTime(), + y: 8506.9, + marker: { + size: 8, + fillColor: '#fff', + strokeColor: '#fa5c7c', + radius: 2 + }, + label: { + borderColor: '#fa5c7c', + offsetY: 0, + style: { + color: '#fff', + background: '#fa5c7c' + }, + text: 'Annotation1' + } + }] + }, + chart: { + height: 320, + type: 'line', + id: 'areachart-2', + toolbar: { + show: false + } + }, + colors: ['#ff3e6d'], + dataLabels: { + enabled: false + }, + stroke: { + width: [3], + curve: 'straight' + }, + series: [{ + data: [ + 8107.85, + 8128.0, + 8122.9, + 8165.5, + 8340.7, + 8423.7, + 8423.5, + 8514.3, + 8481.85, + 8487.7, + 8506.9, + 8626.2, + 8668.95, + 8602.3, + 8607.55, + 8512.9, + 8496.25, + 8600.65, + 8881.1, + 9340.85 + ] + }], + title: { + text: '标注测试', + align: 'left' + }, + labels: [ + '13 Nov 2017', + '14 Nov 2017', + '15 Nov 2017', + '16 Nov 2017', + '17 Nov 2017', + '20 Nov 2017', + '21 Nov 2017', + '22 Nov 2017', + '23 Nov 2017', + '24 Nov 2017', + '27 Nov 2017', + '28 Nov 2017', + '29 Nov 2017', + '30 Nov 2017', + '01 Dec 2017', + '04 Dec 2017', + '05 Dec 2017', + '06 Dec 2017', + '07 Dec 2017', + '08 Dec 2017' + ], + xaxis: { + type: 'datetime' + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + }, + responsive: [{ + breakpoint: 600, + options: { + chart: { + toolbar: { + show: false + } + }, + legend: { + show: false + } + } + }] + }; + + new ApexCharts( + document.querySelector("#lineChartAnnotations"), + lineChartAnnotationsOptions + ).render(); + + // ------------- syncingChart --------------------- + + var syncChartOption1 = { + chart: { + id: 'fb', + group: 'social', + type: 'line', + height: 160, + toolbar: { + show: false + } + }, + colors: ['#008FFB'], + series: [{ + data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, { + min: 10, + max: 60 + }) + }], + yaxis: { + labels: { + minWidth: 40 + } + }, + xaxis: { + type: 'datetime' + }, + markers: { + size: 5, + hover: { + size: 6 + } + }, + stroke: { + width: [3, 3] + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#syncingChart1"), + syncChartOption1 + ).render(); + + var syncChartOption2 = { + chart: { + id: 'tw', + group: 'social', + type: 'line', + height: 160, + toolbar: { + show: false + } + }, + colors: ['#546E7A'], + series: [{ + data: generateDayWiseTimeSeries(new Date('11 Feb 2017').getTime(), 20, { + min: 10, + max: 30 + }) + }], + yaxis: { + labels: { + minWidth: 40 + } + }, + xaxis: { + type: 'datetime' + }, + markers: { + size: 5, + hover: { + size: 6 + } + }, + stroke: { + width: [3, 3] + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#syncingChart2"), + syncChartOption2 + ).render(); + + function generateDayWiseTimeSeries(baseval, count, yrange) { + var i = 0; + var series = []; + while (i < count) { + var x = baseval; + var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min; + + series.push([x, y]); + baseval += 86400000; + i++; + } + return series; + } + + // ----------------- stepLineChart --------------------- + var stepLineChartOptions = { + chart: { + type: 'line', + height: 335, + toolbar: { + show: false + } + }, + stroke: { + width: 3, + curve: 'stepline' + }, + dataLabels: { + enabled: false + }, + series: [{ + data: [34, 44, 54, 21, 12, 43, 33, 23, 66, 66, 58] + }], + colors: ['#0acf97'], + markers: { + hover: { + sizeOffset: 4 + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + + }; + + new ApexCharts( + document.querySelector("#stepLineChart"), + stepLineChartOptions + ).render(); + + // ----------------- gradientLineChart --------------------- + var gradientLineChartOptions = { + chart: { + height: 320, + type: 'line', + shadow: { + enabled: false, + color: '#bbb', + top: 3, + left: 2, + blur: 3, + opacity: 1 + }, + toolbar: { + show: false + } + }, + stroke: { + width: 5, + curve: 'smooth' + }, + series: [{ + name: 'Likes', + data: [4, 3, 10, 9, 29, 19, 22, 9, 12, 7, 19, 5, 13, 9, 17, 2, 7, 5] + }], + xaxis: { + type: 'datetime', + categories: ['1/11/2000', '2/11/2000', '3/11/2000', '4/11/2000', '5/11/2000', '6/11/2000', '7/11/2000', '8/11/2000', '9/11/2000', '10/11/2000', '11/11/2000', '12/11/2000', '1/11/2001', '2/11/2001', '3/11/2001', '4/11/2001', '5/11/2001', '6/11/2001'] + }, + fill: { + type: 'gradient', + gradient: { + shade: 'dark', + gradientToColors: ['#FDD835'], + shadeIntensity: 1, + type: 'horizontal', + opacityFrom: 1, + opacityTo: 1, + stops: [0, 100, 100, 100] + } + }, + markers: { + size: 4, + opacity: 0.9, + colors: ["#FFA41B"], + strokeColor: "#fff", + strokeWidth: 2, + + hover: { + size: 5 + } + }, + yaxis: { + min: -10, + max: 40 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + var chart = new ApexCharts( + document.querySelector("#gradientLineChart"), + gradientLineChartOptions + ).render(); + + // ------------ missNullChart ----------------------- + var missNullChartOptions = { + chart: { + height: 320, + type: 'line', + zoom: { + enabled: false + }, + animations: { + enabled: false + }, + toolbar: { + show: false + } + }, + stroke: { + width: [3, 3, 3], + curve: 'straight' + }, + + series: [{ + name: 'Peter', + data: [5, 5, 10, 8, 7, 5, 4, null, null, null, 10, 10, 7, 8, 6, 9] + }, { + name: 'Johnny', + data: [10, 15, null, 12, null, 10, 12, 15, null, null, 12, null, 14, null, null, null] + }, { + name: 'David', + data: [null, null, null, null, 3, 4, 1, 3, 4, 6, 7, 9, 5, null, null, null] + }], + labels: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16], + xaxis: {}, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + + }; + + new ApexCharts( + document.querySelector("#missNullChart"), + missNullChartOptions + ).render(); + + // -------------- dashedChart ----------------- + var dashedChartOptions = { + chart: { + height: 320, + type: 'line', + zoom: { + enabled: false + }, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + width: [3, 3, 3], + curve: 'straight', + dashArray: [0, 8, 5] + }, + series: [{ + name: "Durations", + data: [45, 52, 38, 24, 33, 26, 21, 20, 6] + }, + { + name: "Views", + data: [35, 41, 62, 42, 13, 18, 29, 37, 36] + }, + { + name: 'Visits', + data: [87, 57, 74, 99, 75, 38, 62, 47, 82] + } + ], + markers: { + size: 0, + hover: { + sizeOffset: 6 + } + }, + xaxis: { + categories: ['01 Jan', '02 Jan', '03 Jan', '04 Jan', '05 Jan', '06 Jan', '07 Jan', '08 Jan', '09 Jan'] + }, + tooltip: { + y: [{ + title: { + formatter: function (val) { + return val + " (mins)" + } + } + }, { + title: { + formatter: function (val) { + return val + " per session" + } + } + }, { + title: { + formatter: function (val) { + return val; + } + } + }] + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#dashedChart"), + dashedChartOptions + ).render(); + + // ------------ realTimeChart ------------------- + + var lastDate = 0; + var data = []; + var TICKINTERVAL = 86400000; + var XAXISRANGE = 777600000; + + function getDayWiseTimeSeries(baseval, count, yrange) { + var i = 0; + while (i < count) { + var x = baseval; + var y = Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min; + + data.push({x: x, y: y}); + lastDate = baseval; + baseval += TICKINTERVAL; + i++; + } + } + + getDayWiseTimeSeries(new Date('11 Feb 2017 GMT').getTime(), 10, { + min: 10, + max: 90 + }); + + function getNewSeries(baseval, yrange) { + var newDate = baseval + TICKINTERVAL; + lastDate = newDate; + + for (var i = 0; i < data.length - 10; i++) { + data[i].x = newDate - XAXISRANGE - TICKINTERVAL; + data[i].y = 0 + } + data.push({ + x: newDate, + y: Math.floor(Math.random() * (yrange.max - yrange.min + 1)) + yrange.min + }) + + } + + function resetData() { + data = data.slice(data.length - 10, data.length); + } + + var realTimeChartOptions = { + chart: { + height: 320, + type: 'area', + animations: { + enabled: true, + easing: 'linear', + dynamicAnimation: { + speed: 1000 + } + }, + toolbar: { + show: false + }, + zoom: { + enabled: false + } + }, + dataLabels: { + enabled: false + }, + stroke: { + curve: 'smooth' + }, + series: [{ + data: data + }], + markers: { + size: 0 + }, + colors: ['#ff8a5c'], + xaxis: { + type: 'datetime', + range: XAXISRANGE + }, + yaxis: { + max: 100 + }, + legend: { + show: false + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + var realTimeChart = new ApexCharts( + document.querySelector("#realTimeChart"), + realTimeChartOptions + ); + + realTimeChart.render(); + + var interval = setInterval(function () { + var urlHash = window.location.hash; + if (urlHash.indexOf('apex/line') !== -1) { + getNewSeries(lastDate, { + min: 10, + max: 90 + }); + realTimeChart.updateSeries([{ + data: data + }]); + } + }, 1000); + + febs.routeLeave(function (route, nextPath, next) { + clearInterval(interval); + next(); + }) + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/mix.html b/src/main/resources/templates/febs/views/others/apex/mix.html new file mode 100644 index 0000000..8e5dbe0 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/mix.html @@ -0,0 +1,374 @@ +<style> + #febs-apex-mix .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-mix" lay-title="混合图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">线性柱状混合图表</div> + <div class="layui-card-body"> + <div id="lineColumnChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">多重Y轴混合图表</div> + <div class="layui-card-body"> + <div id="multipleYAxisChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">线性面积混合图表</div> + <div class="layui-card-body"> + <div id="lineAreaChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">线性柱状面积混合图表</div> + <div class="layui-card-body"> + <div id="lineColumnAreaChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts'], function () { + // ----------- lineColumnChart ---------------- + var lineColumnChartOptions = { + chart: { + height: 320, + type: 'line', + toolbar: { + show: false + } + }, + series: [{ + name: 'Website Blog', + type: 'column', + data: [440, 505, 414, 671, 227, 413, 201, 352, 752, 320, 257, 160] + }, { + name: 'Social Media', + type: 'line', + data: [23, 42, 35, 27, 43, 22, 17, 31, 22, 22, 12, 16] + }], + stroke: { + width: [0, 4] + }, + labels: ['01 Jan 2001', '02 Jan 2001', '03 Jan 2001', '04 Jan 2001', '05 Jan 2001', '06 Jan 2001', '07 Jan 2001', '08 Jan 2001', '09 Jan 2001', '10 Jan 2001', '11 Jan 2001', '12 Jan 2001'], + xaxis: { + type: 'datetime' + }, + yaxis: [{ + title: { + text: 'Website Blog' + } + }, { + opposite: true, + title: { + text: 'Social Media' + } + }], + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#lineColumnChart"), + lineColumnChartOptions + ).render(); + + // ----------- multipleYAxisChart --------------- + var multipleYAxisChartOptions = { + chart: { + height: 320, + type: 'line', + stacked: false, + toolbar: { + show: false + } + }, + dataLabels: { + enabled: false + }, + series: [{ + name: 'Income', + type: 'column', + data: [1.4, 2, 2.5, 1.5, 2.5, 2.8, 3.8, 4.6] + }, { + name: 'Cashflow', + type: 'column', + data: [1.1, 3, 3.1, 4, 4.1, 4.9, 6.5, 8.5] + }, { + name: 'Revenue', + type: 'line', + data: [20, 29, 37, 36, 44, 45, 50, 58] + }], + stroke: { + width: [1, 1, 4] + }, + title: { + text: 'XYZ - Stock Analysis (2009 - 2016)', + align: 'left', + offsetX: 110 + }, + xaxis: { + categories: [2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016] + }, + yaxis: [ + { + axisTicks: { + show: true + }, + axisBorder: { + show: true, + color: '#008FFB' + }, + labels: { + style: { + color: '#008FFB' + } + }, + title: { + text: "Income (thousand crores)", + style: { + color: '#008FFB' + } + }, + tooltip: { + enabled: true + } + }, + { + seriesName: 'Income', + opposite: true, + axisTicks: { + show: true + }, + axisBorder: { + show: true, + color: '#00E396' + }, + labels: { + style: { + color: '#00E396' + } + }, + title: { + text: "Operating Cashflow (thousand crores)", + style: { + color: '#00E396' + } + } + }, + { + seriesName: 'Revenue', + opposite: true, + axisTicks: { + show: true + }, + axisBorder: { + show: true, + color: '#FEB019' + }, + labels: { + style: { + color: '#FEB019' + } + }, + title: { + text: "Revenue (thousand crores)", + style: { + color: '#FEB019' + } + } + } + ], + tooltip: { + fixed: { + enabled: true, + position: 'topLeft', + offsetY: 30, + offsetX: 60 + } + }, + legend: { + horizontalAlign: 'left', + offsetX: 40 + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#multipleYAxisChart"), + multipleYAxisChartOptions + ).render(); + + // ----------- lineAreaChart ------------ + var lineAreaChartOptions = { + chart: { + height: 320, + type: 'line', + toolbar: { + show: false + } + }, + stroke: { + curve: 'smooth' + }, + series: [{ + name: 'TEAM A', + type: 'area', + data: [44, 55, 31, 47, 31, 43, 26, 41, 31, 47, 33] + }, { + name: 'TEAM B', + type: 'line', + data: [55, 69, 45, 61, 43, 54, 37, 52, 44, 61, 43] + }], + fill: { + type: 'solid', + opacity: [0.35, 1] + }, + labels: ['Dec 01', 'Dec 02', 'Dec 03', 'Dec 04', 'Dec 05', 'Dec 06', 'Dec 07', 'Dec 08', 'Dec 09 ', 'Dec 10', 'Dec 11'], + markers: { + size: 0 + }, + yaxis: [ + { + title: { + text: 'Series A' + } + }, + { + opposite: true, + title: { + text: 'Series B' + } + } + ], + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if (typeof y !== "undefined") { + return y.toFixed(0) + " points"; + } + return y; + + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + + }; + new ApexCharts( + document.querySelector("#lineAreaChart"), + lineAreaChartOptions + ).render(); + + // ---------- lineColumnAreaChart ---------------- + var lineColumnAreaChartOptions = { + chart: { + height: 320, + type: 'line', + stacked: false, + toolbar: { + show: false + } + }, + stroke: { + width: [0, 2, 5], + curve: 'smooth' + }, + plotOptions: { + bar: { + columnWidth: '50%' + } + }, + series: [{ + name: 'Facebook', + type: 'column', + data: [23, 11, 22, 27, 13, 22, 37, 21, 44, 22, 30] + }, { + name: 'Vine', + type: 'area', + data: [44, 55, 41, 67, 22, 43, 21, 41, 56, 27, 43] + }, { + name: 'Dribbble', + type: 'line', + data: [30, 25, 36, 30, 45, 35, 64, 52, 59, 36, 39] + }], + fill: { + opacity: [0.85, 0.25, 1], + gradient: { + inverseColors: false, + shade: 'light', + type: "vertical", + opacityFrom: 0.85, + opacityTo: 0.55, + stops: [0, 100, 100, 100] + } + }, + labels: ['01/01/2003', '02/01/2003', '03/01/2003', '04/01/2003', '05/01/2003', '06/01/2003', '07/01/2003', '08/01/2003', '09/01/2003', '10/01/2003', '11/01/2003'], + markers: { + size: 0 + }, + xaxis: { + type: 'datetime' + }, + yaxis: { + min: 0 + }, + tooltip: { + shared: true, + intersect: false, + y: { + formatter: function (y) { + if (typeof y !== "undefined") { + return y.toFixed(0) + " views"; + } + return y; + } + } + }, + grid: { + row: { + colors: ['transparent', 'transparent'], + opacity: 0.2 + }, + borderColor: '#f1f3fa' + } + }; + + new ApexCharts( + document.querySelector("#lineColumnAreaChart"), + lineColumnAreaChartOptions + ).render(); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/apex/radar.html b/src/main/resources/templates/febs/views/others/apex/radar.html new file mode 100644 index 0000000..fdbb622 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/apex/radar.html @@ -0,0 +1,152 @@ +<style> + #febs-apex-radar .layui-card-header { + font-weight: 600; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-apex-radar" lay-title="雷达图表"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">基础雷达图</div> + <div class="layui-card-body"> + <div id="basicRadarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">多层雷达图</div> + <div class="layui-card-body"> + <div id="multipleSeriesRadarChart"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">背景填充雷达图</div> + <div class="layui-card-body"> + <div id="multiRadarwithPolygonFillChart"></div> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['apexcharts'], function () { + // ---------------- basicRadarChart -------------- + var basicRadarChartOptions = { + chart: { + height: 320, + type: 'radar', + toolbar: { + show: false + } + }, + series: [{ + name: 'Series 1', + data: [80, 50, 30, 40, 100, 20] + }], + labels: ['January', 'February', 'March', 'April', 'May', 'June'] + }; + + new ApexCharts( + document.querySelector("#basicRadarChart"), + basicRadarChartOptions + ).render(); + + // ----------- multipleSeriesRadarChart ---------- + var multipleSeriesRadarChartOptions = { + chart: { + height: 320, + type: 'radar', + toolbar: { + show: false + } + }, + series: [{ + name: 'Series 1', + data: [80, 50, 30, 40, 100, 20] + }, { + name: 'Series 2', + data: [20, 30, 40, 80, 20, 80] + }, { + name: 'Series 3', + data: [44, 76, 78, 13, 43, 10] + }], + stroke: { + width: 0 + }, + fill: { + opacity: 0.4 + }, + markers: { + size: 0 + }, + labels: ['2011', '2012', '2013', '2014', '2015', '2016'] + }; + + new ApexCharts( + document.querySelector("#multipleSeriesRadarChart"), + multipleSeriesRadarChartOptions + ).render(); + + // ---------- multiRadarwithPolygonFillChart ------------ + var multiRadarwithPolygonFillChartOptions = { + chart: { + height: 350, + type: 'radar', + toolbar: { + show: false + } + }, + series: [{ + name: 'Series 1', + data: [20, 100, 40, 30, 50, 80, 33] + }], + labels: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'], + plotOptions: { + radar: { + size: 140, + polygons: { + strokeColor: '#e9e9e9', + fill: { + colors: ['#f8f8f8', '#fff'] + } + } + } + }, + colors: ['#FF4560'], + markers: { + size: 4, + colors: ['#fff'], + strokeColor: '#FF4560', + strokeWidth: 2 + }, + tooltip: { + y: { + formatter: function (val) { + return val + } + } + }, + yaxis: { + tickAmount: 7, + labels: { + formatter: function (val, i) { + if (i % 2 === 0) { + return val + } else { + return '' + } + } + } + } + }; + + new ApexCharts( + document.querySelector("#multiRadarwithPolygonFillChart"), + multiRadarwithPolygonFillChartOptions + ).render(); + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/datapermission/test.html b/src/main/resources/templates/febs/views/others/datapermission/test.html new file mode 100644 index 0000000..d9c435b --- /dev/null +++ b/src/main/resources/templates/febs/views/others/datapermission/test.html @@ -0,0 +1,41 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-data-permission" lay-title="数据权限"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <span class="febs-alert-base febs-alert-success"> + 数据权限测试,不同用户看到的数据不一样 + </span> + <table lay-filter="dataPermissionTestTable" lay-data="{id: 'dataPermissionTestTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'table', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + table = layui.table, + $view = $('#febs-data-permission'), + tableIns; + + initTable(); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'dataPermissionTestTable', + url: ctx + 'datapermission/test/list', + cols: [[ + {field: 'field1', title: '字段1'}, + {field: 'field2', title: '字段2'}, + {field: 'field3', title: '字段3'}, + {field: 'field4', title: '字段4'}, + {field: 'createTime', title: '创建时间'} + ]] + }); + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/eximport/eximport.html b/src/main/resources/templates/febs/views/others/eximport/eximport.html new file mode 100644 index 0000000..7b9b89c --- /dev/null +++ b/src/main/resources/templates/febs/views/others/eximport/eximport.html @@ -0,0 +1,90 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-eximport" lay-title="导入导出"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain" id="template-download" + shiro:hasPermission="eximport:template"> + <i class="layui-icon"></i> 模板下载 + </button> + <button class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain " id="export" + shiro:hasPermission="eximport:export"> + <i class="layui-icon"></i> 导出Excel + </button> + <button class="layui-btn layui-btn-sm layui-btn-success" id="import" + shiro:hasPermission="eximport:import"> + <i class="layui-icon"></i> 导入Excel + </button> + <table lay-filter="eximportTable" lay-data="{id: 'eximportTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'table', 'febs', 'upload'], function () { + var $ = layui.jquery, + febs = layui.febs, + upload = layui.upload, + table = layui.table, + $view = $('#febs-eximport'), + tableIns; + + initTable(); + + upload.render({ + elem: '#import', + url: ctx + 'eximport/import', + accept: 'file', + exts: 'xlsx', // 只能上传 .xlsx格式 + size: 5 * 1024, // kb + before: function () { + febs.view.loadBar.start(); + }, + done: function (res) { + febs.view.loadBar.finish(); + if (res.code === 200) { + // 刷新 table + tableIns.reload({page: {curr: 1}}); + var data = res.data; + // 弹出导入结果 + febs.modal.open('导入结果', 'others/eximport/result', { + area: $(window).width() <= 750 ? '95%' : '1000px', + data: data + }); + } + }, error: function (res) { + //请求异常回调 + console.error(res); + febs.view.loadBar.error(); + febs.alert.error('导入失败!'); + } + }); + + $view.on('click', '#template-download', function () { + febs.download(ctx + 'eximport/template', null, 'Excel导入模板.xlsx'); + }); + + $view.on('click', '#export', function () { + var params = {}; + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'eximport/excel', params, 'Excel导出结果.xlsx'); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'eximportTable', + url: ctx + 'eximport', + cols: [[ + {field: 'field1', title: '字段1'}, + {field: 'field2', title: '字段2'}, + {field: 'field3', title: '字段3'}, + {field: 'createTime', title: '导入时间'} + ]] + }); + } + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/eximport/eximportResult.html b/src/main/resources/templates/febs/views/others/eximport/eximportResult.html new file mode 100644 index 0000000..089cb46 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/eximport/eximportResult.html @@ -0,0 +1,141 @@ +<style> + #febs-eximport-result .bold { + font-weight: 600; + } + #febs-eximport-result .layui-card { + box-shadow: none; + } +</style> +<div class="layui-fluid" id="febs-eximport-result" lay-title="导入结果"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <script type="text/html" template> + {{# + var successL = POPUP_DATA.data.length; + var failL = POPUP_DATA.error.length; + var time = POPUP_DATA.time; + if(successL === 0 && failL === 0) { + }} + <span class="febs-alert-base febs-alert-info">暂无导入记录</span> + {{# + } else if (successL !== 0 && failL === 0) { + }} + <span class="febs-alert-base febs-alert-success"> + 全部导入成功,共导入 + <a class="bold"> {{successL}} </a>条记录, + 耗时 <span class="bold">{{time}}</span> + </span> + {{# + } else if (successL === 0 && failL !== 0) { + }} + <span class="febs-alert-base febs-alert-error"> + 全部导入失败,共 + <a class="bold"> {{failL}} </a>条记录, + 耗时 <span class="bold">{{time}}</span> + </span> + {{# + } else { + }} + <span class="febs-alert-base febs-alert-warn"> + 部分导入成功,导入成功 + <a class="bold"> {{successL}} </a>条记录, + 导入失败 + <a class="bold"> {{failL}} </a>条记录, + 耗时 <span class="bold">{{time}}</span> + </span> + {{# } }} + </script> + <div class="layui-tab layui-tab-brief" lay-filter="result-tab"> + <ul class="layui-tab-title"> + <li class="layui-this" lay-id="success-tab">成功记录</li> + <li lay-id="fail-tab">失败记录</li> + </ul> + <div class="layui-tab-content"> + <div class="layui-tab-item layui-show"> + <table id="successTable" lay-filter="successTable" lay-data="{id: 'successTable'}"></table> + </div> + <div class="layui-tab-item"> + <table id="failTable" lay-filter="failTable" lay-data="{id: 'failTable'}"></table> + </div> + </div> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="fail-row"> + <span>第{{ d.row }}行</span> +</script> +<script type="text/html" id="fail-column"> + <span>第{{ d.cellIndex + 1 }}列</span> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'table', 'upload'], function () { + var $ = layui.jquery, + table = layui.table, + element = layui.element, + $view = $('#febs-eximport-result'), + result = POPUP_DATA; + + initTabs(); + + function renderSuccessTable() { + table.render({ + elem: '#successTable', + id: 'successTable', + data: result.data, + page: true, + limits: [6, 10, 20, 100], + limit: 6, + cols: [[ + {field: 'field1', title: '字段1'}, + {field: 'field2', title: '字段2'}, + {field: 'field3', title: '字段3'}, + {field: 'createTime', title: '导入时间'} + ]] + }); + } + + function renderFailTable() { + var data = []; + layui.each(result.error, function (key, item) { + var row = item.row; + layui.each(item.errorFields, function (k, v) { + v.row = row; + data.push(v); + }); + }); + table.render({ + elem: '#failTable', + id: 'failTable', + data: data, + page: true, + limits: [6, 10, 20, 100], + limit: 6, + cols: [[ + {title: '行', templet: '#fail-row'}, + {title: '列', templet: '#fail-column'}, + {field: 'column', title: '列名'}, + {field: 'name', title: '对应字段'}, + {field: 'errorMessage', title: '错误信息', maxlength: 400} + ]] + }); + } + + function initTabs() { + if (result.data.length !== 0 && result.error.length === 0) { + renderSuccessTable(); + element.tabDelete('result-tab', 'fail-tab'); + } else if (result.data.length === 0 && result.error.length !== 0) { + renderFailTable(); + element.tabDelete('result-tab', 'success-tab'); + } else { + renderSuccessTable(); + renderFailTable(); + } + } + + + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/febs/form.html b/src/main/resources/templates/febs/views/others/febs/form.html new file mode 100644 index 0000000..f0e215d --- /dev/null +++ b/src/main/resources/templates/febs/views/others/febs/form.html @@ -0,0 +1,211 @@ +<div class="layui-fluid layui-anim febs-anim" lay-title="表单组件"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6"> + <div class="layui-card"> + <div class="layui-card-header">输入框</div> + <div class="layui-card-body layui-row layui-col-space10"> + <div class="layui-col-md12"> + <input type="text" name="title" placeholder="请输入标题" autocomplete="off" class="layui-input"> + </div> + <div class="layui-col-md6"> + <input type="text" name="title" placeholder="用户名" autocomplete="off" class="layui-input"> + </div> + <div class="layui-col-md6"> + <input type="password" name="title" placeholder="密码" autocomplete="off" class="layui-input"> + </div> + <div class="layui-col-md12"> + <textarea name="" placeholder="多行输入" class="layui-textarea"></textarea> + </div> + </div> + </div> + <div class="layui-card layui-form" lay-filter="febs-form-elements"> + <div class="layui-card-header">下拉选择框</div> + <div class="layui-card-body layui-row layui-col-space10"> + <div class="layui-col-md6"> + <select name="city" lay-verify=""> + <option value="">请选择一个城市</option> + <option value="010">北京</option> + <option value="021">上海</option> + <option value="0571">杭州</option> + </select> + </div> + <div class="layui-col-md6"> + <select name="city" lay-verify=""> + <option value="010">北京</option> + <option value="021" disabled>上海(禁用效果)</option> + <option value="0571" selected>杭州</option> + </select> + </div> + <div class="layui-col-md6"> + <select name="quiz"> + <option value="">请选择</option> + <optgroup label="城市记忆"> + <option value="你工作的第一个城市">你工作的第一个城市?</option> + </optgroup> + <optgroup label="学生时代"> + <option value="你的工号">你的工号?</option> + <option value="你最喜欢的老师">你最喜欢的老师?</option> + </optgroup> + </select> + </div> + <div class="layui-col-md6"> + <select name="city" lay-verify="required" lay-search> + <option value="">带搜索的选择框</option> + <option value="1">layer</option> + <option value="2">form</option> + <option value="3">layim</option> + <option value="4">element</option> + <option value="5">laytpl</option> + <option value="6">upload</option> + <option value="7">laydate</option> + <option value="8">laypage</option> + <option value="9">flow</option> + <option value="10">util</option> + <option value="11">code</option> + <option value="12">tree</option> + <option value="13">layedit</option> + <option value="14">nav</option> + <option value="15">tab</option> + <option value="16">table</option> + <option value="17">select</option> + <option value="18">checkbox</option> + <option value="19">switch</option> + <option value="20">radio</option> + </select> + </div> + <div class="layui-col-md12"> + <select name="city" lay-verify=""> + <option value="">请选择一个城市</option> + <option value="010">北京</option> + <option value="021">上海</option> + <option value="0571">杭州</option> + </select> + </div> + </div> + </div> + <div class="layui-card layui-form" lay-filter="febs-form-elements"> + <div class="layui-card-header">开关</div> + <div class="layui-card-body layui-row layui-col-space10"> + <div class="layui-col-md12"> + <input type="checkbox" name="xxx" lay-skin="switch"> + <input type="checkbox" name="yyy" lay-skin="switch" lay-text="ON|OFF" checked> + <input type="checkbox" name="zzz" lay-skin="switch" lay-text="开启|关闭"> + <input type="checkbox" name="aaa" lay-skin="switch" disabled> + </div> + </div> + </div> + <div class="layui-card layui-form" lay-filter="febs-form-elements"> + <div class="layui-card-header">单选框</div> + <div class="layui-card-body layui-row layui-col-space10"> + <div class="layui-col-md12"> + <input type="radio" name="sex" value="nan" title="男"> + <input type="radio" name="sex" value="nv" title="女" checked> + <input type="radio" name="sex" value="" title="中性" disabled> + </div> + </div> + </div> + </div> + <div class="layui-col-md6"> + <div class="layui-card layui-form" lay-filter="febs-form-elements"> + <div class="layui-card-header">复选框</div> + <div class="layui-card-body layui-row layui-col-space10"> + <div class="layui-col-md12"> + <input type="checkbox" name="" title="写作" checked> + <input type="checkbox" name="" title="发呆"> + <input type="checkbox" name="" title="禁用" disabled> + </div> + <div class="layui-col-md12"> + <input type="checkbox" name="" title="写作" lay-skin="primary" checked> + <input type="checkbox" name="" title="发呆" lay-skin="primary"> + <input type="checkbox" name="" title="禁用" lay-skin="primary" disabled> + </div> + </div> + </div> + <div class="layui-card"> + <div class="layui-card-header">响应式组合</div> + <div class="layui-card-body"> + <form class="layui-form" action="" lay-filter="febs-form-elements"> + <div class="layui-row layui-col-space10 layui-form-item"> + <div class="layui-col-lg6"> + <label class="layui-form-label">员工姓名:</label> + <div class="layui-input-block"> + <input type="text" name="fullname" lay-verify="required" placeholder="" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-col-lg6"> + <label class="layui-form-label">技术工种:</label> + <div class="layui-input-block"> + <select name="type" lay-verify="required" lay-filter="aihao"> + <option value=""></option> + <option value="0">前端工程师</option> + <option value="1">Node.js工程师</option> + <option value="2">PHP工程师</option> + <option value="3">Java工程师</option> + <option value="4">运维</option> + <option value="4">视觉设计师</option> + </select> + </div> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">兴趣爱好:</label> + <div class="layui-input-block"> + <input type="checkbox" name="interest[write]" title="写作"> + <input type="checkbox" name="interest[read]" title="阅读"> + <input type="checkbox" name="interest[code]" title="代码" checked> + <input type="checkbox" name="interest[eat]" title="吃饭"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">是否婚姻:</label> + <div class="layui-input-block"> + <input type="checkbox" name="marriage" lay-skin="switch" lay-text="是|否"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">所属职称:</label> + <div class="layui-input-block"> + <input type="radio" name="role" value="" title="经理"> + <input type="radio" name="role" value="" title="主管"> + <input type="radio" name="role" value="" title="码农" checked> + <input type="radio" name="role" value="" title="端水"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">其它信息:</label> + <div class="layui-input-block"> + <textarea name="other" placeholder="" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label"> </label> + <div class="layui-input-block"> + <input type="checkbox" name="" title="同意" lay-skin="primary" checked> + </div> + </div> + <div class="layui-form-item"> + <div class="layui-input-block"> + <button class="layui-btn" lay-submit lay-filter="febs-form-elements">立即提交</button> + <button type="reset" class="layui-btn layui-btn-primary">重置</button> + </div> + </div> + </form> + </div> + </div> + </div> + </div> +</div> + +<script> + layui.use(['febs', 'form'], function (febs, form) { + var $ = layui.$; + var element = layui.element; + + form.render(null, 'febs-form-elements'); + + form.on('submit(febs-form-elements)', function (data) { + layer.msg(JSON.stringify(data.field)); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/febs/formGroup.html b/src/main/resources/templates/febs/views/others/febs/formGroup.html new file mode 100644 index 0000000..6c7c2b0 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/febs/formGroup.html @@ -0,0 +1,287 @@ +<div class="layui-fluid layui-anim febs-anim" lay-title="表单组合"> + <div class="layui-row febs-container"> + <div class="layui-card"> + <div class="layui-card-body" style="padding: 15px;"> + <form class="layui-form" action="" lay-filter="febs-form-group"> + <div class="layui-form-item"> + <label class="layui-form-label">单行输入框</label> + <div class="layui-input-block"> + <input type="text" name="title" lay-verify="title" autocomplete="off" placeholder="请输入标题" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">验证必填项</label> + <div class="layui-input-block"> + <input type="text" name="username" lay-verify="required" placeholder="请输入" + autocomplete="off" class="layui-input"> + </div> + </div> + + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">验证手机</label> + <div class="layui-input-inline"> + <input type="tel" name="phone" lay-verify="required|phone" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">验证邮箱</label> + <div class="layui-input-inline"> + <input type="text" name="email" lay-verify="email" autocomplete="off" + class="layui-input"> + </div> + </div> + </div> + + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">多规则验证</label> + <div class="layui-input-inline"> + <input type="text" name="number" lay-verify="required|number" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">验证日期</label> + <div class="layui-input-inline"> + <input type="text" name="date" id="febs-form-group-date" lay-verify="date" + placeholder="yyyy-MM-dd" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">验证链接</label> + <div class="layui-input-inline"> + <input type="tel" name="url" lay-verify="url" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">验证身份证</label> + <div class="layui-input-block"> + <input type="text" name="identity" lay-verify="identity" placeholder="" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">自定义验证</label> + <div class="layui-input-inline"> + <input type="password" name="password" lay-verify="pass" placeholder="请输入密码" + autocomplete="off" class="layui-input"> + </div> + <div class="layui-form-mid layui-word-aux">请填写6到12位密码</div> + </div> + + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">范围</label> + <div class="layui-input-inline" style="width: 100px;"> + <input type="text" name="price_min" placeholder="¥" autocomplete="off" + class="layui-input"> + </div> + <div class="layui-form-mid">-</div> + <div class="layui-input-inline" style="width: 100px;"> + <input type="text" name="price_max" placeholder="¥" autocomplete="off" + class="layui-input"> + </div> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">单行选择框</label> + <div class="layui-input-block"> + <select name="interest" lay-filter="aihao"> + <option value=""></option> + <option value="0">写作</option> + <option value="1" selected="">阅读</option> + <option value="2">游戏</option> + <option value="3">音乐</option> + <option value="4">旅行</option> + </select> + </div> + </div> + + + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label">分组选择框</label> + <div class="layui-input-inline"> + <select name="quiz"> + <option value="">请选择问题</option> + <optgroup label="城市记忆"> + <option value="你工作的第一个城市">你工作的第一个城市</option> + </optgroup> + <optgroup label="学生时代"> + <option value="你的工号">你的工号</option> + <option value="你最喜欢的老师">你最喜欢的老师</option> + </optgroup> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label">搜索选择框</label> + <div class="layui-input-inline"> + <select name="modules" lay-verify="required" lay-search=""> + <option value="">直接选择或搜索选择</option> + <option value="1">layer</option> + <option value="2">form</option> + <option value="3">layim</option> + <option value="4">element</option> + <option value="5">laytpl</option> + <option value="6">upload</option> + <option value="7">laydate</option> + <option value="8">laypage</option> + <option value="9">flow</option> + <option value="10">util</option> + <option value="11">code</option> + <option value="12">tree</option> + <option value="13">layedit</option> + <option value="14">nav</option> + <option value="15">tab</option> + <option value="16">table</option> + <option value="17">select</option> + <option value="18">checkbox</option> + <option value="19">switch</option> + <option value="20">radio</option> + </select> + </div> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">联动选择框</label> + <div class="layui-input-block"> + <div class="layui-inline"> + <select name="quiz1"> + <option value="">请选择省</option> + <option value="浙江" selected="">浙江省</option> + <option value="你的工号">江西省</option> + <option value="你最喜欢的老师">福建省</option> + </select> + </div> + <div class="layui-inline"> + <select name="quiz2"> + <option value="">请选择市</option> + <option value="杭州">杭州</option> + <option value="宁波" disabled="">宁波</option> + <option value="温州">温州</option> + <option value="温州">台州</option> + <option value="温州">绍兴</option> + </select> + </div> + <div class="layui-inline"> + <select name="quiz3"> + <option value="">请选择县/区</option> + <option value="西湖区">西湖区</option> + <option value="余杭区">余杭区</option> + <option value="拱墅区">临安市</option> + </select> + </div> + <div class="layui-inline"> + <div class="layui-form-mid layui-word-aux">此处只是演示联动排版,并未做联动交互</div> + </div> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">复选框</label> + <div class="layui-input-block"> + <input type="checkbox" name="like[write]" title="写作"> + <input type="checkbox" name="like[read]" title="阅读" checked=""> + <input type="checkbox" name="like[game]" title="游戏"> + </div> + </div> + + <div class="layui-form-item" pane=""> + <label class="layui-form-label">原始复选框</label> + <div class="layui-input-block"> + <input type="checkbox" name="like1[write]" lay-skin="primary" title="写作" checked=""> + <input type="checkbox" name="like1[read]" lay-skin="primary" title="阅读"> + <input type="checkbox" name="like1[game]" lay-skin="primary" title="游戏" disabled=""> + </div> + </div> + + <div class="layui-form-item"> + <label class="layui-form-label">开关-默认关</label> + <div class="layui-input-block"> + <input type="checkbox" name="close" lay-skin="switch" lay-text="ON|OFF"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">开关-默认开</label> + <div class="layui-input-block"> + <input type="checkbox" checked="" name="open" lay-skin="switch" + lay-filter="febs-form-group-switch" lay-text="ON|OFF"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">单选框</label> + <div class="layui-input-block"> + <input type="radio" name="sex" value="男" title="男" checked=""> + <input type="radio" name="sex" value="女" title="女"> + <input type="radio" name="sex" value="禁" title="禁用" disabled=""> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">普通文本域</label> + <div class="layui-input-block"> + <textarea name="text" placeholder="请输入内容" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item"> + <div class="layui-input-block"> + <button class="layui-btn" lay-submit="" lay-filter="febs-form-group-submit">立即提交</button> + <button type="reset" class="layui-btn layui-btn-primary">重置</button> + </div> + </div> + </form> + </div> + </div> + </div> +</div> + +<script> + layui.use(['febs', 'form', 'laydate'], function () { + var $ = layui.$, + febs = layui.febs, + element = layui.element, + layer = layui.layer, + laydate = layui.laydate, + form = layui.form; + + form.render(null, 'febs-form-group'); + + laydate.render({ + elem: '#febs-form-group-date' + }); + + /* 自定义验证规则 */ + form.verify({ + title: function (value) { + if (value.length < 5) { + return '标题至少得5个字符啊'; + } + }, + pass: [/(.+){6,12}$/, '密码必须6到12位'], + content: function (value) { + layedit.sync(editIndex); + } + }); + + /* 监听指定开关 */ + form.on('switch(febs-form-group-switch)', function (data) { + febs.alert.info('开关checked:' + (this.checked ? 'true' : 'false')); + layer.tips('温馨提示:请注意开关状态的文字可以随意定义,而不仅仅是ON|OFF', data.othis) + }); + + /* 监听提交 */ + form.on('submit(febs-form-group-submit)', function (data) { + layer.alert(JSON.stringify(data.field), { + title: '最终的提交信息' + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/febs/icon.html b/src/main/resources/templates/febs/views/others/febs/icon.html new file mode 100644 index 0000000..e4a0628 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/febs/icon.html @@ -0,0 +1,4299 @@ +<style> + #febs-icon .icon-body { + text-align: center; + padding-top: 1.1rem; + padding-bottom: 1.1rem; + cursor: pointer; + transition: all 0.3s ease; + overflow: hidden; + } + + #febs-icon .icon-body:hover, .icon-active { + background: #f9fbff; + color: #5a8bff; + } + + #febs-icon .icon-body .layui-icon { + font-size: 1.8rem; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-icon" lay-title="系统图标"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="check-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-check-circle"></span> + <p class="layui-elip icon-name">check-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe77d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="CI"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-CI"></span> + <p class="layui-elip icon-name">CI</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe77e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Dollar"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Dollar"></span> + <p class="layui-elip icon-name">Dollar</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe77f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="compass"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-compass"></span> + <p class="layui-elip icon-name">compass</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe780;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="close-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-close-circle"></span> + <p class="layui-elip icon-name">close-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe781;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="frown"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-frown"></span> + <p class="layui-elip icon-name">frown</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe782;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="info-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-info-circle"></span> + <p class="layui-elip icon-name">info-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe783;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="left-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-left-circle"></span> + <p class="layui-elip icon-name">left-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe784;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="down-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-down-circle"></span> + <p class="layui-elip icon-name">down-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe785;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="EURO"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-EURO"></span> + <p class="layui-elip icon-name">EURO</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe786;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="copyright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-copyright"></span> + <p class="layui-elip icon-name">copyright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe787;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="minus-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-minus-circle"></span> + <p class="layui-elip icon-name">minus-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe788;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="meh"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-meh"></span> + <p class="layui-elip icon-name">meh</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe789;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="plus-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-plus-circle"></span> + <p class="layui-elip icon-name">plus-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="play-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-play-circle"></span> + <p class="layui-elip icon-name">play-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="question-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-question-circle"></span> + <p class="layui-elip icon-name">question-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Pound"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Pound"></span> + <p class="layui-elip icon-name">Pound</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="right-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-right-circle"></span> + <p class="layui-elip icon-name">right-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="smile"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-smile"></span> + <p class="layui-elip icon-name">smile</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe78f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="trademark"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-trademark"></span> + <p class="layui-elip icon-name">trademark</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe790;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="time-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-time-circle"></span> + <p class="layui-elip icon-name">time-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe791;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="timeout"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-timeout"></span> + <p class="layui-elip icon-name">timeout</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe792;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="earth"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-earth"></span> + <p class="layui-elip icon-name">earth</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe793;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="YUAN"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-YUAN"></span> + <p class="layui-elip icon-name">YUAN</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe794;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="up-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-up-circle"></span> + <p class="layui-elip icon-name">up-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe795;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="warning-circle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-warning-circle"></span> + <p class="layui-elip icon-name">warning-circle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe796;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sync"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sync"></span> + <p class="layui-elip icon-name">sync</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe797;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="transaction"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-transaction"></span> + <p class="layui-elip icon-name">transaction</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe798;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="undo"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-undo"></span> + <p class="layui-elip icon-name">undo</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe799;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="redo"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-redo"></span> + <p class="layui-elip icon-name">redo</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reload"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reload"></span> + <p class="layui-elip icon-name">reload</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reloadtime"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reloadtime"></span> + <p class="layui-elip icon-name">reloadtime</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="message"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-message"></span> + <p class="layui-elip icon-name">message</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dashboard"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dashboard"></span> + <p class="layui-elip icon-name">dashboard</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="issuesclose"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-issuesclose"></span> + <p class="layui-elip icon-name">issuesclose</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe79f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="poweroff"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-poweroff"></span> + <p class="layui-elip icon-name">poweroff</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="logout"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-logout"></span> + <p class="layui-elip icon-name">logout</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="login"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-login"></span> + <p class="layui-elip icon-name">login</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="piechart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-piechart"></span> + <p class="layui-elip icon-name">piechart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="setting"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-setting"></span> + <p class="layui-elip icon-name">setting</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="eye"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-eye"></span> + <p class="layui-elip icon-name">eye</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="location"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-location"></span> + <p class="layui-elip icon-name">location</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="edit-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-edit-square"></span> + <p class="layui-elip icon-name">edit-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="export"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-export"></span> + <p class="layui-elip icon-name">export</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="save"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-save"></span> + <p class="layui-elip icon-name">save</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7a9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Import"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Import"></span> + <p class="layui-elip icon-name">Import</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7aa;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="appstore"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-appstore"></span> + <p class="layui-elip icon-name">appstore</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ab;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="close-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-close-square"></span> + <p class="layui-elip icon-name">close-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ac;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="down-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-down-square"></span> + <p class="layui-elip icon-name">down-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ad;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="layout"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-layout"></span> + <p class="layui-elip icon-name">layout</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ae;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="left-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-left-square"></span> + <p class="layui-elip icon-name">left-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7af;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="play-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-play-square"></span> + <p class="layui-elip icon-name">play-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="control"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-control"></span> + <p class="layui-elip icon-name">control</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="codelibrary"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-eliplibrary"></span> + <p class="layui-elip icon-name">codelibrary</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="detail"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-detail"></span> + <p class="layui-elip icon-name">detail</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="minus-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-minus-square"></span> + <p class="layui-elip icon-name">minus-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="plus-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-plus-square"></span> + <p class="layui-elip icon-name">plus-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="right-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-right-square"></span> + <p class="layui-elip icon-name">right-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="project"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-project"></span> + <p class="layui-elip icon-name">project</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wallet"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wallet"></span> + <p class="layui-elip icon-name">wallet</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="up-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-up-square"></span> + <p class="layui-elip icon-name">up-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7b9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calculator"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calculator"></span> + <p class="layui-elip icon-name">calculator</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ba;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="interation"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-interation"></span> + <p class="layui-elip icon-name">interation</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7bb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="check-square"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-check-square"></span> + <p class="layui-elip icon-name">check-square</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7bc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border"></span> + <p class="layui-elip icon-name">border</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7bd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-outer"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-outer"></span> + <p class="layui-elip icon-name">border-outer</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7be;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-top"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-top"></span> + <p class="layui-elip icon-name">border-top</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7bf;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-bottom"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-bottom"></span> + <p class="layui-elip icon-name">border-bottom</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-left"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-left"></span> + <p class="layui-elip icon-name">border-left</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-right"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-right"></span> + <p class="layui-elip icon-name">border-right</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-inner"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-inner"></span> + <p class="layui-elip icon-name">border-inner</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-verticle"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-verticle"></span> + <p class="layui-elip icon-name">border-verticle</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="border-horizontal"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-border-horizontal"></span> + <p class="layui-elip icon-name">border-horizontal</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radius-bottomleft"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radius-bottomleft"></span> + <p class="layui-elip icon-name">radius-bottomleft</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radius-bottomright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radius-bottomright"></span> + <p class="layui-elip icon-name">radius-bottomright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radius-upleft"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radius-upleft"></span> + <p class="layui-elip icon-name">radius-upleft</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radius-upright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radius-upright"></span> + <p class="layui-elip icon-name">radius-upright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7c9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radius-setting"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radius-setting"></span> + <p class="layui-elip icon-name">radius-setting</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ca;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="adduser"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-adduser"></span> + <p class="layui-elip icon-name">adduser</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7cb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="deleteteam"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-deleteteam"></span> + <p class="layui-elip icon-name">deleteteam</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7cc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="deleteuser"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-deleteuser"></span> + <p class="layui-elip icon-name">deleteuser</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7cd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="addteam"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-addteam"></span> + <p class="layui-elip icon-name">addteam</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ce;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="user"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-user"></span> + <p class="layui-elip icon-name">user</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7cf;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="team"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-team"></span> + <p class="layui-elip icon-name">team</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="areachart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-areachart"></span> + <p class="layui-elip icon-name">areachart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="linechart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-linechart"></span> + <p class="layui-elip icon-name">linechart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="barchart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-barchart"></span> + <p class="layui-elip icon-name">barchart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pointmap"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pointmap"></span> + <p class="layui-elip icon-name">pointmap</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="container"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-container"></span> + <p class="layui-elip icon-name">container</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="database"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-database"></span> + <p class="layui-elip icon-name">database</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sever"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sever"></span> + <p class="layui-elip icon-name">sever</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="mobile"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-mobile"></span> + <p class="layui-elip icon-name">mobile</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tablet"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tablet"></span> + <p class="layui-elip icon-name">tablet</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7d9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="redenvelope"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-redenvelope"></span> + <p class="layui-elip icon-name">redenvelope</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7da;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="book"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-book"></span> + <p class="layui-elip icon-name">book</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7db;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="filedone"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-filedone"></span> + <p class="layui-elip icon-name">filedone</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7dc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reconciliation"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reconciliation"></span> + <p class="layui-elip icon-name">reconciliation</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7dd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-exception"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-exception"></span> + <p class="layui-elip icon-name">file-exception</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7de;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="filesync"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-filesync"></span> + <p class="layui-elip icon-name">filesync</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7df;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="filesearch"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-filesearch"></span> + <p class="layui-elip icon-name">filesearch</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="solution"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-solution"></span> + <p class="layui-elip icon-name">solution</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fileprotect"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fileprotect"></span> + <p class="layui-elip icon-name">fileprotect</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-add"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-add"></span> + <p class="layui-elip icon-name">file-add</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-excel"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-excel"></span> + <p class="layui-elip icon-name">file-excel</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-exclamation"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-exclamation"></span> + <p class="layui-elip icon-name">file-exclamation</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-pdf"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-pdf"></span> + <p class="layui-elip icon-name">file-pdf</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-image"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-image"></span> + <p class="layui-elip icon-name">file-image</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-markdown"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-markdown"></span> + <p class="layui-elip icon-name">file-markdown</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-unknown"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-unknown"></span> + <p class="layui-elip icon-name">file-unknown</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7e9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-ppt"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-ppt"></span> + <p class="layui-elip icon-name">file-ppt</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ea;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-word"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-word"></span> + <p class="layui-elip icon-name">file-word</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7eb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file"></span> + <p class="layui-elip icon-name">file</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ec;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-zip"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-zip"></span> + <p class="layui-elip icon-name">file-zip</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ed;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-text"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-text"></span> + <p class="layui-elip icon-name">file-text</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ee;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-copy"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-copy"></span> + <p class="layui-elip icon-name">file-copy</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ef;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="snippets"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-snippets"></span> + <p class="layui-elip icon-name">snippets</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="audit"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-audit"></span> + <p class="layui-elip icon-name">audit</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="diff"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-diff"></span> + <p class="layui-elip icon-name">diff</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Batchfolding"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Batchfolding"></span> + <p class="layui-elip icon-name">Batchfolding</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="securityscan"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-securityscan"></span> + <p class="layui-elip icon-name">securityscan</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="propertysafety"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-propertysafety"></span> + <p class="layui-elip icon-name">propertysafety</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="safetycertificate"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-safetycertificate"></span> + <p class="layui-elip icon-name">safetycertificate</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="insurance"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-insurance"></span> + <p class="layui-elip icon-name">insurance</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alert"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alert"></span> + <p class="layui-elip icon-name">alert</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="delete"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-delete"></span> + <p class="layui-elip icon-name">delete</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7f9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="hourglass"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-hourglass"></span> + <p class="layui-elip icon-name">hourglass</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7fa;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bulb"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bulb"></span> + <p class="layui-elip icon-name">bulb</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7fb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="experiment"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-experiment"></span> + <p class="layui-elip icon-name">experiment</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7fc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bell"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bell"></span> + <p class="layui-elip icon-name">bell</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7fd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="trophy"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-trophy"></span> + <p class="layui-elip icon-name">trophy</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7fe;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rest"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rest"></span> + <p class="layui-elip icon-name">rest</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe7ff;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="USB"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-USB"></span> + <p class="layui-elip icon-name">USB</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe800;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="skin"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-skin"></span> + <p class="layui-elip icon-name">skin</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe801;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="home"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-home"></span> + <p class="layui-elip icon-name">home</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe802;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bank"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bank"></span> + <p class="layui-elip icon-name">bank</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe803;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="filter"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-filter"></span> + <p class="layui-elip icon-name">filter</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe804;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="funnelplot"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-funnelplot"></span> + <p class="layui-elip icon-name">funnelplot</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe805;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="like"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-like"></span> + <p class="layui-elip icon-name">like</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe806;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="unlike"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-unlike"></span> + <p class="layui-elip icon-name">unlike</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe807;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="unlock"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-unlock"></span> + <p class="layui-elip icon-name">unlock</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe808;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="lock"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-lock"></span> + <p class="layui-elip icon-name">lock</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe809;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="customerservice"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-customerservice"></span> + <p class="layui-elip icon-name">customerservice</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="flag"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-flag"></span> + <p class="layui-elip icon-name">flag</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="moneycollect"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-moneycollect"></span> + <p class="layui-elip icon-name">moneycollect</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="medicinebox"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-medicinebox"></span> + <p class="layui-elip icon-name">medicinebox</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shop"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shop"></span> + <p class="layui-elip icon-name">shop</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rocket"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rocket"></span> + <p class="layui-elip icon-name">rocket</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe80f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shopping"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shopping"></span> + <p class="layui-elip icon-name">shopping</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe810;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder"></span> + <p class="layui-elip icon-name">folder</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe811;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder-open"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder-open"></span> + <p class="layui-elip icon-name">folder-open</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe812;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder-add"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder-add"></span> + <p class="layui-elip icon-name">folder-add</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe813;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="deploymentunit"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-deploymentunit"></span> + <p class="layui-elip icon-name">deploymentunit</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe814;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="accountbook"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-accountbook"></span> + <p class="layui-elip icon-name">accountbook</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe815;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="contacts"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-contacts"></span> + <p class="layui-elip icon-name">contacts</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe816;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="carryout"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-carryout"></span> + <p class="layui-elip icon-name">carryout</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe817;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calendar-check"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calendar-check"></span> + <p class="layui-elip icon-name">calendar-check</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe818;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calendar"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calendar"></span> + <p class="layui-elip icon-name">calendar</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe819;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="scan"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-scan"></span> + <p class="layui-elip icon-name">scan</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="select"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-select"></span> + <p class="layui-elip icon-name">select</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="boxplot"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-boxplot"></span> + <p class="layui-elip icon-name">boxplot</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="build"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-build"></span> + <p class="layui-elip icon-name">build</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sliders"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sliders"></span> + <p class="layui-elip icon-name">sliders</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="laptop"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-laptop"></span> + <p class="layui-elip icon-name">laptop</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe81f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="barcode"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-barcode"></span> + <p class="layui-elip icon-name">barcode</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe820;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="camera"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-camera"></span> + <p class="layui-elip icon-name">camera</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe821;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cluster"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cluster"></span> + <p class="layui-elip icon-name">cluster</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe822;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="gateway"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-gateway"></span> + <p class="layui-elip icon-name">gateway</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe823;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="car"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-car"></span> + <p class="layui-elip icon-name">car</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe824;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="printer"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-printer"></span> + <p class="layui-elip icon-name">printer</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe825;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="read"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-read"></span> + <p class="layui-elip icon-name">read</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe826;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud-server"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud-server"></span> + <p class="layui-elip icon-name">cloud-server</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe827;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud-upload"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud-upload"></span> + <p class="layui-elip icon-name">cloud-upload</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe828;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud"></span> + <p class="layui-elip icon-name">cloud</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe829;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud-download"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud-download"></span> + <p class="layui-elip icon-name">cloud-download</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud-sync"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud-sync"></span> + <p class="layui-elip icon-name">cloud-sync</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="video"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-video"></span> + <p class="layui-elip icon-name">video</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="notification"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-notification"></span> + <p class="layui-elip icon-name">notification</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sound"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sound"></span> + <p class="layui-elip icon-name">sound</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="radarchart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-radarchart"></span> + <p class="layui-elip icon-name">radarchart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe82f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="qrcode"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-qrcode"></span> + <p class="layui-elip icon-name">qrcode</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe830;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fund"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fund"></span> + <p class="layui-elip icon-name">fund</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe831;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="image"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-image"></span> + <p class="layui-elip icon-name">image</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe832;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="mail"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-mail"></span> + <p class="layui-elip icon-name">mail</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe833;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="table"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-table"></span> + <p class="layui-elip icon-name">table</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe834;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="idcard"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-idcard"></span> + <p class="layui-elip icon-name">idcard</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe835;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="creditcard"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-creditcard"></span> + <p class="layui-elip icon-name">creditcard</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe836;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="heart"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-heart"></span> + <p class="layui-elip icon-name">heart</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe837;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="block"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-block"></span> + <p class="layui-elip icon-name">block</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe838;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="error"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-error"></span> + <p class="layui-elip icon-name">error</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe839;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="star"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-star"></span> + <p class="layui-elip icon-name">star</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="gold"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-gold"></span> + <p class="layui-elip icon-name">gold</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="heatmap"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-heatmap"></span> + <p class="layui-elip icon-name">heatmap</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wifi"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wifi"></span> + <p class="layui-elip icon-name">wifi</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="attachment"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-attachment"></span> + <p class="layui-elip icon-name">attachment</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="edit"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-edit"></span> + <p class="layui-elip icon-name">edit</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe83f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="key"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-key"></span> + <p class="layui-elip icon-name">key</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe840;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="api"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-api"></span> + <p class="layui-elip icon-name">api</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe841;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="disconnect"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-disconnect"></span> + <p class="layui-elip icon-name">disconnect</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe842;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="highlight"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-highlight"></span> + <p class="layui-elip icon-name">highlight</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe843;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="monitor"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-monitor"></span> + <p class="layui-elip icon-name">monitor</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe844;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="link"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-link"></span> + <p class="layui-elip icon-name">link</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe845;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="man"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-man"></span> + <p class="layui-elip icon-name">man</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe846;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="percentage"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-percentage"></span> + <p class="layui-elip icon-name">percentage</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe847;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="search"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-search"></span> + <p class="layui-elip icon-name">search</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe848;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pushpin"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pushpin"></span> + <p class="layui-elip icon-name">pushpin</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe849;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="phone"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-phone"></span> + <p class="layui-elip icon-name">phone</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shake"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shake"></span> + <p class="layui-elip icon-name">shake</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tag"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tag"></span> + <p class="layui-elip icon-name">tag</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wrench"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wrench"></span> + <p class="layui-elip icon-name">wrench</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="woman"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-woman"></span> + <p class="layui-elip icon-name">woman</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tags"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tags"></span> + <p class="layui-elip icon-name">tags</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe84f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="scissor"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-scissor"></span> + <p class="layui-elip icon-name">scissor</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe850;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="mr"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-mr"></span> + <p class="layui-elip icon-name">mr</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe851;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="share"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-share"></span> + <p class="layui-elip icon-name">share</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe852;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="branches"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-branches"></span> + <p class="layui-elip icon-name">branches</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe853;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fork"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fork"></span> + <p class="layui-elip icon-name">fork</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe854;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shrink"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shrink"></span> + <p class="layui-elip icon-name">shrink</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe855;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="arrawsalt"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-arrawsalt"></span> + <p class="layui-elip icon-name">arrawsalt</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe856;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="verticalright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-verticalright"></span> + <p class="layui-elip icon-name">verticalright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe857;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="verticalleft"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-verticalleft"></span> + <p class="layui-elip icon-name">verticalleft</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe858;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="right"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-right"></span> + <p class="layui-elip icon-name">right</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe859;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="left"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-left"></span> + <p class="layui-elip icon-name">left</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="up"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-up"></span> + <p class="layui-elip icon-name">up</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="down"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-down"></span> + <p class="layui-elip icon-name">down</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fullscreen"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fullscreen"></span> + <p class="layui-elip icon-name">fullscreen</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fullscreen-exit"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fullscreen-exit"></span> + <p class="layui-elip icon-name">fullscreen-exit</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="doubleleft"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-doubleleft"></span> + <p class="layui-elip icon-name">doubleleft</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe85f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="doubleright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-doubleright"></span> + <p class="layui-elip icon-name">doubleright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe860;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="arrowright"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-arrowright"></span> + <p class="layui-elip icon-name">arrowright</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe861;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="arrowup"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-arrowup"></span> + <p class="layui-elip icon-name">arrowup</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe862;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="arrowleft"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-arrowleft"></span> + <p class="layui-elip icon-name">arrowleft</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe863;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="arrowdown"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-arrowdown"></span> + <p class="layui-elip icon-name">arrowdown</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe864;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="upload"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-upload"></span> + <p class="layui-elip icon-name">upload</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe865;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="colum-height"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-colum-height"></span> + <p class="layui-elip icon-name">colum-height</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe866;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="vertical-align-botto"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-vertical-align-botto"></span> + <p class="layui-elip icon-name">vertical-align-botto</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe867;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="vertical-align-middl"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-vertical-align-middl"></span> + <p class="layui-elip icon-name">vertical-align-middl</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe868;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="totop"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-totop"></span> + <p class="layui-elip icon-name">totop</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe869;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="vertical-align-top"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-vertical-align-top"></span> + <p class="layui-elip icon-name">vertical-align-top</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="download"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-download"></span> + <p class="layui-elip icon-name">download</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sort-descending"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sort-descending"></span> + <p class="layui-elip icon-name">sort-descending</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sort-ascending"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sort-ascending"></span> + <p class="layui-elip icon-name">sort-ascending</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fall"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fall"></span> + <p class="layui-elip icon-name">fall</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="swap"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-swap"></span> + <p class="layui-elip icon-name">swap</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe86f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="stock"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-stock"></span> + <p class="layui-elip icon-name">stock</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe870;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rise"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rise"></span> + <p class="layui-elip icon-name">rise</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe871;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="indent"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-indent"></span> + <p class="layui-elip icon-name">indent</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe872;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="outdent"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-outdent"></span> + <p class="layui-elip icon-name">outdent</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe873;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="menu"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-menu"></span> + <p class="layui-elip icon-name">menu</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe874;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="unorderedlist"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-unorderedlist"></span> + <p class="layui-elip icon-name">unorderedlist</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe875;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="orderedlist"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-orderedlist"></span> + <p class="layui-elip icon-name">orderedlist</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe876;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="align-right"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-align-right"></span> + <p class="layui-elip icon-name">align-right</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe877;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="align-center"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-align-center"></span> + <p class="layui-elip icon-name">align-center</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe878;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="align-left"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-align-left"></span> + <p class="layui-elip icon-name">align-left</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe879;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pic-center"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pic-center"></span> + <p class="layui-elip icon-name">pic-center</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pic-right"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pic-right"></span> + <p class="layui-elip icon-name">pic-right</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pic-left"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pic-left"></span> + <p class="layui-elip icon-name">pic-left</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bold"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bold"></span> + <p class="layui-elip icon-name">bold</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="font-colors"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-font-colors"></span> + <p class="layui-elip icon-name">font-colors</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="exclaimination"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-exclaimination"></span> + <p class="layui-elip icon-name">exclaimination</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe87f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="font-size"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-font-size"></span> + <p class="layui-elip icon-name">font-size</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe880;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="infomation"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-infomation"></span> + <p class="layui-elip icon-name">infomation</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe881;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="line-height"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-line-height"></span> + <p class="layui-elip icon-name">line-height</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe882;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="strikethrough"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-strikethrough"></span> + <p class="layui-elip icon-name">strikethrough</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe883;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="underline"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-underline"></span> + <p class="layui-elip icon-name">underline</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe884;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="number"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-number"></span> + <p class="layui-elip icon-name">number</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe885;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="italic"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-italic"></span> + <p class="layui-elip icon-name">italic</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe886;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="code"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-elip"></span> + <p class="layui-elip icon-name">code</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe887;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="column-width"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-column-width"></span> + <p class="layui-elip icon-name">column-width</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe888;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="check"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-check"></span> + <p class="layui-elip icon-name">check</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe889;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="ellipsis"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-ellipsis"></span> + <p class="layui-elip icon-name">ellipsis</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dash"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dash"></span> + <p class="layui-elip icon-name">dash</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="close"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-close"></span> + <p class="layui-elip icon-name">close</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="enter"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-enter"></span> + <p class="layui-elip icon-name">enter</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="line"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-line"></span> + <p class="layui-elip icon-name">line</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="minus"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-minus"></span> + <p class="layui-elip icon-name">minus</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe88f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="question"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-question"></span> + <p class="layui-elip icon-name">question</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe890;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="plus"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-plus"></span> + <p class="layui-elip icon-name">plus</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe891;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rollback"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rollback"></span> + <p class="layui-elip icon-name">rollback</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe892;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="small-dash"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-small-dash"></span> + <p class="layui-elip icon-name">small-dash</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe893;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pause"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pause"></span> + <p class="layui-elip icon-name">pause</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe894;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bg-colors"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bg-colors"></span> + <p class="layui-elip icon-name">bg-colors</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe895;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="crown"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-crown"></span> + <p class="layui-elip icon-name">crown</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe896;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="drag"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-drag"></span> + <p class="layui-elip icon-name">drag</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe897;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="desktop"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-desktop"></span> + <p class="layui-elip icon-name">desktop</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe898;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="gift"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-gift"></span> + <p class="layui-elip icon-name">gift</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe899;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="stop"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-stop"></span> + <p class="layui-elip icon-name">stop</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fire"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fire"></span> + <p class="layui-elip icon-name">fire</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="thunderbolt"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-thunderbolt"></span> + <p class="layui-elip icon-name">thunderbolt</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="check-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-check-circle-fill"></span> + <p class="layui-elip icon-name">check-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="left-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-left-circle-fill"></span> + <p class="layui-elip icon-name">left-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="down-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-down-circle-fill"></span> + <p class="layui-elip icon-name">down-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe89f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="minus-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-minus-circle-fill"></span> + <p class="layui-elip icon-name">minus-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="close-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-close-circle-fill"></span> + <p class="layui-elip icon-name">close-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="info-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-info-circle-fill"></span> + <p class="layui-elip icon-name">info-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="up-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-up-circle-fill"></span> + <p class="layui-elip icon-name">up-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="right-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-right-circle-fill"></span> + <p class="layui-elip icon-name">right-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="plus-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-plus-circle-fill"></span> + <p class="layui-elip icon-name">plus-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="question-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-question-circle-fill"></span> + <p class="layui-elip icon-name">question-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="EURO-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-EURO-circle-fill"></span> + <p class="layui-elip icon-name">EURO-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="frown-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-frown-fill"></span> + <p class="layui-elip icon-name">frown-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="copyright-circle-fil"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-copyright-circle-fil"></span> + <p class="layui-elip icon-name">copyright-circle-fil</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8a9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="CI-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-CI-circle-fill"></span> + <p class="layui-elip icon-name">CI-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8aa;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="compass-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-compass-fill"></span> + <p class="layui-elip icon-name">compass-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ab;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Dollar-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Dollar-circle-fill"></span> + <p class="layui-elip icon-name">Dollar-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ac;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="poweroff-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-poweroff-circle-fill"></span> + <p class="layui-elip icon-name">poweroff-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ad;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="meh-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-meh-fill"></span> + <p class="layui-elip icon-name">meh-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ae;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="play-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-play-circle-fill"></span> + <p class="layui-elip icon-name">play-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8af;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Pound-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Pound-circle-fill"></span> + <p class="layui-elip icon-name">Pound-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="smile-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-smile-fill"></span> + <p class="layui-elip icon-name">smile-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="stop-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-stop-fill"></span> + <p class="layui-elip icon-name">stop-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="warning-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-warning-circle-fill"></span> + <p class="layui-elip icon-name">warning-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="time-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-time-circle-fill"></span> + <p class="layui-elip icon-name">time-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="trademark-circle-fil"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-trademark-circle-fil"></span> + <p class="layui-elip icon-name">trademark-circle-fil</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="YUAN-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-YUAN-circle-fill"></span> + <p class="layui-elip icon-name">YUAN-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="heart-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-heart-fill"></span> + <p class="layui-elip icon-name">heart-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="piechart-circle-fil"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-piechart-circle-fil"></span> + <p class="layui-elip icon-name">piechart-circle-fil</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dashboard-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dashboard-fill"></span> + <p class="layui-elip icon-name">dashboard-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8b9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="message-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-message-fill"></span> + <p class="layui-elip icon-name">message-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ba;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="check-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-check-square-fill"></span> + <p class="layui-elip icon-name">check-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8bb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="down-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-down-square-fill"></span> + <p class="layui-elip icon-name">down-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8bc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="minus-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-minus-square-fill"></span> + <p class="layui-elip icon-name">minus-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8bd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="close-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-close-square-fill"></span> + <p class="layui-elip icon-name">close-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8be;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="codelibrary-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-eliplibrary-fill"></span> + <p class="layui-elip icon-name">codelibrary-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8bf;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="left-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-left-square-fill"></span> + <p class="layui-elip icon-name">left-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="play-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-play-square-fill"></span> + <p class="layui-elip icon-name">play-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="up-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-up-square-fill"></span> + <p class="layui-elip icon-name">up-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="right-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-right-square-fill"></span> + <p class="layui-elip icon-name">right-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="plus-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-plus-square-fill"></span> + <p class="layui-elip icon-name">plus-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="accountbook-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-accountbook-fill"></span> + <p class="layui-elip icon-name">accountbook-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="carryout-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-carryout-fill"></span> + <p class="layui-elip icon-name">carryout-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calendar-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calendar-fill"></span> + <p class="layui-elip icon-name">calendar-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calculator-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calculator-fill"></span> + <p class="layui-elip icon-name">calculator-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="interation-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-interation-fill"></span> + <p class="layui-elip icon-name">interation-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8c9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="project-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-project-fill"></span> + <p class="layui-elip icon-name">project-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ca;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="detail-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-detail-fill"></span> + <p class="layui-elip icon-name">detail-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8cb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="save-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-save-fill"></span> + <p class="layui-elip icon-name">save-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8cc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wallet-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wallet-fill"></span> + <p class="layui-elip icon-name">wallet-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8cd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="control-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-control-fill"></span> + <p class="layui-elip icon-name">control-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ce;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="layout-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-layout-fill"></span> + <p class="layui-elip icon-name">layout-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8cf;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="appstore-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-appstore-fill"></span> + <p class="layui-elip icon-name">appstore-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="mobile-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-mobile-fill"></span> + <p class="layui-elip icon-name">mobile-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tablet-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tablet-fill"></span> + <p class="layui-elip icon-name">tablet-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="book-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-book-fill"></span> + <p class="layui-elip icon-name">book-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="redenvelope-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-redenvelope-fill"></span> + <p class="layui-elip icon-name">redenvelope-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="safetycertificate-f"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-safetycertificate-f"></span> + <p class="layui-elip icon-name">safetycertificate-f</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="propertysafety-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-propertysafety-fill"></span> + <p class="layui-elip icon-name">propertysafety-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="insurance-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-insurance-fill"></span> + <p class="layui-elip icon-name">insurance-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="securityscan-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-securityscan-fill"></span> + <p class="layui-elip icon-name">securityscan-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-exclamation-fil"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-exclamation-fil"></span> + <p class="layui-elip icon-name">file-exclamation-fil</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8d9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-add-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-add-fill"></span> + <p class="layui-elip icon-name">file-add-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8da;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-fill"></span> + <p class="layui-elip icon-name">file-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8db;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-excel-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-excel-fill"></span> + <p class="layui-elip icon-name">file-excel-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8dc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-markdown-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-markdown-fill"></span> + <p class="layui-elip icon-name">file-markdown-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8dd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-text-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-text-fill"></span> + <p class="layui-elip icon-name">file-text-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8de;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-ppt-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-ppt-fill"></span> + <p class="layui-elip icon-name">file-ppt-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8df;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-unknown-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-unknown-fill"></span> + <p class="layui-elip icon-name">file-unknown-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-word-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-word-fill"></span> + <p class="layui-elip icon-name">file-word-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-zip-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-zip-fill"></span> + <p class="layui-elip icon-name">file-zip-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-pdf-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-pdf-fill"></span> + <p class="layui-elip icon-name">file-pdf-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-image-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-image-fill"></span> + <p class="layui-elip icon-name">file-image-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="diff-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-diff-fill"></span> + <p class="layui-elip icon-name">diff-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="file-copy-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-file-copy-fill"></span> + <p class="layui-elip icon-name">file-copy-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="snippets-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-snippets-fill"></span> + <p class="layui-elip icon-name">snippets-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="batchfolding-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-batchfolding-fill"></span> + <p class="layui-elip icon-name">batchfolding-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reconciliation-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reconciliation-fill"></span> + <p class="layui-elip icon-name">reconciliation-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8e9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder-add-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder-add-fill"></span> + <p class="layui-elip icon-name">folder-add-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ea;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder-fill"></span> + <p class="layui-elip icon-name">folder-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8eb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="folder-open-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-folder-open-fill"></span> + <p class="layui-elip icon-name">folder-open-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ec;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="database-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-database-fill"></span> + <p class="layui-elip icon-name">database-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ed;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="container-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-container-fill"></span> + <p class="layui-elip icon-name">container-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ee;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sever-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sever-fill"></span> + <p class="layui-elip icon-name">sever-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ef;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="calendar-check-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-calendar-check-fill"></span> + <p class="layui-elip icon-name">calendar-check-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f0;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="image-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-image-fill"></span> + <p class="layui-elip icon-name">image-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f1;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="idcard-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-idcard-fill"></span> + <p class="layui-elip icon-name">idcard-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f2;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="creditcard-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-creditcard-fill"></span> + <p class="layui-elip icon-name">creditcard-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f3;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fund-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fund-fill"></span> + <p class="layui-elip icon-name">fund-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f4;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="read-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-read-fill"></span> + <p class="layui-elip icon-name">read-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f5;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="contacts-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-contacts-fill"></span> + <p class="layui-elip icon-name">contacts-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f6;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="delete-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-delete-fill"></span> + <p class="layui-elip icon-name">delete-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f7;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="notification-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-notification-fill"></span> + <p class="layui-elip icon-name">notification-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f8;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="flag-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-flag-fill"></span> + <p class="layui-elip icon-name">flag-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8f9;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="moneycollect-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-moneycollect-fill"></span> + <p class="layui-elip icon-name">moneycollect-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8fa;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="medicinebox-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-medicinebox-fill"></span> + <p class="layui-elip icon-name">medicinebox-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8fb;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rest-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rest-fill"></span> + <p class="layui-elip icon-name">rest-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8fc;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shopping-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shopping-fill"></span> + <p class="layui-elip icon-name">shopping-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8fd;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="skin-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-skin-fill"></span> + <p class="layui-elip icon-name">skin-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8fe;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="video-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-video-fill"></span> + <p class="layui-elip icon-name">video-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe8ff;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sound-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sound-fill"></span> + <p class="layui-elip icon-name">sound-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe900;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bulb-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bulb-fill"></span> + <p class="layui-elip icon-name">bulb-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe901;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bell-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bell-fill"></span> + <p class="layui-elip icon-name">bell-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe902;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="filter-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-filter-fill"></span> + <p class="layui-elip icon-name">filter-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe903;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="fire-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-fire-fill"></span> + <p class="layui-elip icon-name">fire-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe904;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="funnelplot-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-funnelplot-fill"></span> + <p class="layui-elip icon-name">funnelplot-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe905;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="gift-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-gift-fill"></span> + <p class="layui-elip icon-name">gift-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe906;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="hourglass-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-hourglass-fill"></span> + <p class="layui-elip icon-name">hourglass-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe907;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="home-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-home-fill"></span> + <p class="layui-elip icon-name">home-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe908;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="trophy-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-trophy-fill"></span> + <p class="layui-elip icon-name">trophy-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe909;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="location-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-location-fill"></span> + <p class="layui-elip icon-name">location-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="cloud-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-cloud-fill"></span> + <p class="layui-elip icon-name">cloud-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="customerservice-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-customerservice-fill"></span> + <p class="layui-elip icon-name">customerservice-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="experiment-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-experiment-fill"></span> + <p class="layui-elip icon-name">experiment-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="eye-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-eye-fill"></span> + <p class="layui-elip icon-name">eye-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="like-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-like-fill"></span> + <p class="layui-elip icon-name">like-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe90f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="lock-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-lock-fill"></span> + <p class="layui-elip icon-name">lock-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe910;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="unlike-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-unlike-fill"></span> + <p class="layui-elip icon-name">unlike-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe911;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="star-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-star-fill"></span> + <p class="layui-elip icon-name">star-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe912;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="unlock-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-unlock-fill"></span> + <p class="layui-elip icon-name">unlock-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe913;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alert-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alert-fill"></span> + <p class="layui-elip icon-name">alert-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe914;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="api-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-api-fill"></span> + <p class="layui-elip icon-name">api-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe915;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="highlight-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-highlight-fill"></span> + <p class="layui-elip icon-name">highlight-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe916;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="phone-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-phone-fill"></span> + <p class="layui-elip icon-name">phone-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe917;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="edit-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-edit-fill"></span> + <p class="layui-elip icon-name">edit-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe918;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="pushpin-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-pushpin-fill"></span> + <p class="layui-elip icon-name">pushpin-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe919;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="rocket-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-rocket-fill"></span> + <p class="layui-elip icon-name">rocket-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="thunderbolt-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-thunderbolt-fill"></span> + <p class="layui-elip icon-name">thunderbolt-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tag-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tag-fill"></span> + <p class="layui-elip icon-name">tag-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wrench-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wrench-fill"></span> + <p class="layui-elip icon-name">wrench-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="tags-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-tags-fill"></span> + <p class="layui-elip icon-name">tags-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="bank-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-bank-fill"></span> + <p class="layui-elip icon-name">bank-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe91f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="camera-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-camera-fill"></span> + <p class="layui-elip icon-name">camera-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe920;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="error-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-error-fill"></span> + <p class="layui-elip icon-name">error-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe921;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="crown-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-crown-fill"></span> + <p class="layui-elip icon-name">crown-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe922;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="mail-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-mail-fill"></span> + <p class="layui-elip icon-name">mail-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe923;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="car-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-car-fill"></span> + <p class="layui-elip icon-name">car-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe924;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="printer-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-printer-fill"></span> + <p class="layui-elip icon-name">printer-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe925;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="shop-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-shop-fill"></span> + <p class="layui-elip icon-name">shop-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe926;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="setting-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-setting-fill"></span> + <p class="layui-elip icon-name">setting-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe927;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="USB-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-USB-fill"></span> + <p class="layui-elip icon-name">USB-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe928;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="golden-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-golden-fill"></span> + <p class="layui-elip icon-name">golden-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe929;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="build-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-build-fill"></span> + <p class="layui-elip icon-name">build-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="boxplot-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-boxplot-fill"></span> + <p class="layui-elip icon-name">boxplot-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sliders-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sliders-fill"></span> + <p class="layui-elip icon-name">sliders-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alibaba"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alibaba"></span> + <p class="layui-elip icon-name">alibaba</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alibabacloud"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alibabacloud"></span> + <p class="layui-elip icon-name">alibabacloud</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="antdesign"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-antdesign"></span> + <p class="layui-elip icon-name">antdesign</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe92f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="ant-cloud"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-ant-cloud"></span> + <p class="layui-elip icon-name">ant-cloud</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe930;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="behance"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-behance"></span> + <p class="layui-elip icon-name">behance</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe931;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="googleplus"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-googleplus"></span> + <p class="layui-elip icon-name">googleplus</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe932;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="medium"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-medium"></span> + <p class="layui-elip icon-name">medium</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe933;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="google"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-google"></span> + <p class="layui-elip icon-name">google</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe934;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="IE"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-IE"></span> + <p class="layui-elip icon-name">IE</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe935;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="amazon"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-amazon"></span> + <p class="layui-elip icon-name">amazon</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe936;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="slack"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-slack"></span> + <p class="layui-elip icon-name">slack</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe937;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alipay"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alipay"></span> + <p class="layui-elip icon-name">alipay</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe938;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="taobao"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-taobao"></span> + <p class="layui-elip icon-name">taobao</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe939;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="zhihu"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-zhihu"></span> + <p class="layui-elip icon-name">zhihu</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="HTML"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-HTML"></span> + <p class="layui-elip icon-name">HTML</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="linkedin"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-linkedin"></span> + <p class="layui-elip icon-name">linkedin</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="yahoo"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-yahoo"></span> + <p class="layui-elip icon-name">yahoo</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="facebook"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-facebook"></span> + <p class="layui-elip icon-name">facebook</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="skype"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-skype"></span> + <p class="layui-elip icon-name">skype</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe93f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="CodeSandbox"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-CodeSandbox"></span> + <p class="layui-elip icon-name">CodeSandbox</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe940;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="chrome"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-chrome"></span> + <p class="layui-elip icon-name">chrome</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe941;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="codepen"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-elippen"></span> + <p class="layui-elip icon-name">codepen</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe942;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="aliwangwang"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-aliwangwang"></span> + <p class="layui-elip icon-name">aliwangwang</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe943;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="apple"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-apple"></span> + <p class="layui-elip icon-name">apple</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe944;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="android"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-android"></span> + <p class="layui-elip icon-name">android</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe945;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sketch"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sketch"></span> + <p class="layui-elip icon-name">sketch</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe946;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Gitlab"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Gitlab"></span> + <p class="layui-elip icon-name">Gitlab</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe947;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dribbble"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dribbble"></span> + <p class="layui-elip icon-name">dribbble</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe948;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="instagram"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-instagram"></span> + <p class="layui-elip icon-name">instagram</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe949;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reddit"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reddit"></span> + <p class="layui-elip icon-name">reddit</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="windows"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-windows"></span> + <p class="layui-elip icon-name">windows</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="yuque"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-yuque"></span> + <p class="layui-elip icon-name">yuque</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Youtube"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Youtube"></span> + <p class="layui-elip icon-name">Youtube</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Gitlab-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Gitlab-fill"></span> + <p class="layui-elip icon-name">Gitlab-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dropbox"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dropbox"></span> + <p class="layui-elip icon-name">dropbox</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe94f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dingtalk"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dingtalk"></span> + <p class="layui-elip icon-name">dingtalk</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe950;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="android-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-android-fill"></span> + <p class="layui-elip icon-name">android-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe951;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="apple-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-apple-fill"></span> + <p class="layui-elip icon-name">apple-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe952;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="HTML-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-HTML-fill"></span> + <p class="layui-elip icon-name">HTML-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe953;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="windows-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-windows-fill"></span> + <p class="layui-elip icon-name">windows-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe954;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="QQ"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-QQ"></span> + <p class="layui-elip icon-name">QQ</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe955;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="twitter"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-twitter"></span> + <p class="layui-elip icon-name">twitter</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe956;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="skype-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-skype-fill"></span> + <p class="layui-elip icon-name">skype-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe957;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="weibo"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-weibo"></span> + <p class="layui-elip icon-name">weibo</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe958;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="yuque-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-yuque-fill"></span> + <p class="layui-elip icon-name">yuque-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe959;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="Youtube-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-Youtube-fill"></span> + <p class="layui-elip icon-name">Youtube-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="yahoo-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-yahoo-fill"></span> + <p class="layui-elip icon-name">yahoo-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="wechat-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-wechat-fill"></span> + <p class="layui-elip icon-name">wechat-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="chrome-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-chrome-fill"></span> + <p class="layui-elip icon-name">chrome-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alipay-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alipay-circle-fill"></span> + <p class="layui-elip icon-name">alipay-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="aliwangwang-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-aliwangwang-fill"></span> + <p class="layui-elip icon-name">aliwangwang-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe95f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="behance-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-behance-circle-fill"></span> + <p class="layui-elip icon-name">behance-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe960;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="amazon-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-amazon-circle-fill"></span> + <p class="layui-elip icon-name">amazon-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe961;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="codepen-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-elippen-circle-fill"></span> + <p class="layui-elip icon-name">codepen-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe962;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="CodeSandbox-circle-f"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-CodeSandbox-circle-f"></span> + <p class="layui-elip icon-name">CodeSandbox-circle-f</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe963;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dropbox-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dropbox-circle-fill"></span> + <p class="layui-elip icon-name">dropbox-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe964;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="github-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-github-fill"></span> + <p class="layui-elip icon-name">github-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe965;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dribbble-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dribbble-circle-fill"></span> + <p class="layui-elip icon-name">dribbble-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe966;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="googleplus-circle-f"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-googleplus-circle-f"></span> + <p class="layui-elip icon-name">googleplus-circle-f</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe967;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="medium-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-medium-circle-fill"></span> + <p class="layui-elip icon-name">medium-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe968;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="QQ-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-QQ-circle-fill"></span> + <p class="layui-elip icon-name">QQ-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe969;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="IE-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-IE-circle-fill"></span> + <p class="layui-elip icon-name">IE-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="google-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-google-circle-fill"></span> + <p class="layui-elip icon-name">google-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dingtalk-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dingtalk-circle-fill"></span> + <p class="layui-elip icon-name">dingtalk-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sketch-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sketch-circle-fill"></span> + <p class="layui-elip icon-name">sketch-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="slack-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-slack-circle-fill"></span> + <p class="layui-elip icon-name">slack-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="twitter-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-twitter-circle-fill"></span> + <p class="layui-elip icon-name">twitter-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe96f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="taobao-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-taobao-circle-fill"></span> + <p class="layui-elip icon-name">taobao-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe970;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="weibo-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-weibo-circle-fill"></span> + <p class="layui-elip icon-name">weibo-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe971;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="zhihu-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-zhihu-circle-fill"></span> + <p class="layui-elip icon-name">zhihu-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe972;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reddit-circle-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reddit-circle-fill"></span> + <p class="layui-elip icon-name">reddit-circle-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe973;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="alipay-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-alipay-square-fill"></span> + <p class="layui-elip icon-name">alipay-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe974;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dingtalk-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dingtalk-square-fill"></span> + <p class="layui-elip icon-name">dingtalk-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe975;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="CodeSandbox-square-f"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-CodeSandbox-square-f"></span> + <p class="layui-elip icon-name">CodeSandbox-square-f</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe976;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="behance-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-behance-square-fill"></span> + <p class="layui-elip icon-name">behance-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe977;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="amazon-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-amazon-square-fill"></span> + <p class="layui-elip icon-name">amazon-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe978;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="codepen-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-code layui-elippen-square-fill"></span> + <p class="layui-elip icon-name">codepen-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe979;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dribbble-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dribbble-square-fill"></span> + <p class="layui-elip icon-name">dribbble-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="dropbox-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-dropbox-square-fill"></span> + <p class="layui-elip icon-name">dropbox-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="facebook-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-facebook-fill"></span> + <p class="layui-elip icon-name">facebook-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="googleplus-square-f"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-googleplus-square-f"></span> + <p class="layui-elip icon-name">googleplus-square-f</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="google-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-google-square-fill"></span> + <p class="layui-elip icon-name">google-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="instagram-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-instagram-fill"></span> + <p class="layui-elip icon-name">instagram-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe97f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="IE-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-IE-square-fill"></span> + <p class="layui-elip icon-name">IE-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe980;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="medium-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-medium-square-fill"></span> + <p class="layui-elip icon-name">medium-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe981;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="linkedin-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-linkedin-fill"></span> + <p class="layui-elip icon-name">linkedin-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe982;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="QQ-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-QQ-square-fill"></span> + <p class="layui-elip icon-name">QQ-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe983;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="reddit-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-reddit-square-fill"></span> + <p class="layui-elip icon-name">reddit-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe984;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="twitter-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-twitter-square-fill"></span> + <p class="layui-elip icon-name">twitter-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe985;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="sketch-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-sketch-square-fill"></span> + <p class="layui-elip icon-name">sketch-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe986;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="slack-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-slack-square-fill"></span> + <p class="layui-elip icon-name">slack-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe987;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="taobao-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-taobao-square-fill"></span> + <p class="layui-elip icon-name">taobao-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe988;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="weibo-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-weibo-square-fill"></span> + <p class="layui-elip icon-name">weibo-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe989;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="zhihu-square-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-zhihu-square-fill"></span> + <p class="layui-elip icon-name">zhihu-square-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98a;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="zoomout"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-zoomout"></span> + <p class="layui-elip icon-name">zoomout</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98b;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="apartment"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-apartment"></span> + <p class="layui-elip icon-name">apartment</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98c;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="audio"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-audio"></span> + <p class="layui-elip icon-name">audio</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98d;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="audio-fill"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-audio-fill"></span> + <p class="layui-elip icon-name">audio-fill</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98e;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="robot"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-robot"></span> + <p class="layui-elip icon-name">robot</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe98f;</p> + </div> + </div> + </div> + <div class="layui-col-md1 layui-col-sm2 layui-col-xs4"> + <div class="layui-card" title="zoomin"> + <div class="layui-card-body icon-body"><span class="layui-icon layui-icon-zoomin"></span> + <p class="layui-elip icon-name">zoomin</p> + <p class="nepadmin-font-12 icon-code layui-elip">&#xe990;</p> + </div> + </div> + </div> + </div> +</div> +<script> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $('#febs-icon'), + $iconBody = $view.find('.icon-body'); + + $iconBody.each(function () { + var $this = $(this); + $this.on('click', function () { + $view.find('.icon-active').each(function () { + $(this).removeClass('icon-active'); + }); + $this.addClass('icon-active'); + var iconName = 'layui-icon-' + $this.find('.icon-name').text(); + febs.alert.success('已选择图标<strong> ' + iconName + ' </strong>'); + }); + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/febs/others.html b/src/main/resources/templates/febs/views/others/febs/others.html new file mode 100644 index 0000000..6b6e864 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/febs/others.html @@ -0,0 +1,74 @@ +<style> + #febs-components-others .layui-card-header { + font-weight: 600; + } + + #febs-components-others p { + margin-bottom: 10px + } + #febs-components-others .layui-badge { + line-height: 20px; + margin: .25rem .5rem .25rem 0; + } + #febs-components-others .alert { + margin-bottom: .75rem; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-components-others" lay-title="其他组件"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">Tag标签</div> + <div class="layui-card-body"> + <p>样式一</p> + <div> + <span class="layui-badge febs-tag-green">febs-tag-green</span> + <span class="layui-badge febs-tag-magenta">febs-tag-magenta</span> + <span class="layui-badge febs-tag-orange">febs-tag-orange</span> + <span class="layui-badge febs-tag-red">febs-tag-red</span> + <span class="layui-badge febs-tag-volcano">febs-tag-volcano</span> + <span class="layui-badge febs-tag-gold">febs-tag-gold</span> + <span class="layui-badge febs-tag-lime">febs-tag-lime</span> + <span class="layui-badge febs-tag-cyan">febs-tag-cyan</span> + <span class="layui-badge febs-tag-blue">febs-tag-blue</span> + <span class="layui-badge febs-tag-geekblue">febs-tag-geekblue</span> + <span class="layui-badge febs-tag-purple">febs-tag-purple</span> + </div> + <p>样式二</p> + <div> + <span class="layui-badge febs-bg-green">.febs-bg-green</span> + <span class="layui-badge febs-bg-magenta">febs-bg-magenta</span> + <span class="layui-badge febs-bg-orange">febs-bg-orange</span> + <span class="layui-badge febs-bg-red">febs-bg-red</span> + <span class="layui-badge febs-bg-volcano">febs-bg-volcano</span> + <span class="layui-badge febs-bg-gold">febs-bg-gold</span> + <span class="layui-badge febs-bg-lime">febs-bg-lime</span> + <span class="layui-badge febs-bg-cyan">febs-bg-cyan</span> + <span class="layui-badge febs-bg-blue">febs-bg-blue</span> + <span class="layui-badge febs-bg-geekblue">febs-bg-geekblue</span> + <span class="layui-badge febs-bg-purple">febs-bg-purple</span> + </div> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">Alert告警提示</div> + <div class="layui-card-body"> + <div class="alert"> + <span class="febs-alert-base febs-alert-success">Success Tips</span> + </div> + <div class="alert"> + <span class="febs-alert-base febs-alert-info">Informational Notes</span> + </div> + <div class="alert"> + <span class="febs-alert-base febs-alert-warn">Warning Message</span> + </div> + <div class="alert"> + <span class="febs-alert-base febs-alert-error">Error Message</span> + </div> + </div> + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/febs/tools.html b/src/main/resources/templates/febs/views/others/febs/tools.html new file mode 100644 index 0000000..12b07d7 --- /dev/null +++ b/src/main/resources/templates/febs/views/others/febs/tools.html @@ -0,0 +1,238 @@ +<style> + #febs-tools .layui-card-header { + font-weight: 600; + } + + #febs-tools p { + margin-bottom: 10px + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-tools" lay-title="FEBS工具"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">弹出层</div> + <div class="layui-card-body"> + <p>febs.modal.info / warn / success / error(),使用 layer.alert() + 实现,参数与官网一致。</p> + <div class="layui-btn-container"> + <button class="layui-btn layui-btn-normal" id="modal-info">信息</button> + <button class="layui-btn layui-btn-warm" id="modal-warn">警告</button> + <button class="layui-btn layui-btn-success" id="modal-success">成功</button> + <button class="layui-btn layui-btn-danger" id="modal-error">错误</button> + <button class="layui-btn layui-btn-normal" id="modal-confirm">confirm</button> + </div> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">提示层</div> + <div class="layui-card-body"> + <p>febs.alert.info / warn / success / error(),使用 layer.alert() + 实现,参数与官网一致。</p> + <div class="layui-btn-container"> + <button class="layui-btn layui-btn-normal" id="alert-info">信息</button> + <button class="layui-btn layui-btn-warm" id="alert-warn">警告</button> + <button class="layui-btn layui-btn-success" id="alert-success">成功</button> + <button class="layui-btn layui-btn-danger" id="alert-error">错误</button> + </div> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">popup层</div> + <div class="layui-card-body"> + <p>使用 febs.modal.open() 打开任意网址,使用 layer.open() 实现,参数与官网一致。</p> + <div class="layui-btn-container"> + <button class="layui-btn layui-btn-primary" id="popup-out">外部网页</button> + <button class="layui-btn layui-btn-primary" id="popup-inner">内部网页</button> + <button class="layui-btn layui-btn-primary" id="popup-clean">简洁风格</button> + <button class="layui-btn layui-btn-primary" id="popup-with-button">添加按钮</button> + </div> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">Tab操作</div> + <div class="layui-card-body"> + <p>刷新当前Tab页面:<a id="refresh-tab">点击刷新</a></p> + <pre class="layui-code" lay-title="JavaScript" lay-encode="true"> +// html +<a>点击刷新</a> +// js +$('a').on('click', function () { + febs.view.tab.refresh(); +} + </pre> + <p>切换到指定Tab页面:<a id="change-tab">点击切换到首页</a></p> + <pre class="layui-code" lay-title="JavaScript" lay-encode="true"> +// html +<a>点击切换</a> +// js +$('a').on('click', function () { + febs.view.tab.change("/index"); +} + </pre> + <p>关闭指定Tab页面:<a id="del-tab">点击关闭当前Tab页,并跳转到首页</a></p> + <pre class="layui-code" lay-title="JavaScript" lay-encode="true"> +// html +<a>点击切换</a> +// js +$('a').on('click', function () { + var currentUrl = window.location.hash.replace('#', ''); + febs.view.tab.del(currentUrl); + febs.view.tab.change("/index"); +} + </pre> + <span class="febs-alert-base febs-alert-success">更多Tab的操作可以阅读static/febs/lay/modules/view.js源码。</span> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">路由Router操作</div> + <div class="layui-card-body"> + <p>路由跳转拦截:</p> + <pre class="layui-code" lay-title="JavaScript"> +febs.routeLeave(function (route, nextPath, next) { + // route 当前页面路由信息 + // nextPath 将要去到的路径 + // next() 执行跳转页面 +}) + </pre> + <p>获取当前路由地址:</p> + <pre class="layui-code" lay-title="JavaScript"> +var url = febs.route.href; + </pre> + </div> + </div> + </div> + <div class="layui-col-md12 layui-col-sm12 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">LoadBar</div> + <div class="layui-card-body"> + <p>点击查看效果:</p> + <button class="layui-btn layui-btn-normal" id="load-start">开始 Start</button> + <button class="layui-btn layui-btn-normal" id="load-finish">结束 Finish</button> + <button class="layui-btn layui-btn-danger" id="load-error">错误 Error</button> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['febs', 'code'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $("#febs-tools"); + + layui.code(); + // ------------ 弹出层 ------------------------ + $view.find('#modal-info').on('click', function () { + febs.modal.info('请输入标题', '请输入内容', function () { + febs.alert.info("确定按钮回调"); + }); + }); + $view.find('#modal-warn').on('click', function () { + febs.modal.warn('请输入标题', '请输入内容', function () { + febs.alert.info("确定按钮回调"); + }); + }); + $view.find('#modal-success').on('click', function () { + febs.modal.success('请输入标题', '请输入内容', function () { + febs.alert.info("确定按钮回调"); + }); + }); + $view.find('#modal-error').on('click', function () { + febs.modal.error('请输入标题', '请输入内容', function () { + febs.alert.info("确定按钮回调"); + }); + }); + $view.find('#modal-confirm').on('click', function () { + febs.modal.confirm('请输入标题', '请输入内容', function () { + febs.alert.info("确定按钮回调"); + }, function () { + febs.alert.info("取消按钮回调"); + }); + }); + + // ------------------- 提示层 --------------------- + $view.find('#alert-info').on('click', function () { + febs.alert.info("提示信息"); + }); + $view.find('#alert-warn').on('click', function () { + febs.alert.warn("告警信息"); + }); + $view.find('#alert-success').on('click', function () { + febs.alert.success("成功信息"); + }); + $view.find('#alert-error').on('click', function () { + febs.alert.error("错误信息"); + }); + + // -------------------- popup ---------------------- + $view.find('#popup-out').on('click', function () { + febs.modal.open('百度一下,你就知道', 'https://www.baidu.com'); + }); + $view.find('#popup-inner').on('click', function () { + febs.modal.open('内部网页', 'others/apex/radar', { + //传递参数,弹出的页面可以使用 POPUP_DATA.username 获取值 + data: { + username: 'MrBird' + } + }); + }); + $view.find('#popup-clean').on('click', function () { + febs.modal.view('博客地址', 'https://mrbird.cc'); + }); + + $view.find('#popup-with-button').on('click', function () { + febs.modal.view('博客地址', 'https://mrbird.cc', { + btn: ['确定', '取消'], + yes: function () { + febs.alert.info('确定按钮回调'); + }, + btn2: function () { + febs.alert.info('取消按钮回调'); + return false; + } + }); + }); + + // ------------------- tab操作 --------------------------- + $view.find('a#refresh-tab').on('click', function () { + var isTab = currentUser.isTab; + if (isTab === '1') { + febs.view.tab.refresh(); + } else { + window.location.reload(); + } + febs.alert.success('刷新完毕') + }); + $view.find('a#change-tab').on('click', function () { + febs.view.tab.change("/index"); + }); + $view.find('a#del-tab').on('click', function () { + var currentUrl = window.location.hash.replace('#', ''); + febs.view.tab.change("/index"); + febs.view.tab.del(currentUrl); + }); + + // -------------- LoadBar -------------------------------- + $view.find('#load-start').on('click', function () { + febs.view.loadBar.start(); + }); + $view.find('#load-finish').on('click', function () { + febs.view.loadBar.finish(); + }); + $view.find('#load-error').on('click', function () { + febs.view.loadBar.start(); + setTimeout(function () { + febs.view.loadBar.error(); + }, 1000); + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/others/map/gaodeMap.html b/src/main/resources/templates/febs/views/others/map/gaodeMap.html new file mode 100644 index 0000000..6b361ae --- /dev/null +++ b/src/main/resources/templates/febs/views/others/map/gaodeMap.html @@ -0,0 +1,36 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-map-demo" lay-title="高德地图"> + <div class="layui-row febs-container"> + <div class="layui-card"> + <div style="padding: .1rem;"> + <div id="container" class="map"></div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['jquery', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + $view = $('#febs-map-demo'); + + $view.find('#container').css({"height": document.documentElement.clientHeight - 97 + 'px'}); + + var map = new AMap.Map("container", { + resizeEnable: true, + zoom: 14 //初始地图级别 + }); + + function currentLocationInfo() { + map.getCity(function (info) { + febs.alert.success('当前位置:' + info.province + ',' + info.city + ',' + info.district + ',区号:' + info.citycode); + }); + } + + currentLocationInfo(); + + //为地图注册click事件获取鼠标点击出的经纬度坐标 + map.on('click', function (e) { + febs.alert.success('经度:' + e.lnglat.getLng() + ',纬度:' + e.lnglat.getLat()); + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/dept/dept.html b/src/main/resources/templates/febs/views/system/dept/dept.html new file mode 100644 index 0000000..f0cd526 --- /dev/null +++ b/src/main/resources/templates/febs/views/system/dept/dept.html @@ -0,0 +1,245 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-dept" lay-title="部门管理"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="dept-table-form" id="dept-table-form"> + <div class="layui-row"> + <div class="layui-col-md8 layui-col-sm9 layui-col-xs9"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">名称</label> + <div class="layui-input-inline"> + <input type="text" name="deptName" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md4 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="dept:add,dept:delete,dept:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <div class="dept-tree" lay-filter="deptTree" style="margin-left: 1rem"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header" id="form-header">新增部门</div> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" action="" lay-filter="dept-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">ID:</label> + <div class="layui-input-block"> + <input type="text" name="deptId" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">上级ID:</label> + <div class="layui-input-block"> + <input type="text" value="" name="parentId" readonly autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">部门名称:</label> + <div class="layui-input-block"> + <input type="text" name="deptName" autocomplete="off" class="layui-input" + minlength="2" maxlength="10" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">部门排序:</label> + <div class="layui-input-block"> + <input type="text" name="orderNum" autocomplete="off" class="layui-input" + lay-verify="number"> + </div> + </div> + <button type="reset" class="layui-btn febs-hide" id="reset-form"></button> + <button class="layui-btn febs-hide" lay-submit="" lay-filter="dept-form-submit" + id="submit-form"></button> + </form> + </div> + <div class="layui-card-footer"> + <button class="layui-btn layui-btn-normal" id="submit">保存</button> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="javascript" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'validate', 'febs', 'form', 'eleTree'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + validate = layui.validate, + eleTree = layui.eleTree, + dropdown = layui.dropdown, + $view = $('#febs-dept'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $submit = $view.find('#submit'), + $header = $view.find('#form-header'), + $searchForm = $view.find('#dept-table-form'), + $deptName = $searchForm.find('input[name="deptName"]'), + _currentDeptData, + _deptTree; + + form.verify(validate); + form.render(); + + renderDeptTree(); + + eleTree.on("nodeClick(deptTree)", function (d) { + $header.text('修改部门'); + var data = d.data.currentData.data; + _currentDeptData = data; + form.val("dept-form", { + "deptName": data.deptName, + "orderNum": data.orderNum, + "createTime": data.createTime, + "parentId": data.parentId, + "deptId": data.deptId + }); + }); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + if (name === 'add') { + reset(); + var selected = _deptTree.getChecked(false, true); + if (selected.length > 1) { + febs.alert.warn('只能选择一个节点作为父级!'); + return; + } + form.val("dept-form", { + "parentId": selected[0] ? selected[0].id : '' + }); + } + if (name === 'delete') { + var checked = _deptTree.getChecked(false, true); + if (checked.length < 1) { + febs.alert.warn('请勾选需要删除的部门'); + return; + } + var deptIds = []; + layui.each(checked, function (key, item) { + deptIds.push(item.id) + }); + febs.modal.confirm('提示', '当您点击确定按钮后,这些记录将会被彻底删除,如果其包含子记录,也将一并删除!', function () { + febs.get(ctx + 'dept/delete/' + deptIds.join(','), null, function () { + febs.alert.success('删除成功!'); + reloadDeptTree(); + reset(); + }) + }); + } + if (name === 'export') { + febs.download(ctx + 'dept/excel', getQueryParams(), '部门信息表.xlsx'); + } + }, + options: [{ + name: 'add', + title: '新增部门', + perms: 'dept:add' + }, { + name: 'delete', + title: '删除部门', + perms: 'dept:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'dept:export' + }] + }); + + $view.on('click', '#submit', function () { + $view.find('#submit-form').trigger('click'); + }); + + $reset.on('click', function () { + $deptName.val(''); + reloadDeptTree(); + reset(); + }); + + $query.on('click', function () { + reloadDeptTree(); + }); + + function getQueryParams() { + return { + "deptName": $deptName.val().trim() + } + } + + function reset() { + $header.text('新增部门'); + $view.find('#reset-form').trigger('click'); + } + + function renderDeptTree() { + _deptTree = eleTree.render({ + elem: '.dept-tree', + url: ctx + 'dept/tree', + accordion: true, + highlightCurrent: true, + showCheckbox: true, + checkStrictly: true, + renderAfterExpand: false, + where: { + "deptName": $deptName.val().trim(), + "invalidate_ie_cache": new Date() + }, + request: { + name: 'name', + key: "id", + checked: "checked", + data: 'data' + }, + response: { + statusName: "code", + statusCode: 200, + dataName: "data" + } + }); + return _deptTree; + } + + function reloadDeptTree() { + _deptTree = renderDeptTree(); + } + + form.on('submit(dept-form-submit)', function (data) { + if (data.field.deptId && $header.text().indexOf('修改') !== -1) { + if (febs.nativeEqual(data.field, _currentDeptData)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'dept/update', data.field, function () { + febs.alert.success('修改成功'); + reloadDeptTree(); + reset(); + }) + } else { + febs.post(ctx + 'dept', data.field, function () { + febs.alert.success('新增成功'); + reloadDeptTree(); + reset(); + }) + } + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/menu/menu.html b/src/main/resources/templates/febs/views/system/menu/menu.html new file mode 100644 index 0000000..aa28b7e --- /dev/null +++ b/src/main/resources/templates/febs/views/system/menu/menu.html @@ -0,0 +1,337 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-menu" lay-title="菜单管理"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="menu-table-form" id="menu-table-form"> + <div class="layui-row"> + <div class="layui-col-md8 layui-col-sm9 layui-col-xs9"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">名称</label> + <div class="layui-input-inline"> + <input type="text" name="menuName" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md4 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="menu:add,menu:delete,menu:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <div class="eleTree menuTree" lay-filter="menuTree" style="margin-left: 1rem"></div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header" id="form-header">新增菜单</div> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" action="" lay-filter="menu-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">ID:</label> + <div class="layui-input-block"> + <input type="text" name="menuId" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">上级ID:</label> + <div class="layui-input-block"> + <input type="text" value="" name="parentId" readonly class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">名称:</label> + <div class="layui-input-block"> + <input type="text" name="menuName" autocomplete="off" class="layui-input" + minlength="2" maxlength="10" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">类型:</label> + <div class="layui-input-block"> + <input type="radio" name="type" lay-filter="menu-type" value="0" title="菜单" checked=""> + <input type="radio" name="type" lay-filter="menu-type" value="1" title="按钮"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">图标:</label> + <div class="layui-input-block"> + <input type="text" name="icon" autocomplete="off" class="layui-input" + maxlength="50" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">URL:</label> + <div class="layui-input-block"> + <input type="text" name="url" autocomplete="off" class="layui-input" + maxlength="50" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">权限:</label> + <div class="layui-input-block"> + <input type="text" name="perms" autocomplete="off" class="layui-input" + maxlength="50" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">排序:</label> + <div class="layui-input-block"> + <input type="text" name="orderNum" autocomplete="off" class="layui-input" + lay-verify="number"> + </div> + </div> + <button type="reset" class="layui-btn febs-hide" id="reset-form"></button> + <button class="layui-btn febs-hide" lay-submit="" lay-filter="menu-form-submit" + id="submit-form"></button> + </form> + </div> + <div class="layui-card-footer"> + <button class="layui-btn" id="submit">保存</button> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'febs', 'form', 'eleTree', 'validate'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + validate = layui.validate, + eleTree = layui.eleTree, + dropdown = layui.dropdown, + $view = $('#febs-menu'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $submit = $view.find('#submit'), + $searchForm = $view.find('#menu-table-form'), + $menuName = $searchForm.find('input[name="menuName"]'), + $type = $view.find('input[type="radio"][name="type"]'), + $icon = $view.find('input[name="icon"]'), + $icon_parent = $icon.parents('.layui-form-item'), + $url = $view.find('input[name="url"]'), + $url_parent = $url.parents('.layui-form-item'), + $order = $view.find('input[name="orderNum"]'), + $order_parent = $order.parents('.layui-form-item'), + $header = $view.find('#form-header'), + _currentMenuData, + _selectNode, + _menuTree, + tableIns; + + form.verify(validate); + form.render(); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + if (name === 'add') { + reset(); + var selected = _menuTree.getChecked(false, true); + if (selected.length > 1) { + febs.alert.warn('只能选择一个节点作为父级!'); + return; + } + if (selected[0] && selected[0].type === '1') { + febs.alert.warn('不能选择按钮作为父级!'); + return; + } + form.val("menu-form", { + "parentId": selected[0] ? selected[0].id : '' + }); + } + if (name === 'delete') { + var checked = _menuTree.getChecked(false, true); + if (checked.length < 1) { + febs.alert.warn('请勾选需要删除的菜单或按钮'); + return; + } + var menuIds = []; + layui.each(checked, function (key, item) { + menuIds.push(item.id) + }); + febs.modal.confirm('提示', '当您点击确定按钮后,这些记录将会被彻底删除,如果其包含子记录,也将一并删除!', function () { + febs.get(ctx + 'menu/delete/' + menuIds.join(','), null, function () { + febs.alert.success('删除成功!'); + reloadMenuTree(); + reset(); + }) + }); + } + if (name === 'export') { + febs.download(ctx + 'menu/excel', { + "menuName": $menuName.val().trim() + }, '菜单信息表.xlsx'); + } + }, + options: [{ + name: 'add', + title: '新增', + perms: 'menu:add' + }, { + name: 'delete', + title: '删除', + perms: 'menu:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'menu:export' + }] + }); + + _menuTree = renderMenuTree(); + + eleTree.on("nodeClick(menuTree)", function (d) { + var data = d.data.currentData.data; + _currentMenuData = data; + $type.attr("disabled", true); + var type = data.type; + handleTypeChange(type); + if (type === '0') { // 菜单 + $header.text('修改菜单'); + } else { // 按钮 + $header.text('修改按钮'); + } + form.val("menu-form", { + "icon": data.icon, + "url": data.url, + "orderNum": data.orderNum, + "type": data.type, + "menuName": data.menuName, + "perms": data.perms, + "parentId": data.parentId, + "menuId": data.menuId + }); + }); + + form.on("radio(menu-type)", function (data) { + handleTypeChange(data.value); + }); + + $reset.on('click', function () { + $menuName.val(''); + reloadMenuTree(); + reset(); + }); + + $query.on('click', function () { + reloadMenuTree(); + reset(); + }); + + $submit.on('click', function () { + $view.find('#submit-form').trigger('click'); + }); + + $icon.focus(function () { + febs.modal.open('图标选择', 'others/febs/icon', { + btn: ['确定'], + yes: function () { + var icon = $('#febs-icon').find('.icon-active .icon-name').text(); + if (icon) { + form.val("menu-form", { + "icon": 'layui-icon-' + icon + }); + } else { + form.val("menu-form", { + "icon": '' + }); + } + layer.closeAll(); + } + }); + }); + + function reset() { + $view.find('#reset-form').trigger('click'); + handleTypeChange('0'); + $type.removeAttr("disabled"); + } + + function renderMenuTree() { + _menuTree = eleTree.render({ + elem: '.menuTree', + url: ctx + 'menu/tree', + where: { + "menuName": $menuName.val().trim(), + "invalidate_ie_cache": new Date() + }, + accordion: true, + highlightCurrent: true, + showCheckbox: true, + checkStrictly: true, + renderAfterExpand: false, + request: { + name: "title", + key: "id", + children: "childs", + checked: "checked", + data: "data" + }, + response: { + statusName: "code", + statusCode: 200, + dataName: "data" + } + }); + return _menuTree; + } + + function reloadMenuTree() { + _menuTree = renderMenuTree(); + } + + var handleTypeChange = function (type) { + form.val("menu-form", { + "icon": '', + "url": '', + "orderNum": '' + }); + if (type === '1') { + $header.text('新增按钮'); + $icon_parent.hide(); + $url_parent.hide(); + $order_parent.hide(); + } else { + $header.text('新增菜单'); + $icon_parent.show(); + $url_parent.show(); + $order_parent.show(); + } + }; + + form.on('submit(menu-form-submit)', function (data) { + if (data.field.menuId && $header.text().indexOf('修改') !== -1) { + if (febs.nativeEqual(data.field, _currentMenuData)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'menu/update', data.field, function () { + febs.alert.success('修改成功'); + reloadMenuTree(); + reset(); + }) + } else { + febs.post(ctx + 'menu', data.field, function () { + febs.alert.success('新增成功'); + reloadMenuTree(); + reset(); + }) + } + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/role/role.html b/src/main/resources/templates/febs/views/system/role/role.html new file mode 100644 index 0000000..0db9fae --- /dev/null +++ b/src/main/resources/templates/febs/views/system/role/role.html @@ -0,0 +1,284 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-role" lay-title="角色管理"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md7 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="role-table-form" id="role-table-form"> + <div class="layui-row"> + <div class="layui-col-md9 layui-col-sm9 layui-col-xs9"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">角色名称</label> + <div class="layui-input-inline"> + <input type="text" name="roleName" autocomplete="off" class="layui-input"> + </div> + </div> + </div> + </div> + <div class="layui-col-md3 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="role:add,user:delete,role:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="roleTable" lay-data="{id: 'roleTable'}"></table> + </div> + </div> + </div> + <div class="layui-col-md5 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header" id="form-header">新增角色</div> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" action="" lay-filter="role-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">角色ID:</label> + <div class="layui-input-block"> + <input type="text" name="roleId" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">角色名称:</label> + <div class="layui-input-block"> + <input type="text" name="roleName" autocomplete="off" class="layui-input" minlength="2" + maxlength="10" lay-verify="range"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">角色描述:</label> + <div class="layui-input-block"> + <textarea name="remark" maxlength="50" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">角色权限:</label> + <div class="layui-input-block menu-tree" style="margin-top: .8rem;"></div> + </div> + <div class="layui-form-item febs-hide"> + <button type="reset" class="layui-btn" id="reset-form"></button> + <button class="layui-btn" lay-submit="" lay-filter="role-form-submit" + id="submit-form"></button> + </div> + </form> + </div> + <div class="layui-card-footer"> + <button class="layui-btn" id="submit">保存</button> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="role-option"> + <span shiro:lacksPermission="role:update,role:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="edit" shiro:hasPermission="role:update"><i class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="del" shiro:hasPermission="role:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'febs', 'form', 'eleTree', 'table', 'validate'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + eleTree = layui.eleTree, + dropdown = layui.dropdown, + validate = layui.validate, + $view = $('#febs-role'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $submit = $view.find('#submit'), + $searchForm = $view.find('#role-table-form'), + $header = $view.find('#form-header'), + tableIns; + + form.verify(validate); + form.render(); + + initTable(); + + laydate.render({ + elem: '#createTime', + range: true + }); + + var menuTree = eleTree.render({ + elem: '.menu-tree', + url: ctx + 'menu/tree', + showCheckbox: true, + where: { + "invalidate_ie_cache": new Date() + }, + accordion: true, + checkStrictly: true, + renderAfterExpand: false, + request: { + name: "title", + key: "id", + children: "childs", + checked: "checked", + data: "data" + }, + response: { + statusName: "code", + statusCode: 200, + dataName: "data" + } + }); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + var checkStatus = table.checkStatus('roleTable'); + if (name === 'add') { + resetRoleForm(); + } + if (name === 'delete') { + if (!checkStatus.data.length) { + febs.alert.warn('请选择需要删除的角色'); + } else { + febs.modal.confirm('删除角色', '确定删除所选角色?', function () { + var roleIds = []; + layui.each(checkStatus.data, function (key, item) { + roleIds.push(item.roleId); + }); + deleteRoles(roleIds.join(',')); + }); + } + } + if (name === 'export') { + var params = getQueryParams(); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'role/excel', params, '角色信息表.xlsx'); + } + }, + options: [{ + name: 'add', + title: '新增角色', + perms: 'role:add' + }, { + name: 'delete', + title: '删除角色', + perms: 'role:delete' + }, { + name: 'export', + title: '导出Excel', + perms: 'role:export' + }] + }); + + table.on('tool(roleTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'edit') { + $header.text('修改角色'); + form.val("role-form", { + "roleId": data.roleId, + "roleName": data.roleName, + "remark": data.remark + }); + if (data.menuIds) { + menuTree.setChecked(data.menuIds.split(','), true); + } else { + menuTree.setChecked([], true); + } + } + if (layEvent === 'del') { + febs.modal.confirm('删除角色', '确定删除该角色?', function () { + deleteRoles(data.roleId); + }); + } + }); + + $query.on('click', function () { + resetRoleForm(); + tableIns.reload({where: getQueryParams(), page: {curr: 1}}); + }); + + $reset.on('click', function () { + resetRoleForm(); + $searchForm[0].reset(); + tableIns.reload({where: getQueryParams(), page: {curr: 1}}); + }); + + $submit.on('click', function () { + $view.find('#submit-form').trigger('click'); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'roleTable', + url: ctx + 'role/list', + cols: [[ + {type: 'checkbox'}, + {field: 'roleName', title: '角色名称', minWidth: 120}, + {field: 'remark', title: '角色描述'}, + {field: 'createTime', title: '创建时间', minWidth: 180}, + {title: '操作', toolbar: '#role-option', width: 100} + ]] + }); + } + + function getQueryParams() { + return { + roleName: $searchForm.find('input[name="roleName"]').val().trim(), + invalidate_ie_cache: new Date() + }; + } + + function resetRoleForm() { + $view.find('#reset-form').trigger('click'); + $header.text('新增角色'); + menuTree.setChecked([], true); + menuTree.unExpandAll(); + } + + form.on('submit(role-form-submit)', function (data) { + var selected = menuTree.getChecked(false, true); + var menuIds = []; + layui.each(selected, function (key, item) { + menuIds.push(item.id) + }); + data.field.menuIds = menuIds.join(','); + if (!menuIds.length) { + febs.modal.confirm('提示', '当前角色未授予任何权限,是否继续?', function () { + addOrUpdateRole(data.field); + }); + } else { + addOrUpdateRole(data.field); + } + return false; + }); + + function deleteRoles(roleIds) { + febs.get(ctx + 'role/delete/' + roleIds, null, function () { + febs.alert.success('删除角色成功'); + $query.trigger('click'); + }) + } + + var addOrUpdateRole = function (data) { + if (data.roleId && $header.text() === '修改角色') { + febs.post(ctx + 'role/update', data, function () { + febs.alert.success('修改角色成功'); + $query.trigger('click'); + }); + } else { + febs.post(ctx + 'role', data, function () { + febs.alert.success('新增角色成功'); + $query.trigger('click'); + }); + } + } + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/avatar.html b/src/main/resources/templates/febs/views/system/user/avatar.html new file mode 100644 index 0000000..646ba7a --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/avatar.html @@ -0,0 +1,90 @@ +<style> + #febs-avatar img { + width: 5rem; + border-radius: 50%; + margin: .5rem; + cursor: pointer; + } + + #febs-avatar .layui-tab-item { + margin-left: 1rem; + } +</style> +<div class="layui-tab layui-tab-brief" id="febs-avatar" lay-filter="avatar-tab"> + <ul class="layui-tab-title"> + <li class="layui-this">后田花子</li> + <li>阿里系</li> + <li>脸萌</li> + </ul> + <div class="layui-tab-content"> + <div class="layui-tab-item layui-show"> + <img data-th-src="@{febs/images/avatar/1d22f3e41d284f50b2c8fc32e0788698.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4d9.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/2dd7a2d09fa94bf8b5c52e5318868b4df.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/8f5b60ef00714a399ee544d331231820.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/17e420c250804efe904a09a33796d5a10.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/17e420c250804efe904a09a33796d5a16.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/87d8194bc9834e9f8f0228e9e530beb1.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/496b3ace787342f7954b7045b8b06804.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/595ba7b05f2e485eb50565a50cb6cc3c.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/964e40b005724165b8cf772355796c8c.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b987.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/5997fedcc7bd4cffbd350b40d1b5b9824.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/a3b10296862e40edb811418d64455d00.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/a43456282d684e0b9319cf332f8ac468.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/bba284ac05b041a8b8b0d1927868d5c9x.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/c7c4ee7be3eb4e73a19887dc713505145.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/ff698bb2d25c4d218b3256b46c706ece.jpeg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/default.jpg}" title="点击更换"> + </div> + <div class="layui-tab-item"> + <img data-th-src="@{febs/images/avatar/BiazfanxmamNRoxxVxka.png}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/cnrhVkzwxjPwAaCfPbdc.png}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/gaOngJwsRYRaVAuXXcmB.png}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/jZUIxmJycoymBprLOUbT.png}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/ubnKSIfAJTxIgXOKlciN.png}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/WhxKECPNujWoWEFNdnJE.png}" title="点击更换"> + </div> + <div class="layui-tab-item"> + <img data-th-src="@{febs/images/avatar/20180414165920.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165927.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165754.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165815.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165821.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165827.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165834.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165840.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165846.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165855.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165909.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165914.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165936.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165942.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165947.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414165955.jpg}" title="点击更换"> + <img data-th-src="@{febs/images/avatar/20180414170003.jpg}" title="点击更换"> + </div> + </div> +</div> +<script> + layui.use(['element', 'jquery', 'febs'], function () { + var $ = layui.jquery, + element = layui.element, + febs = layui.febs, + $view = $('#febs-avatar'); + + $view.find('img').each(function () { + var $this = $(this); + $this.on('click', function () { + var $that = $(this); + var target_src = $that.attr("src").replace('febs/images/avatar/', ''); + febs.get(ctx + 'user/avatar/' + target_src, null, function () { + layui.layer.closeAll(); + febs.modal.confirm('修改成功','是否马上刷新页面生效?',function () { + window.location.reload(); + }); + }) + }) + }) + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/passwordUpdate.html b/src/main/resources/templates/febs/views/system/user/passwordUpdate.html new file mode 100644 index 0000000..9d4ceed --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/passwordUpdate.html @@ -0,0 +1,56 @@ +<div class="layui-fluid" id="user-password-update"> + <form class="layui-form" action="" lay-filter="password-update-form"> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">原密码:</label> + <div class="layui-input-block"> + <input type="password" name="oldPassword" lay-verify="required" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">新密码:</label> + <div class="layui-input-block"> + <input type="password" name="newPassword" minlength="6" lay-verify="range" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">密码确认:</label> + <div class="layui-input-block"> + <input type="password" name="confirmPassword" minlength="6" lay-verify="range" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="password-update-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script> + layui.use(['febs', 'form', 'validate', 'layer'], function () { + var $ = layui.$, + validate = layui.validate, + form = layui.form, + febs = layui.febs, + layer = layui.layer, + $view = $('#user-password-update'); + + form.verify(validate); + form.render(); + + form.on('submit(password-update-form-submit)', function (data) { + if (data.field.newPassword !== data.field.confirmPassword) { + febs.alert.warn('两次密码输入不一致!'); + return false; + } + febs.post(ctx + 'user/password/update', data.field, function (r) { + layer.closeAll(); + febs.modal.success('修改成功', '密码修改成功,请重新登录', function () { + window.location.href = ctx + 'logout'; + }); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/profileUpdate.html b/src/main/resources/templates/febs/views/system/user/profileUpdate.html new file mode 100644 index 0000000..faad77d --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/profileUpdate.html @@ -0,0 +1,110 @@ +<style> + #profile-update { + padding: 20px 25px 25px 0; + } + + #profile-update .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } +</style> +<div class="layui-fluid" id="profile-update"> + <form class="layui-form" action="" lay-filter="profile-update-form"> + <div class="layui-form-item"> + <label class="layui-form-label">用户名:</label> + <div class="layui-input-block"> + <input type="text" name="username" readonly class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">手机:</label> + <div class="layui-input-block"> + <input type="tel" name="mobile" lay-verify="phone" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">邮箱:</label> + <div class="layui-input-block"> + <input type="text" name="email" lay-verify="email" maxlength="50" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">部门:</label> + <div class="layui-input-block"> + <input type="text" name="deptId" id="profile-update-dept" lay-filter="profile-update-dept" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">性别:</label> + <div class="layui-input-block"> + <input type="radio" name="sex" value="0" title="男性"> + <input type="radio" name="sex" value="1" title="女性"> + <input type="radio" name="sex" value="2" title="保密"> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">备注:</label> + <div class="layui-input-block"> + <textarea name="description" maxlength="100" class="layui-textarea"> + </textarea> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="profile-update-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'validate', 'treeSelect'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + treeSelect = layui.treeSelect, + form = layui.form, + user = currentUser, + $view = $('#profile-update'), + validate = layui.validate; + + form.verify(validate); + form.render(); + + initUserValue(); + + treeSelect.render({ + elem: $view.find('#profile-update-dept'), + type: 'get', + data: ctx + 'dept/select/tree', + placeholder: '请选择', + search: false, + success: function () { + treeSelect.checkNode('profile-update-dept', user.deptId); + } + }); + + function initUserValue() { + form.val("profile-update-form", { + "username": user.username, + "mobile": user.mobile, + "email": user.email, + "sex": user.sex, + "description": user.description + }); + } + + form.on('submit(profile-update-form-submit)', function (data) { + if (febs.nativeEqual(data.field, user)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'user/profile/update', data.field, function () { + layer.closeAll(); + febs.modal.confirm('修改成功','是否马上刷新页面生效?',function () { + window.location.reload(); + }); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/user.html b/src/main/resources/templates/febs/views/system/user/user.html new file mode 100644 index 0000000..59720f8 --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/user.html @@ -0,0 +1,315 @@ +<div class="layui-fluid layui-anim febs-anim" id="febs-user" lay-title="用户管理"> + <div class="layui-row febs-container"> + <div class="layui-col-md12"> + <div class="layui-card"> + <div class="layui-card-body febs-table-full"> + <form class="layui-form layui-table-form" lay-filter="user-table-form"> + <div class="layui-row"> + <div class="layui-col-md10"> + <div class="layui-form-item"> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">用户名</label> + <div class="layui-input-inline"> + <input type="text" name="username" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">创建时间</label> + <div class="layui-input-inline"> + <input type="text" name="createTime" id="user-createTime" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">状态</label> + <div class="layui-input-inline"> + <select name="status"> + <option value=""></option> + <option value="0">禁用</option> + <option value="1">有效</option> + </select> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">手机</label> + <div class="layui-input-inline"> + <input type="text" name="mobile" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">部门</label> + <div class="layui-input-inline"> + <input type="text" name="dept" id="dept" lay-filter="dept" + class="layui-input"> + </div> + </div> + <div class="layui-inline"> + <label class="layui-form-label layui-form-label-sm">性别</label> + <div class="layui-input-inline"> + <select name="sex"> + <option value=""></option> + <option value="0">男</option> + <option value="1">女</option> + <option value="2">保密</option> + </select> + </div> + </div> + </div> + </div> + <div class="layui-col-md2 layui-col-sm12 layui-col-xs12 table-action-area"> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-blue-plain table-action" id="query"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary febs-button-green-plain table-action" id="reset"> + <i class="layui-icon"></i> + </div> + <div class="layui-btn layui-btn-sm layui-btn-primary table-action action-more" + shiro:hasAnyPermissions="user:add,user:update,user:password:reset,user:export"> + <i class="layui-icon"></i> + </div> + </div> + </div> + </form> + <table lay-filter="userTable" lay-data="{id: 'userTable'}"></table> + </div> + </div> + </div> + </div> +</div> +<script type="text/html" id="user-status"> + {{# + var status = { + 1: {title: '有效', color: 'green'}, + 0: {title: '禁用', color: 'volcano'} + }[d.status]; + }} + <span class="layui-badge febs-bg-{{status.color}}">{{ status.title }}</span> +</script> +<script type="text/html" id="user-sex"> + {{# + var sex = { + 2: {title: '保密'}, + 1: {title: '女'}, + 0: {title: '男'} + }[d.sex]; + }} + <span>{{ sex.title }}</span> +</script> +<script type="text/html" id="user-option"> + <span shiro:lacksPermission="user:view,user:update,user:delete"> + <span class="layui-badge-dot febs-bg-orange"></span> 无权限 + </span> + <a lay-event="detail" shiro:hasPermission="user:view"><i + class="layui-icon febs-edit-area febs-green"></i></a> + <a lay-event="edit" shiro:hasPermission="user:update"><i + class="layui-icon febs-edit-area febs-blue"></i></a> + <a lay-event="del" shiro:hasPermission="user:delete"><i class="layui-icon febs-edit-area febs-red"></i></a> +</script> +<script data-th-inline="none" type="text/javascript"> + layui.use(['dropdown', 'jquery', 'laydate', 'form', 'table', 'febs', 'treeSelect'], function () { + var $ = layui.jquery, + laydate = layui.laydate, + febs = layui.febs, + form = layui.form, + table = layui.table, + treeSelect = layui.treeSelect, + dropdown = layui.dropdown, + $view = $('#febs-user'), + $query = $view.find('#query'), + $reset = $view.find('#reset'), + $searchForm = $view.find('form'), + sortObject = {field: 'createTime', type: null}, + tableIns, + createTimeFrom, + createTimeTo; + + form.render(); + + initTable(); + + laydate.render({ + elem: '#user-createTime', + range: true, + trigger: 'click' + }); + + dropdown.render({ + elem: $view.find('.action-more'), + click: function (name, elem, event) { + var checkStatus = table.checkStatus('userTable'); + if (name === 'add') { + febs.modal.open('新增用户', 'system/user/add', { + btn: ['提交', '重置'], + area: $(window).width() <= 750 ? '95%' : '50%', + offset: '30px', + yes: function (index, layero) { + $('#user-add').find('#submit').trigger('click'); + }, + btn2: function () { + $('#user-add').find('#reset').trigger('click'); + return false; + } + }); + } + if (name === 'delete') { + if (!checkStatus.data.length) { + febs.alert.warn('请选择需要删除的用户'); + } else { + febs.modal.confirm('删除用户', '确定删除该用户?', function () { + var userIds = []; + layui.each(checkStatus.data, function (key, item) { + userIds.push(item.userId) + }); + deleteUsers(userIds.join(',')); + }); + } + } + if (name === 'reset') { + if (!checkStatus.data.length) { + febs.alert.warn('请选择需要重置密码的用户'); + } else { + var usernames = []; + layui.each(checkStatus.data, function (key, item) { + usernames.push(item.username) + }); + febs.post(ctx + 'user/password/reset/' + usernames.join(','), null, function () { + febs.alert.success('所选用户密码已重置为1234qwer'); + }); + } + } + if (name === 'export') { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + params.pageSize = $view.find(".layui-laypage-limits option:selected").val(); + params.pageNum = $view.find(".layui-laypage-em").next().html(); + febs.download(ctx + 'user/excel', params, '用户信息表.xlsx'); + } + }, + options: [{ + name: 'add', + title: '新增用户', + perms: 'user:add' + }, { + name: 'delete', + title: '删除用户', + perms: 'user:delete' + }, { + name: 'reset', + title: '密码重置', + perms: 'user:password:reset' + }, { + name: 'export', + title: '导出Excel', + perms: 'user:export' + }] + }); + + treeSelect.render({ + elem: $view.find('#dept'), + type: 'get', + data: ctx + 'dept/select/tree', + placeholder: '请选择', + search: false + }); + + table.on('tool(userTable)', function (obj) { + var data = obj.data, + layEvent = obj.event; + if (layEvent === 'detail') { + febs.modal.view('用户信息', 'system/user/detail/' + data.username, { + area: $(window).width() <= 750 ? '95%' : '660px' + }); + } + if (layEvent === 'del') { + febs.modal.confirm('删除用户', '确定删除该用户?', function () { + deleteUsers(data.userId); + }); + } + if (layEvent === 'edit') { + febs.modal.open('修改用户', 'system/user/update/' + data.username, { + area: $(window).width() <= 750 ? '90%' : '50%', + offset: '30px', + btn: ['提交', '取消'], + yes: function (index, layero) { + $('#user-update').find('#submit').trigger('click'); + }, + btn2: function () { + layer.closeAll(); + } + }); + } + }); + + table.on('sort(userTable)', function (obj) { + sortObject = obj; + tableIns.reload({ + initSort: obj, + where: $.extend(getQueryParams(), { + field: obj.field, + order: obj.type + }) + }); + }); + + $query.on('click', function () { + var params = $.extend(getQueryParams(), {field: sortObject.field, order: sortObject.type}); + tableIns.reload({where: params, page: {curr: 1}}); + }); + + $reset.on('click', function () { + $searchForm[0].reset(); + treeSelect.revokeNode('dept'); + sortObject.type = 'null'; + createTimeTo = null; + createTimeFrom = null; + tableIns.reload({where: getQueryParams(), page: {curr: 1}, initSort: sortObject}); + }); + + function initTable() { + tableIns = febs.table.init({ + elem: $view.find('table'), + id: 'userTable', + url: ctx + 'user/list', + cols: [[ + {type: 'checkbox'}, + {field: 'username', title: '用户名', minWidth: 100}, + {title: '性别', templet: '#user-sex'}, + {field: 'deptName', title: '部门'}, + {field: 'mobile', title: '手机', minWidth: 165}, + {field: 'email', title: '邮箱', minWidth: 180}, + {title: '状态', templet: '#user-status'}, + {field: 'createTime', title: '创建时间', minWidth: 180, sort: true}, + {title: '操作', toolbar: '#user-option', minWidth: 140} + ]] + }); + } + + function getQueryParams() { + var createTime = $searchForm.find('input[name="createTime"]').val(); + if (createTime) { + createTimeFrom = createTime.split(' - ')[0]; + createTimeTo = createTime.split(' - ')[1]; + } + return { + createTimeFrom: createTimeFrom, + createTimeTo: createTimeTo, + username: $searchForm.find('input[name="username"]').val().trim(), + status: $searchForm.find("select[name='status']").val(), + sex: $searchForm.find("select[name='sex']").val(), + mobile: $searchForm.find("input[name='mobile']").val().trim(), + deptId: $searchForm.find("input[name='dept']").val().trim(), + invalidate_ie_cache: new Date() + }; + } + + function deleteUsers(userIds) { + var currentUserId = currentUser.userId + ''; + if (('' + userIds).split(',').indexOf(currentUserId) !== -1) { + febs.alert.warn('所选用户包含当前登录用户,无法删除'); + return; + } + febs.get(ctx + 'user/delete/' + userIds, null, function () { + febs.alert.success('删除用户成功'); + $query.click(); + }); + } + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/userAdd.html b/src/main/resources/templates/febs/views/system/user/userAdd.html new file mode 100644 index 0000000..da6eb48 --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/userAdd.html @@ -0,0 +1,180 @@ +<style> + #user-add { + padding: 20px 25px 25px 0; + } + #user-add .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #user-add #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #user-add .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } +</style> +<div class="layui-fluid" id="user-add"> + <form class="layui-form" action="" lay-filter="user-add-form"> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">用户名:</label> + <div class="layui-input-block"> + <input type="text" name="username" minlength="2" maxlength="10" lay-verify="range|username" + autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">手机:</label> + <div class="layui-input-block"> + <input type="tel" name="mobile" lay-verify="phone" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">邮箱:</label> + <div class="layui-input-block"> + <input type="text" name="email" lay-verify="email" maxlength="50" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">角色:</label> + <div class="layui-input-block"> + <select name="roleId" + lay-verify="required" + xm-select-direction="down" + xm-select="user-add-role" + xm-select-skin="default"> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">部门:</label> + <div class="layui-input-block"> + <input type="text" name="deptId" id="user-add-dept" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">状态:</label> + <div class="layui-input-block"> + <input type="radio" name="status" value="1" title="有效" checked=""> + <input type="radio" name="status" value="0" title="禁用"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">性别:</label> + <div class="layui-input-block"> + <input type="radio" name="sex" value="0" title="男性"> + <input type="radio" name="sex" value="1" title="女性"> + <input type="radio" name="sex" value="2" title="保密" checked=""> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">数据权限:</label> + <div class="layui-input-block" id="data-permission-tree-block"> + <div class="data-permission-tree" lay-filter="dataPermissionTree" style="margin-left: 1rem"></div> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">备注:</label> + <div class="layui-input-block"> + <textarea name="description" maxlength="100" class="layui-textarea"></textarea> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="user-add-form-submit" id="submit"></button> + <button type="reset" class="layui-btn" id="reset"></button> + </div> + </form> +</div> + +<script> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + eleTree = layui.eleTree, + $view = $('#user-add'), + validate = layui.validate, + _deptTree; + + form.verify(validate); + form.render(); + + formSelects.render(); + renderDeptTree(); + + treeSelect.render({ + elem: $view.find('#user-add-dept'), + type: 'get', + data: ctx + 'dept/select/tree', + placeholder: '请选择', + search: false + }); + + function renderDeptTree() { + _deptTree = eleTree.render({ + elem: $view.find('.data-permission-tree'), + url: ctx + 'dept/tree', + accordion: true, + highlightCurrent: true, + showCheckbox: true, + checkStrictly: true, + renderAfterExpand: false, + request: { + name: 'name', + key: "id", + checked: "checked", + data: 'data' + }, + response: { + statusName: "code", + statusCode: 200, + dataName: "data" + } + }); + return _deptTree; + } + + formSelects.config('user-add-role', { + searchUrl: ctx + 'role', + response: { + statusCode: 200 + }, + beforeSuccess: function (id, url, searchVal, result) { + var data = result.data; + var tranData = []; + for (var i = 0; i < data.length; i++) { + tranData.push({ + name: data[i].roleName, + value: data[i].roleId + }) + } + result.data = tranData; + return result; + }, + error: function (id, url, searchVal, err) { + console.error(err); + febs.alert.error('获取角色列表失败'); + } + }); + + form.on('submit(user-add-form-submit)', function (data) { + var checked = _deptTree.getChecked(false, true); + var deptIds = []; + layui.each(checked, function (key, item) { + deptIds.push(item.id) + }); + data.deptIds = deptIds.join(","); + febs.post(ctx + 'user', data.field, function () { + layer.closeAll(); + febs.alert.success('新增用户成功,初始密码为 1234qwer'); + $('#febs-user').find('#query').click(); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/userDetail.html b/src/main/resources/templates/febs/views/system/user/userDetail.html new file mode 100644 index 0000000..c83eea9 --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/userDetail.html @@ -0,0 +1,72 @@ +<style> + #febs-user-detail #user-img, #febs-user-detail .user-info { + display: inline-block; + float: left; + margin-left: 15px; + } + + #febs-user-detail #user-img img { + width: 7rem; + margin: 10px 10px 0 20px; + border-radius: 50%; + cursor: pointer; + } + + #febs-user-detail #user-info-wrapper { + margin: 0 0 1rem 0; + display: inline-block; + } + + #febs-user-detail .user-info div { + margin: 10px 15px; + max-width: 19rem; + } + + #febs-user-detail #options-wrapper a { + padding: 4px 6px; + color: rgba(0, 0, 0, 0.65); + border: 1px solid #d9d9d9; + border-radius: 2px; + } + + #febs-user-detail #options-wrapper a:hover { + color: #40a9ff; + border-color: #40a9ff; + } + +</style> +<div class="layui-fluid" id="febs-user-detail" lay-title="个人信息"> + <div id="user-info-wrapper"> + <div id="user-img"> + <img alt="头像" title="点我更换头像" data-th-src="@{febs/images/avatar/}+${user.avatar}"> + </div> + <div class="user-info"> + <div><span class="layui-icon layui-icon-user"></span> 账号: + [[${user.username}]] + </div> + <div><span class="layui-icon layui-icon-trophy"></span> 角色: + [[${#strings.defaultString(user.roleName,'暂无角色信息')}]] + </div> + <div><span class="layui-icon layui-icon-home"></span> 部门: + [[${#strings.defaultString(user.deptName,'无部门信息')}]] + </div> + <div><span class="layui-icon layui-icon-skin"></span> 性别: + [[${user.sex}]] + </div> + </div> + <div class="user-info"> + <div><span class="layui-icon layui-icon-phone"></span> 电话: + [[${#strings.defaultString(user.mobile,'无电话信息')}]] + </div> + <div><span class="layui-icon layui-icon-mail"></span> 邮箱: + [[${#strings.defaultString(user.email,'无邮箱信息')}]] + </div> + <div><span class="layui-icon layui-icon-time-circle"></span> 最后登录时间: + [[${#strings.defaultString(lastLoginTime,'从未登录过系统')}]] + </div> + <div><span class="layui-icon layui-icon-read"></span> 个人简介: + [[${#strings.defaultString(user.description,'暂无个人介绍')}]] + </div> + </div> + </div> +</div> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/userProfile.html b/src/main/resources/templates/febs/views/system/user/userProfile.html new file mode 100644 index 0000000..7ee1cf5 --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/userProfile.html @@ -0,0 +1,204 @@ +<style> + #febs-user-profile #user-profile, #febs-user-profile .user-profile-card { + display: inline-block; + } + + #febs-user-profile #user-img, #febs-user-profile #user-info { + display: inline-block; + float: left; + } + + #febs-user-profile #user-img img { + width: 7rem; + margin: 1rem; + border-radius: 50%; + cursor: pointer; + } + + #febs-user-profile #user-info { + margin: .95rem 0 .95rem 1.2rem; + } + + #febs-user-profile #user-info div { + margin: 3px 0; + max-width: 22rem; + } + + #febs-user-profile #options-wrapper { + text-align: center; + margin-top: .5rem; + } + + #febs-user-profile #update-user-info { + cursor: pointer; + margin-left: -1rem; + } + + #febs-user-profile #options-wrapper a { + padding: 4px 6px; + color: rgba(0, 0, 0, 0.65); + border: 1px solid #d9d9d9; + border-radius: 2px; + } + + #febs-user-profile #options-wrapper a:hover { + color: #40a9ff; + border-color: #40a9ff; + } + + #febs-user-profile .layui-form-item { + margin-bottom: 0; + } +</style> +<div class="layui-fluid layui-anim febs-anim" id="febs-user-profile" lay-title="个人中心"> + <div class="layui-row layui-col-space8 febs-container"> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">个人信息</div> + <div class="layui-card-body user-profile-card"> + <div id="user-profile"> + <div id="user-img"> + <img alt="头像" title="点我更换头像" data-th-src="@{febs/images/avatar/empty.jpg}"> + <div id="options-wrapper"> + <div id="update-user-info"> + <a> + <span class="layui-icon layui-icon-setting"></span> + 编辑资料 + </a> + </div> + </div> + </div> + <script type="text/html" template> + <div id="user-info"> + <div><span class="layui-icon layui-icon-user"></span> 账号: + {{currentUser.username}} + </div> + <div><span class="layui-icon layui-icon-trophy"></span> 角色: + {{currentUser.roleName}} + </div> + <div><span class="layui-icon layui-icon-home"></span> 部门: + {{currentUser.deptName || '暂无所属部门'}} + </div> + <div><span class="layui-icon layui-icon-skin"></span> 性别: + {{# if(currentUser.sex === '0'){ }} + 男 + {{# } }} + {{# if(currentUser.sex === '1'){ }} + 女 + {{# } }} + {{# if(currentUser.sex === '2'){ }} + 保密 + {{# } }} + </div> + <div><span class="layui-icon layui-icon-phone"></span> 电话: + {{currentUser.mobile?currentUser.mobile:'暂无电话信息'}} + </div> + <div><span class="layui-icon layui-icon-mail"></span> 邮箱: + {{currentUser.email?currentUser.email:'暂无电话信息'}} + </div> + <div><span class="layui-icon layui-icon-read"></span> 简介: + {{currentUser.description?currentUser.description:'暂无简介'}} + </div> + </div> + </script> + </div> + </div> + </div> + </div> + <div class="layui-col-md6 layui-col-sm6 layui-col-xs12"> + <div class="layui-card"> + <div class="layui-card-header">系统配置</div> + <div class="layui-card-body"> + <form class="layui-form" action="" lay-filter="system-setting-form"> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 85px">侧边栏风格:</label> + <div class="layui-input-block"> + <input type="radio" name="theme" lay-filter="theme" value="black" checked="" title="深邃"> + <input type="radio" name="theme" lay-filter="theme" value="white" title="明亮"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label" style="width: 85px">选项卡开关:</label> + <div class="layui-input-block"> + <input type="radio" name="isTab" lay-filter="tab" value="1" checked="" title="开启"> + <input type="radio" name="isTab" lay-filter="tab" value="0" title="关闭"> + </div> + </div> + <button class="febs-hide" lay-submit="" lay-filter="system-setting-form-submit" + id="submit-form"></button> + </form> + </div> + <div class="layui-card-footer"> + <button class="layui-btn" id="submit">保存</button> + </div> + </div> + </div> + </div> +</div> +<script data-th-inline="none" type="text/javascript"> + layui.use(['jquery', 'form', 'febs'], function () { + var $ = layui.jquery, + febs = layui.febs, + form = layui.form, + _currentData = { + theme: currentUser.theme, + isTab: currentUser.isTab + }, + $view = $('#febs-user-profile'); + + form.render(); + initSettings(); + + $view.find('#user-img img').attr('src', ctx + "febs/images/avatar/" + currentUser.avatar); + $view.on('click', '#update-user-info', function () { + febs.modal.view('个人信息修改', 'user/profile/update', { + area: $(window).width() <= 750 ? '90%' : '50%', + btn: ['确定'], + yes: function () { + $('#profile-update').find('#submit').trigger('click'); + } + }); + }); + + $view.on('click', '#user-profile img', function () { + febs.modal.view('点击更换', 'user/avatar', { + area: $(window).width() <= 750 ? '90%' : '650px', + offset: '100px' + }); + }); + + $view.on('click', '#submit', function () { + $view.find('#submit-form').trigger('click'); + }); + + function initSettings() { + form.val("system-setting-form", _currentData); + } + + form.on("radio(theme)", function (data) { + var $sidebar = $('#app-sidebar'); + if (data.value === 'black') { + $sidebar.removeClass('febs-theme-white'); + } + if (data.value === 'white') { + $sidebar.addClass('febs-theme-white'); + } + }); + + form.on('submit(system-setting-form-submit)', function (data) { + if (febs.nativeEqual(data.field, _currentData)) { + febs.alert.warn('数据未作任何修改'); + return false; + } + febs.post(ctx + 'user/theme/update', data.field, function () { + _currentData = data.field; + febs.modal.confirm('修改成功','是否马上刷新页面生效?',function () { + window.location.reload(); + }); + }); + return false; + }); + + + }) +</script> \ No newline at end of file diff --git a/src/main/resources/templates/febs/views/system/user/userUpdate.html b/src/main/resources/templates/febs/views/system/user/userUpdate.html new file mode 100644 index 0000000..a0a5d3e --- /dev/null +++ b/src/main/resources/templates/febs/views/system/user/userUpdate.html @@ -0,0 +1,216 @@ +<style> + #user-update { + padding: 20px 25px 25px 0; + } + + #user-update .layui-treeSelect .ztree li a, .ztree li span { + margin: 0 0 2px 3px !important; + } + #user-update #data-permission-tree-block { + border: 1px solid #eee; + border-radius: 2px; + padding: 3px 0; + } + #user-add .layui-treeSelect .ztree li span.button.switch { + top: 1px; + left: 3px; + } + +</style> +<div class="layui-fluid" id="user-update"> + <form class="layui-form" action="" lay-filter="user-update-form"> + <div class="layui-form-item febs-hide"> + <label class="layui-form-label febs-form-item-require">用户id:</label> + <div class="layui-input-block"> + <input type="text" name="userId" data-th-value="${user.userId}"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">用户名:</label> + <div class="layui-input-block"> + <input type="text" name="username" minlength="4" maxlength="10" data-th-id="${user.userId}" + lay-verify="range|username" autocomplete="off" class="layui-input" readonly> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">手机:</label> + <div class="layui-input-block"> + <input type="tel" name="mobile" lay-verify="phone" autocomplete="off" class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">邮箱:</label> + <div class="layui-input-block"> + <input type="text" name="email" lay-verify="email" maxlength="50" autocomplete="off" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">角色:</label> + <div class="layui-input-block"> + <select name="roleId" + lay-verify="required" + xm-select-direction="down" + xm-select="user-update-role" + xm-select-skin="default"> + </select> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">部门:</label> + <div class="layui-input-block"> + <input type="text" name="deptId" id="user-update-dept" lay-filter="user-update-dept" + class="layui-input"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">状态:</label> + <div class="layui-input-block"> + <input type="radio" name="status" value="1" title="有效"> + <input type="radio" name="status" value="0" title="禁用"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label febs-form-item-require">性别:</label> + <div class="layui-input-block"> + <input type="radio" name="sex" value="0" title="男性"> + <input type="radio" name="sex" value="1" title="女性"> + <input type="radio" name="sex" value="2" title="保密"> + </div> + </div> + <div class="layui-form-item"> + <label class="layui-form-label">数据权限:</label> + <div class="layui-input-block" id="data-permission-tree-block"> + <div class="data-permission-tree" lay-filter="dataPermissionTree" style="margin-left: 1rem"></div> + </div> + </div> + <div class="layui-form-item layui-form-text"> + <label class="layui-form-label">备注:</label> + <div class="layui-input-block"> + <textarea name="description" maxlength="100" class="layui-textarea"> + </textarea> + </div> + </div> + <div class="layui-form-item febs-hide"> + <button class="layui-btn" lay-submit="" lay-filter="user-update-form-submit" id="submit"></button> + </div> + </form> +</div> + +<script data-th-inline="javascript"> + layui.use(['febs', 'form', 'formSelects', 'validate', 'treeSelect', 'eleTree'], function () { + var $ = layui.$, + febs = layui.febs, + layer = layui.layer, + formSelects = layui.formSelects, + treeSelect = layui.treeSelect, + form = layui.form, + eleTree = layui.eleTree, + user = [[${user}]], + $view = $('#user-update'), + validate = layui.validate, + _deptTree; + + form.verify(validate); + form.render(); + + initUserValue(); + renderDeptTree(); + + formSelects.render(); + + function renderDeptTree() { + _deptTree = eleTree.render({ + elem: $view.find('.data-permission-tree'), + url: ctx + 'dept/tree', + accordion: true, + highlightCurrent: true, + showCheckbox: true, + checkStrictly: true, + renderAfterExpand: false, + request: { + name: 'name', + key: "id", + checked: "checked", + data: 'data' + }, + response: { + statusName: "code", + statusCode: 200, + dataName: "data" + }, + done: function (r) { + _deptTree.setChecked(user.deptIds.split(","), true); + } + }); + return _deptTree; + } + + treeSelect.render({ + elem: $view.find('#user-update-dept'), + type: 'get', + data: ctx + 'dept/select/tree', + placeholder: '请选择', + search: false, + success: function () { + treeSelect.checkNode('user-update-dept', user.deptId); + } + }); + + formSelects.config('user-update-role', { + searchUrl: ctx + 'role', + response: { + statusCode: 200 + }, + beforeSuccess: function (id, url, searchVal, result) { + var data = result.data; + var tranData = []; + for (var i = 0; i < data.length; i++) { + tranData.push({ + name: data[i].roleName, + value: data[i].roleId + }) + } + result.data = tranData; + return result; + }, + success: function () { + formSelects.value('user-update-role', user.roleId.split(',')); + }, + error: function (id, url, searchVal, err) { + console.error(err); + febs.alert.error('获取角色列表失败'); + } + }); + + function initUserValue() { + form.val("user-update-form", { + "username": user.username, + "mobile": user.mobile, + "email": user.email, + "status": user.status, + "sex": user.sex, + "description": user.description + }); + } + + form.on('submit(user-update-form-submit)', function (data) { + var checked = _deptTree.getChecked(false, true); + var deptIds = []; + layui.each(checked, function (key, item) { + deptIds.push(item.id) + }); + data.field.deptIds = deptIds.join(","); + if (febs.nativeEqual(data.field, user)) { + febs.alert.warn('数据未作任何修改!'); + return false; + } + febs.post(ctx + 'user/update', data.field, function () { + layer.closeAll(); + febs.alert.success(user.username + ' 用户数据修改成功'); + $('#febs-user').find('#query').click(); + }); + return false; + }); + }); +</script> \ No newline at end of file diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html new file mode 100644 index 0000000..6917391 --- /dev/null +++ b/src/main/resources/templates/index.html @@ -0,0 +1,41 @@ +<!DOCTYPE html> +<html xmlns:th="http://www.thymeleaf.org" + xmlns:shiro="http://www.pollix.at/thymeleaf/shiro"> +<head> + <meta charset="utf-8"> + <title>FEBS 权限系统</title> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> + <meta name="renderer" content="webkit"> + <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> + <meta name="viewport" + content="width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0, user-scalable=0"> + <link rel="stylesheet" th:href="@{layui/css/layui.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/febs.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/eleTree.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/apexcharts.min.css}" media="all"> + <link rel="stylesheet" th:href="@{febs/css/formSelects-v4.css}" media="all"> + <!-- 高德地图,key为演示作用,请勿滥用--> + <script src="https://webapi.amap.com/maps?v=1.4.15&key=0e8a587317998a5e03cf608649b229d6&plugin=AMap.Autocomplete"></script> + <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/> +</head> +<body> +<div id="febs"></div> +<script th:src="@{layui/layui.js}"></script> +<script th:inline="javascript"> + var ctx = [[@{/}]]; + var currentUser = [[${user}]]; + currentUser.roleSet = [[${roles}]]; + currentUser.permissionSet = [[${permissions}]]; + + layui.config({ + base: './febs/', + debug: true + }).extend({ + formSelects: 'lay/extends/formSelects-v4.min', + treeSelect: 'lay/extends/treeSelect', + apexcharts: 'lay/extends/apexcharts.min', + eleTree: 'lay/extends/eleTree' + }).use(['index']); +</script> +</body> +</html> \ No newline at end of file -- Gitblit v1.9.1