From a2ec907bcc6d7535bdc5ee813a348edd3ba5e9c6 Mon Sep 17 00:00:00 2001 From: Meng Sen Date: Mon, 20 Jan 2025 11:24:43 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8F=91=E5=B8=83=E5=BA=94=E7=94=A8=20Beszel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Meng Sen --- apps/beszel-agent/0.9.1/data.yml | 33 ++++++++ apps/beszel-agent/0.9.1/docker-compose.yml | 23 ++++++ apps/beszel-agent/0.9.1/envs/default.env | 2 + apps/beszel-agent/0.9.1/envs/global.env | 2 + apps/beszel-agent/0.9.1/scripts/init.sh | 17 ++++ apps/beszel-agent/0.9.1/scripts/uninstall.sh | 10 +++ apps/beszel-agent/0.9.1/scripts/upgrade.sh | 17 ++++ apps/beszel-agent/README.md | 77 +++++++++++++++++++ apps/beszel-agent/data.yml | 14 ++++ apps/beszel-agent/logo.png | Bin 0 -> 30399 bytes apps/beszel/0.9.1/data.yml | 41 ++++++++++ apps/beszel/0.9.1/docker-compose.yml | 22 ++++++ apps/beszel/0.9.1/envs/default.env | 2 + apps/beszel/0.9.1/envs/global.env | 2 + apps/beszel/0.9.1/scripts/init.sh | 17 ++++ apps/beszel/0.9.1/scripts/uninstall.sh | 10 +++ apps/beszel/0.9.1/scripts/upgrade.sh | 17 ++++ apps/beszel/README.md | 52 +++++++++++++ apps/beszel/data.yml | 14 ++++ apps/beszel/logo.png | Bin 0 -> 30399 bytes 20 files changed, 372 insertions(+) create mode 100644 apps/beszel-agent/0.9.1/data.yml create mode 100644 apps/beszel-agent/0.9.1/docker-compose.yml create mode 100644 apps/beszel-agent/0.9.1/envs/default.env create mode 100644 apps/beszel-agent/0.9.1/envs/global.env create mode 100644 apps/beszel-agent/0.9.1/scripts/init.sh create mode 100644 apps/beszel-agent/0.9.1/scripts/uninstall.sh create mode 100644 apps/beszel-agent/0.9.1/scripts/upgrade.sh create mode 100644 apps/beszel-agent/README.md create mode 100644 apps/beszel-agent/data.yml create mode 100644 apps/beszel-agent/logo.png create mode 100644 apps/beszel/0.9.1/data.yml create mode 100644 apps/beszel/0.9.1/docker-compose.yml create mode 100644 apps/beszel/0.9.1/envs/default.env create mode 100644 apps/beszel/0.9.1/envs/global.env create mode 100644 apps/beszel/0.9.1/scripts/init.sh create mode 100644 apps/beszel/0.9.1/scripts/uninstall.sh create mode 100644 apps/beszel/0.9.1/scripts/upgrade.sh create mode 100644 apps/beszel/README.md create mode 100644 apps/beszel/data.yml create mode 100644 apps/beszel/logo.png diff --git a/apps/beszel-agent/0.9.1/data.yml b/apps/beszel-agent/0.9.1/data.yml new file mode 100644 index 00000000..9322ebb2 --- /dev/null +++ b/apps/beszel-agent/0.9.1/data.yml @@ -0,0 +1,33 @@ +additionalProperties: + formFields: + - default: "host" + edit: true + envKey: NETWORK_MODE + labelEn: Drive path + labelZh: 网络模式 + required: true + type: select + values: + - label: 主机网络模式 + value: "host" + - label: 桥接网络模式 + value: "bridge" + - label: 无网络模式 + value: "none" + - label: 1panel-network + value: "1panel-network" + - default: 45876 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "" + edit: true + envKey: KEY + labelZh: 公钥 (Hub端生成) + labelEn: Public key (Generated by Hub) + required: true + type: text diff --git a/apps/beszel-agent/0.9.1/docker-compose.yml b/apps/beszel-agent/0.9.1/docker-compose.yml new file mode 100644 index 00000000..97a77b79 --- /dev/null +++ b/apps/beszel-agent/0.9.1/docker-compose.yml @@ -0,0 +1,23 @@ +networks: + 1panel-network: + external: true + +services: + beszel-agent: + image: henrygd/beszel-agent:0.9.1 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + network_mode: ${NETWORK_MODE:-host} + ports: + - ${PANEL_APP_PORT_HTTP}:${PANEL_APP_PORT_HTTP} + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - /var/run/docker.sock:/var/run/docker.sock + environment: + - TZ=Asia/Shanghai + - LOG_LEVEL=info + - PORT=${PANEL_APP_PORT_HTTP:-45876} diff --git a/apps/beszel-agent/0.9.1/envs/default.env b/apps/beszel-agent/0.9.1/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/apps/beszel-agent/0.9.1/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/beszel-agent/0.9.1/envs/global.env b/apps/beszel-agent/0.9.1/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/apps/beszel-agent/0.9.1/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/beszel-agent/0.9.1/scripts/init.sh b/apps/beszel-agent/0.9.1/scripts/init.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/beszel-agent/0.9.1/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel-agent/0.9.1/scripts/uninstall.sh b/apps/beszel-agent/0.9.1/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/beszel-agent/0.9.1/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel-agent/0.9.1/scripts/upgrade.sh b/apps/beszel-agent/0.9.1/scripts/upgrade.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/beszel-agent/0.9.1/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel-agent/README.md b/apps/beszel-agent/README.md new file mode 100644 index 00000000..7e9ad66f --- /dev/null +++ b/apps/beszel-agent/README.md @@ -0,0 +1,77 @@ +# Beszel - 代理 (Agent) + +轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能 + +![Beszel](https://file.lifebus.top/imgs/beszel_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 特性 + +### 轻量级 + +比主要解决方案更小,资源占用更少。 + +### 简单 + +易于设置,无需公网暴露。 + +### Docker 统计 + +跟踪每个容器的 CPU、内存和网络使用历史。 + +### 警报 + +可配置 CPU、内存、磁盘、带宽、温度和状态的警报。 + +### 多用户 + +用户管理自己的系统。管理员可以在用户之间共享系统。 + +### OAuth / OIDC + +支持多种 OAuth2 提供程序。可以禁用密码验证。 + +### 自动备份 + +从磁盘或 S3 兼容的存储保存和恢复数据。 + +### REST API + +在您自己的脚本和应用程序中使用或更新您的数据。 + +### 架构 + +Beszel 由两个主要组件组成:中心 (hub) 和 代理 (agent)。 + ++ 中心 (hub): 一个基于 PocketBase 构建的 Web 应用程序,提供用于查看和管理连接系统的仪表板。 ++ 代理 (agent): 在您要监控的每个系统上运行,创建一个最小的 SSH 服务器以将系统指标传递到中心。 + +### 安装说明 + +#### 主机网络模式 + +代理必须使用主机网络模式才能访问网络接口指标,这将自动暴露端口。如果需要,可以使用环境变量更改端口。 + +#### 磁盘监控 + +您可以使用 Beszel 监控磁盘、分区或远程挂载。 + +> 使用 lsblk 命令查找分区的名称和挂载点。 + +在容器的 /extra-filesystems 目录中挂载目标文件系统中的文件夹。 + +```yml +services: + beszel-agent: + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /<挂载点>/.beszel:/extra-filesystems/<挂载点>:ro +``` + ++ 挂载点: 挂载点的名称。 ++ ro: 只读模式 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/beszel-agent/data.yml b/apps/beszel-agent/data.yml new file mode 100644 index 00000000..71036200 --- /dev/null +++ b/apps/beszel-agent/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: beszel-agent + name: Beszel Agent + tags: + - WebSite + - Local + shortDescZh: 轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能 + shortDescEn: A lightweight server monitoring platform with Docker statistics, historical data, and alerting capabilities + type: website + crossVersionUpdate: true + limit: 0 + website: https://beszel.dev/ + github: https://github.com/henrygd/beszel/ + document: https://beszel.dev/ diff --git a/apps/beszel-agent/logo.png b/apps/beszel-agent/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..24e6e7a743c6e56881d238b07d64a09cfe16b6c5 GIT binary patch literal 30399 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�_pa-ij#^=TGr(wg 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 literal 0 KcmV+b0RR6000031 diff --git a/apps/beszel/0.9.1/data.yml b/apps/beszel/0.9.1/data.yml new file mode 100644 index 00000000..5baca759 --- /dev/null +++ b/apps/beszel/0.9.1/data.yml @@ -0,0 +1,41 @@ +additionalProperties: + formFields: + - default: "/home/beszel" + edit: true + envKey: BESZEL_ROOT_PATH + labelZh: 数据持久化路径 + labelEn: Data persistence path + required: true + type: text + - default: 8090 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelZh: WebUI 端口 + labelEn: WebUI port + required: true + rule: paramPort + type: number + - default: "false" + edit: true + envKey: DISABLE_PASSWORD_AUTH + labelZh: 密码验证功能 + labelEn: Disable password authentication + required: true + type: select + values: + - label: 禁用 + value: "true" + - label: 启用 + value: "false" + - default: "false" + edit: true + envKey: USER_CREATION + labelZh: 第三方用户注册功能 + labelEn: Third-party user registration + required: true + type: select + values: + - label: 禁用 + value: "true" + - label: 启用 + value: "false" diff --git a/apps/beszel/0.9.1/docker-compose.yml b/apps/beszel/0.9.1/docker-compose.yml new file mode 100644 index 00000000..56970413 --- /dev/null +++ b/apps/beszel/0.9.1/docker-compose.yml @@ -0,0 +1,22 @@ +networks: + 1panel-network: + external: true + +services: + beszel: + image: henrygd/beszel:0.9.1 + container_name: ${CONTAINER_NAME} + labels: + createdBy: "Apps" + restart: always + networks: + - 1panel-network + ports: + - ${PANEL_APP_PORT_HTTP}:8090 + env_file: + - ${GLOBAL_ENV_FILE:-/etc/1panel/envs/global.env} + - ${ENV_FILE:-/etc/1panel/envs/default.env} + volumes: + - ${BESZEL_ROOT_PATH}/data:/beszel_data + environment: + - TZ=Asia/Shanghai diff --git a/apps/beszel/0.9.1/envs/default.env b/apps/beszel/0.9.1/envs/default.env new file mode 100644 index 00000000..cd05f46e --- /dev/null +++ b/apps/beszel/0.9.1/envs/default.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +ENV_FILE=.env diff --git a/apps/beszel/0.9.1/envs/global.env b/apps/beszel/0.9.1/envs/global.env new file mode 100644 index 00000000..e10989fe --- /dev/null +++ b/apps/beszel/0.9.1/envs/global.env @@ -0,0 +1,2 @@ +# copyright© 2024 XinJiang Ms Studio +TZ=Asia/Shanghai diff --git a/apps/beszel/0.9.1/scripts/init.sh b/apps/beszel/0.9.1/scripts/init.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/beszel/0.9.1/scripts/init.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel/0.9.1/scripts/uninstall.sh b/apps/beszel/0.9.1/scripts/uninstall.sh new file mode 100644 index 00000000..c86c4fbc --- /dev/null +++ b/apps/beszel/0.9.1/scripts/uninstall.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel/0.9.1/scripts/upgrade.sh b/apps/beszel/0.9.1/scripts/upgrade.sh new file mode 100644 index 00000000..07fb8c3f --- /dev/null +++ b/apps/beszel/0.9.1/scripts/upgrade.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +if [ -f .env ]; then + source .env + + # setup-1 add default values + CURRENT_DIR=$(pwd) + sed -i '/^ENV_FILE=/d' .env + sed -i '/^GLOBAL_ENV_FILE=/d' .env + echo "ENV_FILE=${CURRENT_DIR}/.env" >> .env + echo "GLOBAL_ENV_FILE=${CURRENT_DIR}/envs/global.env" >> .env + + echo "Check Finish." + +else + echo "Error: .env file not found." +fi diff --git a/apps/beszel/README.md b/apps/beszel/README.md new file mode 100644 index 00000000..0852f4d7 --- /dev/null +++ b/apps/beszel/README.md @@ -0,0 +1,52 @@ +# Beszel - 服务端 (Hub) + +轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能 + +![Beszel](https://file.lifebus.top/imgs/beszel_cover.png) + +![](https://img.shields.io/badge/%E6%96%B0%E7%96%86%E8%90%8C%E6%A3%AE%E8%BD%AF%E4%BB%B6%E5%BC%80%E5%8F%91%E5%B7%A5%E4%BD%9C%E5%AE%A4-%E6%8F%90%E4%BE%9B%E6%8A%80%E6%9C%AF%E6%94%AF%E6%8C%81-blue) + +## 特性 + +### 轻量级 + +比主要解决方案更小,资源占用更少。 + +### 简单 + +易于设置,无需公网暴露。 + +### Docker 统计 + +跟踪每个容器的 CPU、内存和网络使用历史。 + +### 警报 + +可配置 CPU、内存、磁盘、带宽、温度和状态的警报。 + +### 多用户 + +用户管理自己的系统。管理员可以在用户之间共享系统。 + +### OAuth / OIDC + +支持多种 OAuth2 提供程序。可以禁用密码验证。 + +### 自动备份 + +从磁盘或 S3 兼容的存储保存和恢复数据。 + +### REST API + +在您自己的脚本和应用程序中使用或更新您的数据。 + +### 架构 + +Beszel 由两个主要组件组成:中心 (hub) 和 代理 (agent)。 + ++ 中心 (hub): 一个基于 PocketBase 构建的 Web 应用程序,提供用于查看和管理连接系统的仪表板。 ++ 代理 (agent): 在您要监控的每个系统上运行,创建一个最小的 SSH 服务器以将系统指标传递到中心。 + +--- + +![Ms Studio](https://file.lifebus.top/imgs/ms_blank_001.png) diff --git a/apps/beszel/data.yml b/apps/beszel/data.yml new file mode 100644 index 00000000..052179e3 --- /dev/null +++ b/apps/beszel/data.yml @@ -0,0 +1,14 @@ +additionalProperties: + key: beszel + name: Beszel Hub + tags: + - WebSite + - Local + shortDescZh: 轻量级的服务器监控平台,包含 Docker 统计信息、历史数据和警报功能 + shortDescEn: A lightweight server monitoring platform with Docker statistics, historical data, and alerting capabilities + type: website + crossVersionUpdate: true + limit: 0 + website: https://beszel.dev/ + github: https://github.com/henrygd/beszel/ + document: https://beszel.dev/ diff --git a/apps/beszel/logo.png b/apps/beszel/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..24e6e7a743c6e56881d238b07d64a09cfe16b6c5 GIT binary patch literal 30399 zcmV;wc0h@VP)@~8FWQhbW?9;ba!ELWdL_~cP?peYja~^aAhuUa%Y?FJQ@H1AOJ~3 zK~#90?0tFMWJPuMsoU=i!=i|B1C1IJqk_1R&kfL-0bGcpfHTOxnBekd(JWsQV=@e2 z62HVG8ijxfiwfwBiYPD)pp3G}GN{pLH0D!CjK+mcK$w~L?fU-czTLNOovJ!@>)!5r zyPxOxQ|?=Jo>O-@bxz%Sdb-sg{HfLi)Cf(aMn_aWBBEhG*E{AC*Q@L{Zrrg&!Op?e zL`2HrufVPQT8Q%Nnbx&1c8c+r+bO%pXz`6}T#NtyS$4j072_|rWA43SX^y*{h#nj? z>!0@(Z5x{WOcQMZRM%)lxS{}35^>lGQ7v=B4gSG z?jP%K(DqXzx`Q&hgEZZtNZrxTmcF;JBm1|1`mJZ&q4@!UIROeyt)=Z zGNExJip==0aFVQCWJ2Q#l4NwUFK{POWJZ=%iwwiHiwxtF0@qUFT9*E6xu1ysok)F? zRR8v@Pv2PR^}c$}slWPDh6KzYP-tpHT#>Pks&1M2icDx+L6VG4_QsfuUCl*i(2`JO z7;ajTDcDxsG7G#7#%!5MuO;birdq+&n&|&2q8s}e-JlnjZv4pGp8YMn`OGFzXlj8j zC1&%eO+{w(SJfiJaBC?tB`%+s8K2DgSaw~~WoD_!gvM1Rf0}-xl)gzTb-l{ejSuer zueWVjvu24I0O%M{Xp#{qGDHyn^S>bew?+In?W*fC{&5A1B<=|meBMn&pCjsDs}_5o zIsa{Y{||EkKnH+AlZ5fah)>J}@t@&F6`9bu5dRIXjrxns=>MaOOreF>nEFKY6(YJ^ zW%{!h{>Hvv*8D{QEd&Zp5_FUuP*rz8eG6qW#-KR79 zcwhD3_tBG||4qgLFhQWuL}5HJ;uAAXN0)*4KkV})d(XH;2}LF}F2w)RxXjp9uVu{D zr0H{{=-mJM{=Ju8w{GPk;|ypRC^S*fQM%03i%e)-i2nw65=CZY3Gu%)CNpkek>q-t zDRT=w|4F3J+P2jH#|@|McOT;zXb31YV#F00>j>h1r6MzENhmT57veu-H~U3~#`jO( zuSuOx{oY@H^f#XKeP$4#W}wiBpi7C_JZe*s8T|$Ef7n;;T8I+fX6B{HgvM=N{I|#T z6&ZWn?V9N0q|{$Q$7vSXv`?V@2oxEnt(GDaYD-DX4)3O4#?HEy2v~13T;Gfr8JE8T zH%9yq`pZX7(PcP)4A+A2{!OpQ5E0RGMRYuA{qm}4M#o0%u^pYvDXN{b9PhN~?}m*M;|T+41S=5o^Nty#A8ontS!^|X^O z*s_8#1_VH%v7k$d**qeqt(GDau>!R$ApQ^gsufHk*V{~Dk#YGea3TKtxiyRbC9c1( z;ByxuwQf7@`tQeHcn4L_qd`rD2V@szKRQkdc=R*PNd8BS83Jz z^061*^1kCPy5*6KBcKEnnh~Ty7C$i{{=3KJxYoE3|4V%pk~74Ax4!~6V*W2^Qoqw* zRNp%K!?zyJI0Onnp&_Cwt7+p1;(xde;{S*X@!#JzMe(2a=b!(3D$<`i=EJvaSbP5U zk7b+#ghE5bAd7yZNGUQAD^SY<;{UL(TEQf8z0D*R8JE8T7vjI4+Y<5L3&)&Uv(Q`q z?PD*zw;=g-bj%$qz@xRnpAvr_*cl#@Fo0|WM^rJ}W zj~)GyFMargk9=)chA>x{(?S!!nl_Fg{)gKj{*Sm2|NU(p6aQo9|M5HM!L3Js_)E`c zPGoK{hlNI$60>XAZw$%cB_5Ok>Up4Ke$&W?vC8K?d>PrNnF=5z|&nkVULOEenYM z!@g<-lgRZplUQV2{t8@(|9&pSe}DXr7iI>xr-=UHsEe4dTChT#jpvJKD;Ke4{9EaMb90S4Ij8B&dX)6)B48(uNE~LwF{ur)hHh&^=`-hoI_jQBJb3BJ7i?MK zVYU`CP-rysV1z4*lpu>(fm#+2|A&3m3MP^3Z6>kExcn8k5dZyLi2wfh9WTrxa@6?v z*B{(D`*atJO~(sO=)sWnP$!$1O^8gUyKl6rTUO|H=nfsLQ%mY&u?Oh}oAl`-+GOGKl{ke+<{Mi(E}Z{EtNK zTbcZQkQU5fTUA{qRAeG_nc12D`V|kZpi2+kv}q^CSu4@uLK7Ec7T41@ZShZ1WQ?g( zRhJ1BnZ!MDi2puzpslJd6Vg^7{s-GSGXGz->wP=Y4cefZsvy6@t(8#nfR zXFhFotk9%97@9z0HX&O5N9Z!rf=Lv3oAGU#`HGC7*h-5GH-@VX;=g-bj%xwp|FExm z3{Fk_m&|{y-q7zq`YdLU)}UjBhM0X>v#*GlAZxey$B*G^gZS?rH}u@beGvasVz9C< z6Dl$hy39Pye?{ulH6Q!jJDJW_phJZwF32pdr>!I6pNI?bzwDPeo5nS!3dy;uE)&vL zApQs2x;_7kJay)g8$W-Nqj#$4NTG>eO&dp*#lJw1CGLr{$)0JerO1TZrka>zVBZIb z|Bi7X{s+0;68|~B#D)JLxb~Go*Aqhr3XNtSjBrJf5@Zo8P|E`1|FExG!6b6M z%_J5Xm%joR;=i8@@!uc6P8Ijs}t=r;XjYTGLPaNXEj~!^Ms>_75 z6^Q@AwrUgNr^lhb#Oy(eE@Sn$?}M~p2HUzV{+o98{9i^&eQcT^4rp1SA!c9J>?WYr2 z6XL%p*{2j4mp_JUAySVpk~#s7-`ka70Jf7wKZ`0p4uvdD;%JtY(wmp_JU*)=}@86+m=P+$CEttW!c^3aUJEKRRb@-=0{V1lhHcbAF#@d%P z`v!<#(Lwz4_+z-1UF6#!#Q#VnZDm6I$NV3*H8KAc?UnU+{tL!YZJ1!8i4QW-!={8F zbNOSqmR;m)x)Br}F2w(`U+Zi{Z?@sZOm0`b*t+7^vV{0Q;?DQ{&;2syxt(x3l8x_# ztxQe&&9DE&<^w%eNtjTf2_!nE%{cOKA^zuM^3C-p=J1$)ul9X_`0p4O;(w3}@xMGK z^VDSDE}vyt|Lj#;wk$Bl$(TT)(aeMKCzf_Tn6P)#FJo8J3g1ctDM6+ff1|$YD>{h( z9)Aqi0>uBIUx@$3F>P+_{MSVL?0)ydZ(<0^Xt>Zw9}LH^`=a1m%~V?bj{{U1WCk}7 zWDx&7{v^dMQjf6Xtbrm^^$ltwi8&I!Ei=J_k1bpbS6VQGZ4m$6{tDc(og)1gYd3Cw zG(${6^KUfPzO30dK>Ugh;-AMK!?o-p-v%N6M6fvq zX@zeEMM{t{`?BM{>MJ^k{~mt~*8;@k#YHx6t}3iL5Tm+@NJn17JO{sVz|FX}N@>Ow69yJ!4_#hKKY)S|+mp_JU*+ssl8$sdWLi{iLwa!K~DZ-1H z+^%}Db;Yk`3Gsi#o$vXd`(?~?JK=UD8{f5TWrmA<(M~CSrb^puBBI&~O(4-RZN`y@ z3-Lc6lW(p+F^9+Wd$sQa#DB-Q5dVYR=_lqex0YNMvCy$B(#3z?ZZPJ4ue*DwP_ zp@u@EnFr%fEbV+SVeh72#;&Fnz7-THK^D0$D_zk+{P*}{xE3J(2mM0)FOF$*CpP~z zy?g!o^+~lNvCv2#49BqhqTpN2R9gLyZ?H7T3~nIEx*+~R{4d#sicHlvsEH)zNcgtQ z1Pea4a4}qI!3?%R{CE2+aBG_X`+oJgFF2g(6eInO#@d%P`v!<#(Lwz4_+z-1UF6#! z#Q#VnZDm6I$NV3*H9r4k2+bKy>QCZ4nn)-#@j)hf*pv`tE`JQyvWt98H-f^$h4^3g zYn_c~QiK;Xxn1>Q>xy5?65{`eJKys^_sf{)cEasQHoj}w$_y8IVJ_S6uuDJta?hw< zR4g=sM8~ulM;B6`gcmtOHK#z_#7g+}^dIELL91>b6>(&~SFgQY=ca05Zsaq-V=f%s3sXYMUB z&YlvNv8%c*6M}EcOt9c%3m3zc7R+E9#DBNH0=MD$ua^IwL_b4JsNulvkr9v?SaRH2CvGSS1PgdlVI zW4M-GV{92X}|3}>Up8vUD#yqzZZb!25UCUNx zxX35wvYm+NEuOPsAuKe3M8~ulM;nGpXm|A%dj&wm+e znKS0KyyCT&U;cFI_?|)&A7rA3O$kBf^2cy3yU5pcBPcvvi2r53*4cgYTpNl|Bi7X{s+0!Pt0L%Ex9aWp<`LJP5du$3tQoDI&{;fofwh@rqF2S z!T1wPJ0DEgyXlv)t7(OA1w~4bMefT=gAC%o#~;JB0P#QQ7vg_$Oq<)m`Tv-O#cfA0 zL<^-tBYiL&!|scMZ#7eC^*_Ez(jYUqfgqbV@h{4sB)H>V)0sGHpvY8xgPKTUj)ZT^ zOt9c%3m3zc7R+E9#DBNH0=IqhpN{7mt<(F1Kh*`cuD&ljE%7gKlVXC*c!*WE%zQx> z8rS4rPKrKjkI`qwCFb39iMJDZ8@BdBY<`R-_IzX`2gmW8llNMP0_WtpmJoWCq>RW^exIei`%JZt5D-go;e4E$3=lwrt0;HxSX;3~7Xgk(0>%NaLug zE(7s@z)aa90f2_^(PLlqGa|Zv_&*{dI`;gnPor$W0hU(8{ z!L|rpRxABR3KW{Gcypz%neBWqVeh72#;#V4slFfsfVSYGlYi~I7oGT`b1y#Og==?S z+Oe0;^r=ee+c;Z@|HUzFu4w+ZOZ<1-dv(C;FT3m)8HXc`c8UED#yS~xM($=n{2y^+ip=yr{6pEIT3X8(kC55A zOaWE5t|;&}gMayJaXC8x=n5`6>3@Co;uBuMW7G5}}`Hmq6sz(ps%=-iJV|KjIT zrVrLcpQU1Ow`%_9ei`%JZt5CSc#&UAE(^6exP^a|z2D)V{`6BBM?_?Nz*6|I14$C% ze?BJPtUY}IFe}hR`jTT`^0|*4|B}NpO)n;*FF^dy=YQlvxQG^r|At+Gw__Q-ni+tI zMuo=jxSbCs?A`Rs*tJpo_ibeYKnHQr2`{QNExYXU^W9f+jB%lX_&@k-isHZHyMzE>=5Xw$&j1b7Sa?*q?aLILGaLFk$beU&gN0;y+3aFrT>Oxc#s1 zW&Qn$=v(83nQ+%5kR+wKEZ7F|-|er!)ueyvwU>X=`sK|G;{WikwuygP%(oi@K(}$x zF)#bhL)+8~NzrFREAhFQ|D6#33n=HG5`x{>vbJ0hqA(Z}9TMrIk9MY@P9suAw61^2cy3ySWknIW7Rq2d-PWa&dvw zS|a-QK}*W~Cx%;MLHsZHb-YChwj7JOOli#(nljbz7~+3ECf}?*eWDRiWPmxxMaLX) zkM3uO5z#$F1o6LOu{GKn690#~Oxft^uiE^nJ&O&QNo~`E341sFGIm`P{{{B}0OkQ3 zj@$p+TJ?{j;SYmKx6GuuEZEkX`7bLnQxyMMyJh{Q{fjN;muf=%x42P3CMdQjG5{dM zhNEA84Q2W-=5_veMf~TWNtuOaO!S`w#D9-JhHKeHz766tX8=I-<0t6TNzu)-Gyi3f zz5ujA{AanE44uaPsk1tYjLRRxwe03t{Kq#00Kfp(tz5a-?`OvnQRxTOxcNT>#Q$(x zjpDyyH|9Qf?Z%DE^FOjsl7#r5kI6S{PoHQ6pT-0L0Da<^1HP+?-acx8_#bYYtoTpN zy{CE2+aASfDTV?>@MqjJnA=2CIo>`v%H5M6{ztK4{=8`_g zC|c3J`QPp@)r9!(_Q!B7yU4de&2j+%$nl9|UiKYL^!NGS-I)I}NOxvhEB+fTxt)4W z-p2lvGsJ%?_^t2;l_LI+`tZ3k04QVIZV#MJM0ZX%G0Xa-Z!@*zvQS&|;=g656_pE3 zO+^Oce|UtZG$sI;1AOK+uladj)4K+L`I98Xe=77c8&m?FcDvY?(#6!T#Ki2rVX1#V1`NyRz< z0LIv`X3dh$^yy~n?9TtLi2oe7-&emxRQys+i2rVX4A-)&Mf^vR0RRd1{kQ8sPNcs+ z_^VCxUk2&UOt-{;vT~VL^i-n!OEn?>7yMRugR1et000oix^?UNN@wpbw?q6do|9vN z+mQIriw zBW_HPrHOy|QcVDmV8@E(*Avmw;ICPk|AHdp@;5ps#$3`D8YNO=Qc4dC4a9$oYuQay z{Kwl307!A!Vf)`tioP+K`7c9CV&-^kMrfz_Z~4<&|3U`w-{xB5Li`7ScB4->L;N4+ zo+*p}QDnP`mh#w;2G4hSIm#jlwN6i2szjqhl|c$975?9|n*)c0U-W zCle6=2Q6YQ002Ss^w;vkS(^V{6#uO;6%F2KEIP#h5jQ5t>K6Y10Fa@dW#1#3t@+Yx8Iq$OsX$L3e^vAr8HoP?03<`*VgBhe4fjdkW@^c0p|%c*|7C8URO!3UApVC(XiEGK zzA^&<;DaLlUxh!0U~&({e@fla@rnOM?(lvuXa2#a^uaiXF#+*^(2}$-3jja}eWmXw zqS>1N9Tfj9wx;3M8N~k)Hzvp?BmMyZAVEg@f!Uk?p7h^R@qf@_cwC-A{4bub%-^6z z#zm0aLY5vQQmY8iGJNvsU{+AneV!u>#TrsP^Dte0y#Q!kx3!4BC1*O!_ z-JL$-;6Kv0nObsLsI9}|zhybrXk@R7<(oU*2U8xCZ`PhZ(FoHJ{}mBF;0yq9(290q z7q}4rDRoCDO8hs@M-ve(S--I9elX5qN{&5t5dST%G{^t|@I&eTuEoD+Y5sRg{I{`a zY|!{u|Kpp)Y_b&wtx!!VVasd|#6JK4!q7y!7LI9F=KrXrJL3Paf7G_<|58oHaZHgB zJ#0!SGA@4%*RpG)_>Uhy1Axj9ZsL8@Wv9g+?=-mJ^8o2A6*@ zj5{e(xBvi*3Qhip&yYy|Hd9M33$@Lb_+S3BuyqFUpY5dSSMiVOfW15NbHvoilXF8-Sy72TV;i^2FN z>2jMfXoYG@30r1!ApYYYZvsFZ)^5CZcOt!q-P6VSpPv(BF6j%6(!BU@aFwQe7DBIk zF-1m{>?xthxco6(%dRuxKZ*wY31^_?^ed<5cY!U9ZK>Qz!T&MV7veQc6>-coYW!E+FKlqvs004)>FTHvn(zFLZ|7A!^%r=jm z!Sf>imvUK_(Vdw*(Rqpt#Q!iL{sTZG(3)OqG_*ovj@UArHSxdXuiw{q8o#hP-3L=1 zlW&$LX6Fd47yt1#0{}5lM61NREfD_)BR44im;Cj2zi-8VGheD%cI-SIi2tcU=JE#s zfCwjFuw@15{-L9WS(^VH75_{4!G<+!wr3FkJ^u2RiHQFtJN&{X00eR0Zrff-M2{q* z4$c4koEURSUucvmi~psw`7RMr7E@$I$(|C5jLRRxwd`g|{D)=(05W8H4G}^7x5kXj zWudl6U8X?%I?-s|9Fgn;jv@Y+{aR-uniTkOGXVH;=%!6Ok*3$QLt~EEGMjPn-$egk ziHNM9a^@U2^I*zj^3Br3>>QzM;=glW765=ERy;^Y5z+2M^%t378^nLNzalqN-yq_Y z0EqvCmR5;>000!RcH_n#DfQ0znE!l{5hZ)J$e3gL*c?W762FVvzClE^V0Tuirj)Q{ z2Jyephav+25-h4mtRY3u=*Ild&xtXY^o2%gm-s)*Wm?nsH^1^tcM}!gXdwO%TBauc z<6Q;-Bv3?(6umQsla`om9y?bd{u_2$(XDxl{at6qU*RMP@xScXI-4|&2><{Cum9xc zHKb@?>Dx>#xh&KM@qfh4Ta}_Oa$>0YDjtU4Hp4O6mVw zcaaIULHu|7D{zageVtvGA6q}=9G93qfcWqBSK#6s0sugcg&hlLXriag{QU2#_&>&7 z2i*7{-^l;qKi({;#1Q{I{v^Sj@-_$nbBH4@z53Z&({Hzb{^#e!m`nOXqqJ50H(R%? zTeohsEn|GVS(NN4p~$%WFQD5LK+hQ07N@_yR9Rlmr9akEx9bz2JwHy<*qL4WmgwlvN65x2U9*F zzPawiEM3XCy$arDCMNy?0C2>mn^qI4ch*^Cf^Dss|MDW!2JydO_q|Q4j{A18HH%Bk z9zgte`zvr!WB@>pwHvQ|LSL(kh;+~Doay=BIq|=UP34C1muf=%AB`F9PZHcIujv3V zhd6Z8rk%F;vQH?|Pp~>$HUIN-V$3Cdp;5Xa{*UZ*Pj4>wxIcAP{0rj$u)moHHy zlo?>Yp@`IC_Q*&d!*`tl^Mkb;H})2LkN6;w zdUN~de|}Dkxuh>NO2@?i0{5$%Uvbj6xHDYf97Fui{Wkt!Y<7x{1OOexp_?}Cw4(Qj zj}p-vq@1+GZ1dRFKg56T3{ATtSNA{8kco(Bq1GY;@!zx)_?3%)05E%a-Df`c_!W!l zlSH(?bT`AWgZOW8Ez4%b|GZ68zvnD8=69Vz{4exX46;VVKLD6L9R7)`4(jdL@fB*I z$OPLuHUHZy{ukPA+5C#*zsC$lL@^%*fcWqBSK!t!{sF*jVbzu`3y=Qk!|zgx{)|-q z?If80@*-o7>0@&k+108ssgL>k$6u-m@!#!F65Pq+KZ*=6`*{7vO?&UrQ|D_%FYM0z z&(Dc5m-K~3>8|*n+x4lxxRE>491BDVMaFTWBRh!y3|Agx05B_9yK(cQcPM>YmZ`Ur zF8}+zFwzpU&108!5dXO|H0|snLqzn&s}DKl2aKZ;79jqY{aR-O@gD#xV*UE{*}v@b z;^QczzfnYwC8EOoAOF7ri2vcX>5KnG(myi;8n8Zf<~#xGg!tzA6LWY>zgNNAObf+7 z{3{xu%Q)=v%XeAWw(JCY_KV*^M8E3X^(X`4|6t_yi~o7gPj~eCpI`-6 z8N~lWpL|tiznN7CG5}~Pj{MY>PtpB_KOv=0(n{?#4(~3`|NNX7b4g!ll)uJE^m5aJo5M2HGG`$E z4|kcu{wfq1B1P9;eaK1QVH{d8zv~R*Kl5Nbb^^a?;vWFC2WvNOe)J+``zl2*(xeYk zYWD+(Xcw(XwECC6%@}qN|1GX%IdSoS(5Drh!wk%V{jM_>5dTNqiHLtn@A;c&|G)jr z#vQbSVb_b{2+NuuBl=pR&Z+r3H8`J&*Aj&Y@0FihK1Of(67?UewR*fF{RC3O&~CEFh?syi-Y24^vTqk;JE_E+Fe zM*P!6M5p%q{Zq{#%St~}6BySQ+=_cDnnvGB)GxM`7Xa>irG3wBbnmm`NW?$$(%33L zC+W2m?o{bM)N(CEME&tq_^(BqN1>ItDl^L0qRR{##e(s1#fUcmm5q-{kt*I7%>NO0 z-o^i%t5p93*R5Q)DCKA6n-o=KLJy}i;-4V6Cno+2S28IpDCO)aaT&X&G^S9IvCqV| zBgU>`kqNdHxYkjvMW#5WhZ|UlCTK~{AI)!2h!+)0s?m>q%3aA#Tk z^PRJ7%Pg|Uxcn8kF-1m{>?xthxco6(%TACSoPSL`G0Xa#g$v?;xUIeOe_OU};eE^r zc;WtK`iUjx@R)wD_DzEL=NLCh{A-}dxco6(%TACSoJGdNoql2tbK|ciEzwyP5dUfZ z=6`Oc&b#Ws<9^6=d6BVhQ-UmVUsf7qvn~D!gUscR;aZ4%O*a<+4HcP*CuYCjp!hFL zbXI{Ati-vavETTD8Eo@ynPL8qxDfxTcn_CUw)nSko(8ag3&IylsVkU{(}*@cQs z)fLo45_2ScTV{flI9s?FuC!nV+aUhC{S~;~nE&}XG3JuK&?wP!MtCjL6aNQ2iavJL z$~XN7a}q&hl8H77o`hFLyG6!@`0w|tJ$*&1)F5NIzBb?6OiGbad~}Y-bZ{a5Q?SUm z{4re1Zla0V=CO+?Cs%eY5dRH-I~J&a2IE`=Q=_T6f@)7{;^z$ z{~mt~*RqS;rkieJmi0Lc7sUT?TkGe)e*dObr+k|^5fR3PW@3ri-6!*E-z12Cj&ULW z2f5Qv%wcZ)wWK9F%L3v*&ENbt@Z%ksI@8@9MrICLA;=>4Wu-wj+v1-v$Xxyyt_6ty zLBA0Hi(}ec%>RO2t@Ga;)5qpu&wsz)D4!#)5qa;5{dY5EEO>)VunLL^GKl{ryHJs- zx`LWWVvdAw%S^BmXA2j@l@`ok8^nLNzXG=#^FKc)#$3`D8YOzp2(M+z;{UMwt9#tN z>v_zHL?JUyz&M?RL>F37c(@S%{eHEluV__Ekd?WO|*IB}=qTM3nLj3pp)t-%7p>5O2{Do4egjf5k2gbAanU+xE3J(2mM0) zFOF$*MMVbl-|a8AOIghDXJc`FexrPjxYpVHcu}j9wEQ%qu;4wV$RLCGU$P4onW`(O zi6rJo__oXhD{;1PF^zUedi7vFF@Ngmi`~7N9U(u?@Ad|KE-eyvYjAHy5V>-AH|0!5xT>coYWjE2p zZ1dPfl#?sF7Kr~2f12KX&8m|(GXvFzLZO+&gQ;?gWxv+hh$aOaxD0px#J^$Msk&w6 zD>5#B1#V1{5hZ&{C^9a84A-)Y+@_muVwUwe3m3%ya9elg{}�_pa-ij#^=TGr(wg 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 literal 0 KcmV+b0RR6000031