From de3a4cb120e865cb9aaca0cad743214a0db2db62 Mon Sep 17 00:00:00 2001 From: huangsheng Date: Tue, 30 Jan 2024 10:43:11 +0800 Subject: [PATCH 1/7] =?UTF-8?q?Effort=20Task=20#9427=20Cost:1h=20Left:0h?= =?UTF-8?q?=20=E5=BC=95=E5=85=A5nacos=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/resources/application-dev.properties | 9 -- .../resources/application-gray.properties | 9 -- .../src/main/resources/application-gray.yml | 3 + .../resources/application-prod.properties | 15 --- .../src/main/resources/application-prod.yml | 3 + .../main/resources/application-sim.properties | 15 --- .../resources/application-test.properties | 9 -- .../src/main/resources/application-test.yml | 4 + .../application-vazymeprod.properties | 14 --- .../application-vazymetest.properties | 10 -- .../src/main/resources/application.properties | 118 ------------------ server/src/main/resources/application.yml | 20 +++ 12 files changed, 30 insertions(+), 199 deletions(-) delete mode 100644 server/src/main/resources/application-dev.properties delete mode 100644 server/src/main/resources/application-gray.properties create mode 100644 server/src/main/resources/application-gray.yml delete mode 100644 server/src/main/resources/application-prod.properties create mode 100644 server/src/main/resources/application-prod.yml delete mode 100644 server/src/main/resources/application-sim.properties delete mode 100644 server/src/main/resources/application-test.properties create mode 100644 server/src/main/resources/application-test.yml delete mode 100644 server/src/main/resources/application-vazymeprod.properties delete mode 100644 server/src/main/resources/application-vazymetest.properties delete mode 100644 server/src/main/resources/application.properties create mode 100644 server/src/main/resources/application.yml diff --git a/server/src/main/resources/application-dev.properties b/server/src/main/resources/application-dev.properties deleted file mode 100644 index 8cfacf1..0000000 --- a/server/src/main/resources/application-dev.properties +++ /dev/null @@ -1,9 +0,0 @@ -kkfile.fileDir=/appdata/upload/ecrm-print -kkfile.baseUrl=http://192.168.1.169/ecrm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJaOURjQXBIOGUyakN1RXg1bmk1b3J5WVpjWjQ0djJzaCJ9.37eYpIAbrLbxF4X7-7Lhwox3LFVuv5hl_dwWVdwg7r8 -kkfile.localfileUrl=http://192.168.1.169/ecrm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -server.servlet.context-path= /ecrm-print -# 开启增强配置 -knife4j.enable=true diff --git a/server/src/main/resources/application-gray.properties b/server/src/main/resources/application-gray.properties deleted file mode 100644 index ee078bc..0000000 --- a/server/src/main/resources/application-gray.properties +++ /dev/null @@ -1,9 +0,0 @@ -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl=http://192.168.21.31/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIya3FTbmE1TmoweTBmQzhETEJPd1dVdmxuRWNyZUQ4NiJ9.0iPPXwIiMHdQ0UVJ_bL5SYC4y_FLu6pGaJzmu0WV1Ao -kkfile.localfileUrl=http://192.168.21.31/crm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -server.servlet.context-path= /crm-print -# 开启增强配置 -knife4j.enable=true diff --git a/server/src/main/resources/application-gray.yml b/server/src/main/resources/application-gray.yml new file mode 100644 index 0000000..ee1c2b8 --- /dev/null +++ b/server/src/main/resources/application-gray.yml @@ -0,0 +1,3 @@ +nacos: + config: + namespace: gray diff --git a/server/src/main/resources/application-prod.properties b/server/src/main/resources/application-prod.properties deleted file mode 100644 index 588c574..0000000 --- a/server/src/main/resources/application-prod.properties +++ /dev/null @@ -1,15 +0,0 @@ -server.port = 8080 -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl = https://crm.vazyme.com/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJCQ0FuMkNIRGtvU0RKdjdJcDBrMFdqVkhVUm85NElTRiJ9.zzJtS7TYaaLy-VIANMU96SOw2r9driz-0Qxy-To9ko8 -kkfile.localfileUrl=https://crm.vazyme.com/crm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -kkfile.fileUploadDisable = false -server.servlet.context-path= /crm-print - -knife4j.enable=true -knife4j.production=true -knife4j.basic.enable=true -knife4j.basic.username=crm -knife4j.basic.password=crm@#$%&87811 diff --git a/server/src/main/resources/application-prod.yml b/server/src/main/resources/application-prod.yml new file mode 100644 index 0000000..9f5b4f4 --- /dev/null +++ b/server/src/main/resources/application-prod.yml @@ -0,0 +1,3 @@ +nacos: + config: + namespace: prod \ No newline at end of file diff --git a/server/src/main/resources/application-sim.properties b/server/src/main/resources/application-sim.properties deleted file mode 100644 index 0468a65..0000000 --- a/server/src/main/resources/application-sim.properties +++ /dev/null @@ -1,15 +0,0 @@ -server.port = 8080 -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl = https://testcrm.vazyme.com/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJqcWx6MTlJSWRRMTJwN2JKMk12UUNYS2JqU1BEcTdZRyJ9.DR3TgZq-4E8t2yjDGVLsat_EIOFAZvXGDV4ss0u-mYU -kkfile.localfileUrl=https://testcrm.vazyme.com/crm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -kkfile.fileUploadDisable = false -server.servlet.context-path= /crm-print - -knife4j.enable=true -knife4j.production=true -knife4j.basic.enable=true -knife4j.basic.username=crm -knife4j.basic.password=crm@#$%&87811 diff --git a/server/src/main/resources/application-test.properties b/server/src/main/resources/application-test.properties deleted file mode 100644 index 1546a26..0000000 --- a/server/src/main/resources/application-test.properties +++ /dev/null @@ -1,9 +0,0 @@ -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl=https://www.rzdata.net/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJ6UThLa0k5SEl0bkx0V2FXWW1mbjlLeTJ3OWxIZVhlMiJ9.LeOfenI2PMtXVL1W2sdwuw-YggAvXzV3Ne6RBwTef9k -kkfile.localfileUrl=https://www.rzdata.net/crm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -server.servlet.context-path= /crm-print -# 开启增强配置 -knife4j.enable=true diff --git a/server/src/main/resources/application-test.yml b/server/src/main/resources/application-test.yml new file mode 100644 index 0000000..2e74c84 --- /dev/null +++ b/server/src/main/resources/application-test.yml @@ -0,0 +1,4 @@ +nacos: + config: + namespace: test + server-addr: 192.168.1.169:8848 \ No newline at end of file diff --git a/server/src/main/resources/application-vazymeprod.properties b/server/src/main/resources/application-vazymeprod.properties deleted file mode 100644 index cb7dfe9..0000000 --- a/server/src/main/resources/application-vazymeprod.properties +++ /dev/null @@ -1,14 +0,0 @@ -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl = https://crm.vazyme.com/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJCQ0FuMkNIRGtvU0RKdjdJcDBrMFdqVkhVUm85NElTRiJ9.zzJtS7TYaaLy-VIANMU96SOw2r9driz-0Qxy-To9ko8 -kkfile.localfileUrl=https://crm.vazyme.com/crm-print-jwt -kkfile.cacheEnabled=true -kkfile.cache.type=default -kkfile.fileUploadDisable = false -server.servlet.context-path= /crm-print - -knife4j.enable=true -knife4j.production=true -knife4j.basic.enable=true -knife4j.basic.username=crm -knife4j.basic.password=crm@#$%&87811 diff --git a/server/src/main/resources/application-vazymetest.properties b/server/src/main/resources/application-vazymetest.properties deleted file mode 100644 index 8c87532..0000000 --- a/server/src/main/resources/application-vazymetest.properties +++ /dev/null @@ -1,10 +0,0 @@ -kkfile.fileDir=/appdata/upload/crm-print -kkfile.baseUrl = http://117.78.50.82:9089/crm-print -kkfile.token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJCQ0FuMkNIRGtvU0RKdjdJcDBrMFdqVkhVUm85NElTRiJ9.zzJtS7TYaaLy-VIANMU96SOw2r9driz-0Qxy-To9ko8 -kkfile.localfileUrl=http://117.78.50.82:9089/crm-print -kkfile.cacheEnabled=true -kkfile.cache.type=default -kkfile.fileUploadDisable = false -server.servlet.context-path= /crm-print -# 开启增强配置 -knife4j.enable=true diff --git a/server/src/main/resources/application.properties b/server/src/main/resources/application.properties deleted file mode 100644 index 33c4b35..0000000 --- a/server/src/main/resources/application.properties +++ /dev/null @@ -1,118 +0,0 @@ -#######################################不可动态配置,需要重启生效####################################### -server.port = 9089 -server.servlet.context-path= /crm-print -server.servlet.encoding.charset = utf-8 -#文件上传限制 -spring.servlet.multipart.max-file-size=500MB -spring.servlet.multipart.max-request-size=500MB -## Freemarker 配置 -spring.freemarker.template-loader-path = classpath:/web/ -spring.freemarker.cache = false -spring.freemarker.charset = UTF-8 -spring.freemarker.check-template-location = true -spring.freemarker.content-type = text/html -spring.freemarker.expose-request-attributes = true -spring.freemarker.expose-session-attributes = true -spring.freemarker.request-context-attribute = request -spring.freemarker.suffix = .ftl -spring.profiles.active=dev - -# office-plugin -## office转换服务的进程数,默认开启两个进程 -kkfile.office.plugin.server.ports = 2001,2002 -## office 转换服务 task 超时时间,默认五分钟 -kkfile.office.plugin.task.timeout = 5m - -#缓存实现类型,不配默认为内嵌RocksDB(type = default)实现,可配置为redis(type = redis)实现(需要配置spring.redisson.address等参数)和 JDK 内置对象实现(type = jdk), -kkfile.cache.type = jdk - -#缓存是否自动清理 true 为开启,注释掉或其他值都为关闭 -kkfile.cache.clean.enabled = true -#缓存自动清理时间,cache.clean.enabled = true时才有用,cron表达式,基于Quartz cron -kkfile.cache.clean.cron = 0 0 3 * * ? - -#redis连接,只有当cache.type = redis时才有用 -spring.redisson.address = 127.0.0.1:6379 -spring.redisson.password = - -#文件资源路径(默认为打包根路径下的file目录下) -#file.dir = D:\\kkFileview\\ -kkfile.fileDir = /data/file -#openoffice home路径 -#office.home = C:\\Program Files (x86)\\OpenOffice 4 -kkfile.officeHome = default - - - - -#######################################可在运行时动态配置####################################### -#提供预览服务的地址,默认从请求url读,如果使用nginx等反向代理,需要手动设置 -#base.url = https://file.keking.cn -kkfile.baseUrl = default - -#信任站点,多个用','隔开,设置了之后,会限制只能预览来自信任站点列表的文件,默认不限制 -#trust.host = file.keking.cn,kkfileview.keking.cn -kkfile.trust.host = default - -#是否启用缓存 -kkfile.cacheEnabled = true - -#文本类型,默认如下,可自定义添加 -kkfile.simText = txt,html,htm,asp,jsp,xml,json,properties,md,gitignore,log,java,py,c,cpp,sql,sh,bat,m,bas,prg,cmd -#多媒体类型,默认如下,可自定义添加 -kkfile.media = mp3,wav,mp4,flv -#是否开启多媒体类型转视频格式转换,目前可转换视频格式有:avi,mov,wmv,3gp,rm -#请谨慎开启此功能,建议异步调用添加到处理队列,并且增加任务队列处理线程,防止视频转换占用完线程资源,转换比较耗费时间,并且控制了只能串行处理转换任务 -kkfile.mediaConvertDisable = false -#支持转换的视频类型 -kkfile.convertMedias = avi,mov,wmv,mkv,3gp,rm -#office类型文档(word ppt)样式,默认为图片(image),可配置为pdf(预览时也有按钮切换) -kkfile.officePreviewType = pdf -#是否关闭office预览切换开关,默认为false,可配置为true关闭 -kkfile.officePreviewSwitchDisabled= true - -#是否禁止下载转换生成的pdf文件 -kkfile.pdfDownloadDisable = true -#是否禁用首页文件上传 -kkfile.fileUploadDisable = false - -#预览源为FTP时 FTP用户名,可在ftp url后面加参数ftp.username=ftpuser指定,不指定默认用配置的 -kkfile.ftpUsername = ftpuser -#预览源为FTP时 FTP密码,可在ftp url后面加参数ftp.password=123456指定,不指定默认用配置的 -kkfile.ftpPassword= 1234561 -#预览源为FTP时, FTP连接默认ControlEncoding(根据FTP服务器操作系统选择,Linux一般为UTF-8,Windows一般为GBK),可在ftp url后面加参数ftp.control.encoding=UTF-8指定,不指定默认用配置的 -kkfile.ftpControlEncoding = UTF-8 - -#水印内容 -#例:watermark.txt = ${WATERMARK_TXT:凯京科技内部文件,严禁外泄} -#如需取消水印,内容设置为空即可,例:watermark.txt = ${WATERMARK_TXT:} -kkfile.watermarkTxt = -#水印x轴间隔 -kkfile.watermarkXSpace = 10 -#水印y轴间隔 -kkfile.watermarkYSpace = 10 -#水印字体 -kkfile.watermarkFont = 微软雅黑 -#水印字体大小 -kkfile.watermarkFontsize = 18px -#水印字体颜色 -kkfile.watermarkColor = black -#水印透明度,要求设置在大于等于0.005,小于1 -kkfile.watermarkAlpha = 0.2 -#水印宽度 -kkfile.watermarkWidth = 180 -#水印高度 -kkfile.watermarkHeight = 80 -#水印倾斜度数,要求设置在大于等于0,小于90 -kkfile.watermarkAngle = 10 - -kkfile.previewUrl=http://127.0.0.1:9089/onlinePreview?url=%s - - -# health 健康检查 -#management.endpoints.enabled-by-default=true -#management.endpoints.web.base-path=/actuator -#management.endpoints.web.exposure.include=health -#management.endpoint.health.how-details=always - - diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml new file mode 100644 index 0000000..7b262f9 --- /dev/null +++ b/server/src/main/resources/application.yml @@ -0,0 +1,20 @@ +spring: + profiles: + active: test + +nacos: + config: + bootstrap: + enable: true + username: nacos + password: nacos + + auto-refresh: true + config-long-poll-timeout: 46000 + config-retry-time: 2333 + max-retry: 10 + enable-remote-sync-config: true + + group: crm-public + data-id: print + type: yaml From fec69fcecdf4e6e37191a49c1bc6bf111198a4f1 Mon Sep 17 00:00:00 2001 From: huangsheng Date: Tue, 30 Jan 2024 11:08:54 +0800 Subject: [PATCH 2/7] =?UTF-8?q?Effort=20Task=20#9427=20Cost:1h=20Left:0h?= =?UTF-8?q?=20=E5=BC=95=E5=85=A5nacos=E9=85=8D=E7=BD=AE=EF=BC=8C=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/pom.xml | 5 +++++ server/src/main/java/cn/keking/ServerMain.java | 2 ++ 2 files changed, 7 insertions(+) diff --git a/server/pom.xml b/server/pom.xml index 6a75cf7..4558b93 100644 --- a/server/pom.xml +++ b/server/pom.xml @@ -30,6 +30,11 @@ + + com.alibaba.boot + nacos-config-spring-boot-starter + 0.3.0-RC + org.springframework.boot diff --git a/server/src/main/java/cn/keking/ServerMain.java b/server/src/main/java/cn/keking/ServerMain.java index c712914..0f39381 100644 --- a/server/src/main/java/cn/keking/ServerMain.java +++ b/server/src/main/java/cn/keking/ServerMain.java @@ -1,5 +1,6 @@ package cn.keking; +import com.alibaba.nacos.spring.context.annotation.config.EnableNacosConfig; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.boot.autoconfigure.SpringBootApplication; @@ -14,6 +15,7 @@ import org.springframework.util.StopWatch; */ @SpringBootApplication @EnableScheduling +@EnableNacosConfig public class ServerMain { private static final Logger logger = LoggerFactory.getLogger(ServerMain.class); From 759fb54ead7328b6b8db6515ac5aa7cf14533b2e Mon Sep 17 00:00:00 2001 From: huangsheng Date: Tue, 30 Jan 2024 11:31:13 +0800 Subject: [PATCH 3/7] =?UTF-8?q?Effort=20Task=20#9427=20Cost:1h=20Left:0h?= =?UTF-8?q?=20=E5=BC=95=E5=85=A5nacos=E9=85=8D=E7=BD=AE=EF=BC=8C=E6=9C=8D?= =?UTF-8?q?=E5=8A=A1=E5=99=A8=E5=9C=B0=E5=9D=80=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/src/main/resources/application.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/server/src/main/resources/application.yml b/server/src/main/resources/application.yml index 7b262f9..321ac8d 100644 --- a/server/src/main/resources/application.yml +++ b/server/src/main/resources/application.yml @@ -8,6 +8,7 @@ nacos: enable: true username: nacos password: nacos + server-addr: nacos:8848 auto-refresh: true config-long-poll-timeout: 46000 From 6c9450cc9435463100dd2dca78a9ef9975334bf3 Mon Sep 17 00:00:00 2001 From: dengshengli Date: Tue, 28 May 2024 11:21:07 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=9F=A9=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile_gray | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/Dockerfile_gray b/Dockerfile_gray index 12a6659..bd6d245 100644 --- a/Dockerfile_gray +++ b/Dockerfile_gray @@ -18,6 +18,11 @@ RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk mkfontscale &&\ mkfontdir &&\ fc-cache -fv &&\ + COPY /usr/share/fonts/korean /usr/share/fonts &&\ + cd /usr/share/fonts/korean &&\ + mkfontscale &&\ + mkfontdir &&\ + fc-cache -fv &&\ rm -rf /var/cache/* COPY ./server/target/crm-print-server-1.0.0.jar / From 7a743e871d86cb50999b9ef44e7fe13be022886d Mon Sep 17 00:00:00 2001 From: dengshengli Date: Tue, 28 May 2024 13:50:24 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E9=9F=A9=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile_gray | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Dockerfile_gray b/Dockerfile_gray index bd6d245..e008521 100644 --- a/Dockerfile_gray +++ b/Dockerfile_gray @@ -18,7 +18,7 @@ RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk mkfontscale &&\ mkfontdir &&\ fc-cache -fv &&\ - COPY /usr/share/fonts/korean /usr/share/fonts &&\ + cp /usr/share/fonts/korean /usr/share/fonts &&\ cd /usr/share/fonts/korean &&\ mkfontscale &&\ mkfontdir &&\ From 2309df3a993e2d65cd3ee3a9ddba75d19897dd11 Mon Sep 17 00:00:00 2001 From: luob Date: Tue, 28 May 2024 14:29:55 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E4=BF=AE=E6=94=B9=20Dockerfile=5Fgray?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Dockerfile_gray | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/Dockerfile_gray b/Dockerfile_gray index e008521..58997d5 100644 --- a/Dockerfile_gray +++ b/Dockerfile_gray @@ -11,6 +11,7 @@ RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk apk add fontconfig &&\ apk --update add unzip &&\ mkdir -p /usr/share/fonts/chinese &&\ + mkdir -p /usr/share/fonts/korean &&\ cd /tmp &&\ wget http://kkfileview.keking.cn/fonts.zip &&\ unzip -d /usr/share/fonts/chinese fonts.zip &&\ @@ -18,13 +19,9 @@ RUN set -eux && sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk mkfontscale &&\ mkfontdir &&\ fc-cache -fv &&\ - cp /usr/share/fonts/korean /usr/share/fonts &&\ - cd /usr/share/fonts/korean &&\ - mkfontscale &&\ - mkfontdir &&\ - fc-cache -fv &&\ rm -rf /var/cache/* +COPY ./fonts/* /usr/share/fonts/korean/ COPY ./server/target/crm-print-server-1.0.0.jar / WORKDIR / EXPOSE 9089 From ade7ee8cbdb12e70c1673a0baa500b0d8e62019d Mon Sep 17 00:00:00 2001 From: dengshengli Date: Thu, 30 May 2024 11:28:52 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E6=89=93=E5=8D=B0=E6=94=AF=E6=8C=81?= =?UTF-8?q?=E4=BF=84=E6=96=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fonts/Perestroika.ttf | Bin 0 -> 35412 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 fonts/Perestroika.ttf diff --git a/fonts/Perestroika.ttf b/fonts/Perestroika.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d58e982a4f486ba4045135d1d8448014171fc529 GIT binary patch literal 35412 zcmeIbcbp_wbuWHz#ZFZns=KRm&OJRn(>>k2lY4e{c4l+ZCTVk!R?@Dt+EqZZgc1r! zNMw+N3|JtrMG_*4AcQT04bPZpV`Gerc?g~XV=Q9?Y|s1Ns_vOyX>fSI&-?t|AF7$^ zuC5Ms?z!ij`#s^_B9su~B)1TroZhmdTHE%<8=oYEz5-`=ZJphC!K*h$-bBbf5xj05 zJ$3l>XK(o2MT968LbzWYz4q$Fk#8N9330s+?~h!3`jS((*Z+76UgIV4UUKsKi!b`M z^esZ%&k}M?^Te@JukgID@;O2Tylu6dIDYupU)}LN_TArNZ=S#j>94u(;rb(ZojGyp z>Q`8v_m%PbtGM3a$t#Z@{`kLs^CS5EXK*fZ>hLR0(*yKZINpQLC$2br>iESsd}NrA zy8<|O!|5x}Uj3D?D(@oXZnS~kdHT%p)9{n)c&x=1kPRQG{^9~3D@5OJ`n0&{0aRi$>F;(`UkkC z3v@qB;xtbp^h+el4dT3wB*^08Pw8(+2vX?c-bP|vndqEoeBO&L&*Qhe^eBF(f%hYz z`OgXE-a`cLA8_5zEq3VJNQhk*-#>)s9k@Q@%_w#+e}W|OOpW(`N(Sj!(nQ;9^htwH zH7-O7>@$pS)D2$$61>NI2HlMI|Ke_Z|95@XkKe=2uEURz43mq#jVbHvtQIDU94`nK ziQ{=cKOivll*94B&;$TprA1xXeJ z{F;Q{7B~UV__D-_z27#T@h01N-Xenxj@Yb>9{d!p!+uuc1dca;(Rk?6BTFDclr20j zi&hI>;i9r^wSq1*LB!V?J)#6E81dNf3ZGzC!uz6C1bH%!tP&3TwHR-``OX#itgdUqgkK&LSe?$q_K{F)_I4<+*7}xMwhm2mcfu#=Xi|7H{O?n(AJxu2cySsv)b$y zi`@Z9uqfyzyG_Qfsx~V+%8E8a*(5;*Jzyp{YJucHzU<(IAb}nQ^hkDevtk8@`!|!D zxQ^m5_~UX~2xI`Vsxo?Hn*dcde$jXk1e?t!I_y@vqeqX5ZgSwF4!hH7Lyti4Kneat znaP)6x3X`ddt|!d;is z*}p*y*d|Gu$Dl{|I~ac$JucA-semErqeqe$J#LrcbUPd_kHzA2_}p&A?X)}GPQTx& zV(d^IlFe>&K)<1X4#}xNH6Ljx#{j+yOxGhwy$1NKt?f z@JjMWzsugex(Y^e0n`i}-AUJVM@w&ph7!%+usqe1_mN zqvmH8|8eo@#m_B1wfNb^PcMFI@#Bk6EIzP!*W%63l4m!5?<)KPuKXWv%ssf92=ou} z?7|G?k9=U)0~ev=1>L?RIx{*LvfANoH&a|E6gA;+;_LXH`J)Mexja_38a@AT3c#>3t= zORnr4;`v11@&C=ki^-+ra&nTKB3JysD?x2a2Ckh;JkDq5(uYq3(kBkBskE~`pVzBt z9*^7Yaygxz@AU~P`0=xuu6C+XrHb0^mPAN+qr6xNdRM`Q_)9~K1s!iOaZ zkC098;;-muxwn!XWS+!Gg%sgeeTG`ex5?GyL0Y2Ur}xp_WDk7@`O^!JTzCZf$TVT9 z`}ZdD_w-3_ocjWQf`6F*mY@pTg|`S_5nd2W;z98-@dfFi^euT@eo+3UWz6ykt8P7H z{gCw+wyN!{?R)lnU_owkd`D?3UsmVUC!M>Uf9=Y-zU!WG|IG6iZA5$2YxTa{r~9t) z{eyqO|2O)l0yBa41fB~fHTA3Xj`Y)+ROSz}x8$n1H|2hn&*bmUf2lBC_{ZWyrFErOm1E^Y%I61tgA0R?4*sZms``te>xO z>cLfizUqb1$H(5*`vZRv51=1M1cQfG?rJBf#nQHNvLI5zU^V+YmGTX(0Y z>2;ki{`%K^=C^-0&Ak`b-n95Ud768W*h!e|Y$s_X(vDiaYC!W_H4m@(J)++wgd~|b z*v0wo#iw28X!Tt6oXhwdB!k^c^CZ%L=?J^Dp2{^wn)R9=hMceYybQ6YQ~6vTr|%3V z62V|H5voaw2MAlhuF3p$9c#}3B|G-;s2NkK-Hf{OZiuMSnj2mp!@5x=~2#C<`RQ=b=v zr&AVv`3OS~vvl;YxYOvnINj0y7)>PF$#^^#4F!F`3xEW&#F20)>~JXXu<>Dg#1f0e zF**W6!^5yeqc)6-@T4iBszvwfUawE{XfBsK;B*H1UpoV~7k@JtvV_9@pJCtec}0PW zMD_zMH~?{FPV+EVl9O%GNRSW2W8si4`Z*^Y3mc{GZlCHC)A~eJhe$2&^sYhm8B6c) zx9T(fuT{M6y?6e3^X&QOmOpFs4(p-b*6S%ZN%Tukf=Lfe%k>s^IW4F0jJ<`|*y}it zovyw%aqat0B#zlGE@TSV6|#lXwlm2qELWwo>1)&3%yIhK2OoT}^*L;<2V0L}V>qI` z_#ygH?n&sIgA9=?+ci2o+^%^O47QNC!i!$Jm@Ajksc^^&=f5%#47goXCNw352g;!! zjV}vZm8qaU0j@EPfZUnQ>S{!s4EMKb*l3fl*%-;^skXzIt!ArH_tkViwI20*hX#()Krp!{cgJvLQ~IJ=*&i4_Q@VbrvNr9zM5gM`vWmMqa0X0&Yw_z>};IfP%Yao*j5N$%HLsK)LKX821=HV>%18P3{YA8HXrBiMr>IJ zE~%0_xwbt*M@HHWQX3ko4-H#}YxVk2tyZ^)UYAG)#6&RjNy^lR1xgcL z@u^l>^O;F7ECV~dYY>9)Tgx-(@Lm@u$VfjsMi@J?XgV_ptig4(Rvt;GeBOGE{*Loj znx}j`Q(nJN&gIGrcwE@Jef!qV-7h&sk9ICk&^LX2?da@uYvab&G#=mcp7+qlUVP%< zx#K#FAS7dC@t?Rq=3WDIG)C5t8`=#zH`iWktA|>{8O@DIS7HpFt8GfmtrjapZi{kc z3~tFNytHwt=q>V*WtL1=UFTq!4KrQsvW3}d2npLDC|w~*khy-Y%rUNLkPUym*2=Z& zJ|oH@`*ny4`&;5x3p_JeW=M};Z?+&Nv{%;^dZz-8+um`)plzhCS_9mZeC# zs0LPFerj85ycXZF@4)Jb@<2H{yzc^E%u`H!BU3ssKS+1X?wweF#U&5wf@;l&4!wG- zg|{ot)Yi8Q4sV&M$7^fmR`1Ui#v5^8bZ%FCBID2m{(p{UXD5diN)te+Q}pxX0mDu= z+6qMPGM+iB8|UO*?v}d)NKan>anlQZvXs5U$0!ffEk33)JCg zD{#eGY!m~R2&b1PcElMuM7CHMPr_if1QswLoA$A5CJotN0t}9R;v9^)WV(@V)M5GR zzBJw1{Lzn^&pp?v{P2erM#s?NE#yzgy|7xW&t0yzTa_sEykhP%c%z4A+|=U!cQe5td=9?V*Cu7Jn3849J6jx-)qp>PUU@GgFXreM-|vb7yG=;nEVN6J|Y6oLRXYXMG~O<-^m zgZ)eFH6<@?iJsQ#n?}DiT7e<}0c94Sr=R9-#8|46wUE(3pdEB@fB9iUe(;Lbjt10Fd8t^)*Bsue$6%4UVE}xtRNHFs#IDYnxnbS z-**0%yX@@l8*bTq`Q>|Vy>-v!jKgQ}@JdkS1)@$;pResls88eVHh^e^@_E7KWPvS2 z>-!;f4^EpHs1H&5`f2nr8ns5VOKPM66AP0Pm{@ZDjrkfL6xJNU>q={_ksb52smf?>EAaO#=`VFlEr z10sOdrp`u1=r5YW>?ejfc4R^a6Giz=sd-DY;FK+@>RQ#D$RzHFm!(U{wj|KHiH=1dO2W2j-T2%rv?bNfmgf+AnI%bvw^2 zG6T}%LzfMNg!{WPZ0JVA)2h2+Ofbgxgm04O;oC|22hI!}I^?yrI*Sm%r=H@@J|3p> zyE~UwcU7Q{rVQ??(jg@1DH%q;y&s-Sg6x5YFd4KaG$G*@Xjrhqk`rB4Vyt1xvX1~u z4(T)H&oJZ5UFKdv?6f3cdr#KnF2w8gAM3WWG@|}IxW2IC%3a$pjiyThbk_KEIZZs~qb-@~z zC7-06M>l|&3BVZa>T=gj(*4{`GwxD=fF zxUQ1*?VvH9a|&{;EIWsoIzAv$s`QLy&%-xZ-KAPtVK~>4I>*a-kCskJa=JN3uajSY z(-!fMuKWAJkQ$)eX?y3(ov+wzv`jgF1>qQ;)Ii4vp|y4rBn?PFiZ+|=R^2OCQ+^?4 z70WKM&Wjl$c5?)Wn7B_T>sQ11YtZO;*OYT*1bx!s5TsPom{Mk~L%} zmuu%;JPirfl;Gka@qWqSfT6N3H`s9TAVJGW(n@muZOyT^0#&rwSalvKm$a_fm_{p~ zTh0Hk+FT^H?clXL4>hY3Q>Ql^X+{Hy%uJ&w=n1E<{;vhs#oKn?xOMLMjYlpXjB}?3 zb7N~NBhf%+`{)+XZ(s-d1bS|Hyycy|;IpzQjqLGI!YvVxKn)vj`=UeE6~g3G*2cwfXEmfi0XCefOCYzIx?7y9FtKjjs-)@Y%NoNw)L)zTBUyBGXi{Bz!0`` zt#iNO#B;y-vr6R)6$3H9wEfH1J+J-p^2MkB3+-Qt3hEOZS^RO8j+1^8EGR8=pbU#s z1R_n40dhe*K`WK^ARn?vZ9b7N2^ov%%*#n#CQ0-QjdrD_E5Fb^L;IEhLX=ecSx_-- zje%)Y3hN>p(M5(97*3GtOeb4StuGRJ|J42g|E?itHksL6wWlWnyJSZYn7-oSABI(h45ui3Tt_fEg%y3O0~y|gU4Ip4(UWKoN>CbsbvpH+*> z`nq!V_T%?|;I+4Ir<=ysTCbQI&eb!&^j9`-z4!fB9ACR|?Pae`+WhNjy4G6AHMb5m zPzkW(jTw7@^6RHJAG`W9uf6s4;413>xCg=2I7yS&wc9k4X=h{UM9MCtlBu*cpz8tS z08lxUL`i_#1*9UxW2q!c8)9yirxMZmxXa1H)~+sZ5#nUXo|!|#CK^W*CTlHSO*g_- zeX$uA$@DWg!x)@wFu}^F4UWYr!gi3fme$h!8nCDCqjEh@-3cwHBDb%N8ZPwnr#u*&HZbWZ!_FPUtm@Q_CJ zVT_c>$##X7%k2R@ZbMX364Qd7&$)SzK#7WcZ&(WEvPdQ)IEi2{4RxD5!8|)=Mhwtq zMk!5WvZPBPQtoeInYFNGxHF9;LL-Af4Uh(%h30%-IOhz58$)@SshaO)NrCkfILB7v+7F275ZvRSpK`dT1`V0{)~Rz6aa7 zj?S_($=btR9`s(g{id}ulXJIk8!6?2?$qgx4<9{o<)x2|U(eGYaa(40ZMo&{T}R95 zZT#f1$gYbXddK1YA&vD7d^qld=o>HU_4Z<9$!6O*G32$|NK_F0KIULb)}(|&ISea2 zwJmpuNj-Xn*)-OME`YL;Y=1{&4WpLq`oLw=g){m^XO3sR#$?b?^a2h1!NDtDdHPd7 zT;oJ_#`I%uZ~fH|-7tMs%WdWES-tV0kL=&BiviCDvm*+fMq72i{bjTULU-JYqeibWgcQp`?-icct@8U`vRdxBDCLK+^X8J;%!y8_nPP$|Pm8!cMu zmIi6}x2etAlr_kfAXW@2jnkUHK1F+N0e)pR$doqO*XREm=X8IoNna69k14}QdFp;V z)Re)oNPKK0s6Nz&$vneT^NgHa|jm=F%4WWRhCiaGPyfP9l#vs2e1tKZ- zbF8?cI!58RH(5xDX{Q0F%`n8xR%e?&!IZJFdBJBrH4#TR!4jW1rMlL4e$sYYp^NL? zAww586m7nL)<^$zRDX1{$0x!Hh1^|Dd@rP70C*{HjM9D@^LgRV%0dQCZiIyWJ~_cl z1-q0e@CiyY{jy-%8AG^PbC=tdSz*YgvLU~$0Zcz9DGQ=Bk}TjIrCuE)Rd3*mQ$Key zkbLjWt0!mHy=o>Eh$st`4xo_q4GRxleDdUpw_kXi^7IG%TX$`~{qEg|oVJm@qpFNn z$xeH1&2*%&Xa55aAK4#LGiW2z-S47r>*QVSZAQ++l1ymmSuHP18W<{QRtxW`4hofl zP!M4J7di6^?pA@_QEVuL5ZJ`;AYW1eFa zdQs<@_mM*O|N3?l__SS3cr~bmMm%mXK|_!Wb&Me)Q5Lf4fE=};?9}U)JO~PTP*+Q7 zcG(*CV6GuJ4Cp~>dTi@)B})eTbz;!4jD3vgZ+Z*p2Bw1fkqqc`55L}PJD#ZpJZMxx znidRx)qJ8aEH&R~@>26pRkUze(?Z=R$c}&UEUiO!{A5czLUkPukK#wIIrX>^`1W%W zLF@S?Cw>AUPZMpJ>agU->-{a#ON=WT-*P)ic4m5gyd$oZ^8`DABY*Yr)Hg0YWBvlK{uZ8K- z9PMeOgV9mBtej-sGry)GHN~}aExt*UJi2NrIXp4VlEY}pdB&^PO$MMa2IJmP=3WVw zno&Avvd>Gq_`=k5!{Rfm@AG0%K!j3);Rld1z!b9q><@)tO93zXn?JU{n^oUhEuFJV zJ*v$VJcayJD;tmb?9JHBwmi4R?+q4r&ka-^l~knFlL79hv(95OYWO6}xwm%>BC~$$ z-%JH%M|sy~2xv0yJ~5Dv@ zYX5b=XY-C&BouUeI+KR#&r%hb0OI}DO^D?BxAI5E4Q+>3yMs)t10E*RQ0xO}M~!^4 zy_eSO?GZH`3ZnXet0BpR4^Ym^@gYQ}5uxT$&(83-F%Fi+$bcA$MZ`hWojO&YAlF2R zWK(Wlm7JNhi+3Vhf|xtMG)nZ@MHa?pT7mcq;{rQ0iUyD~?maI>w+$KVDo=*g`x#R= z7*h{ZBU7rI7~J4Zo=+QpQdg7=oZg&>-OO>p;|JIC?hmupk!fz3|CA_kqC=o`;H$JskSzCRap$UyRf zY>y4y|Mi@2)UAqO9Mi|IfwL|0zV>#yYE^qwFBMg#RJNdM3k=fS7MM%G#Z)rD>$PEF zqz*e;Q5*mk#e!RiMgl&R>PyndaE4Dxsd_EVrzpl^ObF;@{-B!p?V>Q#k^9=Ek&Yfy}={<}-m}|y;0{qM(-!M*YZjaK5 ziT0!|scIe!(^@&}^YTP%4vW!dPP7e3Ww8}(jtt7$Xi+9v7-z3$!0}#yp{Ik)u7Pvl z*Ti?vx$qBc#`fi?OO#CX^J!w)Vk0wez*P3!O$W7l0SIQg=m?8>Vz`>3Sucx)!uYB5 zXH=>=HR1Tyi!a`KjPp5%JHH-LHU8MvOD^7WOz^2ydey1jl7J7?`-0Vx zrM32T*P&vi;4Q0D;{@9TE&xrXCC^h8MJuIYM{ z%vw2sZ7+v6StzuNsk{=8X&wQY6CtH4EISqoVg$EJaUYOPBF;00_0o4eZkaJfqv8b| z>vzMvq|nc$f@!l1bZ4Y&BzK<~?+)9n{tAMX{z_pK4g*|Dh8zxm;n z7q}zbrq0hDgXQ%PihSo&_ixnvU15RocEPj!$c~dX4lOJ%9^}3b?CM1eH^7f%EhGWI zPa_$@5)qsU$xiJ&wRF)32DGJEugr1gE6b;xUhC{U+0e& z*8RcV?|u5s_g=JTa{8)QEsk3}`vwcm)i<9SuT`3FQml6G0={px&hbwVX4urEI0yGPv2L_>F$6s8VE*)=Y~V#u7Q!k z+&rbLM-NfjXC7SE(1w9QUi`z?-{)4c-m8W@%;A?}(i=87I9q6V$G+jxi|xbnRQCaR zI2}6#sr&u z5e0#Xdq{*FY-edS+K$05l|Kq&jX0Rb{utePUaZF!>TF!nRn|j@G;m)6?MZS57A%!&r#&3i zq$JTI4!ao8fgxC}B1S!{97<{~9tJxEU~K@1Ubl6lc%}_9d}=1rX4`rW111CXHz&1h ztfSObuenW!${5dZBAGHzgs25B@~57**?0bYi)`uq=3i{iS%$VTEPbu>0xdQlP3MtE z<%h@anC*O&dY@+?3hnYP{+fFn?MjfN?Ho-aml|^WFjd2f0t-GE5W*o8%UI-4&w89^T)OBx{J6&hbq7FdoBQfZ5RuGlY6Vvs8?um&ZaM)4i_h zzb3L`=q-Eat(Dk!8h#~stF(rGYXZoG<$^Vfx~_BcKmAG29qq*+JAc7?39aFuL2L5l zo$WP-4fVxXxsgS7VZxm?l}x6hF)OOg?ePSvDlo%KwM0Uph*uN*K0w}lE}4j;5H8Qg zVxH!@0%)KV1D*7MUVnb2*ZAHufS-X6Kgzu;@&SanhuPpN`K|uWF8a%k{TpA1Dq)r}m;CDFLZ?Z8 z%yoiXu<1gW#NZI{@|_Oa-0x_NHR;B{|3Ii296lPBHrWR`M=E*TH`>6_2< z+`Nn5=Wc+E50M+&b)#xUOInI?6*CmAm2$a)>1H-d5Op{(sa_2wUqd7-BNE_wkts4D z1kBH}NcR#6-O8Nhjv*@)wP;-xW*W?(#F7s4-Pjj{8_eA^I6X-7-XFz+$^&&Z9;8I@t9LG( zJN<@KEE;qK&izuPkA32bpj!=!vI?)`&D<^L-Ydn!8>FctcJ4qfG(K~65G}cL@c_+o zPa_+*8POS|_LNPin zU&I0qH2wrW&rVmcFrm0qf2V*^zeLcVQV9&8 zx)9BzF=Qa$P!KFG7$FWdLQ6gjOKC2{`QDh>CCIWu%smUp3gcoD)iRwj<0ULm4N-Sk zn|y;wx{?3=(D9;r+%-JEanFcv`?z29sL|BAZP!HHp*L>QMl-Q&c32*pnH`#srG0AZ z;02mb@dTUB>;Ivt=lT+82Xjd=eERL6Rodz}~WKE*2YLjv1!0A=U)3z{Kt( zX0=O}xMcBbk~bZKQ{(e;R?BiN4y?=)*6VLJ8zq;!!MZ}qR`W40Q%2H>#elkrhA#dC zf~up$EB%peADwGl@IQuZm>E;~cEzr`Y|(3PqkDE-+fZn4l?7i@si`HG(O4@u5*)p_hEE%1s)Uy%yDdprVF1l*{MA)J#ak<>6OdcD_ zJFV!4Jn*-KvRwxv_m{Q@A-e6V76fi117$(U=Yj!D973)`77}(j!b=$?$7Q$(4bY`| z9@EpTbo0f`U$XIu6(aRnH(VqWsn%;6^C6HkhlI(E^Rlrfm}t^d;dMjVMk=?u^?SUe zms@%%xi#rsJGy%NrYoair*&lY7Md(3hc2EQncyBg_i$8(r|Y+iHnm;$G^Y-qTD#iz zP{oDfecpBfag%*V4m0)aiI?B0^%;pk9UKHkS8bzgTS`Gx{b$eNBBY1c< zdN_}feAvM5;aD#0gimF)q*E-D<#8*#!-(|Au7s@XnY5dCaTXLmIs1U8(Z|d;F=sY` z14h%kcE!086i=JpVY-22t~;G?)!`)rI07dkpTVRTJ~^wD&7bkxMt?lupBEz4Sny!8 zg7}^ka|{$0Zp893^fjHY3}XEQ1OvS#TC+u*TgQiIB|hbFIsNwHCreme0!BT$sM0@2 zuU4?K(I#>=yvfa*+gk>Tm@S)(hv|AjUoARqH6b%5Am%Qwosu=IK++tP@?|cMb&ROq z>tm>-5r6I#`5_u@=H(4r+HJ5-HusN2n+;H%H*-vRm`ZeJf1x@H|G}L00!FODI=`d= zCYbA0L-sU-zI|2V*n;Y5w6D2q>$;t@Bhz_TYfQIuL(PHKCG#VN(M_W7J4Iddg@#Ig zk1ym|m9Ny33$;{XFi&q1(!=w+sTN3GwPU;)PEF-9YDOt&UU%NPwlcpjz}YR?NG@3( z$y9Q2Sc%HHw*?}NNw4A$4UI%}NDgc?r@}^8$(!2i>CjMn*rR#iuWAZf#v>~_5RdU? zp_EMU#bAI*lB!h0A-Fc#Oel!zn`F#Lh9=@H8CotO56IDCm&;2LYEze%6QPE9_1u}> zI9en_{oEd6+-Blr`n<3lEII7g5p$lRlN6QEOUK=hpa|@VFDdqcZTmt}rTwGDk2rD)dbPQMi$@aKHYg}0Bi0T^go9qktLrJx*kvX{Ykt#>~9(5n`L4pndt)i!bO zU8Wti_JlrXV6Zvz21F#*u5Hf`jL^zJCLOYIW22fIYt+n5jPs7h2rJ2$X=glgB^r?f zb4a{Rj1EYZ@iDmKG=Ms5PUPu$PxpCA5Rz5%mMFhcKrqx)(G4HakS_P;3yYNb$Spf-@xLp}$lp_am~ z!Jy(#j!u=;!N4>m;MpOpjA9$&_T6mzeFaNMS*;(}1%L4pS`Lq|izWO@HRlp+1${oJ z_;`I(+dq6uS3)fIfet%l;{{t^;^!DIG-IBO*W30fs-j`x6J((T1a}ZmWV08Lt?C;e zm_#o*5;*SZt&@2Bx#KnT*39(wCd(Kt-m6%L=Qlf98*I)C>GKt=NT!6^y4)%P(25w_iQ*4 zJ-prXSR!Pgp92Gid@z~t={+OW(u|xWi;goDhp6=Ok&U`WfBKpsKj$0zS`~o?{sZo} za#%P?SpDH9TNjK|ti?OuK%db0;LuNokuKEvz%Z3NZ>M|Tv9Ex7K%LJ-FMLhhmas^? z-uXQ1U*_3+!NmsoP!r`Ve~jsy2*sj`v=Mn-VW!D z6&Sk2NLcq8ImlWy%_pSf@KB0Rawr0VH%gm#zNol8^hO+wXg(ZgZJ0g-<(tzCXcB zx~EgI%cjNu+iz$#9ji&fXv+4=^7-$4hppGsJ#V1q=jq=AYbdZp^O&{4X8i;>Az%~S zlH?chafR4UPf_{;P6+$&7u$(}c-#F)+3op&Np*V$-pVImQV<)-)Dwz0kK;P2hw z`Q+B|4HLsN+o!h1ZrXSCn$cGtI`kSgI(ZjE^vCqi5K$i_SHZKYR@*}sl>*Wy;(p$j zPC;=2>BFI-V9CnfiYzkU%I8IqiinKaGSr=33gGm-Nu$%2O`nfc`$fBI3{)(xXw=#O z&0`*WcT~p7ZtS3`yN&n`8z0iC$66DrXT#xjYtCjve#fex4pF~OAp?-cl%i}8?#wLJij?Uvj*kngWEH7 zeWzrC5J9pJzAJt8fz$Id6zgvB6P?e}nPh8d{({!H(brJuZ$Ou=K)tskE6BXJLNXB! zd9`9e%dn)NIlnQRk%g!z#jOOEFe$~$1+U~u#JN&YLpqph%PPwTKJ2W?%M36TwLA26 zHB?*4uQPiUbM^IZg3$D?jaV^raE!6AXZPr8hY&w;Hj^HXI6{HOhMcPVBITnG|6R$i z4}87s|GT&ABHe%Bwo6LxwQXHe^^vtsE^xv1Fh@XSerD}Zrb3Na$vk>JOSZS;l+E6W z`KXr&F^d=ri4I+IiBc*>G3BI}Fk03~*SWrqB`eI~=}+|al6;s=(9Q7mAbw6)qUmxX zzxfq|<%z+ZQw|g+Vwv67*D9+Q1{`-v)l{*Rm`F7?j%U;E)ReS07prG#yV|*QHpa$W zc%(yI9np}B+XF_l73n)wLZTgD8jFnac3!py5y~U7Q}g(|D5Bv|M6C8u3$v^yWL}<8 zz2tzaD+F1AClNEy88qv9W+)x4vzmqXwL?kUc9(i|oe&+GQLdI0_+P);r}>MP>uKB; znO=P>TR@EQJ+b&abmvJ#a84m|z#=$G$^+m5%10#8E5iz+!HQ&&S~d z^afZnL~J5THZquEhR0t(H^6}2jBf7hrn&0&5XLT!<_+Y1>JIh)|7hj;?hF-;t z>>b1R0jGu)53DSBY8VqExf;+h;6bYBQr*pen!OWO0QY*DM;w1Ccc(LBxg7VG{ylh~ zOD}#grAo=!$+)BxA1f$UZL>^|6g1|ZV7j1d_Xpmy*KJif39s$e;``ACVetj-V`xK; zys?eB9r<=4l4V%Qsp?pA&}c~}Yh@5Ao5>R3JEzNNnSqibVb(H~EF(C()VP(>b<4Sp z-<_tzy1f14M4pWk=e0RbSIXAOX@~e!jg>h)=fC5kFQ+nwg%S8K1ON zhbxs~q|(>U<++?tEC956Mc1g@a7e@>HOSgRo)2(zZh34oCo3C)J2t)8z=`UTyvGEUcAzbC1dFfgnr`8+w0e0GjGbOKvc zL^+nt$4aGGJ{OfmXTohclw2ht5m!{OTGO$#Gp)yqMM_ick_Q;3Hm^CH6}lMlSt7-( z=5&Jp5sNRf30A;q_5Ehs2Q*n_(vQNBfmCNtW=Cc?pF39eIb8R?uVPosTs8Ba-%P&< z?0N-qdknkUd{#devJ^NDbFW0KG=(|xSkxB_H%bJN9af?WDenz8Ov<~qy1PO|H?!Fv z!&X;-xLO@aJrvDMvq{y-e3Q*ic2Z1|t^4o#h4{#xQ^U=G3b&~95#gdoE-U6WMYsE$ z5`DtEy_@pkT*#6>>SKDn39GNf;j0#m8I;D1jAX*^!vq_W6U2ZPRm8Mx zP4>q9D%Q|IzZ-C_tAjlSBrD9Z&{*7ZgmpA?*BFvz10)OLVx=%6#Kfw}@rg}CMfI+7 zmQC5*x)n*mGcy7mLbQNIlo`CHTsbqGNF5f%g@VJ6wOPyg zd`d5<>o%o#UcIk2{s3;fkQ&^vy4Ix6Y^6S%=Jd%aq4N&6J>lHxJa$-k#RXTd&8a)V zZ7o>FOj1e%+6wYv>m}9{lO9r@2o6ExF zY&r)ssCX9(1ex+@Fp7PM`InGBsBN9za65M<+t@PHz*6b1pf~IfwMvQ0st&*$N02I0 z^OhS=Q?IgVv^1W;3cPN`Q67qALT>lHv}EyYIV^d?6`N|ed6U6J*p(`JQi`AFeS?jI zI=rZ{OlbS~Kmj!oSpPRwj~7>Ei%1G57oX=>gO6-=!da}1`7T7!7Z%#<0;8*1%|yK2 zY#=q%T4jx65x-O8U7Hvg2J0NH0*2wc~&A`G`7KNOY=9d76 zxyYJ?kI#TWl?33_PI>9!^dZXSugOS zvD{9#e^A1b<~}~>@>Mb()#WSA?97)|x3^^roge!oa-ukrZ$|datQoBBotYi1{Xyq3`pb?mtW+-*W zKK&=HXx^#DItPqZXDAHmKcezrl6<6n5uKW9Pd6rp3eia{x-Y7HB#hXHiV7ADtFCC; zNL^?)vKb+r3g}2qu!Zb--bgx2lM@3`A)@=SU<;%NFxcskl*UMgPa{P}Q$5B*u7TuC z={6sGAg?>Z^qiTlx%^(_aiP>hu#2 z^Y478-_bhPa`+#4#P-0w2chAaZtOI10iGJL9=X zDE|4f9g~a^sK6rJ3y;2gjRP!$FM)(vasD=D{SGZ|!wB^*j8L*sOUqU(z;K6EVQ||C z%5FY@cMx1bE#nf0VD5}$jv;kjnOkX%1U6^|Y2A&1Yl3@M=aG(s9_T#6t~$7Q1AU5n zH!@IbFcURvth{HPX^af$8o|m$AvZrdW=+ImiI$j}6|Fg?*FS6|gQ-0q(!Dq|n_6L! zJvOnK#bKG@k@^>?S%Phb#bG7ihKbQ&bXsW$ic$WCFX=EwluwrEq;1cMQ`1`u3BPW2 z2G&e&IDYwVZx~B+CbjM+aXoB)q{QmGJszf}4Ssbm1hh~^olwtGn3<`lWl z_h!nyXhs~?lELh^*WmspQLF{rBKxok6r1Og$I^eKA|^+~Jc5qA6tYX6At{D+BQr6Y z?2=`qnOWbNFrBTivNT2{SD2WBdh1@oltnbUgM(>|bU)7mab2=`HX8Vu(PD!M{h24W zelih_r^Yv@klvW6Zf}f^Hn*)VOZVLR{`cK>+xy;s>zVuRJ9B1XZf>65Kra}`PfrdE z@8UB}tunNAYi-C=?CkyUt+##n!?)e~VQ%*K&z^nz*3DA_lx% zrh_9=KOK@WJ~Wbzq?@CiVNSg4-z%NJ!#GzU|AYPlRrYKK=qNn4w_}`R9vh#E<_ea0 zG#ZDCU3Q9Atm`pa3-H52dVCD^uwt{(7Q?lwG@MEELmsw5J#)avXR&~mG%=1ExgIb@ zD7p&NZkSZWCYc+}#KXuYu#5u41@HA~dykdY6`VKBE;n!#lMKBp6AZ<}GlBj>^-;rb z7+iSG2Ff=R4w$l|qhyFlk0EhXIdc1}4j+Ei?MJp>e))FnpTFk9me-p0@zgu4Nio^( zwg;{W+U@#QEPk&?bT7a z_}y;K7I+Ig*e5&VdV;bQv;RA2!axxHkmCOvnlL=3WpCMBz|~MpCbs{7poy8S|5woj z(_pr`U znmGnSJeNbWjB9;njaxzAjn#Ylmc3-F_|TZS^kt<|S^NFUx4u<@j-R35rJ3`p5m8=7 zkp&h8?IBNMbev7t(R72QG%3 zm>&kki>fv@`1jTXVsc9Co`>5?i6Pjbbrchv)DP&aKsYbTN(_3bFrQVpliMz+9+d9ru+m%Ahq1o}K{;u~WxYqQ}y?6f( zON_g$u>RwyLqL+ayA0KemKc%wehX+?Vzy4IUzham^BT|5qn_0VT4UYkjPrw!tJ_bG z-`0I*GvtkGPVkRabFMOKMn*^5V`R`Q=xniy&MHbeh2@gY+KX#C4ThQ~Z;7YN%4Z>? z{e+GhrW!*9IB2@#|5;flueX@LWCS+oe_G;sW=T%|^I}h~v{a7pGADY48836mA&Tb!lJrlDb9PFLUB$-{586;JgW=FOPIDk97ah zNXK#=8S(=o<1&i-=XBRn#}wk_ObZKyF6TBd`My73W~`Xr%dzxwE4`EotI&Dr?@KI# zh?(EL_~H4#PgnZ=7ex$vkwWs{jPCab_Ft|Q`0v*WU`(_4>C~JkmiZ(0?8gP?lo1PLTCnAE) zEs$Ap)f#bZ6>@8KTWwe@Oiv7!aW6+nOd>--B>zH2@<$`Ah*X=JtPJ2Lp6l18Q@G_K zR!~Iw!Sbq_Mu{yl24*pL_leD(F{{>$99VB*#9n~`t3zNnYU-_>(_J%x2|JT`Y+dx` zCL8-@ej^JKYke6mmPa+$+Q8&h)a0Se9Wmi7tA2}9RE`?6D;s&-a}oP_la-JzYt;2` zcruTq-H9CTLGR{yhei9kYR7$_Jh%yco<4p_T%iJ0Vy}(i-j>%YXE{_Gas#g{3LC%LP?mho_!#(6SdbJ|nsF}poFO^X)0AEy%UPMGf{KK@U?l2yV{}N$2`Uz(2x-|kA=QtEJK0y=*;s{-+A2B6~D=r!?5BC>{{lr zNxyk)(r+G{^qa>f{pPVrzjqNnENt_3Xvf)jBD4)2&x5}s5)4MT=W=Lgq%P{ z&=giOZ=+SKQHQk#ty+s}tOc?TE8?hY z_I`4}xJ&n8@+#cH`m^LM