From f8c3a9e7942dd3c649d88a2b0d2e4e757636c40a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=81=9A=E4=B8=AA=E6=9C=89=E7=94=A8=E7=9A=84=E4=BA=BA?= <819389547@qq.com> Date: Fri, 23 Feb 2024 15:54:52 +0800 Subject: [PATCH] first commit --- .gitignore | 47 + LICENSE | 20 + README.md | 18 + pom.xml | 195 ++++ ruoyi-admin/bin/gop-sdk-Java1701065323525.jar | Bin 0 -> 2750272 bytes ruoyi-admin/pom.xml | 83 ++ .../main/java/com/ruoyi/RuoYiApplication.java | 30 + .../com/ruoyi/RuoYiServletInitializer.java | 18 + .../monitor/SysOperlogController.java | 50 + .../controller/system/SysUserController.java | 43 + .../web/controller/tool/TestController.java | 183 +++ .../ruoyi/web/core/config/SwaggerConfig.java | 125 ++ .../META-INF/spring-devtools.properties | 1 + .../src/main/resources/application-druid.yml | 54 + .../src/main/resources/application.yml | 90 ++ ruoyi-admin/src/main/resources/banner.txt | 24 + .../main/resources/i18n/messages.properties | 38 + ruoyi-admin/src/main/resources/logback.xml | 93 ++ .../main/resources/mybatis/mybatis-config.xml | 20 + ruoyi-common/pom.xml | 119 ++ .../ruoyi/common/annotation/Anonymous.java | 19 + .../ruoyi/common/annotation/DataSource.java | 28 + .../java/com/ruoyi/common/annotation/Log.java | 51 + .../ruoyi/common/annotation/RateLimiter.java | 40 + .../ruoyi/common/annotation/RepeatSubmit.java | 31 + .../com/ruoyi/common/config/RuoYiConfig.java | 122 ++ .../ruoyi/common/constant/CacheConstants.java | 44 + .../com/ruoyi/common/constant/Constants.java | 160 +++ .../ruoyi/common/constant/GenConstants.java | 117 ++ .../com/ruoyi/common/constant/HttpStatus.java | 94 ++ .../common/constant/ScheduleConstants.java | 50 + .../ruoyi/common/constant/UserConstants.java | 78 ++ .../core/controller/BaseController.java | 168 +++ .../ruoyi/common/core/domain/AjaxResult.java | 216 ++++ .../ruoyi/common/core/domain/BaseEntity.java | 118 ++ .../java/com/ruoyi/common/core/domain/R.java | 115 ++ .../ruoyi/common/core/domain/TreeEntity.java | 79 ++ .../ruoyi/common/core/domain/TreeSelect.java | 77 ++ .../common/core/domain/entity/SysDept.java | 203 ++++ .../core/domain/entity/SysDictData.java | 167 +++ .../core/domain/entity/SysDictType.java | 90 ++ .../common/core/domain/entity/SysMenu.java | 259 +++++ .../common/core/domain/entity/SysRole.java | 233 ++++ .../common/core/domain/entity/SysUser.java | 56 + .../common/core/domain/model/LoginBody.java | 69 ++ .../core/domain/model/RegisterBody.java | 11 + .../ruoyi/common/core/page/PageDomain.java | 101 ++ .../ruoyi/common/core/page/TableDataInfo.java | 85 ++ .../ruoyi/common/core/page/TableSupport.java | 56 + .../ruoyi/common/core/text/CharsetKit.java | 86 ++ .../com/ruoyi/common/core/text/Convert.java | 1006 +++++++++++++++++ .../ruoyi/common/core/text/StrFormatter.java | 92 ++ .../ruoyi/common/enums/BusinessStatus.java | 20 + .../com/ruoyi/common/enums/BusinessType.java | 64 ++ .../ruoyi/common/enums/DataSourceType.java | 19 + .../com/ruoyi/common/enums/HttpMethod.java | 36 + .../com/ruoyi/common/enums/LimitType.java | 20 + .../com/ruoyi/common/enums/OperatorType.java | 24 + .../com/ruoyi/common/enums/UserStatus.java | 30 + .../common/exception/DemoModeException.java | 15 + .../common/exception/GlobalException.java | 58 + .../common/exception/ServiceException.java | 74 ++ .../ruoyi/common/exception/UtilException.java | 26 + .../common/exception/base/BaseException.java | 97 ++ .../common/exception/file/FileException.java | 19 + .../FileNameLengthLimitExceededException.java | 16 + .../file/FileSizeLimitExceededException.java | 16 + .../exception/file/FileUploadException.java | 61 + .../file/InvalidExtensionException.java | 80 ++ .../common/exception/job/TaskException.java | 34 + .../exception/user/BlackListException.java | 16 + .../exception/user/CaptchaException.java | 16 + .../user/CaptchaExpireException.java | 16 + .../common/exception/user/UserException.java | 18 + .../user/UserNotExistsException.java | 16 + .../user/UserPasswordNotMatchException.java | 16 + ...UserPasswordRetryLimitExceedException.java | 16 + .../filter/PropertyPreExcludeFilter.java | 24 + .../ruoyi/common/filter/RepeatableFilter.java | 52 + .../filter/RepeatedlyRequestWrapper.java | 76 ++ .../com/ruoyi/common/filter/XssFilter.java | 75 ++ .../filter/XssHttpServletRequestWrapper.java | 111 ++ .../java/com/ruoyi/common/utils/Arith.java | 114 ++ .../com/ruoyi/common/utils/DateUtils.java | 191 ++++ .../com/ruoyi/common/utils/ExceptionUtil.java | 39 + .../java/com/ruoyi/common/utils/LogUtils.java | 18 + .../com/ruoyi/common/utils/MessageUtils.java | 26 + .../com/ruoyi/common/utils/PageUtils.java | 35 + .../com/ruoyi/common/utils/ServletUtils.java | 218 ++++ .../com/ruoyi/common/utils/StringUtils.java | 638 +++++++++++ .../java/com/ruoyi/common/utils/Threads.java | 99 ++ .../ruoyi/common/utils/bean/BeanUtils.java | 110 ++ .../common/utils/bean/BeanValidators.java | 24 + .../common/utils/file/FileTypeUtils.java | 76 ++ .../common/utils/file/FileUploadUtils.java | 232 ++++ .../ruoyi/common/utils/file/FileUtils.java | 291 +++++ .../ruoyi/common/utils/file/ImageUtils.java | 99 ++ .../common/utils/file/MimeTypeUtils.java | 59 + .../ruoyi/common/utils/html/EscapeUtil.java | 167 +++ .../ruoyi/common/utils/html/HTMLFilter.java | 570 ++++++++++ .../ruoyi/common/utils/http/HttpHelper.java | 55 + .../ruoyi/common/utils/http/HttpUtils.java | 274 +++++ .../ruoyi/common/utils/ip/AddressUtils.java | 56 + .../com/ruoyi/common/utils/ip/IpUtils.java | 382 +++++++ .../com/ruoyi/common/utils/sign/Base64.java | 291 +++++ .../com/ruoyi/common/utils/sign/Md5Utils.java | 67 ++ .../common/utils/spring/SpringUtils.java | 158 +++ .../com/ruoyi/common/utils/sql/SqlUtil.java | 70 ++ .../com/ruoyi/common/utils/uuid/IdUtils.java | 49 + .../java/com/ruoyi/common/utils/uuid/Seq.java | 86 ++ .../com/ruoyi/common/utils/uuid/UUID.java | 484 ++++++++ .../main/java/com/ruoyi/common/xss/Xss.java | 27 + .../com/ruoyi/common/xss/XssValidator.java | 39 + ruoyi-framework/pom.xml | 52 + .../framework/aspectj/DataSourceAspect.java | 72 ++ .../ruoyi/framework/aspectj/LogAspect.java | 245 ++++ .../framework/config/ApplicationConfig.java | 30 + .../ruoyi/framework/config/DruidConfig.java | 126 +++ .../ruoyi/framework/config/FilterConfig.java | 58 + .../ruoyi/framework/config/MyBatisConfig.java | 132 +++ .../framework/config/ResourcesConfig.java | 59 + .../ruoyi/framework/config/ServerConfig.java | 32 + .../framework/config/ThreadPoolConfig.java | 63 ++ .../config/properties/DruidProperties.java | 89 ++ .../properties/PermitAllUrlProperties.java | 73 ++ .../datasource/DynamicDataSource.java | 26 + .../DynamicDataSourceContextHolder.java | 45 + .../ruoyi/framework/manager/AsyncManager.java | 55 + .../framework/manager/ShutdownManager.java | 39 + .../manager/factory/AsyncFactory.java | 46 + .../ruoyi/framework/web/domain/Server.java | 240 ++++ .../framework/web/domain/server/Cpu.java | 101 ++ .../framework/web/domain/server/Jvm.java | 130 +++ .../framework/web/domain/server/Mem.java | 61 + .../framework/web/domain/server/Sys.java | 84 ++ .../framework/web/domain/server/SysFile.java | 114 ++ .../web/exception/GlobalExceptionHandler.java | 126 +++ ruoyi-system/pom.xml | 28 + .../com/ruoyi/system/domain/SysOperLog.java | 250 ++++ .../ruoyi/system/mapper/SysOperLogMapper.java | 48 + .../ruoyi/system/mapper/SysUserMapper.java | 21 + .../system/service/ISysOperLogService.java | 48 + .../ruoyi/system/service/ISysUserService.java | 14 + .../service/impl/SysOperLogServiceImpl.java | 76 ++ .../service/impl/SysUserServiceImpl.java | 40 + .../mapper/system/SysOperLogMapper.xml | 87 ++ .../resources/mapper/system/SysUserMapper.xml | 60 + ry.sh | 86 ++ 148 files changed, 14433 insertions(+) create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 pom.xml create mode 100644 ruoyi-admin/bin/gop-sdk-Java1701065323525.jar create mode 100644 ruoyi-admin/pom.xml create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiApplication.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/RuoYiServletInitializer.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/monitor/SysOperlogController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/controller/tool/TestController.java create mode 100644 ruoyi-admin/src/main/java/com/ruoyi/web/core/config/SwaggerConfig.java create mode 100644 ruoyi-admin/src/main/resources/META-INF/spring-devtools.properties create mode 100644 ruoyi-admin/src/main/resources/application-druid.yml create mode 100644 ruoyi-admin/src/main/resources/application.yml create mode 100644 ruoyi-admin/src/main/resources/banner.txt create mode 100644 ruoyi-admin/src/main/resources/i18n/messages.properties create mode 100644 ruoyi-admin/src/main/resources/logback.xml create mode 100644 ruoyi-admin/src/main/resources/mybatis/mybatis-config.xml create mode 100644 ruoyi-common/pom.xml create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Anonymous.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/DataSource.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/Log.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RateLimiter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/annotation/RepeatSubmit.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/config/RuoYiConfig.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/CacheConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/HttpStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/ScheduleConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/controller/BaseController.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/AjaxResult.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/BaseEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/R.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeEntity.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/TreeSelect.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDept.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictData.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysDictType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysMenu.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysRole.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/PageDomain.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableDataInfo.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/page/TableSupport.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/CharsetKit.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/Convert.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/core/text/StrFormatter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/BusinessType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/DataSourceType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/HttpMethod.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/LimitType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/OperatorType.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/enums/UserStatus.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/DemoModeException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/GlobalException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/ServiceException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/UtilException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/base/BaseException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileNameLengthLimitExceededException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileSizeLimitExceededException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/FileUploadException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/file/InvalidExtensionException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/job/TaskException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/BlackListException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/CaptchaExpireException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserNotExistsException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordNotMatchException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/exception/user/UserPasswordRetryLimitExceedException.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/PropertyPreExcludeFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatableFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/RepeatedlyRequestWrapper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/filter/XssHttpServletRequestWrapper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Arith.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/DateUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/LogUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/MessageUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/PageUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/Threads.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/bean/BeanValidators.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/file/MimeTypeUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/EscapeUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/html/HTMLFilter.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/IpUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Base64.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/spring/SpringUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/IdUtils.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/Seq.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/utils/uuid/UUID.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/Xss.java create mode 100644 ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java create mode 100644 ruoyi-framework/pom.xml create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/LogAspect.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ApplicationConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/DruidConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/FilterConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/MyBatisConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ResourcesConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ServerConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/ThreadPoolConfig.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/DruidProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/PermitAllUrlProperties.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSource.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/datasource/DynamicDataSourceContextHolder.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/AsyncManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/ShutdownManager.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/Server.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Cpu.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Jvm.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Mem.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/Sys.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/domain/server/SysFile.java create mode 100644 ruoyi-framework/src/main/java/com/ruoyi/framework/web/exception/GlobalExceptionHandler.java create mode 100644 ruoyi-system/pom.xml create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/domain/SysOperLog.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysOperLogMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysOperLogService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysOperLogServiceImpl.java create mode 100644 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysOperLogMapper.xml create mode 100644 ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml create mode 100644 ry.sh diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8368a --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +###################################################################### +# Build Tools + +.gradle +/build/ +!gradle/wrapper/gradle-wrapper.jar + +target/ +!.mvn/wrapper/maven-wrapper.jar + +###################################################################### +# IDE + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### JRebel ### +rebel.xml + +### NetBeans ### +nbproject/private/ +build/* +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ + +###################################################################### +# Others +*.log +*.xml.versionsBackup +*.swp + +!*/build/*.java +!*/build/*.html +!*/build/*.xml diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..8564f29 --- /dev/null +++ b/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2018 RuoYi + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..22131f0 --- /dev/null +++ b/README.md @@ -0,0 +1,18 @@ +
+ +
+xSE9ShQ#arkvW*6KEFwokOuR%TAYAQ0(y4gMkMf&m|?LHxab=) zdt_$@clv@wE3{0FUe}T?CvgQe?PDAF#?6dNzvx&QpLSCIeSE{btJ z(=$xA8tw?cHGx^!>HbG2NgI~#uCMr9mG!Z1w*<>u3B>lu_S5EtDbd89`h}DU}rG_WS-B(&$?N5KIW2A;FfhVeU9N|?wULG0~ z!#^pbtAPhMfMTimLOiyYZ_}$zs)KuGmJK^7o$duL#S`>1!+y41h?j66NApBMKKSRM zF!$!ptDt9?;ISknNf=!O07k81uezm5v?s0Us0B4fuA7gHxxQwi;05+q8r&zTpj@bR zT8>WI&Renz3PES_()lNB7+pbua#M--M00w`ad-*&xMN;qrmeAkV?Ivt{RfZ1k9Dev zSwK+cp#WjuzLl?nd4)Q*XU}0w%l?KkkK?GAUxJDE3v}fUFnY&OmC*>(0`787f6|4% zyUrBOP(iigu5a2SqAL1!sT0!mRweIei S0Vfu`*?{zVlr`Or;nti*YY1Rlv z{0>ud3G+GMnc{-_*dzX-QTUK2BcE4=iFGJsfBizBy`GY#YkBt3M{Y#vFbc@Pk;*%q zpE> lB((-k-vUPWHw)6Wd;An!tt}f1C(7yoM zuDJsNDAsewZ4_&ixC9 i_cwBB?-X(4qcNYM zpEX9iPDf;~G}zbk^VctPvt3+*o}Rvu^@Bz1isGU?r}s3_jd ;7-rz#-j<->aLc1=X;!DUZsG%X9SB$$rdBU;Fl0H>eBVNkjrD|ON zkb>6rGNkL %~&V5DV@Jru-G=R7cHq)vHqr%{(G zy&+FRycSJGE&OgMkfg$3sWI(l?5!Q<+pK^<0{F?3XT<$PD~Dr6!c2OhX#G-AftQEh z-X?p!UFYWA6y~RxRC?~OYipF^ijVJ8u`;93q}!W$cXDZ l2T=nyrMud^u zZEOhjTsUM|L|XUT4Rl%UnOyP6z5#+7l;WB=KCkG`#|h@*+1N+WtB@bQ9dCSD>GUmQ z#&56s2K7?v&5hQ7pnPFGYPdF?33KQi>fwiP^5)OA-x_*AzqUyeHKlfWPVWtQg!fHc zC`Wtyc#Epox)?9gJ(8zeVBr+Q#09LZ<_JL)w7DVtWrjW3PDR%cuF(cD#s8kx82wW- zl(4q8bF_mP+@B^0gyhq9j*!5h?QQ|NW%cJa#P~cNJ^sh^w2fSFAh7|qye-YJJh R3IFf#pFL_HI;pSJog z^IH9Xn;w*x1wTA81N#t+Nb}SZ%^6Jy-5zmBt>|iKms3Mv@xjCtEX)CZ$Z}3fpT%NZ zHpvy7G$v(|8%%u{kIDtZc73(@3p7nJtE0GXuPDAsURT1`w8hxlDOhjl0L@Yv>6( zc5j6eg3VTsx>I!Hu5?Sw9Wn|vo8~80)^9wp 01=4jGsAKBjmJiI@!xO@L|44HmjHyS9Fhi)U(mNB1020 zrr@q4&FF0)J;NFj-3w$e=5T?p_;L8|aN!_mH*y_o{A*YB%!y}(dfvI$Y@ti9X;w#j zc7yrxXeW3-IQ8v5_u$mYT8x+iNct``x;*#i+vm%-8kl}dhnWKlT=MPOMPxw?ET3;) zxtu1H=SH5oQls1Ht4JZNAm 0A`^QPou~ ztq @Pj(ks7#EV&hSCMODj7Rldvqo7u2gVYoS?z4;@5Ikw zgzyz9isrnCC@Boksn@j91VbKe@pCD03hAzGF_No zhC7b91te YNl*~JEuJ=s}-|1*JV*Zwns@(a 2R_ Jd z72%vROjrT8C6`vljRx*1T)YoIQmV)B>L6}@6DQlzb`9GQ`odd?N@^jI^TpQ)a3?FN zFIDf7$&77_`?Ol;C)eecnh<)OQ^C@8OfvlOjw%H+K2i-`MMM#C=)wibkrk)fPsa$} zEY&7THByO2P8Z!s9g__KtPxAn8Pm~> D-#N2CQlotA`4qS@}l%M! T?`_d_7! z;uBMN!D+y!uH^z#JrAXakhULKU2oqZe!ykL*0#FIVq>LK0S;b9&89sh%Q}(UnHAi5 zA8Pi+VjTS-S8q-W=Byq~wm)_MNzYDurV2%!uwS9*raxX^BV530s >|MSC$j#jC7 zE010g_6yc|JQcz!`BkF8r^fxTLsVb?cq ~Js`PQ0i4p*?>joXXEBQ#5@Do*JBOvdQSfeZ R#pzN;UmmN3OW{x>b&L= zeLdBBBD7v<0=QST;xLq7`Z0IqC>yp1%h-AWI3pCRcU#~D@T=d6jMUkR`p6*_Q|D=9 zJ=7-j1^k*tXWoQ%v@OGuGVzbYT}D{{+4*DQe1qb1b?L4;%Lk4~McdI7i>_Bxs_=>7 z1y>;|=>;Oz`eKvqI?bdt%JEd|%NzO@)sCZ0o0uxo^vT50ubER_%M-N*tdeQq4!5Px znTg}86~DgMz)2 Nek=o>TbL3f{mddTX z7N;OtBvvlVk1?=ok8PkH52CN@m@O3MZWu21K5?(C-RM8CW4KFS`gvS9{L&TZ$+E9V z=E?Kfwq)Sy`qd6J?_72*VJYrpNzWA}=)V6h{b4r HQtAV;7-jH2WDqX!a zk!SH4=bU}97j88jk413%2s5V-C%e=wB0*p#?$G{-d5zx8BYhN}!nl-Bdy0OSsiBK) zR46(N@s;e!KB-SBRsbx&&F;%dwyv|;AM6bI8mj>wu^gLygBv^!x&!qU3B=C$D2#Kc z>x_8rJ^J##rt-NQ`R|bIX2Z9>WW}5PvdEGEBL)nJMRNTu?e+Ml7OCz6_Hg~9ZlehT zf~@VF?VN37?VN!Ypg*@QeeHnOF77~g7gw;YovSOzT>|9dD)CoZ1WAJ+TOPiD*z4Og zBP|ksyx>GAD-MT?Oi2dTVkfjVN2yI?Ma7Tq%)<(dY|cAG>&$Un9c`_K+zLTD!l|k@ z4@neB6w4>cy_^mPL5?E(rORDGLP9;4&p(b>p|&Dy1jh#wOF2;d4bL3hibjeF Ri`;H$XT%P0j@HMh-F>(%c40a>d zc&9Lg752k&98=H%E{hgiKZTVwPs=`iSOSVk@CHnB#;bE?yK6Wt>yI4?h)3aBE4&yF zV2Uh_T}2kalF+2) p}-Q-m_~sPexCDk^jXtL zY^}*mO57koZW`*lHH|_={HSC!!}j|)_%j^T*au2NXi#+bLkwaj7YY?|4KsNp3lkSH z!MfdM9BR!+J)h1Aq1f1MElwkS?-_WE+;c&_W6$?dg^Khl&c2FYKaVa2J-}4-DAIes zY+z~34m~f6RV_=+X3SFW7*%@Q)%A3`iT?USVA^wG3r*V8^Kpid)cJ)SOFEV})7z 3x^2Fl?U1oQ4LuJQxK;f>||oqESAG~v*-Y#XUBUY+qY*& zpHX#}Qf;)2A3!%I`;A{Wp=nq$n8 z8w#De!hX>N|2ERdR^Lk|ATAO=a}Srt{Lv5n%|g>*%spC2bRSll_x!=WqU(&~6Z(M~ zxCCa>qBJkcGtG1pn$KM8)!?4eeGUCRI@*&3{NwB{D{fhs_kzE;zl-BDJS=}XShgpg zb0-V!#;K7eEXe*%ZvU!kk_5?tF#Wg*|9BDlHIx MT=m{fv$(APsvOai2^!gvT~p(pd*g(L2eNXP?VZUct+#*s%w z&S6_pf&&swF5xFO0CRbO#9c%}`4t4gku0-^;5IY0P-0^;;%13S)ugeDgt#>Te%$wZ z%yGlTWO}-adx~HFfe}1f8w6oMUy=VV(fh|_{Qv47v_KwU2>rIQwQ%?N AEjQE)Ha3fiZ+#^t*Lqim&go%B}Knf80Z?fYeT0zr|$Iq_FmQh z=sx7v?)OU2B);Xgna#^L5PtXb=?NYx(Oe7}w<$f?ZB6$uoy!;GmFD{rBf@QsEb1i; zcZy(Mj?SSxTb OhOWoj;iwvE?6y!b~ z#}U@kL8jRpNf6Y{O?wI@u6+N+-eEhPP}$YMju;_T-=;xrr2&hsl)#;?OC*C#K2$Kl z^_z4)`e1Cv)Qf2iS4=lYAFLUp-XZOc{!fl(vLl|IZ*CaHir1k>-gJ#@i-a^gHYfr< z6Dp;5j(m8N!+RJ|wg!-)Lpu{2VchLLkL#`^1-&pGtD0E1*_5y}S({!wEm7zyC+xnU zrrh?boUEHwZE9Ms;&`)J0)y+7o&6q!?{Utkm#sijIjG*XVt%3FQq#J=b!E&e7@R$Y zKxv=2B(Hr!vDk(tpj~b0qInXc`PQJ?KCnrd53U@AsXOcg4dRJktF}jA6LdF*;zGHQ z$F{;8CWn_zeu{*-kZ_z<+C+@4AcF9LeT~b{nei1JT6E{35(LJq1wj2YsIz21r?X-J zy;C9h`7Sl=@|DXJg}u$RYqLc`Eb7~jfx7n*LUT>8De{r~S1~>^a3ZJP*X`ZWz-amG zk-G*WuTF}^uI7dNqLmH75TosyM!}*I_5Z*`Y_Njz=OXR=#M+c-duc8|COqKp_#H8+ zv7oQVcE5ld_HN!@6zXCK_Up@V+HnlpS7GCs;_hrbf{0V+2O=fZC~teO$*A5gD$Mo7 z2s)5UjmotXzfau}fnhF|91WGcRi~`o`?cWXumOiBc^HkqsEb01Mu-qW#xEHf;-Fk8 zN;=BAu?)xh>5BD4xP^p`gNm|_g5QFiI21k{DtVpN$}Rc&6%n%YSG(6qKI-z6+T+|? z4!@S;qKBk$SRW~ZLdmoQ*?<1#XC0=+KdB(Fr9=8V*xLWou&!d^?f~+Dg!2Ck>R^zg zBgoy##S>C5v#|28^Rn~sg=C R?aU7*r+Js?B{Y5DHhK4Q4Cu~>- z$0fxlc9<3?Q=wPoBTBTle6P|+rf3J657ch?!;jea02qEMSFMn6YDX#NS=3EVmYZ>H zUFc82FebPeC!IMbvkoIMwh-8B0PGzOOR|g@QQ`e6)oiB>yI<$rrk%vdSR^tu1$9_< z%PLHhBqX!P#Mv1(99p`|g|IHc*QS}W82Z*{@zuF+a1c7Onk-I&U{isUqh*vaLe_Rh z6=C?tSF>6sm;GMS?#x-0l@|wj4puCY9z8zlZn}68hp)30k=gZ*_?&!I73LJ$1KF2v zw@{GuBrNM~kHN1K5aF0Svps4~8GA@ISWtvZGtt0`W3WHo)+9^vs<-Oqxp6l*P+Q_< z)*LqO+lm2Ci40qs1bnFA^~*Hc#g{*uarTu7%8`bATCKK@mmz<{GR*ho1+s@0vroui zjTI`ic4G>dcXP(x`G*eaVs&?=vTcMG{*dz(sy2F1zC^J{V?p!h*+wH}=FZWUy@qL9 zQ{Nh+<=bzZCRqfg+Be^I-?k1izV|= G&2_2wT-4 z7K;x%V_~r?T-q+CQ}cae9O&N4A-vV~H~P28N^(wjZ5Eni2N5qTE#@@C4B+!n&~0Gv zLRywhxUP5!d+A2|uxutfT=Uv=2&@g?DCSsHaMykg%L&x%T+3;dBt-S8>k_cb>fYgo zuhs0Bwnug^a2{L&!H|i%J8E>cw!0Z+ZcJhrPusbks&SfntTR+h!Na~^O>*!IFHxNV znbfR@E#8{v2>LGiy|{*NUD@X-c+0q+obt_bF}i~B%u~QA^kP9E8o5$oIokA5x3YPu zdWUwwOZ~+}*-~BXyw2Ma*}Ts&mUl|r8~0r8jOBSPE<-okCe?6GSy}y?q(565XgswH z^-}y;A;k*1oPgYRx6d^X)d|8WC7V;aVjJ74sR)5B=r<~&DHUvqVz*y?15{dM`-I*o zR2s;==l;5+_8vV3SZ|7+4K$IPtyzQTw40Zod$PF^l5czwrr;xla5ospxdxYOb%iBD z8ip4QjkBr1FJDWEBfPsngtlZ)PwbVvrm~4`7{6#Ar|Yi}x5S5Mq}3;xW{3OsSH*#7ezlQMB77ICpYDCquzQV8h##x=-1z^>PU z_f#nD!jnI2756Jc3!PxS#k KdUuHrEK1+WK@mZ1MH_!XeBet!g9s-5wIUiN z#f1JMClNyZdJ}DtDXfZRT*D^;)-GM*nn()?az|~T)*ax)_1av*bXQ^nm_!@LDJiZA zJs!&<--G6!0xvik);0y88`Y--z(S9^b;wb1jWZG)(Dp$VuVXpWv69Xu6000#Rwe |Q XV5UStgm7zj=K9^)|uFteQ2qXbY($f!2sD~tooS^<1!$>C_%=%WE7FkCORhb@>> z(j@w&vPt&1! zdxaHx2;cFof>5D}F$=6C>g5a3t`Sk)Ga7#_=trOMVN%eU+-GBbKmDe%RWG?=jUj~< zdi=kOdD8zl=0P++7B-+?{aOi-f|JT0m;b8Fm!}81;L2e|+29JR&e~XBBNRKmC{oCq zcW>*(dtvX23xk0H?HI=tQqul5OUC=n$~i*&4{aG3ozE0Mpnj<9*j%zDyfsxyx1Rv_ z2y+Y1UAP21KNgDpgb8-pD~Dw}n-eD|chFio6wjsKAho~I&b8SPS*<7tlf^JSC{ie5 zFc_}h0VW?%1!!#3iho1K^O9!3N7qSx7-K=5h{DPW#EmXmbdKFu=M6gNgt=+=zJ2*M z;Dy&)`zrlRnN7HiLMtdt{Zyq7*9Np`5hW-}@-QUr9Z0 Ocf-R#mxoZr-! zzRR&YmB87c6B!?JwOjpTPib-AW1WX7#0d=t;~JD&gcFZ9Zm+MvCKcb5KM^YB>Yg8! z(fU*aqnG8FKCZ-DFg7#FWkf>XlCh(uU!oeOQ76ZiFNm9LjHqC$j(B~Vznuo?_X6T0 zLKBG81D#(pEWZUrg&itc$H`8d)Td-5(NiO?dZ|7PCBvqQ_ +#^P{89B?rh!&kdu96H5TXE)Ye;M@;_`Sf#DmtpxthP2~D zGhcxtrRm4P+ObR8=iCcm=W7>M!Yj6c5L8zLYd7Oz!bP~e5q8P_0PG{*0JgomyzrZ2 z{SHC4B3MlR&-XB7%zR^+$NKGpY$dSl*6+XI3#~Ygtj;$(Z`zZQk#y86`iPW_Nch8> zkc%RVwi>;H`i`|TuxeZRafJ3Bp*|O`Uk7b8lh1hQ6*BjCYUL+qnw>VfSBR@i2VAmh z$H(=|h2|gI+He~`jOGb{!BA4r?hYfTg~9H$fY0WU=%@$qp950q 0zZ)r@MInjOq+&D;g-nBx^YL7zYe3jN^Li&R7onV z2MB+&&gYXbwU|BS1UT5WUKo~Vb4n!C0Wi-Nr?UX8({_o_25RN&t&00ufN7NLdA4|~ z(B2VJQ3N1$`k_Xi){o!azW0&QfGJ4A42$}A&O_(#ork2mg`b_HvWu04qk^;7FAdWl zD!M=R|6}X_)90(#cKD?Md8zeKgvkI?A9_j83SfSiu$A|b4~4XtPxQFX6FkSgthsw= zBhAXAM~5+=p rQBm&$`XSp<6BSn<*mr}UIBIcrTo_g*UGs-Gn|PE zcJJ~lW6O!WwHmbYc~?E2IOgesDGvW)AU98%^x6p$xQz8!9>-pjsC1^MXe=o)LoTpq zwl705k^~L6-7lB&ZM{j2`iD%#UW!}c!8QTp4jGTkr`-dT^QZxjdj(BIiV}=Y`VpJL z03_0L)K8t=bLH+GXkzK6X>Ti4+s *s!9kMUv3+iIXhNN!@%xV%uU(aOcj_iJHn12tugx|CHaC2>zW7f*6 z)R{m+t8CF7ZZMs$K0qq9FZQUs^W8Trezy5ICG|!_-oBF91lrerhxcL$ej=1IiidzR zTBIKJ_PkQPEXrfCPx+B*hWpkSl_9HTV+`}~q$tHhoz~A 07E$~(%hAe!$Mme()sxm7;^JSIyr_4=qiO}nvV3e{&d zht=aXq!4;y>dk$`c}F9Z<4~&UQGCP46eQ_nBkDHZ)iZ|=uW;k!($KtQ8dkt-Nn?R5 z4g^2-c1p^F7|IAfz5jzK@<^Y!ctYyG;qZTF_y1TwD)B#!JV@_O-P0XX)B%Ik+<_qX ze?`vvj7Jwd9lWu*G|@M$+fLrqq1YpG6z{oorH8Lwx7qaToQlg|hwh(UfP_7~t+R!V zQ0}2Lu;4XbM~_Ndm2fU(i3ecCCrZD%N#rUJ=6>w ri6#+7PF{ei7ftzE{18N!CuyBS_?MRn* k1V_?=F#Zqr~Uq2WvHHa|94bScR;4+{1F)WAFD zcXu9PP&G2>vHV0hgEPcyt@@%iQkSPLl+Vg2LIIwSv__vTMv0EURVJf_Ws}! %FHr~__2RX2{UVjLZC-`deLwffPPtn 1kJgbV;fKb8dn+oisL;L)I~a^(veueUP8O>=cHQU_#gAQ_jfzD!L1mfNGtw zoBI@kP5aHQp3RH3eT*qi moZN^cRpb(e1daHrS3~HRzut$ z)24)GGMqYtN}il+Hy+fkr3FS})`je=bH|7*b=r$TlGB*G%=k3ltcAR@Gfplv%(usn zQ((@Yt1Y=JMy#33S-=G70eK(y)&$R>VTGZ8n73@3@HGb$U$(!He;cVc+GU-YUH<7j z#lq0AhA;nP*L81T(_kJqaiz$PPr6ntSpOOr(pA0kftZNc>AZl3-U^r6y-Gmmoxc9( zaNtr+yXo;!eetQBA@xWLwlSZ{c`A~Nt7R21=YekY6EVKkx7A#^Pb$t^dL+UOvqlx& zoc5zGrOu`#F w#w-v_@=d9(}0O+}6qdB3QItUB|}{7iCQ|1?+8*rlG_G?AE; zQc~Kjv_0a9Anw}Q?CY%|MNRK|eNB+w^82ER@QwN84;$z~brN^nmc|7qLs=uEAI|m{ zrF&m!G^*ykQPnB^Y+@K&qb5V(*o)sWhv&rqZ02uY%TSN Z^=U`yE$wtEK)p(v3G%It(mngxyCHZXt6jr(@zJ#_;aWbO2qdE>oiEM zg|tBAL?yeUV>b{r*Jh-Ud@XKgA*`t1Bq==JmEW=di|o^bQ<(o1;atpf;PKtZqaXJ@ z*+Z}lyWfo>qBMv~!YT1087<% u8R9essTtz5l$>NFO1a2oEJ7!J&?20)NB0?a z^V?B2HP$3pztW%xGww0s(J@*OqV!bH+!ZxtPWrrvz@rrjlgu%+M~OhAJsa9oA9j!x zj!%g!L<#b8?1G(iy8MP&bbd>RxF^_FLjlEo)q8)0W^K_x`yJ7?hnAK-Y2wC}L!O}0 z33tJ0G$_2|VFla83mKf?!;JQz0g+Z7h^fG1?2*?4PJv0KG~-mH72+!sfH96EAEehi zC@6!PfOD?bs-dLC5*wf-mcxVJjEhh{34=I186al|`3WQjPh%zRK^@3k$9qfym}$n9 zZb?qkBv_`KrNm{!_}$~+PEsUPlL2FP5PCH{lBb9?t`Bw1<;%OxHExF^UD;S+gdi9z zcqA!48dmEYQ74~>cKrg`avuLASz^{|HUbNawMsstPF@ 7ZhV^A}@pqs)Xj1P&gPPd`AHHp+m2eiRebv$-hIpCPN-PiMgEu zyx} 2M8$^81qcgJ3)Qwwf+jwopYFniNkI|Uov4KnMX^*s<;kzbJIh%YO2Emk z{fc~28HC~?yGJ4@Oafk6&YDpIvY`&@GQk(W8Quqt%4t3b!}ErWSNwNLmd4*FY5$|q z{a5?^cg6;hVtHHmTG}}}TKc*It>wYif8=O?cFwi_)R-9RZs=gyV)yP8v5rF-TEb9D zV7bWP)&$ZnovTMV+VBY*;l28Ik* ElfOXW`?WXk554DP6m<}Yy zZFAwFLr<&$UT}B0YqVfs0?qDm!jW72S~PCdOO44RWy@_OOeuWlYPuEc^Prv9S@_el z&${od-#L97I+cvE4eM8L)*h4S9$%O89^ZY;mYG z@7tva!|Kw&cU8!(nF%k;eKn-Bj3b0o&{1FT sgW@MOPh#8jW%?MDk? UJfU&n*%zP?O?_kMHadDA+cniLX7BHWk1QED5s6G z*mlMg;mbsTM`yg=2=r4S0G68r#$fB{ilD52gfO~9EHVgVb?QFB0j&b }`?ibjdh -~ebN|R@6p}W7tLBbu=cht$PPSQzxV?nICUH51A|y-Fw52&xwK9htUi_lTBy26 zaZC_^@cLGT-|qBn(TSU46RoH8#bi {Nr)Q=1O2JR 7 z_=QRCBSP0w={b$zNRHuRabAfZ*)7}h>wYO8Ab=~0mdk~P3$~Sx3f6!M&w+rQGUWqu zNQ_2uK*o4Wvix$Lyr>co-a(h0Qu8yTCN~ZvFj|BkCz~4=vZ%9|d7zc1^OrtM%^76d?i^5ajEZ#8<_|8T6-|rCw_tGC7C$ zGS!;WZZVCAHH{3#Y0*ia##B7Lq(reu9WJ7`B$_+CIxl;CUpu@J2045fmZD#d@ &cJu+9I41Tg@F(;x`9(&OT |;8H3pVT*{56lij0`B0OaAhaB2eBSQs3OKIKb zhnDhoWEuGg)*-`9ZrBfZDth I!tz?JEq_1VCJU{g+ zJE9-b-fCdUpT~QvB;qh@-P9AVe;-q;KS1c zfFDoDU%z@w)%}QVvd8@0f=J$>i&$~S-x`p1STA gZaPcmCOu8buJ#p{KsElnwgspl2$M;)g{ zEg_E5{#5_Ti7!`$HrrlKQ~HAuTufQarI8U_pR=s)8*>&X1jw&s?$rHM*T>7z#9q&~ zKOBoPIWJbvg}s*`$aKY!@nc^InKjQKr&91rKQq`kIuUf4$aWi6L$t@Ms-z^S76Dr= z`6Wx{dCB@a{~%dAs@mkL|32O&EfRc91D)wM^24+<#-Xy`Ea`h1RAX6a xtKX+v!byA*sqR~KAHB4jV-h;ii 8W)>t3bAg3zoqly{}1bSxBHW` z|7%!D62jvDa`}HGMCEDzzZ`zQjnb5YKgxC0?qi5%jC*h>L%4i3O^!YF$g@(%YCBuk zg{fDg^bhSETji%A%-txi*$?d^4RUdd2ZvtXrth-5&j0ZDR3a0h@Uc=HNJ_FIJRg&> zrwHowuhv3!V5oB#Ro@C} oj(nHKG6#sh47(FYlwxqsThGBG*PszDq{VIE6>uEL%tSGR!X*Fh&d3EJFJwtHZw&f;I*bR}+BbA^s{A_{XOxt3KP#0#nXDQ40e zCs$w3_br=bS9_3}E#J^b?K}Mq=KyQ(2*EBPCb2YeC`$v_M?%YdKg_t3VjvJ>hwuyW zvQHLQ-H#Y#?SoXjO!W}nugr9u)SRs1zW6#AeaL;>BM|Q&PPD3y5gFy%nXs6Ewu`XE z^OIV?|6KH_G3kL6+?RPAfLPHpOJbYPwKCG>k|d; lGviAg8 *A) z;8~>`cM&D?a?x0qh#J*Xw-?VV2j`CW0a*sql1lU%YJBq_MV=5XDD-7%^+T3%@QR0v zI14FcQ}_JP;Y_;1E~3wf5o%{6a^7rB?;+NrzPF{~7U##-bj2qC$bEx<(SdhxLaW)v z)_qCKuw+_x1M*`ZRWH`Io>=mWP7pYc`*yaXXI^Nmn!W;mR5u7RRN9B?gmLgHLjLkX zMuq-W +kN}tSJWqf3B%JT4LpdOpy70H!T(Q5mR5?c%OAE(84fM~EHzl3_l-cH| z{q8 yg!`>s2n}W0F=bIZssJebx0Mv5PlnX!9;9N=Na!yRuFlSnDvC2Un>4xWWMl>JVf$ST0ZAz&h-)EqqiLeIWfd>nlfr8~ycK8Xt0$bseJZ86;waNM zTdc6>raVD)z?S3@Mh`sW&puq%8#_|>>9&kL{oF53HwkV?#*@;!2KsWW=2ZljCw@dA zd|;9zAe5A|ZYEU|VK c$v{)XaPFTWHI8T| zRqh93RLqzl(; !w*7`C%#-8+tA++BU0f(l_yiag~&Gw7ul z;Ae&we4-{0P29ghGQBbH4WV)deBK?!b5`!bTXiix(9B9076?9N-74{+^--Do33a_} zxi#uJj!?Oa(a_}#vnAv41l1pyMU3?-Y&bLPK3VGtid^=i)3j>V+4qRcq)yxX_65QB z)0-$-+jUi;U8jE1O+$6CG{lGo9-(Q?5x-W&RR(= @y W}pwdti{qFQuEMuLsD<^_LLU?bo#SFR%XRp T85$lbaDOe4-_W}0`)lL@G=R`ELmKpuLFo&PL&`?6K_4c z 5pb)?0=u%w$>nMaL?>;40O9F_n47 F{ zlVTzA8%E(Y)HhptaxB7i6NdWQZD!nLZVVN?OrOVcJOdK#z1BbjZrKWAC^cM-_>s+~ zs{*~oxhGCjb}9rhgmcW5XR}%noe*JpShZRH><5jb4lCRGf|tRZ_*w^6wm-DSYoQ~R zb-cn5Ha}X|QT&{nCQzxwfK+ZU;s!cl4X7dc(2zjLkdl~8uVLlVD?KrDbZw9nex@^T zZ}(H|_my2y(=#5dP8h~Bb2zSh(HL(&XbjOcj0<{Kv6xfd06Ki-VoC?@gZZR4#0{ku z8`fC^F~iCjpICXiAY@ppyimL^g6NF~M%1Lpmc+>|=`PzA_bb-5{xH;m9m+4f1R@UT zK}d-uyXd#7M3;+CnDTiUv*8<5qiKU^-wX882713*OYb)00~s({%;B@!!_Y<~jN=Sm zK&8ZsAJzdT1jb|V%ghlKMkRDP55Get1;A;xg_eB;u-5@-h2@zrS|T}5VZ|$`lfH9U z@BNl_kB_|*tbxF3|8L=B`%mHYf0cEsIXl`pgZ?%6@e4sJE %VfAWd;bR+Pl zG^8s?=e8wazc>o{hZu_pD4r>r>5@v61G`%raKfB!xvSHLA38~Z^|C3#X=?D?psc+R z%>F3L`$ph;28)_m&a_YYHuy1rO7`dT-JO{9Ep0xYZ9>7!0>04vRIzE$qLK=`=UdWG zCjx5mB0r{&bJ#^D&b9WwYYMVsco8>C$?AEh?IUg>t9EVU3dTGWQA_z0Tzkp%m!A*y zdJUMlwGzs2)+vas0eM!_$f6Kms&V*b 6PZB$_n8K{@1Xx8DV;Yo^r1tl2bPK~zN ztP{Igq20ik4^GTAx#)Iv)HSKz`&Qnxd6ni586H3%)SlaLYq&94&NyoH#)IKxlC54R z#lXlD_XtPa>~V?5ljEdvvC%znZYW%l@K=97@2Mh4W=r_+ksI0f!=(YiWLo%|?j*t1 z0vXbPw>F6aUI|T|D=u#%hSvXK?5l&~*w%e v=;7)LN*We7U z!2`ja;1USDN%pzto_p)P{dUz*te)=bKc-gq`quZejXqDC!45)iw%CQ~4r2OA$NZn7 zA7|Zt&XQ*pc0KFE4M}c07`FruXj(l>7$z`BI7~K$vk?vDj9WGh)+)u?Z|hv+bmqNg z%^`1w;t5ERVGQYN mba+l_X_eX=~CxqI% xdwp6q@y5 z;nQ;-A_vOVYfR0|GoiNGqeS@8Zq*5Igy+rBrq0u?szSzRUhckY4{tQOkWR)@s8^b3 z;_jjh&s#>@w{})f#h!)pvY1&9-j?&xXEt}L$hC?JDA&{VlYaZbD1z 01BT;a zTLC(guD6IVWvgx9*;UvK9IGrM6$A)#+i$-_{=$T+HOWCmmv4&y8i`{adVcidU4ZC) zehNpRxcZmU*dG=I(zvsh=oc9Y*&G+yb6O|FALf#!($Ttc`qi;p(8ZLCWh#HjemSCJ z_vMK!P>%MFDe(W;T6;9Blj~&77x$BeeR||ZakGsrnn$ooE$jh-E8!hLD!}q4tY;D; zLpD@k6y`CWt5L*q4v WLGsBu=l@)A`vM@i8>{XNqD3J4p!!bmotAI@V{5k{I2m-Cn-@bzb)kjcZ~l5g|1H zVjEa1+!TUMSA-wnAHc%;j2y>%rRiaG)1+K}H!` I*|W>Q-*V#3 z*+~G`U#X~bn%@pWmds&BpdDjk_Rb~edqWAtTVpl2Jn@{o9gnv|{$hgc#Oi$7F>ftW zXJ8#k+xLyGYOW`Cl#%Q3LM>8OUdWOWQD$vVdP}uF8ito3b<9-r=qY8~yf+6p4Gnq9 z0?Tto-__@x6MaSZam>Mc2=O72Tvmv1bf$Ksb1mCi9=BS{#+OKGuR(ohUMyTTng*vP zj!0(K0EcrLu@EAaiEux(0xF*V;j2_{anmoj`_l>|uP`fotlP`zJag?mCNb2vyeH#z zpzdRP1r`^AhO?hbnWh`f9s8XAqnbC}C;a!7L2GHNjcV@K7Uv)9SxbjkG4T0^`Ob`S zJuHgVQUr>};h(W;!`#+C^}ru(+tAKjdw*h&vvoD~{UlR v~|4*x~+70O8rV8iQwX-0LU3A<1m9)L7@v=L-q% zWz*_Hetd>SypdaFQC>YqAk^u6X> zzOj+~BKd;l;vo-jC%`~}+HK?h?(1BrYvIZMY+P>JS27(>>Z570j9k?G$ TX Y65;OZFcLbijaNbSyvlcXV+Vp5W_Fu~}X(v)A{d6#aiZ{*dJs!{`a6Ti-l zg~=&f%rAVND@#;y)V;P3l;Vb62n&!Stj`(t89G zkG6G)5Dm3vT7UhzIS!lV^b0eccBeVWO@(f2P4ZUqtyaC@GS|Zfp{21!Xx+f1J a*ZAI6KxG|LB=eZh+-nrC6^l^x?{Il`7;NZZEQ3mk$Lbxh?@NLvKg(lOptp3`X3 zT*y5~I#+Z8`>_iKf??VLH{)e_!d& W{fB0ZgPG|rb?B#Ql`w^Q1RP-7Qs1CHk_iCvOq$j zqOUNtViW#wAT3n3al>~as|r9^EORt941fbQh&Pfq4-)G>4)(K# VrcP#RG5eFk;c?bpIPtI^>nFz~i z#uDAAA2h3HKFO!JK-FOBG|zd$VdqI`x{fmVt;3QEt7shNQU(~qA(Mva3TqmIf}t16 zLn+gWh?NMiASzmec^{l!NeI{>DiRCXRRC&Y70HEy|DRyEy@fWfh1)U@y-x?U$^a!h z`ur4tYZz|tpw06fFNhEmxkb+t0rDI&8!+wgtmIZfr%QkkflNc}U2LpftN@N~YEUW0 z^?NuFWB^CnX!K16ATJ5PWB_iQ?jlD%vO$}RX%{JJ6>Y*iM#EelM&D!sjKn9n2>}uA zlKxocy)cidFg7y)Xljrb#&rN32on{|c_8Ev4Frfn5t+}xJYt##jzQ2`W0afr{{`?o z(Y!z&fZN{>*nbCu{(lx7aj?UpjfvA=&69s)JmMy GFW170$z0f zocUiRt;WB4esWBT^14v4NT^FqDRthCnzVA7Fwt!sK=>M0E^39n<;v#Pg8y)(^Mop( zbz=PFDd6|J<>#G4F8n0`KB#ksP8_W!4S>uY?c9ja8tt6b7m|XA^ffI?vM}%4rb#au zOZo|cL(WVMvj*KY%OfjX3aAKitSDwt)ziy}1R TA?_t&_I zbmWg$0oh>iC8~H|oE@*sCjte@O*tc2#eluQJJw#BGWT4TE=gQcWtyr?I%{pPsVmJk z!fZu42AXP3m-rothY6uQOo?jQ(Ci?|?V7|zeWaP(!5Kk!u0gV`Ov)8}k38I08#gD7 z! RP^~v5o%@FOSUpEMTxgK95TLnA-wl!vY_##*7a0s zM` vaj~d+A^S>i`BCTykimB81h@?R%@cKboL7PEA3h}2cIqIE-#Jm9#2GItx z7ryWVtyq$yC)%M|IEsE46wauycp4Wpm9GrVO8bRjsE;mv(-)EH_sAY{7Cmno4y etAEZ(ZmD7?R zyhkJaTP)`vYxuxEL*^Dr7GD3|^Z2dH{{vM1*5sQxIs343@v?ETa T$ZU>cGx1+D@RGv %}v1xv#vC6{;*M`jtO|R*!QlmO0rZo+qWWTJJUz|`e_`dfQEAMmdVyrK63(lnK)F;WL)37Ne z`AT!5>WCTHy&VF+->};wbucKGgVm>F7`F1>k8z)a=BlE`oETorg~1v=2J?sD2pnG^ z^uqRO;Tg*kXVGMsiCh&RcFehbOC{;+N`#qZ1DY1@H#+ PE$4 zA PX8hw!0CwliHxSh9f50!9{N(CXT9{I)?i&|BA3zjI9 z*1rz5$tk~j(dx4Ote=E$j&DSOkBv_njue@1go3YuPkNEtIhp21{&+8UpO^b@ri{>L zKr-tG7c#QX3aC)u-`s_LfVd#YU6*-5GRqSm^>MgT_r|0AVS1AuZD{xiXQo}8^m0tM zU-ig8fnE?on#@H&7JQ%!ykv>YhkZX68XF-Ro!-a_MM)a8+XVQ;0xH3ytc8yX6K!EF z6@a3|4q~tqEieI+GJ>MXD2d=!hO(F5ir_&3H5p|XP}F8as*XfWO@ILtyabSms3MEM zNOsVF?^7(!@ M5$Z=vF03O0kZ z{+~zxYn$Q+Zh~O+YRi(0FcW1<+sGrM%G!^psOB=FK`zM>!5@fb6V2hRH@ej`r%-7p z@-yZkS&p&H3qL^k(}W8Ol03Q-@j*{1Xq9#cJbMPT-Wh%P@`4TFIN*cDcEJN_^AHu2 z*KX~48HU_1856^WU#hRdG_^ewCC-he5d1zSGu9f_R(E2CT!R}|#S<5#f%2^(%8@&g z>ocqKD-LYpV2k1+(ei?tagC=^F1Cj;yW+PuT3!h^@<^1&RfX7o#%i$V;f#w0DN;A_ zx+6Nir8qMrO;a{&Ob*7`^wQAZECpAM@$77xs!qZc?TZE{+I80s%Sk7#F%>POj4Xa; z$S#l_-LrnyJ#Tc7YF3ZM@|&XXeRqagLJLGK9bu{?JDPcGO9 lp;zk2)~BrI*lJm{TX8a) zxXFICs(N-nRNhQ$N&URdhARO*n|d%^(J%elKAX2PeLy)qpV{8_Sfa8cir-AO3s+{_ zDsX&y{l+%e(2B2-8z+4Np9o1oGgkfCo#|`3(mi}P9%q7V%m>32qSx<4FwB4+zcJd* zahBo2S6Hu`vq&Lgl> mH^W&m0@4s5M}iG zK%$z1x>a9fF52E%$29=z%x>dUMhE`{CxM-WikAK%)!o&*k;(?vux)9|c~Kyx$<%*7 zoZWDDv7eM!+x9itN4%7Oqasv2B2S;0p4hG%U)HC-@mVfTNtdgnz@pJ}5vf?1T={nE zwCmaYTf5*|>}Jx~hpd5C9#102;LLCz9hm`6Z*J73Eh(bZ2iuGoTqdn{&}AGHzGPc| z@91(5dENN7z|iASS$h6r&SuOhzR>3_>X*z3h(K5|q?&%J^r73e2XPmuhKB^ne0}!~ z<^lc(g{>Fd=P$Nf`!LJ|MqzPwZNZ8JzCGL=-kY3lQQ)8N0KToBVNGW^4tHf3$+2pT zOUvageh?@IgI5C&3eK)T6f$Kfs4t?RPkNd36c=&f{k!>OkD=A2QhnWz4Ex@aMjwXqUWw-HXv*24JMq-3us5 z9S{SSa%5s^Qt+c{_j7c6h%C1<$J<;RlbxH 6Nc49*gPCr;r*X+E%_iOoB>0mQ$ zN^xA%WOctM7!xJ9CZ6{TVUViUieC+AgSo4Mq?Qt@5CibI;f;rQe<$Ku3~<3LdIS5Y zgocGLsx)(80t1SMS4#?+hy)}Q1N>ZpgqTH9Ldp~(T7tlUBNwGeKs9K`Kd3|e5j-Br zDERRnMuo{e+l`0w*UqzGO?*+AEM_xtl&iEClcR1j8e z?xWx53CoY$1mif!N3n O-cr+CkCWoh*U+U7*{BQPE(R!+c~ULN)j^y#ozr2b$75;d{4e1pVEzlmavS) zyx}ywNqLpLQSOmL7Hl87_k>Z5nAV7$MXXLS`eJoo$lG)gjnZxqY+5OZL36g^B6jv^ z)~U2lMf%4Ai<^_Qe*5;%M*(R0^SAZ0_~oj5NiR53eDTGo&7aJOY1kV4;O@ow5YP%) zy=tZF%{FhNJf9A97p$AFGc^)kQT1#L;^ij%tXvOl@3u+mR$J$-iwLdSo9P*a6z3LZ zdgV|#7wj%n@V#Gzzq(!@ zl45k%cW~lwxE(+^s ioa{I0iw#) zHP>`~;FtWa6ODhnh~YGqaPMkt*ZAy5%8u(@ex&P#uQ=b#r?e_&CJHQ(Mzyu-dk6I2 z4#h~dxW!c+5YrlR%vmZOAidp~07;Gc-24ICx3o`avA{LJ-y31s{nMHE-+M+^3owTG zZzk=Zdi!^2t!*#<=ghzD%>PVN@CNcf?LWIyP8_kNae}5PU1BHqZLyf%gmEakh>b%z z1d9 APN4Grm9a()3eXJh5fD}a@5G15Al(90DcKKkWDKFINR 35*8IzE{#iixGPa^$(9vVW8%l`pPYDd zOd&>hF)$#=;Bo^@P$Zmc+)vWfkOyf5a~* G7|3qSMO5!_R$9epB3tsKkodVvNYORuM4)KIY4!@Pfy$t0`6?DN> zOj`Hu&26rqWD|P*jrQblTn+dy9jy~=$Rq+ei#C2(3*aDB;@r~AE ?MJ@t zL{I)3KU%(q1NKeL+ebym%OL4BnBi+;PAKflqv>StUNrt{Y& M);GGz@Q(SFOi|QnnD@JmAnU;n4x*A?iKpcR#u4a4 zX$8;cG9AX9Q65D+!Bf;x|3EWu1rpxxN#j{ewt3$qT&AZ{D33k6v*_-0LFoMD=5Fcs zn*>q3yj59ZUtBkJ6h`~Nrd}!2h4m~!3&inNr*66vdj3LhHREX2WJ(+@dzD2eWYm+y z^LFxW#$>a&^e}T~%>4A@q#wVW{Nij@gs&0V2=)Q-I-^bT*A)#m=+^XFz-xVVRb*Ux zBOUaMSv@L2w-$CUNqZv3IkzbqxwT+3=o$UC3y|lVw5=lw$JC3Xu=5M0=jX67-fJ79 zeqLYm)%)Jpg0M#G-fA>rrq3p$mTi&Y7J3!(*1cv#TveY z4-lVXjiGY1|K=1p1VUUHI(cC46=^Z`YbGn5LKqEjAJaoDxz8A1 k0jskfBj-yrOj8_ylFPUm}A0vC&yOS*@g~7?{5c52yQs(i1rL%;Q?K+cgcqB z;~=7*lrR?H*i1s~^+X-lM5z^kP{XIO5bxzg&UN&X*hHhXfaIsuvKfE`mi qPV}m3 zUW<^0DgdmXol*v1nq~hH0oYu`$*%>LI$u@dnlGUxvWgxPT(2PjZ()kc%*X=&Sn=5P zqjB_tL6BjjzgyCj|LKe6zwE641)~05*1+5aSuj~a!p05ESNIQK`P5%dI2ITqd5jJT zosNFYjG8z`bwhY6i@KQgfW=hPEjeWEXy(I?Za?3E?~eD&Rtb3jsj{?I;GhPAS(|;r zy~1NWjZf>h=j|)x3Y16dQ~p-DzXYb)-9|QFpC9qf>_fgO*1y?*w*pAAhT`zx(4MjX zydvR-JITqhG}{%k50`mA)0MDKovCLnB;v;32UavDV4cSIu_ZqBmsdF(Ax#T%3)`{m z6!rbI63~W=C$8d2;rn4SD-0cm+TPZpg~^oX0p(by|5D&KR8JSL*MbzxyndD3=b2mG z8C-US`)0`YqjF~rJ`ZFSGb&dqv#(~Q{-st 9eT7mr+|Z)C;sl~0Z6BSW z_Qf|ic_*2*m<^k>{xoXt-6~*nwA)u>S`~TJcW+KA@qJiXmbs4b^PBelihWsiFwPU1 zqg66BF+1t>JMo4x-%nXer#7yD V|nbx z+kV_WdFRF*KW&sn(r(6_h#DS)k%9M~pTE|<>87}8gf>9!LGpw@ftotdSoTwryqL_K zE^g`~@~TeM_6W06 d`nJq&dK$!Z1r zNc}a>uYmLhMk{B1 #rrp=Y> zOBF5i`GYO7zJ)%xBTSmOmtGvvWSZHh_3gj5UViL$x}7e_%+F_`6sW{_p^mnD*n`X> z2qQPOR!%iTuQ$1a5D-QX4mYrW_uMDc_W|Zv=)oW7g)HgR1;bOl9~%&>(vN^pn9PFI zPbTM$6~-z@01r9Us=ka4mF-jN3;`3PdrXKyO|$hLgSxyp7kUezc`1MpL9+#mfu=6s zjnI#y=>ij0n0$eSFha9s!D9sdgmsD{gXd3lvC{Yh-EtlMhbx}F69I|kNMEKZRF>Jh z3t^#CO|DJVXX2BNQe0->(7P2{&DcnT^lqouA60fIU&~oKU^uP%al;E4nxTXw<1Fh0 z5E~TXX@LM_4iFcqIjrr}NYJSkpi~y zkzQ-XMjDDy+xRCb1f zVrhZ6hXqQ&Gd_?7)-LBEDU^998kUHnAROgS3XWysQ$;As@=$vq0RJ;ABCrU}71g$8 zBuK)j3(haAD>E6*H58^EEH69)aOdx9p+pwf?2}>@DZ{rbhVX!ej%cp%w&%k^3N%2? zD_aH9T{EmA8Kb!JP=6@SJn+{Qm9(GU&DDnbONBW9l=$fZoX+2mApnLROMo?skfgiv zSVan - z14!GzSjY^ucWQ4$8~8xVlrkxBqsIVY@kwS@fHZETe8{dl&`1^|0dDjNaQ}Hf5Cy~v ztA=dH^osnuPvyiyJUa#M2Dkq0?&u%0cK%(Xih1~0xc-aX23|~lm#6 Tu9VnyW?J&E zG`)SH%b9f V4!T_Z}UYOa1SX2SHAYDwM zp}%B h+II6F7X0R{El--(T0c9T3d+D(ylfbvZ)cnMN*cX8TVm-QKy49(i zuop5uH_Y)O47R@&BvqL&QCh3=Ve(p4M$Gn|_nOH%a~;j%qUVdhD2wo*3?8bW>abkH zQ?$*}zfm~vaw}gc?k0oF8X~K8wrpjQcl}I&ko~OJF^go!E%4=`>C{=+KFf!6mcrT8 zX!bBXbAdnY(sSgk${n(LR%3!-nygJUncGC_q1t)+(3j&1Yqu(^QMC^V?I{4?P@lDa z6F(WwQGM;UlY)=8R%jeXxPd1&o9lJ{e#36%w~#K;U{!N;A%MjXP(m3tSr%%t5-<%% z+M%>XirO~hS!TP4po}^qtW@P1;b#Xkj4a;?g9SMoMd!7w^kvQ5QBWqa8VUJF# 0MliK?BN3Ltb<0Y$_x+1;LKD=xc z+L7>OkmhwVj16dngiFPU~OuZ*atkrzp1_Q%NE|*Sni(>W^dJeUrB$ zwjfEBIUsTSz_yP@MN+eqz0h%hOyrajsEhjgy+LU_lEMHxV96A>=1L>My48`62%4$S z0@@N_CSn-n!(-8F!(-OV%j47wWsbn{`dYAaV$74hG M<@{F4`~Y zPpAxq2CIg^2MhNi6#rv|HGP=bGvt6FxAcM+`Irw75#BZBjD@=Fvd)qKmo2vLjEBmT z(Y6Iegy+u5L_w-*CglUGNDVf=NgCe__P^|_Ey%t|@o5X6Lm)B6L^>u%VCZvYc%Y9B zh=(y+f~);3gkUKCgLMz==!iNTUOeBkIGC;%81DZa*HYz6NI6zpJ}hBE$og!^`a)=| zwCK6nL?|ZU5o1tdfk%b{=}HFKl^Bu}5Jdx0k9|)HiDi!(-07?gofsQZWdpuAj|gav zQxwTsj0xyV#qy4v92TW609Y`B%)ASrGa^ImjVCI>r;K3x%8xuLabZ{HLaL6veh-Gz zb1(tOTk!(dW{WR>AR=UekzPM=ZMpZi?yUb<5dFVu%ipZN-+#Z0%l|?)|NZ1wt0_8x zQ{Vzl_Ct%97;R{qRII uMqq5OGpzH`S-P)B7!5)zA w=yX?YU d*!`6-svW8&PAk;K_C$bDw{r2;IzKVwaHD3_F|T&t=w2ODae zUHVlm$Lp}esJG^q6(lB7WZUO{u=QboDv4&hQTHe^Cs9rPDXE&0FGzo