From bb4737646420592e6462f22e50e642d3c4ef47e9 Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Thu, 23 Mar 2023 20:27:44 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BC=96=E7=A0=81=E7=94=9F=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../coderule/SysCodeRuleController.java | 78 ++++++++ .../coderule/SysCodeRuleDetailController.java | 67 +++++++ .../coderule/ISysCodeRuleDetailService.java | 34 ++++ .../service/coderule/ISysCodeRuleService.java | 54 ++++++ .../service/coderule/dao/SysCodeRule.java | 94 ++++++++++ .../coderule/dao/SysCodeRuleDetail.java | 132 ++++++++++++++ .../dao/mapper/SysCodeRuleDetailMapper.java | 16 ++ .../dao/mapper/SysCodeRuleDetailMapper.xml | 5 + .../dao/mapper/SysCodeRuleMapper.java | 16 ++ .../coderule/dao/mapper/SysCodeRuleMapper.xml | 5 + .../coderule/dto/CodeRuleDetailQuery.java | 22 +++ .../service/coderule/dto/CodeRuleQuery.java | 19 ++ .../impl/SysCodeRuleDetailServiceImpl.java | 80 +++++++++ .../coderule/impl/SysCodeRuleServiceImpl.java | 168 ++++++++++++++++++ .../coderule/utils/CodeRuleTypeEnum.java | 20 +++ .../src/main/java/org/nl/utils/sys.xls | Bin 0 -> 226816 bytes mes/qd/src/views/tools/codeGen/codeDetail.vue | 24 +-- mes/qd/src/views/tools/codeGen/index.vue | 17 +- 18 files changed, 831 insertions(+), 20 deletions(-) create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleDetailController.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleService.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRule.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRuleDetail.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.xml create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleDetailQuery.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleQuery.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java create mode 100644 mes/hd/nladmin-system/src/main/java/org/nl/utils/sys.xls diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleController.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleController.java new file mode 100644 index 00000000..bb9868b6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleController.java @@ -0,0 +1,78 @@ +package org.nl.system.controller.coderule; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.coderule.ISysCodeRuleService; +import org.nl.system.service.coderule.dao.SysCodeRule; +import org.nl.system.service.coderule.dto.CodeRuleQuery; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.*; + +import java.io.IOException; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 编码规则表 前端控制器 + *

+ * + * @author generator + * @since 2022-12-19 + */ +@RestController +@Api(tags = "系统:编码生成") +@RequiredArgsConstructor +@RequestMapping("/api/genCode") +public class SysCodeRuleController { + private final ISysCodeRuleService codeRuleService; + + @ApiOperation("查询编码") + @GetMapping +// @SaCheckPermission("genCode:list") + public ResponseEntity queryAll(CodeRuleQuery form, PageQuery pageable) { + return new ResponseEntity<>(TableDataInfo.build(codeRuleService.queryAll(form, pageable)), HttpStatus.OK); + } + + @Log("新增编码") + @ApiOperation("新增编码") + @PostMapping +// @SaCheckPermission("genCode:add") + public ResponseEntity create(@Validated @RequestBody SysCodeRule codeRule) { + codeRuleService.create(codeRule); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @Log("删除编码") + @ApiOperation("删除编码") + @DeleteMapping +// @SaCheckPermission("genCode:del") + public ResponseEntity delete(@RequestBody Set ids) { + codeRuleService.deleteCodeRule(ids); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("修改编码") + @ApiOperation("修改编码") + @PutMapping +// @SaCheckPermission("genCode:edit") + public ResponseEntity update(@RequestBody SysCodeRule codeRule) { + codeRuleService.updateCodeRule(codeRule); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } + + @ApiOperation("导出任务数据") + @GetMapping(value = "/codeDemo") +// @SaCheckPermission("genCode:list") + public ResponseEntity CodeDemo(@RequestParam Map form) throws IOException { + return new ResponseEntity<>(codeRuleService.codeDemo(form), HttpStatus.OK); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleDetailController.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleDetailController.java new file mode 100644 index 00000000..9c5f04d9 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/controller/coderule/SysCodeRuleDetailController.java @@ -0,0 +1,67 @@ +package org.nl.system.controller.coderule; + + +import cn.dev33.satoken.annotation.SaCheckPermission; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.nl.common.TableDataInfo; +import org.nl.common.anno.Log; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.coderule.ISysCodeRuleDetailService; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; +import org.nl.system.service.coderule.dto.CodeRuleDetailQuery; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +/** + *

+ * 编码规则明细表 前端控制器 + *

+ * + * @author generator + * @since 2022-12-20 + */ +@Api(tags = "系统:编码详情管理") +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/codeDetail") +public class SysCodeRuleDetailController { + private final ISysCodeRuleDetailService codeDetailService; + + @ApiOperation("查询编码明细") + @GetMapping +// @SaCheckPermission("genCode:list") + public ResponseEntity queryAll(CodeRuleDetailQuery form, PageQuery pageable){ + return new ResponseEntity<>(TableDataInfo.build(codeDetailService.queryAll(form,pageable)), HttpStatus.OK); + } + + @Log("新增编码明细") + @ApiOperation("新增编码明细") + @PostMapping +// @SaCheckPermission("genCode:add") + public ResponseEntity create(@RequestBody SysCodeRuleDetail codeRuleDetail){ + codeDetailService.create(codeRuleDetail); + return new ResponseEntity<>(HttpStatus.CREATED); + } + + @Log("删除编码明细") + @ApiOperation("删除编码明细") + @DeleteMapping(value = "/{id}") +// @SaCheckPermission("genCode:del") + public ResponseEntity delete(@PathVariable String id){ + codeDetailService.delete(id); + return new ResponseEntity<>(HttpStatus.OK); + } + + @Log("修改编码明细") + @ApiOperation("修改编码明细") + @PutMapping +// @SaCheckPermission("genCode:edit") + public ResponseEntity update(@RequestBody SysCodeRuleDetail json){ + codeDetailService.update(json); + return new ResponseEntity<>(HttpStatus.NO_CONTENT); + } +} + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java new file mode 100644 index 00000000..5ba06ff8 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleDetailService.java @@ -0,0 +1,34 @@ +package org.nl.system.service.coderule; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; +import org.nl.system.service.coderule.dto.CodeRuleDetailQuery; + +/** + *

+ * 编码规则明细表 服务类 + *

+ * + * @author generator + * @since 2022-12-20 + */ +public interface ISysCodeRuleDetailService extends IService { + + IPage queryAll(CodeRuleDetailQuery form, PageQuery pageable); + + void create(SysCodeRuleDetail codeRuleDetail); + + /** + * 根据id删除 + * @param id + */ + void delete(String id); + + /** + * 修改明细 + * @param json + */ + void update(SysCodeRuleDetail json); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleService.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleService.java new file mode 100644 index 00000000..8b5b8eb7 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/ISysCodeRuleService.java @@ -0,0 +1,54 @@ +package org.nl.system.service.coderule; + +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.IService; +import org.nl.common.domain.query.PageQuery; +import org.nl.system.service.coderule.dao.SysCodeRule; +import org.nl.system.service.coderule.dto.CodeRuleQuery; + +import java.util.Map; +import java.util.Set; + +/** + *

+ * 编码规则表 服务类 + *

+ * + * @author generator + * @since 2022-12-19 + */ +public interface ISysCodeRuleService extends IService { + + /** + * 分页查询 + * @param form + * @param pageable + * @return + */ + IPage queryAll(CodeRuleQuery form, PageQuery pageable); + + /** + * 创建编码 + * @param form + * @return + */ + String codeDemo(Map form); + + /** + * 添加 + * @param codeRule + */ + void create(SysCodeRule codeRule); + + /** + * 删除编码 + * @param ids + */ + void deleteCodeRule(Set ids); + + /** + * 修改编码 + * @param codeRule + */ + void updateCodeRule(SysCodeRule codeRule); +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRule.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRule.java new file mode 100644 index 00000000..6b5cf78b --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRule.java @@ -0,0 +1,94 @@ +package org.nl.system.service.coderule.dao; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; + +/** + *

+ * 编码规则表 + *

+ * + * @author generator + * @since 2022-12-19 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_code_rule") +public class SysCodeRule implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 标识 + */ + @TableId + private String id; + + /** + * 编码 + */ + private String code; + + /** + * 名称 + */ + private String name; + + /** + * 当前值 + */ + private String currentValue; + + /** + * 备注 + */ + private String remark; + + /** + * 是否启用 + */ + private String isActive; + + /** + * 是否删除 + */ + private String isDelete; + + /** + * 创建id + */ + private String createId; + + /** + * 创建者 + */ + private String createName; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改id + */ + private String updateId; + + /** + * 修改者 + */ + private String updateName; + + /** + * 修改时间 + */ + private String updateTime; + + @TableField(exist = false) + private String demo; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRuleDetail.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRuleDetail.java new file mode 100644 index 00000000..eb76582c --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/SysCodeRuleDetail.java @@ -0,0 +1,132 @@ +package org.nl.system.service.coderule.dao; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.EqualsAndHashCode; + +import java.io.Serializable; +import java.math.BigDecimal; + +/** + *

+ * 编码规则明细表 + *

+ * + * @author generator + * @since 2022-12-19 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@TableName("sys_code_rule_detail") +public class SysCodeRuleDetail implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 明细标识 + */ + @TableId + private String id; + + /** + * 编码规则类型 + */ + private String type; + + /** + * 初始值 + */ + private String initValue; + + /** + * 当前值 + */ + private String currentValue; + + /** + * 允许最大值 + */ + private String maxValue; + + /** + * 步长 + */ + private String step; + + /** + * 填充值 + */ + private String fillchar; + + /** + * 格式 + */ + private String format; + + /** + * 长度 + */ + private Integer length; + + /** + * 排序号 + */ + private BigDecimal sortNum; + + /** + * 备注 + */ + private String remark; + + /** + * 编码规则标识 + */ + private String codeRuleId; + + /** + * 是否启用 + */ + private String isActive; + + /** + * 是否删除 + */ + private String isDelete; + + /** + * 创建id + */ + private String createId; + + /** + * 创建者 + */ + private String createName; + + /** + * 创建时间 + */ + private String createTime; + + /** + * 修改id + */ + private String updateId; + + /** + * 修改者 + */ + private String updateName; + + /** + * 修改时间 + */ + private String updateTime; + + @TableField(exist = false) + private String dictName; + + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.java new file mode 100644 index 00000000..cf208db6 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.java @@ -0,0 +1,16 @@ +package org.nl.system.service.coderule.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; + +/** + *

+ * 编码规则明细表 Mapper 接口 + *

+ * + * @author generator + * @since 2022-12-19 + */ +public interface SysCodeRuleDetailMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.xml new file mode 100644 index 00000000..d6301b10 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleDetailMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.java new file mode 100644 index 00000000..ca0be0b0 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.java @@ -0,0 +1,16 @@ +package org.nl.system.service.coderule.dao.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.nl.system.service.coderule.dao.SysCodeRule; + +/** + *

+ * 编码规则表 Mapper 接口 + *

+ * + * @author generator + * @since 2022-12-19 + */ +public interface SysCodeRuleMapper extends BaseMapper { + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.xml b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.xml new file mode 100644 index 00000000..75142bce --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dao/mapper/SysCodeRuleMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleDetailQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleDetailQuery.java new file mode 100644 index 00000000..0aabcf24 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleDetailQuery.java @@ -0,0 +1,22 @@ +package org.nl.system.service.coderule.dto; + +import lombok.Data; +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; + +/** + * @Author: lyd + * @Description: + * @Date: 2022/12/20 + */ +@Data +public class CodeRuleDetailQuery extends BaseQuery { + String id; + + @Override + public void paramMapping() { + this.doP.put("id", QParam.builder().k(new String[]{"code_rule_id"}).type(QueryTEnum.EQ).build()); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleQuery.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleQuery.java new file mode 100644 index 00000000..421f6f2e --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/dto/CodeRuleQuery.java @@ -0,0 +1,19 @@ +package org.nl.system.service.coderule.dto; + +import org.nl.common.domain.query.BaseQuery; +import org.nl.common.domain.query.QParam; +import org.nl.common.enums.QueryTEnum; +import org.nl.system.service.coderule.dao.SysCodeRule; + +/** + * @Author: lyd + * @Description: + * @Date: 2022/12/19 + */ +public class CodeRuleQuery extends BaseQuery { + + @Override + public void paramMapping() { + this.doP.put("blurry", QParam.builder().k(new String[]{"code", "name"}).type(QueryTEnum.LK).build()); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java new file mode 100644 index 00000000..ce8f82c2 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleDetailServiceImpl.java @@ -0,0 +1,80 @@ +package org.nl.system.service.coderule.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +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 lombok.RequiredArgsConstructor; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.SecurityUtils; +import org.nl.system.service.coderule.ISysCodeRuleDetailService; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; +import org.nl.system.service.coderule.dao.mapper.SysCodeRuleDetailMapper; +import org.nl.system.service.coderule.dto.CodeRuleDetailQuery; +import org.nl.system.service.coderule.utils.CodeRuleTypeEnum; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; + +/** + *

+ * 编码规则明细表 服务实现类 + *

+ * + * @author generator + * @since 2022-12-20 + */ +@Service +@RequiredArgsConstructor +public class SysCodeRuleDetailServiceImpl extends ServiceImpl implements ISysCodeRuleDetailService { + + private final SysCodeRuleDetailMapper codeRuleDetailMapper; + @Override + public IPage queryAll(CodeRuleDetailQuery form, PageQuery page) { + LambdaQueryWrapper lam = new LambdaQueryWrapper<>(); + lam.eq(SysCodeRuleDetail::getCodeRuleId, form.getId()) + .orderByAsc(SysCodeRuleDetail::getSortNum); + IPage pages = new Page<>(page.getPage() + 1, page.getSize()); + codeRuleDetailMapper.selectPage(pages, lam); + return pages; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(SysCodeRuleDetail codeRuleDetail) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentNickName = SecurityUtils.getCurrentNickName(); + String now = DateUtil.now(); + codeRuleDetail.setId(IdUtil.getSnowflake(1,1).nextIdStr()); + codeRuleDetail.setCurrentValue(codeRuleDetail.getInitValue()); + codeRuleDetail.setCreateId(currentUserId); + codeRuleDetail.setCreateName(currentNickName); + codeRuleDetail.setCreateTime(now); + codeRuleDetail.setUpdateId(currentUserId); + codeRuleDetail.setUpdateName(currentNickName); + codeRuleDetail.setUpdateTime(now); + if (codeRuleDetail.getType().equals(CodeRuleTypeEnum.DATE.getType())) { + Date date = DateUtil.date(); + String format = codeRuleDetail.getFormat(); + String nowDate = DateUtil.format(date, format); + codeRuleDetail.setInitValue(nowDate); + codeRuleDetail.setCurrentValue(nowDate); + } + codeRuleDetailMapper.insert(codeRuleDetail); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void delete(String id) { + codeRuleDetailMapper.deleteById(id); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void update(SysCodeRuleDetail json) { + codeRuleDetailMapper.updateById(json); + } +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java new file mode 100644 index 00000000..bd6809b4 --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/impl/SysCodeRuleServiceImpl.java @@ -0,0 +1,168 @@ +package org.nl.system.service.coderule.impl; + +import cn.hutool.core.date.DateUtil; +import cn.hutool.core.util.IdUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import lombok.RequiredArgsConstructor; +import org.nl.common.domain.query.PageQuery; +import org.nl.common.utils.MapOf; +import org.nl.common.utils.SecurityUtils; +import org.nl.modules.common.exception.BadRequestException; +import org.nl.system.service.coderule.ISysCodeRuleService; +import org.nl.system.service.coderule.dao.SysCodeRule; +import org.nl.system.service.coderule.dao.SysCodeRuleDetail; +import org.nl.system.service.coderule.dao.mapper.SysCodeRuleDetailMapper; +import org.nl.system.service.coderule.dao.mapper.SysCodeRuleMapper; +import org.nl.system.service.coderule.dto.CodeRuleQuery; +import org.nl.system.service.coderule.utils.CodeRuleTypeEnum; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.Date; +import java.util.List; +import java.util.Map; +import java.util.Set; + +/** + *

+ * 编码规则表 服务实现类 + *

+ * + * @author generator + * @since 2022-12-19 + */ +@Service +@RequiredArgsConstructor +public class SysCodeRuleServiceImpl extends ServiceImpl implements ISysCodeRuleService { + + private final SysCodeRuleMapper codeRuleMapper; + private final SysCodeRuleDetailMapper codeRuleDetailMapper; + + @Override + public IPage queryAll(CodeRuleQuery form, PageQuery pageable) { + IPage page = this.page(pageable.build(SysCodeRule.class), form.build()); + page.getRecords().forEach(sysCodeRule -> sysCodeRule.setDemo(codeDemo(MapOf.of("flag", "0", "code", sysCodeRule.getCode())))); + return page; + } + + @Override + public synchronized String codeDemo(Map form) { + String code = (String) form.get("code"); + String id = codeRuleMapper.selectOne(new LambdaQueryWrapper().eq(SysCodeRule::getCode, code)).getId(); + // 如果flag = 1就执行更新数据库的操作 + String flag = (String) form.get("flag"); + List ruleDetails = codeRuleDetailMapper.selectList(new LambdaQueryWrapper().eq(SysCodeRuleDetail::getCodeRuleId, id)); + String demo = ""; + boolean isSame = true; + for(SysCodeRuleDetail detail : ruleDetails) { + String value = ""; + String type = detail.getType(); + //固定直接取值 + if (type.equals(CodeRuleTypeEnum.FIXED.getType())) { + value = detail.getInitValue(); + } + //日期判断数据库的值与当前值是否相同来决定顺序的值 + if (type.equals(CodeRuleTypeEnum.DATE.getType())) { + String currentValue = detail.getCurrentValue(); + Date date = DateUtil.date(); + String format = detail.getFormat(); + String nowDate = DateUtil.format(date, format); + if (!nowDate.equals(currentValue)) { + isSame = false; + } + if (flag.equals("1")) { + detail.setInitValue(nowDate); + detail.setCurrentValue(nowDate); + } + value = nowDate; + } + //顺序的值:如果日期一样就+步长,等于最大值就归为初始值;日期不一样就归为初始值 + if (type.equals(CodeRuleTypeEnum.ORDER.getType())) { + String numValue = ""; + int step = Integer.parseInt(detail.getStep()); + Long maxValue = Long.valueOf(detail.getMaxValue()); + if (!isSame && (Long.valueOf(detail.getCurrentValue()) + step) > maxValue) { + numValue = detail.getInitValue(); + } else { + numValue = Integer.parseInt(detail.getCurrentValue()) + step + ""; + } + int size = numValue.length(); + int length = detail.getLength(); + String fillchar = detail.getFillchar(); + for (int m = 0; m < (length - size); m++) { + value += fillchar; + } + value += numValue; + if (flag.equals("1")) { + if (!isSame) { + int initValue = Integer.parseInt(detail.getInitValue()); + if (StrUtil.isEmpty((initValue + ""))) { + throw new BadRequestException("请完善编码数值的初始值!"); + } + detail.setCurrentValue(String.valueOf(initValue)); + } else { + int numCurr = Integer.parseInt(detail.getCurrentValue()); + if (numCurr >= maxValue) { + numCurr = Integer.parseInt(detail.getInitValue()); + detail.setCurrentValue(String.valueOf(numCurr)); + }else{ + detail.setCurrentValue(String.valueOf(numCurr + step)); + } + } + } + } + demo += value; + if (flag.equals("1")) { + codeRuleDetailMapper.updateById(detail); + } + } + return demo; + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void create(SysCodeRule codeRule) { + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + String now = DateUtil.now(); + List sysCodeRules = codeRuleMapper.selectList(new LambdaQueryWrapper().eq(SysCodeRule::getCode, codeRule.getCode())); + if (ObjectUtil.isNotEmpty(sysCodeRules)) throw new BadRequestException("编号[" + sysCodeRules.get(0).getCode() + "]已存在"); + codeRule.setId(IdUtil.getSnowflake(1,1).nextIdStr()); + codeRule.setCreateId(currentUserId); + codeRule.setCreateName(currentUsername); + codeRule.setCreateTime(now); + codeRule.setUpdateId(currentUserId); + codeRule.setUpdateName(currentUsername); + codeRule.setUpdateTime(now); + codeRuleMapper.insert(codeRule); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public void deleteCodeRule(Set ids) { + ids.forEach(id -> { + codeRuleMapper.deleteById(id); + codeRuleDetailMapper.delete(new LambdaQueryWrapper().eq(SysCodeRuleDetail::getCodeRuleId, id)); + }); + } + + @Override + public void updateCodeRule(SysCodeRule codeRule) { + List sysCodeRules = codeRuleMapper.selectList(new LambdaQueryWrapper() + .eq(SysCodeRule::getCode, codeRule.getCode()) + .ne(SysCodeRule::getId, codeRule.getId())); + if (ObjectUtil.isNotEmpty(sysCodeRules)) throw new BadRequestException("该编码code已存在,请校验!"); + String currentUserId = SecurityUtils.getCurrentUserId(); + String currentUsername = SecurityUtils.getCurrentUsername(); + String now = DateUtil.now(); + codeRule.setUpdateId(currentUserId); + codeRule.setUpdateName(currentUsername); + codeRule.setUpdateTime(now); + codeRuleMapper.updateById(codeRule); + } + +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java new file mode 100644 index 00000000..939d2eae --- /dev/null +++ b/mes/hd/nladmin-system/src/main/java/org/nl/system/service/coderule/utils/CodeRuleTypeEnum.java @@ -0,0 +1,20 @@ +package org.nl.system.service.coderule.utils; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +/** + * @Author: lyd + * @Description: 编码类型枚举 + * @Date: 2022/12/19 + */ +@Getter +@AllArgsConstructor +public enum CodeRuleTypeEnum { + FIXED("01", "固定"), + DATE("02", "日期"), + ORDER("03", "顺序"); + + private final String type; + private final String description; +} diff --git a/mes/hd/nladmin-system/src/main/java/org/nl/utils/sys.xls b/mes/hd/nladmin-system/src/main/java/org/nl/utils/sys.xls new file mode 100644 index 0000000000000000000000000000000000000000..2f6967a2207272aea5c45504313afc8cbf15a129 GIT binary patch literal 226816 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
@@ -61,12 +61,12 @@ - +
- - + + - + @@ -23,7 +23,7 @@
- +
@@ -31,10 +31,10 @@ - - - - + + + +

Qngx)PevS(cDD{v{ zQnG&UQR?a;Z!7??q-C5B-g1pc94GcXYWgJ=?}ryNS@t`X+Zbo~1OL8&6?j{C1tyiV z@rLnSym7n$Zx}Da=P|sAJQr^v^E2;$?EeMU$k&&XR>KeE$!uJTKcF;GeTmCS*OlI? z_i#Ds4dFdJhJ3H?Ra{Eis^aNYeDhlV8ihX=Rd&Ivwh5nFf!b3{Uv8o|%d^_J+_Xn| zS(V8pr#(u2Ri+PQ?i0M(Ywg99R(dj*n>0LSeyz&%fhX^C`5aPZvOi%y<>_r)lG>we zQDt&wbX|E#mC0o($(v`xIc0L*q~VP+eLc$bgFNO_p6ABd)d8icDwDNwkJ3q%$z?3b zn@d=GmCia|lgVD%nNJ=7Z=Fx}hs>uu;f+gP2b5;2OfGxvQ5vYcx$Grna>>h?PyFD# zjyKBWLpW=h>~EP*dFC6J$PS3#R$&XoWwJdACUc?%;xd_($t5zUO#TYGhBwL#@F z0i_$H$Pi`XXVHaBF0e|OTts!sJfDusuU{#tsy;jc?^k89DwikVNquS1&E2WL956{c{8l0qDo|h-}34uP};SdQ8 zujv!wqECpfPYCq+T4}556H=f)9D~z7^6Wb~RDF2#%WujOgqYuw(C3OMmy#~! zRTB0&ui}m6RTBDW^v3ckS)e`~tI|I5v^*|hpI6dUeRvk%Z^}|tAD+c0`ImAjuTr`` zJcCcxP3m7t*Qb;yuXOOC|CB0FAI?2!A9=POR|(H6iK;$4z3(?AN!6z`^!Z-cp|sFP zD=+?NfV2;f`*-TY!}_KEJape#UZo4vhw~oVN1nvTrTH7;m*Ln(^Q^xcibK_hXZ?LF z^x-*wpD3|9-dD%_;S3p$Eoh%I&_|;W!1*u9py#8QGSKH^oHKJud_Ggh8ytbtF7muS zF8|+9;*f%R@I=5H%1Binf458W4Rz5Y6n4?@Mm<7xJwjoZACweTk5D%~D61TFsAL;1 zXu`zmt>@WOC7YZ-asD@7pFi<&!hC)H#B=)Q>+>g`(>GtAKk=Nt`TG2+JoKNh&!2cs z-+X=k#NXqZ59>*L@b|dp>+`4b$j5xleYChD2<_2BMG@Mohk_8&=1=9(GtAfLPvub# z^Y!@?XRrGKa{k1JAKUd&F3$zrE=IYu7f*|K&YvnEM?dK!-3rK&oIh1SZr;#Gx)qQc zj&hwN-49eR;0&2^<>;CZRJJR9P!^QL(*n0+!;thY{)U+3T@f<3Dt&dlCbOb0lipZS z$dr5nAUg{5^u~&?p1U5Ll~WHn;^sq}tx7*t51uLby3${j$1?@xD4*vEZsoyR!uxri zpd97%EWtNKt>7rX67;Yh<#X0gnR3LXo8_&Oep$^2B&Wma*KSw+uh72V#UJt zR9lr8HJ?0*@OAtOnv_{pms!sBgRhN8LwUl`pC-=@mH!#$zDLinP7k{$B>azrA zfoY$4n6s050`8Jld*o$YZy~PQ|HIz9z~@zz`Q!7xP13aVl5&kw;52PXN-v}rN=kvg zX_K1LTWC@mu1!mWskBXOQwR!fDpj*yb|b57WmN);G(Tn6fLw~)f}&QuY(&Jae~~Ea zc9pIb7mY=?|L=F6nKN_VoHtDOo^eB0+y2RA}AgujCr1l44?GGX?E{LuDq{%u;nlksB0GdvQrjJP{Lr(xr zkrC-%(#g;hK(j~p!V^H#$s7|v)8c)ZYyx`K%rZ3F2l**Tu|MXDs*|A$G(T2`rbkNQ zr$F;#W$1#CpMnTK1tC8LS|+nHG&lBU=7(*Q{K%Y<{wtjfP5+fIL*9}eX=2FFMDXKe z=!qde6C?ag4EdQDk;x|Z%Mben@+0%fN#MuH(DZicWavrYM`XT9k@Dinnk zA^7>dT7y>1+Fb~Key_IR7p0Iw@Uze0v*6$Gz7UVoS`0o1{uZqaT?l@DWbnE0pV)x# zlv)bG4`pc4K3hE@`+w$(%uS2H$N#F!3?D_{<9}6+p;rVxL{`SRqn<2ZgnY4hD?@WM zF9IK=7nR$YK8`Qr6CIkb0{j}tdIQHFCofOMH%?yW`OZ#Wo(evlygU`WI(d02cy;pf zRFtEWm#2bXCofM$Svq-nD)P?B%TtjCCofOMnFLN=o(jE;lb5GP!yb^r$=Z`4{1(E?m78~OU3xctu7UVPq(^M z3_iOs%1g^B2Cr^)sTjPv)um$a>sFVF!EaYMJHp0%{IaV{#VGAA{Mk7D)um#Twp(2) zMrpg%rDBw}TU{zfX}i@W$~LaFXX>2aWpaKdQuMrDM`V7@)H!cgmu5zCe`c8bGb6b_ zGdA}*j#GYeB|b~jwbJ@5O}EjM_^hzRXK9*tb~G!bIV+^e8Zt}MB*(Lmdv10#3%S>K zc0`$te8}u*w&vqgCjGNDAMZAN%myDaBblxFxGuzJqwbU5Y|V#VkC+WU?uTz!NAsYW z8B!)BO_?3d(KK%}H0NlVTTR?^LYi|lO*$#ey)v=xnnj(*#3z|+oJQp;3ba|c&nod4E7c?#2 zmp9Huy~-?)QC=rMBCnQceyonQMCUur;aG1=LVij#KUO|03Hd3B@KX}*;`QaRi{D{0dU-M&i ztn)QLRz92`@-shDUh_kK=12IMAM!I_mzR|f=l9DG=V#BkBP~FBoQ$*p>2WgB0;IvoNDCq| z(t?PLv>+lQEeK_#A0pKkVyU7S+83*1;gi}G>RG5`iRxRT;pS-lMhbZ{)-yh&{-rbq zwRG%<>tcc}3LzWH){ z8DaelF2@!J2hRgr7_L<%cpZ`4N5p8qLq!4L@r%KOZ&xtO@y96Y@i9 zG%}S|z+71qa1HZel8FBxje$pVB>Y`MD~>&s8BmS4GO}s*Lv4acXg$*P9MpJlmkFOYnm=kp>fwOO zX-IsBLn+_k5He%X=l9{8Y@|JE1`UM1`kFx}#SEH)5Hbv+6rfx&gRamMjxkv7N3y?t&BmWj^RzoGQe&qaDVI!2p8=P0V1Uz6o?K0cId0v<1M(?7OO{0jG5+lkPa z*W^S<+bxb1yF+WY_{rnkZ`vhxnfKP|7xRs}BFr10I}>;svJqEetj6(2x-KahgBuou z%hI@>NPMhu>G9>n;D*QGSn<-or5!^$Ze$GZIE{e1J)3|7!o*ska4nIF% zC<@wMmRnP6HXWOLW>mu}h5G zSIgE)x}t%k)!Kn@pC_%>o>z9|m{x0|-K5ppOX0p+TCG{UuYnwfQ88ZY$=-l8MMFWW zwFAno*wSk4d1Y5@X|*P^aaygtq&|y0;0R5tHH-IY(rPV!m6*K^X^Mt|R%-{;9VSO< zwf4L|OO$cbYE9BZt2LKSTCG_;X;MSM*)grw;?v3Aj5I|XL94X`s@>3})!Oswc9R}j ztx4QWo1;l?EZ(O{tF?HV>@7)CG!L{|JD~p6(4^Jc^Xg7RlU8dIH?7tjO zYw+Z({5Xp?#}6&qp4Sd(89y!BgdbY8IV&exv$Op+p!Yeqi{am7K&cR&sV0Ha6skZf9No&`QpRCqI}(XpPO0 zt>nm$Xf9|acL1>{J+jeC?)h+sCavUT7A975b{0k}Imw^CR&v4*t>oOSIkS}<>j{c+T6Z1T8_DWYqT75`_^bV)&+@2(nsqtw{MNsV{YFXEy&!yHCm8$ zAvf)J{=PL@k#*tEzVr93oq$&D_N|?OHt6=Poq+b>_N|?O`sDVlQRZZ+i1b0*vqPcu zLEE!e)pw9X%rDxWIq8G;XHNQ{{h9Qrv_Esw2kp<|dsND`q$|<~ZOjg-?;A?AF?&@@ zJ*@q-F_XAyW9Dd{6w*8?LX$RT@iZwnlcq=?v?n{HzH4aGp6u0dRHi+d^y0K9dr3Wm zP~?SUzQz0Lq&?aFkRwP}_TSn)YLv@KQ=|{Nr#lo%AE#)Vf5cnHeM*?lQzA4^3DbFs zPN$VVPRW=~%KfA%(g(eb9STRQd`R_ z)G+O0p=N1{g<72S&bb)VS)g@(v_?A=NV;41 zcZB0SlX)N#2`$wQg%SWQ)m{zv;L%b|_@SkmlK^O`CUj}3=J=tdn#JcL9&6`(dcXW| zj!S+-BB2%Ap-=*#72B(!{XMPNWW=Hso68?svHecx53Sf7KeS@A;r;wMBO^bwaQilP zSBZsNv(_n!)tdZw`ouP~%gVmB)@=;oEZp1-pR!R)D)oUo(o$>4Vmc z;+t&5qcx*B0Q4>)K6z!-jEbs_LUDa0;Uph1D?y(V!*t_ z&*NReqQfo2qkbN1lJw_PlcY}LjrH@$5%MrD&5-x6Y{`n%1*&%BqoekpP&w`nPK+~N zRWWZ6t-f?s(~!mR2lcx0)Q|9=4P&47MSN)cHvP%iEd~27Jw}TkdcHn6Fqr(Uh5Ety zQ>+xl>FdMBP%J|^Fq8vBIWUw1Lpd;%14B75lmmZ*Ij|pU>LsfyE9iBj`O^pf^FJ<1 zmX05O@Hf|#eeaI0t4|s6t6O(ZKJ<=z|NGWk_HDTML%+(~xS`^MAAZlb7nOan=Y+Dy zc7EgZ_G_Cy`PufWS5AHRwcp!t_8p&m;U7o+?qB}%ZP#D?r|3^TT>)@>S|Ego&s7D{!|Hnn2o&DI`rf)B7*t+7%;hq1u zZNum8YU~~MU%Q|9zzYj5KK#rVKKZV%fA_YFzwm<#e?5EctDpY(FZXTu|33b$lfL-7 z?U()Yd9VEXftfj{zI)U9H6vg7*U67oZ#m&xk3Bx>(Dff3^X{pi`Ow$z`u(}XAAa!< zzkKZeM_#z;$ID;%!><>XmHoVT%b(x<+{Zt9{_Vg1um8RC#Daofo%Yxt?)cpU3&(8y z=C`x6?ppbc@^3ynZ{ue!y8FB59$Go+nG4>rr)|yRua94PMcZwy`y0N0_`ScnpzTlP zcYk8~cW!&Kdfw+={n(68Joo35zxd~W{^CbY-?{B$6Q=d3_qG=NL-E|nKf3k0$3Oms zrMEn?bk_&|zWwK~%v!bJ<-h;lZ=TwH&;Ol#^W^KB=HD{x#A|AoPW|BYKOXqa`q3Z1 zYVG)O+b^xY^p3{$XFvMbmIFJdo%ETSN7p_w_t)3`;1XEEBx{oPtUUXC?PunllxBP8 zpP3hTCLVXN;KE|KwLN>I&ctg;$T@l3)1wln>E-t>gVTF1($3QxuEV)qPvlQ;>PS0> zj@Ah2XVd8g`m}J|&7U5QJL=PM+HlhFV$T5NPHvTUE}*v53(pUfa{;m43*oq$zDn2zI~z;qn<<@q@7`Q&wa;sE{+&i2fC$Kj3{=YNf7;yM3o3G8}v z{?`)N`R4quabKD9zm~x6H|KvXf!%M;|5^ey&iP;Cjwk1TjpqtG|7(eecbr7TI}Z1S zxicLS*nsBFbl~Q+_v3c9XC3hRqVx_#+Mac&(I^Gx7j4h(#O_f0D@%PEK8ca7*r7|? zvpY?w96&64dnVqU>f^wC-0X@TIuq}&{|vxPXX5R~Sx{1YXkB=Bcxnf&3qPxC53LJ# zhkjCMU3iDV=ODy0x>j*#{&01h`V4B-U8Yuj0(F|ZQfXbt+U%?gcZYk>XvL>Ew9DbUN$8&*6kh$y>I@&%s-g(4=+Y zr*z!3F8mkxzOwji^{)n>gAkS`tqVVeH+}P#;~~@OTNhfNAYxr;{lU_@Q1)8Wy3koS z(Ymll(;SX;x*fl?F0^>xx@maE9ltDVj>XJ_@hSFBVtHtNf{5jz^$9}DL*a*(ht3*} zmWM(&H^L7s4=vueM$7G&AIbsDAKxnRm-tQY#42%?sRy)56nrwt;{`l66)+Y$98J#s6tr;bLv1YW^XtZV&e)?K7+VH+L+L5gpnLoZY<9_^R zd5JZn^#@C9M%lqG){NE~jn<69PhV?B;fL0Y&KfPVH6v+K?mIm(33Y_>2(1T?><^Z5 zp_4~=4xW=oxDnmSBed{y@(8W`oIFA+KPQjS($C2wwDfcG2)sey*Apg}Xzl0Zk+DdF zlSjrzh4fRq1CFBQE0U)G-WXji&h!DvJ06YWaxRyp{^{G(l|(42NSSt~yFpg?pq=U6;7ItOG%I}2&eWxy(x32ga)b}s znMz&bxrL4oo?FhzQpgro{IQ2&OpgpSaL3`BQIN#3VEg!T; zb#;OEsPS?+bq!3r$Q!gr-5uJ%(jN7}&|?GbQH3V$QSS(8(jHaP&T|)~y|X-NkNSC> z-@_VkB7Wt@&PAx#V46j~pdG4{(P@Y3WOUl0ii}P>R41d;4pn4yo|NchblRcD%jndb zFwJ6rC?_Qrn(~&D5+{ehXcL+j{_;mp+M>$nNn2DIJ=q3mi)!(?IFs^Be2rc+!P63l zX80dcA5kAwAH(0@$_$?xIo9yAbgQNX@`3OaW?CRS|0J|P{t5cLk+3cHXBf0V?lE|O zhCvHti}z<3<5ANx&oHPBWbGG!7qm`x{z+(^?EI5Nt&`o1aA4NS&OgbKt&^EQ;_rgi z$<99st&^R9lB2Uub~B74TPHJrigkI>I{83&3Nx*f-Hb45o$O|Wv`+r1F0cNqlijJ= z{aYvh4~D1o^EcD2k}peIYh?OGB;0~~OH#tcStk=W0jczTjaiFjmc~q-`aq}N&Od3f z?B<`eSeE%4EtXyFpvAJJzCVj)=M5#Z#WMLJk1P%GAv!_xW9Oedf6;kE;rWX)|CI9= z?fi2>$WPz%7lr=`7@J(}$bA0d4-u{cz4?i-`1Wn6YkeDP9Dh7$8)|$L+E62{N~QFF z`Ipg#n#~`>J~|6P!=pCTWAsGXx1s)Wg6a}gRbN-vH1jpNkkm^bnkTvxnhLMs{{?Sj z$F4Com+;WdL6YMi6`P5}cInPO$G#@_k$Q=4l-RIa_mIpJT&Ny@*(Ex0muQ!rj+G@k z4r08{NQ^>`3@sg5RSnJWhn9~1HpIU-PJ#5dzI3!34r63mEK5g!#4k?0xO5~_R4yI4 z6$rP1KM{c=_jw$1(#mDB-Q7!sXrt?@?I$Ce|8Cp6TiSf>#D2TJm3rzkT8%sye zs|yW3e|t+uKUAlyPhjowpmySPS<*UjauX?Epl|dAdNjI03-tKrH3;-4V17Xf@&x?R zT|BFlTq4L%)b8JXL4M9r3i90X^S-Yn)WUtovLHX?70FZs{iyPP7}(YmE&gkq#qbBG zKl0R%@ShE1pY}z3X!|z(DbuTH9MNCtUkv>|+8h{6{?=k9HslrQXmfn%`=J~d%7LLA z7|Ma692m-hp&S^>0h28p&S^>fuS52%7LLA7|Ma692m-hp&S^> zfuS52%7LLA7|MY+E(eCZBE4~W>tcQ*y&@%*?-faJu|6)k#hSZSaAEPg|1H+P(aYo3 zD^OB@W4B3*2Oyq*mF`W4UNO>f;swcmE1rU6i*?lF5jW!do^!|__wuCUj>Zd;-e4Yj zGP+LZfp|fRrdPZmS)L`mv=_H0+}o||V1)l=rP=|)L ztq*kDx;yVSiH*0;!vH-V$=R7nY`pzK#N*KyR3|W4_tK(EJPZs&cix}J zqkq$FQam164+HdgwAz~u<Fm30-PxMbKv^kP$*1Dej84L6-zyl-ntzdM<2O*t;Iti{v7aFn&PH5G42b_;p> zmUipSW}x1XuGRfDZNB^Chhs9W8^@<;pd{Xqeu>}m%eOU+ZfSSkhX&>i$ypN)-W!tj zJ|y0d>=tr*LlSF6dP8#MMQ=!AZQ0iwk`3>d*WkS&S?f>P(r&kqr*CPu|xBxn7}E$w3cDc+E*_2)XTWbZ?i(VX`o zdMt9@hsGcc&il|9q``R~8iR6n-iOAZoSpZfF=(64`_LHFdgpy;4C=M>J~RgH!FeAV zgETnrLt`S|hsH#_4~>afvH|^CIoW`It(-SR`n8gAnm(qmv8h_2@qJHj_?zJ$f+oxI?c;LQ}jRS(@~EBs9hAk(B}I^(dYu=cjJ$ zr`MxB>g|Rmy&gTJ=uy&g%AMIQwxf#$6UBY8&8N1f_B z_+>pG`Li7Hz{zKB*?;(3Uk zkDP2u&qvM=3OyeQKlFU$JYCT9kQ$IOXX!dZFG_>vZt*XEU!p9j24apO-U~%@0*deH5K*S#l1(u%?yHu(B;Qx%?=6((v!2+B=OO!Z*Hb z@r^H$g@ZP}#5d0Pk~88IZhK|)rXsF#=`I`)j4wId%0*F_g1_%gK!twplDO&F@Ba=TK0FFfdK?^%oBo+OD$#2lJ^9hc`7YdJa8o9rU$k3sQ$Cu2 zo01OY8_Fn@TG;M5s&ka3Zg)Ixj-2Dxa?^2?JkxQM4AXIx&eCy|kkWCK zQqpmh6jXvOfcf%eonEf~q=%C;Frwk~8l!in2IXU3rzhCM4Xp@Stue-$Vg_xe;q4AZPGce*-p*S9Lrsh_CI@ELc z&AybYK6hdEfzH@CG7?P-&%kh+7OwhOysv5D85q>Gh~{}Xqy(pF;mS{6O$*0i&eGh9 zPlwuv-{ghoU)-gBfM4W=D?UP#=U+HpxZ-2+J}*4~g1p$cd|tTf)0Y>H|I8QB`iy`m zvs?Y#e9zUM-Ri~g7j>Hd8UC`GOlq4r9x+7)DW-uwVscnpK3-cYPD#pcl!9_QO}${{&?MD?I{Fy-vFgwwpe!}fYZlQH}3TD z>AG>wec7wLHr+VW@1F?pGJdn<6a4#Y@MS%-09=x6o9_^_^%RwQJVU1H%e3gE%{9Sx66O(zb)R+f9k*8C{54*F8`?m@0<}quzUW+Mo2ZoUuNP`z&4l)NS7tj_K5G-=)WN#!cP!UAkUU zw|$o$-36Z=;&ap&weD8%!$W*7AddK4m!fX_F7HqH=<6Ha$pO@9iyXjssneFUQ>X3H zPMx;J+fkkU0Cn2&Y3D4QX?OnL?+T>`>aFk6QUhsHZ!Kx3-rA*|dTWbk+S%Vpc$@aq zQSL77^#9&B?VS0u4m!W@k7z9=`vCfVe?;po887|5OIOmx$`Ni{%-TYE? zyARi8{yn7cPwM^tPhnn9jX~eN;4i7$3?-g^d#~DK;^yhMaw;q}e_zq- zYNW}%;4f*;hC$YHa~+<3d%yalNAsYe$(qZw%KS15rT3D0*wEx55%;Pu8=5@*R%miB z_%+!1A?f7lw-)cyL zTOQNtPQQIgJ!WXKtnO8h8=A~TNe}mee?>hJ;w?>T{#@Qt^B12^wrr-;Y5rcq3XIeo zYX0t3Pnx*7-&<%>^XJk@&7Y)`r{6l7)cnQMWY58LIt||;^%X;t8or0rR}IamhVLut zsSt1FHlA?nXo`j}uHN?5S;rh`>#dD<^F3&ll!kN-lusSXxf44U zPn?ywdE%_Aw>)vy;(eNY1i{TUC1^RLmM`H=2!MuX-<;rwef zXj;6b$^L0HXj*(OAUppW4cY%8?{5qw!$94Q29%Ys@}G55?w5HCn(d{YmInWE*sRSDYrR{;zr-tdjDEi=X>7OTvLHk$E9mn7HqI74kPZ(g-xLHa2 zo+ux-VJ$xWw+%~~)m}E9)$f^iN(E|8 zQr<5Ce2IRa0-iD17*Pf%+^b5Pnzn9Szr9J-1(z&byJFpD02c%WIHE6A*EG9e^vIF> z7iO*7mTW41Z*g&P*R0}_S;f;;kd-@TkvcIsJ~64dc+TA9O`~so$EJq$>o!eDJXO`W z?&`!Xi`V6D+EzDe!=kNq>++h`t>1Lg8I@b>f(><7Z(65vmTVZOzEHh&`{;$`&5gMY z+v-jnUtPDkQEgh+R99BFbz{zT$w{{?+`g@;Ve_bs@5w65o3*H6OH=OFhD|$eUDU97 zvs$-h!@})NO$~WlW=;!Kq8R^{S1oSXx_R5QxxvV>>cf@le3c5SvbL}P$mp4C7j4?8 zuD-Tt%IJ}+w`J9BO`I`vMpb=7>iW?m%eQRUamwh9k)ubRe8#M?XUrOX2C`|8SK?%} zF;?DZP$19pV?3GF|B2^x)BafDo1gvn7x-o(;8xrZ0+vpSp@Gm}xrRr~z^^<6B{6oz z90nODuS9|skWe$8g!{dO{PJ=e0Rvm+gxMF&@BEMiBY!ilBJkG#c!2lklQX6v^LQ{* z&5Mizw$Gog1~MKB959yd@O9 z`ol9O$pLfSuJVe9)ti zpYv}&()dtO?0o#R^G`>AZZyyUf4vs^OFjClG54>-%zrWD^sSKQXAY3A4aOZ=gH8Vl z7@ZFf7a7B){~R0Tpq`xnQ+vr-4fzN)GLv;Tj2 z>rnqcxF+6j=(m3Rr{;P{{_CrHn)}z;{wIHSsQve8(GUe_#tijm9u#KUWEt=%!nK0W zr5Y7`#Hc#W#eWeqcI0Lq4;X8R{5F?xo4}(8cNmyUGhG7bag%Siff><31Cv&-2~U_B zJjSWjw*qTg`3BGUseUD&gewe8TD1aeT8#!Ktu_Pmu}ff`#&&@3{zuZ&A$o5cpAMh&48_1x`lX8 zjeRt*Re`sr#c64^rQu17`LGLk`)#KVqaF6DJs#ZU!FxTp+k^LM*s0`^hbln)Ju!IZ z3Dy#r&)N}euE4{%dAf)&cw2!-g@I27yvx8`p6itGdRd^$;DNUFIe}f7s$0S&bXgmi zx?QcKy!v|d3 zK-w9;*uc8Z5JsHbNZn}g`GDKJFdZJe$Ao8E_J;H42T_fwKVOC_$zI|y{H}W%2wY5F z^Rxd30#LI8ZpHl;*Pr+42>;@UBAu~SMnjJE)P5kVKToRLpe=hZH0I~3GOXLr)pv>3 zpDhHg91zz@XKI~V2{3aJZaNm*<^eYgp-b@OivPI?QI7T0_u|()gqe+B#ri#CD8qbs zk&bH~zGAE;2*;4q@q3Z}dNCl2NTah9Z&7f#gTZZ zNgzL?##JOsOf%$fTQv#$7xDgY4#1;K=ySankFqnxwejYQBJ^_2x=1I!Yr(zo=4G+( zIcUp!S-ZCUj56QzcYye7cdm$hZ_`t|voeCuHR-I~xhjIU;YW?DPIACzyyTltUWENC z9j61Cf9yByW!K(Ejk_dSi@dPk+3+@;ecJc_ZyR>8MdE4WO{JxqWx!yyJ8NRoSG)7F z4EQTD;IE3sbMFHOT+6TJ(PL4A_Pxd1aC~x%vzJZJsBt$Y^YFrcXT#fY_G#byzirs~ zcw3V7Z%Dj5lU+v{Z+v}eP3Gf;O{YzpO|O00_x^7i)-*l+%H{7zlZ{6iZ+!l?B`G{u zek>1`FZ;Cb{ogh$g>HK}es4`u_^{vEur{21+V}o%8`kgdUA&)8HXmiYlx6JY;+>W3 zKFWASB$b$5yzfc2BOx}OHf@%^ecJc-cM*03*syl&;=4~!`p32L=Cppo^s5#4PWs(w zzirpE87JSTc78t6KiK{!wey|~_np_I-a<6J(?l> z;~DT>vG`Hr-j{4eg}3Ep%ScMa{kQKerq|Q~;y+-Kcpj-d^HHgejq*IU%B^;1wA{F# zjoF&o8DDOxo!^cv&)S`7@{5UQ)VTL2QA%GV-pxOwa+AaVC`0%kXTbj?1HLB%KHA?o z{-bh@!$;*HhyPh@{HdK^iQrwk{CNiaFJtke#(g5$4i`Agca{sEya@YOIxZjDQymch zF7^U`VyJv0`RvN^%_`qr$riZ&vE^sW%qubt+V>XUYw85?RThcoQ28Ef?f15@zOk4F zTE6>ConZKP4VCX<*G`YE^5tIlUDUIivTXxQ-9Rm#ywc0t?sZ7+i0X0on(r7_{C8q| z#Q2IZ_dOXgQ`>E?67=hq7HM19_AUI)xGmm)+Bg`a;C&AKkc9m(*u&;4X>3FTeR7Zd z?OCcN7jDtaWniwIS$wevR~UE_p0yhG)-AFA#!EAq2A>5y)jkV%(9xlSn=@Q3xmn0b z)#br^Jy34+ZleJ4im*gno>Q)n|1hu0_(N$Tn@QdC+9k0Ah2GqE;ev3 z8A{`qpWAdWFZMGG)*ZQCsEu39`fC976!GLMMc9uA_#&XF!a|s=8F(~$aJvV0d$5iy zE#3UKm_$rGwI1B&!Ci#YzQqhc9W-GGD;854pRCAv>3Ba(KX3})Qmy01Y1htc((ry5 z!Yq?ogt6=BjSP=9W9E4?U>i@HiHG5LdEq-Gd=|rZdg1q)@X%hUZZCX~gxB%!_rmK1 zal;QcCs=;+8G+#^0BrdwAs*p**?K}$3jgf4l|-0tYXIAC8@({i5+;j}7B5VjMvOo= zgY*Knadr}qIzap$fpgh*yA7W3eh;s0f)SqOn-7(Y);^JL)509Vpa6T(#E z(J8QQV77fRpL1CV2y-4DoI(@65RYa9KL~h_flB~4(t9hyybF&G11|>5=^5~>6;kJs z-s=F@5)YW)?n@7o7M`rgC<-xdSkX~GlkF)-^=9>i$GspBsac;uIXDlzc;0rwjC9{{(U%zqpgs@z&Q-FhcN1AfJc|Wlr$n~?-9J8=ej@N zFL3Uku;#y)a8yKSSx(v)d;UHnus}*>ZkO;;Rrlpl|w9XJMWrR3G7-KzOw8^)+zU`84 z{jyUG(*e94gE}Ql7>^xa_DDPl=53b_lbc}k==R|K9<1#+T4cXnKIb`pUjaO`qgdl5 zo=Oj{_uv)-k3sld24+Xr;lZ6AyvM-gtxLm^J}SX)_Ysf$A>3nNHuC)j-U+zZz^r>M ztaLvAMvm$r9(926bb0Vz5AOEheFA4|x(3hk-EZImz$Ir$oEPFzYhZ?HH!#B-G%)LP zet>`AVHO@02Iiy1z;^>~H!%C~iV66K@E76HVqnJKZQwHj2PA?pd{h{iv>FXeTI~i7 z0Pi#KdjR)(VVWlbfq1UMqtn3C0Ov7NfoGYfbOuNIiUj+yO2H=p+Wtq^=UVeE^RQlE z-JdrKoRb2+#o&{Gy9|CI;JqF`Z!!=V3&=x0;j}*IJfMmsOs=LSux|T}5?=4SZ5F&9 z%i09rXDsWMFnTQOG2zKuikWSAs37d~5QVew*5*SN$F&;yc4QIYR)O`LvQyx(HNbZn zJZa?@;ve=ySK|=~toJ}S3#{dV7J)~wn{E|Yr?;JOv=7W?Q|}ObHbC3|kJTi_j><97%9?o(v5m@)(6#{GCY7DH~g@IXi?E-5)I|=)I`Y`&>8F;-X zJq&nY{_GdL&wmcXAC&lWQhy$0rZn#T^q?|aSI zQKaz_PlX59dT_IWS;yK4n?AqOz$1a$W8j^D_Zpb>wsN|JXIp3%Soia79=ywg+da6$ zz%08?0|$T=D-`M*>u_LThN(4h1>jD?Em~x=Wt7D_(`&-84-d}9Kg7d6s>Z+_fOi>~ zbt%P80%5MequIa<0q-;L7{I|y{EM~`-S-v?zE9tqA|81-3XckbldOj|2G2^?DR9;$ zfcJR#JPsOuIf6IxkWW0|Ts(>d*7K=ifpy>8Xu>f5X2M<_BYZqj5+=I@@Gc260-()9 zJw|j(80m*ic*dEUjeoWuCLEQovVgJi==pVx39tJ}3GcTTEt9uP7%h|U6?jw);@M~L zq+85_+L1e&c~~N_F8DTq_1s|>VSg+@Uh&&@!8_jkavTVZ^y)smZ~R)`-YYz4dHbNi zxy-V>bMVj187l|M{Xz zzSVu^UisFq1Bzkx0dM=v9ti{A+~5tc?HhZEN1ViCPe1sSJ}u9Ki##}G;Nuar#=s{6 zZq%?R>zaPD)%&)?gS$L%!@&-z(o;0FQkGBC5C@&XC-E<9Qd%=*(Su;1=1hY^Nt zp*uZ{=~sIM->2_ADDmsQw^!gKt9b4L{4;ejC2$t;6&}8Ya7^FZYQnSc-6dfFxjN4} z)-GYRe7i@&^yyc7C5-M@b5r;TeG3bq-oQ+6BjF?Tt1Tux>r$tL_uG{2SNBR7-LD=L zc+^6KhusV5>i)ArV6E$@^zgd`*78z2Vbp;Dj}C!z0NQ?D^S@W{jt9RSWBTOozTx%Q zw2ye?$whb^lrXOTpgyqurkIFm{4R{)vqr)=eh}v*eAY}n;yE3Ub_t_(BVB^mx{)4% zbzgnZ;FAas+aZ3dbtAb3W_gtetoz;y!ai@NudeKi*Wp`CJmc|MtAVcp+#%uB7QlII zC`eZY9|q5E+UMwCaq=zuL9g|VD{m?24){#vjqQq85rN51yrZtwS3rPV0MK8 z8y3Q_53e;a`|$jwf`1ntl?G|SqyxZUzCU?0Gqxt`&==OE^;= z`uuv5!nod@t7 zM_LR#1MnULv%K~bHseU~Y7Oggq>*qm|C!vde+Xf;U%qITZ}m9RBH#LTNsl9Kz}sNM>5@J<*MsvsINyT<4=(cH zVgnzK=t>OCwp{6jsV9tjbt4{)1}2{e4SXWtUV(F%#=JH7hw#kLz`zVsB(M&X^1@Ua zJj2v@_(sBh{YM#*&t?;bJhT~@W6-X?;q{)4E(xRi%zXxCm(*im*3aS^{6qWYxKk;x z=D&?_ln32c>=OKNytVz$s3O37<=Z^Qb5LNdk1f6wh#k3O$Y+Vb8eeN*j%D?PTXZ)W z#`!o<`%IWQfOoOcw2biE(Wonc>J~h+B>a}NiZ91M^tXIbL)ec$GpxsvTJtUYlV%Uz zC9w9vvB%(bA40fg1iKB}7Dk0IcsLn9_DcBC%&Q&~4+G^g5j%2^XO`s)oX0pD1wOGF zaI=T+7Fg%uK7mJ!N0=T1pAT4Fi5qhV#-9>+R59R61GArLF=0sSpuoD^dj(GD&h9GL z-g5!lcAW-{DSc~G^u!2|1XF5zf+-L8v?NB%Q>g@M_wD-Ha1!0iUU5O9~kx_s3-AkyNb43JAa z>S_@lB?9ZVTx;-5d%M88Eq8eMZUeI|?<4HDFX#h*3{=H>jXw_m!*qAMwTy4xGA^7Q0^C?sWUjB_83~E&>Ce4mc&SZojn#&vexj_IdVU z(|#Kzyl%g(CLXr0PJvHg`|UD##+hG-e>-w@`waxv?YdcD-F{mH*6p{|z-+%A24?*G zO?bB7UIR0qi>|>xqaWBMurA+rfpz=s0BpzWPU0a;@M3=2w!BBeXEPJKbQl?%n;*obSPb2N!v8u?LrUaLR)#49vD%X<)YHdM`{1VYHVU@n|(L`OK{s zJlkNNz`89L89d9V#0!)1!qj+S>J6UpGkDeFo2T^$^Y!r)k&wCA@Ce@Xku!^tQz!f%UjtV(^T!O<>)wcX{}O z0_*(j6vkOgw(Yuzc&}ai zux;bT@~s}POLTZ?;}srUYhYb29^B%=tsdOw!Mi-T-Ge(kxYL98cyO12*~a%8m~Fhr z3)4&3jMu7BVDi~wV7ARxfpr^iH+be@rx#|A7pB__(_`?AXTOJ6?bm`(A;^lDBRT-%HqU7l?;V8lH;N@p|lT6nvktyRu1#&*7(bjAqoWf@k)Gc=DjO z<2GY=5#gAzyI8{LvAe>+Z145nx2*=R+aqB=Ek118_$~>r+jysmXB0l$C$Jv7_ZvLp zOkIb6X6&vISdZQ90_!&3A+T=aod#wb?=~>w&%0j7quY33V0Jf^0&D$Gm%zHL_X@1r zcsF3%#`h7Qp^XpWO&#;{hjlTL*pFPhQhiU|qc-UON%cw=@=;&u_=*hpHsDz!(!=iq zZjQ#kk`*MBdJ#t_ovfbz^W)Fod*H#2XMXX(Q(r&$^rO#w=^Ov=%U^3oxEFCxQhWaR z`11_&#Lv2Vy1(<~?+_;R&;yU``{8pBewSY&Ag)_;Y4Sw6uVftr#3#26@fqNG58f53 zRmq3dFtuU*EETAWlG!*YJedg8iew_e_xHg0^euSy;wF~3NjQuzi7zXeC|m)c03P}H zEw6`F0yqhsFrmjGe1!>r58jjR4QSWx2!Ab}yYRGhzXh1r!zxELY+ZNtraIw_f-5f@ z&gYMK$6snt{4sPU{unR$qvuac*YTIFHgDVZ?oFV~oEtcQ3kSs?LucZz7JQMvnoRuN z@LKpQ8x(&Gor%9LlYe{gOwT{^-41+!y1=q@^@sJcBFXnHz;DEp_5ao^x|>sqM_JY5 z$@VZxed(2_AARJD|M8Wse|zF(zGb*J9gg*UKOjC)#q~4aJd4ef9!~E;Ju6g;lP_Xh z^Ef4K@BZ&U@T0lUeCdhLKmDj_CpAgSe}J$7e7H_f>v3;LvVHJk{Ud%d@Ch|R$wX9=~|Kh+d#V1xv08O0RC(cwL=2!RFc-@)M_8)HTh(`C2?)D=mb6x2N;NU6{>znTnBd0glZQHOO9KXxskNv=! zvZZNQw!@@awaA5K{3k0MvbDZpVMFt*8KoOGENQCS928un?MrNJ+fH*QP=8#qf@=eAW3qA@|Mw&wcf~pMT&-&pfi{_uqcysVAi0mUJ{B z-T5d@T>(t`$VZb-pYX+a<@bx=^CZRN)|%?7E?yQCNxhjG%$&mP(Cz7X)1Dsv{h9)u_oytqze2x1PO;_8>F(Aohi`@7LUk3&>I$^; z1oG-KuboU**P;KIpqeob@qoxb;61}7GlmNg7t=OXk3-D+fre*KKbY|Bc?T1oJ)sSs zeFXj!Y5ZpmAiU52umObk`Og_Zc*{TYH=&M0sa}Ny*>dCWEAadG=znQ#%YI;<;>mq= z{dQVxg;QoMs@t>)J=iqVwi%bK+qAt-_v7t49`^k*k|O)if7cG7?F4wn)K*KvhR1p@ZI~(cfHy29r)BE zs(eQ`k$u0*!gn7u-*uVqvebsH8#n{Pb!%2v#_v9CzH7yIw`S3;Bje{$j{m@_r7xX+ z6K|gS=Akcrv->O0{+_bm_kZ*F&-oqQHuAeo9G?=dzm*X-ny;m)Tg>?6!VgpIhpj}D z9{v+1JjdrAq=fwJ!;|@H`1#46r+j|2ujm2uvulw2+~)C9Y51Xc?OU?~l(z6!V))Ba zd+vYk>%{Us-8$O-^t0$E+jSlX>a)nVyHM|lyHh_GrtXg9|Ndc;-Vr+grS9IEMR$%I zFSFF@s`7wi0`vbK9Irh|b%4v`AYZUFC+L_rBp6!cl6vUbUW9%sS3TBo?*S=C$}KG+ z{<%Lq`X`6q72<#R;|HE{_)de*f*kYJS6%#jHU0#|&vNgYTaH#zVg)5Aq$=WG^CJ5+BC{!53+Ko(ccm&p+`4!KZ+KC96jN zZ`A)=@n0^P53E4{pHM~UW9~6IZD$aHszDi8xhgtdu$Semgn7&V{e{gzxttb;??2>e z=pjzSSj5Xx$n-^_>eL(y{Z6DKsqT3E1A06ji8&F+wL*2D9^VSp=kYvV1-zzJu3ECZ zbk(K7((+4-T)HJc9@nWVRF5LuzzU8kyej#5JjktHL@I5J- zAM5Mhxp7Od4u{ZgygHVT+0pQU9B;d|4l;YwqK55Tnh4arvuE8zd^VL$nplDm&rn;+}f~(0((OFZ1YqmCQ4z}H}ZR7gQ zGw{%(`?lcv`a1Bu1;hLWt1BzZR}~eq9_W{P!h)hJoD$&3-Qa49mknF}U~Z;RUDw>i z>Sn@L-_TfhL1A@a8sp@9W?#OSET+UNxpqPElpv_CC|}`cI=|b{_dAp)lU!B3N~%)f zqE+Rk)#X8T=|apvn2x>-&gh%Gw9G}DCcRWFJza(3>u+IEVK5(5y`~oEKH(h93>OD0 z8k&OgX3RLY6;(;e%nTNrB3ZfqT_~z;!5Uo{GEpqlBg$8jEC<10{uw+Y6 zR9ICwt#EbWlqmuF0e=i)FT{S0ebHDIL^34sVq|~Z_e0rJ4! zQH=jl-EY}>z0gCC%}Y~Z&piy`;`?{%6v!vzqn8Hx9&#+NX&gxh_C4j45|1D9{V3v< zezptqmTZiF-~QzzkJuRxdwq`MRw@-r9Bbk^our<^=spQL3+ly|A#PsOiLvju>G$!5m~Yo@ zZMvbTaCz0*vbt?oZ{66~w6S3eI{d<_MHS`CO9^dQ-@u1%yoJ+rF74H|f0PPg6j6b?x}N#s_Lju%@DXRk`lIFqEW6KV_U($C;A*!t&#oeUU1!DPI(9Yh1g545l&L zC$@f=4FZ;_aC@BcnANEux2~=AKgNDwIPmf9g!Owx*b3$QhZT0hu2@+etXRElnXbQ#lkq@vmN6cw z+kxte>DLfnS^479)yt|~--FPf`Ou>k<4tM# zJr`p`MBWQoEi5e1`r~|r<9B(64_6b}TQZk9-eo~U8bl(391xCVl7G}=#Fs;%dQitB zQtE@rN$P3znv`fOmpW;gbcRE#616!%nd0ZzYOi<+CV=#|WJLzSX>D0)b!k*|*7QnMhV&R(SFhW&DZnCBU31;l z+nef&M7)g(hU9yCKk<~WD1!)ZQnG)XP-@Pkjv6HEzvn z*K=&vOg|>h>q|zk9*jkA7u7dZhWMzyp+3Y%^$lDwWjyKn26}*d5q)eXy#hVKQGQO> zE6^+4i|`qiu2<;Mch+x>KujOKyzxn|ZhSW4`67G+;(M%@ z?)mN0k16Ck=jGqlZJRmBwhEycWyIKA{$}dWM7DFKApKf@y~CTMe~6~@QKXaUrtHt> zJtqB+Ctq(pgN$dnYWnn*dKEWXx9zCHd?qhRgtOya0=W2mjEh71(HwmLSjUrh9ytz5 zvpMR4r&z<&<73%Ne8W{)`J!c|tI8wo)92!2BbGKLz2AlX(K;aLA# zyP|Y?d0^-6l}p!Z$yDV0@e2KZP>SwP%ibnvVAKK3bqNP8)0Fr;5I#?}d~!Z-Gmi6l zPUmA%XUhYcJGmtD&VwLdx~#fYm#+9wKYmUp1WaOewDOj{}1>!9Q zKLL{MQZq(HwM}txO1d!ru<>DzA0LkOJafGgDa*EpBiE~F_<`4}=y#dw73E>_yHclX zpp~k0*|N2|e%N~DDvPaFUP;B*l_-CZ1aZYxmh?Q1em7Bn$8UMLN)u6bXkJ81FLT@( z9(SDC#?g>`F*;m{K42y4Tk67*8zD05OLm>AK#LT+kneGN6TQ-Js0Esy?dkfLZa<%- zJX(VIg>QW2U0R{4(>yR;3fm9mkp0+hX!-Q@DU#OA+6~c^aL%$t`7%G_<(eYk+X-q>q38{dG~Z=? zWUQ0acay_VOSnU%uuwEkQm^RwQ0f)?KO28gWb0;s-1dz9a|3~?Ml=2t3)9JZ>ne)00bysg%7q__GCwBMU z8QyoXi`uc@vZf1v7vcNYYf+m$m&{^M=4>}+J)0rid;#Szq1;M#47bAP+cck?$Mjjm zj`_x=uRwoik|={H7qKGKm?&2XxKwm0flNI=uGDP)Y0W62mn*)W$f9+8EQ}}GA2Scx zM*a2RJ!2RyZeBA+WHm}0m*@#!@;xe-WQt!_5(h?s$$eEG&ZA~8B%t+~(1$#}AhbVur9@d&?O-Qf5_Re~8 z^z$E)R|nc|2R9#TgXG5ekKEd+G49*5WttC_=y;j_!L8%*_!3F)G{yeOUh(}16p6T| zU{hLpU+Ko>DayvdXQp`c5}WSD-DophnboyEZ_P?+ znL2JBu@7(J<`D-&d~_a>tNU@Tw?*d>fx)NGBT6*>BF|Bm)jENHC2Oz#-=qKc;=f#Oe(~45Uzf7)o4rprJ5v63eNN;Hx67Bm zM`89ZJAAv*{FPN@LKQeWF=~EnUbzSNo)AxGs?`6!4 zcX0cAv((Y;@6A$2x4$>*ExNxq>oxB0g%wS-UYq*Fs+3`BbX5C$v()RcznAqYJ)W{v zD=W>)C8mVsHA||htMrzd$e!xxz7&xs$EWSr#pm3|W}wVt`9{oOTpYGlB!#i!cvz}s|Y0*loUSLOnF8M+Q$yk?t{GMv=COj?- zDKkMApD(FeJq7!Px5|FXUbrP0*u1Roe9vE(>eTUAIb0-}_?*kNYKg+Jc_{;R!onXbt1njXLlqZobzQ;-mAueIY(N-#cjV>GQo@ZC{oL z``L${d*WvgJ$LVc=)TNAzt24HD>3$I>H8^pVrSgCQoY9ao%gi>|4P;_{hud%Vh)J^ za{X=0`<~HbKKtl5fBrW#k3&zIsTY+_HqB0xHFann_m{HM9Gb@+>+?9C;`MsY;||WU z^80I>$93xOuryXv6x( zbz7S@(pWWEe?w5eZd-lP#tl<~rWpMCv=`fg+4EV6aEW}1eVQ3;ADFgFp?MJNTGqQ0 z;kU0ZX^E#ly$oZLotDpFMUm;tH|fhuOCNo0Nqktx%*YpKY7z>&*82^WrT3>&#=^R5 zTK?FT(ae<6bu0a+aV%zn9*J#EXO)>t)Eft4NW`229r&hi|Zw}%#xw4~*3)5zKi$IH|) zvToaYmbAYXJf&x0eRJ!!^}uu9UW@0gSv`7=8n;eclgDyD37SFrQtj^k^4E+#V2FS0 zr%(4fd@JzWC)#eFd(5-jJolR?DwYnHZ=S{GSz(^F=Glzri|PbujH3RS+BE)TY%d`G zhtECq>iz#tx*fo48zI?A7g?)+SdE6KKj$_keb3&*NasLy(9y4j-qRO}oju==bk8UA z{AaNTgX`)0anpyG)yA9f* zl>Kfi-X{~3Tod?DUY_&(Y(9#x^tCB+WTp|PQ2jhiPXL&@!@ho*evEj2uJ?sR!?^y< zd>Q&zaxumGS9%z=Ezah#Q0>$F1b8}o$Ntmck2@?O#=!ikFJyl6TjOZJrp8?T9OEN!BT*z}b1E2cZ#BLwY= zcC1Bf%5|HX>b8ncry!(`buPFY5y`3lTxRY3iH=`#AoB`Yq57E)C;bfl@6i8Toc|qX z=k>E>)W;5Y!pVHmzF~{nvevgL^XCNaN$g8WM0$=szqzHlt#OMmLAx#y%R*FNlLQZ+T?Hoi->3KWzk^H`%b`DNXX+ivyQ<_6MN0L(}xVkjp z9q@m7IVDR`Oo@(#lqYbIi&)4$|<$x*=(L|=GkGMUFNyZJP(>@?n&}}V4fv-#>pv_8sAq=sR#b8s2Azd z_Vkny2PUVq>F}B5lt#RN>&hu_yk4a8WZSRzuNR?rd%KPza!qC($0YS~l70%U2CT0< zmHFFf8!p6bNAx2dsL!5$#Q4jP3vK#89sVyZul%*@M`mJS==IT$Kx?qMVZ+92ZWw?b z%IO;@M-N8s81shfNAfXJyp{ALoHq-X0@QVikCZj@g`30$V0y^_^8}b1U%)AlzG;eXQO$xnrFLt?lI49^W1Nq zI2=mWYw(PdJBl^FuiQaDI&Ve&NCj5JL^m}sxg%eP&n$QJV&CdpSMGS@^&|UW9XSyF z$eS&96l*?1J;@Q}4yd=0uD`V0@wcicIg(uB#+b;a*vQh2udRt{Ng%5%AFQmxeq8GH zVC0pt8RV7MPft=ml6<{&^dx)Wr}&N3lhh!7j>q)hEOd?}ue_D@Bng!ogrL{ zi}9qq!gH!9uLOAVq+iTPvu>*9v3 zn`ah`E*LqoW#PJQ$(G{xs(I&@mCh}lTcV~HFFdz=`kc9HX7TirbLW;#S0(di&MGaL zxlom!TU>tAdl$}AWwXnROG~EDQDuu4O`kJwR=Jv9vT)(N>9ZE8bBh#j~T1dG>g+EzE}!;7}2aKa7_-8<=w%9gEldSyoClr7ny zo~_=xee}Ze+UCZFZFPw;xuxkwe_1mooM zJ96a!<56G!&XdW~Bu_8SqZwXe%;=GDV!lKz4Hj?Ta&?p9rpkBLHI*e)J-sXyZCL;H zrk2F;)U;qjOU}2lI;V^t87Nh{cw=kf$KH{>;akVG9=EOG+7+X|cJuI!J8~`viWd!A zlu$TywE*tr3%=U5^Qp-^KJ}|PrNIdGc(73oFAl03_5}0h4bMpoA2#8F;nyGBI4vmN zIpfLUPb!ta-~%H*IPW9*^=Or%iQ#H}QQFvo3#O;+^NcF!6BvE#H{< zq2m@znlQ0W;eYncQzreQK%XS{Lc!sm6x@8n69rEcB(D9);%kn(z2JrHf}g6}3+~9e zrQn9!3tAcu-(K*uf4;ro_JX#8I=p^z{NL5#^@QvX7wq2@Y@Ga$!QrKsPkUeLg`eiu zHT_g&cl_du!(LQh`$EAy?vkSlUin0gl zj(_6icYJBx@X4>PU9zPG+gsOd+W4NI4ZC^OnyWYJqeFjHed?2m4=h{qLZW@k)`sgp ze)_O2+c%$=7(Md#`qGcrUl7a<3SWHZ{mLGt`{}12T{r5Va@C~KBhR_?l(VxYWHnw^ zntCS=!o@Mq*RF49xORq;gKlRmD&~1q$rb0EFmpzioG;rs;*4P}I2H+K;BHB^ZJ#-; zu(m3=G5baJO!kZ?p1Ngx@}GvkJL~1d56&p8J^iPzjN)0iKfSy-QF`hbPhR?gNsYsw zJMGqy1)J;gaqjIM1y3Xj)|4$?dVAuxqYG9o+L0*y)Pi9J7vG+kJ+7eQmc*ZHa%Zo} zU9{$#IeQb0|In6b89lO)$ItF4O!4&D(IdY$d}iAW91?ryZP#qRMJanyY#xt_9aoHl zVwF9JcG)+A(!|YYKKH=9tc8i5@f#ND?IVBJwla0o-qDA%`S-`{S=Y_@zwBQeH~Tlo z@h>R<@9f#X$u8{tUe(xdDtr2Ci#h&v$=KQ7$ZG?Qg_Hh}m^I@IhY}x3%>G!SF!`mr zwmUZjMgLTU^IR{^UG!)LPH_FfXGV{ly5NF2!R)PX4}N!NqWxQcO!3s#(IdaN;DTwv zoS!G&sS1C4{+#YH-M>5kx2gNiA3btS{fv#B!9UIp<`-Qye9DZJ9NU?fGcD0IQqJuR z4xWEuP_VA3Eobh7-PyPA*i}2BA-f@aWA>~mS7#qiot>Ti^A9Y@{!#fCN8UYhLH7Tw z{pt;8XP=$j)PCPHXa8s{;I+%|+)T{b*$o$7KjE978rwUz^jqt*Xa4`~y$M_s*ZMGg zW-?hJ3#*6-hae`%mW@rNB!r+S3JPj#wIo1LluZKemSJ>)kWLw}4Bvb`h)A_TSzT zlx}v>)>_-!+k)2aw-wvlYkRxod(KRvxU|>y|9;>1zVGiJeV8+6&YU@O=FGFt^TeH3 zhA>l`!W+X=lp)fPEaAmZW-CKPA*L*$B!o2oY0*Mih%wo_mn8f(b&OCDQWvZXo`wce zW2jBv8KxmMHK+sCx+DEZBf^@}uM6iNA9l+5sQ8zmQ3}%~Mb{M0d+> zY-m8WHTqu;p%QCVW!XY)90GL0rN{-`NpgD^O+)$K1YxLlsh*nxpa${y`gjl(LxNMe z%vOWSF}!TBaJ(tZ<+8d$z`^JNY7Did8hI~XyR*h5Ig2s#c>zi}=8SJNNE;z9vm&&9 zdy3**PN`wcS)(*Hp?VqHeqUX>B5let`QB91x>WQiNhkVZSX#!Wn&~-3n*O{I@_P!6 zlHulRAX4>+BT`8dD@Enz6)!h&DMFDiN2nH(goY)hz80KULA{h1ZMEE0<+S*hm&cB?s%$`mE(DH%K#0ZRX3@Uk?!Jh;iaY9&>&OI< zCFBDW(mWG-&k{EC=Za-L6VK{rkIIru*S6`E`$nxVJY#mWmjKQQ1Eh0iYvLHl#reQX z&*U5SYCn-C6}j)4-{7ck4%evz;sp5v&YF1*^9KsnfJOf34*E`^wYF}Ve_-2q@!389 z2$Vg}WiLic3BdxwgGdfNAPJ>|4L~F&(!Eci+g`2~$O5Tyl8RG}WuspjXRyvAAD*g6 zibF<{Q(3LR>^+WocBFxiEfrt4x}xc30f}2;5ilC^J?EW*<(6ErhJ3<#r=S7(GTpkd zhInndW7MN)+$F21ta6r@tlloxP`8m-Jv#)$=P}F6vA9`qa{HS)l2Oy1u{yBQ)mFEV z6_9TSngfT=6E!R|Gin*6&J>K2osn0%Y8tDmqH{zfx5WfeWdgzr5-=Elr*=11C*Xlc zn*pV13p!6*C?U3Q)T)n)X3_KA!?0Eh=@^kOoj4*`lps;2!L=ie%etFd#ZsLEap%rq zi5fp*anJUMw3VG->LKMQd6Cs|xZvk{+@p9*5hL!)q{2TnypxHe0<;4GddB~#(i+W} zr{~oaHPnqtXu+Q_30U3r0+#)76V~P5q7qz;w5ZlHQJs_pPo*Xf!!(3;K)wWx??GbA z8DT9H-a6u9cw#xVAd+g4O{L->rO%Yga_w5b9{+>>@w2fmOnaUhpn5tLiEGi=64i7S zBr=anA0`i1YGRbr5V$KR{+hVGXk|vR{}VKoSumnRbMd~IO~U;`&9KmIs9RDjrb>}l zC=y;+pSc=wkC(=A8@Oi7F}U&9BJLM!x)tEv~2HIbXtdKe|Sj$cM-uuhmfMBUDRLr%)5O z1*@LMWdRkn^_BE6=kslj!*p?H1!PTBX!`y7{E}28Hoge61wp}FQp7=$Mj<&&z>Ex@ zP6b?0LRggVMnkknJD2nD?Y`QohE=_hNj-}5p#rheuYtlM>=4%`aUmYF>cq#5&4O_4 zvGI#kQ)}IPF2YWGcU!=;2*}!YZUp2YT!bjdLD(|l=)|lM8u9c}M;L;jmXK@E%_kdF zO3VEZkCXgYkWMh#I6EX-TRYrS#w?H@Lucv&E0gK%g0=&mwHj*f9Q$s;Tl8tvUH;VU ztSM#Vj=^#3z{Z!UT^nc~x!9Dvxl{oBF@vR(XJY!3cJmsm*nC zevVS}`ln_-ZC~0QSXB;uvHIamJnuf>7f+xwQCjtp?MR(~^Q{h-bIHCY<=VmJDeowy z^Bbgi+=0r6yQ_QEO;$hHIIhd$|-sgk6>I8i>lb@wL|dRzqVS$PvFH4U zw|kbf4gbkHw+oFHg=Gs^bQVRA=xtgRRR8#|Z2&DnI+A3ql* zcRr9Vl-DnHuW*@lf%=*i7=NXLi1dRbCtHVp&7(qPZ0H&D8bZQep_Lw!^^E4VF#{1tHwcBwN>|-NWbDWr z*_>x8A0H#Pj|I#~H=qX-@C;aEj8oezjROo>$W8{l3MlfiOt*&n>f-3ISZd@z3w(9K z#+hY+*XyP>R^!fz8*Oik6G~nY@6|pf_e7kDFn$?<@4)4OnL-K}IV(=CF(LnCQ8J5F zfO>z`my3E8$MX7wGZQu`>w+TVbcQJ-vy^8b&&#;swonaDrekObe}Q}{!X%I*%$ZKo z%phNSu;vLApBF5f8YEf4`h}a9+x(&<1&a(OFAmj_w7Ygq8(>j0=JI__&$6OguiW6D zRE$>kN=Y=rL6YpNFi4hs+#k14pNYIK7s!{$YpnLDD6WZVViq&DsdXej7gF?yJA$je z?v-IINEYGa$?ww3B8J;VYV$fpwHV_WFa}=AZaN!K7ubs2!5vgcus&_{*K49iJFRYE z#UtAu8I>S5YLgrw{S~6hWL!D7Q(S2ljMB5VS%vq4bZ()6{h|bg_2$aO#6xueVF~bc zorvTj@^@C5@qzt>cR;+cwt%n)ioW}(`nv=ELKuUHqd&DXeawjsL=GTH*-29EFvzOiKy4`o z+4w$S04$ z=E+^duw~$7Ws{&uK&eL-0Lica2$zVHPu6XCZhBmFbZGdmnYE|0m~^IFg;D41PZzp& zG2IKhUU*@lFxVZkz~fG8OWGV0t?Fc0YGO!qNS2D4RmKRiMf*?am?@R7mun}8nM-GW1Xi&DfJ{hCDGG?$WT{B+xKI%?g(tj>AG z)BN%k)||%RQh+)p6AMQH4$row zLw=>0J=7W`DzYIiQz;}-LQ{+REK2^x1(XEX8_1x9reHpW67uCx(vb|Kpm~#*OhvvN zN{Hl1hHOHhwe{voRuNQ>{2>1^I4SX|ls*Rq3X_DHWL3hbbB?w-fZMg~Ou9JJ%%?<3 zSXGQj;$q^V-^nFBYMqWZPBvpM#nG6(D~Y77~7%DYi}A!sSjz*|kdzM35NU(A$?(pq*R!i9g1V zQIiX^Dm&Rq)TXz#Hg_U|dGjjvEF!`NN8UcFVFl*|ZiM|@cJVpUzcCgq=%s{0TKR5d za{$#m+?#0}{Q|1F77C$OfHr{D0BZo&0;~gA4{!&-od6pE?gH2dunC|YU^BoLfV%;< z0&D~L75cmvw)X=(4)6fLLja`yFRy1cfj@ufL#EO0PF_X1Mn!oUVz5{ z9tPMC@Fc)KfNp@N01g2h05}NnGyv)EFl?Uzc-FfQRsZw5&J0|oAJSGLU$S|o3dEZP zY>Z3loav})bnZ}KDmW#F!ejjtO8jT|*OZ^e;cfnB!WT>!h5Kk6sUot>z+PYqG2sfe zJ;Sw?5@6?c4kv`0t>NkR9ixjeJ~PI!!`~(ifFyz5I^!^9D^0^9x`^wft-|Lq4NA*Ufe-bwS zrdO)I`cyLTc*R+ZzA9%F^N$ipRLAF?WwaXh`O$c~vuc`) zZosb5d>UdB_y3qSin5~)$rcGVjNBygcy79QQ%b;{k{ZdQdL%g(B^X4{TlmztKj-Hk zRKHK3!{Pn~^^I9)K+XgP$Q@M@8I}J7=#PpcpB{aW)vD=be!O5VoUE`|L^(5?9vmEg zbhAPSyn_Zib=fg2kz#?_vB#c%GNy^CV-ija@DssG!Ox@dCgmpO?pqyWlSB6Vz1kql z#BC@ZzoUo>k9s?(Bc-IQu{Hcvu0hn+{e36dPG!4z`bN+OcAYA zC(7|JHMo0=I<8<{egM74mb)~RB|xbXs!G)X`M|n-t8hUsOJ5Wzu^V`oZKFBX#q|8o zgmoECSeJBAZQMtdelhI}tkDsr24P*6ms56zDC2>3u@m(LVO<>9t|7V$j&&Ieyo=@x z{mz3IB$X~5(OlS>Uf^EZdQQaxo4Oz&c-qng>?)+*3Td8p*q|14HnP;L`JgDlwD$P! z9}gj?SExcxuTVuHH#}$}R3UhciMa*nCP`;MRJ~#5)f=k6OBRp62`!DY12==U z(aRMXoc50Um@dLmO|6T!qH!Qlxyc(}uSHvh6F_bQ?FGEz2zYZ&&((}zQbirg zxdnsD1pi$#ZsVB6p{gXrY_MA-MG;*kc5CR(t9 zq&va{Vg-{$v=Z|jY(1Y}GEyl<+fm_*5!@FC*jd(q%Pd$s20jd^sIRTYE;p}~V5yb| zIys$$c}xx4iF|4Ml$PbR_{c8ze3J5FntQOU-pOXwua{mH3p#mKVvf38h={2MloXoY zo=`4%A6^#|i#P=Z=qEN#otvOeqjG^~5#%CYDhoH4DiAk^?F+gosdhyFnAV(5^j(og zd$R_Q8<0Ofx6*!dIfFv|(IT&PxIKp8=&&{eRI` z0){d&hjuG_BaYnPrD*oJFu_O(U1L6rQpgqNNw74OX4I+p-VwRrvsjl~wqqwow5)D6DxMc?p7B0tBI)CSvTG2K(&JKw_%u zq^RgQTF%~-@B+>Xn)mVOpuWc)0eGi>f9FVv-2B}yAzol!G zn8#@BqtxseoaSj~LgZLH&H6b~QU6@CU-HWd8qb#Wj?9u|-Fs1+CGnhz+!b<06drX9 zxukJa5S3hlf~W`mHm$^~b(OA&x`myowK26ZKp)P(6JZpc7!hin5oqmY7MXu8oV>|A zC_mmhEu>j#LaS536GJhwq9ZOnk!Uf=MCxJniYY*E8z<837UfAp`#R z>}f-u?wv(JH$|xA{lof)QMdl(@cGY`eL}YOZiJ7^_siNscbB66(6>Udrk9F4-Vx=X zltEDun|86gAmE~CYH4vt3l~6NnH4-B>KC2ngjE{r9Q^l;DL7QX&q6@-Twt*c`Wc~?FdJcqDm($G)tA>Z&4|`hCKt>1U z>^zVsl-#q~Et>bLaH8f+G!atQYq4Pb))N-M@qpqfPCf%I!1i@-HCUecH35ZhU#X$GmLB&%>Th`mb6crxigt=h7ya6jVZ)}IcD0QswnKyH2c@FN$ZB}8uR76a}-+P7hmKhav(jX6rIh~Ua${+AL4 zkG%CIhx@6pVV1AHm%CNkMUw&ds{r|H-S_?d(2Z!=?0~5`Vo*giY@EDc=7~Yn|4Q5+ zOx-dmQ4PBq_66>C6cKx_emiEAE$cdgn{zYrDNX{&YT+!I5ESOYXiEf#7t0=+g# zDy6P8FSE`^GmL#B-;k(Z$D>Q{d}T#Eo*X>EuC&qSs3WBeMU>la{>vzo%Ft#`zl~p6 zK!}Ah{^?L_r1s6=fJv9KHK_=p`1@o~Un5^uCe|A~f}#frp-?4HDx08S%!nrx_1XcG zPN$12QMzyI)Ka??-cQpcKqwq4A_F6yP%LxlDod-A+~~;7F05TL-)Rr2ao?Ib!(CWN zB;GTbEdp!lZ778h3cRK)7!pF^`d1l{6hWoRONv_1P!146QM}B}6N>&&w=N8XUvy7v zEYJxz=JEl5lyEjJ;0z%YALjy{K%5dA=)`;ZHryL_J}7D5h^+Ww+44{2JB^vbnSkHx zv_LJ8;`Q6~d00oHvyBQKh_u~2NCIq^hD=JT4V-MVju|;1A=tA~sy#h5P7t&Mfk07d zX3sr*hNX#=YJTFgfYO&dZIAJ^rDf+!Pj0wnAhy+!*z-J5L>kYXy!f)8Tdb5NWXWPb zij%Rkp3kc=`9Orxd-nY9;FG zWjL6qsk@0pQgW8Qkiv}oSKR97Q6Mf?;xQBD1OGfP{#zF_&?*j4m*#fF_lESOh%aQg zasQmGR)-*Ur|c7lAg;U~+YSW>NTuOT+x(vL7sv_esFh{ik+2d2=@=Y6kj0UXBY1z( z)EW8tgl_yD<4vOD?S`=Q)gtD&~ zO%r?cX^s9DKoNdibX=6xk=}9mxM-_zYy^Hx{8|%ERs5=XS5_{Y#2BfqR2lM6G)!sz{z#xOwK-Cws4iCY07qfs?njS<81i_#RD<{3_1A7Go*#pS z4Ue@a=;iT0ofixUfVhka?-$i&H7PDODURJ*=Z95m4<783p6K?(sHEaRNTmSUR#ETl z5Btu)r|1*f7Xo?d@i*j8j}T-JxJ3 zN1Kj6g_Y+;b#LoqcW~qh*t}9smpa(k;MBHmOn#_|X)re1L7PgHsmI$rdcpC~rxaLl ze&ZnRiSLrlqePOsI-}Jry?2z3#oBOI-=%>GALUg_4dnR=4O?;pYj>8bY4r zaY^|3ZRQ+8o^mdUAmCx-Q=dve06|YXbEfCy77cU{{sc6MJ=?Hq|IviH;p%l7ifTh* zxZJzI+Vcc4i6xe0c;7*X&tY()b_2nLFx!|C_{de;3+EWHR8&?A8ag?>s>HBdG#_-Q zAel%E4GvUVSgIuS&LA z&kBU~>^d#A9`OQK2jwtgquiO&J(WA3P968$Vz_)|k!jYp+PIKA$gyG1OLN6%-N)!e% zOMj?65h#%WZRAK1P@;6OseY7z#4(XY#WYWffD$2_H-p1Zmq-y$iD;e_0VOg3DFX4Y z5{OYw*d=0=_rnlkG-hPiC1Nx+?jj*ZXO30^P3|*Cu=F6IMgu!P3+Q?{c8A9+={yiC zp#QzQ*4HvrO^C~)p7=)u~eq$F5Q@Uo| zg6033k#Btl$V}6M{zWJJQr_`f9@kl3^I-X)C>mKr2KmQg+bPK+3h35z_UDKr-@#RS zs$56xbc4n^={%=Dv8}#k(gM}GfC7MQbx505%uwAUU3hTr1tE4x@CgN2R)1BmiO8nS z=zU5(rYEAOqTUp=^N&T4$1N|6t6an#^2uJ z6>>ar`$D=xLL>um8Z=7n!DAeAL*y-?=B#aULc%-?RiB6h()-0dI}Y#Y7e_}vcT60o z#}_8-mfX1%&s5#65itkpy=o&xq#cclM1a&EfcTH2_Xhk|oua(-vxiHUAz#?XiSTV% z6QwQPK)HT^*p7D#n>70l?l`zD@7cjj^(}ML9@yO>ov%!3%6iW9++tC8q%b8aAR=J@ zM_+&Je?DR3hv47&|`eR>M)2t{&x+}awx@5$m~oMXC*t8c6S#PfDfPxk)oQy`5M zCWbDW5xD3(5XWi?CwHo}C+$*1-YSgxMqgdvrIy1J%xY@qPnno{ z`jW*2R3>ys5brid%;GfS`RH{(4;U37LV?N6 z8_ETtvCg{0~MwLYr|8^71cM#M9`^MhVbpv5eS1+lpP%Th!!HBpo18h?QNA=y=>Ao9&K#XDsW#2^>{s`5C3d+%C0QGWPhA87|gK zNn0iycjpOcR5U|08XtYZ)^I1DwPxbDg}Q7GLC@QG!P8zXM18;in{GSLZnrt;L%Ab z!2pToVGS2NZz4p`>m7q}uh+*l(E_u*O+aGdH5`0$0^_o$ z?w~rO^%Tlf=WsMb zQ>e#fF4?u0-6PI+b+OjwH+JG>G1-}Tzfj=!#jIm8r{{eco%gD2x3Et(@j#m}<~1RG zENLL1d^&i>vd*OGwM$${^yqo#17P(o!wcBNvr)x=uf-0jK6{fXATnS(7NH9Nu^<3x4)EmfJO<4iRwCSLGZ=f*@?j$ zrsG>;AK^SBzpfjuvo+QE>GPVpWd|6K#ZQk0!n1@~LY;6^TU*=3UCbiX9bwXqFa$NJ zJnf$E+ZU-sqB(Wn3m?5Bh5A*5d=c6-qi>B@a!1sL;=_E%b!q z4C85v@^lP#vPhanfRAh-zht z-B@yBCxlI7Ir?1h+`mhD0+rODIfO_L5}`55FUl{%uUpYnD(E(~FF85(CSmHh=nzd- z)aFJ-b8DA8P*EI=EBz~Q-O3_6Q6#?5V1F!mC{FR5i+Me=(Es~Qeg1xQKZGCz z!w4aKK=<4)d`OtYJ82Y1wR5r>P(YTbHNnnPdiN!-qJL|<{opT25=n0{O0zHL#}RO9}{x~||iwVG1>be7ZBIko3Uo&IK2x>OaSsS8t^L)sNT zXf$y@)EyEh7jC1nq(7RZSgQ|8mhSsv_ZQBxTDW0?-SN6k~2I_ffa>2WI3zGcH zD7^C&t{mW_cl8)Ml_xy3U|_`V2~Ck!;mZ$2KcIZ`!+pm`FPe15VVCLcQFbIVlp*6u zZPy_hGl+PY<^u0qt>+ZJ>j;Z)28Lw>GRW;^dt5`=Z9(j_TcRMi|s5LR)` zytN}-p?><{VTSLw`Wd(SnYQ>*vS#PnoJk9m(#lQDV#gLe@AgRy_pDb0SsN0ND*{an zBL-acIRx%pD{;B2tOB!@*0bBxS8%-YP3RhqcO`JVG}ZX#{cB|?st8TXzl!6Xu->mV zie8op?mvRO@QPOsyP97((gXAm)J42k*e^$=Sg_XkZfKYayKJ2L4wqmZ05Gw32-;GTOV>+#~+BY^^0WhV`2 zO)AUC!~!`X@SU6^oLb@fxC(I|rBy)ZK~m!Ma}QND?hF=iSZ@H>azJ|=*1IIIe6cqk zV|TUz1$?r|(Q;ID3Gw~guQ(nfr5E*$8)yU6HxRB}SGpn-{{V=u^R8EB939yeGK%^5 z2pHi3^9^)nY2&m_6ZRaH zgD~NI*N1j#f2Od)7%P5fq&2g@H>ecZgVklNlry{Q>`LSd+r;3q=$)KjC*q7KU_+5` zx-npM8d-0kNb{p~jrlMyko>IGbcDPqvnxskokrb~bcj&>3-j67E;H-ufBM*pZ@16F)iq-o-O4q7d}2tLuIG%Ouh3qZAZ+*F-xVo z5KViS+G7vt*0nPm6gtViqSeyuz<*^Pm7Wmb+0y-qS<({LbFMH;YLdQlC`G&oWsSVE z=clLW*QJ`Khid5)k=c|PfsV7P3fspxm%6#&hFVu3yfWAAh=H%9^wCyy42H(L<+u zPOEMs92cr`@}FO3-Q9JeFXBC=LZ~=@+J%2Se;Qm3-hX@Fz=z*a=T8@GUpq*d|3Z$` zQdOSwrwa#4!)uw|i1VkvqtBndxQNCJ%W4;)C7Q%UH^)&s-`qwe zyv#_!QK=iym3x2uw4Sx@qmg;rtPDGIXRwZ`_`WyMF!=yJ8b~Gff?uP(81!D+QK7b# zaTia#x;i+!!Nf+^TVws-h?ej2v+XHOSDb*)Dh7#G>#3A8qF3WTk$jA&oec$C)!W{a zKEd&VAvUQqt5@pDT0I|dl`^+8-t=NwOEBTcRK&#FwF9t|oZ4C2jE?Ri99b}K?0ldE zRX`+LFtqa+3h1cQEb5|4YRrJzfF~m?S$|V-O>pOkBcjgvj?N8d>(AH7w$qOF&05Xg z1Jg&SBOK>Olc=);8$RyItkVN3!u#9P6;h+pF}HM7GuqL|xvX(fWn(sDDw4V*$Qvsq zixyM4 z1LPT$O#@c!O!S!%gcECD5{S=-Ivf7J08r33>8n$dZ@2m3w-`EX{DOGGi)C6C8qXwx zer<@C%@#d}gjSY0l{0iJvZN`}!C=isHDD27$$%q!rLNKrJptf-VD(LdDKPGwTbpBI+YyP3($ zhChv_s-Bd~&Y&U{`93LtSRF-+140nk9D&<%sOAE*HAOw`z{8laxVpD+lHsQLmI8%M zk@66ThGhq+LBUlV*2jTsFHq_y{zVZc>nBR^cIzO;%Y+3>1l_|NQb1+;CaSu+d4!>f zs;7+PkEx`Is-rB_e*b$V3zDhIsAMX@QR{zrKfV<_Q6hhuCln>LC-s3flH;;8w97u? zBs!sz>CJQ1>f_*nRT~C2t{F zPIr{OqRkFZy+k&i9TfRc7sMk<9o}G2-I10)-Wu}%)%f!&P(DQ>Z>(tX{qa|6V zzNDu0XPpw8PN4|{V{8W?i6qYeOF;Y0Ac8O?z$()^qG?5mpj*Adzva^BJIMRV!P09v zE==5G;{6`C)#%DGFwlJhSzd)OcBf8Q1a?w`dVo_A3$lg#&?GN{*)H4>XXg|u0fkh8 zD;>~BO3Stu;mx+H2$$2(!TKxG0nxbo2%=HT9}&g$NcOIl`o*t~Yj!?<&S0Cn#4V?W zea0GXir3k@wK&ABHK5t*7BN^QVaf931vLz@7+M5ZSPWG}N6S*c6(L{vYy^tf8epq4 zSueuT#ar2o7CESP9PSwnbm<#Gyp|vcVq70pYiv^Bj#Ti_>!p#fQZLyOUjbrd^@|%f zW09h2EoD8D!`w#jlKcHLeK`azA$MVrB2Zz>ox#qeW)j-ROv^V5xu6LL>v6UT_f9GZ zP3onoNs-aC^9>F4xIilP^_c`Y1Chd+DA$Q^Q-OFZVURG0WncRc(TT!>ZgL-kw zfYhXlI%P-tGLA*MH9*NcD*#vP4r-S$#^LM^uBxnfH2{g!g;XMCE}1wj*`*2^9tPM+ zH(TC9&=bKaFZba){#z}{8AID3)bBg_ z&uo7^MrNCIN>LJTiR5|aFGKC={;fC+z&Dzm4Jq)YmF)9u27)j&=vIK|g4>`=H|P=( zW+VzL3Z^5dQ97L|m0l%ZNn$BDs-merE|$WUT!#eAD*olxdZ$B0kPO690BporrjRJF zJODk$$5L2YCxKWB!4bs}NC9z?6d;g-XfZu%OLn6RT=D!Xmoqs6!+*ScDpY{bAT%Sn zh29~}VN34web^?#G4dm`vGkp$m&uVBD6a!}8p`~l+-^YCV$`u!MPB*m=Hh= zK>8%VE9aj)i{Jh6m!D$ubwC>Pb-uy&d-uaGU4p;RpZyC4Rs`SSp$153@n?Ptc)LiB z7~e9xkvr||OI^Xq6&`bm|L{JGTMAK0LnuKh~ zii)pu*7d8x|HSoo!g`zv;m^pg92{io`Qo4YEBO=GzZ0&sk>M}*XV(oRI)D!T2mh1# zBQtrudE{r9e}nnsztxiO<#L<xFQ|0|YiGc3s#fL4GufYktN z0M-H!GPxe$4gkVcZGi1v02=`|0ki{b2G{~{H^5eaZ2ga65d!$kaFh5t?eC*l7) z4zd(t;0XwjZssJqojO6&6Q!syI6yQ}01I@(9s$EZuC$1m*%tU_y>X;CXFn1kq=}LGs;#>`S%Ua6v^yWm%i80Bx^efmJMP zu|3QNh_UH|;#O$1%wiMQ8v9MMXD-;>l+1UH$)jO&& z%7t&lTyw0os_N?68b&mwvJ4DsE)-1M$9*B2YHJL9xTb&pXa|Q2-X2|FZ5Z>e9r-iG z^DA9GzoeBP+mVPNc7}$G!SG9E!xxv!sb51`!tkN+vJG2D*^wW=$HhakHLe5mH(x=b z;N{=(^yU3qVE-kH9fdF?8k8?6o-Za|@f#;eUqmD1HJFWrwjzkOK|UQFYa^E}ha+S! zHp`AErqZsmBOy~xYTh_!M+{R5vFyHCY)2|`|Gf7+37`b=le!&t6vX)M9U`=O1GG6) z%19raAJ&B)J9q{8u8~JvvnDRIBLM@Zo%P2_p{B9=-~VNYks|lO@43k^e1=H!FbF2@^I3d7S{Z-1pXS{uAZSeb;o6#&_|Gjw~kcE5>)h+bUx_o%#mMe-d;* zj7G{_%HX{TmNLT-yXy%lDLJ9^1lj_=@3gg0g42{KsDkc&o=qLX`YYVrp1sDMM7u~W%&10=&)Xq~UD zhx5^NpbcH{8Zd~MFU{x4^l`0I{t*S!tqwQPTqWJBnuD?`T>Gf8(H^VAx*%B}4s{HQ&=B z6p7N{y2DTg^fLmDgMK1VCiF8BU8Kc8rV+vb6elA<;eY!d1tT10gPVt+oBNA$5j<)7 z@;`O*JO{(#qN^VM<=6kNUhIu zqnt(b!j@`(%DPCW`+QZ5E_+do+n+@br_9&EC8g`#$P#8l**O+#uGN}ITaiA|l&04w zqKtHFE`$QMKup~neXd@YA~1)&w4M-n*Bqob=`&1oEOn@k@Dg+KYl%r_4yTr$V_OPj zEInzBjxD3plblP-*OiMyGTmwxok_BR1KL2iYIPEA-w-y%?;!QI)i~W*QD`f#Y!FmV zci&qPjBM_|R+@W^Xk{y_=$m9PrRdYvXyY8A}udl6bnA6&BzIVFY zmJ9I}ic8bk0Em4UfUUJP4fW$|tFlsYN=u*#W=po&9Omi^%g#-)B7@apNwlR{P->zn zC&!eS&RX;tiAG~CUXIdpQ?15~RWX8>!UTpYXHD(m+B15?%xv47K23}MiD5yV3NtLy z=0sScaYw0KY5*zK_e+sF=q#wohi~6hG`|!0I^zT=;f;Hpo%#l|GklN0@T6dG#97(I z?MT1m_KCD{bRq)o8Aog%g3M+nf%N& zh^GWGc-l+gU4QM(*FQlh0NP0e@MkkTQlv$nz>uT}v1DX900`{8mv~IH424P2>yASR z5QT@4KvNK-_6W%N{Eq_sK_g6!L30quI9_WUvD%qHOP+g$teV=x7LQpUJlBKe=*Pw7A|UpGr{d0YyuA0BYl&RfKM)L zEeNm#93{05xKbrI9+z*rxNZ1#W-A@8X#8)@mLA4QW=eNMvvs{WDS)}D;70C*yC*YU z3wJOFEFPEZ^#g{Zc$ znvAdl=Wu)EI9Y4t{01nM!aajP4);!;dLz`4^>_K154{!br6+EHwUi4MZ4k;~eOuv9 zQeYkBLJx_s0(1b`P|AkmHaNoH9S|irLfS*zdam98uYL?Sl62VK*c1QnydMQH!dwUo zPo6oy0;a$lQ~)#Kdo!;0^oOn+%$@hgp8rQfo_`M9dkWmKjT=EC{3U(?1i$dJM&>Ww z+k(uR0ahDnVddsb2Q!)tCEu)(8M{1dv*6CA!krYLS#Ve6XoC-BVky>5HcF>QxE;=p(hiRdAtSA#juVYu%8dBnP9LgC_^R#SlM+@y8J$; zb8pccm>0s$5!^@aI|*7Yg*WN?*x+)zKRQ2zSLWC$A2$We6hc1?SsFu9|#^LROj;g_&uugpVs~F<57sI0JCRvYp5C@!j4hOfc1i0DX>uH!=i8jvLde?u*-VBdW7Sy=*j?Hef1_cC^Yf=ex3B?kW)Z7PAi}>A4Qc z$gUn+GJU<)9?uhy!<_t095>E^}-)(K`wG5 zXOM?T+L6_IBkj>|v?ELOM$Z2uZOG%hUVE~JuUG%STOC=+WZm4zxH5Vxf>#8tDcHT^ zgV~+87VjqKP_S5T@_ZnA|Bc*9owEX;Ov@^%_to2DR_(dt=MQq%Kd@%p&v~2ref6^X zkAHkG@8-#mrk9>t_tlw8?ORW#oJ`3Jv+gbF2{g+Ki3OYMf6m+~U7a!NoCh13g!h(r zt@hRXdA2S8Vl!oZQ2yBXQ5sF6um1DCm1*w<9GtrQR7Pv#>rRKSe(vm236^#aQled^^S_(x0GsRJM0JP%_IVJUp7;h=G`WZ~ zDmw4BlQL)GbA~h$m9|%zW>vxt3y(`61TA+3(J8HAE@^;`UxLW2o z=9{jPpak#oSajI6EZ^<>uD7U!?KSY(4|wHrG6 z?J@e!6>;a1GrOG+-~9ERpA>=m5*3geh5NhybH4W6ZwfM;9q z8({yBjJdWwtS>YkKyY>Ylxb*6(zWe{(AEsV zT-{!eP(|9c?csd_VGDuL>#FfU`mzQaLW{(3aLD+{t`0zSb$jD9WGVz_MbaV6&G&G> zP-J1P0+Jy;AfVMDDBn@)tb(zSg~+!Z#mx=0V+nE~^C$u1rq6Uw=GsjTAif>kAL|Eu zWDHVh$C-+u{O@5`_D9;07l+)N4BGM5Wyre?l;`R(f?b~Ko->_c$tV5wK8N2H0_AriTr+C|g;4>WBeAfi#Q-Wl!{ZZgSDS$_EJ=#f51ve@1 zk|I`8&dP}mU)6LmU^MW;(iGg(ZztKh?NZxka8UqE7r zxnD>8#-POiGGRj!tMV}e!KDxOfgN<#G)#0>&YRyrT0tNR&OVaMQC~>L`kUkYtpmV+ zTp?8aR=c6~FThT$_idpoOTZh>{V>++(^FH1td4vqEOzck zR*-4vq2k&){s=4_jEzQEv9RSA)vU_$hWXr4a!hYb$>5K2UP?3S3Ts{9MhDB2I|?75 zzxLzF6Q}y$J#nIs>x4wT$g8QSo$0K<)QQPN@;yS#E$>*bw;Ae__?y}@bjg!Ze;w@* z;@$BGV)A_pWrRy{jyI`8D#?`b4v#}B0o(AEh9Q-NM(}<+Ln;YJ#Z~HuR08qfD@{Wx z3Cg_DUtUh8dPR=SmSWIbY>8>$VvuOcw&f;fm{QXcQ**Py!NR1onQSSm00ZRImNixb z0>~UXYssT0g7+%-gAhTEvW1R$&de1SYeudiH$#_bOHWJlqM+Q=t56UiEbz&)RykZQ z_*&JAX@*>eyItcI7q~P8?pW&Y9LxBfV}{>3mhwBt^uKe=bj2~^otCM-EVje!O>|b( z5vL6JDw@o?4ys_ax?oWQ?^6d(yAV&+XvkC>GmHj<0VWh0Sf@Ei^-Cjt+S=4=#1GZdLH1|1Z$=`H#OH}Go)BjQ*&+E8M(OxOsQ~CF1vMN zt&5})Y=Edx@Y0Z%XRcg!>0#f074w5^I*{HO%N4HXM%lb&o8Sh8+&V0uUngO-CDzSYg4XUtG{lo z>FU}WeQPhbqX2&+q`t;ujBgS68}*mZzlSmq)|8`vmuvr1X&bfO+k{wV7IP*C-kX8g z?1>k~jsD>K$3LupISrk!@zQ^AT?W~W_;&C<0(oG2s(=v?o8$HE?N^RW>%Bhl6ueRT z{}Hqu@OC2v35!@m$ry;;tKkohC;d;*-?MP-HZT4EU!ec_!}R|GT))zL|NlF0w!$hU z%jBe3N(GOJqa=u$2aBQ+ltjz8CGtm^rT7x|9rt;LAfL2aKM#q$$by3?)dh{ zg88b)HcL>v=D_u7tOSm%W$NkMo_n{;FF%|4zmVr1-kIYcVW=EWU{MSB;D?9%h_Cw+k zu8f|~=5)Q@PsT@|dgIhXNh4Hu-wXGj@Z*y?P$#^qt`jC=4gg5E+?@z8$i1utAag+GhR6*Y0La{I1t4=Z9{L(OH>9o%K7mMVtRWxefa-$$ zRNVZM5}9Z6yLuZ57bE9_=#CDbJ^Cp(z&HC29eVB1(Tm&;i2zLkVRAbM|9#}Ez8$bb zR1*8Ye(mDhzi`Flhu%1_|7)&z`rSk4ph#|X|G<&2p8fQlZ@H_ICQrS2>=)m$ub;Wl zdjfXIUGk?N+NFKx!(;oOdhX=WxJ#$Ja_Zd|pp`$2liV*^2jtq%?mT@Fs>yAV;iGdf zAHEe%<`i~Ox_6Guuq6%iVN2G~&9Ei+TL)W0lUUf2J~zOYtgHKAONM{YyHBng3{YYz zpIBQq-MP5Zxx~7xtjd{}!}Uwl6D784M`aa+Ea3!fauxElO5j7O`L*@jG47IKS5@Xf zc={^GGQ!1iLx~{AAri&n%GyTPbuLGSNyPmUeiV=hw79mm%0-MMH3cN<*5d+4jnhmP zSW+28-r?)XT)lSwxepG%&Ce(74xBX9U2{H}JA*F80AGG3>63Ixsc9)h9O3%b^2hWB zQ-vWB1UwK6$_%B68D*x@L_@mCs4pu^EibJoCGGz^zoGgQEFn)6@CWx7zMA!(At(qd%xe;V=0=fB)zV{697Yn9BeF literal 0 HcmV?d00001 diff --git a/mes/qd/src/views/tools/codeGen/codeDetail.vue b/mes/qd/src/views/tools/codeGen/codeDetail.vue index bf35eb48..14f831f5 100644 --- a/mes/qd/src/views/tools/codeGen/codeDetail.vue +++ b/mes/qd/src/views/tools/codeGen/codeDetail.vue @@ -11,7 +11,7 @@ - +