From ee596f00be07c19baa30db10a15facaaf1842b2c Mon Sep 17 00:00:00 2001 From: andsonder Date: Mon, 11 Nov 2024 20:35:44 +0800 Subject: [PATCH 1/3] [Doc] polish --- .../02_preprocess_before_scheduler.md | 245 +++++++++++------- ...c9c37aeb1ffa62a12e7babf3500f137ad1f6c0.png | Bin 0 -> 151291 bytes 2 files changed, 158 insertions(+), 87 deletions(-) create mode 100644 docs/16_vllm_source_code/images/21be763ab15d90c836f0312795c9c37aeb1ffa62a12e7babf3500f137ad1f6c0.png diff --git a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md index d14feab..a3c3cac 100644 --- a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md +++ b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md @@ -53,9 +53,11 @@ outputs = llm.generate(prompts, sampling_params) 上面这行代码简单地调用了 `generate()` 方法,但在内部却有一系列复杂的步骤。首先,prompts 是你提供的输入文本,sampling_params 控制模型生成文本时的行为,比如温度(temperature)和采样概率(top_p)。接下来,`generate()` 方法会逐步处理这些输入,首先将 prompts 转换为可以理解的格式,然后调用 LLM 引擎来执行推理任务。 +![picture 0](images/21be763ab15d90c836f0312795c9c37aeb1ffa62a12e7babf3500f137ad1f6c0.png) + ### 2.1 输入的解析与封装 -在 `generate()` 方法内部,第一步是处理用户提供的 prompts。prompts 的格式可能有多种:它可以是单个字符串(即一个 prompt),也可以是一个包含多个字符串的列表(多个 prompts)。此外,用户还可以选择直接传入 token ids,而不是文本。为了处理这种多样化的输入,`generate()` 会根据不同情况来处理输入,确保所有的输入最终都转化为统一的格式。 +在 `generate()` 方法内部,第一步是处理用户提供的 prompts。prompts 的格式可能有多种:它可以是单个字符串(即一个 prompt),也可以是一个包含多个字符串的列表(多个 prompts)。此外,用户还可以选择直接传入 `token ids`,而不是文本。为了处理这种多样化的输入,`generate()` 会根据不同情况来处理输入,确保所有的输入最终都转化为统一的格式。 ```python parsed_prompts = self._convert_v1_inputs( @@ -64,13 +66,14 @@ parsed_prompts = self._convert_v1_inputs( ) ``` -在这里,`_convert_v1_inputs()` 方法会将 prompts 转换为 TextPrompt 或 TokensPrompt 对象。这一步的作用是保证后续的处理统一使用标准化的数据格式。 +在这里,`_convert_v1_inputs()` 方法会将 prompts 转换为 TextPrompt 或 TokensPrompt 对象。这一步的作用是保证后续的处理统一使用标准化的数据格式。 parsed_prompts 的类型是 `List[PromptType]`。 `PromptType` 可以直接理解为一个字典,它包含了 prompt 的文本、token ids 等信息。 + ### 2.2 任务的验证与创建 -在将输入解析为标准格式之后,`generate()` 方法会调用 `_validate_and_add_requests()` 方法来验证并添加推理请求。这个过程非常关键,因为它将用户的输入转化为实际的推理任务,并且确保每个任务的参数和状态都是有效的。 +在将输入解析为标准格式之后,`generate()` 方法会调用 `_validate_and_add_requests()` 方法来验证并添加推理请求。 -在 `_validate_and_add_requests()` 方法内部,系统会为每一个 prompt 创建一个请求对象,并将这些请求传递给 LLM 引擎。在这个过程中,系统会检查每个请求的参数,确保它们与模型的要求相符。比如,如果用户提供了多个 prompts,那么相应的采样参数也需要是多个,且数量必须与 prompts 一一对应。如果两者不匹配,系统会抛出错误,提示用户调整输入。 +在 `_validate_and_add_requests()` 方法内部,系统会为每一个 prompt 创建一个请求对象,并将这些请求传递给 LLM engine。在这个过程中,系统会检查每个请求的参数,确保它们与模型的要求相符。比如,如果用户提供了多个 prompts,那么相应的采样参数也需要是多个,且数量必须与 prompts 一一对应。如果两者不匹配,系统会抛出错误,提示用户调整输入。 接下来,`_validate_and_add_requests()` 会调用 `_add_request()` 方法,真正将每个请求添加到引擎中。每个请求都会被分配一个唯一的 request_id,这使得系统能够跟踪每个任务的执行情况。 @@ -94,11 +97,11 @@ def _add_request( ) ``` -`_add_request()` 的作用是将封装好的 prompt 和 params(包括用户的采样参数)添加到 LLM 引擎中。在这里,request_id 确保每个任务都有独立的标识符,方便后续的调度和管理。 +`_add_request()` 的作用是将封装好的 prompt 和 params(包括用户的采样参数)添加到 LLM 引擎中。 ### 2.3 引擎执行与结果返回 -当所有的请求都添加完毕后,系统会调用 _run_engine() 方法,开始实际的推理任务。这个方法通过 LLM 引擎逐步执行每个请求,并不断检查任务的状态,直到所有的任务都执行完毕。 +当所有的请求都添加完毕后,系统会调用 `_run_engine()` 方法,开始实际的推理任务。这个方法通过 LLM 引擎逐步执行每个请求,并不断检查任务的状态,直到所有的任务都执行完毕。 ```python outputs = self._run_engine(use_tqdm=use_tqdm) @@ -106,11 +109,68 @@ outputs = self._run_engine(use_tqdm=use_tqdm) 在 `_run_engine()` 中,系统会通过引擎的 `step()` 方法来逐步处理请求。每一步都会检查是否有任务已经完成,并将完成的任务结果添加到输出列表中。 +```python +def _run_engine( + self, *, use_tqdm: bool +) -> List[Union[RequestOutput, EmbeddingRequestOutput]]: + # Initialize tqdm. + if use_tqdm: + num_requests = self.llm_engine.get_num_unfinished_requests() + pbar = tqdm( + total=num_requests, + desc="Processed prompts", + dynamic_ncols=True, + postfix=(f"est. speed input: {0:.2f} toks/s, " + f"output: {0:.2f} toks/s"), + ) + + # Run the engine. + outputs: List[Union[RequestOutput, EmbeddingRequestOutput]] = [] + total_in_toks = 0 + total_out_toks = 0 + while self.llm_engine.has_unfinished_requests(): + step_outputs = self.llm_engine.step() + for output in step_outputs: + if output.finished: + outputs.append(output) + if use_tqdm: + if isinstance(output, RequestOutput): + # 在处理过程中,更新进度条并计算输入和输出的token速度。 + assert output.prompt_token_ids is not None + total_in_toks += len(output.prompt_token_ids) + in_spd = total_in_toks / pbar.format_dict["elapsed"] + total_out_toks += sum( + len(stp.token_ids) for stp in output.outputs) + out_spd = (total_out_toks / + pbar.format_dict["elapsed"]) + pbar.postfix = ( + f"est. speed input: {in_spd:.2f} toks/s, " + f"output: {out_spd:.2f} toks/s") + pbar.update(1) + + if use_tqdm: + pbar.close() + # Sort the outputs by request ID. + # This is necessary because some requests may be finished earlier than + # its previous requests. + return sorted(outputs, key=lambda x: int(x.request_id)) +``` + +可以看到,`_run_engine()` 方法会不断调用引擎的 `step()` 方法,直到所有的请求都完成。在每一步中,系统会检查是否有任务已经完成,如果有,就将结果添加到输出列表中。最后,系统会返回所有的输出结果。 + +:::tip + +我们可以注意到,在处理过程中,系统会不断更新进度条,并计算输入和输出的 token 速度。如果我们想要自己添加一些额外的处理逻辑,可以在这里进行扩展。 + +::: + ## 3. 输入数据的预处理 -在前一部分中,我们讨论了 `llm_engine` 中 `add_request` 方法的结构和功能,具体描述了如何添加请求到引擎的调度池中,以及如何将请求与相关的调度器、执行器配合处理。在此基础上,接下来我们将深入分析 `LLMEngine` 的请求处理流程。通过 `add_request` 方法接收到的请求会经过一系列预处理、调度、执行和输出处理步骤,确保请求能够高效地在分布式环境下完成推理任务。 +在前一部分中,我们讨论了 `LLM` 类中 `add_request` 方法的结构和功能,我们可以注意到,其中的关键步骤就是 `self.llm_engine.add_request`,这个方法会将用户的请求添加到引擎中,然后引擎会负责处理这些请求。 + +接下来我们将深入分析 `LLMEngine` 的请求处理流程。通过 `LLMEngine.add_request` 方法接收到的请求会经过一系列预处理、调度、执行和输出处理步骤。 -`LLMEngine` 的核心功能之一是处理用户请求,而这个请求处理过程的起点是 `add_request` 方法。 +**`LLMEngine` 的核心功能之一是处理用户请求,而这个请求处理过程的起点是 `add_request` 方法。** ### 3.1 add_request 参数解析 @@ -137,13 +197,12 @@ def add_request( - `request_id`:每个请求的唯一标识符,用于跟踪和调度。 - `prompt`:请求的提示词,通常是用户输入的自然语言文本,定义了生成任务的起点。 - `params`:这是生成任务的参数,可能是 `SamplingParams`(采样生成参数)或者 `PoolingParams`(池化生成参数),这将影响生成的策略,比如温度、采样方法等。 -- `lora_request` 和 `prompt_adapter_request`:可选参数,用于处理 LoRA(低秩适应) ### 3.2 预处理入口 在 `LLMEngine` 中,当我们使用 `add_request` 方法添加一个请求时,系统首先会调用 `InputPreprocessor` 对输入进行预处理,这一过程确保用户的输入被模型正确处理。`InputPreprocessor` 类负责解析和处理不同类型的输入(包括文本、tokens 等),并将其转换为模型可以使用的标准化格式。 -`InputPreprocessor` 中的 `preprocess` 方法是整个输入预处理的入口。根据模型的不同配置,输入的预处理过程可能会有所不同,主要取决于模型是 encoder-decoder 模型还是 decoder-only 模型。 +**`InputPreprocessor` 中的 `preprocess` 方法是整个输入预处理的入口。**根据模型的不同配置,输入的预处理过程可能会有所不同,主要取决于模型是 `encoder-decoder` 模型还是 `decoder-only` 模型。 ```python def preprocess( @@ -178,56 +237,45 @@ def preprocess( 对于 `encoder-decoder` 模型,输入需要分为 encoder prompt 和 decoder prompt,每一部分都需要分别进行处理。`_process_encoder_decoder_prompt` 是专门为 encoder-decoder 模型设计的,它能够处理同时包含编码器和解码器的 prompt。 +现在我们只考虑 decoder-only 模型,对于 decoder-only 模型,输入处理相对简单,仅需要处理单一的解码器 prompt。`_process_decoder_only_prompt` 的逻辑如下: + + ```python -def _process_encoder_decoder_prompt( +def _process_decoder_only_prompt( self, - prompt: PromptType, # 输入的 prompt,可以包含编码器和解码器的 prompt + prompt: SingletonPrompt, # 输入的解码器 prompt request_id: str, # 请求 ID -) -> EncoderDecoderLLMInputs: + lora_request: Optional[LoRARequest] = None, # 可选的 LoRA 请求 + prompt_adapter_request: Optional[PromptAdapterRequest] = None, # 可选的 prompt 适配器 +) -> LLMInputs: ''' - 处理 encoder/decoder 模型的输入,并生成 EncoderDecoderLLMInputs。 + 对于 decoder-only 模型,处理输入 prompt 并生成 LLMInputs。 ''' - # 如果 prompt 包含显式的编码器和解码器输入 - if is_explicit_encoder_decoder_prompt(prompt): - # 解析 encoder prompt 的组成部分 - encoder_comps = self._extract_prompt_components( - prompt["encoder_prompt"], - request_id=request_id, - ) - - # 如果解码器输入为空,则设置 decoder 组件为空 - if (decoder_input := prompt["decoder_prompt"]) is None: - decoder_comps = None, None, None - else: - # 否则解析 decoder prompt 的组成部分 - decoder_comps = self._extract_prompt_components( - decoder_input, - request_id=request_id, - ) - else: - # 如果没有显式的 encoder/decoder 区分,处理单一的 encoder prompt - encoder_comps = self._extract_prompt_components( - prompt, - request_id=request_id, - ) - - decoder_comps = None, None, None # 没有 decoder 的情况下,将 decoder 组件设置为空 + # Step1: 提取 prompt 的组成部分,包括 token ids 和多模态数据 + prompt_comps = self._extract_prompt_components( + prompt, + request_id=request_id, + lora_request=lora_request, + ) - # 将 encoder 和 decoder 组件构建为 EncoderDecoderLLMInputs 对象 - return self._build_enc_dec_llm_inputs(encoder_comps, decoder_comps) + # Step2: 生成 LLMInputs 对象,包含处理后的 prompt token ids 和可能存在的多模态数据 + return self._build_decoder_only_llm_inputs( + prompt_comps, + prompt_adapter_request=prompt_adapter_request, + ) ``` +```plain -`_process_encoder_decoder_prompt` 方法首先检查输入是否包含显式的 encoder 和 decoder prompt。对于 encoder prompt,调用 `_extract_prompt_components` 方法提取其组成部分(例如:token ids,文本等)。 +`_extract_prompt_components` 方法负责提取其组成部分(例如:token ids,文本等),详细介绍见注释: -最后,它会通过 `_build_enc_dec_llm_inputs` 方法将提取到的 encoder 和 decoder 信息整合成 `EncoderDecoderLLMInputs` 对象。 ```python def _extract_prompt_components( self, prompt: SingletonPrompt, # 单一的 encoder 或 decoder prompt request_id: str, # 请求 ID - lora_request: Optional[LoRARequest] = None, # 可选的 LoRA 请求,用于解码器 + lora_request: Optional[LoRARequest] = None, ) -> PromptComponents: ''' 提取单一的 encoder 或 decoder 输入的组成部分。 @@ -265,37 +313,8 @@ def _extract_prompt_components( return prompt_text, prompt_token_ids, multi_modal_data # 返回提取的 prompt 组成部分 ``` -`_extract_prompt_components` 方法会解析传入的 prompt,并根据其类型(文本、tokens、多模态数据)分别处理。 +分词器(tokenizer)负责将文本形式的 prompt 转换为 token 序列,供模型使用。分词逻辑主要在 `_tokenize_prompt` 方法中完成: -对于 decoder-only 模型,输入处理相对简单,仅需要处理单一的解码器 prompt。`_process_decoder_only_prompt` 处理了这种情况,它通过 `_extract_prompt_components` 提取输入,并构建 `LLMInputs` 对象。 - -```python -def _process_decoder_only_prompt( - self, - prompt: SingletonPrompt, # 输入的解码器 prompt - request_id: str, # 请求 ID - lora_request: Optional[LoRARequest] = None, # 可选的 LoRA 请求 - prompt_adapter_request: Optional[PromptAdapterRequest] = None, # 可选的 prompt 适配器 -) -> LLMInputs: - ''' - 对于 decoder-only 模型,处理输入 prompt 并生成 LLMInputs。 - ''' - - # 提取 prompt 的组成部分,包括 token ids 和多模态数据 - prompt_comps = self._extract_prompt_components( - prompt, - request_id=request_id, - lora_request=lora_request, - ) - - # 生成 LLMInputs 对象,包含处理后的 prompt token ids 和可能存在的多模态数据 - return self._build_decoder_only_llm_inputs( - prompt_comps, - prompt_adapter_request=prompt_adapter_request, - ) -``` - -接下来需要进行分词预处理,在整个预处理流程中,分词器(tokenizer)的作用至关重要。它负责将文本形式的 prompt 转换为 token 序列,供模型使用。分词逻辑主要在 `_tokenize_prompt` 方法中完成: ```python def _tokenize_prompt( @@ -322,9 +341,16 @@ def _tokenize_prompt( 在输入预处理完成后,`_add_processed_request` 中会将处理后的输入转换为 `Sequence` 或 `SequenceGroup` 对象。 +:::note + +Sequence 是用于管理单个请求的对象,它 ____ ? + `Sequence` 是对每一个请求输入的具体表示,包含了输入的 `token` 序列、解码器状态(如 KV 缓存)等信息。 -我们从 _add_processed_request 方法中,可以看到 Sequence 的构建逻辑: +::: + + +我们从 `_add_processed_request` 方法中,可以看到 `Sequence` 的构建逻辑: ```python def _add_processed_request( @@ -357,31 +383,76 @@ def _add_processed_request( ) # 如果是 encoder-decoder 模型,还需要处理编码器序列 - encoder_seq = None - if 'encoder_prompt_token_ids' in processed_inputs: - encoder_seq = Sequence( - seq_id, # 与 decoder 共享相同的序列 ID - processed_inputs, # 预处理后的输入数据 - block_size, # 缓存 block 大小 - eos_token_id, # 结束 token 的 ID - lora_request, # 可选的 LoRA 请求 - prompt_adapter_request, # 可选的 Prompt 适配器请求 - from_decoder_prompt=False # 指明这是编码器 prompt - ) + ... # 省略 encoder-decoder 模型的处理逻辑 # 序列组的创建将在后续步骤中进行 ``` `SequenceGroup` 表示的是多个 `Sequence` 的集合,通常是因为这些 `Sequence` 共享相同的采样参数(如温度、采样策略等)以及优先级调度策略(如 priority)。`SequenceGroup` 的创建是通过 `_create_sequence_group_with_sampling` 或 `_create_sequence_group_with_pooling` 方法完成的,具体取决于是否采用采样策略或者池化策略。 +这里我们以采样策略为例,看一下 `_create_sequence_group_with_sampling` 方法。 + +:::note + +SamplingParams 的作用是什么? + +`SamplingParams` 是用于控制模型生成文本时的行为的参数,比如温度(temperature)、采样概率(top_p)等。`SamplingParams` 会影响生成的策略,比如生成的多样性、生成的质量等。 + +::: + +```python +# vllm/engine/llm_engine.py +def _create_sequence_group_with_sampling( + self, + request_id: str, # 请求的唯一 ID + seq: Sequence, # 需要添加到序列组的 Sequence 对象 + sampling_params: SamplingParams, # 采样参数,控制生成策略 + arrival_time: float, # 请求到达时间 + ... # 其他参数 +) -> SequenceGroup: + """使用 SamplingParams 创建一个 SequenceGroup。""" + + # 获取模型配置中的最大 logprobs 值 + max_logprobs = self.get_model_config().max_logprobs + + # 检查采样参数中的 logprobs 和 prompt_logprobs 是否超过最大值 + if (sampling_params.logprobs + and sampling_params.logprobs > max_logprobs) or ( + sampling_params.prompt_logprobs + and sampling_params.prompt_logprobs > max_logprobs): + raise ValueError(f"不能请求超过 {max_logprobs} 的 logprobs。") + + # 构建 logits 处理器 + sampling_params = self._build_logits_processors( + sampling_params, lora_request) + + sampling_params = sampling_params.clone() + + # 从生成配置中更新采样参数 + sampling_params.update_from_generation_config( + self.generation_config_fields, seq.eos_token_id) + + # 创建序列组 + seq_group = SequenceGroup( + request_id=request_id, # 请求 ID + seqs=[seq], # 包含的序列列表 + arrival_time=arrival_time, # 请求到达时间 + sampling_params=sampling_params, # 采样参数 + ... + priority=priority) # 请求优先级 + + return seq_group +``` + `SequenceGroup` 的主要作用是管理一组从**同一个输入 prompt 生成的多个序列**。这在需要生成多个候选输出的场景下非常有用,比如并行生成多个样本以供选择或进行抽样,或者在模型生成过程中需要对同一个输入应用不同的策略(如采样参数)。该类能够追踪这些序列的状态、进度以及它们之间的关系。它通过对序列组的有效管理,确保每个序列可以在多步骤的生成过程中同步推进。 -SequenceGroup 有下面几个应用场景: +`SequenceGroup` 有下面几个应用场景: 1. 多序列并行生成:在处理需要生成多个候选输出的任务时,如使用不同的采样策略(beam search, temperature sampling 等),SequenceGroup 可以管理每个不同策略生成的序列。这在语言模型的推理中很常见。 2. 跟踪生成进度:在长文本生成任务中,生成可能需要多轮迭代。每轮生成的状态需要被保留并继续使用。SequenceGroup 通过管理序列的状态(如是否已经完成生成、当前阶段是 prefill 还是 decode 等),可以高效跟踪多个序列的生成进度。 +到此,输入的预处理工作就完成了,我们成功的将用户的请求转换为了 `SequenceGroup` 对象,`SequenceGroup` 对象包含了多个 `Sequence` 对象,且存储了用户请求的信息,包括请求的唯一 ID、请求的到达时间、采样参数等。 ## 4. 总结 diff --git a/docs/16_vllm_source_code/images/21be763ab15d90c836f0312795c9c37aeb1ffa62a12e7babf3500f137ad1f6c0.png b/docs/16_vllm_source_code/images/21be763ab15d90c836f0312795c9c37aeb1ffa62a12e7babf3500f137ad1f6c0.png new file mode 100644 index 0000000000000000000000000000000000000000..355ef93de1c3402347ac4a606592b311cf79a5c1 GIT binary patch literal 151291 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

--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�>ZP zZYy$oY~jP%a^_utVQgvy?%q}h&=_C7`><-UaTbd@;}WCT$HUK@3wPFzYfjobq-w@Q zC5yS0eS~z=3I>LWq~h}p*v0+5SoF{6#g3;MkcZmiXAogNH9ALS@xNo~9-sc|me?RH zkmSB&h0T1v74)2Vc=L_{&!`~33}1k>$DlIr40MEr-_fNL_RSu(_N+{O4nTyTRm#ie z0ag}iXqH7;^q2;Quhb1X$T*FTPPiDxqdaG3UJ^Z(qDOiDmbr~`#N3}oMlTvt8kRhw zuFnn|7)InD0HwIw)cY%n`aCyEG9D7@m7gZUiLK+hF=@u>{Jn4hpAO`TxbqqJB)xOE zqis!;=>66Thh}jsuWnV3GXRO--(c?sryd~0lf~v7?Jy=grj7Tjo|ZtRy;S^~)YZ5$ z?FM3~ylDg@VTPlKJzI{s!%qjL3S6ZPM)8xk26hHTUwR|sg{8$+E%04+@($3Vcr^O3 zI+fb+a>BAb{Dnt)w)D`iPb|RQXI^6BV>4fV+`Rk{!j3X5_&SpZ4`bJ6_36YmvLeQ9 zL)F!F(DD*}l}~S(H3N~-(ESYg7d_YU@`&|YOd`Nyu3GyLRLleUR(2O5NdQ7`)>KKQ ztM*1yo0ndSC5MmZ-@*f@re(}Yhpi@CQ6axlpS3~p zB7~fQS`N|#(4pva@xhDbjSSfpCi*Qyz;&0#>Ol9n?zoJyMn%`Nncmqhto0X*adzQv zS0)@`Wn1a52Pi$MlSPg4iR9m5&>dLX*_zazV5b)m@4HEDR4jP;k9eUil{Dz0DG7@j zMTtCA8sm2zpJ=xL6RH2^EVcdY1)5GJe7=!_q(z>)>goKqi*#Wl$|p?KiCUx&e`*yM z)7_qHPj~IO@RyN&`Z*}=<_W=O`8V;aGpo++UGvO&;)omNE{4rGPy)mE_d?_c%32KO z)~~(xPTWWwrn|1(g4N7P+ZvWW;TT}GIVQ6Hp2_|PlBZv%ce&V`v5F0*ixodw=3Qe7 zBj8l@T)})Pa-q?xBsjWP!s^RRa+FL5qJ5}_d=uxFCvw^ge3SP7#5INx$MMh}LwzRws#g}?t}^P=Gza+b%L*u86HnzisYYr%8* zk+d%DZFp8ZX$=U>sEr<@caa}!YvZLeFhiDVZ6-BFd=VWn7ez<{N5*h%YvAN9%{PS( zWEh?u>DzAZ>Yzrnqq3!I6=t-$6RCZ<*@S$rd>0J<^r+8P%NWZ2N@rY9S1>H0hS42n}8LN8+Y%8FYDTc3&h0RI%M7{l{3_GFP!DKbNpV`{pD+6m-oA6 z?Ro@K>|0hSZ<(~p#4ouRU5LQNpAe1;*?s=hQ6LZ*0m@gi z8p^qqc58Q;3$c56Ta#?hB@eGt`RLifJbwEl#V45F18g+{ss2|&mq~H_oG%87-Nm}C z&9*({f+n!9JoF;f;Qjgu?B*`(@34r1N znJFqPwz$@JtDdJyk%UQ=ULR5R-Z5Y^PR%1b{}y__Cq=(;L(UaV2B;{|{OzToj#5%1 z-{oDdgQzJg2H~CMVedBbX6iAWp8D>9ZPV&VQ}NmGifP-m^7-0XK@4Fvl5ux^98lp^ zvK?$^X-v(7+bvMHezRbN(*R+8)Zxg5v3=2j9hk$cckbxNG9 zYl5rz^}@oD#jVYW&j_oWu&uX3Oun%0U5CvN-g_Edw2@@%t3wfRx8}D_p{_5|61SF% zJ8Jp8u$GvdQyurbr2So=?yg4u=*#^kUFPl*BVAsy-G{lvTXN<;{UOu=zFiH}&W1<7 zRmBYovYiM(GV3c8KJTF5^#h`b3EE^==5-8Go$gi8pZe~jVXKmawPlUM;IpRZ-;=o> z1V9;ftZ0YTGF+^=F>f#dClusz^6J37PqbHSkljpU3@|0>4nMlLL)huU_4?G>HW$Nn zTPz}&9(`psY&GYpEdty25~%6309RhE_{lV{4wtXUr_$dOkr>Lx=*Mwuw~*eVmsjRX z7hoz7DL^2Qi|KOw5P{dM7N>>=Zwn~V)bt*wEBOO%%Z0Nq*)GlC7CVZD17(0pS zHnLzu6(kmJn~SWFTUh*yl3ehOzL%}#96hztapjT!p+$B-MdihV`z@o%WWa9J7R|Mn zvvs2+>58RKE#UBJ#^_IF5qBE}g9>^!b@eJ^Q1rA3yFg`r{*BJ!)$r|~!n+M4gf{^h z=!{6`59Od8(AqS$MAo^(d@moHWf;^ZHxw2InN#uXiHIscyM(e6$MRKZ?g`Q9S@#&m z3Jl-Db@FCPA8^9e`Cf@ByKu27{2l;kB9oFff1zTOW5bh{H48wp%<-jwTSlAzCS_}B z!a06e&Uj}%$nFY_$ct}(V1x)#-Imw>kR;-3+J--!ZH%@{T*VB#UGY%fx_B?YJ<4~u z%IdxcA)pQJPXNZqV$D2_(q-DSwe4){^ZV6%Syy)SmIv)5CF_t^9g}DK`>~L=;>DuJ zBr(WVia<%?c8rF-BGiN9;;AK;v7x&8gfWgiS85`glX&%Fg%8u^p+vc#je{8|D#n5) z?Xf)*o%zu*UxBUoDZrQ7o*8%-P>w09PjDG_BlDhuM0sJ93eS6~w2-PifL%gVuwC$M zVBgZbJ5&GK;g`}9&eJcvs~6+lyKI4&wOd)=KsqXbHFFJ-BPzO=WGxpSnvfD#ONj;t={RuJ%IMA1LG`_U ziV$fC?|TZc#t7UO9jT`k|C%4p2V4KA^Lj8s1-C($<*@z2wj*~n=9b)^;(T(me5HD6 zEUUYv$i1de@oM@3<{i))ndHdq&R)U%dJs2hIfz3tjbWD6My(C!S8u@w(7e#aqF?r9 zy)X0XOqY=s^Im1KAW|d{owy+-= zhk$8>km6Ir9zpX_?Hfv*f6~0u3Nl2GifUC{65h&6LLr!)e;9YLOnDBN$%yQmVP&fm zCN!4VjNVtA38+hN%&lB}2%p8NNof;2Xwci6munV~36BC^uScunG z@jyC;8@V1=05zNM#}^|jKlBIGf#}2qzZ!o9>@@9F)ljIDa8t@~r6T+>TaDh!RbhPV z>ZuA@9`;2=HC$xOa}VIluGmYtzbl;2u3~m>9hFlslg{OkwB{`nB8?C*wOwsvGPngn zadcYEmU6QbeWES@s*h*ut`b`P-!B ze7s1PAQl#@M(PmVM@#$4m^bvSA;czrh(+f3Lt~sj9Tm6wJNmA@Eq^McF?6`51jD`v z6b&`cce+ZR7BQ*~Aps&>ZHEL*cCY*eBLKhNn?-cSpBJZ>U%!rzE_Sv}<;tEqffe5K zz0>osxJ}2trJ`)Fj#}HjD#ptWanKjQMRTI!1*_#=P66zYd*=3{wZ~5N;`Wk;a-zLC zfuJt)Oh~u6u^2g+mR>yTHud+s5mj1(?3W@mTiCk_mx#=OSU(~SmN?G@Xb;;q3H%yo z!uux_l#W+r(RZx3qxwY|-iSa0gNofj8hh(aT1-cKjN(gF*we%Kd>bQVgnQfqW4N_@ zf^YEQ(HkOnWTj?HnnqQFZb{ueRnk!;Gd7Z0U2jsq^&X$G zf>A3u@VnBNvr-5(ZSz{pFaSdH2cJ-~DxoeR(%*foH)2^(9lKlOKfe86WVfxc8Puyg za}i{npahtlrW11&yC17o9GH<_M5niTB{Kao6GB(gF0ip2PJMOKAU#5dQ#D*B&Q?-@ z!|YUY>+UKg0(Is=>YY7`>aWoRpj}$*ouSY^W7sYw4-LrNS_99wQu<5WF+13u<;!2; zzIarT`LvG_R$C7_HMq?>RZ%>8m8q%zt0+(}+e*kz^u4!Ei8_SwwM=r*siNUAFRqxM zKb+Rv5V@8wG}F@KVgur{0jG1kA7hfQa37)72o&XUVj#?K!OSLZ@#ax9pKO$P`T8P0YyKmV6ij(`&6)s6b6|KRv%z{!4y~pG}KEi1v)h zh=hVG_vSa159st19qX)p?XoR9R9&LYHwOj1{U_EQ`jm6f;7&vrHw^=sszU=zE@(74#qG1{r|oF8;()0@T?lsm3RO@|R2J=6@lG@`1eET?=bIfk|rG1xK)>KG>Ublp4w zk>kaXFv)u#PhQF1Zxw>Ic*lR*&VVPfn-lx1_AYJXO`MN)ynq+{dm>}*M@yi!rUKzu z%j13oO%__@;}P+R6FqOLyfGUgu*CkUAYxy!th+BLh^t=<(XzX#Ih;tgOL;5Y3EiK* zU~`Y8d!p-SA45iZEb$SeQ=S^XZ_!gG!t}${A@g~B?0Y$<(Q)`_T?)lU?H8OG)cmBIv)A*2q^)i9tX} zM6{&9Z+7RVszL}1of zRUEyR@UBD32a*@WqYd@hT0cIHALRUDg8jNM-pCOTnl!dclo^rKe-&;WC~ z$;&^Igp){b29uX!!jAigqNtSmnh7gkJ7il?Q}JrT>jAkerZdhW`YT9z9cCK=7$^oS z+8;E1RXBQ6a?wY21VrEHJt9X;fXzLm{r3YRo?sdV4LT|zD@BZ2>T0yno!FrvP?QeG z@4K(vyv7VV`U)zS>|_y4^f*0NBYu? z(d5lPFd2~`Yc;@C-T{}xB>)c%H2n$s-K5!^UWKAVlt21PT`>-y2F#k2@Gs{s>5pVQ zc;bzQ3ZvE_duJeNk_o_hh>Y7pasCUu4y`$|M+nW5SA54uIv*bCzE)gw63}*KuD|>~ zFPo+g++^%i}2_4`{RDQi)txSrcsUqkq8iTpRoO5~5wh0dv# z(dWn1FgN8!kJ%JHcsEa8cDFz3UUY;n^en09PZ~K)`EdN%Cm_zZwAHwLQU2<~o{Xn3%*&1?A82g_-i$*sSt`7?*4LeD+;pek ztFFcd6VZch5O~fL&4>L^eR@2`2UOWyS(?@T*;1JEmfwGe-zUdEW2j~U>QK!l1Ok`n z$iRbW;?0|&*tRV5w)we_MeUf@J}sq7#TtNQI5l^qwn8h^8_&2kl)3tRFE8)b^BXs( zs+)c;Xfq_|7VjYt4j z(SH511P(cVwhZ9fBqe>tzFd`;y70*bNWv9h#~^Mo<4;EW@yAU7$f78#JJ=w-dDdqZ zVC@-BgYO!3ik9zIey98%Qe}HHd|e8+Pv&=zaSmx3nVnDV9o|1fOns0P?>-%w?g|&U zMh(@OTFo^ZClL5oV-f)8_t*jgaq?Gd$oNTnrugDZ^6 zj3sL8MAn!0zu&+0c^RcD63roX0b%cF?Kf zYHv~v5c%XjIOW|yrhsiBKADMxnWUT0{Iboc{}v{87__Ot?47n>_Wzr3Ag2Te!q_|HPrf$gM;t?fNTm*5rrpqxkBHj&~$1nYyAjpR#`0LMZ zH@j;hueTS_R&=ETV^m%$0E8{Px>!?iqP%rZL_i)t?3?v{Pf)Pdw^&K5TO*RP+n>0A z6{y&O0x#SxQLRT4hQIq=uFLwahyk;{b;KuT?WxmZ9AoH!bt}jRdUlFH+BHRvlrd7z z>X7Bb;a+z~AMw(a)l}!dE=?tfnQZ$fACpE>j9zrF`71ZPW&q)}c$w)ztEmh}dhOOJ zoW(Ga%c3M~s54nu@5X?hEy|VHo`&3Ox@7GT;8}l?z(wly1QO=tdTOYQ6Q`_;<_CeO z_YU40e?K;Ov)BYO{wQZ@wqDoab?=h^8gq8#!uH@v)hixlGTGHyzV2INY_jG>0vxL$ zRS2-E+uHo}-Lm28eGvG%B#LF~UK5Rpix^0+-C)&&K!u zvx2%*wTSO!HXAo*zS{km=oKI4Dp(ce=RLt(5qpKhrkF(TV2IuJzvqIYuMxU$$Dc;9 zp|Ptrbx|Q57F{=0q;gae8<>;$pbx$12qTLtTzUEHjJ|xy>{FXWcnrZ3V5A$u{YuTL zh>FIj%v^RIRo`g*Q@&_%ET(V#nH_C^1FU4-k`u6RgzMf_`DcbH+Mm^GWQ z>Ii#rA8wAwqc8OALCMwk6KlTbdNdseir`-Gst)roc4KJ4HF8U75ZS|a*ld+Y+PVrc zKVNMFi9WGM683zuZ8@xS!UK5N3ow;I+HOy4SnFlh7}MprQYYkjrxRH^*}1tqg+*-i zdkJCznQes%KWYu?NMqEGho(bti{Rgzy>Cx78Tb7-)a%H1t~aPl>CV%U;LMLd@SX~{ zk@eZ1{vc3iz>6Lb_HY0k7D)~3jr*_-04=sUGrWDx%#qLy3dNwr90EvPoj%J(>Re7h z<+rXHTi&GtcUSp}hMU-hCFc)hbfktv{U|o{P()IHk^N;frKYrTc$;XvWJYtaYtvyk zxt#0c+m}M7fq^j*{~BUq?(B@KHx`8DhGmTK+cQmj-zk2PkQY*@3*H21WIKoQ;p2B$ zyhQ)vtmFTFr9gzEzbddzGEI{p3w z)zAxjF0PYA9C4vlb~WX-VW?-fV5C`orQzWr;hQ|;)6=v3(aePbwPZd!jEq1A%7w4x zO^I|~Q$%4as-yaZcr-PfrdqmI=jFwmfSHf?tpyG9(|Ia$SbZ5L>CnLeg9bnWIO%dlKWpC=*(y^Y&1F5eK4o3ipTd%-U7bAJq zc*4K|WwL%hN6XLC;X%j#0uKpOYsm}Q1DNscUn@*R!s*0?DQDmD;RCb71ou-38`stY zr|QY@McY`}ecaS7zKq?x*vK^t(80QdvjMVLlwRDs{;i9rwEgy(&(E!%I94uR3NNVJ z`@co7uA9$JR9r;zKC(XKN2E(;FV(OJucc*{n!JB-EtYmh5k2pTem$jWJn;XFfJQKq zCpZ$%>w+0}L1;1KHHo7({2bAEMGHJegBcu8H9PAPgZ=3cX|PgP11`rYiZgqeHtxM3 zic$8-6v6QBLvPQ8+o{5`a`m5pmr?i_why|8~wlPBx)58eYuTGRqYaD!8`cl*3Kk2RxC0Q>P52S%Da=VAQuzXb0`8_w5) z|2gL|7B-09_B=XA+R`-71lRm*Axa%?kqlL4Js3&zS9M>CNn%VjPb?B4E)KSm&3trz zM{1gUcOU<;cFoV_C+eW+)*m2x9+^|jHw#Z3niFbAD9h*8tTY${~Pi#@w8q6ueon6QTeiioN+!3_aEFF7u-xb zJGT*>#7C!fMJ&a|0Z`Fzvbt%gm|D;wosI-^$Ws-I#)&g`G6}8CUFD&e0faf`-9&%@ zUYBOOh8F1ZT1!Y(Efvczxg{PIRM$^M=7360ih6r*Ew&{DfQ{% z)k{9YNGo+z#pH9nwdC57^ylC2T8y2r9v^Z{5&q42*oK>O8w-DTA7$&$`^zC%TnVpb zP`96vc-|$^*i0;YeRqJe(lPZMGgdgG4QASA&E{6aGI~2J$Su9uUh@t5;c{@e9fa8R zAS+^{tJRJ(hKa%dDty@NSxLlimL>UA@6Np&Ji~)ZdrgbXt|xdf=^981vt;=B$5EdhxXR{_}sTJ~IO8$3>I4^m%vXNjvEv5iMVG zKZA@fW>w^z$&8p=OP3{*wS&@$)vIT^X7V^j`xPtOx2wLWQ_aW^`Yd#zhF+>uaThb$ z)%)Dl|MelTq-JZnDh-g`%tbb^ZmzVJRXLdR8F~I7MX_@LZ?uX0eV@WN?{9r>XB1r+ zq$8C@=zD_&>sH9Nd47pMtQA@;;BJiJe?a9x+Mq}OKn)31LnYW+DInpcC z;*wJtv~^#grEYD@iN7=Cu3zC!IVIQnP}<#+VeOL4)$w{$Z89a{@1tc&uC^aA-+_aV z@pIJEa{BX=0qeK+6Ptbz4Rox1_9je|eYZ{ZQDAI)?<{WXa&`Oqbm%~+-yzkXCK1sZ zi(+N(346NEKeAvlKd2+55A?Nq0uSLTiC|mQhr-wn#Xrx|3VFU;C)h3Q6$jedO-bn2 z@tptdotmwF1R1d}KMvhlsCX-UL)MvLL~8cqyFu?8qgFDyr~zQuPGvc(A+mr7JB?$p zf2~8W5YyjNwYA{q+4O0#!x0aMYCkvK`1baaWsvBplLnedeM_wy8dzPzftm-i7H;aC zdVQ}dBo)G8k;4Dk#~+d;d5~9>iLL18a3zwDoYAJH0d+&AzKxZ{15!6fJyZ~0Pt-q~ zl>G-^c*COhCSZz#!4tCPf;@WliA|sQRQEf&x_O8BZRb6zN)!knizhqW6#rnV>P!eG z6&bYI@e!vg8X16xizz^D)KK5-Q=%upqgSyuF}0d>hj2-oZ^U`}HHNAz;Cp#5A99rs zcX%d>a*xIKRD{xI(Uo6h`3|pp_TI+1wYQUGfVQZI#9u5!bv06r`Iy**`==wHr@1Ki zihlAr{H?71Ko+)hZln{Q#v9?A=jysZ+SZ$Zw!8d1`J5SbL9?eVHYZ-R zQt{W{PXniuDau@n^vkIml}}viQIg6EhuTzx_h>SqJy%+`*)LRwdS?1VDvx@)znMts zC911!MCL%;Mr26a`S2H`tEO$j|AZyAs?5Co_HS)_tfug9h_q|B9)WO}Rq91fGV`rd zKUPN?z!3@;rJW>&f808e2FGKs>b8OYyPRWT9V{4rp|uvk)gGgI&_8dJNCoRH2_Rd{ z9AY%_*}gcuL;X}q`EY>~XMYFx)#TL`o^&SrAp8_2*|)q9_hCI2KlIQJO}KYmEht9% zyZmTr?uv{ziE!avwysZzz+BIqso#gM)YPPw zsgk|Z_~TPslSP9XBjSZaXm}w|_@XdOE~A%NjP0}agYrffrX8AM5fPx_(Z^UZHa)}F z!d;HG)tKqUHA1u}Q`OZ}PhIO`4^v$fi8VK~&C8U%VB6h?MWqVlCmecI-W7XM&g1?g ziIifYoay$CI@fk`sfh?b>2oB2|a?sva;3JO%ajD`G zWyy=mP{jMw3ehR;8ce4u! zk&WQXuzYZLA2=M)oYuD&~HlhQ$d&8 z@;cpiSd`D1yd)-`r<)Mt2f&FN6ZZboa}Tn5V5lEL-(Nhu?XWSPLRp&!-UFwAyca#& zJ2GR*GMM@vbNR5gXru1nVCp1~o`v$C{c>s^+wR#x7X!$x=@&fcnaF!Anv20Uc`;vie^u#Nvhv^h|_k)gk^^Vh0p z-{@P^C&Mk*mzYHa%4ZwCf9;aq>W0(Cy8qQf$YnP=I8ar<)>R|yo-;5r7#5jDjz}#m zt13-eQ>V)L&bHQxL+x^?Ap#Yr?xJ$Ru~NlFOaJkz@wKwP%E#~+o~>a=b8PW&7s^FF z0;W;HvExg8H=@B{vTJp7SL~2`2QERO#ZcQAHOS|{fR?7J#!@%wMUfe;xtD8?!}bK} z;h`==YV)E*;z-j7!2nXj>2DwHoXnF${eZJoI+Jt32bYxriPzs^&|uuDYJZj`Ye-q$ zU#~%24BOI`_z@>X+A2x;_MwGf*vxgtNc_Q&KjlSXgg2|#oUxi-_I|n&o79jS z%XugigCs>ORjOsbaefdG0&M((a1vF z&~~F>%c%nxzd_^*pu-n!Jk9WvDXwdGvpJ~OM^m>F+sRR@`*XWuL)mN{mk}$}jN@@{ zIU4eIr`ZK>-Ib({(XVa$@|nvNHHXli^bSqlgzYvsa}gmIMYyt1iv)N&c8C0-$SA_K@wtumN}S+*eW=iEORhYF8vtt{zo6k z1~`6*4m2nhBy(D>)2u2FT9CMvs-=DhX>}PgVyhJkgG7&|zOF>7489~-66MdK-0#Ai ze=Y2P^S2+p9%##SOWWCVuAZzgUtfXv2-?e^i+OMf3IBjewO7Y7QnknKu^jp0ypt89 zxpj}n{g4rJ(%pSbX?GztKqoLK>dHgf8)Tp!dSL9^7rFOSa1ttp*Wd2q94~z6xz&)< zbbiq-5^C}E)QC$2AhCwm%e_S~5tn>8~_Q0VM^N#Q^s&tTU9Oh_5`nbMX%dHQDA#7RKcC45pxB>e`%M>=orOu_XM?#XB{mo~D!7P4 zORRo!P-g+B?CI4r()9c9zZo=#sA*N(V<(EXNKVRhWjgS&Xw;GXOwH==zg_s)ge%7# z2a2nW5#h^z!y{VL%yj6mY4bRH$P+Q;+?l()i&+-&Mj7)mQmuMC*GbEAQoFCpzeTp? z=D5nQ?u@2x`7z4kqxU~#~Cv|ah$i~ zf|N_Ac9xz(6MXe6u7JVlVXBqbXBtc8!!Sr0~6e* z2RU&rhp`9G*=d5E%w~vB9BK#F1099#*u0BSmwHg(>b1SkjLHdbruA)`pbUVKCMI%b z!h5XW$;WELJazRu;VnJnw7554-nuLMwtfZ$d^Q1?E6*Ir{Nx-TF>?@L)DeV<+ZhLw z)0~P7c_xw>!@Ai`q#@qiWW60ff;m^)!7=wi$U7@k%ZY0UgoN|op(*h4M1T>xo?JnD zV9s9&{NysE7HFZ(yD9uOD_tRCJOJ3?up*pBcBm9^=<)O*4Er%I7f#r?61*l9%UuZN z8Gh~~eDr2N_GmMB-c2(-#7v*}Q~=b@8)YTtTHv%`FKBP`=!R*%;>Mk=m}dEq(4s>& zKtw9P!S9^2sApfJ?mgf)Eqx-v%xyA$4DE10QemXZk$_Z+UP3H(#tp`~J$gu|m-SwL zTs)$ARd^YlamiW<&{DR6Vo#V7)G?ajK5(F~v{X(YH!Xc!gxU0ctccJF+3mr#GU*_o z2ye;{y4mDi&|8`T&)(H_<~*1cp*P^1KzGh7TCYq)t6Mg0iPWW*%{z9`g_&V6Mz}41 z(0cG;a6~y_yMDBvlol)wZ(_xuzEZmE%6^+$J-q^_?z`%u5I&4m+Gr<;?ZQlD0OsXk zCGgBdW76li1*l~ujA;QFXjLOrp}+QA4puD}4Wt)B`~&%JikoFYH$|%1+V7)z-c2T; zo!W&SBIo7iA5)r3F$!mE`Dn3Qtwg3Xj5Q}hUB>Gz+q6!qN{%;EM_valHY2S_yG zCJ0vteXQp(b_P7QoA7TDD{+S&y9ZULR>y3iOHS+0m*-p|M4K6PedEY+;nkUSng8xK zUjB7coZk(m;ecZ1{71M}`iD~Z8ahd~Za86YHe@d%lhSSCnqW}E{FBgFK+1D(H%`(B z8{&2--}@@v9hlyX{}t2s)jbynZ_VgF!BsAT;khz`U4=jm#eV1{Tk6(m*R+dNtQ*u` zwJ+(Tyku5C9?Fb<{G^ZlB>p*k%MU{4-HMt$Fyd*+BXz|FaDW7udURi{j{Y&J9lP%k z%AiZhOF94*9%PkCdg0vJAh5lhYl~8%#qIScm zp}A;tN)2f2<*UmxY+WViTI91sE$YrkTA5p<4!UG4kdtIF<2?-&piTt6K=`x0{S^n_ zeZt5jf)af|--jt!_wqKFYfh{%Y7tyDL{G0&o8cDl4c=ju`^Je~u`qJd1HF!QPp>CB z|5hOaNM$`i4luRpJzZ}})v=npD3)vJ0$fj|`5!Zsx%t_WS3S7~Jia(AZ~PaXKXErf z0Qxb19+#}_*p7JMgu6?SkXZ?5avAIrH+Y5TNaMeWfTGn?B(`1xaR1m~klrR6S*Gc`xk(l@USx((JP4d9kPLmSTZ+Tz(4!YK12qOv-f?J+TF z@zL~P-2zOjzA}V;HyI$9Ox72-v%@+*d*igb#|&yGyxtn67N97qBCR@N#=n}J@t81( zn#ZI_z#pY7LM_eN0pvpU(njd23)n*EiRxd@EZoo_u1S(5*Vb0#zDYo?0)O}kv8B4} zSq>bZK6rn6bHKA=oNix;q!6N$`S$}7D*VzEc~cQR&oXHMYaAKQJE@xgGxhEaJtlGN z(RQuhbl|{xW1`SWYGQ*P^~x0ty)*LV`7lQZ%t#T-2}786_$iSQ5MRdC0d$s~(Xy&B zEE_VlZsC}+70-wJ4yv&2)c2~RQoVTN?4I$MXtR2&pRKOS8Zs-s$ZyjLxCNuY3+CLW z%D{0Sh#=Mc*xD#UCq&I<=5XQgY@g8RMbOgiE>FYSrRnGi&_RpvvO>jyfec=g?izzS z9kPb98!|YCo~$s-w^CbE8=0<$L;=VT`nY=|JKxzw zfDr5x2Gl_F-AW~8b_ueqC;UydPI_R>7f_TSyKM*2Cq*f_AZhe5mc8V?_yQcj@lqUljH!~Izi@?oAE3qN6>x_=Gc(9-HZ_;B{3H@7{$ zqNBCPN0LG91kIpk_zRscPbi_=gMGNuU`A0!?47A}->pp_2zTFQ#N7Y81yKD&3${IG zfr)t??`}{pBifrJ4b>UX7_^l%eN!vx;~t`(R6hMBQ&u0j5o6YA5*)^6mz5Qd3Uo_4 zAm6OCjyBje_vC~z{WbRW6sIDAB#ZRclpq1Af>|?aD2KOHmd0|`E#$H*-a9N*dqB^x z_VVg;NgIK8=~(jcr&*_WinENdU)eEAd1d!Jr_N-GZk6Grm?>V!j@L;kC{%Xtys>&T z{LA6&e8?(A(9K+8k8ecLr zlBi^^MTwShozcTB;)dTqX2f!Takzy}) z6mrvZYGvZVDqz5U$I;7RT+avgDk?tB$RU-leMXpj>-f?_yj<+YR9-W5f-a0LPqN7^ zhI$v+@xv#D$`a?-dZ}Drzsf!nb!QXVNShF7F3k@T1N4xFnB8KQ&a081Gkgj=X|vG$ z7C!;peHhI4UwjJYtawQ#D)(7J4iXDn*!oU^3p4!HKLa=~FM4~R(6xSriLH{uBtdf8Us@We)uWEQL{)+>1*6q|n5_0gHZb(9FLc@Ey>}3rDFgpHnSJWe(CWp6od< z)Nyh+CII`U`#rNiTBo&Dv{EY19ah*Dq025O--sW`j2>h^vZ$0Cw&GVG#B9F{GQh#> zk|80~r6qSMfNH`yjl(X+)sXL+-6l)t0b2SjepG43(LszJ?WosFgf)h?0^H@N;*5sv z44!4*YU*RTrEGJ7hldBRb)PVniZgEr5xHq@vC?s-nSbjOU*)Ae)%vDe$F#a>*Vvv+6Ek-`Z>FiH-3YX-{k;>8e#aF1ou8iU^Gf;hm=y-e{B)fOAUW z^M~E!{O-ia4MDB&vRixwRk9(Y`NvP0xY-Iq-3F9o?{%Js+ zE~wNpg$~3U+cejnBQogI&PdAKOvO{`T)qh;DQkmow;eOTL{F^*TODd!)3t{a`AgXB zkaxdNcc}K+`+Mx)sif4-FW-Pl-!;SPP?~t{{u5KAMLN?JmmOkr`SaV zZE1MEHdzgE;vKY%H6p=#94^4wDU3mkDZ4dw3E8Z5i=F1{DfgQe&u-+M;tmBrbf)?Yn`_%4~r_g{aTB;at5>UQ5Dmj61Qe**dB z-9Zn19W6BImmU`f(yRT4?#HlM(D~*$=!)g?xY(s#FXt-9$W6MGz?y*lQJ|HtS3wqO zk3h#CP|vxoes(a`mmWqH`=94pAk8Kq|jn_x*mY>Z8s#$TVS?XKKzhFVY4;b>V z2c$Ka1>e-1fq2N~oT4gz|2A>OQmmnusQ8r7Ls(~Iy9;R@3u46lK z6IF}G9U!OT`V#vAfp_6qOnm2O((e)!Z-`d#!Jgt%Xl8}g>)Bd(Zfx(xg!Sa z9V z*osNY!Bn|+hY+kFVd}26B-)tTHe7VW_O%5seUMSut^T{E0_hKnmU%!5F}~!|=@-i6 z1RoDsXU)T|2je-fJZ(>Jfc*D5>8J6{;=X3)@v9{ZqeKvqmZp4H%yWuf55e3^( zB)p9oGU|2pjIi`C#n5T<5bD17-sXp1i-YIP152H%N>OSlpMZPBy(QzIv+sifYA=fU zUY*TvRAE4(&m_AQpK{VgRBJ7}WXfGEJsaIx-UBouSP>2=2Y#4y=GizJZ;D0j4hz=B zi-b)bHT|}BW#(D2)O9dr8F`<&iC!-QI$ z$owZFQS+38_xzhyAmy<&EBYhb;&dxlH{PB5hykO|ntItYT~W44c9P!@K`*FvLk4-E zcOJ$zpCYR;-tHw{4ZjL{#2;_II~(6RSL?&x+i;lKyxuK2{Jgfj;7)x-+TJ_YZ2FTG zF}_^wL76n4v>6+Ye{r1s@|pD7Q}3MH?Dl)&vJRu`g|D25whWroO)~*gceu*6$m2+X zle6fq>F%qu*lwf40g}~+>EH%8yRko-SI+lR>1?k9`>!u`+_~&Z&=+}tYlxUj?-aDp z561Y>L1Jy}<4^+IkT>-*=E-po_%rup<9xYyHy&)%{i*Fn?NN3huRh}WX*HuvW@Dy$ z%)}c7sP!x{Llqh%481N4VLiv|Gdp|(N|)HNSATb%xqCJI7x2uT!nE45+6I2|vcZNH zL2v@FzLHs&rvq-Wp=rTZpW6U^rbEj>b*^HB8sc!rm+z7}=uUJh)vGw5$3DB$T}q(4w7g+_JjV}$hXe(T z_sX2gPwh1<8O{Bx{D}Qh+htua0_D*OKpPgn;q(~SAH67KSG{W1^Gm~zq!41_lB!Ml znMO}6@Rk!a5;Rib|;yHRu-K$((~^bHp)b07Y9o9wHQUMkDr!ZMO~DZ3AAE3 zp3%v2>X)uQBjaTN=wcbtB?^99b3K~~Qp0W&4%zOnv(IrW5{1R^!gKFcx)kp&OK^mP}5GDDg^y3v?=CS~)qo?cS^kq82t)^&M!N z;<>QwI-i;4zHT0qlNMjYvw7EZzmWA8bl_-=@8U#G;z;D04M>`mgZ2RF09Y%>JYooi zf}U&ZOEcR;Uev)RMX9W_h{H3yswZ-F-cB>jU%F|iN=!XPP$oZN8hAr5cG#s29^K3H z+J2_htd4$X4ZFf z{GLAnNbD7R{fn@$>=OZj0zOH(g% zl}jh*Pk%9jlJ68qDaqDG{K6bTH8B3SLitzlqr7YCrXW#~hGnqYcaPy4v5qUZ^#|~z z)g{d~0)fn72OMCTu8nFg)Zq%;cWH@Db51i4&m7Kkq_=OFjMubl7r4v48Fd}T{=8LM zQ3<$^CM%+?FXrU2^X<`dlsi!}O8He%ZBHYqvU#^$b9W`fu|9N0omp54+sQ~J84D;c zf{Y9w#<#xxZGTMEf2yLys<~l?0t&Yk-z8AdedlZ(Hi;KQC@QZcAo)&QVm68Yu@M|x za(x@WdXOwj%2sdnTB@6BElMkG-U$Nj(n{^mqSErn@IvcY)l#@3@hXPU?mSn}1dMn%_D53lJG{Gl^>OdTFe2zIv z1lky60s}CFuieHglZ&SVuLI&;h|(pZe~*)aOuy}F6?a75(?JIW9@;aGV+z-0G1SW) zp_)b;71~|Pjx4kwXv6Db0lS1RlugNvTozkcyK@KW{jJ|fch0|2?g)|wwFdB~b&8X9 zlZcm<`2hj*=)+wV01i592|s1q@q}yuKa@|LZ{~r8)a1VOnC*-1@Id4nnphkU8k{kS5k%6YqigupP} zS$B3Dlyq1Wd+|iEql+8q-J0T2JaeWbM*3;;tA~S5L3Ez|@*z;_VaA@vB!hUkqx^5B z*Xi<*+p$j%o-Ez;KIu^WEeFt?G^NGP zIbaOGS=R|3pHz#;?x{Uy z!J>SI5u`sJ^4d%B#}RlOH-|nqi#pe`9De-qiX$e)<@jy^jEjf4kzA9zimglTHGGr^ ziQ(oD1%pI~sJm_vJI@hVEiEM@1aH0nDhCr7VO28&#kEX zHQ&jBZn5Qxr)WD>o@Vn1<_~kG2XmuZEBWqm(qgeaG%`4wa4uC+w%1FOw!d=*!25hT zozggTl{ROp=W^hwhU=xfde!!Dt)>Yz=ks8WLY+0e-(}RnXZZs*C&ovTB@2!CzkLYh zVn+FeSRn#0tl0QO?FF)!_Kn`owy|_a(Ux8@z{L+*M!1%#!o;+Kf}8fXA{-{hhhX!y zB3V^7XIEy@IT=}Q@WH`6lr|+5kn^q=l&)o|f$6fz#ly^A;jr>2#?jJo!_M@4UZ?wf zAKMXVbPTl}S5j11-UZ9@x6y{0CmzoPmCumoU`vxBf1ica7`L}>{$=`jepM}A(vMb5 zY8pw!E9$Zg+SWM4dtk?z*`fi$*d?$;qTi(7^LG&2lX2<*99p8cbJ>~qGR(@3J?z_e zAk|N*{N0H-dNyXA-!Rix2)xh4PZ$zSoC9}mF$Yf1tXr0YpAj8fCWyA)+QyuR2P=~k zSR1>KFj*aYU%sIk6}R!-aR};&5}j{@+FKea5+y$YSO;$tQeJ?tOmz*wl2PRxN11E) zDc(`oP9gLB*WG2!`AN;jm=GQ2(WRnm`y{a~a@CFx@BRZjL25h1IQ)aMPoo`honosGFkru&| zV76diaqb`0c#Lw~aFCs<62+iD>)%c8teSpg4Lj+Offw{KtZX$*5#7d;yWx*78&33X zUxlV-3FV~x-%l74JA^Xb}ACry~ z@g6SYQx27beFasnO6#$o=c>T)rP=h5{~k3i2`qddQXincU!o~A z7dGFbS9SiJPfB$^zf}hsMOC`T2@YyMG&qm3BxcG!z$Q&5b;iJOa9&5OO?EQzb6I5x zW{0SDnkllFW@C0~XR>>8oNpDp(K-rSFuJwY;;$7N8pD9(Jgmaa~FwDx=nPByDP9;ITZyj+!^P0kD{I zjtpM+WiS;Fsg0SRLLvz}JdnTE!}#QuXiSwF*=M&q0tV)Slu`NlzF`<|hUR6zhLZ~spu<7ZpKNn++89=5u!67??KA#Sjj zSMEBU^G;^h%eH&$x<1Fo-ZBFY|3*H&JWz|gSIRt9mAFT@>kvTEmqJ!u^$SN(+%zfq zcA2G9^dbrnn-#iN=&rZXb#JWhYSk>$b)U045O8nZvF@GYVs`w-M7|ckg!T_EkYf$F zc&mXHxu^=JuS^9nx9_$U63q4p=W^o zWBG368PjBIGR?;j-PvLc$u7~Bx#YE%?=k%}7HwdRkKm5R)x2ZT+{=K69sXL9fA6a$ z(>hOFsds$$2Q#dIY7(Cd$hNcTETCY7&yd_aA~3#?H89mgZv!85XH~Y|7tfGtmKIy$ zvR=*c`)%eaP4X~ooGZVRKs?hd!JTeaJ(n;wWZ9*t&)!D&{&^>>m(l(1mmTKU{8n>4 zE&fzVn!S~4+zVLbN$7HnMs#e~KZPys6VjdsTA-LB574c#qZ)=M^IAgp7`*8L`t(Gl zot1%#^aE5)AB5cTac(hku-)|K34C!Ne+y&5v4kgxdF%Y$osIUcyX#f=EX!xuiZcyQ zdbOPa(AS17#P_g3ACqxoJwX8HXz>;$@0Pn7TA83I$`SPZz#;jKJ+^{XDip`|zA|>fVnoOi^`7a<9a8FiN(O5!M%yMUoM}Y3s5!;L9 z6AKMmjbhi@cLx$%VK<0dDTr3Uf}0-FC7Ung?pDR?_nKP=A+5&Sz1`0X0*D^|$>Mt^ z9lKDHy3v!)2Xl`d%F;r{-#eepMaxi2!d%Y+}E`rx6C$-VfR55~KG*Ae_yee2?Z zgs$KEq*M>3#tdKo%(+U-%GaXVi-Kn--eG6CJ-Fu;tLypnnAF?*xTweEvR3+y0lnt3 z4N5>;vP(x{8Y0{kG{JhN{0p%f0cOBq>5fI)oK%~}zLlRn^s{9%jjLMLeZir~hWW^+ z#x85=(6)i(-cPH221n#225TdEXirSHbxR!eZ3*{x<{0o%*nr}*TLu?tUj2AJYd$w- zibXxB7{e!OFk1?IcLTFB0$8(Sc>f484>48E11Dd9yY9i=ZHvLy!q&Q_cXA3dE97RphTZ4@+C$D<2 zo%?PQGfQY9G=1K@VV;5+XV3U^+WgCu{n@7~kOTO-4tt_bkb&%l4I*rRj0i!$nT*HF z$`O$sI2y=b-G+s9&g7~|o3PuMy|I4@0>{a%5#p6C!P!oHuz!#T5C2nIa-nE4Sxpf( z^^`|Y{3vs2HN}DltutozlM%yig8-Dr=Z~V-;Y$o=*+N{i@f_Kn6Hg|P39+Yxn;T+ z5hjY8#7Ae-qRLqg7G_8*EXx>5U}{f~4YA?4924<~HP_hLDglCgquPk7$p2x=OT+EZbxkdjag2+)^}Cy)}4;s z`BGNx6I^uNVhX1m7--*?YZMPr3-lVQe1u#d4f&vE-Y6Tpu^V3OQhhn?{>JMGa;0^o z|8RGnN(}|&SKicEf&rrDdnKQq7W&TRf6q##&Dej}5)_`^Rx91W7z+aQ2UTR%6eXJA4vs50%PmHZzhaMGb|zK`;v=t@&yCh~$g8tQV60Cu z^~GyTAG&{%JUFv6zihGQmC$2N*U{yM2J*uE3@mAS4Qya`i8vzPH<{2nDgY~N)`r}a zWB$wp=nL*CpY#$;jVTUR+aM@&cs;F~!2?{Bd#q?${vaSH57PHTlR!14mr)L=3h z$Jn7n^K)t+138!1wZp5UGT%LQ7;gBZO$~|Pofw?RSs`im{J=OxFR87PzCUfV{`vf< zF;3@GR}p3HJP1^gK?S}vvmWp6v)yIiFWK^P8JSZ-A;azlqs*=HXga$|u3Qf8cE!&*3Y^}`Ok zVXvZ!oB(_y=vO= zT#~#Y&!)D-(%zO}fC78F=Q~_G#&-(0XqfUEs{Tzd$GD-UR46PnYFug-1g(YzZTjVo zvXk+R5tJuP+mM`4ZTp5gwtQnRtiv-Q+?L1;4TVhCJD#r0#qic0SQ9;tPY|h03PXCP z)7JLn;QnkuVTtr8sdl!y+h1$q)MaHm%T7=j6zKtTjHP4=&PTwpB>kPtTu`G2MA84y z8ac5NUaHSIu~w1(DW?TnW1ddgm6KJC455Mq=%IYZiMK}JVB)DWpZqMoP&9hk1Hei=1kL~sf~aNS@O~#ucJ?sdX3}i$R&h&3?Z8=O zZGc$67!QC!e`k&6eva_52#Wfa-Vay&6eaM05!kyGg)$iWQW&A0OpoVX*W&2N) zEfs2N7*Q#Nnccv$l3U*6$j^R54gi7tF_K4{>>);7EHQU;P4n*bX)BWfS}iGx1D}hZh3Di+z>h$|GQ) z$Gl{(NL%cv;j^Fw+1^w6)JssyvVVW`0@P@{O_M={-bvK_(up6 zW(h{)Fs-f6wfNIVqRNBq85#6UDusGl+x431M5*fbp1x>Q{!-PU`DY+%aH}@D;qNGJ z0q~Bi!JQfx<|H8@JalpkUu54l`t0CVs2vi*iMyheit&_qfE)S@r$@j7ue}m?xeJP$ z^m5jrI_Dn8V0o#*yqy=0W_ii3gPnPgcs@=j1kAJ&TU{@5em%Qqc^Gn+;^M0FSN!r> zL*KqAi6Jz!qt=lA`gV3(t-q{cee0vRLEcQ?d*HZwKbuQia*xMPETe6UxjNd@vwKeV zi^99*v!eqNp`mz*HgeXew;`=W;Y~Wu;Tj9v!HF}*CRH%n>g~DlSJmpKXh0tuT*c$@ zb~;G#%q#NMaXVfd{fn#_O$xYzolIXyv0x_LeS~@S5+EtO-1xbfl%oTfujd!lp<<0o z-93p?hCG)St+&}HYwEuqfUCeMpG?;mwhnS9iA&+oPj}>xr%g@|8@NC#YBX2*5HE_ zPRMv^>~k3FLW3oLOpl#_d1RRZ^yql|7l?~Q1Oo=KE~yPGmcXiOax!hFPg06~nIOUN z>fa8uM&Q;-`%9PS-=?xM0y>yBm5W5SMYbbFcJb+2EHXU=XIM znEEF9u_Kn{G!^#O@wR|M!3Xx}Q5SGjmN_DN*vXZJ)DN4^e2O8;n7bo3@g9tnQ?9Pl zwu_gK`4}A$yqyCTGCKB^8&RqaeiB6gPWR#2o72wAiQu|@2-3|l z>OE3|wD=h#988nX?v@kG%d#_vem=Z|xp^Z;uS9#qT4$*7N$L`X!roma#g%OFz12eI zJ?mZ_@|)Hj1F~Xj_}*Gfs-hIEW^01w13{|oIOvNew~tV)u!R>34)@^p0F=l@_Y#*jEIs$#i{jtSH#+xGCJ(3y-lyh$m#{lBZA?=sv+NM;-LHf zXuwJp{c2ElMa6~q=l>orL76m#d3=GfMZew%L$vfj@_J(;>=>y$x^bj&q|3%xew_#$ z#AGE1&sl=vJ)GNanoh1MadO<7 zgzc`dRd-!^+1h~9UO{7cHT{IPHEz0-v%3IhmK#n3ExM2@vA> zCi-hx8&;4@$m6d2CR3K~q_L~uX&-hQw%ryZHN@1g9hbu$GK(dn@1Xk;IoeZ}5E61d z7W1ox*BXy?5LHCT zw)K3Jv-Kzx3V?Nl?UhdC{AK>Q$z-J)bUwW>T}7E~M>NHZ<|wYyQP z)|-W=&MVwAH|PhZ&qvtozxsgjrMgBWBJMi`%rEb~Gdr#GaiHn;v!`*FE^hqz=MT<* zencRAk3CbMTdN;5d%JA5|7vRXgyKc6pj~J8%+r*+qddH3LFEh0{hedh6*gY4*oU(3uUs7@0<$MlU>z{4*a(hIaz5I|Ey`8T7c#gh@Csd1`BetKyx4J*6CkBnCSyBD19IV^Vqr7fkJ zZnm!^8E@>Bn*_PryVO5|3!Mk^$9!GCVqIQMK>DMi#_mSjYX_KlKyMPwhY13Dl0o@l z;GaL7nG-_QZt0u48)jgluYLvFzbjrTSJors<&wyN(r4C7g_s{>8aM7*kax@>)9;?i z-n#jWt#l8g4g+8Oa2-W2Jzi|MKJm+2sRxtKEwrZNX_B-Qq$@S5353(>ZVwI#s%-!% zJ^A6GXRK*H7IS!oT-S_2x60SMk&hOaV?*{ospyo!w#;v zs1$i#zylUd>8}XNtLGaQD87^ym`ib#hqRy2Wp|Ob|IJ0!E=%vxJ@u}gR}#+J=;j@xr49np0mZ1KWUr-OqS`_>RE=w zxjN}WL)+r#5)s{+p8oEKM~eX}OURUd;`V~3WX`LM0K9b>Fj|j|pUHBp#hX>w@OwsG zrbjQrgv$d!|F|k@86t0|6fwo)f6p&Z@PId>vUsH1fCOvyFGS^CW=DL7f$GImjq2#{ zV`hiRXAQKvuKdVqd+aVH6%Wm$dlSWe~lfz071`S&&@h*5nhsc!R8nSvW#R8~KCaXNI?478%21Pw*P7S2mJY z?-1`0mX3Uk5GCCN0HAk3$d)Td_Rm)gXa@kjR*p!|$bWJ{)H>Pk)KCJHx%!BS3IQg1 zH5gKSzNPGsf&M(}s1YnIy}B3AzT5WzH5AFz$}z9mJS6ze+PX#hnPrA~-Fhirv8*L4 zXoB+1ghNJ06zaRYd-7k8OBy>Avm1YeCmVm5UHOhrwd6pvizUf;_~$`8IMvC{$O~aE zJL)nTJ~nH){YGLwW$is_+(ur=a64izN1(Hx*F)wd|0WT?F^Te07F+v!jIz|PZvP$( zQ2C#^S4`=D9w!RDrjXfeAyK8n_8z^SFcWmTLwT>PalAqx9%Y}B`=)EgOCAU+AhYK! zHMbkt5yi?rN3i-x$2uw7$sQ2noV_=z z+WMOXnkH<1>o#`b-WN&7?u}8Ie4VdZu%f7eOzc)h5PHMX1~D-Q#Ti1Ry!m~VR7b*O zb;vqm1`J;e*Z$i~9xP|ZU`39}3$mfx2Q}SI{sewonV>|qn;oEe_oWAo^6#66WDh?r zk?66}tf{fqNE_(7{KYy8OLtcIS#6boD%^`X5sAMxy?yBhnC4rFDKC#B3NKFu);brL zxJ9O5D}$yggB@&q1eX~?uu5D~)RdQm!3RVc`7 zGVC;4+`Q7n9kAN}?9uA%J2|Q5L>*q|6=-=r;-8AU+w4O8CO#P;<5JrGoU`G{M!Au8%E3}%mL zAD@HoRB;`gNgMth6H9iZ>G4la3Z6d$`H+=SHpcZZT~H&rest$O;hhy@&<8_Y$+@Sd zf{(GSNjSn!Yn*MpJ>46rTypNgOFJxKrZkhm_Z!>X;Qt>uUo z7-3Q7+XD7$vMVzMwP6yQG=>JPNtQOG3nMIf33W|xtJf{7gl)P%x+>!y6-ur!aK{p$ z;Rz$-f*pz*F^a;1PLYIfbaXjn_!~6^YIOPUtay7rnoT@27}GnYP^#Xhr^4cJ!n zw*G8C{m9+md1(Wsb$;=32WFisAMQZoE;)}$4+)GR2zME zkO}xCC(LRx!r7jr^JeUufyX&oM*AtIs*})-llKx*_Z9Pwv%J3#Xff*q?BS2brNfLS z|6{myXR-6GD+?F+yVMYBLd-2QR(=U`!)Z2#CJTE|8L#=xLPh}n9=Iv{0Jm6r(xZeM zQ-qqCeTNCOe8}KA=eW#-j$H_fjbM*aTo(Z~u%` z+3nJ4w5@Z`kGFiGk$5QOpC>YH4MI%@xWLrB$xBph2Ws2i?qX}mfDe!~ck%L1Q@e*$ z8ZYJHkplr7?Z~e8KYy2{MQlo3fdE*b>#+an9|YX8@s*y16`trd2+gP zqdP(x^IeW%@g76Mw^bo?#?S0XEb&}-LU&t+??mI$>Ln#wx2Y1uzV=O(%cdqb|K zk%c0kwuIyz$B%tIH0_ZKc)d5vf4?+HSh}t9FEo$a}6myl=HjjB&qpmx~TZn0kk-``k#-M4lANJEWdMlq1k z%W^%87+~QJtsH)_=FnQ<-*WxE;Ba?CaSmeV2=n|>(^OR^74CkVm4&k62-|9h`jSTN z*X#9jg?^Fmq1eWNF;6eBc)I}8CodHR5JwpJ3cp?(n<>7xN22E_SeK&1P(8~zi>UHb zTI+Eicl2h>3T8hCM}N@c1R$ML0lum%o*(@wqpl89sT;aqM%T+_1X(ujg}pEBM?V4< z!FZhmEA@VBy;F7^YM3%~aK@viCDi@r`LRH#i}V=hPhhp=k9sEc$Lh?8*$Y5H_fv-% zujt_+_MRn7T1-ig7kve)#a#o{!}GZ@v#Wp4Qn3{wUvdq{fsD2N$a(9Hy`k?*M5B_i zBOmi!St#gg;*NixUYve7ZX7T2TED>R7(C=ESYdw`6onta3&=zf%4)x+s@(ZNaOn)!Bgh-%%*UZNIUDt;7w0Wv-__^ zu!X(*SAKy=-pg;5DOU@&_~~Q0%Hi8CsQ5(Sl!kWd^jAuezu#&?N`zUtzk}D_4X!hr zIeDcR8l!7IxJ8f!=$B4H_TqBBD(9Tw@4a@Xdp86;e$e4Uo(QT14xD4abEQ6tT)iP% zKeCRo6~8rJWsgOF+b>Js81)sKK&x287atyLXnVnT2zG#BSCas8u^by|uCm5Ek49Ok403wy5m|oklu6Jl7)Gwq@G|ayx zkHx%#lgKD9v!N-pE{REUObd6`m-q*5b%SJO?9rEN zRqb?G`8gD4xLSG)*#+kRj(Mr<$5JV!1e9tr@hl~E(rm)RQ#86qnQavwj6Wd=G}XYK z0w_#qOYcv;j2bUDYL$K)`6B*ROd;EG(TmIdVnGHII|mOQAa?sqC)0|$n|3ZXBqALU zB;f_G#rfBLMKmvA=^pxUiS-hE(mZI=J0DbO*Wd+NgZV|W8cX5gXfa0vt`{jPeFYT>x1Zr(^hGRN9&~I+%O6kzg2}f8*@RWOZLc$s1v7@zVuZ-4K*P~*p zA=AAz+m3K|05Gucy5GcSX>q+~+*$5SYzdbz=!3tw=x#cS>PgLd2%JyTR_?u($%;TT z(+t_~>)9F5R(OY(8}@Vbr6w}(#q9Nt=srKUrG(|~JCf!88L$1}%$OA<0&sc3KrvLU zIWh>@PdJSfj$3eRY2T734{kY%oQq4nA&4bdTT7W~{Km~ec${rY63vPuE8g%@wgf4D zOU0qzS86JkE=p~sAnzKl) z=O?wZ?}}Td5=EUGQJTM?5`P_V#KNRSDGj(JbL)0nN7PBL42K%3I3Jk6PH2;ts%UiB ztHgm;Z<)K%`|H_B)EAph_^av}@^`|iD_m<|?LY;&CaH$Ql zJziydW>+A}`-<=*V6f#^2GmnF%z`0q+sHYl zL(p_ng~%$fV<3Y*`~3%hbd_Bko-0MK+(uR6$)@LpdtX0#fE9d*%}}9#;w|+M{bKIM zbO{`x&4mPJX{AWyEMIKjy7&Hkd8v1{jdhblrts2moBRxOqG`}7##j0#o|8V_0lvo> z%raw6S!J_^sq#GAL5?3!dSPm!bsoR9M&Z zh2*t4cxW81eU!%7dZchml^nId8?9f8PfVs|Ov}I6o%*<$_C{eK{qSxeWqecdEDlHA zbYASBYrCD0%#}Vv;ZW20*}2djW!j=D^*Q4;lmCb_llDG;zwSqii#C_YCtLRZpg~c` z%PSppbo--^`Nxn;Y`jECW^I*l5p^4Nd&UMcy!$5m*S3$=oqlu0nOTa$;@y>GpHHpZ zihKQ}1H~h7gKHLEfbZtGM*K7#&6K9+xJw#MO99jHkMPsp9pdhFLx3$=tcv$kw-2JC zp6=R>rBKfvpbw>Qn<+Qpb5&>iAuTb59L}BgxYW4W*%VF1Y5BaKIKm8+hw8~BROwcHbZsH+i)McJ_>r}c5&0)a(K}`c+K(?? zWocT?jPxvwk=m8~?~l%8ePH&4wsd7=_KS*N{=Mrw z?`+e0pFvLq+&5Bx{XZB%fO~@dTU#7XQ<(pM^nSa{sS3|DPFkrhTk7Cau%6@jtL!ovAGRcc!BEjWPepbNZiU|F0gw|1A4| zwSWFU+U+^mljlD8;J_WHpMLoDzlk~j6L9{Eu=)QUaP~FVzB?uP{nMfcAE-Z0SKNLg J{dnvC{{omIo__!U literal 0 HcmV?d00001 From 335eaa29587295b909a17bb98875e9a9c84d2d5f Mon Sep 17 00:00:00 2001 From: andsonder Date: Mon, 11 Nov 2024 20:36:43 +0800 Subject: [PATCH 2/3] [Doc] polish --- docs/16_vllm_source_code/02_preprocess_before_scheduler.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md index a3c3cac..e44f0c5 100644 --- a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md +++ b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md @@ -265,7 +265,6 @@ def _process_decoder_only_prompt( prompt_adapter_request=prompt_adapter_request, ) ``` -```plain `_extract_prompt_components` 方法负责提取其组成部分(例如:token ids,文本等),详细介绍见注释: From 148ecdb800a317bce910effdbfcb2ed589d9aaa3 Mon Sep 17 00:00:00 2001 From: andsonder Date: Mon, 11 Nov 2024 20:47:50 +0800 Subject: [PATCH 3/3] [Doc] polish --- .../02_preprocess_before_scheduler.md | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md index e44f0c5..427d4f9 100644 --- a/docs/16_vllm_source_code/02_preprocess_before_scheduler.md +++ b/docs/16_vllm_source_code/02_preprocess_before_scheduler.md @@ -443,13 +443,32 @@ def _create_sequence_group_with_sampling( return seq_group ``` +### 3.4 深入理解 SequenceGroup -`SequenceGroup` 的主要作用是管理一组从**同一个输入 prompt 生成的多个序列**。这在需要生成多个候选输出的场景下非常有用,比如并行生成多个样本以供选择或进行抽样,或者在模型生成过程中需要对同一个输入应用不同的策略(如采样参数)。该类能够追踪这些序列的状态、进度以及它们之间的关系。它通过对序列组的有效管理,确保每个序列可以在多步骤的生成过程中同步推进。 +:::tip + +本小节参考了很多 [1] 中的内容, 感谢作者的分享。 + +::: + +SequenceGroup 就是一个“1 个 prompt -> 多个 outputs”的容器。它包含一组“prompt -> output”的序列(我们称之为 seq,每个 seq 其实就是一个 Sequence 实例),每个 seq 会在推理过程中经历不同的状态(status)。这些状态为调度器提供了关键信息,让 vLLM 知道每个 seq 在什么时候、什么情况下应该做什么。 + +:::note + +在 vLLM 中有一个重要假设:同一个 SequenceGroup 中的所有 seq 共享同一个 prompt。换句话说,一个 prompt 会生成多个不同的 outputs,但它们都来自同一个来源。 + +::: + +在自然语言处理任务中,经常需要一个 prompt 生成多个不同的 outputs。例如,给定一个问题,我们可能想要生成多个回答,或者在文本生成中提供不同的句子结尾。这种需求是因为: + +- 多样性:我们想要看到不同的可能输出,以便选择最适合的。 +- 批量推理:在实际应用中,为了提高效率,我们往往批量生成多个候选输出,这样可以一次满足多个需求。 + +于是,SequenceGroup 就是一个用于管理“一次 prompt 生成多个 outputs” 的容器。它能够把多个生成任务(seq)打包在一起,从而让系统知道这些 seq 是由同一个 prompt 产生的。 -`SequenceGroup` 有下面几个应用场景: +此外 SequenceGroup 还有帮助调度器灵活控制任务的计算状态的作用。在大规模推理时,GPU 资源可能会不足,尤其是当任务量大、生成输出的数量多时。如果 GPU 内存不够用,系统就得灵活管理这些计算资源——也就是“抢占”(preemption)机制。 -1. 多序列并行生成:在处理需要生成多个候选输出的任务时,如使用不同的采样策略(beam search, temperature sampling 等),SequenceGroup 可以管理每个不同策略生成的序列。这在语言模型的推理中很常见。 -2. 跟踪生成进度:在长文本生成任务中,生成可能需要多轮迭代。每轮生成的状态需要被保留并继续使用。SequenceGroup 通过管理序列的状态(如是否已经完成生成、当前阶段是 prefill 还是 decode 等),可以高效跟踪多个序列的生成进度。 +如果资源不足,SequenceGroup 中的所有 seq 可以一起被“swap out”到 CPU 中,等资源充足时再一起“swap in”,恢复计算。 换句话说,SequenceGroup 帮助系统“打包”了同一个 prompt 生成的多个 outputs,便于调度器做成批管理,而不是一个个零散管理。这样既避免了大量的小任务在内存中频繁进出,又可以在有资源时迅速恢复计算,提高了 GPU 利用率。 到此,输入的预处理工作就完成了,我们成功的将用户的请求转换为了 `SequenceGroup` 对象,`SequenceGroup` 对象包含了多个 `Sequence` 对象,且存储了用户请求的信息,包括请求的唯一 ID、请求的到达时间、采样参数等。