From 28636a0f9b043fae93c9356da17132c0a69713f2 Mon Sep 17 00:00:00 2001 From: KMnO4-zx <1021385881@qq.com> Date: Fri, 20 Jun 2025 12:14:19 +0800 Subject: [PATCH] =?UTF-8?q?feat(Agent):=20=E6=96=B0=E5=A2=9E=E7=BB=B4?= =?UTF-8?q?=E5=9F=BA=E7=99=BE=E7=A7=91=E6=90=9C=E7=B4=A2=E5=92=8C=E6=B8=A9?= =?UTF-8?q?=E5=BA=A6=E6=9F=A5=E8=AF=A2=E5=B7=A5=E5=85=B7=E5=B9=B6=E5=AE=9E?= =?UTF-8?q?=E7=8E=B0web=E7=95=8C=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加search_wikipedia和get_current_temperature工具函数 - 实现基于Streamlit的web交互界面 - 更新requirements.txt添加相关依赖 - 修复PROMPT_TEMPLATE变量名拼写错误 - 移除不再使用的工具函数 - 添加web界面截图到文档 --- docs/chapter7/Agent/demo.py | 4 +- docs/chapter7/Agent/requirements.txt | 59 +++++++++++++- docs/chapter7/Agent/src/core.py | 6 +- docs/chapter7/Agent/src/tools.py | 81 +++++++++++++++++++- docs/chapter7/Agent/web_demo.py | 62 +++++++++++++++ docs/chapter7/RAG/Embeddings.py | 1 - docs/chapter7/RAG/LLM.py | 6 +- docs/chapter7/RAG/requirements.txt | 14 ++++ docs/chapter7/第七章 大模型应用.md | 57 ++++++++------ docs/images/7-images/7-3-streamlit-demo.png | Bin 0 -> 185548 bytes 10 files changed, 249 insertions(+), 41 deletions(-) create mode 100644 docs/chapter7/Agent/web_demo.py create mode 100644 docs/chapter7/RAG/requirements.txt create mode 100644 docs/images/7-images/7-3-streamlit-demo.png diff --git a/docs/chapter7/Agent/demo.py b/docs/chapter7/Agent/demo.py index efb3c94..92f7355 100644 --- a/docs/chapter7/Agent/demo.py +++ b/docs/chapter7/Agent/demo.py @@ -1,5 +1,5 @@ from src.core import Agent -from src.tools import add, count_letter_in_string, compare, get_current_datetime +from src.tools import add, count_letter_in_string, compare, get_current_datetime, search_wikipedia, get_current_temperature from openai import OpenAI @@ -13,7 +13,7 @@ if __name__ == "__main__": agent = Agent( client=client, model="Qwen/Qwen2.5-32B-Instruct", - tools=[get_current_datetime, add, compare, count_letter_in_string], + tools=[get_current_datetime, search_wikipedia, get_current_temperature], ) while True: diff --git a/docs/chapter7/Agent/requirements.txt b/docs/chapter7/Agent/requirements.txt index cf56b10..067ceb1 100644 --- a/docs/chapter7/Agent/requirements.txt +++ b/docs/chapter7/Agent/requirements.txt @@ -1,4 +1,55 @@ -json -openai -datetime -pprint \ No newline at end of file +altair==5.5.0 +annotated-types==0.7.0 +anyio==4.9.0 +attrs==25.3.0 +beautifulsoup4==4.13.4 +blinker==1.9.0 +cachetools==6.1.0 +certifi==2025.6.15 +charset-normalizer==3.4.2 +click==8.2.1 +datetime==5.5 +distro==1.9.0 +gitdb==4.0.12 +gitpython==3.1.44 +h11==0.16.0 +httpcore==1.0.9 +httpx==0.28.1 +idna==3.10 +jinja2==3.1.6 +jiter==0.10.0 +jsonschema==4.24.0 +jsonschema-specifications==2025.4.1 +markupsafe==3.0.2 +narwhals==1.43.1 +numpy==2.3.0 +openai==1.88.0 +packaging==25.0 +pandas==2.3.0 +pillow==11.2.1 +protobuf==6.31.1 +pyarrow==20.0.0 +pydantic==2.11.7 +pydantic-core==2.33.2 +pydeck==0.9.1 +python-dateutil==2.9.0.post0 +pytz==2025.2 +referencing==0.36.2 +requests==2.32.4 +rpds-py==0.25.1 +setuptools==80.9.0 +six==1.17.0 +smmap==5.0.2 +sniffio==1.3.1 +soupsieve==2.7 +streamlit==1.46.0 +tenacity==9.1.2 +toml==0.10.2 +tornado==6.5.1 +tqdm==4.67.1 +typing-extensions==4.14.0 +typing-inspection==0.4.1 +tzdata==2025.2 +urllib3==2.5.0 +wikipedia==1.4.0 +zope-interface==7.2 diff --git a/docs/chapter7/Agent/src/core.py b/docs/chapter7/Agent/src/core.py index 44bbbe3..b0a6815 100644 --- a/docs/chapter7/Agent/src/core.py +++ b/docs/chapter7/Agent/src/core.py @@ -2,11 +2,11 @@ from openai import OpenAI import json from typing import List, Dict, Any from src.utils import function_to_json -from src.tools import get_current_datetime, add, compare, count_letter_in_string +from src.tools import get_current_datetime, add, compare, count_letter_in_string, search_wikipedia, get_current_temperature import pprint -SYSREM_PROMPT = """ +SYSTEM_PROMPT = """ 你是一个叫不要葱姜蒜的人工智能助手。你的输出应该与用户的语言保持一致。 当用户的问题需要调用工具时,你可以从提供的工具列表中调用适当的工具函数。 """ @@ -17,7 +17,7 @@ class Agent: self.tools = tools self.model = model self.messages = [ - {"role": "system", "content": SYSREM_PROMPT}, + {"role": "system", "content": SYSTEM_PROMPT}, ] self.verbose = verbose diff --git a/docs/chapter7/Agent/src/tools.py b/docs/chapter7/Agent/src/tools.py index d0734c1..a9d98d3 100644 --- a/docs/chapter7/Agent/src/tools.py +++ b/docs/chapter7/Agent/src/tools.py @@ -1,12 +1,14 @@ -from datetime import datetime +import datetime +import wikipedia +import requests # 获取当前日期和时间 def get_current_datetime() -> str: """ - 获取当前日期和时间。 + 获取真实的当前日期和时间。 :return: 当前日期和时间的字符串表示。 """ - current_datetime = datetime.now() + current_datetime = datetime.datetime.now() formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S") return formatted_datetime @@ -54,3 +56,76 @@ def count_letter_in_string(a: str, b: str): count = string.count(letter) return(f"The letter '{letter}' appears {count} times in the string.") + +def search_wikipedia(query: str) -> str: + """ + 在维基百科中搜索指定查询的前三个页面摘要。 + :param query: 要搜索的查询字符串。 + :return: 包含前三个页面摘要的字符串。 + """ + page_titles = wikipedia.search(query) + summaries = [] + for page_title in page_titles[: 3]: # 取前三个页面标题 + try: + # 使用 wikipedia 模块的 page 函数,获取指定标题的维基百科页面对象。 + wiki_page = wikipedia.page(title=page_title, auto_suggest=False) + # 获取页面摘要 + summaries.append(f"页面: {page_title}\n摘要: {wiki_page.summary}") + except ( + wikipedia.exceptions.PageError, + wikipedia.exceptions.DisambiguationError, + ): + pass + if not summaries: + return "维基百科没有搜索到合适的结果" + return "\n\n".join(summaries) + + +def get_current_temperature(latitude: float, longitude: float) -> str: + """ + 获取指定经纬度位置的当前温度。 + :param latitude: 纬度坐标。 + :param longitude: 经度坐标。 + :return: 当前温度的字符串表示。 + """ + + # Open Meteo API 的URL + open_meteo_url = "https://api.open-meteo.com/v1/forecast" + + # 请求参数 + params = { + 'latitude': latitude, + 'longitude': longitude, + 'hourly': 'temperature_2m', + 'forecast_days': 1, + } + + # 发送 API 请求 + response = requests.get(open_meteo_url, params=params) + + # 检查响应状态码 + if response.status_code == 200: + # 解析 JSON 响应 + results = response.json() + else: + # 处理请求失败的情况 + raise Exception(f"API Request failed with status code: {response.status_code}") + + # 获取当前 UTC 时间 + current_utc_time = datetime.datetime.now(datetime.UTC) + + # 将时间字符串转换为 datetime 对象 + time_list = [datetime.datetime.fromisoformat(time_str).replace(tzinfo=datetime.timezone.utc) for time_str in + results['hourly']['time']] + + # 获取温度列表 + temperature_list = results['hourly']['temperature_2m'] + + # 找到最接近当前时间的索引 + closest_time_index = min(range(len(time_list)), key=lambda i: abs(time_list[i] - current_utc_time)) + + # 获取当前温度 + current_temperature = temperature_list[closest_time_index] + + # 返回当前温度的字符串形式 + return f'现在温度是 {current_temperature}°C' diff --git a/docs/chapter7/Agent/web_demo.py b/docs/chapter7/Agent/web_demo.py new file mode 100644 index 0000000..ced1be7 --- /dev/null +++ b/docs/chapter7/Agent/web_demo.py @@ -0,0 +1,62 @@ +import streamlit as st +from src.core import Agent +from src.tools import add, count_letter_in_string, compare, get_current_datetime, search_wikipedia, get_current_temperature +from openai import OpenAI + +# --- 页面配置 --- +st.set_page_config( + page_title="Tiny Agent Demo", # 页面标题 + page_icon="🤖", # 页面图标 + layout="centered", # 页面布局 + initial_sidebar_state="auto", # 侧边栏初始状态 +) + +# --- OpenAI客户端初始化 --- +client = OpenAI( + api_key="sk-quovvfgjdmmrvwiljusggiwvxfiekzicwjgtdvpfqhpmbpqu", + base_url="https://api.siliconflow.cn/v1", +) + +# --- Agent初始化 --- +@st.cache_resource +def load_agent(): + """创建并缓存Agent实例。""" + return Agent( + client=client, + model="Qwen/Qwen2.5-32B-Instruct", # 使用的模型 + tools=[get_current_datetime, search_wikipedia, get_current_temperature], # Agent可以使用的工具 + ) + +agent = load_agent() # 加载Agent + +# --- UI组件 --- +st.title("🤖 Happy-LLM Tiny Agent") # 设置页面标题 +st.markdown("""欢迎来到 Tiny Agent web 界面! + +在下方输入您的提示,查看 Agent 的实际操作。 +""") # 显示Markdown格式的欢迎信息 + +# 初始化聊天记录 +if "messages" not in st.session_state: + st.session_state.messages = [] + +# 在应用重新运行时显示历史聊天记录 +for message in st.session_state.messages: + with st.chat_message(message["role"]): + st.markdown(message["content"]) + +# 响应用户输入 +if prompt := st.chat_input("我能为您做些什么?"): + # 在聊天消息容器中显示用户消息 + st.chat_message("user").markdown(prompt) + # 将用户消息添加到聊天记录中 + st.session_state.messages.append({"role": "user", "content": prompt}) + + with st.spinner('思考中...'): + response = agent.get_completion(prompt) # 获取Agent的响应 + + # 在聊天消息容器中显示助手响应 + with st.chat_message("assistant"): + st.markdown(response) + # 将助手响应添加到聊天记录中 + st.session_state.messages.append({"role": "assistant", "content": response}) \ No newline at end of file diff --git a/docs/chapter7/RAG/Embeddings.py b/docs/chapter7/RAG/Embeddings.py index 4a1f277..ededb35 100644 --- a/docs/chapter7/RAG/Embeddings.py +++ b/docs/chapter7/RAG/Embeddings.py @@ -13,7 +13,6 @@ from copy import copy from typing import Dict, List, Optional, Tuple, Union import numpy as np -os.environ['CURL_CA_BUNDLE'] = '' from dotenv import load_dotenv, find_dotenv _ = load_dotenv(find_dotenv()) diff --git a/docs/chapter7/RAG/LLM.py b/docs/chapter7/RAG/LLM.py index ceda6f9..43b3ead 100644 --- a/docs/chapter7/RAG/LLM.py +++ b/docs/chapter7/RAG/LLM.py @@ -11,7 +11,7 @@ import os from typing import Dict, List, Optional, Tuple, Union PROMPT_TEMPLATE = dict( - RAG_PROMPT_TEMPALTE="""使用以上下文来回答用户的问题。如果你不知道答案,就说你不知道。总是使用中文回答。 + RAG_PROMPT_TEMPLATE="""使用以上下文来回答用户的问题。如果你不知道答案,就说你不知道。总是使用中文回答。 问题: {question} 可参考的上下文: ··· @@ -19,7 +19,7 @@ PROMPT_TEMPLATE = dict( ··· 如果给定的上下文无法让你做出回答,请回答数据库中没有这个内容,你不知道。 有用的回答:""", - InternLM_PROMPT_TEMPALTE="""先对上下文进行内容总结,再使用上下文来回答用户的问题。如果你不知道答案,就说你不知道。总是使用中文回答。 + InternLM_PROMPT_TEMPLATE="""先对上下文进行内容总结,再使用上下文来回答用户的问题。如果你不知道答案,就说你不知道。总是使用中文回答。 问题: {question} 可参考的上下文: ··· @@ -65,7 +65,7 @@ class InternLMChat(BaseModel): self.load_model() def chat(self, prompt: str, history: List = [], content: str='') -> str: - prompt = PROMPT_TEMPLATE['InternLM_PROMPT_TEMPALTE'].format(question=prompt, context=content) + prompt = PROMPT_TEMPLATE['InternLM_PROMPT_TEMPLATE'].format(question=prompt, context=content) response, history = self.model.chat(self.tokenizer, prompt, history) return response diff --git a/docs/chapter7/RAG/requirements.txt b/docs/chapter7/RAG/requirements.txt new file mode 100644 index 0000000..db3dd3e --- /dev/null +++ b/docs/chapter7/RAG/requirements.txt @@ -0,0 +1,14 @@ +openai +zhipuai +numpy +python-dotenv +torch +torchvision +torchaudio +transformers +tqdm +PyPDF2 +markdown +html2text +tiktoken +beautifulsoup4 \ No newline at end of file diff --git a/docs/chapter7/第七章 大模型应用.md b/docs/chapter7/第七章 大模型应用.md index 4280780..db45cc6 100644 --- a/docs/chapter7/第七章 大模型应用.md +++ b/docs/chapter7/第七章 大模型应用.md @@ -17,7 +17,6 @@ 2. **工具使用评测集**: - **BFCL V2**:用于评测模型在复杂工具使用任务中的表现,特别是在执行多步骤操作时的正确性和效率。这些任务通常涉及与数据库交互或执行特定指令,以模拟实际工具使用场景。 - - **Nexus**:用于测试模型在多步骤操作中的工具使用能力,主要评估其在多任务操作中的协调性和任务管理能力,如进行文件操作、数据整合等复杂流程。 3. **数学评测集**: - **GSM8K**:GSM8K是一个包含小学数学问题的数据集,用于测试模型的数学推理和逻辑分析能力。具体任务包括算术运算、简单方程求解、数字推理等。GSM8K中的问题虽然看似简单,但模型需要理解问题语义并进行正确的数学运算,体现了逻辑推理和语言理解的双重挑战。 @@ -481,29 +480,6 @@ def get_current_datetime() -> str: formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S") return formatted_datetime -def add(a: float, b: float): - """ - 计算两个浮点数的和。 - :param a: 第一个浮点数。 - :param b: 第二个浮点数。 - :return: 两个浮点数的和。 - """ - return str(a + b) - -def compare(a: float, b: float): - """ - 比较两个浮点数的大小。 - :param a: 第一个浮点数。 - :param b: 第二个浮点数。 - :return: 比较结果的字符串表示。 - """ - if a > b: - return f'{a} is greater than {b}' - elif a < b: - return f'{b} is greater than {a}' - else: - return f'{a} is equal to {b}' - def count_letter_in_string(a: str, b: str): """ 统计字符串中某个字母的出现次数。 @@ -513,6 +489,28 @@ def count_letter_in_string(a: str, b: str): """ return str(a.count(b)) +def search_wikipedia(query: str) -> str: + """ + 在维基百科中搜索指定查询的前三个页面摘要。 + :param query: 要搜索的查询字符串。 + :return: 包含前三个页面摘要的字符串。 + """ + page_titles = wikipedia.search(query) + summaries = [] + for page_title in page_titles[: 3]: # 取前三个页面标题 + try: + # 使用 wikipedia 模块的 page 函数,获取指定标题的维基百科页面对象。 + wiki_page = wikipedia.page(title=page_title, auto_suggest=False) + # 获取页面摘要 + summaries.append(f"页面: {page_title}\n摘要: {wiki_page.summary}") + except ( + wikipedia.exceptions.PageError, + wikipedia.exceptions.DisambiguationError, + ): + pass + if not summaries: + return "维基百科没有搜索到合适的结果" + return "\n\n".join(summaries) # ... (可能还有其他工具函数) ``` @@ -552,7 +550,7 @@ from utils import function_to_json # 导入定义好的工具函数 from tools import get_current_datetime, add, compare, count_letter_in_string -SYSREM_PROMPT = """ +SYSTEM_PROMPT = """ 你是一个叫不要葱姜蒜的人工智能助手。你的输出应该与用户的语言保持一致。 当用户的问题需要调用工具时,你可以从提供的工具列表中调用适当的工具函数。 """ @@ -669,6 +667,11 @@ if __name__ == "__main__": 运行 `python demo.py` 后,你可以开始提问。如果问题需要调用工具,Agent 会自动处理。 +
+ 图7.10 Agent 工作流程
+Psy_KP6-~`3TY>XZ!p6Yj!3g$OTp3OZUeAisVL)PZGduso2<*b2TFNbx?TcvfxS{ zwzm17s(@52*wfHfP$)MbE?bu^E-s#_vC5e`o~ppf#im=m?1{=s(}UkoMltq`fTx2^ z?7cPb(*4IzT1CfezLD^5BGcH*Gr(BSE^)ZzFc69$d-jZo{~VK4vd7%%*=ti?SvC@76`;Ii@i${Y`<<~dZ%uc(b1n>cS#1d(&=*j7!A2P&npSN z;#-d}tsJRyaz?#an<}te64xB5Ct)5(;M)kfzn%^W+Hl_5)4zXn 5=(PA@iz3@GS*F`8g+Y9*!4U>%WGmJXn_isuZ z8d!8}EaRxj;y3RfFj9r93s1h&>`zq>?%*ATx~M8whFafr%hWA9rRof5`ECxzZI6zg zD(4OKxh&OYe*5Ni(6gVbSrC1DxMV+@VKQ5_v6v-Mu$(v8+dEUIw<%U2;o?W9k~>v* zU+(#+#CPIdR)f`Sd@zjk$um~tcR@iHdMU{DK9-^2&_MPaatBE{?{|jle^iSEIIbUl zOvu!N-(=x2Oa?X&1~y#{m4u(3p2igk#1%Btt$@vMHoCs;_;?NSjWuJeQ?j6-z{j%B zv@KncGQfy{=I%O~oYR_p1GBWoV$yVS$$F~XJDKxp&WZ8st&Rpz5F^_h7Ralx%cCy6 zf!UL$gHp}f8 yS7>CU zX}KxE*(|=nOe)rR?a)Q0nkQh-E}E@@fb*+3g&0tSmu9tx?byn(QG!?H?kN5FTqE8a z$&sKKQ}GB=@|P6s12lRqca5svcioY#cRzIK@QVhwCQ6<}owmp(tC{!B1%^b(b9?c~ zz-9BotuXbfPpvbimRfy L^IqrZkPPcl*!W@>xsT4} z^{knh_?^jdquolp{`vt1i=1*(FH2ruLK*yMoz)=>9dx_J;G%sG2w(TmDrnIoZzBK= z*!^k@i-W*;p8QaQLte|-dh-iPR10GU$HvA9_w52jX?zx_z-^9pTH~Z=<$hU D z=G+e;4{hlmaNaSwY)>%h?hhk>FY|T(qmk&U?9!Pv(0M{aUBI3otuE1|_h}b?5$)p_ zOJ!#I?T>q1TV)ze4VGpYj4-(4V~NG2jpx<4OUzrC!F9Mt(PXi-6tgY9(aE|jsC*0~ zL#bZ$x>FGWsV~hY5M_0)Y38K-g-{ 19xk9bGPF|S>UV?#h8FPYOz*Y5MY z$@6jx#IK5#EU;n6mw;B%ORRX!q1ti7L8xB3!0ouXxmm&TOX>Fa;_vSwG_e#;5Qx pGLGCR1Jk{+zwZwV3@31mT$MoW9psmM)|k}zMxFQ{J>njn#XQeqB=T~ z_qlqN|B6FfY;E2}eI9OAi}BR~l;4{e`ANJ}%LHapT*^njkI?Yqos4*WmZH079^Bt~ zRV8F)x=P7>+MOPi$Zee{;awG6LFrzX)oF4}FII}0sz0h55 TD@F?o8fOjea@B zX%oGkhFP>+x^qSS){M^HpKp5N{Pl4Z^`7p%Wv{-K6%#8SyTYw|U1(^ix(OqDaRf7# zaCn+_y=~A{6Xw&~ePo!));8Frglq)AcH%a&B3hnLzs3Wta7ne7iL|_Y8jsgP2u|)A z((>FfV`tK4eNM@1yw|1CX(zTSC!}grUC(>>X2`^9nvb8@t8yK-yJn9{>5rYtWg~uG z7l1_?79Ji&C7CshTitR13W#RIHqM!#-qYN1wSQ7qOg=+;*sI(=OiW(CdfWp2nRW2r zcqX6qn}Eoeu&@E!il bDqoR*&jk+bJ} zu|;+V3l0iaDd|8Mw{w}7SA(53;C<$V;dIwQfDjcI*T{Fs(rLEcvaIMihCs?ANAPKG zo9+6BDN(%rx5g@9OCj?gI77DPa<-M3kw1^D=*s6)}VDh zyJ^ulI!(^Kvr}K%{AJ^(qKmnS*-U;e{v^oSn}RpF-l<*e^V_cXH)N8D38)n_zMCLn ze|P_mJpmXSm}hFZr1-zM7k8KEn%!`s78I(9+-NOfbzWWjKT>&YKkAEX>0I!1hGTSu z$OLNVNUi #OR!ark`ZF1?=?Gs!V+dYJ$-XsET>@4`gVgwf `+x{tf zwKwNB{JT&NgOQODprY85S}dGT_hwg0#O^1Q$9TT-R@=nfTG<~z^6&^-%KY2gYrY!T zdT?KrFtF6t3Uq2TRS$5#`dt@14px9nY<@m*=6T=NIlo<}6;DOiQ9S8`$1o$Cc(WW$ zeUMx+)O>y*xH_NN02T@KLh!Q=_kEM rzslY8<*QkHy6$_p`aR zSt=^3VBG9i+`sFz8|;Gz6jpl^SPr(PKjkv^Wr#@N;2c=gj2{cs=+r)O0mlHDfXw^R zcZ%)jd)WOK{$Z_uGal8h)uCB1KX`!D_1RP9<>kFHdGm%w)PJmGah5L^XWFmCt7+mx zi`86xMyGDpuUZlTlDX!@uVZi!>0%=d=kr@O;7*7H2r LF^MNdKc6LtTsToS;Lo`hyYJ}yWd?(k$2d}o- z1#eGr{QLZBt?pp0t}C601cPx>l2tSk0+%{*OoCBwYvV@T6t^<0FwU>(h&seAV~b8j zr|!z~^6u`ck LX?yEhM|KbRf(_EkKGmktIV}A3d!gQ$g_@3`#51ZtJ!KYHRgSntM z#6_V*g!R$e$?xLt?L=#tYg|Ist@o`dh^NSToiimKtUakB<#QFSNK57SDpV;bp6cf| zGuuMLrtgyUFABE=whie_9e=uto!MmSqx(KK!^YPQg(CQ(hGiO8t+RV~L3JdgMUy33 zc^((c zof}SnL-s5cf)R%h|yG%g^Tp3+w|qBaL0lV~B!#Y$3O#cUSdxxQ{$;uSUuA!2E!% zal?M!!846$eacxgw)K1Xm4{?BA3uNPO18-WALcmWTUmGNrU0;ma`b(#eNnI0pea#a z>gDcE4cwB^*}tahg#%-Pv4IUjII5TQ!9jl^uNek&zc@FW&CLmr@P)dZfHnHTcF}gw z%;0$0V8wc_emq@>|0GP4)pCQ&{j_`m=Bcd>?Tcd|NQ-p6R+&l~g1@|a9lO^Z^}MP} z^6rr*8s_H4-h8vLAG(>DSyWvXm({h`XfC3|gWF|aSg7g~=$S&YRX_tC5O5!N;VUXf z!67?0H&4WM{`?hd@WO3&Ht?u>6Rhq|hUVQ?s5< +@I7F pleX>&d#{ zW8??dcVE|^RSiJx9b7y-hHusf?n?qKEi7i!z31H=^a$U3{sqbs@4lOW$i0`VrLw-Z zwl+%~D+-a?1GG`wkl?+F(9rhTwbw&cs+-&EC(rOZggreCvcxfgfJ-D@8%k+ 6TV0P=FNe3g<-xCfW+x&}>N3k`Zs_Kj9tmRbo>G*w3z&FZbF z Qht1^k8^&l%Ix!2`>Y!8mTiR5%~Ny)}w zBC|3fRYHFLR|l()qXo*yH1E#|Y|_0wZCS0`5eXp|&Z}SdBiWO`2<`9jt`#nU15cJ} z)*wgg=}YpoFUH2>MZhpI3BbBHO(@#je08OP3Uhagq1syDZy<2M4JXibz3y`&Uz;}` znx0l1?~`8DvuAPFwBitKxe*D|4)2K<=dsWJO;BM8zjZfb#}gYgehkxPQOYX!nw_iq z4tAtoOKGRBn|aSZ>^lWz5PnnX;l&P<@ - z@;1@M=&9^(q<>tZ7XrFyrury3mA`4NKl)kSXI(As*``HT_JqSH4H_pPNpt*nBIXVC zvU)0h=$hN5SEZMX#w8|BsJoqSx}cIAnY#Db(f~fO(1S?1i%-$nz_4E1ygI1bWMefJ zkBg7D9+OwDbgTOc_ng*x!0VI3=@fnGKft8r-q1Ml(u|PQur|_qekNk|z(h++YbcdN ztXbqrUi8O56G^*5#d}{%+NMnZLvMfItk0sYP?N%B(Z+(*;@}lX)Lx*lJa~Rpz|TiC zHdMh+5!`Tj`8cYu6M24Xs;0RxozmdAHKG`u-PA8fZ~m_*yEzV7>)R0YYp`FF`jK2I z8GX9A^ymt;%^w}6v^T5% o;FdIcld*ZfEeV{^rK(0rYd*b9CA0BJ$uzbd&TScl?GvQ zQF^ H>L|MArH#~8$bMEy% ztQvx+vN{c-F&s}bcmew|uZ8t~FNdL$Jdx9Dp ubZQ5mZH>0|^eFBrf>#;W4BsZV023U _D&^h49zFipPs%E6A;j` zw6elY=KtWF{Urd%l747Z6eU`SV`a x)P>+Yl z8ypD4&LKyqmScGl3PMGx{CMUS#8O{_9I01&Xe0*zl|D(yhSTjW%BkdKazO}$TC*TH zX4U0Ico4ElN)hBAXZA8bo?r>2+F%Ce=WnK`FG2}KHU@Q`JmZT#NJ`0)2>0_(?e#7c zLAI1(U{=K&b!m&QPzgy&_J9cOU y#J>MGg?X=A)>7nXmQ&c9tEt04b#=vxoEwYC7d zV>|PMg?Va8u&7=pu07~0NXS!j)U7d}P_Q&iAEje-tf{OdqK?-HAQ4PFSZVEw
s%?lxL072aE`)1o?9c#YVlg>r`%yzf8xpdPU&x%{8coRLHGxU_2TY#?icuB zCeOy7u2L_wuuN$QZBME*H|GOaU;F9TNGO!?FR(YF3svHlC%&!<9GMJ#rc*DSt2gZo zJis;iX*U$k;TiQS|1cvzGbLx6J60irEXUt3rO9=xH>YnB zrn$afV>ns2BCoRGVKgv F-Cuj(_s>5gN82*M5&SHY&NYE`sZ$v++O>PM(;6 zdGF!TmJHO$85muhoSeaHF<7KL=2KfraNFo2ixTlLqV*Z32OVl_Qs^DlDt3;=3&5{} zdEmXh+?|3WYf!4}2jD?LL8_tl?B_|&dzy)c*;l-dpWNi@exTDBpKMK-?M#pcr;zaC zCmo1Gr_IM~@d^9=Fzn3~RmMo8ZgGrC^&ck`ThBL&tmfgzraNK}X#?4hu~7H`l8(!u z8ZvKhC6S_jj%LEZP{f7!#bwg}q$)!H`ZVFKtfv5S_HhoeacL>XfPnu?(L9gSjdLBA z&@>*;cD8?wZbK!NWHcF{=hxEG#~haFd?E{rOKpFU)!JIct_@U@7Y78~ygdqIoqa`# z1~hJzGr*C4RJmsV%$?rqxxYboxlc|^jNt||y4b)V^h4fd!aLXUH2p_se{RqoW&u1S zsQ5b`mt}s-r>d1Mhao!*Ox4u;DMXpPvyh1NKM&S`n9GIhD){@}3_6M~tLpZ%XDHpc zeyQBIi$dRRV&8PdUC96C`D$flh2dWNPTkp5xp|W{q3}-?I4@~Cq{ertE_fQ$r&sMS ztUbese1^VM*3`H;osYHp-gsZTop9z1SmObtsLdbi6`Q+gspNWv9eNC`s!MqyJ1_74 z9GM3EIh=-jv&UX0cgR=`IpgVZv=7wO)O{?f? x4I~OiY&hwP< z0kO~U=vCgWV7MaBt)MzkJOXZV9?$GqA1)zYZ(;oxK<~r7Jd*f+KkVq3SN61GFRo8O zc+2HtDa!rh4o)Ww6CX-)nAcaEuX$ZN{_+$AoXebBh`{w>O0$p_NH`AQO;UDLPV+n6 ze8hNO5*27w%AS;L1Ps%f^ZyVXAS?>C>cVe+WM#F!(bbi85E!Yi=+d$oOy;_XV>2BD z$M4$Bl{BC%q7flX$;nMxIPwuDvi!+_a2U?ifFr-HHeqUWlBW$GHwFCa!(idNy>XBy zv|GG7A-KOdW~_?Xxbc(5z-N4M!=Hc~#}I_d1xzct!E82yF!5?`b>YmpT`G}8qo`m* zfPS?3-!=su6Mm W=1GUx{oP7=vN6!#pv%quSzohgLWrTIw_lW^sf2Jj`Jb(~7D^+Rx;4_^E8|;X z7{Jg804KknKbgHuJBZ7MdajV6fq_s~r||A~Gj%MsJaKXt-NF~a0DC)9EL_gEU+X>F zUpv_;)50)6L{6mO(D0dlmXC@_Nzv&F-{ZNf^0QS_Q&Up1H(0){{`Ya(Wo8C?0}zL1 zl$3;lkCc=YU*B4L N>ovp4z=Bm2 zgPyJ rT!mT9qn8Y4^m8IbQve&~2|seDx+_WaTI zio^b^kUX6=vFV#Q`e}k5H(-z@OQ}ME4()#7YrLEdGC~Xj7A~6!QFsivbgD&a K zyG$RJEVq9Ly$ylMu;VX9XQ ;v+n@^oC{@kb>*8Oue`Srg^~deT+)4qQz^^PQ@#S zj=@_tWd%<50ruaXR5XH-EjC6^LC8Ir!lv_ 0f1kBCd(q9uyFdM&LK!L* z1E8e%2>>5vXH#WV5=2v(k)k(0=Hfjn>;&uv-mI%T=kcj!_S9~>AX~I3I?Y+keC88s zv7&e;sBuD74{%*{zK*vm^kWXaud8^C=FpGIW2dBlmsJ%~rGAooY$ap2`)k@c@_C;0 z@IRChE}Jk&n(BT1v@dL_r-ITr)ydYje6GOwQ0gJ%qdvWr9pL;h)(0FNSjyjC07s3L z4a2ZNQAWn{bE~Q$kK gX%~T9^`~r)mJ!-mw=apaTxzA5}>~e-1WR zaWSK+#BJr)#gEiu@ lKd@m zt9skvERdjEhK(KZ+-z%i8CvI_uqG-Iv|pmEvuk3H5a7q1eT?Gw3eN4e9qI{Sn aW F4SqdFjY?*=J}c@ zo5JlHc}#kVLnBwFcdrbW_c|Njj$hC<5R}-8g5E5K)F99~t!IjRiV0cjEH$FNrMYbU zG1Tbn?VKxbZ10?wvyayWP{&FAmb0beb^|bpFK2ChdaHwigTuqa3qW4jZRdyCj6B1k zCtnx*U8l?M5*3dEY>&v=5r)3G`S~PH3wuQ~OgUyi#c=X7i<+^1`E~%P9ZJMos#Q@z zgs$n3Zlulnwx+a^SLv`EROM4Y6AeB6_4QdYCh j2ZOo%H`Faoe9`P3VO1uFx #z|isn(&ykq|-KkJuDLL*aKzh1jg#GLVuST`EFREOmMmcEtDTx z%t3iw-gAG>AhE0k`}4Ca_q`?(IM_^p`ztdSfeuS`$o}vZkxx 4WIeWW-kqZ)j~y%0s}u5dUniSs8Pt28;$-m#82m5?n%Z 88nQ=fzEiCBbybVQe7mcHx-&PnM33r$&xH;|qRV!b+ z5VTa8bu**z)>=EaiisA2K>AC^n4SALe N45WaCgI>t9f2=?vDhRv& zCHU|dxs={bBiM-5A_Q^!XO{Hxe9vrYDP6R(qJoguq+MOli)GXVpjgK#&kheP_U zF0;q*$eT+FH?ms0xNPo3vW*oK4)Y)WxeaT%alSep|ABRSey&-wY$Y;X3807U>{WoP z&rD6J6sgrHQJ=^VfyR6h1WzW MqK zzZ4Bws3~kDg4jbsVv>)@aB=y3mR_D PD4MmD%3UC#(IGSD%YD>2DdP2(|I zK~p(XD=W=a_i(fhTpE7U1+8UL;FPLyd@EEfd`7gYuHZ^ M~ne^bU4kUV=6ehyzm6q9UT~z$i-87TD>dsCb}|ol8`+8j@z201gDVU9#VqSa|!a zydLy8co(#>RCLUo%&)(swfH$GK_KmMLEIouZoXg0q)AJPJg91I?UIOa({F7ioNshu zHONr~kQD%$5?Jo@(@{0i_JE*g=m%Nt8#F79j>7(Es@rmXW%xY-0EH6tyvph)BdCkD zuX>^=yJ+Oe5XA+irFo7#^Ba1eRr+mjj~3hkwM?}F4t9|MegF%tW{9Agv*S7N6FZ;Z z6i=6hXeSdn?#&dKkJFoXy>sk_C@)hXqTMLnCre=o%(|R80qD+nGT0#5Kk&T29eV3L z0{0@8mPxFxsUhUczXyDfn&k)EZ^nI8S)xTCLTGX>>1eyw25EZF W`1)mV(pCyL*& zuJAMN&h4rrez9JOVMn0)OPsoUZ3c}3P=Vy-OY Rvt=mw%1uwYj0-^Hx^@co$fa6x06+a(ER8pyp*8-h|8wYmF*8Elak z2b3>qoYX(iU>OepsU8*{gZiv|_Ze0z_C2s9&u0_qL5BR|W;%l8X%DZCm>n_%6dw>{ z>ShR|P u+3^1(% zE|rSHBY=VdN`RQt5+n&b<5?C1M9gw>;o)-QfG^nNNCF$I(-lmHm!+7%?7R6##9c zrpZI_2W-X*{Th5?qw`E;hjrS1{P^Mf<41}PRL5f66B>_CMy6O@BUkkw!)YpoJtT1Z zbDG7?iLQ}!)`h_&i4~+JWc;B8Sh}F+8Kw;IEH?;y(FNuTsCAhhQp=r~$l_*of)-0- z?}?j$Kne M?UIdExDNBdW__IbwYn!=;8?{!VrgOW3w%j&QT%4?Tq}=SMV<9+t zZub3$;3 BAPQRfr0s;Fs>pKY{4Xn zFPg9W`L4-?A^~Sq)351&$_Me;+!a}>(x7w$b8WLRY5kE1Xp`F2cMl-lCC@q}*LvfU zIh~Yt)R@*;v?+YthzMWM#qd1+7mWE#Yjw`YGkR^0JE)HfFmuWo*=au=sn&?0Nu>=x zt6K2%3KutAEkqM+5$NoY^g=3pYltQ0Y` ObmdGXett`>gS}>iV0LGI_Z6|cUFwFv_P}jq&V9COiV53l#es*eR z-Ab)>0yM-(pgi~X_DD$z-PkSv<}3PY)|jI&keV$N_w=zu+@Fq?J@$cGf;<%rQ22l9 zi gkJm7VM7O0QP;AsVqlD3@BKI{6>fAcOCCEeBH+Lmqto;zOPmI zW1g9oSp??mwOALa71r%<7ueHq)ST}LQjN&$q&vB|uw66mVcZeK_OvcY*4W7;JR_5k~Yu7A~L9(AXB?9I_ zWMqmH{lPd^B&)j+m?^j_P<~sggUskhBclZI#I4il^&8*Yfhp61_vS`~DZV;o-t!xs z8uU%<9Tpg-$-1mrP8K%mlbVHCTeFjuO)go#A`=<^4%N9Vg`-eU1uku~?f?Q^!(a$$ z2@IvD_&xhGIlgo>=JT5D60=oY??9Q}pad;0Xi^M%r%?dVTdGmDzh(M%zTQqcSEI&U zRlVf1`LO;?;}v$_ncfpHvU9p;y6vC0F{H;jY72opR|4^aFF19)@1}dfFcaHRZsddz za<|IxZm!l2G??ZgkK;(KW^0M~8@chZD``Q!PxCq!de6wqZ?n(PX|)+25*IiAi9;x3 zLTL6+QR3Ey*wMzuBvN7V-1DBzxEHlI2_$|6Gvf ;!@^uOueunD| zEXh-C(+&jv>|oyUXY3YtPr999MBM_Ez|(QaG_BMXfRU-G!e=ZT=R_cQ55nmx(Yv4C z|28n12UDraMZxfi#~RI*D^zbOrQ-*Ba%aMu-F!^p1he-C@DDE58Y4jc4RL?n;B|QS zlI;%b7FjeE>2dg4Q0+t93$P&0QE0a_GN`}|2QjDPH&^7oK&PcD-Tucfkze{IN@VGu zn}9Gj$HAku^ZWOPB1Vw#yI)n-$q;_iJXvRPKmBCgp^-en#AS7pYoWe^ao*#4*FYnE z&1z0V)8(?@))q?^PEL@-g$4mtsX=KDrJ| qdd&e?PX z*3^z8j|cb&%aw}j-QTwc(!m6A3LC4cs?w@4*cww`?>Ts_8wpkslP>$vaK-gr{#T4p zW^xenQqTK52j_Krg|{~h;c1xaw@y6({ouCND<8_O00^7g;p2EFSU>kGfP#5lpUwdw z>C=h;Ok)f6V~WtD+kZjJ$VgY7186@OxuX9Y=fgGI+ScqlonM=&v#By25{ioVI46T1 z_1@d-#Gh`Bu9R?Xz-qoG2DLrM1uyi9d~#>YVW ?kQI1@1n8`1y0wkpn~sKs(@5j6YJTdtkt+ z%_Xg+=90ga!5-kv&I`~jn1>6OHUpRS*xzWw8+8<|*>Q3f VCHU_9e}~C>e1}1bN2CM^xW9 z5&W_~Y7y*Q4}m9YvVfMbP>%rtP&GcY2pIvf%h~oBkXiQpx>Y>5jQan}0>n2mEyz?m z?Z{nm_q^NL?y1O{sWtm|DQc}S-mN)`_@9ysSSo-(S9UAA{^;UBtHD0UCB8(dW>U8n z%!-Dn&p(9x7HyX_7Czg?pHmcL^6)^e9l!~nm)o>OB!gKJdc@Rt%|yBWqs~w=#fnUw zbKkRVy0Twvu t!npalX5r(T6I;8Pad9Tor&bV1HtZQPeuXdUM2 z;ekmsRVJTC7RR9ek}ul;%zfR4*uG@A*x%hX65Rj~cMbE}0qxuQ`~@+}{Q ?Eu4VSFTX-2J?{N>@hDd9pXTGoSM|E|rc0K$#|k?o8aD ztIg{P!Pr@NM8viN3z$X*(@CA3^I<_j0Ll$(CdDHlHm#=uO_mNc1)4&t<;r2PG+%6n zGX$+mkm7>r`mA)80H*@bKe%9)kLAsqJKg45&6?BD&?F9RXi5 WurvTlFUUv|$Z|^QhhKiCd8^6YQ%e%viYCtT zvFi~M5@O)PnbN5Fk-NV@C}Xn_{OQvt8EKE3OS_qsuKQ{HJv+@A-&M4Wn3(Yip3n&S zcLx1VI}-&!?hO8GO+d-6Xr!X`1YZG82{tb7*+&SZo80bYa0qbj@#-+TkQXsVsWnxA z1IxxH<73<`I9|g*lAnQY1>fv^^>ap$IwW!wR34zU@si!#InB4M24zvDN|{=$cx@LW zWqkG9Q03Cjqrcejr0maKNrQo$>j~KmKko+XwpU^NA3=C<=URt~etLPdl1V0f$I8kU z;{L=334-6K!tK)18Xgx;5q(XFaW6>h!PR(Sb~P50#V81Uxj39PHf}M|!w%Y?^#L!y ztb~b=W_TqZO#19Is$C2K=%U#H%xGtVHv@R51U!pOu|6?PU_H@Vb39V$h@=jZ2?p-f z_34%_tuOsPAYaFFHjRiJcc%seC5r)k>+}_&nQiR#9mWcRpsn8qTo806Wn~~NfMCT$ z054i=$;az_dh&ROt`aD(yIU_NK5+>3XJKIjATO#!OjGuUf#gy1zAW%$jo$OyNCg>W z&EYF)|75AH 2NHDeg?a#d)c_Kd1DdkmLGwiIZ#Sn^ zZ#$65Oq@IrYAsDocRhqYkf$r+WFRsx>z-Xs&XSJK22+%zynmt}F-ls`2S?i2u5KQM zhCZvoi5*O7qOC900N_KRDYzQ;6*rH+{fNmMl!^v~At8~wlvVud`aU?aK89doehhM1 z>*bJ)29j?yukFvD!Gc~8D!7B(lw$5xM!g%r$>HBYCq1)cv*Rc{3V$~EGbQ=GMaCy- zJw)m TWQG7$z_QrksJ*-p>P#F7ftq>EHw* zrsr{@BzO-4d1>hw8@CgaOOFE|cJCXNs8IQxbg!kWys>9M%*0xH_CI>P(L25)PCg6s zNEl3+O?KjjNG0RYw1o oU^zOtXq`@YI$)!H zEQn4_B*ewFoU6bf7&M<48=a%1pB}R=t~DKM{pVbJFQ}C?Bd^X`VdUWI{;-wD{szUN z8GL0I3#O&6+l)a8uKXPci6sL)%)9;HG-)IsJf~heVCS`;9Gh=14W~!SZ|^SO4313p z#j)8Baf4qX3>GYHB#0{b?PdZWsh4 x8HA^*!S|=u1$` z)`4)qUnhh$CjqaI$kep!4 IM)1?)C@`raL%L`$AesOBh7|(5|vv^4 xAh^RDRS&z$dFq{ThC 1 zseYPyb+*UGhRcBLA=K-v=vb&&(9fWogfac>^VeO z06iEv5(d?OhCE-Ldkvq1vFxB3tR?WAc>_`k?+5r_HMQ|13hWR4VtK>qsi}JU`o`>} zSFm?09hd~SdcR>4GbRW)$hp>rv}htzZP2$j#!HO{8zv_MFW@depn)~x(ucxXSPEmx z8VCsRCrMLm-Ufjvg218PK&)I;|g z&EJ3F8x(|v%?Cb(va-K;W9N9q4?yWZdA KH=)#~d7XsA^HUJ_o^b%P8sZHsD7bo;DrHpCOhAIUhMm&N5*D6@I1T_Kry& zQ`lo8Xz4(g S@ zzACiKtE;24*-R5TV#dh1&;ep$?I}S>`ngoE?i+e;cXl$Jz&1I#hDov0RVH*D14Al= z-FY25!L2e0$X%Xe9LKFeN1 zMW6MXBkRj=Cv_fOp{HZs`mGia9yQX|_o#|i;pf-gZ?b}DV~8T5wvQRMP;&=Od+BHu ztX-EbAtBLbZFO)h _rTFS?j{_8cZ01Jb)uWJ%AnKc wY5iYZ- zg_RYCBQJv1Q-hfl+NX?+i7K8w33U&=xDhc&S>o3`%6k&z1N{9{Qd46%vf6muII^ox zmtqySjO5?c&d<-|2`eZn!Y* dPu~WtQXv>@wSMvDO+wTd;;ck-- xQK~mLNmDj91-e$LQlO`#>x_Z6+F189i(bA|QX`WhD_Rn%( zL21PK`l_=ZUQ%xE;-7a+TeomX2OfD{yMDc@qT(WA<}qnKE89kYY0kOF?w75Yw}qyY zS&_qDU&)4hjEs#328?hirzWLqp7pdOw|4hRh($2Py)RhZTCcI(rac?k1!(zQnK^Zs z;L66hW@4f&CRI=nL32fTOJLYF^8|jo+h-MTON_Vwyf~v3!2M@Xo(G~s8zm|#oUE+2 zlhA~OM7=FVzn_lzesQIGh^g1BG(9o#-9-x0Hi$YCGGKE25^2SvLLjhZ @vGG?HP1>)CU}d{mJCiXd2-C2u9L3=@HnkF*Q{2~nH|rT%bQ zSCygec{NFR_@q(c)MORzmq5NuYww!ON9z(zW$P9?_DTw-hVKWy;qCC#j (0}$OY8=de2a?AFT&g5%pb420J^BbIXwY25m3A zMtd`yamDi#X?Ek&@^664
spiO}C6s{k<=kt~!A#WNHalDulVSCS_ zS_~uaj#Bstqz2B dzU_4NDfQ$=g_ykcpoW*#wYrA(*U1yf97Qi+O+BG`z9T!{4E4{UEGYVeo%WG(*w zCJ#YevxmWsq|Y&(cBz9#@zK<%LoAww#l^1JlE~7#VT6>98hPK8SA^K!{aMalH?2Ca ziJ*^1XSMDub#$MLDZgXq;>tnL`{6ZsRW`|X{4<>|{Z#R=<_2UUIaed_8j9C?Z@`bh z0E )vM z`rXzq6q=uipL_!w2qnMm$G9FPImP3gn^FQdv2@2&qEvbk#2wZRkEFyOdqN6g^kh^* z&-tM4F~)UVl8!g;woTtFR} 2U$9w`@FX3|@ahO>ZpGvu7DV<)5cq zCcb-@lE-;xeY8VKDSW&v=kC(i&Q55IpaQF2u#$TzOF8{qwZFNkX(W E-o zU*x1+On^1^thbeG>*8tbo`cx8az9L5MFwkjx0a6%+mv1#dTDs5Nr%1PeaIwP4hz)Y z`I$5Jc*lG>)#%@FkxQ4{!-V)_A(_bS)N3s}N #y_Jj8wJ|td=czYc-kq7$to&Z^6jKbfJtpqpVtP zndV=}+S3vck&ARK-d~Ft4v$zGU9+3+nHGB0#8a1&%Et2O&dBk)WTPSmhWEpRq1-MK zGW~zkE9>)iXnaCz7v`m7S^1u^JfoUHYA!KI$9)?pwsqz+=q=^Q!9817A=K~yq&Nc4 z8adZ}uz@Zo4o#Y&3BMvGm37QiK?LqXjNMrM9u;9sD| W0K%m)q1m*zshblmhvqmDYCJnt<4R6paJp;cJ=`bvGSdrohJUl9*8AE zugKqw=~7ZMpC~pW=nMN0iR=2}#Y_yB6+l78#xkTF_|*q0sg+St>=sjB4CZ3WHVwHm z(o=ano}rEoDPQ`8KDDze5p;9zJ3t@$?R|x>wud?RoObTZUO*#_8|)G$=$%c! B-I$4*pY;o={_UW#aN6wf(4Q(wNA5KA#2sf`Yd9aps?e zHqFIHFyY|K#Bz&Cyt*}O)U@k{)`)EWqpseatx_b~#B;dL^Iq31BYUFUd6 kFPU-H*{y^di5;m roR~b(j zFms1@)0`*`EG)`a9!t$Ew{A73{xe{%oHtGwgnzf-&^f=g)h%spZl>h38tUQticXE> z*5143)7P*=0&keo+Y7?Q;>BEFRzIi T7YGl?=}>NFM=`zQnN$z7bTt!#p&jg2~oX}NeBa@Ld!*_$+XgcrN5QbdF7 z`6xNLxWWkD@T6vEe-Y!tq yt$Ma1A`1s*COe+9?kNK$p>ER zLVpUa8r!3*9 z$Ih>jJ(vBtEBj=|&tlpdbW$tAj<8D&=4l0|*6S=432ZtsX|l%%J;?{3UDp`H)YN7E zai?55fk&Y>=drP=Qp4Up;yZh|IBtJ8-`V3iT3Vrx&dtqF_V}%=Hhbc0?%zA|UHWM@ z9^26_DIRoBn3DR5+sT&Ti$Bb)-t)#BCTR%t-)B(2s6t-+(Zd8bA0e#Zc`Taalk0so zIs3LzfrpeweVLm4x)59O5}u{v41#Mx+Gn51ZHcHZu&oz%o@uklYpVyvnfLw>>}mPh z8oNLqcSsQuwh%aQbYrVFzs^6F-@x?r)4$cqk;Q4-%wu8S&!10FabyPE43E9aD>aP= zC0kp@LZ*ly-n65m!+`}=JnXb~637?M6w~t_$y^k=O8d0ex^GV#t);;2mzbO^@cz{W z85asqxYku-u4gFm<0newNbh{x98}CV`P6)ZK6`y7Vkj9HjLyvBl2cUt=Ow2kZ<3Tf z5$O`*n~|}-!Kb zO0u+P<_<}q03`E4lE@(^Yj>wo8e|Ire4nI5{Grbp^t1f%Xi%y4^`4Y(Q zkTlnwPP9O=NG~BGuRFMdVK!EbI6l?etWCCM3` C8@AZoNQFDy8!*fBoc; zlXF!8B Ai=V_yI_1RDt~>Ls*J{M6WYhQ% z? cPVq|?1^BxDKr)Hulqh`_)rZ4@Yho5Yq`G5cd}o z_4~t3!NxW^c%2tNY2<^NlyRjfx1kIPZN#GKOJdX3zO&b&saA#IPzC~wTciUCPTY25 z6XoScr1zcN-Oo4p4xKoMvXo_E6t|v_f9<8A`r8^LCeGL@|7raCB`?bBYYf+BKf}Vp zLd2x`R;)IRN%SM+D+!j_XPd53u;i;0Ma(ZPjgP$L{X!|qRrof$Br5_4z40;C;XfEd z*@IccxTGV&r9QVxizwN`y7{ngxxQ?afNcySA#CkxUSe)nZg!9#J@9%d=u$0YDp-bJCx1mP1(67OKcvU`P*$6zt`?F+xlAI^>v@jVQ*EB zDxZBMQ!(HM?re24M26nHeLIfNf+sH7cI`l5agsRk#ix@KGgTW4ZR%wsL*s!gwFr-@ zq!1l|4%}lC-D_wGQ?!cAV;brR$czM7C3-|yc+4^XPcgLQ6N*U%k{I_xRO9|y8737O z=lTz_F4`-XPYv6HC7WISZ482IeS_M5|DKOJe*o;V8=vx=l=H&;JOtut{mDH;YaDSo zPr225F+ls@z3Z@MVDczwUeXGx-X=C--$ZRP)JBpN$C))FqYJ=#J^a}kRR>#%S0T&n zCFb!PxyQbEto6A}I5Zkn?j~ajH&9&c%*>ITCrSgNMAU3-0iRt41_up)_~Z3Am$R8U zP9CZiIx;#Cy*cIUUbQPN9bylE32*MpJr*#xPkMcgj2uBt@+gKfs#l7Uk#S|ucauY& zQ}|pl)^M&9p0H+X?E+ mT*xA!#{7gwrHM*kb6s8)m_wMO8w)FC&$P8yQ1 zl7*2mzU5DLj!W-~vYZ@K6gHMedsO**bve$b+}!L89D&__ 5=hNJDHtK=BDTiVY13M2;DE zzBbCvG_R?waxkCoX3YM`o{Ou!&yv76@Na zfG!@g0CYe}iL=IOZJ@x-A}0P~#u4lAMCJjhlxH)!R1$l122xCQEST9pT**fD5*-~I z9qW!bReXQ{8~ulGhjZgZg*4uYrm1aC2?^rct xl3Q3yU>K9 z*wu|+Qd0673dk>VL7gi&X_m^i`p@#!WhsdYt_V2v%RmEUZq9f(b?Ps#r{{q_;Rtn6 zo~*pt>9)R^_d*1blJ?`rR~K||qP^`&*iy}nPFmAGCZ55e8@Jaxv_gGb&(N`jd_)(F z1p`F}4ys+Pt;5p;1CgUsl82OIj>oLwO9~cKP1}1Ch+}CoXkcwQ@q#Tzr 5G(*&ePG12n+L*7tF}d z@0~pBhUR-k1b$Ey8x8zBegj%3sE{%`IvTZT|A>LZZ0GwZkRDO2PU@+YxSkLa++0^U z4vCLNUIT)}flkwM{$&3(mvv8KUt$`K p=0>Q$iC5_q)**=*09i`n|h6X zmVToIlr1vRKYgd`fc0#!-{7lnbBI}C_g-vb&=S1(*%1XF=n-SOgQ*%#{>iQ2-@lh2 zL6E3??U!5Kjl;9@GSlf&6ql^ioRXBJ<$KR(zc*&AEczOFY=dqUkwypFJ+bL!Wvyk! z&h1jm4?(-fOBn7PV5yhd3Wj1rqTCA+206JtNN$!sS5;O0>>?UQcl9cwBzbS|)}q%9 zTykQTkm_pJJ9a}P_;-I2b#-<|ehz*3Fg_;A9v=NfBU}Bn7Lbo d>2c;Wy%)XgVY3MTw{Y85vr8<%{tNCq@ntmkC zUB{tllzx>ss0L}hb?#lRgbf)6^!k^ngVo}T-*=uKBc$ AG!J?g5;P5L_*3aU)iEiC(qhE^xTc|7|uybi1N zr!hnv>36GEM3TF!i>#mCi5M!kdc@-My@!KIR!nTm0Z`9VCxyL5hN{Y#!^sL8A-66& z+u}S;9$oowzf@&=1CGyJ?wFNVQWQWrxCt_S^vUQbctamj%_K*D%C_oE7mfW2)(W`l zd$!6>t*U LR{wY@z)59v zTt-!S8_XyTDBq(FvXl#M6U3Guvfed*S#F1>V0db7JY=``Q`_DBMQ1J`R5 oWjJqU#31q0X3kZjpHw MVDBXN)xA5qWo@(K>6xj2f>%F2Rf`ZH0=;XZZ>nW*&D$6oAm zilap?yPs~j^VyUCZtrYw@8q>xJ >ztp3N{#~{6sV# } zd_r=s*w5p_6R=2yH|shReUSI6aUnQik!0NL{IRX=*|fDaslveOxl?<4NAq&CwzfIQ zzhs18Nq4Rp^duW?P~qU%on-c7n!bHIUltpi(gZD7YAVm67hfPSo3VSm2WEj@p;L;4 z8vu6RA-ZYWCv3Cadl?MI#(i&0R=;m6)zC*$HMdx&-K53J-0f;?NizUs*v<7ycYM`- zVgTD%&JQJR9_H_kPGEFrW|YbFT)6A~b3ZO!GWQVWUO}c45=S7t@Ni^s(BDMf>*+-> zMnUMLlJM_nJGH#ZxU^kTD7S;-xTSDOxa*a)v^Mvm0w||wxHkoKjE(8#N(hMp^mKIY zlb(2`0>{9?$-;tyLZnFFn12#}+Tr@B^l&h;-xT<6vO8hs&~6-ZQ`Wkl5#bozpQx*O zarJV+brO=O4YgtEI8G+cgN-OQVgdr89L<_#Az#T;4-zH0uj4|066-veaRQ3je!e$; z`}~2yqH13J;+3oiCdS5whQ__GBu7Fqv2EBY&zjnHZJqKOeeC VKIbvG6R?$&B8DVjk-y9C |#&M zizPqP=>plkqQ}(KscESM!u|cV;Smu8!bD8bZs)O5KQ7|T)P`~Hzw4lsN}})Vx{kBX zW%#ZRmV%c}A+xiy8?Dl*1&?9Rx5*VRDN(~*>(nVY*c?wwPnW{nKEx&E?M!UH`{Nob z2MYy&VSj#|nQX;g6u<&kK={_{YiK%SuhaWa*T 6CJ5d|ic#?YvF+~Y zSc=M|*0IY6k$T|IryI7jO`{#^sXsCr8iY~JH?pJ^6{9%eEkHL!x7OWPaMj=-Ha!A2 z&Rn-i(Ja$OG%5v~IM2G&_C%S1w!=R{fR4@Nq*FA?byO2-Mz5Ub4yfvJ7(f(*S{V=W zH#t>GLQbHsHrG$BzeU#4ncLY3PSHWEZy4S&6dHD@3GH95G}|4qxMapamcEMjh*o+Q z4N@*nk6-@r0yp-GNng<=|JNrUo^M&cadvKj9M)wS-2}lJUg%oZRSR4_Kc}@6BzLnb zE=^Q)0OrF!XL`<$5O~CfWQ^mrd*J2h=;%DLLwG>%`6Br9EpqXqd4P_TbEXttzy6t# z(N}4gwVIdJtWSKO4`nQ5%vxikq^!(mH~Rr<^FDD7;}qM|5kXScj`q%IcB7%hMw*dz z+O%;(LPAi4w@;oS%*`pNQq;IY73qjUsqoX-08RcI&P(|?(Yc4W)=rdz28fiFHo7z_ zY2Y;SE~=*5)hNdS10y^s o$QtwCT#57!OEESJ?|iFiH5jxBF8~a4A1i z@S$i=e!{9|zx?hMruHm1uy&C( @6o{B-Tc;B@zSQ(KW>ttW)tP%JSwB9SquXlCtV-{s8b zBqUnI^r|xBN=iid *j z^lv4`i|xNeL~O>CZFg63A)hOTK{nLXzH9zPJxkjAyb` ! z;)AV?4UJbUuiezy;-vR(obw^-3F7P8U{;xO-jpjjdQo)GM0NA?Q0q!>qJ|yg>LH8e z2L^`UGDQ!ZR^M)8W6o!<=o=YnrU&(|hyut5MBR!S5&lk!fvgSiOxtr}sBwqyc(aR( zi0RuD0CqqRV>q71(e-nz#$>KRG)q@^8ejOzRZ5KOg0m}|ONYJPxxw?qXP;tYV;ddO zkHisu#|~BYlquurg97}sijAS1jw1hAEq_V>t{5&|d!T}uhY^@7Q#o`OGXgHrOsd=g zf*PvEW5>J7U OG+L3)>wrxgsW489eYRtLB_Y;mY2Cb zY2FQFhIOMfVu%=3MKPmb0zm& C^`Li Oei;%+MxM>R-%hf89(yEBDK zJ1kQ?kTh*tY;zz3o4-Pp9%JY!I#E{)cWLTvy1iMY@61qF)*+>3;&Ht6g^@ftNV*yO z?$?V`Y4bTyzSmbao5)Ynr^5rXOgi)JtDq={QY$2*ewX0&vvsROCdOwOd#7UzC22A? z+#WN=bQ*Dz5$68^#}X;+PgI6iE;=CpI`}?MYGQ`f&Pc7;M d6}iAqax#c4yHd?K7xpOg$;1X?jn6e9JkdioZj;Ld^WL6Mz7=~zA2_7 z7)XprjEsbRZz(@bNhvOdS9VHqdCFrZCfO>z0Je18JHqyxJdWG59Kycd-lGlPMSv{d zydM)RTi>s@hDilHY!QA)!Ty5OYUTcTW8)(%s*dokbSF*a+)9gSO$nK&ylx`0vf|?6 zRbeQh>(@`%X$y3hYA32)op|6HZD`p1TXlzYpP!9)NmnU2cTYD(79f{z{Q%{}c8cEM z4*(A( yL%C=y;a=Y+W4FCe zkeW%oDE03=+;TYyHJ}Nk;NWLvbv~<1y`n4eFGl+|Bq=0m7u5wr(175u{rw?Ni%mnl z8&CKn#phnN-WyZr?BN3$@;7eWKoCBclr*lKYs%H&tE$vYdV=@~eL8)En&aCCGBSvR zuXDwI&?B`5kxb>p_<2QiXGstYLP4fch1v$v(I#f>rQ-7^??6rgzO- !G ~&3YM?x3#rx)5Q8G zLtnogQX;+nRzt(A2PJcHiY&aDjxQr8Q2?H09b3X5`T2N*C4aS4m;PKdz`~_du-a=k z>a9}fi0X(OX$kz!X`wm!N jiAnSg}<_Spea&cDo4HGgMpH$i^!(~ zms?Qp3b{+4AF-^cA#U>}XuLkEsjkk3#~4H_)z#I-#R}lm^dP6h#_nF-0r>5{K%w~Q zTG+R{`{qM{_!^+XJUwf@y`w&VuKfEFV}m&u&8Zmn?atbxzOK$AfL}UAARj7AbFs$d z5dWUb2@dR1ynK{t8xjQK7XwR`7xlq-Nz-W@vh;r6;^SYC(bBdH***4PgAK*ar7S3c z`4b+i!BDa1RkYuQ%0jooT~7oLyWzMqy0k=*?7gvZw3(3Ce+=$LeM0Oyb 7L_}gWzAFz?#5z5afs)`uli`Rdcu-XcsaaVSKmtjOM!v)J9aV3b zXz2cC0-YA@%$9b2<{S^(<_-3XEARXI@?!NFl8_PIv4ZqE{`VEMbaX-rt#!4n1Sp^y zUs=%tw0Un|%@28ThW6TnDM2=n*KL{yj5y(4ViQh_p%lLlZJ++$GT3bV>I7o1d4yqL zD}NSp6Vv5l=i8j$zFJu+#1i&pC@Lwd0*cqU*3rX!W_jZjg?dJ?0l4Cye|Z+m4#BwI z*!pJ!-~Rncmj*DsLjPFEsjE*6HbuJxtVK1Nji2w0KIh@7fUws6ot?Wwo~iY!Rr(o< zOaTc3|MH)gK9G7^;-50Wz3+*yI$e-b1;0ojufuY0V%*1%4IT&U!IVB#8dkx 3!t8|7prCr|baiK$d sFq+kZ%n9_P{^-_R0> z&3sBn=W@<}QaHYEfBgjhgQB49>(?+On ziw{1Yp23(@$>O-cZS7|H$ln#$KqT-x1>rq>^oY%6sF*fkX~>Mp C5q4 z0w~Db4lOOS(6Sip5bj^%opau<_tf>myWt}T)lQCLR!iD%4f`sqtzIkP-y;Q&7JF=x z$V7zWO~-2^@N~@0SE~)A!ek+zqtK%+z&EQKg7`raA?)ktXGJ`Rz>niU>YIa-{*JJ% zU5Q#rzji4NH8se~{B5r5Ex;~F{=~UosBt(?3&aM}m`2HYt!Mp%KLE=C?@^vs5kTW< z=>{nVt}-$*veMH2PIqI%qD0XtX{oZ7_s-bj&w}^l>tq`8N7q4SLLfX<8(7B76}q 8 zWhI`^<@@<<*eXDo_C2nL+Uw}VaR9Oaog?5Vyi1on3hQ`dZP5pAWBCOr74OCbF@6Vo zL3QM(hiqxG>qA{HJG wFZq=VxSW4PV-UX(Ra}^wq-!`ZAFW&h)r%s<=j`mx+8VVi z*CPw_;N8T{=>Rx7QVN(PDXD;f04d3K_?6Z+yYMP3ELxc?F$AChwwvL1rh7dHQnfN; zV+_*LUqnO_psxVf2D+|Swns9!vZR6dhC|sI1T (v!8Z0w@XIApKbIsXpl(fDc2ObQ51 zL3^<5<~UxOlV$l?HX%e;x4F{h>nj8z{wPjS@q1h>HKm|y2%h!K?BJ7tC8Ze>HnyT= z2LI*ZnH8i#08w7r1_>K=-zYoMfWF-FJTg8$_ehqjKG#A6!@F5(2v0ayt8P$L)?w?< zx#B&};78)JeJy({p`?m0vnMR3K=PEd0cT_YtgW>t0qGonh1ni1Dk>y3mpR$lq1N5H z?*+PnVmTv)+?xstit{EN*b~j_KQJNIMFxS$*p@ppg{~h&PYg^<1fw*eoVn`zm@YdC zdsvXqp*xbx(9?p8B>`Y~fDkQ+^Ar^qD9sqmHo_TH4NH5Ca}yIa;}no}U9u;fdIlcY zF8EZHvf%zVoCAy@Ol$*6`hlFR2a84Wg0+`zTe7&tg6?H!PrOaqm8ZuDuT+&k-vIrx zPJANdsO?2b6$`kpztTs8xW}k5*CT=U)~&xIeNGFi3cyjn!(I2RGIyRx#nDZ^oggS- znVyp}@cP9IPrUvg?q`yXPmeJ$_RO{9B;*uRcM4y6;qB{RK@q%!M9rg;wKC)z PF;g6Y#mPtZ(2ZRPcK`0k4Wk8`88I0?BdC5ANn7BI8kPwz?JX!LOaJx)qupJ}r{ zj@Q?Wpk2mzA^5!e%8|17&>JbNFwmX zytA!s(xcvc#b&N0PO=A?9aULx*0N-@Us5AP8pParzUg6eR|%TD^(80gqYD*L@+uZp$KJ zk-M%x?-IaHA>q+tm@B=%dh4Gjn12a!7rl7i@a7#T2bIlC|K7Z~af$ zemS5NSdF~L0cn8l1d9r! C&KZ z))nAkKt(__7Rl*$?&&suew?0qq-+5CoT+LOmqQ9FFVm^Qm}gUR81OjoIgqDp@D!1Q z^8aiXJ!Yr2Qk9pK`7nEeDJ(i#%q8Kg!Rr+Y9kv#?Nm`G)Ep@NqlDhu#C{cko9o<=n{> z9DBj>f$TEwr6?|k6F`fE48Hs`(p6{}>5E~&&m%pI^&dZ>R*XLRe#YR#xzqd;Q)IW9 z(`@$prb?}AZI~ji{xE!_(FzGMlctoE44IKon^O;wjg9=aIG^(Xv&Y3B5bOZ2<*+H3 zUzDZe+$ dUCr9Gjq-Bb;yZZv zr01|de>SVoRg2-=)Zejne5o8e--8s>+8hgGI~^Zg|Clp=&}-QbYhVzCfG8#~yv%Vl z{n=3`LpfRAdUD&ZUL84Z_j72wNJ;tw9 37 zmM}@%qdboPBhhc}EI7-UrZxvK;h;1_l81kFN`O+eukMYgs73AaqyK3EL=UT7mwON# z!~0TF9ggR*1bR|3GRbwgfc*9`P*b<;uMX<*YE`U$3)%6$c)Tfuc{_i{7iNYBGicIS zSBzhBxp#H$RHJ|JM*O{Rmpo!XE6(mRG%!1hA0Ie6It_*f*>Ny{7%oO1c?|~TSg{te zUcYX34b|S!lYZDwn@Ov)*vk^Fm|}E~%r09)?Hqmh&^g%P{XpNyk(MYJuGD}$a;=@+ z903m0#E8>Ca{dj7WR8xm_f`9Wu&y&|j@v!9CQ{-)h>_QZ8OT6pMfHCAa)f3L{o8C_ zd<|@>`F2HzMT)T0`jD`&RIXh1LmBAh4|4;hHOPR@2GJR{m%0^SPR`^ *ho*jp?!wzchA0ccmH%@l_SQ9_degEBw0szH<_So zZ*ceB?ZP^BCnu+Of06~dec(9Pw>PsJZ#YOu+#yA*j{NGau3G6-2>|c!hPaGMwPiT> zt{YTV{!y~ZMqHmtPw>4%1w9aYe~}BVy836KtpOfKd5TI(Vpw^>Ha5q R -bM6I#exWIlb6IYtl`7DmqF99>EybFWeQ+}fc|hHQ1!xTS@Ba*`+GR}%Jk ziN$oTapT|n`a!6kk^(`>;>vu{f uT8gjM*Xd`|6n4+`kE6Bm7nmyju*+)e_ zqXoWzLDksJG2v@i)PmFIF9=qDQhALs;R8g&Zkz5^Zb~Uv=|0Q9y*|yDAF1%-#bu;B zA->oqmRUA~w?JPc%cJ+@#<(?(+x|mV=@3bQu(8?OvsE+3Msz269Oo&niT{vM4bc&k zPv-^s1%CM&I3B_n5B3avzkK0!ohNi#P`Q~M+KRipYFy`f?7z}mlGPW5^jTt3j|z`2 zb!;PjlpMqsm&Tl`eeI31G6835(DByah8$1#E|3>(SE|l0Ut~JkwIb1Aw0P`J=r`SS z#EG@HrM+Bg*6sB*zJ^}ECw8pbi49c)>%l{>TO|D+3;v>tRbR&)Hj&4{Kq+L|Uzgzd zLZ W-W c `Uf4S zP8Yns_B_j&jfj+y>Uc-{CstsM^L>8YQR ?_PF`^ts7p_oN?xe2j1_`im0fr{*by2u$bLc5tNspJb#6j zu)WglSu_4PlbtEeMbmxH=ch%2=HKl^QX2NgnwJ>A-4j7mLQ9EetCg8}|DNYU0}V9? z=c((}GuNxFUq}RvW=Ei$_T@pSsK{NoNz2IW?&3W5x R2_yYq 3Y zquY{}nnAT?&&YFJl>b~!tVLN{m(T9xG=j-UN8PI&n$;(9FO>95?SIX+&eXblviFLC zW;I*0B41uyE})f;mXkl
#b&UwPua}E-cMCIWBKiqhoA2lC(~t)CMHD z0kN~L!XEgf?_P1FZg|K;(9QJfY$f%1-VvsEiHx%4sCC>XrE2QA&`zC6$ i12XO0i*ChW-^iD=N~yU78^TJW--lSKJiLKMB|;}gS1nRuFRb>FjZz{ z*&GIu)x4?H8~Ca1cJdbZnmTYs@+G)|M)5GlAzg+ qs lvwrT8YTl2ZQLpmXZzV&|(5 znPrlhxwuMJ^|q&R>l+)9@cO0w9d2D`m&jehe4Yx`Y~I0}G|&Wm4i~_GtJh-G^4Mql zAdu85+@HYek*d1->9X8Cs`>c>H)#*636DQLXIl;4CbK@FL)ohQ9=~qV(RJ9FMC7QT z^RTEpg*D2|U7!>U@O=>7#Q~K*uIs5$fejN=0_d2UDLEf4>_&juwfCVCuu#N9fhzH` zs+Im73Vl&pAv^mxNpv2=gaQJS7xb~k`Ws3p6=kR!2=1@nz%86p(Uj5D)D#y7k6lVz zT@tPUePvX%ZN-Y!5;S3ZBB%}WKO5xl42BIR$Mj+`E<2!z4Ib;*C)?Vc1FyRCk=6Yi z*C^RU`BB;hU>E5!(AL+%-G`PhUbA+h 0a2Um4)f3F(-A+BetYV#);RMHW#zA4`c zH HN4lH65LP)MRX#X@gha;D!8+zpKfqz pRo`)Hz^igY5xu z9Y&2WVxzdv=$Hb6FD%bLl6lC25=;1Z=+ 6@H5^}s`S z6j@n)y*N9&u5Q;c$@ q5#9k)>ITwuCu3vJo9eI zPr#*fVGk+pl}4W?u%#gn`crK#&~?A;SNe@kxzS`OhXYDW?WH298r{%AkdNlj-0#$) zUS_YOV}5tYY(y^4d{WYxfEB_j)zqd&xlHXZ=Oj!PMR@0DN5xL?qngw2#qpJGnjvkX z=S~kP@q@_i(mGtEXqkO&=6LIKWwmD `u1{t(I3-G`T&pT^vGX6W-`(HnaX}2UU{5t-bk``xk=R zP)wW@SXoDRdVJD&B jHL2M6FC)guYqn8>gbouQv zj7EGpD{Wa=SH?1amLGjtdvfyTKeLdkacfGJ6(~C51p?CQZjnZlh7;-UJ+}(keEBoO z0x1(*Wjmy8xEu;Z9WO5;sY45nSe~76k9Yr!M6wwgEYP0WFDzPHpT!FVr_~9cnVOx9 zj%^*r@>w{6Qc=pY#BF?xmj4dbd`E=B*iQ|$__n&NMlL2r5Mhm~txfBlL*zkR94_(z zH5sFnH!3_m^uvcrI(j^4W9^7|NLo^Qtkf+p-*X=|iTw|K^r3E4>kh*CLhx7OERh^^ zU&~)F*S)_78y{G6iVF((!3$cG2h~>eOmT0TLl3xRUk SdkG8hC011ZoVV6SC8WUiK60l-o~!%1t$U*DKZ(Vg?%Rf7Q4v zGgdvNc{0$&T(b{wBT)9qa 9GRZB%B8_uZJ+HH`Yp1#XO{Cnb3heBzz z8cbFo*P#j)5vg8jSly%0ybs6^e9np8$);!DA8GW7gMfU5KTj)FS@tqXhW|%!Ts4J` z0iH%G-~aXpE+u}{KkRyxQ3RL8Y?D*cScyr1{9fFQ^0y{~(N6@vEF3c_22)i_Y?D?G z9Yz>A7;2Js*m;}{iE+G5{vS+A-feSpLd=8NOPyA>_k{dQs~otDkZJqi z^e zFXmv ^7z-Lf-G<;6! z8UyOUkWirn9-D7?voKPPb5q}+&9w%StCZzlkZ$qcu}tAT&1^Zr!g|d!y42=6~^9 zl#kE9cfxvFUhW7=R;!z)qBV|Ar$?hBTvp&HdhF%e(H0oAcxp(K?mDvqiZdF0rXCMs z*e7vrjRE>iufm${Bg&;;l_5baBJv3;UN|MYpAsSt;o3eso_UN~xxTmPImI?zwIuV2 zdIF#BoawYBkWVi@KZLbmZOY_to6_Nq|?ugnv*}GMaBi6PLL4r*`@i+C6}%n^e&C z>z6NYH($NMH?YTd$RKq0lSo*0^R7p-2B?8(V`7x9vk};kNXvc*uUM9-KGZ8vvz z?B`Ju@v%;Ffr?}WXH~Ck4Qv(J-EGO5)f1J2QPgy1Q`P={nU>S#toqUkFN+> -x#)Xb}Yk1?f#ulX+7PVL6GuCC}cIQGRNf_%7+%p9;batpM&uQu>3;f<-soPblB# z#o-Z+17_p np$ejCM)kEdCn(qj6vSYV!YBbAg6Siessk+5D0_E zxXNMalyJfl9F N{LKV(ybDrGJUn0? zjkT&NxBNw~KMbaBfVFXO#-T@i15eVS9JqU0WFx;pMeu*I_tjBRzFoV - z0YL!;r9+WUr5hzBhoKvl1`+87C8ebs6zP=i&SB_gh&da4-}jtvedo{f$NA%9EthM} zJoDuJ-1pwszOHK<^-hWRyFtw)wfkb^9tt3Y8?;<_XjjaZM|UbS?y#|*9$3PW(dq<( zzIYTUZYWj~VZ7!GDXa%YrbJw6zVnMG17!lS>E#tXHO(&>@iaKK2A7E7R!!!GdS(s| z`H7uHui)>BSyt_36s1cxIvo_!dvE$z+&spsWnvzubm_ps4evBJexHVdj?k9V{zmBU zf9T#$-d7-+6$`E>CMIT4TiB3=$#}G_?9cru1`YLDsP3E)sZ3S(Jo}`9mMtbBRc=0+ z?)G~@SX)M5au@R~^>`~xDx H){oX zV*ujo&rhM^Py#X;EQlg*g> 2uosx`iN6K@cW^#VZ{|^R7a}o{zbF0)esYrqeWoLL0_zm|4gXPlP5J@ zD_(9Ht<#n2`!-~}%sHS4=7OefEphR5<8WyhGpWfbK+4#dNkO5}8wO`tIgzLu5`s*m z!U5a*yI0l6phz~!bj(((=H=o_c|9#WvhQ34f%#r2-ea+JKO`NLs~|dpl$?ycPgBT) zwQ{SEF$X|h%3wZZL&O6p 1C}CVziUj;MU{X*+zh>0r_TED?i8mfxGWfzS_z1v0x}7HA+{t_=|`?n@?C<} z%xF9t-}2tfG?^$FRK$|-Re8#z+O i>14iM^E&p0`^z8$#Xf^XEq-K5W lU=Qu7T*nA-1h)^1pRZtKU-Frv &_SpXpCypl@GvSlF+218_{R-+Nrpb&NexSiy?nJs63X z=RN1LxsoEqU0R%}Sy=*U?9?5{#Vrq*&U`p2e4DKDb1_N`@%Faem5u=f0xJ#<9ad2_ z6#;N%-~7Xw?G5BuO6?@$!9r)wi;0SggNiC*o`ALsbL=c|uoK$g7kP`=->t_xe%+K% z7%Vi>f^o7ncK;woeIxDm*6$e%>Gx*~Pu+LF#OhMPo27odg<@5WVFDh}kw-z%;xB$4 zU;w;0ZwhwK#Go{wi?LlQd044z7EBkAPs!^5jxX+f(D6pz_@c(*sonj4{1S`=gV& z;eEvMfVnIZ`Q(O#th}rh=VFD`AlFJY#%#DO#p&{DlpYlQTa-+`Zi`=FvQeA{2o9h~ z7wm`lbYB+6W;J?!l@;;+dj>1zGcy@#j|+tpMCDag>({5V3wU+vbyqY1qLPj+jR=bZ zarq0ZOQpvJ+r7w08yfe=9 ;+fh>hoWw(qu& z7x` f;aJGiePVF-1ud@^cXosP<}6#Y%XiR&SK{|| z867{k{|GwgNoC>5t)Y9-?4V`Q>wTHPJ&9&F>#m1LW@;;*A0hm1;f6qCy9Q2~&GO;F z2n-tQsuXDjW#tmn15H&OKkkK?*rVl^@TbW3SFc`Cp@PTKmA@E+2A+g@d}8%WSQPOl zLy>88-`2O36i*NnE9xuC%UkK{$~S!Wj4?C3y#mVaq7P?Nhpz7qtw~;>`H+`?p+|07 zDfXS;WB%!3LEOPy%Xrr_t9e%EW)&p&Ha78>h7s;R%$yIlqF9Gt*V?P1ESk$iD(%F6 zi)}r8*&ln;&KoK}TzF5nkQ}>H5r;qwj6FWuY-ENZ1RUhy;#EQ0Q&4p8HaycH$mmOQ z?}4+&_lyj3&I$>Q*y4Y3fXad8xjHu{CN92cFd~9?A8d%` uT=5B4H14iNj(`agLB809o+;Xu)Cx#tr#mnE8LDFkZckm~u{$Y4WJg}Ro zbwOPWaC GJt5PELn7QKG#d>5LFcg!0K1a;^!?wi*!QlyXMz@EX}!Uwq{TfVb}; zD^E=E;qBtu+9VG@C06P=Si^>t)rJD1Byph`{J@9v4My5ODyGKi%w3(kWG~=k9UguJ z2d$8h9+=~-j=>1bGMqUcF_3Kv7{jl7bcQx@ru=03WB9x229GYhu8SjMU?a%gwWaC= zSPZ;AX_mHczNn=JpAjKSwNz H0w~gsUD_1tJOn?*Z%uh*3I*huwItN4x`k*eV^` z=B|=oAz_S3OHD CM!uwI>r4+zAZke}jA4%^hLT?RRE`Uug5bPQ16bHhGWQz1;lD@0ONux;yFV={1rX zlfQbpZ?lwC@AXe{nAV(1?_q9V=^hqOBkj#JYQ_$fua=}_V*{qW+-XY8nMbBTi$PJR zfY!8D+x^~~o@H&UresXsYc%TEivir3dVc Lp`O-(A#jj=$*7$6A&m3t?p(i(ZO}?aD~DY#j&Md%iVNXY2bn%Q>c-0$0fR z^nv_NBW_pQ%lYV$q_i#E46B_b+A5ym!9jnlSxEdiIe+yq&ec0R8|n1HA02nkjgD@H zF)O8r1hgCXnRK}urnE({x{d|tSM{ry)$ESn$`0@8NHw>Te^tA9xE~RPo^L-QBPTZ% zn|vD#aLO&Yy^7gXVkU|n^hnzB1`+z{+bDS9x0W}BQY3Fn*>t~q3Q}}rY+(XCC+Dd# z{W0&zG%*41AR51pSk_9TUSB4rdacr&J@x$J;)PyC`J(!c)uO}0GCd^g{=+QUv?w;i zANHH^c~)h7(oComv)eObf-mHyF*^HP)Pi8J?V|Qn?cyb5WdK8Hy23*l6?~&3&n)P; zU}Gg2l%Rx)(IGVAA0HM&I=@uhf7-;dbA#^qD>heT^%rmT0(2qMNv8CTW_LDdi^A?K zs~siPh!gSqczf?TqZsyejvNZxcq# uCYdX*ZEtsaS0BZu3g%iOjgn4@xi;%k2s zHJWccS#u%l*$La(iN`xw_LD2NGS7UHWuJe&`gkb8{%*%hZC}dB!?<{6Ei>nsnXtO7 zlk@nT39ScickB3uplxj=W~%JqrKfztqHpm6#^!YFd{?ecG^h*j@Ht81KC#*xc$Pst z-xS=U+X4P1O~TXHcAHpcmX>&QFuUa3+r$Eg9Gl@OQe*?e!`JTcEJF8mu%xH>Q{Df| zt>NQGiZ~u5X5v?(KUsf(vqwV!Rw8`m=n8YNLIM75A%0S+)(iu?Ks%6S2(ld>njr@B z5+%ZSJV7fnmL==_#VN8i+HAbE+{#dLaud4QskqoS4Gxxy?6ymUWfBMg88jaezmj_( z8MhJK%FJbL#61^1DUSFSvj0Ui5VI}ix;$RCoipI*PZQ@NQ#{v3+7PM=o;(uuVw$e2 zSfkqKq2k*Z>xj-P*EiQ2=HrXMAR3@KJ)Pv?q}T0nvSaOcg{oRwuB`i+9u{+-(j4aI zZHM0l=h@L nge;uV?yqi>LJNE zzV@&1I?gV&Q}A+;nclg5fC65p^Z3}ygKKw=R)$|AP0J0tVoER1I+Uf!RkJ?&*jHg6 zEN9SezdXq9j9L10yPMtU);#4)AqK?^PkM;_+&LsvO)(IsY5|N7>`AqxUi zp|ShZ@dIuDSI`s>{2J55eRAX#pQBYyeXXpl4Cp|$+{Sb9uF}rjE>TyKz(SAPdB}F1 zPcTbSCVpo${QPmb%d#*`puc`ssZ^P`^eGoQLbJDK&_)a&N;?Vp-UN*4=jT{W))fEZ z;^KhMpTlVEjt |#@cyTZ968A{*s0-L4~qd;>U zEbW%SPQ%^FkWYK3EZEfBOEYG)u9{_2|EV;O_s#R1!+ohoQGQD0MOnHr1xDNTW*XeL zDmjYH_EEON!xj4-&?$+w^IQhJ)q1TFUj}6`6TdCYR7N(+)wWbs;!IIiWxS3%Ek%)a zuZZ~Q=~A=Zd9IaO%ns4Thge%%2XdFka$1`8Eot%7Yq3FC%OWP9CJ$^zX5~Ml<{x|M zW?O7lM$EcXmIb__t3Ce}7x`+ W-F21O8f!!pLCC(9&L7{spOL^kgQ$3Gmxs&&|$l>rJ8SJ*| 4+`SXuo)Bf0x!gL4lFxVO zb#}aFSo0Kn>{wURwUMLc)uy#po~hSYA=C}Q1gZ5ccKzB}2_?6W6rXRi8t$!~)v`iI zOzeNc+u2zjMvhAdUS2P=UZzTIyZ{;ZQ7z@p(vYs0-b0vblBjCM=%Mx|0|S^Iiz>H9 z&p{8?!kO2kZPCyS0GHaAh*3MwZG^T-fX0_380))Y^vct4I4q)$9K&oUT%fw#tbles zFfBdotbBjKT;2M^+|VaKf3rf%WiR32JzYTjKVz4ddP+N(Ee&ot vi5HW-pcO@MkABn{Axa7I~Rt&Z@C!Agj zoX&e|PnG8&B^j93ndo_3r0YQ|*_~z?AIUGJXf+ QF6?W^FR7|Cqq=*EbZkpV2#0sMG*1B(! zlRIzB3~rMZk@l5hC%t?u_zU6uZC85C#*bgRW-8MuQLPNkRvL%f_Gd32Y%gD5&1-9d zso;38znzyQ&TPD@kS0HdK`EPx41($(_oczGHXg+~*Npw=CWE^9NW}HrgOakc_DJ5W z)$rf29Pe+sju)@4&4}sv5wRXM@cWFwijCI|6T~B|j!Vj?+a3h7&0&iJX|^yKz=_l| z5rhBp` -_tWJ0pV%5%4ibC>KNB=<&nQ*J%0#s`E;DvD=wt^5LCoiEY8^;ke;h~(p@s5;a2 z1kO>%t0BS99JVQV%$AhMxty3f7Ol$aBov!%u*a+Of*c&Rhl*NdGu>Z*9W-|{go;bg zcfK3T9RHy}(L=I*i>&|)W5%6;jQ!{~w{+CwNiq?yT@TgI (gG0RoHXcm;^IxjpYctJaoUsz2Y1LO7xf~a-Lh+*}@W$R$Q?>8%y?$ z9h)w}4GsQB4B0n3#<8DGBGPX67D^nL4%=L!R?Ji%hpwT&xrrZ4jHStuIoGc*?QiaB zUH2QUvSbg;c;x@RcTqNZ3cIFxxSOY#>R%j9Fom(!x{PqfwAv58>nf?*H@pXRv>>rR z-+nh#-{zIXeVynKsx{s_!H$Alflek?rP?O#iUK(~d8*WYws0W>c#8(9)uCn^BXyo* z<2)_ZVqzH6pWk#e5{n pS&x_G+Gh4OhllzvotuPo&`hm zcC3TR i^IfsmsU=;1LnBhPygIRB1kROPTZPAz$*x+5mg)yGlpN+WAZvm4)JBC| z3=E5{k(V(J598w5#1BPbikf|>1j!x!E@`kM!v!4vtGFfeQ$Z^e-y#SlZeIzDzjB91 zm7g&I<^xtA&)XL+&yANH2jouEwy22mx5eyk4Q{?Te}GF3SGd2| };Z2J(i!RcznbIkl$DtB`$@5uSC z66E>cqwCV~e8t+c7wHV>=s?@OX0GyB0{3-=U2e&k$GHn5AlSFAn|J7EqD^P^-`5u$ zui}kjGri~j!`wf@<6=d0hyf#0Hd8}@L*1}x!{aw+{@DAqtk pD+m)$` zl#R-ueF=jNsc_mi>O{CE$*f}5-u^g@?FeJc;IW=Fkt8s@mC`_?lpWK8jo{ZC%7hgf zk9rCt5_n(s>vI>Ckj05_iFq#F?bte}kxQ@r!7q%eSIiG7EB>t;wWT8KLr7807^S0+ zCv3iUuhg+15LU3FirUQE9r0d(2+L!23e!XNvKH(&iP6`}O3FeWd*4@eoui*l0! I-$w3%6Q*uys7N+(6cM-jbvOi z68qb-uJ^Mwa#f4=3LFZX;cdxn;cU9}E4R4S5@~%KJKFCl0(KQ!n~$LHJA-aZSZ|AQ z^ `hMT#86xpW zEn21&vrP WrRgm97bzi$ay*mguGWpuz2+V)Q%<&I>HOfZ4=T;{%T3kIB~ z#=bclOLV!0iuXdG4LQT310DZQ^XFDCeBN6eP88Wml0i6NS?)!$=$Q-^d^1@cnl)9< zP{UnErQ-Wz$U;9r=ZlsyQ3t809ufiF)`-dI&fmn$Dx3y8JzdG-$}EHi2J@6DGHVYM zbp!g34dtryXQ=yvn6=`f3e)3xkPfX8VivKnlHH5F8KLYlD>HZSVCo8bq53IUo}pKB zbs5j4#ABR^u%o?wrQe?a>YXj?+ytRHEGBsW0Q$7q9%wmgdR2wx%a7!hC}gPS9+1S| zG@aC?G`4wvELvouA`!AyV&C0g`Q9;uSV|(C>1~91W1-0r#)ds6`cL+<0mP-z> _5F!Yg_R*%L;++dQ{7*07<7maG+ z;n!xFrRKg$2OHDD8rB{0cyNx^ZHuDG?hJc`>MTLJfxg*)PD)o^zWvT1FORR)yYZnm z#{9R%l94Q73>qvPdw~RZojtek(fwveDwfoO(50O6B2JEGKI&jS5&wYX!Nl=)<1aXm zJH*606TiUElM>_}_V6B)wMDNLU+0Qt<5JD&H6mljyfG-dMAUp6KSvNRK=xwJThA?& zabITF*B9iQ9+hpGvOTNSV_9lAm;Gwh-l2lDu8 i6vLC^X{l>xd~~>M7MG_MWvgA59juKMGZZ<&g3DJp zg8C&UN95{pX6U>OtLxG3c*}IXi{746|GRratm5HJ-vWZ+@i_N2=j-{&wDH&W_7)0w zY}l@jk_gPSM9+7p;72_*qmn5!SvTya#lI=FTmbyz(G0bmIF0F{=Z}2`1_z}gpY9ys z@yBplN>?}M*({TS*@ge=HyA6T_Dfdlic?aIOj@O+6vutNy>*WRM2!$*?&D>%bncCz z4@Ce|x?%3|)$5na$VgYRT!rMLv&RRkC@@uJ)o-P`EZ<^LWYG*}BOW@gteq&U>(`&y z wZ)jCPAIh- z@~J8?PWHTQY-hIzXvXZ^MPyq6H2qBk!))E*&dw(&mRP{2gpCV7U%l%45vrhHmA-vL z#l&82s64X_O 0x!lf}kvT^0E5&S<%oCbrNg}!0LaI*@Mxho5CtJPYgnmh)Pe2>1Re1@r z%-8bKw@*IL^!v9Y{Zhm*>7A30&YXEH@Ndof1vr<}zprOb;J=fsF~85#>vVxMCt>fIGw8r>#jXN* z3OXSnL!T?BpS>pnXyg0$r )p+cv;`nbwu{R;*!maK~C oNGawDPe%XrCatdsF#}XUj4fn z*~w;{)Ay}^k{`^r2-)S`6cxWUZ}r;wK$wKV1daUr5Ym&{IDBG92_=peIve6>@ThCX z2bi_8UA7wgrcbvxLr;N})gD9)t>qes$?lOINRj>fOukHAr=#)hUeTa5th^sg!DBvD z+0y6suV0ZNWoy#h-1y6!N2aW2esFON{O7A%@YP^EhZ&mszThSDQ{DBMJy8NW8hN`C z4(FjhH_ z<1%{~)qP>HCwoaGq@-NV^&>Hy`QZ#IBi;GAQuPz_t_S|K;4AfMf3rLqmD0P|9>=@7 zy<5dxX1%fYAnMb3NehvH *=ta!d^|dvExVR@Tg2oOgc|8bf zhShMXD|YT<7jD`gaV;GmJ(qA88XP2|mu>9q?A-99 oyt6xlYii6+b||Y9`+@RcQ)m0<@b-F-g6P zhlhvfSH>=vSgzLjk=Sp{w8!&n4dx|h-6A=e#-Edl#OU7p?bX0Z-!wd2q8#*kZ3ac} zOMHEEo^GAMKW(`;%=S3JF_k4*A`0@oB@c4f6&8Dj2Mgb%4KN?eZH^epLK$2Mp#kW= z=*S35d0CnA*tqJYo92{knb?mPBs>U$X|W~x+k`+@v_f@lFAdW09A@n|#PL|OtyO&- z-NkI91NkbA)eYv`)G~D^i18}0Z$?U*)@{@(^~G`%C~L(S3O|k~{9|{x*R+MQWK!Q_ z-$?`adypO|c4EX&Z@d`X_{XllaQHC?&IFA3 3;7)Ah5MCmMj*0F|X3PrG2y +pKH!y`x3p^ay9SA2Fjz58d6n+L%wAEE3JZ?7I;N;hT)A9FT@wqxc7k zHqf=+O~CsGHfAW_03=ZHs(SJ#5Bg*RpvjqI9P@escgFIwc5rZjF3!uUs+#`YBZ1O{ zI>Ak1%6%IIG-Bql-T6o`1u&f5bP|jfL1EJV^A1p-fQ~kL<%nvE>`Sa^&7lm+WA>0K zU1L-eE7oZ+8+@Sr{XL&_SEX7y2{}0<*@a6bSPZ%q@FB~Y#_V?kl$=T=;R7F}2{|3M z;t|!ccZc;_Lig9bd{pvE>Q;&jyKVNz>~As`0S(r @4{CmI|bJ^b@Sy@J=_(dr!@J3-ve0>j^M zowUa`=)Oa 9qriA8oxoIthh?GJL~F_A-&4w24Lb> zTbq>Ta%W;gpQ^{H49f5ZQr6-gR&_4r)EkFmcAXiW8qRAqpqwz54h;K>YpY!lA
AVYxLZ%oGgeUo@B8zU;k@M2bq0+BZe@xhN#wIB)lY+xv;kG$p29&%$MY52R zSJ+KjeB2G~4mT3lt0LXc;(HISNr?Vz@)M4Wmu`CuF#d@^*@Wuij9xN_si5=~+?P6C z6wS#I-_Lpn2l>72P1>i?q5bo3F2H3z4x;`Q6N`t%33Zb0;=+>pl6_z o-VP#OkRcCA*?CCzv=V?RGQv*^n|HdxGw)vPK$ ze6;ZH^C7t<5~)(~PI`SR?AUC+W0j&mZDK+s-=M*%8StyP#>vxw2`@wIm0DI1O(%hUiA==fmqlQS z8O3UF)mTHNE8O(+@}F;s Et zT7`I}J3d{tQ1-Xy_EmB&%y=+XF-MdC&HHs53p|^JwcG*b8ijZ?Ue%ij;d{Fk5?g;{ zQ=t>xHsxBctIY9@li0@j*I}eSaqa0teIybSvP8`E`1<{(UUTFH$+-@3AwOl~_kBc% z3qCQrNwR5E%TDv{qfoNCCGFhB?Q+=j?WM@H!$ebXsuV@QLunQS)N(g8Ax=9%FAH}* zsT~emWT=a*S}zz=3#PQz&sI{m#pOTO7c(<6lOV>LxFDcW_{nQAh4sAl@Q(rSu?wy2 zw>iezKX0`c9(PuF_%uZEXUw|}8zmN|fBotufNOhM-(#eT{A)+hR>q>qU6IdA0Mmsm zj}zzom=taOV`L4Y(@WHO`c2yCT&GVf I!{yf_0wB^d1yzs=*eO(imbe zB5`rF>GYBO2c5y8J|mlRY~ze9EJi=y=R93iL@=sz7$5F-<7bdcMYFjq_N)sBa9Qmw z)Z($a6M(yTnnH#rk=JOIGum|6mhZ|XzV!}z%6MbFmN4nVXT>Hev2+3JX!Es+K(S!L zynHpFv+Y}iK8SSBAXh7139=%Qk%h20?{%tKmTa>4fWzs1_>%sZo8CV1O6cMEvb&x| zIQynSaE5u1M^|amL-hjl$pnvCO&xYby<{CI(dS{R4`b4xac}%W{Sv<7^(ASEW6U`I zaP{hrMp;pK%TyTS!LuC<3lJVc8Tzn;gD9D3j*Pq;czOr~^e9IRYL+Yn{G&DhJC#a1 z;1AO`oeJxRbA^l=&Faextj8m{=$bkS;6CBq`PBf}S44lRQRt;2ipwW=F^R2JTAcXU zMW7;DcV_Z!#hB@_6FjX4sx!_Ox|1p@a;PIl6WRw0lVg=QWY5yIQmmS+ja~XFcQ=Mo z5sr?lwn!uj8mJs$3ZX|L`N3VlbfF!hY3gUweEp*biil?>%80t=ZQJuJ`|70_sA6$i z>K1Q%^O=K@(clA>bi11DAEv|Y2+$5*TVV@nl*2JAWKel*TDi`ztyvK_~EVHTH-RycR4>7z%y% zUqh5;I$U63*^;?s#1#u&3H*}V%yz h7Tt!-0g)HNI zc!9LeP%Bm(Ei25l?!HRypo*4-idR^U>E@gip;Mr@H*RTW$HJZ~mY4kLyCeebnMUf9 z3bni4G0#jNW3{)px5Kt}N~nid^=O%C!#0`AvkWD(-t ~ZTMhXOBOLMb;kCdP!9;A9Mlnx3p>#l^Q6rjxW2>@PpO*~?blsYbYm&KY%eq}(dC z=v}Z&7AGQo`duSmzfir@V)2@0xsBywNMzn zoI+Zn&L#x3p)&zxLs6n0$_Amcuq=28uM6bCSZmU{3x_yH BHxq7OryHczIk1S01~D-3k