From 8aa653f36e61f64b4b12a74cd45c64450f8e5faf Mon Sep 17 00:00:00 2001 From: congw729 <115451386+congw729@users.noreply.github.com> Date: Sun, 1 Nov 2026 22:39:40 +0800 Subject: [PATCH 1/4] [docs] Add bilingual READMEs and animated OpenDirector logo ## summary - Translate the current user guide into English and preserve the Chinese guide in README.zh-CN.md, with language navigation in both files. - Add a looping OpenDirector logo and wordmark with a static alternative for readers who prefer reduced motion. - Clone the default branch and provide complete PowerShell installation and startup commands alongside the Unix instructions. ## validation - Check Markdown structure, local links, assets, and startup paths. - Verify both guides retain all ten user-facing sections and preserve the Chinese usage content from main. - Inspect animation frames and verify its three-second loop and stable wordmark. --- README.md | 198 ++++++++++++++---------- README.zh-CN.md | 176 +++++++++++++++++++++ src/assets/opendirector-readme-logo.gif | Bin 0 -> 488422 bytes src/assets/opendirector-readme-logo.png | Bin 0 -> 31680 bytes 4 files changed, 290 insertions(+), 84 deletions(-) create mode 100644 README.zh-CN.md create mode 100644 src/assets/opendirector-readme-logo.gif create mode 100644 src/assets/opendirector-readme-logo.png diff --git a/README.md b/README.md index 201c017d..29d45341 100644 --- a/README.md +++ b/README.md @@ -1,150 +1,180 @@ -# OpenDirector · 本地创作画布 +
+
+
+ English | 简体中文 +
-## 安装与启动 +# OpenDirector · Local creative canvas -准备以下环境: +Organize assets on a canvas, generate images and videos, edit media, and arrange and export videos with a timeline. -- Node.js 24.22.1 或更新版本。 -- Python 3.11 或更新版本。 -- `ffmpeg` 和 `ffprobe`,安装后可在终端直接运行。 +## Install and start -下载项目并安装依赖: +Prepare the following: + +- Node.js 24.22.1 or later. +- Python 3.11 or later. +- `ffmpeg` and `ffprobe`, available in your terminal after installation. + +### macOS, Linux, and WSL + +Clone the repository, install dependencies, build, and start the application: ```sh -git clone --branch rea --single-branch https://github.com/ThinkFlowLab/OpenDirector.git +git clone https://github.com/ThinkFlowLab/OpenDirector.git cd OpenDirector npm ci python3 -m venv .venv .venv/bin/python -m pip install -r requirements.txt npm run build +.venv/bin/python scripts/opendirector.py serve ``` -启动应用: +### Windows (PowerShell) -```sh -.venv/bin/python scripts/opendirector.py serve +Run these commands in PowerShell: + +```powershell +git clone https://github.com/ThinkFlowLab/OpenDirector.git +cd OpenDirector +npm.cmd ci +py -3 -m venv .venv +.\.venv\Scripts\python.exe -m pip install -r requirements.txt +npm.cmd run build +.\.venv\Scripts\python.exe scripts/opendirector.py serve ``` -在浏览器打开终端显示的地址,默认是 `http://127.0.0.1:8000`。使用期间保持终端运行,按 `Ctrl+C` 退出。 +If your Python installation uses the `python` command, create the virtual environment with `python -m venv .venv` instead. -Windows 将上述 `.venv/bin/python` 替换为 `.venv\Scripts\python.exe`。如果系统使用 `python` 命令,创建虚拟环境时使用 `python -m venv .venv`。 +Open the address shown in the terminal in your browser. The default is
+
+
+ English | 简体中文 +
+ +# OpenDirector · 本地创作画布 + +在画布上整理素材、生成图片和视频、编辑媒体,并通过时间线编排和导出视频。 + +## 安装与启动 + +准备以下环境: + +- Node.js 24.22.1 或更新版本。 +- Python 3.11 或更新版本。 +- `ffmpeg` 和 `ffprobe`,安装后可在终端直接运行。 + +### macOS、Linux 和 WSL + +克隆仓库、安装依赖并启动应用: + +```sh +git clone https://github.com/ThinkFlowLab/OpenDirector.git +cd OpenDirector +npm ci +python3 -m venv .venv +.venv/bin/python -m pip install -r requirements.txt +npm run build +.venv/bin/python scripts/opendirector.py serve +``` + +### Windows(PowerShell) + +```powershell +git clone https://github.com/ThinkFlowLab/OpenDirector.git +cd OpenDirector +npm.cmd ci +py -3 -m venv .venv +.\.venv\Scripts\python.exe -m pip install -r requirements.txt +npm.cmd run build +.\.venv\Scripts\python.exe scripts/opendirector.py serve +``` + +如果系统没有 `py` 命令,但已将 Python 加入 PATH,创建虚拟环境时使用 `python -m venv .venv`。 + +在浏览器打开终端显示的地址,默认是 `http://127.0.0.1:8000`。使用期间保持终端运行,按 `Ctrl+C` 退出。 + +端口被占用时,在对应系统的 `serve` 命令后追加 `--port 8001`,并访问 `http://127.0.0.1:8001`: + +```sh +# macOS、Linux 和 WSL +.venv/bin/python scripts/opendirector.py serve --port 8001 +``` + +```powershell +# Windows(PowerShell) +.\.venv\Scripts\python.exe scripts/opendirector.py serve --port 8001 +``` + +## 创建和管理画布 + +首次打开时会创建“未命名画布”,之后打开应用可恢复最近使用的项目。 + +- 点击左上角项目名称修改名称,按 `Enter` 或点击其他位置保存,按 `Esc` 取消。 +- 点击名称右侧的箭头切换项目,选择“新建画布项目”创建项目。 +- 通过左侧工具栏或双击空白画布创建文本、图片、视频、音频、时间线或主体节点。 +- 右键空白画布可新建节点、粘贴、撤销或重做。 +- 点击左侧“上传”或将文件拖入画布添加素材;“资产库”可选择已有素材。 +- 双击节点名称重命名;双击节点内容进入相应编辑或预览界面。 + +画布会自动保存。关闭或切换前,请确认左上角显示“已保存到本机”;若显示保存失败,保留页面并按提示处理。 + +## 接入模型 + +点击左下角齿轮进入“设置”,打开“模型接入”,按用途添加对话、图片、视频或音频模型。 + +1. 选择接入方式和接口协议。 +2. 填写服务地址、Model ID,以及服务要求的密钥或鉴权方式。 +3. 对视频模型检查适配方式、支持的模式、分辨率和时长。 +4. 保存模型,然后在生成面板或对话框中选择它。 + +同一类别下,一个服务可启用多个模型:填写地址和鉴权后,点击“获取模型”,搜索并勾选需要的模型后保存。未列出的模型可通过“手动添加”补充;对话模型可在列表中逐个测试。服务地址和密钥只保存一份,编辑服务时可统一更新;取消勾选会移除对应模型配置,已选用该配置的位置需要重新选择。 + +服务地址和 Model ID 应与自己的模型服务一致。自部署服务的地址通常包含 `/v1`,Model ID 使用服务实际公开的模型名称;第三方服务按其提供的信息填写。 + +视频模型的详细配置见 [视频模型能力配置](docs/guides/video-model-capabilities.md)。未提供明确输出规格时,使用“自动”或“服务默认时长”。 + +自动识别图片选区或视频抠像需要具备分割能力的模型;生成图片、编辑图片仍需选择对应的生成或编辑模型。 + +在设置的“通用”页中可切换主题、调整去除水印选项。水印设置仅影响后续生成的内容,实际效果取决于模型服务是否支持。 + +## 生成内容与添加参考 + +1. 创建文本、图片、视频或音频节点,点击节点打开生成面板。 +2. 选择模型,填写提示词,并设置可用的参数。 +3. 将有内容的来源节点连接到目标节点,或在输入框中输入 `@` 选择参考素材。 +4. 检查参考和参数,点击生成。完成后在节点或“生成历史”中查看结果。 + +输入 `@` 后可用上下方向键选择素材、左右方向键切换分类,按 `Enter` 插入,按 `Esc` 关闭选择。引用以整体形式插入正文;删除同一来源的最后一次引用会移除相应参考连线。 + +空白节点需要先上传、保存文本或生成内容,才能作为其他节点的有效参考。向已有节点上传本体素材时,文件类型应与节点一致;添加参考请使用连线、`@` 或生成面板的添加入口。 + +视频生成时按模型能力选择模式: + +- **全能参考**:添加模型支持的图片、视频、音频或文字参考。 +- **首尾帧**:最多连接两个图片来源,按槽位选择首帧和尾帧;能否使用尾帧以模型能力和界面提示为准。 +- **接续**:选择支持该功能的模型和来源视频。服务重启或来源不再可用时,可能需要重新生成来源视频。 + +音频生成时,在提示词中填写需要朗读的正文,在参数中选择服务支持的音色。 + +## 查看和处理生成任务 + +打开右上角“生成历史”,查看任务进度、结果和失败原因。 + +- 排队或执行中的任务可请求取消。 +- 可恢复的中断任务可选择“继续查询原任务”。 +- 提交状态不明时,先核对服务端是否已接受任务,再决定是否重新生成,避免重复提交。 +- 切换服务地址、模型或协议后,旧任务可能无法继续查询。 + +## 与 AI 对话 + +点击右下角“与 AI 对话”,选择对话模型后输入创作要求。可上传、拖放、粘贴素材,或输入 `@` 引用画布中的内容。助手可按要求保存文本,并调用已配置的生成模型制作素材。 + +- `Enter` 发送,`Shift+Enter` 换行。 +- 回复过程中可停止输出。 +- 点击右上角收起按钮隐藏对话框;拖动左边缘调整宽度。 + +素材生成可能在回复结束后继续进行,可在“生成历史”查看进度。 + +## 编辑图片、视频和音频 + +选中节点,通过工具栏选择所需操作。 + +- **图片**:裁剪、旋转、翻转、调色、图层、文字、形状、标注和选区编辑。 +- **视频与音频**:取帧、裁剪、音轨提取和片段处理。 +- **AI 工具**:扩图、消除、抠图、智能改图、超清等,是否可用取决于已接入模型。 + +需要局部修改时先标记区域或创建选区,再填写要求并确认执行。缺少所需模型能力时,按工具提示补充配置;灰色入口以悬停提示为准。 + +## 编排和导出视频 + +1. 创建时间线节点并打开编辑器。 +2. 添加图片、视频和音频,调整顺序、起止点、速度及音量。 +3. 预览并检查画面和声音。 +4. 点击“合成 MP4”,完成后下载,或将结果加入画布。 + +时间线还支持 JSON、FCPXML 和素材包导出,按用途选择。若浏览器提示不支持所需编码能力,请使用支持的浏览器后重试。 + +合成期间保持页面打开。关闭编辑器或取消合成会停止本次处理。 + +## 保存、备份和下载 + +- 节点中的下载入口用于保存对应素材。 +- 右上角“导出画布”用于保存画布 JSON 副本。 +- 本地项目保存在项目目录下的 `projects/` 文件夹。需要保留完整项目时,停止应用后备份该目录。 +- 模型配置保存在本机,包含凭证时请妥善保管。 + +发送给模型的参考素材会传递至所选服务,请根据素材用途选择合适的服务。 + +## 常见问题 + +**无法打开应用或提示服务不可用**:确认启动终端仍在运行,使用终端显示的地址打开,并检查启动错误。只运行 `npm run dev` 不能提供完整应用服务。 + +**模型不能生成或工具置灰**:检查模型是否已保存、是否在面板中选中,以及它是否支持当前输入和功能。 + +**上传被拒绝**:检查文件类型是否匹配节点或槽位,并按提示检查文件大小、格式和时长。 + +**视频无法导出**:检查浏览器的编码支持,以及素材是否可正常读取和播放。 + +**修改没有保存**:保持页面打开,检查“已保存到本机”状态和错误提示,避免在保存失败时直接关闭页面。 diff --git a/src/assets/opendirector-readme-logo.gif b/src/assets/opendirector-readme-logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..e37a498a94e108bde15ceba58e502862297630c5 GIT binary patch literal 488422 zcmeF2`8yQe`~QbAyD?*@EMwnySqhDP-(`!8eF!0Bt+9`-#xBIzcS*KTjeRLKWGmFj zno>xT#P{|7JHDUCIoCPoy3TLUb3Md2$&z95jDC4T>FNWH=u{4r2Tw@CRNFfCyL(r` zxRKt*vA&pLXo`Js0LFwTjazd&=X^ST!Ok=*{mFssK-sqq12Ca0%W`h64N9;Zx zG#};K*5(K`1=L_~Ol0de8!OT9`bz9N;A^zkBD9%ICGkPDF~F3S%mY=`3z1c%CS-6A zq>8qWqm?SHvyQ^93;b9&=yk;c?8i%Zfs$5qb3)2rN%VA>Il~S|D1=)Fr^TO&mNP>X zaqK>{B^Ks}tLd^m`bm#*X3m;OgBr;CG4ScXyYJIMk9Nk5a|`ch+$@zYe)3gE+D)yx zr1xhfhd!9Qywds}*Dc}k#Cbcbore6b!x}`|7qgqagC!9a@w$nSOGyIhy0i+$AV8An ze;Jahu0gklsSJF}m{dc%b1J`f3sE7Zi>W}19u*i2 @QpCdji|Q+ZzL-D zK8USwQETEAyPlj5tci0`07Ei)Hk|lDI^@Ofq{w(
ABm22Zxk0;y`Iz00<8ny`nIZNr^3LNCu{Ss0mkXS3EBpshezE2_zy3`@+ zi4#l(+2s1f&i9@(h5*&xG^_+nZ}zRmg}CpR)U|#463od(;Q6-jk#|8s;>|Xeo?h)! zI}aUWQr?qPu9 eGpo~yIEo$DZ?nOdyu66r;vFOdgk*PM{ zHl9tUg>^>EX0SP+;@M6P1Iotbwn~bV0q0Q9+ppT8-jh-d=YIzI4`>RNKNp7ZMVN7P zy)=lUja~@oY|E~$XQ?ZV)I?bly{$HVzgEBpa;h0`G3^&{&d^FU7rSqYw#m11Z 963kXM;yA )!0O8t zp|@K}{aS1|0xYREwBYA+w?To?ssVFVm>z*n7o+=ZD~P**=FT0*`$3}cU(jd1_0LBD zpDX7{)* XPoA{AtD>ocdgo|ZkCWRQ7mru$RjB5G*3%)zOe3>H4$P=Z(+oZoD z PkH@^iXe4FDNnVlIU#0mcIrl1yx?uP@Y$?}rR?)em0U zE3Km>D$kbKYPcPaU`)yU_OrZkjz&j+hK|DdQ5@rExB&pv>GZ#kv 3 zi=u}vm9ALM4yoxS%7&pHU}@Ss2@3U0Mwz;X`Luw@cwvmL3XM;%8F+~+QQWA^912w6 z0xI;o^9-(D^ud@?6L>ZScrPRZC5Po+3t)EKF*6nN3`26%1W6;Etq#OF%!4neRL3Ym z=zB%qK9MV@f}4fmLZiS%0|?04=8o4j{&|Kg)<8BNy(?CUvcoq_$LVC$hSUf-8o@(~ z&F*16t9(p?)Cr87y&j8mGEx!D K}NrL z-^lNf6;i4RNh!*~00!cxYAXO(nXV?#%YNBY&8OPzjj;KAwfRS33#}0Y@R~>LI#ar^ z)kj^tkq!XreyUf@q>*Rp0WzC$v(OT;GpMn%5V^)OZxJE9a_nUlw4pf*)EZ7i@c@*3 zM1~x-y`(qj-+P+bi(K!jx&A`LWwhpzo{*(I^oUs~=HH0h@Q~%EWx}wo#<;HA%yi{c zAp@4ej1_XW*SDQ1cF_{`GN|>k5IuCQiH%%$O%V2^v-k^R&=Nl%$I&z5u*1G7wVw{r zTmXW#PYpelLie5rsp6wxEgCpq8~9N)s2$?!;XR1oz^+17FhE5vUFA| r7rTmSk!#2_o&PB<67Q-Ac|%J zDvUrcOzD13;0}XpZBKoaCMu6>GkRg^g$eXw1XQNZEod!oGFT8maXb A(mAz??R_zoZjN1?+2s;wye zyjc1+z(+3UFqV86+4ol0rfx{xXMMaLVJlhmydg(cA~(e$#lwdwLY&es&c#D bcuwy)c_Ju40K(#fRo;B!EC3{kudRQ7;z!I&S zmU!wQ04L=HB>>O>fG_~^U;Q8J-djyvW4zgY7AU2?aRej}0H7%V2JB-dKu<^gC+L`> zFqYqG93K4DAo}Khrqqai^T>VQXSHIflFlYpb-(`I1ZoV3*V7A<0d#l*UFHKa$uGY8 zCR*!)Gn)ln5tgrhP+TLPUYSr hZu(esA%jA+Zup!aC)`sim% zd=cGC(Z({5Wgu*TPMLzxNSgGP)c!McxgS8C&!PjwFA5|=^(X)%sjgK^6thURg-MMI zJp0X~VJ+&+X3NL#E#@k_WKEgSyCx7j-%3F&`vA}lZm8am1)>R(u_CXS{*#QJ?y%`O z27myVTp0#xoSwU;MF3PCCC6-ZtMS`NQ3^`jdwPD&`Jm fuVRDE@`vO8!M8&sU+Un5afS(8TZYMw{44~`A7X2(> z`0Vov%e8MQkB{#^zVK)F*Q1-CBE1!5*PH=ZzU@WNKe|dd08klQNNiX?(N(4dR7zs& zpqnm9DHtvSJ&h2}Tzhq0+ZrqbFZFI}|K61In88vW &gKKo~o1QtM_DCK-c9}m!>!+rT@({z< ys7 z;fo@e0T1x`CC|XWiynKz^LF2bPx6+(^vQuao~VsJs-{Qlk^w&WdR-)g)BO|@`_HlU zJY7cN{}jQ}2kgcLwFYB`jQz14Ha{v)hM3xZtfJjLL~jhA?A@7pB2lgg;(W5g`viZI zh>8q7FQ&9LB(ks(vUIQzN9uF95y~A14hvpkqcE3NDw7HHE&wnWfmKMJt1bBSbtzhW zQ~c#Vs;d2x+tZJY2PvBh6f-6b;hRT6U%b@gC8_j+%@jI4z-twX;x_KdnITI3e28wi zC9RATo|Gr4p$*X^nur3B!Xx$I%&VC?{QMRmVFHuUZRNXiIUY}SuPXQWKb3E9e<^){ zh+RTPO8^2osx&` G1E3V+pf4|r0SlqhOz)JEd6d_BLgZ9D zWVHnKes@^DYt;Lzp!yYM&HeO?4WQse^7*o3MVd0<&`N&sAW69i>_~|{&4vzlES&%^ zorYeJ8hx!PWO1(SRM_ccsc*HkVdc B70b-oPZSeH(j*%KfuTUan>WK_)KgmSg?G1 dD;vDXJF9myGcu7=0qq7*p51j}!NSBobuWc2tE;vb&}rSq%j2<@id^2-o1 z!8 A55@>5Hna|T4?VoxQ`4ju4Ur*>y zG-aKM`}upiElmgrKZ9>BOKpy=2+L^MMD3#=dP}N&(p;GVgF`7P5(@>86yshH;C8Mr z3zqQZ_s+n<>%2OMvG0Rv&2>^&ujGaMJgFB)v+JMfH*Eai1riw(TQ?uFxm|G$&R0@1 zlqX+Ok`&Q_>I(I@TAFO`)hmWiS4X1-0dF%-OQi+ix4?IIDC|gFw`Pv`m6LQ(Ck1iw zPti}TE(;Lb(@?TMDECfFyLzkZy#u#4>@c1X6oC$Bw Wv6gleizWdVBvIX;{XXz|EOkIt%JqID3 zekY>^uqdTVHz~1j4ciB8uK_~5=D=|4_=#(V6Ri^0 PhyWYBr8qnA72LKKmIP=Ww8#^UESYoHK TVxyLhH$G=HBL^n=KgT&zB67Qt4FAQmn^Y<@9@*S zi&nRK@s3Qpt?z@<@ze$Tx4D 5l6+pUATD@gsUGx zK7%|AaA<>xo*8N5kxn9OK|3 7GukEM zmE_bdns7{GKd(ARuI|}q{coc^nZLBaWPJV{zpOO-q0@e`+%qrx6pNCat>rItthS>g z2b^CpJwo77xz?ffU?h<}-J(+F;oQIP&6!t&x-$i2yY4FOU< 2ecr?+;KOb5+*&P}` z `#!W`!&AWD7dBLsJl-t-;sC0eS3Aw&R>g~XtFLpt6Q@}C)B^ sdi91dIFC0&2dNeSPPz*E)c4`0#*mv2T;;ghVF#XU?lYEC z2(m!PyRvtt?c7mnQp)AGZl7`kt3~(cVDLHGQC3U2HjxEH){!i`7z#qOwaZ;PKlj|! zm-{WwQ^Z1d;WrDFhFgw8V6~h>esD?-7+rofYU #Q+Im??yzw#Cuc`ucVi*c7;rxS?1Y$Sw7N`2*p#<0hm{`b{<=Q`hi zM+AVh8{hUq11PFr`gvZyTYv3!B=bl6$x?0sAA1J(^U~Mf 18{1?OA0RM;iVwdZzMvaB|HG{Qko=F(0c-(KxIKOA=ELJ0smd9UX7(NT;2 zl+E8#w=9w5q?0?WwcpDhB4>tl4H`XIK*frM!MhtOqgL$z;j>uU;m2yQRv_~Cs}t1S zTU5StOifUPI2=xlg($2zud#0!L%jg}c#Vu-I$=|-mnu5MjC0!Kv0%^>71EFzb8L%g zJb(p2vwS>$bT9Pj95Z>fG$qLhaZoe^1O2sP@pKM@2M2)=L5Z;fqRh#ZGGm35v?QO< z;@4{2ho8yB#2kHT&ExD!yNhWuXmS+pA-20eD=qcf{IsalWjZaXHu-m*jFC xh3x? CdH@)sZfK zem2mPy9O4hBC4$GHTtDw6xdxj-rsD=fcpZXJo6>mHorQqY=U`UzyQQ Gnpr&SBr#0jJOc)y0I(G+ixjX5$cO~#;+R`AGt{!m zdo=?@{a0LEbciy*N}DDroPFh8gQVyB;*mD7!*wZHRet*_-OekIUiqe2xe*j6cZm%E z+G=HcJ_f+>#Ap-wtP;ERuO~#;$I1?~GYg6VI6n)JC*BoT99Z;`-s9e9pIx8z=$oHx z3;(GR6MiE)0H8+zUg(b_5}uSN^>o)~C}{12i{GEaFUM+qCW3?r8A^V0l&ke@)ZKV< z9kxcwbV_t%*S@9Tw0w_`YPXsO< 5DZKk?nu9MSmG>zxJ|AbSD1hF zao_oj+gs7F$;05rEIV5BemX>s1yZP8zP6fwVrS{r^PTnO$o01z29!7rKma RL% `n%_81@3X$NmQf_`r{v(?r#qCE zmIk##`H*`(e`$vOybQx>Pxl_y`H?$XFr>jpEjgyJd}~I0;X~~b%9qs^{x;v=a5;DQ z(Qi^d@BAm-7r7&`&(MW0h%vCtrs3pE4Y}ii4Cw;uqbUCeMH+=)dOi>HI;;S>QWB?} zUg2aV98L1~ez&%($s5 z9*=re&1SC!JB5L8*-nX|99z Eg$RgN(rQ|9h;DU@;kzj zpCM-Hbzbd>+W ?52_k zxLa%K$AnekH)F}b!qnOaY3B{U$V|}rODJ(;iH4jLeoy{{WrW9SiqC-gR&?Jgs^!Dw zSdasV<##xTjawfIS08-*Dm1`?Vz+r#mT%i79GHgOu5n%s2;5%aG*3laQ(*{tPMr$p zbIa7F6+Q|Bdyf`({?cDRSWkAWdalB_5($rp+s`SN51;+cp9X#CV&Ge8aEL^~uWL_t ze!Q^q(oQHss<=@GqiasiP-&o_>vVJyF;=HlHFDtmvx=fSyS~j$(#Of|$fHti-(H`) zishDBpR$P(LwlioNgb2zOWSa}9mGl&^gC)%l{bk9*JiCx-2|)B8c5Ugq+0Oa6|e>w zvM&g-zZRn5s3Sur>y(1TSbq}LA(liqht5K_vN@e904xaL4TAq6jgOR|JK4w>BHVy> z42}ljxh2VDP+Tn{VFi&)My3TJvucsKE6BnT#DYq >gZRJH@_%39UnOIfSKvVuo(KvelY;uihaRB( zS_@FTghAu{(4uJxtU**#52}^I{U+%CX>>0g-A%{uuM;p_6`*Pe9t;+=suQG+a)zeS z{cLn6fDQ%YUpU~#OK^c{aoFnZ))iC(g%>U(d<|DXUlobfAaE=GlIsXC84+om=pB3E z!W!Wsjp%}4v9|JHjp9|Y(mJt6!F%rD_B>4sYt#_$3Z8pbC!TdueAH>rV6a4nqQv`A z(Ki~Bo(mFRG~gdsCDrdsuBZK4sgv6AmjXF|+YTlUD-ikcGYC!T!cRm|&2hms>C^Y5 z t%HPWi--jR6}HWm1Pa p6kV{+Q?pQ@GCsdxW-)hha5s+DK||4p^(e^mKT)#`DTd-jLz zLeCe!W~v_t%~c!vmVQ3gbYQ0G!Uq3;s8-kA&)0h0FK0Cglr7ixyMsmME>yidq};#P zbmy+F=!Jd {}cEsamx* zaaF6kHvgeoO+MtRR!>_t{#LCXNjW^*0=|#!_6dm3Mf~1anR{`^;rZXH)sL?qhCgh^ zW~dVykTkFy#SzL8B)^2g3BGKQ3J}*u5%gI3V2Sv3-^&%Ew>oV2ru OyF zY@+Jp&$BnVs?}VQc10%uGdxHELH&_zJot@YeBsr7!h!Q?mVc{OwmM(tGaSv8 f>eA_M}XUAq(A9H-O13%@4FycSuvG=8WW{u-khGR5g(0}=S9^6Q>{>Mmq znOgDxmrwQ|k+g_fH~L@rWdHj}zNwuV`Y)fXzwkeNvLATudmA4!6c6vhmiB0j8%J>d z!r3=1)>5wCbWu*R{as$~mp^Y=9)a&SRxYp!M|x`V{_T@h9{*3D>^9dY`(H)!)oy^y zGoxRU|A=G?H Nr0Zbdm{nhq5Xm}VgU z;gjin=K5sjdg&kvvy|e9RyEBQdJr wkpE>}s{oi`!3eub=ytbH?vVyc##t;%=Ro{dTyslJoJB7W9ILTyP*q%stTFa3y1r z+?Le#pUKAgSBU;5 xMwC)$>IBIi7f~eH=flG9%Xrfsg02jhiE(n$g&Ql4E0o-J}JxTemWc!%u zdN}Z7mYcUI=p<}_Gz~iT%+=S7s<7g4E^BAg8GKwHN~f&(ns?arl7Ke)T`Z9mg4))) z7a5Ev+}DS+XM8M*SE%@0oWv#M?lR4{BvLP1TZ^Si92^0#{te?&5J_7qO*A|E)M9yA zdxIC90e6$8!yVB%i&cNziA1>R%YVN>Dgi2B1uSwekmY~B8=K{ndS%D{!x&`piX;-W zPKlSr+H@onO%+- Ax>`f9Y7@NSg2={*@$^011Qwz}zvw{5=MGweXxs z9)Uz0;olNzkvmRc0L1+a3}^~M{@ZUK1Fir^frtN0vF*zksb`FTDUH(4v *|9aVyQ)JCQug?^U=;W4rO6!xf=c86VYRv`#O|eMy<_FQokcFoOS{V*lSq z@NcE@@A*tp$?}ex=eelJ*AIOh_!Vy6TK@15fl&3?=+BA-f&MkL`oJNe2blQh;QY7A zz9Z^T#Uw80a}k%Y{O^;!FV#cgU-zHvO!@y#SpLW0*zP@=r0luKL qm)M1ju(+k6K{MYVf9h_=I z;KPG MB8K?z14O!Fjg%wo7SW 6MFssoHIWkIXsbZx_SNG$GvFldq+V{NifgIo9gMQB+ zCE#>*kbR>WPRIs-zv7*YvSQ(Kh?IFw37BLX!UT1@C_IbHatx0+>QY*D)@ji=n9V77 zk#3>s6 {B+;z-Pg?Auj3t#bMF4s_e#4>=PQ;3 zb^3vkDX{v=tTUTg^Du4vCSPqnk1|W3R9x>YJ@~ciq*}rE2bFjqt50Km>gB$oRTV>v zyf0mX<&I_Ovd9OBc8w$2eR9DOek<1Cjs_*qf=uuDLXO+jV5=vAdtQaYL^Z{H0#j_A ztKY15=Dbkxn~8Pod};96I2<^XTdAKK`sREPsWqdL!n5NvR4M3@A#`omMXA#I!q^(c zZ7cKB#OX_e{^MfqN?1FZvH9a6N6S@*JN}t=1cXch5zB8(Sj7leU9)6DC^{T^U 6dirwk9WM zeWKpt N??W(Yis7G!{l=(=z_?*=AiP0DFn zm(N{KA>;kn%}zSPLJ*Z9Bu5(AvBZCyh7r0ep)tP~GUlTMr)qp-5pg~0c-VmMjN2bs zT-1l37I?S^U7qF!0@>g}qrWL=pmW@~fX;wrmw;7&gSJ)UjnGqU
k)xQQw^(TD0xu^STBG!~ zY{IjQ8-l#Ew?q=|A7}xgpyUy##ufWWb(9Yw0Ss26gAxtB7#^Ly-9@w@nC_1RP!P*3 zW@J?Ha;C-kshIj(ge64RA8(0haFmi|Ak)-}jy@NVp-9w}#?k25@FN1FhR)L1oB}&d zGVo}9H632Wu-jZfuhQ3uF+S}|vBm5|r$!M;p?>yabg*cDy#k?Nes9=I0Oui{($Z-K z6C=iK!G0(}3_jVX&}{vtVy+DhAdz?7Gxi9ga>gR8q#wFxzzGcWyG$!|ySspeOmDW$ zZ(kd6A=!{_UxR4hla4EC2TN_+)Ickq5au*z=oX2_vlH5fd;uQ*5zA6-N$UWbU$a-z zO83YR0w{-MkUPJ>Gi{qJ3@=gWn^vL4sv2^Zhte5o_4D}(`>eq9k%7$SF_IP;B6h<1 z6)WOr=_d1}-GPwQVL`TRUdflx#@A_`-+xNk5-70LMcll`x@<~>vc)}t@gS4wdrD62 z#@UOH5gzPg>$X;01t&eWIT6~!lv7U}aM<^{|JL*aR?yB3{h%Ov&@+~} z+LyQkZBzI_peEF-%f_O#Kh5sUy7wM~cuAPcp>F?qNj)+}dvy_iCWr;9IiPUz*evf0 zf2h>^x^{27tGJ7;wCbuyy_(+nxc!`wUyt_&dpX&XJ7n3}qz{lD<6@z~?Q*%sj*E)O zkuSLUqmE*7P4}$|S}6C!OTf61#o&WPlPd777J;m#(6+DkhpOkVE|vJ%jC>uEs`}nK zKj;t9R_X *nusJZ(MsVi4sW`dk5fPDf}3Y&d>d?x~>axjio_=e~{Rat`(W)DNM* z3DL?{5$%djP4J58rM2JNTYk`JI}N;?*_mCaZtkecrDbN&B3^Z_<5z|tQfA!; f zdwj6Q<2+jz5h<4|x|7Ya%O$e=V6De2Iv)L$)}pYZ64EDWw~OG{{QC6%(*GEvN5v0r z-k|kR2Yu`3?_ MyctR zz>Rc%QsXNEVk~D^$>#B*r-J4!Z#p0&AOEB*Rs=?I_r0Q*etxp8vPH>l$=l~#An*9k zWf_EJ3GlDk)He0QwJDj!Lyt^y_Pn*eIfb-Z>MKXa$I>=@QEG%s+qc*D71J42&BF0j zcON`-Yyj7}+>yeXZf_FZ@H%ioPUD&%E{_2m+ z&!Nk$xHVbAd46t}{0TOX+Depw!8BoiV_Vl{W L86iFGap8TYZ^c!Cg@r8m*i3q(~bT= sS5PejyW&P)^pmO_QcQ*}Ks;O*7X1PGmy%P`Es{ z{^P5%^5eKG2bmQCv+$+7gZY;h-!@t-#)g=ulh1r#+2P$dS;y{vd_m>J^^tyKGOe{L zP7~%>88ElVm!!zVQr}*Y59i2Klq&rAq5t5@{{0{O1T>PPoKEXH9%zl6;#@; NMiV9JuT;;_WJV6z#f3R0HSuXW5xnmy$ysWrjJ+_v&5XU5cRer^A0L=jEFUT3 z?%Z$uanMTf#3#|vKKD@3{V$!p&S;QMcvjuQ-Z6M8EACo3**JB#Z1iBD{f1fmu+jCO zYYO&_Bb#rGFNG{BoBZD4fP}=ag|03J-bq9vg%sW|R#N}k$q={fYs2+XXuDe~M*Z6t zl P&Y$3YZ;YdtzRw zL8TV@)h@-pTkV5B{f$bt5|ttKi)8H4l+|qW2rh#^08bcSntZ2`1%E?zJD!p_SuxBv zE}NRgceY|~v`XgtLlN=Q2EJ4q%$U7S=eDW&qjXef4W+(aeBO97^M`{99orfEATUbB z(Z-D|Goo}6_mk(qt;3veDF f+J@VRB@PN;aywROIu%Sd-z$c^|EM-?_$Fy2bP|gc#18Lhj1Cj z%1xfu8iiHwnWY}%L?@dnRhf_ (zO3f(p^hq-)FIgJ6r!4;Q9ROH{UcNBmB$ zaMJqo^oF$l(-q^zgFn}erz)g=WAgCSfv+cWjAU=RrrFcIPf36eHY7IrE}^hVESfOk zUbOp)_g8l_z~NI2e|T+l+@9XHU9Y(7xfqMwA9VQPUK73`Hc@wlK`9|OEV%BqxN<6K zm`DUkZq?pEGPwJDj#!AKcw5lfO-z?UkUCOtHNnBv5+X>(@-@(SEH`@)?}Ze?k|{(1 zTJcwzl~j}~0OsAi0i|FevX%_AANJMOE{H)krzZ^_qd<(NqoghE(Yk1?5KIOX{Vwe? zmL-D-Vnf?wlB4#YVjFXJk!3@RVq~HK7%_~2;MN(EuqH$&7gI~&5^%a416y!GQX_9I zYeGy~wL>n}J+2R8LX1}3Slf5ZXdaB+yn&Y6z;qSDz*l~jnhFC^&)&s=`eP8voT6xF zbC>=2GCJk(^rMGNV$SO%OPKI9NWK7;H{+Y4@k$A&=qwNUX67I^hfEjyX-3qr1Prr$ zII;ZSwB*tUkc0v{=#J1&X`ZKi`oZ4NpuAWRf|3e|n*b0Z $v|h?QPjpN_ zOpQJo*$N=~)1rh9pMt59&5%Yc21SfK8VMa!Hy|X4hB`Xm7N-L$Brl!D4yA|yo;}^0 z7Ltx)PW_0syX$8b?V}PPhcZpA*RH%fJFkJQmW&CU8m-7wb^$5GbfPuam3YL8_@jE~ z&ZIg|887`%7X2xxs2(3@yh3$7p##9~mZ0^R_r@Q7zHp0UmJCf|PIh;z!BYnLyhrQ% zV$8GS((DF(2SY#%!R*V@<9!Mb0)-*l(Fgd8Z)@nYfaJwaUa9^nlf_`EKu$cRLN9He z;M; ~fv~Q1!9_3`P=J2dq%z>9H3n9Vn)(Z+T2YOj_(+By&he*1L ziqq95OKlP_qs;Q(3ocU|UZqF~vg;QM`}gSwxukiptHzU;DN9<3d5f2oH`q6@wl@zH zcXw1e&r}!)CJCQ96OtkK=G)y_>BEhmN@^gYDu?E=K Rxo!sLkfn7-m}e9yIRJ5Z=a7tdmKPOLyXfWw9nrwL?N zG%==)zeH34vF B<~O?#w?p%IGC##_cIKvvc1 zr(d;m^#3raLg~?Fld#ordfC&0{VoSl3a=BUILB;m54=C2cQa9OG~{B_jU9hiT)TUt z8cTD4@~z1!+!PVbEiT*EaoXakunK{7$QtQR#aX%-|G_>!Qn_{m 0MAx^OcCAwSm5=0suYZhjUu{ywdWu zX-L_@T_zma#^eg>cOU5EFwXUVYlu1X=PmT+P;4IA(X_`Hr& zQ9NFG18Wp;1L-A`{V6m)AS#J78PDql@_&T&Ux{au@Y$2N5#Qj6Qs}LF*xX56eu)>A z1d(IVC&n%LafuSEA-DAK_O*=q(ij&|Y<(7>yOIz%!+XD!Uek+(O+%jb+WP~7m5&8r zwdVzM+;lG`=`#TBTA76PD_0p7A>^cf!L!#%M}KA8cU>0qoMY6E**30PRZL?9qGFym zV$nf>|H$FV#uOONmb(F}U3(s0l(H6YA<8vm0ca~JRgwW3I*fHMQ*ilZ_{rZ1M+09Z z2w{})=Z-k;Cn>mhitw=k(OiWFJ<`P|A} kOjHxf5D1PhZ*k28elW_A>rywcNbQ&zXnVOn~5HU?qP@8yJM}H zAeH@DJXE+f{gPWC)_VjhL(kxqgEdcPff;e2^s8=4aC {_QfU+D_>gdbZU^d6;eK`_LoP0 zgOb^8@Dt1TYY(lZ4kY1=^dF&w?>h%?1@wJ+RsQDT$ {@A|-YtcvM^$-6s@)%YH06EV6xw6yx+~8&(4=L4^BCLJE?VJh zxnmfoFI?V6*ta)bLf!l0$2<1JjTfY#uRearR16#=B%Tfwscy-X7s#yI{-Ek!WDirX zY-v8JPTTcNTbn;2>B-*y#tB(ZT$_6h&TTn5wEdx?*1hTl=jQtjK_y=~ os2tc+<3semFvfc!7m7wK@qwP!km2s;-BjaY*LoXMgba!4d7YM? zD|C$V+1rXnpXs{h5WgBvo@|JAxUt?T>tM(cbU_{m;RA?j;HUR|eZTH# FWR+HZW=F;LOu@KG~oVFx{F zbJ=H(cZYH|wn-y~o7>UD2RJ1zFO-8%2`Z`{E0g|Mc=_ml$Ftl= MgAs1X!)@gIKF_5b`1SdMgGonT-hgr6CEo%`w28_GS688X=79+XpC*m( zxXq;+EN7l}Z2I+X&077ucZs;#^($-XEluNjr9lxa@4iz#?|D)C{Zd+(&r9Uq$XT?g zh9nU39`)9`%Z1@SJ~~YDwp6;=8qyzJT`Xd)^kvh }^BmIH@3{Al;9O-lcIFjE)-7^=QQ57mC|20^L+3#epCATI z(5;t>3a)I`EKcVc=Qt;5ZUVnY%KxC#k6ZPZN}qnKFn(D|@Dwn6Q+tjy*Xs$=>A5`7 zvwv;CcxkhRX|OwB+N)N5`)BOg$DVzS7L$XMg@k-;2H%(6`HmM#ea+chqtN8CWaA~@ z(4ho{E>SE0n#=RBKEb0o7IB|~%0B0EV!&T~+-2oNC%&zy;*6%SFJD-J>v4U?mUZtV z%qA1+3I*M@*LZclh6Yp^{vvOs>VgCLOj91GCX*o)QdpPBR#0i_)AQ1keeKuo(RrMR zclZ1vW|Y&RItQr`Ps=DvnN4Y<_y|kO?%(k~a?x=8#w7-F)k>H&AEP2ZD>6pzNvXC_ zUY(J3>N;Q!a8ArHkM~C5c2+)^f)_9swjqMjstNLrb+Na}%h&Qw6*jbU_c;vO3GaGY zlyB0Qt78x+c{xkNkQs$IlA=&aFVEfUI*pOcIj7+-y&K_mJPw=lDE`(ATeDgAQCtlF zDYn^RH7dU*Y{`*7kVnax!CmD+WV?RANd>ayW3T{?;965iuDNB5fel}vrERFPhPms- z73uIFB_>2I8Ct-Ibf_Rg+sKL6J!oF<>F3zq+3x1YS?Ska;~~lq>$4!qWrQtkfvJ5L z#>mpwY@t8iC}xt^-P%l8w!Tv?YL4~#fgky`bF`RXTfB43tW=GjJvE1sdPKid3TAuD zG@^;am)tNXY^m(lwzQr)>H1BuY&u$cEG$z+)7CGvB1)_qi|kbO7Sig7Ro`>hNe*YS zXOkppK8eHiy7Bo~Ct0etzLx7T>sRx%g369C<8G;
1 zcAa|>RpliqE*(Q@>|vgKZ0aONeW{YD^BNlh7Gk)SITg!c_nw*2aZU96Ng|<6(xaUm zp))>HQ%5qYFN$0r=^e^k#gr=hrrw@= IDnU&grXg z{DO^eRZPJl)}7OzEs0OitYwd_7Wb-0B8~Bjn?qNu9LI_+`G0p9NBzN?*O@kV?;ld* zN=jxPGMV^O0e`wp-inx5)_Ik()U-owt|FjPCf_7YC#KSZiOWqGB+rQE8sC>+?Wb<$ zbUIeCv)}l8X&r5KIr2m+R`WAY $lf^i^u}tflm1-H9aI zXzZvH$#hSD`ov(O%-dBvSfP`l=KBuGRlPY;WO{0f*SzqppYggv&ha {A*%{2V!5@9EgMdFsmQHFRJ$CmTC zThmOM$E>;wrIo39a8bLoji`e@M(*6(yeiG;os$~ >WzJ%^7oO{O%Y)zu>BuWUt(#6Dk73Hnka@s1cL$7V|?VK-$y3O;@S zR+1`g_2mt~B2-Ogl%s@a_w2@7 xC>-$p$AQ?^mLKa`RHly%_R?t2_N zSCTjCm)K?rm#JQXo`20#*STxaOtn1`1)L`~TACSCbeE%&c%{A*;Pop{nSn8 ^95rR0GQXPN!?Ey1 zm5-7rhA)as4jFgc_6oGem*CP-G>?}O>q+tZC>lF4-@GxOS6Vryco^~fy;;GG&1#8u z8@KkY++YLsFU-1fjZr_N{P)JaYGc<^GoNiq{R*-w9}xrjBg~56>QorN#ku8 1mJtcn2+P6ZmL6#}b)ZV0IEDrZe!Bp3uN8Kj@os>bhR>s3k6c24 z)S804@WEI4q?K7~nD0S+%@m$%fFGD~^5%tO!#9+^zQU!Yqgt8#j5)2G``G0XA1Ptn z6BahGnB*&inR5)H)6X4Y(fQk9w1ubx(%5TcS4j}6W91lzYT<2)e0ao+6NH| ;`P3v21kw>x*-QUUvw$oC9D93GK( z$d>RU#cP
XF9te@?{Qr6HZ zBX%cGhBi_}ZqiT@y%KI%_?sD+*3X3B@wh}5PbM`f(88ohHu}b_)-DU3HDZJPtX#Q@ z$p(Zk(k%mJ;d0R@S1+fD&lm-kiHUNgDHdaxE`it*n9dnI>OtKRI1Yt8hz!h-IJ)nQ zb~&Ep7Qd8+>z5AvJ(6Jql}o{+Ho&~#I#l)a<-Ky!D)pImN`zGg?CY<1UaH7~DQf2j zrui~f`Ud7T#j2Jf*+@fvIK*>`eUSf9wk;K(P0XsU^<-ml0c*#5oE;wlJQ2S!x-j`j zWX`@c(c6x(1O_i_WUs_R24vM=!W+}W=JEB9$`mE2QIT 1Di_`__tlYwQS4HXyLEA-4qa`%_`vj*NQNAyZ U2q6Ty(5yjw5VWF2+{2(Cy7i3fj+vQVv z=9ILbjDE4)(PD-0Vp3kQd^pw_p19WuMm8nl6S0?_ke4jHW_~lZkQoM3ca660Ql{>5 zD4J&aCFVy (adobK MhY8^@!SGr@hzZ(L3le3P6Kcx~rpiSqAeLA~v3^C#(TaQF6=jJP`TZa; z6-?qTh=^F*73iuHw}Rdf{VG2>SPqt^Cd&fQ(*RflBp3wZP(V0lRey8Uz*N=HR@I2u zgO~ab`cWVb?E$yx3EBqmu|e`HV0|Lgo(c13les5`q&bsMuVC7@FalVRAQ6kDR3UNP zzw=--uV$;c=2tj&RT+y~!Ejqsb!kw8L) 9KLs`hVDv?qM=$f!>kzkV^+kzQ!ep+gj8(l^CzfA_a{_@G0D-fDF=4y7t_5-& zs}-h!z4=wV6*z4bEO#%&f>xr2kNmFRAhlY9rGZVzFwV%KQSTCdpuzq$e#IJuW&tuQ z5LaGlMC~J;I>76| EY72X^q5i5OFSZ(A9 z9S3 L3+18Rc)AF>)ZV*CVN5n0M`y+Wb9Hr|>e|Ub6g_NGb^QR?nFUvcc7KPnGw# zv<|#&9s1MS{|DQxkA3y0#a_CFLxJ4?gR=;#+Xn)nI6>U{dtm<9vrku_ea?TjX!8s- z@@#1j0LDIFJMet<4+cDfg{)wBm=9oHPi^V|o!Y13(r}Xz;IEr_LC41;G_dvxlukz^ z(-C-sHbIXz;fOYo0v@r}wvdrF|LHc#Gw_xc?E4ugr4~|?_yEcRR>Ijfbr5hX&WPNq z?8WVe0LNqbK9ZR^VAZcozFrphD?v$Y07M4R Wlhc4br-^R^C_$z2oED->4Dm%4jK*UPiNk>RX5`K(%?VMt7PC;LucyD|zb{)Xn z(D57t5F|2y2m%r44{%YqBSCN-a-WnF@GUndN{c_8-l9u|T;79wpxUQU)NTKky2e74 zqCt*T_z7!x{08 7G&fn0ylT9!eqTd1Knp*X;p J8+zO9MRYxr9M4&ZANo5Rp)Kn0or zet^?`i#B-oB%zpBc;yKR2eM`j^5FW0RB=dKNc8NfJ1RymuwVom#QPmrvxOBO#1V+V z= CEK zfbuiO2x(PlI-g(Eu;4Gu(PTW4^%&(fj>mzpL7;cF;~sml*58}t>j2k5tgi&lzYz4E zHF0_e^NcnsPX%x4y~d_h2{I>&S|@JF@qlQp@*2>SwOINN)<1dT%F_u0$hg!fn73_E z4EH9c@HLdd_w*`WR=hOzJGQ{^&Fu#$_BO6A51UtryYD%9+Y_@J1g-QGsJS+N^8Fh- zY0Un(o;VYMC;`lLguo=TUo8pG=Q+`mJf-Dynlt-OlBy5)QqTn %@nCU8ZqXlo)E1puhqfC3BJOZHr4CP~&IL5_Hn+83X{ zz26vkmu~o%!f0VK9b_3XA+l1A<#yvxAlBDDh&l1Qu>jZzAj~d5ZUZ1zpdUxZwO7Fs zg*Xi+w)8!=&QoB08Vb;AtRw0OK>(VCT8E~isE||J #u300h B34C(yQUh?zyH-~c)i+cyX(VELZR zWAbSa(OABhdvATOh13^dO&s}WwfHGPfXn;u5;LzPXPRnkmU+CEr9k`&jziF35Dbgn z9pOJ|@@|&~JCy{3oxp~D Ghx^VYSa;$@pa>0m6B#*mK+!1QZPXfG|Ly z5eWgf+&dZ=Y0ukignhH}0l@%V2G%$usMpHiX_l7qC_;(~hNrz%9(t?L#wWZqEJ6mX zi7)TG2jM7y_4EcRIG_SpLV(tS)X&3aUeS%Zx;*i>#?X>AIQ_TpshGDz*OxhTG>G*c zJo89Piu)N}2or>?1xIV14^xHtrDD|wT~-_;Z^^+NA1uZU;V7E?s_YM<43MvKX^i?b zfwn1;mXltKC7xI>;dsBV-NJ|hAPEXzr@h+xG$i{hwl@(p=&0~*2Q$QMg%hDEsdx%= zSJZ1&@%C1;=MJ#y@Ru?72pUPV9P(e!6`^?HB#JbMcm>viYrxK!fPHrt4YxOf-=ScF z6lX_zR1VdLBS>qcPaixGNj&?PDyc`>zQA~Z&>C_N9)-fot(Xx&;JBNRwAm_=;X7#{ zT_rP8t%<#?q68|(14S2pc4gy?|0|$vz5~I*lJ%l2)3Mw$V=14>OLyMfzZQu6{73uq zNU;TkRNxyfoX;fX;ZU(s#=Hd=a&8+ty?mDE}M650A!g z>uoSiPA4E_Jw}@Av^%L7(b~cG&p*rY?4>sn;Xpcc_My`EFR% N zh~W(FeH=t(aQc`*+tqcV&F)}?phF;HVs~gd+^{|MBLe?nSxPHzi_h?!@Z06vSGPg! z^d&NaA_Ap0!yzw^-=#CK+q_umuuGF)ba9d 2;AMhzO0_NPdLre@7oWiOSlzPuy?A~$n?#}@V9DADva07;buT}U3>;AU z)1C&)+qC{HSzbZ}qL;3RpllSIE2pLS=&DY=YKP|Q_6P_P1j@PWa)RO^1R|58n2ch5 zyc7Ev?T8{@5r6ptkod8HfM~L-)jtJ*1`qI_^r1k5HaqdWApCcm#J6bF+9PYH_cg`8 z%?s;6xJKmoJy d$)QA+mheVVf_SZ5tB~f1$c#4i}p#M5I3j-p%5#u zmyyceCNCs?K0dIKefvW(74$A5F{+QuJXdrEQ?YRSQV?C83=J4@@~|8={N^ru(1g1h z(FW)&i#u!blWa1Xo^ut_+GrXz{Ax+Y@?xON{sJ{UAU1eAZ1dhPNfnW3``|pSp}lWK z^&H#}{FUyh0$B1Z?Lk@#EB5Si%hDm!U0(oUM7pSrm=HT;?pfSV0>>t-S5pS~Dp|bL z7}s*sJQ||es9qkejL*rd56j$As*vtlxO=4v%VIphv;)y#a?bLT*kUiQ@yLne+=A0n zI!@6QPqusSIO!wkAl<9G!T_=O&FRO#gvBgSP|b&5?=)Z65ihzu{Aj;t7vK41sdIo= z5gkbHq{P$UiHbhAbvQkDXc3<&zzhh>y5tkS*Yn-uH0Q+VuC9YE;@;+IX81!T<;Xjg zkTc?YPRM~ua3{(bYJMGQ7EcdMj75)Ch3CPiws+ GEOdoC}d2vv-0_K92SgJE>Kyxmycyb@dUy^OC+N zeg;LHnY9}sSs49Q0**O#H~p{8E+b)0riHjKm`}+ *+1d?V*Ljs&Zf5yo&Ib6I z6t&nu?1{u4pqJn;4ob-IzH|dfr<~BdHK|%cVuJ-ZIqdVjq(No1SR|uPLC4B3%H?Bv zJ}F|{r9F4>4H|G=Ax`f !8>G6RbnU zHq`yR{^<)5Dl tW}(B!J#^w-yFwhBOw}QIl+p3^liT<(>+WXbiaUmO3eiXY*Zlw zoxFV}P(&$?K&Cu$OJ@jPU!$nIF`$lD_oj9;sT$13^-YDoqIoO^94g$1v|@j8o{W)_ z&?W2j773h^(_HAsp^wD3fr<1tiweHZz@W4!o%L=>2HI*{!hqtLQ)`EDXkW*6-lVsG z5yBb&7hUfimE<3|{oglBmU4r8gF7d#vK-;o(n51*hNfj^rKM(5aOcF4S(#y4X^zmW z)U0stLbI}EI4Z3)v}I-T@cBN!-#O3o$HQN64xHmT!VTwry{^|q4ujy*QRKFFYbg&T zDriik4Fe`W!IRK=%91qfO?C1+e{3~FHjkGg8!321X!J_&YYUY;R@$ZhTo`I&BQC9{ zBP}CmPZ#~}Hx%#ogs@>GCa*}oh1a{`jD22w`yRDlrF|JovFx `!F9eA7B^ zxXy-`1KZP^ifRU=sZK8k^G=z$A`hf}3+WgFkl!|wa~@GM0=fTpdT0yu17H7N>EV{u zK5hK@>|mY$zv`zNHmuO}zth92=`?Lwef>RyW$xdmwwi?Ck=SszTqP5K _N@+V3U9pZoapz=_r}BTzg?Yi?)TZ6*56_2gR&*3Iaein Qa>z%r>~>0Vg6{>Uw#ypmoTNY@cP70Rz-YYpog>G zZ;_r?Lb(jXLc?Rj;%~9~w>?#3_vx1}e_cxOooBhrx>JyXbk(Ww@@VhkinFGIiAsU( zkM2ss#yfT1=RzN}I d~-J`nbh@){5!93v$}9sRob3l{9lqR<2$QY zJ3H~{le(W1-)>&Y$I5)RUYsb}s^4-Zb;uxwroopx3gQA4 lG|eBo2DAe=^VIs|NHV5qxt?UlZTl3 zzf!j4f-xi4%GQWi9hj%_qrrPpy`F2I `DN z8_@Zt{-6}kiEPa$Z!`}&F`kINW$ZM=s=U#!t*UT|TDxF9=B{>#k|wj0>@aw+g#IJ! z9PDiHfW@ztu5S(p&3;Q#9*hSh9R7Rl!^A6H7Nu9#+ltt$*%7{Ho9Q{9VA)j5beB7t zQ*mqgmn72`^Ve7Hn6J;-?Nq4rS$hicSNdRdvd4Otv6R7em*-E=dy=>_`5(Kj 7BkMpEQy2Ld!cpNw1Q$ zKJ1;7lysI=s_U7k%H57kMB2JCdzrC-4AClRaFVfA{dEA65niF1{$*PIj6lL}l2Q;L zSxIUs a)Sl zs@+?0orm3EkAByXt%~fclWK*cE%(bdpmQ|e9?9~p$}3cqncjMegt1oWg!-wZG8NzY zDciw43* (Ra`qtwt*`m@O{p!jawQqA3MQp#{N=+lDS3!-`DgBM%?}sylIO!87 zkp4J_7MsTR`tSC;NA=&~mcxe5_)NeQ#@MJWLY8z%sgf~F6Bpp&x;?cteX~=mch~fc zN)n*po3;aYLNrl(me3(#t3Y&1ld3ZJnL>!2?CI3@?f@TJZNz;ir}tJM?m}jl7AiK& zG$hY@$MLkBkd@qLS#gxtcnONn#@BS=Rky=tS1z3?LErq>b N=qo=R8^(ijXC5?Gyltvq1jtf=`jvUD|pw{ zN;&+xmv76bEGfFPYF{ScyiJ2=Y2zKb#{(PBn6$lNM1=2G-z0X7vvOkRW}N=Sko-TN z*!7-RC2Ejb-0M(MMK~!iK1!gZuAe0qXtNfSkFsBC7_(5D1n040oHpXhjf?bacP#zI zddwRDI>@O~CHB=tjP0>!H{+kgAz!8$l9mWbZrw?r6 ;WZpX8IArput*AbG}J9a)G}kLb7@QQ@Sqts~n( zW8D?x#y=13deOW^9oar^pA%;#f1MOUfKpU2lqlSvRF|UE5!u~#jr~+La0=_MckFzj z0h^<=qx{ zrMdSxC<|)XVp&bt^Ol!BsV$#^M6^B)4ULOF!IeiXa@?#nScz#q$N?TtLS$7!!P>MR z#5S1cpGi?aHA6m64it7O+!Y$Xp+`42C01w(Pvn14cl!F#oRCH))-p}IicYsW6N>5a z5>o-b6osx)Og$A9k%63+L+xZ9{oHq^Z%oPh7oi!%&>PYF?JZ+UHr` JH9dp3l9b2Q%U4lb1^g= J*Rt%m+>P) zB0W8_ R%F1g7+FXZQK#vs>mg&sCv<1%YJ{wt*wI{qHzNQaQ_%GAP~2EhGrN(l8ZU z#W~}vm@Ne>Nxz`@DV}N*6 _vfs9P(2LU7cPS{%wMVUD;X7R~<38OC3;QIsCx`j-b z)10>ttTAilF64U-vk=2JeVO!wy%*kGXohrOrJcK-pfSTdd5DP&qPiPiKaSD#nw^%{ z(YCtJ#@^#gnOB9x={V 06n!?ZrdNIoK?83IJ{v5Vz;Sy?p~h3Az*c*V*@r8@xj zxqxunC+3dKk?G w$DSyFJP@I zwT%2TVc_~zj)ZJVh22j=7ZF{+Kt+;~$2&M#zauTPpsuUP0vDt>YV!$Qci&qx483J7 z13HnKUaYW#Friw@Mmx+&2M9K0Z1frlytb&Qzo20r6nMo4j(s8^Sjtu5JNA8}ZBkzk zz3jng`ANuD$Xkn&Q>`s;#9@gfU!wC5GT`j{fU|GY#)6Xw-8G?PS`0(9g1rIYPVmrv zLh0^A!wkh5y$U6hDU8}(oWjjQaR}Kq2bJHHY}DQ@f>Prd5_1}Xv{a>r6Y{}anNs$N z<`Xrz0^J8xiD^f>duKI70AYnHnZ(5YH$2Xa&`&tjmqnUgCW+%;$&EWt3bV!si>5Iy ztqgRasoXlh9Ll 6&RvnySuTH#67*BN z4_dSTcY+UqIl @O~Kmz9*=2v9^`BY!ehDac$5y#Mc?; zV)=ltkwlen;v$?OxB(AlN`_mI;U+Y(zv#j9lMf~iJg^WOjhOHa{0EyvO!$=b!|9z5 zXHP!-aNwb}Slz^bXd{3NmH$f*g$EF>9E2ycY!?{{r=dJMT17-B=^;hkMD;rYY$}9w z0^m}7o)lB8{{qDrGM3&U+YTs{b%@hLg*SlQY6n@RQ^TfHwhYiY)rsYa1Hlf%_D &YkckDEM)>2qzjS_P ;D701Fc|!%C*(^{kV ekiuROI^p4}VO-W%-!5+P80;;&!UAqjwLOqeAD z;k?qeNp?SARud|~>^aJi|BF4-h}cMm2qHQNo9aEh+Rt9?M^L(og9l1h)!81 ;K?S9*DCmfwN%VCX1|n>5V%SZN79G!#FF-*Vncm1Lx@D~ zzyO0rLb!OBGJ>O2^M$nqv)!6vY)c2TgT?s(*lY;3u0rj@Lk|r>_|%B_4}h2*$^w`p zw7;lZv$sHLBl5lt8^1Q^~W5W!{-5E2fk#lW`+3F4f6$WU?VR|10ukB=Vt{)YH7 z=Lwbu8Z!}h47y?e2v$ol$r$iw8DBf}35g4H6>Jhg{CJ|i86S`Z9xJJmRQ?el4$MtR zD6}56iWyxex=i}10^-P^DIc+yQ*QN3)@~I(l{02pKepi?fye k~nF0K|}Cj`aH>#3X+v%+Yh)ub%j_Yy|E#BK-xnje*+T2q(~=>#&}q>_J&B zph8Ai1WEgoQQMdxM1J9H531$Be`=1=J>gjLL@))!Fk#!ss84kye=!q51{FspoG73y zFzCpCnz@S *mkBN+=F4XbvSn`p zMR8wClH?bI+QbG@b`AYH)e~6Oi$47%)Z<;)@K|ga6!b>h>=ekUd;55yoWX-hQs1o$ z9Z_J5qqaWjvQDZ>-&3P^5vO{i+k0b!M`R!Nia4Mm8H%!jFy)|z-86P_N?tg5X<_8@ z2 `!!Tojr#rH@WsKN(TnBcygDN2L5!7{6n2TIp<8q_`4ZJ$NQh@Sw^ z)!ut=1CZj802%;?fS`x(K>!F@d(ThLNaE5uYiV#6RZahxl`OdH5kFzMDE M%YvyB{#hLh-PnVeJy*z{+6Q&AHfJ{IX(`&KR|J(yMC;t)C$Pr@; zjsJ-IJ;eWTWH;UQKuYv~KmZl%!GmQV1X!o1En-15{nhr%(CG!lbPfs62DZmYUPtK) zp?Im@eQHF)T>0Xshl^h(7sa=F2WX8hHNr>RF+s6jO@;}g@WE9qAB3`xXbVjIc0Q WP&PmLGf}D$)QuvcnSX z-1$_kkQu@RTSAozSg1+k8L*9aUP#7%=k9u@8Vg)Ax*N58 >={CHnX;&cQV 6j!hDb~v6Tf`ML{0eQ+@8614 zI$AdPx4!4hE6Kn3*zbm$|B_fBnh95ysJ5&(7t!!~G(hzbNs zjoezp871Q(Gp zQhQ(BelBT81!%iTmyHm6p^v3EmJRb??e$z96aKq6V)`Qn0dT iCR` zL6!na@3;I{4bO7h(`(-|zh2#J05f(1wm_XIT}DInsSEVIj^*n|Ru7!_`Rvy~aU~(e zJkfJ3E{Zv&aHkWVj^DqR%&-0&+!ik}c;Da5&>yXI(Qc%= fu9L=fU z5WAu_uUSG`DxsDHXLT O>ZKGee4e{=Im@;IJvY6>hm^q%a|zDXNGE2*hh~v+nPu`2~e|3qTw0*6QLlx zR-rxs?9y^bxzc|iqwnww^E>$Och-yFYbH(1xd$sBYM)rY{}dXd%U3`wlovoCV9U{9 z3zBuZfnf^#{kL1Xe;>j<)sBB!(sfQ+92n?m_{7Svkri!>ZOndE0kUv~`Uf(8s{M(1 zh-Tm1(!pOPx?PSgYrU?zEd2f0`O2r*ZJflmd7WCB1I?c`_Q;S)dMFQGr|k+oI~q zVE4x>u`Z^`X;Q}MDWp#1{=O@TEeNc8j7w-Tis-~WT71YmHAB?XHoI=1x+>krAqVzE z#%y@8a1Y)+$d60|5F{p(1xM+L^@DyY^SV!F3%XN5@lrI1g61p`PUE9b8w##ga9&i& zMD8DhE4$s+?_R9kIvQU}risA<4mr743<0IUp-6;!#jEc%%47tc^9pzB0U3@4CcsO< z^M%|hFu_BgmKovzOKv>X#$$SMe4?w4FjsU_Do;r3y+Tu4Xn^TzhpQK> Ws6?reodQGCB->fiFY*)=B zzhjiGMQWWoWo1%{#*+aS+KS4MaJe>{C0BDND>UR>U_zjF!-J6T>ifv#6$(m;v0X}q z)Iwv)4hA+ZB&lI|4w?L)_84_Cl?ex-(7!!NgZB2U-jf;~;RX$A!3R#=FS%f_eD!A; zN7XC9#pSrqJQD`aa{EJbjg@kjGT56K68jYzT$NhBK2G1$;9^$!?TSm@IHeBrPU+XJ z`$0Njr0Fz`jQUD>B9B_bur7_8N4>y ~ zDsmUL+6pVA#1mQ;n**6rbvo>&mkqiZL%Y0 6s_EiPzKb|Nwc=A;Z7Q>l z*{8Bhcx8Vh uxk4<}ZZs94QJ~C9K4l%CXeHAx;|ek> ztu&9XI2MrFR@kQ&XsVF%9_s`S03%PS55CUYcNKl>N+Mv_EDirH^ktTM@izv 5Er$E=m9e{7@B&jeG2`RNzf zUO%I+H!JZ$$H#6;Z7TlYSfX8hPB#{@61rWV%~W5lCXdU!CrWa#)<2ybMC^3SE0F-1 ze^qg4q8pdfX@zJftEr~-%MeFha@@9p8thby!BI)~IL4WD5YRYrvDhn-ptlL?8aSl1 zWwE^usONBK7ekr3ZU@#QnI(W;pDXGj;C~8Nb(BYQ%dJ|-QK8yPY&%kn4krVJ*bk!M zi&IYIL4kUdr{d1sqa!eWScUu2uvv9bK&rg}ro^RP)Z+lsWNGgCxIAg}&VVR;@uyq( zrUOB>wmaw?sWG8V_oH?Xt5wvef3906q6Fa`X2V7``lCFldBe_@cV(yhk18Ld0>$gZ z6WpO2! -= zD=EFvBmuhg)BQ5Oqn-s` z@ws;fnsMa0PtxPe3yxuOP01r~&Lt3MfannNfevs_W_3|lcGX$b74mQo`6`h4VZfo7 zh9c)5?^jv3T);AulA#JJRAU=y?9|O4-83FHQJBW#6X#s;z*CFgN2IIVownnG#_epi z6MQx5VNS$8`0sTahTT8rq(-$da}G?{crZ2}+r+P|LgwmaYV0G|Q3Y{@o4zW$$pm&h z@9L!i(LwT0#H$Z7XvKzFqrIAF+18hK=5(7m0=4YYBQV>tsqeJA$R!jGe_Xi-;l#^* zGUkj28S7n7t$t*&JJ8*)l)$Fb(OQ*}7w|mZ4ax}x_0{dA|Hj=mD{4!qC27F{Hm>i7 zZK0}k08E+b5RVRv&B^zc-{btv_1|0KF>lA$=T%m;O}t$YZ#HQvDKIC6(dXOIAm`Lt zpF|bsTh{L2S*3yVCV7t=L>G24l *a z^S^4fI0&AdTpD>eETp*}-MmBVEFLddQmmG9kp`HuP9m?2S5b+BmmMXQCe%V7I0UtR zxR>(fWv}8QVhcQoO3o0r|47?NlOaBNl3tLZv?V6`Er|)VWznQ&I7H!{Yov339aWD| z#dSzNAQm43Fe*!HS?im}+RR7yK&B$Q_|u*TS4wZ)d2M&P(#B;e;{ZEVlgE 53V{_UB*&9RD!90FvG>O)w+gtHc<_ z6`bgIc+Jz6nJ}=c1++L;8b>-8n4N8f4x%@6x&+cajaglSzP(W$E}UU@B_ONpK&K|X z>+@&yepbi2;e3bLtSh8TRaUnQ=mr+29B4V6_7>gl!`9kc9mrYWjhIYBs}u?kk2~PF zMaH?I1s&DG{7q@k5wLbCqqnIfZw~IdiS6;K>ZxKQKr2a2fklQed3~bu1k CE~}7TArZ1TeD@J#aEAXSn}>Pk+%0L8q)A zxuSN~N_K7QfP>1}Q8dwRPcQToU6A7rFCDnp?Ye%GRed6ux56r`>pO+nQc>p|??iqW z<%WS^% Z(qqIq$4%NrqHMkc$S2UhE)RGpGM zQml-pGX-8lciJVx=K3?gW%fR`oGKkcRS&Hn+Bz|_^|b;fCIFm!jg<#d3` A0xVw*eNozS%>PR2JtyhtNQZUC5RZx z<8V(0=}b@YfcNE>Ss`Z0V-}umWiDN&z?12b$?>c!V@SEzS*9$)%Nozw_L2Mvygl9H zqgHbPIi0fK^ ={~4rR(;mjCyqzp8}^ zu# X^h^?9)FI6dKV)n_odjsjp
i4IKKI08MCX5dINFARHCniOrw8cN0Y4vSvISilaIfL2uomDWK{Srz(!XYY0 zcsjeEOAsQ-bf6^XUc*WgQUONxd}b~bJM;%!O^v`rR*_Z &R) z4<$=^oi!}oTI%G rg;B+WaOn||sD1RneVM5J?DUfO!1D(Kqr@$p7SthLAi4YH<@Ybk-=hpc ziI}-`4l<}BK9hsY$Pl1dWRyD(rpW`PO7Hfj$jd&%N=~q=Xqima^;I!koErd=0eDLZ z{h!Q#M;UY`qNU`p^Xq%3Umw1<`DDfGlGf7MuGg1G0V%=jhwooYDaeT1B+@Gx1exH@ z%L*)DCyNY}80IE-NTT(+; ?*^Fv RI>69f=J>Ckr-!Gd?i4$K4Sc17MLjbO~!d!^(%!u ATZ>YoHY64WeBPNHRhQ0+PWz>tgvkqS7+gsCmp^N~D2MgVHh!OYRq zDXYEar7$(O3S^7?n2|!rB>KhMDd;&?<7^4t3&5-}<%BGqM64-ycd87-gqpGrN|s~i z{66Y-{}quTlZj=2JbwM-iSm7n=xox{H)CmgGr9YYhj1pD#tZBaj1Z9FgPH-7X3#!^ z2v4dW+%yIzqLhNfer73p8 zNg*TNDr`1K8-67X4Z vs?6JFW*l^UvLh*r4ikVf4nI7Dn_NCkJOV8fuZacVnWJ-TY^nhK;;N36g h8j?fW9~7mtUG@ z>QDY$c=vMwJL&JDvN+kW@Ell7;=_ttVJ|C&KlVQHxsLg9?a+^Nhw9P)hgo ^}Q z=OSWcE%z&Eizlr7_XH<=9Xw(4d9h|k>>sGTz4h)wGNXMJciY*E>{GFv+_SaphoOJN z;-`-9grna&?p4;Nt%Gt(4d~ZP8@u+tFburqAuUqRAF^7$m1Yxv2)C>4WR1-I;0sqz z7vBr!Y-`2QQ&b-_NBy$@xwvJx@|C$(Tv1txI-Mr<_X+%W`t*=E&~| z*X=i%m`KUr{FA4dzxf}Pq;@1fcI8PD;=)I)O2M0|9y#X{Oo1#uXem{O*?eTAc 2hJcT+ol%DIw}BWfD9D*Ce{-=_4#iF`3}wxi#_A$mZ` z>El9Jlzeo}pnk#LG(@jvf84jK`g5OdelGsDI=VIeucY$mt_oh5v%)5$t+T#S3@=xm znK$M&WhFre>TN{aN~3#cwtO!&Z0b(G*}BMz^OcR`#13esdQ|4yJR3YYpJP6$3E91~ z8XGe1Kd5-qk=YjZ>Ih}OJ&AX>)i;B3E$-FU&Oa?PF%85$LHV1f0&-%x^6}BH$mMMN zBXM(K_Gi_&b%n2tlOj{{hfFr-_47ibr{*>wJ1*(Jjr^ vc6bT3FF(}C&N~*Lv(@ClaHZ9Cyk)}^YK7Y((YT_lFkR`y z(TCp7d)TJwG68y>zA