From e0324a79e5efa362bfe4f49113de3c5eb97829ba Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Mon, 30 Mar 2026 16:52:07 -0400 Subject: [PATCH 01/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/agentgateway/about/policies.md | 2 +- assets/agw-docs/pages/agentgateway/about/processing-order.md | 2 +- .../agentgateway/integrations/llm-clients-k8s/claude-code.md | 1 - .../pages/agentgateway/integrations/llm-clients/claude-code.md | 1 - content/_index.md | 2 +- content/docs/standalone/main/llm/prompt-guards/overview.md | 2 +- 6 files changed, 4 insertions(+), 6 deletions(-) diff --git a/assets/agw-docs/pages/agentgateway/about/policies.md b/assets/agw-docs/pages/agentgateway/about/policies.md index cbb8625bd..76adef15f 100644 --- a/assets/agw-docs/pages/agentgateway/about/policies.md +++ b/assets/agw-docs/pages/agentgateway/about/policies.md @@ -49,7 +49,7 @@ For more information, see [Policy processing order](#processing-order) and [PreR When multiple policies target the same resource, agentgateway merges the policy sections on a **field level** (shallow merge). If two policies set the same field, the more specific policy takes precedence. -### Merge precedence +### Merge precedence {#merging-precedence} Each policy section follows a different precedence order based on the specificity of the target. The more specific the target, the higher the precedence. diff --git a/assets/agw-docs/pages/agentgateway/about/processing-order.md b/assets/agw-docs/pages/agentgateway/about/processing-order.md index d9b41317e..857c8bb7d 100644 --- a/assets/agw-docs/pages/agentgateway/about/processing-order.md +++ b/assets/agw-docs/pages/agentgateway/about/processing-order.md @@ -34,7 +34,7 @@ graph LR 3. **PostRouting traffic policies:** Run after route selection. [PostRouting](#postrouting) is the default phase for traffic policies and supports all traffic filters. 4. **Backend policies:** Run when the gateway connects to the destination backend, including backend TLS, authentication, and health checking. -Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. For details, see [merge precedence](#merging). +Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. For details, see [merge precedence]({{< link-hextra path="/about/policies/#merge-precedence" >}}). ## Traffic filter execution order diff --git a/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md b/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md index 6845ffc79..017731efa 100644 --- a/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md +++ b/assets/agw-docs/pages/agentgateway/integrations/llm-clients-k8s/claude-code.md @@ -244,5 +244,4 @@ kubectl delete secret anthropic-secret -n agentgateway-system --ignore-not-found {{< cards >}} {{< card path="/tutorials/claude-code-proxy" title="Claude Code Proxy Tutorial" subtitle="Full walkthrough with prompt guards and observability" >}} {{< card path="/llm/providers/anthropic" title="Anthropic Provider" subtitle="Complete Anthropic provider configuration" >}} - {{< card path="/tutorials/ai-prompt-guard" title="AI Prompt Guard" subtitle="Block sensitive content in prompts" >}} {{< /cards >}} diff --git a/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md b/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md index 0a98f4057..0d6150e81 100644 --- a/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md +++ b/assets/agw-docs/pages/agentgateway/integrations/llm-clients/claude-code.md @@ -100,6 +100,5 @@ export ANTHROPIC_BASE_URL="http://localhost:4000" {{< cards >}} {{< card path="/llm/providers/anthropic" title="Anthropic provider" subtitle="Complete Anthropic provider configuration" >}} - {{< card path="/tutorials/ai-prompt-guard" title="AI prompt guard" subtitle="Advanced prompt guard patterns" >}} {{< card path="/llm/prompt-guards/" title="Prompt guards" subtitle="Set up guardails for LLM requests and responses" >}} {{< /cards >}} diff --git a/content/_index.md b/content/_index.md index bd4dfb331..cbeecd19c 100644 --- a/content/_index.md +++ b/content/_index.md @@ -826,7 +826,7 @@ function showK8sOption(option) { Support for industry standard AI protocols for agent and tool connectivity including A2A and MCP with the ability to automatically expose existing REST APIs as MCP-native tools.

- +

Developer Portal

diff --git a/content/docs/standalone/main/llm/prompt-guards/overview.md b/content/docs/standalone/main/llm/prompt-guards/overview.md index 864e93095..012a2fd69 100644 --- a/content/docs/standalone/main/llm/prompt-guards/overview.md +++ b/content/docs/standalone/main/llm/prompt-guards/overview.md @@ -99,7 +99,7 @@ Check out the following guides to build your guardrail system. {{< card link="../moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="../bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="../google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/guardrails/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="../multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} From 5522b9f62ae05c3a9eed564c6b6dc408c06a47b7 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 12:50:18 -0400 Subject: [PATCH 02/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/agentgateway/about/policies.md | 2 +- assets/agw-docs/pages/agentgateway/about/processing-order.md | 2 +- assets/agw-docs/pages/agentgateway/llm/functions.md | 2 +- assets/agw-docs/pages/resiliency/keepalive.md | 4 ++-- content/docs/kubernetes/main/tutorials/basic/_index.md | 2 +- .../docs/kubernetes/main/tutorials/mcp-federation/_index.md | 2 +- content/docs/kubernetes/main/tutorials/telemetry/_index.md | 2 +- content/docs/standalone/latest/llm/prompt-guards/_index.md | 4 ++-- content/docs/standalone/latest/llm/prompt-templates.md | 4 ++-- content/docs/standalone/main/tutorials/_index.md | 1 - 10 files changed, 12 insertions(+), 13 deletions(-) diff --git a/assets/agw-docs/pages/agentgateway/about/policies.md b/assets/agw-docs/pages/agentgateway/about/policies.md index 76adef15f..17a82a142 100644 --- a/assets/agw-docs/pages/agentgateway/about/policies.md +++ b/assets/agw-docs/pages/agentgateway/about/policies.md @@ -43,7 +43,7 @@ Some `backend` sub-fields have additional targeting restrictions. The `traffic` section supports an optional `phase` field that controls when the policy runs. When you set the phase to `PreRouting`, the policy runs before route selection. Because of this timing, `PreRouting` policies can only target a Gateway or ListenerSet. -For more information, see [Policy processing order](#processing-order) and [PreRouting filters](#prerouting-filters). +For more information, see [Policy processing order](#processing-order) and [PreRouting filters](#prerouting). ## Policy merging {#merging} diff --git a/assets/agw-docs/pages/agentgateway/about/processing-order.md b/assets/agw-docs/pages/agentgateway/about/processing-order.md index 857c8bb7d..d3d831ef3 100644 --- a/assets/agw-docs/pages/agentgateway/about/processing-order.md +++ b/assets/agw-docs/pages/agentgateway/about/processing-order.md @@ -34,7 +34,7 @@ graph LR 3. **PostRouting traffic policies:** Run after route selection. [PostRouting](#postrouting) is the default phase for traffic policies and supports all traffic filters. 4. **Backend policies:** Run when the gateway connects to the destination backend, including backend TLS, authentication, and health checking. -Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. For details, see [merge precedence]({{< link-hextra path="/about/policies/#merge-precedence" >}}). +Within each phase, agentgateway merges all applicable policies with a shallow field-level merge. If two policies configure different fields, both apply. For example, if one policy sets `transformation` and another sets `extAuth`, both filters run. If two policies configure the same field, the higher-precedence policy takes effect. ## Traffic filter execution order diff --git a/assets/agw-docs/pages/agentgateway/llm/functions.md b/assets/agw-docs/pages/agentgateway/llm/functions.md index da96b5d04..d7764b54f 100644 --- a/assets/agw-docs/pages/agentgateway/llm/functions.md +++ b/assets/agw-docs/pages/agentgateway/llm/functions.md @@ -44,7 +44,7 @@ sequenceDiagram ### Behavior with other AI features {#about-behavior} -Keep in mind the following behaviors when using function calling with other agentgateway features. For more details about these features, see the [API docs]({{< link-hextra path="/reference/api/#aitrafficpolicy" >}}). +Keep in mind the following behaviors when using function calling with other agentgateway features. For more details about these features, see the [API docs]({{< link-hextra path="/reference/api/#backendai" >}}). * Streaming responses: You can stream responses that call functions. * Semantic caching: Function calls are not cached. diff --git a/assets/agw-docs/pages/resiliency/keepalive.md b/assets/agw-docs/pages/resiliency/keepalive.md index 1b06775fa..a735589af 100644 --- a/assets/agw-docs/pages/resiliency/keepalive.md +++ b/assets/agw-docs/pages/resiliency/keepalive.md @@ -6,7 +6,7 @@ With keepalive, the kernel sends probe packets with only an acknowledgement flag {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} -## TCP keepalive +## TCP keepalive {#tcp-keepalive} Keep the TCP connection alive by sending out probes after the connection has been idle for a specific amount of time. @@ -93,7 +93,7 @@ Keep the TCP connection alive by sending out probes after the connection has bee kubectl delete {{< reuse "agw-docs/snippets/trafficpolicy.md" >}} httpbin-keepalive -n httpbin ``` -## HTTP keepalive +## HTTP keepalive {#http-keepalive} Keep the HTTP connection alive by sending out probes after the connection has been idle for a specific amount of time. diff --git a/content/docs/kubernetes/main/tutorials/basic/_index.md b/content/docs/kubernetes/main/tutorials/basic/_index.md index ab5970ead..b99e2f121 100644 --- a/content/docs/kubernetes/main/tutorials/basic/_index.md +++ b/content/docs/kubernetes/main/tutorials/basic/_index.md @@ -262,6 +262,6 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/tutorials/mcp-federation" title="MCP Federation" subtitle="Federate multiple MCP servers" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md b/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md index 032516f54..0f89ad56d 100644 --- a/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md +++ b/content/docs/kubernetes/main/tutorials/mcp-federation/_index.md @@ -306,6 +306,6 @@ kind delete cluster --name agentgateway ## Next steps {{< cards >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/tutorials/telemetry/_index.md b/content/docs/kubernetes/main/tutorials/telemetry/_index.md index be05ed6d0..2ea2b9570 100644 --- a/content/docs/kubernetes/main/tutorials/telemetry/_index.md +++ b/content/docs/kubernetes/main/tutorials/telemetry/_index.md @@ -309,5 +309,5 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/observability/" title="Observability Reference" subtitle="Complete observability configuration" >}} {{< card path="/observability/otel-stack" title="OTel Stack" subtitle="Full OpenTelemetry stack setup" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-guards/_index.md b/content/docs/standalone/latest/llm/prompt-guards/_index.md index b2c1f8754..c30573cc4 100644 --- a/content/docs/standalone/latest/llm/prompt-guards/_index.md +++ b/content/docs/standalone/latest/llm/prompt-guards/_index.md @@ -18,12 +18,12 @@ To set up guardrails, check out the following guides. {{< card link="moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/prompt-guards/webhook" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} To track guardrails and content safety, see the following guide. {{< cards >}} - {{< card path="/observability/" title="Observe LLM traffic" description="Track content safety metrics and blocked requests." >}} + {{< card path="/llm/observability/" title="Observe LLM traffic" description="Track content safety metrics and blocked requests." >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-templates.md b/content/docs/standalone/latest/llm/prompt-templates.md index d10e25811..ba3e4a1f7 100644 --- a/content/docs/standalone/latest/llm/prompt-templates.md +++ b/content/docs/standalone/latest/llm/prompt-templates.md @@ -231,6 +231,6 @@ llm: ## Next steps -- Learn about [CEL expressions]({{< link-hextra path="reference/cel/">}}) for advanced expression logic. +- Learn about [CEL expressions]({{< link-hextra path="/reference/cel/">}}) for advanced expression logic. - Explore [transformations]({{< link-hextra path="/llm/transformations/" >}}) for more LLM request transformation examples. -- Set up [authentication]({{< link-hextra path="configuration/security/jwt-authn/" >}}) to use JWT claims in transformations. +- Set up [authentication]({{< link-hextra path="/configuration/security/jwt-authn/" >}}) to use JWT claims in transformations. diff --git a/content/docs/standalone/main/tutorials/_index.md b/content/docs/standalone/main/tutorials/_index.md index 2b9daf3d1..326ea268b 100644 --- a/content/docs/standalone/main/tutorials/_index.md +++ b/content/docs/standalone/main/tutorials/_index.md @@ -30,7 +30,6 @@ Learn how to use agentgateway through hands-on tutorials. Start with the basics {{< card link="tls" title="TLS / HTTPS" subtitle="Enable encrypted connections" icon="shield-check" >}} {{< card link="oauth2-proxy" title="OAuth2 Proxy" subtitle="GitHub, Google, Azure AD authentication" icon="user-circle" >}} {{< card link="tailscale-auth" title="Tailscale Authentication" subtitle="Zero-trust access with Tailscale" icon="globe-alt" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Block prompt injection and PII" icon="shield-exclamation" >}} {{< /cards >}} ## Operations From 86cacda6d38f8cbd412d914c71719f902ecdc9ea Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 12:59:54 -0400 Subject: [PATCH 03/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/traffic-management/traffic-split.md | 2 +- content/_index.md | 2 +- content/docs/kubernetes/latest/tutorials/_index.md | 1 - content/docs/standalone/latest/llm/prompt-guards/overview.md | 2 +- 4 files changed, 3 insertions(+), 4 deletions(-) diff --git a/assets/agw-docs/pages/traffic-management/traffic-split.md b/assets/agw-docs/pages/traffic-management/traffic-split.md index a65f66c59..c602c3a73 100644 --- a/assets/agw-docs/pages/traffic-management/traffic-split.md +++ b/assets/agw-docs/pages/traffic-management/traffic-split.md @@ -93,7 +93,7 @@ This example demonstrates A/B testing and canary deployments by distributing tra |Setting|Description| |--|--| - |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app#deploy-app/" >}}). | + |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/#deploy-app/" >}}). | |`spec.hostnames`| The hostname for which you want to apply traffic splitting.| |`spec.rules.matches.path`|The path prefix to match on. In this example, `/` is used. | |`spec.rules.backendRefs`| A list of services you want to forward traffic to. Use the `weight` option to define the amount of traffic that you want to forward to each service. | diff --git a/content/_index.md b/content/_index.md index cbeecd19c..ed753d15a 100644 --- a/content/_index.md +++ b/content/_index.md @@ -826,7 +826,7 @@ function showK8sOption(option) { Support for industry standard AI protocols for agent and tool connectivity including A2A and MCP with the ability to automatically expose existing REST APIs as MCP-native tools.

- +

Developer Portal

diff --git a/content/docs/kubernetes/latest/tutorials/_index.md b/content/docs/kubernetes/latest/tutorials/_index.md index c9616263a..34c0a1059 100644 --- a/content/docs/kubernetes/latest/tutorials/_index.md +++ b/content/docs/kubernetes/latest/tutorials/_index.md @@ -25,7 +25,6 @@ Learn how to deploy and manage agentgateway on Kubernetes through hands-on tutor {{< cards >}} {{< card link="jwt-authorization" title="JWT Authorization" subtitle="Secure your gateway with JWT authentication" icon="lock-closed" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Protect LLM requests from sensitive data exposure" icon="shield-check" >}} {{< card link="claude-code-proxy" title="Claude Code CLI Proxy" subtitle="Proxy and secure Claude Code CLI traffic through the gateway" icon="terminal" >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-guards/overview.md b/content/docs/standalone/latest/llm/prompt-guards/overview.md index 3256572b0..864e93095 100644 --- a/content/docs/standalone/latest/llm/prompt-guards/overview.md +++ b/content/docs/standalone/latest/llm/prompt-guards/overview.md @@ -99,7 +99,7 @@ Check out the following guides to build your guardrail system. {{< card link="../moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="../bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="../google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/guardrails/webhook/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/guardrails/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="../multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} From 833067c19287808323ad6e8fcd224b1875f6f48e Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:06:56 -0400 Subject: [PATCH 04/15] Link fixes Signed-off-by: Kristin Brown --- content/docs/kubernetes/main/tutorials/_index.md | 1 - content/docs/standalone/latest/llm/prompt-guards/overview.md | 2 +- content/docs/standalone/latest/tutorials/_index.md | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/content/docs/kubernetes/main/tutorials/_index.md b/content/docs/kubernetes/main/tutorials/_index.md index c9616263a..34c0a1059 100644 --- a/content/docs/kubernetes/main/tutorials/_index.md +++ b/content/docs/kubernetes/main/tutorials/_index.md @@ -25,7 +25,6 @@ Learn how to deploy and manage agentgateway on Kubernetes through hands-on tutor {{< cards >}} {{< card link="jwt-authorization" title="JWT Authorization" subtitle="Secure your gateway with JWT authentication" icon="lock-closed" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Protect LLM requests from sensitive data exposure" icon="shield-check" >}} {{< card link="claude-code-proxy" title="Claude Code CLI Proxy" subtitle="Proxy and secure Claude Code CLI traffic through the gateway" icon="terminal" >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/llm/prompt-guards/overview.md b/content/docs/standalone/latest/llm/prompt-guards/overview.md index 864e93095..012a2fd69 100644 --- a/content/docs/standalone/latest/llm/prompt-guards/overview.md +++ b/content/docs/standalone/latest/llm/prompt-guards/overview.md @@ -99,7 +99,7 @@ Check out the following guides to build your guardrail system. {{< card link="../moderation" title="OpenAI moderation" description="Use the OpenAI Moderation API to detect harmful content across categories including hate, harassment, and violence." >}} {{< card link="../bedrock-guardrails" title="AWS Bedrock Guardrails" description="Apply AWS Bedrock Guardrails to filter LLM requests and responses for policy-violating content." >}} {{< card link="../google-model-armor" title="Google Model Armor" description="Apply Google Cloud Model Armor templates to sanitize LLM requests and responses." >}} - {{< card path="/llm/guardrails/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} + {{< card path="/llm/prompt-guards/webhooks/" title="Custom webhooks" description="Integrate your own content safety logic by forwarding requests and responses to a custom webhook." >}} {{< card link="../multi-layer" title="Multi-layered guardrails" description="Run prompt guards in sequence, creating defense-in-depth protection." >}} {{< /cards >}} diff --git a/content/docs/standalone/latest/tutorials/_index.md b/content/docs/standalone/latest/tutorials/_index.md index 2b9daf3d1..326ea268b 100644 --- a/content/docs/standalone/latest/tutorials/_index.md +++ b/content/docs/standalone/latest/tutorials/_index.md @@ -30,7 +30,6 @@ Learn how to use agentgateway through hands-on tutorials. Start with the basics {{< card link="tls" title="TLS / HTTPS" subtitle="Enable encrypted connections" icon="shield-check" >}} {{< card link="oauth2-proxy" title="OAuth2 Proxy" subtitle="GitHub, Google, Azure AD authentication" icon="user-circle" >}} {{< card link="tailscale-auth" title="Tailscale Authentication" subtitle="Zero-trust access with Tailscale" icon="globe-alt" >}} - {{< card link="ai-prompt-guard" title="AI Prompt Guard" subtitle="Block prompt injection and PII" icon="shield-exclamation" >}} {{< /cards >}} ## Operations From 7084904e0dc080c3916b648cb25bfc67204bd5a6 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:26:54 -0400 Subject: [PATCH 05/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/agentgateway/guardrails.md | 2 +- assets/agw-docs/pages/resiliency/connection.md | 2 +- content/docs/kubernetes/latest/llm/_index.md | 1 - content/docs/kubernetes/main/llm/_index.md | 3 +-- layouts/shortcodes/card.html | 2 +- 5 files changed, 4 insertions(+), 6 deletions(-) diff --git a/assets/agw-docs/pages/agentgateway/guardrails.md b/assets/agw-docs/pages/agentgateway/guardrails.md index e6b5de479..9a4830b79 100644 --- a/assets/agw-docs/pages/agentgateway/guardrails.md +++ b/assets/agw-docs/pages/agentgateway/guardrails.md @@ -26,7 +26,7 @@ By applying guardrails to both input and output, you can: ### Support for guardrails {#about-guardrail-support} -{{< reuse "agw-docs/snippets/agentgateway-capital.md" >}} includes built-in [prompt guards]({{< link-hextra path="/llm/prompt-guards/">}}) to reject, mask, or pass prompt data through a moderation endpoint. +{{< reuse "agw-docs/snippets/agentgateway-capital.md" >}} includes built-in [prompt guards]({{< link-hextra path="/llm/guardrails/">}}) to reject, mask, or pass prompt data through a moderation endpoint. However, you might want to bring your own guardrails for situations such as: diff --git a/assets/agw-docs/pages/resiliency/connection.md b/assets/agw-docs/pages/resiliency/connection.md index 74d62662c..95b37c3dc 100644 --- a/assets/agw-docs/pages/resiliency/connection.md +++ b/assets/agw-docs/pages/resiliency/connection.md @@ -243,7 +243,7 @@ EOF Manage idle and stale connections with HTTP/2 keepalive. {{< cards >}} - {{< card path="/resiliency/keepalive/#http-keepalive" title="Keepalive" subtitle="COnfigure keepalive connection settings." >}} + {{< card path="/resiliency/keepalive/#http-keepalive" title="Keepalive" subtitle="Configure keepalive connection settings." >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/llm/_index.md b/content/docs/kubernetes/latest/llm/_index.md index d7b145c85..8fd7bd8f6 100644 --- a/content/docs/kubernetes/latest/llm/_index.md +++ b/content/docs/kubernetes/latest/llm/_index.md @@ -21,7 +21,6 @@ Consume services from LLM providers. {{< card link="prompt-templates" title="Use prompt templates" subtitle="Static and dynamic templating, variable injection" >}} {{< card link="functions" title="Call functions" subtitle="Extend LLMs with external APIs and tools" >}} {{< card link="transformations" title="Transform requests" subtitle="Dynamically transform LLM requests with CEL" >}} - {{< card link="guardrail-api" title="Guardrail Webhook API" subtitle="Custom guardrail controls via webhooks" >}} {{< card link="cost-tracking" title="Track LLM costs" subtitle="Cost tracking, spend monitoring, usage tracking" >}} {{< card link="observability" title="View metrics and logs" subtitle="Token usage, prompt logging, LLM-specific metrics" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/main/llm/_index.md b/content/docs/kubernetes/main/llm/_index.md index d7b145c85..89c08fbb2 100644 --- a/content/docs/kubernetes/main/llm/_index.md +++ b/content/docs/kubernetes/main/llm/_index.md @@ -16,12 +16,11 @@ Consume services from LLM providers. {{< card link="load-balancing" title="Load balancing" subtitle="P2C, intelligent routing, automatic failover" >}} {{< card link="failover" title="Model failover" subtitle="Priority groups, automatic fallback" >}} {{< card link="content-routing" title="Content-based routing" subtitle="Route by model name, custom fields, body-based routing" >}} - {{< card link="prompt-guards" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} + {{< card link="guardrails" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} {{< card link="prompt-enrichment" title="Enrich prompts" subtitle="System prompts, user prompts, prompt management" >}} {{< card link="prompt-templates" title="Use prompt templates" subtitle="Static and dynamic templating, variable injection" >}} {{< card link="functions" title="Call functions" subtitle="Extend LLMs with external APIs and tools" >}} {{< card link="transformations" title="Transform requests" subtitle="Dynamically transform LLM requests with CEL" >}} - {{< card link="guardrail-api" title="Guardrail Webhook API" subtitle="Custom guardrail controls via webhooks" >}} {{< card link="cost-tracking" title="Track LLM costs" subtitle="Cost tracking, spend monitoring, usage tracking" >}} {{< card link="observability" title="View metrics and logs" subtitle="Token usage, prompt logging, LLM-specific metrics" >}} {{< /cards >}} diff --git a/layouts/shortcodes/card.html b/layouts/shortcodes/card.html index b67c22ba5..2c321ad74 100644 --- a/layouts/shortcodes/card.html +++ b/layouts/shortcodes/card.html @@ -3,7 +3,7 @@ {{- if $path }} {{- $pathTrimmed := strings.TrimPrefix "/" $path -}} {{- $section := "" -}} - {{- with findRE `^/docs/(?:kubernetes|standalone)/(?:latest|main)` .Page.RelPermalink }}{{ $section = index . 0 }}{{ end -}} + {{- with findRE `^/docs/(?:kubernetes|standalone)/(?:latest|main|\d+\.\d+\.[x\d]+)` .Page.RelPermalink }}{{ $section = index . 0 }}{{ end -}} {{- if not $section }}{{ $section = strings.TrimSuffix "/" .Page.FirstSection.RelPermalink }}{{ end -}} {{- $section = replaceRE `^https?://[^/]+` "" $section -}} {{- $section = replaceRE `^/localhost:[^/]+` "" $section -}} From af2658c4e910a998ffc791d581f1e76f191413a2 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:29:39 -0400 Subject: [PATCH 06/15] Added exclude Signed-off-by: Kristin Brown --- .github/workflows/links.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml index e4e993eac..4900f8899 100644 --- a/.github/workflows/links.yml +++ b/.github/workflows/links.yml @@ -64,6 +64,7 @@ jobs: --config docs-link-checking/lychee.toml --root-dir "${{ github.workspace }}/public" --index-files index.html + --exclude public/docs/kubernetes/2.2.x --remap "^https://agentgateway\.dev/docs/ file:///${{ github.workspace }}/public/docs/" --remap "public/docs/observability public/docs/kubernetes/latest/observability" --remap "public/docs/resiliency public/docs/kubernetes/latest/resiliency" From 78db03af5f0b78d4587f5f41826fbcf9243d2b8f Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:32:02 -0400 Subject: [PATCH 07/15] Fixed exclude Signed-off-by: Kristin Brown --- .github/workflows/links.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml index 4900f8899..036b1f62f 100644 --- a/.github/workflows/links.yml +++ b/.github/workflows/links.yml @@ -64,7 +64,7 @@ jobs: --config docs-link-checking/lychee.toml --root-dir "${{ github.workspace }}/public" --index-files index.html - --exclude public/docs/kubernetes/2.2.x + --exclude-path public/docs/kubernetes/2.2.x --remap "^https://agentgateway\.dev/docs/ file:///${{ github.workspace }}/public/docs/" --remap "public/docs/observability public/docs/kubernetes/latest/observability" --remap "public/docs/resiliency public/docs/kubernetes/latest/resiliency" From c6e438a8acb41360a0c53c3093c99edcc63ed33f Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:35:46 -0400 Subject: [PATCH 08/15] Anchor fix Signed-off-by: Kristin Brown --- layouts/shortcodes/card.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/layouts/shortcodes/card.html b/layouts/shortcodes/card.html index 2c321ad74..550f9d049 100644 --- a/layouts/shortcodes/card.html +++ b/layouts/shortcodes/card.html @@ -9,7 +9,7 @@ {{- $section = replaceRE `^/localhost:[^/]+` "" $section -}} {{- if not (hasPrefix $section "/") }}{{ $section = printf "/%s" $section }}{{ end -}} {{- $link = printf "%s/%s" $section $pathTrimmed -}} - {{- if not (strings.HasSuffix $link "/") }}{{ $link = printf "%s/" $link }}{{ end -}} + {{- if and (not (strings.HasSuffix $link "/")) (not (in $link "#")) }}{{ $link = printf "%s/" $link }}{{ end -}} {{- range (seq 10) }}{{ $link = replace $link "//" "/" }}{{ end -}} {{- end -}} From 966ae653921ad66d55f6e81af25f084497d60b43 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:41:20 -0400 Subject: [PATCH 09/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/traffic-management/traffic-split.md | 2 +- content/docs/kubernetes/latest/tutorials/basic/_index.md | 2 +- .../docs/kubernetes/latest/tutorials/mcp-federation/_index.md | 2 +- content/docs/kubernetes/latest/tutorials/telemetry/_index.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/agw-docs/pages/traffic-management/traffic-split.md b/assets/agw-docs/pages/traffic-management/traffic-split.md index c602c3a73..95c1accf9 100644 --- a/assets/agw-docs/pages/traffic-management/traffic-split.md +++ b/assets/agw-docs/pages/traffic-management/traffic-split.md @@ -93,7 +93,7 @@ This example demonstrates A/B testing and canary deployments by distributing tra |Setting|Description| |--|--| - |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/#deploy-app/" >}}). | + |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/#deploy-app" >}}). | |`spec.hostnames`| The hostname for which you want to apply traffic splitting.| |`spec.rules.matches.path`|The path prefix to match on. In this example, `/` is used. | |`spec.rules.backendRefs`| A list of services you want to forward traffic to. Use the `weight` option to define the amount of traffic that you want to forward to each service. | diff --git a/content/docs/kubernetes/latest/tutorials/basic/_index.md b/content/docs/kubernetes/latest/tutorials/basic/_index.md index ab5970ead..b99e2f121 100644 --- a/content/docs/kubernetes/latest/tutorials/basic/_index.md +++ b/content/docs/kubernetes/latest/tutorials/basic/_index.md @@ -262,6 +262,6 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/tutorials/mcp-federation" title="MCP Federation" subtitle="Federate multiple MCP servers" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md b/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md index 032516f54..0f89ad56d 100644 --- a/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md +++ b/content/docs/kubernetes/latest/tutorials/mcp-federation/_index.md @@ -306,6 +306,6 @@ kind delete cluster --name agentgateway ## Next steps {{< cards >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Secure with JWT authentication" >}} {{< card path="/mcp/" title="MCP Documentation" subtitle="Complete MCP configuration reference" >}} {{< /cards >}} diff --git a/content/docs/kubernetes/latest/tutorials/telemetry/_index.md b/content/docs/kubernetes/latest/tutorials/telemetry/_index.md index be05ed6d0..2ea2b9570 100644 --- a/content/docs/kubernetes/latest/tutorials/telemetry/_index.md +++ b/content/docs/kubernetes/latest/tutorials/telemetry/_index.md @@ -309,5 +309,5 @@ kind delete cluster --name agentgateway {{< cards >}} {{< card path="/observability/" title="Observability Reference" subtitle="Complete observability configuration" >}} {{< card path="/observability/otel-stack" title="OTel Stack" subtitle="Full OpenTelemetry stack setup" >}} - {{< card path="/tutorials/authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} + {{< card path="/tutorials/jwt-authorization" title="JWT Authorization" subtitle="Add security to your deployment" >}} {{< /cards >}} From bef06d4c6d986ff7c28a501630db6ea6cc6809f0 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:43:53 -0400 Subject: [PATCH 10/15] Link fixes Signed-off-by: Kristin Brown --- content/_index.md | 2 +- content/docs/kubernetes/latest/llm/_index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/content/_index.md b/content/_index.md index ed753d15a..1dcd21c19 100644 --- a/content/_index.md +++ b/content/_index.md @@ -649,7 +649,7 @@ setTimeout(function() { btn.textContent = 'Copy'; }, 2000); Security
- +

AI Prompt Guard

diff --git a/content/docs/kubernetes/latest/llm/_index.md b/content/docs/kubernetes/latest/llm/_index.md index 8fd7bd8f6..89c08fbb2 100644 --- a/content/docs/kubernetes/latest/llm/_index.md +++ b/content/docs/kubernetes/latest/llm/_index.md @@ -16,7 +16,7 @@ Consume services from LLM providers. {{< card link="load-balancing" title="Load balancing" subtitle="P2C, intelligent routing, automatic failover" >}} {{< card link="failover" title="Model failover" subtitle="Priority groups, automatic fallback" >}} {{< card link="content-routing" title="Content-based routing" subtitle="Route by model name, custom fields, body-based routing" >}} - {{< card link="prompt-guards" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} + {{< card link="guardrails" title="Set up prompt guards" subtitle="Content safety, PII detection, request filtering" >}} {{< card link="prompt-enrichment" title="Enrich prompts" subtitle="System prompts, user prompts, prompt management" >}} {{< card link="prompt-templates" title="Use prompt templates" subtitle="Static and dynamic templating, variable injection" >}} {{< card link="functions" title="Call functions" subtitle="Extend LLMs with external APIs and tools" >}} From 7959edb056ae37203396cf5f157ce8e11b67885d Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 13:46:10 -0400 Subject: [PATCH 11/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/traffic-management/traffic-split.md | 2 +- content/_index.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/agw-docs/pages/traffic-management/traffic-split.md b/assets/agw-docs/pages/traffic-management/traffic-split.md index 95c1accf9..733540b54 100644 --- a/assets/agw-docs/pages/traffic-management/traffic-split.md +++ b/assets/agw-docs/pages/traffic-management/traffic-split.md @@ -93,7 +93,7 @@ This example demonstrates A/B testing and canary deployments by distributing tra |Setting|Description| |--|--| - |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/#deploy-app" >}}). | + |`spec.parentRefs.name`|The name and namespace of the gateway resource that serves the route. In this example, you use the gateway that you created when you set up the [Sample app]({{< link-hextra path="/install/sample-app/" >}}). | |`spec.hostnames`| The hostname for which you want to apply traffic splitting.| |`spec.rules.matches.path`|The path prefix to match on. In this example, `/` is used. | |`spec.rules.backendRefs`| A list of services you want to forward traffic to. Use the `weight` option to define the amount of traffic that you want to forward to each service. | diff --git a/content/_index.md b/content/_index.md index 1dcd21c19..ea8673479 100644 --- a/content/_index.md +++ b/content/_index.md @@ -640,7 +640,7 @@ setTimeout(function() { btn.textContent = 'Copy'; }, 2000); Azure
- +

JWT Authorization

From daecf7f50273cae4efad1bbab174f12ab8485f4f Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 14:26:30 -0400 Subject: [PATCH 12/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/landing.md | 2 +- assets/agw-docs/snippets/agentgateway-setup.md | 2 +- .../snippets/agentgateway/otel-prereq.md | 2 +- assets/agw-docs/snippets/otel-prereq.md | 2 +- .../1year-anniversary/star-history-2026331.png | Bin 0 -> 104777 bytes ...25-07-14-a2a-mcp-gateway-api-0-6-release.md | 2 +- ...getting-started-agentgateway-llm-routing.md | 2 +- ...gentgateway-llm-d-gaie-inference-serving.md | 6 +++--- ...-03-25-agentgateway-one-year-anniversary.md | 3 ++- 9 files changed, 11 insertions(+), 10 deletions(-) create mode 100644 assets/img/blog/1year-anniversary/star-history-2026331.png diff --git a/assets/agw-docs/pages/landing.md b/assets/agw-docs/pages/landing.md index 9fd26e5c0..d85d86ede 100644 --- a/assets/agw-docs/pages/landing.md +++ b/assets/agw-docs/pages/landing.md @@ -84,7 +84,7 @@ Enable secure communication between AI agents using the [Agent-to-Agent (A2A)](h - **Authentication**: JWT, API keys, basic auth, MCP auth spec - **Authorization**: Fine-grained RBAC with [Cedar policy engine](https://www.cedarpolicy.com/) - **Traffic policies**: Rate limiting, CORS, TLS, external authz -- **Observability**: Built-in [OpenTelemetry](https://opentelemetry.io/) metrics, logs, and distributed tracing +- **Observability**: Built-in [OpenTelemetry](https://opentelemetry.io) metrics, logs, and distributed tracing ### Platform Agnostic diff --git a/assets/agw-docs/snippets/agentgateway-setup.md b/assets/agw-docs/snippets/agentgateway-setup.md index 07988135e..0857f6713 100644 --- a/assets/agw-docs/snippets/agentgateway-setup.md +++ b/assets/agw-docs/snippets/agentgateway-setup.md @@ -1,4 +1,4 @@ -1. Create a Gateway that uses the `{{< reuse "agw-docs/snippets/agw-gatewayclass.md" >}}` GatewayClass. The following example sets up a Gateway that uses the [default agentgateway proxy template](https://github.com/agentgateway/agentgateway/blob/main/controller/pkg/kgateway/helm/agentgateway/templates/deployment.yaml). +1. Create a Gateway that uses the `{{< reuse "agw-docs/snippets/agw-gatewayclass.md" >}}` GatewayClass. The following example sets up a Gateway that uses the [default agentgateway proxy template](https://github.com/agentgateway/agentgateway/blob/main/controller/pkg/helm/agentgateway/templates/deployment.yaml). ```sh {paths="all"} kubectl apply -f- < zx{+?aGfI4a|L?u77vb62Id`8spEq(cVn<+SU?e0YM;?gZQy?LMg8#|xP#gqLM1CKV zCn2FCd2mle=_%=W7kMZ3kM*)YJ*YUfb1Gj|z0P>V9eN9G(z{WbEb_JW^^vcOZB*Wm ztd7^UU0ax;rFVFAUrNgSHT1Z={8eV=wTP*2XKhzIyKL7T7KI8v895q(|GI5!Ki)1h za=4m?WZ2yK3fl%Ke9$L>!-kxbCB07Jvw`Oih# zWh<$XtyzEpz5T*vs;uik{0M&g`!gH|I zcL}gZ(#vXE2Zop)h>x7hhQ z!W?RR6F^TzLkfwPr#nPI?E&w1k9382{`N{gDzM-Xop=s$fs&ZJ#{aMd0r`0}D&f_| zeMH{ou{fS2pD1*u%m`-O!SYVXUn-znAfbQd@pS<}WZ3sO$33w63nyaruZ-;Mlt+S6 zl3Y98DDpptT%!O>P(+3V4wW_UBW9DRd+uLaH7NsPYAa9b|4F z+qOyd7A(NB7)7&1GX57sD)9mm!FwdAn}?{xy&H||RrW3TauK1q%UIOG6U=@Dgr~IX z7O}XYH@9rWUt@s4$N_S{khq_6mgB!4k)Zl1>ws##ehtLt^G$}!OVNwE?u_T%5%YkcDm|YB{t^htf-7mw z-d68vnf=ZzpZkK^;%YrD=EZ;5`v5FJ&mHHCa`PA2PvTp z_M`e;*8S9;v?&9wXk1cD*xnmMO`7~4fM3UeQ;dBiwKVVN{*NKpItBHT8gSOHL?(9M z=f;moSA2F+qvirMf69}*O#w^+q?2I}&@G%WgAg(WGntwr`*!$;TpuojtHk7jgxh{Z zF()8Rd%F3U0$|$PyGs2cf?q`}^9W?_*uP{1t3GfcjvbH70Z=5I zv^}sN4+Q2CY0VDb5luk0M3K*pnYPb-LWS|(mAfsbA-;hHmtEXPbRI(d|3BJTLA+Oe z7+d$$VrvK7$zGYAt>najLfd~IYT5pqH;^R%UlIPz4!ByNFIH*BQMCU5;mKJb8MZ}! z|60B8^6q@QsMr&2a9P0aErsDFP5u|)^T5QyKa|{w1jkkWkAM+5|MfV)mhX35qtSkX z8Jm+j?OyQriFXCsi*g4@OgE&H=^xt1;Q+}s-q{M1RbAVW+`pd_Rlejo5H9I9_XdXj zXCN@#kftru4zwTKiAuVj$equ{eMkiV)kQWI;$`wl=>_5vH12;LA|mViE&yDG^zTdl zgC{EPP~DE7BMe6i&TY64_1(zREj~v)pprq)Y^AAL%K!RV9puSVqiTpzjqMQ>ilq5VL zrzxeP@INQGBPt>O+tg+L4dmj25Q2AC1%97Hu(!_5P(K~A6j);e7{R6N(FtBHS$bXim_^$4b z-?QC&>t~>6zP=(;ptr6Y;r@qUb;FRkZ8=3f0wR8jUG&*5xiK4%jDM_(=~WYdts@L ze-}|^PDsYdzdNDsfd$fY(+#)Cs93bzKm2ziW^3Pecu40K zbupHJ7Gt8d-n*cqN>5_S_HFf@=p}23`8a?;PmnC@%0J>mME;^Kv)QpjQHBQR_QAGw z8Y&A`XSs!nDbOSAOE&wz^6$@C6tM4&@~0N}Rz7BO z^?v~HzgTpC3*cFxCpDRRyJiJA#Ojd!5|4UIl;P8tXozwZa0(;z58;V?c>NYJ52S14 z+{8ZMcBFXpkQ@&rvsa(NFZgafI~F2lfvEcXEB=OngV$uHmz z+t2B(eK7|i_D7>yFt7FpTssmmdbMZ*?1fq)irePthQB@m%9K*>uYE<7fCUyyz9b|7 zJPOF%@tyDgJ*?v7>$}XjJVqP%9-zBC`Yz(mM`Zr{Q@~J-{QCUlFYo^x$Ltw4637Fv z0Nr07Z3Pw}u0#C)mq($HH;1AI$Io5aJs8DCSrvM#vHRH&gY)V{=EN%|*SMLkxPoqo zmt($|`zkR*L0RVp*nrU?3j3v674i8V6L!@`?UJnZ%}8!Ekm-*4GHNEV_V zeB|~@V=%rvHT|n(;!hb<<}u;5uTga0+DEaE8T+&!NRJY4h6EM_G44jt5M3|Q0Jd#< zi-#f@_k=&W>51jo9>3x`qqv3p@Gty{=a!(?P@SbOYf!PBmxg_W)dF??oYtn4w5&(2f%nMlCJ`^LDgDUftv7mH^ttk;@07x= z088a7uRhk&dU2pM7Z#_qms$Ew%oC*-pFgmpU*8~8f;>M8ma~>~KFeyay{Y!;y|95^ zUK)<{CAh9m&`wIMJe|O`9@ROFTOJIFom~slbzS};T$Pie?%!AHU3oKeZKhIlbzuUl zoLIVEsBTjqxh~}8L-TrWb`6PrDB!yGRJhVVHq|bepz5x|1rrzwwH>eGsm-Y5D(o!v zVK95)6_gm;gkAaZG$^6Wp2${esPRdl;&P#gz765E-=Qqq&Nt#NWrj&enhIrAgtzJJ zh9rF8{+~k&hfZGp1hNmURbJJfUoo1d6mB?Cx#X^lCQh^)Mc}v!*BZi|M&o-^ZB&=O zmK>#I))$1BE2rEacIxzWX{s6B+5wI*we>O?ZE%{9u#l&!A2ngxz}(ebP$&25C< zvXyEzwrICAZ1gdt$t4+S)pfI=)p`0En_k0T{O((g(5kt>RNn0PQlD=ogJb9QPspSh z=^*6^-Tu;CQ^Dv*d)66v31kZC@qSy5m7G1PC6yp5MlEoCy7{p4YCYF@Hho$9^UT8Z z_VmGI6yaIWfO)q4scLgOMJ@ZyhhqnQzm93-yPJ-e=(eTba5awDbWW&7Ul&Ms@%AyS z2{i$DrkPkYO>@j=ZS-s`+!!O^5;-#J?i7zGu^CieO_!Sf5dZn^E3}~?8^*C0MXu3- zxA5d{FJM`Ur9Jk7X;W9<8*cvQQee5mgS-7d@AJsIE&Y1swNVo;*x}F3oqqr-LL)Vw z=FtUq>nrokbX{M8^2m8s)zM-VSAE^qN_fZMc5FABjP8uJnO+`S9*VFs3bPOFdfMl` zP)yF$Z=q=YCy#5CwomYw=aF6OU55b_k)(gR6D~17fkb$(*Ccl@z;iQu$QP=9M07~! z7Fuw1&BUuKUd2^^!&=O9oT?qRT~$7nc66+!dUb6gp3kl@bE2S6=&L-fY(|I!y&0F* zW;|;V`icCJqr7I*Kd(fXJ6x$Y?6j>Fw5Y#NYvE8+YuuG%Pesw(QhRL5ET$h=Elb$% z<)KcEh+4r#t!uOMg`4Xs@u83m*KCc6u_t!eK7N~iap&>WvT=Y)22k_T$-G&a#FjHr zuqZ>yw}YeU9{wafTyGKDSkhk|O-zx{iNP@HhgH6F z0aC;)0j@pfV8$r6R&!(4hD*7d1qpU^GW~*;>^cH(ci#&wBn$jOnd6dEe-6 z<2?ySp3jKPufw|Jh()uq>JdXRD}1}512DWdG#Sqs zD-BCl>TBnx9)-Uk=GC`+9p*nkYEKG(w*%QNDv$z`P6;lm8Yyg()vZ2k7_oArIdVP1 zC+x&yjx*n!!fonD&2v9xh@eYlpbLG`er;l*kcqXva>p2l> zTa)^ZGpF26%eV)47@Gq}qD)Ks5>pCH(eOl)p>wa!K00vl@K@orU&mtXwdYUgcvx|C z$&&tbp3E)-NYdvn{eCBH_E95z(@qvTV^>>pOt=%4FB{G#jcS@k;-tPoD6jg>bI-GP z9Bz3*tJ6j;-fZ3goD;Szhd)1PkLjF<5u2r9p6JL-(RN#($FDDRXom1vcyPmR>pmL@ zK z>?{3VWPtbp++dX_cJXJnt|?R&#nmivGtDgRS!UG)<%*VJA;-WTuL#$l!!@*;)gnT+{UUAdWpb9HyC->!js{V*gGZP76v z74(@TERg!<;3s`F$E{wP%51xG}pkwGPZ?tzg}PPxi+t>pBVI2z#2`4==*8ci zH$)l2<1C{{0yki{$jIWzu?z8<)n3$W2~>0V<&|g36s5pw)>Dv=n>+pV+{9__$KumA z7X)3gGid4dRDH3DK>rp^D?v@0pO-?k#~_c~mMe9oL^=(jg9gL$o4|}*e@fSqm*nLQ z`Q-Gu;n`4_5sc3;^y+T}N(=ir0jKjW>#DZWMENQ4=9OryW~NL~qmPFjT4W7aZ!(^T z0Yg`+sg;?PpTQD13)g1UjeJM*BtKr3P9wU!42I^8olnFXBj;dJreRHeXpdmiAj50y z)}yq^rBB)Q)>g(+LP~R@nG{){))Uuj8O;#Zj*Y5j z&(Xq7)13UpImhCH)tTxnx`h_cj~*pByjn$|2G-&$lgoo(Y-U$lu_Z?#Af={3fU;C^ zghZ!maV7BdZm8W*_VpfnvJ6y#$EaE3n6hu**b7lk6OLv{&g_d%>+2uA<7gSzfXc$1 z8{9H-)jvO@BgPRU@($HXO*zT4X`bFK7a4?HvRK>BJbqqaEIK58qwBF_57O}~KG8$x z^ZAjx*p!5o2DENXFLH6=lLvo!)EwAv;uiI7T|4`=>d1HMJWtR48nR0S6)&@08N z)gPKxQZ>Rw#(G~GrLq;pVd83Dus14@0O-uVkMeW4VeHLts@d?x9Xh9|o@()CR%}m#0cFPR zyTBWjCN*`7hjwZDM!xcFU`r%P(K(9$c{zkkL>Nl094iTfm`XRet&i!BvR&3Kom2QvzUzwx+~ zv_2t5BfL>0VWK20XV!Cfa{;I}%BoH8D+}7659|ama>
=ulP4dAOV7f)phrX4ZCa za-G}O=h=@zLq4Q5N1cDf#J$FB)6GVyJJsAxkw3F1qv7zW!cA9aaFu$NeS$m7pe{hU zN?MIY!y&eue*O~C9%6GehG zhO=W&%xG|oBV;y2l$o{uOofY>*EV0gs zbVb=PwyZ?Bs&QG6x=Vh&ew8e^?D4F7p>d=t&Kk+CMAaIBPX`V`2r@FOhQ_Hm0@wM z$?m6mqftk#FyDQ-5Sx~ECpt~T>iZ!J+?y8lR`(@wGQozBnk5s5mHwtfJQjq^^oBBA zw@GVq*pah0>v%g9MA!sE9A2* zI`AXzp`*&o^;`*vtQBl8c1AH?sokvKhmNQ8vTS(LXu|`a0k2F#?7#`$L|$zZ5L1zl z*~Yo223}k0nsPNdc6%Ce?SMvvXUzE#H`pNfh&C|3cI4!&LsO}Q7cR79y>(HHEnwXi zyE=+~R!zZ|rr-|0*-N<_QTQdbbu3ksberxf`)Fu9m)bO$t^RAVo)Ba4G6`6bkA4iG{3aXZWjOPy(G+1_h@K8is z#Ji8)8Vc1%zsULZl3t@gtOfTno^k!?4UKf=by^nIYcXZN*KOF7v%awUX^3BwM9E_N z;xWOxuM8t5Q_C1*99VSiExr~XjJeIQ`atruv8V~)fge^KxAAOZOvp5G!7N}7!U}!E z{zMq6pctP`dK)@6*XEj~Q|K12RKc6*0Q~F2wCqc2q^4bBq<0+OPs-Ok9ZQd7c5O3Q z>~hRJ%D|u1L8gfmg3~_*0&&CJ%J0@xWf_y3c|syupJQnHaO3m|%31VD^M2~1XxEjI z*o8(}Vd&8Ec2$3?^@X_tg8kBYldxSv0kz=cb>>Y&DH}=ceXCYoJngP4$*frf>PijU zcMJGcgF?Kktkq+3-{D7H$25Ox;4Jy;o4)_ylEqD3sWv8rY+B7#>$dqSa?cJ%cn^j{ zf?zM%SVlADP?v<&qKeRlo+}2_S39 z!1=^`#1mAnNs1@}D{IkmOE`tFiuOKz^z_TAc=b=T+II5Ozb|3K*xs4@W>oS7pjYV> zb^8ZfaaG)vpFCXRn>xAqWApTV1zUI%Rm<8HGA+Bz+rB>J133xjxq2}kNFaJSz9@T2 zee$VUD9+p+xCqMvj+5r?fga+~3NZ%fzlo^K>mGIO&ZZ`G z&Fe#WNqp)8JD0iS)j~gE2UM*+!ApnTbPF`~Q;+0=xd;KT zKPIaE#fxqg6if9Ir7${KPn8XxS(qS+iZoA$*yq<|`p?af#nbh)*7J?ctqL3*PjZ>7r5@hf28ejcUZtnwW>n;p%%C6VxPfV(5Li6FyHv-VYd_X{nQD5#rpr#b5 z22`q6c+;ivOqA1;Pc5`aAZb|H2qFAT1v`1=>7dlzVf4EBgTwa^qOt z&8>lk7>cM;i|;m>K|2Xc|Eph%?qDrGUqWy8c&K2j1E(^wmN%=>w<=wO;lidlb?31b zsnMs>rZrGVda`${+!*MW?HjvNnlQsasrT4Y!kQ-%e(kJ)dl z>1aqejP1p2Ng0fDgwaW=LpXN+I?e65*^HD8V+*N?+^C``!>G|{Ax9W zb-ecM(ZmAz9%^yr8LJpXbW5aiFA!9wIXeStUL}$a2D3zx_>~}uYL1i~xDfx)2Z#$> zpHCNGfJCszSD^Kw6CmjrV{heq^Ebs`2{ou~a5$K7P5j>6a}a=VX8c6?w6@rW0x>ExncRPR2eE5u_p z89eIRY+er1uUC;LtMBE_HAqUQ_csLJa+njJ1zD4>aq}`ChU#N&tbWmA73&@_A2#g$qp5GQ7#1Sz_Vd;DtffM zJn1)TCC1rQ^s5`aI_uY9iE4`!H<{Krm!~e&d5U#)T=ddyMse^A`v) z_M)307z@$)G7$7+71m9>vA&@Y&>Dl$ik~V->oUSAo^Eb=gjQ>IRIO6-2J5t24{|a4 z%LvwEXvHf|aHQ&)K#tg@QjNaj$zo*{5sry-qNo*ck+z6>p9!e36@W1g9gWISFyAQ+ zkf5G|GLCoa(|Qdeol#Dd7ne57%xBmIX6lpi%c%_Gt+`iCR=bzXItIVPuLel8bMY8; zTrhGmPU-pcB7e602H(O)%J>E;Q=9)GTV0m)nU|7;jgpphXXBmF1C5Z2dB)egi-|BLHFU9;G7)4b@HDkZrDR|2I0j{ z+nCyyxhk5~u$CdQ#m3YR1o_dYiEd}OkU~m9lG%{Tw5<6S%?aQK+THiWw%99Ms}-vv zOFgBgB%@0;NFQ(d9?ZFqugxe`7coW(DPInyzNr#yE%Y~w5DKygrO)Ohj0J+W3-5lC z%+1tuT28q8=85_(U-LOvy|G>TtY+!con=2Z*N1}^ewrx`rFim}jSn%oriLuKR01;L zB(XWK*FSHf@rynD9XW1lEvK~XCUM!5s#q6j9xwS0JVZZ;7YArUQwDuB{fX*E3jc`2ysQ$2lwTe7<*8(g?I z$*BWp7W5?EkfgHX)^HT03Z`Y+6Kxd!tdv^MzKm_Q=)kcyP+saV=QH(X6!a+Dq>-~5 z7|6iH^tE5L2^q*-peDQNDDHivZBmnfS4G?oS-Tr5G%P~c=y0vM+je{xgM)_~{ zt+s>2(sD6pkZvs&VhJ)^0Swkfq}Avr0Gm&c1oV2Go*z4=-2+W}Iy@|HHg`Nta$4a$ z(W-uem}yuw0%LXw%KNUV8LQVG=__PPt7R=R{hPg-uL%cRFm?Ex{Nw=_LV;N&U1R=3 zQg^V2`3mzP4~Cpyo#j+umNR=(BXF1xWJ=Rny%_}w)K`0e zZ($D7#)oTO6dJRVaHRJRRjT5ny)sAT^=_RFRbp09;ZKPw>LXUO027)XijIQB{6t2h zOpLvLbD*gY4uboYTBmSe><-9oR60x-lZOaRRa6ElC08L#@uolbx>iTo>JpM2 zhX%LrzKaUX&%%h#Sc~hxix7MB^hnjOD#zE{PQsouxGw#|Pv(sAnWZ!S>9Ne6kP>09 zj&UBtW_loobT?*#3=IGhwvCjD)D(v!vSXcv$Df$r$`p&RDVthBp#1+zZ?XnBjrZ)G<&XfN`64 zDHVS5Q0F8W98xvYMe$T8DeDmmUqRfnA@OXnvl>B4tF8(?ovDy`7$R5S!k#HVLvp<- z^}}epU86KE#=|O~Sd@^I47ZIx?-S82IhPTcg8> zmxid%SrgdX9#B(_xh_0Ye!-sYf=SCPsCAkYu1{Eb8t^H^kNV&O_0%4|py4K95DA8J zrt81PQVNBZLfKft=y0SS(D3Q&~;4b)&(v$a@cQ{X}fQSt~|E*;Gqg4Qv_A$XhXE*HA%Q;ai5Ps&74Ps z`4Df3b$T_QnS+D~KOiA!gagrp*DU&HY*{^xT8GmZmZyfs8B=5yA%q-{4$|R-DX329xEjVSArybF35~H z#YD5Das0wia)PR&p1QH@*lsT15Tx3)8JOksloPp1@gSFgvmL6TGn+Jx!B57jXSZ+k zVis7k@y3b5Lc^?N1iqTcB-x(-D@(q0&|2*jaM*1L~pFJ?N- zl_%pXm&20mLxwkW-{37e&=6&(qym5W#_@Yl0h&*h4*3vIP4mpUB!ML36hsn1ZrzDMHIV5c@kc&LPCtttJ$tp z2(}&4G8)7li3v5FvCR8Z%E{gaGO9kO!rvqoMSBc$AB7Dpe*r!dNcSGYX^ALlCocr? zcf(F>{yOF+2frT;41v(oDBVh$CEAK~4G>bzx9awQn#GOHz*~#(5>?-&sq|VQIs@Jq zkie`dPb?+<+l_*wem!X=j8p2>*%q!Q9p*qs^NwV1Y~8abnojfguU3dCy-F}#8B?DbnngZVYss3Cpr@3_?@J9`ka`H?qHE%#`zKwkx zbxll4llXcxVIlnz^dL>%Y^^u_jhf3cp{L2-Xcu_Aa;nl6c@Ryk`5YA(*ZZaC$QHoe zOmqYY3msNdoK|>2kinBSYhrSaJqCzr=(e6LdzQ53hvTeK43! zT2LEHfA;;j*eAo7L9<~X-liICcTtb3XBH|Gjv^V?Zf~cqiGENPu}fr?q6NF&d3rnZ z|CEA7+!5Hsj*qfJCcoOfelZ#k4gsMxg%z+-&$U2tQlV7}??Uvwq5L z)49=07~B{O#(Ys8@=oR&%MzyPhT=kiy)pJGa7|lK?ZJT@XzfCen;Xrc4;91j|0uE1 zkg>I@8-+3VAms&N2V)g*>WK=Z+SP=!H?1*dcc>n>pre238RZ~A-r^X0Z+oPeZ%kzN zrqU~qssvk0pJ0e>;cC~E2kt(uAWr8@v{26MhDw1(w}{!VZcuQD!NhxfR95_oT>^z@GgMlv&#B)P_c+$ z<+;I(u~(oO76PK{(OwkcGV|c8P6~T0H;g}4;YDtaS^HML{~qX0J?HLz(s;n3ZLcNj z0gW7$tnY}~dIP;xUVVt(srx1Z-0ulcD#b1Kxb;wH(DNG0 zQDrseX9UK3#A)Z)9fF`-m5KR?cS@x3z+q{cGtO&hidU2txmx|GY5cBZb%Jzp6Uc&m zQyOAV$vZ*jGXLdrm}-$cO03$ZIhE0@kQgJ5IkAz%=V@GoKBrj&%^zvrOv2rk1(C&3PR)cLYGXW+MTI(kF-6Hj zzAO6QXKRJ6K)q3II$OC&8C0$L5)6fN@f9kSYEcTu4@Kp?Ox^1ZssQbe8kd=awi_Si zq)A7UliXWsZuk4$9S3IM2K1_S1AnB`JzbG%rG$)LUx+O1G@J1ay&`vJ>sV)tjC#>P zE*2H@WAk6wn&as_IbV;C%1w`g0`Jk4n4oJW-fdbud|mM7HnyS|k{CnhQ%-KnCV|n0 z2sWx%y@zmuN<4paw?e6=@3Ps;7$=M3R>sTOj#5TuruDTd$`Y}NN>7|Vyw7Oc;RSm$U?Wp^F z*CNuJFHHrzG=IL3+i2%Z<{HSFaM(>>oeQ|If<29=Xu78t9iWniIzWDqE5ZpVk$D|P zMBONU^oIht^b?6Ce4>|l;vV+ru=PnI9Z1QB&qIzA^VPqKKb!34SU{PeNfI#@1GIE7 z1}6{te+)u+jATTeK&nwXT|P+5=BE?<`iI46`JHcoPHag0PX^81cI;G$|KG03t%#u< z6e!{3hufb}W2*NZvlFBdN0Sgpkl1M{3(NhB4`>bAH(K{P8uUi19i{i)@i1H=opgH~ zC6@1u?*S;hZ;pC*8SVAa|2=DK7D7o2I4M6K#1m`z+vR=Y7gvTk`=H9s z-@TMycN_n=pL`bsaJrPf4HT7jU)UxR(68NNw&$#70ljKG^>#Z$wm-Zm?=G~HmqZv4 zyX8vXYwTc(;fFL4$N2tkcaJ#uaq%Te^rEVJ_+B=1cfnRK`30ap7SH8le0QI2ZGaFW zt=T>09iWHi#V@-X-_v$q_;;&jAYK|44@bp-hD-cCeCM~VQ>utzy9{hbAJc_ga;!rKnuG;};ii+T#HGyO*_h+?!gNAL~^Y0g($#eY7iW)Y~I{L}C!N>k)A{gzxVCyT@OLll6Y&x1CC~&yU5V__4j7pCWW((H+2YR$4%uq2M-gDwH~!rR04iR9 zcnmu5;c0j8mh5QtF0FrGLA=}A_5+vzg~wlzEZkjyQXtFv2i`Q|^ku~z(EbgY@j)N{ zuIlaz%M5h19*ir@%MFG9qbi`yySr4NZ~I%ML+Hm6tx1gcH9T=8Cf7;ecrbO zw~h5Klshni87P{`bEqbmrvk%%{D}|*P+^X4QOlT^Fl~8ScV>56W>(1DZWk+&ocF*2 z=_cz2Fy0UsN&;p){udG06gcG@mPP#nN#KUg7L$c$M55PtXd2yON1 zHb2=^0qEHtTDnhA;eyT@c%?t|^1Eq*CT;hFdxA)zq@q`0q1y3%18Jd^A``P-(bC<9 zJ5DrIzRFW@Nw~_9m{f0O1k)~&c4ho^Qj!0!yA7nuhVg-Lsp21G3I`4r{M~l@H$NrP z6=2A`FJgL4vI;9ggcjzl`O5AC-f^7p`u!J$oq_Qk+@Xi2S=>aVF43O%)8J;HZPCDh z`ZccL(&Amrd5F^P;MeZA5gcT^v%IZH!lDp=E9(p;b+z^DzTI4aF(_^7!Kv?piLrPk zHnaP+w`ZkVT)6*(4BL4GxYhjhPz%VFOIeP%u`{S9g1YUMU8a$s5)R1`=k2$+Q`ZK$ z-J-kx=Zc>OQh$>8DB~*P%}eTGkR{7*@*}a^ZvWaLlM$3& zQ{D_nuXZD^IWI?tx+5G3YFIJZO2cqA)nFBcy~6Oe=|s@_qWC5(A#_TJU-k}04P_p|+ALo_q%@$#7L~{TaUz_vwz-Ti8)BKX zZm~GoWdSPY>5^ReP2C`S)9+BQ7B0U#ZN}^;PRclzQvLOWIM$oTQG|JYDS7jqRrI1_ zynnQU?MKQiC9@ETXttJEkVy{@2ujHxaP`ti5NLhs@7zJ@DCC#;A~V!0sSl;pO#(Go35 z+W~rp#=D)Tu%aj9|4z;@dqA=cBNO6pw{X3vh$280*c)|BMVL=OIMzReOyq4+THzMV zycOeJn{v9^Cxa5X*g`CB+YZFLC@CcK1)_B&3g6}jO};m~s!`F3llak{UN@5bs8W!KNu_A*`OBeY%9 z&$REdN%y{_xBP0OVB#3&to-!sEW_Aat%zW)<(!y0|3n|H<>YP`iyDU-ZQAa^9N7XF zRWbZ(e}!!;b#Aq??xopx79T5uX4|VBv7<6~68e{#5;%v#r_z~(V$Brd2~`EH`C4Z{ zX~-h&=j8>E?#R80hf>Iq?J4X>65sh&%M9S4)}RHN)e(hKmY}5)Uwn|htq661Sg_y~ zgsG2mb=yzMsH1+k6bIYX()?B!7d#3oAnfpX!R5)=*#L=Xm%wkufi7jHMx=|zcqxx$ z_R9e_zJbZCgBwpcLdI-kHvCtXs~xqISF>HZf|M9gfkIQ+HL73WmM$e7#h&DvJq1WC z$j4V(&Tgzub;t-zJOFUN( zAH0das1f#U*-Cnvf4~D~+*Kh?pB#6P(uqnXaCMe1N?Ik`Zb9yo^DK)gIlsbjRlYqz zy8Qzo$gFc_V2od(60&?aJxtNNqE+RAehl`*Ou!nFK~-SH)l}>ztFQ!XX8{X?sn-P-oI zF9fVU&7Qp?K^*fy)2seK^a6ywf_Z>?p_SoCLu_-TFR^E7L|%OTP9lU5h_*u(=(?nb zHNvBeVUOuk0%w{&+6W2fsMu4Zl?p2XXd5eDq=}o0C@z=d$mH5<-#QAyx(1`Jf2l(Dv|^LH}yu*|Fz7xJ&1Ne~+A$ zkj9x`S-e9mst*730?9%C$oj20nCs-t)R?UqL89tngdlm36Zj{=U}T>J)}Hzkp9NYQ z)H&!l>LR_-sPu0z_Q(CUfMU51KE1ix*s zNBlWS7y@$~IwRQ9^O_Mi$^+)NAJ|5q4;c@}yQNQL_H=`8R~zAXJM-9QL=jwShaFq6 z)n{vlvN$1~d+!s8iv!k3)t@I4T+DQ5&t4Qkm=zK=t1AFh+N-|#!eeC9KvZY|v)+k0 z_O5#@^l4II%WvDM);3gA_CXhEzoP!1A16Q+Fn#*MyAaD96Az~cs=JQkj`e$c0&@*= z=tOVo#>$b)ThqxyY!p}1tGKH@;&P;49c9Qkx957LQe*0OPjf$64yRWhdX}UMYnB8o zFp{jcKcUx^$zN=%NoGT7{f|!ym<53>8%E-%8f$05Qi>+%3t%7}vE%h-S^HA7%hKDZG86~M9_J`JoPXXcp2T048~pCza5Z(DSyEhT|$7CvKNRp z9%a}B4IJK;4XOtyqOgO8x3fR-^(@<_7fz2uz4kRnSkY9uCYz#25}L4pEw5?i-Mxm(+%4}TbbEVm}59{V|hq9 z>#lub=(UF)3^wKG9Ed4;Fus)FoGuz4<~m68devwWOq}3B(Uh8xR2gG@qqqnDv*bd2a>{4hek_Rsl z_~fnepn7H$_@?1Zs-XFV2Fi$>tGAl~`Fs~AVNLog%^-$W|7otYA`1 zzydh@pi%W#dGIae?W~bZx(V@Mz2~5T8LL-G3%vgjk{dg52I@7%HG25@1J_gNKwK&E z_07v7Fw#|FSq|zf7GMg}QdAK57*Wz;{O}9Dp2L)DJ)7&gIqwsbb4;Ctj|u?W9}lV` zoW`TT5Ltp*hhq!N3g{wYDT1qD>Cwt>(0CWM7&66cCrdd2PTJ6+vSEnHDvxp`DzbEUPgp}JGg^GL($e0M!%o@LgrmwF5p zSxGzzWlLS-I?LL2_4li$Y3{MypXZ@9HLNKC(@LC3OK>U3PPIA@0sg0g_GUj?y=G_T zEVqkLW9l8&Dyd?k%T^Md9ZhSAZ%he+J)`hvo}QSvfmS#aR66+K!N<$(U>J%%kHQcn z-@oen+$x>SU(`{wPWF=-ej&-^ww6kh_PpfNb^QiqV!Cl;J!?Dsy&_ozPKh)S{f(n8yK#HTHjg8@(N4PO{iT4;%EU1DsLyi z91$LjQIeD1LNZa?*dldJfvtqr9#_l5VT2_n{hSZxB(?3~)6hqR9}{6E*!&9m7y!965ZOqM_Wp!FDVqQH>I_1w{fL~~*T=#d+p zbsJzvr9bC3#dKU1s4ZA(jM;_Rx1@qnPNDiT7>guqfbNqHVqHA5%RzHxO?Y!zR`b!D zOXk@Ff$8uTwG!gs6q^}zO;x5)8F_tUbG2u49BhOK`D4S|hU-CvYnQqCGcUtk*_-BAiB9GehhX2WWr;QrydP{#DY8gwSWz@YXhPdPKoHp;s1!j0a3c z9ra*-z-so_D<=FMPrvq2dFv_QDrXSqF7Vw>X2d>bsq}~I?Wyg_is29p7{r_M9J8yw zdrWX^n1RZ#aj}>V$A&$-K%;R_N3#3A|^{&JBn;OCLjQ0fL!>;%)}%frCr!bgMAN zI7>lD$dfN42;cXcla7VyplA^}Vmw($oD-(#e|g|8I-6KC4e^lrr5E5~Ld@7tLt=sZ z{f)QL%F-gcFtE|8StDtaX=9pPv2N~zBxn5q-A|k@vhYtS{RAkD)!t0;R7j#JQgK%& z)zD6Hnu)e&c*g#2Hy6;VeFLe%!`MjP?K3*k80(A8o2iJwiRZ$RqIe)&t6%^$U!l22 zS%CVvonyn*`|G4d3`QNJPy=F%v_|~AEVUr zMV_J2Cz|U|9xo3BWrA9Lca!eCrieCD*Yw$uf$X$){EsDHP-k>n7^hn^&jw9pA<9Dq zMsu^5LIOBherPNpd<(vr49UDi@ zQP*&RXlHp%esBU$^|}O`1iGmIoosr<#=KX+Oi%69W{0a&c7|EkI`wV2UY4_7w?L_U z0yqUWKQuZ`RX#IvFbO)@)uh3a*uI|R#9&YmQ~s$M6TUEy?26eG`8u&>wpdyY)~s0C z(&6hi11~;8-l7KvhcbB^>$o}; zs>nak1Ke8Lg_^3a^~u~R5BFRTXz#0o4PpvOM39p!ubJr_ zuOfeF3SBo$XmuH&==*b)I1yhHCJ-wd<}&k>@8P%Sy-Q#?{ji~)>8Vjrz4FYPrbQN( z*VJ+i@eH*_A~`<$ai}HQa+;_l2M$@6ZQ#}1Hq(b&KU(N={#sMO!UfbKK!;b0*SvN9 zFa4gInjwc1vGM^vupH-eW1XsM)Q4ZoXq(mb|u_^>bNy$9TcRf%rb>-2CgS!G#} zhhekQW|!@(hTF!ggrRS3++F?iqO2mP%PWRo0^18}$JeTP8@X1Kk5;GIt^!pHCC)U) z=q79H;IXcMTFe!NzeWYeJAGFZIVRluk>jatmwjunhj6lGmnsi44WhYk9_aVd?;3Ut z1__8FgumFzMge4O z<$#FfST|eIK<#)lsJ00%4g>SUi!5EQjjDO^(eTcgb8W3^ zzQ$#Q$RqDqfmqP$TY!hPm@-IDu#apwnGisT`!L^mk*}J~4G5eaTNv+0dGeLM*M#^f zdIolrg=yf*nQxpfR~yn|0~{Z%TL^caypG&7>51m4xmnU=g^UxKaPi#Tf zVQ4t@)w-k`L9xsq0&mF4{k$~PTk$+|U{2FMU^GR~&qFrEJnc=wp$~=!HV1DMUT<}< zm>;&Yw&@PCNg7fwSB7&Uw9_uj}=EUgL4yui|+{ zF}|F(tDjkfs~^sIU)x7tv{#;ZUPp~uUUEPhU$r+R=rf`)-8MHX=bjPJUkUO!*1nu3 zZS(+R(^kwWx2IO4EvXT6;cJ>v%Tz^D7cp*iaxwz5l| zx%ByL&kl?=ud%#v8ig?Y@L1Y$X|?3?Z3wQr|*osl-f;88%wHoFvMm5ON#~h2gx@*m(kl=V)ZbSnPeRWaaf?U{Ie<>dt)9W>NawXks&^Ym3=hAs@*U7xM+;cSwG*`b}^ zx}7?!XXsyh$zbgB9KuTnP$vXxdwAQvJTb(+XDv*n-#px}is{O`T^;SPgi#t!ZN`8c zu}QNu{HaToerd?+$`ah*BT@sLefSfWkvLO}A{q2fnbRu_IZrVPz98ZbkxmUr_p&iRiHg zML}iSuI^jtOWnntBhxQeto@{q8Gk~1 ze9CTRfiq&Srwr^%jhx49XXz*-_P6vx93pITZrm@`?zwO2w|&NK-|`RAFqWt$P3H

*k&;mt_MPImzPGGu7I`ghtNNk|(SZn>)WVubg{_!sU!CNXg zW2n5$`W|+>FKhYSNMP6fRoFh{9M8(!WYJMQ{}Yb=aJC1| zVJ>_<<4gKQv2x`YZtmkrZk%YHY%LA{^MY;lRSM`}k#p*PJ;&8myxjvV$7Q<*C3W?rw**Dz89+G+x?nKsUMWs#YLUUw%yiB(rtlK zr)@80ea}v=4V12_aF8b+tA6cR?zS{%b8>e_WMg>p;(-E_B1W4=hpIe#vCQ|*p<*`Qf`AdN&*mOLfRgbEk9=69yK-J^p_sWH=Jj1Z7(hd{iHlm7#`ka*3mHKn#0t-F&_4f4v z*Gu2)pd>!eZGvmJYc!~2t2@_^j(#9~jP$2kv!mB}!B5A7j` ziHY9U(W&g_UCbT4Mc`I#B)4D(eumCFzKC*3kzP!-9@|s1!k?eHZOBcDX1Uz)k&XR9 z;n|0&S^N5#3>vJ(b$)`z#abY=e+ofgK8~LMgrqjdG8U#hmMzE8B02)Akn;7CoaWG?v8S zp?32#Gc!l?m76O%{rP>+*mKFM+j74O;FWY_wbMM~F~f0Y6AsBH=;M^x0R8*8TdQWO zIec=7#QJc4VZOPlSVnE>)JCqahv3bUW+WI!lW3Ql;7(e~0J2|x0 zpdk8|#H!f*&oF24wmTl%^DovP>z}O62~@UgJYf84R{CN+hyLtBOO3(N?zNNV3#inc zu5;~Xod9@<)*SAmUGCEr`BF{b=;^Dy+De*PEeyHUXVQ|@IzTTpFFv@vpRd68f@n?>4+Jx*U zFY&Fzukqy;T#*y06m3y&MVaeGKIP5BwuWCyYo}X%o7|S$9eD?7#g{Mo5YpmsDkX3W zxzb%P?3OAib8g)!QmLk+J>@@V**`f~a&hlXsZ zPZ&E|vg7N;&J}x?>@Lm3$WnXcrl(q&aIR>jKkH#*y|0NCrie;zPJR=`mg)w|E+xNt%em+>&NC*} z&6D`Fd=u~=(ojmE1dr?}Xv(qC&$U|ZO&_j0Bhf!osIj`b)xcx3c@927qhEJ4(^V%O z?`!$|?PyIg^y#Jf01Ria9DUjFAi4tFy?yT>5iDOQQ?aLQ#{1FN6LbQWi}pZ-I_Va< zCV1O8a*IdVbhWJ3Esscfv|!L+0>Xn?y(0TvsP}v$vFEzGB`Zj|7DHcav%<#bzR0;_lFjsk|AfkMv_MB^i0dM}s39WwFn!e}NoY``jaPZl(P_ zP{VNAS$(v-2@T!p8ml$x1mFD;eXMYC+|5>Ut9N{h}y zaxl(&t-A%6N@a!~MV#(`wL)Mpe8F~W&YKPr{W-h|Eb8w5O1D158W34Lsz2CCXR{?2 z-fuxy?YU+*_^#7_ku|MS8qyA_lokc!aGSZyi`N=ez={+-9n-(QyML-Vd_k3H*UwE# z5bDsWI3=MuXxPv@<<9Zhqp3Ye*RB-Zowne2xUdQ+ISs3ju`76YIfCCmsXe^((=B7z z0HSWWwx0rjf(oB^N2?3Jzng;1;LmI+Id+)t4w(`a>yc3M<|o38ojGyKAW-|T3==|YQsGhyOIN2}Y+ zLR~T5llMF4Zq~v;Tes@(;%{AKBDQu>{LW1I3@?3zCQz1yj>Xc`{LW9UWRolKiqoio zQXaQj8i~)$r#3a2<}VfW{@$NjuQk{1^(8tqrF?`uP0zjUtRoL;^_|xg7M8M}i&i$R zg}t0)UOO=l5AMwmo7`^v*UNF@L&auDF^P4v1#~TL%URTT5XH2ba?NAhsyTf&^PLBc zn)|$~?5)2*eZVzB-dxHA#6?mjOh1CTl5ZKm@UU)Y)w8RfeVBHR$i5cMCg}pTI95Dl z?Q(qgiB?E6jai)>21x|tnAuV^M`)!E)_yoHBnJ|WwMf+;O}J+^S@0$mf1A}~`NxEY zMDJr^>kvby6Xzz8ZRd}@<&hFbc6;Q z)A3Fh&r@ro-*s0e80>_u#JT?QTwR$K$Uk%4+-fA4V&C7TUHZv-L9Z5P${5-(rX#t> zZR*p}2=?>M;xBn)7`Ja<9L0^i?jYF|_qC=<^O;9BL6xlYWQX}-&60PmFPuN$V)0P> zURzljHR}dNz6cZ^IFWfa;1lIEsz`(_P8jz-p%`UU>M&?k9_CJTgCb3M&Q$Bx%hfJg zcHKb){Zm<5tO@!mlZd9jrm4Y{nJ#ZF+Aw?a+1h+A z`+57prJs|NPRc}{B9emNTGER6OINdGok4|h=eT7pKX#fXC0Vqx$aJmlg5WSux!%fb zs$)tl%N?Za#K}80%(+yhks0l<@EKMS-hr134Us_4Ur1L zC@i!N?Vz2wRN4&q#{x)``QDZ8Ro{d8BDpftSY5&Uu9~4qboCXcKt&icdy&dUlr4N) zvb6bpKkj}*y8G-g8?QdR>t4hn*_d*VOe-ph4Uv$ zg2pN)mUn(^MCXkwSPcT&5?q-S2SJJXm z0zb_tt3J__Te`8IG0!T1`NyUP?yZ13m5$90mG6L(tJwYJw`ldy5r3hl;}C;?%TBbt231k3(5pj!Y+MnSD9FbH1!zdrcbWj z&_r9?S6AUY`;hd`&&q=2avR7gPCxzT6Pp*MG`_6(pWB`Ztq7f_ z5$sjUW=LiKcd3ys8)JI8yqh}Uo5k5ZqPuU_X>&2oO1GdYl>Tq#LcPPsw0$GzLYco@x*bvEEsZ?mi zE4}>X>__*s{Q|GQzm@S<7CuO6A>+G-GsjMtl!Zu2}~h^xYPCM=n2hZ_WnY*Mju zN*X8Q@W<;)iksX=*^&wkJep%JRx`~w`F%cS9#cL*IpSUR*4CEXlC~XPDQcqX*HkID zVBf0f&~=GhY#N}p;rK@*x5apTVm+UA#J8vDRmjL3K&vs0wH&S&PuH!-gkOgu7>m}> zUCkupEdAMXDs=m-ZoSKE3^rba{6%J zGO9f;1+lP_l>x7+jTRasGJ3+b+KBbc&5T#}Tt#%_P^UYIzMvISyaS<;HVzv0JhDtL zyp+WS-gH3^_;XiXju>X$Xl5%Ck&7~|{@fz|p?y{CWk20am^$mL<`&geKCNnQC!$ix z<21nmu%hG@Hf8DyZtfx`+HNh+Xh!bi>6a=^6H}xrJ9r^tuiP>;9Umn;A)G9|eJCq6 z%J{2jq#{K-LUcc_H>Q6RBi4y%&94T&RWT`5(Jvr*aMDf?CdV!L>C73)skDh1G*zF_~~# zo(wYY+bQQ;CRX>54#OQ<&|ni|ou8E^PphKCzL3VB^C3sKF*;(Uv?Jw}%LSL{%VfN9 zB(S&Qb@7<9gt4|0G1t+RGiM|1JP*hCJCis<@zOkE_FXs1!(6TPsC9LeNivm54_; zDLQ`DX7twctpzI@i-tTN=t7YtHR9f)*B50Xpuwj#dvmmv@lE{{!u;a*%*FKD2NP?s z4TV2>XS!_S`#|cb%U8b^dM&$3>2%M4GL=%U>O(WN7RJKjqJ=oY6b*mFs37QRQ%O*= zsS~0VS7WF^SBk_Vi5-z#<00)9y)~Wjmf7$t$!DD1c!My(@oJt5R$c|m2KuwgMDgah z$#bb%DYb?8dm|^Toee_-47;woB-dtny$t`6IQJa#$Iz_Ebf6_XXV~lW6Vx@#B}=FL z)wZvZ7$?!|dQq23zk{Yj{A1HC^Se2tdH2UtyS1DR^QP~0_#Z-a;9lNm z1ELSt;oG<8nEy;|BsLCZ^SLTA-l^Xz=8@Vs#yL1(>GZtiN~G(x_>ix8EB3jV_>rfx z2D9AUBvLSb%K)#YxqINEp?O3A4i>yf>C+mY>1dQ!qF$%=;4(IWjja9R87dzmW?8aF z-d3^Xix)knIEZcOC;c(H0rrrr^vkh$F0h4IZ>kL|R=>nEnNyB>6!{ppcIhDub++H~gY+e_@7 zegTHQK*g20Fhh2vmb6T5_jH*t&LZn2$@`sMGVO|qbvHUNx1Z9Z&axjZH#=W~KW(La zQId`AdIX>x!omcM{f-y9@o)ML=T9r5Znzw&5@I}_y6T?+b^P!S0;K(z93@hxM=+Md zD719<4TBt@3&jritL)oUy=+bHmR^|&7>>J`)&(uOU!2;5x$Phj-z;dGhH=>!MGv`-`Y!QF5 z8XizVe^k;bT~}RT4QYag;!?r8OE&Abb0jr&xFh;`DKrL!XgITrhiu)a_d5t{ zQzlGr7AZ>drb$yZO__>Agb`_#Gd#`y!X_L^cM7iE0_S6ZRkw^jr6KG@+YjTMxEq!h z+I?C&hNdp$$kFf?2f~uI;%>WA^ZbzyI?y@#YS@n<{AIedokir;l`C(XCj_5=BxcnIB9{b=Eke<67zs4|QZYDBognKG+qSWzS%?{aRDTBYk@D?W!(k+N2XWsk;{P ze%(a^LY1A-IG*Y{(h=(!(?ZvLcRk#%};H@0!t7(aOfhl`YO(PjCphgsEE5lV9PT06-ztK}16JKTfX8=O^X zK{AsX)J747lwORs;H>70n$fIy-Nufie}r*#@AW;~6MwKtQ(j<`80CKK=8lGvbJih& zN2c{9tF!3?wD$nRE7bVNeI}Z_8q=icC!(p9wFzkjcVt&R-Ot!~IDYtX=(vbwNsNdR z5EtTmGp@W-vNFe8fo`B%NwDVAtVWh~D^6H-be{KS|HR8TK}LPC%xuGV^}|^bsbah? zg`Y?!#T-kf93vD-JZaPxWN1|UY!JcJ*J9GE*KtlTrjfor+uafZDQl3KIeqYo;&<7i zCGH*h3_a7pUG&lV?VT<0%+Gi(bzM=d+sFlkrwXC9M0Xbi3sbTv-e)#c$fPvXHhTwr zOqmI3OKh3Rb8}M`6e7Fg&wRhjw22`~u~pBCAE`-Lx0{Ako6kU0ViwMn$b4par@Ayp zEP-t$Or3?ftdFF=#7g;E|L7UxZ76vTjsfge2<oqnD-Di$XiTj&FD@HS$*K`5YLXjGuzbK!;)zOO zm2jHLY7^ANz6k%3%u)-I>K(-wKf5p4>=(u>WjuciG!OnB#ifeZlF$;2^`*)CjkMl% z`D7B~waiXhTr1&ex1E{ZhaY8mZ zgksUib(`0z+_z&gaeEVj%nkpV*j~HeCR;u0i+f;4YTOnP%{icKn>?!4V3>U@Tw|VT z&_thoy<7Zddp&|eS^WH|@$=;|#`E3y2%9OUUV|`H_?A@N&hQf{v+B%%P!O`}v)_0a zNXu5AYbj%vdW?w1Lg!fy(Gt}|H8tU)l@kDLY^>y;5qpV$Gh{005@?6CkAluT0+kZy zGzYp`p=$fr&|{#G8XesVBq|FdH{Zf~6Ov1caTXP2pcff%u!uI4FFl0z{(Q4{nN{{c7e7ZrcsOH>id{h7?@rB3gLVQ>fl(i`ca9V0<%;em?ty@}lH}|%YaY^>4 z(j1h-b(7oukRFqaJxNBWc=w+}_3ySz&0lUzX+n?>2y~}8Kd$Q^T_#NUtCvb>PprRw zF!dM?N=Gj>PVk=sb~gkDvtGttE21Y1oo9T0dQxxlx=dvIKv+PgGk}(_ol!)M)YN}J zH$1KhIwu+nA|Qe{&RD&Yr^N3^X))%XWS(^$-szF*=K@478o$RQ^_J*IB5AAiX3?Mh zu6DL2t_ZX|n5srIsx`w4JCy?M4U(65&v_gX2THK@T_$aFcNvtu200MI$mf=+Dn$kg zE83T5fvzT06!;|U>6X3MkU=kh2Dv@hbNQsD{k;&ZrG1%D%u$eqos@JhfWTVsVCjWa z--IvW$$iFaiy;=iZ$L*QNcXJZwns8^ra8Z)v}%^|ipejY!ulw#zg?|ZjzX#|^{m48 zqVT;27X?%c2dlzNKq8zntUU1bs!K$USB#D!A&AwnPKG5R9cY&hqYvBx^*sDb*w`~Z z)PKPxB157@+t0`H6V-S*_kRbKt^X9Xq#3$|TAj4a5U`ALZz=v+Pq1J<#jgyH!{YkW zVg)R-&2wTX>K7;fP+>DYD8-ydXJs%#`(ta7KKPQ@91A_1m$o()#>$+=mxkZ`?aWX zae1@k`c6d-QDPKT5%%L`uo0gloKo$GcVtGpgvr<}FCd+>HDZrIdSDqalj?fTd!AwO&7@`|0Pl zG>WPwdCWF!qAfG#*gk8sn&&Lm5`+;(>+TT9NcOP7e2h^bXjfu#yf<%qwOd8(V4La` z^RF2|p4ewJh$8F=;r`!lFs9v!xC{K%vZ+mOi3z_3&KL$1vV!hzooWb=D?-wX{W_xK z7Jj9dd!6-wAV{-ITikBJQDuWT1yB!Gq}jUnI7i#yMt{_K9qd}k8{2N!d-~a5K}+MO zous4dOSp3P6j?YQay;ar${8Cnfeygwcz%qF7+3%;7edzyKkU(u_0uu9@nNR8Bn#ev4&-bgP=s5@f z9zCf>dIJK^FoEGUTQ~85zjMxrZ_!hMIEJA1#9N+M-5+8tt7tQx4}fZsJO`m#d~zEc z6xG#oTJd-a1fr+9?7aCi-k`pY$sNeG?J3rkc9XxmMT9Yg2wapIP zH$LC5G6$^TE=96|QD6?Dc$RfoE@u%|v0K-*0|U9k;LaP^x=bMhZm{?e>O!4PV6`(R z{*e|3?Os>7$m*n>wS4#-@-`p0$tnSM@5<*K^fBu{{BP(s1z}f^XOcst~uT z?HlO^;C;~uu@Bd# zfnThf^&S-zs@H{3p-V5*^jsuUqW+A_o9x-1{jfm;E+r3)V?gNGCHTkZCR<7hhgYE)V zvb;yrZP-7RJ~cCcmI6B0SH35Idk>QMG8R8NPj?d?PC)0>zAWlvarp=eb_JkIAMj|60KC{@iCCCuXjMFbHCn_y^ z#j|z`23h9ULPu;U&qPIn#sVvWJuY4!w-PlGAV{uW&}iO&>D#s`O1{RRg0-GZ2vQM{ z$wx*5v`r!7JQ5#MQPz(XIjmqJ5OR z8qAYf#Wp4#gDVLyTrBOzin&9@Vf=verPkDrm!|Y@ee=MuZJ;}1E1O$W2f5w7-FBGy zn_Z;5M9b8UAh{0(*?ki=X8W@g`r4)`DS}mJ8znr?>Fuu*QD1fV;AI*f&0uxnjqlC37CFqmPMJfDqjxKsXYdL8l6y zglo^GVK|d_`I@lMs9nZT^rLXLD@~71zUnrDJ~SB6q07Ejtu6KNR)02+K8MULhk>ds zEmh40`TbnYA;*Fm=WbJn+t&m&a;5pcz^2t2omi+J)iTw?)%=uy*&5u@aJyIYQin5M=tyWh-x(^FVO#T%mvYjwX1`tZ zuMx3E5&L<43f^s(xYng4(*%=%4u(DryAl1^8)m({fo&%5@xGbL?re)jp{bD@8NeY% zCQXgK->sT5G~QeymTP}8^7Dn4qQ8)8b>@Y2#xkW& z-JQE&s;GSTb4;LpTn@RTwSQEx_(qa;;Z(PN7Hd05!l~D|VaE-%WpF!44 z=s@z?ozT|d7>-QSZqoEzpWXX_sqXMfW7*@H4r#AMUEQlu@*JXb=h|Lxa=9(2&oB#G z?ObRcj9WmTw#V1Li0oCu&vAwrT!niv5uZkS!4OuSo53V&HOU3i4Jo!gT^^j6T=f$F z0R`yF^?jFbXFN)HUaLUNFj#eW&$szGYH49?Q_+gA=~mBduja3la&`1HHLEn^?SN<_N=wHxG5H$>?9-!>P%H0 zvvUFXQ#%C2S6ze-w~F@tWfTMo9=91Yubh+ffUd^J%t}F%`Nk+!>utcG;b4EFg!!bbu;!gnNBcRpfWU1@R}Hf{VA@ zOl~*q*xuLCdWpxP>!EUifKE~Sl!=mjV=}k@c$S8o5mQ8G0YR`)C$Ih$85j*BAs{M`c`-FF_ojt32&Y(P?Lna};m9G){4a#Rizd$ENU`=gK7DSn09^-II zSU|^7m3DU8Eeze-4?mBsi?Lx6i>9ZZk91(K8$H9`+)961U|81R4)!e#X2FOjN9nE4 z(7Fe(5%w}1rIu`nN-nCBt>z4PEF5bozL5*K4G5sU<&J_ChV<1t+yy|l>I570=B!f= zMcF)Vz44LY&7}>Gc6o$HcEl@3ZqvsWUJGbff1&hKBKc^_*NufhvO*=93Bn z+bM>2kLzVsY6M$AQ9`z(pnV|1mMs4u!UMI#VFxcPRVSg=p<${%fwt zFBVfF@F;8~nrnMiv4CY{#D{S!gz<8(jqb zbl$E%E5lKYa*360eH42$R=T)X&$@EUulcI`G(C;}`-?D8(I4?DUK#k!G+TX4-B z^#f<|jM(%4nX~E>KxKnG1>U2`YX#xEj&Jybjw^K;1__^3N$?Sx?YxG+KSK<~)LCyl zCZv5|X)MZBxoNxi7LqKUWZA~>3uzQbKQq>zHS;L{6&}^KKH>dWv*Y@G0Pk-oPGbQd zjr4hTI9(sRxY#RI7MBx+wItjBcLpsT2jUVVBP;qCKmOF5;`Dx}F1S|eff zY;Q+DFg-p{hO_to`fdzHjp@%r#)=|#G^@eW?Z=VCxKCmo%K`kL|KHeLh7-hKuSA=VPdf~}Px&B{JB4cctBL((pb%6rVp&_0 z1C+;lP7Nww+AVri8Lj$0nHNR=u}@I%Z?by*pEEE~cfeHgOhz>ZQDZ8t$U{E7XpKwY zn_s$Pvhlb`GBiVf#(mbwp)jNz5qd2)8ud7A#YW#A2Lmm2$N#yMQWSsnS*;7OI9YQ= zek}q#;;5$%}u9tAk>u~M^UB572%TJk*TG($W8Jk|BuCp7jloVR(N znSMcaOKi*8FxUTiuaWjkV8g4Ssl5`lur}X$x5S>Dr}dop^OE$_tNlTDFl-}Qm<&q2 zRb>#}*ZVYE8;~*`J`KR@;WqL-_CE%&>oAr<^u#&cg(raklxY&8&i{*)`(@-rJvuv> z1OHKw)SkF|=_lp3V6euv*OwG9u^Mng!O>-+e>b5I7_~piti*6n`sf@-@9p0ADY!e+ zVDcbP3%G|&l>A$H+4v~TON{SwqF8WQD%xl=P@uJ+pQ-ouJNmxO@S)Cozp?m#7v;U8 zXA3N(HZjMrfJLS$MdaEZWLy*--^0IvGTcAYhKW~cMD`OZz8}0LsLl{XP@mp);}sTm zNc36ttzhEZSkFTnm-4$7ExL=tNAIxt^?*I!QRLw>5Fr2a&Lb};M<&W~E3u5hyeA>* z#BP{WRiIsT#9!~2#l+uowi*kyx(q%wyPfjtMH4cv zBAXk#{>uOTgV;b5@5^d~iB{P!EN+ITQFmyti&i3D-9$G1{G{@41oHdJI5wk1b`n2s zF;{MSu(G6A%wgHLPuY7HCj{^6@8r$?UjG2*51Q&3m;a=?drA74hDoaoV|iGRpr%*> zxVgXcsDCd9GyoqYU7QmZdUe2Y?-@Qt0bM$rEQy!cR3YNKL1X*7Krn|Rdm9)|9;|e= zoK0t31dmTgjzg}V$OBiAMA(Bjv(9rnO9Uxg$iJ1nfwy{g7^}K*FW*oy43xVBb#IOl z(iK?-(Qn>io&!7Ol;3bPpn-}99HIXXvp=HqrpSOdUozJ0#_mL84$VpnQ19kwbVK*$2 z=#>F3Fc)k$P2L|2(64=KKk>41Q#{8=_KBG39Np3A0sc4gG)Wu`Kd_ceE=vE7bN*$^ z3@50=y*v@LaqfBzS^?wjhfHpA+x&urh^ zrNbeUQ15b(5%7Rd7M0C^;c6oX)rRfq<2mSXo60NfF($iJKzAdJIrnf)XO*;4ct>GYE zHG8>Prb*`AV^Q_Ei%AJ^3oauLw#a*;g3A6c3XS_5+(M+(T#%PlJzvvyWtk=~K@tZ_ zi_tt3mTBAXd3k?d1ZtW?hp@uYJYQqwDGZZ!PVA$r zL%^1Q-Yz*GPqrQ%28!Y2VVlJ^orfbqY`v{|iB)I$ANsx}Ae>hbDdxXhMNDyiClAdk1h6C zx*Bn5ZQXBr_y}C%S#KH5Dkuv4V2AUJgL>D$r`q|8SiecDmBy?17X>YaRJ?vaBzET9 zK)5K8Ph+(Iy`zn+d$j8iK8n{P)sKSVcR5}q%*Poowibv9d&7rrk>Xjk^Xpf+<%9WQbV#5P3X)ht1?a%LQ zVIa}3e_j1UiV?|9d~k-~4YAmnHd*dWLU*F*TLA{PDSsIoQ)S z$z{hs-T$vWYa)WXkM8`4Pz8_ChyD90HFoNWb)cxfGL{<0d?r%pwp@Ldn#5MN zJv3@r&B|;jI!16VDaVg0{HlYig;K@+bAgE@SU3Luo$jI+{C-#^Hz9`xuyRN=upXQw z&V^mS%Od}--|SAcI-GNhc9yE58!>Q1O@m5HSUpR!EPWcZ%-kw)cQ=dz|Fux!B7GeS zR+2*9Qn0r)Eho{3C!AJU)$-k!06Zg=F{c~1&hOuJ_M9p0OmU6V} zt*5w5`@oANJGi>L`sxi^GXCc{fT#A1rlGWv=$6_QmXJoR<$AlP8xgDP9lxR`;I03ICg#?EgH}5_H)(ZOsyLlwu_U$P zfC)&+TW&%if-+TU0*w0V+t>dwWdKQXV&NV* zTu`u4pW@1lyr%nm+Qz&icnX%)?&G!nc>o);_ z_|FjBJpx$yUpMvVhG;N(RF;au>RU)$cHgs{9~jU)gkR7TVPVE;0{B2H%Vp%BMddh% za)bj6!^AD(nY7sPbJ(m38$<(d<10XpR>z-(oo(Ip{u4Fv(ktzk=s>(0{%Wk2FeA3P zG8Vv^diRko3yx$sKvMXw9fBP=>p!aiG5|(9Y9tKlKpf$d&!{Yo*i^z<=;-EQ(cHHE zs_p-|k#z@Wp8_eAD#`oG=A?kj@Cfb#BA5UC10e$QP<_nB?oRBc^?z>3|7PXS=Yr7+ z7}DIZnM+_ve+Lib3+Srgh!XGdlB9vi%I1GANo%KFX(KGL?m@rrg|gY>4b|dX+3;28 z35TqY0q}Dh0=T|%PrR5Fsl|Njys7usa6Pf_(dKNZ8@u49u6iYmMA4I+_KH+>I8DU! zAuf+vHmpSSr@Rdp?a&dd=I^T{QPa?oPQKx2yZ}^sIBzz4pWht-$k~mX_`N6CZ(+bz zbDncwrZK;<3-%4JD~!W`;`#N{7D4vQlJ21dZt9IKCRiTw`>sd?qiWs-kDOn3`71BQ@BcYk)_hYz!OW%fy=a{*OW&6n=M%XcK=I=k=yL1ofAbRK485n zuAN84c^J^WqTe>1pZ?Fq5^vJgDbVQcvCC4KZ7WvPytgA0_=dT+f4tsxeQtQSTHXk-LvHl+` zn-|{HDbrjP7leOb0S5+^P5t{BOl=9=kL9!rR}FzTRLvH)rdc-X2|p}9I&TBB z_G@zndYQ(i#POvWVNPaj>e-w%`Yl4j4ua-r8!GF6iPTK1Pm+(;(t z{CQZ;^P9c!eS3z0tv?a)oa{xV^*8H*T;c+{D`pu7p6r7BdZC<5=^D+9_>0om_p6e%08 z)n8yboJVN&lA>|F2qZdFKI++VXeWZ4y9b{z5i=KIA=1&+(fqr6nPZ7(y%Wb>*e%Yy z?eS!1D0mKTdLKN-+2d{hvwU*TsNBeRfH|iEyZ4Nk$H7^`UXjO;<5mllp(3`yXMDT; z>o5QQcJsZ|;=h3KSXMaJVY_0)@;h=_-Y;sSdO4j~1 zBL+DbM~vBG&SlAcZ1kn;OGc}g`2K@{uib?Ri;3RiFko5&x)a7jO`c>T0Fli**sOt= z6%QkV)) zbPVKq)Bo#+aI)aOo`S5x#f4cqX<@Zvy()m+V_+w0|FE#^&BhVykZKAPgP0{?lGnqD zc?1UsmB5$CK!v&1lGWzTTlZc@*nEZ{b^)Vauo&TCZVlwswHBJ;K ztPTWBu-OY+j*yNMo9MQG+pT)$3c%uWkQOVaQZ#cLh!7uH_5&*CA@3yfM02u^-F&*o zN+mMsiGwPc!@{3sF`6_6lJ^%+C16nK<6Z?;$k#W*)Iu%tNaBBeFKz`6^4$bTH8L#< z@vw0Fbfo=!TGqSVzyX-K7{r*q_}t%=0BVja>Zu5`>QyjQ&^{p5=xjg&bwcAi)0rBN z2Kl4yFnHSr^I0WK=mTJLBffM1Oz%+JNF_8hrYp-9fUL&L6t!H1FfftPqJJ2e3_ka$ zQh#lK9Q~1FdJUG$V$L5U~OOk_hJE{=uQ+#U+)r& zkaTrgoCg6~?qR<(LT)LMKoENi>Qgp^*WoC4mh={d`;T|mkN6fRgw+VDXtho_@C%Ux zpHzXWPkVv2q$xjoKyC#%GLI}x#rzkc5nbvg8FwOR=mO3ip|pvM9r%y%tOImER*(2z zeSCf3e>mlvFz2%?<2I|!?kzFmWvahk&xicXuPXKDsckSGuk`WR55=Ctz)!8oTZNk8 zb|by!1XXrTamYm}`;87J=V~UXun=CuP!ohYb_r<0!c(-{_FY2=da`V^zu#{LRcgI; z*O9@Nn)!J1;U$HMyf&6Z4K)S|tJTYgUP!Gu77m_xp6IOIFP?T35Jsc-F&mi>!1A{l z=@9^m8s30l+dzAB;k#H#gvGw%Qov&bJYAo{4b;z$^(3BXK^aR!Q5BHmR zZbX26qd<}_cweAO&=0tkjI)svr#3N7Zy_@q^^Ungh-H+$atC|XEp zfHmb+1@H8n(5VgmT3FbDgABW=!~ac7HK7ftL=PNCBJ&I36R5;9#l|~Tc;PJY!Qf(a z;f#8zhmZVvas1IXJ*Ux@YM^nd7lIPQYaB%HR=`6QL0{|4v9U6XBn0#1jf9hR$?ZmG znlnu<>KrlYEb;K5r*##^1l}T@4Aw=1HX1n?HvY)m{T-Ef(xz(YA;p-esTH4!CqWKp zGcqg!N-J2)A9$^jLkHxvsIuE4EXNxW>S1sF>HGdLhc{B zVRL~d@ec?b$;{BSNM2NTu-`Uma-120t^_&4G*4iOc{84DPF! z=k9j^S=1VK=;+{7og=(n=(?LBsVi_kmy%uMy_ARv3VE92wsDz~ls7s|6{SlP@RX7dF$H-o6D_ zS(z8E_@9&lOwfRfn;Exh-7Ku8xQ(QJ#9Yr9Gl2wFM-)g0QDhLc2g60V@o#^QPo02S zQ-mGy_coC+202ahh%Sj+$YsX7aA6?Ad&R&Q0KQd^H9`AQA?8F2@>y(>1jw!i0fg}U z+jj3%{KCkOwJ)B3l7QGSlmYTf@8z+jkcmPi>P_SP#tXv|Zj78-7YOXT!10ubL!TEc z7&=r4LXI)el4L@2B)7>KQHLpV!i!fwddnkF{$E974~pg_)!5 zDDgU_Svv>R%m{yT9KM?ZLXx;jZU$G7E5`d-6~!zq{dBYn8i~84SE*H62kgzZVEyYB zi0!4VfA=o*@ZLLr_TKyjBU2iP^%Id*oop-$?#ps^s zhU%#u4C;zY)E`MTDG7x`?4#)tGVvs$0Y;uEk4EuQnrP6fK{s!gaPq9@?dzH3u5l2i z`aW6w2-4R3)B#6_%kv&n5H*rwC0gbX9`W%rtXMXvQyxdEKT~b@t71DQ!aBZSaVEwr6ow3rRvF?iloB<-ktGZN(Cjk4T%? z1DhYE<7=J|t7KiEBA!A0BXjY&?-@Z9H=SqDxVi4aE+*XdQD3hDreX7mO>%Q7 zK)@e%;<+SdQnt16akV49u?AE>T{EK7QEWj!9X{V0WL?X^FCo1X$TZw|mIP#c^J1}k zNg$acS(+YKzD^h--AMCHnqvCCybi5WWJ^?$wunzNQX(Lu3@hp82VafbLL2h1H6>X& z;^eT&f9vGLJn$ovB8Yl&(#upyEmB&%eFbzO>r>gV@92*R`6tb)c7J>VGdo3+HAZ83 z>xQOgqj_>Cb5@nK`<0`l3?mATRDbU>kMUK~Z}o(E1Z@UAGapyMOl@3JK1a6Zz~Bf7 zVnV`#MQ*|dG!D`!(bOwQhf5no5j**|*};8=t+f@WC7%bfHpOcRp##m8(z4^C6-It} z;joeN9>F3a2J8=1KaE=Vm?rF|g$~GYDF!X#`OO-zCk$IVK(8A{Hh)vx!b!W&o0 zS9R-tsjQ&UKAd8W~_X6BLc@}aghz*^BNu3bzw zDjEY}_$!zxI*H#%7a<Y!O)i{bn1S>y-5%7qvjwC=|CDBIlhOlP#q1@ zy8oW@KN&J=ni1|VKhJM-XwT_(xsHd!6fI%(cB%tzA|*NrO?^7 z6HY&GQzsIRx)nC{!ZE&o4^WPDDq04g5-2HcYuw$8R+HGqZemk7=OazUziuwviX121W|HbyLge5?R!0r zOd@VuFUVFKg|9yukgskll}(`mkT+BEqK59etbwrMu!+&nQ{(P^FJDm6aE2@7&_lu8 z3Mu&H9K^N>6k5nxK*y`R?NJv_qHl!QjjJgA3jzP$34mT8++4AmX5caQo^7L3gHdph zi2zLv0$1AH2k?lf%SXQz`yu@nLd9|NrCa%EO^--!}77mP8VvH0_p9vJ|NiNs5M$ zP_#2>6GbJHl8RE%B5DwgDTP8vXi+I8#vbj8NDIo6zVn`ie&0Xu(eYyDdG6&}&g;C+ ztJ4DPfS(6jsw=k2nQ?c&4rWYn35fuhr_FpY%)TMZ`>df0JRnxx!j&c~c`QICb#TB- z2yM0a?Xi@(h;bcb=WYmz`7u*NiB@JeC7-`A>Y7otG{zO%_=-q(Mrv|}aOddDMX&Rx zP5@;dLl@~fy*&w3jhRz-smv-dmYHDQQ90B31HX8zj*lS2U@va@4ePiCswp;Di*m{a zQUM=Y|49>P?s=tt;pLU3ayZe_jxp8uFW;I1G41@hxh!@gl0fsI z3uFHIdpUrCzDp8Af-Y+2inQV&nj5VUbqGofYo0Wjmy}xZJ^?xVhy$RvKO>5y`DoSg zeRX>~nFiB9cRQ8#nLBC-NL&K>_zCF~SL;{p0 zMdG%hYx|`CW5@P6nE#5o=fqTFuT6e@n6{A;7fHJ*J;gAJqk6R|rM*6@l2O+J2uiol z&Gz55M_qt^GF%eQSUQdqlq|M9#$7`q5huZpKgoqLBkD7)RmJ<-+KxLvkIRgklfJ>y z^qRG)%PzFtoO62^7CJ#$nrvn>BzAZ$x8m~@!rhdrthl7{r6Pb_)%8rw0Hlder*C<+9d$V zO+C8v$2>a}1e@JJASg1f$!ql^xF6Yuy+6y+l9M0Cmkg1SvDL9wAt_EPJ-Tn(DL&h0 zydlJ~o>;x-qf=a$7MfLOd!J}^imu?F1&N8}`b@5zV#^FD(c%o@dt z<*$;(LKI^+pBTT&Y2T~#eK|WtxtUV$36zHK;t>9f^be?p-Xe3401Iy*X{>SSCSP&& zf4m<_hv`d19L-it-CujRc|r0ouekk_*(Q`8vDy=~dE&9tqI#iqPzN~$4`}6{M<%m{ z44SS(jD4VoUikZ+^a_zKa_R}W9Dp?$0u@jsI=uEy;Lmq~o7cO25tmkcaJ$=K=u4^J zDf%SW-+HWF<1 z?qPgmjwz720EE;HNNBv!hreuspB5Q&{w-Z2r;LBxm?@)K#r&6;f=cEa4jFR%i>WDPkg4)*06*9_$GB}x)H7*{1#^~Mta$6SF~Un z(M^m(f4wEIWtwZchgnczVFd(4I-9YnXV+}z+4@0u=6R5&ePb0vq)L4G7+Smj-iWOB z`lK^eNdivaq^ZQ7V!EFvk_XRWzj5uZxfcdkr@0zc&SOhmN9p2NchP^cwTO2aH#e18 ze{u)vGw6FmXsal31e2y>wpbZcB|u`oaY){r-PR%oiAFIDUQoexpuS`}Jn;o|(T(|Y zE|`0tb>3E`bw7ZJ*yHeDjikIo?r7zstW2~HG0YeYQI&s&GSf1}+;q9QE2f|2&OC5s z>h_c1nyi~nJ2XmNC+atiBM}U__y!_N@!zn6`&&PZT0Cy8X;5c*i@<;hjsvxxGLi9# z!d|;4fn!xTos%tCeEplW6=L@Op>TPN^52H3wjp0nPdaX_`98tk_-n;5RUZ%J$N5Bc zv3;Eo;5ATW?dF|?dPxTratPYL%1q^fun(59yeO$(v#(+7x8aTtk3Dp_XrX^za$>?( zv=%Ovo3{^`M;pxiO&}RhH*P*c8!P(bpBNMqt?J%euBugIw=`XuTryVn6ngnC+oP{! zw^~>hAM> zl%j-#4oy<NvvL$NN-fskr*YT*{G=m!F@Tb-x*^3Ab9uvVyr_Msch)34O_2tq-cH zhnM-18Am@;mYqK}bV=S3e~fF^EC*_o-xb@Dji1j9gr*^cEt$toc=DLvlR@Lf{#_O} zIeH(guR5i*v6GHle{xbrW49xT{1`e#s3Q;FIdv-C3ts;^)O5QzC+Sg=31ciL}J`u_dK<`-ky-u}TgD?NRhWTNC^@&AJf?TL!C zwB=WG1-|>Ge7G;Q3nOiA5vfi!sVwBuwSX0TiFzuD(0PFcDw1V?ay*JDIkCHXVEyYb zyT}8^)8>;`&Gq=SyjD&LO6|O_h*B3-AvA~w)+DSb9>-1|@phN&sl?%oYg-IrcqbtI zHqGb1RHF8^qr&#$ygD6Nhc^>f=-fw`=!;-B3!wKa3>msZ^#~%?lqjO2+!r6evtmhg zmiI~$#p*q8063WD|E2o+*fWGAz!-W>{ZO)%y*o4N)-Mj*avkIqmHA}<-OWI*uMp9A=`x-mYHF-AxBY7Gi)6<6XXPLU? z$BR2kH3pr#aHm=)&P1B`dpP}z=tDv1%uXWTKnhFc`JF(&GKkF0K*!&K7Yc5x0YGUr zlaS1}m79twI#(Ut6vc%*G*6sOWC_Y8M2(afwQKu3X}%9uzvBm3WtwsgG*13n2sLC* zzycPh?=#)oO5#T%a(5i2_v}>X0I1a2Cg ztwg&PYH!rx+Duhd6IiD-vh-2)%}#oM$Yp zm0SyGO=M}KxS36K2~c+1NZ_z4C)Y9nup3RjT)WwZ!x4GUG-0HK#nO=ap*!L*g(bqM z&80U4d|4ZG&S8<#hYfr~T{`MbTq5O&D^|&u5SwvPC%T z3XS)69I9JAKR9*mAC76pL0kpI`;FX;3w6TBNCU7!wuHo z@*3SaCmyx>usSlc4fTU3wJSX#G5kE86dM#mw4+a~A2eNK#MPw;tAurttx~#RSL=rZ zY2GahY9&~TQ{GYe7Ve~6_&#bE88S@j{+RS$2~mp~&NU~9o^b$5Jq&~RynuEFDr|Si zygajxN_bDLeb3TfK~E$bsf5ejHP>|}AZpx3`3IVcgF#t)_=i?_eZ|%&lNf<(9Hr#> zwe_JfFJ@hFV#O|L024~j0vX5ts-pM!UDl#waQ~%vtGOnS#^&)~pbc84puZ1R%?G*5 zs%Wq8%S|I%?@8;r-FZkMCSGV#IN%#~l_O?G8NL#vhy!|I%$lUbtTU5hnYw>fTmSi_hZ zP;B5v{0NOlXejtrl_^CivQqOXephS^yB5Zq25cy{&J)oz?~&Hq&ezRhT1h=Hj_M^t z<^JZ6&4hvsWMXXqSLLy8tM)6IV?Z8E5lj#=AZ5pJG%oPT6KD2Dq}{m*Ya^Tg9}>C&Yo z-GJ=QHdQN#kdERYlh>sO#HIB{elJQLF;W=nQ(GxqOn+r)vevL$nJzvOh3-cTSLdW> zuio=J-&u&tjU~&Fhcs<-6cJs2THD09nx>ac!tsc9H&rs+xwZgSeWTA!Abwe6SUU&b zovvx0sK-I7*m}yHPIA{I2BAj-&fO~hD)G+p*6`M zK}GPPc%vnw&YAdTdJRW*ZhzK=p-~z22Qw=+ zy;AO)Ulo^ndiv()>q!-Q=X}$>43vzPZuMTYLY)0+J!+R(0*8Xj7wZ@jFga>B`ZhxK zH-vZ%tSCF=Vx43V;a)&jE^$Aq5-9K-H)w7Dr6z9m^2#8M@c^!`m)%)nx|~dIxN_nI zX1U^!_-5CY;J#1&Qg!vLA<_~#Z&A&`{O5xr{Y51JZLwnX3HW^~Em&E+V!WL$py(?~ z9DULmfbG+_X9d^TT2LL`q*9t-gGr`Uk71-S-=j3f|HaYpl#L!WuSSRkK-+ERR!(-z zt>vbxVo)Cqs=Utu6f=JOBm*l@vJF0$x+xA?HR=A@dYia46mWAtk{YPQLL zgy{ng_cqFhh18K0sf*76`A1u~GdbO)nJymHFIVqoWM4X5Wk5))U-73wN3+y)d?W?~|V_&ZpF{j+{J(1!+c*n>WHM$y$5>nwu9?xv@`PpBZD$cQI(y6+_Q?)ln(Fp%5-dpxCQz12fHgs`?yoGHqjiC_LFB z7Hb(2#-m_G>w>1f*W~#SxXZpFveLY$|84)nIb7+i%5SqCW^Nzs;g%rnzY3$z6NAT) z-~((p)((?MfKHczZMqf(ncs0+WDo6ip=`BeR@CW&etO$M3NluoS7$E)JDR!E*t$zoXX?o(G0v(aAG26_0?z@rV$rt^-%g$Znm+**bX6PWB zZY2dgjOM&aC_ehbTY+3I!}V6B*_2cG$JcTz7n(7zg1c{C`e=Ig zKf!wQj2S&PBq$+leCdrfNKjtHv6Gcgt1>O5%jb|oLLsmXk%2RKe?f1fby;bOki(A^ zZXWH~t(d=ty*BIz{yXC1*6!CT^?c7w>l9n3YBe5{$O>?byHVHRMQ$Kh-i%Z;t$)7Y zZ@|t{AXrm>|9r#zoTAtpq zVi%==9xo=Wz=r1&)Pg`isVfRy$VM5UOD&(6!{{dqg&i8y!4%wv}>KcN?4T1ifs zAH_MmoJYRLpb-*jj2rQ10S1$|$N4>%3`*nVw05>shOXh9%$x1NV;r3qsp8>So@NyZsZ{YBGgUg$qbc%+d@z$g&x5f*2HD^bvdRH0PZA0h`GK)7?D@vXxZ;>4qX zTAj1iy#ab@?F8%aTH`3bCMmd*{cnqOq$2&BgFlXPmYU&rT57ue2Xn$>rB8t)p!4bl zvASKz31nrU4mB|ca6@ztqRMk z=5boaA6x0Hzs3U=CGv(CKY$`vHFg>8{%^p~^3RwqrSsUwpU8aN)j-yo$(E)Q;Rxzk zf~=?{{zaL&o^(_Y7OXFbE!oYn-u2)HdlSqIEYtdG=vFsue>9%(R&RpO!0rDFRa9lM z)qnO~Gjie;!qY@n4#q<7Ceo{1^49i$R8Z+$IDS^i*i!f7YM%rN35_cTY)N}e&@t`o znc~a;{8TvDmBR}u<=BTsY6S5gtU~Yo-%Ha@e>qf&c<EYY71cMZ7gDYuZ{?_;tM~dnHtm$aV~H>=NX@&KKt%mLKbPih50Z;9 zNkC0uOIGR9qk;oLP6dc71Yooe`vIQ5=`w2#7wtsS8bMPKW25bF$`XR9!8Q~He+!*Z zOXRc(utg@WcmFE<+ejqteh$Eu?IPg}31KQ8flBa4_^|vXo8m~j-{Y69{ld0uAzHrG zro{|DB1FHV=J0}zyq1*CvLHxIwj=M%a{tr1G8=Bqxv#su9jHb!Avbqlc-=ou;#T&p zTVf3@rxmZaVLG<-{vQiSz(t}wBi=u@i^{afnoMUjY%yJC=5XN3!_`lODe{xixIkF| z#{)a6;Y`SU7TF+H6KW1Aw5#1c(?2Jy=<6sfEWFzE#b!?dO40hh4PJwxI(<14QRlg^ z&cnGWs-;jgickzBKKPW_W5_zpB806j!ic?cDY$;v$Z?*ix6Wt@_#8(LG8lR1Pd%SJ zTNoR{DQzEhZthOnXAVb+qgq<{VM&`HF2#*9$C^7d-X#;k2wwr1`zS~>jylf&`w+Olh<-3^{;`XSSx?V8adJ!Cj z!ta?j4xwk)1U)%Ew|Oin`Np!V^as^h!Y_q{{Zxt_?N~tf){j^a?93e$b$u*vg)I2~ z4-6(D_59*HDa0!#+ow{~?))gNMo7}I?wGdE;qd|KfPEf;j4+euAE8U133~hE>jZtM zyfmON1EZ!hJ*We4Z2F( zv+wT-Es%)h5e70TQ;_g|?v4y;T&D1R5lp87OG2CVwqGhyQRO+}jqh79XN7No5!Yx% zh0{2cgr0LGghYcoTq3}IytMOjSy`*n`|~a-_}E5l#hpartAIo zYv#c6Wc!Wrk4Qxr-*kH(c{>eJnNPY-6J8VXK7Fb0u-g1Dfim|1z#)stK^Wa<#y~>gCMY5KqWbabooS4=;tXf{ zD$%$>l>z=P%5YWBbn@Y(^?NTDlzgrTR+hDD==qzW6#dx58R$6`3&sdn_B2 z&Ik`G4F2PT6e@>QqV+BIA@I<0@>zGBocyJ?7Ri48u}d?(pH%~{0fIKO58 zL$FYpJ~L^#l9u5FPT0>!0Xp20mpe8J&W`5}W(tHQenrEWZaV$C`&lzlM{gOg^ZA;G zU(ly}F|eku2`T!J_v^p=Axc{d=l<)@am}=3`w{Io>hKt1NT56B=A%eGnUA^-07l#At<8HmIx9;45zkR7N~h!ekE6U^T)t!6veN4g znj4|{Y-99^fLoxO%qwVY)B5@8#q!a=3s!(R($yKfeQxhpy zzL$*}{EVQM=2oQBp~7@Jg!Y7DGs-HalnkBFu2>?QXuVaxr<62dDLMzWBv*a`AKWRZ z(fy@)!7Bxkf#7N$un1Nbf!}FXC1~(|( z0oX#yMfQkKH`@R3&~er(aZe*k*)+L68t1^3APIZT7`?8P{$kl+4PT~9ZAhGFI6)pdPS-uU1NlPG$o{dogFY|VFT+H}O;u4G!)n7k> zhdpO7X+{-J+#;BCsm=|;|x_M!hacUkVdaxushal)xa^k%%z**bie-6rZ<@b58!zU{SVITz-_5%+vH&JD%1NiUcVt5=!QUR4f}C*I_hu9yvLIZ&k@O5OjV=UjIoM*r0wOS{bvmu67V$6 z)wiS)4gO(b!-zA($M2-i>|ap(X82&NL{k@)dB0MZyH56${aT$6PC|dDMU0i0ydy6? zfoVcp!A`29Y(y+*Z=Y3r5OSSsUWCWxaUW2HQtEwmdlM-*&E{M*)n$|vk5eU`^5ge) zzEobUzdUWhYFddIzl6re=2#iH>pBLWIU_n{Cw0*BkKE@T$GnLk9(T49kYgp$^PE)2!X#pfgWCM zN;?}ZOr^j#DMH;vE_iC#_eZVWb|BK@%}OMujdN{)dNr@<5V$#wO*Iv{u$9u(0N9J?#vNJN`pwQyVASkX;a zj$8j^RY+HPJqTRVC^#YDdLri!1~GB!>kA~gNLkzR^?_GqN^aEyo&CS>PuL_zBWcS{ zSJE(Nf{yNXQtC!RtXr_4ru3-Rbzq1HE%pm+fleB^n~vyzLdb%Erw{tM?MkG9LP(K3Q4mnk6)#IP6i=>}di43pkEtL}#Tg1)*J!JA^A`hgo|VEXNGE>Y87bohKB z(7k|iv*8=(o#UWYt@yvIZgXcGlV(qEB{I~n4!_Ig=WkInL|wpMlHXQ9Xw0c)i5mI8 zG|YRBojNI0O_B2qCy*2gyw;?*tw{zUCS4l=Nj8AwdVpcxq$gGevnB|*P8tn;Gaf3M z6?KA?@K}9Ck6u9fNgq*{LGb|x^*3SPU&I^ddM?okDGj}R)L!sS%vLG73T30zEzO^I z!Y+|Lsw1=&}I_Muv( zVh_@TG$i+9V(vc?{AKz<5feG9xR5W0RI=AzpU$Z57s5a!Q3)dpHQ!w`Ci7DNhv@;2 zCmyafsBv4bThMuG^^PY~gB6LlAuyiVx2!$CzGfrG8NS49rT7L=?RFCmU^{Wq%Jjl>I2{Wyw-H@ z?`^7R9Gf}52wehONdgw7u(L`*6kMgd?QqD|6&0tptNr7zBsNHsL}k-R<){Laj%;u* zDz?&_=8dDFe^No{vK*BNNERw%Xtf^mFkhZo9Z=V4$Oldk@%xH04$~aOxzdj2Jvc?m zoTI+^UFj%Uk1e2^Z$C-e=lRIcEn*1~%V(H^+8aQ+_(&M@bjHnPm$!<=ER7b46qb>o zeYJ+iE37gO`+j)cq|yAVzg>~_)n*zYPkvpGh@24CvcdH5Jk2Xj^Ib6F!jIhxH;&!^ zgd0cSC91=xB8pIwC8p>^1tD&(BRRILX(wG{jOEJ)8qor%9U}rsVwd(1RpG1S<$)lD*3WQDDy7iH(j9bPszh{ zF8K_!DaI@BYDQRDR!g{yzL-oGfHF`$8I1;_}9WdXViZlhuzgDPuJ! zoR?##iX0MHJ6fao-PrCsWgu->_2}5@a`)=B3C&!l*c=T-vSP5^*~*{6x^WK5M}kU# z{my`dFYJ@DZU zrnT6n6RH~lFRB|ygESGya+q2XC+r7^k=z!LBrdOH<@@?>0jYi>3{vrqPGW(6Nml2NAm{MUSb0 z6qQo<8Q~nK+0pJqc}y5tfzj|6WXL+CsF!{nx5b$@tlKc!b?u=sK42h7hkf(z11C{0 z{=zSdk<_RWqAo%Z@nXmU_Mv8TM<=7{oN59m@Y985V(d*aBnl;>M4>%4$QFrWOQTQm z0deIG^-T!Y+6hs$_C`C*ruZjK7H7E4#tj}r$qscp1?ks0Do5pc9NV5caj5H!wv&9Y zDWa~*dxRjvYw<~o0niw9gv#meTOwKoMCzqU)#A0ntj>Bgb=L=R1&gZCWGP1nzr^g8 zyhAN-?GOFfPDIA}i-3q0ILDuk{eQiYi~99mCr!cGNU4)^vVI`)Vw|)^mFR32h&Ki8 zPHPa`^`Qd0g(xpIJd|gq$g>2c=_#vdvS&0EE!y?hMR?gdBu{ZIHxzt{=N3^H_ltxe zLjo(yr(>p+)n;saj~NfEfB)?J3x{Km=Ey|g60Rhs-M`=CZ9QVFWyQ|oo=RKz*e-v8 zDVR8*-RYrWGy#G4=xsN>7S5I^x8#3~$|Pi`tuT6LMRVYsHv4$5M`}_%DPDgw$B%CdEDIM zioY2IOat`W(veAMMam8TRIDE?#_Go+iz8NQbMhDq5P0MC+bpP~DEfTjB9kEvS{!Gt z?Y=0Cw(7mm(glQfCRj-*4SQx-)Z=WS?-lxROyqOOL1O&e}r&duk>Pcf2f;ui!aC4pPsqxcYTwK&u9s`F1VUt~Rz zquy}%i>hx)vg(~(#POQiNlOkLN(rrUx1M$5H87%X%uF2Q|$xjeD%h!jJi z0tf&HBw9!A3ytyVdAu(=ms^~^OtdFiYx^nmVYRLO+p=t~(=^*S&$^#Un-=WWeB{*z zd8JaZIf8i_M{zr~^_4g}Z!nAbpHa5l)zn!^5&mfYeoM+=uo(RLb*QD5+ z7DSb9>;-AB9imq`7|(SdO(Lo}CeE#|2LAL7|1!iHl?zW1G2?nRDKQRV%7dq1$^#GD z^!4(RRHG)p`IIGKp$P`LwYEoo@h$$qMnPi7J_>epcUybsd8ERs$ivvuyj z3Cw{^&8tJzE`PV|F?C78%CoLY5J=EkxKk4hri90qt1i7cXlaoS%#YG^mHBkZ&^MNl z`s>{$c|HD%p1?LD^zyN?TmHP_SNe-;QaCY$H#_9oKfyrMrdTe^*zQuj^fqz+CC?O> zNZfQReGm|R;7%Q>O-cdf3w{^NF1z1PdVPr&RhHIHdtEM2@CL|8IW}xKZL{#wVu7U~ zo7yY&43vj+qqFWdyMY6{P%?@a_pv0!WVsV(o{uwTc`gb}cd(m;hGL;LiPng^ zP2>1ELj%YcmOKXt+PvLtE})qWK}B4Y&%9k~LR0j|6cOU3>!$M?UwNUFN}E#<Y`P-NF$0C3 zr33{Qwy03$R*6zlPZk(B47#iEOSEKziy(ZCkxmRynKf;9x{M~{Ftu-d2Xq$4$Io~R2iy`XQzvpEh+CiE6TEVhku zC@3NJy#ME2xBXS-Pjg%QLBO*h;Q*@y`k3A$mVHN|PC)OVu~BA6fi%rK| zgLUS;RjTAD&RjW(*Ig;NCH|OR=wigsQLqG2_0SVbHKN2mo1B;C(dvp8AK%)S{W38- zHVFRRmWZBU6}eP8^&isT6tSaa$2itMwrOaP42KymN$1J!FljjDMMbhh3*#c?X|+Ei z(9Ym;p`t%)+29Y*7ER{3s2q(ZkssGKH`;lGkNk4=qlcvveN|zU0gy(Qsp(T7o*i48Z zr=6I+l7vhux-=Q`AjVP(Qi&WDK$euj#F@<4$iP%`$(X!Bdr>xn)x<7)6qbA^djt*MyrHG}WUliF) z>`IIzY?I!#LcR6Rhc1U_1T7QSa@Geyq(N3*TAZuu|2FZ>UokuBAN*TSy(ZE_USSws z%U8ts?BFV%n#Q6s&NZ=@c<;(>e>*sGU4;3YD003wO)4RKm?VCCKAt4~AnhDgv%v1G z$NC{KhZZ3gJ2OfpDc{_2@Pv+)U>h+q81fd{(;jRmi^^=3rjuJvUyX}e)pc24xYDdt zF(hn0YlD&u$5>~nES)Rd8cb(}zOqVcgV{#%_YkU<2kUbr^G1rPdwPQQpW&(ncGB{K zb`aj0O~ab`y;c{NEO3YwMwLemBo^59$!OY39p*osCtE~`WV8!$7G!J|4Y^5Ccb2DI z)?beWCSMFjvFO4F6k!HoCDP97*YKieXZsLS*nL;gE=z5Pz_3oGinn8jj_){}b*F7L za|X-$o`!G`q55cGNy%x+TUGpCaDH)Wxa60hxsRD6>n6_hs<`aTJ#EcDLs1*ZYkFJv z)Q|17XkSoUAJBeMSGwxG+ zrAt>{0ZVt8#_R3fgLoz$e#pArWIe?qVA?z}HY(~|V)w8El8M#dM$+|% zR!RXE-SVx@*qA{-j$rolTYFAcP!dDflE7R?8Mj!3Ifq=^pN&ahg`3W)>)N>tP&1Ub<_qCm9PI#D6uRxD*5@G=)sF;L?L)aF5WZB0?wsb7G zeQV*9!4L~aeHmV&s4G3+6Cos5(pNLlckh}&B?T;-BTeio|0{yC z{A`36fJQQ5DZFVcM=0NdHikD>yn2DXzqT}~3T)!|i=k2Y*Km@mM z5EidV;+Ee)2VJjCT+P#IL27+4?epkf6LWIeIz;>GEbU~XK zEYo)db?#_KGl#IwM?deD6jTopFT+of)`UixR$d22)D+SB12i8ouBw6iM$#83X7{rt zoiENn?mFu{9^SCBQ71KRgTNLtH;q!qp|GjZjy=Q-;NK&GZ@-7fkkMKsZ2zWFnTQRN z^e!)88qGUmlV~%zB=PvvYRTBA4$BGauSzR|(94*^q_+i%sc67XCN!}}v~2y*__kj7 zCot<|^l+Am{Ec3^tMKhJXvI`w)wd`+3c)i?Y5F*d#0&*$RGu93Z_?CskKzNKj^Tnf z$S4}IC)^o9Ns1M3o%_YugR`yZxmcG{84Z4{#jKa28&eGASVjyPy2g-x3V(mf>4{}$d?S*74vH#F7!&N`|h z#1mJGZR%_}^~-pkho-KKutkjJLWvHAE)x#m?`AuH!Lrd<3e0tWNoVX814nr}iPj5m zWf>XO7T95`&09;)`Jyhb9#Etbn=hz3n)kLu);}m5r!RzoVEdx+5cFjmj)sY32_5YY z@gL%Lj%sEwwSvc`8dJDpOi#R5Wb?iRC*gL|s(43kZEIv~$5^z$vX+V33dy7v_+^_9 zzR7m{UnVrKC-P)SA`X9J(AWaI)Bc5CGD8-wogAj;XHKb3E)qJ%qS23)EF8}uo$=-u zQpp3pQ>Vp`Le|dY=AHI48(fR|l-5X>&(N@vC6Kxp#Es6CpGNcJzq(Z(?Ik&!OQ!Q!a`2MWkPx#FngMZL zD^3ee4UWA8@!<&!(qzCxEQpSgP)0l)ev2#7ID*6PG=`dmrws~p7TWcyS+7}^4w2sc z3y3QZZ{rOEmT`BV!`&2$0xu*Ap^XqfI?PVFV#57=>llGcW09YN{6R^bnDAIphIwT4 zbQj3dCE6)7_)sM60X8R#9y7MW-Rkgqi3ck~Vuhz{A6e^1=dbb-I~egTqTNnQ_?}0( z!hNdm(f?;o%XZgz`SF{0u`0|G>1XkVb-X8f{abYr3HFGUp_Wh}%rl#k+K)a%-a?5` zB$W_S95g!F3u_hID4){ zG7wq&%>od-c^C;8RX!k|WUFquT}%XGj(+JUbQnU4Ks`B~sNQ43^&DRN0@Q$Vw!bf_ zGnX}0aN7e_q@`|Oh{Skz>XlaT59P!>#;D5#H2>ZXG-efM^tJ(GlB8siqWN(*;7VkB zL@?!$Bqv+A(004=Fj<2L{cF&Y1iQx~XLO;l<9wc`{_zC^zvGgL#KTDA&s0|cJ#9dn zu6l;=n_65ue_yXy*B;CsX*(dTBSA@*;t>ed)$`Hhv8fI9iLJAfqO(DkM(HNz_`~F<^nQGT^BF2a<#5q3ywC!)1`M z^v+EydYvm^9JY0=D-aXSEU^v^`aN$&=u({edc9Tj(6FaNw`Wi~0d5TbnLt5no0uY0lY20dy* zaVmg_|3Z{zlo;J)=jW*T9q8}2y77X@o1hD)=`QKU0A{xweWt$TDX*a|s~&1|yh}ur zAxT%gY7CVj(;>2Gaygfx&mUICOd+QqM@ua+_A0lKbhr4R;AU91gp=@F$_dQjON$E@ zRW0SdR@!805=E3ChRMcA`CWgSG~6!NU;8gga$ck6ja_P1>9PL%36NjaJ)eTWle1e^ znr~PWHRU>jG(wCC!%qdF^_(V|~ zbNGSb>wAWGe!I5*_}r4$4}9txtw# zE-5*Hb`jiw?ybA8Gq$xyudtmZen{#1V4;EQ3_pHsb)s*MTFD*u!{|9M&|PwG1YO5d z?64e>9h{)U^Dz;kg;dEv9U&nDN% zY5rR;CLu!g?`G0&q`dO+*Q)c|x4kVPoczL`vaO2OwR`uYT+j_bSG!)K#}9Pz5$7v? zpy+6(Tje(W8cuF*z=fdO1o%Eq7I{AkDas;B|P zu%0nPUtg|3(a&sxVfUUfA1!4OTAz!TE1T@_0fAt_liEI%kxbU-*Om|_%gJOkm!vdZ zX-(yIASiE+JGtFWwxF~&WA}QZ7joxJZn@j_G}oNxubz;Uo?Ha3g$Eim7d>^9Bal#H z&tvjGEv!RI`MySOHm<6{-L)7#;!-juGxW0ZaHXx+((g$ft5MV@R%Maa#Qoi$U*1;( z{ey@)gnoQI&~5akF+Yc}#H+J?T}|*?HpPxBa1RbS9g5y%rUxoPFYrA`P~WqZ-y%$E<|NKqMhM$4Kg*# z5BEZ|M7g23=QhVi>=jm{P|Vj;x)ht$cfn6khnpb0#^ zeUGsCd(_mjAlXF5=IH(SJMgRUMeXyP?T~pm7gi6!fO_IJbY0W`qM|rcrc%~Wao}^+ z)tY;kmJVF9{y36>4!=x7tFBuzJwAH-sROA*pLB?{%{o_<_-F<7#-O5Mpmgr1xb-OOUoCt}f~<)4y{d#f zxy=)@I7F>w*q5H*I8^MF5BGMqoX%)Bv`>A-blBC827@f3FzP$(DUm(VCw#}neq>A+ zSrU%KGf)pb=1L{%#T8OV4Ie^p7#g%XOKR50Lb2A=7WZb@<%|`}O{>WDA*5!x-LGJ> zXP6WPzFefV3hw#Oigs-0$OBhNpa*^BloMXN?>5XKdd|I_ugnJ&*kvPceT4`A$~|>< zkP`VxV_RE|_Is+3R1`(jp+r`c)}GHYlQWP$XoII@jS#ivhsP{?tQ5G-bM~W$EFB_T z8$UR7RE}Bc_L8*oym@OQJMSB~vr6xn5;ftOvYe+khFhi{=46lA*|jH`aVhB57W7{8x^#WN^pq5q- z8{!??yhK~!o5TFG3fDkhUF^5!(MLPoNs_IlLEmChv>%_( zjffvT-B!OUH)6$H{vwf)fdj_oUpRutEtIddlBN2bvk2(NlHRby*S&skFYc6WE9P#x8joVyx1MavNX45Cr@ zdz8|~4AdpOetT&4hdHH!@sRu&9l~BrZhc*|c3_O7lVr1Q)waK+4%zvJjl?I(qk}#s zh4lsbPm&`9O+e6U)W0^rHskjr(0&*QR5SKLVX+%=W&^s$LRsxlklcD=-Vdvp21TIp z#v3{3-#(YA2x3+6wnlU%RyRTBEVJ~@;h~cdu z%hq5{HL%RtfVNASN-TqJ#+z#9-buP&jZt}SlAY^CWlyIEc8>FGv0twyPS&Qoz@ty*yTls6+&MCtie7)XyK=_~{xyGkQnye~y`M z&)>L>--)lk$8p$%GKz>iddE4RO!%Fj>n~?<P}^mlPPY1HYc4EBM?!qvqOP$89*@VB9) zCY&4k-yal-+|L-P#Jrm>y)rwl3i`R(nIaE)nH1L?3u79cE0j#1Vh_aQy!kK%p9?`r zD7{#1C|Uc@>#pO?z%)9d2@RK9;%tbN>t7Ku<2K*vxHU8`ixr57+pweHieQ)>l}<<% zdT-}|H-N=FNpa(`IamwfDaKHC2x;H?XYpH>ja#n^$!_Fj*OQN`zI1gnAxKiaWiLof zu?X3OAFLAt$8c|P_RQ%FGqsWbB1NuDI+I(Qef;QPvBFV-r=G87qPO)3sH-#8X2hI5 z%tzyA$+3>|)~*L%)SUBHLJ(L}qZF};jwQDDA9bkpuwA$D0c`iBQG1?&T<n)-2t?JgNW6f>kw05dG=uZ$l3_(bV5t*_a5A)-z zhPLo5@94-+9cU{XWug7z+#u@($0PhIP2s=P?OB(b3>44ld)Y_cpb;}G zLV;9dwi0J=eL#{DXPiI+$-yjS64s9COv;Q^?ToLb-K|wub45K(c{i?#Od4CJ>#*9* zj7#=0=3vNqCP|R^Fkc_osOrJB1A@ChS0F*f4X zGOWDPogfvsZahMpONkrg%~7M|a3>^lPwJD6W=D!7PmyX*MrYTr1#ANl4RqMr`z`8T9@NS0T5|PKgyPq3=*68`nC~K1Phb z+8l+&w@$16xqD1<$j|D0X_aCze$R(6?!!k*BIV!Y3HA_QB?HG-PY>21ps@Z4 z5$#2YK$U2Ov{SdJ2clOUXUiTR8Txez{bZQbZ8`C7!ec-cH5$$!V`k^cs7*518!?LJ zTORo#lmFuf<{>WR)rd(Wr8h2bvPG7r-2`$3m@1MOkmc}v99t@mFE6Lr#5z>zX`nDRNu3rGyQWCy^(BZRYQz{1hqix3->sJY zF(O0mg~n>dwq3Qdw#yp*8Eo!$sVh7x5c-dAU%V2u+hOkgUxXSBp{dV-_2sTl9ttYd zDxxaz8D(T{`rM8^Gh7?N?s2ZZ05K*!)CWaOLf#Q{k%MW~zAZ*p7jT3mbZJA9mmnFz zxG+mJx|GVx2YTIOv|#Y{#o3Op#5HkvbC*l9O8yuzd;hufa=LiWuDkATH)e>+v~NDn z&HOxvFdU!}YP{R{)}7qtW9B*T@MGy6Tp*tlW6i&VA+(92$6*%U;p?V-Ju~g5S?kHt z@_`Lat}ZBkK2fw9PCqIL@86Wxfq5FHO>Z6V{Or zA@mqWk*czN)*@LBravZ^dx+``GPLzi;t)>DtJ}Us)9-Rg&sV!$Vu@O`GR@K0m-ELy zEzr)=Ul3CI>Pm9!$^Xq)w6UK}@2c|Gtcba+mip{uy+cl13HIioxCG1ccQfy%;}PVn z5=AhIj~NcCM&#p2mH>*gScO??5UYRk-{sFtm5(ON8s*r@A{z&H@rfKpoJaIoY4JP~ zV`}+_kD4K^2d;daPdh5YIQ>`t<-gQ1d1Bcn8tJ*uuI0ZNoT1c3r~1BIM4SlLop7eC zpm5TX`hQ$~c|6o@_djY zgCT3kmP(Pb4I!kgGnR@W%kVoN)&1Px-#@*c`>C1ve6HnO=Q`)TjQ*_!K>7uZ+1`u3 ziG#JucHd2Ut$j5)5*NT@B8?BpRM0{sL@=+0PE<>wekbvf2WojZ&TNOt@R$Oa5W9*E*kl=>IG^5XuLT zS1oHN@g}nlvWFrMz?+D#XQFx>&D)5U*Y#3uXOy`4sdb6huWTVcCLfs0mQ!Y zB_{#a3m3+6>tO6Ugzats6Xp-NC*VB1y!I={^zG|kq0ggNXr!*7jk!=h&Dk#n4)LG} zIlIq*bn1W5H+T-N8y@f@EvtLD>gS>JL5wd=Jqjxde1zG;m-yPsShAG)kJni`8!FzW zj&T-)XYAZLjx<%lzpD<>f+fD&+-V5|(sHk2{Zvrev5|W(y)VTPrD5eFW4g_1mkh>y z*BOkIp~%`(gKn$uM%8eJ#gH!e!M6xIvHW}0O@-x%rh498T2IzxwCYfrJkpo~1HPji zF`+>jek0tcF+UfgE2n=?kSR)6(@}Ks?~+;HI>1|isN2JlR$028XaujP!;I31<`#|i z@461up5A%*8kbINw=CsiMPL>ff@Q0Y#CU9w3`xuEd~`(lT}hxP4xH`<>iL&J|~ zq@c~S7Z=b0O7QVzw6;Q+?O(eLzZm5Rc8~my@y~dOU;j)Zl)+hYI9`plum5)`pG$xt zxLwF#NG3#?DjeHWal21`ZXdkkC0_nbx_&k(mu|1R2yVvEyfyzqB9O5B>Vkj#$u#(mYcFUeNGtYk4*WccO4$}q(t_7tsj~x6 zvznCQ#P1v4j>Aepe`DoU7&MW`w|>XTd=$4d#^9r2tR-hB%$2c^7fQ?O=Z37U9}D8j zoKP;nzKxcK2iQ`TvJUaO8{{9DS(-%a?Fu4&@TD=Z1BI7N>QRxXW=EkxfQH8Z@AQ% z;eCp{*FQO>apV%Ivz<`57+^RmpI;{PTLVd$OT+(9JOUt5Kqt`7Ww_xXvcuusG}xY2 z+AOUGrI6gBRWn2{k<$HhB595!A~Hd5EVDwN{xbXDIlUedm{^7&%M5ng&&SfnO*97M zP$g!=3?I&5()DC*5i)2ACE5YNG^2Nv2dpQpZCr2pWZ-&{PO*>k zo9FVS%S8tZX<Jv!EzZsui159 z;s1;@6Uzv@%e8#SeY(u!e!~6( zmSpMtLl3-*;3R)>q~f2jAXdGf>!H<{j^aLwQ&-T6c13A-95#BM>YrmUzc)+L#oXq{ z({QE9joJT0U&CV`L`V@uGtQ~zr$F=ieCgrKVJULQcDU3VbT`PzUm|(wP#TPKdRt&W zu*Hc(+2QI|O2NOg{&xt_+lkP(g4UsbV-B)}@==zph+(;d7;+T<}6?9^n2M zSGlqMdU{Irdafn9w*efmyd1{+>{gzf&dnTO{tm2l;-WRgR20yF*UjH_iOOt$zp zrD2`F3lzwfE@$fg4Uq#QO_rRD`^c?l|6xc^?5z#x!kGJ(A}YognGNaE7*}RPl%|zI zp^@0tTUS9da+t04_;6AHO z?Y^)aRf1(U6ycM>=pxVd^W(o%()ALy(I0XP)X+#F^^o74*F;1;^n5eyyLIYYd~B(4 zk%7rQUL{!dMs9A*&kbo!1-=@qe%;Mc#GHSi$h9tM^Cx(%Z*vM{u}G2nR@( zPnjc8EN|cPM2ITJToI)JoAhk)!gW?f+?3^5&SATnx*IhN@zDQMC|>`r-7L>~pl6U^ zp{lz5VvIj~eC5zm{I``o{{=;bR>@N#(!XmBP>zt+qCs4 z?6QOroemvm|0PEJo(`Dg^C`9)4boirKwfbRw_X8qHj>g8U`1-M#goSD zB7z?tBV6=jS-gQH@xMa|0w`R6W+fJ+y71*t`^Js@5=8hN@)%+QDNc@L$=upq5ch~> zJveXC+xqWkVa&NMj(Eb)pW7m;M?DO?$d!I35gcc;j~AcF8Ow=e$;JqflYRG<{h!ni zIU|L=SkO)&F2=vX&zc6i;7#N?<&G+4iv&~Xl(*3hyCS*cFM`0a^Am1A;bS;@B zbJfKcrHi)2ioIX_pQ0~(nH@{XI+y}%x?li&3E5UV*+q$F*^6@1@c3-E#Vd$e@+Qlc z?Z-q==b~jibL2B^=Z_&tni<7(NoC$*iQ_n&93-`#-zjFR9`kys?C&6@!clQ(X}y#cV7fTsiaKZYQCD#nDJjKIx( z@Vu0S$w-=kAItW%+GrVJ)I8~Rk>X&a9$=7hZA%QBHAJ9OmWovic7Z|J_GkY+IDQ`* z@G6lK5yd#5fD{!Ln{DJ4hSMUwB6#3Bt42cog#d$CZc&_Aw~H@JR?GK2%6tAd^-3T+I_B~TCgSuH%kCZ-;sX?_Pr4RkmpxROmaAZ?6F}7>G;>wND&;fQ; zIFAdTuNoFIoY5DFZB)#h#c2f?h%88pLXb-~s$sgmpG)lvxb7W`eK~yizq~QzXuX0e z+K>~L&tY=m()uNwclGGX8Yq#sh$vo+KcYv1pLWZVJagSf+|qR_yiy71AWDYyS|X?u zID{24qF-nD4t1u#LN0SSyyBbvqxmC?jVs@pc4p0m^ZAqJ@lW?=JIJ73uIiBHL9{J~ zcf#NPnOo5NKP6z{A(q#x3h!}eh7Ok6TOVw0!4YPsLa%Pf=4RpGZXLWYS&$LgrA~n| zuep`3Ms8|d%#o5~8EfSO8kr?OTVmtbqbifq&6ku7P@1`>cOpX#xMWK8Pq_uO8aGaO*U^Y&6>ard{qTU(qo$&S_E$26L9nT$#wH?`mt%5@tbM|^D+G-;f) zjan(Djh1OHRvUS1yqh6Esy33<*CeG;hhxkio-^=e%Mk5+mV^_%s^4;@)XwmVrbOf6 zXblwhX}UpZ%t%z*C*$rJ>d2=kybi;>A-bvJRL073_KO^&=e0+s)flLziZxQkv_nez z8JlL~f%J^aj?P!TLn--@-@-)e$5OLb%*Da7PBVj7giss)s0oSrNqeqS^ppsn zLG}GbPkg4#?L=Nf^ZESlytV)XlzO!J)Y&@jgSZ?z`e9uAivu6aGQz7{M^{`;mYqW| z`IuOzdILw2%$85;=~OfoT*W@4-O2GDrn- zECJ*ZXZzgyYgw~|RJRxTy=AlIV(~&nrLB}(v`M~iPq%Ad56)rOL%ei6ES{Q)&z>?5 z)@~|DhiA8|Hdi01NSCV|p1)Ha-i-Zd`>FCyORPr5`_fut&9R-CI+D%@Vr-~mW9k`A z#fE)Xr((>dL?+JE3fgqxbn*@2Xt9qEM~iTHp-Vox{jABU ziV*GTrv@=LP1`JH49K*f!4g$5i)|Jvdb;LbM zJ`=AhQX!{mGm#Kwm~3R<=8)K=p26!o-d1TKJHjJ(!M4&!6gz(`@tdCswNxvEBxGtJ zZ=YB+_0us|(B^1#fhn6|cruJwf0?O(J?>00wuV6p8SJtrXBlKvjpSaR_oGw^iY-?z zmKo-#7O2{+7|j@wJWeiBcV#+JKBSe6=IYikC~~Sq4KhRmClmX-Rz_D3lC- zO_R(R%8k$_yQ|`z!9LcddCoNsyrk>%&(6`CKUmC6ox|l0n^yO2&!AzxzNz?|pxl2} zcOu!xRx)g5;bz~=qGw=d`OI16LL;dpeY+%Tq?Bq#IO)P(YBt{Z#E3)jd=+ijyCKTC z_Cv?w>&Tzz6ceR|3nrcIB90gKRV;P7?Y`sDU9`>SD30M%5WTvZ zS9E{A5>uhBona0|g`8`Py*#)C1FA{Oi^Ug_MYTq`YGqZOl`-+Pj~sIwOJ}{(4PI}c zl9E>i+6~_2JD7=zIg@Gj$PEJO@51QHh0F$-1ne#D7SR$^*T4bteg1i-jlG# zfqz9Z$ulUWD#^A;M9{Pie)u||nEgj%(&!LH>-IBSpWu`IzJ8A))<8^S=ocD!l^D6w z%y~8Gj$2G1TeaWZ3F0eZz51J2_Mujka%kG5jKFjaNj;JP$`LYW^p?xUF5Qsg@$*E0gKjLIvo*o`hNFs<0DOZJ~87#Vzy zZpL-iYWj)Kd*;2cDd0KPQ8*=zPJSPCzh|itg42PgnmJgH0kzI@uP7AcOk+nTbL z^KE6{Nrlqiut&LZYRYE)khnR`ALUw*8hPr2=h5ULP>S3=c1<;NnqynK+M9s;=P!Oi zj3B`QwU-Q*j+b(9B5SXO&ru{!pYJYkJJ7Ak_>yue!>@gjPO2r3VCB85%@@vASrV#D zEpjm-_?X89+Vnh?8i$cwi_(R$D!&xQYwDM^f#>vdBbaY-RXXzq1o_w0J@juQzdF;j zM>=yO-CmZdFIb8#d!{_@MO`l9{2|J7bW-$KjdB-*U^A z$GnpEyi)bn1l9Cik@XZQJ)9y}u4jP@J6Fp&9ru%Rpn}F@F`BFSY?gZKMTBQ*cn)Kv zM0JdZ6cm0zjECgV`S9Jd&)(^7(e`a>(H1(@O$ryBdmGABaG~aG7M>$Vy0bfHU&iy6 z-qhPwSSq&}|altX84a+~f|XEGGI;wBgYSYu?K4QaR&1>z>9VrK0qe zNg7`t`IS1ZW6_+qDx6@sXw|-$amdptr`e!j=b>8amvV{0%AXYRk*dtT&Dh4lci~gg#zvgnYxolVE=gU(~ILn1X-gl+wZgj)6n{8p97To!5{hsy<2S`hC zQ*Qq-n0;xf=@k_l<-^=hyR6Pe`Nd#23?^q7<>~03B` zUp#yt-I$1-rq3phHHA@+W2@bEW3FJ~p$SG|*(Rr%`y0$NT}p*bBv4-g)Ni{iCST7& z!T->Z-mabdNU79sK|?G{O*;i3OQI@Dgeu#oZ^V9IgN%+62|=Vs;^d2qsPokK_NJra z2Mof}k3)<>$dZxI5gGP>Z%k*I|HJSFTPG#^$QemTBp(Nvi2vKbLXy;Bo{L(-XlM3y zO^pB6`OBVbSZq(dd2SRE< zNHvJK9e3`loZ1$O77d2JPc8A;keuj;5f4f(UkGPywHG=IHwMU0KW``- zz&kjAnwBGo=_5=il(VIV=>8(Jv5(2lph92L4}d>JU9u10lzVzA4W1ojm(lH;JGB5x zi@k`N8=w_)5NZGV*j)%_7I8zJ2Na&?fk)ZzN+$)V|g{7B=%2 z0OQQOq-9C6%RohQK#<^wRRKrMtJ4UP3FM255#?0-jfR<8>al3g>CfvP2zv2#KnB|7lR_e@ zf_S+jkTOaJS4K}|N~r+2`CB_%uJ8hO^=Ir{Z4W4J+Mq;u6mh`+n$V)(yt0&<2a77W z4os15f)n7D0mU;wJK5b>@&g7Gg^iyFRdle|IWX1q1h5#~FE}d@ms|jtuM1Gl37)V2 zgcwbNSX=4Sv5{W0e7T&P^mF})I{v3Zn_jIfkUZ^2#9Ze*4jN}8D@t!efH7M1@qQp+ z`UhrRPx89~Ox?Y6GIM|%}N&$LwOJ@oxnlXMskq!TB1~eNX zEfVsXyQ7t|9}G85#$D7K5rc>iwV+F$(G7ZA0pD3bfYhh;fX2+0&t^;VHNYqflv3#e z4SU2Gh1PyW1LTxLU{^Kf$CPYM=pit^gvJ%x533NDSoq(iN?CzdiMOHNvrjy8B2>Gq z#F!I(Fh4>FA<$K@<9Y%Rkh&1vcH&`t$`@NSExl+@Sebdv>m{kBZa zTtO(Z7gLpT51zb#5*_Q$k`6}JA8(WdfA}Ro*D?WU^U<06{YxO@7Og)9|8??80>{Sv z2f0E?pFx>VR&n!i?h45DJ5h%+QyhTE;MS^n5IbP7uw4HTRJEe;a*Nw<;F-gE5u}SU zD+&{`O~8K16+=UvFmchV{!F)haO83ey4yV$ZD!BE!9=>j9`X929wF8)uPv;tVx>9s z=A(HoodE&IphvEV$K;7^2sOZ!gQ5tFprg9?gwEUE*3WPGjSIfmckRpd0J*>-7|!^! zCX3zeT!fY_h$3VEU<(3Dj4*{rq50X|ob1PBVqk-d8TzqMX>fc&`&>8v$iORk8yil$X#eQK`{H5IX811f8 zEj4Fzes)LgT)SqbwKD+DYZ>1|6p!NlK5bnc#K+<9NW}VV2J7e5v*-|_&|ZZv{u>Zk zDUQ(tK)blIsR1GP!F%eq2)<7zl7%`=;c9)HjGf|8+`37h`6~DI%Kx4K}gk{>2QeqV4`G0=II4TzKUxK`FN^s(Md~p;s0&sZ{*(m5s~N&13Jfs?KZ~aN z+Lk3(k(n**oa4!(KQpnbWD}_Vz{Z!?%iaJZ?sm`?9hRLroYLP?C z>@p`dTK1Sz8ILp1x62`=ryGZ0fwj1o@BCz}pxwtQE$B7;X!N5L7|zx`FuuNEK<6Y~ z$R7A7+a#1FKK{H_!H|ys&qfMXVE^1wq(;VP@&ns>zRXqHJ++=iX8lu%5m+Tn%}@ci_s2YddbU`l zU2Vk>ppYIn85I~xShZj0t0uVqHcq;Rz*`3TNAvD(Ms)CYquU~O6GF~z{MCnl{-AcM ziyn3hNK=7c9f*}l2bVX;WBp4QXKtCJx(zP(QRmUR$ceZ8Ov#~WjVFSeOTq8<3I6VQ zQ0%C3d->bxN~a1i$gRQ{Mi{Bfugs5cxHm6`yR_f)SOiygr4mR21FuWYik!Jc-I?1= z7L2O3X3=A`MY7-=LX|TT=h-?l8#;^SBgxwO6F9oIUrdE2CYwuTS)$+4L}pT&Qy+E} z8r11nbb->v8_7#Ef5#?SR2$SCzI0sJ}Y zU18~Q2;LYAA2TO;#t%r1)6a7zw7m!=>5^acW&zPJ8nN+1Tr;%NaGi!))plzTXiRGs z6y+K-5c5?;`#ql5=6&3;`n~P;xm|?Wguzczz&HuS9(ABTJ`jHTWtZs{4ntv!dO_49 zdVJ<_^u}Mni13KLa!)CB<2G~V9E?NN}ydEV>N{Yv!XG z{9a>(#azKuKfN+@oI$|?T*~Cq*y8UWy>j8_sT=!{Xv=#e+WHC#z!T#^!9s<DdVV74yvN787ETqf=WJ94nW}s$VwS!~_tRdFbg*tv$S@p~b`aGie+dmN zTJnGP_5P7fZU+{f-DNBi7fmhGNc#KW!^T8A`K%Cv3 z)+J$;dX_um6k8sWnkl=SHw^t1V7e9sr}>-DdS~dyK>svp4`G0v1LwpBB*RcQ;ltVT8y7EVlu72vi6*%3;%Go zYLFqh3q3q|LQ#me`IVKDfRrDkW_*spqe}D>i)j-@-XCZ~I)2s!U*N`}ea*hkAV%&C z?Oe6Q&iYqUMg_Q~$XA1n$a(k|Fnu^LAE6^1H;;0@{SJ{ncRySGqa;CCh^}8OhN@{6Ii_*vl zRPQs)F>CbF_cDq1z5893i({!_nNprb3&mkd?HlL3$zPHjV)55` zmiJ#q_*IC#OXB5tXX)x^w^i#+tFfjpcKfKOCKa$5IDt`=Q~6@YOw>=Ni)-jZR-az- zv?yjvUEw2-u3+o8qTGtH8&>K@fBpCtWVhLs#|7xs=Hy3cenB7bySetX9T?}t1u{Mj zA&gC2i4VRw@fv|CBdcIY|I zH^5+$IjSeX2-oB?7GlMlYv}RCM8T>dMjOF_3EzVrhr?|XvC1-*9)%;BI*I&eEYAtK z%f!aABoUVT2DO~Gt;A<%-Rqn8z9ahU2dK&?2<}J`6yeXzRqv;Sz8vW`a1*qfh{WgF z5`;g2%R~@-r4U=8=-YUKC<<34lBbj7QZ*G@Q!9BD0=7ab5#!GyF@4^5{3Fk8m&X2| z1q4Q}1)4)h$NBaVey7QW2*e(};{rvq#c`N=YZW#@!Uu{pwpy~{MUN&uvSUNhoNef6 z`1`XTPO_+j=`}9bYIOsDX`JbIXq z`co$SX!|I{#$#@#w#>>vS2yw7VLCUivEN{ZN9J%<--mLeh}X%i`qid%x#%OcEHQp{ zDhjG}Jq5)Awboy=?*RHtCHa7F_Bm;*djoqWG_QFk3D%8tVP+-;-77~C9r_|5DZ;w? zFg)_1tzGC=n&S?Zmiph^hgib7{jtGRhigsFq-#e2~H ztsO|ek(17O&|F;X(-Vh_Wc>Z5op}z^M!w%$Wi?=1C6`=0>|3YLWujp1?#uB`pNOgF zOw6?wY|1;eFHzpJ%RZvBSOi)RZrQf6Ia^l~Bz;@k&O-mw2&+{6dBuPy`+IqDH+m{~ z@Q98Iws`irqc77fTKr2DnxFG=$FZelKQLNy7rj^!Jim#RceR!F{-vt)neOCM`pXwL zAJnc}3)FWs^fzq2{4QBT#gJ)nkw@=)Io(B!uzIc~i>&k&TqI8jYGn~%4mxWWRu_>n zQjW=!r0e!kW6k!l?ajB~?s`71e6QOp z=Q-j6aY(3pk4d#@$Kj$trN^7$;4{SiYN0D$$!;tsXm!~B>Z|A~_8#KHKa8NQT*kF~ z^Q@h?o3t2_`*cz&!*#?4ptQmf+>nE*S3K74+U5&9=69>CQi}d5Lw1Wz?^lT_?><{u zuQ78iaiv@$%g0o&AZ`rQk(5&+cu^4h7HBu?^zL%J@r!KXsY$qdD@!NwvlA$)U!sWU z&FI#?LT>4UmY1ypHW03-TncC3FIr2JC{W5Pv-;`XT;Xfu9d|W$iM}|JQY0__EW^j%mdLnoGVpLc3ic(k;rrl4(ssV(l`2cn# z9+ykZQ*?-a&g)Bc`;1J4JrKM$5>9IgvM|x>%wHa< z@U4i!H$18yoDoZ4sA+gHoa5-%RAFTb>-jPhmN*r^Kbg^Bv;Wn|hO)L~I=9&Gpfk_4 zVo4bE`;yg4dvL^X;*gr>>#A6rMB^qtPz(ypf;Mrq+slaw(@w5P zr50yhtb~l-5wYdawjs)5F)?N6rbYs`2>xHz*NcvnZ3J^}$1x4INvZ;dd}UHa7_jlC z_EgSV-z9mu(YPxsR+?HDGHYWWY?VD(v^Kr6z${yo<#{Ln@gTG6VaV6}GZ$p}ZL->Y z;+GoerWC$&{Fp3#FMNMn>@m5JD3LnA_P#;@@srLrZYPDktxKL=X^cN)V)8{vq1@fF z`jyOuoWam@=7`1*ud+GZpa69GKH-#Z=nHk{U7wW~nBO>7Wehe@rr4|IHoT}f6tl2F z+Ha<_aO5$x_Frz%N|ZwSV?mvv?Jsx`%bycJSNvh}ieOHjKY=x_sHBb_s(wR50id9$lPU>&GpJN-*lK#Vx+4 zmrt?E@VscD+rlWX4%X1x$g>PN23QFc-sD4Fu@aSF3gOC3`I59_=(W#;z7k<+7QlHbmH=)AuDP z6Fj+C|9VnboqT*Qqo5YsaFyX$PL|bYEbJniWUY-9{&WJT7W1nIOIxN~45P;t9^xY_ z7&b9%_eIAO7$XnmPYrq>@O&x)E@i}u@Zzz(UDvr80wYW1pV#vC9ie~kEYfRl7+U$Z zbY|H3dO@uDVM6%$WKl_e5^X6D2cAHzZU-EaHRG358dmyGB8JPtVsPwTxpg?_YMDPc zMEJ7BU0bMeX>^rfoZ9I3acc`}%#qr@vEck0%ZMv5ud=IQ+tpmQDvsz z|M0-eV<|v)E$E-oA3uV4RwpV)p@tJNFrqjqCO+Y@+J}NqO$a6wqpYcl4NKX&lGgo$VzaO9UyXn$Q zAIXOnnFfQpTOu3;FD9lDBbo~`tUF2$?u#&D*3K9z*H*}1aU@u+kp*wP+P*3&57}Ku zACy$w@m5EA0x(nTkNxJ-gffa36<&477aMaE-K*wayUe#*3&2KI_@zOUtjM{y(!Ez( zB%)u_L?wu4*k#P_gJJ%4R^@I>H*Ld$<1Gc^SsS*Uu9G=MmGb)mMbM1q9UZ9b2a`;i zm6CE7&k^sTxC>XHLY=se2*r%JxAdnQWAz(l;y*ZIp|oq9Z9*D7K*wGO)iKXmY>=g_ zd5lHYWVe}ukxrs!Fvp&2h$=nCU2Um<#xM3+3+>z{RuI7W%g=1-d@xCfK&PjhE;EK) zRzpN;4~HZf=Z5HrwtoG1EA#MoaitXJh<@C<&bvniCw7P7%V3 zU4u%=J~5kR(vVuUmhSs%5LeJ5G_0y*$kZ0$Z~c;FvrIP_WR+%ISzS7ma5Hki=wrTR zfR1e|>wXEVpIIE=*H+!=r%h%!J+0>*9+0yZ_oB;F0ItO%3eDk*B>%wh)j~5y*a(#; zhd2&Ne(d%LJ!kPXM$no_?u#U-g-N&`3cChnKFc-U#Z_YPm;&LRSUhw&gZE`D0Zs3Ts{Nkf4AJ-%^K7w zfuj_M_%$=}Z|B%g&1KBJR9%A0taHb1Q-r>J84%~_;8PO1(Fxbe@z#rBlv6KOJ?8QA z37l&}1iIdjS(*hFWiE47$JwK^52M1$bNk2agbkOIg%{N4mcFFg=BRhy8p{@R>X)Ec zyvko@7A}7Xy0YB7V4yP6J{ZUH1ZgZGQh1rx=6(g+s>!0JDKB2P>-znC?9Pjlr3Z*q zUm3bj&XBsY;vdYC26C>}x82*;$evHi2B0Y;aXgax&0}2Ufkk(#jqi9RC{6W~=Z;r3 znk_LM*?jP#lEPuesOb2(bM9fpTlD=}Rp;O!SllyiW-e@^+KqVF-(FT&_P%`OQ-c`%@V)QglWsT<_;{tD!R`3wG(Sv<6 z9%p@JE`FGr>nka?i?(3g?58{O^VxZ#*~U4!Vo(CKl`&E7MD*KA-k*-RuCkU%LpKQ+ zKLJUWEHR~=lofnI>f*)XERI%h-Zk`l#o9=@3C%;*!IeMV8HlB;466tGE1V_>TcQLyabB)c zJ)wYvovYbrQfI)4YZk0F&K_B^Xqm1{5u8}E=-^AI)}?Ge;kO&F{Wj^FRbwtDYf>s~ z4xcTR%5$26i|UlO#=aH(p6e)5sycJ8LLfw7O@pdT*q_#g-(_qY27FF`X(6 zQy&FuX!8zEg+7f@7n}{CoV~pxVWVT!@B(+o*|nh1vWCpbklw4TSBsN3kvYw6nh(JZ zEY2=z=rX5*p0fmfuRhbh0<$h=)bZ7swN#vrw&pq6OA?$~lJD?d0olm7nryhS z)ZCl`cRjlg9=>g)q`~RE5@@T3Yp=8CM>LoAPYi_!S$}0VrsO@g)-2wTy0qWi@WD7v zufPQFg7whFlxi2eUZj3l=d%65zc%H0?$GH_e9Ir6=`2gPQ32z(jJjOB(}c=Df;Fkm z?$L_gaq$COqHj|xK2C#;Tov@8w5v}cLU7AtifeZKuCWfcHReAnR|Yppq3t#gfKHF& zQjD3<%3R7@sfL+HnGEQgk$GYBi7JCY4-Z!>msNG}b3^*RA#heNhQD;W=k?Gk>6|7? zJsiqA=ghPkre)Gim_HhcyG>(I8vXCs)UqX=EHpV%5c$v2%JT-_&ll{jTm{*;jz&83 z;p%!emMy$`U*@1C=UdN9ow2G{u6BMKt3Sin={5)6e$7u*vDe1UAtMO0lbrQg+eX73 z8XU|$Vp`8rPQDam@v+pXpNDuFWK3gD=he=Fq}f0e==kwet*tI=FLD$0zu-XUFLU8! z1^(59vS(%40PU!LVYy1TiS%i29V6SeSY7Dyc#ZVS!9`eAsX(Hlmqhr8PAV)Z0wzt)_ZleV$AULAi1~zl^sC*p z5Pa+Maw%ELJG5Hzh)~Wv3nIHt0-1%?4X2nqLgHtKhx13i?3`D4@-yV(Rb^pbmL5a*D091N&Ud)*q<6#x9{w@{=s_h|d(ZKw z5;Ny%I9-8bu89^?auae(?H*9G{)nr1;0xwWF%#@IzGjba`6F_6!u#Orv(xo}o!SHx zWDS~qXA4ek0o%XJt&gXmx>#skjgPi|5^;T;<1zk;sDGqF)ak3+5%$V!mK-DT+q*&o zIYT`$FIrhSTH0=dRdxc4Q}(FYQKRR9r>F{G%U<_|`Q+06!zO<8``s_DQme^H z^K4!AH;S8cFXdZ&+}8A*aTK~r(26=vZ|ZV!r_UJ>m9dw{2W@?CrAn!5+Lf=8JDW8- zoJ6^(irnHiW#i8&b!-!5%JpiYILskZx|Ud1(eV_i5FR}*7(Oj}S5OvIsIPW#tJ)Np zIi2<0mpAn0xRJ1Nz$I&3e!Azb>DQ$1Wm!HO=; z#_`Mzy271%czp#RjVz@%myw0fJYqK-DtItgYOlLibseS8!VX4{tiIDh|1jzznmP({#nRoI ze3{eR0<%aDw(0+^1tj}bMjvnV(dO4q8QJ0jEW0Q~i|(N0@x$s$4Rb5=QGEv}Qb7P3 zQ6k2(=z^o5bf+{1T{upWV)sM&c=e2b)k~#=b%im0Y14jbx zN#_xao7glolukN*ett>r5qR8nBzcYQ?l`Mp^k#&z*WM`+GUxwdy_9e;CB}_E)`~ra zn2e1)2OHPi%7L|dS2(cxwdv!F(wp|g9IW|-R+G6gxu4(r-mX3T-aFceXU?VmywQ1> z|A0qo>Z9y~Tw(W7dp5Vr->jHf+4RA6+NHcc#-gTf^8HiU6K)@_OM1_&%*b9pt-;H7 z)bhD>M(3W6QpFJ^=)(a+^C0oZZuCH!;McF)76DxJ;wdhDX>CB@;7?7@Z!t5MBZz*iR}MgW#o$$oICFfuXmS z#L1CAl1-qNfH3(%&>Rs>XrXE3^Y3e|@^nr>JH#O7?elLBJe0Z2S@iFudhJsZ`QQ7s zBb5H2a|WxM5AN8~2Qa9-!a`|+xVHB8w_eQR|FJk)#}O*cLQ%reuOm!;zxThgB7fJ5 z(looC%0{lYa!_(N^L!`zU)HFjl+u=ekonBp66cQCQ}wUp9JRiCMBS=j3+i;gfl3N5Bwy41n>PrR{T9Y=EnYM z2mI?cZ8j3gogDJw>`NDUd{c+A*8)n*G5>VzX|^su6;oq_eizSiTD%H*>qP`VPbg3T zSsVn~f@aqFmvShhqm+N1hlyfz1>N>7g}?l|JvrWGusgQKX(z94p)I=kePG>=A*_I> zAKhp9(g^DwpPSzhj#5MxjOy&%%TqbM|2lNM*!c?(WH-TDWBwswr2)}8wW!A9)OKsd zN!KGu{2u5PVlWt6qaIO&&sUfNBl*Enp+nH>dv+LBdLT1D?wY1U%t_fVIp4-p45%;H zdZ@dvDYsYhxflNo{4i8xhWll5C0#uE2P-qy-xkQJCa{pI&)oc@aRJ*&^U}(%AM1{P z*Ag7B!L}=>&kPPCK++>(V$UF>{}i!LWfFlD#>baUZNty^T6k&#UtqEJv@3=(U!Kl5Yxjl6=>$wZuo?!cN*IUv7@M4bt9aH+za= z6t-Nr0I_U`<83D-aIG(2+D6lJ#1<4ZjqMwS2rulC$kHIhnZfw+kWd1(!d9^6X7z?9 zcDt>^kCML#+}>GtP?`65g18C_C!nrjJ{0lAzIg6&rsMTVUy8f8&+0di>9Mh1%87#T z%5S+2epa|Vv%bVNlVU#}6jl*SH{(9T&>s`(+hV0#_?7tSrL?_O)phsE8ks%EF8`AV z1qH-0{hGU3LX}H%tW-I84!lOpd`Hi^7Yph#cY<1dyX5mPEPGBlSr!W>1OZ0}md1$@ zjjO)0*?)Kb)v7v)^3Uz#;y#eVdA!%nP<^FDT3NzwFPiSRNmRktDx(855SH}sdZ()UM7{jpCAL5c=Y9fqr_%*4)%x*0b6-R3t5h+ zN1eBt;TfKcxZ!MzvW?liAt{u^*O#k_Ep@nVHso!~}IQ)RtNJ#%n9T-0^E)K9Y0=et9Q-n(8CAX-!PhL+4?S+%l|LQ9f4NTL z1QJ||tcWuD_EQaC?6@}S6KDN(SbLxJe=M@z~Bg#U78P z>sfuigP*S_7p#6BuwE_eKeK$z+jFFK&-yBd9jeVaMnb(daQCpD?axDHUDeVd0~pW^hb2S zc{1ki($x~CJHMIiOfU_m5Sbh&Mn5E4R830xjL8q)V|jw8z%s6Og!O|DrXz(y5u0eK zJ`OV8siXxDu447@rd}%8*=VRzwfCa7F#`=;5mt(Z9AFw^-NziL$FIs z%i@WpO>+LyQGQl>rCE1x>u!~)&fQtP?4j5~FN|BhgN=zix$jn)XJfU*_JjLlIF0=- zLEtmHJ^p=H;?45;s*q;o5{VAN3%Cu7slG3N_KYDVNB2tzY^%Fpv&$E=)NLN|}w@J`p!aRNt0 zMGJGul}#|cXJZxO9d4E&rl@VMnhd>M)3s0bk1B8fxNK43nvsKkP@7+4JJKCgEc1Z| z#qJ%bogkEbSRRmcH+xI$=u=H)FSv-2n@hr!s?N*P3}0061QT-e-<&mCc;=+z>k?_b%1#!|PhGG3KGh3wo-B3Y zc*%`pU>{jJQHHSW-F>X!YikCj@u-^>cT+)3mqz zGr_JxzU zO95gopYCTlemBBbkK5RQKeda@rs}{>@wBs#9|*{o)iX}X1g%1^yns-O&sr(YEHj23>}kE!!O2&~a3N8vf|tFVlZT|p5=Zp7xqCR} zS6cBr^pm)ESiS1HB+)<>xQCz$j^1 z#ABYv<$5L7lEOS^L51`jiU-Q{X!iD275)Koghi0&qjN6;*5_cDNF>!O@VoHK3z(V z*RM0~_DHMn{K^fP+Xm-6zj#0y{;)y7W?}75Y7D=T;69ZZagPzoq=%f$RzYWFvCjxr z>p*cr>)z|Q6(>jv6U z|8)U4MiqOV08FB-SxWBT$d{m&m_WHSZNT+Xu3ips0kvJhyueuhD*Uv#+R>fEp{L;? z$*ZC(UK4+3K7}_U-tOMxrV`$P7H8i6W*nU})>Ke2Id^jlx`)h<$vOAxME8m{4i#jX zpj-p075u{cjIpDBgF3lYo2wc6Zn!zRM>Q4Apx%0g^4xfH5KN9@S?Sdk(~22B8B!_u z%PGn?yx;=AdS9ukvmWGzQ&44g%K&)p?3);#Hcb3UiUueK!oZ728I8E*`+jS!YU?W8 zk)G2kv&&=Z!I#??H9SveuzvyR(9^&)3&P*h>1te3>o*t#r00VIme*K4PiNvn&xmy3 z(Y0gkcNR2Pu(7s%59(Pu&-a5AZKk+2kfW+}6#wBW&oYMHS=@j~vB~{03-?i-R2(ba zC8%{tOQsf=8wvY~w9MQPxPb|oP(g}hi{lovN)0JD7rPMJiCX~Or6Mu_4wvXF*B?=- zUvcI6g~}^{uv+bmCn#J2OVo&(>egJV)RIGqVfLwSAL7;9{&>+jI4|CM>%Dd{@|)eN4nGZK?zfTBKP+T zS#s|IRoB#o)QiL$w|H-?UwK1?BgHF!1}+<7cv2Z|n1{pz0DE4covwz>isN2ACVxoC z(G=E#Bx#k4eP(+l**|aNH98s_)C653wU2Y&rt2U6RnvvZ&~d61(JGqx2@maW7*)U= zJM`Kpd-I*wR`Yk8(Qe^@nvP6uORcWFlsxJgA^hw&$3W^?@t#$>g@Uh%AEUZ2mY&9# zUnlMEj;drB&whr$*=l#x3$R)_`7x}&z8mc4waImu>eSu(M@DyMsu;-Z`ZcH?<690tYom?te@P?VjB)m z_w%DTQP-HXn)R8_fLERT*cl5xT^2Im%tlXIGQJ=#RffFuK}S?DgeVjPKr@?0-qP&m z@B9K|K`qBvM3>9E_%MP*sDe)S2qp4EcI%M`Iu&^sY$j~*r)Niw)i=^$YM$g}XZU#n zw}4lOt7Pz}!JfG?&xNuZqz_ATS0JRo2AirKbB#(P!76Q z%zN{1zT(&vQK;pC(wcPhv|RHHt-O}r%;8-;@5DchIeD`=9TTUBO5G)aXK$N^d08<_ zG$j{YSO)pJ8ii2y4i^#UCIWING&=AU_^JmQK}mq672Sdv&PZ_kF4qq<=dsJAzrAlv-^MUDwjE7e2q^+j<0tQBHfzRGE8V zzq7%`bh@&OZ#5bgF)~(Ie9wK@og43l-7s6Uv+nz4S%Nde+8Dkqi|es@95=WzpK+du zs>m(k@h~*?7iBToc)Iqep0g;GplGAlT$rI{)e&Bj;qYA9;4)!cyE)jeNWtm}G83II zmW$BJI{yv26nhM<#ZNBf;Zm%qtg$h3{*Nf0u>!|d+RtqIWykuqJ8M?YY=tKqi;_b` z70~JcksKWZQ<^G?Exb4LbWj67^#B|U#uN0>^bzW>il;f?=Lq2%M(?1|efy=$?z*r0 zbITBN+&|LC#$(riadDoZ8UNH3mzSACPT(D!!K?sUxV!HB1X^)-qfL;VLyr~L>b8T= zMAR!g^Z*VfGME8S#d z?33T3xx-o!qA8EH*1j~5YL)F?+VuIEGOi|*FI*~tngLK&Ep{Q z6jzu~$1`_QKqw30y9vN&k6FdP+I1GP`X#zO>}U>2D3QB(muNQ^ec^Vj1y0Y|Qa(_| z0ITXi+`MDZzm6KvTqa&T*QQAd$`@<;vQwo*F-G)1F;IEtmm)*k)70=v$bIk|sDe75 zRMj`#kXLJO(Xkq7eNPs5tl%n7OYtInrj~jAUrQ>&3!d909&3YEE=w$?@=Z) z%2U7dY~p?q*=|p2?&XyhcV&c*`Krq^Pux@|XJQ||uq)a~=8Q65YqjqoW!_c1tc;8x zN>Lm05B9O<(mdL(vUi=qmz?dPJ>Jv{oX_k7AN%DY+o5!w?$0R&B@mPnUC+yTDUEN; z)*y!)0=4M2#!DE4bDc`Ri)m0tpW<7VDYqxgSH2!R4*76q0GHn)NYj>5=sd(g80%YT zQnl}qs+>wI-~?1N;3|~go-B{9d#d$AcLak}QlJ(|9!{w9Kp8(p=4z*lmU0Zq5pC7& zb&RN{8m~vEMP<1UhwJNHx?SHnKV8&{8|^F0eWKsKmNk{M^bdRhe*z>XP=87mINe0; zAH!F5G2;8gA4+~CASDTM z$T+oXbR#7YmcxOSiHlVN+WAW_jYDqrTD3|n2~d|OcFQyb*pIyqWTo)VU2_49b2p5R zeG|=5G$=~Bo1VK6BdEAil_KCqCUbY=-EdA@+i>vD>?f(@&k&&BwJJSY-?uekW(t+^KYY>s7b90h57l_U080aVlg0ni#*+94u z_r&Qa?g?HwM8Ervuy0KL1=NT6PP}@ZQJ$5aaQ>#yfXSp8LfE^W)gybd&J~kWQg}N~ zRE}46{p}|8+k}=Y(0!!?=Hb%QfB0XGTdMbY!g*%K&hz&|?ld@oGTS&Qd8W(OMa=uf zoXs*vZH}YN1SqX^g^Lz_L^f-Hvb^7mWwD6aW5`05CjeoY^xn@T@nT7mnH-(C=Yvm_ zLif7}&UF*!Ju{BBrO^ykCJEWA@3X?S)GC8lj?-)c!Zby->YFkOQq@x}uLmh712o!c zFY>8?B<#=kD;(jM=u=RyAdW_gLEO+BMMjxTOudJ82Bx$_kSmW>J!8!21?)Bx`C=N{ z_NkxSY|u@(GW{ij$1vEYk{{eBD5%OvN2>5D(pzZwDEMZ*c_JSB8of3FYV*AL`jqq1 z85;GeH+*@lxnog7ZWAn}x?)SAIgV5JRFIxi0yVph7ZcG(=cWk=#}S#yml+pJWNKFKmaTy!JW3x{<%;Nqu$VlZc=!FNP`rgy~iqIeyNwzIa+KCc4g{tSc0_)nUjsi~=4{hc`( zjq!ddlO=@cG-g)n%VD!=n97Zwfa=3X^H0Jo$?#e8oY#6hf`we`J5M&r92)^sAmX)fdlCV-JH#yAOv{w*AsSl0|R0uB1%ekx48= zXyZmKZu%}W+VSY*I-!%@aJe1r0YBv5*57!E&+v9EIOZQppG@ZC+ zo1zRame$F)!d1uNGWwsfD37q577#9p`c?k(eQ`FIB;U&pft8VHq$kLz@35}m z@=AW0`{?$=3&F(k^vM7Ag-pM+KIX>3{7;P+(5&j%*B3f#x8_M?Jb$JYh})IV2tl!-$qiYW&qw{(nNHNP7|E!X z#@e!y$>2sKid~l$oFpjc&!ej}JbB?8J`q(avW>`lnXI(#b`id;7Ea$QmSQ+im#Y9y zEa^3gKugxIJHTns{^Jmn&K(&|Db*>M$!zQt>^u3Xk?*0KIJQxz9EX7i0^QN!I97_6 zA*U{%<$jU-ydm{3YPzNce^>YKgcQ$CWv{Xhn_yDM!aZMr4&osve5>Y0-z*0AUnpA>rs#mVHuZdu!r(9U)cgZK~ z+ShkekJ=9UrNx1{_^Q}~;^N~vO@h#v z#wPVEI@%81R0@j8zmz5sJgeWOHVefPwmjZm&iM*443}aiA9@8zl*-VkIyA;u#acHH zj3#JUx>vQm<c(`4xp{Wa<-^oSb`} zpsf?u+xmjP@yWwX&V~KxB5j5~`=+l5>rH&%4+wpXr?|nZy?&1C@hV8tkr&SPa;GKR z%t~FO%?)&XUoVQmqz17{e_^{c*oPk)j~WrC`iT~f4i$mD0s-|oId;oiXf2UO+l^Ii z533b@ZCW~no0@rlfi-!5nh7)J*j6QOUTbZPk+G*J=)z0fm~aCJRd_&P2|+MY2=zg; z+_np~IH%%mn_PL?)F^keL;HeGVBjsp+V%1u;{AOO3_?pcL}wWfYbw^xQ?I4-r{g=+ zs)!38^wv3|F{UiP@(*TD8E{ewkrVg&UBT~@!3F}h#{!HV~cf`G;N6JGxh$9^(Kp$b9R-;jKjMB7Dxks zA;bpp6-jd(`MdUJIwEOsc_G-jK2~gcfPSlh@6p)eNQ+c~)I5ugY zrPQUXrfNd}h~8N>-G64)u)BXug1^-8L&e1-TgWQvSL=6`)@!^elAss|S0Jb}V4%^3 z{px3q(2lm3;!G)C9wk3EQllT-ocTZxIASk)A;d|_FZ+say^3dK7lDq>TOZLXnosojE;XC_M~8~aaR zHN)F>n3KQ_B8R2!-Xc!I-YeKOje2W8VUy2Y&HmbLRR7F-B^xX_nqx#PbL&VKK?7V^ zE)f3yeBOP|>4s>$cf~xe`;uH=vv?VrTO^0P!~+sShm$cbcZJ!s>i%j?m#0>)ygR(GyveTl@&XzAxEyaMxBjV#fQPjz0ade2Zw<)9lRI-+qi=>a$nX%7C-W zHI~6Kd#eNswg6TCORWK0b3<%&^DDsa*|?J=dUYe$RpCMd?F)(Lz3-?-&$^U%dqfUV zsQB_#&`d5>HC9cgp>ZELNis+xPdE)iB_3vK!!`NF9=wo>D(P@CZ0<*LFUE5u*k<_Q zVD{X3Y;++@B<;>psyWrE2;ZrDpula?1O0`{oQE+D4Gq&E>zZ)CA*Gel>m5j<{FWDk ztHWS1e%XD1$a#V3$D!V=#)PePa}AM*Ze@VRMFlZbNlwCov9FkQe;D!G>K>U%vdU#3 zFkLkuZl)xr>g%{A03UtlwKtWKtV!b&9-u}+@|Tlz{{pb3i*oHzu8h3ae^#p!eHMVj zmX@Uiq&dZuvlTjmo#f0gIAZGsVLMyB7O&3vzr!-WgG=S(z?@z8!X1Wcnpv`%>3tvi zTxR99Wg+|aLrKRkH-%Bhu}raDdjaZ0GWoLKtkCNUoW~&|IHj}LA!Js*q06SAy#Abq zu&BFFXN+KwZ9Kuo5rpx!v&s3~D#}7ImKD_Z-u^KTN_GJdwHRB(JV_{2 zsOnCm#sK@b8>R!S3=*T)h5eZ*`HsMdfRxq~#G5a(=+lt5H$O{AFeNLz>62tu;DdNp zSu!ffEasBUo25qwzg*6!)uT2LQYg{?-SWu~yY6?nLP_06m^;S)CTioG8FcuM`DfVm z_qZ9`*q%D$X)<^&t$MN`fz?XZoC^EgD6}|mT#62^Z52*<9ulHq*wYI_uN{Y-`?~pN z++GFG2zSjAT@p5`er=i4e-TN3*8Ia5xF{4wp1NPlKv%(3DEx52NXrcV89(-giktll z@y~DmU3^NJLYnKP=!37q=dNSR-C^W=#_2+kUME}X_S9+qhaMp z`V3QLdMgi83%wV9$e2>XXtca>b6w+cvP@f3&;vP?Nds z!Z-HZ7?+4Bcb-Y&H!?7U=Ll}D0L;ogcbcwzQg`nzf9^|ZNAx+6k50C7FKj+7NJ3HsmL3Qd<;$prRu}PlQ?eEnS+HUlp zooL!LS*splD~Ab;6{52SE(4}a>M}A2#yed#2GyE14xV0WF&yxyg-3a?O(t$xLj{)? zxQVr~xkKL@M#$9(XBR;J2Y>>A0(m#kowqktZ~kPcwsiTJ{2o;m{41kFlYTc@?TVVu z6>O@H-&5*1BZH+)P~zn!Ym-woDY-y|MBgUSXiGGvduim^)s}qMN>F7+567H*^7geF zJo1xNyln{T+)VmpT1yUw9x65S895^^8SC4hh~_M9+CG<4lLo7ZdTqLv|G-e%ybC{C zlI0$0qmPS=!_WLJ_PX(CloE%s@$0GA8XunA7ke{T)0J$0QjzSazF|=l6jx%|`t;NJ zLsR2S<|CCpZ*8TbJRbAjjww^^NDwGU%3`HRvNbBHFsPV(e97LuYM^t1Rjgudvc#&~ zAV)UIpPme^Mxx_}Htt}wqrekfE>@J@0rgl=C21hv>hhL^JZTR|W%`WwsG(VWqy5BP zs?%OzQ)I&@u|o`mzjK+3yHHKQcV~4uW<9D{!Gai10aZa&Htli(H0c>P!PzjIG8PFO zjJ{^=;BqS_=eQ(Wqgk3=2D7@5@DQ;7#?Ft8Ky2#Hr`Sq60r+i_A-ODIqdhu_g5k!| zFElQ}PR$!p`R;eaacw-_>lJQLX+7UV!gVf*rdXy zLVDXiZ*|BRISE8aC6sJO5R?t{w-fcC?JMj9OlrA?MoE}vReCn-wdsJk1(g^!zs)ss zHJ|mn!}zasH1UR3j>^XD0$)PMJV~Hh@{L!BvgMq|_`d7Ht$cZC;<((v2ELDw`eA~5 z>A3tEHS`$}QxThhfPWL&17T)gE=a9BnGBF@<^a`aNqiZOXB04bxO^xVLbh4h%mRPWN$ zkyowd983iUE$gq#_h-K;wJ|8fVpWQ-DjwF3<$N0AapS}35|_Y=9HU!R-|nd&RV=9f@_;?arxZFH(A;L!dq zh65C>iI$CHX7eP6Zp%3HD=;*@1J|6B+gcvehe|_EENPAfMSe6FxxY#i80@U$} zbDIqLtMN_MqkJ#?2IT+!j;0tc6KJNF?ws&>eoj87A+Z?8L7n=7?;~--#rL07OIP-0 zVvJ@KR7^zR!(7JgER13T5hd$l85~CxpA6t>+eCWu6xALRYl6yQoR@piV)v!v-6Kk6 znPvNe#RSRpH}ngx?GvFm!*Yse-$7U}ts8^LoD%KnlPbh7VlkHHzurz4Ha3;2)-9`2 zdSP^Iz^SNPk=KN|NTqVrvTP`7fF^5W?^cb23Z$&3XHNg-6?3ZNLf_JPf#B0u!a|07o2T%-9aF{+3tMu21s)h zB%OMp2UE<7zE0!qZa3zk{pya*lf>%qFGJv(-v7bKz@)ZHytQTX>om4gPv{r%xzJx! zx!hq{+F4n_i0rPvt+E9;i&zw0@<+-y@wq+o4HiwEFK`Lg=bxMao|rzy;?fy~(xP{X zZGPbNV>5Y6M$+?WI{z4*K*dF>^$g4sK<=ATkiliz?jEO`?#SnzicIv0>k{PB&3eF! zvi2mMIF_;`=fo7xAel=g2DV;fvP!Z;8%eqJF6l{`nSxP>DR1gvC_rQ^02;AW_JSE7*tGgex=O}D#wEVNZHHdL`wx>;BxfRZ9UFR-O9Z3PO+|DrMV8A%UR5p15Kbp zPc}|3D7t>8c6)E(@@2vlWb&l-rKG+{;#(EGN1|2JUZ&+ZlhDY~PtGG%ED|}?%l{gx#v)gx{y{aqRbFf9!5)A+A`#|H0pw&nT_gpFN-bh|n8d zcQ(AB`fv_kXTUK&$BOzvkaGaMPGjlP?zpI8(NLHlfFdVpxh%DU4kZ$#wonAvfXWv2BgEFMulP! zQJG?v7=&2ielxYG$DbUnYG}v`Pa8YO48IFz-Y<{uCDBwx55IMCg{LZ3LrCbp+?G*s zRf{saApOPXxCSQJk>YF;`Rz3Aecp?%BV-J^6MijSW%)()WRJ9IH+iWj-btI^eZqck zDtxHO;v`Y0qq~H2l2Msy#Az#Jtye^%1#9JQU_22pXQNR1#1AuvVeIK|94Z0%+({d# zbtFaztBw7k@+$Ji1SR82w~r6*Dv|UFbAMlfZ)d&;ovNyugksG7oWwjtst}zj6-~lo z0_&!LS<|Ub+1L)VA1Bh4Ufs8CQpNr=!{~K-Scu0pt3XkZh2^l1!D@`#+(tw&EdOU$ zU9-#K5WKGMb>pky|KTKIS0T$V!yMskE7O>~?QFJmb*36*ib}F96&w;}xw{tF`B&UA ztdVA{S?N+)ZQUZXIn6vXvvRUmw;yVS za);PzEn|ac#YB-0+?Aq@lgMQ!zo^Enx_q7^S8A0M(UX5z z9Gl9Up0xuo9`hmFPHm+iRuipP*@a2hpMxV?4vJ?widP`wq%XrsRbda8A0Uyb37={t zD-Kn@6Y^Yj+6IPz6za6%mAQ%X?6fbwNFCjeiU73X=GL3(6hNsez8j?3R-cdONa5Fc zo^of)tA%p5W!_CsTYR!e&22Hn=DhqmPXB@Jsk<}gpG<;1v8#&ZOK6Xoc)QsGy~wM{ z#o>wXD~G&%A{iruU6rn|hY?}mn&mcM-FW@Jfvz=(^g~52I{iyPVdH!5%Ta#WE&s@9 zq6%Dy%>omb^f>Zo>0g+_)8FixsGU1J3CxD8x(uzsp1-gqw73k^H_%xUe{9M%49owG zHaJ?ebd?#MZ{gRR6T^5|y}98;YFAOdxqvg$I8;%R%t7xiNI^~`zeauPQuVqI5+_Q- zB=GT=*mS-V`ex%*-|O*&=&7BV0?k>GEkD_D9E2RCi&Jpm5KZxX}Dxetb~^5@uO- z6z{6~BW#WPBW>i_3FOA7eX%f*IadPG_t1V>P-Q4ShBg;m*2<_U4rSG&BnA(= zoVIqqq~%Nq=z!$<3Sy2g$|X;gNpyo>1E%UXpk_4A$1hVq+SW$L#yxVNccO(e1Bd$5 zb?m3AastpF!t#Ac? z)B7aPJ6&)41&iH**7ynmyjfozqfh5<3{2YVh$>V$XB& zfhW6=C6Ez(PXct7SaWY5E41so5<04?z4I-^Z2(wl>~%2N`*fluZ1f<;%=a1SYD__N zfZtzXp0J2hyVLc%IR_(lBdeP`p@M@y1lSi1AH+`Y^JPFkgdYckQtdna_boXw{B}w-;9aMjE zd!S((zxgY--;IIF)L->?xCSB($4Eo=DCd87q>MkzK=ALd7=!MhZ58|dEP|YI>>>(=H9tAwcks?)LZ}C^$!&FCV1n0HNg0N)FR!@qu5@GyML7Nw=sdi z^f5KW?q`zj$sY&r*~Yqs!GYY1hR>>9-x~mX5uB4{Z)8x10MuM?Detl%06_+j_3Yy! z_eWL6pZ^>*gM02X{ojYuR!8iQK_B)lfy%j+Y{u@->_Qz`N&7Au+0(Ob{~vJ|5?We><^B3ViY6hB9@sZme3^gEB#QlYw_TQIwn=>qS zFC7yat`MN|>^uA|_5@f3`aXUC+sfim0l}~sPr;P;2RgUYh3yn7XxQ%o=CDp$cZY*} zd&$E|r}pImT+nj>q-kTQ5)uGj76>JghYH~QAsgRkCoG;zBX1DG-tAA)X=|5_3 z1~nrOHS_UN$}YV;^dj%MYPG$~C+K+?iLWNtC1?{U1N`=X3Ao>+ijjG2pmNdXyV2m$pUk&%*3 zF@Ag`joc74`3+Oqo99tK5)|~IK7ivzqJKF${QmCx@x-*fCP`qu7r~-I=dqeXCuf9) zkK-;Y=iZ0d!|Gvfz$-Iir9?O&f$dIyWG3Z?c)E)tfU1HNii2ks0Rtb2y`cc(0(B$6 z@YGXiM>R<&N&VCQ0-*~74EJhxBtRzaj(=~oA3aHt(0p3^fJUgLjrWnR(CE~C9Di$U zaV2=8OL*cL7@c$_rK#r~<#S{-fCT%yOBUK- z+L{|a)ogb&M$u>FzuyYG1+DCHq`l^Uo2T6!iW^jDCX`P|>-Tzr8W!At-?t80F4=S| z+l^dN@j3C|N!dl_iVj!;tm~enc6;gjnK3Z{Z2!!lAC4oU>XiH61rw~`GxB?%{};R= zOSZZF@zFw(Z6f%C;=elrCdKycy+&4F0Gr*{h+S>ng*`+3>!-b+aI){~F*xslDD9rI z_}+o^n5gq|mwWt%&na*6C=wF#j$7AdG{p}{dRvls0Jy~(##{H^6xsX2{`hvFLr02J z!917XCq5te?dS^<)V??ib-^q$7>PgKw(@N_SSun=}Xwu`ey zKsy#?jRWAG`91kPw4{ssCgq9-c*D$)QDHkRFbq`S*(ZM8`33t0sF6|AfgcJ57Y+z# zr=ihG5@?@FgMj6@(;f%4NV=cG-g&RxL<0CqiKxhhgZt_4(fC?JpmH0XizgctPao*& zZWp$(R!34Gu=|(0@ZUcJ#}qjq_x(njxq#3`1Vuo-2I&8qFH}GO&$q5X@;Gep>@zn7 zc3%X0@9b#YXegML^|CHJL}$G(w6C!2ebosD(C)sQoP|5u9QFhj@gE3$B2;yuB;>03 zEq-Z0EW6*o10rL;09ohvrYR>5K5lb>o!Q^jE}aVl9EjVU0Lqu>b?`+nI%Ysxj7mN# zBCSYizYkE|Uqst$6j)-g$ItUz-&ujXqhV(z<2<+9tI;=LuxF~OHFvJ(zI8{#z&`zZ z*kBWo1PfzfGN0FjjFapC9}566gW>)qnSRh3`mUcyEZOaHSOr+2MN55ZyXG6A?=$zO zDR6`E>2~~{lG?GN`*PkJ@J?j{#0@ZYjc*+Ov`2Sq$$IvBd_^6+al?>-Vkg5@dXYl) z_kID5ik%Ts<*!<)x0%mXSMGg&-ym$S8D9=am9PBQxZ3bmuk0>lkempHTXJn;&tzSt zIw&v_-;0ngn=(H8Y8F6}y01Zd@9b#VGLVQTb<`iW!T0m=M2_8FwLJqbppUB z_xJ2q;hgk;%yJty=!pKKS1;IAqe&+JUzuHEgmn3xR?4wI9!o1y*jw**`4TMi?UB7U zCg2$dtt==5PypHx)(+b^ZsA7S@?Q(ReIlm53KiZ6Fk*iixIbUeizb02sk?y8QfP7) z7gC+~M5s&p>rX9P0OH6Y4^%#4@`A*4-^}ibZhK;EE&vlUGcB^0O0u(d!|Y&q#+{Xz z4c*SL(II}jYAQ{nw7+q1Vm|7C1+(Hlmg(X}p=x#T$+jv$3$y1eB-4K*{eSOa+wE9q zkgV++6@Z}snWYM4!$OPtqZw(#ABTMrsP5wS8JK literal 0 HcmV?d00001 diff --git a/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md b/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md index f7c3a6659..9997f5066 100644 --- a/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md +++ b/content/blog/2025-07-14-a2a-mcp-gateway-api-0-6-release.md @@ -47,7 +47,7 @@ In real enterprise deployments, security and reliability aren't optional. That's * Local and remote rate limiting * JWT authentication and external auth, (ie, extAuthz) hooks * Upstream auth (cloud identity, TLS, etc) -* Full [OpenTelemetry](https://opentelemetry.io/) support for metrics, logs, and distributed tracing +* Full [OpenTelemetry](https://opentelemetry.io) support for metrics, logs, and distributed tracing These controls allow you to run production-grade agent infrastructure that meets enterprise security and observability requirements. diff --git a/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md b/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md index da5f461d4..d42677838 100644 --- a/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md +++ b/content/blog/2026-02-09-getting-started-agentgateway-llm-routing.md @@ -442,7 +442,7 @@ Now that you have path-based LLM routing working, there's a lot more you can do * **Multiple providers on one route** — group backends for automatic load balancing and failover. Agentgateway picks two random providers and selects the healthiest one. * **Prompt guarding** — add `AgentgatewayPolicy` resources for regex-based prompt filtering or webhook-based validation before requests hit your LLM. * **Rate limiting** — protect your API keys and budgets with local or remote rate limiting policies. -* **Observability** — enable full [OpenTelemetry](https://opentelemetry.io/) support for metrics, logs, and distributed tracing across all your LLM traffic. +* **Observability** — enable full [OpenTelemetry](https://opentelemetry.io) support for metrics, logs, and distributed tracing across all your LLM traffic. Check out the [agentgateway docs](https://agentgateway.dev/docs/kubernetes/latest/quickstart/) for more, or come chat with us on [Discord](https://discord.com/invite/y9efgEmppm). diff --git a/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md b/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md index e8530add1..36967e169 100644 --- a/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md +++ b/content/blog/2026-03-19-agentgateway-llm-d-gaie-inference-serving.md @@ -15,7 +15,7 @@ scale across nodes and data centers. This shift is exactly why [agentgateway](https://agentgateway.dev/), [llm-d](https://llm-d.ai/), and the [Gateway API Inference Extension (GIE)](https://gateway-api-inference-extension.sigs.k8s.io/) belong together. -[llm-d](https://llm-d.ai/docs/architecture/) is pushing new frontiers in intelligent scheduling, prefill/decode +[llm-d](https://llm-d.ai/docs/architecture) is pushing new frontiers in intelligent scheduling, prefill/decode disaggregation, tiered KV caching, and workload-aware autoscaling. [Agentgateway](https://github.com/agentgateway/agentgateway/releases/tag/v1.0.0) has quickly developed into a production-ready high performance AI gateway for LLM, MCP, A2A, and Kubernetes-native inference traffic. GIE has become the standard contract between the gateway layer and inference-aware scheduling. @@ -75,7 +75,7 @@ Each layer does a different job. conformant gateway. - **GIE** gives you the shared language between the gateway and the inference scheduler. Its [InferencePool](https://gateway-api-inference-extension.sigs.k8s.io/api-types/inferencepool/) API and [extension protocol](https://github.com/kubernetes-sigs/gateway-api-inference-extension/blob/v1.4.0/docs/proposals/004-endpoint-picker-protocol/README.md) let gateways route inference traffic without hard-coding scheduler behavior into the gateway itself. - **llm-d** gives you the serving intelligence. Its architecture focuses on [intelligent inference scheduling, prefill/decode disaggregation, - wide expert parallelism, tiered KV prefix caching, and workload autoscaling](https://llm-d.ai/docs/architecture/). + wide expert parallelism, tiered KV prefix caching, and workload autoscaling](https://llm-d.ai/docs/architecture). The clean separation while being integrated through standard interfaces is the superpower. agentgateway does not need to reimplement llm-d's scheduler logic. llm-d does not need to reinvent gateway functionality, security policy, or Kubernetes networking APIs. GIE is the thread that stitches them all together. @@ -84,7 +84,7 @@ That makes the stack easier to understand and evolve over time. ## Why this combination matters right now The [llm-d inference scheduler](https://github.com/llm-d/llm-d-inference-scheduler) makes this relationship explicit. Its Endpoint Picker -extends GIE and adds llm-d-specific capabilities such as P/D disaggregation. At the same time, the [llm-d architecture](https://llm-d.ai/docs/architecture/) +extends GIE and adds llm-d-specific capabilities such as P/D disaggregation. At the same time, the [llm-d architecture](https://llm-d.ai/docs/architecture) leans into the exact optimizations that operators care about most: - Prefix-cache-aware routing diff --git a/content/blog/2026-03-25-agentgateway-one-year-anniversary.md b/content/blog/2026-03-25-agentgateway-one-year-anniversary.md index 715fec93c..d2e480a96 100644 --- a/content/blog/2026-03-25-agentgateway-one-year-anniversary.md +++ b/content/blog/2026-03-25-agentgateway-one-year-anniversary.md @@ -19,7 +19,8 @@ Since we donated the project to the Linux Foundation in August 2025, we have wit We have over 2,000 GitHub stars on [agentgateway’s main repository](https://github.com/agentgateway/agentgateway), with continuing growth. Thank you everyone who starred the agentgateway repo. -![Star History Chart](https://api.star-history.com/image?repos=agentgateway/agentgateway&type=date&legend=top-left) +{{< reuse-image src="img/blog/1year-anniversary/star-history-2026331.png" width="800px" >}} +{{< reuse-image-dark srcDark="img/blog/1year-anniversary/star-history-2026331.png" width="800px" >}} Scroll through birthday wishes from some of our users and contributors. From 69864fa160a9dafcf408051013b53d8dc73972ce Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 14:53:10 -0400 Subject: [PATCH 13/15] Added warnings to Slack Signed-off-by: Kristin Brown --- .github/workflows/links.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/links.yml b/.github/workflows/links.yml index 036b1f62f..7aea4175f 100644 --- a/.github/workflows/links.yml +++ b/.github/workflows/links.yml @@ -151,6 +151,7 @@ jobs: SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} SLACK_CHANNEL: "#doctopus-tests" ERRORS: ${{ steps.link-stats.outputs.errors }} + WARNINGS: ${{ steps.link-stats.outputs.warnings }} REDIRECTS: ${{ steps.link-stats.outputs.redirects }} ICON: ${{ steps.link-stats.outputs.icon }} REPOSITORY: ${{ github.repository }} From c1dc73aad72a034699569f1c9e428041cd6a9d7a Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 15:47:41 -0400 Subject: [PATCH 14/15] Link fixes Signed-off-by: Kristin Brown --- assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md | 2 +- assets/agw-docs/pages/traffic-management/redirect/host.md | 2 +- assets/agw-docs/pages/traffic-management/redirect/https.md | 2 +- assets/agw-docs/pages/traffic-management/redirect/path.md | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md b/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md index e1562eaeb..6ae99ccf4 100644 --- a/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md +++ b/assets/agw-docs/pages/agentgateway/llm/providers/azureopenai.md @@ -64,7 +64,7 @@ Configure [Azure OpenAI](https://learn.microsoft.com/en-us/azure/ai-foundry/?vie | `ai.provider.azureopenai` | Define the Azure OpenAI provider. | | `azureopenai.endpoint` | The endpoint of the Azure OpenAI deployment that you created, such as `my-endpoint.cognitiveservices.azure.com`. | | `azureopenai.deployment` | The name of the Azure OpenAI model deployment that you created earlier. For more information, see the [Azure OpenAI model docs](https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/how-to/deploy-foundry-models?view=foundry).| - | `azureopenai.apiVersion` | The version of the Azure OpenAI API to use. For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/ai-foundry/?view=foundry-classicreference#api-specs).| + | `azureopenai.apiVersion` | The version of the Azure OpenAI API to use. For more information, see the [Azure OpenAI API version reference](https://learn.microsoft.com/en-us/azure/foundry/?view=foundry-classicreference#api-specs).| | `policies.auth` | Configure the authentication token for Azure OpenAI API. The example refers to the secret that you previously created. The token is automatically sent in the `api-key` header.| 6. Create an HTTPRoute resource that routes incoming traffic to the {{< reuse "agw-docs/snippets/backend.md" >}}. The following example sets up a route. Note that {{< reuse "agw-docs/snippets/kgateway.md" >}} automatically rewrites the endpoint to the appropriate chat completion endpoint of the LLM provider for you, based on the LLM provider that you set up in the {{< reuse "agw-docs/snippets/backend.md" >}} resource. diff --git a/assets/agw-docs/pages/traffic-management/redirect/host.md b/assets/agw-docs/pages/traffic-management/redirect/host.md index 1416697ad..ab96b8afe 100644 --- a/assets/agw-docs/pages/traffic-management/redirect/host.md +++ b/assets/agw-docs/pages/traffic-management/redirect/host.md @@ -1,6 +1,6 @@ Redirect requests to a different host. -For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} diff --git a/assets/agw-docs/pages/traffic-management/redirect/https.md b/assets/agw-docs/pages/traffic-management/redirect/https.md index ebaf69acc..01ce75cf0 100644 --- a/assets/agw-docs/pages/traffic-management/redirect/https.md +++ b/assets/agw-docs/pages/traffic-management/redirect/https.md @@ -1,6 +1,6 @@ Redirect HTTP traffic to HTTPS. -For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} diff --git a/assets/agw-docs/pages/traffic-management/redirect/path.md b/assets/agw-docs/pages/traffic-management/redirect/path.md index 9397db55c..cbb3955e7 100644 --- a/assets/agw-docs/pages/traffic-management/redirect/path.md +++ b/assets/agw-docs/pages/traffic-management/redirect/path.md @@ -1,6 +1,6 @@ Redirect requests to a different path prefix. -For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRequestRedirectFilter). +For more information, see the [{{< reuse "agw-docs/snippets/k8s-gateway-api-name.md" >}} documentation](https://gateway-api.sigs.k8s.io/reference/spec/#httprequestredirectfilter). {{< reuse "agw-docs/snippets/agentgateway/prereq.md" >}} From 972bed491d0a5e9e6b8a828f89ebd4f2141e7a85 Mon Sep 17 00:00:00 2001 From: Kristin Brown Date: Tue, 31 Mar 2026 15:50:42 -0400 Subject: [PATCH 15/15] Link fixes Signed-off-by: Kristin Brown --- .../destination-types/kube-services/grpc-services.md | 2 +- assets/agw-docs/pages/traffic-management/grpc.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md b/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md index 6fc56bc95..74d81baa3 100644 --- a/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md +++ b/assets/agw-docs/pages/traffic-management/destination-types/kube-services/grpc-services.md @@ -199,7 +199,7 @@ Create an HTTPS listener so that the gateway can route gRPC traffic. GRPCRoute r ## Create a GRPCRoute {#create-grpcroute} -1. Create the GRPCRoute resource. Include the `grpc.reflection.v1alpha.ServerReflection` method to enable dynamic API exploration. For detailed information about GRPCRoute fields and configuration options, see the [Gateway API GRPCRoute documentation](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GRPCRoute). +1. Create the GRPCRoute resource. Include the `grpc.reflection.v1alpha.ServerReflection` method to enable dynamic API exploration. For detailed information about GRPCRoute fields and configuration options, see the [Gateway API GRPCRoute documentation](https://gateway-api.sigs.k8s.io/reference/spec/#grpcroute). ```yaml kubectl apply -f - <