From 2b1bc3634098c7b6d70e518f5ecfee40c52a8fd7 Mon Sep 17 00:00:00 2001 From: jiaxinwen Date: Tue, 10 Jun 2025 18:56:05 +0000 Subject: [PATCH] initial commit --- .gitignore | 155 +++++ README.md | 83 +++ core/llm_api/__init__.py | 0 core/llm_api/anthropic_llm.py | 210 ++++++ core/llm_api/base_llm.py | 137 ++++ core/llm_api/llm.py | 316 +++++++++ core/llm_api/openai_llm.py | 631 ++++++++++++++++++ core/llm_api/usage/usage_anthropic.py | 73 ++ core/llm_api/usage/usage_openai.py | 91 +++ core/utils.py | 239 +++++++ env.yaml | 176 +++++ figures/algorithm.png | Bin 0 -> 134583 bytes figures/claude_performance.png | Bin 0 -> 195431 bytes figures/llama_performance.png | Bin 0 -> 237996 bytes requirements.txt | 31 + setup.py | 11 + src/datatypes/enums.py | 34 + src/experiments/ICM.py | 560 ++++++++++++++++ src/experiments/ICM_tools.py | 238 +++++++ ...9-initialT10-finalT0.01-schedulerlog.jsonl | 6 + src/experiments/plot.py | 24 + src/model_querying/__init__.py | 0 src/model_querying/prompt_creation.py | 45 ++ src/model_querying/solution_extraction.py | 55 ++ src/pipeline/README.md | 27 + src/pipeline/pipeline.py | 314 +++++++++ src/runners/__init__.py | 0 src/runners/evaluate_code.py | 191 ++++++ src/runners/query_model.py | 276 ++++++++ src/tools/__init__.py | 0 src/tools/dataloaders.py | 264 ++++++++ src/tools/path_utils.py | 11 + src/tools/printer.py | 134 ++++ src/tools/string_manipulation.py | 62 ++ 34 files changed, 4394 insertions(+) create mode 100644 .gitignore create mode 100644 README.md create mode 100644 core/llm_api/__init__.py create mode 100644 core/llm_api/anthropic_llm.py create mode 100644 core/llm_api/base_llm.py create mode 100644 core/llm_api/llm.py create mode 100644 core/llm_api/openai_llm.py create mode 100644 core/llm_api/usage/usage_anthropic.py create mode 100644 core/llm_api/usage/usage_openai.py create mode 100644 core/utils.py create mode 100644 env.yaml create mode 100644 figures/algorithm.png create mode 100644 figures/claude_performance.png create mode 100644 figures/llama_performance.png create mode 100644 requirements.txt create mode 100644 setup.py create mode 100644 src/datatypes/enums.py create mode 100644 src/experiments/ICM.py create mode 100644 src/experiments/ICM_tools.py create mode 100644 src/experiments/log_truthfulQA-llama70b-K3000-bc256_seed27565976-initialsize8-weighted50.0-decay0.99-initialT10-finalT0.01-schedulerlog.jsonl create mode 100644 src/experiments/plot.py create mode 100644 src/model_querying/__init__.py create mode 100644 src/model_querying/prompt_creation.py create mode 100644 src/model_querying/solution_extraction.py create mode 100644 src/pipeline/README.md create mode 100644 src/pipeline/pipeline.py create mode 100644 src/runners/__init__.py create mode 100644 src/runners/evaluate_code.py create mode 100644 src/runners/query_model.py create mode 100644 src/tools/__init__.py create mode 100644 src/tools/dataloaders.py create mode 100644 src/tools/path_utils.py create mode 100644 src/tools/printer.py create mode 100644 src/tools/string_manipulation.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b1e37fb --- /dev/null +++ b/.gitignore @@ -0,0 +1,155 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +ruff.toml +tensorboard/ +# C extensions +*.so + +.idea + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.vite/ +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ +SECRETS +data/ +.DS_Store +pyrightconfig.json +*.db + + +prompt_history/* +prompt_history +wandb/ +.hydra/ + +# API keys +.env +*api_key* + + +# results +src/results +results* +logs diff --git a/README.md b/README.md new file mode 100644 index 0000000..bbd562f --- /dev/null +++ b/README.md @@ -0,0 +1,83 @@ +## Unsupervised Elicitation of Language Models + +We introduce a new unsupervised algorithm for eliciting skills from pretrained language models. This algorithm is competitive with training on human labels on common misconceptions (TruthfulQA), math (GSM8k-verification), and helpfulness reward modeling (Alpaca). Without supervision, we train a helpful chat assistant from the Haiku 3.5 base model that outperforms a similarly trained human-supervised baseline. + + +

+ +

+ +

+ +

+ + +## Setup + +### Environment + +1. create conda environment: `conda env create -f env.yaml` + +2. install package `pip install -e .` + +### API for Pretrained Base Models + +You should have access to an API for pretrained base models, which can return top-K (e.g. 20) logprobs. + +Since most public api servers (e.g. openrouter) only support post-trained chat models, you probably need to deploy pretrained base models yourself. For example, we use vllm to deploy llama models in our experiments. + +In particular, we highly recommend activating the `prefix caching` feature to accelerate the experiments, because our algorithm will create many API queries with similar prefixes. + + +### Secrets + +You should create a file called SECRETS at the root of the repository with the following contents: +``` +LLAMA_API_BASE= +NYU_ORG=None +ARG_ORG=None +API_KEY=None +``` + + +## Run + +### ICM +

+ +

+ + +The main script is located in `src/experiments/ICM.py` +An example command for labeling truthfulQA data: +``` +cd src/experiments +python ICM.py --testbed truthfulQA --alpha 50 +``` + +Arguments: + +- `--seed`: random seed +- `--alpha`: the coefficient for mutual predictability in our scoring function +- `--testbed`: name of the testbed, e.g., alpaca, truthfulqa, gsm8k +- `--model`: name of the pretrained base model, e.g., meta-llama/Llama-3.1-70B +- `--batch_size`: size of a minibatch when running ICM on large datasets that cannot be fit in to the context all at once[^1]. +[^1]: Since ICM relies on in-context learning, it might not be able to fix all datapoints in the context at once. In our experiments, we split the whole dataset into $N$ batches (e.g., each batch consists of 256 datapoints) based on the context limit and data length, and run ICM independently on each batch. +- `--num_seed`: number of randomly labeled datapoints in the beginning. +- `--K`: max iteration +- `--consistency_fix_K`: max iteration for consistencyfix +- `--decay`: decay rate for simulating annealing +- `--initial_T`: initial temprature for simulated annealing +- `--final_T`: final temperature for simulated annealing +- `--scheduler`: decay scheduler for simulated annealing + +### Iterative Fine-tuning + +Instead of using the initial pretrained model ($M_0$) to label all $N$ batches, we do iterative fine-tuning: + +- fine-tune the pretrained model on the first $j$ batches to obtain $M_j$ + +- use $M_j$ to label the $j+1$-th batch. + +We use [axolotl](https://github.com/axolotl-ai-cloud/axolotl) for fine-tuning. + diff --git a/core/llm_api/__init__.py b/core/llm_api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/core/llm_api/anthropic_llm.py b/core/llm_api/anthropic_llm.py new file mode 100644 index 0000000..af71af7 --- /dev/null +++ b/core/llm_api/anthropic_llm.py @@ -0,0 +1,210 @@ +import asyncio +import json +import logging +import os +import re +import time +from datetime import datetime +from traceback import format_exc +from typing import Optional, Union + +import attrs +from anthropic import AsyncAnthropic +from anthropic.types import ContentBlock as AnthropicContentBlock +from termcolor import cprint + +from core.llm_api.base_llm import PRINT_COLORS, LLMResponse, ModelAPIProtocol +from core.llm_api.openai_llm import OAIChatPrompt + +ANTHROPIC_MODELS = { + "claude-instant-1", + "claude-2.0", + "claude-v1.3", + "claude-2.1", + "claude-3-opus-20240229", + "claude-3-sonnet-20240229", + "claude-3-haiku-20240307", + "claude-3-5-sonnet-20240620", + "claude-3-5-sonnet-20241022", + "claude-3-5-haiku-20241022" +} + +LOGGER = logging.getLogger(__name__) + +ACCEPTED_ARGS = [ + "model", + "messages", + "max_tokens", + "system", + "max_tokens", + "stop_sequences", + "stream", + "temperature", + "top_p", + "top_k", +] + + +def extract_system_prompt(messages: list) -> str: + sys_prompt = "" + for message in messages: + if message["role"] == "system": + if sys_prompt: + raise ValueError( + "Multiple system messages found in the prompt. Only one is allowed." + ) + sys_prompt = message["content"] + return sys_prompt + + +def transform_messages(messages: list) -> list: + _messages = [] + for message in messages: + role = message["role"] + + if role == "system": + continue + content = message["content"] + _messages.append({"role": role, "content": [{"type": "text", "text": content}]}) + return _messages + + +def count_tokens(prompt: str) -> int: + return len(prompt.split()) + + +def price_per_token(model_id: str) -> tuple[float, float]: + """ + Returns the (input token, output token) price for the given model id. + """ + return 0, 0 + + +@attrs.define() +class AnthropicChatModel(ModelAPIProtocol): + num_threads: int + print_prompt_and_response: bool = False + client: AsyncAnthropic = attrs.field( + init=False, default=attrs.Factory(AsyncAnthropic) + ) + available_requests: asyncio.BoundedSemaphore = attrs.field(init=False) + + def __attrs_post_init__(self): + self.available_requests = asyncio.BoundedSemaphore(int(self.num_threads)) + + @staticmethod + def _create_prompt_history_file(prompt): + filename = f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]}_prompt.txt" + with open(os.path.join("prompt_history", filename), "w") as f: + json_str = json.dumps(prompt, indent=4) + json_str = json_str.replace("\\n", "\n") + f.write(json_str) + + return filename + + @staticmethod + def _add_response_to_prompt_file(prompt_file, response): + with open(os.path.join("prompt_history", prompt_file), "a") as f: + f.write("\n\n======RESPONSE======\n\n") + json_str = json.dumps(response.to_dict(), indent=4) + json_str = json_str.replace("\\n", "\n") + f.write(json_str) + + async def __call__( + self, + model_ids: list[str], + prompt: Union[str, OAIChatPrompt], + print_prompt_and_response: bool, + max_attempts: int, + **kwargs, + ) -> list[LLMResponse]: + start = time.time() + assert ( + len(model_ids) == 1 + ), "Anthropic implementation only supports one model at a time." + model_id = model_ids[0] + max_tokens = kwargs.pop("max_tokens", 2048) + LOGGER.debug(f"Making {model_id} call") + response: Optional[AnthropicContentBlock] = None + duration = None + + kwargs = {k: v for k, v in kwargs.items() if k in ACCEPTED_ARGS} + system_prompt = extract_system_prompt(prompt) + raw_prompt = prompt + + if "tool" in prompt[0]: + kwargs["tools"] = prompt[0]["tool"] + kwargs["tool_choice"] = prompt[0]["tool_choice"] + + prompt = transform_messages(prompt) + # prompt_file = self._create_prompt_history_file([system_prompt] + prompt) + for i in range(max_attempts): + try: + async with self.available_requests: + api_start = time.time() + response = await self.client.messages.create( + messages=prompt, + model=model_id, + system=system_prompt, + max_tokens=max_tokens, + **kwargs, + ) + api_duration = time.time() - api_start + except Exception as e: + error_info = f"Exception Type: {type(e).__name__}, Error Details: {str(e)}, Traceback: {format_exc()}" + LOGGER.warn( + f"Encountered API error: {error_info}.\nRetrying now. (Attempt {i})" + ) + await asyncio.sleep(1.5**i) + else: + break + + if response is None: + raise RuntimeError( + f"Failed to get a response from the API after {max_attempts} attempts." + ) + + num_context_tokens, num_completion_tokens = ( + response.usage.input_tokens, + response.usage.output_tokens, + ) + + context_token_cost, completion_token_cost = price_per_token(model_id) + cost = ( + num_context_tokens * context_token_cost + + num_completion_tokens * completion_token_cost + ) + duration = time.time() - start + LOGGER.debug(f"Completed call to {model_id} in {duration}s") + + if "tools" in kwargs: + completion = response.content[0].input + else: + completion = response.content[0].text + + llm_response = LLMResponse( + model_id=model_id, + completion=completion, + stop_reason=response.stop_reason, + duration=duration, + api_duration=api_duration, + cost=cost, + ) + + if self.print_prompt_and_response or print_prompt_and_response: + cprint("Prompt:", "white") + cprint("System: " + system_prompt, PRINT_COLORS["system"]) + for message in prompt: + role = message["role"] + content = message["content"] + tag = "Human: " if role == "user" else "Assistant: " + cprint(tag, PRINT_COLORS[role], end="") + cprint(content, PRINT_COLORS[role]) + + cprint(f"Response ({llm_response.model_id}):", "white") + cprint( + f"{llm_response.completion}", PRINT_COLORS["assistant"], attrs=["bold"] + ) + print() + + return [{"prompt": raw_prompt, "response": llm_response.to_dict()}] diff --git a/core/llm_api/base_llm.py b/core/llm_api/base_llm.py new file mode 100644 index 0000000..bd9d002 --- /dev/null +++ b/core/llm_api/base_llm.py @@ -0,0 +1,137 @@ +import json +import logging +from enum import Enum, auto +from typing import Dict, List, Optional, Protocol + +import attrs +import numpy as np +from anthropic import AI_PROMPT, HUMAN_PROMPT +from pydantic import BaseModel + +PRINT_COLORS = {"user": "cyan", "system": "magenta", "assistant": "light_green"} +LOGGER = logging.getLogger(__name__) + + +class PromptConfig(BaseModel): + partials: Dict[str, str] = {} + word_limit: Optional[int] = 100 + messages: List[Dict[str, str]] = [] + messages1: List[Dict[str, str]] = [] + messages2: List[Dict[str, str]] = [] + vars: Dict[str, str] = {} + + +class LanguageModelConfig(BaseModel): + model: str + temperature: float = 0.2 + top_p: float = 1.0 + max_tokens: Optional[int] = None + max_words: int = 10000 + min_words: int = 0 + num_candidates_per_completion: int = 1 + timeout: int = 120 + logit_bias: Optional[dict] = None + + +class StopReason(Enum): + MAX_TOKENS = auto() + STOP_SEQUENCE = auto() + TOOL_USE = auto() + + @classmethod + def factory(cls, stop_reason: str) -> "StopReason": + """ + Parses the openai and anthropic stop reasons into a StopReason enum. + """ + if stop_reason in ["max_tokens", "length"]: + return cls.MAX_TOKENS + elif stop_reason in ["stop_sequence", "stop", "end_turn", "eos"]: + return cls.STOP_SEQUENCE + elif stop_reason in ['tool_use', "tool_calls"]: + return cls.TOOL_USE + raise ValueError(f"Invalid stop reason: {stop_reason}") + + def __repr__(self): + return self.name + + +@attrs.frozen() +class LLMResponse: + model_id: str + completion: str + stop_reason: StopReason = attrs.field(converter=StopReason.factory) + cost: float + duration: Optional[float] = None + api_duration: Optional[float] = None + logprobs: Optional[list[dict[str, float]]] = None + + def to_dict(self): + return { + "model_id": self.model_id, + "completion": self.completion, + "stop_reason": self.stop_reason.__repr__(), # Convert to some JSON-serializable format. + "duration": self.duration, + "api_duration": self.api_duration, + "cost": self.cost, + "logprobs": self.logprobs, + } + + +class ModelAPIProtocol(Protocol): + async def __call__( + self, + model_ids: list[str], + prompt, + print_prompt_and_response: bool, + max_attempts: int, + **kwargs, + ) -> list[LLMResponse]: + raise NotImplementedError + + +def messages_to_single_prompt(messages) -> str: + if ( + len(messages) >= 2 + and messages[0]["role"] == "system" + and messages[1]["role"] == "user" + ): + combined_content = messages[0]["content"] + " " + messages[1]["content"] + messages = [{"role": "user", "content": combined_content}] + messages[2:] + prompt = "" + for message in messages: + role = message["role"] + content = message["content"] + tag = AI_PROMPT if role == "assistant" else HUMAN_PROMPT + prompt += f"{tag} {content}" + if tag != AI_PROMPT: + prompt += f"{AI_PROMPT}" + return prompt.strip() + + +def convert_to_prob(log_prob: dict, tokens: list) -> tuple[float, float, float]: + logit1 = log_prob.get(tokens[0], None) + logit2 = log_prob.get(tokens[1], None) + + if logit1 is None: + rating = -100 + LOGGER.warning( + f"Missing token0 {tokens[0]} in log_prob, setting rating to -100.0" + ) + else: + rating = logit1 + + if logit1 is None: + logit1 = -100 + if logit2 is None: + logit2 = -100 + + return rating, logit1, logit2 + + +def add_assistant_message(messages: list[dict], assistant_message: str): + last_role = messages[-1]["role"] + if last_role == "assistant": + messages[-1]["content"] += assistant_message + else: + messages.append({"role": "assistant", "content": assistant_message}) + return messages diff --git a/core/llm_api/llm.py b/core/llm_api/llm.py new file mode 100644 index 0000000..0dc7981 --- /dev/null +++ b/core/llm_api/llm.py @@ -0,0 +1,316 @@ +import asyncio +import json +import logging +import os +from collections import defaultdict +from itertools import chain +from pathlib import Path +from typing import Callable, Literal, Optional, Union + +import attrs + +from core.llm_api.anthropic_llm import ANTHROPIC_MODELS, AnthropicChatModel +from core.llm_api.base_llm import LLMResponse, ModelAPIProtocol +from core.llm_api.openai_llm import ( + BASE_MODELS, + GPT_CHAT_MODELS, + OAIBasePrompt, + OAIChatPrompt, + OpenAIBaseModel, + OpenAIChatModel, +) +from core.utils import load_secrets + +LOGGER = logging.getLogger(__name__) + + +@attrs.define() +class ModelAPI: + anthropic_num_threads: int = 2 # current redwood limit is 5 + openai_fraction_rate_limit: float = attrs.field( + default=0.99, validator=attrs.validators.lt(1) + ) + organization: str = "NYU_ORG" + print_prompt_and_response: bool = False + + _openai_base: OpenAIBaseModel = attrs.field(init=False) + _openai_base_arg: OpenAIBaseModel = attrs.field(init=False) + _openai_chat: OpenAIChatModel = attrs.field(init=False) + _anthropic_chat: AnthropicChatModel = attrs.field(init=False) + + running_cost: float = attrs.field(init=False, default=0) + model_timings: dict[str, list[float]] = attrs.field(init=False, default={}) + model_wait_times: dict[str, list[float]] = attrs.field(init=False, default={}) + + def __attrs_post_init__(self): + secrets = load_secrets() + if self.organization is None: + self.organization = "NYU_ORG" + self._openai_base = OpenAIBaseModel( + frac_rate_limit=self.openai_fraction_rate_limit, + organization=secrets[self.organization], + print_prompt_and_response=self.print_prompt_and_response, + ) + self._openai_base_arg = OpenAIBaseModel( + frac_rate_limit=self.openai_fraction_rate_limit, + organization=secrets["ARG_ORG"], + print_prompt_and_response=self.print_prompt_and_response, + ) + self._openai_chat = OpenAIChatModel( + frac_rate_limit=self.openai_fraction_rate_limit, + organization=secrets[self.organization], + print_prompt_and_response=self.print_prompt_and_response, + ) + self._anthropic_chat = AnthropicChatModel( + num_threads=self.anthropic_num_threads, + print_prompt_and_response=self.print_prompt_and_response, + ) + Path("./prompt_history").mkdir(exist_ok=True) + + @staticmethod + def _load_from_cache(save_file): + if not os.path.exists(save_file): + return None + else: + with open(save_file) as f: + cache = json.load(f) + return cache + + async def call_single( + self, + model_ids: Union[str, list[str]], + prompt: Union[list[dict[str, str]], str], + max_tokens: int, + print_prompt_and_response: bool = False, + n: int = 1, + max_attempts_per_api_call: int = 10, + num_candidates_per_completion: int = 1, + # is_valid: Callable[[str], bool] = lambda _: True, + parse_fn=lambda _: True, + insufficient_valids_behaviour: Literal[ + "error", "continue", "pad_invalids" + ] = "error", + **kwargs, + ) -> str: + assert n == 1, f"Expected a single response. {n} responses were requested." + responses = await self( + model_ids, + prompt, + max_tokens, + print_prompt_and_response, + n, + max_attempts_per_api_call, + num_candidates_per_completion, + parse_fn, + insufficient_valids_behaviour, + **kwargs, + ) + assert len(responses) == 1, "Expected a single response." + return responses[0].completion + + async def __call__( + self, + model_ids: Union[str, list[str]], + prompt: Union[list[dict[str, str]], str], + print_prompt_and_response: bool = False, + n: int = 1, + max_attempts_per_api_call: int = 50, + num_candidates_per_completion: int = 1, + parse_fn=None, + use_cache: bool = True, + file_sem: asyncio.Semaphore = None, + insufficient_valids_behaviour: Literal[ + "error", "continue", "pad_invalids" + ] = "error", + **kwargs, + ) -> list[LLMResponse]: + """ + Make maximally efficient API requests for the specified model(s) and prompt. + + Args: + model_ids: The model(s) to call. If multiple models are specified, the output will be sampled from the + cheapest model that has capacity. All models must be from the same class (e.g. OpenAI Base, + OpenAI Chat, or Anthropic Chat). Anthropic chat will error if multiple models are passed in. + Passing in multiple models could speed up the response time if one of the models is overloaded. + prompt: The prompt to send to the model(s). Type should match what's expected by the model(s). + max_tokens: The maximum number of tokens to request from the API (argument added to + standardize the Anthropic and OpenAI APIs, which have different names for this). + print_prompt_and_response: Whether to print the prompt and response to stdout. + n: The number of completions to request. + max_attempts_per_api_call: Passed to the underlying API call. If the API call fails (e.g. because the + API is overloaded), it will be retried this many times. If still fails, an exception will be raised. + num_candidates_per_completion: How many candidate completions to generate for each desired completion. n*num_candidates_per_completion completions will be generated, then is_valid is applied as a filter, then the remaining completions are returned up to a maximum of n. + parse_fn: post-processing on the generated response + save_path: cache path + use_cache: whether to load from the cache or overwrite it + """ + + assert ( + "max_tokens_to_sample" not in kwargs + ), "max_tokens_to_sample should be passed in as max_tokens." + + if isinstance(model_ids, str): + model_ids = [model_ids] + # # trick to double rate limit for most recent model only + + def model_id_to_class(model_id: str) -> ModelAPIProtocol: + if model_id in ["gpt-4-base", "gpt-3.5-turbo-instruct"]: + return ( + self._openai_base_arg + ) # NYU ARG is only org with access to this model + elif model_id in BASE_MODELS: + return self._openai_base + elif model_id in GPT_CHAT_MODELS or "ft:gpt-3.5-turbo" in model_id: + return self._openai_chat + elif model_id in ANTHROPIC_MODELS: + return self._anthropic_chat + raise ValueError(f"Invalid model id: {model_id}") + + model_classes = [model_id_to_class(model_id) for model_id in model_ids] + # assert model_classes == self._openai_base + # if model_classes == self._openai_base: + # assert "gpt" not in model_ids[0] + # kwargs['api_base'] = "https://5jfmglryfots6s-8000.proxy.runpod.net/v1" + + if len(set(str(type(x)) for x in model_classes)) != 1: + raise ValueError("All model ids must be of the same type.") + + max_tokens = ( + kwargs.get("max_tokens") if kwargs.get("max_tokens") is not None else 2000 + ) + model_class = model_classes[0] + if isinstance(model_class, AnthropicChatModel): + kwargs["max_tokens_to_sample"] = max_tokens + else: + kwargs["max_tokens"] = max_tokens + # Check if current prompt has already been saved in the save file + # If so, directly return previous result + responses = None + if use_cache and kwargs.get("save_path") is not None: + try: + responses = self._load_from_cache(kwargs.get("save_path")) + except: + logging.error(f"invalid cache data: {kwargs.get('save_path')}") + + # After loading cache, we do not directly return previous results, + # but continue running it through parse_fn and re-save it. + # This is because we may frequently update the parse_fn during development + if responses is None: + num_candidates = num_candidates_per_completion * n + if isinstance(model_class, AnthropicChatModel): + responses = list( + chain.from_iterable( + await asyncio.gather( + *[ + model_class( + model_ids, + prompt, + print_prompt_and_response, + max_attempts_per_api_call, + **kwargs, + ) + for _ in range(num_candidates) + ] + ) + ) + ) + else: + responses = await model_class( + model_ids, + prompt, + print_prompt_and_response, + max_attempts_per_api_call, + n=num_candidates, + **kwargs, + ) + + modified_responses = [] + for response in responses: + self.running_cost += response["response"]["cost"] + if kwargs.get("metadata") is not None: + response["metadata"] = kwargs.get("metadata") + if parse_fn is not None: + response = parse_fn(response) + + self.model_timings.setdefault(response["response"]["model_id"], []).append( + response["response"]["api_duration"] + ) + self.model_wait_times.setdefault( + response["response"]["model_id"], [] + ).append( + response["response"]["duration"] - response["response"]["api_duration"] + ) + modified_responses.append(response) + + if kwargs.get("save_path") is not None: + if file_sem is not None: + async with file_sem: + with open(kwargs.get("save_path"), "w") as f: + json.dump(modified_responses, f, indent=2) + else: + with open(kwargs.get("save_path"), "w") as f: + json.dump(modified_responses, f, indent=2) + return modified_responses[:n] + + def reset_cost(self): + self.running_cost = 0 + + +async def demo(): + model_api = ModelAPI(anthropic_num_threads=2, openai_fraction_rate_limit=0.99) + anthropic_requests = [ + model_api( + "claude-3-5-sonnet-20240620", + [ + {"role": "system", "content": "You are Claude."}, + {"role": "user", "content": "who are you!"}, + ], + max_tokens=20, + print_prompt_and_response=False, + ) + ] + oai_chat_messages = [ + [ + {"role": "system", "content": "You are gpt-3.5-turbo."}, + {"role": "user", "content": "who are you!"}, + ], + [ + { + "role": "system", + "content": "You are gpt-4", + }, + {"role": "user", "content": "who are you!"}, + ], + ] + oai_chat_models = ["gpt-3.5-turbo-16k"] + oai_chat_requests = [ + model_api( + oai_chat_models, + prompt=message, + max_tokens=16_000, + n=1, + print_prompt_and_response=False, + ) + for message in oai_chat_messages + ] + answer = await asyncio.gather(*anthropic_requests, *oai_chat_requests) + + for responses in answer: + for i in responses: + print(i.completion) + print("=" * 100) + + costs = defaultdict(int) + for responses in answer: + for response in responses: + costs[response.model_id] += response.cost + + print("-" * 80) + print("Costs:") + for model_id, cost in costs.items(): + print(f"{model_id}: ${cost}") + return answer + + +if __name__ == "__main__": + asyncio.run(demo()) diff --git a/core/llm_api/openai_llm.py b/core/llm_api/openai_llm.py new file mode 100644 index 0000000..fd5ab80 --- /dev/null +++ b/core/llm_api/openai_llm.py @@ -0,0 +1,631 @@ +# %% +import asyncio +import json +import logging +import os +import random +import time +from datetime import datetime +from itertools import cycle +from traceback import format_exc +from typing import Optional, Union + +import attrs +import openai +import requests +import tiktoken +from openai.openai_object import OpenAIObject as OpenAICompletion +from tenacity import retry, stop_after_attempt, wait_fixed +from termcolor import cprint + +from core.llm_api.base_llm import ( + PRINT_COLORS, + LLMResponse, + ModelAPIProtocol, + messages_to_single_prompt, +) + +OAIChatPrompt = list[dict[str, str]] +OAIBasePrompt = Union[str, list[str]] +LOGGER = logging.getLogger(__name__) + + +def count_tokens(text: str) -> int: + return len(tiktoken.get_encoding("cl100k_base").encode(text)) + + +def price_per_token(model_id: str) -> tuple[float, float]: + """ + Returns the (input token, output token) price for the given model id. + """ + if model_id == "gpt-4-1106-preview": + prices = 0.01, 0.03 + elif model_id == "gpt-3.5-turbo-1106": + prices = 0.001, 0.002 + elif model_id.startswith("gpt-4"): + prices = 0.03, 0.06 + elif model_id.startswith("gpt-4-32k"): + prices = 0.06, 0.12 + elif model_id.startswith("gpt-3.5-turbo-16k"): + prices = 0.003, 0.004 + elif model_id.startswith("gpt-3.5-turbo"): + prices = 0.0015, 0.002 + elif model_id == "davinci-002": + prices = 0.002, 0.002 + elif model_id == "babbage-002": + prices = 0.0004, 0.0004 + elif model_id == "text-davinci-003" or model_id == "text-davinci-002": + prices = 0.02, 0.02 + elif "ft:gpt-3.5-turbo" in model_id: + prices = 0.012, 0.016 + elif "llama" in model_id.lower() or "mixtral" in model_id.lower(): + prices = 0.0015, 0.002 + elif "o1" in model_id.lower(): + prices = 0.01, 0.03 + else: + prices = 0, 0 + # raise ValueError(f"Invalid model id: {model_id}") + + return tuple(price / 1000 for price in prices) + + +@attrs.define() +class Resource: + """ + A resource that is consumed over time and replenished at a constant rate. + """ + + refresh_rate: float = ( + attrs.field() + ) # How many units of the resource are replenished per minute + value: float = attrs.field(init=False) + total: float = 0 + throughput: float = 0 + last_update_time: float = attrs.field(init=False, factory=time.time) + start_time: float = attrs.field(init=False, factory=time.time) + + def __attrs_post_init__(self): + self.value = self.refresh_rate + + def _replenish(self): + """ + Updates the value of the resource based on the time since the last update. + """ + curr_time = time.time() + self.value = min( + self.refresh_rate, + self.value + (curr_time - self.last_update_time) * self.refresh_rate / 60, + ) + self.last_update_time = curr_time + self.throughput = self.total / (curr_time - self.start_time) * 60 + + def geq(self, amount: float) -> bool: + self._replenish() + return self.value >= amount + + def consume(self, amount: float): + """ + Consumes the given amount of the resource. + """ + assert self.geq( + amount + ), f"Resource does not have enough capacity to consume {amount} units" + self.value -= amount + self.total += amount + + +@attrs.define +class OpenAIModel(ModelAPIProtocol): + frac_rate_limit: float + organization: str + print_prompt_and_response: bool = False + model_ids: set[str] = attrs.field(init=False, default=attrs.Factory(set)) + + # rate limit + token_capacity: dict[str, Resource] = attrs.field( + init=False, default=attrs.Factory(dict) + ) + request_capacity: dict[str, Resource] = attrs.field( + init=False, default=attrs.Factory(dict) + ) + lock_add: asyncio.Lock = attrs.field( + init=False, default=attrs.Factory(asyncio.Lock) + ) + lock_consume: asyncio.Lock = attrs.field( + init=False, default=attrs.Factory(asyncio.Lock) + ) + + @staticmethod + def _assert_valid_id(model_id: str): + raise NotImplementedError + + @staticmethod + async def _get_dummy_response_header(model_id: str): + raise NotImplementedError + + @staticmethod + def _count_prompt_token_capacity(prompt, **kwargs) -> int: + raise NotImplementedError + + async def _make_api_call(self, prompt, model_id, **params) -> list[LLMResponse]: + raise NotImplementedError + + @staticmethod + def _print_prompt_and_response(prompt, responses): + raise NotImplementedError + + @staticmethod + def _create_prompt_history_file(prompt): + filename = f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]}_prompt.txt" + with open(os.path.join("prompt_history", filename), "w") as f: + json_str = json.dumps(prompt, indent=4) + json_str = json_str.replace("\\n", "\n") + f.write(json_str) + + return filename + + @staticmethod + def _add_response_to_prompt_file(prompt_file, responses): + with open(os.path.join("prompt_history", prompt_file), "a") as f: + f.write("\n\n======RESPONSE======\n\n") + json_str = json.dumps( + [response.to_dict() for response in responses], indent=4 + ) + json_str = json_str.replace("\\n", "\n") + f.write(json_str) + + async def add_model_id(self, model_id: str): + self._assert_valid_id(model_id) + if model_id in self.model_ids: + return + + # make dummy request to get token and request capacity + model_metadata = await self._get_dummy_response_header(model_id) + token_capacity = int(model_metadata["x-ratelimit-limit-tokens"]) + request_capacity = int(model_metadata["x-ratelimit-limit-requests"]) + print( + f"got capacities for model {model_id}: {token_capacity}, {request_capacity}" + ) + tokens_consumed = token_capacity - int( + model_metadata["x-ratelimit-remaining-tokens"] + ) + requests_consumed = request_capacity - int( + model_metadata["x-ratelimit-remaining-requests"] + ) + print( + f"consumed capacities for model {model_id}: {tokens_consumed}, {requests_consumed}" + ) + token_cap = token_capacity * self.frac_rate_limit + request_cap = request_capacity * self.frac_rate_limit + if model_id in BASE_MODELS: + token_cap *= ( + 10000 # openai does not track token limit so we can increase it + ) + + print(f"setting cap for model {model_id}: {token_cap}, {request_cap}") + self.model_ids.add(model_id) + token_capacity = Resource(token_cap) + request_capacity = Resource(request_cap) + token_capacity.consume(min(token_cap, tokens_consumed)) + request_capacity.consume(min(request_cap, requests_consumed)) + self.token_capacity[model_id] = token_capacity + self.request_capacity[model_id] = request_capacity + + async def __llama_call__( + self, + model_ids: list[str], + prompt, + print_prompt_and_response: bool, + max_attempts: int, + **kwargs, + ) -> list[LLMResponse]: + kwargs = { + key: value + for key, value in kwargs.items() + if key not in ("save_path", "metadata") + } + + start = time.time() + + async def attempt_api_call(): + api_base_list = [os.environ['LLAMA_API_BASE']] + + kwargs["api_base"] = random.choice(api_base_list) + for model_id in cycle(model_ids): + return await asyncio.wait_for( + self._make_api_call(prompt, model_id, start, **kwargs), + timeout=100, # cloudflare has a 100-second limit for a connection to remain open: https://docs.runpod.io/pods/configuration/expose-ports + ) + + model_ids.sort( + key=lambda model_id: price_per_token(model_id)[0] + ) # Default to cheapest model + model_id = model_ids[0] + prompt = self._process_prompt(prompt) + # prompt_file = self._create_prompt_history_file(prompt) + responses: Optional[list[LLMResponse]] = None + for i in range(max_attempts): + try: + responses = await attempt_api_call() + except Exception as e: + error_info = f"Exception Type: {type(e).__name__}, Error Details: {str(e)}, Traceback: {format_exc()}" + LOGGER.warn( + f"Encountered API error: {error_info}.\nRetrying now. (Attempt {i})" + ) + await asyncio.sleep(1.5**i) + else: + break + + if responses is None: + raise RuntimeError( + f"Failed to get a response from the API after {max_attempts} attempts." + ) + + if self.print_prompt_and_response or print_prompt_and_response: + self._print_prompt_and_response(prompt, responses) + + end = time.time() + LOGGER.debug(f"Completed call to {model_id} in {end - start}s.") + return [ + {"prompt": prompt, "response": response.to_dict()} for response in responses + ] + + async def __call__( + self, + model_ids: list[str], + prompt, + print_prompt_and_response: bool, + max_attempts: int, + **kwargs, + ) -> list[LLMResponse]: + if "gpt" not in model_ids[0]: + return await self.__llama_call__( + model_ids, prompt, print_prompt_and_response, max_attempts, **kwargs + ) + kwargs = { + key: value + for key, value in kwargs.items() + if key not in ("save_path", "metadata") + } + start = time.time() + + async def attempt_api_call(): + for model_id in cycle(model_ids): + async with self.lock_consume: + request_capacity, token_capacity = ( + self.request_capacity[model_id], + self.token_capacity[model_id], + ) + if request_capacity.geq(1) and token_capacity.geq(token_count): + request_capacity.consume(1) + token_capacity.consume(token_count) + else: + await asyncio.sleep(0.01) + continue # Skip this iteration if the condition isn't met + + # Make the API call outside the lock + return await asyncio.wait_for( + self._make_api_call(prompt, model_id, start, **kwargs), timeout=120 + ) + + model_ids.sort( + key=lambda model_id: price_per_token(model_id)[0] + ) # Default to cheapest model + async with self.lock_add: + for model_id in model_ids: + await self.add_model_id(model_id) + if "tool" in prompt[0]: + kwargs["tools"] = prompt[0]["tool"] + if "response_format" in prompt[0]: + kwargs['response_format'] = prompt[0]['response_format'] + prompt = self._process_prompt(prompt) + + token_count = self._count_prompt_token_capacity(prompt, **kwargs) + assert ( + max(self.token_capacity[model_id].refresh_rate for model_id in model_ids) + >= token_count + ), "Prompt is too long for any model to handle." + # prompt_file = self._create_prompt_history_file(prompt) + responses: Optional[list[LLMResponse]] = None + for i in range(max_attempts): + try: + responses = await attempt_api_call() + except Exception as e: + error_info = f"Exception Type: {type(e).__name__}, Error Details: {str(e)}, Traceback: {format_exc()}" + LOGGER.warn( + f"Encountered API error: {error_info}.\nRetrying now. (Attempt {i})" + ) + await asyncio.sleep(1.5**i) + else: + break + + if responses is None: + raise RuntimeError( + f"Failed to get a response from the API after {max_attempts} attempts." + ) + + if self.print_prompt_and_response or print_prompt_and_response: + self._print_prompt_and_response(prompt, responses) + + end = time.time() + LOGGER.debug(f"Completed call to {model_id} in {end - start}s.") + return [ + {"prompt": prompt, "response": response.to_dict()} for response in responses + ] + + +_GPT_4_MODELS = [ + "gpt-4o", + "gpt-4", + "gpt-4-0314", + "gpt-4-0613", + "gpt-4-0125-preview", + "gpt-4-32k", + "gpt-4-32k-0314", + "gpt-4-32k-0613", + "gpt-4-1106-preview", + "gpt-4-turbo", + "gpt-4-turbo-preview", + "gpt-4-turbo-2024-04-09", + "gpt-4o-mini", + "gpt-4o-mini-2024-07-18", + "gpt-4o-2024-11-20", + "o1-preview-2024-09-12", + "o1-mini-2024-09-12", + "deepseek/deepseek-chat", + "meta-llama/llama-3.2-3b-instruct", + "meta-llama/llama-3.2-1b-instruct", + "meta-llama/llama-3.3-70b-instruct", + "mistralai/mistral-7b-instruct", + "meta-llama/llama-3-8b-instruct", + "allenai/olmo-7b-instruct", + "01-ai/yi-large", + "meta-llama/llama-2-70b-chat", + "meta-llama/llama-3.1-8b-instruct", + "meta-llama/llama-3.1-70b-instruct", + "meta-llama/llama-3.1-405b-instruct", + "qwen/qwen-2.5-7b-instruct", + "openai/gpt-4o", + "openchat/openchat-7b", + "ai21/jamba-instruct", + "neversleep/llama-3.1-lumimaid-8b", + "mistralai/mixtral-8x7b-instruct:nitro", + "deepseek/deepseek-r1", + "deepseek/deepseek-r1-distill-llama-70b", + "minimax/minimax-01", + "microsoft/phi-4", + "qwen/qvq-72b-preview", +] +_GPT_TURBO_MODELS = [ + "gpt-3.5-turbo", + "gpt-3.5-turbo-0613", + "gpt-3.5-turbo-16k", + "gpt-3.5-turbo-16k-0613", + "gpt-3.5-turbo-1106", + "gpt-3.5-turbo-0125", +] +GPT_CHAT_MODELS = set(_GPT_4_MODELS + _GPT_TURBO_MODELS) + + +class OpenAIChatModel(OpenAIModel): + def _process_prompt(self, prompt: OAIChatPrompt) -> OAIChatPrompt: + return prompt + + def _assert_valid_id(self, model_id: str): + if "ft:" in model_id: + model_id = model_id.split(":")[1] + assert model_id in GPT_CHAT_MODELS, f"Invalid model id: {model_id}" + + @retry(stop=stop_after_attempt(8), wait=wait_fixed(2)) + async def _get_dummy_response_header(self, model_id: str): + url = "https://api.openai.com/v1/chat/completions" + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {openai.api_key}", + "OpenAI-Organization": self.organization, + } + data = { + "model": model_id, + "messages": [{"role": "user", "content": "Say 1"}], + } + response = requests.post(url, headers=headers, json=data) + if "x-ratelimit-limit-tokens" not in response.headers: + raise RuntimeError("Failed to get dummy response header") + return response.headers + + @staticmethod + def _count_prompt_token_capacity(prompt: OAIChatPrompt, **kwargs) -> int: + # The magic formula is: .25 * (total number of characters) + (number of messages) + (max_tokens, or 15 if not specified) + BUFFER = 5 # A bit of buffer for some error margin + MIN_NUM_TOKENS = 20 + + num_tokens = 0 + for message in prompt: + num_tokens += 1 + num_tokens += len(message["content"]) / 4 + + return max( + MIN_NUM_TOKENS, + int(num_tokens + BUFFER) + + kwargs.get("n", 1) * kwargs.get("max_tokens", 15), + ) + + def convert_top_logprobs(self, data): + # Initialize the new structure with only top_logprobs + top_logprobs = [] + + for item in data["content"]: + # Prepare a dictionary for top_logprobs + top_logprob_dict = {} + for top_logprob in item["top_logprobs"]: + top_logprob_dict[top_logprob["token"]] = top_logprob["logprob"] + + top_logprobs.append(top_logprob_dict) + + return top_logprobs + + async def _make_api_call( + self, prompt: OAIChatPrompt, model_id, start_time, **params + ) -> list[LLMResponse]: + LOGGER.debug(f"Making {model_id} call with {self.organization}") + + if params.get("logprobs", None): + params["top_logprobs"] = params["logprobs"] + params["logprobs"] = True + + api_start = time.time() + api_response: OpenAICompletion = await openai.ChatCompletion.acreate(messages=prompt, model=model_id, organization=self.organization, **params) # type: ignore + api_duration = time.time() - api_start + duration = time.time() - start_time + context_token_cost, completion_token_cost = price_per_token(model_id) + context_cost = api_response.usage.prompt_tokens * context_token_cost + completion_cost = api_response.usage.completion_tokens * completion_token_cost + return [ + LLMResponse( + model_id=model_id, + completion=choice.message.content + if "tools" not in params + else choice.message.tool_calls[0]["function"]["arguments"], + stop_reason=choice.finish_reason, + api_duration=api_duration, + duration=duration, + cost=context_cost + completion_cost, + logprobs=self.convert_top_logprobs(choice.logprobs) + if choice.logprobs is not None + else None, + ) + for choice in api_response.choices + ] + + @staticmethod + def _print_prompt_and_response( + prompts: OAIChatPrompt, responses: list[LLMResponse] + ): + for prompt in prompts: + role, text = prompt["role"], prompt["content"] + cprint(f"=={role.upper()}:", "white") + cprint(text, PRINT_COLORS[role]) + for i, response in enumerate(responses): + if len(responses) > 1: + cprint(f"==RESPONSE {i + 1} ({response.model_id}):", "white") + cprint(response.completion, PRINT_COLORS["assistant"], attrs=["bold"]) + print() + + +BASE_MODELS = { + "meta-llama/Llama-3.1-8B", + "meta-llama/Llama-3.1-70B", +} + + +class OpenAIBaseModel(OpenAIModel): + def _process_prompt( + self, prompt: Union[OAIBasePrompt, OAIChatPrompt] + ) -> OAIBasePrompt: + if isinstance(prompt, list) and isinstance(prompt[0], dict): + return messages_to_single_prompt(prompt) + return prompt + + def _assert_valid_id(self, model_id: str): + assert model_id in BASE_MODELS, f"Invalid model id: {model_id}" + + @retry(stop=stop_after_attempt(8), wait=wait_fixed(2)) + async def _get_dummy_response_header(self, model_id: str): + url = "https://api.openai.com/v1/completions" + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {openai.api_key}", + "OpenAI-Organization": self.organization, + } + data = {"model": model_id, "prompt": "a", "max_tokens": 1} + response = requests.post(url, headers=headers, json=data) + if "gpt" in model_id and "x-ratelimit-limit-tokens" not in response.headers: + raise RuntimeError("Failed to get dummy response header") + return response.headers + + @staticmethod + def _count_prompt_token_capacity(prompt: OAIBasePrompt, **kwargs) -> int: + max_tokens = kwargs.get("max_tokens", 15) + n = kwargs.get("n", 1) + completion_tokens = n * max_tokens + + tokenizer = tiktoken.get_encoding("cl100k_base") + if isinstance(prompt, str): + prompt_tokens = len(tokenizer.encode(prompt)) + return prompt_tokens + completion_tokens + else: + prompt_tokens = sum(len(tokenizer.encode(p)) for p in prompt) + return prompt_tokens + completion_tokens + + async def _make_api_call( + self, prompt: OAIBasePrompt, model_id, start_time, **params + ) -> list[LLMResponse]: + LOGGER.debug(f"Making {model_id} call with {self.organization}") + api_start = time.time() + api_response: OpenAICompletion = await openai.Completion.acreate(prompt=prompt, model=model_id, organization=self.organization, **params) # type: ignore + api_duration = time.time() - api_start + duration = time.time() - start_time + if "gpt" not in model_id: + return [ + LLMResponse( + model_id=model_id, + completion=choice.text, + stop_reason=choice.finish_reason, + api_duration=api_duration, + duration=duration, + cost=0, + logprobs=choice.logprobs.top_logprobs + if choice.logprobs is not None + else None, + ) + for choice in api_response.choices + ] + else: + context_token_cost, completion_token_cost = price_per_token(model_id) + context_cost = api_response.usage.prompt_tokens * context_token_cost + return [ + LLMResponse( + model_id=model_id, + completion=choice.text, + stop_reason=choice.finish_reason, + api_duration=api_duration, + duration=duration, + cost=context_cost / len(api_response.choices) + + count_tokens(choice.message.content) * completion_token_cost, + logprobs=choice.logprobs.top_logprobs + if choice.logprobs is not None + else None, + ) + for choice in api_response.choices + ] + + @staticmethod + def _print_prompt_and_response(prompt: OAIBasePrompt, responses: list[LLMResponse]): + prompt_list = prompt if isinstance(prompt, list) else [prompt] + responses_per_prompt = len(responses) // len(prompt_list) + responses_list = [ + responses[i : i + responses_per_prompt] + for i in range(0, len(responses), responses_per_prompt) + ] + for i, (prompt, response_list) in enumerate(zip(prompt_list, responses_list)): + if len(prompt_list) > 1: + cprint(f"==PROMPT {i + 1}", "white") + if len(response_list) == 1: + cprint(f"=={response_list[0].model_id}", "white") + cprint(prompt, PRINT_COLORS["user"], end="") + cprint( + response_list[0].completion, + PRINT_COLORS["assistant"], + attrs=["bold"], + ) + else: + cprint(prompt, PRINT_COLORS["user"]) + for j, response in enumerate(response_list): + cprint(f"==RESPONSE {j + 1} ({response.model_id}):", "white") + cprint( + response.completion, PRINT_COLORS["assistant"], attrs=["bold"] + ) + print() + + +# %% diff --git a/core/llm_api/usage/usage_anthropic.py b/core/llm_api/usage/usage_anthropic.py new file mode 100644 index 0000000..c44421f --- /dev/null +++ b/core/llm_api/usage/usage_anthropic.py @@ -0,0 +1,73 @@ +import concurrent.futures +import os +from typing import Optional + +import requests + +from core.utils import setup_environment + + +def can_claude_api_take_n_more_concurrents(n: int) -> bool: + def ping_claude__is_ratelimited() -> Optional[bool]: + data = { + "model": "claude-2.0", + "prompt": "\n\nHuman: Count to 50.\n\nAssistant:", + "max_tokens_to_sample": 1000, + } + headers = { + "content-type": "application/json", + "accept": "application/json", + "anthropic-version": "2023-06-01", + "x-api-key": f"{os.getenv('ANTHROPIC_API_KEY')}", + } + response = requests.post( + "https://api.anthropic.com/v1/complete", + headers=headers, + json=data, + timeout=20, + ) + + if response.status_code == 200: + return False + elif response.status_code == 429: + return True + else: + response.raise_for_status() + + # launch n threads, each of which tries to ping claude + print(f"Checking if claude can currently take {n} more concurrent requests...") + with concurrent.futures.ThreadPoolExecutor(max_workers=n) as executor: + futures = [] + for _ in range(n): + futures.append(executor.submit(ping_claude__is_ratelimited)) + results = [f.result() for f in futures] + + result = not any(results) # if any result is true, is rate limited + print( + f"Claude currently {'can' if result else 'cannot'} take {n} more concurrent requests" + ) + return result + + +def binary_search_for_max_concurrent_claude_requests() -> int: + min_max_new_concurrent_requests = 1 + max_max_new_concurrent_requests = 100 + while ( + min_max_new_concurrent_requests + 5 < max_max_new_concurrent_requests + ): # plus five because we don't need it accurate + mid_test_number = ( + min_max_new_concurrent_requests + max_max_new_concurrent_requests + ) // 2 + if can_claude_api_take_n_more_concurrents(mid_test_number): + min_max_new_concurrent_requests = mid_test_number + else: + max_max_new_concurrent_requests = mid_test_number + print( + f"\n\nFinal result: Claude can currently take roughly {min_max_new_concurrent_requests} more concurrent requests.\n" + ) + return min_max_new_concurrent_requests + + +if __name__ == "__main__": + setup_environment() + binary_search_for_max_concurrent_claude_requests() diff --git a/core/llm_api/usage/usage_openai.py b/core/llm_api/usage/usage_openai.py new file mode 100644 index 0000000..67866a5 --- /dev/null +++ b/core/llm_api/usage/usage_openai.py @@ -0,0 +1,91 @@ +import logging + +import openai +import requests + +from core.utils import setup_environment + +logger = logging.getLogger(__name__) + + +_org_ids = { + "NYU": "org-rRALD2hkdlmLWNVCKk9PG5Xq", + "FAR": "org-AFgHGbU3MeFr5M5QFwrBET31", + "ARG": "org-4L2GWAH28buzKOIhEAb3L5aq", +} + + +def extract_usage(response): + requests_left = float(response.headers["x-ratelimit-remaining-requests"]) + requests_limit = float(response.headers["x-ratelimit-limit-requests"]) + request_usage = 1 - (requests_left / requests_limit) + tokens_left = float(response.headers["x-ratelimit-remaining-tokens"]) + tokens_limit = float(response.headers["x-ratelimit-limit-tokens"]) + token_usage = 1 - (tokens_left / tokens_limit) + overall_usage = max(request_usage, token_usage) + return overall_usage + + +def get_ratelimit_usage(data, org_id, endpoint): + try: + headers = { + "Content-Type": "application/json", + "Authorization": f"Bearer {openai.api_key}", + "OpenAI-Organization": org_id, + } + response = requests.post( + endpoint, + headers=headers, + json=data, + timeout=20, + ) + + return extract_usage(response) + except Exception as e: + logger.warning(f"Error fetching ratelimit usage: {e}") + return -1 + + +def fetch_ratelimit_usage(org_id, model_name) -> float: + data = { + "model": model_name, + "messages": [{"role": "user", "content": "Say 1"}], + } + return get_ratelimit_usage( + data, org_id, "https://api.openai.com/v1/chat/completions" + ) + + +def fetch_ratelimit_usage_base(org_id, model_name) -> float: + data = {"model": model_name, "prompt": "a", "max_tokens": 1} + return get_ratelimit_usage(data, org_id, "https://api.openai.com/v1/completions") + + +def get_current_openai_model_usage() -> None: + models_to_check = [ + "gpt-3.5-turbo-instruct", + "gpt-4-1106-preview", + "gpt-4-base", + ] + org_names = ["NYU", "FAR", "ARG"] + result_str = ( + "\nModel usage: 1 is hitting rate limits, 0 is not in use. -1 is error.\n" + ) + for org in org_names: + result_str += f"\n{org}:\n" + for model_name in models_to_check: + if model_name == "gpt-4-base" or model_name == "gpt-3.5-turbo-instruct": + if org == "ARG": + usage = fetch_ratelimit_usage_base(_org_ids[org], model_name) + else: + continue + else: + usage = fetch_ratelimit_usage(_org_ids[org], model_name) + result_str += f"\t{model_name}:\t{usage:.2f}\n" + result_str += "\n" + print(result_str) + + +if __name__ == "__main__": + setup_environment() + get_current_openai_model_usage() diff --git a/core/utils.py b/core/utils.py new file mode 100644 index 0000000..726096e --- /dev/null +++ b/core/utils.py @@ -0,0 +1,239 @@ +import asyncio +import json +import logging +import os +import time +from functools import lru_cache, wraps +from pathlib import Path +from typing import Callable + +import matplotlib.pyplot as plt +import numpy as np +import openai +import pandas as pd +import replicate +import typer +import yaml +from tenacity import retry, retry_if_result, stop_after_attempt + +typer.main.get_command_name = lambda name: name + +LOGGER = logging.getLogger(__name__) +SEPARATOR = "---------------------------------------------\n\n" +SEPARATOR_CONVERSATIONAL_TURNS = "=============================================\n\n" +PROMPT_HISTORY = "prompt_history" +SECRETS_FILE_PATH = Path(__file__).parent.parent / "SECRETS" + +LOGGING_LEVELS = { + "critical": logging.CRITICAL, + "error": logging.ERROR, + "warning": logging.WARNING, + "info": logging.INFO, + "debug": logging.DEBUG, +} + + +def setup_environment( + anthropic_tag: str = "ANTHROPIC_API_KEY", + logger_level: str = "info", + openai_tag: str = "API_KEY", + mistral_tag: str = "MISTRAL_API_KEY", + replicate_tag: str = "REPLICATE_API_KEY", + organization: str = None, +): + setup_logging(logger_level) + load_secrets( + SECRETS_FILE_PATH, + anthropic_tag, + logger_level, + openai_tag, + mistral_tag, + replicate_tag, + organization, + ) + + +def setup_logging(level_str): + level = LOGGING_LEVELS.get( + level_str.lower(), logging.INFO + ) # default to INFO if level_str is not found + logging.basicConfig( + level=level, + format="%(asctime)s [%(levelname)s] (%(name)s) %(message)s", + datefmt="%Y-%m-%d %H:%M:%S", + ) + + root_logger = logging.getLogger() + root_logger.setLevel(level) + + # Disable logging from noisy libraries + logging.getLogger("openai").setLevel(logging.CRITICAL) + logging.getLogger("httpx").setLevel(logging.CRITICAL) + logging.getLogger("matplotlib").setLevel(logging.CRITICAL) + logging.getLogger("anthropic").setLevel(logging.CRITICAL) + logging.getLogger("httpcore").setLevel(logging.CRITICAL) + logging.getLogger("urllib3").setLevel(logging.CRITICAL) + LOGGER.info(f"Logging level set to {level_str}") + + +def load_secrets( + file_path=SECRETS_FILE_PATH, + anthropic_tag: str = "ANTHROPIC_API_KEY", + logger_level: str = "info", + openai_tag: str = "API_KEY", + mistral_tag: str = "MISTRAL_API_KEY", + replicate_tag: str = "REPLICATE_API_KEY", + organization: str = None, +): + secrets = {} + with open(file_path) as f: + for line in f: + key, value = line.strip().split("=", 1) + secrets[key] = value + + openai.api_key = secrets[openai_tag] + os.environ['LLAMA_API_BASE'] = secrets['LLAMA_API_BASE'] + # replicate.api_token = secrets[replicate_tag] + # os.environ["ANTHROPIC_API_KEY"] = secrets[anthropic_tag] + # os.environ["MISTRAL_API_KEY"] = secrets[mistral_tag] + # os.environ["REPLICATE_API_KEY"] = secrets[replicate_tag] + + if organization is not None: + openai.organization = secrets[organization] + if secrets.get("API_BASE") is not None: + openai.api_base = secrets['API_BASE'] + return secrets + + +def load_yaml(file_path): + with open(file_path) as f: + content = yaml.safe_load(f) + return content + + +@lru_cache(maxsize=8) +def load_yaml_cached(file_path): + with open(file_path) as f: + content = yaml.safe_load(f) + return content + + +def save_yaml(file_path, data): + with open(file_path, "w") as f: + yaml.dump(data, f) + + +def load_jsonl(file_path): + data = [] + with open(file_path, "r") as f: + for line in f: + json_obj = json.loads(line) + data.append(json_obj) + return data + + +def save_jsonl(file_path, data): + with open(file_path, "w") as f: + for line in data: + json.dump(line, f) + f.write("\n") + + +def delete_old_prompt_files( + path: str = PROMPT_HISTORY, max_age_minutes: int = 60, keep_recent: int = 50 +): + """ + Delete all files in the folder that: + - Are more than max_age_minutes old + - AND are not one of the keep_recent most recent files + """ + if not os.path.exists(path): + return + + # Get all files in the folder with their full paths and creation times + files = [ + { + "path": os.path.join(path, filename), + "ctime": os.path.getctime(os.path.join(path, filename)), + } + for filename in os.listdir(path) + if os.path.isfile(os.path.join(path, filename)) + ] + + # Sort files by creation time + files.sort(key=lambda f: f["ctime"], reverse=True) + + # Current time in seconds since epoch + now = time.time() + + deleted_count = 0 + for index, file_info in enumerate(files): + # File age in minutes + age_minutes = (now - file_info["ctime"]) / 60 + + # If file is older than x_minutes and is not one of the y_most_recent files, delete it + if age_minutes > max_age_minutes and index >= keep_recent: + os.remove(file_info["path"]) + deleted_count += 1 + + if deleted_count > 0: + print(f"Deleted {deleted_count} old prompt files") + + +def typer_async(f): + @wraps(f) + def wrapper(*args, **kwargs): + try: + loop = asyncio.get_running_loop() + except RuntimeError: # No event loop running + loop = None + + if loop is None: + return asyncio.run(f(*args, **kwargs)) + else: + return f(*args, **kwargs) # Return coroutine to be awaited + + return wrapper + + +@retry( + stop=stop_after_attempt(16), + retry=retry_if_result(lambda result: result is not True), +) +def function_with_retry(function, *args, **kwargs): + return function(*args, **kwargs) + + +@retry( + stop=stop_after_attempt(16), + retry=retry_if_result(lambda result: result is not True), +) +async def async_function_with_retry(function, *args, **kwargs): + return await function(*args, **kwargs) + + +def log_model_timings(api_handler, save_location="./model_timings.png"): + if len(api_handler.model_timings) > 0: + plt.figure(figsize=(10, 6)) + for model in api_handler.model_timings: + timings = np.array(api_handler.model_timings[model]) + wait_times = np.array(api_handler.model_wait_times[model]) + LOGGER.info( + f"{model}: response {timings.mean():.3f}, waiting {wait_times.mean():.3f} (max {wait_times.max():.3f}, min {wait_times.min():.3f})" + ) + plt.plot( + timings, label=f"{model} - Response Time", linestyle="-", linewidth=2 + ) + plt.plot( + wait_times, label=f"{model} - Waiting Time", linestyle="--", linewidth=2 + ) + plt.legend() + plt.title("Model Performance: Response and Waiting Times") + plt.xlabel("Sample Number") + plt.ylabel("Time (seconds)") + plt.savefig(save_location, dpi=300) + plt.close() + + +def softmax(x): + return np.exp(x) / np.sum(np.exp(x), axis=0) diff --git a/env.yaml b/env.yaml new file mode 100644 index 0000000..e610d53 --- /dev/null +++ b/env.yaml @@ -0,0 +1,176 @@ +name: UE +channels: + - conda-forge + - defaults +dependencies: + - _libgcc_mutex=0.1=main + - _openmp_mutex=5.1=1_gnu + - bzip2=1.0.8=h5eee18b_6 + - ca-certificates=2024.7.2=h06a4308_0 + - expat=2.6.2=h6a678d5_0 + - ld_impl_linux-64=2.38=h1181459_1 + - libffi=3.4.4=h6a678d5_1 + - libgcc-ng=11.2.0=h1234567_1 + - libgomp=11.2.0=h1234567_1 + - libstdcxx-ng=11.2.0=h1234567_1 + - libuuid=1.41.5=h5eee18b_0 + - ncurses=6.4=h6a678d5_0 + - openssl=3.0.14=h5eee18b_0 + - pip=24.2=py312h06a4308_0 + - python=3.12.4=h5148396_1 + - readline=8.2=h5eee18b_0 + - setuptools=72.1.0=py312h06a4308_0 + - shortuuid=1.0.13=pyhd8ed1ab_0 + - sqlite=3.45.3=h5eee18b_0 + - tk=8.6.14=h39e8969_0 + - wheel=0.43.0=py312h06a4308_0 + - xz=5.4.6=h5eee18b_1 + - zlib=1.2.13=h5eee18b_1 + - pip: + - adjusttext==1.2.0 + - aiohappyeyeballs==2.4.3 + - aiohttp==3.10.10 + - aiosignal==1.3.1 + - alembic==1.13.3 + - altair==5.4.1 + - annotated-types==0.7.0 + - anthropic==0.37.1 + - antlr4-python3-runtime==4.9.3 + - anyio==4.6.2.post1 + - attrs==24.2.0 + - beautifulsoup4==4.12.3 + - blobfile==3.0.0 + - bs4==0.0.2 + - cattrs==24.1.2 + - certifi==2024.8.30 + - cfgv==3.4.0 + - charset-normalizer==3.4.0 + - click==8.1.7 + - contourpy==1.3.0 + - cycler==0.12.1 + - datasets==3.0.2 + - dill==0.3.8 + - distlib==0.3.9 + - distro==1.9.0 + - docker-pycreds==0.4.0 + - eval-type-backport==0.2.0 + - fastapi==0.100.0 + - filelock==3.16.1 + - fire==0.7.0 + - fonttools==4.54.1 + - frozenlist==1.4.1 + - fsspec==2024.9.0 + - gitdb==4.0.11 + - gitpython==3.1.43 + - greenlet==3.1.1 + - h11==0.14.0 + - httpcore==1.0.6 + - httptools==0.6.4 + - httpx==0.27.2 + - huggingface-hub==0.26.1 + - hydra-core==1.3.2 + - identify==2.6.1 + - idna==3.10 + - jinja2==3.1.4 + - jiter==0.6.1 + - joblib==1.4.2 + - jsonpath-python==1.0.6 + - jsonschema==4.23.0 + - jsonschema-specifications==2024.10.1 + - kiwisolver==1.4.7 + - lxml==5.3.0 + - mako==1.3.6 + - markdown-it-py==3.0.0 + - markupsafe==3.0.2 + - matplotlib==3.9.2 + - mdurl==0.1.2 + - mistralai==1.1.0 + - mpmath==1.3.0 + - multidict==6.1.0 + - multiprocess==0.70.16 + - mypy-extensions==1.0.0 + - narwhals==1.10.0 + - networkx==3.4.2 + - nodeenv==1.9.1 + - numpy==2.1.2 + - nvidia-cublas-cu12==12.4.5.8 + - nvidia-cuda-cupti-cu12==12.4.127 + - nvidia-cuda-nvrtc-cu12==12.4.127 + - nvidia-cuda-runtime-cu12==12.4.127 + - nvidia-cudnn-cu12==9.1.0.70 + - nvidia-cufft-cu12==11.2.1.3 + - nvidia-curand-cu12==10.3.5.147 + - nvidia-cusolver-cu12==11.6.1.9 + - nvidia-cusparse-cu12==12.3.1.170 + - nvidia-nccl-cu12==2.21.5 + - nvidia-nvjitlink-cu12==12.4.127 + - nvidia-nvtx-cu12==12.4.127 + - omegaconf==2.3.0 + - openai==0.28.0 + - packaging==24.1 + - pandas==2.2.3 + - pebble==5.0.7 + - pillow==10.4.0 + - platformdirs==4.3.6 + - polars==1.10.0 + - pre-commit==4.0.1 + - propcache==0.2.0 + - protobuf==5.28.2 + - psutil==6.1.0 + - pyarrow==17.0.0 + - pycryptodomex==3.21.0 + - pydantic==2.9.2 + - pydantic-core==2.23.4 + - pygments==2.18.0 + - pyparsing==3.2.0 + - python-dateutil==2.8.2 + - python-dotenv==1.0.1 + - pytz==2024.2 + - pyyaml==6.0.2 + - referencing==0.35.1 + - regex==2024.9.11 + - replicate==1.0.2 + - requests==2.32.3 + - rich==13.9.3 + - rpds-py==0.20.0 + - safetensors==0.4.5 + - scikit-learn==1.5.2 + - scipy==1.14.1 + - seaborn==0.13.2 + - sentry-sdk==2.17.0 + - setproctitle==1.3.3 + - shellingham==1.5.4 + - six==1.16.0 + - smmap==5.0.1 + - sniffio==1.3.1 + - soupsieve==2.6 + - sqlalchemy==2.0.18 + - starlette==0.27.0 + - sympy==1.13.1 + - tabulate==0.9.0 + - tenacity==9.0.0 + - termcolor==2.5.0 + - threadpoolctl==3.5.0 + - tiktoken==0.8.0 + - together==1.3.4 + - tokenizers==0.20.1 + - torch==2.5.1 + - tqdm==4.66.5 + - transformers==4.46.3 + - triton==3.1.0 + - trueskill==0.4.5 + - typer==0.12.5 + - typing-extensions==4.12.2 + - typing-inspect==0.9.0 + - tzdata==2024.2 + - urllib3==2.2.3 + - uvicorn==0.22.0 + - uvloop==0.21.0 + - virtualenv==20.27.0 + - wandb==0.18.5 + - watchfiles==0.24.0 + - websockets==13.1 + - xxhash==3.5.0 + - yarl==1.16.0 + - zstandard==0.23.0 +prefix: /home/wenjiaxin/miniconda3/envs/UE diff --git a/figures/algorithm.png b/figures/algorithm.png new file mode 100644 index 0000000000000000000000000000000000000000..d86ca389381347ebe16cd35ba1b24a3f9b740e81 GIT binary patch literal 134583 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%0ARe(bGAC~g&=$|=;7-@hiKi|?I{58YpOda$2+ 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

A75>IssyY=(zY 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%0Dw_VIfO8v_jTzTGWi5@C|{{`0Nc<`>`igG&(_at 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 IW*qeY0iD9Y)&Kwi literal 0 HcmV?d00001 diff --git a/figures/claude_performance.png b/figures/claude_performance.png new file mode 100644 index 0000000000000000000000000000000000000000..6227095a723388727c87e3276f728d5242b1504c GIT binary patch literal 195431 zcmeFZWmuGL+ck`Va$%x`f{21hgDBl1C?X{#jndtnilEXKAT1~AM#Al=On z!@##6pk!_2;QYwWkU;j4gN=o?gN3QyB_~5WdsAzx8|?h-T&$N& z92{)y1voe?|MLs%)^^4m7hevUz?1xABc*OnK)_Ci{v2>g5_KXtKtOO;;-<1o%={qX z+Y2f?ydzZ3bf?d7ogNq*jIHr}%2DqmYv2;t^XKvK0`f~BT$CoZ24m=}2DQJz8 z$2@(x7+0VFvuQ0xiQ!sN@+`)olWoS!yE7v>Ir%C)`Ty}%&{po0_umiSv^n*E{2~EC z$CHtZ|Mg(%p=#m(dQjo0kNbZ;`2OVK&Hs8(jGAcizh3>Z!0CZQ|Mjbmmx_=6*MqZS z|Mx=w_o4j%bD}pJOPh|P7Yb8QQd%qf=ik?SubyXA6^;L<;qIS1p<=i?UT?ZS{mb;L z??0xa-~CP7KHlxU^7-$*d-sZH!E~^6V?PcIgF=&6`38s0LQ zet$ut{;;Lkc8qzD`tPefG5?h)Iop$?KigMePCky05e17sv6lL-n49d0u;|{FKKan! z=uxoHE_Jvo?6xk&rdgQb@Bls0%T-u^4f;e=q5AuW8d#?>P2XaBrK(x-n?vf*mw@y&?{T_gEo zY-U%cW=fo}dorA@a)$NacQtn1b#2goRjK0~=K0Z6xaDuB$mS@}|83>_ zlg95^X+JagxO;uF>@PHpbDg})rjehjR)u~Az8=?pf_O2-^cu^@3Oer%w%iH15Lp{c z^&rO!e`Y7*|9v-laP!lWlP8@;=Q=+3%7gUxm?+Zf8bi4vLyPi z3U(wtXXVqenO1|PNrjgEsu}YC{s*!4U+@+?D%>}RaTXAj-Y!HW=tp9f|KJPH`*FB{ zh^z8(yJhi?3w;H8xWBhADvn*dba!z-MJDpK7jC0FU;}^GOnUx}1iNtz-j%c!BtsQ;ABDZq&nT4)(SQG+SUc&k`j5?6 z)LaN2_npDlKCyb)ch`P9?++)-Mh9%*V-S97QmRp8g)7^q_){O7SpSV6Wm(yuG?n8# zxQG$-B@%POB{QduJ zS7Xd`>{4goHt(`{rj&nEd%k2Uj=v~nsKPy^)~M(6qcrpGtQ#H`DKU1^No7Y*3VM0<)3Pip zEd9gyI}|1GCycq=lv3nmMfZ2@lgbVhv_a|UfQBIL{2_hN3%h_?TN>r=c8j-Mre;xA zx=3fYT_anBY?#8d>DLyaH5m=#SVzT@jm1Gh&yCIp{QcQgdpr44aqi&-@&sILS*9jZ zTJ5B&!QEV)UD?mvw9i%xZ)Z`D_9ZG-3*&Y+8heL|taaf+#GaBIpgnrgW#o82xw^rt z{H024c!j*}NtbUYct1v4SMqy89lcQyWII-Cm>|lj?bK_S1{rVKF3T%hwp8ifXB2Iz z*ce`kk>6&6LpIH>z({xNxG&K3HH%>9=ks0_H{+{GZ+4TWhH4s-7w zM}>nMd~>gq{oN31W|%(n?DK_#&cmLCchQTyuRr@g!Kavt;QsDfdyDA4(6>VU5dN!> zav9^EF3=F#74NZyH4CjZy*`SOS^5wvB5j^kVzh%D-jBN~8>QUk*q%@A*l|D2urd6G zh2Y-SSmO{4dWFaTGX>z=bbu`sIxfGD_fNuo&2N_z3@bmyJLsT99<$bK9G@hemX>xm zLd)*1hBt1b{gmjgLXKB!{yGHMLit+r4GXGk55?SeSLzyv@bKxe8Ru9J3>DBV#!nVw zmOCo#vC_^@uUgHg=FBvBa-=#yBAPtj!CB>q zWF!i6xN0Z~ih<;8(xrQFS!}pD-Tn0TCD!uguci=&GM_SXr7^?yEyB*T9cfBtgQbp? zH;iN`IrStc;b!juK4@>37mbxI(HUEh^WNLeUu|GXF^+S+dQ9bsqTtT-hxVVm!!dq$ zWS6$aLglF}^Y2UU;9H%7>7UMG@|re3+12%Pm=Dr-`$?vd)J?WJ>B(MOJ-dkKXiPN3py>L>beHCoHu`l~aq?p)ly z)jyYA6$iDg5>>eeAOE1Mu#WOXb38bBOk1|MGnbd*8Ll6|(J7C$^T>&ymak{~NSZzK z@r@kww=w_=%I(~;Hrj^>CN}5uS|)|!B&n9Y*(=uDSUZev?_d_9`wA^Ja~*YUYshBc zSh73I`z`Wh;jlv6R32!D@#Zr`xKMlVt;M&0d2$GUfNq$1^=0Q#A%s%ozdb*dy|(i{ zYi~88YTQC_seG-W50B9voBiqPC^F#darzCX`5smxh6vo|aFxNF7i3}k@c!PW&su?b zH@mj|Pwp8w!n*)Cy(_x=Gt~3)=d#L@orhc*&~Xq>(ZDU{*@yc+S7G(TIFPMS%D#!S z?sz{$vLCAhnw<&Wr;+@xTSHc1NYw|SoXxJ{1U(o-T^BM1kVuQ@;;5#AnuV;aoe#b~O~;MlGG z;L~y(Dp?iK!06|W`4Xj>4SCcWGQ!(7-of-+|IIP!KPU~oN%#^|aUJz%XiJIrin_sN z+;3ULR_{jRGV;U$>d<&BgU>yyvW3EYD2geHP(9R3XVX8mxy@xpI9I|LVVuCMlq|#K z8gEiM8S6Y0^GGG7Njq z>Nb_AVO!?Zkf&*B6qtosRc=pm&1K|G##)bjc`_5OX~m>jWfE1`Z&em!iKPPZoX77JMhY&!Jy3?$roK3{Hx z<`8Jr?B>II`-1DOw~WuVu5~`pO*(Ms$VUKCDH)yz(OXX?{flCi!x)2Hq3yImvw9`6 zyZmjRj6o)fi;2Z!0RWbU+e}hB^QVm0g}p}68K(;?VR(p%bDK?DAFyvpDjN0@^jxiH z*k}0?toK4~X?Lw9KGXT>2_C6v%R+TC07B^o_XklG5rK}dFFWkL@7XoXC>8uQ*@f7d z^h66F71OMe$%dUOs9Q$fMR2?#+}1-v+=o|&pza=yU{_9F<$No=|*yD>j=8bcCzc#os}1Qr32?R z-{-DD(3NkK>)e^lxws2g9etCLfPI|{^G1b^m(05J;cukIa ztYWlS+%fjz_wzTI+UGxiJ8AlpyITfYzelqxV5U3^(P7J?!G^w~TCbs<*-zOeqSIP0wP07B+Ju`Mf|#6z+9_~FraWN)p;EzTWU|Z zvj*LzBt~!KeG6+531n1F-=4KZcYzrbT(vvFk#;YFU1e>k&Ykr4l?WX-Q}T|mB{v?- z_B$_k-OFDEX;WziJwNfhdz80wKAToQ2RqUZXrjOp2t zr>B|&;?3xY-zWCmh!gjKGBa^}q23TkpBX6mEyNcS-=~n$UYo8yN+Sc=?g5xpVXhNY(7^#XBoRx6`wA7_@v~cbyR9`!RAeI?mvopw^y1>OApk;HU-J3{jh5!N4M87g)uKI^KDy&+ zlx18rVAt3I%_e4nWb{mR!NhA8BG;(M6Jd;D=XjwQ4_cJ_TUPWW=#bQsKM|YDEYcBJ zEFM#2l5qLirD+`-u4Pw0FCv%F8Ylk5!W-K^oNM!v=m4|fkKT3KFJ{o%8*8Jq5`?$E zZ`rioJc{5GpD?CJKaDeR%qC0WlR~<_v2P0LnFBsyZj~VHw5qJ3St;{0~x}s%U5a%0~sp;{NiWsH}WFC1MMSU+Q?^n|6*OPMmFO?@n=m?ZK$65_`YFUM6j&Kh~4172WqT;hPmI6 z(4Yn}zsl@yuF6USUUTS!`o*HkwOd1>OIk3EDU$SpWY#QQYZeSF)gmCEoGQ`r#YlWn z;P=r?)wRJ7MqXRLpC@u)QF}$BE_u*>W<-wFd7TX&~Pbtf}0DQ6eOf>g$cek*2mX*sx^q$X4Y;{A$8)W?EPHQ3%K}78T<)xlG%xbyzfgYn3 z767i(k7!y~IGPPt;$-%z>xHjMywFWM=&0vCs2?hv`}oJREZ4P3(}jZW=3c8m14Gom zG&}*p+d=-Rm^WmsVP6qlc2Z#a{dsban)YJg4f+$aZ+v~8$d|1pFU1}Pp-Ybg28bQ& zHdc?JvMPS0+Nw>wvM2G%Scr{^;PI*%f?vsJB$px9nWTpqgNf#P0eG}c|N3yRFy!Xb zBZk!iNkq!j*A1jJ96MFo0i(nbtEKnssr)W{|&-q>;vy=*6w8rtNPMpQI0uE3v6ybItaVhFl)ePfO zz%|`yktrH<(lleGmEw%ZuH0evg!^x}fL8{^=#}gA|5XM|uA|EC0Mp;N#Zqscv4(ZU zMjPlHkw)>Jm<}MY(YVFx!Vuu(1vG`vT=8U-c^eGTab&B$Kwl*R(R3BU!udvwXn-fG z(DSB)In98s+3<{`n=VX476CpZ9*M=yh{KT=**0K~*rH;Cp&73-AdyGA%<1P|a7sxi zq^X_FKl<0E5fn#j>3Yd>`F4i!zyaHA| zwt|=BE2;NVpD$+(&*=mS;1pT!+QQ^~Vqa_N1zpIGuT;b{0RQ_;J_NS`0*)ouvZ>|* z1eDSoD~NO~gSk-q71OD)c&{B()x&%6{)}*et>SVcf^DoZ0QFR=3ctbJjTWk1g` z19iK4`aJVqxmbZDG;(5_fMk1JaVKYZoVbP`T98o>x%X4VD)xuon}EOXA||sLQ!Emi z);79?cw>t4P?DYXnKwL86X%81A3h;$gAp(~*pO2;ifhJutQT0~*9&Jk!)xA=_YZg)maY0krYd2zM_WL_Jq>XP=!)m2zB0==7oqM2wVK51JsS`;G(>hNakEljtHWcf$l$S7rUWT zTkQG|2aeqey1`MguE^swxr!(^V42e%>VonS9!$t7QfEuw%&U(L%;9f7q_-RFb^D9L zJWG2s_lHvu=&G5u`+Dj?^{y4x;dTM1WLW%>kWvr-Ezxgfed{DvdV&Iy5-+X3ymhiZ z;B6w`quYtomjVb*3C@4cn7$sbrb^2EJ@=&0@|TPsrnjqkSCm&_*5LUmFqgp}LFV`E zzOrqn%7Y2Ebr>{Lavvr#rZf66p6mtm(GKKQ44I__r-r5EfjUGCIY8i(A7AmOZFDJh z;16I95nBC`!D!`1BJR*}|4tHWb}Y~88Hfe=CHL$_r;Pt`w60d0>l@zM*H;oHY7>4@4RfvpNn)6-W>M!E``WwM{JFfr)2}; z#m?*WOKvqHw?uUD#}qXFmaM9jB4Cj}q7&dh^v}-bl5X2b+&Q|{!Lu(OCYYV}elET#L+e6Y z7Fp?2*69mnXh#C8`A_O35(oNCH^3{B+#wdJa}Y2Pyx_E+s~WUIf>W+&+& z$-XS^W|W^zWAo)euW&)_rM(z5^Qv-X|;^+?>;(R17% zKG*Zry|8}{1V6(uK^BJ#LD=k)#opTDXpSC+c_46RboX~2IMMJ$Oe@J;UL3wnv}awH zLqr|4_On=?dd!iDt#WHreOWE*bT!}RAN6`(Ncs#OH-NaC_{2qV%bG3s2W@Zr3u|DB zGWa+jn8=$9mAk5bA-l}AVlA@b`7nNo%zu>#?5O_;V&+t@P-gQF54(c?ss74@ zUkjuP?=5xGPm-dcf{VpIegl^aqY)W{M(>gG`&<#(t!D@xC%a}*bRRGIDwa%Ed*`=1 zsb!1ByIWc<63dc@?|6VFF#{q5o>alun;G9u5DsK7H6cGub|Bj?tJ{leXBn!gakqxw z1!zs`(|0^2-_HYIy4HLaE3wWZ&Vq(Wp9JB{;x4qT3|ZD6T1AHohG3G_ZhIJAd~zQ` z*=sY;MV=jwl9iRo$C=mKuonR*0p zmgNwJ=snV_R-a)=&pZ)vu+ZPQ@HSo`D$TKuW`Xs@5o(LENSzT?5CPtrDP={SZ=}4N%lqzBF7!}z>#Q7q~YV*b34NNJ!9FH?e zfs&3!{Vry~uh|nHNR)@-xBj>+6gUx>R%ONXrxbP~V7t_zhaE0`6^*CbvUCNT7O-zJUMK}<6Y6w(YaHsYB5n$v#q540UsN`d6d z^?9j!64Tu|AR#UAqy{7942_r88;^kVaVU_ zwlNzH$LuD$Tu^8)s~;nh4iiJ#tR+O9L=9F%6fqM8_z%Q6Z;dRHh)geJ$^| zz{Uz9gbuKjSU`P9yAygbtqnR?1nU-4L@-Yuqc-&4-ilXx;Cyk!R7%*ii|(z2M(W57 zd~yM@aIM*Xx%#N_@0Lc^Jei6`e*}SDZ?(&b;@0QAnwkPe;%9DUBo_e;HGb3%Ec>0< zaO%z6QLp<0-BCITBayYI2hQH?a>PY<-uCtFzIr8vlC0GDT!KW$;Qc$)VTe-oNzf?R z06_NhcYQDtc@w>j9g-7Vcxwef5czYIb%98+cN&atfpYLpn$73Y zC{Eq7pfjL!0KrQ4C42voM1VXgdV!Xg;z74gHv2~i1hx8JFKDFXY!arojhwuLz9gVw z?cs~tz9-4XMCwWITzKVYFn%4hZq{;RqvKROtjAtA8)p`DH57JwJZbPlNTqirEyrJf z6)_Nbp7rz*to3dn_0DPd)o_0wi39FA+(65s2~^s6hi3jMQpfTpikCwOacD7z5vk1q zdtV=31qG$W;T&F|5!1i67QcnhE-^AU$Ux~G`gM?exKTZ)*AyxFIe&I4O%9n%5Pv_U zSJtNnGjy9%zhwk)pII8u7dsg8jiX%BU40KutfDClL`eaaGSG(UkDYHI<06%8AqgS9 zd^f2O<^yup@XSmYbokh+c31iPY2Y0tW*jAuuI4@we7_)m4izccSOIQhtg5D^%9Np^ z+x|{>Rh#%RHs!a5+BVgMGf$3Qlmfri*ztbkks*8*1KH@P0^df5YnY`eGb7mB4q#e)eWK8MSfs3Qzr}m+%?&R4+9xn%mYd84 zosJ+X1H@b@|Y5Eaej}^)0LO4_5%=|X#G|E`$lBVN7Ub%kD)Qi(YY)acPj`Ejl z#Uxn6f&Dad8_j_`{>zbC0uIwJ{V?Ava&`nZ2khH{porw1PKIR9YsvkRr-df=*BQ<~ zUS4+X*AI#Vl3Iy73TE8Z!aDwD06MxhB6|Rdo8BP9LT*S4(kkn}_BST9dY#wrfU>4l z_{Z(@_FuOT0c99a86wfr^l{-CKgeb|;x1iC5Ue>}qgn9J;>vzG|-%qGWwZK7O%(FvJc^aa)gNIjzRUcnl`X%I6%ZFA3Dhg;0K4@ zZ1K4@YZpuL=%4Mcw`q&VAb?oz=Io&f7;*CRrB=6Tw~|S#4<|S;4fPJ^DI;m}MzOKR zh&1O@ciN7b2wkuG-b$bgQjp=y?4`BPr>-1}j@0|=J+hS#Kk|i;-WXu!0_8#*F1{BR zd)}`|@}ZKi9F5y_LV=Faz%e9)tu`akkd%$!YV8NUqJ9`ymGns-xoy8?7D`dDk>6Y# z{DcwF^|kAq-1uiPEtVy_{JP_OPtJ6s<%=XR#uOQNUUmD{w>Mwapx)*!`?TBd1!$AR*Mw4i4_%_J2DQG@6 z#sXy-gBqnWG0dZ~-rJ43c7?-0U8gA{b_@AtUbA^4RRM_{L+@ir=x&o*dXn@hGfJgi zPVLH>2c52d@x!=X+g*kvFtddj4Cd@llvUXSk=AYMYI|w|JT*UhFIF?%x#()ZoQ$9> zR6EtQoK$6-7BKIu6}A8spQh27Z0)B*voCtd4h$h|Shr7(9$A^<2@2cIe*gCG|4b*H zsDMDbRLP%^r$b6Qe(L;oIBF;c{! zay8jkAVR|$3xvLE%EWyQ;44*TTN7^G4cBJ0nS_FtxsjU;WfV~L(8^@TJc`Y0x_<9Nu{>TmzINlU?yjKv zDXY}%S41!POVc%tN#nUmh21ety%?mj_?acKzGU%((4Jt^z{0dAovQ<6<4}nXtMwB? z@*llkKno;;ODA8h@uLInj}OYU?;Qb7H}~$rFDJjEyVGT+o?X5wja(+p=qW|QZXG^6 zu?qZon4@P6o{{11Qlm4*!jrr`a)MHMX#+2rYpzZHYzH*?D!m>lEk(F@`XTjuJe{Lx zbOXm%=CoHE&_UAo@5^2;>OFW5=B!2#nnOVkDhIO0du0ar*@?rL>Q*?Mk3P3ti0 z_X3(~t#IlXF;g;347|qu?n@QjBSZ1SeJ}vFgG(enuL7cR=B<)k{5EWslG}RodM6c5Bb>@-gMz1{LcFGsFeUbyn!kqy_ zq&#C^G@U?3p~@VvA4=kT!LwjTMd+A>CzBH`VT^D z=kGVC8d!s)nXuG_`l871urwrW+z*BV%??L!ow2e(x}|A>hV$G33Tg_(VDo1jKo1#Y znCr@p{FSX+RlWeeaoJAB+B^jPmd>5uEMo`ynDv5QO01K#d3J@9q&V&B0t3q2S)gj4 z_R8y7{4j=MC7pD!jPj`#);{g2J27Fu@|x#ID3Z$FMYSJ0s)b2Rsz59@+H|nr-oq~C z={G`8iwK@TqUY1zqGOi&Bn|X`e4Qp4|EU8!Fzm3@+X*^ME97iU5<5kKsCmDe8<2?u zQnle~c-#-#^VghxbuUSINj5<&MXw4nglpcuB1~0-3Gcf4b%*As;4sVt?Z^Zq3-DPE z&tYGuYDc{r7u1H*&Pc#FsgRiLM>o&+G2qgh-Pz9HRG3%>sbIo_3UVasx}h|(iTuKB z+dWgSDMi)|r1`ge_FNvRMjp~eano7mJ@%4tDgm%DWR_9l7OcJRA;B2s7x6Pj0JGe^ zq)UT{6scNa^+}Sh$R_KPAH@Z`Uz#}GFU=0Kcv|Om5nzPN7m`j6s{sj+w;YN5v(H!y z8>J7ol4>jhbW+JQb(ew|W>Tt1Sz>?d^7h@Fp-y;0Gt0LUn*Uib0t zn>I+(2;}uddjrbyfdSyusllHMZ^UQd-z+r+^q5OdF*L^Kiw<3{5} zjFtsSRG55@Pi-%NKc3kr31WH<}5eJ_E-4c!luV{nJTb!p{4PcO~Z! z>CJxt+F8jBihO#hNjg&{FIaADw3R9-`$~ooEAFQX8BDJJuDY=(f+RbW0kh+b+`l;y0N|;#4gB4kpqrr)6R7Et|NzwOsqh$}fp`qj8B+ z&qhAzjdC65d`4cg^wT3Jq=D>RlEHZ$K7MDaIi{ep2*s=SAIEotixR$`K+OHxe0&?ul>wD)>q-W zUfT}HnsGpsYXA^VFyoc4)J9iXlgW-GaSqXy*o5!;lrI!IdFn`1FRIUx`9*} z)bmx!kOvMiT4}IGv!SDEu?YaxMPT{Mp}fa$i1^%rHk>PH+7jeV_B4Po0vr=tsfLYh zqUHr>un%*{h&NL$Un**MUhSEL!C0zu8roV*|HXb?-!cVitUMTD+W=U`h5&1s$jWh$ z&>99MWJXIy^XM@y95@>kOUU|oS;!diOCbs;|L(!PZ}0%=%M`|udoXR^ODa1^AjXD@ zx-}Nm8%25)*E?-O{4rlb!vwBXFsPqpM{-6Cr5EKGz9AB+gE1n}FoT{m(WYDSK@W9DmQ+gGm zwnFa6*M`i4NK4{+_~mh=hTN?_c{4iQ)CVO8Z&Kc}kx#G*RkY;w+*xPhYk_IwUHbh5 zuNv2*osP!?9b>(AW?&T6VKzHGfT%O%Z9%Sud<2cqouy z`=13D-@;pP0qT6({xJOr(5XC1OEd=NG7Q~$wZc2>@rH0;;&%^JuUx$*t@ax&LQ1RM zgaoZU06woZP9}{=L~H{Q<_(f&eCncWE8}GlDWVD6UJY%}?J`r|68pIW3^0acVdrZB zR1}deyDL1ZMIR4Pzt94gV5O?<*ooXJDIia<9_ur0PnNwOPPOU21T%L&D1je=Xt)}7 ztJ3pE7B8_j3*O<*W$>TS34rsZSLf6gxzAV(RqZ1j+LdEd{5*TL z4;*SkxELIoT5l_P2tV8oPTvwR%WEM8OKjg9UZb8_z>5NqeLa=eZt>fNuZ(!Rx^YQ+12@USTX@* z5)SWcJv)B>bzzTQ;BAsZg_9FRRgCL8q{L1{eudA0M7hCYm;EdasFO6#9;ioaM^e_8 zhO6N0wpac7Cyx=CF^-Ce2MJQ>df1`?xb5?!Z*AZY3M1TR1rJf0WFYyCf&riy1dt87 zAg-#_D;L_}1CRZ8Je{{I6|$k%zNP0X;kl5=-17ZgXL~h75-N%84x9u&XK@+w@gg@W2Ed*#3@_`Lri`Td@@h*zj5#{O$Is;c z_4{x=g03oeH$XiOm^SGuE;EwTw>CXj)T#E-Kn|T0!fGP8q;}p%o zYw7p(dnJ(TuQS~tlh})8Z=2|Hmq5{7D}==crc9_%X$dwhJDbR5n-A8Sk6`(@e1ejT z@dUL1*C4F_m?F4e;kJ?9j+by*kEfCnFGK{>Upb8q^Ag2hu7#`(?5qF}J|TyCou zUXo~S{cD9!efY>&1X?^>Zz*AcatdSN4@2acCcYv48yYuby&W9lYuI98u*L$oifdTt zx2}>!gwlhmNPbxPG8Y(me5ehk&@foAdg9|f<$snT8LDuy+?+{3_gj(yrG{>@A;?>p zr*_uUI_)OGg%M*(VzvqkMcpOV;}nl>z*aG^72x4ZzWe6tgau@`cZJUr%1?w8TGwJd zR_oQJejpz%(EJh3d!ZsbjKW}}Eg(KJ193R?KH6jHK|wu57ugUfd9Sm)VP~(mqm}LR zmxHeTRoj!%5R1Kr5o}u`Lr~=r!JS5l=2pU~Ub9b`MrOU+&772D+mg3P^`{Z(lvTMi zYvB<>5HC*qWfAyIwtDV6p8sbmi}~f7wqLczf}>x$a8X=0Ib|1F?u%>?yV!!wpWAUk zn^C!1K%pA=(}y#jgLAOoJ?{#W(%hi+tTkHlKsJe?OA*W8&&qSXFmGVox+vn|lI}}X z?h5M_ER+Mtuiq^|kSH?uXwv5@P>bM&1RYDs4ZK6(fVph!JYaig=-MEdayYmR(L4tj z!v#3u=V(hX@Os=tzdZ0@imSMacjUl!1uU)w8_LYUtU3$3z|9zNwtP023&C3X9V{K) z8$-|pGb_jdYc#(#7IHvgYVW>ULTfO1y;_#1kjnzkbq)7}gH3U5 zveJ&K3re;FTFZ-_f)KN|!`@A}R1OCEPos}KPt*{zWW3z0G|~|GuK=0=Jk&!{Hb~t6CFaxiruuT&G;& zIvcy<`!cM7K;qEUl`@TW?5d~w!Ee~`)<<%ys#7_e3E}A1Y}lN-i+FV0j6riJ;u}>P z1HNv1tPKI{exvga@$*!~fq+)!v0Qz=vJS0FmJL8t&tt@yvm*L_@&xaBpp-Mi^QwrY5YZbyWWa~v!`d;}mM zsv>Q12T?0Su6p}I0BVffs3Ge_05~c$hl$jg97m9_e4&6kevVd`aTkgh%NCvrHCZ1Z z{Ijv0`Vy!G_vCnGO&T<(2#PiS5X{4TPdC+54f*ty=L~;B9FvtKqiqN!dRPlE@5N{n17Nr}gn@+0?rMwz ztt@vrPHU7KD8w6%voriJO_>z*U2&<&_EGS72&YlXgyf!Czj)jC_GCbB_V1o!-{Zdbdwiakx<{UgOH;*ey#@)Uqc(kUKLy?w>1_PnanCOh|ZXT zTU0%piB95!!X;&XE%0GV>Q1753azZNe9Z#9kB%CXAcln(;eu{7r?#)A#zNw8Q;pfp z3|H;b9E^s|A0efiVzTO$D;ezi>XkSHP_Na+q;KVbVPMh{QD)M)Lulod`|796LX9EM zE!bjaoY_GpJ=U$O@xb9F!$c_z7CNS|cDhiZ*IDJO4drV{Hj8y=ySt&$g7lc83eu@_ z6k0YnfmA0YL&r7*z#EuS@#FYm;eVVP!U5wJSb(hoI;UNMIWUlvR|XU%m(U|G7n=C} z=}Cdq)W*XECbI~-vcA6&4_?!xaomg6IwZ!rPW6JBw;f=j&T8edJ1X2m7^sLHZtBzm z4pPThKZ`YEQsUg0aiDpny+ibp@(KJ3CEyrx$4InzOaA>O$B)ZjU(f0RSy8VkwhtGR z4B#UL82!(%VQiqU#SUtjnNy2l6w-uZir`Zez=rR{>_$U{by1DTnSXrfq!j4f4ZTPU zN}1l2kf#4yf!6(;@eL^@0eH6wa<<-&=v79?S(p$~l5aIA06%q;)TTk9D8~JF z!%yKR@;VP;80DD5(Ex`wBPBI2)&N;zZ%Fv01d6~R^&YvL7#NM!bAZ>cIXh*K(3M~d zMB+O%vb@HO0Zx(!GjP3N3xHNoaj)rvXa06`A$$@<614kllkT^+xK^0nm01DqIXY>p zpFn0+WZg@wPq5 zer$LLsEmM%GQ1Ulfq2WDReu2PiLW@Cgn_?P5RnZQ+eAhjy8&!6{RnwfA_RMxX!kDd z9MZ6yhCMgY=L96OW~VheXQ_9ul<=(jy{d6FgZ3O)DuNF9vDuY>$$|Gi$WvOrfar4k zQb7eO!3L5FKxJ;|kSCGI8|Z>%%)ZbYaEN+>1*e4VPY4&)w}uA@mfi1AJ1U#O#5Ux5 z5*9mA*$gwlAzOJV94oxHDZFHMw`=$`;)P6M7m{AL1*qq6ltM8J$Tf!ewENjiW93!n zejfoOuOk2!AVqFey4%oB=+Xq*Ay|NE-8DPH9Wx(^P)+2?wkQZ{`@%ct>Yq_rz2iNc z)B|eMTf#0bBa%4S;>#PiKm{Oovs|~zYlD~|od@l3qb1UNm2o|rNU!5v|G+LMywOqq z`y_Jtl8>Kxa&ux8expS>Rds%CTSB1&LCApLKus{2O*`NEXOW4NT#?nbvJiH;$YPeD zEJ+=uc2FP}QzEAET)(fOAIwc`6^g8l;`PAcDJ(e_{u|f){d5K?Y6sj9ghzUhqCN%; z3dx|~b6|@)Ml~+Qmxi=#e}8vj>cx#R8oafOi~KJK!E6GHVKTr0H}_tYRB&G?cz_nY zD*^=32R;Wfte~8$3uCj(|DT6rB;9meHV<*8fA8=$7)qbGtEYZgzaPTdm z`LJS%q+DBugq?gd)I4thY?7D2iKHQ^>1?43yFjk+G)?QPV;*y$Xquk+J!%^&`c-%e zW=aR}mPO2qc=}?XjL^A;29uDhu^u{d{D=F{g{d@@g#@yHKh*0nu^`Mu#N<~2FB_>> z8)|=#nEddVR@@yXi%)Kt*LFRS3TxyFp`c~5P{u@#A}d*n_wE>tx(WK2Ca>>6%EaozSgwUZQl@`h^cHx{&6o8M>l$*@{t8zhhGrl82*-N=F3NLG%afpMh|*``6q ziU%G(P?;5+8MiPZS%7GIoz89kgDO~*4@kk2mizs~d*SGF24J7d4t-WqN2^Q>AE!2C zfGHCA#f3n(D4q8b=af)TJ?uI`C69*RNP*_>oUFAY9<=3Gbd-EO$K97^nHQraQ?-3H zEI(HtnSsr{^zPMW(fwW4b^3^&qx$o+04QYGM85`(UZ8EJr_A&CtqC~YMt!FhCZu^j z0VpS=F`G~fs2^KM!Ck{Ixh(HWkZITMt8TMRQ|_ zrz@gKfDLdmlSV8L;0lH$G#oF0>e;KN6lAlZcAItc%b`plmS0qUHWp%~KB%dnBGoEH& zzcR{L8uT?5*cA>If-KpaQbM+6kU%rAD~-FwX--;syP67GCenBz40zFpH<2HI@M3h4 z@6LXA)m|9PTNN7FbOC$uaK)?&SDH5#L16Kz$^!-ABlOqet~rx*w4Cbz@633q5x`(P znfM(SqXhGunc?{2kie0bNMS`g*{)Ne+r)mt6L#N8?tE0u)R>56C=4Y!TMTBn+|SV- zv>#KTQupqHBL0KspunhxJvi=V!t-+Q86o=$D{p?6nC*gs?N-n|m#m?})@DDebS(deH%2;(EO3 zju$HswSrP7q=c0jh%bglmzTp3-&037{{fk`IG5pP8TL}r^AAY6kkL5_m}nkN)m`U= zoYF$QNX}+bfuk>SyaAr2IgU8(E_{ez(E*R+ytCyBuP%_yO8RH?z1U$Li@m?N5K_dr zU)^_$^vtFq-CJ9LlubSkXsKIc$(rOl=~O652w7b|6xveNsv?*-laM={Ow;#J?aGJN zy>kcd;Xl3t@Xs;!8;gdwKf7F*LhfSGd}lefc6GetDmu^~ZN5tFgchKjO2r zj}4*3%HzF-kmwO)*Egnr(Xk}HD14VFHVR9VKh$5GuZaPyXO6T7>2oClR?#b{amthL&YK;9xTJgo=kZbu64$xVE9zS4d9tOWqR9-qL04%&I>Ie4vNNm*H$${1O{l0O@^=H z$P1@I7Q41z0r#+%wA%u8?ysS=Ll}ltM57aVHi9>eKZF}Q;<`t z6y(6%&q2~JY=U8&w10N#zyE?2&{gWc_mG?ud}2jp z%56U?k?3}0P&dGx7zn+ewRy$ar^nO> z9=sFz!V)3NJD9KY=!9*M8?XrNKo*B(ipKM???Fn|C!dR_o4zuX*CVRO&snp=yK^z2 zD<@t;OwM=B1Ii*{=+6zu+VjRAVOmKad3RRdY<><|NO>grG=dy$cS9?^VdboM3-g06 z)ZivfNeIri>Y7jY?3sgV3&@k6D4hxY&>L|*i%QsI%4G_P z{ngSlJPF3a{a8VX5oKQ~#0MYC_utIQ>YsoGjcyBSTNy?_nCY&U?VqcA=Yee476JBw ze9e+3S{I(`3;EjzZAG6rckR-WogNnLPP9Xzii&#Ob7a)ZQ|5BW1_?R$g2tuVd?LbN zOS;0yo2IF6@l&+1%~_$;Q~vT@A+aU{`mEnuv`V4Zw*=o`^(|1>oL$Jw`g@VQ6HFklzx zH1ea3oy{%S7vbQuJ}fo}DeI_n2PT)ikx0fX*&m5$f(hc_UeFsK@Yt2rPY)$J1)tM% zNRd<0Tq;9l&W6gz&@)@PLVs)YBHU)KI$MN8iuLlDin$1vRjJD5+q6XHjAooY}`B~ zhaI60G<{|ZF|<9EsYP4PAf5|DVgLWb-djag*>?S-7$}0MC?JAZC?X(8OP65KB@H6o z(j6jLgouiCcP(jYMG5I%lz^fxU=bp*X#Vp8ecx|KDjEL?WIM@>_!BE*1F;Jz@{oOM4b?27EY1H4RbNx_NZCmU%~Vo;zfy`S z-XIj}I|ZK4SxCc{;dO`Q83I^#8(>A#WmR_~qC0f7^H50BQB0Q+YJNO-birT^R(rYh zO55rLV!M%;W2!30d1f#b&Q3lubLIezEkrH#fxk6ZIfad4p^hNvyUZ{J$C{9=pH{)Dw#E zr~!U4uTKM{*5ech&g@|cUJ}ZJd7jHE&=*M~({nZ_0k@@vj4A{gaCm+tw zf@Jntst+j?ea59jG8|8Sa3*nj2k=`OfQ)?fKnEZPB3rXSa-;Cx^9ll!7ja%{W=LZJ zc(EHA`2tH?c0|>upu={f6>@!`BuR=OBi4vyta-{A_Q!feQ!+)sXJoPt@n`=$MuX_d{9@AQ9yb>aCr(GdP|MONI8q z+%EcQ8A+~?9NTzCCFmO-pPkm?DDT-uN;3? zpHwX;BMK!v`>y0W58l6uk%w26tf==~o%gq;4gb{|Z7S7=2(4wKA3Al%oG7F|Dz#8b zafp5D+sPx_OXS22&0RWl*(_CXsZ2sSYuS7E4wV_etrbSNFqmI$Z})Zfqx;Pq=|sU( z3sVO-B*%s2S|arSZM;f%t=@utG9zrncj=L9m z5Rps)^Am+k3@k06{;bIuF_?2T+uqc}wBjPjhw$YS`-RVpemA1RcC@vXG&~ln;MA>A zlB5#n1BBKV4VVS_3H{<9x@~KA65Jq@PUVW!^(KT=&M;88E<=%gYo%*99Aw8{0vN1D zf?0ELO($Ggk*EMTLOr20jzls$UT4+u6&)*%dK~HOGwUsw6>me-D2qo8x}6pQuuB7` zON8tXa#-9cXm14sLQ_o9|Cb}a@2c9J#q)X&Rt>1TtP1aid@o06!AzPhNRcX(c)6j> zL>BZt%md}1fr{MJ1+00|YUoM;xUvLHht5Aa9R}DN;MF^=mTLB|H;{(C^Q#66W0E5f zRjDYx2h9_j9QSp(LD#~f6LjAfKw1qmg?%T#$;{taCK-+#sKqli1zisHfw7S5@XWLH zevpj(;ZHX^NR)6LK?&13h*gjWk(n%Yk+Qzh=?Y{{LKp=Kcha=0=m04Kl#?|GqKi5M z%@bnmO&^{_I+A6*VnD}6nqPbfB^eJ=OhCFVqeS8E7Eo_Y0;ZyX2H(8P7buJJh)1Cp z^P*ns1iUTlXh1&@0)<2mkp^#RdZ4harlyvZB?ZB@Rp93_CZAcI85Q&kM^lE?P~d}D zrr+$+Pq9c85^x*fT9!$;`I{voqO`yqDfWWixj*slf^_3YV6R@%W|8!+K(`X92M%G@ zF~;R@$VIvCrrY4B^YDY+G{V^mLc^4wEN?99X;$VT7XcE3?nD_b7p@_NIIn#D`~nD_ zes8&1gu9v>2&GElh`dN`px!zzh-bo!bY`1Xp3oRqPu0eTwJ1f_#$lwK#4uW7)T z)(w+OxV5NhjGgrInO+y4z;UtDf#X$YfGk1cD;C;8F1gd{7ap)lRDj8wOXa*h1>32Q zJaU(cOb3Bxf#M-}q+xywM5RqzkL~7aGzhcfXKYwS^N11o92T$)y)xe<5^K7(4ZR*w zM^}fhc~tM~KXyBk3~o2*BHF5buWzcPCetM9pgD9pFrniZv^_`7;lR&!TD z?;^-aWDyKU{r$Koov63x-5a#}PhZq#0*K3r$au|%11*#+%A0BOu~EbV!oYKAQXtYZ zmWsN88)&7RG1ihN&``6ZO-%ju3c{01alMh9d9?(e* zA}JY)W}eNLN-*_TK;thu{04YFfPNqj{1|0LP0ZP1;Func?ear^y#YSC1@59m!sf4 zzAjhU=ZeW{MH)}INM8nAmLogyOk%Zv_P%Vy@`zNUg>3gM87r72wxhqF5f3_btrZyG z0&C{IpVNX(yXzmBLw^ml3$uje{fa11b)X>2CD61k$9k@t@z+%!!{89BiC|^t8rJ1k zuEMA@UrwfpPM=}mfMnBkpY>an;r-j%#TIHWw;H@+p(|=opHq~mS>$g^oije|G0t=3Z}jYyrW5x^109n3N53ywfr)g$GVsG~Z}yVl{=46~ zmR1Doc~AH>)07%UKdUjfI@(=d5OLx6<@%o_KLR`Az_FXn>J_~3jwCGVC7Rihfh{vJ zCIUd2)oZtSgkso|x#K`)*h(k>Z!JGro__fTGvz(9l_zx^>fkNowNu z{>xIKG8=qXa^VipeE%h=5-vH-r-u{;D6UhTSE1nMu5$e#2FXMp%p{e_M-6v=4(&k~ zD%8xFEtb1L{>2dq$pO7RL}R79F{*ore9NEt#zi#FLHCOQ$N9rUZBS<%q4>S6Qs{UM zMh4r*iNfCitFcl{6yABrx?LRIR~mzoO?Gc3_zRQgmgvrlDo6HH1Q(+2U|n(u;WP-R zMp~BVi{!Kw5Y?9k1<>WOHEJ+W=|vH8@JsP(lzRED#~1yPh$yuElxYmdr+9@(&P%bt zaU0Ja<)%UweIzR~=|{@+R5Srh{|(gp4}84y-5C}rHE0kDg=v2u6kcwKUo0RTitjKRG~51$0~5q8nCdK~*7gSvpx1*!m`;@-ZDJ<4p8o|W z^8ByxNo`PMcf;8(@~H#~?!4f>f`7_=7b=rHOcuk3hmicV2-M7PsuXsfa_KUy>AzavB=7w5_bNLfm^;6RIA5sb zPaL5kX?Zt;ay8-Pvxhf2xE0k7=uhD`LA_}%94P;J0T!B*|4n6t#@BiV+Ve?(N@YRk zv?4hKqA}*K%Vx5u5;=a@a}XXHt_)TWpPiqX_2!?AY3Gl$uR$|j)TQeyZHb^u#+@(z zvD8c0k?ih1%fJ6!A^*q2{*N#JKVIr!rujB8_mkow%clhsw$u2`rqv$|14vQ_SS<%t6#SjBCaLg_xg8lV|^mON;Eo63Y#Y=pf zZ-*gWKN`k4=Dr=O7XBV!xH;C1@ZD#8&t&&iB>aGh<#)w){51m!-hYq!x)~jth_4_N z0;{0D``pAn?JAXh!$8rf3(-_R=e&6#mi&LbP*2yI|n~0!qBncb>~VlYc7{%AIG{p0HOSEg|@= zi|_ANPxyA)ny9EK#IA{Y{*R3Ze?JatB%J~&*)}X2cyTr!MX#aW=lRl(T?D?{Y$H(^ zM7(QX+bf{SM_IA|d(8r)pT~s{xKgwL0rAAhGx$Hg-4o@S0*_b04PDvjCPbkBLb(S2 z+4#Vn{cPd^dXY@85EBGCegTxKe$*Pt2f_IxGc#1$UVU*V7a9JQqB;s5W4IY23$%wr z6uc8>2O%(}4Vn1i96}FdCiM5UIYWhSto8W*#hL4PqA(I3zy*RbTzAaxfRQ4uuz9zF z!8^?K?AaAR_xs3RL@VfQMayTS(>6*mxN~&<+e5&7p_-L|42b7<*k|$4&4{DLXk?!PXL#vBkLlgv~ z^OgngDu{@PT5c7Zw4wzg+kC~~kw@Y8>-^~Xh-Lo$(NlF-b4KOSm(VYYmW821=r;*5 zyRQiS{y)FO=(#b?E&uuBzu$E9{P)iP_cfybcQ+RNec1nxEDZ8ZDhJF+89o|&dEmuu zj^T;6P&R8z#hjGj&P$b>)5Aj$VKjlKZhvnA$E=T{#r&#A^(Lc8%@Yd_*WY7)xQiT+ zr6!hN#5x%EpErH?H@*UqP_<~`ilFA~gT|o;xYau@hlnzW|JTW^cmP!#q^EWVgtQw) zm;+7~3AV6kB@g@_ zwFRlDpvfs)Y!jSILE>(~lQb}Dme4E23M{!S)H@G@^2tgYZzIwF z6f}8tdSpbueReNju~T&_*Pd5ZuH3U3eBv;FegT@zIInZ1AOJGa?|61Jay(FI_f6}F zSeYg#G9y6*F4e>+@YR!m%gV=l{<%%ftaJ;aR(Ie6sm*RA`PTwmxC=BL(Fks44c(i- z5gdy&IVd!-&<82YtTtjq`Y*mkfobAqh$MCgUI|4E|JPP5YG-^Ei3nkDvzj8&CFhq|@_71b| z?41EU&i6t-qJ)SGRyf38B6f`Ww2~FY)CqAh4ix;~^!zp;q=X&)J9x>cy}XE0mto>h zMRG8*0XM+73-JZYPv;ka-fl{R<1huWzVzTl%bQ~=zb+jQVcRIQiD^Ip4IpxM)fD%m zM$}&8F15TYG_Fw-(!#P zSnB&4SI{^BE?Ex?tAF!~n7JIV^oUxa2c@Xy_jP3Z78c)qp+p&U@l|_>0^n~Bnga!T z8;RP=5e$8Nkc$BkbZZE(K??wi0C`G>7hTGVCuZvFF9VR-7^?*zsQwoe5R2yr-mKul z23*CL;pj_c#i!b>gU_cMAwP&G2z$KzV=xWbd{`T8fjE^#GI~wy(T;wYx=knHpDG~i z6J^|W1FalJT+6rrpRK2=Val_8AF>p6y=&3(gg!f}Kowbfn3qdYAnq za>BufH&%-FVSvN(-SqGnSR%4DRwQGRhe2?rDT;=(MWBUMQ_d1ODNXtj-pB1MU_k0l zWclf=?s&H}H!6xU6_GySPVX4JznP9FeJ^;xb5(&t_ecJ90|F+I`U&JYEU5sw2=lxi zSG@#RD?5+$zbE;e{eUjKB6GO-We~BLTJd*?BoA*NA@T+2n-isvO`^*T&0f97{dR)N z5xj#;Ad~R8xsGp%vPPh!#N34}e1zNHaS1rU7*c`6;!{JV7(+I(6DJadk*d;Jxc^w5 zZVhxQ&vVw{?{6XC+al<1^*F%`n$?|9TBIcH(%o$YeGjyn+7fke2QDgr{;CL)V$-3@ zrde=9ck2kRHyu8C4E$rWV@VmF2>3qNDV2Y=|{B6TOw9F6C5pmO>xGXP= zf+5R6ab_|_5QHuf`Cxb6WZ-p00e$yGlf4XTg-}}+E(#2?72+Ot96cz09|@Qj;UBiB zHXb7?t|=J;IR*Gzpw6q63#yip%vXR~7{4gk8qKGG@)=O6?n0rm$a07l1(@It!d5PM z)Lj7_CWAUP@NnFQ%h+kB?g7XdO?=?y2TG#e%X?8H6BPoALDgIc+KY!UE1%b1Re%)A z1pl2nGdNLjM=mZFtk=tl!@s|MDjcP|{@|Yb&o}B_NEnIQO)d7z)ng0kqMKKC2=J3W zyM;V~<2Sr7ilop;DElGhhpk!Zj0<438%Ws33>Dmqx0v^^$~78zl}dljbc1GZz1 zlGV|r^F{9j`6%KcQIxn=`zXX%EF#Jf!Q04-+ahRdh2;R3s?I>!2e{jQ*OUP7c3l{) zrU2UY7UBSRbZ>eG#S9$*`AdVJRMxlf;uIHS1)mU%6^jt5U_^MV4}ioXc#wO|t59K} z?m#U?ngu0h2FXIuc{13zd^n~OJO~v!$L7eUup+wD^MB|8FP}2xHrJ)3b}a!0?yMBTM(j~2CxJ- zsPocB@Onlsr3$Wu6F^;&3JAS0*AAe(ksGpEzs*A}ZY0L&i>gF3mUt_YwfK zZEa*0hM>Bh1j%sYUVBJ}h-P*=Lv`N24EgPHc6TZbjTD-;@1#RN&T@WPi7qm+M_q^p z0S4HJ&jX!nTHDC)^A-&}VavN~(1>V{qm!bBsxG>ie8wE|1DwxLBznXCs0T_=|IwLb za-I^U7WYx$_rpaObGcRy0sRQtLc2dw(6$P5kjQ4JnJI`MT}3&354cgt`G%n%aH&0X zxyQ1KTMtpcYoJ^rYddMMAGxsv;93fV<0v`d8R&kmRY4}nBw_&I)YeC8)lTfb4oYMn zMq<55pcfI*DZ85X1ykH0rdJOBoF~U28Hdm@nkc&jk^$;S17#KpBh%R z^n~s<{=U+2$ItRTMfw%3R#CvYr*9|j-i#mSR-vnU5A9($gpsLbyMdBy899epTQH~V z7AQ!M;m)AGNef=MOtpyb{VAAAQQmDg@>d~wE2?A00e@1VQzYAQucGYayxt9p@3e_5 z*Stu?Pmhx!o6b&h7t&r7ELy^CBaej8C8Dt)!_>?;N>oRYI7<=M2RT++t!OpHo2#cy zrT@g@H$aI#u&T%}1caVB+{cik;URyw^Daq;ehYB-@xZvX!KsRZpj_i$M1 zv9lfm8lL>IN>uOMLFv{^E5=cUKnWyRLwyjcR#fZ%~0pbC^~aU z+X~@uNQa!bRMyQs37)(_gZ6-JB#EB=jxjoSkQ=aV87)qOexx$Riw44X%Hbq*D6xej z&m2NjORe}33gs{nebVJ;2!6LEmAGB6Wr8)d+ z_SVRQYTrayCn0T~L4wiu?Fr%FZ#JETp(gFCzG`=(lJj|M`@8s?ltsyoSM?9cFn|lDdGDc>s`n=;)|EZ^+UKJlUua`zaJ{q@FscRZ z4;dH^z9InxGZOZhgK+`EozMyxpq-118k(U`yJG6G$g+l|Davu&-K+KIdAcdpTE}lV zMdaUHGinT71Qa|4Da9+qH-Rrq0oUmA(X)=9pZtJnTprDmXtsirs<;dG1`L|n4D(7M z{uKEn3fS{}Ku2b zY_A;q0j2eeo{wi)4kWyxHH$k5N0%e68V-el63X>{bb3AcoefjHvBKul+OU=5U8t*{QJ62MgD}Ve6r6(?l0{HF zn+_3**cX8)=Y<$Ojv=44s=oekP$qm)ZT-IK4jgWw-8X1H8b=yFK026=7LMp|#4(Ow zT-gzbNKa?z5xfarjJK^L?H0p&<6dq^$Y;2PQV)dH7)eRK3kPCPG_0XKj3JS?V6?Ux z3QF(hPMb#`qi=m8t*A#}yY~0$p`v!(@1sD7e)Ea1*eJP{ha$qgegjR%f=Jr|9NT=P z%m&&z)}tszF@|KBf5 zUQ@!8aS_Udar~vvTU)@oZ|6;jmJr|?=UcC27nys0Ik&;|P)jAv&GCgg8dH>LGVM^m zQZ4D3w>~t_Q;j|5gJ1FF5HZcEw|-jteZ>wcI$Y(@>r6r)$RZOTl?9M4|N4gGAmPsa zmcVv}^nl}A%UnIzUpymRtkyo>u)fm55wfbJL1!rR=H%P}+J)q0BQ!J2L;5}a*+Rie zoNP=o$`>9We7ZoBeg4V46&szU=Nt^xFR15ki|nO~V61+kcFRgdPIH*d4bB}1F0Wtd zulX*RSVK+`;>BJ|oF44fo!36TE>G^%5;*4sHCGZ<*Y*%wyBYo&Z`sPU>qnn?T$_*0 zaE-OIIlj$XP`$8#My7%=bAgwF_7OIS*x~q|Rce9BHNmY1IRH6m?5RwS< zNJdaG3$glG6pI3JdysHwu~e=PwWGl1EINyn`naG5M4@d6X!9u#Ol!7PBkSfWr8ZwJ z(0m#NX?Z=bRiIT`SY{b?h=d`e6=aC&h2Wd%Ewbp%>ccpJbvsWz9(hTvVgXOiUKlL{ zo_nAg4U93(D9Uw#jbUVAEvsDsnRTpv0G(=)wYG#XyBz*+{wE6Nv!hVbDGxG4 zh4C^6aa;yJ(3lp;#96Rdq38oj-pH65L1?M0v{7EG$y6~LjK4f6`k@s}xt3W{L1fT^ z__RW+uh$Lzjr)sWyCAf`(*n5xqX3e~Pcqb_f$Go-2`Z{cD=$zJzTzNsd?^zftbPM5a!M1>GWvLoNqr!SwLch`dLgd^4{Cr`_|W=;Rv1fkvW@FEH|(ch1oU;P zim0!ExW*DqfIUcR!?me}b`3=VCxFwr=^0)D$OncP1mpubGI64^--ihk(0ceIbX?v~Dk)X1~6!Ukx4nl<==Q7jeLWMxzj@AU=I|-U|b8C+v0R!RDAl5J#;390>njdCjqJ zd8hWN&Q|o)q5EHVyN^)eK3_Gr5;6iOYLolc-KNY${n5AM{V30}Z^~BlIetU}AGEny zin{Zdg?gInuum^(*%q369%R7su+3r{S1D^B$7g*LW}`y4S;kw}C{^o?<=YQZk13Er z%>JW-%j>A29q7I^#Smxq0N&9}(dF6wvyaQSVc3&jW_@`qiIpNCOxZ=N=uRi2%zB#5 zjLUkOm)+=0CX)lyk2^^d+!R(ok%ZrdJM~B9?BF){n(+nhJCiUy z-2-&06mHQ!KGLjm#KE^5p^ys>Ilu=jz(B?*cmdW33jeHZfH;Q-(gJsG!q?-tEaV{J zB36m&gx3tT`3Fpkh9P)TE9>U88>kR+VSkG=z=MO(@_7aajZ2Lxx!Ztw@eNnh4+wv_ z2WU=F#-s+u@P+ig(-1xx{zI2z#)4MjZhid;7@1Sv3(KB$7&7{y zAh6PzFHVCbvSnd4Gh`h=qjX2^-{*{FbPd**XPg0&xW42MSn6@iYl@tU^9 z_`9Db&1%llmvB5&&_b%u&P^)R1Sb2NFEpA0{uFpSBnb!1gK1=HrmwNv%I6z zvY~lak4l5X+%N|o5HWs zX+TiFMS?3_p|R1kREnXuPCTZg%IVSQ&(Y-a032)Y70=gfx`VKylS{vA+E}}PUUQ%^pI7{6hbm%FW3ll;_YDU9RRJ!{lJs#Ay!pu zl~=Awe&iAN3Rlxn?bIYso0MvNd9DrHm z8)Z5Itgg;MoA>T9IUS^LSD8#oG-N@AY&Y+Le(vl(&9tcOULiYh&!?xHzXvdUo9S&i z5Am7!{OTd6@eq-NFd`Ram~8{5@T^R~)ALfJ{nIaX4Jt^oAuidYdQW6UgHBYMPWNRcZ3sqg4Xc zHWLKNC35l~30_Q3$FpjENvW7$JFdufs7k8Qw**_PQ8BB&b4(rCC%UheDJVrYlJljN z3U7Dt7GNv!4#RiHwE7z^kq;)fC$=#tQ`x*>p|nU?APcy*-|56U%#*PK>i}yQPhLFX z0oS9UpZZaQH_U1mhR&pvhFy|b6Tr$lUAs*QOG70uNBjY?(UECSH(T0-X|QJ6?NzGP z@J{L(&-T_>Ix@Hs4!6(50R= z*ZlM*(8szM`V9T+x8SBUX)zBVJLz0uAr*C-c_H$R$ICeAXRty!hLvCxQ(3 zQ)K34>Q>-R9t1q&f_6HsqiT!Vxmz@H*0kme&{mVP9%DMp>>3NGbDP;!1ApmBhYX^Z zO#6bU*>ol-KlS=k^>BQc@sLcG%o^aHc5+jatP+u=onbsoD>o0`zu;-t)b^C9O2`I1 zwrb|8By^MBXE7GDX$rIaLw5b-J(ek^n;Y={s^7JjQkp^6J`}!gJ5I2o)o)2E&{acU{k7Ux_#pr$I)aC7^QkCrE znFqDO;{wmGF{ux4Zk*}15AZWBIw}`&?R=5fttygoalTWe4&5JkZMZWed%np6QCE(` zjYH7rJI7_fY*(V#hitCPzJWlO0A=;XB(0hQ63QpFH=< zW86M=Exr$=iz7|nDIRi>&{c_zZ@)Ec)yPHvPOM7ldAz*lvQ}P zHBMNtz$uFf;!92r0SJHG{Ttfc_+qiFPLjbNWx^-sN%Gy9&`37a?FX?AJ}52grG8RM zQnB=wY_C~1X?54cZG(dsGv~z(1Pr=GlItHqH{4n9M&eVgO{h+Vb1qktHE*!{E)472 z5|%Znoi#z5E5WMjbNkZQYkiq2mr-__w~ z)w(76*y+#)A<3F6`um(Rs9#S#Jlz%Get2=v|GvT3|Z3QOP#^P z;CYI|3kB2i6oA}$uxkL=l^^^s;u_!_q5ZOaPG~Jp6lkrO&{O;A6#D?ZQk0zSp-WDP zdFNqRP{qfFMZ2Tp7T$lI2pLZPy-$=fE+Tj_`Wr}H^5IDdbuC%k<0d9$`F%+ZPIMz+ zbB;Q`Yxk3l7x{YVd9c8Her-&}1mO$x?=y$>XpFa$y&GJn`#WJL`LO|km)_XNsS*LC z;YZ;3`&C{O0=We59I{*4u=&F!3@XMW^whie3{lt_wT^bPa{;7Oq*k%CJYoUN!OX8o z0Us*nD%asmRxtY<1NEvtCNJqF?NnH*Nu}#P6F+7m_p1#ol}xc$xNkC4q*$DVJq787 z-c%vUjxa3kR07SnBKj6T-RU1qQ zDun(5W0^aBnCL!7ImJC(N)cS9Ar4%wX|wU9T3zQZ>g7RhXnLA*(v3sSj^M-U_;9LR zlPimk3|3KmKSlJ4OqEPU&g!Ed@k@GBN0pqZre|GtWk8SSEr5o$Jt^tK6-;@iO_Ur# zHx@~=`_cD``%;`*y!BH?IFW_Ncf;G^W7X8 zuR|+mp)vLQNpB4q&p#LYE>CC0?mwp zQgaEOZP0YdlaeWd)Lj_HmaY!T(9ml5T$NMrgdd?SzYCs>i0((EoL(@W7|OG#qy-hy z52Tr8@%{a1#fo60<7#(<^<>ojYpRZ_hQ7~@y?ZhGqo)$3k8axP=JX}2W-80Cl}A-@ zbAAV1dd&Cuc;oC_>A#|G>=Wuq7)+C+!#<#s>n4%@5+USP&`m;lG#752IXQuO{W^?l z5Upy;Eef1hABp4YQ65T*i|v1YHVba6Ej$`A6$aW){qpdwIt89#R>*~MdG`sHtN)nh zQ{rpDZ`zSLD^uvVegbDoA;_S#;s3F<{v|5wl~K>3i@{UgFMhEC+LwDC08)F|ChJ*J zNpM@Fj68y^6dwi-1Sn7PU~h%F&wzD-qOcme@v0AA?hPuM{azP%P^2kygrSDKV$f$%Z|Z$Y z1JH95r)5~w^QJx1D7OkdSM70yh!ww{DCRAlr{wSzm^yRFYRiyHg;t#xk{GZiG{M}c zZyN+o%n0=e3$ck5KZ~~6^eX$^yn&%4criS)QS8`KDzO?MivO}rZ`=DW-TL`Wkh{gy zsD#FZL;_LcNSXnWj!tpu;n|yaM=J*Pm#Wgo-8soe;IjM<5%ACWb%$~dM_?4dpI+c5 zjSS%fg0%pgE<;e1r%&60uFQJWXS-^yQ{G9%U;5EsDMLZo@-HcD8d`R--J|1Zt%Q|T zJJ<*XWX;a|s}$c!yg+`fxFfk57Pq083q5_F%$KL%5X_4IKumh4i^q_-Z=$#n<7PEf z(pqMcBhUatX^ds4w{2cut8V#SkcwC~Q)XSA6d*vqrHkv{O0X;kaeuUNpj9S|nFq{! zH0rm)mz4sZBL9`VumM1kPE!(EkEf;w*;P+=kxbu8 z?Z*aGbPU38PqUG&d7A2dZ%i?*LhWjZPa@-m!H zr&>)0HyhJZwq$S1HUz+=G;04)L}u!36t8tuw@*?v`I7&nr?N29pn_9nuSoWI!P+oz z!Pn9Wcj8AA)>FIQwB;{(E(y3*#R-UFEwe`H2gU$a&WG-5Jx+f;u-2xBB?ZqgXu4Q& zd;L{4#wiF}OtmT9ncseNGrW_?V@>`yDdsSu>ZW5#8%2oN=D(Qw%U1B7URpBXTg#bpm(FSTZxeO$x*oX@ z_l8AXp!t~;-i7RFlZM;hLUbWn#$NBmH2{ZNu)L6Mef43EEl2>|Adw~%<3!D@%7g(x z&5g^X<*6k-;4aN*Q|lino)ebBa9MlSw&UPTwbw-|qS&`NAXQj(KjR?^GiF>Vz&I&= zf}Sf6uuiJ*;=dVVGz)*RH+Qc)frS1CIaoq$KRqVDZN2{E%c})IQSY0c{j=a+1#_*N z_|!;M1%3^EQ0ghSUPfT>$h=Ab#%)z^^f?vF9{|IzV%=b@j8o6k;n&C9gjKW)XwO(B zpziBh+b~Z5L4sIy5WPe+qe6}s0H7b9B8;aMd4`|@Ye(yC4bRxRFHcWahI^xp0B+EC zEp3(|7s!I2h&Md+0Jc1kiX|KilAcOpGV0I8N4%&3UKpu_O24XwvXyBX9Tv0{Kpc8s zUJ$l*#u|zVwJS9YXvBXJ6`chty7Jsie?G$;^xI2SXD6#FfrMT7)fOAwv9?%t2JpZU z$U*wWYB^_&=c26Vm;)xXJzFtR;$im@FjQ9pv&WV<$Lgg3OL;zF@oMSv^f;PbS*h>v zH(a?AZ|}&B;v!M@8kk1gia!I!@ymLk;LQ5;bE?Q3~lXF$F4P*?$DnHv=sgibCTB zLh1bjgVA+K#)ZKrCvt_iG(p+2-F4If5>WU@u~Uz3)z=1)Egx(^S>0axU&4wx9 z2^FH5H{~`f=k>I^ZS6#HXID3^zvxs1u2r&i`-~o3)xOl({`!nsmg*tnuX_025-KC$ z@A7=oQh{7%SrD4H|d88>uZAMFMJXV#JqIwq>dH4wd=*2k-G z;1G4JjMu7ichUn`$&2bqZ%+7Az!b{ZwCl2r$e4X>B>t?^0IR5suYx#gowt~@j&pt< zJ=d}x&w(6>f!)mA=RR@qMwy##KsyteXuh5b&u{;4urp-7m>fyFYNZbIoOK2>dLr(O z)B}Z_C$+X=WzWU{lpyrRpZw?!5l($yP2eV$u>(nUEs$K%u0E3YNz+=(o$w zEg^B+Z+FVq341J#yXhA4yli z5Xf8dZ3dT;7DfRoypDVL>~!~|@^5@Y(9S*!VF%qvGKMgRSfgg@dH+L<>m6nDD8pzm z!Fy6x_^$Usx*o}esrQK@4YEbfGg_nj+QHyz;06ek{0a@`%;lOrS!*M=dvVD|U&7?? zX(eHeAxc>rw=rxfJS7KcY5YF7xH9{%mqZmCSQNRpSFb$9+MZKlrM<^~mt=b61yBl? zH-|}PZ@(Ce1H)k(b~Php)8H2O`K;C(lMaw22l1@vMuP~!bS6;BI{g6(_; z4&&Qq^l)|+0ijwSvjwwRKZs*km4NukhI4@Z*CL=}^)U#SXROo{_1Q)muy4jEuWI$c zx*5)OU_GoMR>K(hlp0VS6o-V^AKKorjzeh0}%!P?P-W`>mlq=~~7 zj->*3%mWQ3!c~A;%nDRJhicMS0Ut313Bb|@YpzCqEwo35O5F?HgnA&yqJMK1ZNE4p zJP1eMFM(0eczJofT}>SChM(}was=cOt^90I$v^lNzy~mhI$+Q`KPse$!jaEJ$)?i} zLGi{OFzV+5Sa#@YvQC*juk*BqAh29QxZd*JkHgn0r|RbrNQ0&!@wNy^EPz|GbJ z`eq~!bWgX{ua?NZB6Ah&s!4m?jE=3`8<;-_K`&+tJW4!{XH;VuII!sJc1ajKe$ty9 z?O`qkW_%PB?B4|9^C+^@j{T^P%;U_@dj~7LDnM!JNq-apZ56Od@3K$Af9$2V>?KnKKG1)w8ty7yqsC+DaX4eho?eE{h+0WNQZctz`y<4lHp$~4Fzaeq z6d`yI=kR8Bc#ZE5k3|ntm^C2cKeO2~w!+|c75cW8gteOk+NT&8%})*^sy&~$VnaBP zx*M~=zI5s0;ER+6{i-Jj9=#y-T!Y!j&{l^{11%Q^?#j9G{F8oob~F4ndd;AqmM*X! zkjB*ugiLLqjlORkLPD*345`}PiuCr;^Fe_dU-U!qSMs7S*IGCqu0<|ZyYqwICDw2Q z>GOVb=n2b%_-wh?6uHO;VMe=ZF;%C$ow|1UL={{2dpkp%yTAI`O!rqv!zmL0n?;jG zdx7kKwxEw8DAf?q1ka*Z>8gyM9xTpY5NdwQJ|_?#@(hk8U1hw4dj}yV-thf$uwzo3 ze5rMp?KjOrlS@U@FfaFStS%VJW6P{)um#dxHaQ3fyf1Y6#Zb?BRC zU^*tmD99y~vLDLoln$l=w&xvS(QQs50l};~@2}1N%qGcrEX4O^|HS*vTvBzUhGW93 zjgR^flSz=xW-2E70fp0kh4XPP8fzV3Bf0eF$&})gJ)kQw&Or$Kc3Bz1ip z#VvRbh4k60wn2GcnxUGd`sIqv<-z`ZKAwH+ht!d5gp~vY83k|}d$bXtBja!FXAXHR z9={H1-+{78M$)yMiw>VYj2IYLh|OD+_XIOq6#W%G7i2Ck<9vNVMbZROmDUC-6QLH0 z@R}5w%LAt@xHt&-(>n?ZI7#Vmj_Q&@SSEMJR?D!JX}96%`7h zxi}OvlUPd1-s7G9F|8oDw(0nxV=6Ui?j$Ij|MK-4UP8cl*Eo2pl4zA{f|w4Z=c5iH z0k4TW-!j2l9f$ew1KMf+Z^BB7^#omk$&$|17DSx>I2=T(@EuEHkZ88`W) zkGB-~e^Qb?Up^GDUPk;X<4LG*V@vv$7Wv*O+*($fc$XX$0iARds($Dy0V!)Osv?8_ zS!2%~WLgvtAYx|@zp`=uso#@Y#$mIbV?4+A$42EPJOZYVUoIj)LzAa7sa$&BZK($@ z{2YdB9Z=s2SitCBeGH(iT%jg?85#Mi3@c^9-t#cBU4N00X+8&52NLU5a3}m`<;_wO zlM^TXNa82*X^l1eT~r&Te;06WAHvgL+QSq*!LMIHexJD`>svF*9vJ7YA(jg;pJB1! zekw)o;!S(eFR8sG{-w)CIbe&iX{>z6)6&&SM0-_+;hC$F;V2~6S`0|Uzl10|ws$}2 zAsM61v^{u)g{S`SX*rw(nGwdhvq~239NMaoeTsQTPb2Q~&M4!@G6+T-#s>;ry zU+sCXxkrrn;OPgxc%iJLYh{@{cQ^Yi6$3yDFa(Dz>tVe_v8-{zMCYfj*aPgHa$|bn zP@(`xwelTtsjmcm`{r;^;C6ELB`<=z(rAz$eb-XVHLS-tr#NsQu~?oyNzBW&B*&n; z=N=!psB-SPcj?6NK%j&wWhjNo3w1VF^7Z_L8Jtu48oWsD+Eugew4r+M#ojc^u|jZl z^Vb-1zmE}VCS_PUar!jlQkq-9=d1=<>>a-ixx|G*P+B!QR6{B|Iw)D0*EZ>merFz7 zT3oY<0qF6>E$UQMKo?vw-gmsz51-=vTqb{5F|it!~Oa(WGQ z88m>JTmY7r_o#2qHbPnQNX$b{iYaRZu*IT}hxRLQ;szi^< z4dxzNhy9O1CHds|@Ho}o*CDEk@4+ObgF7YcUL(*nI z*4b3+4D;?fsm${y(#1&MAxySPdQ;|ceEX9q{y4ZYo2lWLUFdy%iv8=;F=J3JJjDFP zcW;iGi!$|o~r{a6?>0!0}GiNv=d|JlIS8gPuEaJg`1J|0G#n%>+N0ZIY4d; z6DAplV5Ti^a{xz&_Rpp_SHB`9Q?=#&Mx88z2fae_?A0$uunO0uO|G)-8>Rd)?xkl^ zPLhr#g!-SHGm?X%y|@!bVi&gXh;3gx2XnCLz>SZJYgJS!fMC zJ-_~h7|9XR^K!3Bb31{~?xIBl=^#ukSW#6>Jr^7*{OUUPr@s0+-n z5#11AKJI^}-VnTaa9x!9_q`?mx5t2}Ae7X&e6XCb&cN9DRqc+@+`{JvHw zf)o6HIt2&|gYn#N6}VM8g8fmzuS`{AHD1TfQGYnm40YU0CY%+Z$vSmnhxY*!uEf7D zuDR$LNKM`eUa*09>U&B8hzYqbr-7JE&5KHVwgF)!G2XOLcBb<>{|5D{EFfZFYHdbo zjKa8u?)S%7j@@KXeBZf#YPm5TR$9fPZkHq72SAlXK4MCiyDcavPchsJXudUzFa@Zu zg)vXm7XqSgE(#S&fd@eM=8DYg=L2hONAUmVwXWRdaJH`8*`&^_Pwy$T__Xh4DqmvA z6Q4@MqD})*Q2ZF_J=j(*(zq|gkvi%fPk(t!e5`e6_gI>eI`(B-z1q_a-<_^tw%!S7 z?4$r}DUw_4&l>MX)!41jAnBu6K7^oQ*3u3{ec5lrM>l&_y|$xZ03v>;Xb&W4y~lc! zZ&y)FjWQ{x+#18*Rs0MR|9eV}%Ome~RBODwa2pnoyeK~>&FhazD+JO3p8R@)QqwH)uhGYsg>%{plG}oA7XEV}H;QTJA=- z*xEF)@M{MK@X*(ozA$`^W#C*bZ-$QO`>Hnkbca^e+o^bm@yq_FCdI#%mgn^W1aX;3 zJ+W1<$02)MnWm~)JWioJK)=4?MfJDi(y2?Xy83O7|8WbOOEZM7dS#q)nEzh43`Eob zOy*{&OGj%>~qnZl`%h8^h& z$ZO7&r*2-H>}D7W2Ua#+x5QDenVN6D&Z#_z*Eg^0tY!(=Z(zMSV%kHfHqPT9qfXQUc;h zHjf^b(Q8w2z6X~=93tT`_zMz;GcmbdnI^g@nw)9j=>P6!Qn%T~$&1stoZ2kuhjz(n zR9`13j`D1|ZMH(Mak}Z2s`l-i_ELkAG6+w7 z>{OiySt0NRbxvLyqfWHfR1*u)Q9^!3s2^#&JiJIb~h> z0bD;a>GxmhExe1~dqeJ`9`~AbWw5wjl2DvQ(Yez5mC`f=P@c_*ry(k~t2V`if$!Pl z4`z!T!M}d+aAKsdHZvL=eB)N7FY!-jR*<+He%tBf*9eMUa-+=Z1E5+yf=ioGrQtFO zaxl!t-aAvCsl-PO&i)~LIYum1<&>AVO~+9`8)cQv3vV;oMxhs1#3r_9*3u8>=#+8J z?vYq_23My085MB(UncWYCsEA5UzcOr9tT6w$nQK_eop=J#c(4|OdLrpizQKnAc1IpGnYGw<35*5P<4fFSXH+0~rs#)wa!L!UhL4CR!mV1a;Pj*zUZRm|oP@cyt8i zsmC?+h@KTJA|H_6bRaENqj?aqPk(a&od2<6mjak32XBD>5feJ{N?za#QV<#da2t&i zB4usm+r`dO1qHM~(|-aPuxFsnEs;&!qy4pQAFO$h z({FYIdEk9{m2+XWfra${#VcSMkAP0qVPzrVZ0S{pkF($;4l zk<3;WpL>n=+AXI^3zpt{B6{-Uu-+%vJ{CQ3QG=6X8vv-i<%*gCurMa=c+FAFrZzc= zk{L9>8O<;fm6>X&Qp#0^$$u24?R^iHtV9eBboBPL+J3C>-02lyJMl!&+G(obz2B+X zlIyv7#{8F7l^ARzplco%_=-P3QuM@mYcrt@ z*O`vfNnI9sr>|0b4wY}k2V&1TCAUCW*SAU+J)Qv|v>Q>Y*DM8{PXv!;INq^0IVr0Y zZO;sEPAdP>*6tow_ELq9Zw`8~Jn%l~d9;S53Ty$Gs*B?XS07Qya~~>YlSbQNGvf;cUBZ?@P5noz#KyqM$&cbtw(DX6 z;HtCyFVty_L-)12E$v0lVR?)>4Sag^?qh*iTe;ZrX<%!5tQ&ve*`^YgNOgj;UhtkB z?Jg51P@+`eHlm0~YX2NdGaKwNw0{-WFTKQb0>LJTwbat`?#E7bJzU4!`8z9Xs*zLz zdyxYNoBVHCno8P3YMw!Bwb|;4^5Q3+1v#cL27(o@{J?}6ca+g5hef^3GB-J?UX3q{ z^ZN;`8t*<7mN7Mr#R2Vq{p1SVMKd}-uum1T)iKUnU$gh{E9n{Vi6b{@Ml<0=#PMa` z8&z?RgW+&j0M>DMZd%nRhL24MEew^D+)t^=!-dWVV* z23`Qso56U@-@fXz`tu~+wR^t0;2sJOZhC#i5FHc?9di!E5+Lzv8espF;#&_k**Z6` zSBHK_3cBRsgbbckPS3zIa-qMd67Lgx*559ck>1<#*Y?OT!1A|sCkE&R!B~vn-ZuL@i^YgbObu28a3dcPrYI5O*&mB zfw#BZ=z4nG&CTs@hT{KW@4e%(Zo~g!DHWxZQ6VXXG7A~mStTngSt)yS**l|&D5dPZ z_a>v<6(yIwcgAJQ&VG(lbl=bS+w1rHh)Tdo{3C`SUfU9XY2-@Rdx;qGkQX6JoC~ME&agDB z1Um)gOi?quNI3|kNYr{P}ENeZLPu1g()wD*xu<=d<+PYC%<_6 z6PoULzL0O35$_&=2H4rI=bmqKxQcLfRSW`TZc*|)ix#q>S8EA-l!awa_E~@-HwY6Z ze^B{cslW5ME1*+>;^H5J`Of?#Vm>sue2Z_r)%V9b$E!#js%+~VV>UBdG0Kc`X?2C0 znpJy+1p1_eK<$u)dUaUp+pIw7AC{#vB%)a|AR4YNF5Fb3-e|B;>h zRrt$0LDv$9cj`U0F%NzBL7NUr-mfM$SS3yd1V!7HNc7zFR(J4c)-LaU!=gT7q6S5- zuZaKx+nO9gO$`IuT(s&gp90a5wdhmMOL3G`w~uww>G(0eFN8W~g~;T_qqb^2O5%F6 zNW!~8#HwS>zlLr1J`PdvH2j7w7)%akmpu3l*HRzf@b>t?qCnL0nKLBlX zLQ^OPNV(Njs-C223eU&w;2Z?~OJfaWC{4oaDA2eK1onH#51Ise(mrAh=)my#6p-$H zi3gDO9h78|kXQg7HtqOuF8-d=Z?5U(+~Hs85FaZAYg?P2)1YOy7_; zlW+F6BX>c(jz&yjEzDhm^>Uy;D~>pjI#WRl&4+!@%ACLNC)z3$XN@&9 zB6@l7S>*jTum=C&d?3CeADc&2Awua6s$~I&fX{xBc&GiQkEQNWj9ttF+G|?=w9rIt zP0e%1V*-6prdxdtBLD4&X$ZC^b>IXT5obRDuDdA+0k=%JaI-?2+&j@S z$^laLKDq%0l{fCn2eqsKj*w~J1=S2m-MRUN)eMzU{pP+VCx;FF{`Y+I&?MIR^NlkC zY8#@L0@zK-ejcV@SHmPD0o#{ zJlO?^fh;gD?7zB-%nU4~j^q@t2n!laCO@;3O2m38!7d%t9|88NA_`}l>~+XJ%BA%? z#qkB=;eK###6Jfj>T$V0uzrurk8sT;@bNRgo{)Y#^)r{XqBf)0f!|gUTp%^ABVv9L zug$J3?m%V2OW&G1Lr?UOMK^>sjXerr9A_=ICZ2;Wy%5?U2W(;}8&{_J6LI|+x{`~n z($G{h-$dlOMv!@a3+&NdAcF~P=7Vt{qHT*n8`coAJ_$D8q`7MPc7h)~UQQCNpFn(s zr#*jx(!skOQBH^`o&vVj_RMC37FtZ|Ak zj$%Bg5HTC%sv5_tmke!QXfQcAlwm158lS6I`*+QeQ<9l96Z%c(g4NKwjR^$>MbQ}` z;sD92w22ct=%0a`CmX|Cogd={2B) z{o%YRbbwP=bTqziO2Y2Pd&;l%i}`Rrw!zR;VFpelzsQDzuH9{O#bB*UXj2D?Wi%dn zZj$v58q`+)|wiLKbJ)<0oEk;Nd$D4Hk7^_zF$`6YS?h5 z1HyDw7rv$5P^U{pxBlhCnU35l+qjd3Lrz>z5h+G^VBSGyxyxg^3hJ&O8ZL4p`B+`I zXIx)9p#}d!UX96)Zk=%bHoX1e3rci^9o*TibB!&s51(ZJ0KDu{{hJrxqmPvqpS|o1 zL+9vN#{H8uv`eI_I#c@iVnZQY>6`5;tkjtf$)5%w(ZPgkrK+$n96qZE5y4Fu8hmQc zSdzFSr}^4pi&TV9{Z-rLOFN&s9faElZzrbBGxp1VWO$+t0~1|czt{-kTYP?gq7Y6c zEMX~C01(A(2x%U~rS&N9%#1tXr|2 z@em#0m~}-vqh?)?ZBN(K){IO|!<_ZM7LhlNhDHG324>28fY#(%tmS#S6VEkKje*qV zwlsxbu5vY*w`ZNzw?bL_gpVhR((PgJ56~--7fL4`0IL7OS~40_L_`7|LJo+>IshRv zMFl$K$<-ilCTD4~f;55dl*Qcy%5&W`#V=cDxH{`WZ(4UAPzF9R`05?(#Yio zMlP#Y!PJxOKkv?tcdCm}FyFZcE84a@R{RX8knDg|=>(u_#Me8GuK}cd;m2aR?&kEB zNP~JB-(6NJ3_qUp*)sI2@HtDp3b~h%$)>4m9p2!#f4?y}{BDczyHDG1cf|aw(-$>( zFcz97P^#ki&AoU(3WXaaNs0-aon4w5)vt#M6g3caWdRDpT-cP`p~SogQUQDO-q!5z z6V#IK&p!>{tRpI;?vU9qMqoM41z=m-{S((+IHd+aE%}4D4>oJMjtEmHO^^W%7CD^< zp+%3d`%y7h-(^hL(I4HX-aVZ$_D+V<0f~bchI*c7l!0C>_KlIvEg|TTH8aJ>opP8# zZ@Z}F4gUBwqK|d-@0@qQL_Ci~M0Rl1@<&oCqnWI6&%RyK!o?sPlx+#?ZHD6+O=xe8 zNl-8H_cU+TPznGk2hRYvIdL}x@A(o8z;H#oO6T=@zLvxB4NYh`2P&s}tg24ifs*T* zU;m|EkRfi$5>-gpGXv2<+x3>XR3h-HQ(lXWA&FcSZjw9hg6fOJ4)6-)aX#COS8V|=;znt+w)gP_*7k{p$0?_qLrcqkjEgBU32(m(>Ll5p$PIIGbp%=)nD zrDH4683lo$75>|R4O^e2KAc8R=9OaX=x3&NGZ-|5U4C>1V!)nF*tljg7BRd+K4eS; z2#`9VPCf^p_SJhI@U~?|jz{@MX>s&-d`RHae<6$a5rQ!cQB_$k1Sh#MWboubLB#j) z`S?STBI|eqA1(jM#0OH)C2HUx|0EWTpa?WmygEzTJr6P-@f?;8u_}5Ww$-U+CG9ad z%3W$FaMYaSuAW*rt;2EPe9w?*{}#+xDz?>mtt#LzL`UYKWAx3Qt68gMkAbB;C0Hx8itwKLPAtQ=Hr)$Md~nbCFFw>)u1; zjw{EXUjISOz^hf2WHZ?(wGVEtOn?_<9bTO9UwfLYmYaa%FQ%k^$LuO82)9SMsPsZO zw*i(~yJit>i8J!ykH@>ucJ!%K%etu25sh29!zC2>hsm~dk*H2avV=PtM9r5IP2_va zw$uZ_D_-vp`ENB`VqbQ2puGLS25z5Ir_8?9!udbOX?&sa!$e~HB1|m31F{5`@blN4 zMxhd)A>)4#|HT5z$Wxye06W-TLt$rWlKg zZ9eW(FQ~Y&mz0u7If~pIcx{?fZp;612AAN5IO7m7IcI68mV#0aPVu_s{r=ss)@}d!x-7Q`N3OSwC&Sh7V0T+%0vOO}iGM zKWJF31yvAEs$eJaS$L$SchluTC-NOSnyHBp>G&)S-R`*%KI&R~bY`}s*z}9t>RijO%mO1d)4Ju7TWlM~K}Ft}c+|mXSPt?-dZ@1u1oyfW3wq;BsFA-mU6ztQy=} zD16lJ`{k-n8WI(58yaoVG#+rlTdstUXH(v~QKia_HY^lp7-*(i;0QnyKMtk4UOzPT zH69ao$Mxpdxu(H@?M|!(=%Q_Y*AWic6JHDPX88avb|qLwsca8VFR$+#+xN9@b$w~{ z?3!VuCiLCk$FA8=4>?mlRIq&ER>OQZuiCa8sF@Z*6~zGagi&~y@BI<$xS_@6;v~y| zJ#U=QuklPY#y`*04;G``1ikk#ZykgxuuwS?^xS&OKESqh75oKn=TkeXEe6B8N*LrK zOyAqjY}Oct!ja|ty+T1J3g(i%VZJc#JS9n~R{&5YMS=$5=Xxnxb56dV$YmdP7PXvD zjUqu^0|uH}Gm7OJf)VVfM z?UL5C&ijC5@Z&Z>^BBIWld+FP_Z0|19ePhrkoS_sf%*8$VY{z(2=`Ebu#gJ*Ul9UF zPw6FlxaP4aEOGf`j8VvHY;3Ce6N{k-jv{X+NNIQ&GSEs z5^IRH;{S2#V61#FD9JySO+tqIzN@z-6J{x8zzLbW1hB#{bN)GX;nx6w@##aA5D>zP zNtjuD#+rBFa^-7$&r%JzK`H2`YCvjQsL{{W*#yr{M|=>7PXBl>#=?J0G>z~7bpA(- z^^9Du3_`;bCop5SxjT7`9^GkWpB3#JxJDuDO0At+c&oVAXLJ&iRXZ1`=AtuWp^eLE0x2Qo>Q!&@t3Pl&uZjC~7OaQ% z3kgs!IG+Dfhl||~6Ob-QQHXtnVI9!}%hN-G=8*z7dX`cPIQJmZ0$X+`~Ms9QQn? z;es+op!*nbqcc@>E%@F>HI^jkSbH+3p4}WZBj~K z>z~*u_&EGkCL_>%UsTQmHg-{vC+GDFaSl^@??5E zj~ZGv5DYg?bu<1rJKmlh3%wi5h|MA=8JSqD`xzd~sEHiN)E=sL-V*~k=Z6qwlsU7? z=&73H*T(DbWQAtv$rp;aURdottez%PJZIKh%DZ58aH3RrgXCRvMPQP~v|r5yDsJqh* z+~VC35E}FA#PbFhq~GKLw{R!pUxD6bG|7;hO{*KD^cJ>d&S^c6sx{_9Xak*9%8l04 z{#^Te*gT`Autx=VYHkmz@^@F-Eoo&ot}Y)Td1kLRdnfz8&%}b)5x(lm5%SwXGV7cs zh{Ossl~$U#k!Yr{w+F_u?ll44wI+4tRaWr#sDLYMC0}={5aAJ`+@&`!N)F9|#1;!k zodGJ>ai#OPI{Qjzl?;tjUklELlz0LIEtVf)L#`ZtS(%$=*Qn6u2;1axushY|``%_y zo-EEl7?X9)Rkw&&TEU)L9Ov!*6`?Lf`pu*+cAz|^L@~gV4Dz|cX%=na)kXW@E2DZr znn9F|Qk8OoC-OCN?RU*3qrE31amgm!GCQOy4#kk0O>s7eA>R_%iq=SPrxo zzOD_ww#>G7uOmT|5~NljoT%n1Z2F6~UTct&s|)?+3*FEh@sv8Nm`Rr8yZI>-3sCX< zl(;P(@;Q~(Z<}^|3(;e`I*Jy)+eBJ1H>)bjD2tdUVSRPS;WJk40JrGP(@~?K2?&>W@ON0pB^c~nop%?~b}tWf z?Ih!TBxlNSV9G2&DpO1^GOG*-q(q)AYst{;n%5tO&FB+ID@n)g#Eu;ankLgA)BoUO zh!+9Ul_IQStORi?oF0r5naZhe!eN+q#ylDVxJ9}THSKLH!u7lz&0+{T;0_lidh8DXW>UCztFhE`-_QW|q z&Hw@L*Eco)-gtQfnK1SxV%{h(&wpVH@x zBqsz$-afc5TX%GFmS}pG!!uS}OMD?K^aj`kCwOnl70fFBbbyLdv}eDc#2i?1)%Xb4 zcr!KMw;Bc5fq^N!h|1XZR`TumXA}I8jd1*P%i(%ZaMd{;FH_sjxP#E=xT(QZ%{N6dpix^t!W?M1ThC;?|RWEm1rzkj3cbNDv_C<)n;=JAsyHeDvOtA5;_ zhK3Ig@EfzB(+bc74B*=x0Gl;&3YPxQVzWK323_p~#kY6s48^b51TvrG?~v;i zc$|!;f2bQ2>8c#Ki1kf)o~SBzK~B`jzFKb)ksGr#Y%x(AZa|Mkvupvdzi_w?jTP^% zVYwamgyUR%TX_Vr_>ieRbXcp#2RDEUr0dw8u><$xJ7s5S+a5i*y<~X~H!e${+=)6k z;BVDAa>bOI7ip9_Se@^B^a&*eN6e4%#4K|hhQ#j^I(xVJfV-o)Yxo2TiT!rSLd<-N zX!G_j4Q3*?dYN|0q)|i^X{x|V3*RFHSu)PZ*Za%K;ypwLAV*s~DZv4BXp~!wzIX3E|1 zGgf2Dug1=)4}5lmynRSIw%o5-Yzoh82Lsdzju-5)Aktizr)p&KU=HkKghrv+9skTf z;|=qa^74_jQ19yl^S#^%#0|TB3#gRTq$wj>|rF*zOHV^*W~Q*?P6jP zHuf0R4BSHUtwNUl!lA%W$HxLL{J1eJK5%&z-O!PJ#~3yzA#K(Q-=$PyOsX(JZaow2 zzchU#OdWcr|$e?c>~mFrd<8}TGNkcSh^$**vwlw`sK z0*5G=pFrha0Wv96!Ga9iIGVf1MiB(n_dbCEkNTH2$7}P$C}8NiT0x~HMBqxdIf6iJ z+EdA`a7FO7DE@c8x?rM3+4?1>vuev$VMxcYam1|QFdif0Ys3JTT3KtU$- zo)h}`#JlDb4#ku}zK0`L6-wJWOutR6$3Ji|tChUvwuoq=8y`-J^`E1r{#l2d)W{{N zfrCR?dlHsTA^T|V7{kIGWZ56l+o)zHYEd~8(S~cYNV-$fI3vzBX5;&fd>pqJGpI+e z>D*v@iTLEiqG4;=yJ5aRa3OU9Jx6As5c#>E&~>kA>BHR^PJf7-l31GVA3gPu3RTM& zZBOE~+-D?Wqmd;Ed7_LzEG)~YT^|?Ie5b|6{`JGs7lhX>I zfZXyV3!B4~0Y4WAo!>fX@iv-a`c_P@(8)2|Em56-lAs zfy}#E=9B^ubjI8@wlUgQQIQ$ibAnCF6k%^0@S(i9MAQqne$^zPJhq-)je%{vvYWJ` zBB7x7LGyMgE)XZgM_kIpr92P|XueK5wCocKyYpQLj^)>0V>ee)$?OEcorS2lo9YAw zK}5WD{iO{-MWNScpj$ht8;<%}$YpXAgq)^;g%UE703wvWho)MTJNGWQaC`;Kdotkq z5i8NiyrYRPu><5vKX4kobrxTQnzA<_<#aY|2AM#c5`&*Tqz2w~c%S$lYh(xkmD&Vf z9i)Cwf!QGERy=z;P&-9fQaz~)n{^<07&IZ#4tHj+ez5c}zNG^Nc|M%>PT0gpPaTMg zjL)Y*PddSmB4ju!?_8oJ<9w!cGWs%%Rm=Vz167&Sb@0m9eannCl6%f(qn>qf=9QYg z$hxmbto{t`p`&p4RsT|8e;I%5M41Fjy_*AK1az*6aIHaR>_3RclQuARBhDd7rj0^- zI;LD#@){y<4d#16Sf36_AP>2JuFQfiY0c@hb+~`Fn}nEhti>I=!ksp!y1O$pvZMy4 z$Bt;^9(`s`?GEXHd(~-T2!l>SET|^T&W@PRfK#wIka6@Q4T&#Ee!5N-eSU6^MQq?&5XbiSMf14&@zgs6;$~~y7lv$KzxOXdGxIEJV z?!dam^{FLCMSM+GOoYp7844}x`Me{i-6 z_R_5Hdh+=#*sEGG9m zz6`we%Rkb4%YoCpyB)E;U^%`0lJb|Q;kh%Q*WmE%1FD3%?c(U?=bmBBPu`f;KkvQf z=RhWQ-Ll<=dfO@vB8nSq(sXapaH#Ui(&nKsU)Z&~0MHrb?E~iaK6DGVloc^34xW$O zG--Ayse1v2~00TTYyMD6nBz{{}MLzhDGgj@t}Q0n7O2Cr&w^ zqvb6cFIL}&!!MHny+a8KOc~R=NZk*%izP1YAa0t}tFMz_FA%3Z{PGBrD=U++Sw9m?%2fP5-x0)eA! z(9+q^R_PKmCt#|Hsjl7$QhLq`v0xMYtIVUW+E6hyPM{>VZR>r~u(5^4+vfTB4ebqm zXgx532Xr=R6xv^{c9E6*P!0HaSD|r&NB{dtH2!G{@=Yw=W(ZE*EGk57JY?pKGa2g5 zwB?(2gv8SBzOg}Taa+2 zGYYxgm->s)y#$EJms)3Xo_oqe$7NYJ7%Q0DSywsU!Zf-Xjvq{ZCwP)K5_`G(RtV=; zfCoTOLLx+5ncC-}Wy8Wy{m~-O>E9(e4TG+7pdPNr2$C=VICV@c7H{>G_>Ee2u)x_- za(hx6J(xN6Q^`d>7K!+0$c_fHsO#(8;N-_a^(56%((`fUfXW~nnHxYPdQtDSBf&m`X6xc+8a;LHh&=N zjtf;sX1+Bz!Z)vIF7E4T_uHBWlAf2l_d=&h)ZGGe>;mbLENIJltL7M!+l0>^eJaoX zq(9Y&gpIYc+VByK9i}6Vn?<;sMHR-hs{i z3Wjg|UpuAWw)JmnX*fpC~Zb9fty<20c zrj(bbff@O>w2XGgP$xwcS`~JvB^`A4?@qx8Puc+k%D9^krJaO0`_=fp9$aj1u9NvS zW)7_bmN!8#6^4iU&%YOmtkS(645w~?nChh-3CM+VlY6_B`^8xcGGWV!2t~9I=iIg?G zhXc@ck%KAfaL3MEak$6`16ZM4QS=j=mFEahjj2eQRjnm6roH_U;7rFihsm!gzg4>K zN#t`$wiN0cg8lFJu{8V)6WcPkpd?5F9@lCsT!QpaEa4406=ajd2>Puidp1LOS3l>g zUo5|lB4Z#H@^SAy6lX45b_;3G4HOkx_Z5rN_XY5%`P6LH4DNbnz67%g=vt8`p8y-H zfVnMGE9GQPaQcia-`M#?$8i9#d`;p=x%#_Z=4;EJB^XoBVb%vr42XQDV6Oc^ zJ&)k5vG(}Qy=+A96iGbIo%|EGB&!5{nvL$ofOKw4uLRpcrg72-DlWb~(pomY3TG6+ z&pJrt)PQN3NdEYQX!RPw0dbKsZBQ64lgGqNDYJW(XRfb8ZxB|0hG2kf;ncGng9|5| z2V>$QPAu{>7NxqZ%*ndHTMCAws1t>uBxZ`PVUeI!kYeg+=klTjXiUPJOrjsemJdSK zkX8&FnZ4z(zKRO2@39pj?tRU=;5rKoEZ>G==VP+Yb`TyUwn@1nDiebRr(pN!_tZ9( z%v}7BoLMMUb<+FzsJ%D74kVu$A%Bbs)e_7@#PQ$w7~3ILb!o~O0Cjt(mb^ZCO5NOL zE5*JIqDVd<=Ld=Mnhc_?hriuOuK=C|CcwLE&j8xH@UDgS!MOI^^|cPDal|0EG0t8%!0Xpj|BrxE z&QESBos4kf7^UQ)2qnA#C*xj4 zuV<>U?LfYb?h{3PZ<}??_k`!`us!FoK**!2ViJ+LQ<8!R!6B}mq>oYr_sLJf?lDX@ zszjo4`Oaslcq|*Rm=~9lv!Y|HQj$(xC%9SR=OnU!`3aHaCCd2wJ?;t1w?5O8hnJ0( zDS9PUN{}6n@$?a;SBh$L&iHbi+!9w8Im4;!0&q0JRi$CYXc_VQ1pY(kT-}<}PznQB zUU(Y~`6wMF2wb_ulYgZz%heXGrX{~qmAQ_rj+IW`_!eY0WArm2;pon#i<~!QZd~Ho zELM=-!$^7gX0!qr5-cTB6=OY?cuyNB@wChuLV+bq_YCgO$;n`RFQuWwFa6&;$=LEM ze{6m($cEHQ^YX7^DSd7ETMTabNjXJ;I?pm9wRaF|W8RtEP1!p2$QxXOUz(^7SQu+G z*r)eac}iq%a7?8d2Q^-Ye+o)@$GqjN5UIdLkg9OAN=#s`@7h%EtnZN>5RbOZ#3Dsx zZ1sJ{iPd5edE2X+Gi@@aCG=|G6;8dA9fP=*oW)K^u+4S$u*M(Ix5Q?vROMV_e+11!B=3 z3tgkpv_w<(DH9VTcNf1TS^U^`Ce-8(uicEi=sI1R#F`=)1OXaVD``oEVju5}vox3_ zZ>VNwYB7W#O)mVD`dBK`sBDRk?YU=V3t4@<7DHy#34)^J8Ida8MXn^-w0Q}Fw?oU; zqeYQh8ssBn&$Zaf?A)*yUd3Zx0K0H)ZwsIw8E*c-v+xQCB8+LCpZsLBz@_uBKFClQfj|HA`eAMUfk+=j=bPVqnGH+q|6AxQ|kNGPB!Q#WG^v%pg@TI6*r zes5xDLQOX`J@45}cXy0EU7&iBPHQS)6Lz~U9^2G%G^K7F2E^c8WLq*5=WTqfGt~=W z@@ms%B^(pc=Z4~&WI9fr5*z-C0a3wh73+I2}E{Q!dGA0}>GZ<4IqQytr%OKd3w@~C<_$Eg>ZV-HHYNxIyQ-a-uq z&C}bY4=KMx27$?#F!yCc8wP>RaZpf~cK8q1i%zZ@Z0$_|>l)rgt{oXMV zKL%tP@KK^{MP|x-1ieff3B!1&E@8%gBrsc9}sxXgg zBmQA-gGn+jDOu5o&8Bnp{GjCA=uA4(fB9*B)CsM%n}P%n^-__*lS{6}=6;I``ITr% z`DTNt&=5s&?!bwJRtP~^-J~Ku|EhNF;Tfk*m@r)kWk!AR)1E2k3fhv3?g0H_>4;VZ zr6eh7rJ^50df7ZzMWq}n!}woDQyJM_Pd8tEk)xIN@a=YX;QU0p(EU#bae<6JRAc$K zkKRy%P`A<245tV;!4uQjUl&X-nqC?Ac&!0}iWdOO#5m!BU@uC^;--p%+-uPy zP6uVy+w!$2&RCLcJH>Uw%kAQ%!rrZ9x%#802N%_zB__5$$5*l`&%oUIPy+!B{rl>> z9R~f%y$n%^*gB2xVko;NBZ-FB9SN&4yjg`i?>yg<=Zs05O(2>jj>Vm9I45!BcU|(q zosxdtHzoR50wRL!-#(UD`}X?&1fara+SWzNS!W;pG|Z#-dFU-3t8H|ihKojAoWK`( z;Bpq@Ik;Lsn{@Eucy)eD8^ zJN@Y-IrOJo+{AaILSM!L$imaT>T?|lFeB#2Br;K(i0WslfFfdJe<4`9zlTy+>g$W?< zN%_^1g@hI*CrH}YI7lbBKm60r zGep;BFEyG0Bes0d*;#S#6N!V07>l6VPst<}q*4JgbO`H$PU11em7s%M?2PsC5cd|H zDNT1D#id4PGANGD^F#XEd-%WWN7GIL2GP|1#-Gy~u|rfhNTh)hVKD_9Ja4Qiu?v)z zXI4u{X#9S~xk||F2=DQ76i?3kIs@##MM`vHzw3*!(nSPSD}9Sc z@b$(R*qm}f1AGU(J-5qv)rL`0J8aE*wX~{y8RF!(DA>YPFL}?wC~U$Dd6Em=YtZ0( ze|nVff2ZR4!irK61qmCmXY!zYflrR6)n{@nUa(Z%OgU({AR-Nn5(qM->!A03ylc3} z+lqda3zHqIFy*MZhTIdX-=rIF~@)Rd?yr+cpC}h!*o+o_+MXWmb16@zBdmX8J z%5ab|B`{%uy2Ui?p;4|LqMn0wDn?LX`}z_VDCH9k(Hghol;Z81~Yns>%9 z5*>+Dpsj%b&v5xS?El>CHoSMi=Pgpn6(^Si9shfT$S1N^ zVK%-4a21UWUHN8#XqDa_^PK_`$Oa!1bEK%bxI>1!XK3Hj zSeUZT9fjLnhV|JcaP2!h5 zWR~WrxX)xmM$elE>-;()P2t(#(aD zHJio`CPx^M)E)&>*;@>M%XJYEPGRr1!wJW3*(!cVO*&_diP!|72n-vp4lrs#9r%T? z4WZK#zjnA5&zBSV+&v4iPR+0nPd96lWzE5_ozJ7zT&sXN0U8#RZ6Cy`CGUqfR7L_aQ&%j4`cS!!7|h`CZ{^Y7I}Jt(k&16>{|gLgTsC*avCB zb&~gs3zz~3Pir^-QxBfAJb`k?>L0KW?JLuoGovHU5)gc$vWwH=m^zc~i37Xq@)w`{ z7f4Wz9fTPJm`a;wT-;-=LNT`qvN%v)Vm}z5ac5|{>Q9knFwxBoZ#AjL&Co1TT#PdW z!2tH24paiJQ5Ej_br21;!h3>JA^W~Kj{3$?wIa*t+@o^gd@U=r8SH+v7Z2W!boW^q zzsA~9r5bY80(z6tWL+2qM#lr zz-2PQ@y4CG#l7WT*>bj0l}fEwv%HlHOohW%zo0adtdb(HZ=wE)n-LRezSRoz{kBRU zv)s+gg7GA@Epj^&H(@cGDN7iNwgkov9uXQu{lX}DzBX^$vTH&guJ65;G#vw&MUOTY z9$tH>c}`2MPj-@4Qb-6snRTG~=f>LUl>8K|0H{$DuNKI$ zF0uTd#f|i>kxHB;PFpJ|Y3U0HkNf0>Bxwwd-Ch)ALE>H_ikn?UYg;|W%ahsUDpJVjX-ELLnbQ=<67 z3nA;TeXOM((;~C<&bPPd(`f!XVA1D8#xT)aSRd|M5drH(Epj`GAskWIZ>m2Jdx z8e_-1ThcfyQ)YxP%=x<}TP^nQ{0UKp`_k+>=7vwdp-?MMyU%RAuW9Dj`bH5P&C!p) z5r{;}`A{U!7;UbvU^n9fq^9IbWTWTxPS4n+ss4PlKSs$tLX6S(VYdFu{%<#LlWA%Zb8lt*pmo~8g z7fP~#C# zd$nx@SfRuV1fIwuOGqM9P!f1&b~WF^^gGkZ|KGpvu?W@yOayR!tS`+(Y`|})4@WyD zJQ2KoDu9Jm7Z7g$0xjtuiQ0c3V5kVW^pLEKPY#Z2G|wl{j5KBz(Dg3RUTEOZluEj; z-^wwMTOzypSO0yCfPd^}dd<)fRv47=k8L@c{E%ZN$_Z=KaNB#E2%UB-h}{0X7RA56 zmMkbPX0`>KjyHoCb$~d1ZW>DBhwekTF^Bl-pbaDGSo;0ky2t-r5C6Uz56)c60a0fN zaW#d$BRc&7*u(6g_v%8kPI)aLf;|mdzG$;UG0UJ&>;f!ukWUV3*>uo7!W-XyAYuAH zB94C_7!Oa1Bb3{s0Puw_DC+f4*uij3@PU$b#LFX{7?iqmVQBnKHYfn;>KEzqA#K(O z6uQ|PPn|7RMBc>Sy1wK8NTgpK7M+BP6YxAoECQ}+RtThwR;^1~dIA&0F@ ze&4QFsCKi!{`>lb9}z5zi3|usCj4t<@czel?b&i#7}c>Tot0>;F#-{}E6B%GiYy0& zcRx=mtKpr7@xKrBVT%X!@MaK8=Djo&b^OB3J8*LyocjITKR>kmzUKe^4LrQ9h5|En z#4v^bq#24p>kmlzkn!5zKPBb-hZz6wuVtYueMkc`0X`rP7MD;_`M+t-W=l}Kd>V!SM{2iBp{DyuMgE?Nc+j)GgByCw8@ z6&Y}uXc+#)JJJ33wd{ONW(p+3RqG)sG#h3Twxm3uz!=KDgH1pkw(#wUHWcUw2^07o zDsgXmYhV<`Kg;XT@?(~uF>&|+a+!Yl!rx2{ZP#BHtnR@cqP%;Ms{=~wDPZaf;kH0g z(?|)&-TS*Az?16(4*LIY)Vtr_{hPM!*zUN_ z-EaNpZ(-^`sMmkKyZa^W5%Ixyr-bv+)&{WAX5AKyL`r}+b}qi_f2=){1jyZL2SLZL z$gRE%&1+~T(9J?Z;ki-2o!1s{shNg^!qeGj9 z=MCER7wtZfa65|pfH&gXAxB8d(LnWkCE(F2CkfCp!);)c2GXOg`7PzQ#(+nEE7&PY zcYmL@Wg`gh3Taux&Nmtf@(=8bx4b94(*o`O+<*S2J@D66w(}GJx6AX_J9FoENe=uU zR}CoB|MN2b$CsZT{(;Z_$G@Qe{qfhEdiMvd{?Aw9|9`u?9~9pIe|7(S6i~t*`Tww( zuQ&W{3v6gFu}w|auIOE{0DDK;{m;+9xK^xWL9zR^e_5#kCS;H1p{eYIA#Y|-&KH3G z8g;3p0Vpg78C#M67NmhV{v#kWyEdK_n+CStX!ACZcAJ8H9|5u*kV-NM<-=+XKQ#K0 zXnIj=^z{SRK$DOTh-$R?pHrCeL-VhT}q6OSzs?ZLJ*I@wsJ@5#af3K$jNc8uNA=x{!@-Q${ z2aWMVb7mr<1>BJrx4r+PS2|2FU4rKEK!MEe^L_YB&Et`_2&Z)CF-dA2R9x9W68agG zEe_X9FnJickR>9jQ=wr;F=F0=jssmtYV>JI8kg+aE zax_2G%n-khwImmecGX##eFYTTZ9udxh=YUjzXO=c;ATEF zp&;_f|)_r9erY-!IAx+0M0!d*89)DKLPUM%;`xf-n#1YAtJw2dkz1zP4A2omU z)Sp77_b=s@ZYl6x9f0%@g`o(myAVOc{2GCe&XB2oD9jEqN#N@ty=x9V-BiqT)=QS1 zFlfjW3Q0niKd-uoZZ}%u&x^(jn5BU%{F<7YwVH}TqoywXgAG9J z&uAG^kO>9Wjm$w`4lLu(zKYdxrY>M88*Ba)T3gTma@$Iv$=naO+(2M^H(Jz(xdozW zOrYXtvg}0kc{ShWQeg%8uNfjv7}#=?cH+&umeXPNLg0$}HR!UCm|Mz;Dws`MtG}WRG@71Dh31-}{ElKqvH%PgFLw1+98_eWha)LNrmj!4Co%@jEmiZ3!(p712lcF=AV0|IOE?@ z*8hEO6dne#D!2Rd-~+n0)dO7{itzmI62O=J8h4|KFCM| zZrl~=s0KKon5oji(h7%v@OI;_hK7G^5hkOZs9!D(&w*C$FZC6SV@ZU~5m`C*9q)W) z0dECuKOL}vn?tXxJN7N2b0aFF87jrr-w70_)GFo)ds^D4YjP zG^`sIJC-n*UkY!ZpdbQZ3ceS*K^GOjpmV>&5H5)O3b)VFq@qsW?^nYLYp1qzo)JAi za|sQhceEv=^iJ&1?#BfGqzh7t<*-Dkj+ek?eLim;fi_#48|g6PlR)+i1WBMm-u9IF zLtcgb%fB4ccYoKz{V(hK%I!4a@G^8S!^;Z($p_s&EhPC!KWsuEC4@!aaG*jJ^`S;6 zJdStnD6sJGNQC~ypG$?!(wL@|_1_hnH8#6%y89T>?&v}eBNEOVXN zwcXbxy#BYNKMr2cds#HEA|0@y8<~kv$*YvujNvCj-ayTw1rTVEJ`Q-x+l7J^&4@0$ z-G}q|^|!-W3Vz)-ycb#z;a0^ssbeVjlqjqKqSxChdVq7g|7a5eIN2VWMn(=hmZ|JM z7_H!6KePCouhXE!y_^VB8XrDPXKKv>?ISmAP9~!6YYb|f0y3TW*YaPe2j^&O<<;W{#kkIo~I^xKiWlQ27 zgW+44!pb@Xah$NsCYOd3Y{rc85u+Fu7PkL-Ej-8j->!;9>*3Pm-i+lpu%;4SUc-TO z!mx~pNC_A_;|(;Q&;nb|I$^=+ZQ}jW^gQ|%#I?MGND7~t!ue&IxeUlnq$yJ|a1_az z?f2J9JS7%4lc-DJE^d{z-U!PNG=18C`+)YqyLE9taGao%_=+gNhy?p~~3Jj9^LtK#i;9L`( zs)vAn_1{s+_33u>Z>@tP;YXaMgHLXvtP{Nm&@tr^?gS=ZV-pVODj)?-a2Xy#{tFQH zrI=N%IiBA(hi_mmjZwr19nwW`0b)FQZ)Pq#;bilivSNspT$Ib-pp>9J@@c^2>6N$a zFCHF-aHo3H3>o&XqYj&+Kgu#O2_+Njq&`v|k?}TmuF65un%ssr=NyTTuz~7HcgNG8 zJFh0q`P*Tx^~W-L+pAW;{YW;8q~L2d`*BZB?2t!Jxpt`Q6CCMD zjKV7FaBvx^m6P@bm#=Fr+5PN_ex|F_5GNEhD(A46i>}IPZS4RQG0_0qA^IRqB>9FSxj9 zvIWC)5sw3poAfF8;jITUN8jQ;=7*enInWXs`r$`SJ^FtaPm^Dsutvn=-9ygZ&Cd=a zidS~LxzlJEGjt1w49sLgCdBq36i%7@rS6goYOyNjfODwSUL$@tRNq5eTQ&F`-TE~a zXSu_6gepc0Bx0+6KY^c| z)pzR$Y%=VYw@Re`8n(!)SXzsvqn^p5m(FrgkD4|n_P}?BIxxRnZe=+2V`}qJlJ1qq zX)HlG8%W#{{BbN$RiuMZaS}Vyp-t)_pYold=zCpl=IbYvHK-R*^Hb4|Z)+_8uL50oo@2dFuMx?^6c* zu$rVIN2jZdeglh~Ce26)f@5_sQ)4BI*4e!yXoIl2+P9TWMc<;U1$|%SJ2=B>tSaoC4-Yg zh);yHm7_@P7COzS#3+&J3q}W`cw!D9rL5l8vV4@DCNL4$DERtET{uanAzEpv*K6!n00Kom-6>2ud;wt<=3r)Eq-*%w(sz4i;?f zc!S$W|Kw9WMlYh?<*%BPQP=*{gND$#5|rA|(v`pWOSJlI0uQ*u^INauydytIi5~~| z#o8&cj=x_Vz&H&{5Me70>4MAVc<^JpjlR|BpK@BDt(7om<$t^*quTT*DT!v_ z4~OWC&3_x`(3&obU)KHT&$zCfJ>9;wz!CiG8Sss>CCCTN+aezZ2LuWs1(}2~)*1dt zd{OEd0m*VR=NkRtU;b>Gbi(Q4O4cue8L)tXqh2#NiCNSF3cl5hiCP1q>AMCfmb@AU>T!VKZ014|~>Ad;l8}JubbA>}Q z*iw&n@5fp0@J|^!6#fSD91+bBhg0J}K=@lwYKZyR4}oeW_>frwfqsJ%9?h?v;_zhj zCFO2u0~`kgAVL+lT(Mr3-8FKeWYpgmQ(lTNWg+zKQS0z9E&@%!-F>Z9kKml8R^&9$z7r*&Iu>JBX0jKNd_ro6Db;7X0KQd7G-rl+$EwymKSNf+6R{Jvt zzWnktqhBcCp4fN)GRf>=?gA8_078QO17ZLfp&$%gYu1j^!|T}p<>C>D>s0_N7^}8b zrN!=xfUgY-Q{*vQZvQ)b9DQ3Bxn{t3Atd?&Qjf9+Kvg_$^QH4JT3^7ZNtgWJJ~7w@ z2TsgMgjwwM`=&&VKz~vs`T{4cu_`Hzqh9}y$IwDsV6tp4bJyAIfAPAVfW7{wV`iU*#j}66oz%SYEXV%lta8WlfV5EOj+R=J zt>wH<-<(FTRdDXazGOp$em8ui^^G;y*7LwZ9`V}+E9bxS8j;~&AT-kPM-4oBL*)h* zW}NNilsL2pV+EEq>Z2b$GCNSh+K4<~Ia&_G8fyEeAF0piPYKG>`{7oUIAmiNT0>&4 zc(fOVA-m*lV0V58MMl4K^iR2g#TjQ8V}1=ky3`-J+n(jN*#gJ&Wkr$bKY9$$AFZZA zk>i~gwtxKf&2~@hQ;!1vl~It1GD-0$b+$-=l`w+Bh@%Ch>|7M4D|+vZzSroVu3eiB z&ENomAWgP!?zUj)+yDv~`6dpd%iu8V5(9^BjUmP4@-2vM~a-^{;?FAw8s1jE7Wnou=&Rxo=Me9ykayX_%+$gYxS;2zX ztA};ZSByTWAFnDT_CRJY`NYqatN_rsz4dPxJmMTVvKeqeWBth)o}hDA;+*y0=|N_s zmQZt5q7}JpWkdu;NtJ`Bl9oXC=3||RJib+M8}!@f z;OD-UCuiW9RRl5&(-|bK2_5Q*)qp6?j`!_4>gIAh79jv`d1NEniV)%#4UgKq4C}_yRfp>DvsK_2y8vO9tg3Y9 zS$XWw}Ve$0gDxC9AvSyFI&FG(D+}F03PftENfE#3l zAkWd_DbaB50NTF&jsTuygP&0pTAK-cigg7C#ou#~zGOeRCh30{z$czWwN*VK#r&JkmvWEh$XE*)erG9)v(RP1PgI{xjB931nE|!a||NF%sH;(@D zzc*yu?fBmt@~_+Rzc=L98*)0^T=j?IXQ<@E&KpyBzM)7fikiz3_Y}d99fPMz*qA>k zDD#uT*|TJMfNaupnxdAu)$upiA{t|n@=WZtpFJ1zyXE+d%>Mf29SeSp>mKu8|NV;_ z4aEe0AkS@mum4!#R;^dQqD_n??4j-&D~*~XdCT{`8M%7(!pR+@iM=bg@=4*B0r&}2xD{5?TCT(bXW zehNHvJ|)z3_Q>5MKnlD7a*}GvBs<3`W|9X2P_(!M&v`a)_5Q7#&(l(995MuhUev6L zdbo@-thg=YeZ}UinA@8c`rX|3mFia)AmucJ$sL7j^rCGfxN8gMJ!J~JHV+yh0;4Mq z04I<5+n7nEVBlEMldGth%g~?$#9YRpjyl2b=94C?d@$?na;_c2FojfAyoW6MF($yV z!7JbZMrbWT=`i=54oWTK{?BiNj$K99f})|JVe#)yfV{FYAapSTRM;kS1oU33J%1x! z)eCf#G~6V=ZsQbW!Y}Mve2-R*S!H4=(D>y+1n4~}$sB#TF97^Gpc%;sjkBieY7bI! z=ji!4#Ou*;hfd_rF>U;90?yOsOG|vbP`cXa@wrMg{gu{-Oh5f4UU)#}9%LRbAaHmO zWz+fJLl|%5+AwQu`+~X~$jR9-$=tsNog*|+(*Y_PV-N;y(_59|xw3tqZHX6oDxf3V z+6ZvP3thWW-$}jZo^#FZ6WOxiaXkiXrxzhb^-0c9Z&GK@@VA^4Ag95-%-hYr?a++b zMHnDk#-l*|P(ScT3(UCAilAkoSL;C3;s zcl3~9VcFyCqkbs|(lcuiZ!slV{8P>}v){D5qNwDNO)(rQmGaC4oY>5%=CJ^n1GrU&oJQ7Og zAZ%{(#x;2BTd9DDM`@{}hCGMnKn1FLaM`rmd(yFVQotInso~>*n8OV;eLg1Lm8C!~ zx3O20b>h1|Ul-}4q3(sg0{JlVoe60B0>%W3!e^x?4vp4+f1t4S00ofOYy_PB1@>)E zpMN1VzjHA8&J$GR>?z%?cu6UrnbESag0}`gWD;);h9!n86nE=hP!pp!l7;1gjNhgu z3hw88Ri&2R{U;!yDdsImfterxYz7BPTvV+%6RpI@thNFzwk#j%SSie#TKk(c*Oa!U z^Il@K_4i6Jqh&0Y_ujOsTMv$r3!w3v_aR`A033A6Ly^4ySwCD+N*m=_2iV(J4}XVL zr$IbtU|Wq{*)~(b7kK8kU&!p#y8Y&`p8EpX^^N)nTi^?7w`>Y57np3O{DBaYq0eV! z_fGSaf&qR5bYCLkzo{@*sygJY;hGldueA8S4#F~mjW#Ccg=cTJ2NwAkiMz^zJPJKt z5D*kMhVXOeStnL3(^o^L=c1FoH0g=Q3rudJ3Oo{xoG-vfzsJDj;zwGyYHXgYVdv*y zePjSN{Kfi1=;p~C{KnwCQq%&7N4UW878~a^LQ%SuP+v2iy zB0_8@RJN8YVZ2H+q=4>n6OOm$vb6A3ZnfiTj87uhalSZK6TpmFq-;>l8k%CE!d<=N zIr=E);wO&9LtW(?34gnJ+=aC(MkrXI1+y?dSJ?$`^?P!x~2RQ6*^z7^@8( z-kv6Flv2*jKR+&2PE}=VvW0FyU6U(DB|IyDeUt$in64 zJrI$s8;bl;eq4Zg)7ra#OF;Lceal?Oag!NN0_$gMD>j39xDb!esHTWbDt>(obanu& zNDUTM3h1M?;WBN?p1aVF=qcS*uqMg`+4GAWmto)^OCo49NpAVt|4zh(!%MnrOZDzj zlTxeFBO1T0Ki`z~2|&dGBJk`C?$zLQ;_!m4$(L6CST18ca!&$H8X1FYAd2fyc*VqC z%he94@%4b$wSU$zH*-Fk$sD}fh-%gV%ozV|+eQaCI?RUTu}~uCwdI{$ERiy<%XGq_ zhm&`DSC!3^<&lV&)>skw5Y3btNV}1rc^)FfReLMOgJ%3jBZt;*5M$ls)D@ayfjgy- z#(`BwyP6y@1E?YS(VrKxv$HFM`M&cx^M5}MsK#^{OL7H!y|2r&!p^}@|2$Rjb|eIu36Qe{|zW)`b}z!9x9pW(Wf=Xos%wN3=B z-dV0^WpU_;CqinpJ;816-C(}l;FBui{1c9L^(mOqZi)w$wW=AGu>qC})L$a#MNOJt zLiH7GWD2o&in2B`f;!!|_bt5Wo;V!C1}RXAD?_J;cV|D=!dx^B z>zr?6hI6wU^NzSyE|Z2dgXAIZw&*mjjSC#^&zEh$#(OGp%2^`eed>qKp!(# zQXDgVg5#NcdT_x5nWn8E23F69(%}NavT5YO+8+zo8s{z^Uc&8KDcHcBaJMadmW=;A z68YgL%Bn62;fN6Y=w`ycLW3I$0F40N3aV3Mf?WCQeh=UqHs^h-8qf|8Fi9O_fV6HP z;r9ot99LvMBFo7giv$<~7o?SWnUDTlw+yVHkNq=m3?^; z?=(UP1!oXxgRbSB7>Ky&9$bR7fu{2BwjJ#6ls|5QT~k~oh4@qGAf3sSAJRLj8x?w7 zhjFAy@az3S77bW4b#Ylq@D0mr1Zu8GM~?CbNXrWx261R!z{ZMyJSL}cP3_C$vU-fh zo_RpwY4^xerh+W#0?y!EHJ7htls2t7_)-wkN;VvY)?{y-0)1BSm(P%fn@HCJ$|i&3 z;&P?L8*wK0AW`#9vuE5A*K^samabi&pu%Ybq1ddCnF18i+4??%5!fpo za$)+m3wk1xXHZ9}Y6W9gxE94L>xjz@R3O+cZt)4)$<+w!1~)tr+%X(UOXiZiA`X|4 zmkGjlrGOdZ%9+2tQ^O&Hn577YyaD+a6qs6makcP=TRqMrM_o=xu&L%A`2h-4;8wWW(j$8<$W0g&%uIdNU(%ScHhE|F#wn2>JcFC6|X`}Wi@>-83XZE@QmuMu}b*@~ZhGEGK${}~S`T43Pv zR%$<{6sH}*w>2gdw@ED@1h^5c7;F~@ggPvozdE5(%!O|GLOcnBa}m&ILV8IQ!JIo@ zy-+Wu?Qbgm`XM37%lr-2#f#fkb!@M;+{HFNWjHx0!xsx z{P4PNSeGqrn-doXPVI%yo5fV2y4zyR?%p-fbF~adL$sIXkr-fcmsfhrSaGl4g2Eha z8|bC-Q0gpzD9Z%TkFW74WgEEP(Oefg5cI9lpcb=8l#)s*w<(!4pM{#sI-z!)qvK?N z>_gaQg^0*)uO5Ml^i|Hxbz3D|dv!uV7>F79;$8&k&FNS{0i6ywW*1*Bzg;G;Av0!` z2Zd5*j+Pis6mw4P(9PxkS-!O2ypv2bs9h1G5n~Fvp(dI?0|OzjsP!{b3o^0(6jmf8 z)nZfFWHD)K&BK`6UdXksmZkr^ zh_IW>^fOi>5%Tv$(GyjI)Onq_v(|0&gSH-k!FoGxMG7iw1t@GHv)e!jk|Kb zz6$Islsy7IX@}-!P=T9tZnLmx?ja=_mEhP}K`-h8bDZlV;_mMIDBAi5i(u%SXL{^? zSFKf|zpm?sj$35p$!oyXi5si5NaAvht59L_3?;$mxIv=D2sBoaZTs~^GFJttpbk9; z*Npwnw%5ZTUwe$$WmC;;tx>n;?bE^i2umHZY5)!kShZZ&i-{^sdqBd5)x{FVC)3O4 zUfB`&KnB-RQYA%`Llu>H|JKm6%-pBB8EWC>ZF8_Ymkk_g5c*K3VO~=gsB}Q>YC@6A zJYg2~TS8y!0%kAD4teIgPRQJE==-<1l1C6SEmDKnbE~`;bG6;L+!n-FIQ==o+NC&! z)W$-r7n^cs0j{1xqlEXpp|joZJa1SO<=k&3Np>M%``J%@S4yQCW&x;fy(+cVIS1=L zeu7IawDNWYN^~Hj?SGYYe73&)^ZzCNT^CJkel8w#Q$#7y3( zGsWg|U#^=!Hi>KER}H>WTVK2vHX9MnnD)Az zb9=da5GYk@jIG<&V$a7iLzLV;fsC{9y`SoG7{vGGjN_@siW*2XbQ`|rCXnhcIPqs@ z%94r0K7tHK8bgN%O~R8y%oDg8x@oMnh9b{wDDJ$9;z1~rK`Hw{O*bN}+s@dy=fOBi zFU94Uf54=Ql|SD3vgEA=ZpjFsJ$Z)wP^EaHw7T`!j6FT*am;_pbavmxf4#FyfS0F$ zr)2Y$`1Rdz^vg>^?X&h1K$H>!lYXvDU9hI}l))`_2~7&Sl&lVu z=98-1;9h2Kt+{MuQDZx8qWJp0KDTB4w z>fW~Gp=><75i8E%yyKG?!%}8mei16U0%at`7lNUDI-*)0hqK1p7SdNweFVrC3S;sy zmVIP$(upZ$M-z+(Hmp;UC?O+ELY>4jmbRb+I`G~KV6bR6{_?&eX*WhaxomS)JO1p# ziY!4=h^@^R4zjpa6;qJOJMo&ttv82XyXVKER>48>q$(zo3N56h;$}d*RLg1cv#<<> z3Jnhnn?HwEtjs{tEzA2Qpvd5O-R<7gy=?Pwr8A=p?4aR^5&0ZZhrrQ7GXfQUhh24tv{D^M{rPboX;4`^e>W1^Sp5 z!_zyc_bcNT+|Pp$A_aR@wy~2px#i^!wP&rmSe(TU$Et6dN*b6r_qu%;ldKh$V*iy7 zW+Ptp9IYh{DjvT0|n?yi95i zk8~2Yyh{BBqxtSIntgJ+ekfXklPAX(TevEw~Xhi;l(a@Wi5 z>Rf+m_bF@KH#q~An(FY&@aqDc_Y z_XTrF+U!*=-*Q+~C(F(>FVp<+7*Un$3A(T7iLkn9@%r%Hk_O9opt^a8qZLwLp#5r! zKmH)Z*Zvm32fJrQ&8W}a07pa?3=pu^7N``qgP+nDWV@1Ld1MaGjO9Q{my^uQ<2sYp zi4U!xUyhLsI%EWg5(}uPF*v(_fSQZ+p9^nMo}V}muZ%m$xmC~ev4)*hnWUf;Fs1ifwuXKedXE!X^?L8J7FmoC0+rxuX3>EK1eQ6e&tcbbl#^j{V;Z#yi zJc`|{(!H}@M)Uxj>FVlAO*BAJo&m*@Xz_BLR9;d|(R@d@ozzKhjS0%R=-zfaHvb!l zq2eqi1`_5#BELdQjsQ$WS*r@y@@-jPFmP~3Qw`cWlr_IWBJYmnAktWaN>wkSdi2vE z1zt}y1!wbi8V?N&l2;p1_EJS+=aW=V@Qz@ea#pxXCQ_33v?vM-nj+7TN%p-y8 zlJjF(|GX=!j2o~+0C^QGI=dN=r&#M(iXvIvxya=-4^U!xfoKJSLp`pOK?|~4ShQGb zj_I=yO4@7u6bO(6kz+mfH~`HyI(6;#T^K;BN1!|N5fxkr;-!+_B=?KR=gD@_@2fJ~woz z!S>}kt!c@K@lWQ}1AYCp8IuSaz#4eczN0KHUc4|H-gXU`nyDjfE+CsNFdXoj#F;$u zg|fHzxD4d`_Cf1t&*`{hKHmdrWLNv8Y!*%4fW-eY(an5`y}qG?ydmh>k^qlkjK+43 z63hj#lS=iUs7TWt`8t?76zv=#t}C%Vx={8>Bd8s9MlU~Msbd3OL8M${C`6}*bMEppC0ZJ89iy8EbC2AB?*XQDO$9BZ);t*0kvVw|` zya7bUm2XmhrbH|@q^-9`8%#b1-!)Ug4HFnx;cMb2i$fg1 zm!i2cVNF?*tq6}sz+0YtNYk@O-$|n{a4UC5y;WyipImF9aBjMwfDg~Qu?pS7>GzxX z$&1ezXCKEm8Spx#ETK*Nci0$WD;xi7`?(>*o|BmeeZhPjvW@)r#_*FuX`n@8!X<9k zI+`)a6hw?3ovO{p9ZCSTG(cnE2D~>Pc0lat{jfw&+D5+^|?b0dm5)e7Yg z32^>2Bv{NE*;yW$0hTW%?+yPmbNQC6g2m68LjsvYXyl3xa>c5=-I`WFKwIc))q8Ec zVbsNGn!Fu|VcDm@afGXi^K28Fw0v9Pr(p=Fx8@_SoGAi_Z+FhMLZD$55P(AR5E_v3 zC1~Pzq7ew2qnb7nXGe6kFyjV(9tP8Sk(W0%j>`^##xwQv*zH^vv@ZZU5GkIjEXV~K z0fRo>aQWxLNIs4h8V{8fnY_~vWWJBMfRG)cEu1ajeX5A}?P^kM*MKmwM)njNE}HuS zCI1?BK@RX-=Ly`M-W>n{6Ir={jLD6JTW+x0A&}Jw-!9U7F>qS~?u9i@jHpQIYE;an z%vEh(3z&TigV2D;+0pT2a(p|g-Bo)FF4Di)c1b$ycV1L&46 zmTHTaz#41>W>kW}h}{#tXaxZuoOwI&szyn45|OvJSQWDzVA0&avncB~F%g)9Z=f~a zSOePUFH*s$Qh_!P5s$NB2b-SNUHfUAYqlI1lN0Z|4m^7m20~wGwln3_)SwaC{ zKSs^UL4gaN{(gT0@1kE#vml6O?ps))-K^v`$NDF@y(gv-l>DVvCbz2(-pFWAeS)5p zd*`5gw)E}&;V#9(lDiWK8a#BSEODwx#REU zm!zk)6_H8EH6w;BFZxx^TSD{J%^*-*Zf2#IF91L5h)8{K3t(2 zpeR_B4}w|S!j!Bq?uh0@0F5f*8QFlV8{ymT3AipQT;}}X=McJyNICw3FWP2G(B7~! zp)S|b9ntJ#3S^eBdC1)w06TkhHs_fB@mW-(Lj4h|?y6=4MG`}C^P4O^Q;x&TLPI@eoGFN4?AV)4d9Gl#07qd8dd}8k zHfGeC_7;L`e?0aH>YfV8;f489Yg5bzjrmJ=-nbmyX$3`j~I{`}yNeDwSM zMKKSsOHO4kdTZy?D#(U7?gfJO;@^+qh@S&`aLc3PP|0PSPh{faVGY#Q!MNAV--NEi z%s`r25ayxlmb2D3X-~4M5e|t?;wCcCfARV1W;C-mQmYD~bf~Cr8zodAUXnhJNH7u~ zM49n3*CZrpvE6ic20vQ4TtJX|*AqChzE2A6do$*p<>YBnN(LHb%I;sqh7duod+3?w zCa=MTS5GX__#BLmpHUtzat-pgLg~W0ZNOL>u zhKFufIG~$Gw`Of?I2IgytB(6ys=sP}kj|`P57M`APjE&$_s$|Kb3De0xEA)*lDxGnQ zs^A}-Ho4%i<`ZrI=%2=FuCiSw=kTidX^4Klb`YtUVmnqJ6mX`Em_x_;;2 zMlKh<-+~n09e!Jiq3fNEkTXm6A7);K(428wf$t`CT^aChuQ=7lixw;@UKj#NbU89| zN+g7{G3I=!CLQW8utz1JWikSu*h$Ja6pEQz2LMQ-BFY1!DV|kFFcS)HE--t}Sshs@ zD6w4gDKDdlHVEU!>h~j5kkI1s*U|&LAU9ajwmiFJ#zPuWR>~5Bux4Vgdh$m~etX)h zY!mieB_gE(X!BBy5?EWjfZ}4F?D1paYkfY43|l#Ds`CCXsD0k&u}W5|uPO;hB_Fc~2!F9NkkOT7ijamaZcQ?&+UGblgzEaJBUV zd!Lmkecs0AVEaOTt~?zi`gbVH1(laLJI;4d8Ygo>G^r;M5*eyI3_wdt9}#t#jaO-I z1bV9S$Z?7kKD~|B@WoAk>U7%zUVYm0J0P=^Yt*Ynv=uxz58gDZu=E{4_0$dj^@*V1*_aPM8{f3A0S5_e7fT;= z@pVljl&l~6ftgE+@w;*y9L@lEaZ8Gt^rDXczE&1bLCP6Ozp0;=;0qd!Ej0S0bI1Sa z0jy%fS#iFfP(T9Hgsj#qp^pR?O#S8vM{szY^^%`DR#U~4S4ta?)xz+DQXgggb(2|W zjC5%hD-T4ae2LQ;mqu{!PXv=ieIx1*eXy_5>JBC7++~W<(4MGMp$`NaorVG=RoNIW zQ}_)4h^W9_<_}+#`PXWtM0WZo$Vu4>&5*8Bjfe>7+ymEj8vHlCoD-9=Nzg!I=Kj}p zL$_k~Kggmp6_M|luOTy$V3B{KSHeB!PUgOZzrj4wy;}ekT5UU^Hq=Js1oQ~XidbC6 z2sP&s`xJo@l@1WChzq7X(+iS|*xs(+oqRZ1`9d?13q5J#WS$EBB&QV zP@&ZXnh2j-W<;Dj({6_0!jopJZ%|LqsmCy*Sf zZI0N~d(7PWU-_;21ehl{LOZqy?t%Vs?sUHo0F)T~T9LD&O^bQ)$}ox=`55@am5mdC z4L4jZQL=l@TYFGba}pholmMUsd3RI=GdQRR{OcqK`JIm*%toTtxZzOH2{p8$JYoBa zh#ST@NiSf`U2FyOVX9aC>&KVhs$4uhMJW&LM*~n+Pb3n#gw(?FQQpsl@(E}a^B_!~ z4~e1!*7>lGZ9<_v^Z96s9sO4l=DonkcVaa!Ey(w{GV`=&VlU80ECCa0V-jC=8G+}3 zZgp@8JPBT)3!^-+P5D3VBRO5#zjC^xhjVA|+Kke0%IRwMX`Q6cAyG1BQIMoZk@L)I zs5C3NF-&DSA)oIdgQ1ZhlvU@UE>3R#I>k_Lu_U#i)5-rN*^F_+T}%1KCMaPO;itew z#T+*v9<$SZ?9(!p6hv<$kDCY6*kAy1q{ey=6V)0ZRs@=C)=~bN^X`(K5#3&*8(_S( zfJ6+{wxWc74`!0h8&yF4Pj(M&kEvijX!XD@W&4pbn7#t(5Zx5&j^~+cV5hMaV!nin zL7RuZ4IT=mj%C2#rQQUw0wU$3l9R-2B+Mi*qT3J}cE3rz1XNIKN}??IiM8FVkIt6g zJ#(T3Y6X6(i70=wsa?Xjg8R*?W2HKBp4{Nw87K7}|F zoKhZ;&-C&vR+r+Jby=T$*Czs1l)%vuiJL4rG>Q5Ai~bmQ?nwF}wB~&OXcY%&PETR+5e-S<_Bu`U0&XopMTH{NCMvCfR?@qrHa zm_8y(Q1|{<&=HE@t!V~mdmj0M5Zy3F<2+07pnCAJfqb@sza?1}hX%jq;q$rK8^(NX z`*N{PaVQ033CYQM$mm!9&;!5lj6CUONjA%+%%s(!I7R)LOihE zJqL9MFDU?sIw^lTcUpxK`?Swh>L1OEmmjT}*9)dgi#m zBDe`wQ%Z^rAY-fb)GCgeHsIkmm}(bch3oy&HCH z>|5!PZmV2iQwDCMm%D2Gp|+I_y%=%U*Z@5ns*jv}h?XF|A7|wbw1$Yb&SqTLza#yh z7EnH-k%@U@Sp*GsDjyvyLSud!!HRLqg84%Te zu!w~folzb46O4Zhd5t|2NB;l6ch&xX@4x+j`<)vNH4lLp^n~U|inNFrU~~>xM2sp)n~C0qu%s66paV{i~<7emac zfFZHYnC3#t=?H(_R=Vz&7kj6e`DcgH2}gkaY$A7iw$mv>voH2rLQ}wHa0G)bRsmh; zheVGuXcaG-IYm6T1e|H%OEK`vE2&O1x~I)lJ84l zZClJy>O}1m)#xUicn-;ZK0XN#6$+g1e@Xe|-l?xR;Y9Zg*_M|JL^j0qxo?n>Ki#u; zN>A0rD6JSrRx`fv4aELSq5PUf*kdrf`UoJ8X9}gqUS`-}99vKdhDt3YS#d}X=l zDIG^q0Y^ZaMM};*AcO?%o!;nxAaBnWu+ag5zOj(KIPIQP+te;4PwE&UNF)W2a6Zn4 z-EMW9W3Q6&_vl3;VoOL+K)qg`*#FU=rcP=?7u1^AuoG|B4d8s3O@%w|VXQ2I@;YZ4 zs<8|#I(*xLJz?XKOXU(u3l*; zk4w}jkgA&n_d|}!pYDedniL^+cEo|8mn>+~7ZL-v9fyE#HrBBRFvP`xIn(x|xAthl z`tpk1rFx=1Gb5;Dm2~##UNs;guFkJ-dcQex>q#eM4)e)D8QxnfjrXW^t>2-pW`v{P z6ELI#X#3I%u*UD=lcKcnvSAEOP$zgrN?%L8PfddY@A$KtEayb7df#LFNg_#24g@vP zXnUQUUv9JJ=lT#zw1~0VWnjOP08sTkYWJF)hxFmW)ZjAI;?e-<%9Bo8h}twhI9nmU znqE{pex-yO<-nGE!XH+Mw4D^Q!`rmQ?+Z*``n4}-n1{OC8le~QLhf+s>&VGA<{H$C zPdJeq4}2AmdjA6yKC`I?1Nc^xDv%_E&y=9{DEoYMFZt#mDR;@mjhshXAjjX2`6NdW zUqnr%q|yoK9Yd7(sbMvG0H?@By1@mI!kJ{qv@$GH13zKSFDqjTLs*1TMJIPCSW!7No@`&TXS>GFIk|fR>WODf|Vwb>GyY1nPqy?pIoW#7l@d?U) zDNQjNMDn=?H7RUIAS$vyptb?AO(jVnGqLIGEfmj2Z+OQneg|mQOHD3f4L9_I8YwmL z?haK{J#o~Hvq}mvk1X(3p#wENk2F(Xm~V7{KYNXD%}P=|Q4d?|ifN356^m5kubsf! z?%ty@!+X1?9|=%im-Wjo&SuSGfaeTqSNSquCrXyM=JW40sPk zrxb=C<$ZtzDzA~&+xd|$E6vUSsz~>V!|(~vyFmGr)}{U3T6z|<34dPVBLSk9&%xB2jY>WeP-b+g3gjiC z^M`Tzs_YxNaa|k7)ovVFzz0f`LpC2jpw^WI{OBj7*J(xG61yc>rK|y%wpe*%&Ip~kP$^Gil&C7TNKX0P068b1P-sD8$>PnOr z%6CJ-HAfl038D6o?Vp&s?>)Acc9l<8U;i{jW*tG6R8$-r8falGSv)&qK#-&w9qquP z^VO~$>yyzXk8?#Y!rpf+vHn52ps}aC*)yiMaN9?mA5R=ee(#l<3cxA4q?6xgW;i|x z26!nsM!=-$GcKUc(%n`%gO6wEbyM#CjBr0X;Fs0MhN zlX8Ke!F^kpG_M8t`8x)Nw#HPO9Y?wZ70z0Il%@l2vwVCU=^m-7MhCP29MR`2abz ze!kK5&3wJc+@izR6*@o-2LTR8t4CskJ8!+oeb?VourTv*4ID)AYfi*C0Qa81uV*+}a(JNW9=z=o;jegK}OjBXu;6M@@Kb-n-^z>kf4(!`Mn_(;tsQrn#$@)y>`8UX1K(l< zgKpD>+u8O~_{<6>^c1+0Wc5I`pw6zT| zk`W9!RylmG??-}gwfnfQJ!Z0nc4z&(6!kzKk2T#VoqSpj`?dtHW^M7i6m=OrgV zaE(0x?I-a9BNwHCi;_fxc_YezWunOf!!f02;=ff5a_v>R_>@8&z+PKF0jToq2qtdS zw>e4edl!&Q?cZtpWch7(P^!_!(7H1qIYmZ03-e0k7$TD^Ksj_v1l79=$yAomZAHvX@TGv$`^PXJCB@GDb;CZhI$vp}U_lwg=%Qymw_>!2Gu+{zdU8 z8}&R@Fi|Z@POF8k*&?&d1;agy;Su=6wo^lo<_cvdC#_E5RCry(Y@J$EpxH`>u2o21pD8YPOdbCJ>WDhv1RBY`^V_)7hVd2 zBt0hc74n~A4;%)gF!iHjisV-Svqsog94#HVWkdj6>-!lIS^NtLh$;Uz_-yk6B!k+R z+;HuS&&2na!l1E@)^ub(CqcEMWf>+Y zJfm;XRIO63Evz(oK=Q`!WUV2O>xfk=#7v06F$T$f+7t1JX2FDswvG`?3PlozH~q6t z1zEnRhhjULm-c=`T>)Q%fBE>PwD#lmZ>ljYNm~cr*bAtD}<1Uj~{1pl72L3Ad zUNV7{9eg|EbjYIOPj9JzO!J1;@|F?S%J0a&IW?;x7-vY-sH+k{rA28vKx2*f+C$qC z^b0i2Z2!y|098P#%M*s2*l(;2t9sQN9NZcpHrJLcZjp@)9vq}}P|EK8OtgG>(BZWA zF3h+WOC4^Xhk|-f`2DcK3J~YH5Hb1sj$|D|fud783j2~=z6+BgftbNLI1Ore&CmsR z^LYv~cF6N%-UtKtW(&Fj{ri4tLyVZI1ii0(cZ5Tt+Y;A~3}p^Ztrp!Nw>i^3>0piP z+rQe`$zUeSINSb~_oAYPp#{VF(Q{2t#A(l*oqJ;Ow#9Rj zjoLMgF0gvIxxLYzwaq>6j6!Z=iZK5_+9~0SADm(R>#qlFQ_r!t-W`xF>Hb#t-7@n+ z@}2fK28Kzt&F!@T-<}@pSfM2Gv`OaOz4N_D;OA6tafC}P;WY0=ha0_QLx!FAKN8YO zOXY+LpnM2K2dThzeKoh)M1@hQ#~tW)HiJ5kL>lgGMpYhp)Q}rh7IJEKRQQI8Pkw4< zU3VUaGCdz&rwfkMSSudCqS}1Srnwg<0z1iJtJ#7qvrI`i*mew*>jkXqC=0N9lq}uM z*(0I8zt;V!Bb_4ch&*P4tC?rB=FX#;E5hpeOHs$op=eF^;hhks`@QC5J?ScH#uuc6 zoM35p4N%|Wx_QC}5KP>Qu1A&J1!=PXqYKn+rFxP+L2Hq6U$pF?a|Q5??}C~%3a7X+ z^BJkbDN;FscgSKaWMCR((o=aL(xa=51Y~rcFmlJ=yUCZDQo`BW$Kd3C4rJ62onsQgQoK_*>`TM2>DusLm-39n1s^=k`<E1wdP}$UFG$m;5{n!JaRh7EgH9u!YJdiDvB6BT$>)hF9gWb#&MDq{HsU38%)&PxR zB#A5Tv~PcZ>FfzEIc%|QC$*?>xq|cMT7^ovkdO{Fs}ZxLfHvF++<$8XSw=%LrA#Ez zVyMKwVTp_Ls7yHO(^m@uur;kpER%?$xOlBOQDta@r^ay33|rt${zntY&zSmV`q4ca zk&0-v%Lp<593uU@EOzGFqTdTXfU)0JvO{3^>XsX`ST`MEV=Xbd%>Hu6n)ulIeyii% zK|K#kAX`YCAj`w}DY;i#t1DQE-y}~M5}C6TQbrBNE=vT{GW~8geK|AN&|wjsni7!U zQs32$bXB%L?LaK$VQ9~GLG#%9N#!7N=fQvEg>uVM&Xt<#U0)$ab|+J$>qdvvP?nW$ zyA8(p@@q$>%2H(U0Yjc-X6;{yCtCU}m-j#`9=vX28=uRq*lj_#bQxv|xd%f~>`LxZ zSn>4gI`IlV7M9`RVg3rhNfrBW^>Ue=pGxp&d_w!MmPp}IrJ<5ZT;?-rEmIj{jpQz$ z+T903H6GYj+z_&zFD2>aOmam+ix8RgHoY1NJ-a1mbQDUUZ>*6_cX+#1>fN8k z&hFjO3+zOB({XZH!6N&1FoELw70fF5dhEsLkf)q{Z^SgzZ+Rp%Wj66&;GGyF8ic2J z-dO1)dOL*6>wsbOLu|+e8TcVm<+L`}0ZcZ6J>4ptpA7dOoPH3cEE$COersLO z)17maGSu1J{ca+}tfz#PnzE#@FzL{K{jC2MRgD#xt|1fy>7@81)Y zs30SBWkne`Iw|!{``LCodI!5*`_% z28o<+1hlsF@YKzz*LrZV=!KABpq|tOAy#wf(N4ogf(dYl=2Fkbf6$B?Eq7pTB*%;DUDdOB=rLwARl^7($N$VQZ_rsKl?l$YU)St808y_soZrc@NqLZGh`<|2 zl~+yweauN$bRAoa+Q_4pud=GmCZ!y86p?3BPechk8)Hp^F-CFjw!k&#K_sssz5u*q zvHb{>@k#;JR3Sy_25J(7XO!TI%qAZy?ZR0?c@OZJ5`Rk#7uEpT7oTQ+H|_zH1+~=C?8I*~O_C z#OY4cx0t1lYr1rXz>>-Tkg%`;LJ%(q0R?E>$QP3nJAFO}lS>Wh#VKz?TE>%t<(g1h zL)rp-X(5$RJ(*O{=I_&kVy-1mq5jdjbD*K850Ul!7udxC<$gKU{X;wNu_`E?HxT9qQh4L_%S6F2PEcfwZ1ng zNhc*}1}0KcznbdFy;`p@_dVd&hj_HI=k$l5Jo7j0mKxyr0s}`9hZ-4E6-NNlbnT+k zO(l=0Eg&hoOSybccvDFwQ3_}Q)KUGw49U1q78W7$OEDsMQsAMtANLWQw+iN3YjyMC zAz}Qv{sHw!MO`i>ue4UlffGI|n!Xpb`mo!{EADzvE_3#ex_^S>^=*9CrAh+1kbg3! zJhK=1p6c5>;TWWvv*zj_+Cai8jF$HJ+<{1d5TMU!l?sxC|1iV?qYyb%2X z+>AK~jewu8Js&9t>0(`Lvalj{aaO0rz^8{uF2{13iRDF14uZ?@?5Q7>h;v~GF3}!h zguL4G1N;CsWc{Q0l8)ufa)6H+=*>v;yo)QOhLI^rKkHD} z^c}Y@i2K^!B?$X;1=RAlqgs-uDiRbC3x~q~4e_S&Z-rvVMY=OYguVp@H?Y>Q_UX$namp?eaw1nQ*xl)kiRt zNq*dky!`TOUA|{)VJAxYThn&7WiL^0#T(;DGB`b!JPx>^BCNvWAAV`A1+8OX@-2Hm zLKde$tP)v3g0q`NUMf^c)HE|M>bmtIwFoe9)C2gK>Mu;USbkGUbLIUOYTrXeE<^3N zbiBlSh+!@RTYew}|CVhqDvWwebMxdA)1hQGb7AWmgSyO4sOO8xyd-(j;3{9s86Xgs zebXVmziPPW4r;deMiOI{WY6Fb<)todGMaGw=b(+@5NdEUbMy@fPhavCZWY;+ZZMz! z^__>*6oA1ncwx#S0uf@C-52ogkwI%Ixmx8TqcLpQuV|l+arc)bXiAigUM$EkK2JU_ zMgK+Z*HX*J^nk?cP*#d#YsTrXbi_gjq!Zc3-{MbP5S-sM$~&RfXEg92)Vl$IlqZsN zVJNaydFrX90}H^wV*m*|8aOGnpk^hr&m-cOS1U3EB2lfk?%xbW<?iL!B_1acsG7tn;H%*I?(+1s+ONb)v zDL=^@FQDg2FuXCE%`U+Ccoj()UKxO-SK$uA!IGIkvc>rCg(WhX9~V{7R%-|yQ?`aV z>cZxL5X#fVmj$RP9#YB*PJ?xs+`Z6WJd+}ynp}9e@W6(xL#X5kj+lIy>G<25<6x!% zC)+Eg&`x8C&wU`n0aoW6QV{`SG$<)eVF}$_+6PWMPwch1Z>^8|RjWCb5UocbebUKC zYt(MbHorBy@K7Ql2K81!TIYuSzpPCgY^ref7|m+jwA8DS#le}0E9mwR2_1fqcUcSR ztQyVgP&BQ=-ePO3M!~M-RE$V}_wf@IXd3cfg)nJ9?X_m|Sbo?>r7Hu7KdY8jzNesybc|Vrt3GY) z6tW|hw_gPV;*91%Gq+xlGq0kjJkv42D;+5xA_c6>Cqqs=T&kPPQ_ycDad#pU_!o3B z!v=|<{>dNv7{azkj;XBuyy2@+AL!AnL^5QHvvln1FlbPCi2`tE^8oe~CyvoVsax>= z+ngwa9l_`M{ll)D>(6x=4~OwvSn8Hy)w$WcYsr2jZUuEI_V|>Zp!!h)6Z*>gs{yMT zo;OK{oQA6O@0~+UHm`y7?B#Jn2B|C~!gv{V`IAnl5av=wN3PMt#>!*-3u$gu^tzl& zFPjI`s2o!Cyb8QS4fxM~Blgkpk=zT$dVo^~wLV`x^PT;e+Rh^wNMrIwPG!BZ(rt-& zPhjC`k5j1M#l{rJB6(Er=TQ;6V`DG|qifp8cAy)$#oRWvV!d5|6lQiKM$BF(8ypdn{MiB)6-OG#4+^#?(Vd_MVJnpgz^op3S0 z2WrvFvLvH}lRYLu&&Y9%g8a3X<2VnfJ+4UV(x4|^Y))n>y7+pI++)O2!o#ynnP4H~ zHk$=CP5a#S?n(D<0h4RKt6v3~rz&aM?}*uY9yUdB+AcPp*#Hq{Z+}FsH0iREvG>rM zb?N9(lTnR165zA1?g=uNRh-cS8N%btvsz=UF^%^zAU0pi9(D_ksyv_M0H`LVu{qP; z*X0ZgCA|h}oq=q?`2R5WCg4=&fB$$hEi-AFrD>I>&0eWdh*H{%Y=wwYmL#+=DofEi zlhQ&m#G#c?LW&mBMA34J95GsLNhPFG;{STxN7Lzfe$RFNyROG~p29ijzCZWp^M1d! zH;U7{C>W;JLEp)8g&T~~7JDMemJiq{Q%oV542{B@v3<+`u(ixjV;#ODXFPT-qg7kq zD^V^A&U}^+cNhg|MjLS8?|(0HKe*=0nlyXBFpg8_pC=?a;!PM^c+=18o9{klp!?}5 zl!^99-RK$N?)jVkLHK3%-;hT_&&V||aO+gVwS?ajXxO(rw96Tko09}c1tnn9s%5Ii zMxsSH0RUVF{DlK>L;AOCxzZVBDCB};pHH?9G#%Fcs1L5z5g5E&@0;elv(Q4NzGlZ1 zE#`kJc;7R3y?-mgP&+l`Q3YzZ2=9rRuB;QSk7ZKKhMsOWg{6oB*rl4Ncu%eSB41R6 zM*d=)fpvtI3ogolW)^*brtW0ifxgivMzX}@YsABrYaVt91V5?1K6Tjup^o4z$DKv} zVK~uGWH-t7H<+9Hq4Bz@_ZC!W*bRB%lV5H>F+dlSurJcT#yi%sN#A*&&!h;fw1+`V z8KdR3xXer!(F+xf*`^Vn3wNyjjn9fN683QdX zJyYCq4)1JM>34vV{ytXMK*QTTy^pQTLc>il`y3l}{aG=i#!HRW@ykG)8{Ed}5WcdP zQ;(NwwN{%B2TeMdSv$1!F}3Q2uSLao@lxYnV34fI4kY~zfAGE_$$ZRZl}w){>@cY5 z;?RL{osO$h4kLdjv`drX!BsODl|wD@nL+-qb5c;QA*=gNp~i-mGW%ffH*h2}x8AC5UeV^7&7}Zkie0+xZCl#065rr@Uh_G#R2H;iaY3qXW{-%8SSR7oQw$fHBzDtgN=kI>p zg(D{2>}Qjl`q03?74OHPDNn)Dn#DpY@PLy$VBFua7w|-8>r1-%k7>uA+2xlw{qr1) zH5kGC>k=1LfaFxb{<@M!!y1N;Lo(O{2U`>DAHygt8+W;yg(HuY#Ps|FZuw&E?)AD5 zL#1smSBz=ECT(Kts(_u0?CJh#$9_TIZv4;RR%*QR0ky-3oMs+yjOjZpTkC|*i#ZflH zGmC}EYaB^%ec$jS>dZbSN$EOfo{t_W_qY2}K4ve<{jkRY{a#s$W*0)`JmndPXv8kh!mrqF}>Fx z?F1KD&3PFMUqZ^}obgKhSY=jbcgMus^t%nwOa=g~!wH5f21DeP(uU$;EbPkjpES>f zPY1WL*2AZ4$(Ej07dqg`KUU1#t$0Xd2D=?16`CHC6rboZJBg?m@jC}MPDU`d;%q=1 z8#*jync6@(N6V9O5w{W$UNGJA3|?1=@OlrM(f}fmOkGH9ZpCx^8zqfg$DAuTuVi2O z%6;X__H7+?3HHI?u|yrtElN5Sy|zqkH<%6%+AEx_A}liD%jx4M3zYsYz2c|-yz%B? zH#{@18sa8@Qln7QvY4AP{Y5*Q2YcQ8ohCZV_4@hZ^}s8X78@=US!q9l46ML|vlvgU z{rL_KEt_Y})PjIFHy?DX12HeQZd?~^x7B=}?)wYMolYOOc$e*>-2PklV)YE#6}M>* z3kg1k4L{p%GlpXcROn?AImt!l%cZs-Q;dziOtj$~6C_NH|E2wU0bGu)1ep)^U zB4T^XL*Q_@DCGhEr^xFvpa*-_LgvNI@RaJ?+nISb(AXW7*8Y#toPPhXzobFjFil5X+cDfun??JmLqH?}Ly4AOhzr!iosY1QGkJ_sIZnwdKgl&IM6ldGFI}*0w{Lt{ogk$;= zjb&wDRzs}j1>EhTvk6dw$t|*u^pDy4?1urGPCcz`^z~sA<-DDKb=lzbZd8So7P3_V zzYsXjXJM)Th(zg5ZoR>0-|*6@e-t#W-EOR1der(69uY_5T2!hRapPDJ9M>`Z@|vB@ z*5D@mLf|K*t+MeBabQnpcnFksBjY)1U4sOCpoO>e2NIM0+rt91oK|jCWyfcZw%Rjd zaztW0N`c(SwN#zb{J#L?nY_JJm?8XNV0+Ex9vXi^hSukKB0wE#a`%OYr%hPJ@j2-C zo5SM5Zeg@`s;6xYDz3kPOM9k^gxKLb(|#J&JD#vi{BBgFBH?Bv;bfwB&Mth)?k|ga zH`ELzN@m7YBQsQ5etLnkUalEB6!o{zg?L7^10GS6lz?=J|DMq(Y(Az+z5xB5685e#k9gq8sb|l@EUM|CF zU*OT9G2}H1Yz&F=(YSBz%{Cb~<)n20Uiv9_%*wKYZ@tttGvXkNsOm_PPI~Ftw>%9u zxF#TG>vP3}Mx=XDq#wTN^%MG|ZpiKPUr|%S28(_*$_Kt!f-G52|o+n9RE^pn! z5eJj8O1}P7cr&x`urzk|4N0DJ|2Fz0VN4Lw9)fxBp?t{AB!B-Cwx^`Vkmu=;tT({5QYLE2k@dAqToN`lBy_l|VbtjHTY9u;;$`ZAeMryhe3@H?9_EzNf< z2*_(lQh)^xhg#a|X`0fu4|Ai&|9)VkO)si8!sW9e{7w3V$2W*$f&c4*Li>eX#x#z8 zv=$L}w85%aA__}C9HL8i9#8keOc{~?kOgR`!qWq=&rl|O;9ouTs@5l^3hY4j-^xQ7 zA|)gj;|QFLz=5dk^-et+)aF!wBKt+#1mzK!;Cx;FBnZ;~{%o8>iJ8Jc6eF2QoZ*F} znVTz;r3lo1lUwoACAg!ERd~vd2|&IkoUfI@zv1r0{oK!HT>4%|lb#r=^o{Ra{f43<>5x3BtCKw}ePIxg2 zw5T@S>&Nla&LU|S5q}k^9gGT$z&JXJvYM+XXB}}9f5&P+!v~N35u+w$4y8^BiS&B_ zd5|Yxj5g;gx&#JnC+|&Xq7Pt-6MNGW5*a)dUaXv*eVF0~Pa8+)CZ^C=rAj}LS^gHk zAVPM9G9U2tSw5$&kX8MKLTmzK16$irMPyE`i+|Q^RSYol(#&ek7pTCgJyMcQ84p?@ zL;ZR@SD{)NH9!Jj1%5y5ECRQzf1SJsas*9g3m=y*g21PZsc&SK!`^A69ON@R^9HzF z1@2e$I%=*hN;vf-^NpM|)C({0B1QAoC%Pc;mJWI+!6fV)DTPt5f9-NsO7U-Ll+XP6gNeGhx<~!uK)NKTrh8AA5ZDK-df!9Yv5%J_1~dAUikDrI4s-eKEm4y4EajC z9}m|h2%Gig=wn^io8%zYe3M?+Y5qZP!|z!wvwSqGHX71Zn~yko>0TRM97T^REh0A8 zP;LIgD(OVE6k4+SAMf@KBsTN{7uJt`q8o8pw0V=N{(Z{6O?tItE39p$q88z3`zDC8EY zMyZ&;@$U7ZG12~$Iv-4SM~I3FP&@|#%oY^PtofJk>sIfDc!GzRQ(g?sZFME6mBmaP{7(a@+MRgDh zz|0O_t@l@{T|@qa^t>-=zqUH}L;9d70^|#eP)Sb}D{q+Lf&F<6BsR->ZXbY9?re>i}HaO&;D}Ly9i|tJtRVx{$zQj9#Vfo$1XxyqG@Zx?BwC zEecHS((|bP3eu&P+1S$;hb7A_&UgbV0SLLc{$P9t zbuUmhtby?DDuC9(5aul1xY~5tE#!VG(?&`D`$lb%xkaOw$>vZ%ua}Z4xP_2qq*acd zM|5ublkkxQfD8@h4#z$E+Vn>_EH{0M9|?v9e_79sQm{XE*(sS)u9Nk_2Ph+QKWKh4 zi2+&|m~x@K#2u%lKuRN=NROQk1f>pTF-e)s=x4GdG^WAeLc%_lO?OYtS9Tp=2$rrN z3jOOJMEDq!Jre6!Ap&iGS7oLo?6IdcefD)`R9$Xr*lo0?5vctB`xB@Tsp)LUiq>_B z$*`8l?k{z*B1&e%iiPKQ)(?XxO{Bi0HOuKG!;^qb48l~pT=_)-9ukIvAsj~ju*G6d zm%9qlhQ-PbAR%mIMjW+tbRAKI=yn8>|KmFI6(>t+E#VC;d8q}ecwBs3JkCce>rOXt z_V*=^4fTIKB5_~{cnUdH;$C@))tuFZSXwbi03}r5NWlq;$8cK@;Wu3_DBh(oXJxnb z07;&1{ng~J#8c*YZ*D8Pz~h*K%-T z+lq-z9e0UFSX%4UnkbNew*+AkLXdW(=Q1)7ZLmv98#v13ea&Ri7_&+ypK@#p%dA>T z>7_&BtvqKJVH}cs@IC2Aw@7^~n%--16ErD#STB9CQ@RU?EA}+Kgo8LFj_LH{7!#g_ zNjeVy-78SDF}RA$UQR~(qoKZwt9V2VHZg`yUc-x+FF!?$!fnxN(-}rrLPEwi&-qB$ z21=5@D5eB>^&8Wh$XvoYLGIJ_ju>ZNf8705go4?6%Oy(@@av#QQ#1FvS5intsA)Zl z7eUg+#D6{jmJfh&4x;Obnw#31o9=YvL)=gVLQ){oF;nerBtuQ5jBvjPV}qTlvHu)#+@ZMAJ4z zB-1~>eJL<`SZ3Ov?DA`F_;&=j@T~-1g$XpM*#ozQea<{_gk93Yg(yO1OWM%pXWsLY zR@N4?bi2Q5c~HOc9MV&dGA()yPqvu@J$lo#48`6E9#ZkULI$c)^Z91&4vMWf+J#Pu zHWxMd`=PZ)52aO$a1oL&k?(pIwZ_4Fs^1Dc*w4H*XW3|&GNqoG?71Hvp#YmFmdXdr z235f!g|2Tm#Q_`vnw`1dd`zWsn(G^^6b6YoV8QRJS}AXJvJJ@j8fGNC`YkkxiO2Gaw6kau;+h}!o&p7Rw+pTp1J|Vz=-+A`P&jHFv`9@PPfM=Af5+YrP8aw=gKaq zuN5yI2Vl=Dl#7;PFs)m_%6s?7&hPs)w0z{gF13m;w+~!-J-hS}(5w`UY`aQl4jGLz z7zXD-USPB&)ZL8Y4GwqNXuNV8!w}2lRxa-I!*jKT_U8G1p|{T90h+)(=Hm08WV*HZ zhv;lAR5Mg`115rP#dXH>m%G^)US9iBpkolHLfeMehV+@=eAg&+w)aE_aZw) zmaaj$p9>SnATol~Fk3G%t%W zEXJQPeswOh`2BQy!XCD5Z4S z!Ky!>u^Z8|dN_)&di@Q~`D!8F)0>WEsj% zi7ViDn$>FatUS}EW9KcLB)zWu8d%unog!48mkhV7}KLwu`?3d=wP=K(t5nysviOP_7DJ ze6`JAZ(wf*sq#2-LuW)3RRS}OXkRSzUMy39n}n%l#9?#33lojQC&o_EM3laQVTi40 zn{WGSoL_G6v+z@w%T5_~dDnaY)@ttcoZOm6KLZbTLZY?XE!mB3YjE1%yI}sfSQYa> zgz1?B7qSMsh}x_6JZJH;mg?DostdnYHJGF9fDr^WX9E>ZeB;kpG_3X(m$Q@-*%)b~X_PXg%~tg3!=EW zVoQ~N$2i!#f$D)Cb#t6PFbaJZ?nFV$eCcUz;XxGK8R8_7w)BGVYhXboMc^0}8*AN; z`+3$78!{H`BvO0*;mUyhgPCSb@rMV=*(k-lp(;Ydrat%Z0@v#@9o7>mDMlIo)Uq}fl%?frq zD*}ELeoJ8bHra5UKm|8!|I`3Di(Ig&82{r3C+cA8t?1i+IT|6{7RvWrpdi@^eqboJ z7|ZH~()W{)_Vr~mXqoe^uLefYyvObu-t9f884ZGM=(M#XunNf&aXGSwOSY$(vCT+*C6JmChPj~w$eIKWvf8|lP;4H~K zc!-ZmvA4j~8zcVImAQn{|6Fo%sBHXO$G=-`k-a({e`($Gs}w5FN(#LRCA)zr6MMT# zzb$F{t+1XlXY%Q43K2I#b2)VbL_8)@NIKR{l-4vV-!U@zPZSQcXdcmlnmy*+MVC5NQ z={wyRA^RZ%6+dK)EN*jKCPyQsr#C`yB zwu^DNn!jUIK~%>CYJ>c*)?DR%?DGSABB;LOvkN(b@bspjrB+xVUF!zsU%zkqN(9LX z2&Be;{J2sGjbQZlaC%wo!lhCPgKxh2G4)Nr>J=FS!~Ux9j%eXw6ROW#5s>SxHZIIeny=v-cfSkYj zES`uSS=#bs;tZvw;NUJU2{g^4%LYz#*Bcj;Cn~vxy^E5*eDS8Q7NlY9k|E-RF7KWE z#0AyXi@x=fe%IG`Ft(Sf{Ql5UTjQ47=eTrvDg73UsEhHNPi0m|GJ?MXsml4@YSMoZ zzE%zE&Z4Dhu207SlVG!2jQ1oY{7|LJNsY8Npg^iTKk~~@2F??JNlWQL6&u<0os;6Z z@o4FFgdyX{53ZDFCQJn|)*Ie7Uw*Dr;s)*Wnx9{6>1xwz3QHq;_rC?EzfM@*j)Uv(6iLbfb`U~kfkBhNgQFb+>MMRWu`;c z^^)02gdgY>ubkkI8MR4qxctgjT|g#M?v%?QY|0pz#!eBHUAT0_f%J!juLgarsS4i+n_1NvO5WY1775 z&L;!*9>jhY?M-ylM%lAe`n%M#p?#l!2T1ZSED+c~5MQ~E&%HoiGXM1GeQ&_2jiDvt z88~!?UeSR6H=J%JlV!^W>8}f$9|mihHDW-Y!s@V#!x3;O{{|R~^=DXrN$8om_Bl&p zP^^w)Bo#GAQJB6-qhihb(EoLN%pxofJ{E0$3l_FN5(W77sCwcQ^~Nney=EXh`>j$) z7L{3yg_3eME;K8dMj;jRvcBd zV9fm*D8vLmlYmbk%9aWf-8Ltg-z5FdO2hOYU#SV{##}j6-K+}uXiL4$sQhIQR$KRLjym!2YAXaNmjYoI!%-&6J)>UvcR zVV>Md!KLPsuLRyvP}?y8K<0xlxpgA5Tg@p=8X!0tq)?j}<6kvca62J}=qvY}@tbO8 zI-Zr+&%jmZ({SO@Ck+$*=6lSW^L)MI%kK(&UJ1N(2fjyz)RizI9ZV#6{(Xz}BBT6n zN4YNkH6*Plzhfun1o|05UvZFmBNS~>>qPmNo>!OSm}{VWNKt;IaJn0wG99@p=TGFFrN`r3{ivEB4xdwbY0;WKii!oi{3>8Z}6 zskFA*DyQeEn{`K>r}~E+s5M%d4kN>_hY{YwDEK@&`-(a`M&ZL+ti+@<6Y-E$uul+8nCag^J-*2cqO!Wj^Zc##z5S!j&tyN| zZgVz^Iz}`s@*FJI3X8`sBr{oDR*~63)ptT+O|^aFG`}FxDLQBZ<3PnDYFAJ`_ zNYMh}qpAOi`b+~3h=t%R8qag}*i;b^U?9YOkPD1e(>*EW?Us0)m3;SZr0v;}XkOZn zZqjD};`tMnua$$`Q7heJX25fgU72dN*YII^zG<~(XJ8Ra#_D2 zySW_o4h6^yUYp8nuh+NXS{~M8Cca&WuK$LEOJY2IYwCOt62?%(zj`>Fh zN@-SI-?8SxZS74&T|U(d#Pn6jhMKml*IcSUqqDc%TZVu#+mbja#c%Y{9ovxY1e9?% z-97B8$ahIzi>|^P%uTUG{)4nNk-nR-eDJnG&Ca*wRW|7p$TsPSR$Edf33@CdeWj7z z+DJtGFeujs?5$X?BjmO;flU`BH%tsQ2NQ$ ztErxlfwJSBXf>@0nR@q`5IB<}p!}iXZi=rD(qUL?g!o}p^tBOd>NlY;SCW35LqOyaXhMEH~z4~-1d7IpK*$ff^U5J}-< z5o8@2lo|rcZu^B;Ny-w@X3cZvy>armV}S^PeQ*f(#pAuuF`c>YuB%P&4&;ck)I5po zv$hA%THm@v@_?xPbUW;Jf$6G37EJ>_NG^Q{M6KjEhIW4ffPem&t8vShh*^(tNGREA z^R(*7_Pab!=?56+9v=%uc5*|SsL(buGjvQPbx-V*FRS9#zrJ+BD~&a?tkoSU@U5ONRRkL-on2 zZpWW;Yzz;|jVA%nosTHR2eJ#7*>`f8dPaeAbxeTCZGBTnPfMIT*3%%Au0h?JoIYrN zipTnc!A!8keCXO?IC@p+m}Nn&~jhYnhgNh z<(fZ%pw{g$<^`q?$-rtb&BOCEJDc?-JQ8}!mzgCY^$DQk5nZNZB=dB1i0?{`ILRG?(u34iGUS5al&9%eXFx9uG4Qj`jhGpI$&_DS*nD zo}kBAw6+dNjqfGUPN=~_nb1iy^%IVqkdDqU&~W7Fgbc;gDy{(7+~o5#;oxSXO5*h8 zrX;mY-A0vpzN8!+hPE)>GcLw7f<1-hX{05HXbcNe2JfpG{rUC zBVt^PHMEVhvT>Fbyeyn6{gwjzupeI$W|zOH2~Ed)bZrCa0=)+xL5Z`aD^YBYilYOG z4Y!3h$xH^8RLP$aB&^t_Y(F#F{GFGd&(=8Xj-B#Q7M|8?f&jLo_Os4}*_c`5zc0BQ zC_K72H#0Tj%4T0#%^a;<=)5uu-+99tO&R5KNHW|Z4ydhPg0}8=_znLC4^Qa^M>Ftr zD6?P8?Tdx>0{KcD>MFuODC)h4!(jyXKtwXw2zduEOL1;|>Lfo#v=O34L#lSp_sf~O z#FAk=5Uq$f_QCh~I>=w4CG08E*d7iY{f$}IK35){o;AOg67X#ZkpP% zj%Ye3aX}aJ(y&Gs%>wD+!1;Gu4oP2`Ut@>8#0kM3;JC};(6kG4j5O{}WKIGe28Ik* zpPw%MX1VJl-fvDXL9|;1WX(7A4oEiy*D<$8Z+qJtN6rypJa8uUZy2J}!*J0fPEkWe zbVG0L<4xZkKe%rO$}A?sGR(MVeg3kX&0W_3>IpwT^UM2D-N_s;*Bf?gBeuR%40mOi z3C$Fh=O=c&kDtq@Ax&AA9Ym5Nt#R0E{JdSnGTs ze?~L{oQ-X7MY_FOPwFHquUdL!#0PbGmsG_?y&gvU)ZGtIQW9FYevAX(n49744t{1A znw<+4P0Htj1=kyN3;hN{V^QOP+e2<{-mRWr?n&Zs-F^qRHaUfMd8_Cc(NNiphLo8g zhPE?iOKz`Ssw{l#<+72ZOSGL68muA@Jv`tsOs`9U2iBkuNbUM;}#s=7We_vUi;qZwnXvlYx z8=7ZXJ!sAlQ}eFVyn?pBv*_}f94#K1QG+Oi4XyYxO45#rz9*+5 zx)0ZvQ}*C>0H)~r%*gUJt;7)f?rdgs9$~BN=}w{bguC<(+*`mL+hoCyiuA0V&3gbc zQjSW!cau!-W+ob{+o#X*`Q}dyq?gCie6ht84(0<;8#mCTt1X@^j!jM4D^HIJhoYp& z(=Ng|CyTDQvNy{Dkp5y3WPFz5M_RVLlVFXnN}VYd>8HI_*)%gh=JzkxK3+9{z{7%j z(!Zc9jpo@8>5sRYHEMM);=aD^-W}A!tSVFVLN14syi~uy0vO%;L2q~T-g^oj11cD~ zCJDYLyiU#SXd{J>xE=-0GRx_`(u~o)PmYxSP2h_aGy9Cgh}9&W@uYkDEW8F9budS- zq_n}wr@@XR{w6`Kq)#0B22?Bl2U3VhpR`uo`wJCKmYsxADpU^u^0jcM>-)2MQ}{GV zH__exC&P+=m7~u|E=L_+3FYp97fG#2sE~NH)l>HIxFF~a?(XAZ_XXGi{#R7MpqmNrQ`kd4SD!iFk z#m~TRg6Lwr13#F=w&V1gQOf6+XR>jD(>GpW*U7#gtDA zh*E|NcJsezj-{%~^F#yCll-#m+`hKceGDf})22Ex^OW=v`f{H;S^Q+Fkx_#a{#Mx| zTur%TXXm;Dy?4zYK#f12up~!H0N(gMyK{(C^b9PQ3OXqnD4sKY#x2lcOvvUvVkkP* z(fu(|FXDMCcB0g`tI)|iN3OH1v4!-W$t!lU(^92xBq2+^UwIRw1zy(UdE8c#n(A#N zmv`cauLINSU{I(4k`{~|M1}l(nH$e+TGa%`9cp2_mo=du5XOqdjY{2Iq>TWZu(l+b z&nx{;xr70hHzC{lg$z{6kZ|C8RYyfm51c+hJ6Zki6F)ngg+hi|sK1CjFNpvM%|Vu>6BGXu+IK}#n0{i`W3nTKbdvW#AZg01STNu!IC_m)87%?_Jp;=EQn7kNDz zC|~vYE}b5?w?C>Rwe-JZtBxJ*p)Rc*Vl_{A=ICS1srTL+dL7l6;0r=!xm8Zd`{c;= z$2Gru$9jqo;C>_gGlpF_azAIB2MFYIhGMXl7p|rtJLg>aijT)y@7x*?a8DV0-FI|$t7i(^)?Ac*ABE99K#L4(X8*X+6y%=> z=?&wn|90dgO{LotaA_!z*!ii=FcqzTuWQdGCkIx!Iyaq6l9IF17Z$!Qd1+C#*$<)? zvm}VJeD@iZZnj6vbHA`+N|P0^vD>9&Vf)wU`79F$KE?yUGBBOQ{FoSK)WQHbh>B0T zI9LkyszGUxTmjjp^)dPIkv8+5T2t3B5%Tf>3_~(6?-ti+Y;dBJ0H#kIi|1W9N&D7) z#Ns`Y3g39GdiFa`&42`QMc6}x(f+$0Clx2U&fVgl>VwkfFetOTh;so{B|w*0-! z?Q-vDE-g(Aoaf_eJugX)L3kwDy>E1x?rq{`C^223w$Q~nJt0R2)v8SukQvYhED3rE zGUoojAHKi7@gpX8)*(qj^gh=|ec0TZ@ajb1n3*TjaM9vUj)eNBKaVP|YZyvuu&##; zg9>R;KsH`KcH#eswUb`Q_!o_bgGym>3~Dw8Xg~R8++n4_iZ)rjw*1@w3J7+B#?*c=|<@fG9KK0YOsS{RNI;yV^7?>=A1ya&|uDf&JJ<2FBR? ztTe60@LFh79&x!7G2(Rl1gYO*i3cAzq}}Ynd}xj&jpUp;5P0a+7Fbx1VtRa$_t+;> zkRKMJHzE-#gn;xb`wSED^b;yx4@hfgFhWHZjM$*veTll-n;PuXBf~#fIcM2_kZEBr zqnb!v+$~bo_x5^kyaCG-pWnd#ewK47J4T?x2n>|yemfKGYXy$1lY8|@4KM(pN#~HJ zmLd~)aa!#zSV63U#NPPDqV(`_CD8JuZEs8}NaOO)y!Y0q3FU$+4RNPBhLQ5}n{804 z+0o-{>ZF*C!HWi3Fh)`**7C?jduzz!D8k4H=8;Fqu=q%wO4DG^>qBcXX6O37HCMW; zOm{v9l~VY42@YhW03jDeX*V$XWDBj0`25bN+$^gTZ$2^la;GgO<=Z^nd@@N~b6&c* z%x-P=qo-gw(CiNzQiocMxmW|5Y&YsgefmnYQrBwM10mRVD%9q}bWD5}te;yuB&HjGf8*i};lH{Ev34HUC2rLLra;$eJR$SBJtHl=oW zSP=zE<49RdD+|p*RZmbr?Li)IvgE^;E3nttQf|axM4(RdKWtbw zKYq!2F&@XlpQE{d6GmqK+zCm9zTesp{+ePoWjp(gCb`*i9`fE?qMMdedKp-R6t*R$ zMj+c#(pFhhjGi=X(!W@dy{<7~TeAd_+PB}9NtcQE#jxzm<~+=*oF z7lQ*^&*JHvddOhMO}zp63QTAvI-9V$(gg)I(pMJTd*4uT!y`JRdIc5$N+FkHV&$cC z=r|`imzzgZ5<|Og*x75EYU3gYL-Uz_v*}A&XZDG@kT|jQZ_FAJ+*g|lq!6{i#0mdM zQ@34jIt(!jO@bD9hO_9#aX@LulOLDUe$22Biq9;C$tJjS4cLDA4K%tERPYZ9Fh}Sx zY=pVVmXVGGqXEO8wr(evi!CjfmBzhhrGRB@K9U?E1Ty`nLxu3=N_PrE3GoV^*kJli z_JzM|pJbS05WV@(gs#&z1f5m9eC%k-;cpB|r}|O*er9*VabW2-A63AllLm~a84UJ< z()hajxb&%pUW$k2mLgwJwe3@VK=_F)AW6efrJq?iS<0NqymBCcx%ZHo_oFUR2s=9+ zJ^grq_rkNfnj096NKl12`<8cEgty%cGMw};9=}D^Ef`gByVtcJ0XO2K1OC}T#Z}#X z+C5qy8M!KoT{sJm4s*kfaVAQH36yp+Wp;ZBe{sRF0z&Wjf<+mEb6VBHM- ze`&i(^)joVIDz9p)?m+a8D#VvdhMN7ZZgVS>HAyqa^A_!ewt{$GO%GyrNVVLpxw!k z@kb24n5I5df5+zfWT;4)*&-mkz@SODm@lHpLaAFZb*yWkEX>6zxWFfi(Mj}C*>A)o zk_H&c71<;gCy;L4LxjoZ8as__sE3NY7v!?d_-pv?+3o%SIX-YmcDihsqx4NmG>RcO zCOAaJj3fA|2AoK_M8p6DnM`wLYF#|4r9-PlbB#WPHsJBsAp}QjlOtHK2DIx}ksI6J z$EUb{76-0#24l4M$nKNN@Dx=5llhqIL$|@R^2{c~M}B}(I97bYg*?R!m&B823-q*6 zJJNlB5t7*v(T)f)xC^kFx@W^5zCRBX*Xn|d9`wJ9J67`TXW_9&SLQ3gD$yTX=x*Fs z!A49Kb-Hn5W@w;@&Q2&?gMzccl>DFRF;}r^?C+*P(b};(J2*5NV4*sHPiqp;YuBFn z^@;K52sC^4=SU(FH>`h`muIZ`FyS{8?DFbwAPKn&lqBsoHE35^h0+ygDYH9E-~Ht> z$CKZ`Qk&DOFipE#vr`&Ac-#~HIT?3xLIee4&5Id`7I$(S7Y{nmfdv+heQw2~qrxAIc?Pp78*~=c zVS)Tb&k-gQF3?EF=`x(5*UzBe$-MdHgzc1AN3{!+jZulk)XkH=g7u8eeyUD{NEj)5 zeqH_I>P+oYr_gcV#{+S!LPjR%?DWTT%)zA2k#X4RnVZn#<(C?CNF2{XL0Jy!g(4oIcf_pc89O+)E}XMTtqXSzw^Cx(8Awl{O`5DAdvee!rfYx=`1 z!8rifG13-_$-%F=rB%Xt^^PnHhs#{5%g-5-#f2wC4`a6<01T4uxLj~;`$f@GC^fb* zKBDg1_>0V4Iji`%8mQrL;#qgdX*JAbXNC02N>*<6dp`p}{-QGVM2gDM&dPdyE%h&A#Nd=k z`BewNL7UjpWoihm^C%zb56a2&oNr1qQzBLVyld&6d!WryRdVOyB^12FKlRXE&kGFTD8iOAO3;z{iQVQ>A^D5Sno9kRu@SH#%D5d)35z-U)L<9yrT9rUA< zuOpOQyU%M^>CH|!wW447SYTY_2Iy*}*JP@rn>tL9K?`M`;`oOgK+2_A){8zX78sMS zyFej^4{o&A)N{&n9v)|u$Pu>w9D`wHGZ8mc@~lQmddIIwFkUUD0F1{cq9l(EoLzdw zD`@4olijDvlt+PD$KXv{0}3y0)bB_-<%Dhdr>r)wVPdzL#*|5H&N)lT)#xFUMzmV< zrMD{Kz=~hW$Kt3a!$aT0Hti5~O{chFQ#VP!LHH`i!O8T6xEk@%cm2z>5KU5FB23{! z27B`Ppr-MS8|c`=$H&paRdw*$v3gzJanRHnoKwy{U)b0@O4$0UwQy$W=?M{ywb(R|*Bla_R(^m=8g_Dl&on+d*u8Gf!v$|%{E?HApnBpXnn!y~Yfxzb|8e|L z06+l2fWCAlJhiiJdu=bGlON}V{N{Ub8c-|Iij2shp4#_guhg}5@W~Vgy;-LNTGOH4 z6+0i(p1F6k5G$1SRe?bZ;NSQS!egTIY1^BUZU_I=^<$4oO-7q0TYCR0gCNAWg*4rn z^SyB)&uS8r+~atmh^ks=`TIx$MK>c}BsgGY*1E9NDtj2v{^`srOOesSUVFzPLy~^5 z!Zrxug=!CVnI{VsiWT&ICj)H}46%q7+yxTm)SF8*qQMQR>%p8Z!Vk2D)AmxbJXpAE z21v=6qdfx}fp9H5m7;K;2aqVfvD!qV32CC`6I&)_4iyY^PWd4~M`o6V9F$|E`DFXE zKgU+C-9|%2;;2lIFQ*6Y6KUbi{45lCjANA~OQGyeqL|VeH9Qaf5&NFye zXWM#8S{d}>yY}Kl=9ZCgd!z7CI0Xb>Ik@au;4mt1@ok4|N#UnrIPbc@v;moYsORC$ znrR5WZ`>@xL_kYt8V5{0SC zswOav);hrV$dq1>(|{?qdXw*@AOIn~Q`gH#iT3`AGS5UjPGzV*Qci=h*&o|9wsbRO zLQPJ$9r`sJJ(*-V#q*FGXh%ncnD3w|nsqFnK@NrMnK9=|Fk-^u=(2V|>{hLKC6Fei z+wUlFRX*q*vi;TmT#RPvP2cs73M&6cpJBSIBd2_zC%XzmsxT0eY!0bPE?0@mD%4K* z@#z>u)JwuzS0C!#O_PNJ*LwJ65 z%6Ef$GkfOzjxYUir_;(xHSx^)9_Oy?id@LG@()7?j8L^5V|q7bv)CO)4o^QOUlv+f zDlVN!=e@6M9jdv$w9x`zuj?1{@z$!1p&NlE3v-evG;WP?HiwYQR2-_(6h5<8h8LvW z;r(~r!>LZLm34voy+;6o?xUD5TFV$y>{p_0-JOd#B&O!E!$RRxT6+;ggyD7H%D~BXvg_C6JSvvsR>_tFNj1+E7 zDehjU_Mr`AMBJ3o5wRjvFxm+rF#cS{(I2%qFS1Mdek=Nwv2eY7ttRT~Ov2uoH2EA9 z#p8P#st409(ewL)Y7Fn#m9yo$c8B|BfHNI%KGwS2TDws{bIdyw+I!&1I&Sg#NgtC@ zgN9|q+1h>Xs!HeN&@`R8@|-&`GX!=*e=uUvWY;;P=%Fo(ac>pgz4XieTx{}%v7))0 zY?j%j8JoNc$YT4d@0!Uc!2@zQp$zw}z&oqb-Pg0$-BZIKdv9(Y4cxQ>L!aRt{{CPw`)+WjcYt^%reknu4ZD6+!%Ck{_6*i!cCKAGe@{vLQP9lZ63A)C zC>us-Z=`k+?c}9}9S-^8aTzsuSZqoU$IP%|S-M?f5cWDOdwjQjV2PV~di2f>dYwn7Tw#X9+z z=i-t7DOWoxq~}raFBa=pn?6N+L%yDUs;l(U3s>~D5riu-8Q82U0PxT5>=5!g`lz!; zzguVAHS3MbAg$`3{qaHlQ%0dvFqr}SEAA&9ecfNG9Ru%k4cf8&-Y;-TZBAx>r7W0G zz(~r1vY4#~Jr%~Ep4$-^R*c>mRZi~8Ewi=%wz6Ej_{pBAo1BO;ucQdQGdKE_HslSb zeaPCD1agdtJWW>V+0K<{X*%$`Mgyv+m=O*ty8vum$DMVo95Ozsm;{ zTcWdohTs-r_jnWKXEO-32#5YS(8)bld{YM?!p#m>dAmxop1W_-?d`M9*2K+?n0Gu9 zsW%bXx(B*<{($!L#yFKP@8a~@Ik$(ZjQSO`#EmruTtXXBcqg1l3z$B6rrcxb!JOr$ zT_d2zm$ZSCO=?tNp%1E5t~xbB`d(u3;#WDq{3h?NpDxs}! z4U-;=7k|L>mfP_dxxVHkWMa6Oda@Rn578=<=gBLPUnI|3RFXp2fRCu9s1B}raalHU zz-Gc;XSm4m?0L#7k|yhJk=7SURXO_fMX`+9_JN`PR1QK4npD_SN}!n)WAP~}4T51P z>D>c~lRwP{(Oi|X{8g0024+5)toSA{-KKGsPrh-CbfLAzU@xY+t`VW)p*=*V8opMU zOZL)w#`44U0+#j>fDW$fO_i^^pcy@N*>v8eseZdLPJscxk_Pr=xf@5101frX>E$EX zgAPwr>h}Q9$-&$Y09XF?TqJGu{)+cpVC&N3;T-K~GA)+AS!kP4ZLN%D&JG^b<>_?{ z-riXpA~fo++f&vJHnXy-X?s6-$+JPf{4!8G1aw4@?f&h51u*W$lc}l z`d?61e!JYEm+ig3`%jR3Kg{8u&5Ndt{AS;eg%es!KDJ3B+V_vW{KHtU@nd7e3;k~C z`o*lPuNm|3LdJ^?*`EPyYe9NK5>s$Fp`782!);F{Ml|KmaNfK@^W-xZ4sS+^m;(X0 z+R|EZ&v}TG??YR;!_%ufbXzvIR5QeY-~o|{qzX>|Q$Q+fRiqb?2%C@C_?qJ9I^PO! zUANCJRoX3Bh&EpztMB{fdKnPFdddbREv*oM$bfR18hV%BfiZPd9t9r_C2|Qc--9Dka2-lV1d5E9uc5rk{eMgS?#IE~X5Cf=y z&mD{{BmMr&!q-p!;rQO#?bpvMZkoV_@d#sr1B|Hc_$;A-t*NlllC3fDt8Aw_0 zQ}%BTFf{$Rjv1cFf#-_a)~+1qdRGyHrVN79*S9@=-(=j%|? zsN44{D>`GDW*7c>U6^T*w!yLHnBy*Iuzt(qJ$}@Gb7$P0tw@IGnys>zhvQ@c?nAqmcAk)J^v(f_@DwPt*p8=e7+RlrZ(d^=Z-oCI<9f z(izUs90#2lPK#9znqkeE=$zt4&31^%jD(@zV<16)TA;zW9UXHt?wP^>ZmJ_%AABhW zIu$r_U^XTTD-mVk+#Y}Im21Em9jiG-i(~)Wp)X%}ReyVL?uZYim5oL0|1k5sH9nZ7 zI^BPTUX^rbZL6^X$`aw&wQHDPzg1LbSV%W$Go#IZTrT&44)g#Y{}+Ry}*1=m8Js|MAZWrxEAXEZ;QcbCmOho-Lp63EuGaZSuKXd$5Y^=JdYkBTP=nN%wF6RjWL9k73F6sOC{OBBg01xqJynzpdpY6G?^;`+| zxOgG$N&1110;Pp~)ARyDeBpS(28lC+wPSpAC{)_s>Nczs{ ze~We!HVjc%dn6*9KBY~B4$cA0omkwfn4hek>`k*xDq zi$ZE*ckZ4r{8PId+AMhVex2_%1r`?M>*LA#au#l8X$Z*GfEsz=}6 zc+4y?3PzbQ78;wB@lZXL=*_}$eHh0YBP-@PLT8c;QA#JGmtOhklnUa9|hbk-|w1xf4W(=*|!&Y ztfgk+%bPkgLdo*AM7J1BUB(`!#P#S> zed2dX3)2${xA-C-cMx>#bEo-Y&+d&*I5D+;-h3)E-P%z;O6pp0!JS{4ZZyT5?2Vkb zm~u$jRK%oh^%AK9$zYV+D<9AgMZr4`5A2iQt%!<`qVqCOvpQ3cO~liaM;(O`_=X(Vde*5&+tN>?7M&mG7J!#8scS(b@qXR6pjNF6SDR{@&ghU@t(db~42&zN z>szN*M0MU=YAN#y1CJ-gif&rlOwsS!wJWL4E3uq8N!di=iRWcYp%kz|X29~4#bV48 z)S~o)53ZIr1n8XUrjwE9ByuO@qn2YJ{9XeQ(&AtM{ABY-5$j%#FI2GlVr}Vk`ibVI ziAr014R^znX0mOHK14+efUS>IX_oZG>|=9D8`58s-zfksGc5-cdF;ci-3kM^nE-NG zkdXz-`x?AkVct9$Tsr_}vm0CdurK_Kv0iHB>kYM|3(`tu&fU`~>H6?eb~As<>lVC@4|P+rN^( zwrc=`OvQQ!ZkC|n_UwqJOtO7&eJqyO2>4F_=WNz5^)i23RAnK|i_m z?f&__7KYk=Z(GU+m*N14kCO z4iQK55=M7_$xhMaxy*_ha*mW7V;3A)djg5nVI%4J=X=E%({KGa9GRU3^XQy60w+ig z#;RTrFHy`O(T!n#Q0sTo1$5@-7G1$ikG4-Aui>{WSY~hss>el#q?<%w^ZcKEj-wkB z#yt{#Nt&EF=n2MuT(?;yb4e;CIO~6q>bRc%MhIb|Nf1$G0q>_d!};P7AMCiq@l6v z|L3C`zdd*2ORLG8D`D_{5Yp>$ee<)kr0OmA~~}D@ubP6z&f|Hdgo_O=a2ec`NVK(H9^W|^|aiB!jyG!-CxTy-v zAHd^i<@O0jj*zqqCa8&JnUHWz29`+(beKZb&!oY_s2*HBFvxBfb$FP=(I4PXvSgw3 z?#urSNhQ+n|6Vzf5tAt(p|89au@1tHo6XklDQA@d;vfHD_8i&Jw)hB$SOx-Inr%Bt zlEvm%D)YFXQRTc^49BQ>LOt7TXiUfStj^!sr1;IG{GOc|r&Pve@i6c-r>A50J&b+C z)!vfyexj3z^LqnZ!%K4Xl{$N-ZforQa>RhA^ZO(W@BhEQtvnxUm&Wat z7T)nDmVbULvx!N6*TFfbI%0r}>{Jc+0%_y{SF}%A0U7R>61i zKmV*aaq)*&rPyOQ(dB>sNw;|LRj^~nzqd@6E%!S9a{vD;`A_w`ukz!h-)i>bXD^$~ z>%}U3RUS+K#X$G_SO4o81bTj@f9m)hRbT0vI{va?%Kz^-`se2B)5uQ+KLFnJpX*QN z4aR?qtH|L_q+i^VLdvX8*+mGRnvQP@lwW~OSO|5YJ_#ujd|(;+&qDO|+@?p+|JsF1 zt5q{ct{MlB7Q~|d`xCp6QKwWVvu^4G;$;_zh2-WWZ=cP6oNtC|XH>C0HbBV7Yr7Ro zp8~V_RUXIz-*@KsUaB&8*x~^5t5G8N101|=B<9)}-W~})MUPM0JYn7k$nfc$N9!$R zE(0TDS5~Gt{p0Gm;=i}lsZ-cc-I!KHdHjABfH0*7jwtW9)f@;lGAof3xKZE?_%`KU z%QK$Q(|*#oP6_fq~9H>v}%iALD}+zn+L2x$2+h5L*|mv)lE`jJ<`f|c73ZDBwBFl zh0*Li&~<`(otBd2bct4P_;yd{bjaWDjqAGaPoAdg2mN^3B9!3_=`#kzT}e4SaACf( z1)WZafyDySz{)i3AwQk-N-5BOaGx9Isd@4E6xfHlA$jijI&=;YZ_bFgj}x zWV3(Bm(ACVje7p_8T}(>QFE+ z4h_%IFLuR2WBjjLTvRXeYa9tl$M+TElc2*#Lp9V7XM{V2MI}`-dx6h0w7xsRN%iSb ztM)-JbNL$@*g26|PA+J0=T$tD@0~{NaWuyO?2_ptl{ytSl|u#?;1tBT(*ix=gLKlG zg3V;FDdBIPN1XEX`fX4pf@Q~2QYYlMeU1&_PYe-rm;?tZ9*}!EXQT2Y>OT$A zJ7clj)Y(u{4sxT1*w6(ldkjqz>bBBqf5_nOuhilQyujxB8&WWQpKP}-qz)9`3ZHfy30HF%hmVy4xJYC zK)C@-(a}vZoL{H9I@lQfATv^xFAI%YkcD<3A^m{RUbZ7rCn5bu;Zg(!M?V(H8ERh% zF+Pne)aTzJejp`SE=RT{KfF1iLA8lQtLr=IWyPEim(Kq6 zevftvZpIh+vlrW=Pt)y~2rPWl^`CGytG}J3yC2`qxQ1Re%g1Cy=3!V&nxZfh~$gCkiqg*H)=2mZ|#MiSZ%>M68d_>^--}#6-&#k z)4%sBPutY(|KsgV19HsUu<>Tbn1`8WMt0eTlCsT&5>m!mQK?8N4Mo~4CA4Z7#=f*@ zB9(|ri%OBDFq9HmQc7e}Zc3uGYWW|>b=Bi;-sj8z!~6Qs<1yX$ecjjf`<=h@JkH}d z&L4&j#^FEVaXSj8SDg-}{Dk3K(W2-d(M(k!E6Os}i?#@ax0>;Y4kfvFT*O>lgdtFr zlOP~PG?$=)3C@#Ba-w$YQW$;sjXCY5WUbo9_hd}h*&u~N>0w6 z?BypT(|ko|_DmDV8jtvOK7=LPJXEfulGS}SdQpvZ0McPu>Dpam*?N7~AZROyr!GBY z7>-TVX^;DxHP{PZc>!3bXG!wfFsXQH!!ozu&X;|zF5L)vj7F3Mkhbz-1G&+8INUn# z@wo&(L+0Eot0x{a!F|qNG>2bY{G*-531GT)inhKeN8y%4W4oAEO0kkVxN_%y>0O-k z1x)qYZ(*MVKOc@6Eom5Jr*T%i!NMEe{(*jr`EA&wm%u$paWtbJU&Ot6@v&k}?Nfxu z@HMsL>~e5?(m%2N=G0Y}Xw3_d`ch5dWvMR}CMjtgYk^twNEGdt?PJRU{T*Q4Ua<~* z7LGZ1Y~J~Bf zb&9S_lA%M65YJrU@}rHJ!lUuB2R)g-l~zDw1@0>{WK+E%0QL4e#HF5olKMJF z;|-ZwXtY_3>wqE4U~pY&M_U=s#`hmz?V(#wrLC&G@i#*@8WKiO+eGRe;kWDpHh}u{ zF?p+%Ol=SI>cvF-4?sN}on7$xM)>%${-SKjbih%+REv+ao)}CYUBqV-H(9#Aq4ZTZ zo1mr%)ljsjcqsdL@_fJ`!#M%*Lec^WK1N22!En2ijVL6nF-Pmo(!^c?w^NiCgIvd{ zq0v{QB45~Qnh(&B^v#Z-fms8~!4SB`1_w_fbTk%c6=k`-W{-v3n;6N-Y3Nq6y%Z25 z-cC@?QD61QP`)(KhYt+!Q+yoU}Ky>OBrOVNSKE|8=~u>B%x%e^}!3RTEx z_T!t6Bpgew(HPffoZx`3EkEJP`(LAK3xfvv>Y1LceJdiq+G&yUZet6-i#~9q@MHG* z1zW>kkIEwlhdw0Vx6kfa=lCBV&y9GTnd~p50ob{BB?QK$^rG2`(ey|KpS?&Xz)k)U z8)0^93|7bH6u!yHW%r!Jfn=A9hey~bm0i=9JX2Sv>vxP~+Zlk~)yI zQT*hm27#I^5MYw=220&pdYxRQyZBM}w^PdEeMOB~3S zod0=A%j7L!88;SY=Hxra{G+LuJ6Y+(^q}8D!dtT{sS~Xoyy?OHkenxAp%|SUuO=dx zLX*aLqjA(!Qiwm`gwt}ugpxhfL7EpxRZ#YSf`~Mg#&C@=S{jI!-S~b_j3-^QwUnGK z*tE$0RqY(f_|cp`{IU1V2Q?LkOzlCl6Ta`tcx^IeU7+`Eh-591L}u}FSJkmUv-&wfMCK3M$#Tc zmQfV;ECu&2K_)c$>)IHDYj`sNK-`NK(Erh)R;96@_=b~>yVi2rn@vTc+2?iq#G57<^jz1OW8+4 zv~($j;~@{ujHD}2^-t0fU~Yv-@nMF^b(t-9+nR0lBF@R^R8!gSztm+GK*uAh*)6SJ z>G;Rde{QSs{Hw^0b9-@y^0c1>kdl2gig6qlp!^%i;YN6PbFr?%sjWh~LDrMA<)Dst z`S1T2{tb1Nf3J~qAuRb^Jy9uENDXjp8m%lxSWlLy6Pd}D zNs+Le$;-xw74%3?r5{r;d4qFcFMS5p=IXpQlB?NB+AQpG4p%yV{x)H{OqeKQ&IGBU zA2Pm!Sb+2RY_V_Oton;aP*lBj`gxV@#})-pZo86moY&~fJrUG+Pf(Vejo4{ptzuS< zraerbNGoO*&2eOTtAl=ep0jRfw+bniw%5atm|%xsS@j&&s+569e5 z;DWUkAa&)Uip5UPK>ZU=pquttC=TU0f8;6XF4ka4{DS5D@yLEOk%c&bh&aY2jcgef z1T6eeznbdqXQR_{Q=ua9_VXEB{@@Eg9ONh4fDLu}!d8VZbanQl(QE+>+&k7~IV44N z7^C5KxXLs1PG}3i?*8Dc&{Z|lhPMl?7De0{ZGAenv|bo26J{@3orw2^XQcf}Dxj~9 zPCUix^?T@!dfs)zXPl~yTbdC5WJlDT+!g(+SgDl~Oe9H#_BZp`+vpf_pzU;M^L5Rv z3`6IWvqp`@ya^{AwcXK=dd(Yrc&*JitF$XmUOff_a#+)d!c#La|GX4YZ!biwr>{>b z%!{|uf)UHmWlqV9-@*f*o`|QuQ00X6qU@gUDRiW*+8fy+tL|Q%0ngnFjfJ`1{eWq% z=eWmJ-s5|G&@o4o^ihdH%_ojJpbH{(tbt9%oQn7HQ#Ceg-#Dp#sxqQSPAUxL_8vd1 zfA4y~K7BZH$>M~DUz0beaQ(a2`cL0#xx}ibiC{a*lD<%`-tK<<3o+Y@%&J-2zZ{Er zKXyX@rvr4=_SHinF=^@Psfv|D)?fP~Vr}UB8}`tg5>^R~PfOaCoEYTimWj4X9J_YOJL_%yS}tthEb&~#pC&W){=IPw zAE50cL*$96pVNV`@S$+7yit%OFsrL7eJFBP~>VFCYKbrSow{ODyYV!Nk?SxzIF5eRf90O+e)bC9YJ1dVYX3BHT^>Vx+}Z^P`m z9O(HT$rkLxGMI~}cQ$Nl^fKpfnfK<+CB)9|CfuDO6Iwn^#6KnnY~31XHUq4gNGBQ~ zVMo3QzL|?UrRUwi;6O`|p8kmloHNTU|Fq5hT!?4|rU<7H{n}Al;xbU)29 zeUGWJL`bFGOCyd}%U6w{Q(4B=bzUGGWjqwGYZQJrbo#|&7j~-Yim~#i>ATB3U2wM^ zx+J3Ra}X4`l=N9Rq3(Q1SdQZqHRUZortU-YE&a<9amGa0>N}TTgp@7$bDzyu$`26m z2QT^9o}ZiN%Y!6xzpw07&OoVrf`Cd&QNl06LLKY@4D@VrN505wvyZ17-=Q7i36poJ zoZ#>=XYB}=G>xX9ZXcLoQjVt@iU8sD@`tUBvl3h$1nDgth9JgDJ+-nUPtL;qI%6|j zKXKssU%;t659B2>7EdHyHIvWs$pA+@KPp{Wk-Q0Omxm&%>6QW7%} z$XxIA##EoL){FhpX={!JRAgnLO!Lky^PCRPuY4RQYIX)~7Vo+5kjhtSZc*I_~d zcz`(s<&z6Oqe^X&+Xl<=>h>vP@`Fq71&0Y-<}JZ-Jl4e#{rrT4+ksNCGcpzP3~_zRe&y{(FE-I{Jy(((^^*yOVl2=h1o$Uy zgLHSuz+mD+F<7bmlV{`BUud?(w8Ej-D7nBW|5DZ~lLvRBi&ldcuenx8F5rr1+;H5Lew)F#O22Ob$WCwmr!&-jt_pYxjYVZ*5OwNR9k?!5YYp`kw zR~1iYDq>Os2K*gO5q%IB4PfNG1Z*n|Zg?R32nI+74#wR}U(of4x~-FHx@#+#TI44n z?g}M|^?IzmBN|JN%?jj4i+>{95MRb_Tm;4vDCPMcLVAh&P^`xh_WJNc%`t*RB>qm%{nf>12N`jL|%on9#|k6fzzR{u5I&q# z2SEIc&dF7{ZooSz{yB8^MMzFz8IwYw>M8dm)yQL4=B}Q!?)h}o=Ef&nt}7NSd{u>< zKeb~Z3UWmtcpum&q~V04i%Rd1B<$|SzlXK`NOb`MylJ+3)^wfU?xUGL4DBJ6egjPM zn83(i4uzAL;G+UQRigKwHSQ?I1jQN>&%majvfS9Pu-~pq*b#bk_o~7gTa;Y#7B9iy zqh4?~!&go&B^0y_TKB#KMCX?|M^#%q^?FflRGk5@xs-4FCkBdyxQusC(QrBK4o{w2 z+dS1i`rgMR@YBT|(_ImR?XVuQy7Pyhc8EV3)NcOlNSp?tc1Y=2xxC3(gs$;PfV_m5h(P5WpQcXK9pusp zr6@7>LCFYtob355N5_Eg-oL?C;f&YA>wMRTL&N-w6G0Cue4MaG=c|9Q3{0pLwvQ?3 z(egt_luqK%a>lu|0p`dgYBzIooJFcCW8-Ogt};uu zUrcukI}c>C>RZybZQCY*A!L9@cc+Y^uggQS4%A=Bi_0T#y6ebX#S1f`_a8x;Pv5nZ0=|2j z^>LN?>8(z&F}8AZB-Plbm%NR>X;0^#q?yn>5UE#MC&RJeRQhFbsx%5B#M{81hIgJp zj=u;^0V7GkovB}0PO?y{o!XQNnm{HV#_|(`Sg)apR7nwM^#qL$bk@-g{%TLK(qB?{ zu>Jd~kxMV?gKXn#?cm_xF@7Sf>90rpiavrFcG;(u)z?V^PYc5Eii==p^wSQjS zUaOW7RN+yF;%q6lSA~n44URpXywJM8C&j2rYH zf1xeX=+TjMm`omVQ3)Nty<6aaREnBo9|D=}voKx%D|Rb!dnB~%Ln=l4E&l>4E++-Bv@^YQ`jPal+X?YAcEAzr@BpK-;np60LR(o_h9=qOYjR8^E%`EEt3?A`r9DBN%BV*xmbu zwkS9W^PGO4MlLklv~-uDH#m}-X`F^l*6x+xPhzWb(C$2(E7qXn?qjoqadzX$c-6@e zRUvusPvK1ziWro=9lu(IqE>HLRw-5@^v>0nU&0?3YoArf*)pSxPDsv+?NQ*iBlcaT+g0UGW9 z?N`}Pa3DWSx+1)VOdr!)qcwXVK%PkoqMe@FAz#@DiZ&^M6K*%UZ%4+O$pJpw3nqgg z13;cmf%p?3LnmQkmw-D}-s~X0q3|<#0ro$v6b{T^HbSEz*uv)M$8|Uf-sEPhq96hA zE1!4(t<&^}9qpA!9s7;z4Hl6ON|Pk1?>IbEA<%zRtO|YmoWxIvNxxLyI9BS@#J}db zcjmTI|LOlBnQPX}vM9PN!QXXRbUL7!4Ro(>Y6iT%hMmrc<_0Xw*GMA*;>Ao@>N>U8 zmN~7@rB6Ci+~rYiC`qrH=Z8Wx2=Yw2XkR!CEF~mb-##|_TrYOM#p4M;O|cM%nZ?q9-*4HTaw~tyulpPy51Ff@VFXw>GtNLTlK?ONaktvTY=9ob?GXZk%~#f7_|h&W<%CoL%EP7 zzcM+jJzcFf7}O6Vt;Il@r0`o7$3;wADiEy zry{}8$D!St&?O4%vfgVRQB*A`kHskBb98X=BiwLuAaMbwmm2EVv=PuF-^09O09tj$ zNb=qk4b+j%`UHSY6S_XDE>WYYipID!Db@V5VG^1!Z+fk zLgNUuy78{7#azXwm@x_lC(~JZ4?yGmiY*oh=PPmA&{>-*)I8&lZv|?z!$C=FBAvIH z*LD&=gh!IMASfv-CcA~FKA0oSqlQnE+`PdXW|Qo`hr6?rmzd`cF0L_h&X1#Z zhhLcM|6R2PO0Sp5a@KoBENyJL~%d^mv~NEzL=YT8*T)nEk=B>CO+9 zOu9|eoV~Q^WD^0Y=MeZmr0imwh+GVw$Z>jNT#a-UlmHyH1Td)QS1y2v72;|6yK$CE zVQ}>8SUC*uFbFkx1?-^B$o^`Mc@}z1#S=N)OSk37=jEvFII6h2LRPG8NF z!NBPKoW}kF-=~j*H##@j)ud8bf>vH|3b4E}bX8keB3@nCrrVV-LdZ@RY?&xjK|=G*sJID`o2!c7-e8;{x_mAewri>_ z;K+GhiqbL2_GHqIPyU1T#zLVbmd9wd|NhlC8B~$xL+NPWm?A!-rr5dN8WhMm9p>G* zf+YZjWv9L7s2|ha+2}tn%T4Y~u(NLQ`oCpa2g$~X{0!m6VW&u`#f^S=M9?N-o`dWM zogyT{=8c82J!$~1=(8}g(<7X}111Jfk$|23=pmM#WhXB!+75M@D%JRmZy%9~qG(>7 z6g6Vp;h-^vAKf`ocHP!b$L@J$4!?yA{9{9Z#YlOx6 z+sH*DF;0;Wh8@HrioV!{6x7BB15H z+@A$jVwEji_;0cF;ZI@fTlTrmJwv6RW>DkIHaXh?jfDg%Cd{yWx^xEO{kn%TC(C|) zLPiMLe}BQrE-DwGF3B{k1_)4p98t*4UlqTW1Q?#U)C+C_cmH9v;X_28e&k|&_5GCL z^pXDpOxREP56=dVBWAH1r{y~X}-32xsq_N-nXA^8zcO!<45EYR)GAr zlzp?Y2)eown^8Qum+$=8rw(0|3{1)!L@ph_GlrKPsQbQ3`40QR=`H0G9?66P#4A}8 zAdElF>iF)ZTY zJ-iJo8JWZC+6RvW^X3fsx9+ZCL`cJmG7@@qjS>EHdM|92HAY4sD@ zay}hB4H}>TVbch)fHPJ&6SMU>$|}Lt4K0e&(DoKvNa#-FxCs*uaIZ^o?~7h&omG%| zjc)&Fmn%q8$ts|y;7URh=y%-W5eeiGn<`IiRK0hMZEyMnSdGhGhcE z?%TsD-%hylGbgK_f9~j8eGW)UChNz4#I~MKawp$ixW|X)F+x&xUrDkTIFn)P9lic` zPxPA6W2erSj=o{6`IL}nUcRlav-B>z9T+A0VrsgF4hcC_5Kx~%3Nme3%(NPqSaKBd z$K10csLFAD`nmS>6Acc)6;hN{!tb06( zxC2)dn&5xOy!-*9taohlAk|JdpG(A^@`R@2qh@N8BhMCf9w(iCV*Yc-QVc%-x<$@w zKn@pN$OR8UfP7X1Qj&g}skxie>wb>3MJjXv6!qB)jSEj`4rHRtypTtSku}R=Pqe+M z>341osm7rgV~w8E{H^o)(zS)NPha9!$4#!MBP(C&%U2EoZ=T|Y><_;dF$$-3xK(shBwXcbV$6&y|X4^gFAXOe? zx;_`XkH!GEr)~m>acd_@Z%N%76l`B{03wOEsWUs&S)A>Rh9CVS7;m`_sgdVNgyGJQ zVTvx#{#A{uaH+x%pOy>o3z-zA)caae916~vnrts113HbT^&1B-Ei13fABA*rjLTb^ z2ozWlAIfh-b1Q?R73BG738>uycCNc$6E-p(%QdWL-o+OoWL1+2MoQbUwZEF-Izfp*dsjfC5r&i-=Q%b%)h3Iw~9BqMM1J65x6=`jXnot{yVZ{WLT_ z1)neTVkRuEPL}$gB8NJBo2Q&x_<`s6>fDgyu8xpcEgHz86?PkVZX`F5iaTbNnBu)? zkCLB!tr|mc1tUdft+xDq zdgVm*&yQ2v&F0=ON?H&F_2pJ7l7suaFw2h=LTo)1(=FeX!!qEaY9@-#M0_H`qS>cP zSg%7OyepfspA10py@0JK7j)>P>{qPMrFj$ctArnqhkr3c@l&?1)0Nk?yn+tMSh$9m zct=U7UWi!;W{R-;{zjt$?b*3#C_MZzR3YcgR=6Aid$W(fJjw$P=gwfgwzmZZfOn51 zZ$%J@$tx+uiaUn;jMjcYib$n9B)P5$#LV6T6gacLU47GXDv9B7q&3laM|SLxTJ?Q; zUw8Rts6U=Xnxn>G7;-|S+yk0>|9h4jkLM(jwaqHy&A4yoOorX1Zih@+8>AHeL&Z;^!4b8upRuJJA znw+MiGwFIptw>$kRb0hYGW_6n4^#mHBGd1o@uWj%F!zTNJ;B0>7Mz~rA-=QYxr>l< z*`yu*&WF2q)5J<+AHL7BkqNM*{g|eTx2pX50YYu4-7Cgp2-Jn)2ef zZ(!)^d&WwVV^*LWowsz(Qhb2?7sh(pD-O};Ir@$Kiwm#TD#TqEyR%pK}Z!5!eWF@1~t3O8P&Dd`8e3?wdHW8kK^VmjG= zFH!jKB}@Bwyv_Xk*nxfN97Rkd;A55abt|Oq`q)3can5uMF`<_9W6c9PBhzP!oGpiL_XL21i+1rqsRfJuHF@eqtwE!Z?! zjty2imW&A%L8^+fETyJydiz(%Vf|mdeAkEKBsTrD`Pou9ovBh9gZ_T@RBtf$VkZwj zbE@o$n;D{m*@;18RITKCisgym7?~CO1N~*y59{u%7fcxexGZ_o3@m1)`^j5yBzkl= zYQYdbM}kbU)rBl7&x@N%cnV>g)cl__$XLKa!zk!VNT(zaNYX8vMo(0 z!ReX$;fz+R^3^GITmfN@^!C{m1;royUhYaK@jOA&SMRrC)&IhD_<64LK&wDUY zqNup_UVxobZEWm;8r^&EF!-oke$u>}lBd9C!bh1eTiRRZ+Ri~ZhFQ6HbxK4{0z(1& z$V-Q9efNj?%FoGq^?=6eXxPT2Or^KW6rf@~)uVj}`4(X0>{6P|J?`)a6QdQT_1@~Y zfkV?#q4g)G%r^K2%y7v71b3uO%S^#Gc;dKYWrH`K2Bp^$1;n84ACXN@6>Ml_S)oqB z_qx-PG!=BKm+)v*Zny#rbb`y+)N3iKkHKZ@B*i8VzbHZ4db?;Vcr+$k?j@=%$uH;3 z9can?E7H*%Q?U^17U9~o=Xg<5OOZ4aUCK504Vk7Em-^}`D?b`XIvg^1aA(1to;6W# z$k}K25E=LI$}Q~cBJjrCFDA*wB?bcEzDJWr{0|er>t$Jf->Uz*W-RZHt zl5HcP-~HF>D;_hVmK@7%qG;CgnNufo?kC^cyQpY&mO0zKK};-#=3*}tCa0>9A7ZYQ zsw7Nr#%g*I|Fy-d1r_41YmYob@b)NZG4jf4f4>>r z(i<-0K}EZf+Xf70{&tT&=2zWa*-qPl0BpKtxl|m@&cm*uu)c_T6*?A`s;4(C98_wo zdPT|2QvQaAZ&De}D24o@EeLWyYbp?yY}udu^(zzG^#)80oQ_kY=`@QrRkCxUcl#b1 zE8`RG+f6q=FMVFZ+RsLxWhEm|sGv!aiz!~;TG^`YqyntYI}H!Z?wtMu4PSXV6_r%4 z5lvRwiV`HE`=o2b-%kFrD%&50)*~1gn@?FX>HL`#rur?^^x?=$$Vrl*$o>rzFxG6( zw}bpN$QqsV-O*FmS%rw5H6QaIi;Y!fC#Bvx0Uk|dtEcnJnX6q!x{SGrKJbN^lgX(3 zfC8<5B?|mpwGNLd;ePqZ(ujP3hO-Sk+mNu@yBZoS%4%p&Z~v4|YwN@VO15_q%hEHz zLrA#p0N1)pISB|*j_+G4r4n6ggrhp{LtB;2==lJAEC3Kw=QWB0<(5sH;f6fPz zeQ+F@D?5;VnUf%U^^cV42sa{CBdlMy1|CRDVPBy`)@+@(x8Fjw-INTUD%O|yv^ zK{{D<{PYfLsCWUU&PSR#OCAPmq#Z>3qZyRoy5mEi)&*G~!mZ0w*GwMP@=85@H_+D9 zoDV#XX>F*xY(lE1TI#h;K;a@X$W64XjB!ZAidkGC=JJM5$#g{;z7jEb$FW&iI}P2| z4txSHGM*k0YDaLc{D>6$tl>iRqQ*TAbTXEP+Gf#d*lvCB09R)x|9Ebl2!JazK=@RWZUeKrnMMyzVR?OrO&$kYR8V*KNFY~v*rQ(>|k{P#LM zr-(T5laeh#StV%oX0`Eyh2b@@BtT-qeBP*)ws)vJ0eSSLcqrNKF>uCCVxe&74D(Ry zJ;W4+I~Ln6&6ue?c^Pzy9^A1EHWka{irZR*~hU zjah?=YXL%;2-nqV|Cc=dqQs-*({k?XTg_;K2kdNsC9(bSTqSwkLOOjRXI%2m-S=83 zdy+*ri{M$2ttr)PFuY7UGiMfZ3i6|{5Gc4zrbM18v)wbJ1OO4d?r7ghZRzAfay;^D zOQ~fhlD0U-+xdVOd;`t42a#rvEcC3u>z=j-BWEw+D~CCgP^l)k`{A|lSVhkOTvho+ zS>5v})}aA83TgkdA$%UUp4+M=p~_qqC*{T9Q>5JEwT`)5KBqt}MGT9;XavczZ@wS= z*Upa$D>QMWI_334wY45S94+NKNf3DmH_0rk%e|2JvEuOcq;(yiaiw09q%*^|_?FFvkZQtzV@TQYM1&oTe1JdE78ekAW*^`{?AEepjlW zU2bsi7~d&;&%EU*7uWr><5WQ3yhk{{$%%S+DCATXmewM9O$ZtobTiQrN<2^vO2P+n zol)AGMz{jm1#uhTU6Ro@4_`NxL=k>8`~`F|n{AtQ-N9mjQ6f5w5%SCCs7I(CvjB8@ z*FAS4*x?m-PRn-mFf4}Nx(p3=^k31yis&B^mlcH7id7@T(epQ+t*_{ z-IH$D3RJu^$GXo^5AiLaVr<2(dzVOX9PeqlF(hD&X$E?0gOU1Hn}@Q>z7$mloUT6% zt55H-dAS<)HBm3rrOs9RlfJ)C4@z@fp}8Ap!7Z>m`lI*gI4G|c=u#&7`A0)8=x_71 zPa^H4)0H6q1JpekX!0g4S6Q|=d#d#exbUKgx!(OQfTIc$$^`C>mTa{Meyf-+f0seX zk7LJHdNIEx$nea&MbiftA`OB5$hq5h$J3g7yD(A3dLxA4PDZ_%{ z^wh(}R}MKk`uq2IPX}^R`U4vGe}>t8io#z*Kv{$i|YOS3~F zh9!H%aJefk*uH@k?L^*|U)Q8og0Yw2X#b~qx;EQ9XJGc?MTG368CH{CEA`Gd-uMnu z#jr0+qvjtO)09qxQXDiw)Wa05&_u(>jS96MdXe+;d{Ir9Me zB+dtlN}vTSt0^PN(*n~PPc`x`S=asAaeO(Ls@L2{V`vzF0%&!5+(#}nuN08b@^}rw zXdMxB&)3y`WXrO0f@1p)$-Vs%mGWbH%<8t^6PC2_L;G$(@VvFaQ3!Jh25uyTF@r4z z{`O`^#IGLtP86JA>Db6-=%DCT#00y;J0)emf`1r{27*~8`NCU3`5ZH;8dtxPAuN-Q z0l|Ot5gr}HhJn{LceAQp`j@`YQi6bU#Z^Hqz7nuO)}Vaj^YJ!%IQEz@_rnVEj_{V^ zafhu2g}bs8C*>ZW?sLb2GZ1c|4U*#9n`1z5s*)kE!DS# zlx6&Zsc@&&d!Wa%bvLrDfS#|iM)iK1M4SlbalOERujt<4TOvH(Yt4E$9E7YH?a{;o z7}lvpf+qV@o|vW{aA^~pD}B2AcWa?)Gwj;F8A9+|3S{`k0s4#h4b3Bz#a_-P#1p#!Q6l>=sYCibwDrq9Cgj&tieP#pgvQlkEV3 zEsgtPY>!NHt?>6dT9ZZc04TH*T&DMU%e@cA1rE7s2-S;E)K)SJWMka!y`c^=f_?PJ z0PfU>d9*P94uu1;7Eb_KG$P^9*++T~Njhy$Q}I+D>WSkneWFKRJhKbCECbA^;FPlZ zZDn(JWcewbkzauwHeY?b@3C*73$X4j1r$E{jVCnc3r95nfLX|s!gd^uf@+uy)=a?s z%T~+e-ab6?(URp^ZjC5k9DNasm zR9b*RA4J3#gfeWnGAkwKv=r7e9K1%eW1^+R6gWbf?zv#9OD=f|%P2CSi_2cwd}O*k zQI+kyXgKXLtQAAhEtJLo(bv7)Zl$F*w@YNTL7Ye@%A z3Hp@IOFPKCm9wPH__PnukSC(q_eBWB;hn6xbKYGq@HYK-(WF;?tcBIt=}vU5xmOpz zh>`5QVhK$^k!l>%4n+U9*+OyO#2k~Z+k6H$-T=@m9Xm_$m;D!Z zxy0{f0V;hz^>rAK{WV*1alP^rSLfXB^ysqb(li~O$;K}|H2?Xea76;l)ryHe!S_c+ z;@gkz`t}ECTt#q!_*Ft17YTh`*dj1<>bRgTE!5vep2J~$<_k>(@B?iAq969Ko-J7j z@=O2dt-p&YNvAzQ7emC~UJ8sVL?>Z7DMs7PM?GCY<76B!^}9IhVEn}w+ZqWIGEkt? zS$4@$xC$ThGjK~1FG%>Ax0>r4dMS+9120t=n}$ua#PJG}bi%WA$cQKijA>=5(0oOF zY14wPHx=JDn*8W+yZXo6k<{9NBzbGr5S~w@|6X z)wp7WW-nNz1`K_I46WcM3b&y+0-l*`O(PuaF-q`i;@L$98x`3;;@9JC@sU;BCkB|` zUM^NI_*&a-KfD1iZLSXK-Vih9ywcOE5!4Yd5yeL>e>F})yqQuzS1FHn>8AE8vE7!E z_ExJHoKo9gk-sN6rK4UE9;z_uV32rk`0B9fDNxSP%rfqd_-U3)`%qGbOp+D+8>W6bP>lA*P zj^cnK*-4d+?4OXzgt(f<1UMT)dIm;7u)4on3O11{3M?u zScS@8W%@|HMvOIm$w-mGQcKC#fUr0Co(mM_tA<#i_@ggItCa1$_#Wrfws|~>ybDKl zqJ%Mm{|rZ-QX^FtQcWvm>@~H@C#cCesxEqctoTClXUo>N&w6ZpTocy`kw|h7^Wv+Bu5i>PEKi@oN>Vjv1Gc(raFFIR0rcWPxr#Ziu zj{ow@#9i{kSAN;!$9l!4P!GuuUzLq28>ODA;CA(1Q;0`(ZEA_6wmAQ#PIYU2t1Lfu z&5zw0&Y1#?$mH`@E}%T0a*`rV+|_?>-?^igx(OYNGtZ>j1mfkcS;|+!lXqiwGrr8A zlBRo`qw|uG1ARd6;pg%qbSIdY#2Z@}eKS-)~0{tY~i} ztAobl{tmRO4*2wWr*yo$F7(CFdUN#K7n&J#tEUG2am6zr1XEy9|FB4Eb&9_~9FNr_ zmSw$irBze5X*dj2AHUOrP}0ASoo!STXP=2#!sqLgi45g;!@#!1L|)5_(1np)ubBgRj%YFNXggA7SEbv}A=6 zFb`{LYI=aQdtcS(K&{=n5e{N=(3glF>}ecSo78zAUW>y<&!CHJW<#HT{W6f$`eh=5 z27Xu51Pa#>_2Tuj-hvzRIAjGBw91t%4mMS1*X#Z9jWls1EKyfa&p3aKe75oProxm9 zfA$pPoz1M5F>iIR`u(RS6=Cuu?Z%LnX98C|`#2t6`>U=Z3?A0OxIg`liJ!uK8a?5~ z>V}h-B(|T#XEA*8bxoT*U|FS1-2L>Y3b8_^Zho=ysmRFD<>t$mFQ2RwP zWIqQ2aWLoFbnX`DUi;D23Fhdj4_!?1k|2IRtkbvd?3x4717HY`hH|*Mrd+$(sJ3Zg z@0KA_rp&{w^NAsOqvq2nnXuK3ZQzaj?96V+t-Ax{{p5I+apUe*G>JDjZ#*XQSd`AI zSm#x_jF=Z?B;mL$<&pv{M-V1m2g9RCfUyu-LccrY2L7DyJhz|JiLTRuhCOR%kLtA` z4VTB2m)X=0E4(R*&K@j&0Dqo)#)f!Ih#1kdt9lnd@@YjLWU%u+hac!l(DT$_9Ap#J z0_Y4K5&f%=fo~*0$~fGXL|4PKCEL;gc}~FUSlx6aWUDt$`1~0aXKwDFl;kF&XfnwL z>kYoz1PEyLDR4Br1br;2<-}WRH0kWYoycQCv;Iz2R#fuO$M-aYQ8DSHhZnl<2RUIb z)**HFta9QC{uB$}BIvo^MTMt;tT<~lM?^SzN`6o&9Djd1u z@8H+!=db@^pa7S^hFEp!>Bz{)9Cs`*QU=*`s!lMS^SeeeoUW1S?|b(c8@O!I5Yj!c z3TzxlCEB9!?f68Jp3_P&_o?iYE#7*NN{Lp%gx!^j;xhkjUBQ&6Um0%2oCZyb=A8@R zjqpad&JLH8>L9P?xNCuVy0=%rtIv0><8Ono3T)U6qTEBdfFmLi^kVZY*Eu^o8^!hQ z-`~_DBfH)K?AN&s|HlDQ@eN*Wg2zvjIpqR8Ct=A(H2e2InuM|T_ICsI)3JwENk1>~ zlf%4!ES{CYM5#EL?d<4zXr>zH2TrhBUY`1}%JjL&C6>Bi?Y~D|{BvI=+7+n|fbil> z=$C&wW&*mn*)9=JRIcsf8?UgPWUMdE8>PjpSb_SK>|(3!HPBIdW{P_yD9nm#^5dV@G)$2_r_D zRPeu}i^7QB&~*#~iC5oatJJRxe+^rK_cHl65@^?TNfriR)53h3Y z-9^BrMsXw`Q^Tv0n~IRY4y93?B?83acT$bxpz{D<%j!~@ztD7S&z?Q@uI&#WJ|rSgjK(BK_~+$oD`Kr}|Gt6z9{6@8pu?CPeH27^@5IzWPu_stzkj(m?U zmdbEc`~Fo6%wjH1+)_5ODfwNrbm?C)1syXdwe7cg-2RK1_pBc@P2M%5oqG4Y$M;BH zS7~Z#X}tqZ6uE~C7jNh?&REE!_e$A=uGi-UG`u%`vnklAF)sr7{Ox}pu$vj%kusec zb@9v>?!X~bpSysww}HHBSST6CaRd<%J>N|w>pWk|6A?UPaT)iMLul;kuwIvWLV14x zR!0#Q>7dj+3XwW7Rncu&zMBye5an{vzgKwdGFaI0ktQ%W|B9BZ^XQidM(4n$MOE#s z>Ft46PSWD(j#n;t_d_%^H0&DIVux`?lyZUE+TsB;PeuR9G}=^0N9VgCQzs#^9CdCb zAq{nFgyzW4TfpW9)_BmB8JmFcPW#nEZd2N;&644vRh5^YwrWNl&^&&@MM$4zd=k;X zG$b@hY?_S*rYZu5{m(|WYUa27%$8Q>(a8?kUREnL6HFIdGT39VvcCh}VmJbgWR(>M zXJ5>PB};Egtc>D>MmVY;%uDypL<=LjDy_%zifSvu_N+2*1 zyfttXE4s<9FP&ffb1iDNg+p=h?8Q0zPVTwi6!i@gbJ`mZw(p|z+6S!;AnFp5{b>r` zhdf{n=r?Z^hvTqGKv$e(k0G#FCAp{U;I7@5cb%$1;;eLV<1_5y53ozVP&D!LNus@& zJdUB56zx1q91nylXE6S+T^*CGmn!SDm^ZAEcaEqx#U$E`~=7sE^ z7!TO}FKDBtgXVhp*s*0_g^I3PVcu(ktG8Sy&i1(nae)2U^R~7?&vv1mleS<> zE_DiA{QIlLRL`(~xs8X6eF=AId(DJ)-|2GHFWbDhhg_!=?6Q4`4w=4+dhE0$pn?O0 zJger<3$wKikl3?>gTiXiydkb8!Rv4I;10$qFelb~=got^(>uH7FO1g%C+ruHVq^c( z+UgA?W<-9Rr95);EVte>wRnOCLn$N3Q~)y=pG}flbZ*#;DKDGquc4`>>3$P^M^gtE zc9ZD1#VNGDE{>t)BpR~n&2rc!?({~jZ63P-XWjy#FkpH`c)Vx%m@F~f7vfpP(VMbU zHV6LaZYo+34qiu4-IL2V1gGFM``z;PY(jBlsClTk>V8|7kG$=3D3qCG!nSjEGm7A| z#V&a4i>FpY+33uxSY&Q~X{7e(4=rTs1av69@=Uu>{S(X3;?V0}_BIC90^661Q*B*; z-NY53nv7@2+Tg!0o!9lHHUK47*;9@%X{|-7-qp=Nv?`AqNAu9dZXpwMr%ybJ7oTo} zZ}s9-CE=R2y%eOSEW`B>`7i3d*8dfcFd}yy4uqf|LrY6bRdOEzsCv;4KcRj^T8`~+ZVaY+nP(~ z&rbrm#_~-qbmoVq+is@9J;2r+6<|;ix&&v7#l;==?+c&yO*I<=O@HaHH$d<=&Ig@( zad{B@G%s0qSo|4v1@09oAqX-@HQ)$knvsMEka8uez}Sb=SzbZier3T`WTlHMIV~Oak18QRqu?|=~n%A zsK4KPF!4+(TJW`JLn7yQLi6b-g`vIUVE{E0&`k8lvB1o&NjqHitB)KAFothBsy5l* zyL1l5()@^&{>;j%6Vq@nJR>|<9Zn0W9(=Ku7QZ|CFCT#C**7F~iiG-AcE>Z@E>8n3 zcuc1Y+pI3A{P4Z7@?Sb?tOWGW-Ox`isc5P8luW~kam+JKbBpb#mpGD3BTpU>w6HAy zHR1s@P=59rReLdl63-F!?*S?jKw$4bLx8Oqm`7D7%GNb*LaGJmkDar@~EM^Uxd=vhDf36KblXiOgFx5 zNvonatuS9Kp<^bZVQ826QMVK6lFK1(%$a>N>m}4Hjd}Kxyho5N8ZQ6Q;P^v%q4!(I zhUR-Kv}pLuc#fM9`k?bIt;%qSeE#FJGj3~p+XtK}CYL#gtQSC}1B5RU@O6j$qZ##f zdCAZhF7$4r(JbM|5OMc}rP(7F`20>Xw}U|e8uySjz}2Ua~~E3v-(tP&ba8|D%m zLEWR{MNhT|YhIOlz0aixq|*YhMQ2RTL$U@(Sm+L-Ss7z_Sq({OKbVy6f;x6Ckd>A2 zpP}iR<3TZ*HMH$=yCTn^-WHnBL&dAK(SP|}{pS;_bAf2fCN&?lHkh8EM9Bu!P}qP4Gf*_>eq zZs+D6Boa#RZdg8;V@~c%XL@1GN7N%^puH12pA~ zb~I8_pLJEvqhG&%tD7E)xASdlmwoXH9t&GXuxE|$7N&1?|bTq zvA(D_5&plA`A0~)DP^|?ig3AGjpK!@DIQmW2t5FBu?B}Kj^10C{!d zt8|hYfw=tAL*4G70*BIXLB&2|!i05!*Fvh~k}#=f*1!^x>=HKqUr7d>{&u5Zv1#7Y z+JmPze{Xz;S7Ur zWsX}HbbHnE)>dmTPSe!<)jHj}JwqaXIVS;yP-Q8{pv2x4qu03$|GFsJcN~!HJ{M9& ze-etAV{={byl7~2CnxDsjQIJo|4K2;F0TJ)e7v5Xp5N~pB`9%tQ~CpT?M`*z6*c)j8#@q(KXXTOdq+7s=WNpkLb!X84IHT>uh(lUPmlT1AXaC z3?6M%zOA?po-F%U0tVu5L<}UUY5BH=kDi0d8&hW{erP@BNqzo!nM4~jsP|tAAAeWm z-5Eam*PR7({BU9#RF$`nfI@jXhRI;^3=!wL_FPvw;%gtFiJ5XG=N&oH1;V@|7*3kq z^)t)J149OIBq|+s*Wqzn0Rd&_5f*H$Fik%i;MQ@e82u%Esi$yPH^60U4mxW!u4o?l z=7Q+nK22@ibBoGag?dk9h`ufg3afRdYk{=p+wtk|)4P792M};CJxvZO(x%O^xz6B< z&PK8u)QnbwRb`U+k#Fz*>s4?!?9Tx-{zs0CvQlS8-GVT@3T!a>WVK8}p`g-wIJf_C z^Sj*=Du}prPdJsuje>zYi4bz7`D5b0$e8Sbh5YtJ|^dM>XiaO-&*^ zLte=KHBPF-g|=H7K25L7O@{kT?h7RR%2R3L`2s8FsM-Htyr=`wEFoxFQfUhd-|LlSS*w~<$>Yo4DEs9LTBil zIdeF7FcSdhm66}A`DA^g{`u}qx;T&|M+kSW)=Oqn`|8Cr@wQsm=lPKalmm|%hgAJE zZCbjmL?)!uIiqL86OG6-;mdc2g`sCUQnj#NZ3JSgTSN**qTJF8^kjcHeiM8iB^)7=^&-IVg zy}j`C_6@3q6CVAfEv`q8-d(QWF00lF_QZY`GI9Po$uerUG^l`Gp1h?PN z8JZkN@k*0E1azfEF$Zv2xgOHjQ9XJ#M z3V$X50qb?@P@@f)x^WG@{AsUuh_|%J*h6X}0DpN}p6t&NpR9kEvfF3sI$Q>|_K|v= zPRdcQC(oZhZ|;RgdH<46&l^hd27BrE0_$P_gn`2H^vN3(Xe?$^;_bJ;P5hmz)#xEb zNlB>wZ_yTEU!Ayvvb)?L8T$u}nX~}EW4R7MEvYrkF-BwJ7S6BP2w)2^55a9Y6ujA* z4Pct=DQSJTdGaJNz@F=JBFhZg2OY=F-AW;UCAaqeVmd2W#O>1-!_eAbZ;W2FWwq#% z&ePY|XPrypD1}sX8Q1_!+y8PVNc?^sBz=2*ec5^`EYv5)4v7_c5G3l67FF}hhpD~( zcm(t@Cg)>PXzN(`n;XT!j>YX47?770_bnuli2_+?XA`Ge8yERZrsmH2w{J11b2o+>2+gq= z2u@sBB;L|dI&Kmh)bWJ69BGD4ut}9Pd@-K+6KtsCA&f zpk);|Kee7Sl}HebNE2SEeXGj_Y0Kg`kc5N%P+pYYR++x!Yy+CVM)`WWx}=UpEmtT84nfBfLjnW)b944X3WGT^`TeQ#+M;#@$}u6=LCz}_;f>o?jCPq(1N=KwW0@^EfF5`|fV z;Tx=6fE|6fqfh#;6kW#teoIrWasCgWsouVO_wEz&;0?^I!0FEDs36+{r9-<+1_ z2&Ao}54?~XA4#Mo&FYOESX|d{5D85DOw4A0-zPu$7pw#K;BaVY=!2`mw+uVcHIh%Z zL5W5hiN6CvWcKUj07J%ahIRY!lcLA6_N+j^E|^DHnmLGysSW@`2R=I+?u{<>z^6)R zPF4*MLq|KH$0Q=1dGl`Fy2TSGGE;7=L)oiWt3AF;yjgNoMtfmY^;X+aX$Su}+NE}v zvA@mP2bK;<{pU7BM+!`ulw536v~PPot`I1Q2=pgUv~K=h#?TVIr8`?>6kPvIpZtZ- zQKORfdln#6r_2ir`4>hLmWBXeoa%toE%)_uGG9bq`SAaaco1*QPRHk0Qj3#=gM&e$ zK!K`qSA68BCM1>Ah$~ZEC(|6Cro$E+ZwHHRo7#df6Dhb+MJ@Uk;NpXkcq}I0f4k@09 zNb%}g9?3-hL{Z;nr@wc~4t(Z-m9zM$_|4~o!zcAlkw4*d9=ACb0pO&^;=K59F|_-9 z{MXif2yTUQ0ZN>J2Uk@pOdp7x9_{9T1rr>~Ug2OXDHmX#T?l`*fHbss|N9ze0?%G( zMxEW<2IY9GPTs{cvCX4 zzybR2AD^iwz&cW{L{aby0^Gj02_RHc$zuLVd>o6FF8+BQ!{o;9*}FGMQ|h?WKE57T z6L7g6>HBJ%gL|4y&WlOD;pA-|^Y6go${HsFX=nfa6LybWw$f`~{jeZa4c6iN-Y!}m zitH*gODQy1DuVr~%jtdJ4Vy9jsr7$fj3uoB8I^l>Gi@KS&Z zkFq)PVyH?L%nUZbFTpVoqK9V`xg^iHLoY@^Y}Pb|T2vV-ZaU!u)=VLh!@myN%8XDr z+uPT91GFe*Zz^>YI`pPz#Z36n(f^OV_weU>fB(mwhU28A9i^!uBV`nchK5KXD^z5! zGDAkCfi#UGl8o%kY%P?TJ;SMx9fczN?$=A5_$%`a;WLQ5`4^Sn}intGNR)D zW@&67uBtw@Lm+0`A~B82@%eUOehI?A06O|!k{Y+~-kncLS$+~=8GaIIaS!;Ttwp@$ zmO6rzu|1-Hv1kLez%hPImRSI&Y{H2tNDxg_(d2JeO-U4$)t*LRXgiRHjllp0d1?GC z$o_dKKM7i;JXBtaA=?@E$5|XqpUWhjC0oS%!^m|DXoz9LmPxt0q(%iUmpr09%_*Rh zzt;wC?g+(L1P;3BJJsjI?y!7o$6ZTmo!D#nJ_;|`Ukg>M-~G8uPmf63{f8$lY$p4= zqT;f)^SRZF~vNFq$;XIn&6WogLE1N4c`g2$IjV_2xY^Qomp>g?IG zka_cyK#7DCcvvA_O*m=D{fs6@8Wc_3jbP*k8y&FH&H`BS3U?xV35Z5@b=EPyHRBKG z;Xv%wJ^+`w5Spr)GL>K_JlIh-03?a5H@9r&V!ZCi?c9YiWhdeGY6VJ2;-P3@FH|b% znEc0^X#vaZLvv$4WIkKUVsQidh^v4McWc?igLrbUnKK_8iNznVTzD0-q4@%i$G>Uo zq@7bC!l2P33x|^RSoBWP7vbL=)t`8aiq$W~yR>j45Du8{O5IbU>XwU z=jgshk8mDde5kVlExFgol$R22gw98FuI|Jl&d)!1^zk3*s6IZzRpNb!x1S#eP#?F< zS}YZ9^yY~LL;Nfp1yWaMFAqYAQOh|2oHOpu6E4De)2MX>V)=@-W-nsxo9i-5_c=2yG(hA$ z59)^O#7X$PG5T!spC@~t;@f=hvB~y3-%v{sF&PnQn~}pMr<}87@5{&*jf-V ztPemj36CFRgOls>r(ej^qz^mBm2x$h`u<2GkB0691cgk|W0=&PeZ(%IeRWUBNGUmQ z(o>)K{fe*{!d?uc~b0!M94=7+f z2w;-0NA+~~k?=q*73e5V8B!ynz_2&bOm`yVVei5(h8jIf{am|L|C4i!{i*YR_^@D* z|3)u}4=Xoyh@uQE8&pCav4^CfT+=cuhe+cyTv^~!D?z5&l#$bPhacMZ9}aH^ZWL$U zl21Okl>XC55}Iql-DL~0#QIBaM0iyjnM69CxSNvixxk0n1dcU>qLPU-i~O};H+~}E z8=TNwQk&Bl!666Nxes3>mflQ(sRGuOAjKC#8X3_pzy{a6PGX2Atn7I>=}}Mo^$9;% zX(y?%4dQs0JkgYYRy&O<(*)x|X5xF3Pyy}mNJ~fTEG;l)&*Hqu!$jqISgvwg3iWKj z4|)4E2r~42prt-u_y0^uUC%t)yMfKB33EQ;#R;D{okQ-cP~(*hE@3)i_G1#+8|>zZ z*WhJcw=veSgGhb^yvdMx!?D?K!~Z%lT;_9Uzg5epPp|1A(+KoC4+Xr4qDXjX3jE0; zGf!{>{*>XYWLR4xanIFVZ4XezvzuBND>oq-=pLDcDkqCEjq*|dsKw}=6wP0`*`T#Y zf;dx>8PvCQ=RLz$puVD>>3#>)uunf74S+G(O0e(^ttLg%iMtwT%GOZM#PyOf=V{9T z=}v9)?hl({uERtsKq7w7L@I}6CVt`HKPBI#- zL8T=|4t7#XZU1)*E&?h3z%R;TGP=r#GEo`zVVc+8J?5oSi;0@?caGnpjc zuf}S##mPo=sSOI*6jAAPz4D1jT+oz-sQZDY6g}BQV&eBJmIGmRuKNnMSf&i)a3R-5 z22aKY!MmlZptBzB)u^k}X}(#@dC(r>fEE)UN~v`MsG9Ue2I2k5o)=bL7*fPaBdD zDgOUo!O(i(xFAR7--M@0pZA1g+R(d`B-UX_Ok9!ARSxf%^a93TCEpXPZ7GPyz?O7> zk{4b6=)8gcVw&K4x*Y3bE`u?Z1nxxD|LfQ3%eDg(+mmWUnM`!?|G8roycg~D&-8!& z`Vm^z4K}0L^pTae|NTXr)1=PKnI(;-L4!ZyP>gtXGHgJx0jqwEWt;Rn9kX#zd(jXd znqslf-rL(d7v$K*lwYUzra}zAC2jqr*E9ZlWSphvR4k(fyXxw)J2UIZNiE`iELfxD z#)xsj2U2^tx8BqK02`Z#LCydEeaTTUFAv1rrx!Jlm>P_R1}ewn%d`?k)*JRpZZ4**9=2o7!8TsMtkQrFRda-zhL zMKvjQNx8=9`o$moGLp35Ey?4QVUdM{MY$#$i=dCZZEGhdq>N8FDF-c57|L=672^}- zPs-^hfEWHml)piC7HcMr6Z`eWNS4MPML6)%v2ygfjc@+nXS#|)Pen3SLj;JPgAV@k ze>C|S?`2SMaC|`xWKtRnPmI)6=T`vuRBH*KmMPK62^;++0D?H3|4FSosM_La`o53& z%%V0u>c81g|K2dkS2+H!Pa8U|2DFQeC*H0(MKuXzF89#N?mvt3@a;!P-EX3atpZ7g zab4m@Vv0}(Og`#={JCr{5m4yfg0Hj$x4Go|gMU9@;%}0#)}&k&eT4W|N?d^d6UJ`I zdL*QY{r7J%RS5hCqCN57SI+w1zxCkaX&+Pr)F!Uio|MlhzD2#O z1ptaVq@+nE=MWkPYJBrok0GF$Ga?v$f9fuiOfcV}1i-Xb|EIS?qIu}J5spJMl?b_@ zxfHID2Wm8yBRQtBh-kS2u!tul-OzGU8R{HCRsrNnL3VlfFkpMZ;>Ep;hT%3)?mhUk)y*1wr($;X4~aBK?@pBa1X4b@gZZHr0okuHvd4t7S zsfW|}kP~^0RMurox;+bj0BOIS(YU=&4{9M}omB_1{>RQRss?}_(Jd-Jx>=@*Bv zt}La>I;fEtj32y@o4&0ZBPBUBEo(2?4=$)nNXOOQgSR^6ljMnZeiC$dix(XjH_GTi z#ebUjE^7b#<0fcwAl2LOK{;D)MMt;}SI{-&FSj~ZCt=Zpm z_&<>825Lq<>zw(pulg5SpgbY9~v;P$?OMBlsKg1WDiB_hAe)FFr5DtJ?Rxh zYwJ%lWV}saD@)I#GR71W6!zBPSlYaxDkwi5S-1NfU*@+mqEP1#(70+?8Z8HKf9?TT zWi*iV^es6&v=4AUa;L@$`I8ZCEdM>3AX_R=@<|C)`Z?q@Zu7J6rjtx+75d!Y@sC4f z?$giy8OFmzL0Cx0F1Zmd&A*#s+fMWUP*I=Brw+kcltq&UP zicy$2kTDw=BnKKTh1i-EZqGlwZI!LR%?I76@C>lu7^8I8Y@O&s>HO7m>LwtWd4Tyn zXb*P~8wf3>^nF9*(5uWt&h)fHlj?g^|R5;1qlB=5tg>q)Xk zL)%-_R=;b5$t`XOF6@2_YS zRDEx}3A=6BPNy}b&XW)f=>(E|0}c5S4iLXxi>>!?LvgC^?U zGdF=z7@_0J;r#!8s-zT}IrD)TZLD^L0AoJ}{6tg?p~-l-@qv&RK0Q%deB%1t&?wza z%`w!Z20nFwk2vssBl|Mpv{>{Vrg;i6qcj{W*CTT5W-pp{9FUeDOdX_}J$3RY+LC6* z-0ZL&IuplI&1k)1fbv9-5>J&sqG5urd;m1PmSJp24zv&&L%dlEXpm0oBa!=p;PZG6 zyq-y>`bl;+SzUmol2yi1~e{op? zd0vPId!{^oNo}~$vCLiveyrBxo3{SMfND9_@qFd1c?^$}am4d5@)O{}6F%NO_U}z( zs^>C|z*$n27-Moc@2~X_<^uJR>#Q?oydT?IMuq=qCArMP}`SQx)=Jg4Vi2>M0D+cz8{tUa|_&F9%fi}Z*U8f+gSccKPa zvdk!?^zK+*YWGj!xkBpYYaR_`duc7uYfeIGJ&n*-GTk>B>o`DK$+~Kxut<=VH+EvI z(lroG^iEHpG0jfcSc|bB-Ld`g0VL5b;7gCHYNfCK+bhRaOnR9`p+F1spOX&f)A@AQ zzYTwO0ngtvy_Ma7aXoKv!@EAfc*=uFojwGGTxS=GP--KcX1*Q5#ACE8mez;C8)joC z>tepbnu*2?(jL#+- z#3}=ja!IBv@*^dI#vo9ft{&b&Iug}hSV!y|3V-r&MJVGJCVtB|W2b0&^?~)Kcj_2z z>X@6%^dFoHVewN&f&)lzHz=%tX$#UEpp>*5I~k;%o&Rlv<7}yDX<}}ov8H=ipYi5z zq8@;3Fnbux2ePo-qyYD>0@5Ex4%otg=kaeZ9Ae&_K&S0LTsqi8!Kw64S2|vOAbqE3 zx^R@H7m#~r(Kk(V6?2D$Iup=HIFk2$O|(<^c6|Zeqf&Y zNeEbaM4AC3q?TU@XlZ%Yp&azNvI{z?l@95xUuo)_8;XA`UUrwbF(BnQce=B0ykTwG zmZXJ;W@x>Suu{GMClmX{Svfk{g>VzFqf~FxSNNthkLWQyaX<&bxvmWsD!n-N>RJW> z8pjK>p3Y}biz1_qg16c_BpN*~ACDQF)074VC==7b&GA_cPeX=}TYRgm{V{%V3e&(L zaB|Ac=2R>IjNgFmwvas2?+>GQyO8d8zRbc=)))Yk4F1#ovBlm0u$0b1!lh@-IkPI>iD)|dXUNiwSU|IGppOJfU1pk9At^%$sW-*BAw@kKz(h3^s%e~i5?`TV{%eW<4~erUihz~P;Ef}Sq^*Bh|C&0$!0P**acca28z zSn2S-sZ4^L*%v_4a`7It3ALZ&S+H9t(p8tljRzqcDzph`(tqqx1{m0vy#Ptq4DTdU zjmD^OsYR;6hwCTp;dc*)4|J}W$O>D~F`Eto^~W;cw_|Ooh&tOefPor3y3F2NK|>8# zy>kY=6f_-ZqK)cgpTa~L*+(}M$4VJ%_K0SSM{8IuaXn!oSYs1F#E$Z`&KN&-g~sb_ zEm^9b$|oM(U)Ry`^wsP`aS?O!qT%*Z(QHuG2LJ1*4)fL zxlcWEtB}6C=RvPH@>i8#5q&bWm7`T1lc9jI< z3p3>(IwQxr6$hdvWEl=^KR~t-=*B4!zVX_Zz};K-(Y)`d&iqI-S1#`jooS5UXZ+#p zy)o9ze9wQq(-w%)EZ?lU8jNn^Sjks9$Kcg*SoYu}zujoq^LN_ycXT4k{nyjAb-2qB zG3fzcv{$=D7Et2wm}#;dqXvtbL5P>ULK*HF`@?ahM)_$08N)M7CS8`~#{S`TB8n>v zMj3aADKJCLCv~UqQ*g4InruxWyFZLE7<*ss}_}B)K>^*=1tGF+BQm`9r+Nv}>Vul z%Rp1~)7C~O6pI?%mRb}Z*M+=#LxE_3)7TF|P#V|^glkS-ijSIf&sN6X?8l`B&{z#` zs|6iKnK)X)FbvS=*POEF<8ZRLOYOo$knyTj22tsF>MXY%z=#H69o31dcj6mSW6qos98`~~3iVar ze^NfT?(hQ@@6n@ovBibZ@l0s^MP_Gw5YJPv*TX<6_o;Z6THz|I2bP6=)2}?NN3Hr} z(vhPSP(ffE=oC(w?(T*@iaoH1D+d?WUMMxlZnYUImBD7!)Yw{`Z(iKoQKQC zW`Y;D4_%-#j0U(vHq^bIGHo=_M-IMfP&Tch`bMempz7MRbRNJu|q7^cUZ0Yex+}0tU@utr3 z``vRlnOuZ)d^D1CrM7wHPvfhYDSDf5!Dno<--i4AsWnVhFC;3uu~!HHrp75I)r^ z$v=w`sld#rR>{Hw359=3mS+7VTG_2O6hgAFf{BRh@->P%=!9I&NTV7JwudwljHaBh z7og|*Q`Bsts=5WetZXB?qBDy7zaT{onI+P&`8~FOsue7O;JA1XPD=9Hws2@Er=e8w z#uHC_;`^?0=ZQa%h8jizb_Rw#5^x(x*jYgh=og}^pXh-@ZU9E8433Y;v-in^7M|6* zI`tFEgJ!2B-xC|uRu~#YMkhe-i7k2)*R92 zAncB0aCXRm>vAHE%$u+yShEJ9W3eB`kN{0@lSxInOiq090{f{@(q+u2AC7E@wh(*8_R(4>HKR%wLTM8ixS0c zsxNt7hwb!+V%QSS#$gu4+tEa3B;6C=?Fd=u1*4!5*1%vD128wDl{F-WOK-+!RRQqQ zt^HL@Y>27^qra`qbI(!Kx`!ZEh&Y>k1&GMg)t%SNg-wt6Bbc;9B@{K#NlD4*=Pp5dg{@)wHBrSwRYYF4D;J;s84a2!!HEcy=b)mJrTZZXQM@qXVu9Xx5zL_*x z6;DB<9b8=*j9WMW*iM!#`3+Hhs6mWWj*|HSh#>xnn3NepQ*W)Xyy8SA3Khl&2kygx zEk_(8nrvK#QzGG@k_1Sv-{9dClC$VIj}`m?qvLYf4SRD*kXq_S!N zrd*8M0W$L8=;I@`ls{H>Kp}L1%&=|5;k_tLibW_ZM$C@CGB4ouNfP?!@|XmV?K?7s zN%0NnRb@0{L5cNr6LcFI|(EW^s1ctkaMLQ#S@<|>P1V+!0&!Jk~huzcK~BO)kpQ1}srKo;R8g>?S-{hm3TD8_#{@Iq!s- zw{ONwko!zE6ZmycCBN$AuVr$cv2@Gn0|yJ{EEi4Gs-N<10gO<@u?$aN0{H(_BMHz7kY6<5VMbl`MgwHo$e56Pwj>3iY z>zqSR!(Xu-a@m6vn22FLjP#4${w}_evo6gwIZPTj+F~>S@_mipRHkEeJKB+Y$kIH^ zDn}>m=n#|_LW8=$&rLy9+FINzMH7ny#M3{$SO>*#Y>n_Af>Pk>$}Uzvvr7$xqjH>6 z@8}(wm;~2Qte`}hMrpF!D=-Ciymnbb?4}MpAkmN4w@POXF-jx6`rW)l(=Oz~Pxb*W z4KMG+d@x@cz7lUXN795)<#1FYNi*2}0QP{0q9i7j8~(I3tcG`1?Z2_`QF;E}4TG-BLa zd5zz14EWt?Qsr()AirDE&{^4aW3EUU>}i4nh$v^O^VR%G3fB)z^hb*=n`_Ie4 z#+&=)$TLiy`i4wK0HVn3LkJcTuf*sk(9aV-dW`wTz#>yy1Xy)kR6otqMK}~xCWa>S zo1BkObzAuY_(%h}xQs>{P4}zZH?z1N!(<2~dWZp^Dt#t&h_RmlEjB(+dQ-F~4a$qs z_#4#igOm@lLq13RYV#8-UQDA_Qo@k|oSG>wk~#F3Cf6B8ica^JOkEDH@<0sHj7sV{ z_XCH2pFo<+atIVOBCCr*pdSTbe1IA)RfA2adF;$4ur=D~$w#!!@c%+&E|7-wbcQ#L z$ejiC$jGx>pFfGhigbp_D#=$J5JiZh6PB>c0zPmDK+}$?>?9w*M4*QYmU~i4tr!a< z{hf3Kx5KnYrhq3wrnCi#v|kL!|ID?*O!_ex9UPZPIXx{G)pK&wT1e1o;B`zX+-f=5 z^-^--i}st;vxRh@@e>$MO1LBYXu2@rVyxc1K*nmB?tXuE3nPGdXcWl8y4}vXgok$3 z4M7nZMh2G%lYI{#Bk?*Se1_gfzn0?iH%L80(G6UrA$;*qA~de7pUzZyl8R9ho%*7A z#*Xl$29UsTAdSX(E=LZ$uxTf~1%8}EY1V?|QYpQv9T^v25)wYQ5pNjcqyrEBxgjaSI#F0frBAc&;NwABS+cci+&uA!enAxGA1_WG0uM)WLcbx2N%{J zb`EXEx;>kQjezaD14G#4h-F6i^^yq(uHu~_ojY_uNcnIemAhm-he`1greilWe`KU~J~QSu=ZyG^T*JDnmx}=?DH%_M~LO;HDsyxWBsgkB>rMA$6DIUi; z?ZlVz6NRN0sRe@kPemTH?9XiRK3;}AH((6?fH0hui`0b&OHr@+U>aYTCGwY0u&1{R zd83l&&ICi8Ub-o5D`cI+v%>&&T{xsY`0T^A_MdS=scCx%m7$=yk0a-9GIDb& z!rjcYlU7_Z+zS2Lw}<0D*Hev`THufDy`5Y#D07rbUQ_%xTC<{5%8!eikpgx+U@Ik- z!U<zDyCW*zg_!-9^98^`GYfbyS=^J%bqT}U>Ng3eD6~!&6=ary3dy*4wWMY-a{KV`}C?gNo=cl5Cx0}VNkKP4DE8? zVmQ54fcjc7m%tF7b8Bx@V=+FsEWcoW?^bX3l@C~+Ey0o>JU>m9{4Xea8el_}jAh4x z2*2L|Asu{OQ)!BqJ@IUf^KX*x1fH%@t)BJ;mI2o<0W{L38>f!yk^QNPBLYvXDOdyW zOpn(-`UYTX89Ass_TPQz$=ggoL4NW5b2P%bcKgvTAvSJda7?>~2N8*M6J}jyiK;_E zTF&p-=bnhQ8EWpjGQ6f(-WbKamF5Y6n8-&(*w3`nK(z3EyY&f6L$O)>Tyw{ z6*mGq<#zs9YrnH@>FQ;6_jSDAzBDw06vpndT3&CL{`mFeSpCQLpjeb)l5WCaG|So> zl7ACA2g_+8qq`o-r7Y|>tYcVKnsNu3a1B;t?fG0b%iHOmd;#-0x716-l@O>)7;0ka zJ`SC3URi^Y<3X)+TO04ZPU5a0}db=A?JuC8r+ z{d9IzFC#}Ns@ZEt+?~f#_Oo4RKD+$-*Ko9xYVGS!UYZr(d+FTX&!S!yP}1lPouo{- zp@sM%Zp=e0*ZE^>Z2F$%Ty$9KRPefucTlIRJf%4A^o%%(kHc&u7D&Ad2K9b=u+7(E zL=yb5G0Atu;|BoSeOSKJ=}wu8-HAQ~gG?~I&-=e&mbmt3@NX>^s)F~+gr=wD}} zNivl^-x<4D@}s-83rpXVz4clF)CtAY*kW^^WpNEMaSI<;lk|>=NJF0E2s#Oap1yle z=Hk(NnqpBBa;kQ976uh;_u{V040^w|?)hq-5XI8ag(eG2vljL~Lvk1{uy?Lx;@uOd z6}X7a2Lia+S_8uPPW9N1WX?0R=XqSj z!@pT`2ynjL?#WtZCt$j&9Dq+j=Nx?%BIk$aU_Q zlh8hpQSm@*}FvU zr$gdNCn_2SvaSjv)OLM+h6}HX&ojUU-NJdFOmR zs`=&`+nV^pp1d!By!Z*DaUSn7$iw1ELdsjycY2D+ki}o2?)e*%KGM^3UBG1$>pahK ziCwFz;L5zMcOC+jQ~k4xC79brzvQCT>+7jxOz5w9qB}1zggKBGgK|;}UdyBj_?_3t zIlBy@a2Vu$&A4{~bGP2ga}FjG^{PulzK_4p?7?kn#|aXyqA!;ML`WV0c)}OX+E=&? z7e=}hI+af8x=#IV(QE~egF`e+in`VdPU0-_l@`AljET+w_ zT>mYQuk+^08Y_ETMX($&zEe8Sd6;boz}#E)cD(FL$lvfQu=4 z_^LjYO5`HQL#Mvcd*wx;)ju8Sa3nKd|K0YB65sAWxnErwszT_lcoU%_$z`O5ZEW!csW=HN_7a}CPqQA0v-Uj7iE}N{To!v}CjT$6!8w%tlqAJ- zt|w5(Rwav|7a$1LDvOq{#j_e|DE1_gZ-g~v67d%x%Fv3? zF~`0J&9{zwJ{zQ$g6?0}F^A;v^n0<) zG2&)7cgj8KL8)rz&vB$jLN$b->1VwV2MWkzFZKn6r2q6nB{i2BQJ8w9$|U7t;(2JA z!V0U3qXrn|e2{=7FJU-V^Bnkr@}BpQ*h`A31S9c$3GiOr+E}(%@}Ns;6oODYumL`M z7S&}}QzVX6A9-r-KmV+(n{b8sG{?Q0RWf2R8D}5UxyyT5lmUmE`?!|aI`r`Wb)Ekq zi=4ZCDQZC*%H%ego6LzD|8Q;q{4x!z%3}-v=?VzyP(jo|r)O#lg+o)@xIj0gF`k4KwP%^s$H zzp2W32Y8?=7~l-!vtRN?gw#jjpiii-wB9bYQXz5u{*;-#n+h|zTmvKTbu~j89HXDE zb$+J^S|{J|PocRfH}-EUK;TmxOyh@B>NiZ)jOZG;Q-*@{z9Slx3&nw)4`p{|%)Zdq zGK(qlb@0Z^d*8`7w7EL`CLZw~{9(6g3R9w_z@~PT)2!a$w}k8eS@rq+do-^EkqWRE zpm^=$X$XZGSa{uQ;|Mlm#m||sDIeSzn9Ee=nFnZ-R;?m2@nJHy_r-(}JM6`T`!U*q z2TfjXC1-ESpTn*^MfRw(^-SK`<65phL4t~;}7Rh_}= zh9{uP7@+Wod?Tvnrk_qo(`7G_Rcv)h=pO40U15KT)$KD~eLTkeUB?k%x(IYJR2E{8P{*x@9pCsu)#}pht3dCncKMF z_rWoju^~>OAWA*8Lg1?z?W@jf{VF{$?%9x12m_jOWU6-~ir~Llj^cgXzYR%GKxWgu zzqeep%i^7K{zDuR(NIdGS--d*x$fIB9D0Z^buGqm9X3ETk!e}9Yk|b~7jxoQhTeN* z4IovPK#EGEHJ{d9+@R(CnKbq`wFp}R6iuax!+Ae>M+oW;-H~A7N8;4ps00783;{|W ziKfxQfO(gkSAT8=U#ysu_^V#;9^Cw6yaf2x=r>o3l*Xi-cQh}5WQ|#dZuhv-&99Nj8Ljr@y_{>yD<`iP4gyLr=!`#8SHC*^q z8fChf)n8%U8Vn9l%1K)gn#u`!P1;CSbeR6wm)(7eO>O?Jq@(*yF3pwxtK0Q?hpcez zTB=%9(^aO8?-gqz0|06YM+&E~lw526#-g%8ndz|cewW&6;lwZy4;jHiYm92% zi%t2Q=fUBl!TP~YQRaMWki$2aO1+(uu!(n_DrlWz=C3N({M@wr#YZ*HHjTu^xg&13 zzUl9e@<=gT(CvA2PD=ugU!Ce6WYqD^Th8(wyYu{ezw3y8pNLFX2>^h>?2)ZIZ9s0w zA8bKq@6LM;01j=2R|ojo^$d-WK0@2vOSS-4;4QCl=Zu3 zGFozbjC~V)FIsEut7fr5nN#QXVmet*iGt5zF;!xB;p=6WnDYfbS}(iFqT#kn2$AW{ zZj%lK8t(&Fms_h0(iFgQfxKmRXT`tu3-2dszUW$?S5Ud#B4{zFKx#=Iwb|}ebNJh@ ziCW9aR`m@iVlcdS`P%_T92z*ro98^9$-H1>*?zqd*w5_EgR}O}Hr1(LXm| z^x+#R82wSLx5GZrLO5leS>S=0_rhhHE2ppt51I%xufr8-&cC#tU0OZ%W5WE0Im63* zmYg{Uui0RbgoIdi+T7;) zL=GnIiRk70EU{qAxV<=(tQ5#SQ-l+3-)O&cvwm-FD$hce1qdb?tGvM2oF5}e((C)oqL)D0k3u~<6WEe z_>k?2CMvQOSD@-OT@?Qe-|_S*sk5@-9^Xe+_vGPt@M=e=<<0Kw{?|>L&i3-XO!*ZU z1AUWx&3w0lm-Yi8#b1o|?93g+v>{Je=t1m~uyadkb1*4%jBax)hwJOVfs4 z3%?GGW*K*T!QNsG2a*u-1Vu)pJl)52*Axzu#G|#u?riUD!|q3($oM5A#ZWSZ?t+rnr)6lGE3^)ufRf`*1JRsuf9(3 zA;I@TA*!$p z@w%5Ps#_F&NMBB9`P8gUy79ciMngCO6~fZYKqxU@*CAaLwEWUsfNwE8T@kl%=isW|zEVCiI za6BrQsD~V>Xv$paS>1mD>CAu0n`YU5CtaOKp=t9y&?(dO^-JKQb8C96&%C<%tGBfR zfs#foSzwbtAA=r1XE#Y?;`10Z(!9dUsd87Ns$AiAbp`BeM(_{LRjG zL|#UnzXyT&&TjkNiO&e`ZwE18!*DIf&hzK0gd2~1&{T6-u<{H~ab(8eTNds# z82xmndY!LF`J!QYpNI#Ct@a;~bLrfBPIX#~*P6ujd-YWk*XKE0Oc^?MVA^$>{S~hE zx@qs(hh~tew^J!o?~sI?VqJPHM^mTmhn*)idfO+SCt4OX8#?gDh4rPUGHaZ#$?rWQ z*Ld>I=Of}MgcPG!%jkuNct_ZXm;NEHYg*X(WO-g}%msm2T%sAdOy0Y-m}|A#P707o zgfFnqo-H)`+kN?g(z$ugy>2C@aYnlodOj_`Bt^y~4Nv`GAtqY{I_TXZCiOQ2>l>dW z=O*4gE-#5wBjw|M>z4TlfkcDW@%mpKK=(2CsRiPi(3Cy!S23DFW{U=oM%`dJKvE3< zD)Pe!1M2yS?`wV2m@w;5cqEIAn?oECu2OG!$85ivs%(F+jCfk71=YuEXk`7gazS zfrxzq-%o?x#BLe+lg~Dy}-T5?LixCUfziQXsgw7=XJ9_7i;ac zgZb0dbuHxEqM%@nQB1)gsZ^>6gQa84Y+y*n;G4GH+b|{3ZPpB0`*siD>qJO9Ko7Gw z8FOpWzC+FOfJRR!no{y=YKvx4Ibo~Qt16UT-hY}Ebz*M(X0(1q#~t|>aVmC=R_&X% z{q;`Q%~Pb;7iPA*9&x97Ar)Pp(ly8_gLyjLwe3Nl!tIAK&9RJG2^ebMj%qGkd2Zf#*8hh3v})7&4q$=2Dx8-t zXyuk(Uetg0k$j%>OQNwK=RCzLt2#5ny*85dY@=r=n2@RdW8HGdeZBvNXhn{KZD|X2 zE4rSYPUQhdzyK|q@CG9G@GN_*vh54NpySC_oP-mAu~4WHs#0SkOP-#bFllYjp`jn~ zNkX}O;voO#%PSvRU6^T*hGf)@`GGpRci~8Vb&j_IiBw9QmCRRtQC=OjJ`n|Y4`~pE zl;D7#Eu;%lt;!j9{gPPhFDBB- z`)%l_PIzbxYS`4NTw21N@_2VWDZS@ApOJPzph` z%LnygV6w|S4F=OWXR{5i-y6l49oG8+xo(Jr$t#)3f3ghM-Hbtg5s5||$D zhN{Nz@{r<7)B_5GqG(3>U6xz81rs3SV-rH=KQDRqYCeH%7hC9QF@7qetQgH`i+Rhv z(0%J@(CH9US*huStF;VqDe7qq)z{eB&eXe6`@!cYYc7b+S>o5POE5 zF~OAb(doxQirMr_;d}Y!!{~*^UWyM%*@Y z_agqvr%FBPMZ*N4)2smi1OKsnDt~AQ!^IZD5zAoXBp;df!NxY@VMfz8T22v)XGQ=8 zDBMnq^w>NUy79(aV*PpZ$Gx6sfb}2qCha3d#RC zjTnrzxSxnud?TXA(+uY{FJ5v&bmW)CptCpGl}i4lWnH@a@8yrc|G>t!j;I#Z5`Ia1 zDRj4<=JqeiFsGvl1dXjiHUdm7_Dv(2IUQ!$8ER-#mjmZf(*6NE(=q}}yfv(A6%U@} z(H19=fDoxFHi?V-(N0&6tlqy;YL&pPa79uBnf_2ZZsHXot02bwsemJD9{cJPo??$B zg=}qyAAnA_sD9xiWpt7wJO$nmo?pAR^_Sg0Xwr?+0zkAK=P5dcgHG`Eo zC}LD1jSgvinm+XDef?w8h>1Nt6n5}8Z|;dM#eeC|;IuXL69?0;G9l~KRuBQ?(vVrP z^3A`b5wR*|z3vM>;Wc^=#Mz#H$$t0DjtzP>$RlXfR69U{gXqSc7T$WUP*;6p&dXhf z{U9>5d7H(*T^GLHXm+0Sd8+bxq3Lp{tzNoHob-m)nb*!lR%_Zv>pLHDP#m%SiUc(j z0Kj_U>9>-9?QGZ$~%MOoBii=xdbIVCu+VY!0T;uH?pk(R{<(gkxKtYXAo& zv9Oz04zrwd6;9GW9&L79JEZB5OA*u#FRW_48~4g2#k z@%J-HR*mq?=)OL*Yhd~p*6aM^0v;s}GP-j|z9Q`{9MtP-tLrMk#KVY_wPZcn8vTpS z>KwX<)+n!3TOrG;4Z>mu+h?*1ZV*XnL#IuyHxr7_ULN+XtCiK_UT_I$>pDp3Rc;dj zXFJ{!|FN}LUEP!*^B+RkwRWY&!$q|?`BzX8$gI{EB)}q&Y7Z^n+DcRu|Gmo9#GIOrlsmlxHLttzdcT$yW zPu=l|To&4wW4%{W+Ln!MjhV`Jalr*CuepCnBCxy}eekO*A!$L*@qymdU#$OOfhv;! zc=JKa+#VEQFAmpJ(|5Q{V*EbAqrt6Ft3=cJ5(>AZwonO_*|7oz=`bcI`3K;fs94fb zR?7$rDpladB%-ku+8Vr_bE?~)AuZv(Co@>=+@1yi5=m;Tc20{3{kraAJYrvlC0gi$ zb%m9ci4w>ZH_#NW_M1*WwFk|(j&Yy-fT|&%_XLQ$3L#P)-(YMf-)0ged*Gala1=O6 z;ddaxXxKc|%2&7HYh4Fe3Vu~8+8)fQi?D-UCj~xuA%2J_Zf}GqF;+zcU0Rnur_}00 zz=4JpL=241?kq@^_{Xd4hzEHPSCj!RbuaEwKa7G$di{elyL$!&hnfSVi(EAFMYWO( z)0mGfv+s&)2jE>SS|j4ka+W(u!MITW{TfA?e4{YhO&x0q%ehZ?FJ$3j5TE5eo+o;ZtsqE^jWK;|Deyj}f4bZ+&fR&(Ab z(Zv3gcD1G7;Qi# z$?VZ?GuA6?8924t!O@Y$s1#en7~kDzIqDLgoabP4%zLUSY9Q{vS0 zF`8=f+1b11hO~<$vZTeTDb}ly_MfY*R`nS`+b*PW)!(!FG}#TEg!C#Gv}(%I9N^=P z4`QZ=TS zEi?kMl#HZ-n#szy6^_5U%W+DaU>8dXtEgSxR^;ac^Q;=YxX#5zWbcR>G|llVZ^_r&9=~Jwmqn~_r6q4*3t7@Z9na2KzQk-w1l_9IVD+zK z7qvXC+y!j@cZgNdpyRD(7;XtFvbV!~G{}p1vr+RgLXCX!?WK(6G7uI_-m1 zrGD{)?X|{vNwd0LN0X4v1{3lWja_X3Tom#9e4do*`K!FBA5upwpjcq!!j^ zzxcS$`7|N)2yEonl%d}9O)sR1yQ}maV8`30pf?EWzYDBbMj5b2)(r-x6+_$+fAA!pM!3+ZB!*?9Eu=L@;ZbA&Y~bp?qLALsoR)8*`q#p<4b_B#Ya(3eLXgAV^9H6 z;YfPiPE|(c)Y6C_4_u$8P}>9u`Aet>96d=0V4R(dC8OCH)k?Z{uK8^U%r9+FgPvq|8 zJ&g`gd*G$n+>HB(cSetcCj3dVfx>%Gwic1k&*Y5Uv^hf7XXGq}qoYawp#NtzV7#6F zz#vkWD<3+>vn^sl&dUS7c4y>-mQC#!htOF{&-upTk0INzx7{@VBnl=i&@l7xDvNbH zo%*&HCRE5D3IWovleKH3kKucYI*B`SF23ei-IXDnon$osTq6MPeP-h(Zyc)Bg@!f{ z86K0Zo}w0@^~X=PFY#!1c`AnCnni)%lp`%v{GbgV-GFA}MA%dVCF^tesdf@AKg+*&aRca>Oc9UjDrr^{z_esS7%QB)N=8GFy zZ5R8Tx6%V3!osMn0XMCxo>`c3DHaF>KE*K|^7iifHogQLDyRLw8g+ucUg$q6qI=p2 zFkAUP4inG(@Z^Lk7z6*_`na#CmEnti)U09DkS4W^j)qxM4~2YO+$wHauBgW~*1}%R zxAoIUaH4Q$1++$`0-1?4Ok4CWzVN~Jt?*l3XLBDFMMChq^(cD>kf?-_fuYU)l-M2c z&b>3$TkXR?7p~>osISiCyzUe5ZNvVAskws$y9(`x)F^PdzlH0V*~`wrL@p zY_dNobIr%JTuK#RiW=g9g0aZ6AXT8L0G1^Y@!fp8dGeRHYQDL+*@j)o z<<=*I!+5^lAYKQ47BYmkDeAz<^V|2>M{M8h2u~FQM2G1Gk7tboW9Bvj;Mq&JjD9xk zqXoNg+K0W*k63i6jH59pI4nvhqFUuw2#Y>>Q;R!%9;5*t@zttb;``g$LZA5F_@jx6 zbQ(GDBc8IpH^X(Q6HtXWihotwHGb+YK?`vw@$43={(d~68Jqi-=#L{yQ9RG#cG;$S z-IokF_7fRwdI3?^6%8m6%IUZO$ruYDSLo(?vv7s_CXdM zpxvlO+L3S2MIA(TSw>0cLS7qPR@6**24303Q^@i;(2xQitQIF&?QLK(8}~d?R|`-M`@_KLkU!i1sC4vUg&Hx+Q}6 zVvU|_Yi?`^Z(JfN1n~A^OVX^K2zM&t4eu_lL(#GwdI~ZJajPJCuLliVklmT0hvr+% zG4Y(bsoYDW6xxT8sT_X_ZN|>X8awj8jjyhyN3NlLf|W1`Ku*fuMt|_`N&L8&bE-PjG8xLb*G1YEm^xrb^OwmIfovmHGSdm5LyJdYbg5VW|2gtfHxaR zN&FZ0)>gDwVpZOYG@RK3w{y)G{Sc!2ELe8*4fW-?PXUo49z2hIW?$AQAtR-_l2Ua)$>DOevZRE^y{XF zf1U^0!M%~~fjX{l7gFUE|0fDGvy_9Ixl<)RHh!Q%D)J(aLJU>VTYHy#?u|iL)3>VDuO)yc2TJ6UnoLNOn=ZMISpmawgIhG>{dbmNxvZu zduBEg2CA=L%H^Ye$JZAD>}PMAB~CplA2A#q3h3P*ib$_1%=QvBBfIZVX}1>^w*6Vz z9go!*K};|aH1QU12^?zez?h`XjHVP}y1f{D<^?$Sv4W0OfR$1lRNj zWG3A4jnXbjg4LUca%abzb{V}OSC~ZEn5^z5Tj~2hojVAPW{^AdPu9{gAufG1`a&Ns zuQSD%r~?zjc#tD5qpk4d#jRC)%nOFlp=dbV;}sA1s>K^RCP5()w#|L$MkjO)P$}Gw zp3WwfM)2pI=2nilP;#FE3QuP{*uc+UK}hCaA&J=$^gypQ_4rP-NVG zAGu-e?v_nwck*njHbt@;ufh7nl+Z#u#5;FB8$iuo>NZKtxzB=`#=fVw;7sJR|L4}I z)2;dLjX<-Vxb6cp-i3QoZT0LYox-}gCZ>l$!}^9UmUmJy?t|#F^I)$OE+NI$S;CuXlAYyJEG#g~7PBhJHBqCT)f`@lR-Hly`Y!IaM9=@uxTzzwPlU2J6 zXWKcfA69P?=Y}^>*T${ni~o=+3z~2H9!EWE06(IfoSRiU0lqqiY9Rr@4u*43{Dm(q z!l(^`Of++nyZwTSS}FhQ*+Tse!|O~z!z9GAC;%l=VbCf!YnUvNxCHYUD=8+CrF-Mx zk5p{wP4PX99Ev%gb-C-{@oSxBy^cfaK?ONK;sO8ps5||-ZKylB$ge^tcJag}WAbIC z8C6YNP|q~<8>5rATZ>P=mz_cY%i!>Uc|X@T*L2VEUNYR!<}vy zwCNCe(VueIbE{w%l9K!>uG}Ul2nxH;p9p7q_I=CP7p;#6+Sf?bkqq7P_BI_aypD$@}L0I+drYf2u_AY4mzM2Cx1dn9H(X`49J zD}i@yN5pA+V~d#L2lyaB}Q1r@Do}wa&yFhO@4lZT#csS@G=vy$aNRgUNy-6vMJARTFA> zi1=p)ccx>8JUO~K9^L$HCof#-r@5P*&YC9#9)CoK6x9ZCNNG&Hd?r;(ra!QJ)e}FO zn-B?Z7Wx!LNc@hGQs}xq2(T5JEB~^UTsK<+VqF?gza|f9;BmW;ui> zFjU~k8)!#%ORW8F!o77awg7r{48W0(EKiFN+MHF>mL^{vopEsUA{j^d!)I?Gl@E`y z`kgLV(1hb=4j^Cw-*E8Z0U|(#P0+?f6J-}8Stx|&E=FOfD zM)w1;B|SKj8Ov)Lpt8xG7Tzjeu58)Zn`Ksi2Qzd))_8 z^9HS&3N(s4wTDH08^(}>G(VU_$&2|me6eyOm$AR3?Cv<{NaC^!+zg^hvEA z0z7GGA=3t)dm)O%ajSzlh`G;p6q)fagsqkyn7`Z-oas?xCRtg3?@cXash2F*Ux@zT zC^e5Li}VF>k~!6vp;#u-gUQnu%v?oXs?m9Yb+08uYOV@wwOQ8oc_ruaA&{4H)T-GY zmfn+k2L9(jW56~u(iq!2?hkxN;DD%q37caQPzt@RQ6itVe}$$?;@MB48zy%HnA*^3 zr~S0~S?v3!tQ&bY04yGNSoXYL8N$+iA9EeYJ%7x^+CAc74Wok!=(QVkIL|d-;E~x` zx4DD6PKSIUdw({LC9`b3HurWKeDK%EqjaC)z29CV@kItugz%kY8e(_V#zzau;~NuJ z*C7l1Ql-&y5=jyaM~PuXVk?lq`jwqEHgu>O#*j5%81d=>FdTJl4jI1I`4-LoW8c(` zibw9G$r;Wy8OHo=yW!drM{lsjGSxEqvL5mwwXloLR-5|qW0uY;a?iY&$o;5hYzN6Q zC4+~r^Nz+Y-f<#&0Pv-(M%5p*C77$nw|S;Vs#lJho2*YVHi2P5h$q|Hbyuxs}2LyUfxDl zBzB_$EZn*qvr!P4zp|EQ+gg_^#3koa|N3O`l4}Ea_KTypzBJI1V36h|56kunFwawz zpPB6LpmD%h!T2~KnoJ?vI7!1;PRd++V|Rx+|6hAo{tk89_N8cwx=Brn$zBnyNQBae z?iOXKBumB?BbB8E*=vyHE@cblF6$)wRw!A@nsqX9lYJRm$_VkEr?=-l-sAZL-d~>g z`vV7u<1q7`>w8`2`Pt5jJ;9V1q)DqZKAXR7fE?1m;_#W`*=o~;2iV9`g-YD*{inM3 zm;5~0a2sy%(*prs;}9Ppz4@%byLZTgeEfl^xZ#(}^CtBIKmGs)qorltaoN9?+=uV@ z8pe$DuDaNhqxF4(E7-R)ksz>(_}l|d-RGdbPp~nvIBBn&Q9q5Qg-`j<VG($&csnw7%@ z3N1JXd;}W2#O+)E(c@LyZUKkCq1I?&(#Z}=WpHh7PUy`zG)WRe8*=Oz^rivC`k;r5 zz$x3`0SaoiHHz<l^B0s}4BNJdOSd72==cad>(q27767f%aI#|GO`Yp0 zTEA}Kf>TrwW8>y90Uz0TJqP#l1@QaIH9^sIeuRNC3ByCDR@_1Uo4t({6h!nlplin7c%N86f{0HfifFb%Jpc#i-@NTz8qG8D1e%}=$j{bl>^^7 zUMmW66t(){{_W#7N0r9KiF@ib+@<=%%)&!8{joQG(E|m;^r#c>u|Q)Nvx}%4=j_WA z#DN40`5bqR6yim^b_zS;Az1X)q|YwRXS6JrKQQMwCWbi-#W--y=KQ3P@~#sJ!X+L% zq;usoR<6!5D05)k7M^2VTgwNe zn4xw8jr^C!8txLur@%}(8`q;3uK1Npe5T-hx^{M7`K`|Y%ChEZieHrmRu6%H6k743 zfHW0mjZBBy26j@niNT(R3Syi;p)R=I;UDX7Kvz_kj`i#_sR4=7;~WOy1=1}BM_7p( zOU(r+urkbUISy_ypf37BZ5w~qSu@(sx3x?{&5=Kr$apf-Udc8xW@}v(5ce!n>@<2o zJCp%b*FM1O7RaX;u^&gLV!LHe;XY_wodAkqC|y3%&PF#+=0yCTF|RV>dI}Aw;`j4C zHZWf1Z`>R=lz#=L1QvFEyEZO9_GrW0sQ}mX^0e@Vg)JWE$~v8HiI>SOq|J?(E?(#< zdYoTZ(Ybw6_525*JPe(%md5LoFizr3vRqj)$ng{C=@$v&R_eiP6aDDW3FbseXJq)e z#=l<#&%(Jx!@b8z^Xo`QM|N;?(SegR93)FQgA0!*(f=LSt>sUvHfv4W!Ov%=3^K!ezbVa;vhp|03L;S#_R!q(>- z1b4;q`H;-H`~M6yd<)iqX<3Wo0E2KGYLduL{K|AKAt|P#jW|e=xt(VPt?MtsAZ?mP zNDc0s7IFW6=H+rhtp4c6>B1P{M|YR>HnMF}6!eltwP>qa35ahjmM@k-k4){vmd$Vw zM_L>2{=UCT!s%(F{SCyvh#GoA*crC=lj1_q?NwhsNdr|rdAp7n|A+Nrl^K8d6?ibv zkVqQ8o-%4(B*uBU+YzUIGGwmqARltMxUvxrdsFgVTX^( zxyQKI6CBL-!d4z$FZ_pkrjjl*=mU z@jpgIO;ZMYv93wP+!nNzD;Tu6@m_ckp)if9irC>QMkF_yUu}tlpy=-?iZ&miO-XS- zC^st*+g zdmT?TD26TG$(N&@&lmy?q+VeVtRW3+DBUCHA@wHn|O%A zzJolWNk=Cm@9$2r8BaYaoGi=i2VE39>XAERieh`1|FEI}>dMLlKnV z%fyElmmWn}uE>-G?CeUWV#}M&IO|QTZ1J)ad6nG5vv(}Q7Ef|f0Z!kED zI^A=ZFls1THv;m5Z1I6!y!m3#`Es~551ysOrMMs1A}wF3aPq@kLyzaMJu4Yhp`saQvo@bbWuc#p zX0)S}Ec|EqH1sIG1rESYB_E)<6cL;qJ}8#oB@TQB;3gc)VQ#}t%niT^sM&2+(Fz}C zZA=hRmhIZgoRWxm(I_@@P5o74r_UOapa}a(TH$a?z@2SGsPX5e=1!$OM;*-T@!y>x zhg>8C?K~}yhQygd*ggWd_sW8}DOuWoZEVA)y*h7RVG2wCQ^2eYwcleAh@jc{Y%X|< zmhvJHPBM^@?SV;}wcNC@BTjs3(ClZm$qGq$_CymQuK;e(FKNiFQ$+r6!_bL#zzv+< zE?a5gb7nXtD&%kuhI6<)SyD}a#zzIM{)YEv;Awi?=V-!+{7fNs49c3O9X7yJAC$=a zcW@^TD!dJpN>;Ip~#U`Eaj=u(T4 z$sKKV=@9>t05ns4yw6V$kla}uCiC}RyrMq;^^Yd7>bIIb$j$SGU@E(&k)Ch%%L5(PUJ$9_8r8l3d{nnre?Gd0x3$boda2{ z4(tn5pIrBI6f?JWyFgb-{;-x$9_Pq|?J!?Vce=1=ri@(y4!|$lpOJqr`A=c;R2@ZN zrUqd(X={<3^~d%i*lQcGR(*bgzT7^8od;N1Lcgf8%h9V<&>x0l(7h}#1)?gX>ccke zyRKM9&F0tVC%M6mh(Q|>mDsN942BsJ^io3r@M~kA7*y>BQ(2FrE-%Q^&qOb686OT& zY~7<0tU1rd+H_zxo^oS_Ou6S%!WDnEiD}Cn-l%v%z71Xn_n1j81hutMDkg81P0~hA z@+t;Y%B0d8B~_@Ehr$qd0c-D&pSf1VM+Q$5pgqOMZ=9L=^EjQ(Q)2T z*#pX%ThkFhien5PQXfswXGOt!kCBIpLLT`B&`x3oQf8WpT2n?{{;4NW5)T2;BU2De z5Dus}ySOOvIW=KK>z@TG{gWiz$0T1s!%Ff%ZCxfi-w$Bm&f`V!N}MnYF4Lut(EBnQ zK?ysF0FGH;Dj!LCigLzFK)M_A31)rJYx~f#io=eJh6C6W;4ziqu}&txJ!4$jEZzaBqkEP42g%F}z{B9026mrxB~<$8TrQRl{?~P8PGXFbfAW zr!qZ@{ROruez@IZqUkG!jCR|NI%s6ijw_>pj^$oh+0yE|3Ko=vx9~TO zlbAonm9Ty_y+-R z3;qa;B63YHjV)Md`7Xl{M68)wD>}*BMg%!@kI8)%JbecZr*)Bp*Zx;ixCUxL@s{Oi zl~GQt=JfA=^6~9ah1>*LgHjBy!5Pu? zqU`n8c*S>1X|Vowf4(*7M=a5%>e85k|C9{#@AwYoF$r>XGXQIuo&h#J)jXMLqt>d- zwb&_*g!psGNHN>HFI+{t637}J&Cl8_7lB%Y=)0~mUe~@ms31<9)rYFDci;Lysiu5h zNQIg=OVmw$%bryqyeEF$B+s$Dfeql5Cr20=*F-6##(Pa-W(uZ6@f53ZI(*~o8>hzDWJtzgqd@PYol*i-P#upr*{E zd;{`msfKz@EL#YsWP;MdlHsjHM5bz(@yc{sSYC^>r+SCC7Y1}vJt}e}HGIrXD{@o| z`712AQBpPCu>nMaeHrQ!-~ScvHnS7oy#D>)Z@yTrP?|h9iDE8b?=tx!2wMUs!ZD43 zXA64AC=OefZW4a!wT&@_u-m2Uv>Moit28>NygPpzL7=TqHcHC)7ybA9@9*+BZCkf{1{Mihu|zp;FRaA_7t>N{5Pc*U+ITiUFn=Ci3r_0^Ct6Nzm zKEJ;xTDQNdJli}J(?3+TzUn2h_GE50A$BNXNYbp;Y?xiv+1a@SUiiQKoQr6$xDW5( zzx7?}gF^kh_SE3N{_@kqLskFvmwsQ4p#S@8zBn;^@V`Ek>Qdj~|N6^wHw!5K z>n}xKKcM}uzqCL5|32vdO*>lfRW1KGYAlFAAn4itRD*o|lP#eB`Y+Cs`DaPY)gNE0Be| zGWdIIb*9L5-mt=L@zDp@f4*5S`NP@OxhtF|qizJAeD0xzV&*&!H&p6bCGx@UzQ1L% z*P|ECqNMVa`5#~Z_(xc!3tIVxksMliF?e{Q=DNh=a|coTa_|;*e79W6J=bkRQ@AZU z)5BiV@!u+X+`uCH^w5QV>3@7aX8pXT8n4ZwbJ9Ngt?{Dcyo0QE!`1rH6wJd&aoDSi zU{`NUk$YiVp&o&9`rUlxiblq+ zbWp}izJS8dZ63~f*^X~#x)Q5S(c=qvrhj}OGk2$za|DahBTp{)xa{z8U#@c-)p|AU zXWojug`Bja-G5&8v5Pe~g_F@f6ruyckl2ig+j0U+N@5jpjA{w&GuYXIIrxpq}E=klF9 zcP zO24*a|LgrcK#<74e!hQtLLyf~vDD1p)<;?eCH4jsTXyIl9YQ$;TPmc@z@OI=+;5U$yP2nlH2op%ad(QZ?9;mRJkwxYH(bgzORt@ z*RlKa+MititiutCO9~-x^J}*n*LeL&DZ`=Rk=Y9`U)N{ZB8aN!Ag)A3jcX}6!Qj}IBf9TJ^X^}Tx>+CAKSTCkr_?g?QVMrjQ=(+m z$_!2&V>iOhQ@2yZq8!z{X!G}LA^*zx!+Mz0Ve8pc-wA{%M|0~)W!(FCm+#Tnm&tR; zI{(Zk5X>#QGJPD7$VfUA|=j)W`hih2xq~6GzQ-_LW(w;24)F!>J2uo=&bmo7( z&QISz)ay7OF5f6Ric7C?Zm5cjDMH9bH}=}Yr|F7e7e8zxym!NDV_}rf>9B7eR=%9UI6v?wxk%=cr?Hca7ME$zLBZjo)f=v@5Ale z>qtphzy;E<{|Xi!F7R&7O!B$vGSeG*TQTNZ3UWo++}M<(I4|`7?;U^1bMl49fBw@~ zbsBcHw+Bc_ztZn45z<0Q|GnYf3!ll5%F;9uOfQJsBjpdU3d(a;^R>6HJNA}Q9Q~u#d;2dMus9~K z6vY{v4p0X+@w7WjS^Zr(3xV_`pS8}AZH77|M3E2&E;>+xWX;05AE4~x> z__*<{(otG&PPrFUk&nK;+AIyu)hla+8*BnNeQCaKAK4QG^*N5#A1)4tn{X@SoM`%k z&rk2>>5G26lNN9<-_YPB>n)ZrmC%X0{XIR+9PJCxGs0G9a7~5A*k-G=`Ok3NS>XPJ zUzC5fZ{|W2BKy(n#rYnu=ZC7aT9c%CqIry>fX^r;h?V|oh`^qkiM)EB zk2dE8-t08$ctwe%kagd+rilTnjg>BSR(%%5H=jyfti;U$vlp3nT8d!LYy?O7#ZOY}-4-R5i78^2IX zbLteEM%vR{*<~FXk>20YFl~*$GSi#O-zJBj9ti0k=LPhi!K6|6NZ$SD6EYQPHn^85 z!^p+^N;2@fcWtf2qU$knpw#r3{C4y}K#$MkfMawjbxLinQhOWYP!mtomANeaQi>I@ z2+MqMAr1u9?b`!& z-EnKuE9dN+MbSj{soLq8)Y11Iz9O|{13bO!nnrfscB_)@wS{Z%p;Xv?CvS}6vT8Mv zUTK#z5lz_%+( ztTT_>&#RgXhb|FUSYYoK>{5Me#w+le>o-VbB+#qVJ%nHe;bF%vM7)D$;Mtle$zV|J=Ai0aSUu5}B)zqs_cw6eK8$vBk%PS8r%wkrb4z)fj579CKy)-3BLTN7rw z_Vg>AuWT*1Nr!UlVRDS}BWi06s?fp1rB+(b>HRgHt}A+WH6|fCzJ_sec5qmOZHKGf zSIQm6Q+f2ue=gS&wk=ENhHE@W7B_&v-w0(C7urhnoLjVzreVGHIHZh{LFfiq)99BM zX(Mjq!31d9o4Y!UBK8kfV)@Mu4ury@knKo$I+38h8u*h@V|GL4JJJ-K)AdTs?>GYl zN=-{m_1dHCUbEiaT20GTPnv72ooI=}jiXn6G6DP;bx=!fJa7i6TkW$4{r|P?K#9c) zRIz#O5vZM9`)c^hwlClAb;5g0Gjbb!PJl|ZRkH7)e~dxs^`bEfbv$aeRl~ybiuTQ5 z`U!$Nw^5rz<))Y=!ys`NxBQ98XXBwW?6tRLc5l{w4i6~BQpC8#Hk;lY9cPdXs)yCG z?tN@_?+4r=Uu6O{rlZDV^;Mo`?mP8u^fnh@hYr}okVHvO49E7z`6M1=?g8qh$r{xJ zF&Ae5DgJynp{O5MWcU%hJdK_mxIMt*ki|4^Vc-$6k)2=rsuntxmu(t)wvX2X{=CB$ zgqvF{gpRZ{Xxuj6&+gc$&!}Quvb6GT2MYJP*T0tS#p?n#aSl4eRej#KT}pF%jhMC% z0Dz4o+7!qBZJzW8p5{}XF zX-nC*yc6uO_1v6@<|-QjtY2_;rhDe9k;fFP#+Nfc)&qy30@Dm(Z14oQGqLkmGpEF` zujy#Kp~P*i?nXiz!YBAS7H_J?&Nf<4>pRIWp-uUKhaT|ykmwa*+%-q}ny0;u- z0tD-SD6Vz74`ZXpFa8A}%0=KfPF@VsyDJf~xnmWRi4i^7THB>m-rg^c(OrB_K^tW| zR2fUhHYS!(Q({!-a~BTW6uvA!cIwjY7t~Bq(1C6ho3^k(0X7w)E3?L9R4s9NTrF|J z(VzltNpJ+6w-fUx0CeH8Z7Wz_!`sEt893{SeR*4#)T3qS{w>E0u!kx7JPI|q(4%Ff z!>tV5$U^+))r5}uCuHZZ@y7=lj}&g}Izob{IG7%~53>HHL$i|^~w^J~`RR@{#$OQDR(*8LL?zcCt3Q6x_QmU^8$Jp$Aazi*e)B1K6$Kads+9 z*~Zuq$La1Xxb^!ZIJnfxi4yKA($-xWsy?}sa4q=U79Mnkdd}pQJ(UW0k9FPO+f_}7 zntPF-Zva}*dy}T9s3tg`mux$AIjRczcF(=&gi7@5eY7FpBo#DGW2e_-mT=MdEW0ne z6H;EV03`Xn;rgmJ%7YVQJEVJtQ~M`wedJpZt!l!sqEZ>U*`)ZdL+uu>?C?jU(w(>ih5b~H)s_AgwN-%fv(*cqu}==M%mTv_8wcZe4vyp zPs!_iZMlIx>FpUV-3_n8YtsOdQf&I0k({VlBZkfT_hQk*KJ3T9K#4R`E^3yz6`Y5Hx`*Rsl>?# z35*}5Z0lNU0?0ty?ond%UOoZ@FkWKxgI90&!ZA#xM>PCdNw`k+_+6;!bB6j6LPS)z zG2xnW4g5BM$8}G}0YjWqrpJkhp0iId-vrMZZqq&~nJ>+ELh#Ut?>?8>SrPkW^4I-9 zb<1VjysdoiZfAYYXv+m4UIYctuQ%;LT&Uz)j2D!n5F&Eay_Ny5#vNY=s7P9JUQ%JG z*4tCVX!MW`-U{U(KtB+yeE8M7qce*fly&V&R0rLuOY2f;u2$$smp=M-R3mK_fVJ3} ztduA6^sOJq*`BOecvCXEuXHF(z=fm!5Y@;nA@6^EFy=PbcP8JR3&3rc%2oU&S67dn z-VNy*{}rJw#d|=&w*A^kc0(f~$IOjOVsqu7M?1XgEuNm-0upm7b4qIF>t!bIl{=sE z^Y^&#=j!%!b00*FvHgwSpSLn^4p`;)OWh=)6=12S6uZ1vPr(y&(TtMI!M}CPe#Cpd zLW=(>)oUDpms1*5vSi_%zm{WXd3a^Rvn{HNRTty1|p)QFJRJmil63H zMDZTsc@x6eL@a>rWSGnHym8GgF#6&SXL-7D>i}v|!VrH>Xa6^6O<7^n-(3f# zxjMW1v4dAxoL^z|N`hw|GZ>iVi5gME0>{DJz>Ff)?%DO(GZF~X$HHH!6rMz{|yZ<`TMA1_LVtckYFSrM`^pnrstBi5&$0;(+%SVA*(Jy!;y8ou5`Q-Ogui(Lx zG#YXX=JYlE!GxHGto#q-nzqmLcL2g<$zBMa>dFk# z`~I5FxIzW{`??7riM!dFTnch`2a7ybE%`qOM9>5es<7kR3uUU-8?`)aGXM*O9GNlS3* z9Ph*H@E|G(T)YSYi%!MHw^t@WNH9G^$K{9n+#_Qewul9puEomM^`L|8@++V) zbxpS&K$UV=Ua#?4I2sFP0dvqZwYhO?F3qC4ly2Qp0g2exEr4pw2Kqe;Z#QqcCba1D ztSz!QjC~Eiq(Ig1PH@I|@@c8+IlQQjjX2;P1D~Bm1&6q`-4z$bIH6qdlv-cQ5=31j zjdE#kx-%H&Jxqa33e(Kht*ERMs}+3k3Dq#p<80E zbJkll!|mfbRxK+T;}Ra$=DS+fG}Hv`5rnjZOsM z&5OC?p&mJU&p!|*+i56Q+SltXw%p?++>0h+;sO+(Kdr3;l)C0|os<}D#TXC7C?R#X zKW6?EBZmv$kr_1o>!nX5)NbC~GHv+;-W20lkW&P)C5g)Ig;L^TnjgIF8NYb#EMiG~ zyak!pp^&dmFILtaK6>g}er|}7GcsPWS>E9e+Ef$L>@=2V$E@AEkvQGQIfI~lu+XoIg_tnAy3s8j0FLE9EZ z&(_CQy3DXaQKlp~<@ghT5WOz_sT5j8Yv}e_LNjR8F4G@hx3`sz06DZK9o$A2^RU1( zM&A(G%vJwwo$ZiV(-Q=?<02`d4gjmhKd0Az_#UiGwsw|q^X&&9mKC0%v@%KtEhZy3 z<#4NT7v}jMRVck+V@YX=w>g5&-hf8a5NB6=W%LGKc_1U0_(<6%&B{|L$Y=FnBi`48Aw~)x67M}G}0C|U!V@CGRfe3 z3J+6%*BS`*TxwvK47hGi8A<9yu<}`UORlZeB}>oG#Y_;NIzOs6SgC2ZkCY*tRkBXu z2E&AxM$Uri4$1XW+qSO4EN^au5n3a!hjiv?`GKS=guc+s!ZaCzNO)#j#9V%eq$Sf` zxoeWo7p)|tLb!&9*L&9QkjO}?-dg}B5;vLlkXdaDxE`0BdP!?zSNX$h=KCYIDk?@= zk~al*)RnPC z-mO^Z*_E4#IC2h&j`@9{c<*#?s!v)}uMRr3#V!k=S88y}qVyNXEq3m%-}&<0*|)TH zVU4$GZ+CmU#uw#xJdo7SZ5Db^2WSJ;6B+COGD0Sur@NIDUUAuh4iSn`TjIeS(K>tU=r5F=*=3VF5e`b1N78p6@>yWC*F zUE1YA%!Iy#h|aaU1+SqpV2Hmss+{6$JlD})`w3EIlTD(!#F6T~t(guGQCBU80O`Ie z4VHxWO91@jDM3~Tl4pJr7CD@rYNgN}JD#*V1jOtG?5#uQ;UN7bZGeK#prBeC#bv0* zk(RW1?6_|avnhptT_FLnYF=YRWxq8~x*B%MFA>0$UxZDvOl$V`m%QA}-IJMHyk%v? z5`#g|kqL;|Q?mzplYFL9#CLSk?#Bpv0rNLRpP7msnY2Y{{Qms$f@T7>J>d zZ|1bCg*Da*1VPYdde*anfBzozD;vjtmXJQnkT-JJZ@+>+gbJz?@^cO$%=`?h*8Eur z?vErgNw~E)TRxCC(`=`c^H`fjf*~swL(q$O`3ZpezAo{KHHEa66V4=%8+WA2n`$zv z7l&?KH)|l^@{@?hQk%bMHn(Q-SwVm`%-1qw1~IV^0v+GraeCOFpZ!_mZHBA+n+Haf zFxLIeoPw~MN6i_;obHC6mu&Xrg%rrX>7qk@3x5kCCz;7>;Yn;P8z5FG#$_?%>>(dY zCaJ-BZ@>XeCcm3wqncdMnhB*PKpes^-?^CI8w*;{=E4{1mRSX~?=sx!ck2)|@YN}$ zd31`$Q2%0J>orqcYY$xq(u+-5)}t^jE>TViJ#DXA->iWr=N2!|a|&esF$c}HI5UYI zU}zJ$Wy5^?L`s`wbEfIEP^rp^J#aZ*c3mv2b6ze?+0HLMh_UQxEO}BBCSY;5OBk_w zxtP+3E(s55V1*aTa`PBy$-rOVe39- z+q$xWOaSulrpPiB!|G>TBo@EYn6i0f*9NV<;E+60|{JU&WM1O#~zdN8nEI6jh)SJeXe0pFtrFYZpe^|H z?|t|8FxZu>``KT)w%m6BVyPJ2Pf}(EIn}trx;ch-%(*5uB-SGpd*@34CF`jbZ3*z7 zZJ4USY&&3+rd{}Gsa1Ub2k4x?0A_^2q1vpb+8yi*{$e%axwo_F*e1EYQDV5OGVM-I ztkYvuhrWv7uI5SaTIZ>7=lS6w$BMOWml}^{^v-=O52%(_QY6B@ZB@KJ$58gPe}lzB z$B9Pqqc81n)$UI2Q}3ho@h?DclUIWq=%7>Uwb{&!SWqNaE!z+9XFnwXC^~$~`Jn>Y zmdk^?WU>j#wCU5IQio(d8r&&Kfb3UnJqcxhL8|N}5SOFu-;?yBxAWvz)jCk&P{g)Q zRgMLLM;G(i!uQnGdp|JAzKD$kX|K9hX<)LMROpkvFZFv5{~V*{dc_3EfCD9xHeHT9^M2~NHJbLE<>h2U6dhHG-zvzl zQB9>hKkZ~Q&g|5Hi#V2{IL9*q##G6uphU-rQ1Q^DW~c@n+fPPmH-p0wk!Z&i9R2D` zhnChpMS`_Ac(Qy0Y~l@|D@!73eV*-!_mg9;XJo{5+f6hd359;C&vfo)>$R^fiDZH?7j_oq0>R0B9Q(q$tOdtdLoe2atDObPLQq0pPla# z!#wVpEQ&jJ;kKAiUycsHLhovyai~s!;M6lRxFIJqU!Rv8aEwi)U0|R6N)!{JJh#aD zK|pBhoS^fMJll2%24G^A$utExp%;#__WEa+JwvR-YU*HiOAhCgRMFR;)G{9pKJ(hmp_b`$5nT#|{m-X8VMao~h_Cv*^i+ zG*02>HI^9=UT1&(jh4PWZP$?lT2z>Qwto|-BjiCx$)G@DCe{;c(fM_Im6!1D0NvgL zP&psXDCMR7J%n*)wbI#lwffo6FSjS8%r1b$4t0X|__xL;a*K@BWx)x6T~w$N(0-M8 zkvn%YRHg=e5aJreA47Pc4=s}suL&LI*K=CKf@7+&;;wljA0cMcnIcDq?aeI4Xj4A3 zT*Q#(X}741&KyfZ=U0*LKHEBIz`?GbxZ>suU61vC*1eOo=DZsKluj&oe)P2y=7^LY zy^N-npE>;P2`R<5vrr|7*20%=zP5iXj`G`>Y)_HHG!>gPv4zP5@e&6xP!@9#A^CtE zJLEz!-`vFH@W5zU-wNdXn(Z%+ddN1w@-;)MKga4+gnG%P%?DlUVi|Gz3swB6#2TXpTI(EwUgkmD*SKvMGzJ82Jhz%C+p zlY|x+2^Kx5GPk{qusLh9{o@Y(Amv-J**g}keXtv;Js)k+60MPPnb(<*yej#aZ~yZw z^Rq$s854M%!%^9V=|E2ppE`c(a`yaNaQQ{=UOIbOG7-@jLz}={<^jpv(b-dsJ9m;M zXZmW5Aky6eTS{zOt~U43de|yq!vJYh|LGCufI9HRiaKRXI5O@qK;-EZw|-x#w}|Up z{Dd{R7(+QQDH)_UoTy@FUvOi+44a&f(Gf5Ah4^_k9~M?~)CUY&=fx4)1h5emq@=yEd&+v>-A zr~_S>Gt(?FzJKHlZf9dWG)mTsK5-2ir3fY$Xk3G{MFxahqCVK_+LiIHA1n_Lt4v>on@| zA`jh1AAArrZ~x@jpDG`u-~T&^r`G)G(ih^6I6Tk`_fdl#%eLW=Wn)HrNG4cr;n+Em z_ONS*bCWt@EW+F8xh#_! zkSk(>$JjukYb}|QMS6>nhVjq#-C2C`>{7NjRPB-+qdLQ}TZ>^DE7wi3V|9rk?CPe? zF%R9JlpF5gK|gc|AL7j&VSp1AorVXqnHs>|D?#RZC14uDPiWMJs!ed3UFgJsry}x3 z{9L^&W=2m>{4%ChnRLD|1RDPoVGGLayCtMIeME@vC>>H?t z;D;mUFTAZDG_!E~^vV3(r`K`0dXpP#CHn)FE>_rH1!)k;nH?=T;w|z0J^kgU4PWX( zMn+>Amp|XPbsoIthA6H$tO>pOBHpgfy)+S4_Xjv}oZB}6iJuhK4(7=-sM3TJ_PY;_ z$d9&#GuZy;MQ-DO9Wp{Xuileq4?MyOmk4N&2jinLwuG1_8p?Yv9)kiH<1L8FvspJV zpvQ5eQUI!sQ2j9=L>@ti!1Pns)nr+)X0^7~h%;NYgy*j`-wE5z4WM&P@3)Wr4x;4| zD+(5KnN|d7Dq;dQUR0Cw_Xxx>iU-{vO-q1$f?oX{KzlY{Ud@JV+b0+A!jknAu1?8R zwC;@to-rpRV`#9+XNp8%XF7HKZ@s;IVlqS)CF4ecE@%RDsw(nML)h+%3Pc)AD+YrP z-l%%o2pqK$nk(xmfg^JuCY+C+_!0J{u)o)qO0NT5qJiv7v8k#7D}vMuf#?trfavel3KlXXGxjg_K@q;MqqEFi2N7H+3%0N$ioY=bdG+D37u;K z$b7CpfD{dqmd;@6=d(zME0!~)> z^t$H|^_Dk*)S#?qeHJnc#=F}9{k5phi9B#u`v4N_SUPO-iye`JsEt;qrvLa4UdhEZ z!nT8b%|Z|5&0Zi-{T$=3H8UalY@M;8b1U6%C>ZU#WddbH3q#`iDKlnr5;aNsp0pRl zJp2-%(>j>yze9eK<&Ax6{_{xSkBYGKElx#otXGf>Ejwi7T%8j%+wPlDb&iqRk?72Z z$Wr<{`k(h_5VBqPPxjXs%xDGx3BT{iGM{1K%OWwQW!#qJ}@E z$^T_)9u1ZgYv1gvbph?KQ&ORZB{~>u9sC1EqZ^LC9}&pRQnltS(yR>w0Y8->_QyzZ zJP;u?h(jaWuc@C&G+-xTSoOwK9xs6=9Abl=lgJ;6x&1+>bb|W41YrXcKlcJLM$Q4} z)2}e5+eLEguA)PjAd5H;OYA0Wp$9c(xpujI3icfrWqGX>XwS;MhyP*JG~g?vFWLs1uU zDd`2?+yL2S+;g*4I?dK$kx9@E1qHn`hj7_iZKXE&mW=Uk&Nph*Z|4R|IS48A z5ZVcc3|j-FN+h^PAXe3PxavdMut(FWMr~2|rF1VaoPTRV1jYSVm_qY0c3lZ$S6TCG z<`4b4X1RxJJyx@{X4*e5fZnOs%9%==QvP|aPs;wMA6!7ylkBEP4x@hR7c_wysZZH_ zB;a-lgE0lV18sbHcCez$F_z(ZjanX}=c|=@CYUcH$L_OjHsqDLFXKCE^JoMLUF3Q~EG#l=ORZi~W?ICp4komVbbQ%K`NQh94HwqMa?6JlPF^1VY9A}c z;aY-UqpjBjBoyA>K7yqejc-urcssh3l=nq`BN~LEdWO zn6}3;n6^SK$XnMjpdWhdK}6_9g}W8liw9nC1x&k&w<9}%nb8dUsKGA_%YQ{5UjuJe z<{CcBA;lnvmfP~p78sh0-NechuTRn%+QBbx+{DjyC@@8;OKsjT^jiF;{l&nR`p6~{ z(c&^~P67Cg9P-%Y7zognm*X6g7@kNE=jgGszG^d;vJH_QK96}sJG%rG)q}A;J>nPC zS}fn!OdvrgxdoEt{SAfrZpI@0l`w0`5@?A%o>AY~ki-~4L3F!b?& zk1%0I+NzgRgM~)%EHbm9a>tJiGj=BGc=ObRpPMVOd=V_not-;}U;@{0lm8 zs#;15|}9ms?*1IQPWJ#!?KoC+}>w#!~`ieR~&zj5bG ztT87-7uD;%D+QGDWQg;zB`lNgTj&q(_Rz_DyX!{$58thg)@}Y~NZOamJCFPKf-UAx z{s)sVBMKt~hdS4Ifulu(0IqcTEA}a+FRSXiZbuy$$tS9ud{Pu=@Wr;SUI{)D62vbu z#!|UYCb*`9Iej2^9!Sa3bawtb*(DHRmAoFT8yc0{f9|nSsOLR`I+Bl;g#ayQbUrYe zvC7-KwlBu*FhiciUaQgWS?8619jUvJgqeUP$AlsweF3{+{QznvTQ)ioXqxeop1u0z zm6knMbs!bg4BP{-3U!m-ROfsDwRl+di;+X38-4Yf@u&2Dcp@{oQl04H-Yj#sF>2|Z z2M13-iz>S&MZ+X1U2YTTXv`&&s*G`Sgw3c|ZK z2?f6*wG6`!9zJ@gr1r}TYGp9WeidTR^LuY8O6QF)ZSbO)-Nt_BpF^$$?ED+;3di>n zU^8JtEe1+HLgA6Sj)Z`snjqb1eo*zkqHZT^LwwGhjP^w?Qu2nI$E zRk_AZ_CRtvWaYQ#FTNjK=C`B{hqKpA}sLi~m^RUJaF-xah`oH_8Ko+bt?cT)u+b1L7Gm zbjd!DKzo1v`BB5RtEs+tAnJk6U>{O9EM|@vqo3~%pYsP9OpW4ku0AM0AiA?S=zQ=g zBe4+%1YTuZbEdZWvDu5iuK9vA(!Ex>zj7eFVuCNB!V8&(84Kdsa#@@r5=LNg%f-2q zjpqQsQs~x%Gx|P7UAhlPGaWQrQ^!=m+;PdY30@Btet!O|g@|3S+r9+>>}D;oNV09atO`vGhdC4N5RU0d9_~gMi~DHAAnKToB$uhq zOPF7`twa+o#itsGE87G(!GVOr=5h%{1~~sm2KYJ+q2NxCOZX}LPc!a7K=e_Lf8*z~ zw_gYOd!{5`xI};BkuYI4DnZ;;m%AzK(u*5M8B4qYvZjN3R0Oki{9Obj>kHhjaF6)! zkw7uccMQS$-XxZds3^9=R$qbR8UexofxTSP6V=PD;)Zq{;oDB2*&b`CG|o0?h~$VS z9@1C|@=6=!&>TGnvwLNX)IC3G6SSKnV8>(H-zz3#)76fB_?(N3=Zv&L1|Sfgkgd0l z5rEljU*V-kSiXN>{y#p$@oZ#%462|FQyR%z0EA(;Ic_KW!MO+wh&^f>3FC`RCg1@B zt%A|JYblI-vl{x*qE4n$?J54`)*Z>ngloT)p_%Hd#}K?nzP-R*9}Tnhknr%;@6Q`5 zOyDk6*9q$BgEH@u9~J3RCR(1-^kgSX-F~&YVWr zmE0WN(yN!ZAC@IRW$7n<^+^{5j+V!AM&7HD6UNTh6XB{Wd(F2IfuTiC+QYyfesZ+s zkQFkaG*JW>d85W|G1A~j(0#WcwYgGgtWCV~xzs__0s@whalnk1f#CYG?;qBR)*L9+ zKr`nIux=QuX%?BbOcM@Ai`gO* z>}K6r_nR=P#I?g~al&>&507dB>yXkaV=_W!)DPftZg}|G!u6CjFoW49lJmXkC}<#8)rj|X@An=U0;!=Bb~iy&K_duCqw2cXSf@n zBVbL$TC4pz9C_Vh2!jf9Bf#6p%s;uvM2^9R^P;K3#*gIcW=WoH?CPu?=2` zP8@CBzJ5i2>RSPT)wP*Ny1puLLaHI>B`qte;rmTaGM(nq?RG>YBGz!pji3GqAZmJI zlPR5##yUf;p_)4+@WkoUCKW0aKsguNkog=4L6jKO0wE0ynjNqN^%pJhh6ww!)TJ)H zS;}Lp9Lx6}So{~qO*m#h32X6GEh%*%)ce^-LSUsKPB?$!^(>reS8F}w_8QMzpM`I; zv8-rrSa*R-{d>#^)>$MCYCUEW^5;E4xu)_nl*i8ta)b>hbrsUE`!Bi}pp%%YZoiMS z@C#6r7;S*6fdnpm=8e5pVT3?eZ7KZ%x3KzB`a?#|16o_Vk5At|IdyPTt-}GSaC+Rp zr1jZ97Hqd1TZfr78T&ul;ZG{C#){%qFCu{@Ht?<9*dt&S3EEC9!Ggseq}fSgPjsty z>_>*8pintH78kSn4jB!Lit5`b*Y8$1ngoW^FO^GyI!*`u$>jRUTyuLJnAQ6Q1^gtg1mZS)Z&ZWM zg7ss7#R$SY4xSEQ@`3LycnP)@vk>LvKX65@1ta9U=jCv6mlYQ88Gk}-KTVCf8H8#> ztdZmr0wxrC56?etjqi7i)!_dzBOe6jj|+H6FxD*%34kP<9g`t@1f zdPjE%(zQIkc_iswB&5QKBXve#0*&@ z=Owb+FYg+5UZb_E&xEKR$Kw6ukt=BI3eZ<;b~19@;yBdnCSYyn`dfj!{(@I_{@;Gq zCocHb3Jw^`dPg*dlJ&rLbQTg$7=4Vx_)X-C0-jb%k0PRR6o0U}!#5C&c{(~e4%jJt z@$1buva667480;e<(D0KPSjB`eWtH4ZK4S3>7;T2Mv#yA1UyTpOZ!l8{ke$4%G>RXy?B^dY9}kbt7rgh}h`1~JiB?_UjV z5;!#hX=z86vxU%o$4LKOoi%9>et&kE^i~@+8otKk=jtb6Ank=U$sOc~sLg3m*&XHr z&F$yDIhPV3ARC^7vN(O#V+^NTV+CuwnB zgn*=Sc+P{So^u6l{{=?2In7p)vj3J-=kCP>!?QNR5xvQ>{s$9Fe?bY30!^a@ZC?X9 zBB}f`h(bj*AsjRbM}~TN4EZ)FB-h0!!NZ2i0dc3ux}PsldDv~75`Vp$J<01XGN`q_ z<-!O?eu>SKk3&+2lp$|rBRA^&Td7KCtGc7g)eisQt4zBQ&~lmbEQ2b{1fPvGjIK*3 zuOgESdw>M}dJl|P?Biaw^1*qT^XuIQaM%d9jG{Y%Z-Ao3-773Z~MM5a(PJg;*E6Zn?|FaXWG|>=1Hc zXqSR{iKiX{sF#0#zf< zA)U4eI`^a_gs}QaGoC?_>CQW@z>~PU)Wox^TXyDBcfQfc+Sni<*{)Oc&$7)D-ES^U zw(%gM2hd$njA4SL9FIQcoxB`Rc@M>xO9@ogb)dsWHLb29ax14%?O^_DD6~i+5k-mv z&O%zgZ(+c0Db<_nR_8$u7>Pp6$u72%H2#VnXfh?rpma?(`oO?=d&k1D1l9uR8&ORF zy={ETcFA2kMs^@t+kku(3dPIPvwY_W+orgH9-&`w59e@|FuXeEy8Tt}UsyEcs#YH7 zw^yf&^@qXS7xh^A&^FUU5tZn>=dQqA@9#T#$K`cH1nB&+LC1E9o&@>2P^qmCMRNgc6-F0c2fM|kX%Ej90!HQz|nvBnDXR{1zD#^3# z!+q3TIA@1F=LP5MLX>YFq%+(BgLbTu2o~%2%FC(hPu&kH12@11C{yK3rWP0dOU%34+2F z+$^}%gLY=Y9ghxCQg*uNJ)gWx>0KDd+p7lsujTNjW>OrCY-meu{3OvbYdeT~#$&@U z@c;4k9`IcE>;JeSrBa$o8I>rBWR)$HkWdaf($_2b2peGm0Cb|iUe0dumr-V8?e zh>6qTi3XpRNC8AuCK=oCD*TtS?gO7JlZ30sm`ZOna?S#Ut0?Yd!}Xut%bj(& z7M#VF>R%?hGSn`aCKitKKOS9Ppe#>@S}29zEPjH?Jp|=e@t>xw@_|W+f-kc;Q1;Y? zV42SgNkMK2XP_sq^%1rS>B2u1zgU8*0e9E1_U zLC~w8NS@GbCR7>S+3N991e4@AX`vrX1UR_4onk+Q6W&(;gTgKi^wnHy53|N_+=}Bi zY5J{itt*cO@$M~@OiqiK(iV97`4R|QA?f2HF4wyeq9L%rsoOUYE2v?!W%FNL7H7dS z^FMC@hO?gm6yMPx&ux(Z(A02i<*My{q%Bo;X9ab|=pO|@Gl>uzZ630^b+Lp!YlBMh zYOCE#>EY+65Pb>S}ZPV^T%I`GX2~ot$*5>O)uU- z;sj@-_bb|SCGLe$2jr^k4Vk6UEScK-wd|0jrONf$L`St|Md66->TN4>h=4pTh}7lI z2iXGd`z5jyi$R{L^HK;myHo7D<}u6l7D!fHSDE|(wC-Y6G)da*hE+s zFkoND%n+kU(o*>N1t_PvMRK3N-(nv2jSJOvx8)uPYbBSozWA{&>As%Owr#a8(ZlSf zf8!dHh?QZA*Lnvn=n{lfwpGV~2iqz`QI-+6>N!Zisz!R&aVYN;N%NS^nG;RAdUuX# z5p^>Av%JWWR~c%bIr$hj7<>C(aC^9Yn_;ex&a>3dd(bE3b(!be4hu1+5AZ!(GCAcF zJ#lSLijty^0c|q(^y<#6P&u==X(ESwTylQUr#j9r(9XF3>!;U?m%G?>!;W+cthS)G zwrnP>NO<u^RJ)|fI-}g*&(6eGRM_O`dfVos6`p1O(z87(@w~y_%-S0LdWKL)EFy{$l3ngjB{lk|3^lc?S_g8!5THi%=N*Omo4!@#3*k^Fw zk5yIgl5k@`Wj;wy!lABe00N%NUkRqcx#=4)5JpamYF#b&Vin{ZjuuJ)$ZD?GwWMNN=_QZzL|WzjsxRzxPrb)ZfL&zv+E_B}*B?obmlgrYUF!NiD0$?2BT zz!ke&na3{je(~|KqEh;J%qn}msK~wwOp|7&u;UzUKaLQ%Bf|77HSYpLHQ99@Ka<fJq#f^re9YpJMBz#F>i+&=Xxemy*aY5Cyhl%v|G0T!s}2 zkpc;9LSq*IXd+@-MzZAM`y)AZ#SMdf?X)L&tz0m^iEW5$U!0EF0{qVvi*PKkYOO5fu3zhZl60SGa*G+{EMM!4u zFaer(T}L&e$2)*PY>3sZORmVVmqyXC7;<~Jz=Vg4kEOZ3m` zBC@q7lDtOd{$?$tnB2<$Rg6}*HtT~J88wotho#c1hrOK~TrL>snSsh2^fE_qQ3T6I zhuElW<*LZz`;Z1JxWN8$UC+ecR^kR7k*D#S@(>uQO&yLMj`?=$mGB_-z>Ez17Zvt4 zgTj4sdN%wT172!mI7ezkeWJk%sx^Xh%xkvKG27N2p*J}NBS!Vn6xF_?g`wg-?o*-T zr4DsXo9Sh%*;XuwHGA!|>*qWjCDM?&Fe(XVT{ve4gkndWS)2EfZdSh=PUy2rF!eX=W=n&Q$jwmHAD-kckHzr*UU%CvU-YVo^P_7$OiE;@zcrh6aV z&7Ao2vu>bdz%I(dL-(Mq|qq1p4ymhLLi$+1#QyY=L#MVj_?Z%9Q2T2s9cgXX*3G6nnpkBAKn1Ggl#o$GWStc!5D|?JPfEr#_14~IHq+H~ z9Vp%#bvKjP?Q~SrN0AK>ZvIg|Hpq^~;TFaGRq-y7pCQFoWByRxmIAZjfWB>_-)th% zz0Jz~ky`ceOCrFz|1QV0m1&^Md8chdM+;%s!KeOu7rm0o{h*8TBtZtLMhwxx<3eZk z6E<57`pJ7884fNZLrRJu>K6J7BDuK;NaO$UKy%vxwRZ(V4rgvV zVHgo4`UB%mArZq={)5La|2cK5mqr^U-$WR4AaB7_YRmg1ih}S zWcm;@;NHi$1q@Xrj*6&n4m8*KGqkeA@(k4} zm=H!0tn5ZR?SStwbwytQ)9z+%tR7kYO7P&N)X4aOhN@(h+^1W_X_P*A(pB0XSkfglp(llpk4IQ`DtpZrDSEL;}<-7aFZcM1r(#*mee)Ffzr}T0`3q4G+4RB#R zdG-#&Kas)YIiF51hyAc?l;pRw)l#IwHfXtG&PKzsy^$xhp~D-=5WD^4~0*xgQ!~XqTY$e*IX9L`HU~+3)o2%afy)%8c#>Ica{~Ip7Dd(?|G@ zkK2g#_ZmWYlB&Fzu*I=YcH^7`L1S7-WE20HkC4)8y?V8Fo7qQ=Opb#*r!A5MZ;EW_ z`)->9p%6MH!Y~{Oiaajo;X%7$_W}6MtOYaWjlWJrdil;vj92ilc%@XLximMxOWb5D zHzXKgSVNMUEEss?+)z=)1|9Qkrlo4RKC#YYzsUoE*f#o4SCe@o1B7Jq?>PwL+jsZP z7Fa2#DdJLlXA`s20OsF^%%T^I7N#`M-L^nLdU0czgtG%lPRa|tu#U@WM0_)WNh@3u z7_|xed}BMiE3K%txQNuwOS&OIVH#VYA=(f8LC|ZPh?)cNt2^rgh$qWZkAuF-OJeS= zZC|Y%M0D3AUZRALzw}Ok2cw5SEmqF7wrc@K$fI(H<_hEZ(fys>q^T=>@I=gIg@%b!cAXC5Su4$Amak3KQ zt#=bOt$Qs>Z$iTJ2fH+~ZyC9t`VckL1?;v`nUk%K>M-+ag!4V$Eo#I4)Ox@?cEQQ{ za7!e^OR&HknTB}T#y&IZhEg4I?JqN36t8=2EuLhZqVX}x{(Fp>ABpYSU)&@(q zqKEnY!=1a#3a(DkQ!(W1_nt}=Tu-&>qgbZDRC^D0aBj)8AE$#CdHb<6c-LuW=Vh{>hzRT-d$7X;*5WNaVz3h^vZZgK(&_?-n&%qiUBq}oC z@!@XsBpPF@My_+w{__*Fyt+kN@GkEqiYa6pl*8(+yy6qs^V4_k6>&KHp(yL_VqU|8 zurtU60(QzeC&(~q$Ulv_5Y-^3Ysnni*r+l83!$_<{NbXurk2rZxTBI>V`Eg=ipJ}M z+ZJWElsy*Wx<2ojJN%Fmh;(VUi3noW6AUf-ya-d|ywAW{5vJcZ!RjC2k2m0YLs z2k75uCJDN9U#l;VWcn-f-mJ?$b-*YzY`b^=`s+*-)I8J7(^TwjltUSB6w27%(C@g@m!LL(2W_pE5d)q9>NQe=;=KtY!26PJ6gR_kS`Pr(Uc)c@OhY&UaPwG<7#N8?mfw5spU zeWhXi$y?D`)T{lI8)FW~-zI-A{Ptl=Gr>fKVn3wPV zz5#8ZIdx{W-S0PlTR868-#Dqh1c*fW$X(yg&nM@F5b7e_ITxFvS5p=1+urv&ev4Bd zU;MD#>4lKHT9o-%VR2K?-;?d3ep6+*yUip%dW&hSd#2|$XI25O;o7!w=eQDIU)2() zWQyiO6+pPP@LypAY0SI3Fa?^N8a!=YUo#l|owjkTjqlYGA( zN`i~blHZNLAuIMu(XPpSHPVnpy~zdrzkc00#)W>37;DK^kvmU3gNbUaBLi=}A|TdVtaXUN?1PlzpM38B z^}F$3rAC%>pga7bvxK5p`8VF>U_YXl21SQl=H*!RfBS80Gs~)(+wTZ73i^OptjkLf zXnc|5bSN9Tp*8(Q;Gh1(uYa*XyQ_)i4`IdKV>EP|OL2#CLjJM#pWN<$|7~mVpz(KC z3Lp}5=aDN?Derj!jT`K5~$ z^?d?{MG5EsAh~pbMwOxRkZ^p`I4K~L1h}&1+HG9yc$~rLh;-46?eF{z3F1-X@7!T% zdT#-0B`Mn=qJ*mUfkFy|%IKh0ZaVUT&SNs_X%vFIgA33a3I8i4I4z24Fe+my81o7t zSX%$9G%AA4O&|hO5=0LQOZKREFbq0omtSA=g1qA-ct>6mG?wR% z`pU?mEb8YgLQ=wU*Tn*&7(ombJGxD*VqvjNx%A?^0)W1v^!eqS|9|^}jF+{$GYT>% zA-})15>Z3%K7*ZS1DRxHtt${JE2H8v+s(M;I#e!76G?tG9U<^mgwLaA;KD!_3^hvl zyA8>P3|@CL?0y|wf69XgVJh5+HafCmZ!~2Ay*FPDnxgrwf8yMBLY?+_)4r3X=v@x8 zChs}sP$v}x`^+iQ01Y)V_(K9F592V|(z01$Vv^`WyGcKbe^QggMUS%+NdjU}A<5-% zSA`3{v>(R#;3AS0I(PFR79}7kK_C*tyPEoQ2}hIn3VFyROxzv}XCmH_TF`u36t}FO z`$?3AoIeoUNW^eJXw^+9{3?1ccBbu=;GbUA6`2D z>Ahg+YbpG&14=JOcDy6+u=RfNxm|Gw9+v;rrz< zVC@A8!0)yP$NrIE{pVdwx$&{mq+fypE}~=4|DBtqxbciCx+!GH3>U-ck@J%71Bmeg6n9p*FXRSnvhmPZ*U~`FKhx=XG zTxkzZ9lOp|MhFz5J8b?D5nbIlHbGFZJcuAQ0(9wPz)*Q_7Ky$Z4${FD36h z(Lb`M9>yzIiRa$3(O#Z}4)Pd)#d@JXQs@ zz4m3vfBU5P8zZ{Es1T<>#n$#S$1Eljh8>hX)7c&Ln`dz^Yp=5=xvq3iM^47c-e-p` zk1R(Z7g8kTQ~;~5MVEkKy0v5j+VX#9BGM;5hs*gV>mf35V*U!%gvcB#l3HlgA=lsk zeUeqw<}}IR#oP6N$0BNAVGsBG^zgEXxUuCMloAOT8#%;!Fhm6BO2q`Rl+67tfJzP#9MBDlgrDq_<~slHXFjyK2yFT0`NpvHG~U7?yN7ozaNth4z}S;f%oP5s z3_8Wb&?!6yxTF&~Rjb5X2J_ueZZW2@TJQ}d!<3*iw%mUL$sROcB91Q)7eVSfPhJ1e+2IdRyYE(FdSFmVDtu zF$ARQ;hy2}<`hCa@zM58!XSsDb|1U_uB!{6x6Y-N(f|I$fqPwFzEJEGJ~ICKAikMX zg`3zwNOI$w1!R0nljPs>Zl>#_xRkzbe0Qz#kFh@BR=t$wb$HepgMz6L?r7I+#Q;e}tf`kSB`K*&VIP$mMj0;z}Llr+;fksHtCG;>yb8t2yrf=f{;y5Bt zZ9Y*PH9;o7+c6Os#uW+Rg^T`8t17)nZN%MKv9Z#99P2-m;U}U|iu&%~L{~>7&X;%N zsqxRJlsvv5b*5szCc{8=JeOEXc4u6aKFyRm4xX36_kmXVHe)4c%1 zzfbiZ$#PKb%~lI( zhT-@m5|r6U+N0BHG#%aOjeZ3~JW`Ixf&|nh+(vEHYQEs>eoFMfcpm_fP7`jNb7~~K z6fF;Tu-|2Th%lerQL6;Sm^QvN3@ZvJqoZPazpXda) zu*Y}G*u?Tg`_3Zt?dMR4aOZ)GBnxyoDPjz-b~)Oj1e_;)2w?kLRl zByFFP8ZgAYIQv&449QAW1NB{ID8Rwxg6E%s>)z~*MnwhoRI@xM)Mpqh0`Fx1ryhc8 z5dl?3W*b5AJ6wc<-^?273=$%k&H!F^{-8!Jdz<7b9wb+wD%8!2o}UFf^DkK z#59Ep=%^J8H{zDuxD_034geKz>DtoIneU@1q5EGkG3<(u<&gvKbEjQtVV=-r7I}z@ z!LF99?xXZq)(WT}_=2y49UOab`KgCHI!m$B_1}NpSy~>R(w9ddq@I`@_yjj?0*Zg? z;75GI>+mPw6#;5Yx{H#WpGeFBCHFP?9s&l* z0wmyG26;{x6I{I9X%21u9E5tHq*a42o#49r25v$F)%^ykrZbtT(4T!pD{(jk#A^W zm(Kv^uQ$*Y|15IO?;gVr67L`uYskmWY}aPzSUM>_&a{ZAyYT2_%U9MUYW)KS#~^#V(#CIsb>>uYAH$M)D&%8yl+# zsoW;}>wb?bS=-umn>P#v8olf(4Lp3PyZU+jQfmzRnQI6A1=F@xX{)omP0rr>HCXk- zG(J}Mj2b1Tf zXa6&ygWU7Dpq?I6@DS0+G~9#qw((pi(1%25p_p41BUx;sUW3_hKQ>lwP9+qQ;T08J zW{GfBy+M+pXfV2r(`3HIptp8r2PumC(f$8QAYu_Dc3bYKe9 z{>j0RDm2{A!z?j;P?9Hf>-P5Iw;SK`zEv&q^d1rWFkt`hUl*0zvhu8h1OM0zdLE*m zgG^nMR{B^U?l*D@vG(nE*}muJl5I?yZK}+$^2&FW)iEPnV8P`Gl^mdC7hE2OCr2Nz z+h)^$*9y(bucjoSC z=AE@iHnnCCc?|g!+p%;`iv5RA?8-hhkcPj%7x{1=*I~xW_M1hLdN($>(0yIJ_4Cc= zvAq;LetGOP(Q2MTvI%zxGZ~Uhepg0ZibR8&`t;t--(R07A;^dwpBg6%1@vtC6=^zQ z5_Cc`DJ^D!9CQ;(A_sT;*L{9sd(pR$9cRsVpVG+Sf?(Dq!tcW&+L*jvTEii(iqke^ zewiFXbhEJ0>&?RhN|+Rd$WT+(Uoi^h2J$@uI};lU>1Ez5#B5)@F||ic%x}bj<==nG zJ88Ke@ODYb{bQt0H;l}Ohda@p(9?3j*0S)d$=Y&T_gwTbb;5En+Zmra6+Z{XB(t4o&; zh91ssKi9l*P^fu|olD`UeX5J`bBjyI#}_PqwH!QdGnKGg%v}8oZxqKp73RV&Gdq^| z_AJR&F##Js>eBruxQuOV`P%+fhzVT*NXc)MyI{ZP=bs0{r_TOt-g=}%dRen;bzK}& z+_q$(JQoo-wEeNk?3*DND?iOmW6-h{NI2!EZ$?sNJv-5%v=3Mh7+{7G>=AOB8Ci0d zBlqryYos$$z&^CxgXX_R{(OiOvp>pSqKh|xY>6Zb@yhl5uP}aE-8~la_=0F-yZMs; z^L^cQQ^T-t(k@JSmCTRpmmOZvn0y?$^UZ>-ZcpaU#L}gu;Sw$hHnSxG`Ct=m=aTj@ zu@+aB`&+zvhn2K$!z)jWWF_dt@Sfz4 zDxzf=&MihhSuJdM{(s1HerIG```iN&(<_1-I!)4vRFA5?dU%F)ju}R{)sr%JN&(2g zrn47K)R5*71S=WjMR`)DjAF)+bGrd6*!^c*_U7RUlCXyI5=vPnZuARe19H8yDBuUr zefd8LZ|x`1tTK zFC%gZRnF(Mo4Y1{(C;2B(S5wNEKqaNr1q1-?^ick6Ux1H#Qcufv5d5#3=AFks)nB1 zLB5HaDLWhc5zak+i~WwrttkFRmxzCxX2nU^#cb3_$OT|D^0J>(kGpDZy1IVP(JaKx zkXh>79rFy_I#NWRhu2@V6x0&}0#LBZP^PZq5=x?fd9@uDv7^%iUZ*f^{T&Vl(n+qP zycxx%N>ByZx5ieF2sOOBq4DkHKiMQ2HX21$qkdN|8a{id;{JTP?=ZFoCJhIn+c;Mh zYb^s*8o_>!S=A9sn5oPC8#jVR1$ckwMt|&=h%Y^^(;*by2WDIB1A;Ms6uB@=g zi+)FR|8yy9foU043omitArY| zT;B!;u!ZyINn&(wX5Ob#J*l}W-*cXC&9VJ*=hxb&H5{s49A~kZ?SECWFmb`M+v{Ev zoU2K%!Yxajf7a>;+iFf7apQcgP&U5iWv|;0ghHHxX1Y*x2#WC>BZJi*ce4lrKmhS| z+qwNwXyzNDYo2DJk`h05BI2DmD62;9X4?W9a0WJ8c6i!2)Ia;4Ap2H8_%}49{-Q*c z0&FG$sXf;eT@80-16nx?-<;)3Y~-Wkh3komikx&H-RBnkRlbZvhx!$I+&x4{J1JWv zAHoxL{^dnwVvOsToLE}nO7d(uD2Dg|ICf+%EjtHbY3QG4e8TUT0^SNUR6j+Mqt#q8 zG2E_;rec4r)L72+vW@CA@1H`u(KzGg?=-fqQ->lSb6rs6P>tp$2)b>XJ?StuRnLJ0 z+=mqiFAny@T;u;~HC_On`hg_*W3($ce^-PmzpXd3ELl*>PFar$q{Xo}WuG#aFQcX3fyGedBa3ZqtraE&#*re&Vt$ZsQ0evj59YZmX z_-U6ZrMX#!UIy@KkwR|S#0&j0!v zDwLAig>IT`=~M#hb(-&4bV%L2^I;9L!I5FQW|%x;2HpO9nJ0-thq$oFs9XRsFhO66 z=MIur!&(Mog+Iy*ImG%LAuF8{x72Rfaiqg{J`MdCU<4=m;xKVa@CDB>bhcVFk%n&h^H#es01~K2WMY)+;f7w}warqk%t8*U&c;8}Pyj{`I+(Q!pJqNmqKuEa0B3MCt zke4z@hGUW$0u?I{inW!A<84f~&fLv!O`2ME9_xNgUT1&_t|bcutcL2>w?hRdmCq#S zCf_It=0IggH64KCn@_m)JKl>#s4!DaNpCG>_w@gi5cH4oP!C?4<50;*`jpes!t@w9 z=a9YZAz7EibT&H3X3@v4FLJye6V323Q_ukh*l{bjT*#EwocL)RfjW34_ zKkv3AqIS+Fy%k}4JXS@3Vp9f41PpR2HNZn02;g>}n{Zi`Mx$6<@@MUM!EstQ`D@#x ztQW`R6oU3XdD&cadp1z3(4}`+Evf!{`^JmQO<%`Ph!2KFU7`}}UQzjA7sg3)>@kHt zzH%I^oD0AQjr}x;2^$fO>J-4eEZr>OG>v>pyMkg2QK{MaXz@%|9&ip4?Jn|9Q4W^&7QuL!ACLfsJRgVwV%sGEZs@h{Jxzh34i7fYH3S z;<9Z9T~k*W6DJKsX47@1@!i~+xo31@1s0FTab8A@{Xq~~+4OWZ3=hsfZz=3JCbaBx zJDFboYT|b>ZGbv4B^o!kkwD!y%Wk>qJ7jIG?A-LQ8PCOrU+JK7M*UZ1)ChF9+dLJautKR2Hx==ff_zX!_t%YTLOg(VrY$I(c!yO`ZOoeZLU?t3 ztryzFXh%c7JC19wlGN$cbVCXh}IeXRT#w!K7RY zD5=olFE+X9^*_oqy_7~*T_%&Y6#t&PDWsO}ny^{ht($j=rw?q0Zpy%4LeSxQ6$~oD zhTjS|1FxAQ(vMZ-o$`rV5A$iIIqpz~jpk2SQ6Gf=E8=vLMg!0g`)-QdGa?-S%%4;D zA)JUH1q}YO9+n{Pcc%@-Ydl*W&Ot5G_Hjnarx;fUr=QrEH-c@NyYz4x^k`-G3L46) zrZU3LvVKCH`Oy0fHZ@f=4DGu`>zCW8FzZSdvY4NqelFOah6s(7r(2gP4WGSN_63trTw+v(xf=;}6UW1oojCjdhXd zG^w52Lm!tJfA#2Flc;BB2fW2iZpxE4O@%f~Afap0FW)R)fv8K}8zXn^oYb zyOqbC9aJ)^j6-`%_a)#w(IT{?28b$vYA7$Azo^>H7pF#Z!+G!r9N**K$V<=~0CD;% zH0Udxzc9)!!JOuO`ckU)6WtJ%{I11cdBba)B+ehSsA8T*Snb0x?F+32n-Pkbp3tq8AoSnZy zA9zLTRB#~=xk?x zcyfF3XG~hAt)TI7k))_UN!CPWBYQ1n=3xUCo>48L<9@ecVFPIfWfd3vr(|%QGD7K% zR_^p*HFTAxJNvJZJ>f|wjUdkCNSEXEdBbngBtYzQs?Ashx1|HqKwH-vgy;QuVoY}R zF|;iMm79ifkd{4Y+*c7qA~ps$bi@|JP6WxYyw*zM^b_2_+oB}pOitb9gg+~f{58km zZ@KBUB*pfCly~BU)SY5F_PRz6|@> zWIlS?xkIGOm)WGttSPfh?0XqQFsfELY`W|uLHO}u&F`-#_qtTCOeEI&HwREsWQ)+N zme>&MbvKf)`T0+Y$Wd>|w;s6BR6>$C>G(LGk#tgTtqGFGOeO2EPz@0X*hmhGj(01X zOA4XC<#`=KEm{*AgqZ|CUk#1!2BT*49OxkrQiS)X_bKzPT_ z{KRR4J#UD_gpg(X{~wtO+ql)MrxN}G8Q$F*&5_C~?$EnxfKQ-MT;fec)Bpj-%2=F6 zq{}~K0pb;1w9gVvs!LGVheAGS2uEn_H>l9*dy^kwn@qE`ae0JG0szAz{I6LoB?o}2)#jY`83g_Ngm5UAL{VM3cWi5dEnVQPSmU8OU04vB?EB zp$M94rXLE2fPSSV#|Y;vX=$oNpW- zDQ2so5+%8>I{jsd>AZXm69_g&9 zY1gm$ditq|-dB_Yvk%8w)(1#m#{mBDF|Tghn`ek!l}*LSt_1eI+n#@|0O@FG9{khM z$fvPt6gp&)xYBGtbV4DdnfY}WwTq0E$_w|N07p@TBAMuAQ~yx!z1Lu%hdj0(RQ5YF z9z^EA@cO@Txc|SLgq~lTssQ1x-bj4Ib$iU~?uu8s#cdY$xvb|*n;>^L>9a^vj5vY$S^-Sexq{Qex^ zoG|*%x7JWwFSTIYjEh{O;8?LH@Fm~`d$-*?svKHb-Xm7*7L4_wRpOLnh7YxMT*My3aZ zAEdK&h#g!`JJ90&!VICCRI@trj1=s10-;+=-_X1hh=*3*ui3bHDXis|B6%6+mm%Fq zAT&rHB0G4HMU<(P${5G1p3e5vgu+&h7wbmeUm^lPg_ z5N$-_Db|){Zz3Cj>$?^-Iuc6w@J1sC#^jCGMG)gphcJ6l-6@s*r#d^!V)SYjQD-lBO-knmeAt+CpAo-o*njwy>*2{^;Uf z4g5L;w|yDLir&VzZddx%lb_Iyt+_DbQEOuBoEvprCFl(Jfts{``j1bxOu1xq@hktc za*cBXd_v9LB>4afy%ZD3Y>cm{gr;W!7xWthH`Q%uoH9Z9yFERcdNX$}!Rl9l&XcIv z)CI&WF>#TOo1{DE0S!_jq%^)`*1-_q!wnT1G~;CHGK$}(p$-SlNVUfUkO*(= zw_*Adw}1-45a!l(kzl6v&TeJ`cg#>Ody;zHz~ytHSPS;fPZZq16qJAon=EiG`SzUl z7aE@)r>N~Y#t}{cb1k4HAq~8TPpVqD42iC`TPJ|mf&Z6QAESUnZ z^}IJ=S#8eZ+&T_UhQuNe>?O9X^%&$<)^Cv1QRiB>nCKf}RIEI2)-+x3q6uwe#c13@ z4#?>+O+W$4cDZ-m?u|vNuubr%I2+UdZ5+)2fLIEeq#`#&B003m+a((-==3G_ff(G7 zKgzriNl7Wj^&EgpHEfu3A!T4X=$m^aqQS?H=iwjUO)?T<7z;NdU!7w6Nqa)n-OuIT zJjIq2k58=cU$8!SrJXb>_dZ3urip?dg~$ko%=3ykFkOtj&FapdZ#G8fVe?A&RSd}|nZkC*Vlt>e*=nVahJtDh zFI`-g+2d78l?rHcLTk=5r# z*anQ#eeOybvUzfv3du~ywc|Z)o#JEijrAM1N&ia{7m#rDeJhJPxvGeyBz4J`=7f*y zwP=s+42COnY4;dic~l%LMTGxg$wGrVFA5|U<3a1ZQeEefsaD37%bD#{W_IOR5OOKXk<|1f;*vq8-XiLBW%QD`)D?rvb_TC82Unb~Pv zcJ)z+Cibg}Pd?6*+O=kzs)^AB5i`ENDS1bbx_+KPgZFI8pSBl02Hb8xX%~HJM$B)f zDR`R`g5h#=ZS|zs_DwPBU3=VhdMcNzxAXB>EwGaTTjRerB@msg?@AvU?+Onp_Q8tbQkHB5D5yp`ho| z*HgusDw!?C-oLK6Yug*=6D_uXCiWkk`81&Lx4Lnk&TlUs5f`0h z+c$-#Z#SE>UzO-<(7ZCanKP}sE>)6jio?a$jehoZs_wiracCXiI8Bxh9qG$+6jxoq zmiST-dZ$;s;hl&~h~DVZ{p8Z=(u{LX;xR8j{}j2)5AB9!jpi*=mtnH@nTX3uO8VxX zIq!pI*Hq)QX@gmVPx}dTiMbn0wP_{Zw2G!b()T>IHj;NCGsb&+5dDAO-sb($CF|fs zIc^cf{l0(x$Ai1i`{!RS3;?k3oS27!c9<1i8gZBDn4RLxtX`*Vm2w1urr1#2alSZy zp0|))|LsU#DXV$a?780SBV7xod44Xd7dDvH43E&0`KIk@yL7RK%jyrW+iUD=wG;w) zMw(WA(q&YM^5S)TRyx8=-%1TC6FR_?m4WTCZLhlA6FF{^$c6kmJzTD zeh3i#=eN7@jE`<|WhLnh{Mp5H(tPZj;uM*Ql~WAgJ6s06q;hUGWMhfI36s*x&Z&JKYRy+J4P^0{ zYqzmFVvNCj#bD0eZ1q+7l!qtG3P$hd^%VixXmrBTEipHj;uUU8EmI~3BZ?C|2+>dRF#+Jgqc{#CdG44JIqm?Q6e6QBnE%`J%+e!(usa z-<_>0d+Y3$c%deLtk?YtXWy!vrkwBNIVz7vDGn3jbrI34zmFH%F!Fi^`kEPeQ!qAA zbEU8fn?~jt?N}tyZrG*lf2FRsy2#nla+6P*0J{$FmFgl=7rAiRTI#c|04QC&Z-^Y` zkE|1-6k8f<;3!hL-#0n~1j#PXY7_c_EnCtS8u2eDr=kt%ix!LejaT$GQ!ZLv6;H>}2>p5|}G*@V5HMhQo8|8K4X8fhtuh2UQDtN~?wsD0`d|NN4Za-YBCbMkrwf zovdWc54$SxMAO4!g7AJM;&6Gzd7~lQJq~wA{(1lH+y6p~!1D3xueIW-M2T<8H(^&3 zR6Caz&HdfYUU_ZfmI0A@UtxhGJ$UTTb))|+vOE5Tjj=A|$O_F2mag+xM55z*YXtqP zO_;`>eQt0#W6UPNrdf5#m?1IwgS~h=yov|SJxs?zoJ{AQuDWk%X!DFx)c0qq?VHZr z(vSRghKF7ZyLCmF`VY}67^$6DVYEr%$yv4a>3kyw*A8)U(Q+K1f3Q-~qjrt_zDHIH zwjUSLoLzj{S-X`BYz<6ZB#kRiv{ytNpKc4A?}_|rFq}}`%fY11Vl>g>(Dg|8H>iL~ z?%PWiF|W`#^~?>`Ci-|jkWkG7OIR@;dWDj)J1XJ1vl;XFYN}62Y^ZTVb@ojl=Xl>% zGR^N5bdg``Y5Kg8SS3>EK0_b9hX|Uw9Ue9AdF>-PO`)ryv1VfJwtf?OsBibWm!DoJ z#5O9PxUW62BfLd!I0y3=L-Q|V8zc=%t+zuwdBvwwIXg=x-AJi8?H+X8vZoXc@9C%S z2@HDldAUA>xxy><&QZ0{E1!QuEb&J~9H(vpkPdp8z!NUtWwGsvdc5?`xe;yZM-$F9 z9yig@a0jiBQh_4{#ai#PDC*5&SDU(ul>(^)mh2Q2a@hy8_yk$`h?i(S_vy3~2}?9TK&_~APPfa#Z8 zi;OCi7;VxC|C0|MMp`ws;13k9H^v&s2%%H=T3vZNW%BpeLnW@(TFt3U1(yhQuevhF zx}}z9G}+f=PA({4Q`rG~lmdR2hp2v#-r_Sbx)7 zBELM*Ao<-K#qN@h!aAvmfySzgg%wnLsTX`pPZf79)eOt;o?{NU=W>r97$XDgiA|CT z(@74zCgf{QlGo1#{QpJhq$wzaJtnFGBmFGmv7r$d!B1(oJj(v5c!EwB^@qXnTH1Op zD%t1p$*HMr>)C00)ttxrI5wq1nmQ0nOKrs%c$7(qxT% zX?pY>1oH(r>&OC>HsQE9aJ`#^&=t8lvn35@XpiVzYk=aP{ddi~$LcDJoZ^sa!sBev5Ujeb5RGMOJ|-mI)AL3;XZE4@<7J;m6JfU3MG{Gl=G!{)qRym~+04 z?x{vi+l!SiE-Xn8S6XlW1yOqCg58O2Jxfuy&mM~GpDE_JKjCqaWeMpM+>OSLn1l4@ zB<5J6#q7@#iy7oC%C{Y(Mqmht*`JHv>?+BTPzbA?SKExX9}LdnrB*yfR)&3|F&?e< zBpUt})`9kOcCLOdVW!CnHZ5O-p+8f=c()f!gn;?^CWAW1bA_iG^z6e%zA0b|tu$`X zTiSKs4F~QQ^?hwBwi8whzsqh5uaJ676x)b;RwU#jOMm~z^J#t5dd`#=_s;;P=d6)m zeO++&D;gx_9y8t-Aa|Z9lKKTAHfbm25r?1nRH(h$@TtIn@{O}u4<1USH{ScpkOwGO z`HoLCuZFbJ%Rw3?4=Dkk!svSrQ4Y$7b{WwaPljxu-aKVtbbGizS6Ac1v+Z6#6)@O zT2h$m5HGzA0`3fjiv(oIF!cA@HW<$hrRDk1dPg;S-}EsQ^03BMh}mRYGji!CYN&nz z-;zJep+G}c;RX)?JCeS}NOkp6e8~)+jrTzq8q!~#kiY^~%cTh{f}KCQV*M2MrN~*j z&Y3|TCD_#t80*NBenE;xiBOhmCddwA;hg;w`QPUc+pIYb_Lr*zi?1k!&$f5f|K??CzaC*--tM))rX zT+OQ>!dvGkH@NX;L3Qz9TVeAj6U|97{xj@bNySitkWp531ldV$UkGal;+U*zpswzu zJE7$x3;>gEem?rg=XJn$=+-j{93c8pDQGx7ZmL4RMvdLAbP)PTri0gh+C)Uly1KU4 z$a;%{R3eJ(D=fpa>A-x6{df0i@cq&`!8+##0~0M+ZN>?Et=HE+zXN*5_ybzFYLf^) zy}RA!4%0)-Yr3cJ7OCn0_ciN)7H%UPi);$RmN@#NP0OF2U zlkm06z4-3@u_i?d_lfh83-#h7N26f1!=rY*3uZ_~$#8PTYMSAn<}l}8w~s`y0Bzip zR`D;z!$0}4qjRVdV&vYN?Z`6~nAWlBy$w3nD+!B#Xkl(EIeJoGIlGou~o9CR{oNcIr(uY%b=!m78Dej~-66zEx2Qd;q$Z9o{kghlql20r^>SpwsJAyA@0`?;KXWqpKd!TT1!OF^ z1f8nmk1z3{2QHR7lStJgp!B5DyM6-CwtotB*o_!?P49d6$|4A713NhHDY2K3O*s08F>*vHJh=!Xv+0)=f0`tbR>PjfEYCg1 z%pI#i&hu>_my!mGZLUmlS24v_J;q={G*t&Fc;_j$>7F<5_qv=)_`I_ zTfx}ZL*`o!G5b1NJu-j@BEOptZ0&A!951z!>f`!MyivG!GgKeVj|R4RT+Y(f%c5f2 z?q$5lLnXU+;PDR}?K2d3j`^P)jx!ql(7paU*=d5Cxr{g~vGMoF&R19>z)r*pxLQNG z>%&_$mWmP3&M{z#m%cI^_c!0qR~r$*epGuJYHWB{cAwAB{N){!Ci;3JYha+Z@%iOf zh}E$iFEZ-hQCaFdD_%RzkMo^0=Ua47!%Z$j&sgXW(8dFl>HV8Qo5+%-pF71JG7+?? zL{_13y(FPfpu-r?nJ83k62C;!7~gmjlzdqbj`kAKKVOL+?AtD9Ucp^U1Tf}uT}5_H z1ou`RN-NkK`?sxnx=abqk6={vbHpl2aA87Fp6{+55WqR@+1+5N)^6E)@uieCrTTrO zEeXll7EXlGRb0DsV;j6OUj*u`mRy(!noXJh^K&1l)Yo?CB2>*ox zSlKRj$f13cPv)<3eFxST4Nenn+)zEIy66rwPP8cvZ%RRg$!UD(;NLh)IFL4;a7)Yk?9a1I#4rJ)EgO^H}m&Rk3LT^$;zC|z;PA@^>@mZB1EoA(> z@#pvs4Z6kl3!ixF9)tte*`7wR=f{m!KB@6Ud^gd5LEWlyJ4#}pdR(^Hz&%#49`C7e z?{6T`WDU}0Q;k(R&DW=+>`Rz!LmPFmpr>)Z5MOcSF>eXpH*tEuHi}R9&m2Gb)Oi$H zB@v5763G@yFPky53cg>P6Vk`eM}4!L6YnNyHBGss1E&L zY13xqg14uZP&s}B6%UT7M9-_tdTa-_Jn)UyI!Hh`_^#sMNMNhrIJyEm2X4F&veBNW zBFTW11?>K2U;t&MaifmotIHG8VxQPw-uLnptT{oQOE^n7{jg8zF;v zTCjSOTV;6t{^!y!!13oQ^gpB9wk7WVe4sL1@7wr0Ic}UvXFzm;)cbRzoY04 ziE$v1(q0aMF!A5_@Yj|-rX!Z)%AzfzZ7=9DiRiU_lJJ~l+tTLs${k`(Gq;Im&wWe1 zz@|y+jbc|et2!!kCiTq^HC*oj0f6rgf@BW8#%H7@P^ZvZX^}4R>#WT{gup+YDY6z9Hh|da^ zJhffXDDxEg<7~KE?08=tTmJ=4 zl}{oVkezy+BP?^%(TGeNG!qq-#tw*q{GOr{21SF%`M^T1n)f%5GZPv6Rf?gRRAO0^ z_1?av9HEDGF!-qNkp$foT>o1!sqKrDw;LUb^Es>#zQ?tu2=B_>I1mK^f$`24JbMd5 z)t`L!(9YCW2NRr>!;db-usVHD&#hb3gC@++Ynwaom>>v^vgnGgmU8SGys)xY^Bli43@VGoJECaCeUA!>DrO zs912tfD~7F)3u`>p48Tx@AhbN8(KMR8hY33XdO3Ig;e>|Z?)jV-E!RK7-oC3bj}^0Gi}*j+#bNoycCdW^aFAp- zfcvTu#H~8luQh;o<%JGHG19*86^%vddxZ6IX+Cb-ik?{Y_}GN`t{kZRWje8tQ`k4; z)pdtmP+_0-+kNg`z?>>d<41-utnJn;o+{tuT6y`LG0O<8ckf-82efo=!59HEeft~K zpEW`jcXzWyt>tTfnh&eZi)c!qINnIDcT~h)qF@;IT_f3Ar7j(rr)JCopg_C?+KiTF7xL6 zg)|s?HQarKee9>QErE~7gYs~r@jk_tct3Q2o~~pr!OFL4>8O}%Ih=P9^rqQnR$S@2 zA_r*b6N&>CjKcHaCo3aE<}W{2O_qLt z%_Y8E8Di6;?N`HXo4m{wk6wi`?^6?Q>kxxxU!>Sl5WYA7`^rO=4?4m{{G&m%o1s)cICHHIdZJz=(K9AGqQ#a-S{~<=04zqb zzy|N6YF??otC|PCW?OX?F)cQIp_Fxd+>G$(@htf?XChXf{$V6jV5XlBw2FHz6qp|@ zLsa6geornE7yAMpzz)Ew+PsQ+R(-YJtI7BV@ub4X2}y5f&pWU@sBnkcQ!y|hIJv1G z2c2(Jte((#hqj#@l11bFTqmjI$JU!Vr$;YOptF~)4VCXGlE|!{F-mC&VmU%sj(POx zL(XJ!ic*`*Xnv6@&+m5bp3fjvSut=+31OLIW(5k;t;^`A4-DTw z)TSS(MP$j}<*+nf=Akp4btElQQU?~4Pd&EH9NxGJ2Wxt3GGQj*Iu$Bk;aKW-HeQB^WzU&> zh8;SYDS|~40P>Wp-=KFX#)o%0aF~y5JOXXxeU%d))(YGC@f(QIqjV8t3>HK@Ef|_> zOsjTFfmYtmc4HRxSpg)jf#+T12VS8T4{dk4T%UdnSY%jpCKyW!;C^xk!{fm?qaTVW z&&;J!D#XgF&Ly)qF-u%B+WDy#S+5u@YV+QwtxE(AjKz=wP#XTY#YcwMVN$XmR|z3A zZd^I<4LiU+nY=d=1ksa}StGex(L*O#S226AZF57<>?r&nhhbDfP2u#!0pxV{qFeRj zdgV(7@3(kusRJ>fgcxzbH>E*pB&~l8=#h;2?%m$Jm8V{v_R0JXZJ_=kGEK8in1>kq zcpO|i$D~Jc<7jvu-L6yj(YwAI8)srPUq*jNOFQCJbR8$oKDX?&S;pHvw;T~RUf7RZ zC~~S%JCFp)%Y=QHvF{}d^k1PHWvA{tEA!b3F@8!M&SA}Jg8RQy4G#-hp!9+Xmr1BI zTBY&c8iKzuT~C6Kb!X8fX#dV1R}a}9?o+qT;%cpU?H%OcOz9d1wteq0R$Vb>3&4Xwm0LdPo1S_2v{PL&w5e1V!n{HqI& zEjL+v{1k70n!>aR4=QmlteCP5? z+w+8j_M;;=RcEdt&ZAiO{;HaLtVj9R0dkx19E@nPfTc4dun_yMD_kI^g5y`Xk~^1Q zH&?LYJuV`Wn1-ou0t zGnLVgt~EpB+8g!i ztej}y@2r7mV&G)|u#3?To2WuMG7&)KBg?}_$%Yp)^D8p7dEJH4>V>s4xx}81Jm>Ts z4|5zP-xH(2YMZdt&WinEmN;Op{M^7&f+2tD%nFq1WNv|&$28+vNKcs8CLR~QBF-eM ze+>QHJVRVRooKjF2h8Fam2K=Xef`)O!8j&daEBsUJ#|94d7Y7kTp<>MGZdz_x6lPN zxOA??`r`~gQC);?dMb5o{xQ~o78~EshT&>!MeHX0PMa|r9cQzF(W=K96=^oF=?22lbuKe|em9S~(^JrFq} zbGEA;7=PdL#{G?D=-0j}P(&<54kM3)uaqsDx6Oids<(s*&-o9%=?9HGa-}oz4Kryc zHlEBL9BHJorgY_41AS#3b9BhX3Z$b4C%d*~AO?|Q@d8I+p*e~NmK}dzqrEHylq9bS zY`@tvvDq*#c&COLD$JMXwpb7y89W31(L1|m?KoD}9hjWei0@52nQnfTOrg)iDV4A= zim<|^?%j;`AF;BveN*7oY>7M0;o-3s7?9xO@N4y`!JlhOqN|`yu>+4mzS~(~0|DIL zf<`a0X=@KQ5eQZ62~c>hwP==DwE3uwK!8J5H+`?qI1%w!ucLF!bl<#!(jn9WTNyFK zeA48FwFQCemMIsA3G`R<dSV<3YfRQ85-wX}&)p^n{h;*XX8 zb~YgO(@Y!@eg1;1yX@U-R^Js{$(22Z7O5DFTH`Ebv?`I%$VQ8{5e924pK)^mPLBaj z;+`x0+9M;FHWZ^>W7P&7laE}iRq;spJX_fMn^wxB?c##JA@ zl@Rny$DcYnHH92PeBy-0JBsdeut_ris@2!U5KS6hgDb%$ zdG6%e7ll!dR$`Tuxia(ha?-wK553!vS_dQX1}^hQdrbplB2MKwJAvn%#5k;a*Dhv{ z;gydyIwp7z73|I68^N>qkmdwY!DmYy>@eHpB8e%1UoYWp?96pP z=Rx?{$=cWj#97otGmY1E1gi$C#D!Uy$R-O_?A-8fT1cZ@Hb|8%A_2ml2ceTGq zFY{HYemPrKZ(%?C=t$O^L}i3d7PKuD1B51kPW?C`NXosC_u#0U;)!dwd))qcaTbli zg}4i%rrbtU8<(&MnGlULFq@79s7tMFLL0UfY1n;3dt^dko)3O-V^V0y9 zmsXtbIB~%_9q0;;4jEu(B@&M7|R*+N(|LMI= zp34}dA|E%kteEkfkjiT_27i>~cjgkA^^%`a%hipMvc|l!^$@WH27%&9Mf+B-oe!O! zm=mL4YB8K4r3lRdETAJWN8~5-Ng@jvb9SB?(;$TZ&c1E`QM==zDSGj`4XH$eNjDxQ ze#BZXKxt!6DX^lTT@~d8+d#m_7y}@nqd?@mywtI7L2Jd|9vF!s( zY>sR0|B>LtyKmmRA?LF1Yn<}X|9UrPVlontZ^}!aJv>}o>4=w>#Ng0l5phU{!)Xan zZ++bnJZ9&~m>SWZ8d`tQ%@9+e3w7qjP⩰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 E00Wo8W&i*H literal 0 HcmV?d00001 diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000..c6ec5e3 --- /dev/null +++ b/requirements.txt @@ -0,0 +1,31 @@ +adjustText +alembic +altair +anthropic +cattrs +datasets +fastapi==0.100.0 +fire +hydra-core +matplotlib +mistralai +openai==0.28.0 +pandas +pebble +polars +pre-commit +pydantic +replicate +scikit-learn +scipy +seaborn +sqlalchemy==2.0.18 +tabulate +tenacity +termcolor +tiktoken +tqdm +trueskill +typer[all] +uvicorn[standard]==0.22.0 +wandb diff --git a/setup.py b/setup.py new file mode 100644 index 0000000..45e7477 --- /dev/null +++ b/setup.py @@ -0,0 +1,11 @@ +# setup.py +from setuptools import find_packages, setup + +setup( + name="my_package", + version="0.1", + packages=find_packages(), + install_requires=[ + # List your package dependencies here + ], +) diff --git a/src/datatypes/enums.py b/src/datatypes/enums.py new file mode 100644 index 0000000..f8dfaf6 --- /dev/null +++ b/src/datatypes/enums.py @@ -0,0 +1,34 @@ +__all__ = ["Language", "PromptType"] + +from enum import Enum + + +class Language(Enum): + PYTHON = ("python", "Python") + CPP = ("cpp", "C++") + + def __init__(self, code, text): + self.code = code + self.text = text + + @staticmethod + def from_code(code): + if code == "python": + return Language.PYTHON + elif code == "cpp": + return Language.CPP + else: + raise Exception(f"Unknown code langauge: {code}") + + +class PromptType(Enum): + SOLUTION = "solution_generation" + BLUE_TEAM = "blue_team" + RED_TEAM = "red_team" + EVAL = "eval" + + +class DifficultyEstimationType(Enum): + PROBLEM_ONLY = "problem_only" + PROBLEM_SOLUTION = "problem_solution" + PROBLEM_SOLUTION_EXECUTION = "problem_solution_execution" diff --git a/src/experiments/ICM.py b/src/experiments/ICM.py new file mode 100644 index 0000000..e91f2b2 --- /dev/null +++ b/src/experiments/ICM.py @@ -0,0 +1,560 @@ +import asyncio +import json +import math +import os +import random +from collections import Counter +from copy import deepcopy +from tqdm import tqdm +import numpy as np +from datasets import load_dataset +import argparse + +from core.llm_api.llm import ModelAPI +from core.utils import setup_environment +from src.experiments.ICM_tools import ( + propose_consistencyfix, + run_consistencyfix, + pick_two_inconsistent_claims, + update_assign_based_on_decision, +) +from src.model_querying.prompt_creation import ( + get_decision_prompt, + get_judge_prompt_fewshot, +) +from src.model_querying.solution_extraction import ( + extract_claim_logprobs, + extract_decision_logprobs, +) +from src.pipeline.pipeline import Pipeline, PipelineConfig +from src.tools.dataloaders import ( + load_assignments, + load_problems_from_json, + load_problems_from_json_ids, +) +from src.tools.path_utils import get_default_results_directory, get_root_directory + + +def calculate_accuracy(train_data, inconsistent_pairs): + train_probs = [] + for i in train_data.values(): + if i["label"] is None: + continue + if i["label"] == 1: + train_probs.append(i["score"]) + else: + train_probs.append(-i["score"]) + if len(train_probs) == 0: + train_prob = 0 + else: + train_prob = np.mean(train_probs) + + return { + "train_accuracy": 0 + if len(train_data) == 0 + else np.mean([i["label"] == i["vanilla_label"] for i in train_data.values()]), + "train_label_distribution": Counter( + [i["vanilla_label"] for i in train_data.values()] + ), + "train_predict_distribution": Counter( + [i["label"] for i in train_data.values()] + ), + "train_prob": train_prob, + "train_size": len(train_data), + "inconsistent_num": len(inconsistent_pairs), + } + + +def update_assign(data): + for key, value in data.items(): + if value["score"] > 0: + value["label"] = 1 + else: + value["label"] = 0 + return data + + +def fix_inconsistency(demonstrations, cur_metric, name, alpha, iter=0, K=20): + backup_metric = deepcopy(cur_metric) + if cur_metric["inconsistent_num"] == 0: + return demonstrations, cur_metric + + cur_pool = {k: v for k, v in demonstrations.items() if v["label"] is not None} + assignment = cur_pool + + best_metric = cur_metric + best_assignment = assignment + best_decision_id = None + for k in range(K): + pipeline = propose_consistencyfix( + args.model, + name=name, + iter=f"{iter}-{k}", + assignment=assignment, + ) + results = asyncio.run(pipeline.run()) + decisions = results["decisions"] + assignment = results["get_assign"] + for decision_id, decision in enumerate(decisions.values()): + tmp_decision_metric_list = [] + tmp_decision_assignment_list = [] + for score_idx, score in enumerate([0, 1]): + tmp_decision = deepcopy(decision) + tmp_decision["score"] = score + tmp_assignment = update_assign_based_on_decision( + deepcopy(assignment), tmp_decision + ) + tmp_pipeline = run_consistencyfix( + model=args.model, + name=name, + iter=f"{iter}-{k}-{decision_id}-{score_idx}", + assignment=tmp_assignment, + ) + tmp_results = asyncio.run(tmp_pipeline.run()) + tmp_metric = tmp_results["evaluate"] + tmp_decision_metric_list.append(tmp_metric) + tmp_decision_assignment_list.append(tmp_assignment) + tmp_best_decision_id = np.argmax( + [get_energy(i, args.alpha) for i in tmp_decision_metric_list] + ) + tmp_assignment = tmp_decision_assignment_list[tmp_best_decision_id] + tmp_metric = tmp_decision_metric_list[tmp_best_decision_id] + + if get_energy(tmp_metric, args.alpha) >= get_energy(best_metric, args.alpha): + best_decision_id = decision_id + best_metric = tmp_metric + best_assignment = tmp_assignment + break + if best_decision_id is None: + break + elif best_metric["inconsistent_num"] == 0: + assignment = best_assignment + break + else: + assignment = best_assignment + + for k in assignment: + demonstrations[k] = assignment[k] + + return demonstrations, best_metric + + +def get_pipeline( + model, + name=None, + use_cache=True, + num_problems=None, + decision_id=None, + iter=None, + assignment=None, +): + pipeline_name = f"iterative-truth-assign-iter-{iter}" + if decision_id is not None: + pipeline_name += f"-{decision_id}" + if name is not None: + pipeline_name += "-" + name + + ROOT_DIR = get_root_directory() + DATA_DIR = ROOT_DIR / "data" + + + pipeline_config = PipelineConfig( + pipeline_name, + anthropic_num_threads=40, + openai_fraction_rate_limit=0.99, + num_problems=num_problems, + use_cache=use_cache, + ) + pipeline = Pipeline(pipeline_config) + + assert assignment is not None + initial_assign = pipeline.add_load_data_step( + "get_assign", load_assignments, assignment + ) + + def add_train_demonstrations(train_data): + copy_data = deepcopy(train_data) + copy_data = {k: v for k, v in copy_data.items() if v["label"] is not None} + keys = list(copy_data.keys()) + values = list(copy_data.values()) + saved_keys = [ + "prompt", + "question", + "choice", + "choice_2", + "consistency_id", + "consistency_key", + "source", + "label", + "vanilla_label", + ] + values = [] + for i in copy_data.values(): + values.append({saved_key: i[saved_key] for saved_key in saved_keys if saved_key in i}) + + for idx, key in enumerate(keys): + tmp_keys, tmp_values = [], [] + for j, (prev_key, prev_value) in enumerate(zip(keys, values)): + if j != idx: + tmp_keys.append(prev_key) + tmp_values.append(prev_value) + + demos = { + prev_key: prev_value + for j, (prev_key, prev_value) in enumerate(zip(tmp_keys, tmp_values)) + } + + sorted_demos = {} + for k, v in demos.items(): + q = v["consistency_id"] + if q not in sorted_demos: + sorted_demos[q] = [] + sorted_demos[q].append((k, v)) + + out_sorted_demos = {} + for group in sorted_demos.values(): + for k, v in group: + out_sorted_demos[k] = v + + copy_data[key]["demonstration"] = out_sorted_demos + + return copy_data + + merged_train_data = pipeline.add_transformation_step( + "add_train_demonstration", + add_train_demonstrations, + dependencies=[initial_assign], + ) + + get_train_preds = pipeline.add_query_step( + "get_train_preds", + model, + get_judge_prompt_fewshot, + extract_claim_logprobs, + dependencies=[merged_train_data], + logprobs=20, + max_tokens=1, + use_cache=use_cache, + ) + + pick_claims = pipeline.add_transformation_step( + "pick_two_inconsistent_claims", + pick_two_inconsistent_claims, + dependencies=[initial_assign], + ) + + eval_preds = pipeline.add_eval_step( + "evaluate", + calculate_accuracy, + dependencies=[get_train_preds, pick_claims], + ) + return pipeline + + +async def predict_assignment(model, example, demonstrations): + demos = [ + v + for k, v in demonstrations.items() + if k != example["uid"] and v["label"] is not None + ] + anthropic_requests = [ + model_api( + model, + get_judge_prompt_fewshot( + example, + demos, + pipeline=False, + ), + logprobs=20, + max_tokens=1, + parse_fn=extract_claim_logprobs, + ) + ] + responses = await asyncio.gather(*anthropic_requests) + score = responses[0][0]["score"] + new_label = score > 0 + return int(new_label) + + +def get_temperature( + iteration, initial_temp, final_temp, decay_rate, schedule="exp" +): + """ + Calculate the temperature for simulated annealing. + + Parameters: + - iteration: Current iteration number. + - initial_temp: Initial temperature. + - decay_rate: Rate at which the temperature decreases. + + Returns: + - Current temperature. + """ + if schedule == "exp": + return max(final_temp, initial_temp * (decay_rate**iteration)) + elif schedule == "log": + return max(final_temp, initial_temp / (1 + 2 * np.log(1 + iteration))) + else: + assert False + + +def get_energy(metric, alpha): + return alpha * metric["train_prob"] - metric["inconsistent_num"] + +def get_args(): + parser = argparse.ArgumentParser() + parser.add_argument("--alpha", type=float, default=30) + parser.add_argument("--seed", type=int, default=27565976) + parser.add_argument("--testbed", type=str, default="gsm8k") + parser.add_argument("--model", type=str, default="meta-llama/Llama-3.1-70B") + parser.add_argument("--batch_size", type=int, default=256) + parser.add_argument("--num_seed", type=int, default=8) + parser.add_argument("--K", type=int, default=3000) + parser.add_argument("--consistency_fix_K", type=int, default=10) + parser.add_argument("--decay", type=float, default=0.99) + parser.add_argument("--initial_T", type=float, default=10) + parser.add_argument("--final_T", type=float, default=0.01) + parser.add_argument("--scheduler", type=str, default="log") + args = parser.parse_args() + return args + +def load_data(args): + if args.testbed == "alpaca": + with open(get_root_directory() / "data/train_alpaca.json") as f: + train = json.load(f) + template = """Human: {question} +Response 1: {choice} +Response 2: {choice_2} +Claim: Response 1 is more helpful and harmless than Response 2. +I think this claim is """ + for i in train: + i['source'] = 'alpaca' + i['consistency_key'] = 'A>B' if i['label'] else 'B>A' + i['prompt'] = template.format(question=i['question'], choice=i['choice'].replace("\n", ""), choice_2=i['choice_2'].replace("\n", "")) + + args.GROUP_SIZE = 2 + + elif args.testbed == 'gsm8k': + with open(get_root_directory() / "data/train_gsm8k.json") as f: + train = json.load(f) + template = """Question: {question} +Claim: {answer} +I think this claim is """ + + for i in train: + i['source'] = 'gsm8k' + i['consistency_key'] = i['answer'] + i['prompt'] = template.format(question=i['question'], answer=i['choice']) + + args.GROUP_SIZE = 4 + + elif args.testbed == 'truthfulQA': + with open(get_root_directory() / "data/train_truthfulqa.json") as f: + train = json.load(f) + template = """Question: {question} +Claim: {answer} +I think this claim is """ + + for i in train: + i['source'] = 'truthfulQA' + i['consistency_key'] = 'A' if i['label'] else 'B' + i['prompt'] = template.format(question=i['question'], answer=i['choice']) + args.GROUP_SIZE = 4 + + elif args.testbed == 'truthfulQA-preference': + with open(get_root_directory() / "data/train_truthfulqa_preference.json") as f: + train = json.load(f) + template = """Question: {question} +Answer 1: {choice} +Answer 2: {choice_2} +Claim: Answer 1 is more truthful than Answer 2. +I think this claim is """ + + for i in train: + i['source'] = 'truthfulQA-preference' + i['consistency_key'] = 'A>B' if i['label'] else 'B>A' + i['prompt'] = template.format(question=i['question'], choice=i['choice'], choice_2=i['choice_2']) + args.GROUP_SIZE = 2 + + train_map = {} + for i in train: + if i['consistency_id'] not in train_map: + train_map[i['consistency_id']] = [] + train_map[i['consistency_id']].append(i) + + out = [] + for key in train_map: + out += train_map[key] + train = out + + # sample a batch of batch_size datapoints + fewshot_ids = random.sample( + list(range(len(train)// args.GROUP_SIZE)), args.batch_size // args.GROUP_SIZE + ) + fewshot_ids = [ + i * args.GROUP_SIZE + j for i in fewshot_ids for j in range(args.GROUP_SIZE) + ] + + return train, fewshot_ids + +def initialize(train, fewshot_ids, args): + demonstrations = {} + unlabeled_ids = [] + whole_ids = [] + seed_ids = [] + + random_init_labels = [1] * (args.num_seed // 2) + [0] * (args.num_seed // 2) + random.shuffle(random_init_labels) + + for id, i in enumerate(fewshot_ids): + item = train[i] + item["vanilla_label"] = item["label"] # store dataset labels to measure agreement during the searching process + item["uid"] = id + whole_ids.append(item["uid"]) + if id >= args.num_seed: # set labels to None + item["label"] = None + item["type"] = "predict" + unlabeled_ids.append(item["uid"]) + else: # set random labels + item["type"] = "seed" + item["label"] = random_init_labels[id] + seed_ids.append(item["uid"]) + demonstrations[id] = item + + return demonstrations, unlabeled_ids, whole_ids, seed_ids + + +def main(args): + train, fewshot_ids = load_data(args) + + demonstrations, unlabeled_ids, whole_ids, seed_ids = initialize(train, fewshot_ids, args) + + cur_metric = { + "train_prob": -1e6, + "inconsistent_num": 100000, + "train_accuracy": 1.0, + "train_predict_distribution": {"0": 0, "1": 0}, + "train_label_distribution": {"0": 0, "1": 0}, + } + + print('init random labels = ', Counter([i['label'] for i in demonstrations.values() if i['type'] == 'seed']), 'init label acc = ', np.mean([i['label'] == i['vanilla_label'] for i in demonstrations.values() if i['type'] == 'seed'])) + name = f"{args.testbed}-llama70b-K{args.K}-bc{args.batch_size}_seed{args.seed}-initialsize{args.num_seed}-weighted{args.alpha}-decay{args.decay}-initialT{args.initial_T}-finalT{args.final_T}-scheduler{args.scheduler}" + + iter = 0 + flip_cnt = 0 + example_id = 0 + + for _ in tqdm(range(args.K), desc="searching"): + cur_pool = { + k: v for k, v in demonstrations.items() if v["label"] is not None + } + initial_demos = deepcopy(demonstrations) + if iter == 0: + pipeline = get_pipeline( + args.model, + name=name, + num_problems=None, + iter=iter, + assignment=cur_pool, + ) + results = asyncio.run(pipeline.run()) + cur_metric = results["evaluate"] + + demonstrations, cur_metric = fix_inconsistency( + demonstrations, cur_metric, name, args.alpha, iter=iter, K=args.consistency_fix_K + ) + + cur_pool = { + k: v for k, v in demonstrations.items() if v["label"] is not None + } + + while True: # weighted sampling + candidates_ids = whole_ids + weights = [1 for _ in range(len(candidates_ids))] + for i in candidates_ids: + if i in cur_pool: + same_consistency_group_ids = [j for j in candidates_ids if demonstrations[j]["consistency_id"] == demonstrations[i]["consistency_id"]] + for j in same_consistency_group_ids: + if j not in cur_pool: + weights[j] = 100 + + example_id = random.choices(candidates_ids, k=1, weights=weights)[0] + break + + new_label = asyncio.run( + predict_assignment( + args.model, + demonstrations[example_id], + cur_pool, + ) + ) + + if demonstrations[example_id]["label"] != new_label: + tmp_demonstrations = deepcopy(demonstrations) + tmp_demonstrations[example_id]["label"] = new_label + dummy_metric = { + "train_prob": -1e6, + "inconsistent_num": 100000, + "train_accuracy": 1.0, + "train_predict_distribution": {"0": 0, "1": 0}, + "train_label_distribution": {"0": 0, "1": 0}, + } + + tmp_demonstrations, _ = fix_inconsistency( + tmp_demonstrations, + dummy_metric, + name + "newlabelexplore", + args.alpha, + iter=iter, + K=10, + ) + + tmp_pool = { + k: v + for k, v in tmp_demonstrations.items() + if v["label"] is not None + } + pipeline = get_pipeline( + model=args.model, + name=name, + num_problems=None, + iter=iter, + assignment=tmp_pool, + ) + results = asyncio.run(pipeline.run()) + metric = results["evaluate"] + T = get_temperature( + flip_cnt, args.initial_T, args.final_T, args.decay, schedule=args.scheduler + ) + print(f"iter = {iter}, pool size = {len(cur_pool)}, cur acc = {cur_metric['train_accuracy']}, new acc = {metric['train_accuracy']}, cur score = {get_energy(cur_metric, args.alpha)}, new score = {get_energy(metric, args.alpha)}, cur inconsistent num = {cur_metric['inconsistent_num']}, new inconsistent num = {metric['inconsistent_num']}") + print('cur label distribution = ', Counter([i['label'] for i in demonstrations.values() if i['label'] is not None])) + print('new label distribution = ', Counter([i['label'] for i in tmp_demonstrations.values() if i['label'] is not None])) + + accept_prob = math.exp((get_energy(metric, args.alpha) - get_energy(cur_metric, args.alpha)) / T) + print("accept prob = ", accept_prob) + if random.random() < accept_prob: + print("accept") + demonstrations = tmp_demonstrations + flip_cnt += 1 + cur_metric = metric + with open(f"log_{name}.jsonl", "a") as f: + f.write(json.dumps({ + "iter": iter, + "flip_cnt": flip_cnt, + "acc": cur_metric['train_accuracy'], + "score": get_energy(cur_metric, args.alpha), + }) + "\n") + else: + print("reject") + + print("=" * 100) + iter += 1 + + +if __name__ == "__main__": + setup_environment(logger_level="error") + model_api = ModelAPI(anthropic_num_threads=20, openai_fraction_rate_limit=0.99) + args = get_args() + print("task: ", args.testbed) + random.seed(args.seed) + main(args) \ No newline at end of file diff --git a/src/experiments/ICM_tools.py b/src/experiments/ICM_tools.py new file mode 100644 index 0000000..d238b8f --- /dev/null +++ b/src/experiments/ICM_tools.py @@ -0,0 +1,238 @@ +import asyncio +import json +import random +from collections import Counter +from copy import deepcopy + +import numpy as np +from datasets import load_dataset + +from src.model_querying.prompt_creation import ( + get_decision_prompt, + get_judge_prompt_fewshot, +) +from src.model_querying.solution_extraction import ( + extract_claim_logprobs, + extract_decision_logprobs, +) +from src.pipeline.pipeline import Pipeline, PipelineConfig +from src.tools.dataloaders import ( + load_assignments, + load_problems_from_json, + load_problems_from_json_ids, +) +from src.tools.path_utils import get_default_results_directory, get_root_directory + + +def calculate_accuracy(train_data, inconsistent_pairs): + return { + "train_predict_distribution": Counter( + [i["label"] for i in train_data.values()] + ), + "train_label_distribution": Counter( + [i["vanilla_label"] for i in train_data.values()] + ), + "train_accuracy": np.mean( + [i["label"] == i["vanilla_label"] for i in train_data.values()] + ), + "train_prob": np.mean( + [ + i["score"] if i["label"] == 1 else -i["score"] + for i in train_data.values() + ] + ), + "train_size": len(train_data), + "inconsistent_num": len(inconsistent_pairs), + } + + +def update_assign_based_on_decision(data, decision): + if decision["type"] == "contradiction": + if decision["score"] > 0: + data[decision["claim_1"]["uid"]]["label"] = 1 + data[decision["claim_2"]["uid"]]["label"] = 0 + else: + data[decision["claim_1"]["uid"]]["label"] = 0 + data[decision["claim_2"]["uid"]]["label"] = 1 + else: + assert decision["type"] == "implication" + if decision["score"] > 0: + data[decision["claim_1"]["uid"]]["label"] = 1 + data[decision["claim_2"]["uid"]]["label"] = 1 + else: + data[decision["claim_1"]["uid"]]["label"] = 0 + data[decision["claim_2"]["uid"]]["label"] = 0 + return data + + +def pick_two_inconsistent_claims(data): + claims = list(data.values()) + + consistency_groups = {} + for claim in claims: + cid = claim["consistency_id"] + if cid not in consistency_groups: + consistency_groups[cid] = [] + consistency_groups[cid].append(claim) + + inconsistent_pairs = {} + for group in consistency_groups.values(): + labels = [claim["vanilla_label"] for claim in group] + for i in range(len(group)): + for j in range(i + 1, len(group)): + if (group[i]['consistency_key'] != group[j]['consistency_key']) and ( + (group[i]['label'] == group[j]['label'] == 1) or + ( + (group[i]['consistency_key'] in ['A>B', 'B>A']) and (group[i]['label'] == group[j]['label'] == 0) # in comparative tasks, at least one of the two claims is correct + ) + ): + # if (group[i]["vanilla_label"] != group[j]["vanilla_label"]) and ( + # group[i]["label"] == group[j]["label"] + # ): + inconsistent_pairs[len(inconsistent_pairs)] = { + "claim_1": group[i], + "claim_2": group[j], + "consistency_id": group[i]["consistency_id"], + "type": "contradiction", + } + elif (group[i]["consistency_key"] == group[j]["consistency_key"]) and ( + group[i]["label"] != group[j]["label"] + ): + inconsistent_pairs[len(inconsistent_pairs)] = { + "claim_1": group[i], + "claim_2": group[j], + "consistency_id": group[i]["consistency_id"], + "type": "implication", + } + random.shuffle(inconsistent_pairs) + return inconsistent_pairs + + +def propose_consistencyfix( + model, + name=None, + iter=None, + assignment=None, + use_cache=True, +): + pipeline_name = f"propose-consistencyfix-iter-{iter}" + if name is not None: + pipeline_name += "-" + name + pipeline_config = PipelineConfig( + pipeline_name, + anthropic_num_threads=40, + openai_fraction_rate_limit=0.99, + num_problems=None, + use_cache=use_cache, + ) + pipeline = Pipeline(pipeline_config) + + initial_assign = pipeline.add_load_data_step( + "get_assign", load_assignments, assignment + ) + + pick_claims = pipeline.add_transformation_step( + "pick_two_inconsistent_claims", + pick_two_inconsistent_claims, + dependencies=[initial_assign], + ) + + get_decision = pipeline.add_query_step( + "decisions", + model, + get_decision_prompt, + extract_decision_logprobs, + dependencies=[pick_claims], + logprobs=20, + max_tokens=1, + use_cache=use_cache, + ) + return pipeline + +def run_consistencyfix( + model, + name=None, + use_cache=True, + decision_id=None, + decision=None, + iter=None, + assignment=None, +): + pipeline_name = f"consistencyfix-iter-{iter}" + if decision_id is not None: + pipeline_name += f"-{decision_id}" + if name is not None: + pipeline_name += "-" + name + + pipeline_config = PipelineConfig( + pipeline_name, + anthropic_num_threads=40, + openai_fraction_rate_limit=0.99, + num_problems=None, + use_cache=use_cache, + ) + pipeline = Pipeline(pipeline_config) + + assert assignment is not None + initial_assign = pipeline.add_load_data_step( + "get_assign", load_assignments, assignment + ) + + pick_claims = pipeline.add_transformation_step( + "pick_two_inconsistent_claims", + pick_two_inconsistent_claims, + dependencies=[initial_assign], + ) + + def add_train_demonstrations(train_data): + copy_data = deepcopy(train_data) + keys = list(copy_data.keys()) + values = list(copy_data.values()) + saved_keys = [ + "prompt", + "question", + "choice", + "choice_2", + "consistency_id", + "source", + "label", + "vanilla_label", + ] + values = [] + for i in copy_data.values(): + values.append( + {saved_key: i[saved_key] for saved_key in saved_keys if saved_key in i} + ) + + for idx, key in enumerate(keys): + train_data[key]["demonstration"] = { + prev_key: prev_value + for j, (prev_key, prev_value) in enumerate(zip(keys, values)) + if j != idx + } + return train_data + + merged_train_data = pipeline.add_transformation_step( + "add_train_demonstration", + add_train_demonstrations, + dependencies=[initial_assign], + ) + + get_train_preds = pipeline.add_query_step( + "get_train_preds", + model, + get_judge_prompt_fewshot, + extract_claim_logprobs, + dependencies=[merged_train_data], + logprobs=20, + max_tokens=1, + use_cache=use_cache, + ) + + eval_preds = pipeline.add_eval_step( + "evaluate", + calculate_accuracy, + dependencies=[get_train_preds, pick_claims], + ) + + return pipeline \ No newline at end of file diff --git a/src/experiments/log_truthfulQA-llama70b-K3000-bc256_seed27565976-initialsize8-weighted50.0-decay0.99-initialT10-finalT0.01-schedulerlog.jsonl b/src/experiments/log_truthfulQA-llama70b-K3000-bc256_seed27565976-initialsize8-weighted50.0-decay0.99-initialT10-finalT0.01-schedulerlog.jsonl new file mode 100644 index 0000000..eb0f207 --- /dev/null +++ b/src/experiments/log_truthfulQA-llama70b-K3000-bc256_seed27565976-initialsize8-weighted50.0-decay0.99-initialT10-finalT0.01-schedulerlog.jsonl @@ -0,0 +1,6 @@ +{"iter": 2, "flip_cnt": 1, "acc": 0.7777777777777778, "score": 59.95838513901126} +{"iter": 4, "flip_cnt": 2, "acc": 0.8, "score": 62.33137680262533} +{"iter": 7, "flip_cnt": 3, "acc": 0.9090909090909091, "score": 71.59853190532465} +{"iter": 8, "flip_cnt": 4, "acc": 0.9166666666666666, "score": 79.43930320079279} +{"iter": 10, "flip_cnt": 5, "acc": 0.9230769230769231, "score": 82.68683171642135} +{"iter": 11, "flip_cnt": 6, "acc": 0.9285714285714286, "score": 86.60106027413124} diff --git a/src/experiments/plot.py b/src/experiments/plot.py new file mode 100644 index 0000000..f494b2b --- /dev/null +++ b/src/experiments/plot.py @@ -0,0 +1,24 @@ +import json +from matplotlib import pyplot as plt +import os + +for file in os.listdir("."): + if file.startswith("log_"): + print(file) + with open(file, "r") as f: + data = [json.loads(i) for i in f] + data = data[:60] + x = list(range(8, 8 + len(data))) + y_score = [i['score'] for i in data] + y_acc = [i['acc'] for i in data] + # plt.subplot(1, 2, 1) + plt.plot(x, y_score, label=f'Acc {max(y_acc):.2f}') + plt.xlabel("# Searched Claims") + plt.ylabel("Score") + # plt.subplot(1, 2, 2) + # plt.plot(x, y_acc) + # plt.xlabel("# Searched Claims") + # plt.ylabel("Accuracy") +plt.legend() +plt.tight_layout() +plt.savefig("log.png", dpi=500) \ No newline at end of file diff --git a/src/model_querying/__init__.py b/src/model_querying/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/model_querying/prompt_creation.py b/src/model_querying/prompt_creation.py new file mode 100644 index 0000000..c65b4d1 --- /dev/null +++ b/src/model_querying/prompt_creation.py @@ -0,0 +1,45 @@ +__all__ = ["get_apps_solution_prompt", "get_two_shot_prompt", "get_backdoor_prompt"] + +import json +import random + +from src.datatypes.enums import Language, PromptType +from src.tools.dataloaders import load_prompts +from src.tools.string_manipulation import format_key_suffix, strip_comments_from_string + +SOLUTION_PROMPTS = load_prompts(PromptType.SOLUTION) +RED_TEAM_PROMPTS = load_prompts(PromptType.RED_TEAM) +BLUE_TEAM_PROMPTS = load_prompts(PromptType.BLUE_TEAM) +EVAL_PROMPTS = load_prompts(PromptType.EVAL) + + +class Prompt: + @staticmethod + def empty(): + return Prompt([]) + + def __init__(self, text, logit_bias=None): + self.text = text + self.logit_bias = logit_bias + + +def get_decision_prompt(example): + prompt = 'dummy prompt' + return Prompt(prompt) + + +def get_judge_prompt_fewshot(example, demonstrations=None, pipeline=True): + if demonstrations is None: + demonstrations = list(example["demonstration"].values()) + prompt = "" + for i in demonstrations: + prompt += i['prompt'] + prompt += "True" if i["label"] else "False" + prompt += "\n\n" + + prompt += example['prompt'] + + if pipeline: + return Prompt(prompt) + else: + return prompt \ No newline at end of file diff --git a/src/model_querying/solution_extraction.py b/src/model_querying/solution_extraction.py new file mode 100644 index 0000000..8805f61 --- /dev/null +++ b/src/model_querying/solution_extraction.py @@ -0,0 +1,55 @@ +import json +import logging +import math +from copy import copy + +logger = logging.getLogger(__name__) + + +def get_yes_no(x): + x = x.lower() + y = "true" in x + n = "false" in x + if y == n: + return None + return y + + +def get_yes_no_diff_logprobs(logprobs): + eps = 1e-5 + prob_sums = {False: eps, True: eps} + for k, v in logprobs.items(): + o = get_yes_no(k) + if o is None: + continue + prob_sums[o] += math.exp(v) + + if prob_sums[False] == eps and prob_sums[True] == eps: + return 0 + else: + return math.log(prob_sums[True]) - math.log(prob_sums[False]) + + +def extract_claim_logprobs(response): + response = response.copy() + try: + logprobs = response["response"]["logprobs"][0] + response[f"score"] = get_yes_no_diff_logprobs(logprobs) + except Exception as e: + logger.info( + f"Problem {response['metadata']['uid']}: Error extracting judgment: {repr(e)}" + ) + response["score"] = 0 + return response + +def extract_decision_logprobs(response): + response = response.copy() + try: + logprobs = response["response"]["logprobs"][0] + response[f"score"] = get_yes_no_diff_logprobs(logprobs) + except Exception as e: + logger.info( + f"Problem {response['metadata']['uid']}: Error extracting decision: {repr(e)}" + ) + response["score"] = 0 + return response diff --git a/src/pipeline/README.md b/src/pipeline/README.md new file mode 100644 index 0000000..d371fbc --- /dev/null +++ b/src/pipeline/README.md @@ -0,0 +1,27 @@ +How to use the pipeline: +First, outline the graph you would like to execute, including the following: +* Data Loading +* Model queries +* Code Execution Eval +* Transformations +* Monitoring + +Next, convert each of the nodes in that graph into the corresponding helper function: +* add_load_data_step +* add_query_step +* add_code_evaluation_step +* add_transformation_step +* add_monitoring_step + +Each of these takes different parameters that you can see in the method signatures. The important ones to know are these: +LoadData takes either a data-loading function and a location, or it takes a dataset +Queries take a prompt function that they pass the incoming data into to create the associated prompt, and a parse function that they use to parse the LLM response +Code Evals take an executor function that executes all of the code in the Solution objects on the associated test cases. +Transforms take arbitrary functions that they apply to the data as a whole. +Monitoring steps take arbitrary monitoring steps. I may eventually enforce that all pipelines end in one of these because it's really what we care about. + +Finally, put the dependencies of each step into their dependencies parameter. This is how execution order is determined and how data flows between steps. If you rely on more than one step, the data will be passed to ordered args in the same order as the list of dependencies. + +You will also need to include a PipelineConfig parameter that contains metadata around how many concurrents to use and similar. + +Once you have a pipeline definition, call the pipeline.run() function on it to execute the graph. This method returns the Pipeline.Results object back, which holds the output of each step in a dictionary. diff --git a/src/pipeline/pipeline.py b/src/pipeline/pipeline.py new file mode 100644 index 0000000..d24feec --- /dev/null +++ b/src/pipeline/pipeline.py @@ -0,0 +1,314 @@ +__all__ = ["PipelineConfig", "Pipeline"] + +import asyncio +import logging +from collections import deque + +from tqdm.auto import tqdm + +from core.llm_api.llm import ModelAPI +from src.datatypes.enums import Language +from src.runners.query_model import QueryConfigBuilder, query_model +from src.tools.dataloaders import read_from_cache, save_to_cache +from src.tools.path_utils import get_root_directory + +logger = logging.getLogger(__name__) + + +def in_notebook(): + try: + from IPython import get_ipython + + if get_ipython() is None or "IPKernelApp" not in get_ipython().config: + return False + except ImportError: + return False + return True + + +class Task: + def __init__(self, name, func, use_cache, dependencies=[]): + self.name = name + self.func = func + self.use_cache = use_cache + self.index = None + self.dependencies = dependencies + self.dependents = [] + self.result = None + for dep in dependencies: + dep.dependents.append(self) + + async def execute(self, results): + if self.result is None: + dep_results = [results[dep.name] for dep in self.dependencies] + if asyncio.iscoroutinefunction(self.func): + self.result = await self.func( + *dep_results, use_cache=self.use_cache, index=self.index + ) + else: + self.result = self.func( + *dep_results, use_cache=self.use_cache, index=self.index + ) + return self.result + + +class PipelineConfig: + def __init__( + self, + name, + anthropic_num_threads=2, + openai_fraction_rate_limit=0.99, + use_cache=True, + language=Language.PYTHON, + num_problems=None, + problem_ids=None, + num_open_files=1000000, + organization="NYU_ORG", + print_prompt_and_response=False, + api_base=None, + ): + self.name = name + self.anthropic_num_threads = anthropic_num_threads + self.openai_fraction_rate_limit = openai_fraction_rate_limit + self.organization = organization + self.print_prompt_and_response = print_prompt_and_response + self.use_cache = use_cache + self.language = language + self.num_problems = num_problems + self.problem_ids = problem_ids + self.num_open_files = num_open_files + self.api_base = api_base + self.play_sound = in_notebook() + + +class Pipeline: + def __init__(self, config): + self.config = config + self.steps = [] + self.step_names = set() + self.results = {} + self.model_api = ModelAPI( + self.config.anthropic_num_threads, + self.config.openai_fraction_rate_limit, + self.config.organization, + self.config.print_prompt_and_response, + ) + self.file_sem = asyncio.BoundedSemaphore(self.config.num_open_files) + self.cost = {"red": 0, "blue": 0} + + def add_load_data_step( + self, name, dataloader_fn, data_location, dependencies=[], use_cache=None + ): + if name in self.step_names: + raise ValueError(f"Step name {name} already exists") + self.step_names.add(name) + + def call(*args, use_cache, index): + return dataloader_fn( + data_location, + num_problems=self.config.num_problems, + problem_ids=self.config.problem_ids, + ) + + task = Task(name, call, use_cache, dependencies) + self.steps.append(task) + return task + + def add_query_step( + self, + name, + model, + prompt_fn, + parse_fn, + dependencies=[], + use_cache=None, + temperature=None, + logprobs=None, + team=None, + max_tokens=4096, + bon=1, + ): + if name in self.step_names: + raise ValueError(f"Step name {name} already exists") + self.step_names.add(name) + + query_config_builder = ( + QueryConfigBuilder() + .with_model_to_test(model) + .with_prompt_fn(lambda x: prompt_fn(x)) + .with_parse_fn(lambda x: parse_fn(x)) + .with_num_problems(self.config.num_problems) + .with_max_tokens(max_tokens) + .with_temperature(temperature) + .with_logprobs(logprobs) + .with_bon(bon) + ) + + async def call(data, use_cache, index): + response_dict = await query_model( + self.model_api, + self.file_sem, + query_config_builder.with_experiment_name( + f"{self.config.name}/{index:02d}-{name}" + ) + .with_use_cache(use_cache) + .with_data(data) + .build(), + ) + self.add_cost_data(team, response_dict) + return response_dict + + step = Task(name, call, use_cache, dependencies) + self.steps.append(step) + return step + + def add_transformation_step( + self, + name, + transformation_fn, + dependencies=[], + use_cache=None, + strong_model=None, + weak_model=None, + read_cache=False, + ): + if name in self.step_names: + raise ValueError(f"Step name {name} already exists") + self.step_names.add(name) + + async def call(*args, use_cache, index): + incoming_problem_ids = set().union(*[arg.keys() for arg in args]) + if use_cache and read_cache: + logger.debug( + f"Reading from cache for transformation: {self.config.name}/{index:02d}-{name}/{strong_model}{'+' if strong_model and weak_model else ''}{weak_model}" + ) + data, cached_problem_ids = read_from_cache( + f"{self.config.name}/{index:02d}-{name}/{strong_model}{'+' if strong_model and weak_model else ''}{weak_model}" + ) + if incoming_problem_ids.issubset(set(cached_problem_ids)): + return {k: v for k, v in data.items() if k in incoming_problem_ids} + + if asyncio.iscoroutinefunction(transformation_fn): + output = await transformation_fn(*args) + else: + output = transformation_fn(*args) + + async with self.file_sem: + save_to_cache( + output, + f"{self.config.name}/{index:02d}-{name}/{strong_model}{'+' if strong_model and weak_model else ''}{weak_model}", + delete_existing=read_cache, + incoming_problem_ids=incoming_problem_ids, + ) + return output + + step = Task(name, call, use_cache, dependencies) + self.steps.append(step) + return step + + def add_eval_step( + self, + name, + eval_fn, + dependencies=[], + strong_model=None, + weak_model=None, + ): + if name in self.step_names: + raise ValueError(f"Step name {name} already exists") + self.step_names.add(name) + + async def call(*args, use_cache, index): + output = eval_fn(*args) + cache_obj = {"summary": output} + async with self.file_sem: + save_to_cache( + cache_obj, + f"{self.config.name}/{index:02d}-{name}/{strong_model}{'+' if strong_model and weak_model else ''}{weak_model}", + ) + return output + + step = Task(name, call, None, dependencies) + self.steps.append(step) + return step + + def topological_sort_tasks(self, tasks): + in_degree = {task: len(task.dependencies) for task in tasks} + + queue = deque([task for task in tasks if in_degree[task] == 0]) + sorted_tasks = [] + task_order = {task: i for i, task in enumerate(tasks)} + + while queue: + task = queue.popleft() + sorted_tasks.append(task) + for dependent in task.dependents: + in_degree[dependent] -= 1 + if in_degree[dependent] == 0: + queue.append(dependent) + queue = deque(sorted(queue, key=lambda t: task_order[t])) + + for i, task in enumerate(sorted_tasks): + task.index = i + return sorted_tasks + + def add_cost_data(self, team, response_dict): + cost = sum( + [response["response"]["cost"] for response in response_dict.values()] + ) + if team is not None: + if team not in self.cost: + self.cost[team] = 0 + self.cost[team] += cost + overall_team = team.split("_")[0] + if overall_team != team: + self.cost[overall_team] += cost + + def set_use_cache(self, tasks): + # This is called after tasks.sort, so we are guaranteed to process all + # dependencies before each task itself. + for task in tasks: + if not self.config.use_cache: + task.use_cache = False + continue + + if task.use_cache is None: + task.use_cache = True + + for dep in task.dependencies: + if not dep.use_cache: + task.use_cache = False + + def speak(self, message): + if self.config.play_sound: + from IPython.display import Javascript, display + + display( + Javascript( + f""" + if(window.speechSynthesis) {{ + var synth = window.speechSynthesis; + synth.speak(new window.SpeechSynthesisUtterance('{message}')); + }} + """ + ) + ) + + async def run(self): + steps = self.topological_sort_tasks(self.steps) + self.set_use_cache(steps) + for task in steps: + logger.info( + f"Starting step {task.index}: {task.name} - Using cache: {task.use_cache}" + ) + try: + self.results[task.name] = await task.execute(self.results) + except Exception as e: + logger.error(f"Error in step {task.index}: {task.name}") + logger.error(e) + self.speak("Pipeline failed sad face") + raise e + logger.info(f"Finished step {task.index}: {task.name}") + self.speak("Jobs done") + logger.info("Run complete!! Nice!! 🚀🚀") + return self.results diff --git a/src/runners/__init__.py b/src/runners/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/runners/evaluate_code.py b/src/runners/evaluate_code.py new file mode 100644 index 0000000..6c77c5d --- /dev/null +++ b/src/runners/evaluate_code.py @@ -0,0 +1,191 @@ +__all__ = [ + "EvalConfig", + "EvalConfigBuilder", + "evaluate_solutions", + "examine_solution", + "print_eval", +] + +import json +import os + +from src.code_evaluation.test_results import Solution + +import src.tools.path_utils as path_utils + +DEFAULT_RESULTS_DIR = path_utils.get_default_results_directory() + + +class EvalConfig: + def __init__( + self, + experiment_name, + model_to_test, + executor_fn, + language, + use_cache=True, + data=None, + dataloader_fn=None, + data_location=None, + ): + self.experiment_name = experiment_name + self.model_to_test = model_to_test + if dataloader_fn is not None: + self.data = dataloader_fn(data_location) + elif isinstance(data, str): + with open(json.load(data), "r") as f: + self.data = json.load(f) + else: + self.data = data + self.executor_fn = executor_fn + self.language = language + self.use_cache = use_cache + + def __str__(self): + pass + + def __repr__(self): + return self.__str__() + + +class EvalConfigBuilder: + def __init__(self): + self.experiment_name = None + self.model_to_test = None + self.executor_fn = None + self.language = None + self.data = None + self.use_cache = None + self.dataloader_fn = None + self.data_location = None + + def with_experiment_name(self, experiment_name): + self.experiment_name = experiment_name + return self + + def with_executor_fn(self, executor_fn): + self.executor_fn = executor_fn + return self + + def with_language(self, language): + self.language = language + return self + + def with_model_to_test(self, model_to_test): + self.model_to_test = model_to_test + return self + + def with_use_cache(self, use_cache): + self.use_cache = use_cache + return self + + def with_data(self, data): + self.data = data + return self + + def with_dataloader_fn(self, dataloader_fn): + self.dataloader_fn = dataloader_fn + return self + + def with_data_location(self, data_location): + self.data_location = data_location + return self + + def build(self): + assert self.experiment_name is not None, "Experiment name must be set" + assert self.executor_fn is not None, "Executor function must be set" + assert self.language is not None, "Language must be set" + assert (self.data is not None) or ( + self.dataloader_fn is not None and self.data_location is not None + ), "Data must be set" + return EvalConfig( + self.experiment_name, + self.model_to_test, + self.executor_fn, + self.language, + self.use_cache, + self.data, + self.dataloader_fn, + self.data_location, + ) + + +def evaluate_solutions(eval_config): + if isinstance(eval_config.data, list): + eval_config.data = { + index: response[0] for index, response in enumerate(eval_config.data) + } + + eval_data = [] + for problem_id, response in eval_config.data.items(): + if response == {}: + item = Solution.no_solution(problem_id) + else: + item = Solution.from_response(problem_id, response, eval_config.language) + eval_data.append(item) + + results_dir = DEFAULT_RESULTS_DIR + save_dir = results_dir / eval_config.experiment_name / eval_config.model_to_test + os.makedirs(save_dir, exist_ok=True) + + # load caching results + if eval_config.use_cache and save_dir is not None: + for idx, solution in enumerate(eval_data): + if solution.correct is not None: # already have runtime eval results + continue + save_path = f"{save_dir}/{solution.question_id}.json" + if os.path.exists(save_path): + eval_data[idx] = Solution.from_cache_file(save_path) + + executor_results = eval_config.executor_fn(eval_data) + + for problem_id, problem_data in eval_config.data.items(): + if problem_id not in executor_results: + executor_results[problem_id] = {} + for field, value in problem_data.items(): + if field not in executor_results[problem_id]: + executor_results[problem_id][field] = value + + # save caching results + if save_dir is not None: + for question_id, solution in executor_results.items(): + save_path = f"{save_dir}/{question_id}.json" + with open(save_path, "w") as f: + json.dump(solution, f, indent=2) + + return executor_results + + +def examine_solution(solutions, index): + print( + f"Difficulty:\n{solutions[index][0]['metadata']['difficulty']}\n----------------------------" + ) + print(solutions[index][0]["metadata"]["question"]) + print(solutions[index][0]["solution"]) + print("test cases:") + for test in solutions[index][0]["metadata"]["test_cases"]: + print(f"{test['input']}{test['output']}") + + +def print_eval(results): + correct_tests = 0 + total_tests = 0 + correct_problems = 0 + total_problems = len(results.keys()) + for problem_id, problem_result in results.items(): + correct_tests_local = sum( + [ + 1 + for test_result in problem_result["test_cases"] + if test_result["correct"] + ] + ) + total_tests_local = len(problem_result["test_cases"]) + # print(f"Problem ID: {problem_id}\nTest Results:\n\tCorrect: {correct_tests_local}\n\tTotal: {total_tests_local}\n\tAccuracy: {(correct_tests_local * 100.)/total_tests_local}\nOverall Correct: {problem_result.correct}") + correct_tests += correct_tests_local + total_tests += total_tests_local + if problem_result["correct"]: + correct_problems += 1 + print( + f"Number of Problems: {total_problems}\nNumber Correct: {correct_problems}\nAccuracy: {(correct_problems * 100.)/total_problems}\nNumber of Tests: {total_tests}\nNumber Correct: {correct_tests}\nAccuracy: {(correct_tests * 100.)/total_tests}" + ) diff --git a/src/runners/query_model.py b/src/runners/query_model.py new file mode 100644 index 0000000..1ec8118 --- /dev/null +++ b/src/runners/query_model.py @@ -0,0 +1,276 @@ +__all__ = ["QueryConfig", "QueryConfigBuilder", "query_model"] + +import asyncio +import os + +import tiktoken + +import src.tools.path_utils as path_utils + +ROOT_DIR = path_utils.get_root_directory() +DEFAULT_RESULTS_DIR = path_utils.get_default_results_directory() + + +class QueryConfig: + def __init__( + self, + experiment_name, + model_to_test, + dataloader_fn, + data_location, + data, + prompt_fn, + parse_fn=None, + use_cache=False, + num_problems=None, + max_tokens=4096, + results_dir=None, + temperature=None, + logprobs=None, + bon=1, + ): + assert isinstance(model_to_test, str) + self.experiment_name = experiment_name + self.model_to_test = model_to_test + self.dataloader_fn = dataloader_fn + self.data_location = data_location + self.data = data + self.prompt_fn = prompt_fn + self.use_cache = use_cache + self.parse_fn = parse_fn + self.num_problems = num_problems + self.max_tokens = max_tokens + self.results_dir = results_dir + self.temperature = temperature if temperature is not None else 0.0 + self.logprobs = logprobs + self.bon = bon + + def get_data(self): + assert self.data is not None + return self.data + + def __str__(self): + return ( + f"QueryConfig(" + f"experiment_name={self.experiment_name}, " + f"model_to_test={self.model_to_test}, " + f"dataloader_fn={self.dataloader_fn}, " + f"data_location={self.data_location}, " + f"data={self.data}, " + f"prompt_fn={self.prompt_fn}, " + f"use_cache={self.use_cache}, " + f"num_problems={self.num_problems}, " + f"max_tokens={self.max_tokens}, " + f"results_dir={self.results_dir}, " + f"temperature={self.temperature}, " + f"logprobs={self.logprobs}" + ) + + def __repr__(self): + return self.__str__() + + +class QueryConfigBuilder: + def __init__(self): + self.experiment_name = None + self.model_to_test = None + self.dataloader_fn = None + self.data_location = None + self.data = None + self.prompt_fn = None + self.parse_fn = None + self.use_cache = False + self.num_problems = None + self.max_tokens = 4096 + self.results_dir = None + self.temperature = 0.0 + self.logprobs = None + self.bon = 1 + + def with_experiment_name(self, experiment_name): + self.experiment_name = experiment_name + return self + + def with_bon(self, bon): + self.bon = bon + return self + + def with_model_to_test(self, model_to_test): + assert isinstance(model_to_test, str) + self.model_to_test = model_to_test + return self + + def with_dataloader_fn(self, dataloader_fn): + self.dataloader_fn = dataloader_fn + return self + + def with_data_location(self, data_location): + self.data_location = data_location + return self + + def with_data(self, data): + self.data = data + return self + + def with_prompt_fn(self, prompt_fn): + self.prompt_fn = prompt_fn + return self + + def with_parse_fn(self, parse_fn): + self.parse_fn = parse_fn + return self + + def with_use_cache(self, use_cache): + self.use_cache = use_cache + return self + + def with_num_problems(self, num_problems): + self.num_problems = num_problems + return self + + def with_max_tokens(self, max_tokens): + self.max_tokens = max_tokens + return self + + def with_results_dir(self, results_dir): + self.results_dir = results_dir + return self + + def with_temperature(self, temperature): + self.temperature = temperature + return self + + def with_logprobs(self, logprobs): + self.logprobs = logprobs + if logprobs is not None: + assert "claude" not in self.model_to_test + return self + + def build(self): + assert self.experiment_name is not None, "Experiment name must be set" + assert self.model_to_test is not None, "Model to test must be set" + assert self.prompt_fn is not None, "Prompt function must be set" + assert (self.data is not None) or ( + self.dataloader_fn is not None and self.data_location is not None + ), "Data must be set" + assert (self.data is None) or ( + self.dataloader_fn is None and self.data_location is None + ), "Data and dataloader_fn/data_location cannot both be set" + return QueryConfig( + self.experiment_name, + self.model_to_test, + self.dataloader_fn, + self.data_location, + self.data, + self.prompt_fn, + self.parse_fn, + self.use_cache, + self.num_problems, + self.max_tokens, + self.results_dir, + self.temperature, + self.logprobs, + self.bon, + ) + + +def _get_prompts(problems, prompt_fn): + prompts = {} + for problem_id, problem in problems.items(): + prompt = prompt_fn(problem) + if prompt.text: + prompts[problem_id] = prompt + return prompts + + +def get_save_dir(query_config): + results_dir = ( + ROOT_DIR / query_config.results_dir + if query_config.results_dir is not None + else DEFAULT_RESULTS_DIR + ) + save_dir = results_dir / query_config.experiment_name / query_config.model_to_test + os.makedirs(save_dir, exist_ok=True) + return save_dir + + +def move_data_into_metadata(data): + for data_id, value in data.items(): + filtered_val = { + k: v + for k, v in value.items() + if k not in ("metadata", "prompt", "response") + } + metadata = value.get("metadata", {}) + new_metadata = metadata | filtered_val + data[data_id]["metadata"] = new_metadata + + +def format_response(data, model_responses_map, query_config): + model_responses_flattened = {} + for data_id, response in model_responses_map.items(): + if query_config.bon == 1: + model_responses_flattened[f"{data_id}"] = data[data_id] | response[0] + continue + for resp_id, resp in enumerate(response): + model_responses_flattened[f"{data_id}-{resp_id}"] = data[data_id] | resp + return model_responses_flattened + + +def tokenize_logit_bias(logit_bias, model): + tokenizer = tiktoken.encoding_for_model(model) + tokenized_bias = {} + for k, v in logit_bias.items(): + tokenized = tokenizer.encode(k) + assert len(tokenized) == 1, f"Tokenized bias key {k} is not a single token" + tokenized_bias[tokenized[0]] = v + return tokenized_bias + + +async def query_model(model_api, file_sem, query_config): + data = query_config.get_data() + prompts = _get_prompts(data, query_config.prompt_fn) + save_dir = get_save_dir(query_config) + + move_data_into_metadata(data) + + model_requests = [ + model_api( + query_config.model_to_test, + prompts[data_id].text, + max_tokens=query_config.max_tokens, + temperature=query_config.temperature, + n=query_config.bon, + top_p=1.0, + logprobs=query_config.logprobs, + use_cache=query_config.use_cache, + metadata=data[data_id]["metadata"], + parse_fn=query_config.parse_fn, + save_path=f"{save_dir}/{data_id}.json", + file_sem=file_sem, + **( + { + "logit_bias": tokenize_logit_bias( + prompts[data_id].logit_bias, query_config.model_to_test + ) + } + if prompts[data_id].logit_bias is not None + else {} + ), + ) + for data_id in prompts.keys() + ] + + model_responses = await asyncio.gather(*model_requests) + + # pass through data that wasn't modified by the request + model_responses_map = { + data_id: response for data_id, response in zip(prompts.keys(), model_responses) + } + for key in data.keys(): + if key not in prompts: + model_responses_map[key] = [data[key]] + + response = format_response(data, model_responses_map, query_config) + + return response diff --git a/src/tools/__init__.py b/src/tools/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/tools/dataloaders.py b/src/tools/dataloaders.py new file mode 100644 index 0000000..bd74e9c --- /dev/null +++ b/src/tools/dataloaders.py @@ -0,0 +1,264 @@ +__all__ = ["load_prompts", "load_problems", "load_problems_from_json", "load_solutions"] + +import json +import logging +import os + +from .path_utils import get_default_results_directory, get_root_directory + +logger = logging.getLogger(__name__) + +ROOT_DIR = get_root_directory() +DATA_DIR = ROOT_DIR / "data" / "APPS" +PROMPTS_DIR = ROOT_DIR / "src" / "prompts" + + +def get_data_dir(): + return DATA_DIR + + +def load_prompts(prompt_type): + files = [f for f in (PROMPTS_DIR / prompt_type.value).glob("*") if f.is_file()] + prompts = {} + for file in files: + with file.open("r") as f: + prompts[file.name] = f.read() + return prompts + + +def load_problem_subset(subset, require_solutions=False, problem_ids=None): + def load_problems(dir, num_problems=None): + if problem_ids: + problem_dirs = problem_ids + else: + problem_dirs = os.listdir(dir) + problems = {} + added = 0 + for problem_dir in problem_dirs: + problem_path = dir / problem_dir + problem = {} + with (problem_path / "metadata.json").open("r") as f: + problem["metadata"] = json.load(f) + if ( + subset != "ALL" + and problem["metadata"]["difficulty"].lower() != subset.lower() + ): + continue + + if require_solutions and not (problem_path / "solutions.json").exists(): + logger.debug( + f"Skipping problem {problem_dir} because it does not have solutions" + ) + continue + + with (problem_path / "question.txt").open("r") as f: + problem["question"] = f.read() + + problem["uid"] = problem_dir + problems[problem_dir] = problem + added += 1 + if added >= num_problems: + break + + return problems + + return load_problems + + +def load_problems(dir, num_problems=None): + return load_problem_subset("ALL")(dir, num_problems) + + +def load_problems_from_json(path, num_problems=None, problem_ids=None): + problems = {} + try: + with open(path) as f: + data = json.load(f) + except Exception as e: + print('read data error: ', e) + data = path + if num_problems is not None: + data = data[:num_problems] + + for i, item in enumerate(data): + item["uid"] = i + if 'vanilla_label' not in item: + item["vanilla_label"] = item["label"] + problems[f"{i}"] = item + return problems + + +def load_problems_from_json_ids(path, num_problems=None, problem_ids=None): + problems = {} + try: + with open(path) as f: + data = json.load(f) + except: + data = path + + if problem_ids is not None: + data = [data[i] for i in problem_ids] + + for i, item in enumerate(data): + item["uid"] = i + if 'vanilla_label' not in item: + item["vanilla_label"] = item["label"] + # acc.append(item['label'] == item['vanilla_label']) + problems[f"{i}"] = item + + return problems + + +def load_assignments(path, num_problems=None, problem_ids=None): + return path + + +def load_solutions(dir, num_problems=None): + solutions = {} + files = dir.glob("*") + files = [f for f in files if f.name != "incoming_problem_ids.json"] + if num_problems is not None: + files = list(files)[:num_problems] + + for file in files: + with file.open("r") as f: + solution = json.load(f) + # Assume 1 solution per file + if isinstance(solution, list): + solutions[file.stem] = solution[0] + else: + solutions[file.stem] = solution + return solutions + + +def load_multiple_solutions(dir, num_problems=None, problem_ids=None): + solutions = {} + files = dir.glob("*") + files = [f for f in files if f.name != "incoming_problem_ids.json"] + + for file in files: + with file.open("r") as f: + solution = json.load(f) + if "metadata" in solution: + solution.pop("metadata") + if "demonstration" in solution: + solution.pop("demonstration") + solutions[file.stem] = solution + return solutions + +def load_multiple_solutions_w2s(dir, num_problems=None, problem_ids=None): + solutions = {} + files = dir.glob("*") + files = [f for f in files if f.name != "incoming_problem_ids.json"] + + for file in files: + with file.open("r") as f: + solution = json.load(f) + metadata = solution[0]['metadata'] + if "demonstration" in metadata: + metadata.pop("demonstration") + metadata['label'] = solution[0]['score'] > 0 + solutions[file.stem] = metadata + return solutions + + +def save_to_cache(data, name, delete_existing=False, incoming_problem_ids=None): + dir = get_default_results_directory() / name + + # Delete all files in the directory first + if delete_existing and os.path.exists(dir): + for file in os.listdir(dir): + file_path = os.path.join(dir, file) + if os.path.isfile(file_path): + os.unlink(file_path) + + os.makedirs(dir, exist_ok=True) + for k, v in data.items(): + if isinstance(v, list): + to_write = [ + { + key: value + for key, value in item.items() + if key not in ["prompt", "response"] + } + for item in v + ] + else: + to_write = { + key: value + for key, value in v.items() + if key not in ["prompt", "response"] + } + with open(dir / f"{k}.json", "w") as f: + json.dump(to_write, f, indent=4) + + if incoming_problem_ids: + with open(dir / "incoming_problem_ids.json", "w") as f: + json.dump({"problem_ids": list(incoming_problem_ids)}, f, indent=4) + + +def read_from_cache(name): + dir = get_default_results_directory() / name + data = {} + incoming_problem_ids = [] + + for file in dir.glob("*.json"): + if file.name == "incoming_problem_ids.json": + with file.open("r") as f: + incoming_problem_ids = json.load(f).get("problem_ids", []) + else: + with file.open("r") as f: + value = json.load(f) + if not value.get("metadata"): + value["metadata"] = {k: v for k, v in value.items()} + data[file.stem] = value + + return data, incoming_problem_ids + + +def load_ground_truth_solutions(problem_ids): + output = {} + for problem_id in problem_ids: + with open(get_data_dir() / "test" / problem_id / "solutions.json", "r") as f: + solutions = json.load(f) + cleaned_solutions = [] + for solution in solutions: + # Remove unwanted lines from the solution + cleaned_solution = [] + for line in solution.split("\n"): + if ( + not line.strip().startswith("#!") + and " input=" not in line + and "sys.stdin" not in line + ): + cleaned_solution.append(line) + cleaned_solutions.append("\n".join(cleaned_solution).strip()) + output[problem_id] = cleaned_solutions + return output + + +def load_test_case(problem_id): + problem_id = problem_id.split("-")[0] + with open(get_data_dir() / "test" / problem_id / "input_output.json", "r") as f: + data = json.load(f) + return [ + {"input": i, "output": o} for (i, o) in zip(data["inputs"], data["outputs"]) + ] + + +def load_test_cases(problem_ids): + output = {} + for problem_id in problem_ids: + output[problem_id] = load_test_case(problem_id) + return output + + +loaded_test_cases = {} + + +def get_test_cases_for_single_problem(problem_id): + global loaded_test_cases + if problem_id not in loaded_test_cases: + loaded_test_cases[problem_id] = load_test_case(problem_id) + + return loaded_test_cases[problem_id] diff --git a/src/tools/path_utils.py b/src/tools/path_utils.py new file mode 100644 index 0000000..cd08b7b --- /dev/null +++ b/src/tools/path_utils.py @@ -0,0 +1,11 @@ +__all__ = ["get_root_directory", "get_default_results_directory"] + +from pathlib import Path + + +def get_root_directory(): + return Path(__file__).parent.parent.parent + + +def get_default_results_directory(): + return get_root_directory() / "results" diff --git a/src/tools/printer.py b/src/tools/printer.py new file mode 100644 index 0000000..c767db9 --- /dev/null +++ b/src/tools/printer.py @@ -0,0 +1,134 @@ +import json +import os +import subprocess +from pathlib import Path + +from anytree import Node, RenderTree +from anytree.exporter import DotExporter + +from src.tools.path_utils import get_default_results_directory + + +def print_experiment_log(experiment_name, strong_model, weak_model, problem_number): + results_dir = get_default_results_directory() + experiment_dir = results_dir / experiment_name + + # Get all step directories + step_dirs = [d for d in experiment_dir.iterdir() if d.is_dir()] + + # Sort step directories by step number and exclude "merged_results" + step_dirs = [d for d in step_dirs if d.name != "merged_results"] + step_dirs.sort(key=lambda x: int(x.name.split("-")[0])) + + for step_dir in step_dirs: + # Check for both strong and weak model directories + for model in [strong_model, weak_model, f"{strong_model}+{weak_model}"]: + model_dir = step_dir / model + if not model_dir.exists(): + continue + + ignore_keys = ["metadata", "prompt", "response"] + if model == f"{strong_model}+{weak_model}": + ignore_keys.extend(["question", "test_cases", "uid"]) + + # Find matching problem files + problem_files = list(model_dir.glob(f"{problem_number}*.json")) + + for problem_file in problem_files: + with open(problem_file, "r") as f: + data = json.load(f) + + print(f"Step: {step_dir.name}") + print(f"Model: {model}") + print(f"Problem: {problem_file.stem}") + if not isinstance(data, list): + data = [data] + + print("\nPrompt:") + prompt_array = data[0].get("prompt") + if prompt_array is None: + print("No prompt available") + else: + for text in prompt_array: + print(f"Role: {text['role']}") + print(f"Content: {text['content']}") + + for response in data: + print("\nResponse:") + print( + response.get("response", {}).get( + "completion", "No response available" + ) + ) + print("\nOther Fields:") + for key, value in response.items(): + if key not in ignore_keys: + print(f"{key}: {value}") + print("\n" + "=" * 50 + "\n") + + +def show_pipeline_graph(pipeline): + import matplotlib.pyplot as plt + import networkx as nx + + # Create a directed graph + G = nx.DiGraph() + + # Add nodes and edges + for task in pipeline.steps: + G.add_node(task.name) + for dep in task.dependencies: + G.add_edge(dep.name, task.name) + + # Print the graph structure + print("Pipeline Dependency Graph:") + for node in nx.topological_sort(G): + predecessors = list(G.predecessors(node)) + successors = list(G.successors(node)) + print(f"{node}:") + if predecessors: + print(f" Parents: {', '.join(predecessors)}") + if successors: + print(f" Children: {', '.join(successors)}") + + # Generate a DOT file for visualization + output_dir = get_default_results_directory() / pipeline.config.name + output_dir.mkdir(parents=True, exist_ok=True) + dot_file = output_dir / "pipeline_graph.dot" + png_file = output_dir / "pipeline_graph.png" + + nx.drawing.nx_pydot.write_dot(G, str(dot_file)) + print(f"DOT file generated at: {dot_file}") + + # Generate PNG file using Graphviz + try: + subprocess.run(["dot", "-Tpng", str(dot_file), "-o", str(png_file)], check=True) + print(f"PNG file generated at: {png_file}") + except subprocess.CalledProcessError: + print( + "Error: Failed to generate PNG. Make sure Graphviz is installed and accessible in your PATH." + ) + except FileNotFoundError: + print( + "Error: Graphviz not found. Please install Graphviz to generate PNG files." + ) + + # Optionally, you can also use matplotlib to visualize the graph + plt.figure(figsize=(12, 8)) + pos = nx.spring_layout(G) + nx.draw( + G, + pos, + with_labels=True, + node_color="lightblue", + node_size=2000, + font_size=8, + arrows=True, + ) + plt.title("Pipeline Dependency Graph") + plt.axis("off") + plt.tight_layout() + plt.savefig(str(output_dir / "pipeline_graph_matplotlib.png")) + print( + f"Matplotlib graph generated at: {output_dir / 'pipeline_graph_matplotlib.png'}" + ) diff --git a/src/tools/string_manipulation.py b/src/tools/string_manipulation.py new file mode 100644 index 0000000..b4ebfd3 --- /dev/null +++ b/src/tools/string_manipulation.py @@ -0,0 +1,62 @@ +import re + + +def format_key_suffix(key_suffix): + if key_suffix: + if key_suffix[0] != "_": + key_suffix = f"_{key_suffix}" + else: + key_suffix = "" + return key_suffix + + +COMMENTS_REGEX = r""" +^ # Begin of line. +(?: + # A) Capturing group n°1: Full-line comment followed by empty lines. + ( + [ \t]* # Optional spaces or tabs. + \#[^\r\n]*\r?\n # The comment and the new line. + (?:[ \t]*\r?\n)* # Optional empty lines (perhaps with spaces/tabs). + ) +| + # B) Statement and optional comment at the end. + (?: + ( # Capturing group n°2 : The statement + (?: + # Multi-line strings with \"\"\" or '''. + # Capturing group n°3 : The triple quotes. + (['\"]{3})[\s\S]*?\3 + | + # Double-quoted string "It's ok". + \"(?: \\. | [^\"] )*\" + | + # Single-quoted string 'I\'ll say "Hello!"'. + '(?: \\. | [^'] )*' + | + # Any chars, except spaces, hashtag, quotes and new lines. + [^ \t#\"'\r\n]+ + | + # Horizontal spaces, but not followed by a comment, because + # we want the spaces in front of the comment to be matched + # together with the optional comment we want to get rid of. + [ \t]+(?![ \t]*\#) + )+ + ) + # Capturing group n°4: An optional comment at the end of a statement. + ( + [ \t]*\#[^\r\n]* + )? + )+ +) +""" + + +def strip_comments_from_string(string): + return re.sub( + COMMENTS_REGEX, + "\\2", + string, + 0, + re.MULTILINE | re.VERBOSE | re.UNICODE, + )