From 62bf8d630d98a231924f6219b9f53e2ce2879d5b Mon Sep 17 00:00:00 2001 From: Hongsheng Liu Date: Thu, 6 Aug 2026 23:21:43 +0800 Subject: [PATCH] docs: document distributed layerwise offload compatibility (#5839) Signed-off-by: Hongsheng Liu --- .claude/skills/add-diffusion-model/SKILL.md | 2 +- docs/.nav.yml | 8 +- .../l4_functionality_tests.inc.md | 2 +- .../model/adding_diffusion_model.md | 2 +- .../feature/distributed_layerwise_offload.md | 156 +++++++++++ docs/design/feature/quantization.md | 249 ++++++++++++++++++ docs/design/feature/ray_based_execution.md | 59 ----- docs/design/figures/dlo/dlo_pipeline.gif | Bin 0 -> 199698 bytes docs/design/index.md | 4 +- ...pu_offload_diffusion.md => cpu_offload.md} | 41 ++- docs/user_guide/diffusion_features.md | 10 +- docs/user_guide/quantization/overview.md | 3 + mkdocs.yml | 2 + recipes/cosmos3/Cosmos3-DistOffload.md | 28 +- 14 files changed, 471 insertions(+), 95 deletions(-) create mode 100644 docs/design/feature/distributed_layerwise_offload.md create mode 100644 docs/design/feature/quantization.md delete mode 100644 docs/design/feature/ray_based_execution.md create mode 100644 docs/design/figures/dlo/dlo_pipeline.gif rename docs/user_guide/diffusion/{cpu_offload_diffusion.md => cpu_offload.md} (88%) diff --git a/.claude/skills/add-diffusion-model/SKILL.md b/.claude/skills/add-diffusion-model/SKILL.md index 63382e76f..bae8cd1b5 100644 --- a/.claude/skills/add-diffusion-model/SKILL.md +++ b/.claude/skills/add-diffusion-model/SKILL.md @@ -309,7 +309,7 @@ For Omni or custom models, create: Required updates: 1. `docs/user_guide/diffusion/parallelism/overview.md` — parallelism support overview/table -2. `docs/user_guide/diffusion/cpu_offload_diffusion.md` — if CPU offload supported (add to supported models table) +2. `docs/user_guide/diffusion/cpu_offload.md` — if CPU offload supported (add to supported models table) 3. `docs/user_guide/diffusion/cache_acceleration/teacache.md` — if TeaCache supported 4. `docs/user_guide/diffusion/cache_acceleration/cache_dit.md` — if Cache-DiT supported 5. Offline example docs under `examples/offline_inference//` (`README.md` or category-specific `.md`) diff --git a/docs/.nav.yml b/docs/.nav.yml index 8c9b614dc..ca17d550d 100644 --- a/docs/.nav.yml +++ b/docs/.nav.yml @@ -68,12 +68,12 @@ nav: - Sequence Parallel: user_guide/diffusion/parallelism/sequence_parallel.md - Tensor Parallel: user_guide/diffusion/parallelism/tensor_parallel.md - VAE Parallelism: user_guide/diffusion/parallelism/vae_parallelism.md - - CPU Offloading: user_guide/diffusion/cpu_offload_diffusion.md + - CPU Offloading: user_guide/diffusion/cpu_offload.md - LoRA: user_guide/diffusion/lora.md - Custom Pipeline: features/custom_pipeline.md - Execution Modes: user_guide/diffusion/execution_modes.md - Quantization: - - Overview: user_guide/quantization/overview.md + - Quantization: user_guide/quantization/overview.md - Online Quantization: user_guide/quantization/online.md - Quantized KV Cache: user_guide/quantization/quantized_kvcache.md - FP8 W8A8: user_guide/quantization/fp8.md @@ -106,7 +106,6 @@ nav: - Feature Design: - Runtime and Stage Execution: - Disaggregated Inference: design/feature/disaggregated_inference.md - - Ray-based Execution: design/feature/ray_based_execution.md - Async Chunk: design/feature/async_chunk.md - Async Diffusion Output: design/feature/async_diffusion_output.md - Async Omni Output Materialization: design/feature/omni_async_output_materialization.md @@ -130,10 +129,11 @@ nav: - VAE Patch Parallelism: design/feature/vae_parallel.md - Attention Backends: - Skip-Softmax: design/feature/skip_softmax.md - - Quantization: user_guide/quantization/overview.md + - Quantization: design/feature/quantization.md - Cache-DiT: design/feature/cache_dit.md - TeaCache: design/feature/teacache.md - Diffusion Continuous Batching: design/feature/diffusion_continuous_batching.md + - Distributed Layerwise Offload: design/feature/distributed_layerwise_offload.md - Infrastructure and Performance: - Prometheus Metrics: design/metrics.md - Speech Generation Performance Optimizations: design/qwen3_omni_tts_performance_optimization.md diff --git a/docs/contributing/ci/test_examples/l4_functionality_tests.inc.md b/docs/contributing/ci/test_examples/l4_functionality_tests.inc.md index d390a603a..5e65d2f48 100644 --- a/docs/contributing/ci/test_examples/l4_functionality_tests.inc.md +++ b/docs/contributing/ci/test_examples/l4_functionality_tests.inc.md @@ -1,6 +1,6 @@ **Scope** -For diffusion models, the L4 functionality test covers all or common *diffusion features* that are supported by this model, including several [parallelism acceleration methods](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/parallelism_acceleration/), [CPU offloading](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/cpu_offload_diffusion/), [TeaCache](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/teacache/) and [Cache-DiT](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/cache_dit_acceleration/) cache backends, [quantization methods](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/quantization/overview/). +For diffusion models, the L4 functionality test covers all or common *diffusion features* that are supported by this model, including several [parallelism acceleration methods](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/parallelism_acceleration/), [CPU offloading](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/cpu_offload/), [TeaCache](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/teacache/) and [Cache-DiT](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/diffusion/cache_dit_acceleration/) cache backends, [quantization methods](https://docs.vllm.ai/projects/vllm-omni/en/latest/user_guide/quantization/overview/). **Test Case Design** diff --git a/docs/contributing/model/adding_diffusion_model.md b/docs/contributing/model/adding_diffusion_model.md index dd7dfbd6b..678797652 100644 --- a/docs/contributing/model/adding_diffusion_model.md +++ b/docs/contributing/model/adding_diffusion_model.md @@ -824,7 +824,7 @@ omni = Omni(model="your-model", ### CPU Offload -See detailed guide: [CPU Offloading for Diffusion Models](../../user_guide/diffusion/cpu_offload_diffusion.md) +See detailed guide: [CPU Offloading for Diffusion Models](../../user_guide/diffusion/cpu_offload.md) vLLM-Omni provides two offloading strategies to reduce GPU memory usage: diff --git a/docs/design/feature/distributed_layerwise_offload.md b/docs/design/feature/distributed_layerwise_offload.md new file mode 100644 index 000000000..da735d60b --- /dev/null +++ b/docs/design/feature/distributed_layerwise_offload.md @@ -0,0 +1,156 @@ +# Distributed Layerwise Offload + +This document describes distributed layerwise offload (DLO) for diffusion +models. DLO keeps only a small number of DiT blocks on the accelerator and +streams the remaining blocks from host memory. The distributed backend can +either shard those host-side weights across an existing parallel group or keep +the standard loader's rank-local weights and avoid an additional collective. + +For user-facing commands, see the +[distributed layerwise offloading guide](../../user_guide/diffusion/cpu_offload.md) +and the [Cosmos3 recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/cosmos3/Cosmos3-DistOffload.md). + +## Status + +DLO is implemented for multi-device diffusion execution. The default +AllGather path is the primary path for DP and SP deployments. The +`--dlo-no-use-allgather` path is a rank-local compatibility mode: it is useful +for standard-loader sharding, workstation bring-up, and systems where an +additional DLO collective is undesirable, but it does not reduce host weight +storage across ranks. + +The compatibility matrix below describes the current implementation. The +unit-level guards are covered, but not every parallelism combination has a +full model-and-hardware end-to-end test. + +## Design + +### DLO consumes the existing parallel topology + +DLO does not create a new DP, TP, or SP topology. It reads the configured +`DiffusionParallelConfig` and attaches offload hooks to the DiT blocks after the +standard distributed groups have been initialized. + +The DLO weight-sharding group is selected as follows: + +1. Use the existing DP group when `data_parallel_size > 1`. +2. When DP is one and SP is greater than one, use the SP group. +3. Otherwise, run rank-locally without a DLO process group. + +TP is deliberately not used as DLO's AllGather group. HSDP has its own +parameter-sharding lifecycle and is not allowed to be sharded a second time by +DLO's AllGather path. + +### AllGather path + +With the default `dlo_use_allgather=True`, each rank stores approximately +`1 / group_size` of each streamable block in pinned host memory. The next +block's shard is copied to a device buffer and reconstructed with +`all_gather_into_tensor` on a communication stream while the current block is +executing. + +```text +Compute: [Block N] [Block N+1] [Block N+2] +H2D: [shard N+1] [shard N+2] +AllGather: [full N+1] [full N+2] +Buffers: [current slot] [prefetch slot] [current slot] +``` + +![DLO double-buffer prefetch pipeline](../figures/dlo/dlo_pipeline.gif) + +The backend uses two shared device buffers, so accelerator weight residency is +bounded by the largest streamed blocks rather than the complete model. + +When DP is greater than one, the engine can process one request per DP rank in +the same denoising wave. Because AllGather is a collective, all participating +requests must take the same execution path at every denoising step. + +### Rank-local path without DLO AllGather + +With `--dlo-no-use-allgather`, DLO forces its internal offload shard size to +one. The regular model loader remains responsible for preparing each rank's +weights, including TP-local tensors or HSDP-managed parameters. DLO then +streams those rank-local tensors block by block using H2D copies only. + +This mode means: + +- DP still provides independent replicas, but DLO does not shard weights + across DP ranks. +- SP still performs its normal activation/attention collectives, but DLO does + not shard weights across SP ranks. +- TP/HSDP/SP collectives, if configured, are not disabled by this flag; only + DLO's additional weight AllGather is disabled. +- Pure DP deployments keep a full host-side model copy per rank, subject to + shared OS page-cache behavior. +- The scheduler does not require a synchronized DP request wave for DLO. + +This path is intentionally not implemented by reusing the AllGather mmap +loader. It relies on the standard loader so model-specific TP/HSDP transforms +remain intact. + +## Parallelism compatibility + +| Parallelism | DLO + AllGather | DLO without AllGather | +|---|---|---| +| **DP** | Supported primary path. DLO shards host weights across the DP group and can run DP multi-concurrency. | Supported rank-local path. DP replicas remain independent; no DLO weight sharding or cross-DP DLO collective. | +| **SP** | Supported in the implementation. With DP=1, DLO uses the SP group for host-weight sharding; SP still shards sequence/activation work. | SP remains active, but DLO keeps standard-loader rank-local weights and adds no SP weight collective. | +| **TP > 1** | Unsupported in the DLO mmap path. TP-aware loader callbacks are bypassed, so the backend rejects this configuration when it enters that path. | Standard loading is retained and TP-local tensors can be streamed. This is the intended compatibility path, but it still needs broader model and hardware validation. | +| **HSDP** | Rejected. HSDP has already sharded parameters, so DLO AllGather would double-shard them. | Accepted by configuration. HSDP owns parameter sharding and its own gathers; DLO only stages rank-local parameters. End-to-end coverage is limited. | + +### Combined dimensions + +- **DP + SP:** DLO uses the DP group for weight sharding when DP is greater + than one; SP continues to use its own sequence-parallel group. If DP is one, + the SP group becomes DLO's sharding group in AllGather mode. +- **DP + TP/SP without AllGather:** standard model loading defines the + rank-local tensor layout. DLO adds no cross-DP, cross-TP, or cross-SP weight + collective. +- **HSDP + SP:** the general parallel configuration permits HSDP over SP, but + DLO must use `--dlo-no-use-allgather`. HSDP remains responsible for weight + materialization and synchronization. +- **HSDP + DP or TP:** rejected independently by the diffusion parallel + configuration. + +## Request and loading constraints + +AllGather DP multi-concurrency requires: + +- explicit `num_inference_steps`; +- the same `num_inference_steps` for all requests in a wave; and +- identical request arguments that affect the collective execution path. + +The no-AllGather path does not impose these DLO-specific synchronized-wave +requirements. + +The mmap loader is used only by the supported DLO+AllGather path when the +model has a compatible checkpoint layout. Online quantization is incompatible +with that sharded mmap path; use `--dlo-no-use-allgather` or disable online +quantization. Models that do not meet the mmap requirements use the regular +loader path. + +## Validation coverage + +Current source-level validation includes: + +- HSDP + DLO + AllGather rejection; +- HSDP + DLO without AllGather acceptance at configuration level; +- TP rejection in the DLO+AllGather mmap path; +- resident-layer requests requiring no-AllGather; +- DP request-wave validation for denoising-step compatibility; +- sharding, double-buffer, AllGather-size, and heterogeneous-block regression + tests. + +The highest-value missing coverage is end-to-end numerical comparison against +ordinary layerwise offload for DP+SP, TP+no-AllGather, and HSDP+SP+no-AllGather +on the target CUDA/NCCL or CANN/HCCL hardware. + +## Recommendations + +- Use **DP + DLO AllGather** for the supported throughput and host-memory + scaling path. +- Use **SP + DLO AllGather** for long-sequence workloads when DP concurrency is + not the goal. +- Use **no-AllGather** to bring up TP or workstation PCIe configurations, with + the expectation of higher host-memory use and lower validation confidence. +- Prefer **HSDP alone** for production HSDP deployments until the combined + HSDP + DLO no-AllGather path has broader end-to-end coverage. diff --git a/docs/design/feature/quantization.md b/docs/design/feature/quantization.md new file mode 100644 index 000000000..37dd5e26b --- /dev/null +++ b/docs/design/feature/quantization.md @@ -0,0 +1,249 @@ +# Quantization + +This document describes the quantization architecture in vLLM-Omni and the +extension points for contributors. For user-facing configuration, supported +hardware, and method-specific instructions, see the +[quantization user guide](../../user_guide/quantization/overview.md). + +## Goals and scope + +The design has four goals: + +1. Provide one `quantization_config` entry point for diffusion-only, + multi-stage omni/TTS, and multi-stage diffusion models. +2. Reuse vLLM's quantization registry and `QuantizationConfig` contract where + a vLLM backend already provides the required behavior. +3. Allow different components of one pipeline to use different quantization + configurations. +4. Preserve the distinction between online quantization of a BF16/FP16 + checkpoint and loading a pre-quantized checkpoint with serialized scales. + +This document covers configuration resolution, component routing, model +integration, backend extension, and validation. Kernel implementations and +user-facing support matrices are outside its scope. + +## Architecture + +The quantization path is split across the following layers: + +| Layer | Responsibility | Source | +| --- | --- | --- | +| Public API | Exposes `build_quant_config`, component routing, and backend registration | `vllm_omni/quantization/__init__.py` | +| Factory | Normalizes method names, selects Omni overrides or vLLM registry backends, detects ModelOpt configs, and reconciles checkpoint metadata | `vllm_omni/quantization/factory.py` | +| Component router | Resolves a quantization config from a layer prefix using longest-prefix matching | `vllm_omni/quantization/component_config.py` | +| Method configs | Implement `QuantizationConfig` and select the platform-specific linear method | `vllm_omni/quantization/*_config.py` | +| Diffusion configuration | Stores the canonical runtime config and propagates checkpoint configuration | `vllm_omni/diffusion/data.py` | +| Worker and model integration | Passes the resolved config into vLLM's model configuration and model layers | `vllm_omni/diffusion/worker/diffusion_worker.py` and `vllm_omni/diffusion/models/` | + +The runtime contract remains vLLM's `QuantizationConfig`: + +```text +user/CLI or model config + | + v +OmniDiffusionConfig.quantization_config + | + +--> build_quant_config() + | | + | +--> Omni override + | +--> vLLM registry backend + | +--> ComponentQuantizationConfig + | + +--> checkpoint metadata reconciliation + | + +--> diffusion worker / vLLM config + | + +--> model layers call get_quant_method(layer, prefix) +``` + +The model layer receives either a method implementation or `None`. Returning +`None` leaves that layer unquantized. + +## Configuration resolution + +`build_quant_config()` accepts the following forms: + +| Input | Resolution | +| --- | --- | +| `None` or `"none"` | Disable quantization. | +| Method string, such as `"fp8"` | Resolve an Omni override first, then the vLLM quantization registry. | +| Flat dictionary with `method` or `quant_method` | Normalize the method and construct its `QuantizationConfig`. | +| Per-component dictionary | Construct a `ComponentQuantizationConfig`. | +| Existing `QuantizationConfig` | Pass through without rebuilding it. | + +Method aliases are normalized case-insensitively, with `-` and `_` treated as +equivalent. `auto-round` and `auto_round` use the Omni INC/AutoRound adapter. +ModelOpt checkpoint metadata is detected from its method, producer metadata, or +`quant_algo`, then mapped to the corresponding vLLM ModelOpt configuration. + +The factory uses Omni-specific overrides for methods whose diffusion behavior +or platform dispatch is not provided by the vLLM registry. The current override +set includes INT8, BitsAndBytes, MXFP8, MXFP4, MXFP4 dual-scale, and INC/ +AutoRound. Other methods, such as FP8, GGUF, and ModelOpt, are resolved through +vLLM's registry when their configuration is compatible. + +## Per-component routing + +Multi-stage models do not necessarily want one quantization policy for every +module. A component map expresses that policy without requiring each pipeline +to construct separate vLLM configurations: + +```python +quantization_config = { + "transformer": {"method": "fp8"}, + "vae": None, + "default": None, +} +``` + +`ComponentQuantizationConfig` applies the following rules: + +1. Component keys are interpreted as runtime layer-prefixes. +2. The longest matching prefix wins. +3. `None` disables quantization for the matching component. +4. `default`, when present, handles prefixes with no explicit match. +5. A matching child config delegates to its normal + `get_quant_method(layer, prefix)` implementation. + +Prefix matching happens after the model's weight-name mapping. New model +integrations must verify the actual runtime prefixes, especially when a +`WeightsMapper` changes checkpoint names. A prefix mismatch can silently route +a layer to the default configuration, so component-routing tests should cover +both positive matches and fall-through behavior. + +## Online and pre-quantized checkpoints + +The same method name can represent two different loading paths: + +- **Online**: the source checkpoint contains BF16/FP16 weights; the method + creates quantized weights or scales while the model is loaded. +- **Pre-quantized**: the checkpoint contains quantized weights and the metadata + required by the method; the loader consumes those serialized tensors. + +Method configuration owns the mode flag, for example +`is_checkpoint_int8_serialized` or `is_checkpoint_mxfp8_serialized`. The +configuration's `get_quant_method()` selects the corresponding linear method. + +For pipelines with transformer-specific `config.json` files, such as cascade +models, `resolve_quant_config_from_disk()` reconciles the active configuration +with each transformer's checkpoint metadata. Its invariants are: + +- If no active configuration exists, valid checkpoint metadata can be used for + auto-detection. +- A method mismatch is an error rather than an implicit conversion. +- Serialized-checkpoint flags rebuild an online configuration into the + matching offline configuration. +- Checkpoint-specific `ignored_layers` are preserved by rebuilding the active + configuration when they differ. +- AutoRound MXFP8 metadata (`data_type="mx_fp"`) selects its offline path. + +This prevents a model from interpreting serialized weights with an online +loader or silently applying the wrong method to one transformer in a +multi-transformer pipeline. + +## Model and layer integration + +Diffusion model constructors receive the resolved configuration and pass it to +quantizable vLLM layers. Each method configuration is responsible for: + +- identifying supported layers in `get_quant_method()`; +- creating the correct parameter shapes and loaders; +- processing weights after loading when conversion is required; and +- applying the platform-specific quantized operation at runtime. + +Model code must keep precision-sensitive or unsupported modules unquantized. +The shared `safe_quant_config()` helper is used by model integrations for +normalization and modulation layers where a generic FP8 configuration would be +unsafe. Text encoders, audio/vision encoders, VAEs, schedulers, and tokenizers +are not implicitly quantized just because the main transformer is quantized; +they require explicit component routing and method support. + +Weight quantization and quantized KV cache are separate paths. The former is +resolved through `quantization_config`; runtime attention/KV-cache quantization +is configured by the diffusion attention configuration and must be validated +independently. + +## Platform and parallelism boundaries + +Platform checks belong in the method implementation rather than in the common +factory. This keeps configuration parsing portable while allowing CUDA, NPU, +and XPU methods to select different kernels or reject unsupported execution at +model construction time. The user guide is the source of truth for the current +hardware support matrix. + +Quantization methods must also respect the weight layout produced by the +configured parallelism strategy: + +- Tensor-parallel layers may receive partitioned weight shapes and loaders. +- Sequence-parallel execution changes activation movement but does not by + itself change the quantization configuration. +- Data-parallel replicas build their own method state; quantization metadata + must be available consistently on every rank. +- `WeightsMapper` transformations must be applied before matching ignored-layer + lists or component prefixes. + +Distributed layerwise offload has an additional boundary: its sharded mmap +AllGather path is not compatible with online quantization because the path +expects already materialized checkpoint weights. Use the rank-local +`--dlo-no-use-allgather` path or a compatible pre-quantized checkpoint when +combining these features. See the [DLO design document](distributed_layerwise_offload.md) +for the full compatibility matrix. + +## Adding a quantization backend + +Contributors should follow this sequence: + +1. Check whether an existing vLLM backend can provide the required weight + format and kernel behavior. Prefer reuse over a duplicate Omni backend. +2. If Omni-specific behavior is required, implement a `QuantizationConfig` and + its `QuantizeMethodBase`/linear method in `vllm_omni/quantization/`. +3. Implement `get_name()`, supported activation dtypes, minimum capability, + checkpoint parsing, ignored-layer handling, and `get_quant_method()`. +4. Add a lazy factory override in `factory.py`. Keep optional platform + dependencies out of package import paths and normalize aliases to one + canonical method name. +5. If the method is pre-quantized, define the checkpoint metadata and the + serialized loading path before adding an online path. +6. Add model-specific component routing only when the model contains stages + that must use different policies. +7. Document user-visible configuration in the quantization user guide and keep + implementation rationale here. + +The public factory registration hook, +`register_quantization_override(method, builder)`, is intended for integrations +that need to register an Omni-compatible builder without changing the vLLM +registry. + +## Validation + +Validation should cover the complete path, not only whether a config object can +be instantiated: + +| Area | Required checks | +| --- | --- | +| Factory | Strings, aliases, flat dictionaries, invalid inputs, passthrough, and component maps | +| Method config | Online/offline selection, ignored layers, platform guards, and weight loading | +| Checkpoint metadata | Auto-detection, method mismatch errors, serialized flags, and per-transformer metadata | +| Model integration | Correct quantization scope, unquantized components, and parallel weight layouts | +| Numerical quality | Same-seed BF16 versus quantized output comparison at representative resolutions and step counts | +| Performance | Peak device memory, generation latency, and any backend-specific throughput metric | + +The unit tests live under `tests/diffusion/quantization/`. The trajectory +similarity tool in +`vllm_omni/quantization/tools/compare_diffusion_trajectory_similarity.py` +provides a repeatable quality and memory comparison for diffusion models. +Method support and feature combinations remain model- and hardware-dependent; +passing factory tests alone does not establish production support. + +## Design invariants + +- `quantization_config` is the single runtime source of truth after config + normalization. +- A checkpoint method mismatch fails loudly instead of risking weight + corruption. +- Components without an explicit supported quantization path remain in their + original precision. +- Optional backend dependencies are imported lazily. +- Method implementations own platform-specific capability checks and kernels. +- User-facing support claims require model, hardware, numerical, and memory + validation in addition to configuration-level tests. diff --git a/docs/design/feature/ray_based_execution.md b/docs/design/feature/ray_based_execution.md deleted file mode 100644 index 4f4caa642..000000000 --- a/docs/design/feature/ray_based_execution.md +++ /dev/null @@ -1,59 +0,0 @@ -# Distributed utils - -This directory (vllm_omni/distributed/ray_utils) contains utilities for distributed execution in vllm-omni, supporting both **Ray** and **Multiprocessing** backends. -## 1. Installation -```bash -pip install "ray[default]" -``` -## 2. Ray Utils - -The `ray_utils` module provides helper functions for managing Ray clusters and actors, which is essential for: -* **Multi-node deployment**: Running pipeline stages across different physical machines. -* **Resource management**: Efficient GPU/CPU allocation. - -### 2.1 Basic Usage - -To use the Ray backend, specify `worker_backend="ray"` when initializing the engine. - -**Command Line Example:** -```bash -vllm serve Qwen/Qwen2.5-Omni-7B \ - --omni \ - --port 8091 \ - --worker-backend ray \ - --ray-address auto -``` - -### 2.2 Cluster Setup - -**Step 1: Start Head Node** -Run this on your primary machine: -```bash -ray start --head --port=6399 -``` - -**Step 2: Connect Worker Nodes** -Run this on each worker machine: -```bash -ray start --address=:6399 -``` - -> **Tip**: For a complete cluster setup script, refer to the vLLM example: -> [run_cluster.sh](https://github.com/vllm-project/vllm/blob/main/examples/online_serving/run_cluster.sh) - -### 2.3 Distributed Connector Support - -When running on Ray, the system automatically adapts its communication strategy: - -* **Cross-Node**: Recommended to use `MooncakeTransferEngineConnector` (RDMA, fastest) or `MooncakeStoreConnector` (TCP fallback). -* **Same-Node**: Can still use `SharedMemoryConnector` for efficiency, or Ray's native object store (plasma). -* **SHM payload routing**: `SharedMemoryConnector` always stores payloads in `/dev/shm`. - -### 2.4 Internal Helpers - -* **`initialize_ray_cluster`**: Connects to an existing Ray cluster or starts a local one. - -## 3. Troubleshooting - -* **Connection Issues**: Ensure the Ray head node is accessible and ports (default 6399 in this example) are open. -* **Version Mismatch**: Ensure all nodes run the same version of Ray and Python. diff --git a/docs/design/figures/dlo/dlo_pipeline.gif b/docs/design/figures/dlo/dlo_pipeline.gif new file mode 100644 index 0000000000000000000000000000000000000000..cc206d03b5c5fc0a62acdf60e5fd771a6b6f07ba GIT binary patch literal 199698 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 z z#iCfoE%Y+=V=nGpaKz4=BbQc>ogYx52_B^@QkokPx;rICaJ^r(K0e9?1KI^OQZIBv zL>@8@TRMbc;ln{&G$bj6Sj7xPGt`tRP%=B%bo(1JEs0?vT~;T7 zchOT4;?St_7eWs}uJUJB<`nmUHjepI_tKoQ1_+|#D}Hb!t09rSfZh~=bS?rcjspAn zsj0~(J9_f2~P`@RSa6G)j8h=?CB zqsL3WikH460CCH+j|GrWk8)eC1SoB=`ZBUw$`Z`q`GYsyC1V5p_4&c#Yiu!ubmlHV zfn02Zlp89;UJaprK_=~4jEfRMaf3;6kk4GPp0b(mRaz_iOk=ZCzMyd37T1jqse3H-h@?LjeBj+W@4 z646kY96eqh?=yH5>spvP8-Y|Or*2MY>qS`X3YSSPQuqbw-VB+!e?)@6U@`$HzBdY4 zmnb$R$jk2S_DbY4xPaNX=tn!|5&o#GD!!sGE-wS50*FG$SXM*)o0SOY$yx6s z(M1JB&G`GT%`gwu$8it_qOp_am2_0!PL9##kmi*og8vCRf|Gc|icWF95z@6X8c5Hx=v)c1^r{dT-ss8dlHG z$i$x28_A6RHqY@ zz8bb|e_9a?+SSfC8|SIX?Ey+tB6K-1SmSiscDZ5Nk{E13Ew1bqFY$S{;O!sNQRv0; zR)b`698lq4jnwRw&;oUFxN%s%1$|PYMUK_Zo26%B*&?QTnwS1>X!!}JJ<59# z<^7H2fCgmvs(h59V%)1dx72&es{+t~%>DNVMV%(fYOf+gYoGiIiq4xlqrJqBEp_bD zr~1dBs4%H_4WI$B%ddXcRqYU54d1D%#;n#Q{cEOB^{<)2<9}i$zT@=2=Q#huO15_a zO7a_*7#EYc6fFb91i&Q#A_0gAfJ=TWSN|E80GUF7m^d_20LelCmjL0y-^675Xd!Rd z7swYT^*Fe8QF}Ki{1G(#J3y(NjQ(@k_HRMM*`2=SVx1@Dlvd^Rj#WGXEt=u&Mt?>s z1tYN5g**VP^sUzXi>>@Ok%j+x#{#S*@&9F}Q14%v!hbJQ_}iLl>3|n8u^RS=HC3vG zEG|;;4{ItzkkucV!kGKQdh0QNSW}hwCz#|kd45?_UCEdqh}s(bvZj(RCt||4zX8_N z)T|^F8~b0@)XVIY=fA9}{p~8htf_`(?tlyxu%^mQJw?EOWeQ_)RAX{O{?DzcOA3T} zPAE_QVoe20R)WylA8=Mg3_g11RPzN`r3#&POWT9YzvX=QxNGX$enWQ@U`^Fce8$tb znA`Wg`J{TC$Mm4v7_g>Zz4~EtX~y~D6EbP~*e6#M$Ne@`z?v$L-c#WG0sB5+O$}5P z=BpvL+B@vT@BDCBP5s7^zn%V*P<1tP)*gQgd(#KkYG9S>rM-|b>B}ks+O*>#8IiLZ zPl=kznh{x6r}zFHHy zP5FD1J+>`Epk>VU4--#E2E>t8?$e^O>=%? z&bcDGF2HJja~+$w*J?O`<_z5odiHz|LaqgcBjaadfcT%3W9w-`hC3-gVpa>y^>MpV zg@8~b(HdVp)P(3DO<%!^L@qp`!p8!@T!+s6;%`4*_U^PnNI-2B`x)bh=S&lpiP|okiZ_z~%Jbw;Xg=OAWPlLyAhl2)>7j%pS zKkpoVcmEi^R84bH|Ct*Wg2iV^FipnIDvTGVlWqyZ_V`>8+GeoYNq?3!{`sE2Hr&-` z{=|f^^@O-8z)^kOHmR4Ph#vR(kod}GWf3wmYBrLa3Fr!Fi*jD}(y6;i2qU7z0>R|Ho1-uu8SCA%5O48u{*3k=pN4?a({7x`D;- zUgu5AK&iGz?eD8pe=61fUtOgdTqS9`05XMD5l_|EDE^x=g-`jbJ`O)gTF7{+3z2+! z;_7`S5Ya@qb$ens8XutH0UfdnBx)Rcv^1Yb-?DnGju@BB94X*yu{yM)Pzl};Y)9vI z(0FkrpTqOIMWZ5Huk6Yi=69NM%C&1a{eQGd^(#}DcD?X>l?uodUN0U*)irNE{9C3_ zHxP*|d-*E}uf7dU!x@$aLcM0;!}VH*{WVj_{0=FQm8wfJrM_Ea*d^RNy;H&Y0__37 zO44rD+3rLdI^7Qraq)6iXxU(cPc@Da^EVqpn($8JVGF`GDu9(-4N-r0$b3Ari5t=| znoRR5mr|-z`LXzyBD0r8_isD2iyEh%K0hs^z1=jP_L^>yUMUaG*s)^u4jl4xD=aeI z$FudG5Blj=FJkchC7Rdb{u1qgC*}`NTCdJ<0Go7T9>CvUEo0$jja5>pglI}mla6?R zr2Ld)lYPKvW}Y`hS4Vq&&Ff-cFS{90PS)^!S5?ft&a-KhOYtOk0h!Q(4^v>M=dF`v z*7@w0pOTc5E#4mY-M`-XX%gf61&4ffTciEts;bo*mGZ`I^FHm>2nNAv=kwcLbEPY> zxu17aO+RjTU|A1VNhQ7w{J8oePqT-p6T6%pq59-5$h3*3aW&TJcXj7}rz`U2=cXBG z%k5SKcB2ndV}+sDn_()uqs_oBPhk&9;RGJ$M8)nT9`MsdxM&ZI%Fc|2%>!4)gI?5} zk?jqohyP)sf7oMxt`Kt`<(G710V_fQ@n`|UGw=h_H-h#461`@;bgt}Le=XH|1d3O_ zlr=DyXmbHpsc?cJng-?%VqEmK@{p%`~=v!$RMD!r&*D4iRFwm&| zwMyj??2!`eRUhm#6YO^p40LJzMMDDrSfvU{2>}$T5i=oCcNZZsWTA1Qp$P_|Ngkm< zqxS#GD%II3=-*$Z@`$__Bj3BF-!8ARXs1WS``1+}I~6|SC@%sdT?<{}74ba}Jz^XD z%+AQ;6zv0L`~_W|%Mk5rQGE1TU_4qA%#M#_7$X_`#>_PaKQ;!_kSyvE8!iSu(5@ZV zi^X$^C7UJ0ZeXI=h63%{Su{@iStz4Q9CBVP^12Y#SRArT9CmCRhYAs`J!#5aEfoKW zJfnrK@Ha70NIbMXjz3U$`B+qrUCTorjC>gb9!(GmB|O`t_#PXNSru<|icfqR-zo@I z*@jY-fGq73RM{o?iQ+vvrATDswP%?hr9urF@JsR&J_#fdqDToJB~rP>cpN91=Oq!h zCpk4Rzwk^*>x$pb17X3$hgNkub&^#}Qr0K*%uW*UN5SA_o$zrmx}dtEO0wz`b@R^n z9YzUAEEwh~V!JI$IrcCfob z+DjsddL#+VWwEDSQrrweU}q)JiCUV9jOc2d8549#P)6X}Lt8@??Yn&GE>966XBGT5 zsT2(PWF|;9lQ5_aoY|?d`Z5!*O#^FL2BRviS&X37lf11V!z~Y4Wy4kDb;x(yJg0!k*i3PhX3=RaAqWA*2ZyCE#N}u{W`Sd;&`BcLPU)d!o zFB5Jr3GDny?>tGsUJ1Ay*|W6|$HasjA$|kppExP?hN8_=E|Dt%Q7!wG6Ww z(9T4h$#H@LMY0}dzIjcit(cTvqt=J`)O(nTe2p<6*SwdE((;MYDdZw)3fdAFx$7s~ zf$91i^zCGc(1{$wg(ydKfX-$)SB_Xz>h0xFLX*QyeuAL1v~Yp z7OK{$mR2^e$Jf3Tc`sh}H9v`+v(}AJJ@*)75R~)gQZ$TQgpf(9>!iwB^~3Yr*acm? zm!8n>1SmgyIh|VlD}toxCc=rDXiG6@*;+JqLOn#RA!eQhB^G_%n+do*Iw({vn2UN-3%zyfM{Rz}8w@y@Y5zhBczl}vc3$wWmd!g+_r45~` zoj|gk$fTXbr=2Xlouav&YN4Ixrk#$egF&)`$)tnDr-LoMW02(&$3h3sO$P-^XDCaj z;EfNLNv9cqB12fGe=;MJ$I^t*Cp1Z{9UCeDoP$j~i(8VQ5|$ zU_Kh?BMo1O)$UNo*Y@$fOC4lsAJlOfBus@4HmM;vT}Mrv1T1dM-IeDMeV7PaDQE#wcaU zeJrvoJC=VmX1VP#rcJL@PDEAsXq+r({O92KjZ1^~;TY@fh!_q-BR&Nt&IH9Hfu{l^ z^ciEBt6!D}q5G1INCBhXHp2`R1oF2-Wqgy$&7Ig4p1lDhrjgWE0bh2@CsCXN9xbMs z;|z%0eo^_H8mzzrODDFn7=ZiMg7I1W%2?3Bwfa|=-@PgYrGzH#9N#}lIocV zCrRIxnYg%_&up{N)bvUFVYPewslKzgkf~~}7k`U+{S96IZBQSGdHIdg|G5$U8(jjp z5=eT5{6Q}PZVB|F%LeuVdI>%F=VY0|3JW=;fceCBQSI zI?ew^FaL!u|K~Br|E4GUKR}oNszX2e_t51QJ`zjeuR8Qp(5eg+da^3V_t6eWcy09R zMF{n$j75l}vaiP|lp^OVN|BVT$Egcr;Kv9!Xlci3JhK0mC{BYR8>z#AzZQ%AI`kL1 z#9&Avv$6YyF70VzEIHtX$)wub8vwfOGmA7GLN6k4kE`F zJm6q=3Zt>!luyd?Eu9^hNf@Ad0R&wxF^ zLI7Rv{i;JBa1fW;gD0K=dw?5dFF-V+bh6DLG^)ww(*0)#?WbNb@HT7_Nuu{v^jt2j zxS{~MB+)2$X~6=}We?W#a=tFQWJgyY22J&&KCU`-vwnj2dq;zU0%!sq{L|&f!=Dy? zoQEZWI<$i{CHBdvGV7w@*fmWBP=~(XUE8Xm1k|Bn4>Mj&8n{!>WP_eX-kUZ{-Y1!% z3HQDCYfztLj(N2#1_?A_%BSXv_v*b2_QV|y$P9YX5<7QRy??gy;&G~o+^hLTomQ{; zfx54tK{AiU074qrN{D+V`Hb_|j~B9$NY3Y~F<7;A=?O@nyk!de)`rd6WF^zB^hg>{ zkb4>pZ0F32P8K!g9vvJFf`VJTp8V{|dn8jx3>cdqP}hU*5PmJ|<+?vtzfC=5lGyx^ z{DSy<_lF{hgJ!&SnU?wKd65ms?9h+z;EN%d7Q(Z|sJO+f!0)nGVa3fKb%_9SWNrEX&BxnrmYjIB_JX;Hbv~C8z zek^v69?H1(EE{(p(!N#v;x*bz#@9QJ-qx?4FfjIV_Sg0Eb}v&6$Y~q_=;v#h?T0*` zhv8W$SjEVAjkrFkj0+HVV}r1fr|5velWD?rb>&pA)<>Zngk-26xJ}o|NDkugPw>4<^?Vl^O&+-cjxW-OJ=* ze>_xbF!@10;9}y1{)bZCp8lzqD$aCIGZ^$bfCay~#CRjMUDIBghe_nN1iPtejd z+6m4o^8~ppNt@(9^Pg4unsQpR4#@QAoK@S_aM_A@3k|uR)!;IaIa;I5jhlrOzKPAS zdpIzM=zEu35xF0zs!w6|#~$EkCrq1x`K7D>QRvbUpG51j-=c~?Nw@qP_kUK0eu|R! zark-Rc1GftZ)Ae`1KeQ2%-NthDLkc7eA$!imMLoaPd)uc->Y-+RyP&vaKu*($MU&{ zWR!yKzNAMX6r`LewSo}|=k%|`>3kjD4k=AmuvB}P?dPlZG}=VA#+AI_7BoQXn`-7s zeUD%JOchOhW}QPYAS?rFOWHNt>zABKiM$WjlbGY76#ny|{(p)t|5AtkjV=%TDQ}k1 zHS7Ov9oqP2m2Bh}x;%{XUf_{vYgdw!`3t(#^hDQzAw78``ALE<6k_`uU5aLTqMPxo zrUNlA0b0n&@^(vEv+<9Z7iY@`53RVb1TXB*F|QXH8*DLNzPfbKQtw|euj|>z zyvLQ{zOB}e{bwhEm{(rLKBn{a{2JwX!#oi4suKr1rswBpQU@VuH_KQf=hdt~4_}!} zuHpRf=rvy2jmz@!#(Q%){7mW?VSaB@O7p5TK>B2x+IL&(jn@R{rrVIt?asZgUek<9 z^MP@UX!OVV`dJH1DpkSSR~( z-(2^+-r9UqB1?Et#{vYdyv75u~DxNFsomE8q`Jl)^f(ky51X@ z)h|qZTT}Pe5#8u{y%zv5(}jWy(A?ZEOc)-!F&z8@x(t{B3zEL{HZYgDI}Z_giWGTa z5=crA;}I$#0+|*LZJi9J;e-5bP@nM$61`Sv`v13s`v2h`V2NPaBsp%(U-tl0V`}wd z6kTKT=_SBg0R*!&rgE`q^x)rnfDB@B6htcKiLvS(vFTMh#9+CafH>^WaYR-3D^cRN znBocVz~FtWc!k`@QSf*Iup(<;yx3}dBsc+|K0%>RozOBN0-gZPNl+6bPJqW6tR#ek z6Y=O1bqy0*a}sge6HUbkar_g*z)3jtNmeBUk4ngFRmkl6pbia5oJUD2;6%E7NzB+} z0{mnwzT{V-4}Qi9XqCjZ%;qfTWo3yCZ|ZcXY}$ zFsbZq5Dl-KX zM2X9E{!_X!LntE(Tk^U%9g{L4R0Z64ze_-6x)$_MPwo4Ywk&YRkE&NKw z=Qxc{kmJTP>rM7{N4AoVX#{mj zrN9wSULRX_x0y;jg@-eyiC%mv5fgoaACFfn80C7;MEs?sGOPBLAO3Z?=W z1mRiVwiSot@AK{y>IO>r9BW?_W;Uwe1N~}LJ~ofB{MU#1;|&F_Cn5)TL^&At1@8hf z50N#&GV*fk;ubs7yrq)6XUl?8N?96Ipf; zr-7<<5XNyNmScQSF0bXqT`o`274f~2CaV+0-vvr>-!&DBm&79vfTFKN z`Y;Ph#4|sYAeS4ZgVL(%;W^|v@95O%nXx4J{Hy0`h=#wYB7qfoVMQhgCVh@tutd#i zKn25VZ8|+j`H8CFMBzEnM}n&oh51T?wEKA!(n{9_C$F@PjnZi6YpLSWQUo*B?2S*m zB(Tf!{NxGubtS1C@=ZB1?=jSDd1_z3togYn4l*ucp35add~hn06gH}NeO3v=QuHTc z#ORY{TLlMn)cR1;`(4)^?kJI0g5K9=xt850q?94l%HFyAcI)Xh(nU^>3>Mt-dHh^%>+*Ly%Q&@F@i2x;}3>H7v@`R z#1L!YlydWgYh7_=+j5Cs_?zC)?Xp&^)dX{6=;?{HoBgL0YbZIi0{dCr#(b+vL*3PG zEj@kBI|dbLzBc6a4@~(jL@u8a`r2@~=)qKE6eiHi`F6CUb{KvKGG7OiBpu5QDVxs+ zs^$*d@eaSkj(DO@{y{py1ybSkLecb2%<4{`u}%)`E@t_z`;J|hl$JRH^9X zBuSwr_;M7V362=lv5EE7%g`e}+3;qY_GQArG^YfDhT3vP0($_sC{Q3U@x-{vv z>+kt5p-U563u7HhYKUV4++w zr`;e#cd&n9(37Pavwd(_a%jS2Xv$}3CVgnGd1zr_Xz6BXnQC}da(LZjc*AFSD}8vU zd3bMO`1{Q;z#)$$M@~#e&U{8L(nqeEM{X8Ie%_3Ls7E1EqsXSCsJ^4<8Kamjqu7h1 zxVNKF>M@`NO=LPo;yXr`F-FlcMzuIbb2|pKpc$mbnM}u7e8<@`#yMKXxfaI@_Bp1K1AAONAWssAaVAPqw>W^B8)lhzjKfVy88A+Lj zKWQ;GF-|&!8VA#(HchIUG^Qq0^PT);F{y(ySv8AAU-RauMD z43-9`Sw<|n<0jI)MfD<_dD>jcoRyiX+b4p(v)zlc#isO~PE((5XGQsSu|H0kR1x$# zEuy)L25^!s((o;Q20lqT_3p`Ba?8vl&g95YQh@Bze#^pUOP5US0ussGUf9eJZod~! zp5)qeI~5c{qSJmE(AA9SBb*t-*k#^^b=@*fqNM5OK{)el8G3YOqTXhiE1jq~2310kDjPyTZu|UlhV6nfuw*ZI*aO}Tf zu~Xkpf$pt+1I6z!>EDXC0E-1EtXI7}0Ahhi>F*?I{l;5>&Q`5^0$di@tNe{)yS|nI zIJR>qb@yZ{WnN=&r{ec^<-&2-^kLI)E(;*oEd!PFfu6ut?V72$KNc)?p1dOkplr@p zv+sdkKcWHwkqZE2|3zf~o3Q2o$YTK(oBHp>NU7}L%l@J29Kt5q_<4U)y0ht)n#^i1 ze-7a$H;ZVfE*we|eYvyHSF@>sK(TKB+%Ttc$AQn4W@yCV0c`{T#07`d*$HNgG z_&eR%>dm&)Y9GsIYq(5pP0;m96>FW>`ZLr>E!3+}(jJ&LX}wtd1Vh5&**T-rD-N2( zH5;t2vdRp;WSKC=|FH(hP4Btw)>&E(Wy^;rU8g>=50FzTGaI^cd>oL3_uT1W(?_Sc zDv{Np$e6YLuWbQXv>MIzhikv(rVYoNqyJguR=WP{87oq6mgc9{TYN0Cwy)7kt#@}| z^)~Zo%{VCpF!W(}1U#UnXBmzGDgGLeBc`0Af)BA<2?}@W%~2-*xw#Syi&V~4qQ82& z8v3%L*HVFfZgVx#@4reN2QZ{hRCY z$`3uQ6Tk*4Hrhr%Lu`_b&yY7F&EL*i>YtL=f>Q3VB<}*@%fvCkT^?mC$2@9h#SUR{J#nT@Hqw znSaMN9GPT!7KTjId)H%!b}}SBstW->X~#ao=mKS`D=&}xAZYs8GYS27?Be3%!gOk0 zWIAkD+H=gY6JjARgEPl9L}iOJrJ=C*@4OIB@3koA?d#jF1WRkA5UO0IP9*&>6avXg zJ0wpd-sffN>U0G~NSm|mNCeAbNDUq|TBS?GEtIcfk8&lrC(b_X*yp839hAsaVotRA=)51OoIIXN z79x~<*%Ci({`l@QU(WavhezX)lZ4AkLn)5UyND$!nNC6lo(7nah*#-i&oKAvX_<4J zvr#zbTPHyJ$eYz_{|r;V$e~HHW`?F&PiRH`i=W7ntJPrnrok-^qrbe+llFs7frE=d zJde+Xt6(ml@=vP54(&+jbzxU~ z@d44J{F}<{-{q$NSh@WzH|>Aac=Wq+t1@6Tca&5=Sis}nH(+*kl-!10$Q%66mD`9y z!6KC*2cu)e%;4|Jt=DndGIo(@kIL|GrF)V1bl*>K%K6y#ET{oD z3j+y~l?~i_z;bq2n4|`C)KL{@z;Fa{R-L-YWvJn8G#W-ykZ;QUOlsF?@-E8eW9`Fz zJJ#^|{wcS*f_-kAH(16?nCCT(+|Qk(2Mks-1wW$E%NCiypakjJs2RC%tS8wq8W}J; zkE`dh;%fc`3T|}F2Trb8Wif>7@9209roHj1c?htXno;TB%Z^JdoFa%CQFGcG>(yc| zR<}`j*x*>mR2)}c=dF$e_heD&OhKYkt@lLl5nk*XZ2lCXCq`|X|wBVBFBcqj{ZlXdDttL{NPc@N@ceB zfEgN^Asv0x@!La%Tk5l-Ya)*Ns^6@O& zj?hR+3#K<>Uqm)ef^n+tOp#!1oql|o3j6l-j1-@hk`Ajx()XyEF5CFf-Rr$^tU-3u z&0kPI#su9iJ9;-%@r0bqK==IV9Ovdk-c`$tQkA+6B+sF4pO(&>IyzZh(IGU-gL|l+ z2#3B})}sLmZ-Xop2{K>7(SowM8Rk~BKA+B?A33E`y2?eTuZQ26)>lM^yH4OXeyMh9 z=y)bIZfvZ$5vK1sWVqy-5iqf#-+no0-ny5vwy;T!BCa3!-PK0Gr-5HdTq#kSxDXEr z7!_RUlt;aea4=;zDY_i-jB;(~$nIjyD3xjTOMuq@rE>e-ZIlC6=}3%Wavt>vnoqQE zz0$PYhY4vedQ~a`g8!S!ZQqY&B-lvP|3>Au<-7aH^}kcOO&+<~khr@Xjcz?D(!6cg zvj+cD+#4N0Dzsp`-$glextIj^kW^5q5I1l?pkG~ z>i@;wSq8kpas&us7qk_W2e@k(uS;=}}C=lEcp1ggHp5Ay~0a$&ue0qeWS8Jh}gn9{v-!Sdwe zh5_0gP8?Mke;+8mgeKUL9?SWG5A13x=e}!E<-~k@#%Tfvz~}%}$I_tq@oL$z?AL^p z`-$6j0UoabJ0}h2H-Mm80o8d{09ddoH#C`^)%Y#&XcL(I5>uTXXkN?c2w@7#Wn1(O zIpSg~*5nI=f}`jq@RNOMI=y*R18a8KAbhYN6Sy_t0gQ7hPXO?9$bbZNc$%DpZ=cG> z(WIaG-KcVGiie*fM;+3W(ZsQgaRseHSZ?~@t0yCW@PT5uSnnr+3*ygiCppnXpP{b_ zVVs5w;Y6_UMfhk&B)jnVLGkSEf&tMij&>oa7eRY3F*`s3CD)W!_oaMRE_TphD zGO;K9Z0-FFCD%`tA3C4nVn%drh(_!(DNY53Kz*>Z{BX2FvJ4|urs%t-q)X;$EyTmI zYXGtmLO;a$a|nWHi#aVeB56`$X=|gSRO1}&*m}DCEppg6IKl)%IB__F=v4)6_e3Rl z;wd%b1zqAV97Akt!#5|Hc>F}nQ6e<+7#O&?bqLwt?IxUYgFeQR1ye8wi}CqWF>|Bf zh6P7i7)TdNaEPQ};XlRt=QVWQi7$m9sB&Pm~R4Gp18a;XhS+W>{+&)geVG z<^>DB55+;ndlsbw8H(Msb(~Rm{Y-#bddpoNCDlw8r_8qE&=Y%>A1~8fDcOOsOue-N zTyW8%1WbHQd^agfy&H)zU}7qpDkB?D8Z0}nl~YN}3gqISilgbdiK=+XZXL%0kx73o zmV>((dRWWZEX&@60zfMf8jp);<;)eG=WI0qY^r;Xh#g&8TEo)n5z!5H!U^aFf#_DC{rr7=+}CCtC+Z=CAaA|O}q zM%gA1Ljx_7nlH<}D5J(Im*Owya7!A{mYu()SWHb?7Qmd9m0Ojg0yB{93CJD}QjYC< z*WgqZIK3WYX&7TI%GN>J;zll!@zK3f8OX z)T_JKYo^u1R#|kH>R;d0>k~H^3N{$&G#I-#n5H$Dw=`HTHCW#@*bq0`xszP%t8tH; zxTH0@wKSU35>`pWQBNoXnN$g`Farb|gVUg)Ezs~KXyhF&RzY23;#yVI;_|GI~s=3~9y5z0B(P1;soB0}hiF~V;#&^xlenom;Tdv=CcExdhX-k0j z-T`Po6%m6I@Frw=?NINv!FX|GEgS#fZO{gG3>-Sy2nUbYRK z;ipx1Rv{!fbp~M#gI61}rsUYyTD!UGgm$l}9LU{hHiDZITwb9dX4quCLKUXV(E0wX z58eeol^{n$=*JF0G>zAR5-C{;9Nn>W6?qKD*t} zO!F!&afPY4*8&Cl{aI6f-5huS4rIE)y`q6&Fzgi?y2ubaSkK3u%}Cq{6_E03z1W~` zOF-bbKAnepek!NjEtf3<9vII`nebbqRXkbapfrsCR7;> zi`+gd4JPlqN#mC7vy3ZO0;?Y~oZma1A7Xv}po9lqqrrTAZQ)LJ6t@xf;0WC$6MN$N zCQkLUikOJXXy;D0Jv*M9l9_el<3cijRXL%2R$O$hg7#*Ru+34k8p8Lg&ZE|=qr2k{ zB)0pL9{l(B$CC42cW1-A$M@&s(rn)^rZwJw|2A(@`TcU)`S|n};~f86XA z!DiGB8jpY6o%FFi++WPSfB1gAQ~B`Y{_6PQ0f3$jK$7VI!5V^)<+DNf{T+w`CqCft zY1t=2c?c=GeJ;rGD1LD>d<7tfWCa9l6#O*SbIpmR%f7fxe z|569?ho}Am=BfYF(+@M$o0yous#9T}`n}!#ZF!;J4}fF>ST)EmHRsQ^`rn4eeyTaJ z1K^L>|GM89b^zQ=#lu#{V125;WS!r8L6(Xyn_s~+om~wXn5J{!Y;n6Y47&kt=BB&I8yb z@Ht-=rsFs!lE7|*MO8l7dGN<=@YUKNqxl`|FvxXfXb(*(E*Z$LGWaF;EbE9(SXsd) z%wVU&NeffxRp5iBc}d-@TM1nC zb_r9!qxpS{a_j@fgDTV?=FBA+;L?Md2hy*WD8o`rEFPl*f`|3JqoY- zh?v#PUWiIZWNU>XcyH5%pQm13OnAk#-9uViXA7W6x(7Rw$0eQlP^HQ54N`Rqi`C=FCd_R6yvS3Gag}4ug=4-_>Up2NY=8A|=q%&$z;f;DVuF9Y z7EJeOVm*}i2r3pX!s@yiqh#H*mhh&6e>vs-QPWJu2iDt>oG5FzzJja@fv)1pquciK zkF0{N)nnG~O~exJcSrc|!s=9ac(kp?4_>z?VekD=59gvJ?ytMiB);EsiAwwc$m8D) z&-oF?M;Bou)5t|42(vKs@^5)kkUp z4plg#4$Lf>=W^@Wo+xFxcvJ!6h+p)>^gVEpkMVmsIn5EZp5_sud;^il+eX-+Ph$+x zb@DB8$cX8#lU_lJXc8+!JkY5#a<8Sth$a;@nBNdR9_Z)Rs`7YanNK|hFOC>(8=Fk6 ziqDZepy;)Sa7dLyCp|zzxE~!48GeaoL=Hz;c$T1?D@JM{JA_(&>{&njE*5LRTWkL; z3B@fR-$!{m6>Tk<9{7 zpE`~jMkh+Fc_p@PHiv{uiAnN6ESO}i%v7ONd(O?L+|E(Y&}vxYnFJikpuV}WUg_&A zw^?YrquyiWGJT{M^Ib%jRe#ZO1bC|84H!-E7VGPTFM%4OrQjc_6-~mTfNYF%Q|T9r zlc|?=5QTDcjiJTa(1xdl>1J}{sR(lqzL!9g3?`GlEv=>BJ@qf{0F%qg2$*^(+8@G} z;C7uFKkpyf{Hz0c*$B;GShn+ATHX=o)tRiXfYpJ#o-%aidKPS~&|tB2ntN7L5(4+v)q0Kx0dBGM|Oe)F|jPTo$` z-oy_S!v;t%2sme3OBEgsFMc<6(I!5s3f;Lg=p%4&p?+N+qC`@TQ+eIHVa4$lk5MPN zN3))*u-fEykC=G#y1#qo)Q~(ij;x5MUp%u+F1Qt+Dh>|;PRz$tj6Hfh7XWWq-iabL zwB=j32CuDHj)YvZ#d>%7Fl76#!pJ)mn=TJ;P-PZ<3Zje86ooeglI1cTDhn9D32}c6R5WL=SbfdlTX5Skr?@kKnB)6m=T^MI$Kl$OmI20V{P@$k_ zUM<%$KDS+OX7wyuI!$0ccf~QUh~>Z_@0>Q3=Y35=2BGlW_ChwPW3f`(q0AKV%$FxD zjVm6<6QM1$Ypm68O}$04^V6VTjj!JMZd=m7Fwn z)xMfqmoaubfh3`p6D?dAUUw7*&tv$;Ec0;asW~*i4Gh3I`GRH6CUQ()ER#G9f zi{Lk%bN{130blrGUnABHiu2|S#CK6nrx2|!{ie=#*72L{(2ub+4fX{2;^U->)swIf z*Yql0+gC1SxUS_%UZ_C#vOwb!8YgXM_a8hTjCkxpcm&xFqEe@xAh5^76+Q?`^f<_f z66*PZLV{8qhp69&l%9ct&zDt3*QXl5+yNp>_WjZ58$apG2K8(FhR=TD18?AG7UY+f z>nC*WD~E^wqDNJl!vFJg|3pK7X+B@sYdjTrf6%(WGK2wUu9r~{u$pj}%?Z#6X3*OW z;6n_wppd_w#xc?iRFUyE(zrw&8uJkKN#qE?w7R8=>>v~@9v!g&0WK%|;YUaALn9C7Baf~lPY9yU z_@aJ#>aSlB7UB8uNoY-gh}hw;_~41My>=ikBQ&FtwXlyprYVUqAHC&5qV-Lp4PlZUf0Bb%5=sE4ldS)Ga?6vfwbYWMPnh$X+rFPKxAYa;z3LY}Cs-jv(GOrGH8( zV~;X%FNJi&E`P!7DQ2oXXDWVYY7rr=LQd+#dTJ#DRSgPt-2!G417?d>+LmovyR1U= z0(IK}<|o2*RNo}x7|xE6zdkXxypZwvCS#2-bK`+O^NUvIwrl2YO6Go3=D|Yd(M{$F zVb&Rc7HnDU(lzTkCF`~+>wY2Y$4wT1C>tb@4X>Sz=$4I~nvL3=jlP)u=r$Wnl!GOZ zgQJ~;=axf|nnTq5KQb|PF`cgV+r*fZL4kIOKzwI`9#J7HYN6pRJ8Wgll(EnxwQw*u zy@G-s4P0a?zzbU$i#sns^uZr7F5;=D8EGoiK!wby6kSjVA?NUVgyN{?7BN1Y`S_+n zfXKz+7m(4I6zBw2JW&Cxejz24a6^Sxf2ue(l~P(9@{FP+50xf;01uK{Vld_O<*JZ& zqNJjP3bryvaE?o)(~_wtDDWl>Y_OCWmWp4j)_`Q&@W9_- z(cOT!-k>4KVy6RkAkIo_F3WUigpX--9AfqgGvz0SIxztVzt&1xKsPy|HX6`yCTK8P zO&D?0$_A7OsVVUVb21tT*lAS4|ip$>T64n&U*WZ3%FZ*?G#?mNK$wK@>S)-GoB@~yBocJ%K3r7q>OwvPyu zeX`xO>t55}S_E`y95wXn@4BC3^-ObjONLWR3F*nC_ej?CbkFqUrxw80mz0@xUxriK zgf+bGEYKj))nYEi#Uj!v!#z^(ZGB6qyZ>nex7X04IOvw_4Hx-EH|SX)w&}8LTXji* zHaO(w)3?yRds`lNZK81pF=ys}uZQ8fHDG`_37+@8j&&KfYdUrsA#tmNXh?W*L|>on zfnqTsDZvD3&T{|zGK3hyfp+eJbo9Oil44I1ayIaDq>ET)gJSbLo=XGXj;CaW{G~R- z#bLU*CCp|jDxbR72jo=AiaCb9Qz?^oT4uElVIgn^3k-L);(j{NE)$}#-A~FzC+3_M zIaCGnNsgieViVLv7zju4ZFz60NAk*Wnui+~mwVN!OS?GwT#1M`!$-HnN4NZxM&(Bj zNk*!d$2x^Z&U?~(4aS;U$6r>Dl+TP%QjTFo5Ix9`0$Ikn=*Q7*#ve7MZ{-hDKYQot zk%oiOP7NHZNGB!m9Gs~Jq(pg$Rq%}wo)&j56IC)BF|}!1TTaqjk=}=o%-Qxc+f0Su zV;e2Y_sip0b&t!RPL;fyKyD*Lup23kk(On_31EJ@u$-Zmp{;Hu@BuaJZG`r_!ydla z*`oScODigCD_hlxsc6HwcYJdN2y?ayRBjROp5Lj3g!F_-=3l(jLoTJ@x11*hf_Crb zcZTMAiT~m?hcQZ4U>v{$*z*^8@;_yizqXxVrgIpe{MBF#>-~UX%3o7YziE?PFev%U zcm8cC;ASfJ4_FB!mH&oO-t7+l0Vr=43t_wxhACl;ay1(J@4}S780Fn&^G{4!toCO{ z`8f~fRs1_JEI5b@rJ3l!2m)E># zER5T4^8RR~UmweONN2KaYow3fO*Y*yMoBxjCvH? zY>ea$DL&F`{x&^bX~CQ6*>bhK@-gfoh}5g~W@2lsv@zYQ&AoqYb;xA zX&*j5Ku^EZ>Fa#QFeQJ5@C1_m5`}eFUj;*$ooA85Usqe$pQPpM2A zX__lHz~H$o`-BoU|;;sD5Jp2RUMK4!YGxcepVK%?~S8q z>zi#QqMHqDCFut;{9TOFG%4smVw6SMfsFf*{KTKVAB83RC1nl!`=wRC^?uaNnwLVD zY)(j#US}3FN#eu*>iuA@ZpEqtA?{F2lqP>vbm;iK_d{C{K5;Cvk2z&RJs!p=weMKO zF!KNC{pe*nZoQbbc;5^k@M62|{!Hhv2E=W{qz%HcJn2NHD`W4PwmT{B*br;o>B7-S zKS7%kAUSct`f7IChx^vUyI0$xHDkcVx9sc_p~$dp7E_;YRX=r}N5+WLAPLt9t2BD; zDC0Q{3VMJ@9fl-61leau`7t{Tu;H)NeNtj0&6u%QRN$Ueely)EMtadKF7^iBp=%yD zA;YN=(}1ODmcss!N5cGZ56=S1ibCUaM~#Q4yy-Toy4+HpCMoZb43?fnFOoQT^Q@vp z=s`u_AYuAH|L~FUy35bqN_llfvEuRzT8wb?7uI)2+uNwlkD4U&zqU1sLmKnl(#mRu z?8Y#+20M>yRDbY`-?HLV?15%RCl4*RBdfj&QYcM)`3RTw?%SugJ@=`jWa!^tL|IU@ zNk$OYx23KS-+!0fw7_h??kTeRF}7Fv*!{k1(^L5bkKyCwjhWo)@E0k*s)SMR8;Oty zHIV326lK6=n9TYUXVAg(Fk2FrRXIEvaE~jB?IE!Y+}K42vUtADJs0W2WgqwvE!h6z zYbFYrZ`T6m7fV)Kiu*cziJg%ueyXRcC=Vzybs;DxLBlA9DS^8zo9VTwX21iaExo5>vVrUyiL1;(Ff2RXtW;@5Fc zH9sA3TOv~)B#|S@_KOqQkuT_spnf&%m#PTUW*T4X7=2kG7x`6pztfxgBfN~Q)>+)l zq>)&lx6jXcr+?!$f5GoB8Hn;iCb@w1U5LN7;=lKrH>E%4gv~qs*=ughkx@Ki{eS5- z#~&OI6u8I%NBoP|d;}uJJ2(;Pc9BPpQT%`FHIFD!E0X(-QEHBqs5cJIRJeUB)yF8+ z?EBqo{*zG-&Njfj<~9+fx;t{edCjv*$R#;D=Gt$+ReEC_yy4XvN3yF;$A`}`#2=dP z6}YSp8xif)v{CA!g$E=n44|MIFF3r8q)bNemg6J$Mjz(#M@F%d^CbsRPERGGsj$fL zFnPlmB~NWFOR^OmP=veI@~wK~r?zrad!41-v)QKZ zfFrwtQmw0KEz8 z$Ism6mifSRw(5)sC5J1N@mX=z_oa5BM6)*WLpswBkxb6O#*+!4vRijF)xzuCxY9Zdd8HKjZVjP8TE*ZjobZO;wI*s_2wt00l|M8je zNt71J7pL6IR_TgS1+f2I*M|$uQx{Ev}?Ka0+SVHnQhLrn_<&!z#F<2WnfK5 zJL2_$w=2Sn9RavRIE~)Y%&XxY;k%nL??-jnND8~+#JA(Yigmg8BfC<9w-eEkb@_A( zdvZFrlgXoXg}ftsite{l>9O{y(kt(jvG=Rc2F}F=ms)~qZv88yWQ*@^%!zt$scW}Q z%1L9tdLA`Xw9W2RTJ?_`kd5c`s>@WJryTe*6K9P`_17{nebuorTD%PB0TGuRu2Zxu zuJ+c~bNL>+Iq7^@Ms#leL~0$8ewPVR4=z!_C^ktFRQ{vN4tCQ1Tr7PI`eU*5KR9V& z$1H4!117%1ly{i^4x8Zk%zSr_Jv9CfAyrj*%|p= zdH;FIs{e7={yJ%Y-LuE%bAMLe|F-Pj^z)>xdiG0s|C}$gR`Tk zNoP==v<0?U3S~&c6;QV68i1?aegcb6u9nE`$VtjAL1FPpTfFB2o^Q{0=W8uiN84Ji zj@P=w9>|p1TW`*Hr%K<9wYS|}ooo*M7N7iWv2^U?N0{FUk$%k^9?x{m=Ldh_nk*{O zoW253l78JE2PV4*JUSrna(>JTJ8AI)=_vy-JWMGK#$f*!f|&y$8zCrN^vYpR)#*1Q zp3Fkt`p>QJQh5pP&u>Oaj^Z0dNZ=LcyGu_de~DEtoHGhjk}{)lRjtw7O3?L6+6vZj zVkmTa6H2h13=2RQ2b&b`ZQEG9p5IP$XuvB9u%Fe6ecQ2Th7AWmp6>A1CfyUw^7^5c zAsS3;j+Naet7#e?Aux!YmADPRCmL&KZh+vZr@5CF1Jo$iVlx*b%`=Tu1|kA_9u`Fr zsMv|V1~RV*M8i?`paKvDpZki|Imv6OGD>1I!nCpG8ddiAM0|yK1y3C%d#&*!m5!6RT3;+;uMcIMydp}ZN zmSH1*0YK4KQN^mO5la~xDTP{DRSs#(%mE`WuPy6RO3X3!m=I{RAyvc=(SZ!FozY_&(qGQo;L!}AIbyfmt#l1 z4Vs{h?1y94e0S)7j6u^_GS@p(Qb}}Dy?*v++vr`m{Bij5WqY zjc&1O7knLhGqN=rS*t}=_VrvPfcWUB=xk7y5wV90Z+Rxhj8^AkdDINeDc(&9;b`?} zJ6xkiTg82;NYJR@hAF<0+X;cNSHVs6P=M8-gU$?1m!Lh`=@z_g8p)c(p(5WkP?uY{ z4o`gb26m(ccN9`Mr_6?|;eSMA?|`p~d$EAL;eEp`3ZI@rF78X4lY6hERxF{9>|Vp7 z8}UUE*G(r0hfh3;&l{-Ego27c*G2RL-Zz750DZ-{`^g!65WnESqX(LNaWWzfMu{&I zm`SF|)R$2q%3s2;!w5bxZX1QF59exEK|Zm11%$mu-&E_M@8uK-2sf6`QyPc#^1S8< zQBy-lTOlB$o2(86;TU3ZH)QZ>4@3nFP|2p#%go`_yx`c2)N?s&`ngyd=`m0G+hXaz zcHH$SqSUbuDyP=a76=tEY7G4M;**5EYA^p`@k!n;pHrKT)DZJsC05aiQ0lZvq3D>eu)^rsDyN=n z{;KSTfk|sDboLH1Q)+2t;rV%S20G{{?C_~X@0cj7^|fQAhiBBA0#wcOe0}mD(qIJi zSP)u1CnBPjrI=KTW`Ht)BDO&0ZFjTen^)>+c=Sugp15#0IMj7pj6hW3Ffgjk5G2Ku z2|+n}5bHsA4UkTw^iCvg!RKjxOQ!CV_g#0cyVpKd8fZP`HtsAhRy9u>Eb)Tb zgX!jVF*N3yB}Z6aJ}y&($4{s~v}N}ov|HbNLfuHvTjn0LWB~ARu|eXm_Vi(n-oa`j zr@MR=ik7a1_ZGKr>xLPr@LoBPy0MESpgLfzvCx)FN zH{9AoGox@xTqPqJ3vYf+@3*r=zp_o=eDC3P8m@2)^yho2TI38>N72veqS5FD`nzA& zgg(e`iK_A=u&}-lr!zEpwv#;e2^ZOIVfZcem1Z-NtV5Z6%dRh?Z|t<7bO{Jzj*gwZR_7IulvGhLG_hoVpM%P3*A_vjwpuu<5JuS8i23R z`i>?2Ab}dhEL#fA)7}Xd4{wP+|K9L~ za4DJG0Ks>l^UenHv32Zq-Hm4flcNb-WHS-IH@9Hsbj4EN-ay3dbeOyi5w;Em?&Sq$ z{Uamy_vK$lR*uchNSrQXzi;|{AJea8Jn7hUJdq=9TA%W}?!osuJu&lmiTl{~T;@mV zMn$VW+k3S^3ooJc)(Gr9EiIc zKK^`G+URK!T$P#j8F6syruZ!Bv0Chp*Uz{j+T}wY?i-ZJ3Ma?fWnI5#eDw=L?k$>n zpbuJ$Lr?xKK6yKr^@9RTu{aa;@qXu5eDZqi z?59KaxWvKiq1*nUu;Iu}cp1r!&`J0(Wy-KHnXpjPu#n)eU`SX{e^}sdSO9W3F+B;I zShy-h__2e`hY2<^gK#My`m%Y<{$0gE8LZJ@>^T|H6cyJQKCA^(>{ZQBVUCDH_z1AA z==3Syx~AyW8P;W2_^1TIAZFBl9w)t6tDxp2}vHTBWvHSk?LJU#ggPGy?z+aPj=8K$QEk~&288X_V>W_0dz0g-{Sro};#E;x11@4N=J~$X3c<2p?6NUO=Lwdw zq79I^z5H;wPGaJx*q54k(w#}dTH$cA@yuFLn6imF#f0Hq;_7fQ`U^=K4E$cjJm~z< z;WtTQP03oW*bX6z9he07hOufW$x%&7>MA%W1L3a;qfoIz15!R1@;^!2Q>r9XuFa#2?egpE$sfJ`{p~ijxip%79X5j4%Y(-bhDi zDY4aN{7ung2$1=dH2FVgI+XJC63dD5#qgVgS~2;HG0P zeQGXab1w5@F6(VBduZ-TueCP;-;;GX$#((g+`0U=ri4CbC-?zj&-1v~^9XG9Bp3aX zaJ^t54tyVd*%H4Oi#UpMn9AA#s)IPM1TZz^0<@ZObQm%91OndNVjB=)zGVz}w~uXt zifKj^V6lj8bqjuv8elt!ZGUTb8(45ARUqAf>3Hk!+>GtI|Jr@Oz_X;_LkXtO!@j@Y zVt!aEX2ha@)M8#tsBVy4VF+qr(rtc9Nnx6KVTO4@7HUz>U}4^1L4kQu5o1v?V__*H zq&&2!GPJOIA5tp^soyVblq+sRExzi7v<>bIkP03vDVs1aTP-P4(e~SP!`cefS})1p8!Y>3 z4mp(bJ2uBUC9*tcEcg~$eid4FL*#d-jrE;K>p|O3V!vq0Eg$WL-}yVI+}kRAV7?~3 z^GRwIybp-qJRmj!gyU^Tty4qmUIP={8PjTTyv;xz`89($RT@>#2;lIBI)G17Yk$Tk zEpj-Ka{dAFN%xS0rVJK`TBfiXqBMnR2C}E_va&KS!2RIW*#H?T&V0?$}uk#&PrsCJoDlAs9lS}|h zR>1g<9b^rLcwle`hIn9NB@FRg^*O`R6tK3etp*Di<@qU7PR76_%U_5G#&<3kAh)~2 ze^4HnYWb~M6DD86_|C70#YU+bYHD}Cjwn%9u=qLFo!42Xru;;x>9SnmXfX3U^+wA2|4OH{guS9G?4oDogg z#n;|s%3%LEY=NH7lwgu_;dsv1?oByFwZoPmeI@`2O+v^WYakQ9G?lLnH&}J6egz1j zpA}l6vqKoL{y}02Z&>YY)0b_FRyW0_>sP8E}s|9o8cx zQ8i-TKd0SWK%te?Us9ZS&Szjz`Kk9gfKFHcotXY%kGF*!mKK#fXP}v}Iu*MONGV!Y zHrgoud!um}ZE)XI%HJKU__JhbEnr+iSMF9=TDb7Q@U^UN&|Dl2J$_)ng0f3ax4Z)} zY{9=Zv&5nr7p0WB9RBkzQ_c8(!$DnghW>W#gs;C<1CGkq!}{foIx8rq>kAg>m)WP* z&5u$9S(*#SSRnp&7!FH)brZ%1AzWp2MWC$^FLfr@t0L3$W=B8q_Ie$qw6fNtB} zA&kx;g~cXsTaNd}Ql%I9y}U)=6IJ-L4$3h(I~}`>gQ6ic*y7hPdlJ(VFUX5WTYOcJxoL?ZNQCgc(oCg)D|9=;HGxLM%3IBwK`xkxZGDFy;S{5C%I zVs=3N*EJ(T{Avj!Wu1?|zZSJ0)h!#jR7~h@tJk)l5}=uLb&q%|>GL=;;ouW)q{D08 zFyZl0X{|7)*J|fDokxNe3d&U-xmHGYD3pKoc#o+`|{{s;kH9 ze9O|`71I#)pPzWcrJmRE0Y(%W?3Hvif6R=+#HbGBH>3%d(IdfXvL)nWOv8D<82zw%R^-;DSKZhJ(CXMP){~XnP$)Hxz#IIjB(ff?(IOwpcoTs!j$a= z56amoACE%Z+o)=X)I34m4vH0cYjQCCl#X&jJKRDMJqxK1fb-s%zHS-AY`#*6^;mAm zZ~gcYav3RJjpH0u9{5-y@Ac`Pal{2#_m>SG=uC+C%d#)XPc@>k*Hv7H-6@wYf(78Q zIHL?4^unKZ3>WnW(+7scMBs!Z*F{v?ju_GIF`s+uEn;zrcoPHEV|z2!cbLMso^YgH z%Rc_h5%4KJL8&=}a*iIHfZh{h2H}4ouqdqd>PgeGzm@6Ac=a*>KoH`RPWRlgLN(yf zVU>LZU#U3jP5}*#h3jtdnpcE&Hx`N^%3Di?#718PzuL1u^HY zamD;PQ#z%T;aICLdHxoL;*yO8h56_ygb@pj35E3ec2U3ssxmGW= z>QIfpV`WwB0En)+HlQ3?6JI31#i(;Ls5x4b*f_jJ_g1va%h4{WPyRQ_Qn}X~>Ea6z zm45#LLEnoB@!+kuz|zgA%V=%pvAhp=8pCLi9oOp}-Rx&D$tib&XaB0vc&^LznfUnFlWyc6mv$vA#Rv(AI+Z^JF3~bdJSZf0cOk)2wrB#fqi-N8+^}JeL^c&(?lu z#Oo+m4b2M*^v)tA8;$CGF$C>kEcBjDxB+i5nP{Km2GI%71E#B(@ES0h$q0n3!v9?6 zk!i5zeYq1JK+O2NEi^`SR=2-n)JVaeH?x&oJc)AXL%V%8nh^+FfggS38St^k6&!YO zW6#dW`ylA@mKd+hh#sqbH5>dkoS6GO)62`yWsfrc_ikk(KTfsiNC7pG=fnNheLfzd zJD~NOsfEJJmd8EI$T#kF++I|XOkcjjo3%LAr}@O*J^KRJDT=84**B@rgTf-wW3VaO zk3{p!p+>~rdd4V1)bYxZMASDVz=_Y``=m>X)s$`ikGD;aGp+1-J=RP}Z*|b9krL=+ zX5reud8*!@I`j!mc0Mtg7}C8^Vnbf67Kt9u`hM}K&-Eb#DB`i&=wD$W8u^n(( z_^L4M+qWSlF9`PQovt0wO_Q>Rj*0#(YZ6@8oClordkmoKzYmuejNxn`7qg_2kQ6e=dpdfZl@3k z-hQ9EMyFdk$5VU@f)k;= zJ~tYd0BQmU`gu>WMk@+lZ;pP)u_W*_K0mW0Zv;%s=g>eT3Rh}YOD`HNNFvN3h=e<*ce?y>;4)t@Ye*f@IV7qg0bz*RMt%tUYO98~r zOU;+6AUGN7evaiF)AZJJ_MVsvpXd+#0ky+`gko^` zPx1M9^hY38eW=~F-<63Jbq?U__WcqRc7znLt>Jr17p|k`#V8ZgaH+Q;6S!I!WfBY? zHjO}m1kEBv7t2H-6vr;?I-zL!tR#m#doT$<33A?Vyb<^2lYgwEk^B!F*)?LOl z^1#o`yKVQn@NBr4&PQ<;nfV@?`9!AcATj5li)7n=sO{jqtr~+X-)?LYoez9WviNmE zG$H0YR}K^YFvqz#%VK9PE_gKp$JI}f&LN4lNs+KIiu&G^5b0RXUB@6ZCp4dA7T#zs z6rX59eS2z9~^t53aG^8yRSbnGJ;*lwBEHA!&~SGZ*-iBQ%oz3^P#? zvsP#`{be(7cQP>ov!JwDDzaI=hFK_x*)@fk6kVAg46~5~v#SfU$-A<>HnNcrb9QO7 zmt?b7_Oez{a}cg7 zR$0i#g5V6y#Rc*uwezDd{XV}UlWNYFU(Am*HW7vuye}j-R1%YQJ`sRp?PzmTpj~8|3d-8nAkzo3=@)t37I_mv zd{YbA^nsC0M!~6&&}K;Z!y+W|77|TV94k;9uU(wzR_tR3Np3DqUo6hNEzTw?$rUKc z*Dfh^D}gNPrKXmYEtXW=mQ)dy)(DisG8GMOrO?#U=H|b|Dh4qXnsB;_%6MOv!TFT+ zHkSz(mJQ#QRqU6I3zSpRmg5H)zQh@s3*VFp`mJ!T+%ffs%Nlm zFm=a*HDu9DG+4Wn+rGfJ5o{z?X>@AAbaAg{uW2M(Z#-DU`e09r0fagaRXyp#2^_)< zORG@9R0w4vh_EPGImZk^)Bc!K|BjkERC%bmVs7nZYsFzD>Bg7u=43AB z3TNimH59b$7QQE}oatsR>`WH#v1RI^5A4aw?Gah-QM~U_Ci(Qo$|{OV2zJ$9Sy?r- zOoP)Y{N$4ZiY`KWVT!Hn`tMg(-NJ*ajiXRY3wloj2x1(~9{8#X8~bN``tfpHP?+o> zF8!p%m?F~s2x#^;%cRkkm?9?qz@dSQ(*az}LF5;MM+SpjbBV>n2pN{7WkQ$`kE)X8 zC$$G56_!I)x`RpSnDv%bjrXKYB$%D818uE?A9cYdi(m$QKrj8^$vzM z&j=>d2PE953V2SV#iAAT!j-b1#~3i7A)Q2Tig0B_S98imdkUvYZ)X|wIs%BQU^*rb6bUl- z4+JhA0M+{tZkCN~oGP?4z&P0mRpE1RwuKo*^P#;9AQh8TU9cyrCC~R+B+NOKiD_i9 zNs!p22&sdJf;;^)FhBc}B8#c8f~nES#MrQ@NKhdh$DA(t@~*%F^2D&c6i~`$s?w>D z>|}Y&Y6&rW3W;OUs$36)Wn%nrd0elomhj#7hX8TytC zzS}GngN1k+^9ooSdsvJSMjWDS+21GK0^Ar}<=f+noO;vAKCNxKm(m|pE z(*XTB7h2ODkF`Fe)!zBfof$=;&sK21mt8B2$dAk~EDx;=n@Uw#m=4af9|12-mym7O ztgIGkNjE)-HubmHn0QB-Forx2N4Qj{I38_&WicgEbR#*6fAV9&MmOYac(grqRrYXx zTz+2ShgoU_`04AF7WFA%jJatmuyFefgFbw?)Wo?E7xvocM=Yj?-}Rc>J`;YoS5jOJ zx!PJV-)d=C8z7msshD?VoX8sKC3^50<5K`b+NOF)cM!?#=rAU?Se6*Z;{&~xj?0&B zEO$sVC%W|t%brzCTh3~lZRlf64tPvnvVd7mhFwr+y?S?Y5A&Q9wvj1}7w?U@@i)Al zt%#g&J-5*+Sj07V4$@Lx5kn|hevKh+zMNM zwi5!TQwX-h@TG%vdXt|FPLeZ6`b$pWh6WO@hXKcgh)SU9qZuTzQ_#@BjPORG!O8QL zyf5fydFW$3t;6^^X8?=wnumk4?AD>K;j_;MC$CM;`{mD?bIy_a&(WgJGv&{Vm@jaZ zF1Q}cB!^#6R9-|`UX-Vw-pdWN4_|aJ19C?CFM$_m6a#3by+!NaP}dJZ%4@(D?5=Zhc{PFN>|u6Av#gRN9(UT<4`;7c^fNE?pPHuS+R!%EfLfUf)!C+|;Dr)HUBUi0OEHT-d-bggZOp ze++Fz<n3S5A?RSKm;GW!G==seQgK6Uk-0*b)C? zOC?3b%`_>$Y*RJkSt!M`1dW}+G-7`aUlPq-jRMU;-tU*=yIRHijqWJ#zeYefv>IM%A1x+gU*2n8dcAqr;*0%l+(w6s5R*in%`d6!nMtqT z6Q!0U-BZ)S_$4h=auOr)Kbxfx1i}Gy0W1RN|30<#*IM&$0zt^f?{cZ%C$9Ou`@adelL!S_ zD}3>@RtrHOmp^9zcIa9-7HCt>gHVvgbcz2d1=%hBThSEa*7bLYYcWk^a;Fo~HyPae z3Sl88MYM<#smA#XMBUUZl%#bb7tuqB=$b-MhhYIZqH*f)>!yAeP5mc6VgIj}`hWa4 z@XrJSHTvR*LMi!A%~II(>Ue=ry6z~Z=b}9Ezni6clbAo!|5^y~Hp%~%JCypnRFY{Z z1F;Z-AdvhQ9N0<}Zis~t&D`g-27jHn237Lo8_$%Pj~R%3C19SbvRTV;V~t~7sB=0M zZTw2e_PWRo2{Y%)(MBl|e~5s$AI7yB5gKP2s#MFp^8I&e>)Y0^6ITl5x{95#ycd6* zxb97rzUfOrEQBCVTtDtD4%8!3TmQNcQjR2-s?u2Zb8kYKUk9u4=KcP1`zv_Ya-*x= z$##3<>(|1KHz)gRXdbF!0LQD#7gHV{V$B|-H?>ns9?0$lhAv11d1-IaGUArK!Q7K+ zPLE{Fjb7vWX|MQ_^~O*;kvcFLzoaxKTn%9I)?EF>n6tgA#rkq8!}3X|Ho4S8Kw2h} z-~vDR6EasCE#MJ&yafu<&mDFk0pq<1&6B8230HjB^G0Rzj$a=t1!`##m)-rf)l9BC z9MvsvK@o$oQS&BT10(>2%Ar!J!2luhF z1W$=5J#e5G#;81xce3MVEi)mIpR)~00ytTVlmBtG9sALt2c^I%1(8#H6WT+@kIkW>l{@TOc;@LPiE1%nRz7ybOp9vB- z$OZ5O+N8GkVz49wkUc*Pmpw3%M3$3nDM6K&O)HFA-Apj;MlX7`5X11q5|q7AE(9)@ z;+x-?24s>{M9K#RvmiZsep@hSvXtP^iThqDdLcmF4LUJy1P^5^)pK-{%mL{atRam> zh@21gm+w7kt0BP9%${q~cb+$s5!p7ySt+V6eW)#L)#DLv(N;BVcfv#XMUl@0hE2y| zGbaBeg>!ahmx+8>f6uwBJHcaHK&9P7Wu(L|a*(-L=c6UV9@2!c$sTZAX-9l^W|2El zT$RuMX#d{e(=o|bOq%KU*GwsE=~`b~Z;pie3Q@7g*}y-=*Yj!nfm>t~S^P(vdLoBRPZas!;aj&bR^ko6^%58)5XcCl_yjkOY48>?M9veWzEL-C0lojA zs-~L~!GczYls)8EeG)IZjh9#4kte9#v1-*l&VcGO!1|gjgNRyM#s}F}PXEl91fyC8 zB{YQULq&Yhrg^I1bp)&H{u(8ke2lnX1T+ATnDSA4w@lDsaEN^tEjDwH0;+FhY(HJn zCXu}IJtQgx>#dSFbFX@iPjrsbTUn5 zWzVWxQ0tpRM-fQZ^RLvF(*UAbs`ro7mK}Y-%RBTxo2A%Z_qar&Y@-&l<9nJgvd)yf z|4AEGsccH!r{1eRSx(hsWzCEEVn~Ic0@jFa@!E2>H|S?M1%%yNYj1QC{s2%}rdcG; zU#~v5T18u)jBQOjH@jp>-YocLc6c`yvq3ZeLt^5~fy1hb{-*#dubcVp9Q(T2 zPaM+foZufUJ`MAFtqu^7HyFmpxV;cy$0|RAhsBH%JPyFu3}@#=CQDlQ+3QGiByub<+>3(!?Sl0*#>DNY&yZZ1AYH$$#N>$@ zlq3CVtG;)O$5ZDp(ne1L_5~$LK*%+4mtN+aOVm#WXNI5obzdB-asuccRafIgx_aeaT?$ z{Ljms8t3E~kpR7*G%f%#6%-2~*!G3vV+MV_)YB5(ej#Mf5Tu3rC%N%dJ{%RPpTJuW zhT^F|sbHiCWNhvJ5QuO`tw?KU(?vy%uN_%v07y~PHoP)ZL@WS@#V zxp*0e&(c`_ER{g*gQ{;4)TN(2DGL>O$KISUYMil;au{qOr)@c>2R$i5F}48kUr$Am zkJi>(zg#nLY9M;y~Ofu)3v5)M>v*N|q zU<)GP@%X9y){U~JL&K!fY+>OI*6a1gK~wH>-_;}0Q@&+=coc8v8}=Dr(xe5D8fPu( z;9KUdTPhod>PmRSp2LfanKlCSW?URQFFH~hLx$S!C-J*6--I`%W_Nol2dw?gUI7ea zoxa)*+9WG#p=lmf47HP5sl`=O_xp91Jykz*97}{MFI|mQ7tuadO`an5w{81CVd0QD zGmo0imf?SYHgum*XL7E^J+A4gWV=aqbc49{X{w!JD2ZQ?8!= zu2O0q7h4u@8TD4CUJ=1OdMdp}C%gjqUQ%7^)4*INQJgD3c^}Dmv&iYaA@sytc~i>e zN$=}H%m0c#K%GCpo8!`fZsH4j-j~NUdR&(lBsxB1PCmq!UJ69sO50v#Mqebly~8iQ zOym0szv`xv4> zO~TDjW5h)2Y!1K|_s8M_dhwGorTOU~gK*)c{)Nwhk^F)9R7gz6{tmFfgqpyl>A;lB zz`w0E=jf35IRzE`{aQ2A3)y2(@(JQ2uaep^h<-S@=`tA6EY*4mlC>fIPDH|ajMR&a z!s!VZybKv83LWJS9fBd}Gm&tLlT69U$%=rkMbjsm?O}|BPv?MshlI3;voBa)84A@^h{TAD-XV#NPe1~iiUFV@Xh}so z@ufTAVY;y7+9cHY#EgnWl9|M!lf<&Xgn^wTaA0yzd~$AnvfE4~1snrL%M3%SO(>5~ z-m!>Cn@KLIO+nsC0b(Sl(va|FdXUU*R<6bpTKAF!(K4l_o0}z{Ep1uodi6CBuMkC`Fzb0?zf06$klb(qG%X=+ zVz#i`C9gLqcY!2sN`7YV zEmY(4s-|p3(eGatLc}Eq12A922??+p)xJoq)sC*^*r=5N*0EP|ZATJOzM(U1tu5inS5hV?-^M;S;6~JwoKQ6dH#EP( zp-XQhd`ji>qt4W;p-izB(JUn;(R@W(4cKq~*Ji0Vr1&_(t$2E^1g@<_Nv$Letz`49 z6t}HZWNkEstzf-22G=&Gq_$tpQuA#b!ZpQHBw)^V9=*LHrZcG$MM8xu*@&vtRE zmvedQA?74n4jqV2DTRg(1z`&xvll{E#Mo63Do^*loENG}Brh5u#4V1P4d02=kwU5h zpShA4hCp;5+WYgM3ozw9|V-Ue;xcMe3{s@k|PI zEd1`?5AlUt`TNfk28MiOQUeM_gP9Bg_E=pkFB)C%a1O}|Y&1Cvj zuIew8coX&BuyO+DtN=2{pIOy_fdT!sR<7qt0l4BWf{}fMR6W{-1GwT2&9^p)_{1a| z!v@y-PCau}fWv0zfMDBD^v7XiU(hr%AR^>#o@-!PE^Q1J$OzUaciw06R*S`LNYzkj z6n@+N<96sh5(u9YNC*H%-hRd;AC>XzPwOAU3T|&$W7VH(b*7tdbli2}=Q}oE-#D zyJ$kkVxs!5kwB`329wBIH2Od}2jHat^s5*~!n+>)(uoz6iAvsyP3;MLz86v#akm6A817+ z&9#Wk>XrKIh|tX@O~|p&)L_pyW6v8hj4<8}j9L%rii|*&T>`M@YxM(7*n2$S4pT@* zvjuL-NM*x~%?)Be86gQjrT~jw2x3A*&57R5hDztNHN833G;- z=6;kfat_Z47pfYiJ~V2wgpTW}P3nngp&l+2V*$EEz!}(DG4u4BBE3-GX`dQ^Wl~RI zA^#CO1Hf}SmSWh({N01DBiG-YtH8M3kO6#j%^pWa*qK~L}eY?<(+<=ahk zCa_S-KzQRT)a99n*n_K9?s5k6&TT_7hFZAf29c(xRmzRw3*`fZy4wLu<(+4+9u01=&}HS=65FqKlO?5vq~Lm;@;-BXzwZ)5_FZG;2$BpMb)VE|SQPL*E3^V{B<(pt`t=x> z@YVW<^;SdXyR@5?HNsyQ!im4=otdScdf#@NK0X(WIZr7&x12hcRXt}kIx813?z0J4%OSgmY+hNMPQL(%6 z*LRa1chjkNv(0z&@TI#&_}wz){i@jg`s3TI@T)%60qV?10v6@M5AwY7$}y_o(w7{a(|GR7M)wV8{C%Br`q~HV ziCWfjW$zZ6G@W>v^y)r6s;W%nE7FU1xvTqrqs^(+#DzwAPeOFEn(1rA?Z>8RYtqY4 z?pT-i$zlD%f;oMwG>Y7?^g|d+9r?w z8tp*PiU!~f01f5z?`h?)(T;zm6$GdJ4wxWNW&5v;34&98(+a{^5E&DMs~~g*!6}Fu zk>3H6cMZR`yMDz?W{a+O`Vonem@bRoz;a%zfzTC1y2S1q-#_Wf^=j=Ov?BTM(#k)i zOZI-bO5teW?+uT?1xygM64Lgnbun*hw`&?ofzTBMvmkT@K`Vv@6o@5{-?Z{isM0i_ z`P)_gD_!#cIEMV^etZ8+D}U^D(JK5Ct^B*A9X?dQ(j|Wt;{8c0zsA>}jw=1t9`fh- z`Zvp;HTJ*uy4r(&kFT5m(H`<^uj|+NdiDF6V&s!qM0*IL5YH0{lR{X#q`lY=gZ0<= z`dSy17FUHWqI?}OzWxqTi1%$PGM3cuUg=L-aTj`NxQ8gj`%NoeimyMq7Tr|+rj@~K zx(}8!9g- zq7m&O4uQ+D7`i(fiiYX}h|!KPZ3YPlCv%SEyPTPIDeF3?tR$yRf%(w4D#T_6E?OO1 zlJ1Mdh|!MD^W0>1j$YG@XDVmLnSPR%JK3q$P+I#iyNH$aggOEXsbphBAs!-~pq87R zQBV*YlL2ShD-605U?xm%QrHu(THR&MuSaFw*OPfzyX#V*CBRk~-XuV;Tz6l$Uon2D zx%I4w<8x6MlJ%>D>Sc~t>zei0cZapxIsaUUchq>f`4utRalUud3_xQ$Zb2seU5Izw zhQ+sk+zysyJL$mFwmSKa;t^!4547Ju>7w#y`_aY3KkV5_np|S}TD+pOQ5=d;o-sAqa&SIxKZRP|XE#-Jv6#C6U$9$rz3{hN-ntgy zUiL}lb6Pzl;ox2k39qhccY0P&*^MaxXxWr3@wpPGd^Fy&3D8gx+@@w+7Z1roDuu35 zOHtH1NAX$Jx~G0saoJ+Y=1|)Pg{rvp^QYX`AE7-PzTPZpzc1VW_AbEgz-ck%^&z^& zpnzgG(va_QmSaQKiJoUtYa}}JYe|fC+V$Jhkv)0xpEDym&OdxyOhnwLGZ)K-=U7v_ zYB;^ItXe*$^ooyypqV%UA6x-8hJc!7K(h6FBr%)UsQgQ2HP)4fwfqOypaLdf0Ax4~6PyyreV|O#yFI9?!7;J=ihtFc-u$?ae+?%T*AXr`p5P zFDscC03x|2i10G(kvSeWB~`V2-J{@_4RjxQiE%8Ox}Hx~;ChcdP) zXh?c~!PQH_#pW*m(!k{;5VT4cCoAmDKbAZkog>;_4rgH1{m7hU|AK}{qS@k8lzoMJ}ETFgnp1S1A9Q-U-Mn(24fci`77JrPfh{Ly}7D7OGlF7hKR6g0J9xqDodmqqiI~tpw{SNS;YWLNe?;x|% z&IDJj?bROq5nF$|!5Lmt^+x4%pxbcs>5#yn*{2^#H@A#VJ6A*gDrXs_ciUGuf}?SR zXE}ruJ8I!|ezq4bu);MV^Q%{`hdl* zehvb145(P3k2Cl@Erz3Ajwy49se3bzn{iv7L~YytG3Uh%jCF8vbq%ndW6yqotwp3qAQ_#^lR=?B~|$Yq3rAp2>gu zxxaV1{|&^#mWhbF#osB<)QUfVOgq3&$2I^K5HcNrIOz+35(Oe?C0Zvi)+rDM3v_p| z2+j+qIf6osdbt~ga3+FcCxS#glr#`ZngON!gH~8(pakU+tXGj# z%#n06)W2!vF?=Qx$tz0u3Q8RapcRNBP>&MPjh4ZP5M&0+&P0hJutlC)x;9#UCQ801 z;)O+&@>MhmPK@?U46AO8!BwPgevA}xtZ9Cvp>r$~V!#6<#_}qbJU-TDCIT_wfzuZA zF+L89InG5MamXD9_KtHCh;tQyL9XK1`NZyMV1D_rzB90gfiO0-Af`6hLkln@AB?LD zW~+^&WCjn(feEf)&>m=Ht!<`6Jfm@ZGIPSCT5w`dJmyXUMIbmcKO#jpL6kX)D>s3m zE#Y%ud{I2OOg^z{*lFsBeYgO38EkL6Q;TBNSWCvI9KG+=z(6QDV;NIbHL zsbo%F&`rJwOvWfkyQ)otUM10)`RGA#15Z+ufJsU6iRt;tKjM>M7D=U73D>pBci6Tbny% z#``j}-8oSxA=7UslUf#6;+nd!2aMF4M#qxbmY;_2oF>OY&ES%OM3oJh#nXI1T1cD; zVo5yRN!Q!W>6VW$>`gQ7&D^xed2!7ds|yxA&h>biHL06R<&x$km}WCVN6=XWOESrt{_5cQq{8|?jHK3c&{Gbp{UD$3J_5DEsb5P-oYl>5a5|!Ds$%NeLgc8*9l3Rt`bA_BsmePHRQk1!Z((95z;!?zqkNqxslO!7v zGwFF*_RP7gJfVzajuNY{EcpR-h)dBBN%=hx`7nThm>GT8qcYEy1%(@5(wgzB^95sMvl_4N&N^-VYREu;-?LJb|S8ah8WbSF0S);DzhpzptF z815spA!r=mt1-!8m|$g_dPQLz-Pl;wxCl?QSSD=}7ks;>*fit?h9)p=1vdpvHXV|Z z%b+%&2;uC#dW@LvFwJDUdeTS}(R|J7%Dmc4+1gBQ)PmvFA_!~&vgto$Vl^Axs}6iRXb#EDbL|N=jAJu$$4fHI&m;OVN=h zwb1Y5Tzn=;&eB3YVPormIlv0$zGc;tq!j=uh`M&{jj%6*Udl(dGnBQL*|zC(F)4xA zXV2OrA`#n9Oz25OZ`M6nB-+#qxg@rz>$tUFt z!tatDX5;dVNn#Ao`)2z;=C=+WgfMS(^~nK;PWqep_Hh)92PKV$F8W(l%etgjhTy_) zkoAWjI}D>Q7(ZwnW}X~IJgo+kkI?dt;2ls9Sd$XFjcilXMz|7^k&o_Nj~JJY&;#38^?qf#zgPN#NEb9=0~OV$7S5c<&wu0 z8po9u##Qdd)yOB*4+2;DiLh)Ybdo1tHcsdzPY`iVkTL*_MJ7%3Cr#ZZP3|TPi(V5A zPrkpKv>~6eyPL$d0U7I0yc^*Co(;jG0tmpS2s4~L$ce?@dKzO-4{1&l*-i!AX$84K z9I#zO*_FesArXza-7jbGZD*nyRTGpUNeeU4jd~=IS?0J=j*FQsMnL4<$Gjrj0(M9a z`>d4IEIJUttOmr60HH4HUv|wtyO?F3oWdOj;~D~}!8ivmrnwCPu1p}*7Qk+Y13}9i zs@gonXb#P5uFe{~4sV}pvUVnb&O@>112H_>gsnTQ=evvMiQmo*EG)(nE{rKVp{fA~ zLKnd43yT9Fw$cS5ltm2uXT#P&BCffLJLgU)hvjm1KsD{YYr2=efKo=&&*Fb*J zwF_$?o4BBeD6p<*68ZTG0oBs*0N~qq6tcsGe%w`D@G~J_MDHn5;+GAJ8Ueu+HJSH- zK@p32WkDLl1!m~HX4o96%_fL?J(6M5?)|da`xON!=&S#7`0NJ`(N{&dYeMuOd_y2^ z3!u(z4FE4)H!+y!8w3p~Z!4yNq~EXj94;e0Um4c-SH53=t|IrseF5D>7ywwns9bLp z*-cB?9uxth8UQ2w<}hN`o*As<4sPNbI#}q;)7Z>2a{_VGoTCSKxea$P(zl2h=T#=R z)=Z>5DW2UItjMi?<`WO+k`H(E#5aOJ9RiLwb_VBO zhHbnwSjIp>65)`pWe4koErfBbstux`9&RjPADteoLyY!G{5yBpt$XiRvoa6T2ZbpO zwz6ITWjL3ZQ|4%FP6)-0igEojR0Q$Eb|WbcA9h=c3VOH2r9o5CoZ<|bF%XJSAnW=Veig$H}P%f-bK_@5j zbVt(zb45sJwkfM1+xe%1fKu6GHg{@_M{CN>It`*gYB1<^_%7;uJxPrN^XEnV6Vp*TF2b{aZGExllPcwE2- zJW<}aH#-}a@5S&sySBd+LIF%Soz>ng-K&5JR1c8KZXY}bS3X=?yx&Ci+yHs3uE7s? za+gkuGuLDcmo*m8u%M@m6gT{;n?jE^7@7oJOKwmicE-_eeV0~2X-ldPH-9V$jy?ha zAZ_9(94J6TPN;WqfVUn45o{QWiRq_@r2~LMJUhI(S*-NxHJ@>5@+ei{BHqj|`gJ?(R{@bdHxBv5;$A<8{`gFhj|MonXe2 zV-G03NaWD%GSqvbuzi@EPO=rk6B5Jb& z)1F2G6IY#MAn*9?m>+($5)2?^XuJ0GyXA(0&W*$2LZb&7rNOP!kBxy;*;Io&mwG=4 ztBMlolTBYXw&6ms&H!DQLhyqp%Nl*k^xm88{k(zPy$^G8*mN+E zXgR+cil?Kq$RTIrl%sQHU%q4V0iZR6OJ%mTg^3WGWtGX0e(2zmC3jpelcn^q?-MUg zC_wMVFnWMVJz!an^msBTGGL-$Zlpe%9>ORQvWtmnqWyojK%aZdwS8u zPLXfP=ZT8IR@OHap(9sTu2QNOmOY&Kr@KCb=51=(9PkB8T-9fUZ!4b5Qu^|!%a4$p zvU)+ianwo}&`Z4uT!Chl#Ou34%t?<}dazM`&0$#>pY*3}zTuL|=t`(A$NqOaEb zIP@&;xy=|3pT6UgFQ0+)7X1hPirH+w*KQXZ)vrD3%cs}~kilu)9*<=BjeH3QIc7ck zaJ-g%8FOlkgCECMs#o9RE+dDCp$eEp`2KX#-ByticpIaw6%QcQzBVMin$q_h)#?jv6K-XptRfD!7B;&LL=-56{i1v;11pDfq6adb93bNi(XD zRaqB9z16oN86oS+DbsrE>Lov+_qAI&_3!JCI)y$oUToHXXojN-+q9xFHrTX3k`=c7 zPH5I(+ePUwY}dn>+hEuCxJ&rs0N+-_$00E^5&IEY#zy-wRaucw6WV5tpQc{>i#W`f z3zrpj-iR}6a^6by7j@am&24hoE9nybd{DjB z^!cb6P0aPAi?P}DbVydr?dOzPv)jdzznJ^gR&KNV%~6+_$KAzNvj-fGW(Yvx7Y7jx zd!k7jg79m^QF({G9{Cs|)ALI_&>Hq8>@Y-qS|b5}=rH_+vSJQZJTDR$J?z6MZS+8u zUy@+7-_Y8Es9S?yiX@@bm#@PJ`x8u(?A*pj2-z6Jjlbg|DkMN!+88yoMygtzDiG72 zMmB?~m43H0P&IlPFFWg*o~^BcX5orX15*T-Ut!3K04;(1r%s;pywLI=G^C9vG9>OB zp(wSqOF!~Doeyk7+&g+H66w3OMr{4G>97bf1j_jnvO|N{Gb`53J2i;aeFK!}CI|$+ zi_LOH+S<_|E?pJ4Q|P0ORM=&s6WncApbQc}U`Tb|#FuuiAbAhiwcinM>PT7G2nmeY#;c<)TVfj%YL>9wafElxAI34lI=Mx?04i) zr22ne{)k@-+R0E?P^&b2k{fw#p^tT~sM8Bh$SYY^=(zv$AC4y8+mrJ83p;zFrEHi;(PYL zBEAUjE$BP=9jQZv>Hc1PuSTH=^!+8i9pnh*MYIYcxc9gF-t6=t&=--RL%8p6?)}{- zh=AVOO~2B0Cq$$ULBBswXSTKF5Hk^oFkRf7%HN~!z<%M++VWjfozsHMi{8$w)p~^c z9{M;R$A%!R7XiHp_bnO=Itu;rdpiOlz6jGr27yAC^V(R}FuZ9rc`v163@ZS~RkpB{2bL#)T_>$qBc}hR}55#xoe_nha{cnn| z?Jx0l_>aWb;{T@jmRbBMzVjy-VCnjk9;VmKKYCfCpg;Qd!i3oScs#I92l#1qPX~$D z_fLly4)wnEh!a{@e32YeIvY{qV>cXSdwg&Km7Yiu^2eu1NH}D+WCG@=ot|iaZbH|lOm=u7O01t=D zb|NIrwvwTIP8RVoy2t*UQhq9XBOd#vSl}SpeUSnJTmUkVs6^;TlXPMJP`oc%3TsQ?@LN6#+TPBpoRM{DSe_{UR3r9honPQwJoq1$?U|CJKAhkEjUy(~vORS|2!=xKbkzUn#&S z--;MAbK6Dtw8Tn&odLU4_30z=L%pc)z}mo;iEXlBu0D*c(C@UZNE}YJRA*}TcKx21 zW9Slqbub|1Nd_)PWXI!&S%IB5hIrqko(1tliVe0wr0mw|@;_wjfJ4P1 zvj~BRUL}SHQO7P$K~d9Pq2`UIJGI1zn<#%1No#q=sC0nh#rU+O=^R}cD2d>>bFg*oaOlb>F8QJix@ z{q>B#hsJhaw;dI$vGFxd;P*g;xLvYB@EI~?Z1H@{JAT`4Z;C}etc$H*fJL{@+|(pt zs(+KWJ|5m-=Kk%M`2Nu+s8arJHEBx}2^(1-P?3suU?73}Zxd*_fkR82M*qUo|726ud3<8J+%Et@jVW!Zot+2ExrV=8czp~2KMX!5MMNv zWA9($t6I}WIC$(Qbh`o`(&=CfOY(T}58{iZ%G)h_NE{J$yAFbL)qZ_GXxFv;eU&}D zw%<(UG+}RMlYgjou&??w<>q!v{83$pugY0H-re>qFM(0z%(HAEHyTOnI%6$PaKWQ> z5UOq~3f2PXi(w;`XVtZIlM1BhtE;pz;b+2bgP%o@vi4AnKKItAodmj!)k9_%+)Z{o!wtEG?{4z+%{fKxcZ0Y%!lNY+^Frm%O zya?r`cgw;dw!HA9W9b*XPwofdXpP%Qu2D6*MmppUxwc-@_$Fc^D*$az|31% z_hqaI*d(mxsJ<5ZaXnRqjf8yr< za%1bxnCFcRbY!@6)zo%bner4c|4ew|&PnuT5dvZ6_Xedq^f`L$@ZkvQ(C~J9ixPdN zK@8Jq`N#zLuyFfI%K2*6e5vtw+MN0_apC)r$k8kh{6@|b&DI4mDADRqV^HH|Xbwj7 z{RZZK`bOyToZrjG?a;ZZ z&{d}o%Q|6Lj$zw6HoG-phnN2%zBS>LrsfCT;fLqpfWL+5;-L>}{}A6=VmT^g8qPn& z_m40gNo@q#Oa!?F7?&AYF^yW0DuUv-_y$JOTtV-=kgb78yyDb~03-=706#oFO0YIc zcqU4aIf^5nl6Qw-{W9{|N|aoDw2*GJL@gT)6}3DS9yw=>hHi|ObBvB|jKEd2GKRHO zK2VGcV2n^+-B?rSSd$qbe=ShIhr>{w`ZaN^xj>w~d@M<6taUBN2LWo^9o$b>aUY%I z&|6}i<2gPvQ@hRJde*|;GQ)gyVOw@ENF+?S6&5Q12*Zfqrilkj#tYfThs4JxSa2j= zQKjVLrq#kS1QOQO6CT9tg@m1)+O^SOCcR zr$~fI4%OG7_bEku&ih7F!KjEGb0iUVtwTk8VLmDW!l3L5b?{52N7xLZAoI{ z!ql@Uk5~lRk3r1GAg+Q}_$-36JDJE_v3Rp6<^oZC2_P|Wmf1}D$@vG$UJ9GIbdaqJ zN^b^^R|bwzHu_2i8cou=vjDq|fch+ok!3oH7wDw|80Tr0xFA@P1#F%VA{C4!E=V=) z$vS5Er0POWAC&RL1p*App2JANr%7U7&dhj{#ls@F2`7f&_$FIF$Tb$o3Jyd;GRh6@ zNxiDdRg3hW)y?n-f_NhqC@jHxmQ-!JIggLC0mu0nxCNN4d4Vjc3W9*>2Qc~|kYYjp z2s2CIB~D;#emPfKsbCJ;^8ysFK$>`I>X(@h7q%rdc4=u3iWZ%d zK_j_vg*+SLQuJ2DwM7BdO#%B}Va91Gz%XSC?viJ^tBU^$Y#LZrCs;xn{DEhs%mCzA zssIMuIP|!bqrc2!`I-)XkVDg3ZmCdwgi-cFL733;Ya~hT(#xbXmn3D0iuUvpMoJf(Uth?J@{zw~)AcRJ7bt(^ z^*OVyhN&-3RS{gMP~)dqIr9Lp-;@00bLG<;hhyEZuCHS0XF-REKZnG8iTZrT%w*Zm z`41v0kje_lB#J&@Qsp|AKItvOx39(dR9$vc`(7|#|5dE1VrG3pon$bc$yYM#?mFb> z*+s!%i+V`KUWI;3ywGd|=Uh2UX=dCh5;J_bP9w3>MKP=GU6ZM91I#kcYcE~TTyNm) zN#zY?zb@`zep&cVVzWi#X)w+OX2sRl=CRS{yXVc^C(T`?Eg)ewY^P1sidh_sQnDXMdcIxOl}Y}VLa_ly*{VY|gz5P{ z#fw55&5#CdD;C{(idRWE`u(l1_emwyibzU3t>!!5-*(!Nb=e7b{pu6E?L=;k!ME#j zo$qqL?XoY7<HO%)l-S)MR z^|uN4cj)zZy7qS`_4hXP_s{na-u4fZ4U7s8jOz_dx(-Yy4a_zS%+C)j-VQ924Xz3g zuImkMx(;q94emA!?#~Y%-VPp<4gC-vI@23EcOAM+8oF*6x}6`oza0XQ4}(O85!{RF zHjJJ;jNo3Zh2f{NZ@1TmaYROXfTnnEBaK)iGwCBlcXVV$> z!Zj{E0PYSXW$3_FXe5OUlV}#LLsgJd>u8lM5MoT{M&XW6zD*)uPv@g4o&H{Am~MbmcRq z(ncoGPbNTrnEt3VIE;HL4x7zWeIhX8SzjfN^W8W}<|KIrt3@Tfik)_mB<;td@xVJ8 zoeC{G@^M3Bx|9Q)T=to>2$}-!`6fG7%8@zyff>aGS~qf5UeLV7$>?jyOFy^i!2xjA z9ZMBV?}O&N7aW^a@uLv9i``593G(G30?3~ zri&$q@Qlu9(#$S5j;G!&Fc>XekkcEty)`2bRvZ=lbh>1^%J8ER9Nst;k-WTDzFb$f z=)n$ApqZ{RUjRLu>l$4~HdrDN<=ncPXFYsOGrc6^wfy)YixD{vHN}#o{@T6W8b#}z zw8WaQsIjEzI;GaSOw*YBpt)SrI>F?+ii(jM#l|7mMwQWqhUnWS7b^CY4TG?c`YHrE z_Z$0=O%n>6H}0ET&!?#D*fqzZR;3+^F6aED+) zf@=sGoDke0xVyVM1PSi$f#B}JNvK-zT(gG%5+fQ9R#GG<(%OLJ(2e*s?dRQqwHW3eIfT_p<{i{bR*vH7#a2Yno=z+)k zjmK99!>f<3Yh%Yio)ZJjlbtvEd+k04W7SPxPXcdFo|x|l)15L%ogR8|M3{nM+qgg~ znAre;?{n%?aEfAnDukO28~3{vF;C!yI1K>IRX&KFN9wJ$4CX*MTL6|Fc6dyh8crPE{ zU+kL$a3{dbpUxf>DL5-H2-z=rv@d%(;c!IGAK^iQ`t{6ga1`G_-aH^u{qI6n7x0;v za^qly(+j0>3IQj6vKJsIJb=Xj_}UgADRN_?4P=fIV9C17bi4tn0CDZyWnTaRP$x{= zTdt=7-B0I~Pp^e!ud&W_Bb9{P)yprt%`OaMf3(stEZvYc#@1aWM2Dh+HA8@Kv_e`KuseqFWjGJ`@G6cM~ z1!A!sMT}qJkUhjGf%T!bmwHwA0uQ>n&~w1q4@5iuO(_5PI0&oi5(fY(`}l)}?Wdmi z73ui>R0jx)?JV&r=*jpafZb3k5fzbHzKYFQJdqVZ%mMQW=7@tq@bZ803I6$*?r(g8 z1e~Vu$-h0O`@<*r2v1nI{xSrE4j+FV40s7((H4QvHj#Ji7Z@2j6H6@B(;lf> zs(Q8_h%)dq}@bW#~VEX7-}&KQ5%Wcyy80A_5sqljGt z2x6WoaaSZ&Z(YjIvXY=z_g>yYoPyw=@B)#jt3=?Qibqi`V475kB9Zw|bV12M-leOw z^hNw|6CAQIA2NP$R+S`r7zdn26ZZmz#bFj7n8h^(yDNStPYeHsBB^^jaxNx&pO~a<=OkGzjraYd5)E` zY9$%?L!$gK0aSg)101}k#1uW)^qZZ>Tnr&(W%|_wI6KXt(6r)`PSZs$mqHIe8W> zDl#0i8huC|da5BUiPHR2>%e;onD47(3Oe)%qqqXJu8*E|*iO z!EDVce)41iW8zIYRnp+_7m23l_Nlc`w}0lq8w&Qv85pjNGq*IFrP}_n_;TZX6lP>W z3v2-R=PsxnYUW?3Mi$}T8(~pcL-E>64IR3D@tH!LUP`mz2GVNnS1QMZM`Haro?O@9 zAB!*aaz4n)x4q^DbCa^hx2S8BW_elq=CbjR#h1K&V>hRY7+wBFEOKDz4JH)cO56tm zZ-^|xCx)3&<%xAPfTYkQhTAX^@XUWbQ6LF|(>D;*_}O z0m5m>;D{!1TAs-eC2LYl296i>8k3=#Jw~|eG`+#}Dq;HY#`wK_l8bf_O2I5jg4rfX zo`y-Tk5rUU5e^VgzBj_9$C&i$HU``a2_P}_2Glf2!M5h8pm1bj7ka5X6o7ZIzX>%B zN?*sKN|0N(2`zW?U>iGmlvA1sy#&9k>c%)_p|~ldx@9y@TV-6OzbW(U1(3wXL~LV^ zDXWv4oX@~iVh6k#TL8bj5$<$SzqlDke6ze6&vf#*zZq9Pzk-zpbUJ0e$Bd`GS;5A6 zI`td8IbScoqC>)T+OD{{z-+UkbHjA{slU0%d3p*nZg$cR>}baYB{*GMN$%0s_`vq1w6CG zN&!}C`2y-C8nY#uy;d6aE$S7{v!(h7Z?$>_G-?uN%giO-!a^w;4Gpv9wgGQ-w*@p? z=4LBgdf&deYSC=Jo~`_-XUHN$xxiG=SrsHz^Cc-fe3X%3ypHp4F1dEQ++YzmN+>%PGcleq*BMU7JCG`Pdn{95L@V$nJ z`m1s*Kf#psr38&?7FORF9j4W5XUc(DBfG@Ik$plu-|h$;=X9dVor}B{-XE-T+BmC> zUo@zjXeynuk@Pa0TzK|J$vj`@_HTcoZ6%7XbhmsNdsfict~XKsfhIfW!Gq}^6F6y>Zxjc{FjfU$Etc=+J0?Kb-V?J{d zNfUUJvaHx5*O0T($_SOR6wF358W!jHF$3LHf=as{GTOH7Xo@sLywh7bfjRb={I(6C z<8AVDNjnb5qphzt^E4_LHB#`pwG^3}ZLbmSFsesPh<%es>61^Arsa)UJFxmhu0v8k z7n*R@s*DR`IHubhuL7gzd%jAHW|A#@BkNE6qR!(Oi!eII;i54q)_j>)`Px#!rKK?K z`hAf->cOmuKt%zr6Sqvdl}6*zY-K{8sfzC+qk{%bLtwos8Ii1N5+NZ3&ZHYo^U?}zy|#Spa`%Wi2JvL{=c^4{(8dwUm5g&NpWF=K5W+i z%b*Wi^M5_${;v%B6*J-gy-ok`2L1Wp1-ap0bYYu**UE33{;yZuuw@@M-2bah|KG2; z|DRal{|7(v_d#DA^fIf<4;hP5ci{IY+<0FMFspNV!|*w+z7AC9_6N$NdJ)T97zW4E zzw8uoh%y~aWHTQ6JrJ0LZF?{ioK>g66K=T{`Jv0T@eFpbRT9jOJNsK8 z@HacIX1N0F33sYWNLS_WPq;Pw#)-_424GLPD^^-vzaPM!aNE9lVgh@@9d76Mts52y zd?VD!0*cn-V#|(@$7>N{9u?X+PF4nDjgR!&+&0#t)8&*rb(^ma(UO(EMdIDtova;eK>HO* zTd&X7Kj-SdaPhpm85pn4tnd~{d-_%$g{NoUsTZ~S4!}+0g?3(K#>Su1P?9k zOH|Q1k} zcAtL&Ku-CRp>x2!rKd1-R}iSz)NGmN@GjJ{DCgjcI-_Wa%P1FghurzZsTrzGmCHab zvzZ9TEUTFdSj+cKb`)LOeUnI-%pevzi&7Hfcv4^HS}Z9z6U+c0k3wyHlrat^zTkgb zLANtdlI|pV$T@w+1dRuU=|}ass2aCLT_Tr zSZ}F5&_kxI<;!`1b<6;V4tv2{RnNTY%aqX5{*n`#?q=BxeDNwSX91BAy}8iDu4hRL z0TE#(QC~)%;d?rwZbXJ{B!4O&Hm$|M)1&Sq(is6yG0vl1Ot&4!*XAx{1eaFL#q5<2 zySxh%Lj&D0vA&F-;;tF|fHTZ6NksU8y+6IdgW@Zx*tQLLdZ1p< zU2{>Q+xVGUgRVIo7{1~u63Kb1M0@$=1mpamS^syQr97J-4Xy9UJ~#ASY?#{a^`M!oC80zMd6zv$%g{Usq-%4jbmbm# z-?B6k<`qwROW4-Cr1NI}tT$*Zv!n7`me+xIJ0Jbryx(1|u7O;~#nF52ANONXg-mYm zmzIe?FU|0u+OxW>JI(_JG}~Lx3!V1}MZk>l`CH{DZr^h;k4|c;q+WvokUF#z5vS^A zoC$AfxwV_6=}ufTx@Uo*aeCxMY&gmX5)8=M2Y^nN`^8E>XVDB%Xxt56Fpy1b%rFa0 zl!t~o1<^&(GXgU)xRO>9!YBD-4CfuE1f%S5s7@I=cK2;Et2?{80X3CzUyJDeg8tzd4x--G0D#_ea{(pB3=DsNPh-D&xTBKdZSYZBf3dLO)H~=)lBa2QDhb; zs$&vl@~Bb7W#otQKV^)B(ef5&D!OCFWw#B}%b<|GGQx~6CMIJN-5rws!jZt7mcL?! zA~P9o2KSpCH%Mm0i17O_JML@w&bX)6XNx3SsP$<=& zADU}uxhl7dDE%jPT<<4k21s&$*m28@@P-%q1g@*2BFaqYfdvBP zzHSiS{L?_-P0PY)g>&QZ%8C2U|3DxR99i{W3y}Z8L_u zY3h7IYZrwiWCFzF@03Eci-ES9KzW)wly+?6ZUjw#YVdbx_Sq(!wwgXTH@E8-*e2~h zB&Q<&Np>3lNp@cRCkMg8-!cg>f)mz@hLsXvXTj3p<6lOfgZ%^8p%9jahBXp?#S;EP zcEXN;zs`bpyTgAu3;s!VR{S~$!lXVhxD!Tp?rKQE;7%CU`HSy_!JROm^KNbm260|B zR>LUIUx&igY%v(?d6pP?GuQ(Y{J@yb@1?mg+!Mxko`(CvK+o$hZGR%3n}_cVV0`B< zxbrV(!8vu_zda5b77+eA4t5)J3^{uwdei>$`m{!>$|xZ?g05`~S4dC&vmydS)Y3>@#w7IPxU&W(1$)LQVufPrdOc z5yWIl2<xpC5IJl z*9V7{oiLYARS)jlqv`?L(xaLYp2MTs2}!2ox*3hP$Msi+X!`jk`~V*mpg+?|6EF!N zinvrzY7<8tb$HTBYf*L5cDZwV@_9>48RqgySYT}jAc>fFz~iOiH0tn!**Y%>VJ@Gy z6lL*W(7r9R_28QmC-fj`T37dx2ZiJGQ+fP2>7^_z<9J1_FHt?XnbUSL!UZ>5qyDU$ zxMGC+=EyO@VY`fT`~{5cl;zc=;TjPqJHDJIr%{-lqUC*ZB@L(lu6*W|%5n9qwiI5& zq^{hyQ?J3NxWrH4?XmKowCqrjTEEeKA5{56h0RZna5O&H zgDv}%NXM#iUpSGr`$dHOzUi8671yJQtQkY36k*hj{h39n<-o;3r$j2mY;nCy*M7cuY3+cB$gBd~Fp5@E42JLFgcpuEpU zRd@A3PYyCLoGip>h9)cX){unorKR2SRmj#vfD8*h5`sfhr4zA8&5+$x zyC`2gctdhFi(?A}0OkCd4bo`4*< zYKvD+0V+8eYQPs&C0d_qRE<8U1D~^igsTPS8bAn$kMcl;sv!-%bCIlj;%?>bgSqx= zYLNYCv51NCyzZbuR@1tV!OtPBjJR1%yIym2lcj|rp1i8hq0F)jZx_cXw~9JI%)+m# zw8m5BXsq+Cs#@+BrdxPuvPkA$u|F&=K~wyZsu48c?IyIB@2{!&^UEtus{E!NubVor z=*&;wYa(C+n^N0(qSY}gsl&n{Hj5*IuKsZ&c{yx z@fw3SACuM&BO$C1d4{+9c!kk~h)@IkEUEjMb&;cjwf-%}+ji7jwy;mB-}I01IytXd zBA+o%0C#U&Id*1W%l$Au`l3$$X(>g-Bt4C&{p~a4%SaC#yZcr z2el(@B3!Qgt^yYal&@z4$HR3AJnNuZ=*JwXOv7``r6{@VN#E_u%Svk*wZ;pdU*LCs zE!`2rpJ;Hp$eK=LV%YrN9K7oIT>a~c^r7oiZhdV&?`Mjun1ty9r|K$$5p!j_`k5xi z@7fB-i|jWC#lmJz<{!^?^%tjSYZMt3@IUL3SqRK~sBu*jlNcK4X!NvASyxA_Xz`C* zwRM;^)WL08zENt;&B4Geu1rsd$a}M4W!YKUy^FE+BjV<@kwKzW_W8}_bHc;hxX3+x}wYm;o(`mQMS@V_lTfta%QAwc{(5Vyxxvn()>%3*F@f68T?zrAQ@LTf=cY^KiUOM~FgpjXL z3|Ba0uQM=K9dyCbwO722Hq5*YaDd?!j?%KZS^UF5xc#VIQ}27~Q_o%QKKr-3Bpi`% z&J{SuUB{Rlj{D)=9mSvGGjIA|e{6hC5fJRL@HO?ucn@$Pb>X^*{m9U79(z8K)Jy&u3u>W-LPK5y~HuDklnvD9var`11C{M?Oz1b~4{4!bQ#Cb9Nu?=n#djV8eBf7n4E!ydmp1FKKf^ zkS6^Xf{6DtaY`(}Wdq;=-Y_A2{N*6khG5J*S4TX2>lRRGF=aTiXm~uQJ~I;b=LOeR zY5v3kCt>a&r6&JAKJf5-xKH#u3ySwPw}EJUz*&0mnRyTmGX63x_OO;?hqTm2KY4AF z-vM5vzoDPuc_bF((~VZ7SC`8keh98bD1H&<_yEC~R>TE8z9>B|0>AH_Yk=3fxkPki z@vdt!SJV+bITAn4(}o~Xis-{8_o)~nxR_|wXgGEQZ{hW507}dxB^)jT0rfsMN4OOSBbrSE)|)WMB?jAUD0k;wM)&#!r;93{-fX)a{^_mP8h^kENvkKGMxS zQPjs~f+7YSH3n=-JUhC?RQlcIavAJA z6f%K3s~-V4Seo{ImM}wkD#k@BpS@Z&L#lOjvKBk2*DVd+9Im!FZSy>3J38I8D~<0w z!5Hd>ja3EW5drQcXB@}?d8$Bb#px!hiCa0nM$Y>E6ghJ&WaNkp>Mh!l&f=bLAArWHBD(ikIMHSeZ!( zNWJD~ep&#)OUX0I%dT@sP;Qa5-ew-5nC?LEjaCR?rO(}dg1b-`zV4mV>Si}Xo9QJGOU2)P?A+uhw*Ft^fj{SY9sQjS#W+*1X zkLgMq`=>T3Q~(=TYCi5p4M&8HluCl~fQ80nn5$AHHdXbUqIy=eTF|gs07g)o5?MqlnLaBpACr8XcgvE4NC9P63Hd*tGqPA1CmIZ29`-o7>?_0~%Rok#$ z%K)tVMicX!m?^uqilUA#yRN3Ij%K}Xb^E=v9I3J(rg|x%CK2XqG(AgcCY=X}{#!!B zWr(qk4i|epn`#45c0)#21HpPjg=w^fAhDeX#Hp0PMF--x{MxaU(nApPk%_>E2;w)a z^&yoq-~k+Rh#$5Lj#$=6bZvT{T4{FP6lU0r>eH-IUrA*DJZ8BrF10j!m^>v6oKIAF zWZ#0A-QwNV0>9o;Bv+q%SXzr#R?k${NYrWrY6W$*dak#&m$uFW+nPPddzjin9NO{) zN_xZEjC0yBL7&Hl>88*qW(7aHIDBqgY8xK{71$PNxGAtu@o?^CMB)55eXr?M_79B5a3F)V5A%fzHL@ zPB3v7Xap~wu?x4X6XWkP2|{0}|1Oj8;|m*cH;2%lnS``%fwpd;udq^dw+L~Mm{59! zEt9PIaYLmp3Ycf$iJ8HwHq6Xc*0l>o3rs+Y=kQQ5kbvzuYVNbnw7gz)*=ElX(dZGg zF!1n?eroU#IX0kgWTc#cwde>u#w<4(K1!KA`r!)3cS1IF#|(Q$<(&K_Qo0)C9#D6Ku`HWPm2Zj4ZMghWsEkqu>NO>we>fKpM^W}NF8%1ERTg`Ncct^ zY09goHoxoH>-D*mgPFM)9%CuqjEdTnPt4;in0U@jw2|tra8SRT79O1q`%J@|w=lWA zfG7%j8Z|z~G#UQfEf?#hqC%a{mKgIpuxUDP#%CJipM8}pZ>m2})_(5$m^=|Isi=P3 zm$NcAZ#MHbZJe9sT~EZAW-*X@f@rY(tD@WTR_yY`&$y{$!g{?GW~Y@UmgKL{l@-sy zl`N94YscDO%h@`JyBE`O509BAdWO;M754R3$@iD*hyiCT-N(=4${|4Pm)#FP<5oey zr^;)H6@wGlfGve@l}?}=2M`>P^}9khpV~UE*E)X2I$`@d@#;G1<2pI%2Bq)@^~t&* z_t2KfdfSg7^wka4#|<{pO%CBrt~Z-JUYmRwn*!~dLaUqc^)^Ts8Ny>m;R0KwU(zKb z?ZsG$up72y9=DW*X%tDfJ$<*-Y^*gf$Rup6fMZIpA4zq*w(~BwPar!+tc)hBq-Ge_ zdS3FDW2A2*o!>>u*hZ4td+j8t?(W*}GV<;wtL>sEVez@zy0c=6;zW8vS>HZbFQp;w z8Ix~)rHA;hVi{)axmM6e3U7Ne?tc^tlmy`t%*??TZvjJMsXcVG(UC;? z^lCL~GsFA3;`HVXxMUR^^yUa2czo^k0rloLx|FE;WcvCf4Ewa>#NYdVUzz_1bxq{1Jlw?7$6l4tg4?=kkFn>VolG6l&oG>+S{1v$HQy*6$M-@vNB_7?bCv zO^5i9i(tul2NFx_Q}Bux7QrbPI(8^td9)||onZYtC6xB%$FOCLlcz|Z@a!+KDO^9f zoIuvomC3H&ZS2+D9${DeZzN$7&R?M{fJ+vRp88y~23-?Eu8s6*O)?MFDuWLjuh7OJ zx*x*|Gfv>3mo88y?9&??V21O@TceoUrODgKQ<|u!XEW`%?`^SQ)o3l%yL{H~=GC?t zmA7e`Ou4ossrvUS4)?Rs_a)z`%T9@5y=XbihX<*LMx%!j_J^it)GZyvZQmY5E*`!p z^`*S|Et4=mxi$2RY3lZ$W)jAKj>0ktFCaZ+#G7P~J0BnSG9M2*9*@2~oyOaeOz3?F^v5^oBNPf?m;C=MMgKFh^VN?0@0oGWE!XeQ(EDdD zpX=k5jvzAqN6-7K<8S?$`cSXOpFg2UY$AV>oou2Ac)!R_HZc^syecuYXFY5$pYU!~ zy?puto?RT$m69cnr6kTSfhA>9ErF-+&n`*u@zCHmmrryFgl~x*=JJ7`$|Loou92oP zCA^TPNi^ZeqoxYal41B5R+GhO=z;l#sc;LkiKY17p@jJrYHSM!k^pBD*E{Xn;j=00 z+G4(B!dQ8~HENqN_RAR-1RsOF5G7vDt=bVW=u^zPLV-kC>;}o__ZO4x4)n+qBB$X+ z3NlC}V5M^0E2~!{;w!;w-OTyLlT1(42h6t)o{%-23l&$dRtd=y%mpN8L70gR{?f8|7Wo=F)CkjXV z66X%&RrUECrzhVzv&j%QD5y1K(-XhWf05A4eXrA7qF1%XqA>0wQ;L`E(NSNU&FvO3 z|7~~fSaZq0qL-V|?_Cl?EO{IL&0aB^#d;2g?yE~Z5H4Tcmns2DRNjWgOigpDJewo{p{ELkZ zd%!TKD-?rW`*+yt)9>~ahj7VAIvj2K!9P>vGPOIB5lnO%Bh75)vZ=qP$m7Tr!vsk# znE&i$;7IovtNOnvguzzv7PFC>IDyBq4P}e97NZ5aDGjh*2G=|-G1~92RlZrgg%8VI zn>U=`3Q=|C0=pN&Z@rB3FR}g%qNk=z7v8M1Ff=dLh*KzMZs%T-|ggmv)DH!47+Jm z?RT`P?{|uKeVkiDb~C&YTi#@vJu<+089Y)J$$_*7d%3kNL#DY=8deNuF*Y*$`DxB6 zng!Z62m3{NIS5v9ISH_hO*I|Ww4@BSv6U)U2%{X9HSOH1mMgB799G%{xKULq+@r!a zHd%4z*go1rW?wf}B9U5LZ9B|-VoxV&Bul+r1#LnD+k3N2L z|Eng1^5KKliR{8c02VJ9bPc$EUCQX9C3-3zIz zcbL15y%^t-nL~}N1HUE)=acoaGEJ-NMF?>ZacviBKr5c)Y6)@l2q%$x?fCGv(5qpV zb|I?CwEgf)!{-vMM^lty<(v*;G7&kGugssb&uP0HGta*X`pLAwug&88-aPih^-^ic z==E|&%afb0@k0tXE5S<(~8(9xT34);%P*NjjVZ`WlBBX2h(7{_im83_;gw&IZD zYut!rJlwX^#_8X|7rzs>+vS#h@V3smNpiO^OI>i+?iM9~II5esc{s*sQ@lTEyE%C{ z?L>O^xe^zzxLngd^OTh0R5!n4uMrMn52 z&I0*HvN2o+x=HWPf<(}Bz|bJ+9!kRVU}=*Pco3HlytZYCJT?|`R#OzJ)_JJbNDgk} zLXXNyXNY7@&TZ#F6e#ID+(JH=a9#_@Ad9X zk9-oj|G9?JCv=E6CEnnGq`*bAxp*E$Ih{;^&_zs=i3v5`;AdG{>ewv*Jc8$ggWJ&; zmO6|)Zh`u79YBS;d{%XMQJtyrqc}+eP4#h0Ar|7q*qU_L<_wnw|g2&Qe7B@5A91QXVo}g@qA*e{g*O?xe2Is`RPLY3QDq! z$@j4ZblSxi{zD9zEm%bmO2&)06y{trtm3T@I%x>qY_`0UFiKmATpFW7k;b%(u3mxW zAg4qcYg{qemG)~lca5SXZe>H39j(&Zad#^x6Q}e6y>z;wrhA8qiy5ZNBgXj87Xy_| z@JE`0K?_=p&eid6%b2N97xNjhazU=vret)Bx~k5#2^`GI0uRIEzRs?B+y$0OL~S!> zsSWr#uuQNwhc?Vj+okD4hu3}+bjYOMVV#HIzzFUp*{%hA#iPJHpa?QPGdt9h*+arO-?df@H)%xMLmyRz-R z>ohT;NZ((1tpk8j<&7l2MpTy7ey9NRP>!r23f^|%4l(`-TTxm+3luC|r*?MjCda4_ zmhya#5_=2lWmJc1j=*{uNngl#Ov3f$Hwl+vy^OKyNEcWyzAxr2_{ zMgG;EGFF>$^Q)KPjZybEy^I{Z(LG7Q`^l)tx;#3C|ID89FM1h&V^85p(`=+Nf@24P z!N>q~OrL2KYS2Wab1l*Z!1CqtqH&RPygv(B1U%q9K+9RQ{dp9qlX~5N_&1q68r&dCPp&Q1bo4ViU*qmixF*rSC@i z{F4wlU;$&a&yDMX03-tc4Z7bX#S8{uiC1oMsJXo~8H1omd%LrdQI5_hI^qieKnzcB z9^4Pr*x{F0YT`c1nrCU85wJF2N&uFWcS6x;Cy7eI*J{Qtqt2q1Cts zNdwODl?azQL0p5orN*(15ADcPl?fuGK@sMYW^H4H{$+m4+wNs`rtIT)IsObY9Z<-VZ4%zP~n!Zl@cvo?ISF_pOe!uU1`{4H=m zf8g7*96UuJQvm?Qp58wz-f%V;=+tHMu zsi!BNzii{X;g^0a@P5b?zTLV0%qIT0>;7Nh0;I$Px{L!P{R2940~mVzk-7rB*8@n! z0_orb5h()OA@)DBT|}C^aJw9K1BJ?^#GcUy2p9%7=L8W@`=N>2+wno@1_HMsK+Q(* z)2QIkq~Mu`;7}+Z7`zrd5$KqDWsd=*finzFy0unOB^pnp6@$}Wp#uv6JuvJ-3kR^C z1ceq4*p(#-`bh`>T`vP>Ptj$UXqOh@OfW;n4d3Pr?@J0Fx~1xE3ZI({=kpEkX`-77 zHk)vznsqgsx1d_IFk9B5TG2B5CQY?2ZMMlrwasTH?i7hWsgFVfLFtL~MZnspH#^+J zJ{i!2oC|H!d^$r`OmP0B5dA42?$aqf__65|;I$=)A1huw3e_+QAzRI8OVU6s8c|eI zQBCCv-|UHu5^@N5no9C^TP9fT4Q(J8QwAJABNV(9gB7BL$_}JyR;EA+H-;LhvNy+o zC!-CnqfsafgQ=w^;Gm)>deOOQB1ZHR_MDbY? z5AI{{B%5v|$F)&No(?8`O{O~zG5y|5dE;h!S4{a}Y5Fsn68hQ{7)l8zYl`4bi6mf( zauAMjpB2-P^C)<)Izm%tVpQlWi zuPTtQrk$_hp0AaXuicWbyOjUtKHq?_z-Wn*>R!XIFUVLn!m_2nda1zXzQB&K&_ST^ zy>{WRjm^EK&~vHK>%P#Nu*g@S=zt?<9*e&c< z;Fn4jb}R6UxrM1z|BBsyU;3xa?JwXKM&ADC%q`5R3Nx$z?R~&v6!G6;w|{wp_1|D_ zH`AH_jotq5|8f7{_(Iryz~FzAxsCg`P4!>fRCBDJ{FS*KbOnaHw97#=jJaLf$;~u*Pe3o_Cm_C;9nLef5Vo=}Go2GI z#;B4RX;xxs#!Hw2&QIl;+0PFRgfX{iGzU?IMUr_|QRT4v046<_8f~yb*%C~levPAj zP}Yg)k&yDF*-bg^3#K^p%Ra(7(@${RsjzA#>!&m1+SU)om#@zll`kB+o zhTS9kEeSnD2nOf9_~vEReYD~t>^%(ezb3kA!hz+x4Oy*-vLRN2wW}L8tz5mk~EX=xpOl7uz2+np3S76Ii#H2C}8;zl`vF4uZR zv!hoJ)G*(rptsH*+=}NzYvt1)f~iVR^>cNbv9-NB-^2)0ostS}4 z&XRAKSR4|G766dsOeP|H4)CX_2sy;U5Fa>@3&$9R&Mica;(96KCw>-Y@nikQU5oyl z-zIpHK&9e~TGTDcDTQ9~hR1bMp|E6F=;sSE4fsJ!Og=yui~J@oTK)@i0x;lUI!9y* z8K5D-29S%UB49NGAtzyiblP$l=uo(YVtV4ye7DJfG;()7PXajLz0pXd1BpOc5zTSy zv^qsmN)F>doH{LdABzgE^*(Aj!#uCF5V{Haiv)WVGn5~iGPs~DrY`w)wyXXqCEtsb zTs2zGdCm$v8Apkewva1D{6radEWk4M0Qwajl!`m!B6D+QTWq9xgx_o===6sM3vW(p zK#aL7#>%9^8_w|@YHS*j`^?7+nLs(xsN6)8d=UZM35N^iXSijX7!kNC%n^N7=0g^_ zZ$hJ!a$>1*K43+RUABg0I0qKQlE8qOORy^EEzlzIKRV`OJbkJamI zrq98lGHxq!-`u-gs1Eg3J{%6~V;=KT-65=ee2_DE`lQKu($v-mZ=?clT&W$^4EFdc zJoX!6)RzI3cV)!#<=?KKc9U121_fL#`vxZQQLV~_a)Zi&=hEHcGWr{jGO+uAq`qgu z)sdy3O_D$E15BqjDgNd@pp=?d!ucQX1DfOE!Y&f~(;)2QLn9`N-^V7(c6f%vp`$jD zj@@g_zig_%-v^Kje7_s_#^3_~WZn~l8=nYPybMMz-;>M@n}pd^8~@R!I+o8>B&Bem znySr`lkuuV>9>BSfL!UdYMH*mAq-`P^)vst4@hCJeXOsdz&?W6R2L{1cxn>U$xS(b z>t{OWrL+8QQ~i|9^Se#;?d#=Lj2nkeSU+d_ z#{R(j8*}SR)W!;W(ewqa7G_fwGNniY7*d~*g+A@u_|fGm!`S(&pNVt_FK~7i=I;%P zfOd6xagjEHnttnNHjkK&fnpLpx#?d-ym=j2nbv5sBl7fq_=A^YDE-==v{K9O{Y=51 zfAll2a)fJC3V%mYe`*SQzg-YnbpY7VpO!KZUNn%@Fc5P+a46ejX8k=|?t-;{t0lawL z2>J!cJThdl2)ubq#A)#wPBc^r`E@%oAX^LUw-=_76z+Nxnz`#>APM__<4$T}&sf+) z_aMsy^gvkK_;uhpg*;L=NIfYsN*(wFCA?oc__7EDm3AOG`^0$We!Ca$x=r@e0vZD~XqV73e4`3G|#i71X>0q^mpg?-S(<*Q&vO8<@vki7K z1~(iE83>W9rw=j~oeYH>14MxV>m>?q)Lclft4N||ETWspsWjM6+J!Ys?(#Mk6%toH zpt^caCbJKw8HA|c#bI0|5UIq&879{F#A}*|B6h`_u!X;p4i=UPH(3iEcKtM3lz=^z zz{?(w3`s25NJ5(Y7*ibQ4Y77_j^tZRw5<;+Op5QPPe3qC3Q2Ooj!Kenj0^2b+H!S5 z+D|bKj-sMSMB{LU4mi@|r@p%dS29F?mX`lm^n$=G$|EV&+cm*=KQ^~GJm1ZQdjS~H zWF~4sQpS%R^_s=C*r($ztUF0gGAp?YJ3R}E0&t!W&P#UDPfo#>P6vsmwh~~@yV0;F zr!S%qB`>CPT&8Ez`*B(L4Hl<8cXPRRbunUdxZ|UkZN@zbu>z@PmWn1~0eyl|vf&c5 ztg5qIR1|<4StX*`5Q=OUI-e^kMBEfyd;#1N89d???4_M-FfhlNF6T-!$HG2mwHkrSDk)H=CKw~cuUdjU*7MS`JY~>VWb`_wm7s#U)I>_R_ zPr(t_#&bR(a7_WbYZrZ=D>ObY)PzEceDA$j?ThSW!J&+};i$0Q7@pq}L9jbGMxfaK zJ})0H9~}=T-3pwES`tr)n~2JqIz&*|k|vY_Z;M)T?B?8*Qrd#*Oih4y+*sO4SoWpl zy)iGi+r3P-(WRjz-KD_cR`fj+#rr7%$6+h)%22H27QBgjQo0+*>HBg75#T(d4YqQ{ zj(f#kO2t7-#nDp5$$iBcVdaH(g$cN{-Use`O67e^<&UMx;}VBW_d*lz%17<0pF^N) z?efRya@6H2=B_FXqH0QDHKtCr-OFm+)M~=k>N=ll;)iN-q8duU8fu*yT8|onz#7Kk zET-ie)tzcqqFN5Y+E>6@E~rN>UuvyDYpu|7t?)yw2vMDwV4b*5ouo&dbZVV!Yn}XZ zo#I2CGEu#%V7;17y@p4!ocp)vgT^jsKyw(P76tsFd7inKeSE{HD4o z80{SwMKj$+(-WWO?3`w_u4X&gcL_|y8E+e1Q#o>pAcb$i#fLst9zGp-EwM26y0w|H zy2aS2^{G$mr~Z2Mc18zqB;cWw;`T;nKL69gY@@ua#A~g$*BAz`EgH1Q-hxy(f zBk-(8488Rh)SpER$wh}yNA+c=nG%YCD6d}m%RmSL!`0T-&BOo|zag@(LoX(WDI^Ix z(c7P^4%1SMV2F;iezhF=3LdlO>6h=B906l0k6P!9a(a%UGqVR0o3FO%eU*pV+;rba zXr1tkp=1Lw42*QUTM1hzC@y&x%ZS#G%#Omr(?_+5ur@6M)}6couA?DC^*GYx`155N z_v}H$Y^O#_jexi@;Bze=jzMM6n685*p&iiWDhxM!qC<$*e@ioJkAW;pM z7!GRLOSH|kWI;MQBfqm$UTYXa75hKlPPtT1x8^d~6V1?|N|<_>n@11~5su#iiSf5+ zE3&2uY}7-)(UfIPMFm^>Sk?yf%`A$L11!-U{1!cS=~mbmKOxUEqK3GjzyFf+@pyVF z`;_6edrFwdGV^roqO=C3j3NDH$)OD79zRVGAt$f6T>svxs%%*GdDcmFLKAhWL1sl! z+A8_QJb`zCB5P&%bXYl6m-W=tabUR z^V-R&$vV;csqE?v>cSln`WcG&y^iVeYGvOG7I2Lb9R%?i*M*s|+#g zpeo)Pz9Q&Xi*@@6{L3M@@=Dw{%h<2z=Y;RiwYSa*WvO(xq?v{CSJtH*hiMcxm}(>m z$c6GOs`$E;{$g(VU$+H`cOWWNQQaLe&mD=MJHlrh)Cv4t<=etnJG=oDymGs|{2+7t z-T0Ml=q%vH>6RYx-dFy;Z@PO%o_i)g_srV%EY|+8siOXG=y01RD@BK>R%zvP)dhi5(-XsY;2t4}+5vt1E9lVwtz)&5c$Q+Iu9!5ugOL>E{ zoKl-~rafC2_+hh@5IsNRHIRaS+$F*yXRMTIvouZuNT-&^nAx0a#aMBc`O6CQfP|jk z76>KenEvzlqWZX4I@^gB#0V&pl?&7QG%^24Kz4L_-ocd7}`W2@{6(9`piwxpB zJ@BOtninR?F-8fo<9iDY`D`DFia4oT*QlG%UqA#=*Q5P6Qsw|CaxAA9SfYASmxuuu8z*F3j_(3WAk2cl+#M~kY-NE4h3v*k1W2{`P@}HPn zoNeW*f9hv4c7p8wsh{~b<`&Odr}uBn?M@^n!@pr}&tx=i|Hj<%}U3{%Jbdt)W{2fVc0$k!Bf_L76GGuVpI5sekOHZt)etjFPoAq z$8N2Xya4P+Wd-qn=x5&2&p^g?RSj^i<)8h`dEvLy!D^6xCJxOPKg#-r;=qsW8iujL zcVdVM0qj}E$SF9@MwX@QnwHo@swGx6P3(E!9|@c?ZKru~3+#WzpR73KxZ)OD_kJAE zx!aHG>)~p34d`NeU z3US_4fO&D=J(u%@Bt@;-PWG8tJY6w!e(}2*R51m+o&MF&bShW9GX0xP5f<=wiO$Wx zNOb;b(1VP45Q7e6&HHQCgP^^TK@T$PHBMg~9-jQ^(fMQ3gY0;ZQ!#&SdVdXiw~M8H zD_76|FzZ1!J)^8O2<8jf^dLLl-#0zTpm%q@^p{HK-wt|f+5e?P2V&5H?068B&fh&c ze-3*5e@S%y2M4|XUGx4MTiO3FKJs4xzG)KwXjA+P@U6}rjHOX3*8Usd>zMYxgWi8J z=%J=$0{#Si}c=dcE=@~^0eSQv;L-$>sv1;zoG&3l2 z4CMh8@_T9&3XQ_^?k)8#TYQC1v-h9FUeD-jHY5o5^Wa8%WffGGXBiWPnps|9A1zE)JUU?qAI zRcX<%jr982M)>C$!O^6;NWA{sq)^XI?SgMpLA}w@!6^(od2T@@som+FR0!1bL@|X# zNA;9d|0v_CBQE%fU5Fy-Lq5z$*VNO##xqSbfI|%fRk9)YJ(rX}Rr*9RaSz|)?xB=_ z<6i2!9Umx)1&PB=7>&@P;=CwrP;}x~f~UU#--iA2=YIqE{=ORFIRAY;AW-lHLK6b6-VYP`h_h7Pn)2;l3EhKOy_g#`h8mo!KLS_lxp z_cIsE?{}!*A%O21RnYZv7TOjjt$jP{QpD{!OuK=*7b_0ntiX;v#1{9A7k^qUR zP=m?^YQD@8>979Wel2pVS7bhhS;%%6Ir9uQO2fV@iYkpK5+rI$R0KXhY%m%+h^RkH za|=})q`Kx)Fk=rQ14td5DAbZ8O>@M!f5f?oex=(lkm?IzO2`yacqa3eqb-}}pZF@z z9I-gc9BfPCN#;WriyZ;#!b2%K#YU!JIjdGCN~_RiiT!K1Tq0 zAu*)MyB|Pta4H0O9Hf8RRv&4wrOBnURFFg&eM);ujj;+%rTFX(rD!Ivw1)y%V8Kup zft4h6nf_X^a!9~bKc{FF3Ihs0t_!AAL#So+gnrgl5UEzX|6ErgYq%f1=kgKb!6Zs2 zo`Ro=Dmw9vXk75^p2|M;A|tJyUbuE}>l()gl%^|%)^7=tfa9!*yZG96Qj0==wjrJr z5;bONtR&4rtoviv#N7+Y$>_yUkG-^ffY0FJZ zT~$1gU>u*^x6Li>#U*@0>p>+Y+Vs84p9jzL*&`@ED`<>8q!-Cd&92%st7g1ejW8V7 z8LvGHi~fzj^YM}r)gj{1TS9EQF7*oV?F+Jw#Ub)9wXk=t$%aF>t_p>h!=sMSyv>jK zhx&M%5cb?1{S8lOV@>BatZK^^wn{7zNvtx$+j@Kjs`RUx;@(e^-&$g1?5#StW}lbc zW<3UHYi5R{gF0(S(Wi$8DXqo@fuPTPIHPr@s7hATM$1HriIG`^d4g}uH%NyoeBNlY z@V-aPgi^r*_wL!UT5S;SUjI%Sf~vZL!P0|bkhYZv44kqVKlLGoGs=89tLpQ#m?k;K z(H1SAGL{zGUs6dCrT8R4&eR&iVrw?luV~jO8j&fFvjap*5~SukG^O#w7fySlQ!4Py z%=hLovSuu}K-V-1ay3>p>ggSGKT}FP9+#)fy8xWU+NOXSh zJb^zo4ylb@B{V|@y?#e4M&j#~^$Tc&j>b_ZE35SDKl6waL2@_QISLVC@=vlRV`6zc z=|5z=nr43C-WF-`xvI1`&Heh@ptmnQ*DZHfox18~Ake(T({fke>>*(4)x46*f8V6E zdgeUdymmi!-}d}+?v2*65rli+N#H5TFVM2(q4uD_^m-W`u_uKP`;6-Tjh}J4lUse!AlaKlDQ`d{WXBH1$*NGlP8+h!3Ugud}(|+Ec z6aa4?yg_(A78Z3qEg5pqGCE$T)o|)P1R(eQA<>=^A_)7JL~W ze90t0_`z?TZLB{y`*9}uaX0ue47`Ko1o7he3v>E|oPEZA0YvZp5ErnZCj8|d{6FIb ze17njQumN3#8V6AQyF+`#_sotG(Zn8P*x&fAu+&DKQM*V)4nR;M-0J-%>Yr-KwHj$ zHv@rFL4iI#K{EzHk?0QAoLF{v!BB#M^94a(`oV0@#O@}VxJgg|1pcs>YFolqDyO5oj5W%XDuL~hF@S%=bp%GbucBG-(LZJfsq58q0)BU0L zK4GDop%r-Vst+)05d!O-gEE}owhZ7_7812DV0O|3bgT3AtK&D(;7%v;4$|PM{0irt z3|Dvvm(0hQ491x?0pVGL@HXriDg$=aLGP?15UL`vZ6a}*BjKQ;U`V5&Vj^Mnqo5`u zaXOJmXiR<;{ose zW5U_teDQz+9Z=AhK)eh8HBP>3>_{V_sCyF-3@r$d`~wSY6N{D=i%uE~1r_~~3y$|~ z-1z~zs0#?rlnCk28|5$>gs96E1VS^7t#=TAci|6x8Iz3#B%?KgA`Qkp@PALsw+f8) z-Hc_IjO7XfVjbFDNC5FZ2hh->^Fo%#!dQn#kO?A*U}J)1NDMSE(UuF{#U&BBGXXCq zZni28b|MaPDJ5_Lss14#ag8*@ z%~TR#+G|zn1y>r^V(Qc&=sYB@tsxrqF^N?Jq|ODGjR=_M`oVvntcj>W5t2^4=)Xf7 zq)iLL^8N|ik=7T0VdR3djo^g^$`+zcgU^aU3QoJzK)*S}Au>xOrOQSU%7)X=hQ`l$ zJ_ONfg76^^xZh?10NEd;GBY$%5Rc*wGQFY~(`B7Au`a~WK|jT~e+tt=637XMMSS;@ z+3r=@{fForkJ->kUQ9>m+W4egO|g_u*>Q;Zh&K7Ji0}9`PjYvfKA6~G|{!qWk;mx`oZGsTvQMMIvNHJes62`V>9tXY^=hV=yOXAYrr);pA`>1FWH>kg{q*i>2@jVSRE}kJ7)- z_)nM>*W#zw(*l9jR|B|RVfBqhywmsR?Z75hY;^YDoNP@M3Vxy&%e z`Q;H~F0^oI$^Y_R>=+>ii7xlEbEaFdt^!?_5`OT-K*_l#=~YwFy<`Q)5Xi15WAX^} zg#WJ5CF#N?pRxo54GjwzN~Ug{-L*2;Ufw3J49y=izy39a&0696#0MU&L6=l_X^yhs zM*mDt$W>CjXIiJ{8j}}NpFWtriBuv0_ahP~t1!6=^EeUjb9E7Sg8DBE#b<0~f_Mad zm;t&Wj(5D1t^XWF_aRh5|O;;YWi9HbtpBu&~s+|W!zGWtx=SB$wL5p<>* z+>3x`h0xwM;D2kLcTXSkXl{*&(XN^mc%6y~MuymQTu+a&(X@F`EeH_9F_BA~p~3@v zsv10*I~7P4leC9m zKLfK`26Zp{hJEbf3Gqlchm?5XDj2Y^t^bxsY_x!WPcmHWPLx3i$s=NQYmW@HVD_ht zjQlnmUKyGAjR8k6Ix`Y5`yYA4i-e(--=mhBqZ<|?{P!cFZ;{HsQ5JXsT1#ea*kGBq1B0J z9!$vWEU-HLMa@}Khg2k;S6+5hqj*M27E?BzN&yvJgNRM*6r__rvgI^8e>uxpHjN-U zhvhSem^DYzHHW@A2MwI>qMlQ3_2AKAu`Qd`j-5yAoZp|HB=C{5*O~X%S%8!ZgVPs6 zTNlDt7b0I4qKOuN@GZvaEGBp?CZ#W?v@WKtF8+L3%p_XM=3C0uS<3fVDokH0Ze1!} zT`GTBsw7&j=3B1SS+4h3Zb)BlYF%zwU2c0>?jTy};#=v_S?Tjw8Ax9lYF!ywT^V~> znIKx7;#-~3S)KD(T}WSDYF%AfU0nmetZopkZSk$`=&bE|tR1AU9ks5VtgfBCtX&YT zU-7Nq=&av)tUsi$Keev^UR{5ESqBhrK=DIDhZ}I78wfu)kUXcpi&CM1Sca4>(B5o* z-vMI2vSNE~LZffue%NHb6(cI&1VL{R^KXi=04ZNLB(^qP>NbGXQk8Ze$=?8qbLqY- zZ|B=?f5Kr!g%r$Zws~GN zOEOo*?t9JelccZvjq>>l+n|F<4~n(9Lin`ZbxS%&4uVe)#Ig?T>}XBINq=}Q#OY!s zyt3@=NX01}FjO4|mH~n(urk&_M1K3##zz6IM|`Bm$dgCAB1a~`V}IFW9^fIm{xPZl zv1-<_!{~80@zIR)a{S?lJu4Nn4ys5&3Dx*E4mtgX{p}xij>IpXm2LL70{2j{T?jou<9YbmrF}LtBkX z5uv`ZbCj$zc+#_awR55v$oq?y{qqM;yg&sRj=c+gUkTy~Y`JYv-zx~^JBSc`lx~30 zCyZHC4KYbden8`_0Na8>rUbglXr2wY#HyuV;;*4LkI;=TVXNr9JXv95^xW!oif}$8 zs&LDbF$n&krT(r|qzj?|FnwfIg*B3*sI~sJfb%#4fLvEUFfen4&l~!1JxfI>aQm5`Nysd_VwdoA^<<8<8t~{}=}Kgt*B% zDR2SnbA&?5{sLA}qWC~P6nDG+<^Cy1L zvH!l{yX&?dkn`*P|3RYD7l;9+t%tDF*#S=u3#XTvNfCnlUJK6KdWxb8o}y11;R6OW zv=64X?&n84U!gR#Kw@Rkh7lkN1wcVGw6QIZNfnFa&)p{iD95OzBSHY4;Kji}12&UX zPc`c;SK9)R?@hFu98TwMKlD+pw!q)dy_8^o{Ziq9?n-IG`F^YU?-CswK3_H(9~iZA zDmYiH0~;s+fQmCi)tbejD+Q|8b%7SN4>ny2P4twZx%EAOM*>7wN~IpJl^76vubSc8 z*!U>IClJwmq=pVUW(jR%mpf(02nY5l62m{sAq|lwSkbB6K#$Mu(iGj%{C*}9!2l}V!$Sz5rMt3@_ zF(E@jKQ2tP2t-nCm0or&%U`!PQ$t;>Qv-?|b%hl+Xw&AI@`xC!I50U9ZL9uZq<+J`NIpHh0iMhPC2k%tHFeF{qFL z)g}DfuSoUZ-bQDRxu_X68YZ${%~dr{xtSEU&Qbo#&RNq5Hj-iT;4;Yy${!}*Okq6* zqIJPwYT{9Q>(v0j65e`UpU|p5vzL>-)@2fzN*}2B0D=$AJe=5sfFnuJq4agAk&dON z@J)K+KSy??OtbIzn!j5boJAVHv$<=w?nWz+F7+K-jba1n?V;NYQWp>^c2r>gZkK`o z+G0B{0RKXw-FVc((@(o~);pnQ+p=#4qO#z)8ASb) zY=Jhm)%lM+V)o+5GSR>q!0G$p6dAPq!! z-9vJ0&%y+LHk|N#CldxM1j!?wy?0q~+0cVhh2#+{N%!saQ49;)FZrw>c|=lATh5q~ z(}|#1Q#CKe2NANT3x9r;ujug$Nx4a~-q16P77_^li|iY2%xyDxFeGz8rnx4!r3`Ou0C{DYvqvTiH81jqRAk&9RrfL+4WOwl002p zNCR?yZ>uuJqN7H1F+yl0B~)!mb0^UZSOyzMtXW96xp8|gK5;1QNwYs>=TfRPN~zXQ z#s85=&e8Uh_u6KrI0)#iZK_gFYv$0Bi3eI zh?)qux{UGF+o7PS{NH&*2O>BUM1^oj9iZ(L;iM_upI8xZ3?X^M zluwC2(eqg$c|<35CDt|Nf>G^5d9A@|<|pOCMU*3jDhXv~d=*F@@dzq8Qt-GP(S8U6nBP8vGHKA>*>I4D=#RQg18y?Mci&1&egz&xcle z!{T<9h(SH8cHua>xT_3kpKhu7&BT*{%^Vnn)UD^3N$!~adJ&9Jn>EJj$Epz&O1~j@ zO|;|W)wBADB|BhcH$3gw#Fi_@_Z~La9ORM^n>KQLhG*fe8iI1) z;KO$2Hu|vWM}u2e&}wBUTk<7%iGwtTkJ=GEdo_3lrv^XX*#5Q|v{ByMdKK_pYz0Z5 za4NCI@zcP!Ub7iA`-bjv6$u@ES0z+0XB6UBL9WLqxH1! zo(jT~mCSueOm0Q6DHV~lFse*hEP&ycaB24#61KLh9&gq@bAm$=!ySXYew@SMk}(@RDA zMnJU3j#G$}2d2`;pEU?RP8)o-)=){?TC;tcZilZGmpN>`Y>N7c*u)RUj6u}j&_FUjkdChRw2;|PCH4|C*VO1a_;-s z1_}}I&mt0^k`%H+5C6WhL+#}tuh3?jApLEJoWW(-(DOXe@53Hzze}b0YiH{I3IvI3 zgm-(j%QogZcuVLy8PB+$!?b!Rua;3iis(?hy^NsJ?>fgvbDRG|^Z3g;OKugPV|C){ ziLtob(rlY!{jb&2??G-WyZladeye9r0vlbIZBE_Q0BBibl8r}x=Pul}iy(3LE$nvZ zK904^s37+pN&%N4wKd4Wiu>Njc9$`ywd)LckAqJFu2YF?HwEGzN08vx+^@CUiXe{@ zLjkv?`L(-W{T^oy?O?aH`?dRac+ZOf0rxH3^@o0O&#U-$_dSmF$MGP~n>+!JBenIX z`F_v4x^|BWv`( z)vsWLPBe;6GW^b<$_@-=AxNL^MW<*CB?kuED55YiK86Kt*9&J?fP^q*S}aXZ_DFJ<{!tfoZa6VgVhUF< zlYcm!axgs#2AGybgoPrQ-9C%3sMFIe# z4+KctM^!>t@q+F@I4t7$L=irsh)7t7g3-Ipm)IXYt-rrPe7Q=@V+W$E9uSrh zMRQiHx0L(Ry4 zB~1T>ZvFrwR$z0Wf?i)=rJ@&a^2t5_<%)hk2@evlDjxb z4e-BrMgLdAG?mltXl1abU_9ebtKOdp(^xv4|FG(%|6{^*zCsU@FqQt(syAJ%GyI2D z&w6|49}}h(>+RlsFW(~*X%?fz(T=|2*tyTeJW=4&I3HT&b45UZXnBw;#T zs8pgm+EjNuUugib>NVG&E;ra6uZ=eUI$!VbLw+aM(r~#w5KI4MtfldKeEyDXB#7av%^;5VYA`UN z^lFG9%I9j>w|<2Mz}RhZok_J`YB%%|Ew_4{b-JZmh~eDgCXowzwPr+yUI%hTZ=75! zD4>*XKP$}SaXX{nL_|5SE+0`hp?YsoH*ex)={P5d$>umFW0!unLiUCTV?nF=z2m4& z1z7feofz&EeNFS&l6}P%y4*RK1+C3-A?O?ewZ_FR+=%)ADyv;fZALX*&kSOGI>=45 zdO9pDD1SOC{dM+qT-nd~H>=)1LpM>8kJ~Ozo{o#YtQ!9Xbdy-Fus1AU-Z*W*^X^}) zdYfwH0*Mjl=K=|%&l!Ncn_3`#w0FpVSoJ{f5nB{sEZI8Y&k78YIWvTDHh%eHSqtOM z=m~Q+2*t~82$M2=LBzchLjD@bNvG8T!>P`R6S?V+$gKZFjMe>?N}iOmn^YLAN+k+P zkO^eN+7$9d=pi|q2*5qm`%b1Vl!ZO%XE2b7L@N4;_UJTJx+N>1X#hm^hB-{iKl@Wl zLn?-|&3DRU!1c&LqffN8u+@nE&K9RQ^H20}(9rfUqfviR)@35dAtU?IUdXqa zB`6aU34A#~v;mFJ8p>Nz2`kGV?l9hzKtwi0?txfMXhTw1mLWU}H&|YO@)bw+6(k!(+LmjWD8Uh1u|J3@1vH*<{6J z8Lp~@-Vf&s)*n_|iA@=6Y8!n@8BAqRMYVxB?4TP>ma+T!Bd}LFi+9%qJg#Flkbc2S z4Y(_k@t>KFI?6@habpFV!zq)%d^D!wNX`m0yUc=4rxw0_7)8*qcToyE5aWB0D(Pj( zLf0_iftDKc4U8cP6D5_#9vqDctjf_&qm?l?8!GC>%A*a?7vglD{JJ)kqAz2Njb6*1 z?K_hsv3r0Qbo4m~inUl>xme2QNNB6!G7$A;6P@<3218~eR|@%974c?PTKJ7gv46hC zBpv8oWW2DY%JE|#zEsNSZ8(QNg_?#0p^K-Atz4KP{1Vba9@#*pqY^3m_TYkO{e@7p z$1<@RS9GuAb+w=6fToD_5^6+!ZDG2ZnHo>_boE``hJTp_*Ur)+cqu`!uC>ex9J{>w zq$<$*Qf7UOxw46m%iqgaZaW{lvdcZsJKBr%noq#nI1t;k(3?&${fP61n7x@E+1t5a zdhII3sfEe}0L^HabizYLTD> zZ#J%5MkDj$t=+sKXEuKtLwjSnt@*66j_{V<&F_4D8r)5$c;1>2x83YYhs#Mep4R#1 zo1N?Y-cTndBj`KYcnh5!Ck`};-Q~}V4S(VT3dF55Mrf2;iu;DcY{uKN5W<-tl$5Gu z-;=~t2UE<4VjM)?yTPqxW6qwYsc&tqp66CeU&NaiNX^c|i%<4qZgZA~`y83A@OQh0 zA5|UC^sMgPTTs!wH6Yn-M1P`91M2UKy~_YOT@nO(H)nwL0>D2?=s*VSKKU~CC6~Uf zM*bCd28i}BY}o1*B)Wclny^*Ily_VsuQw=_a!=j0U<{V~wqCRE_}Hc$+U%5ag?i;y z3@cDF&EHfRCBWNh9&o{c?7az`aOnxV--Nw%1WWRvUXF`wkUY3Iz%-q@Of*LvOychD zleV0_$zA*Mmb&qzW=;Hc{1QA;<5gAQ1vGJ!@^SOn7I6}Fi=JjBA`uyeS76C?>}7Lb zP;zhdvqdsdCM@JdqY72?IRuQZ^6c0gH7NIr`WjWjwyQ zMC^rrmgRX5I!;~64gdvbL;z+& zp7uKcvk-ukpIuWH{C`)wsvmeMNd%xDgrXvZDZ{(DBm_1l$^>o)VzY%|4RGKTTA1PS zSqHhR8uPni*^2TSb@R{o%bq3fBt;0;1Rjf8iFNt8c0PK0XS;-SxNus>SUUp~DqypcNAw%gWh)3#rTp zY8gDpOKs>F?h;!rZlOZ!r50kRaj3V{?;HHfV>@2%>stWzY)qDD$lQUQ`CEI-A~se8 z%T%?55OG~r8eox&4W4*h#$lqmNl?$CK%H9Bsz|bO4WLTdL7!C;bvOC8A=xh^OtLXB zs4;CcInf0^osm2)`Yq)9&p4iiRWglDvbCNE%LO}MEh0zK3Kx`d`PK&71~?)KDtZfZ zzVEVZoWatg%Z8QOXd0;j?O9=LZ|Gv|s2qAwnAt9w-i{aLE*bafFpLP^3@!<)f!ZAw z=)3Y5IAWYtxt}&jo7|ft&bXK5iG=M(*CM+{uy4C7|LVu@v62PF-$bkZ({TaO%#M zwfb|>xPc_b;ESgUE_q^WHcTG~`p z5>bo^Ao_j6&q7~l@KEpww5OD7sti&gJTTAc@FQ3q<83Gwl9-c0ppUMZQ)8eC{~Y&Q zTGnlx_}Oc7pdd%G6h^8mR=Q@Em{Im6bh4{sfpW~x=U!{y0l-QFU+GaXmk~yl85S&# zyfs`gE@xcMQSf9Tx8OWW99{7uYpLCJF}Y1?x2jpxg3$?rJNr>v;9+<}~Vbhxw$Bv5t|xl~I|#$E~MKsW)48v`DQh%g=!yuCPqa zN7MS%6I6TAT};4LW$W{6bO}cmxuO2r&=iY1XC1`z7U|TY4 z)y!(O2eYuQx{^7%^Zt1`Y@6`9{Fs|;T zC+i|U>BtlAqPc3Pm$F@1$F8 zvP%!6r|e^oC~tR$Z;wMxkF++n*a@ZF2qzI?uP$@14pc9dZLj(Ywq_|M#z^Ovw9eG6 zUUc3*!!&GtcS@Dtq~BZm>KyyD8G1|@`l-TcZ3sCX!u#11Xx&yweNOt}3;R8O_c+N6 zSb*JWIS9%9N(b=GXd?*QLr?|MT6cE~B^yf@9oy9&2+1CEw-`CL z_!Fap`x4lQiH4C0#P=hd+Y>C5 zlW3L{nsZQxrN=R31|_=~HyAQw*z9B=092ea4ixr`W(c z)9fD8oMlsw;iY)#5?n9Sf+_6>Tl(b?-r5TK&CyI)=Zu2KtdYl@=4rW&0+2oyVD&O*O*C)IHxJ=!96jcp)8}1V z=dIpP>&eVfcF+6rE&Ku9M9lMzc7@1-B#9P+{)BF#(qWV=p|w!!5id%=M&Nm_R+xI= zg|+5AQ3C!3-RLYKlFVXRFM_ZZ>Jt{O1*j{qBr6lrE4fB1nW)nvq7@B9cuioBC{(!Bt@nT_+0|V0 z)x^NnftS^KS<_Wiyc5~z7QVG{owd(Kw$&c1ly)m?5Dcfx`1};tb9L?V)A}vn>|U9{ zfvoA#dpzhjYdQEE?w1?j2pzcBWdzUlKpwcq^tER`yf3IFE2vwqI-4^No2{1XX04k< zV;k?*)+w#F45&6;gf?N`e4+WdMAufqK)lTKic4BvME+)-nQ{9ecDt~3`=LJ><)Ecm z3se047U9`;jqDD-2k)iSHnZh62miW6`O@39$XS=HdKzvX^xfsAjn2bt{^{q^TUw-V^h8xO%ffqS7Jh^`C#Q)9CCpp_JU6x3GP^Ruu zJ|lqA;1E9M)IjeDZWB1me*}XLq%$~T*zXd6iZzPUiMGcFNi7SWN6* zbj#ptepzGr#AnM$$BoLrsrF_LuW$d|ewg6(dByRGw{F~kM2U^xfgSVdjMY+v+)@-H zXi;uydF>RiafG*Vw!?S@tq%c^7a2M(=j4`h!B(6{Yb;P7E(=oW<`1wa-2YnO5? z*JB(TttaY8yASXAQQl>By}cykz8sI_hL5^1Zo8-mvc00YG~iFCWWDJ6$&Cm8wRFmv z{pOmP3GfaLkO`?$b)Ie#U&XK8<(7r#zh2u3!0maSrSe;TiU1m)-xczKlHc6uM<)7D zf5I@kVe>gB5jx3@wNMwx(gg3rqTTkIaw~b^BCbEEzDueb+nX`gaQ}WOYsIba6{fg+ znWB4V5_L+?dgUbm$BG76isV0gbL~>W@sa5QuyLQ|xm5EVctdpaboJmsmu3@s!)Nsy z0N9UtcOmcfabSQ=cl;Rc%ZXOo<2L~ZDDdX*ET+fFcD89I)>*H|{O>1A6&I!F%ce|F zI2W%t*3ZZ9&TN?g&0kn>yiW-;o*&Tw2cCbHtMJeP9}onCtx1Fds6?(3cnV*;U|<=z zdy*8k#UhFLJpX;UY9tQYa*eP7y`Vc4-*U==3l37QdIwL{k<3=0kjLxA-lEZIs#GXf zaHhP3X*O3X(J%2HU$s=c%)s1s6p7_@E)S5cyQ<+pzmj2+(NvdOo2k)eG<-+tVz2JIeZC9WL&0ZiJ8P9bEn0i(WjEu);o4x!~QqZEO~sv$ye1?U6c`ia{gi z+-U2B4L8lRWd`kyxWC=kS70l|3X>SV0-usOJV!_e;hMv1px!T_0EYO#%8>Z;N=L(z zUxXFbLG5*a_*=Qk#r&A-+?~9NZ^io=^kF+PCyWtmlt;exKD(KY>uuFEWAE}&4I2NQ zl?8HNeWsQAM)ahZO3Q)Ll4vAwL=)SgVk4rq6pHd4AuifAxO%f0XXdp zY_=tgVhM^VIgCI zC5xT*{V;G_$qw9+k(*;^x==PuG_2P!mfgA*$Na=#rMdjsJt0r{dTM5x6gOfWkaRI9*HCcnkH^w-zutW;6+HBFmhuL7W8tx85nKsojt9eb)KF>Y zIj932cdNyS-Qtnhx~4;U5KnEm`%-v71zK5Yf*NvMYlqm*=|C zpH#A|IiPr~z6tENI;~GfIPxXg+&vDizkB0uL`DxDr6vu+)wu5E=~CF=7J9M1N=R*A z`R1!0*|wHj^kr)1IP9F`XdW}?>84w8d;q}*!(GBZG%xU_ST{CwAv4&bOYn%d125c= zL1SJ-4+=XeYXkkeZcL~m)UP@=B-IIDTz5jK$;37=vLgh#VOWPk>?Z{!O!)t%&otYi zfcvz&jp3CuSV*yQ&gw`>C4M02AylKObZm}8=P=83@dLeWCD!5(n~@8BCH zv{BWhj~S zX(gM1*T!ABSq!wo(%S6P$>TR+j4_f@U&g?rNhc}!A3`L5ncIFyB~ji>OG1>jO@Nfz zfx8rFkE5chvBs;sR6LT6qxqfJqF2B5I8mMDJnyD6#A2xU?+?bJ8d=<+h$#6KjKp@s=i{aG2B3^Gu{vh9tvqFmov5x5PN+ z6r#G~B1v}_BqYt09t7>v=wZ!1k1tGpX^Si1k1J}kZ<@|ALN8#o{3e@POpswFQ>fN! zh7mF(nR3b*?(Gm!X;lpf={15QgafQ`4hR zZqT(5Dm$LcG&NwUg=Dy{BEZtZa93k#?k*jP_r1BBiK?*>PHNNX=BHhgf(a-!lB!Qu zw#b#N%k1-wt=Rfj5n94iZ|>#3BwHc6ENgY?ax`NBzB~8w=w5}+!(n@`+s!uX^2H~# zj^`e_)h+2f&ds;o6UDh*E)PDO;RfH_e)opu-S9+TNPGEcjSWoGgX37}JaV;W^&r?Z zCQa(X?XwPa$ktC_OzI{}zX zfRq7IJ7yW*Ub%x0?>DmN*#1vr;KP_01};*j#Xh7y;+T^z&ClfCuYBV@T^?}unP~I} zcg4vQo}1TM*sUg+_Q{iUEH^nJKTIUmmZm0}Zs=3f4kg7?rZeC^=8F(f%17a+=dn8! zt9axx7|(OFIDUjt<1^P(6CbV${26MaldE~(G#5E{QSQR`Rlj{{zF+QRC9}4LL0Hma zwU}cqSJ?@&!1Fk2J$qhWt0lcsYS*GzomVHHu~lN~*jnU814o3VL+bKsxY)hlEYUf} zujkc!9Jba)zB8P0f_3m&O&j>_$#YxqBXAg4(0cU0eSxG$53+xBXh?cGaSqaG(3|C z9zvMb-s~~c=Eh_w*Zok{8#mJQJ^7%`5|#3sjs^EsGnYnZ-#0_rm~w7f=iGxKV?{4` z&EGbd*Yim713s=d{Y>m; zLU{bw?+2p35!~Lnv+jS@;_U$<#4zGyLPWSyebnnsYVVV$kUok)u~S=#qs|UO646IE z2_zxnDvDm%T=Cx?cqA-+%_L%jUnFR_1|&54hjTii&tan720bzFdB{n6zzm&)5AS zi9llYF6rGDjOjC6Gx(H_)cz*8&Xh_iqkEB$U7yoY2CeXht+^_g&W9ZFs2pwvOb34v zE_R!vePlW3huLdqgXeY99BE@30SL-s1dMonABnb?bxY;7Wh1ySyfCfjEvqx>aMy<|9Z8OSP;_#%oP!=6OGHBep8{QZ?%GGMdpm)~YdPWFa5cHI}bglvz`srPP*vKUVZw z<4mpKr>IbDIc`2KZ@4xV={Q~~RA3+}C%i9TwK!fZrI70RvwD5J;g$CDgo19W!cQs1 za;1qD%Zb)Ofwu68c1Oj+?-L!(ihIQqor@FQxxc#hCw{|EhTTo{(oFWRxAt*O4r)$n zNlp%VPL6an4~I{Vl}rX!PfiRfC8bVI?oUqBD9*r7&3*#ZzpHCSuQp||Q4n$sVU zfnU*qUq&?$v5?isz(Nr~4SetyzC{i)I885bBv4B)Vo~2oOD;k~uT~SV4A#B?3m1|UVv@z z84;*>6ZYpp;R{g+F;E0#tqA-Xde~7t%_$THm}mr46lAbZ%W_u#avWF}jJHBy4+QWn zCTmsMl7->)$|erYVA$$qAdqLKt(Xex<$^WU7kL*Y>GSed_Rg1;9#;6MWPhEpVVtWM z9q47_kACgeBgh6K$gNPd4Dws_=!UbyH!kFHuk4lR6Y1;8anEn|N+(}`l%7PdAT!uw zStArMpp9p0VeNCklMP8-O+#KQN;633UIU03)GDV5kP3;A_REABu#tp?(|#H~DBQyX zRY_-sp`%Q;X!f_PnQ2Jfy6Sgb=(RenM=LMUhxCs;aDuH+$Gnia^Wr1(CQ*<9C0>{l z5z%Q*fH;5_bm;+vVG6`S22(T`WzMcA@)-jv3;?>o-Kn`+gu&x9h+#*KM*Np4;#MvlhHOgK#R=mk~K{3@t*}4;MITP-`KZtz;BmdnndfGrnT;7g5 z1|%bBS;wP84-5f-?P=QKFN1=?{M!wMrr$@6i*&cKPjo|onr>)9UAn*oR>O++9Z6b~ z_+#Cu<7J(AV{fmR@Q4K*;6kk~K$jJU5)wmBfJ`fsMkFH6?X}5{4n`bZ(0$vMLkHlb z1E7fPAy)V+9G5$|!^n?ATap(W8032i3@|^3kXMB@x!+82kzu23_c*2(_h=Wtm;y26 z%mD1*55O%?Ziun4t_^t3)zYlbVXZsJpdo&xp<*XWT!%?zL9YeHvpWW%VLkIfbPHk7 zINn&-$_k>T;oWV%^J}MId4Zu$lP}&JMI~XW*)*OHQZ2k2$+xTo-jl1{Lf~7*!~k+d z0yL(#AJKv6`4;ilrb&PmfkV@_3SH+*t=ATl*IFZU3}9rECXe-&l(EhWnfa;}z`k@L z&1s3<%LLtuv<+e8OEbgpo)vK3Qix|m!<&#Hp;M)9hhlYq{9q^EcNgRYqT)$`%6!}< zp@Yl@EJ)|Ywo7uciu9UnVhYq+AD{zxOPAAGPa=`E{#cm+Ko(NU`*H1uiG|D8tRbR^ zz-;m(3q&o;+64>RBVJ`o6p)tO<4KgY^=Qxu(ZSIP{znD!E!gS(v#gyT$Ck3#24e8$ z<}@F&(u5#n$qEQ2KPa|Jbhm$&VSv21<2GYHO`DsLA0=iQd{NfMNm%*N;Lyo-YWE0A zBd~DcIqK{IU?MvHds{%<-YQ7YTCH6Sqdi$gaKv3Uow7P#Qrznrhy*Xp9b>0$8M>q|@=ibV_X2 zwmYnlzpNSprOQIf7FM)79Gho(MqrG;3&sdqdSsVX2wKbn&fIC5)~q3;&RS|4dQ(Pv zablK5!^pV3ws?_-F?okbtv1K3{o5y0<@guh4)+%jEU!zo?c8Fky>}gkL{C>%azNW5 zvj=tg+79>*;O+~1O52Uc1Q5FZ7KYL)_eY<6Kv%+6p0@E%?hq)s?sqz~=MBBD2z!OC z+K=dNQSE@8+M~^G>lg&Rd=XtoVa*#hn<$2>0&fsk$J025g+*tHKY+6)0`heX*C8h^R3s&6;voudFX+{3E6I3e zKxPMf3zX)J{Ho~`J3%N=sp5+A=L+x-O8Z-Ec&6%noAY3P`W`ubelDd zj23)%Xng~~GTw?miQ}_rz1$w8+v5se!Y0r|VE~iXdsx<;le!>(lC{gF%vX z&35tt$K*TSMk_)E-jr3|neE=CuDfns?n(s*>`N%F8Sb0D2a99}NIDmpLAzdU_oB(J z9N*mibReWAKrUyXu=HwJnjs1huruU^Jh}i(^bpFw3{CW~hzBPCw6tyPD*kBw<%Ur@ zaFdGPm#lMi6nBxcvJBU?GwClzZOEe^~X$tBrRyh1Y~AE#YhV z%aM|22je5p5eOp_zb9fnv#m@s{f!s86%@*Nbw<<`ug9EueDqzMX9PRZEW-^2VI=7GE7W z4j)XQzqv#IZ|=|NBGS-4;g18Gf5MEx1%m&^NWoL0hQ?2+HAkn z=)~;Fyx#79qO#<#<^KFLg-b7HCqM;sbBVfghEC%80`%*@JB;YEDB=i4E z38IYQql%`@_N9tpaLc5MW$pM&758PFk2;=vzP%`(|FoStQTX{Ub&@!$9ae%Qu^&x} zJku|lRAm7>^<-5Ae%drGeLvcCJ!8UBXu6UA6K$qh3_o2KnwuV7wq4aPx*VsDm7Oe? zaen$duT?+#e8YoZ^aVlBPxOU8!yg%bL=gKk6h$}kRTRY=-xHT4D+n-_+D30Plx5k! z2VHagv%eyw#RxD}mKHrSR#jH%tCd#=+cVYt9A~PoZdvuOc5Od>UMtN!T|BGnLv^sN z9>96gE))3J$?iqaM&~{MO$)+<* zmf6CxQ+VybSc_m}{ zUPNTj^<@MH`r^`q;@6e*m0D-=3$*Qiwerh2>m7501Rbs{y96EK`RzF6r*V#H;f%92 zaq2{bpHtieH7VmF24hX}0x$Tu3kr(p7qe}BhUu=CDS`K68f$0wgS`?)PK&?@{YNQN z8zT<{^Kap;OKw-su8?{EbA!1r9zjj(_Wfk{M9#nO&qgqgHmVDWtl*qR}Bte{3?~tWNtN*%47oWUq!EUU6l+)Q$*_oai^l;$crZRU@PvR$7 zFO{FCQGdkd+^X{9_TeQk_M0*9Hfk0d$HAz==VonVVbNc=%hh$=<6UR}g8Ca}MLRcI zB(H>3wxdpjucfLswd!qNyzHPiS331w+l{;hvk$;48qqtzb?4UGA>Zhlyvbux*H@GT zx&)0+@X-gqZ`5Y(4sI#5c!A$=jg z4yXFPtb7w}L<+ibMCM31z6M$ElWq+1a#E=$d)XMS!u?nh+y2f18e*onhwm4o2pw|L z_B7dse@ur<$4nggQUWOVmAp7$PjCs`U!su}4pl=-;$o(vDgQ2|7*qIdAjgRVF;oT{(&SgvvXQa@a`DySmZzs%b=w$_IUp=fv>$BF3MeV4YZ>jIkt~Rl4TaOgPZ6_%x9K~X}+!J z<8ximUG>&mXu|J*Z=ZpCp<4jl_Flxgl@Q#TZG=A=eHg*);cA3CC>rhkR88!W?|XbO z4($WvDlAc=P?lZnRPI3 zis(#lL7%Ixj=Rn-=*;jg8{B!x-Jty5HNx#&7+~XRWDGjD}qVZ93C zRp);2_UZgRbrrIguo2SO)(3;&8p`=Djd^P8fm3m*6W}y%aca+}7ZIO>VfD1?@zun- zys}ckvsDSN>wP1f!NXawJ)QKKAc=N!v?DFIhd+_Zxm`~Oz3$N1P?1e_mP8n+M^NGU zEBo|RgyyX8F62L5;uyOXRxj+St350D2Uit9?+*Im{Nh2=YQ-*hJh%aV*-&l$8p$_h z?$5asqSju;Zm(xJIhGsZe>2Jkq|cmTY^J+6S>wFcqn^V$BM1LAuefn4L=ajoe46n- z9famy@*dc*M?;1tc9aFZxcIl$rpwx>Z_C)?4u>!PYSrRL-Q+EuX})d}^e$;$k1ZTe z=_Gng4lwS{2|ZKlwf^ZudOK9Z>>gL!^6k1ymPB0iUH zI!z}b_Lk32IFFY$RgqO*VzJ?GayMr)^mpvY->zl~3Q|WBAk#j+FOtwV6DjE9+!j>1 z;Fnz9MrFQgE$Nc7(fz*RO3UDe1bWg9Az|R56MT|rP%eNpqipU^)EaO*-+Bl)}MtM zpZr{3zcD>|qB!I?yDBA>4Z(w-p2hk{aqp%UV>*SWV2n~Wed|Sz=4=Rt*%1~tLf4i`TuFz+3sp0%0J8@V28?ROB7AxN9$5WyySuP5)Rx-Ela%)q)M!w#3OiDOQpN4 zw6hWoQBjS?r49WNjXU=AABziv4s>CxO;=6X$#YH0l=MXC+O-bzNv%I6LrJXl%UZnX z^2JbXFv@JSNo;pfDBm`0wXN)ot?eDx?5B-~bFCd9Wlo!P&WB~rmvk0y{*f=o#}nN%YB0BeIv_#6X^ZY z%l-1{{maVz>*xbo%L97o1Bc54-{Y8&@}N!n;KTCZOZsn*<=_6%0}(5L7z`l<6(Qsd zp>!3YYz$#M6=5O_;W8EBDhv_Y6%ob^k=7NF&J0oB6;Z(qpvVeP0z-6qMRYzxOj$)t z9YbtuMQjg4+;BzQG($Y3B7T!0;jkj%k|FW2BJm$X5@KZ%24gaTXk{`vV+vhm3L9f8 zPi3kI<9C_L?<$OG+LdX>jOo^u>CTK9-jx}_jG2*@nF)+p>6KaejM-(C*>#LL#M)wj z|50ZC4}AB(XG(+SDH%GkU?sC7*NGP5TdXF<- zhWlL=e!8nJo;t6&EzbGBa=FL$>A&mTmrh2^DoK898NW;2&1)#bx>X@sy#GDX+_PRh zV8Jo&9S|@>kpZO3>#!>FW9*FA?1{;$tQsq6Fe_|bE#5L;HxQq5avJwm{C`g@{?9A^ z|2_i$lPUe5OleIs#Qv2}y5J_(Zo^4)O8m1@zJvmgWH@M6f}dqw0_xi?NxtbCL1?$*O!Zfs>iKIFws{dw zEku%d91FzixQk!FAVrgq$fvGExuvTuja79mW+wINF4wo8L*`xPS*<^@&cOdU*o{wi z(iC#8Ey;VD?1VGE2g!$wP(5Qup^(yi@;e^sR-Q}1@S|~t1@TcfCfghHy&ZQ91k$c^QAaQid8zMNS1t zcAlAJK4BW9tx@sZ;hzPc@~lGG+h=m!)hf6i^wcxPsZux|Drv&2G+BAURiUGm+EZ1b z4OQSe3~;q+DVENFg7&|-mKxjc8NG#Z?WdZST34qTgFOYE`$;Y4zY`AE`$bDVj|ug` zEk*!D#pQnD$A)kxF<3US*-mrXhNO3#lS)x?JTfU zf4l!(_07uW88MN5QkL*5$LrFvR&nFh-KTByjqRkNTJNGryQ?XU&0m>h^C2{$3&dUT zzd^G4zSeKN=&qmK4$yr%)cO6r_YiMqg{3MlFGv*=rm} zJkt-6Gqw6q*l4Yl4n$$shEfp90Y1jm)aCRO(8@cH=9M>!Flng91rO(chx%Kc!F0?P z4eS>XuJeAWpPT>yJZ>-q4*}oxDBRifva!2Y;EjRP$Ezo53%pzwm+g!41Xgp;=?A5( zD*++to8m3Q`;@o>6_F~GX|kjC(&O24ZXV6!6s&f;YR|ptBFANJK|=@>t=8nay^SzQ zK)faXnWomJzvi`P+#H=LZ);7O&vCXN*_=vsRD6B}@kkN~vO<0#^4!1Xs%QTYtT-L! z?wk-lGx}x#)=K{q{9)}NgiCCa*7Z(|hCKua&3l2Ifn_l2A|%9+0y&IzrL@iWI&Ox4 z1%B+lF^i`kfg-2D63YH-T!B3a6!3SIQ~37x23dzsKn|F*e5Jbc$cAk-Fp(b3V1`lO zS$r+qM^fj0=BJUEK9cJXnu1^TEiBjRD4mvrW%s2Y++EW@g!gB%t-xXII>vuq-)4aR zh1Bx6XQg$`liRH17>Sr=s{TBQEupKTEccPFO7>d`Zfh@=xcs&yc-4%kkE!Z(IdMXI zx=q409~=C)hdD7m&ctqEYQ)iasq1)PjiXO5-HUC)50=gZ2)|7V;OKgS35)Q2KN$`r zN9;RqE)W~xR5=WZ%Ufmq(>5+j?xQB~a&XfB_(Sy6=@9PU(-acl78%ps9Yp^$@Y_E* z1ofxNyZM*Z)K}=`c3w~+oaxJvtk9F}$-UM$@|RxRpw&u2HCj??5*|Z}8Mn(cq+uf>>05HAZ!n9y9*+VdUbqU2nFt=Sf;6g?T?Z=UV-d9S& zNTFqrU{NIhQ7wXqC=Uf2kuONWzB(dL9-ezTo+3w~B=BJX`moQ-3NSWi@jU+bf2_W1 z!@5{w)h=-&Edj}Rr7RoV;C*ySbU0CZLmX_dzz~j!)&Q@Jz)!ZpbG$(+KB2UKeM~{2 zatH*>$G$PzoQw|Qo*s>UW2KgPNPA2o<0J)!4|qwBDztO1mSnQjt@4vvbI=s zg?8&lUO3QeGimq;I~(1v%RudRtgKcJI3l~jr3ms-bzd95DWu3a`j}~-$ckhB8Sb#j zR!<4p7?w=iT-m4v>fn?J+d5zFS^B6eA4xU(*y}%nw>p8kHm>wO-+Bl`;C_NUc(8KP zfviy>c)q|q-#7|-E*&B-l+18ukMI;k`+~nb0k)wHd_ms`V`gYVMI(d~+l-Q4_+~xS=`)=k-R8LmNZGWMBflld~#b{31`16>p2m$0kBSz#Ko`*%932^ zoZdUXL}T&9dOQy0@iQ`5AAliXNQiMoisXp{qr7G}k#l#e$GU~ILz8c5MIeuSq6l}! z-%LSIJuGj=gre3&=3fci_b#6NF7kHqQ3!U3FaZnR!4rJel(MeLCvl4m;e)&pw5gyM zEq9O=EQ(uNzHUlxv&Ly=iU^8-EyTW!CPU3zGxsP_wAtC#HnQ)pLu~YS@g;d}h~L-N z;9}%lmgUG9&N$FPCIUs#Ncw%vFCosa}h|(MW zz@JYVRzUruKv~TM&d=bVou{my35{hA5mSNk{^F8>hcZmOav8Jon&q-!;vC?(ssE{1V3kFPf1-VMg*kM!#96;g z+P^H$zcf~$(x;t(MZh#-RV*sTGMzZs_qnnSx2ny`f~cxEg{dk-p{hzi-;2qRC*1&P zu`++P>ic+AtH1tbMdi;^J1qDs8z1dIoAdcPIHT&B7+u$wz+#O=`2G~0GqPnB1(31{1z9Rbzf4!z#PBJk> zvO?+}_}aU1+*e`-W{-M1U#jKR`uBSCssQz+b%XUyeeiBDoCANrQ3IL*E?y@+XK^8e zdL;f@L)~r|9!(Hg00ChReV9D;qClgiTBDD9BkEZrlOO?$0X;hjH6!%B(cHqBZBoo_8q7>yoj-kI+mt^r1t>NI zowezIXb)pKMMsr{HhttV>^nfJHkggk_@P7KXm?#Wo$9vZF1<`i|p(ar1~|{dF;pNcGmKn zx$CnXh2WiM7QW|$F^Ws@@==b zLB~NS&gl#P$_wRHXAk&=VQG!>f%&((!tX!TlrOQr-A@@N1eA%=5}$f_g@?I^RJf+P7XYN=odZ5Wk#csn$+Mk93(_*5Xq&K zpB()6Tuqo>pNKt#J8qO5GW1>11pj&n-xP)#s4csW!(lxX8#2UkNTjwt1keV!8UpZ4 zVJx+VnRkYXhlx-ovBk?qRC6=Y2u2XthfS?UnEE(SlSX5pU88a9qY1C0Nu*;bLSx?z z$I^30bzht8YdA92$MRpt3Q5OPUq{dt$Ghbbi*m=Sy2fjAN0qTg@UXNab8&KC&0~_s zmo5ZJ>jd(F*a%X$B`)OJe#m= zW<^M8j&yR@5U_uq@W;{gX?^Udn|-yBXT<1r{<%feS(zR-EnEdEBYbsvAD5 z)^$AM;3qq9$z2Xh*f2{{gKt;Ev8{mZdH!L|bVnLkKi=vI0)e}Ms1hzY@-3By4Tp9^ zf_H{Bj0E}uVd30hEwLtv*s+Y$gxMk5w4lmYJ1h?hTm8cInLtOEYFFzKC<<~-d*V?nz_7#?ULF<(s z3;q}3B@4@mWGlTwE3nv;!>m~J?5jwW%Y{&7EbQKmIP}RCR<9amj=GDSV!34jn04b? z$ne4vZE8KN!!p&&(q?wX$#TjCuYgo7;Y|0^n)ccqI^ZFG^$#l+aAWOxO4Zdavw4aT zW^=xfdSg|21J-l{0Ng-KfJu*EU3Y>Z5*tNjWQ`uZ|%lzqLCm?4`NDh6&*2LJS0*QneH%R=dFR~b_qTbPdSIb)L004&; z!B)2UyJqB?wkj(QJu*)J4q3tu3BK-_vd-6buTS_K(F?ELpdW`o(%)F?!!Ulni^!v$ zn{n%GnpoOdbJ(^ayf`SDCu+L%11+o)X2-q)%@>lYDc9xtkV8uoVFLz}Zo?kAu{L2x#Jg1a8dxVOtYy7#~`g2rFaPkB0`hewnWZ-;uYV!%B(H}m_9_8NW z<{E3}6z9|ZT*A(N!p_IfSlA6W+dVtmY`Z1XH>he4L?Rc&)3CC=_X}tXy!o3eGC}sD zXCgi4n}oTNi9Y2U2{M>#J;5g>AMR$RugB5y3oO#^nl*<20kF~JZw4-F{&OhLr))VGlwhpG+6Kc8Q)#op7HR-z9Pm| z4BSCyo^wM7-OF?6lQA1bXTB2BTHf!F*Vw^K{$ ze@Hf+eNK>nm1nTw2%283-_2*#ZwmMyMm?R`OnwQa(2(N@B?`bSp+;q~>j5i$Ko!5E zP?(|&m!d}Ds<-c~1^g3%|00F`US=NL+nyNbdmLu^EP{*Tq0oIisL)WKL^?TL@p3JR zU3+7^KJ^>(!9bOv!M^Kk_!>5+fr(taA6tOJ3l~QifRBR(fJI=(0-(t2Cn-M36f!WO zp$pvcjcXd9!(9r1#Mm)}Z(SAs8&fK*OfxNjujS~bT4qku_+Mq_xlagWp1-kiBe>M% z>8+CIN=fmP)!)m^TwKEf&0PO$nc2_%W-$}_qFGA^-$)gl%|3OnW#FQ$3CS@J!qYMN z_VArrz>Bt3*CJ7xXVy~B9ADSQ&B#+PZF=uc&!INWo7P^jt94ELXpq&wZG^VX&;wn- zhvBBnN@u}#0X#A7edL61{CB^U*F>_fcER`?6oGG>62V#9Bn%;daFa<==>6C zSO3ZZ$$4v3u;ErtJzbZ(1Exur$BbxscA;1GGB0=VFS)N{qAoUFXl zZ~EoIK$+M3w%O}X`h$}Z(&o~#gRF?(K@Lv0uZiDh0*~mtZ|Pn%(dGZZt9V4-epkPd zK5YP{wF?99X5K~a4@)-xP2?^b{4|vjyizSe`z`qG&woVjYu`p6(!Dw-`H#LKNxd_r zwju&*6oHuG+vmu9b>~`%hP4YC2ze2mP!x03u-YOG7#1vXoOCQVGNCmjH?O|uQk95S z9MgOD%yL3+rf__AGYqd$Zanpd$lTrSYk2(9PZCTZVHQ(tbZHnm^=(9a&<;i^pLCkq zTnw%F2EOo-AglLWtcescPTz4iOG2`UQ#lWVHX@4nszGe@d2d{k!Y~3~LmO)fH(vL|zul=u@GSm_*g2A< zWcnK25%B|m$X3SZL78?^EZXwgmQDP5?jr+b2Ipu9vSx>RdTVnje`bh`)p)rhQwSPT zubqllherP6V!7x$QyL+#2xn;{jJn1R<*?H^?a+nxd#~RN|ToXw+e# zkbKM=gYK|YsQ!0jCN?Zir`b~u%0n{%tGKCTdI8?j&wYp)k=4{ioB%yjh{Mn zbow6vBx3)?lsZ$CL%Dk$EFbL;OrVkKUQ-hwET0`Z@dSUM?k3>wx&pKLXq_1Sh48jd zYL)t70yp7mmVQUtU0GcSZXXb|b&k-whU&#`X`E*KhDKbgRVm6pGcETQrd=^I2by8H zr1zD0y1EvVnBlnGXOmpI#&9Yr;FV_%d}6!ukj~x2S<0ltO|XnLa@@gBR38ykVULsk zXuh4WJS?jMRRV^f?UTpejwrU)CyB~it`UD6(@{Z5`1EASFwizuumc)oig-l4mU&C=W%%Bo5Q?EwZJz8G4jx5=g!DSBc7g2X|mm;Hk}?u zr7R4Jwf@q$-NH^h;03wP`$Bp$E$~c{l<#RRS*ssDSjJFH+eA0DuFnO{N@f&POG$t` zv-?O~=_c~Cj2AscB?o@7nB2==!^&=#0Nj45DnTB9Uk%fEQhKuC9p(;h);pu5WvsQum;Ba}Z=rg? z-#nYQbo|Ze&gXC$oz0{={MMqEJ4u~_i?oEk#jG3oX{kP=C^irMA4Nt>;6By$aem$#In1CaC-ap_wt@2gb0-V;rtZJ?EHXM)Wjp0<3djIO8y!)dmwWXdk5}fZU63EadIPBh z*S8{kppfZR?UC+8**3+t3uB++u#vSRMvP;G+UK~v+c6<-CVmodW9YbMpVVtx{+ zpXcYzvG|ea5{pmQD~an(8oz=TJ)m|COQdI6i9gp~(0pb-xIZyc1=Z**(#)R;z7YKm zE;0$e{h9Gzcgj;32?@fvS0%e+X=|G3Qwg-qfv$Hh#XM^zq#PC#KZ|CFI2QMu!qLnP z^eim&C_LdB7&OmPH-n1H=$U(-bA-jKyC)QqAMUtcal2YNc{!hdq6D_xHudg#w4$wx zKHfD{UW>LiwE{HT-)->fR9tY2A|!rd$ltjyGPwzUF`U7QtT3Yx6pFSec75gK{*x*& zs3B1o_FF0SH$G`U6-_I3cq`3$Z%tSmouObsPUDn8?R1VfZzu*ympFNN?`0<;l(eSc zQ%M5_OaG6gU#3m{*h0VGHv?vOyMcGY>|q0I*bP}8yhpg=w2Kl#=e_24{Ty(TV4Q(3 zhQ%DOB9H8ex}0KH)m%tuZI4)OI`dynzVg1La!Y9bqCxv5Db?06o1_>ZQ6DQo2@m|r zB30bkJIOI*mCBp20LpjheDfESD-pM!>qO*AAXWM(d(xBUHbD9^;Gc@2Ta%z4H=rRU zh{4kN=cV_H{m+RHLbhEp7?#b_1JVsI!))h6NN~dfjqTlQgJzz5pYEH%79*0lmDX`X zteQPap6~NCe(~@9tIV=P4${K`($CZqjFYnFuiT1vvO<&6{FXz~nk_O)wNP0lS@zpR zKT;m@n*?9YZiRgjKS$xEFi9bjCXxLTc24$aw=T0&r?2z zhBdZXsjGi-WVGuk0EHL5VBuCKi8*}tA!1TEg5`ja|3S28u< zJhj%vytP=mfi}HKGP?CLdAP5%5+`DkE3$9+`9M?l@Vm-z;J`a*3KAMI8B`ghXpFX@-v4&UuLvLFOr5PriHc~}rdSmZ%n{LcqKi!a2zD5bS1O~xzZwI~~*xh=LRSGuS$ zwIJWJs07yJ9$Hj>SX6zOS3v-)(Sq0T!0OUqP2~{{EwHwiR-^@3Ck?Du`%||RY%rvC z(g-#@02`-O8a;qb@gZTb5HoIwMOwMJG{nkE+gTlA9RacBF0)Dd4^v9g{U4_EeEmO6 z>HaIk6<;U12;#=QA9`s9_aliwui8q`QF>3)lYj* z?n&z>zgPFH^yA;ddl9SA@9n+P)rj}}-jIIidx7sj|J!?n55XYdP5+nad}HZ|cMu5C z7Wjbz8FLi5#mWHS`d;QU2yF+pIRP*m47$JufOdn9JV0m?pbLF{@9P=@a@>IOI-;22 zfD;gj0l6j3uqDDUG}CZQ85k-D>_Iok?;~nL*k}^giAM$kj@J-ILG!GJi$Ta>S`dod z2Ef*E*~w_dX>HkQ{g*UozIGk@dt(DIYWO>TWBXwvjN!fNx4w!F8^^G5hz>+#Kt6IZ zKBfiDmu^nuFW!iQP_{QOA2zQLwyyEFZfLh|xwr15x9+vJ9;~(=S+}gDv^O3$+q;3+ zr6w;e2CokWZ?z`Z-6qf}696Ir1$nE7*7TZt8U>%;%_e!254 z7lpwHMTEq+YFiM;2!k9Om)!`Pyl_~43=3naFO3Y@*$`KR3{Pd}r_sXvf#FQZ_IQLD zKiHVK%=D9r21z;@W+t%xLf;3iLd6jOqe>O#BLqMZMzXoXDPe9cF3_`vLeXl@YE43a zsg0k%8?Pre*Dc5bL4mT>adY*Ma+7PYix5-snAd=@lckFCQA7b}X6$#nPF@z-V>{IU ziutu=SY(DpWSWKY&4Rftvz{#K(90FOdYBmZg+=y1LFh{K_jd~S9hHF;Ad7&I?eEA| zX}0?{UQKcYsJs>_T0MAl5X*zO5tiZoosf;q(S2L+w(4{|qOWmMJ7CQS1yc@)!(gN; z5~C)9Vu^u*vTT^dV5L#FD<>kka5oxYVG-SQsGN`Ql4=EOPv%6o7BFSCwS9ooYGA63 zVyps0@C8tAqM#%J)Gz=ke-E~4K{k$4gs@f4O$&Rt%C%&HV)oaD7eFM z4C}g^J$nr6C@`_7+k6?7Zg+G;Lhu} z?I6|dRqf}4W!7#Oz)opvr6NHPc50&)IYoj%wn z100~=eNP)ij)w6s{4h{WosYbnk7jyocG7|1IwwnX95u_ z45}_N1@kS(^AGwXX{36-rza3PA6hpO**}t#7985uR-9x*2A^6nmV@lf!?CA%Aci8y z(-Ft<|1L(+fxczV)56!M(#|OrPJnIu-_ka*GAO5Ywn+>jEj_OLDiYO0MG2_rJ!~2Tjllv2$d)6V*KXUEjgtS%+=N&}AqLsmEfk`|8NWmCoHR_)L#uGPb48dZ47@T}Igf_vD~viGC96-w%j zbJ=13quukN)b&u0bon6RmLtXcEe{^$>D^U}J>%NXsoQkWH!)AG4KLpwJR;W->5*|6 zU|>WZl7WBLrZ3>E|M*>P^7R1BAqR=pPRFH}<#mS0-ljr?m)91MZoIDS$ zxDt&M5^U*xt^vAt^~3I9nbQ=&CgP|ers{Qm`CtBwC#-S@RUKcDj_+uYeIBMoY|ta8 z^GWKrjShn+g*H2FW665@u4i(0w*t>M5tjrXHBZdD(V?@*D1UT}P{DH7B;;%VEk8Z_ zLyHj)78BRA1_&S>^V|T1AJM5!_a@9K+5ijdj_wL{RcH_^vvzSS*Ck`$y zpfg9V!S<(3?>hQh_wtsHHUSu5)4gEe((m_YV~9*=-PLB?W#R;d@Yqb0KP4r&P7U2c zTAeu>E>jAfIY0)+J;&a`hKt-VqlC|1&d$fY$f{QXE05Plc>v@5i;1@HV9d7`*;u=! zlLBkMF~qm~WpUrGlYDKzq(9M4ynp<`+j=gWUvwS-nLdf$J66E}b3_n;mi%23Kp_Sj zhDr!)`_+6W0suq6&XrjxJ`{<=n}U)wXDWq@`ia7l??;FfE($8F+%|TJ;{U?lTSdjy zKWMr|;SdP!F2UX1-6cREI3aj~26uONcXxMp_W;4&-Jzzw{<{A?)6+e3&aCOP&a5?e zb+z|ib+fD9_xHSyKhY;`iaKT=1wSHL>8~SdMvxzg|7J>O^JSA*t&ea2!IaW2mTNcJ zC8XAYnNoz2Xv~-RQ_VWVvC@FhMuxwb(%A~jhsv)>XqVR<+@#*hg^a|YTL!B~=I#Da zY&IKrj*6YuALvSv{P7Ilqv0Gne>0_@DPaU@bMno~+>m62TU?Je=l^0#tzR0ghns8c z_QSC3k2ku=AJ(m3xvzH>WQaSe0pHB`B+)6fF8Kjlg+y4@@#p`K+6>`kH}vZMxce=pH)XQx3Ydx{_my>H3sC*|Ubl?PJZx#CJ(u19W9B#%A6aIbD<) z$~ML}rxt|lnyXPhrjEN6w;xq!$E&z?%e*H{^#HlHitdEZZa*90>adrA_&fxaefSF1 zOaquz&}6vl+ifgEgl?}jm5JK?wMMv>;ftXDHH4(v#;%%l>oG`h8Qudm7mhpL%zB*e zD8N*m3MKduPBtQepRqe5L)XDRr@)u7-KHcbz_IXI$D_ee#khlGN!RU-V;Rw$kn{Jq zG!M>|(#Q4>H`|d1_L^1YI}trx19LOUfc$VGG;dTdk7&koS)pRz2G~ z>P|XeOxxA8soT=@kNK_!EGgTrq=6gf*CTwOSCwJ03*(y;4IzR1Wx1@5h$Zq9frl;h zu8v1~U!}6ky)vb%%9$1OI<4I*rESntU7?WBd&52cjVc5-wEgQfcHwiyu_ur}yZHV< zh@~Ku8qkgdtPvOfjLYnc#Xk?U)F_138~j87752)woV)d<+?R~sFcU91=EF+4hvZXs zhB7r5n#Q<4YkN+rsRk;jWjX+)Mha((Lxndett?(1iWE>R4zDrh!R43ukr1vQhcU)g z3S$)$9X6c;S;84zT>17xzXXM8O{nSD7~leWwO3EIpMLu|u8VpHS7s5b@pv%ym=*?B zHAy&e%Z@q#cSvM^ILLB-oHSv6u);q&`Z6VtD5-adaD_z#-bm!+FqoD_GM3ucfr5G> ziJ5~eHa;|+OcM`x^io)riyrj2L^p>f=hu(M;6aZ=Nfp;m!(ztD5vFlcT@cOx9Q(oL zl$^y{blgC6FRsk}(;M1IB8=?Z=P-UE_MF0@bqY2r6T^KS3!1uh_c(?&2UNfFqA~MY zs$?tFBAT3p@idu%l;7<|ff_hUKN4$`i{^KcuR?09JHN-mv}8ey%t|3Wm-(##yLk$N z6+IL87~sEs7lTk93)eo$POhO+6{ekz5iQL+y*-dou~1NFjm>W&GYe#PQHi>)gXCO$g8f-seNTZYpMwZH1Yz0d%UDR_JKbOFSQ?fz+mPt~*<9M^|+4m^zt z{Y;p%9Xcm!EO;C8N>B=FL|Iv=^~_HnET@+E?W|D<97=b5Q&7($o2|P3%%i!dufYS^ z_043kI+{6`CJ@2Z$aAYYZuRWp^j6qN%kOS-alYu> z$>ZgMK|B)kSmxXf?FE;<&ufv1j(KaJkLf>_>Ixt~H1EItaoK`a+j3A#O!fKBGJ{Zk zcpTSZ{q{*J3r=t7da;~dLDprCZd0hlt~e|I$}@RUR|0c|aMjChWy%JIbF+Xou3z>IiKU=jKtC z`Mjo0%RPSd{d+Yp7Hf3e*F0jnFN|!N46!14Vr{3*BN~Z22^DzXR6g^J=}GP++1{8) zIr5B~?xVy_rH?WMm5y6@-uTUa_`Y7vqh^!ImU)->on{GF?bkY6_73@hu++Elh-bDO z^tTKVx>lONL4z!OhNESLRO!!d4h3u;1`3)XGoHQdMPeBoD#S4J9@k_gY63(`WzY4^ zZXD&t9updKsp<{LwdM8|maBV@i=BxxRcE=Iy6A1oj|iN#))}YY*zmK;!AxnMK-+gY zFjHDd&`?!z2C^n*TwQzTY<}23`x)1^W`p0>iz1?j?N?#1l7lB@G( zg5Tq&ZNsUpsSA?vQWC;_6Gq5610nJ(E0=Uzz^40K!HajEf&8{uP2fnaigz){^RC=p_W-=ZxBUJ6t~xGb&zOmCMaJ{K zzRqLE@(14<&HH`xT*j7t72i6n=R^BV#)jJk-{#TVLpQqTA3rAk?Gca1em2k5upj)p z1#geTY9Ptihfoo%8_pPq9M{>5#jyNWdC8n&WK~RdpO=xS6&ZNUqYF#E*TM-4ubm4b4I=!}#({73@`MyOzd(&z<5e+# zu(4e9V=x!h%ZXnMLtpMtdfH)ut^<&=l5a?xZ+joiTV$TDvMvqkzt58Yv^HXM6s_yLzYW4 zJBd1)MZIE3(7OeS*>-D#!qsS$#hoQHkU+nfi!htZW<<&@n#YM}%o+(w zychWbxF(~2C*>g9Vbd@UqtCnc+2qp5gXPR)-#4PsB}LcG^PI^R99-h#GX&BQ(ahb6#-?%BcZvvOPhjF|My+5Y?l>cRASK&HOUY3F%Z;y(Ma;Re) zlh;IQot)=tQ>u}iHE>6T=%Yqs5V6HKu5Dv=&RuL@L!V&EyO;v{=RL961#DW7A#?2> zq^^kvPrNvAS7|#D1HqVKzd)}O!;JNl>13{!EhQuJC*9`)!_s|iihbXleSJ<-E*oPN z?QdGDg=#BVNTz$zqMv>^6(-&8lCzS2mEFt#u>ApR&%%gAA4sk?N{OzwXa=(<%1A*m znSq&^&x1fFXHAB&XrijR51=m~M=PW{SF`IRwkgHd0`AmJ@9>-(6HeyvW)_*~eIGG7 zc;PX9-&z!&HMLO0rQ(ed{j|+rnE$IZKBzhe9XR8mk>iGC>;PRP>12d^{Yik-EN-{x ztIa2`LL<4-X@fhpFa#Pk^A%|eG)fEfXbVkC3vFnNoJxy4X^R6(iz8`E5=%=mX-f-BODk#18cWMMY0C#o z%O`0o7E3GEX)E_jE6-`G?n|rQX{%w%s*&kxu*zzP=xRTe)iTo6ahBBy($!0r)hp69 zXp}YR(KVWuHQLZMIh8ee(lrN`HAm95B$l;g(zO!cqaEFYhwpI9uPSf`%^pM^W8 zpSmxfdZ(X;shCE#wuXZGS1fk{;0g$WT!Z-cRj>aB%e5=s0+YG_53yX^egca&JTR6E zW^%z~E*QuyDk=&L4E$fja_iWGyEXnpGWVq7U&!1Yu=Dl57ry?D<@$Cg{!QlogUK~6 zCo7op{=Zo6|KFk6|NQ3zW4R;$j_Q?v*nq4*6pPJbZMY_HD2hZZR6JP4WF&@Kt@P_i zZGl`YolO$=dru66e^R|tp%JFmm#AfnS}}V3rFxB4sj~PpnqaAs zs@4`tXvs`3QEN6=`k8j-bfxL%Kr0enQ{^9j`=jmlv8F2ZMo&mYnA9YLtzJL$E^&gG zn(d)zSl&qa7S`brWEP$E^0{2o$!u6JWU%UWH#|?FEVAWq)$8{}g*MaUmA_Q4e{MN{ z%yxPqR^hofU*!)((fw%qC)KNpR8a)a)9ndjh4F^x7v6`Zg)Xq_wZxfh&f2Zoz z2^=%i!7Oh3FkNHjSwhU4?L=_zn*kx=^AC-kgkZjWjugkj?FNc|0;^tSaF6mMu!T9v zI0AU!m&s8Li3^we5Fx0`3VxpZ>S>b8mB+y$q29lDw2l}^O_MT|B4b7?fF-;nMYv(&gh2d|}m-BiP6F$bq zNt-e2j^FqAlr06Nh|3zoh4=Qh$tf$u!x%{r_Ik! zw9NKjNyAHp^|un1hkFpzGv#Ue#7}w|hw!c8H%#ezpeW~qFJQUe>3_olA%6Oxa3I8c z_hZNPct-$dR;v;*EZwG|03XkrwFPwXO1 z!dI*2Al%Qa)?^Vux84hw#suE8ygF|VvpQnqRsA@Yh|VHfzb1Z(Yywf7M2)N5E5`^& z>ea_x;Ts$G)9rU%M6>ZV=q40b$E~8!Nm{(2R`i&;n@#u)N*CHJ$5<98O&i#k5#@h6 z&#FRRasdQ1tZf%(MXi+^b%Xei4sDXw?wyyzIz4*1Y9_r;+z&E@fghFI9se|ZjJ$y2 z@Z6+-736!lxcoAN#F32&prhWdWjW5p6&OuA5+;2HRS*#3zKN?qzF?OQcHd`;`&ND z3`N%Uoufa9F?16pt9GyrVhbV=X+#P0VH+NJ9WM7|An`F~52gsg5xHl+VR(>_ zVZ$^Bas1(k{(wDJSZ|8MbyxE<9nCU7!sKvRoQMK&LJMEXkHS9HRQi?Ao@wu7MG1owBo@s)ztkRVu2?#+4 zNG-&vFpVuUjj+@i8f~l{y{nWfpgU3xSn8COtwO0U(}zXGZd#-)?G>Rnbo;h!-0N5q zO(W;87;HCF6 zXr-~TR^+VeYXc+c(S4(S>jIpQ+}gGcW%RIu4Fn(O*B#!6mg$H}haxbG3*Oydo~U$c z8vAqZ`p~wCRQ0#&^`ZSxp~`h>Z2i9Vq2n^5%KboY<9X$w^Kqie^8u`SeSYWyAXj_C z%5MVkAG_fct9`M@H(~f5dr%^){i)=)5Of}UaVDz+xyHAU-5&c$kZXda9N2~KRsx?`g*fhS!==L;bfLxb6B)`v^_B3v$SeLpqzR%hA1e*96S(knw zf55x?H0eB9m-#S$Ao%h$<&9jQ4Xbb{ivK(vtXQ9mJ#i?>_dF9FS)Wg(a3rhqJexdO zU&u9ar0DiMmyO&|ETwR)ng%|6q1aHWIdQDf_PkIX*--vn;Y54&d9iu2q4L+niQdce zQa5sAb&$fT5&p~auwr9v(!{AL-^=gm$j162g)OV_kv_MV)lKB4<{~6t zyR?_JLq#q)(@RKZ7DEmWvtOwe)p+K&25~i=0UE>t4O!k9g>eN!vcau-aia>sX5Gv!Ad$zZX26Du&+96)t$@ zuO@#*Om&<(HmPpF3VAo`9G&@hy=)8+Ij2z(T?E2Dt`k=|3l4N#$rQcr-6;kZTY8>_ zedODpdw*(>%9IUe@>mv|x|?B=xpO#ZKQNqfT>SCpP8P34gtsy}3Y%gF>Pw3-79&bb zR;EnJ!P^DTx?3zP@y?XelgJ8#-Kq}ZgUsyP_1n7po|MotwNxYM)C8D!VX_=e!4 zl%o5Mo0npeQ0t$)&X=1!ubsPJPr|cGFc;`vuS!cUdk3B$w%m@JydE{(36?xhhP*Ce ze=So{KuV(sb$h_UdAuFCk1csWC;5#3vL$G?-<9%$R`Izn^2Raq#&-sPaL0Y{qJ8u( zr1J8`wuATap)dBJ3-)D@_9c3>9crQ&N%DsE@#8P{n;P=rDfW?)_Ggv;#eV24=IUY^IyJP!NCupgJ7TJUl81G_Q658#lfUz zA=|JaX=XkKhancC!8Z?{=~|(wI3dx_p+t{CnbJW)--8mG{SXcV?UzH!&HS^5gZ`J&^5wkHRwF57<4^4d=dnQRUw zGz%{-wiPL+5DT{bO&umQ904aCCIA;a``u+hE4bw$Oh`HEZaIRoIFkA?Jn}JYJvcm0 zI_f?+1fw{r>@cF2I!LcMjLj^f^DvSsIP7#eG#w|Tw>Y$gJ5ok9GEq7P$0f#=J8=0i zID0r+`7k@R|1W1f{aUo-jls{iNn_rGQ*Yx z1D8Z@u0(OoM5^3G>y*Tw@b*@?4mRdw_V5mDxD*5_NxiU9NHkHu50ZGAl7wcH{Bb?K zU1EJ{d_r981CPjqpOQDFBYb#5<42tAQc@DkW4)KcXhu>}aiepek{rlFEwoapu~TSR zQ%b+Ye#ePQeo7T?PN|1atNZPmZ64f&YgZmZR{1;45q!I)WYJoP;gs~zmUOU7aq=mB z8aHE>Cu2f}>VgwxJ|$zNC1Y(QBWN~bvm~7j^b1^*QmS_A3&7(+!b-s`Wj-xJs9!^# z$lx7}=!0NB4TAMdzcW>tAZOxZo$ya>NSH>$)#9L^hU5GUZFiS18Xf3o_DYSVm{E1g&$6Mr}UF76iOvXwnnyF?=nU}aI_SXYv= zQuqg0svHlP_*PgZ!g6Vhf&s~1dd$ZwjuKCQ#UlTeYI>HL5Z13b9Cw((G3OQ&aK#xv2HI!n2hP zhNW`bg5!V|RfuHIj&g?rwEFgaY+05!xz>KwlM>93B2k4H;i8g&QGh8sUfN z8p<(RDmqSx%^Es<8ip_)Cj2@VP=R_aL=6-N3hycd5?|dju3_tlo2*%*MDsB>+B;0lLK`cJkP~EEzsAbHhj1 zp!iXsEQn9B3I`!Jz~+?bq?J>8OHn{62O$booQSX013t@@-lK7EvoZ+#QH`+IJY^N4poGN9A(X_#=GD<4 zP}+`mio*H;WVf^{2u*c(Enh4dpvD^nR25WmIT|FInr>Jy#kw5p0PkaU0;)iPYxZR_ z2;4pZp&0w!i{gjq#^hK!yeswIz)my1b~Ir=2>CJ`d%Q(oir2Q@5I??#__h|~rgpw= zt1)4qI~PD1sKU}OjZTRz#@?u=a|dK^;OJNZ3So$K0oTao$7TDqTOv=W14TN8b6Gd? zP`=@t29|Ytt1+mk_T2dvGMSXT(<#h|>!{4NQeZIkKhsJ=3V(tgO2wm`aX@K|t5wxu zn!hdT4`Y~T?_&ZX4)M)$t;7x=Y7YdS4tqT}z1`4e@R7!`be3V&%CoD9M zcir)R#h$L=-evm9Cx|O15hJVc$O~bJK2FPy(*Kp~NL)d1pkzh1$0kjU!;NTDu6dfD zIWwlXUt?m~gqzBQP5yQeNG~!$&#+71VA0;Ey4L3K6-AwYCS;xorH?$(o+7A>4@4%3 z88-}m;d+C}r-#NHw8N)U)(C72I|=rzbHvAv_}Z0rgg%UkU)uLSk?}#z^s3CwaNW){ z&ap+6l{AVESW)(?sgVbycKOW-){QYuiw|R>&j!lQ3F~5cjWbuJgtf~df*9#l{;cLa~_4Q~r*llo+jSct*(Xs}nTT~qqIB6cIvOXQrM|x^JdH6S(W|cT|4Ha;T0!h6 z=vXiS)wOSRRdPvmO@(fQXx;Kc zpiESGgLs{a^nLM4cRSi{o3~=y$#xnKf6M4(+p%T|NJL0aB*3M(BO1Fi*1E(0jsdbJ z613q%!rwK6P`fbPLgf3?@vT(&oj_0z593_jHWAaTlxPP{?O<-tKu%K6Q}6@Io^+<9 z0X{k9zway**$om7M)xOML%l=7DSHf&2P_=lg*-(V?&4p}*c?pyy#Q zDDyD1^DunE2@F-sIDADsMIrAvB^C*4&DD(X&o9H-K@Hk)ZxX|;sIP>5yQNHg7Q_J%U;40ILTzBfcwPRAxkS*%{;+ZR6HL%{ zVWA0KnX6o3DPiGcT^ZF}5lmqcfv&VsugQL3Qs`f++g?*&V9<75%gkIedSNir5Z_3! z+^~btIlXQKVs3c5(D^rRIInJmmC!}IOy33dC4_DnbL{=GQ2yKWJnes;o|lfE?I+`a z7cIf*Ie5_$9H9SW)Ux@%8MVB7nvEG68nWvr{PpXXWg8wiI{$mu@*nBBY0moJ0lHzv zpSu z_n*_0BG6E1YgAbLsM|OBG~0Nw@yWJI@bQ@h@^`xr-N$m3=Cy;ik#NqA_SUNn;w~Ow%Pj_yV$YAz!Kt2*S4n8z z_wdD=Zgh8n(LSdP)Hw!F_j{X8*oxq84U;Cel2+ZX7+(=s`p%r zF`7;;s);KS{>e$gWSVO~lWLaKlT8|VVpA9rIYb@UTg?x|e(sx2r<>Kd6on2Sxughh zzTF<=5J89Td-{_dQ_F_h)PK(t^m#fgNH#4!Dol4eJ}Sx%q&+UqPqa8LDK0EME-i07 zJ}#>s1ks-SzZ|t()c#h#8n|3h2Q%tyTn-U$dERoEYYDCfq@&N;!g}edejF|8`~cn{ zn3;FJ!dPB(?Ry&hX?nwIH_U)3gJ$l2)R6kw@R5q1r4kW@Z~F~fF72wHAWp}&1D^@& zx{mypRc$G;AAfZ}W!9-(2~E+eodFw@&dnIN8y;IL*Ukc4txKlSBppXB9ncCGl{rav1n9ec=B)Z2RN)kCT*Q#D+S1!`zXojV zV4Z**Im=v^J_q%4sZV|hI}ZV1yf+E^eZ&y%12pqR0|OwVqdS0ql>{;R)0a|CeDuj1 z8AO%jhYpa5&g(H@nU&k&kkvf90ZNK4yY-OOKSVN^s9Y^wf&}S~N=fM-Tm13Q7mkCQ z7+Zv^<4^&%Ce#K$wuq?#Zd++e@ojc(h_0AXNoiO|8bPS0)2e@_;@?BNFRq zq`qtu4n+1{1Ws@Yq6R&9H~*m>?ma39>uWk1B~Hh(^-nfJ3Tae(QGv-6uoWi7P*E{2 zCer|#PM2lF)JO}BQ&Bn`gETMEwFvDPPCTNpC1=E8*!%725{Rzs4T(YG)2o~PH5t+y zvffmpHbNPKnI;{QRJ!e$WL;D^zWg5)cyTx2oyDAbYF;ck`zCrQu;CLne^CISx=GzT;l5qg{$W~eO#=9r5Z4D|!TtJBR2OqHZu zDy^>7eGe(rVI6ViQdkx^6(wl+C1&G(>JH^UpzcgOKXa7J%9XhV;C)Rfi5?E&0LUop z!${33SL$6AK_Ssf?(p{1=Gv#Bp;$_vYp1pE?*fa@LOjQd;&$7aguzoZhN@-S0if#p z3_O=Jg?98+d5H2Tk%Ef-aSQ3c79w&f!_UGKc}{d0;}aT8*;|emn_SUcGX=2EpuS9= z%J|pUvz&>22#a0yC}`Ra!Ex#8j~CFU4-uy5BdelnDIiHAK~Mm+rgBLfs@jH$L(^hc z1pjeO=`IeuC8OMImUu* zs^Jor>%#nW6R$m`LEZ9IY=Nar#FO(cdX;u^ZsB{(N-(3vId+Bf^!uDr(4dJN!<&NL z(|uk@=*jGyy1ZMf1Hmb%sVuPR7wYUlGzn@tk@PkL!}?H?uGuVH(yo*2>`+z=Y6fSl zrhto(L|!d$)&$5=BxQ}Fq$D}7E6P!#X>Ac>?z+&yS~uDF;Y9mK@ZiqT!g9OiiC$Ly za64YwPN_Y_=Le*vPQ}Jv`QXzL_EoK^&d74(jC^xqgo@=!r$$T^>u>*@o)0OU|DB#U zwJuGZJGH(1xr}UTKTx=EU42>q=k(n3&UD&4?Zj*o52LyGscX0f?~m=9uu6};`0tm&O6}X&Q;&mu?^n@L?YmS; zPop~T*U3}u`&?5`lWy-f*&jO&rIem$)8223l{$_!r=Azvz-JnxI!?bUy{xQ)4>C@5 zod247S$}zd=>FJw8Km^OjSm7Vj61KBre62?Ku^@V%>6dY)h9avTv90nI;M@-jS1WR=IBaG(Y)%^NL5R9sj_Pj?bHs_R=Z?;6jJg_Ty1^m3OJ;h|is*8VSbmIt zLW@~qiMdgY*@}rm`V#GB78*?*K~zFOHe!x!9=#eIO$ZsgR1=%F7)uEskq!!u1)7IV z6vy23#w^CfUXsNvio_+F#zi)P+H>g}}_*%%UYZ;CD); zd5U*POh`$p+eoU%@3eZ<^Z?HE*H~|YY>4H*)AQdM>rWY*xS87^p3FZjX$R7ohbfuI zEtw}Y0T73*r?^?yDH#UN0L5fxRTMHRYFnB^OZvww!se_EZc zo6tCW!3PS(f*AqN7FH{Va|Ys{({tLK7wrF!(sNVS!hb(KU$MdL0l2mnxvvy?J{Ni8 z75nlQ`)d~mx)ukg7KgSL`-6_D0+XZ%_KRZfisFuo&@Y9&TuTCXitq<>^W#c(C#kuj-n&>Q=kz-nHs6wd%RG>UPDM9OcUeLJ5SWG^8aTG@|f%sx;hc zrA$Nh=}PrQsyYCrCPu7gYPS;2vIhRPlDxlWzOM#&1#xlAO~wcD4E;q+gLyE~Zk$59 zK35SrN1v{&tXH(o0#u}bWI@MliDhC>$cbp}PbIv#PtCW7g2rsMg!*~uy6)SOd~H&q>*mzPh!+DyCr`*l4)aFhC}3Qif&3$6)^A*yvZ!gs6|~ z)3{aBI6K=&Z_x-Z(j;Ta?A(^?`a%M6*`#mSBuqx>-$qGE+XR)P4-7zwL`3x&Blpv3 zqVvO04{JtXsaFwoR-{vAxaX#JLuYOiN*>e7cTj=!F*=}t8XjzhL~WUcYB6<0A-Xq) z$3%6vBn*5pZ^gh2X(RW2XnAu)ne}U9RjK#v7Y;I!ef!J@&7qtJj<9)sk!>9ETx@@aq)uf% zO|&v`A}7U<_d<~vJlqS+=SDyUcB`;FfGC|>AR90&UwFa|<(^Lh76L%-O`zT{kI*l_ zWC3)Y5jlu2t4jUS*TCK9Dx9uvg{>})ccs?1#~%o!-U}m*7yazkfC+$BA_NjwB&af@ zQv0Z)GWbin1xT^lc4~cZpug%FYE#1`?VvxEm&8yLE?2;0S79yVrstP-{!j^^?BcRQ z;aO`q2W_LN_oF?Ee#P7pIil^Dij&3~7(&Sh?DWd?-Ks|KFq#+(0Oy8$`vLQGr1;}{ z*ssi&Gu@G?a@r6*$u9)x<#H_plwatb3r;#uBNU5A{qr)8dex9v zMlpaz?RwljMEaF#8@)EBs7ihcI~}zoflSGEkW4~IY->=nY3vGG(^GO?{B)%8GZB7Tf0*)#uC({3?P7l&(R{%g{21W>#< zX1zjws|efcI5tF6Ii!9A8)F#79Jl)nG${n;?VmAuzOX*V_3-hqeAHuy5tqf>mA=g?e<2ruVavBq;KKqYaNd36`flO0&{or5Szjw7y=YF zMv-;g$AseG6#o`cy!yE7nh>C?GEr||n{>=iFR%Q?U4CU52lk#5~UFDNnT zTCvNoVpb_ky>3Li-VAAiQfXfyLs7SAEO1OGA|Ee}3AJ(byrf|XthOJy24##4sZ90< z2*6X~=kk}^=!r1Y?sm=WqW7R-g;O>5FVn=LSn*HGoC)T2q68`Qu*Gbt9rVCq$u2oS zpk02pCu@uJ6cE`19EkT7Gc?&}qB|-!VqDCT*Q>6i1 zti?Ij4~c*Fr;=;Hwd27}&Shd(Da04;I95Yf@=ll&1} z_M|J|$|B;O=+a@j`@znH-F^H00fGQ^p=W!sE0BS1)eh6rM?@gUUd8jPeW6e5%I7mlvO-p6f` zhvi(IpzqZOadOrEDCuJl30}V|L2cv^#B2B5Zk-2&Dlhq6WvyK=?HezhpqFmq*IuF5 ze*M=$uh-$M*U_%m@r~C>(Caku+pN&ry#Cvw*V}T|+e+8l8ffEf9rU(I{Jt&pzN`Pf z@AZC|^?uy-e!B5~4tl>N23-q*ZuLR;UZBS;&~q2)bp!Mc0s%xMH-&wnk%+{TmA6C# zkq8C-aa6X&Lopfj`jb_5BqIq0JpU)7mWr7I9`8_i>W9j?5)niasp?0ng$fyh0eGK} z)k{BD=nbTPKGCSu?eK)g*ErRx{Wg&)k*0B`-Dv%%GXP)n{A;V@+4?}5=7nCT$J;wJ zf!3u#ZvYapWV+Us(O?9jP$0pVYm?Cg2K~YGFE^%>83JA~gxa@evjqxSk{Q}}7K;_S zU4eu;_aLj42J4N%jDH=qeEhjR5J4=J`Srewn?=J zEU`bcC_GhuwJ0J}KeHGT*KW1gN1=ZnwG>BJ5@(UX)HJD)z}EL?k;MI;Un7a1(7Gu} zsA*y#MeGH|Doq+hQ7cUzCC(~CnPgHcLzU&vDoaz8Un@&j)z2!&(6n1C$J7PICeJcN zQ76wfCC;Y6v1C%Gz_sDerpR-UU#Ix@sO7`%O*zpE)OYZPI*F!fqzrpp;cA5I=FU!8;<|qtG@c-_Hz^b!<<2eHtL;shl_&=bw`A>et z|DY90=VpNz2*deTrh>Pg`ma{#FQ&pJmSQZ4`L9+;jTAZw#&*SBI;U_dOV}^5Jw^F@ zZ>DG*t?np0xr)CeDw#ERL&-v!);A3SoQ6$}O1-*JLb=49C0||mOop+>3Y~CE*g`@a zO`GK==bK}O(P~EAE;mR-EIv&VgFZiWx=HQFi{8F4ayiZ~Mx=^)(Nvb}Uu$c7$6(mN zh*RsW$dvopI>$uo-Sqs2gIuT6)<)}oWvTm)iB+eyLEyKtGleyWg(~i;=M3HUr`;W% zpdcsim6p4j=^0u5i0G%gi_k1z5arGvTgS`8tI#OLcLSy2gSj!-Rz0_uqpO3HA8w1^ zmiAtthc&!P6{Hfp;q)X7eyTF4>-nNY?&

+hA`6$S52VIpR1q#|OgDvg>#fC7NO3 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 J00)l${{W1NCkp@o literal 0 HcmV?d00001 diff --git a/docs/design/index.md b/docs/design/index.md index d4b36e693..5434b27fb 100644 --- a/docs/design/index.md +++ b/docs/design/index.md @@ -13,7 +13,6 @@ while the source paths remain stable so existing links continue to work. ### Runtime and stage execution - [Disaggregated Inference](feature/disaggregated_inference.md) -- [Ray-based Execution](feature/ray_based_execution.md) - [Async Chunk](feature/async_chunk.md) - [Async Diffusion Output](feature/async_diffusion_output.md) - [Async Omni Output Materialization](feature/omni_async_output_materialization.md) @@ -48,11 +47,12 @@ while the source paths remain stable so existing links continue to work. #### Quantization -- [Quantization Overview](../user_guide/quantization/overview.md) +- [Quantization](feature/quantization.md) - [Cache-DiT](feature/cache_dit.md) - [TeaCache](feature/teacache.md) - [Diffusion Continuous Batching](feature/diffusion_continuous_batching.md) +- [Distributed Layerwise Offload](feature/distributed_layerwise_offload.md) ## Infrastructure and Performance diff --git a/docs/user_guide/diffusion/cpu_offload_diffusion.md b/docs/user_guide/diffusion/cpu_offload.md similarity index 88% rename from docs/user_guide/diffusion/cpu_offload_diffusion.md rename to docs/user_guide/diffusion/cpu_offload.md index 86a0e9201..02ab9f074 100644 --- a/docs/user_guide/diffusion/cpu_offload_diffusion.md +++ b/docs/user_guide/diffusion/cpu_offload.md @@ -184,10 +184,15 @@ class Flux2Transformer2DModel(nn.Module): ### How It Works Distributed layerwise offloading extends single-GPU layerwise offloading to -multi-device deployments. Each DP rank stores only **1/dp_size** of the model -weights in host memory; full layer weights are reconstructed at runtime via -**AllGather** on a dedicated communication stream, overlapped with computation -via a fixed double-buffer scheme. +multi-device deployments. In the default mode, each rank stores only +**1/dp_size** of the model weights in host memory; full layer weights are +reconstructed at runtime via **AllGather** on a dedicated communication stream, +overlapped with computation via a fixed double-buffer scheme. The +`--dlo-no-use-allgather` mode instead streams standard-loader rank-local +weights independently and does not shard weights across ranks. + +For the implementation design and compatibility matrix, see +[Distributed Layerwise Offload](../../design/feature/distributed_layerwise_offload.md). **Key features:** - **Weight sharding + AllGather**: each rank stores 1/dp_size of weights, @@ -219,7 +224,7 @@ vllm serve /path/to/model --omni \ --enable-distributed-layerwise-offload \ --data-parallel-size 4 -# Without AllGather (each rank loads full weights, no sharding) +# Without DLO AllGather (each rank streams standard-loader rank-local weights) vllm serve /path/to/model --omni \ --enable-distributed-layerwise-offload \ --data-parallel-size 4 \ @@ -247,9 +252,9 @@ m = Omni( | Flag | Description | Default | |------|-------------|---------| | `--enable-distributed-layerwise-offload` | Enable DLO | `false` | -| `--data-parallel-size N` | Number of DP ranks for weight sharding | `1` | +| `--data-parallel-size N` | Number of DP ranks; DLO weight-sharding group when AllGather is enabled | `1` | | `--dlo-use-allgather` | Shard + AllGather (saves CPU, requires concurrent requests) | `true` | -| `--dlo-no-use-allgather` | Full weights per rank (no sharding, no AllGather) | `false` | +| `--dlo-no-use-allgather` | Use standard-loader rank-local weights; no DLO sharding or AllGather | `false` | ### How model weights are loaded (mmap path) @@ -303,9 +308,15 @@ request while AllGather synchronizes only weight shards (request-independent). ### Limitations - Online quantization (FP8) is incompatible with mmap loading — falls back to - regular `load_weights()` automatically -- Tensor Parallel is not supported (DLO uses DP-based sharding) -- HSDP + AllGather is rejected (would double-shard weights) + regular loading only when the model is outside the DLO+AllGather mmap path; + online quantization with DLO+AllGather is rejected. Use + `--dlo-no-use-allgather` or disable online quantization. +- Tensor Parallel > 1 is rejected in the DLO+AllGather mmap path because TP-aware + weight-loader callbacks are bypassed. The no-AllGather path retains the + standard TP loader and is experimental. +- HSDP + AllGather is rejected because it would double-shard parameters. HSDP + with no-AllGather is accepted at configuration level, but has limited + end-to-end validation. - `num_inference_steps=None` is not allowed in DP multi-concurrency mode **Module Discovery** @@ -338,7 +349,7 @@ OffloadBackend (base class) ├── LayerWiseOffloadBackend → uses LayerwiseOffloadHook │ (single-GPU, full weights on host) └── DistributedLayerwiseOffloadBackend → uses DistributedLayerwiseOffloadHook - (multi-GPU, 1/dp_size sharded weights + AllGather) + (multi-GPU, sharded AllGather or rank-local mode) ``` Factory function `get_offload_backend()` selects the appropriate backend based on @@ -369,4 +380,10 @@ reasoner/generator components inside the model forward pass. **Notes:** - Model-Level Offloading is expected to be supported by all common diffusion models (DiT and encoders) naturally - Layerwise Offloading requires DiT class to define `_layerwise_offload_blocks_attrs` pointing to transformer blocks -- Distributed Layerwise Offloading works with any model that supports Layerwise Offloading — no additional model changes required. See [Cosmos3 DistOffload recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/cosmos3/Cosmos3-DistOffload.md) for usage examples. +- Distributed Layerwise Offloading reuses the layerwise block topology, but the + model and parallelism combination still needs validation. AllGather mode + additionally requires a compatible checkpoint/mmap layout; no-AllGather mode + retains the standard loader's rank-local tensors. See the + [DLO design](../../design/feature/distributed_layerwise_offload.md) and + [Cosmos3 DistOffload recipe](https://github.com/vllm-project/vllm-omni/blob/main/recipes/cosmos3/Cosmos3-DistOffload.md) + for usage examples. diff --git a/docs/user_guide/diffusion_features.md b/docs/user_guide/diffusion_features.md index 3f631d5e5..83bc3643e 100644 --- a/docs/user_guide/diffusion_features.md +++ b/docs/user_guide/diffusion_features.md @@ -59,7 +59,7 @@ Memory optimization methods help reduce GPU memory usage, enabling inference on | Method | Description | Best For | |--------|-------------|----------| -| **[CPU Offload](diffusion/cpu_offload_diffusion.md)** | Offloads model components to CPU memory | Limited VRAM, large models on consumer GPUs | +| **[CPU Offload](diffusion/cpu_offload.md)** | Offloads model components to CPU memory | Limited VRAM, large models on consumer GPUs | | **[Quantization](quantization/overview.md)** | Reduces transformer stages from BF16 to FP8/INT8/etc. | Limited VRAM, minimal accuracy loss | | **[VAE Parallelism](diffusion/parallelism/vae_parallelism.md)** | Distributes VAE decode work across GPUs | High-resolution generation with reduced VAE memory peak | @@ -104,8 +104,8 @@ The following tables show which models support each feature: > Notes: -> 1. CPU Offload has two methods: Module-wise (default for models with DiT + text encoder) and Layerwise. The tables below show **Layerwise support** only. Split models like Cosmos3 (no separate text encoder) swap their reasoner/generator components for module-wise offload; see the [CPU Offload Guide](diffusion/cpu_offload_diffusion.md). -> 2. The **💾Quantization** column is collapsed for readability. See [Quantization Overview](quantization/overview.md) for per-method and per-model support details. +> 1. CPU Offload has two methods: Module-wise (default for models with DiT + text encoder) and Layerwise. The tables below show **Layerwise support** only. Split models like Cosmos3 (no separate text encoder) swap their reasoner/generator components for module-wise offload; see the [CPU Offload Guide](diffusion/cpu_offload.md). +> 2. The **💾Quantization** column is collapsed for readability. See [Quantization](quantization/overview.md) for per-method and per-model support details. ### ImageGen @@ -274,9 +274,9 @@ Measured on NVIDIA H800: **Memory Optimization:** -- **[CPU Offload Guide](diffusion/cpu_offload_diffusion.md)** - Offload model components to CPU, reduce GPU memory usage +- **[CPU Offload Guide](diffusion/cpu_offload.md)** - Offload model components to CPU, reduce GPU memory usage - **[VAE Parallelism Guide](diffusion/parallelism/vae_parallelism.md)** - Distribute VAE decode work across GPUs for high-resolution images and videos -- **[Quantization Overview](quantization/overview.md)** - Overview of quantization methods for diffusion, multi-stage omni/TTS, and multi-stage diffusion models +- **[Quantization](quantization/overview.md)** - Quantization methods for diffusion, multi-stage omni/TTS, and multi-stage diffusion models **Extensions:** diff --git a/docs/user_guide/quantization/overview.md b/docs/user_guide/quantization/overview.md index 3a4a45573..ee36f5b60 100644 --- a/docs/user_guide/quantization/overview.md +++ b/docs/user_guide/quantization/overview.md @@ -5,6 +5,9 @@ path. The same configuration entrypoint is used across diffusion-only models, multi-stage omni/TTS models, and multi-stage diffusion models, but each model type has a different quantization scope. +For the internal architecture and backend extension points, see the +[quantization design document](../../design/feature/quantization.md). + ## Quantization Modes | Mode | Guide | Description | Methods | diff --git a/mkdocs.yml b/mkdocs.yml index cda933c44..fd97b9b37 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -75,6 +75,8 @@ plugins: redirect_maps: user_guide/diffusion/request_batching.md: user_guide/diffusion/execution_modes.md user_guide/diffusion/step_execution.md: user_guide/diffusion/execution_modes.md + user_guide/diffusion/cpu_offload_diffusion.md: user_guide/diffusion/cpu_offload.md + user_guide/quantization/index.md: user_guide/quantization/overview.md design/feature/diffusion_request_level_batching.md: design/feature/diffusion_continuous_batching.md design/feature/diffusion_step_execution.md: design/feature/diffusion_continuous_batching.md - glightbox diff --git a/recipes/cosmos3/Cosmos3-DistOffload.md b/recipes/cosmos3/Cosmos3-DistOffload.md index 27d1c77bd..8eeea5cc2 100644 --- a/recipes/cosmos3/Cosmos3-DistOffload.md +++ b/recipes/cosmos3/Cosmos3-DistOffload.md @@ -56,10 +56,14 @@ vllm serve /path/to/Cosmos3-Super \ --data-parallel-size 4 ``` -### Without AllGather (full weights per rank, no sharding) +### Without DLO AllGather (rank-local weights, no DLO sharding) -Use `--dlo-no-use-allgather` when you want each rank to load full weights independently — -no AllGather synchronization, no concurrent request requirement, but N× host memory. +Use `--dlo-no-use-allgather` when you want each rank to stream the standard +loader's rank-local weights independently — no DLO AllGather synchronization, +no concurrent request requirement, but no DLO weight sharding and higher host +memory use. In pure DP, this is equivalent to independent full-weight +layerwise-offload replicas; with TP or HSDP, each rank retains the standard +loader's local tensor layout. ```bash vllm serve /path/to/Cosmos3-Nano \ @@ -154,9 +158,9 @@ wait | Flag | Description | Default | |------|-------------|---------| | `--enable-distributed-layerwise-offload` | Enable DLO with H2D + AllGather overlap | `false` | -| `--data-parallel-size N` | Number of DP ranks (weight sharding + concurrent requests) | `1` | +| `--data-parallel-size N` | Number of DP ranks; DLO weight sharding + concurrent requests when AllGather is enabled | `1` | | `--dlo-use-allgather` | Use shard + AllGather for weight reconstruction (recommended) | `true` | -| `--dlo-no-use-allgather` | Each rank loads full weights independently (no sharding, no AllGather) | `false` | +| `--dlo-no-use-allgather` | Stream standard-loader rank-local weights independently (no DLO sharding, no DLO AllGather) | `false` | | `--usp N` | Use SP instead of DP for weight sharding (long sequences) | `1` | ## Mode comparison @@ -166,7 +170,7 @@ wait | DLO + AllGather (DP4) | `--enable-distributed-layerwise-offload --data-parallel-size 4` | 1/4 model | 2 blocks | **3.3× HSDP** | Max throughput, short sequences | | DLO + AllGather (DP2) | `--enable-distributed-layerwise-offload --data-parallel-size 2` | 1/2 model | 2 blocks | 2× HSDP | Balanced throughput + memory | | DLO + AllGather (SP4) | `--enable-distributed-layerwise-offload --usp 4` | 1/4 model | 2 blocks | 1× (single req) | Long sequences (720p+) | -| DLO no-AllGather | `--enable-distributed-layerwise-offload --dlo-no-use-allgather` | Full model | 2 blocks | 0.4× HSDP | No AllGather overhead, high CPU | +| DLO no-AllGather | `--enable-distributed-layerwise-offload --dlo-no-use-allgather` | Standard-loader rank-local weights | 2 blocks | 0.4× HSDP | No DLO AllGather overhead, high CPU | | HSDP | `--use-hsdp --hsdp-shard-size 4` | 0 | 1/4 model | 1× (baseline) | Weights fit in HBM | ## Memory expectations @@ -185,7 +189,11 @@ wait - `--dlo-use-allgather` (default) requires all concurrent requests to have the same `num_inference_steps` (AllGather is a collective that needs all ranks synchronized) -- Online quantization (FP8) is incompatible with mmap loading — falls back to regular - `load_weights()` automatically -- Tensor Parallel is not supported (DLO uses DP-based sharding, a different dimension) -- HSDP + AllGather is rejected (would double-shard weights) +- Online quantization (FP8) is incompatible with the DLO+AllGather mmap path; + use `--dlo-no-use-allgather` or disable online quantization +- Tensor Parallel > 1 is rejected in the DLO+AllGather mmap path. TP with + `--dlo-no-use-allgather` retains the standard TP loader and should be treated + as an experimental compatibility path +- HSDP + AllGather is rejected (would double-shard weights). HSDP with + `--dlo-no-use-allgather` is accepted at configuration level, but is not yet a + broadly validated production combination