From 5c9f5d8c47e4cd4cf8a2e3ff55c4694d462ba7b1 Mon Sep 17 00:00:00 2001 From: Nick Greenfield <56556602+greenie-msft@users.noreply.github.com> Date: Thu, 15 Oct 2026 13:43:17 -0700 Subject: [PATCH 1/2] Refresh Durable Task Scheduler sample documentation Document JavaScript/TypeScript SDK preview availability and Go sample readiness. Correct stale runtime, deployment, billing, and region guidance. Repair sample discovery and pinned Agent Framework links, and update targeted Functions and build configuration. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4859cb6e-4912-4455-8d57-b2de3579b20c --- .github/workflows/build-samples.yml | 5 +- CONTRIBUTING.md | 8 +- README.md | 39 +++--- docs/FAQ.md | 14 +- docs/patterns.md | 65 +++++---- docs/quickstart.md | 81 +++++++---- .../on-demand-sandboxes/docs/dotnet.md | 6 +- .../on-demand-sandboxes/docs/python.md | 6 +- samples/README.md | 124 ++++++++++++----- .../README.md | 127 ++++++++++-------- .../AiAgentTravelPlanOrchestrator/README.md | 6 +- .../dotnet/HelloCities/README.md | 21 +-- .../dotnet/PdfSummarizer/README.md | 17 ++- .../CustomExceptionPropertyProvider/README.md | 6 +- .../python/agent-directed-workflows/host.json | 4 +- .../python/pdf-summarizer/README.md | 14 +- .../python/pdf-summarizer/host.json | 7 +- .../python/pdf-summarizer/next-steps.md | 8 +- .../Agents/AgentDirectedWorkflows/README.md | 32 ++--- .../dotnet/Agents/PromptChaining/README.md | 2 +- .../dotnet/AspNetWebApp/README.md | 4 +- .../dotnet/EntitiesSample/README.md | 2 +- .../dotnet/EternalOrchestrations/README.md | 4 +- .../dotnet/FanOutFanIn/README.md | 2 +- .../dotnet/FunctionChaining/README.md | 39 +++--- .../dotnet/HumanInteraction/README.md | 2 +- .../dotnet/Monitoring/README.md | 4 +- .../dotnet/OpenTelemetryTracing/README.md | 6 +- .../dotnet/OrchestrationVersioning/README.md | 9 +- .../dotnet/ScheduleWebApp/README.md | 2 +- .../dotnet/SubOrchestrations/README.md | 4 +- samples/durable-task-sdks/java/README.md | 6 +- .../java/function-chaining/README.md | 6 +- .../durable-task-sdks/javascript/README.md | 6 +- 34 files changed, 416 insertions(+), 272 deletions(-) diff --git a/.github/workflows/build-samples.yml b/.github/workflows/build-samples.yml index 66758e74..f1c1497f 100644 --- a/.github/workflows/build-samples.yml +++ b/.github/workflows/build-samples.yml @@ -31,7 +31,6 @@ jobs: uses: actions/setup-dotnet@a98b56852c35b8e3190ac28c8c2271da59106c68 # v6 with: dotnet-version: "10.x" - dotnet-quality: "preview" # Durable Task SDK samples (net10.0) - name: Build DTS - FunctionChaining @@ -248,7 +247,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: - node-version: "20" + node-version: "22" # Durable Functions samples - name: Build DF JS - HelloCities @@ -267,7 +266,7 @@ jobs: - name: Setup Node.js uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7 with: - node-version: "20" + node-version: "22" # Durable Functions samples - name: Build DF TS - HelloCities diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 830b5d10..c397cd56 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -51,12 +51,12 @@ chances of your issue being dealt with quickly: * **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be causing the problem (line of code or commit) -You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/Azure/Durable-Task-Scheduler/issues/new. +You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/Azure-Samples/Durable-Task-Scheduler/issues/new. ### Submitting a Pull Request (PR) Before you submit your Pull Request (PR) consider the following guidelines: -* Search the repository (https://github.com/Azure/Durable-Task-Scheduler/pulls) for an open or closed PR +* Search the repository (https://github.com/Azure-Samples/Durable-Task-Scheduler/pulls) for an open or closed PR that relates to your submission. You don't want to duplicate effort. * Make your changes in a new git fork: @@ -69,7 +69,7 @@ Before you submit your Pull Request (PR) consider the following guidelines: * Rebase your fork and force push to your GitHub repository (this will update your Pull Request): ```shell - git rebase master -i + git rebase main -i git push -f ``` @@ -80,5 +80,5 @@ That's it! Thank you for your contribution! - Each sample should have its own directory under the appropriate framework/language folder. - Include a `README.md` following a consistent structure: description, prerequisites, how to run, and expected output. - Use the Durable Task Scheduler emulator as the default development experience. -- Include a `requirements.txt` (Python) or project file (`.csproj`/`.sln` for .NET, `build.gradle` for Java). +- Include a `requirements.txt` (Python) or project file (`.csproj`/`.sln` for .NET, `build.gradle` for Java, `package.json` for JavaScript/TypeScript). - Test your sample with the emulator before submitting. diff --git a/README.md b/README.md index 27a50975..711dc774 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Workflows can run for hours, days, or even months, reliably resuming from the last completed step after any crash, restart, or redeployment. Common use cases include distributed transactions, multi-agent AI orchestration, data processing pipelines, and infrastructure management. -Durable Task encompasses the Durable Task SDKs for self-hosted applications, [Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview) for serverless hosting on Azure Functions, and the [Durable Task Scheduler](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler) - a fully managed backend service purpose-built for durable workloads. +Durable Task encompasses the Durable Task SDKs for self-hosted applications, [Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview) for serverless hosting on Azure Functions, and the [Durable Task Scheduler](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler) - a fully managed backend service purpose-built for durable workloads. #### What is Durable Execution? @@ -39,12 +39,12 @@ Durable execution is an industry-wide approach to making ordinary code fault-tol - ๐Ÿ—๏ธ **Fully managed** - no storage accounts to configure, no infrastructure to maintain - โšก **Purpose-built & fast** - optimized compute+memory; push-model gRPC streaming (no polling) -- ๐Ÿ“Š **Built-in dashboard** - monitor orchestrations, drill into history, pause/terminate/restart instances ([Learn more](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-dashboard)) +- ๐Ÿ“Š **Built-in dashboard** - monitor orchestrations, drill into history, pause/terminate/restart instances ([Learn more](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-dashboard)) - ๐Ÿ›ก๏ธ **Fault isolation** - runs as a separate Azure resource; failures don't cascade to your app - ๐Ÿ“ˆ **Independent scaling** - scheduler scales separately from your app; multiple apps can share one scheduler -- ๐Ÿ—‚๏ธ **Multiple task hubs** - isolate workloads by environment, team, or project ([Learn more](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler#multiple-task-hubs)) +- ๐Ÿ—‚๏ธ **Multiple task hubs** - isolate workloads by environment, team, or project ([Learn more](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler#multiple-task-hubs)) - ๐Ÿณ **Emulator for local dev** - Docker-based emulator with dashboard included, zero Azure dependency -- ๐Ÿ” **Identity-based auth** - Microsoft Entra ID / managed identity, no secrets in connection strings ([Learn more](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-identity)) +- ๐Ÿ” **Identity-based auth** - Microsoft Entra ID / managed identity, no secrets in connection strings ([Learn more](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-identity)) - ๐ŸŒ **Run anywhere** - Azure Functions, Container Apps, AKS, App Service, VMs ![Architecture](./media/images/durable-task-sdks/dts-in-all-computes.png) @@ -71,12 +71,16 @@ docker run -d -p 8080:8080 -p 8082:8082 mcr.microsoft.com/dts/dts-emulator:lates ### Step 2: Pick your language and run a sample -| Language | Quickstart Sample | Run Command | -|----------|-------------------|-------------| -| .NET | Function Chaining | `cd samples/durable-task-sdks/dotnet/FunctionChaining/Worker && dotnet run` | -| Python | Function Chaining | `cd samples/durable-task-sdks/python/function-chaining && pip install -r requirements.txt && python worker.py` | -| Java | Function Chaining | `cd samples/durable-task-sdks/java/function-chaining && ./gradlew runChainingPattern` | -| JavaScript | Function Chaining | `cd samples/durable-task-sdks/javascript/function-chaining && npm install && node worker.mjs` | +Run the worker first, then run the client in a separate terminal to schedule orchestrations. Start each command at the repository root. The Java sample runs both in one process. + +See the [quickstart guide](./docs/quickstart.md) for runtime prerequisites (.NET 10, Python 3.9+, Java 21, or Node.js 22+) and Python virtual environment setup. + +| Language | Quickstart Sample | Worker Command | Client Command | +|----------|-------------------|----------------|----------------| +| .NET | [Function Chaining](./samples/durable-task-sdks/dotnet/FunctionChaining) | `cd samples/durable-task-sdks/dotnet/FunctionChaining/Worker && dotnet run` | `cd samples/durable-task-sdks/dotnet/FunctionChaining/Client && dotnet run` | +| Python | [Function Chaining](./samples/durable-task-sdks/python/function-chaining) | `cd samples/durable-task-sdks/python/function-chaining && pip install -r requirements.txt && python worker.py` | `cd samples/durable-task-sdks/python/function-chaining && python client.py` | +| Java | [Function Chaining](./samples/durable-task-sdks/java/function-chaining) | `cd samples/durable-task-sdks/java/function-chaining && ./gradlew runChainingPattern` | Included in the same process | +| JavaScript (preview) | [Function Chaining](./samples/durable-task-sdks/javascript/function-chaining) | `cd samples/durable-task-sdks/javascript/function-chaining && npm install && npm run worker` | `cd samples/durable-task-sdks/javascript/function-chaining && npm run client` | ### Step 3: Open the dashboard @@ -92,15 +96,17 @@ Navigate to **[http://localhost:8082](http://localhost:8082)** to view orchestra | **Hosting** | Azure Functions | Any host (ACA, AKS, App Service, VMs) | | **Triggers** | HTTP, Timer, Queue, etc. | Self-managed | | **Scaling** | Built-in auto-scale | Bring your own scaling | -| **Languages** | .NET, Python, Java, JavaScript | .NET, Python, Java, JavaScript | +| **Languages** | .NET, Python, Java, JavaScript/TypeScript, PowerShell | .NET, Python, Java, JavaScript/TypeScript (preview), Go (beta) | + +Go samples in this repository are coming soon. The [Go SDK repository](https://github.com/microsoft/durabletask-go) contains the beta SDK and its own samples. -๐Ÿ“– [Choosing an orchestration framework โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/choose-orchestration-framework) +๐Ÿ“– [Choosing an orchestration framework โ†’](https://learn.microsoft.com/azure/durable-task/common/choose-orchestration-framework) --- ## Samples -Explore production-ready examples across languages and frameworks. +Explore examples across languages and frameworks. ๐Ÿ“‚ [**Full Sample Catalog โ†’**](./samples/README.md) @@ -131,7 +137,8 @@ The Durable Task Scheduler provides a **built-in dashboard** for monitoring orch - [.NET](https://learn.microsoft.com/dotnet/api/microsoft.durabletask?view=durabletask-dotnet-1.x) - [Python](https://github.com/microsoft/durabletask-python) - [Java](https://learn.microsoft.com/java/api/com.microsoft.durabletask?view=durabletask-java-1.x) -- JavaScript (coming soon) +- [JavaScript / TypeScript (preview)](https://github.com/microsoft/durabletask-js) - [JavaScript samples](./samples/durable-task-sdks/javascript/) +- [Go (beta)](https://github.com/microsoft/durabletask-go) - samples in this repository coming soon ### Durable Functions @@ -151,7 +158,9 @@ This repository includes specialized skills for AI coding assistants ([GitHub Co | **durable-functions-dotnet** | Durable Functions with .NET isolated worker - orchestrations, activities, entities, and all workflow patterns | [Skill โ†’](.github/skills/durable-functions-dotnet/SKILL.md) | | **durable-task-dotnet** | Durable Task SDK for .NET - portable orchestrations without Azure Functions dependency | [Skill โ†’](.github/skills/durable-task-dotnet/SKILL.md) | | **durable-task-java** | Durable Task SDK for Java - orchestrations, activities, and common workflow patterns | [Skill โ†’](.github/skills/durable-task-java/SKILL.md) | +| **durable-task-js** | Durable Task SDK for JavaScript/TypeScript - orchestrations, activities, entities, and common workflow patterns | [Skill โ†’](.github/skills/durable-task-js/SKILL.md) | | **durable-task-python** | Durable Task SDK for Python - orchestrations, activities, entities, and stateful agents | [Skill โ†’](.github/skills/durable-task-python/SKILL.md) | +| **migrate-backend-to-dts** | Migrate Durable Functions apps from Azure Storage, Netherite, or MSSQL to Durable Task Scheduler | [Skill โ†’](.github/skills/migrate-backend-to-dts/SKILL.md) | **Usage:** Reference a skill file in your AI assistant (e.g., `#file:.github/skills/durable-task-dotnet/SKILL.md` in Copilot Chat) or ask it to read the skill before generating code. Skills are automatically detected by Claude Code when working on relevant files. @@ -166,7 +175,7 @@ We welcome contributions! Please see [CONTRIBUTING.md](./CONTRIBUTING.md) for gu ## Community & Support - ๐Ÿ“– [Official Documentation](https://aka.ms/dts-documentation) -- ๐Ÿ’ฌ [GitHub Issues](https://github.com/Azure/Durable-Task-Scheduler/issues) - bugs and feature requests +- ๐Ÿ’ฌ [GitHub Issues](https://github.com/Azure-Samples/Durable-Task-Scheduler/issues) - bugs and feature requests - ๐Ÿ“ง Contact: [nicholas.greenfield@microsoft.com](mailto:nicholas.greenfield@microsoft.com), [jiayma@microsoft.com](mailto:jiayma@microsoft.com) --- diff --git a/docs/FAQ.md b/docs/FAQ.md index b2d4adc3..53ce190e 100644 --- a/docs/FAQ.md +++ b/docs/FAQ.md @@ -3,16 +3,16 @@ ## General **Q: What is the Durable Task Scheduler?** -A: The Durable Task Scheduler is a fully managed Azure service for durable execution โ€” running fault-tolerant code that handles failures through automatic retries and state persistence. It serves as the backend for Durable Functions and the Durable Task SDKs. [Learn more โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler) +A: The Durable Task Scheduler is a fully managed Azure service for durable execution - running fault-tolerant code that handles failures through automatic retries and state persistence. It serves as the backend for Durable Functions and the Durable Task SDKs. [Learn more โ†’](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler) **Q: What's the difference between Durable Functions and Durable Task SDKs?** -A: Durable Functions is an extension of Azure Functions โ€” best for serverless, event-driven apps with built-in triggers and auto-scaling. Durable Task SDKs are lightweight client libraries that work on any compute (Container Apps, AKS, VMs, etc.) โ€” best when you need portability or already have a hosting environment. Both use the same Durable Task Scheduler backend. [See comparison โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/choose-orchestration-framework) +A: Durable Functions is an extension of Azure Functions - best for serverless, event-driven apps with built-in triggers and auto-scaling. Durable Task SDKs are lightweight client libraries that work on any compute (Container Apps, AKS, VMs, etc.) - best when you need portability or already have a hosting environment. Both use the same Durable Task Scheduler backend. [See comparison โ†’](https://learn.microsoft.com/azure/durable-task/common/choose-orchestration-framework) **Q: What languages are supported?** -A: Durable Task SDKs: .NET, Python, Java (JavaScript coming soon). Durable Functions: .NET, Python, Java, JavaScript/TypeScript. +A: Durable Task SDKs: .NET, Python, Java, [JavaScript/TypeScript (preview)](https://github.com/microsoft/durabletask-js), and [Go (beta)](https://github.com/microsoft/durabletask-go). [JavaScript samples](../samples/durable-task-sdks/javascript/) are available here; Go samples in this repository are coming soon. Durable Functions: .NET, Python, Java, JavaScript/TypeScript, and PowerShell. Go is a standalone SDK language, not a Durable Functions language. **Q: How much does it cost?** -A: The Durable Task Scheduler offers a Dedicated SKU (reserved capacity) and a Consumption SKU (preview, pay-per-use). The emulator is free for local development. [See pricing details โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-dedicated-sku) +A: The Durable Task Scheduler offers a Dedicated SKU (reserved capacity) and a Consumption SKU (pay-per-use). Both are generally available. The emulator is free for local development. [See pricing details โ†’](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-billing) ## Development @@ -23,10 +23,10 @@ A: Yes! The Durable Task Scheduler emulator runs in Docker and provides the full A: A task hub is a logical container for orchestration and entity instances. You can create multiple task hubs within a single scheduler to isolate workloads by environment (dev/test/prod), team, or project. Each task hub gets its own monitoring dashboard. [Learn more โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-task-hubs) **Q: How does authentication work?** -A: The Durable Task Scheduler uses identity-based authentication only (Microsoft Entra ID / managed identity). No shared keys or connection string secrets. For local development with the emulator, no authentication is required. [Learn more โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-identity) +A: The Durable Task Scheduler uses identity-based authentication only (Microsoft Entra ID / managed identity). No shared keys or connection string secrets. For local development with the emulator, no authentication is required. [Learn more โ†’](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-identity) **Q: Can I use the Durable Task Scheduler with existing Durable Functions apps?** -A: Yes! The Durable Task Scheduler is a backend provider for Durable Functions. You can switch from Azure Storage or other providers to the Durable Task Scheduler by updating your configuration. [Migration guide โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/develop-with-durable-task-scheduler-functions) +A: Yes! The Durable Task Scheduler is a backend provider for Durable Functions. You can switch from Azure Storage or other providers to the Durable Task Scheduler by updating your configuration. [Configuration guide โ†’](https://learn.microsoft.com/azure/durable-task/scheduler/quickstart-durable-task-scheduler#understand-the-durable-task-scheduler-configuration) ## Monitoring & Observability @@ -42,4 +42,4 @@ A: Yes. Durable Functions supports distributed tracing V2 with Application Insig A: Ensure Docker is running and ports 8080/8082 are free. Try: `docker pull mcr.microsoft.com/dts/dts-emulator:latest` to get the latest image. If ports conflict, map to different ports: `docker run -d -p 9080:8080 -p 9082:8082 mcr.microsoft.com/dts/dts-emulator:latest` **Q: Where do I report bugs or request features?** -A: For issues with the Durable Task Scheduler service, use the [Azure/Durable-Task-Scheduler repo](https://github.com/Azure/Durable-Task-Scheduler/issues). For sample issues, open an issue in this repository. +A: For Durable Task Scheduler service issues and sample issues, use [this repository's issue tracker](https://github.com/Azure-Samples/Durable-Task-Scheduler/issues). The former Azure/Durable-Task-Scheduler repository is archived. diff --git a/docs/patterns.md b/docs/patterns.md index 00f2d81a..81daab0c 100644 --- a/docs/patterns.md +++ b/docs/patterns.md @@ -1,6 +1,10 @@ # Orchestration Patterns -This guide maps each common orchestration pattern to available samples and documentation. All patterns can be developed locally using the [Durable Task Scheduler emulator](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/develop-with-durable-task-scheduler). +This guide maps each common orchestration pattern to available samples and documentation. All patterns can be developed locally using the [Durable Task Scheduler emulator](https://learn.microsoft.com/azure/durable-task/scheduler/develop-with-durable-task-scheduler). + +The [JavaScript/TypeScript SDK](https://github.com/microsoft/durabletask-js) is available in preview, with JavaScript examples linked below. Go samples in this repository are coming soon; the [Go SDK repository](https://github.com/microsoft/durabletask-go) contains the beta SDK and its own samples. + +A blank table cell means no sample is linked here. --- @@ -16,9 +20,10 @@ Activity A โ†’ Activity B โ†’ Activity C โ†’ Result | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| | .NET | [Sample](../samples/durable-task-sdks/dotnet/FunctionChaining) | [HelloCities](../samples/durable-functions/dotnet/HelloCities) | -| Python | [Sample](../samples/durable-task-sdks/python/function-chaining) | โ€” | +| Python | [Sample](../samples/durable-task-sdks/python/function-chaining) | [Hello Cities](../samples/durable-functions/python/hello-cities) | | Java | [Sample](../samples/durable-task-sdks/java/function-chaining) | [HelloCities](../samples/durable-functions/java/HelloCities) | -| JavaScript | โ€” | [HelloCities](../samples/durable-functions/javascript/HelloCities) | +| JavaScript | [Sample](../samples/durable-task-sdks/javascript/function-chaining) | [HelloCities](../samples/durable-functions/javascript/HelloCities) | +| TypeScript | See the JavaScript SDK sample above | [HelloCities](../samples/durable-functions/typescript/HelloCities) | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-sequence) @@ -37,10 +42,11 @@ Input โ”€โ”€โ”€โ”ผโ†’ Activity B โ”€โ”€โ”ผโ†’ Aggregate โ†’ Result | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/FanOutFanIn) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/FanOutFanIn) | [Large Payload Fan-out/Fan-in](../samples/durable-functions/dotnet/LargePayloadFanOutFanIn) | | Python | [Sample](../samples/durable-task-sdks/python/fan-out-fan-in) | [Fan-out/Fan-in](../samples/durable-functions/python/fan-out-fan-in) | | Java | [Sample](../samples/durable-task-sdks/java/fan-out-fan-in) | [HelloCities](../samples/durable-functions/java/HelloCities) | -| JavaScript | โ€” | [HelloCities](../samples/durable-functions/javascript/HelloCities) | +| JavaScript | [Sample](../samples/durable-task-sdks/javascript/fan-out-fan-in) | [HelloCities](../samples/durable-functions/javascript/HelloCities) | +| TypeScript | See the JavaScript SDK sample above | [HelloCities](../samples/durable-functions/typescript/HelloCities) | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-cloud-backup) @@ -60,8 +66,8 @@ Client โ†’ GET /status โ†’ 200 Completed (with result) | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| | .NET | [ASP.NET Web App](../samples/durable-task-sdks/dotnet/AspNetWebApp) | [HelloCities](../samples/durable-functions/dotnet/HelloCities) | -| Python | [Sample](../samples/durable-task-sdks/python/async-http-api) | โ€” | -| Java | [Sample](../samples/durable-task-sdks/java/async-http-api) | โ€” | +| Python | [Sample](../samples/durable-task-sdks/python/async-http-api) | | +| Java | [Sample](../samples/durable-task-sdks/java/async-http-api) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-http-api) @@ -80,9 +86,9 @@ Orchestration โ†’ Wait for approval event | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/HumanInteraction) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/human-interaction) | โ€” | -| Java | [Sample](../samples/durable-task-sdks/java/human-interaction) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/HumanInteraction) | | +| Python | [Sample](../samples/durable-task-sdks/python/human-interaction) | | +| Java | [Sample](../samples/durable-task-sdks/java/human-interaction) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-phone-verification) @@ -99,9 +105,9 @@ Check status โ†’ Not ready โ†’ Wait โ†’ Check status โ†’ Ready โ†’ Done | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/Monitoring) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/monitoring) | โ€” | -| Java | [Sample](../samples/durable-task-sdks/java/monitoring) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/Monitoring) | | +| Python | [Sample](../samples/durable-task-sdks/python/monitoring) | | +| Java | [Sample](../samples/durable-task-sdks/java/monitoring) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-monitor) @@ -120,9 +126,9 @@ Parent Orchestration | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/SubOrchestrations) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/sub-orchestrations) | โ€” | -| Java | [Sample](../samples/durable-task-sdks/java/sub-orchestrations) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/SubOrchestrations) | | +| Python | [Sample](../samples/durable-task-sdks/python/sub-orchestrations) | | +| Java | [Sample](../samples/durable-task-sdks/java/sub-orchestrations) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-sub-orchestrations) @@ -139,9 +145,9 @@ Process batch โ†’ Continue as new โ†’ Process batch โ†’ Continue as new โ†’ ... | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/EternalOrchestrations) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/eternal-orchestrations) | โ€” | -| Java | [Sample](../samples/durable-task-sdks/java/eternal-orchestrations) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/EternalOrchestrations) | | +| Python | [Sample](../samples/durable-task-sdks/python/eternal-orchestrations) | | +| Java | [Sample](../samples/durable-task-sdks/java/eternal-orchestrations) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-eternal-orchestrations) @@ -158,8 +164,8 @@ Coordinator (batch N) โ†’ fan out children โ†’ wait all โ†’ continue_as_new โ†’ | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/BoundedCoordinator) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/bounded-coordinator) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/BoundedCoordinator) | | +| Python | [Sample](../samples/durable-task-sdks/python/bounded-coordinator) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-eternal-orchestrations) @@ -179,8 +185,9 @@ Entity: Counter | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/EntitiesSample) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/entities) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/EntitiesSample) | | +| Python | [Sample](../samples/durable-task-sdks/python/entities) | | +| Java | [Sample](../samples/durable-task-sdks/java/entities) | [Entities](../samples/durable-functions/java/Entities) | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-entities) @@ -198,8 +205,8 @@ Step 1 โ†’ Step 2 โ†’ Step 3 (fails!) | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | โ€” | [Saga Sample](../samples/durable-functions/dotnet/Saga) | -| Python | [Sample](../samples/durable-task-sdks/python/saga) | โ€” | +| .NET | | [Saga Sample](../samples/durable-functions/dotnet/Saga) | +| Python | [Sample](../samples/durable-task-sdks/python/saga) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/architecture/reference-architectures/saga/saga) @@ -210,8 +217,8 @@ Safely evolve orchestration logic without breaking in-flight instances. | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Sample](../samples/durable-task-sdks/dotnet/OrchestrationVersioning) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/versioning) | โ€” | +| .NET | [Sample](../samples/durable-task-sdks/dotnet/OrchestrationVersioning) | | +| Python | [Sample](../samples/durable-task-sdks/python/versioning) | | ๐Ÿ“– [Learn more on Microsoft Learn โ†’](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-versioning) @@ -228,8 +235,8 @@ Schedule (every 5s) โ†’ Start orchestration โ†’ ... โ†’ Start orchestration | Language | Durable Task SDK | Durable Functions | |----------|-----------------|-------------------| -| .NET | [Schedule Web App](../samples/durable-task-sdks/dotnet/ScheduleWebApp) | โ€” | -| Python | [Sample](../samples/durable-task-sdks/python/scheduled-tasks) | โ€” | +| .NET | [Schedule Web App](../samples/durable-task-sdks/dotnet/ScheduleWebApp) | | +| Python | [Sample](../samples/durable-task-sdks/python/scheduled-tasks) | | --- diff --git a/docs/quickstart.md b/docs/quickstart.md index ca49ef79..638781f0 100644 --- a/docs/quickstart.md +++ b/docs/quickstart.md @@ -21,76 +21,101 @@ Verify it's running by opening the dashboard: [http://localhost:8082](http://loc Choose your language and follow the instructions: +Clone the repository, then open each terminal at the repository root: + +```bash +git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git +cd Durable-Task-Scheduler +``` + ### .NET -**Requires:** [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +**Requires:** [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) + +Start the worker in Terminal 1: ```bash -# Clone the repo -git clone https://github.com/Azure/Durable-Task-Scheduler.git -cd Durable-Task-Scheduler +dotnet run --project samples/durable-task-sdks/dotnet/FunctionChaining/Worker +``` -# Start the worker (Terminal 1) -cd samples/durable-task-sdks/dotnet/FunctionChaining/Worker -dotnet run +Run the client in Terminal 2: -# Run the client (Terminal 2) -cd samples/durable-task-sdks/dotnet/FunctionChaining/Client -dotnet run +```bash +dotnet run --project samples/durable-task-sdks/dotnet/FunctionChaining/Client ``` ### Python **Requires:** [Python 3.9+](https://www.python.org/downloads/) -```bash -# Clone the repo -git clone https://github.com/Azure/Durable-Task-Scheduler.git -cd Durable-Task-Scheduler +Set up a virtual environment and start the worker in Terminal 1: -# Set up environment +```bash cd samples/durable-task-sdks/python/function-chaining python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt - -# Start the worker (Terminal 1) python worker.py +``` + +Activate the same virtual environment and run the client in Terminal 2: -# Run the client (Terminal 2) +```bash +cd samples/durable-task-sdks/python/function-chaining +source venv/bin/activate # Windows: venv\Scripts\activate python client.py ``` ### Java -**Requires:** [Java 8+](https://adoptium.net/) +**Requires:** [Java 21](https://adoptium.net/) -```bash -# Clone the repo -git clone https://github.com/Azure/Durable-Task-Scheduler.git -cd Durable-Task-Scheduler +This sample starts the worker and client in the same process: -# Run the sample +```bash cd samples/durable-task-sdks/java/function-chaining ./gradlew runChainingPattern ``` +If the Gradle wrapper is not executable, run `chmod +x gradlew` first. + +### JavaScript / TypeScript SDK (preview) + +**Requires:** [Node.js 22+](https://nodejs.org/). The [SDK](https://github.com/microsoft/durabletask-js) supports JavaScript and TypeScript; this sample uses JavaScript. + +Install dependencies and start the worker in Terminal 1: + +```bash +cd samples/durable-task-sdks/javascript/function-chaining +npm install +npm run worker +``` + +Run the client in Terminal 2: + +```bash +cd samples/durable-task-sdks/javascript/function-chaining +npm run client +``` + +Go samples in this repository are coming soon. See the [Go SDK repository](https://github.com/microsoft/durabletask-go) for the beta SDK and its own samples. + ## Step 3: View in the Dashboard 1. Open [http://localhost:8082](http://localhost:8082) in your browser 2. Click on the **default** task hub 3. You'll see your orchestration instance(s) in the list -4. Click on an instance to view execution details โ€” each activity, its input/output, and timing +4. Click on an instance to view execution details: each activity, its input/output, and timing ## What Just Happened? -You ran a **function chaining** orchestration โ€” a sequential workflow where: +You ran a **function chaining** orchestration, a sequential workflow where: 1. Activity A processed some input and passed its output to... 2. Activity B, which transformed it and passed it to... 3. Activity C, which produced the final result -The orchestration is **durable** โ€” if the process had crashed at any point, it would have automatically resumed from where it left off. +The orchestration is **durable**: if the process had crashed at any point, it would have automatically resumed from where it left off. ## Next Steps @@ -100,4 +125,4 @@ The orchestration is **durable** โ€” if the process had crashed at any point, it | Browse all samples | [Sample Catalog](../samples/README.md) | | Learn about the Durable Task Scheduler | [Official Documentation](https://aka.ms/dts-documentation) | | Add OpenTelemetry tracing | [Observability Guide](./observability.md) | -| Deploy to Azure | [Azure deployment guide](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/develop-with-durable-task-scheduler) | +| Deploy to Azure | [Azure deployment guide](https://learn.microsoft.com/azure/durable-task/scheduler/develop-with-durable-task-scheduler) | diff --git a/preview-features/on-demand-sandboxes/docs/dotnet.md b/preview-features/on-demand-sandboxes/docs/dotnet.md index 34db4596..b19a3464 100644 --- a/preview-features/on-demand-sandboxes/docs/dotnet.md +++ b/preview-features/on-demand-sandboxes/docs/dotnet.md @@ -1,9 +1,9 @@ # On-demand Sandboxes: .NET guide -> **Status:** Private preview ยท [Back to overview](./README.md) +> **Status:** Private preview ยท [Back to overview](../README.md) This guide walks through using On-demand Sandboxes with the **.NET** Durable Task SDK. -Make sure you've read the [overview](./README.md) first. +Make sure you've read the [overview](../README.md) first. On-demand Sandboxes use a two-part model: a **sandbox worker profile** in your orchestrator app that tells DTS which activities to offload, and a **worker image** that @@ -258,4 +258,4 @@ sinks or building your own observability pipeline. - [Configure the scheduler identity for image pull](#configure-the-scheduler-identity-for-image-pull) - [End-to-end .NET sample](../samples/dotnet) - [Python guide](./python.md) -- [Back to overview](./README.md) +- [Back to overview](../README.md) diff --git a/preview-features/on-demand-sandboxes/docs/python.md b/preview-features/on-demand-sandboxes/docs/python.md index 07714d87..ddc665c8 100644 --- a/preview-features/on-demand-sandboxes/docs/python.md +++ b/preview-features/on-demand-sandboxes/docs/python.md @@ -1,9 +1,9 @@ # On-demand Sandboxes: Python guide -> **Status:** Private preview ยท [Back to overview](./README.md) +> **Status:** Private preview ยท [Back to overview](../README.md) This guide walks through using On-demand Sandboxes with the **Python** Durable Task SDK. -Make sure you've read the [overview](./README.md) first. +Make sure you've read the [overview](../README.md) first. On-demand Sandboxes use a two-part model: a **sandbox worker profile** (the *declarer app*) that tells DTS which activities to offload, and a **worker image** that contains @@ -296,4 +296,4 @@ sinks or building your own observability pipeline. - [Configure the scheduler identity for image pull](#configure-the-scheduler-identity-for-image-pull) - [End-to-end Python sample](../samples/python) - [.NET guide](./dotnet.md) -- [Back to overview](./README.md) +- [Back to overview](../README.md) diff --git a/samples/README.md b/samples/README.md index 3cebf534..1a1bc106 100644 --- a/samples/README.md +++ b/samples/README.md @@ -35,31 +35,41 @@ A quick-reference matrix showing which patterns are available in each language a | Sub-orchestrations | [โœ…](./durable-task-sdks/dotnet/SubOrchestrations) | [โœ…](./durable-task-sdks/python/sub-orchestrations) | [โœ…](./durable-task-sdks/java/sub-orchestrations) | | | Eternal Orchestrations | [โœ…](./durable-task-sdks/dotnet/EternalOrchestrations) | [โœ…](./durable-task-sdks/python/eternal-orchestrations) | [โœ…](./durable-task-sdks/java/eternal-orchestrations) | | | Saga Pattern | | [โœ…](./durable-task-sdks/python/saga) | | | -| Durable Entities | [โœ…](./durable-task-sdks/dotnet/EntitiesSample) | [โœ…](./durable-task-sdks/python/entities) | | | +| Durable Entities | [โœ…](./durable-task-sdks/dotnet/EntitiesSample) | [โœ…](./durable-task-sdks/python/entities) | [โœ…](./durable-task-sdks/java/entities) | | | Orchestration Versioning | [โœ…](./durable-task-sdks/dotnet/OrchestrationVersioning) | [โœ…](./durable-task-sdks/python/versioning) | | | | ASP.NET Web API | [โœ…](./durable-task-sdks/dotnet/AspNetWebApp) | | | | | Scheduled Tasks | [โœ…](./durable-task-sdks/dotnet/ScheduleWebApp) | [โœ…](./durable-task-sdks/python/scheduled-tasks) | | | | .NET Aspire Integration | [โœ…](./durable-task-sdks/dotnet/DtsWithAspire) | | | | | AI Agent Chaining | [โœ…](./durable-task-sdks/dotnet/Agents/PromptChaining) | | | | | AI Research Agent | | [โœ…](./durable-task-sdks/python/arXiv_research_agent) | | | -| Large Payload | [โœ…](./durable-task-sdks/dotnet/LargePayload) | | | | +| Large Payload | [โœ…](./durable-task-sdks/dotnet/LargePayload) | [โœ…](./durable-task-sdks/python/large-payload) | | | | Export History | [โœ…](./durable-task-sdks/dotnet/ExportHistoryWebApp) | [โœ…](./durable-task-sdks/python/history-export) | | | | Bounded Coordinator | [โœ…](./durable-task-sdks/dotnet/BoundedCoordinator) | [โœ…](./durable-task-sdks/python/bounded-coordinator) | | | +| OpenTelemetry Tracing | [โœ…](./durable-task-sdks/dotnet/OpenTelemetryTracing) | [โœ…](./durable-task-sdks/python/opentelemetry-tracing) | [โœ…](./durable-task-sdks/java/opentelemetry-tracing) | | +| Agent-Directed Workflows | [โœ…](./durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows) | [โœ…](./durable-task-sdks/python/agent-directed-workflows) | | | +| Orchestration Management | | [โœ…](./durable-task-sdks/python/orchestration-management) | | | +| Work Item Filtering | [โœ…](./scenarios/WorkItemFilteringSplitActivities) | [โœ…](./durable-task-sdks/python/work-item-filtering) | [โœ…](./scenarios/WorkItemFilteringSplitActivitiesJava) | | +| In-Memory Testing | | [โœ…](./durable-task-sdks/python/testing) | | | ### Durable Functions -| Pattern | .NET | Python | Java | JavaScript | PowerShell | -|---------|------|--------|------|------------|------------| -| Hello Cities (Quickstart) | [โœ…](./durable-functions/dotnet/HelloCities) | | [โœ…](./durable-functions/java/HelloCities) | [โœ…](./durable-functions/javascript/HelloCities) | [โœ…](./durable-functions/powershell/HelloCities) | -| Fan-out/Fan-in | | [โœ…](./durable-functions/python/fan-out-fan-in) | [โœ…](./durable-functions/java/HelloCities) | [โœ…](./durable-functions/javascript/HelloCities) | [โœ…](./durable-functions/powershell/HelloCities) | -| Order Processor | [โœ…](./durable-functions/dotnet/OrderProcessor) | | | | -| Saga Pattern | [โœ…](./durable-functions/dotnet/Saga) | | | | -| Distributed Tracing | [โœ…](./durable-functions/dotnet/DistributedTracing) | | | | -| Large Payload | [โœ…](./durable-functions/dotnet/LargePayload) | | | | -| Large Payload Fan-out/Fan-in | [โœ…](./durable-functions/dotnet/LargePayloadFanOutFanIn) | | | | -| PDF Summarizer | [โœ…](./durable-functions/dotnet/PdfSummarizer) | [โœ…](./durable-functions/python/pdf-summarizer) | | | -| AI Travel Planner | [โœ…](./durable-functions/dotnet/AiAgentTravelPlanOrchestrator) | | | | -| Aspire Integration | [โœ…](./durable-functions/dotnet/AzureFunctionsAndDtsWithAspire) | | | | +| Pattern | .NET | Python | Java | JavaScript | TypeScript | PowerShell | +|---------|------|--------|------|------------|------------|------------| +| Hello Cities (Quickstart) | [โœ…](./durable-functions/dotnet/HelloCities) | [โœ…](./durable-functions/python/hello-cities) | [โœ…](./durable-functions/java/HelloCities) | [โœ…](./durable-functions/javascript/HelloCities) | [โœ…](./durable-functions/typescript/HelloCities) | [โœ…](./durable-functions/powershell/HelloCities) | +| Fan-out/Fan-in | [โœ…](./durable-functions/dotnet/LargePayloadFanOutFanIn) | [โœ…](./durable-functions/python/fan-out-fan-in) | [โœ…](./durable-functions/java/HelloCities) | [โœ…](./durable-functions/javascript/HelloCities) | [โœ…](./durable-functions/typescript/HelloCities) | [โœ…](./durable-functions/powershell/HelloCities) | +| Order Processor | [โœ…](./durable-functions/dotnet/OrderProcessor) | | | | | | +| Saga Pattern | [โœ…](./durable-functions/dotnet/Saga) | | | | | | +| Distributed Tracing | [โœ…](./durable-functions/dotnet/DistributedTracing) | | | | | | +| Large Payload | [โœ…](./durable-functions/dotnet/LargePayload) | | | | | | +| Large Payload Fan-out/Fan-in | [โœ…](./durable-functions/dotnet/LargePayloadFanOutFanIn) | | | | | | +| PDF Summarizer | [โœ…](./durable-functions/dotnet/PdfSummarizer) | [โœ…](./durable-functions/python/pdf-summarizer) | | | | | +| AI Travel Planner | [โœ…](./durable-functions/dotnet/AiAgentTravelPlanOrchestrator) | | | | | | +| Aspire Integration | [โœ…](./durable-functions/dotnet/AzureFunctionsAndDtsWithAspire) | | | | | | +| Agent-Directed Workflows | [โœ…](./durable-functions/dotnet/AgentDirectedWorkflows) | [โœ…](./durable-functions/python/agent-directed-workflows) | | | | | +| Durable Entities | | | [โœ…](./durable-functions/java/Entities) | | | | +| Work Item Filtering | [โœ…](./durable-functions/dotnet/WorkItemFiltering) | [โœ…](./durable-functions/python/work-item-filtering) | | | | | +| Custom Exception Properties | [โœ…](./durable-functions/dotnet/CustomExceptionPropertyProvider) | | | [โœ…](./durable-functions/javascript/CustomExceptionPropertyProvider) | | | +| Critical Sections | | | | [โœ…](./durable-functions/javascript/CriticalSections) | [โœ…](./durable-functions/typescript/CriticalSections) | | --- @@ -83,6 +93,9 @@ A quick-reference matrix showing which patterns are available in each language a | [Eternal Orchestrations](./durable-task-sdks/dotnet/EternalOrchestrations) | Eternal Orchestrations | Indefinitely running orchestration with ContinueAsNew | | [OpenTelemetry Tracing](./durable-task-sdks/dotnet/OpenTelemetryTracing) | Observability | Distributed tracing with OpenTelemetry and Jaeger | | [Large Payload](./durable-task-sdks/dotnet/LargePayload) | Large Payload | Blob-backed payload externalization for orchestration inputs and outputs larger than 1 MB | +| [Export History](./durable-task-sdks/dotnet/ExportHistoryWebApp) | Export History | REST API for batch and continuous orchestration history export to Azure Blob Storage | +| [Bounded Coordinator](./durable-task-sdks/dotnet/BoundedCoordinator) | Bounded Coordinator | Process child work in bounded batches and reset history with ContinueAsNew | +| [Agent-Directed Workflows](./durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows) | AI Agents | Entity-based agent loop with tool calling and Redis-backed response streaming | ### Python @@ -100,6 +113,14 @@ A quick-reference matrix showing which patterns are available in each language a | [AI Research Agent](./durable-task-sdks/python/arXiv_research_agent) | AI Agents | Autonomous research agent with arXiv + LLM | | [Saga Pattern](./durable-task-sdks/python/saga) | Saga | Travel booking with compensating transactions | | [OpenTelemetry Tracing](./durable-task-sdks/python/opentelemetry-tracing) | Observability | Distributed tracing with OpenTelemetry and Jaeger | +| [Scheduled Tasks](./durable-task-sdks/python/scheduled-tasks) | Scheduled Tasks | Recurring orchestrations with pause, resume, and schedule management | +| [Export History](./durable-task-sdks/python/history-export) | Export History | Export orchestration history to Azure Blob Storage | +| [Bounded Coordinator](./durable-task-sdks/python/bounded-coordinator) | Bounded Coordinator | Process child work in bounded batches and reset history with continue-as-new | +| [Large Payload](./durable-task-sdks/python/large-payload) | Large Payload | Transparently externalize large payloads to Azure Blob Storage | +| [Orchestration Management](./durable-task-sdks/python/orchestration-management) | Management | Query, suspend, resume, terminate, and purge orchestration instances | +| [Work Item Filtering](./durable-task-sdks/python/work-item-filtering) | Work Item Filtering | Route orchestration and activity work to workers that register matching tasks | +| [In-Memory Testing](./durable-task-sdks/python/testing) | Testing | Test orchestrations and activities without Docker, an emulator, or Azure resources | +| [Agent-Directed Workflows](./durable-task-sdks/python/agent-directed-workflows) | AI Agents | Entity-based agent loop with tool calling and response streaming | ### Java @@ -112,14 +133,22 @@ A quick-reference matrix showing which patterns are available in each language a | [Monitoring](./durable-task-sdks/java/monitoring) | Monitoring | Periodic polling pattern | | [Sub-orchestrations](./durable-task-sdks/java/sub-orchestrations) | Sub-orchestrations | Nested orchestration composition | | [Eternal Orchestrations](./durable-task-sdks/java/eternal-orchestrations) | Eternal Orchestrations | Continue-as-new pattern | +| [Durable Entities](./durable-task-sdks/java/entities) | Durable Entities | Counter entity with state persisted across operations | +| [OpenTelemetry Tracing](./durable-task-sdks/java/opentelemetry-tracing) | Observability | Distributed tracing with OpenTelemetry and Jaeger | -### JavaScript +### JavaScript / TypeScript (preview) + +The [JavaScript/TypeScript SDK](https://github.com/microsoft/durabletask-js) is available in preview. The samples below use JavaScript; see the [JavaScript sample guide](./durable-task-sdks/javascript/) for prerequisites and setup. | Sample | Pattern | Description | |--------|---------|-------------| | [Function Chaining](./durable-task-sdks/javascript/function-chaining) | Function Chaining | Sequential workflow basics with JavaScript SDK | | [Fan-out/Fan-in](./durable-task-sdks/javascript/fan-out-fan-in) | Fan-out/Fan-in | Parallel execution and result aggregation with JavaScript SDK | +### Go (samples coming soon) + +Go samples in this repository are coming soon. The [official Go SDK repository](https://github.com/microsoft/durabletask-go) provides the beta SDK and its own samples for Durable Task Scheduler and the local emulator. + --- ## Durable Functions @@ -137,25 +166,41 @@ A quick-reference matrix showing which patterns are available in each language a | [PDF Summarizer](./durable-functions/dotnet/PdfSummarizer) | AI Pipeline | AI-powered document processing pipeline | | [AI Travel Planner](./durable-functions/dotnet/AiAgentTravelPlanOrchestrator) | AI Agents | Multi-agent travel planning orchestration | | [Distributed Tracing](./durable-functions/dotnet/DistributedTracing) | Observability | Distributed tracing with Application Insights and Jaeger | +| [Agent-Directed Workflows](./durable-functions/dotnet/AgentDirectedWorkflows) | AI Agents | Entity-based agent loop with tool calling and Redis-backed response streaming | +| [Work Item Filtering](./durable-functions/dotnet/WorkItemFiltering) | Work Item Filtering | Route work between two Function apps sharing a task hub | +| [Custom Exception Properties](./durable-functions/dotnet/CustomExceptionPropertyProvider) | Error Handling | Propagate structured exception properties to orchestration failure details | ### Python | Sample | Pattern | Description | |--------|---------|-------------| +| [Hello Cities](./durable-functions/python/hello-cities) | Quickstart | Basic orchestration with greeting activities | | [PDF Summarizer](./durable-functions/python/pdf-summarizer) | AI Pipeline | AI-powered PDF summarization | | [Fan-out/Fan-in](./durable-functions/python/fan-out-fan-in) | Fan-out/Fan-in | Parallel processing with result aggregation | +| [Agent-Directed Workflows](./durable-functions/python/agent-directed-workflows) | AI Agents | Entity-based agent loop with tool calling and response streaming | +| [Work Item Filtering](./durable-functions/python/work-item-filtering) | Work Item Filtering | Route work between two Function apps sharing a task hub | ### Java | Sample | Pattern | Description | |--------|---------|-------------| | [Hello Cities](./durable-functions/java/HelloCities) | Function Chaining, Fan-out/Fan-in | Java quickstart with sequential and parallel orchestration patterns | +| [Durable Entities](./durable-functions/java/Entities) | Durable Entities | Stateful counter entity | ### JavaScript | Sample | Pattern | Description | |--------|---------|-------------| | [Hello Cities](./durable-functions/javascript/HelloCities) | Function Chaining, Fan-out/Fan-in | JavaScript quickstart with sequential and parallel orchestration patterns | +| [Critical Sections](./durable-functions/javascript/CriticalSections) | Entity Coordination | Coordinate access to entities with durable locks | +| [Custom Exception Properties](./durable-functions/javascript/CustomExceptionPropertyProvider) | Error Handling | Propagate structured exception properties to orchestration failure details | + +### TypeScript + +| Sample | Pattern | Description | +|--------|---------|-------------| +| [Hello Cities](./durable-functions/typescript/HelloCities) | Function Chaining, Fan-out/Fan-in | TypeScript quickstart with sequential and parallel orchestration patterns | +| [Critical Sections](./durable-functions/typescript/CriticalSections) | Entity Coordination | Coordinate access to entities with durable locks | ### PowerShell @@ -167,42 +212,45 @@ A quick-reference matrix showing which patterns are available in each language a ## Durable Extension for Microsoft Agent Framework -The [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) lets you make any [Microsoft Agent Framework](https://github.com/microsoft/agent-framework) agent durable with persistent sessions, built-in API endpoints, and distributed scaling โ€” without changes to your agent logic. It also supports graph-based workflows via `WorkflowBuilder`. +The [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) lets you make any [Microsoft Agent Framework](https://github.com/microsoft/agent-framework) agent durable with persistent sessions, built-in API endpoints, and distributed scaling, without changes to your agent logic. It also supports graph-based workflows via `WorkflowBuilder`. > **Setup:** These samples live in the `microsoft/agent-framework` repo and are included here via a Git submodule. Run `git submodule update --init external/agent-framework` after cloning. +The links below open the samples at the pinned submodule revision in the upstream repository. This keeps navigation consistent with the included code even when upstream reorganizes its samples. The local sample directories are symlinks into the submodule and cannot be browsed through GitHub as ordinary directories. + ๐Ÿ“‚ **[Full details and sample index โ†’](./durable-extension-for-agent-framework/)** ### Durable Agents (.NET) | Sample | Hosting | Description | |--------|---------|-------------| -| [Single Agent](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/01-SingleAgent) | Azure Functions | Basic durable agent with persistent sessions | -| [Orchestration Chaining](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/02-OrchestrationChaining) | Azure Functions | Multi-agent sequential orchestration | -| [Orchestration Concurrency](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/03-OrchestrationConcurrency) | Azure Functions | Parallel agent execution (fan-out/fan-in) | -| [Orchestration Conditionals](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/04-OrchestrationConditionals) | Azure Functions | Conditional routing between agents | -| [Human-in-the-Loop](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/05-HumanInTheLoop) | Azure Functions | Agent pauses for human approval | -| [Reliable Streaming](./durable-extension-for-agent-framework/dotnet/hosting/azure-functions/06-ReliableStreaming) | Azure Functions | Real-time token streaming with durability | -| [Single Agent](./durable-extension-for-agent-framework/dotnet/hosting/console-apps/01-SingleAgent) | Console App | Same pattern without Azure Functions | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/01_SingleAgent) | Azure Functions | Basic durable agent with persistent sessions | +| [Orchestration Chaining](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/02_AgentOrchestration_Chaining) | Azure Functions | Multi-agent sequential orchestration | +| [Orchestration Concurrency](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/03_AgentOrchestration_Concurrency) | Azure Functions | Parallel agent execution (fan-out/fan-in) | +| [Orchestration Conditionals](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/04_AgentOrchestration_Conditionals) | Azure Functions | Conditional routing between agents | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/05_AgentOrchestration_HITL) | Azure Functions | Agent pauses for human approval | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/08_ReliableStreaming) | Azure Functions | Real-time token streaming with durability | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/01_SingleAgent) | Console App | Same pattern without Azure Functions | ### Durable MAF Workflows (.NET) | Sample | Hosting | Description | |--------|---------|-------------| -| [Sequential](./durable-extension-for-agent-framework/dotnet/durable-maf-workflows/azure-functions/01-Sequential) | Azure Functions | Order cancellation pipeline: look up โ†’ cancel โ†’ notify | -| [Concurrent](./durable-extension-for-agent-framework/dotnet/durable-maf-workflows/azure-functions/02-Concurrent) | Azure Functions | Fan-out to multiple expert agents, fan-in to aggregate | -| [Human-in-the-Loop](./durable-extension-for-agent-framework/dotnet/durable-maf-workflows/azure-functions/03-HumanInTheLoop) | Azure Functions | Expense reimbursement with multi-stage approvals | -| [Sequential](./durable-extension-for-agent-framework/dotnet/durable-maf-workflows/console-apps/01-Sequential) | Console App | Sequential executor pipeline | -| [Conditional Edges](./durable-extension-for-agent-framework/dotnet/durable-maf-workflows/console-apps/03-ConditionalEdges) | Console App | Runtime routing based on conditions | +| [Sequential](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/01_SequentialWorkflow) | Azure Functions | Order cancellation pipeline: look up โ†’ cancel โ†’ notify | +| [Concurrent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/02_ConcurrentWorkflow) | Azure Functions | Fan-out to multiple expert agents, fan-in to aggregate | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/03_WorkflowHITL) | Azure Functions | Expense reimbursement with multi-stage approvals | +| [Sequential](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/01_SequentialWorkflow) | Console App | Sequential executor pipeline | +| [Conditional Edges](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/03_ConditionalEdges) | Console App | Runtime routing based on conditions | ### Durable Agents (Python) | Sample | Hosting | Description | |--------|---------|-------------| -| [Single Agent](./durable-extension-for-agent-framework/python/hosting/azure-functions/01-single-agent) | Azure Functions | Basic durable agent with persistent sessions | -| [Multi-Agent Orchestration](./durable-extension-for-agent-framework/python/hosting/azure-functions/02-multi-agent-orchestration) | Azure Functions | Multiple agents in a durable orchestration | -| [Tool Calling](./durable-extension-for-agent-framework/python/hosting/azure-functions/03-tool-calling) | Azure Functions | Agent with function tools | -| [Single Agent](./durable-extension-for-agent-framework/python/hosting/durable-task/01-single-agent) | Durable Task SDK | Agent hosted with DT SDK directly | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/01_single_agent) | Azure Functions | Basic durable agent with persistent sessions | +| [Multi-Agent Orchestration](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/02_multi_agent) | Azure Functions | Multiple agents in a durable orchestration | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/07_single_agent_orchestration_hitl) | Azure Functions | Agent pauses for human approval | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/03_reliable_streaming) | Azure Functions | Real-time token streaming with durability | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/01_single_agent) | Durable Task SDK | Agent hosted with DT SDK directly | --- @@ -211,6 +259,18 @@ The [Durable Task extension for Microsoft Agent Framework](https://learn.microso | Sample | Description | |--------|-------------| | [Autoscaling in ACA](./scenarios/AutoscalingInACA) | KEDA-based dynamic worker scaling in Azure Container Apps | +| [Document Processing on AKS](./scenarios/DocumentProcessingOnAKS) | .NET activity chaining and fan-out/fan-in on AKS with workload identity | +| [Work Item Filtering: .NET](./scenarios/WorkItemFilteringSplitActivities) | Route orchestration, validation, and shipping work to separate .NET workers | +| [Work Item Filtering: Java](./scenarios/WorkItemFilteringSplitActivitiesJava) | Route orchestration, validation, and shipping work to separate Java workers | +| [Work Item Filtering: Python](./scenarios/WorkItemFilteringSplitActivitiesPython) | Route orchestration, validation, and shipping work to separate Python workers | + +--- + +## Preview Features + +| Feature | Status | Samples | +|---------|--------|---------| +| [On-demand Sandboxes](../preview-features/on-demand-sandboxes/) | Private preview; access must be enabled on your scheduler | [.NET and Python samples](../preview-features/on-demand-sandboxes/samples/) | --- diff --git a/samples/durable-extension-for-agent-framework/README.md b/samples/durable-extension-for-agent-framework/README.md index cfe87f1d..5d41332d 100644 --- a/samples/durable-extension-for-agent-framework/README.md +++ b/samples/durable-extension-for-agent-framework/README.md @@ -1,6 +1,6 @@ -# Durable Extension for Microsoft Agent Framework โ€” Samples +# Durable Extension for Microsoft Agent Framework - Samples -The [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) brings [durable execution](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) directly into the [Microsoft Agent Framework](https://github.com/microsoft/agent-framework). You can register agents with the extension to make them automatically durable โ€” with persistent sessions, built-in API endpoints, and distributed scaling โ€” **without changes to your agent logic**. +The [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) brings [durable execution](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) directly into the [Microsoft Agent Framework](https://github.com/microsoft/agent-framework). You can register agents with the extension to make them automatically durable, with persistent sessions, built-in API endpoints, and distributed scaling, **without changes to your agent logic**. The extension internally implements [entity-based agent loops](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns#entity-based-agent-loops), where each agent session is a durable entity that automatically manages conversation state and checkpointing. @@ -8,7 +8,7 @@ The extension internally implements [entity-based agent loops](https://learn.mic | Capability | Description | |------------|-------------| -| **Persistent sessions** | Conversation history survives restarts, crashes, and scaling events โ€” no external database needed | +| **Persistent sessions** | Conversation history survives restarts, crashes, and scaling events, with no external database needed | | **Automatic checkpointing** | Every agent interaction and tool call is checkpointed; completed work is never re-executed on recovery | | **Built-in HTTP endpoints** | Send messages, check status, and manage sessions via auto-generated REST APIs | | **Multi-agent orchestration** | Coordinate multiple specialized agents as steps in a durable orchestration with automatic recovery | @@ -33,7 +33,7 @@ app.Run(); ### Bring Your Own Compute (Console Apps, Containers, etc.) -Host the agent with the Durable Task SDK directly โ€” no Azure Functions dependency: +Host the agent with the Durable Task SDK directly, with no Azure Functions dependency: ```csharp IHost host = Host.CreateDefaultBuilder(args) @@ -58,7 +58,7 @@ These samples show how to host agents with the Durable Task extension. Each agen |---------|-------------| | **Single agent** | One LLM agent with persistent sessions and built-in HTTP endpoints | | **Multi-agent orchestration** | Multiple specialized agents coordinated as checkpointed steps in a durable orchestration | -| **Tool calling** | Agents with function tools โ€” tool calls are checkpointed and not re-executed on recovery | +| **Tool calling** | Agents with function tools; tool calls are checkpointed and not re-executed on recovery | | **MCP server** | Agent hosted as a [Model Context Protocol](https://modelcontextprotocol.io/) server | | **Reliable streaming** | Real-time token streaming with durable delivery guarantees | | **Human-in-the-loop** | Agents that pause for human approval before continuing | @@ -93,15 +93,15 @@ dotnet/ console-apps/ โ†’ Graph-based workflow samples (Console Apps) ``` -> **Note:** These directories are symlinks into the [`microsoft/agent-framework`](https://github.com/microsoft/agent-framework) repo, which is included as a Git submodule at `external/agent-framework`. This avoids duplicating samples across repos. +> **Note:** These directories are symlinks into the [`microsoft/agent-framework`](https://github.com/microsoft/agent-framework) repo, which is included as a Git submodule at `external/agent-framework`. This avoids duplicating samples across repos. GitHub cannot browse through these symlinks as ordinary directories, so the sample index links directly to the pinned upstream revision. The links and local copies use the same revision, even if upstream reorganizes its samples. ## Getting Started ### Prerequisites -1. [Docker](https://www.docker.com/products/docker-desktop/) โ€” for the Durable Task Scheduler emulator +1. [Docker](https://www.docker.com/products/docker-desktop/) for the Durable Task Scheduler emulator 2. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) (for .NET samples) or [Python 3.10+](https://www.python.org/) (for Python samples) -3. (Optional) [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/) endpoint for real LLM integration +3. A model endpoint and credentials, such as [Azure OpenAI](https://learn.microsoft.com/azure/ai-services/openai/). Check each sample's README for its required model settings. ### First-time setup @@ -129,6 +129,8 @@ The dashboard is available at [http://localhost:8082](http://localhost:8082). To pull the latest samples from the agent-framework repo: +Update the local symlink targets and the sample links in this README and [the sample catalog](../README.md) in the same change. The upstream directory layout has changed since the pinned revision, so pulling `main` alone can leave the local sample paths broken. + ```bash cd external/agent-framework git pull origin main @@ -141,61 +143,78 @@ A [GitHub Actions workflow](../../.github/workflows/update-agent-framework.yml) ## Sample Index -### .NET โ€” Durable Agents (Hosting) +### .NET - Durable Agents (Hosting) | Sample | Hosting | Description | |--------|---------|-------------| -| [Single Agent](dotnet/hosting/azure-functions/01-SingleAgent) | Azure Functions | Basic durable agent with persistent sessions | -| [Orchestration Chaining](dotnet/hosting/azure-functions/02-OrchestrationChaining) | Azure Functions | Multi-agent sequential orchestration | -| [Orchestration Concurrency](dotnet/hosting/azure-functions/03-OrchestrationConcurrency) | Azure Functions | Parallel agent execution with fan-out/fan-in | -| [Orchestration Conditionals](dotnet/hosting/azure-functions/04-OrchestrationConditionals) | Azure Functions | Conditional routing between agents | -| [Human-in-the-Loop](dotnet/hosting/azure-functions/05-HumanInTheLoop) | Azure Functions | Agent pauses for human approval | -| [ReliableStreaming](dotnet/hosting/azure-functions/06-ReliableStreaming) | Azure Functions | Real-time token streaming with durability | -| [MCP Server](dotnet/hosting/azure-functions/07-McpServer) | Azure Functions | Agent as a Model Context Protocol server | -| [Custom State](dotnet/hosting/azure-functions/08-CustomState) | Azure Functions | Agent with custom persistent state | -| [Single Agent](dotnet/hosting/console-apps/01-SingleAgent) | Console App | Basic durable agent without Azure Functions | -| [Orchestration Chaining](dotnet/hosting/console-apps/02-OrchestrationChaining) | Console App | Multi-agent orchestration in a console app | -| [Orchestration Concurrency](dotnet/hosting/console-apps/03-OrchestrationConcurrency) | Console App | Parallel agents in a console app | -| [Orchestration Conditionals](dotnet/hosting/console-apps/04-OrchestrationConditionals) | Console App | Conditional agent routing in a console app | -| [Human-in-the-Loop](dotnet/hosting/console-apps/05-HumanInTheLoop) | Console App | Human approval in a console app | -| [Custom State](dotnet/hosting/console-apps/06-CustomState) | Console App | Custom agent state in a console app | -| [Durable Agent Client](dotnet/hosting/console-apps/07-DurableAgentClient) | Console App | Client for interacting with durable agents | - -### .NET โ€” Durable MAF Workflows +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/01_SingleAgent) | Azure Functions | Basic durable agent with persistent sessions | +| [Orchestration Chaining](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/02_AgentOrchestration_Chaining) | Azure Functions | Multi-agent sequential orchestration | +| [Orchestration Concurrency](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/03_AgentOrchestration_Concurrency) | Azure Functions | Parallel agent execution with fan-out/fan-in | +| [Orchestration Conditionals](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/04_AgentOrchestration_Conditionals) | Azure Functions | Conditional routing between agents | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/05_AgentOrchestration_HITL) | Azure Functions | Agent pauses for human approval | +| [Long-Running Tools](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/06_LongRunningTools) | Azure Functions | Durable execution of long-running agent tools | +| [MCP Server](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/07_AgentAsMcpTool) | Azure Functions | Agent as a Model Context Protocol server | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/AzureFunctions/08_ReliableStreaming) | Azure Functions | Real-time token streaming with durability | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/01_SingleAgent) | Console App | Basic durable agent without Azure Functions | +| [Orchestration Chaining](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/02_AgentOrchestration_Chaining) | Console App | Multi-agent orchestration in a console app | +| [Orchestration Concurrency](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/03_AgentOrchestration_Concurrency) | Console App | Parallel agents in a console app | +| [Orchestration Conditionals](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/04_AgentOrchestration_Conditionals) | Console App | Conditional agent routing in a console app | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/05_AgentOrchestration_HITL) | Console App | Human approval in a console app | +| [Long-Running Tools](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/06_LongRunningTools) | Console App | Durable execution of long-running agent tools | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableAgents/ConsoleApps/07_ReliableStreaming) | Console App | Real-time token streaming with durability | + +Standalone **Custom State** (custom persistent agent state) and **Durable Agent Client** (client access to durable agents) samples are not included in the pinned submodule revision. + +### .NET - Durable MAF Workflows | Sample | Hosting | Description | |--------|---------|-------------| -| [Sequential](dotnet/durable-maf-workflows/azure-functions/01-Sequential) | Azure Functions | Order cancellation pipeline: look up โ†’ cancel โ†’ notify | -| [Concurrent](dotnet/durable-maf-workflows/azure-functions/02-Concurrent) | Azure Functions | Fan-out to physicist & chemist agents, fan-in to aggregate | -| [Human-in-the-Loop](dotnet/durable-maf-workflows/azure-functions/03-HumanInTheLoop) | Azure Functions | Expense reimbursement with manager + parallel finance approvals | -| [MCP Tool](dotnet/durable-maf-workflows/azure-functions/04-McpTool) | Azure Functions | Workflow exposed as an MCP tool | -| [Combined](dotnet/durable-maf-workflows/azure-functions/05-Combined) | Azure Functions | Workflows + agents in the same app | -| [Sequential](dotnet/durable-maf-workflows/console-apps/01-Sequential) | Console App | Sequential executor pipeline | -| [Concurrent](dotnet/durable-maf-workflows/console-apps/02-Concurrent) | Console App | Fan-out/fan-in with parallel execution | -| [Conditional Edges](dotnet/durable-maf-workflows/console-apps/03-ConditionalEdges) | Console App | Runtime routing based on conditions | -| [Events](dotnet/durable-maf-workflows/console-apps/04-Events) | Console App | Reacting to external events in workflows | -| [Shared State](dotnet/durable-maf-workflows/console-apps/05-SharedState) | Console App | Passing state between workflow steps | -| [Sub-Workflows](dotnet/durable-maf-workflows/console-apps/06-SubWorkflows) | Console App | Composing reusable sub-workflows | -| [Human-in-the-Loop](dotnet/durable-maf-workflows/console-apps/07-HumanInTheLoop) | Console App | Workflow pauses for external approval | -| [Streaming](dotnet/durable-maf-workflows/console-apps/08-Streaming) | Console App | Streaming workflow events | - -### Python โ€” Durable Agents (Hosting) +| [Sequential](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/01_SequentialWorkflow) | Azure Functions | Order cancellation pipeline: look up โ†’ cancel โ†’ notify | +| [Concurrent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/02_ConcurrentWorkflow) | Azure Functions | Fan-out to physicist & chemist agents, fan-in to aggregate | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/03_WorkflowHITL) | Azure Functions | Expense reimbursement with manager + parallel finance approvals | +| [MCP Tool](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/04_WorkflowMcpTool) | Azure Functions | Workflow exposed as an MCP tool | +| [Combined](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/AzureFunctions/05_WorkflowAndAgents) | Azure Functions | Workflows + agents in the same app | +| [Sequential](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/01_SequentialWorkflow) | Console App | Sequential executor pipeline | +| [Concurrent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/02_ConcurrentWorkflow) | Console App | Fan-out/fan-in with parallel execution | +| [Conditional Edges](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/03_ConditionalEdges) | Console App | Runtime routing based on conditions | +| [Combined](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/04_WorkflowAndAgents) | Console App | Workflows + agents in the same app | +| [Events](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/05_WorkflowEvents) | Console App | Reacting to external events in workflows | +| [Shared State](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/06_WorkflowSharedState) | Console App | Passing state between workflow steps | +| [Sub-Workflows](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/07_SubWorkflows) | Console App | Composing reusable sub-workflows | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/dotnet/samples/04-hosting/DurableWorkflows/ConsoleApps/08_WorkflowHITL) | Console App | Workflow pauses for external approval | + +A standalone **Streaming** workflow sample is not included in the pinned submodule revision. The reliable streaming agent samples above demonstrate durable token streaming. + +### Python - Durable Agents (Hosting) | Sample | Hosting | Description | |--------|---------|-------------| -| [Single Agent](python/hosting/azure-functions/01-single-agent) | Azure Functions | Basic durable agent with persistent sessions | -| [Multi-Agent Orchestration](python/hosting/azure-functions/02-multi-agent-orchestration) | Azure Functions | Multiple agents coordinated in an orchestration | -| [Tool Calling](python/hosting/azure-functions/03-tool-calling) | Azure Functions | Agent with function tools | -| [Human-in-the-Loop](python/hosting/azure-functions/04-human-in-the-loop) | Azure Functions | Agent pauses for human approval | -| [Single Agent](python/hosting/durable-task/01-single-agent) | Durable Task SDK | Agent hosted with the DT SDK directly | -| [Multi-Agent Orchestration](python/hosting/durable-task/02-multi-agent-orchestration) | Durable Task SDK | Multi-agent orchestration without Azure Functions | -| [Tool Calling](python/hosting/durable-task/03-tool-calling) | Durable Task SDK | Tool-calling agent with the DT SDK | -| [Human-in-the-Loop](python/hosting/durable-task/04-human-in-the-loop) | Durable Task SDK | Human approval with the DT SDK | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/01_single_agent) | Azure Functions | Basic durable agent with persistent sessions | +| [Multi-Agent Orchestration](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/02_multi_agent) | Azure Functions | Multiple agents coordinated in an orchestration | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/03_reliable_streaming) | Azure Functions | Real-time token streaming with durability | +| [Orchestration Chaining](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/04_single_agent_orchestration_chaining) | Azure Functions | Sequential calls to a durable agent | +| [Orchestration Concurrency](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/05_multi_agent_orchestration_concurrency) | Azure Functions | Parallel agent execution | +| [Orchestration Conditionals](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/06_multi_agent_orchestration_conditionals) | Azure Functions | Conditional routing between agents | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/07_single_agent_orchestration_hitl) | Azure Functions | Agent pauses for human approval | +| [MCP Server](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/08_mcp_server) | Azure Functions | Agent exposed through Model Context Protocol | +| [Workflow Shared State](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/09_workflow_shared_state) | Azure Functions | Shared state across workflow steps | +| [Workflow Without Shared State](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/10_workflow_no_shared_state) | Azure Functions | Workflow steps without shared state | +| [Parallel Workflow](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/11_workflow_parallel) | Azure Functions | Concurrent workflow steps | +| [Workflow Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/azure_functions/12_workflow_hitl) | Azure Functions | Workflow pauses for external approval | +| [Single Agent](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/01_single_agent) | Durable Task SDK | Agent hosted with the DT SDK directly | +| [Multi-Agent Orchestration](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/02_multi_agent) | Durable Task SDK | Multi-agent orchestration without Azure Functions | +| [Reliable Streaming](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/03_single_agent_streaming) | Durable Task SDK | Durable token streaming without Azure Functions | +| [Orchestration Chaining](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/04_single_agent_orchestration_chaining) | Durable Task SDK | Sequential calls to a durable agent | +| [Orchestration Concurrency](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/05_multi_agent_orchestration_concurrency) | Durable Task SDK | Parallel agent execution | +| [Orchestration Conditionals](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/06_multi_agent_orchestration_conditionals) | Durable Task SDK | Conditional routing between agents | +| [Human-in-the-Loop](https://github.com/microsoft/agent-framework/tree/3e54a689fc96d681a072fe7e7cfc445909dac74b/python/samples/04-hosting/durabletask/07_single_agent_orchestration_hitl) | Durable Task SDK | Human approval with the DT SDK | + +Agents can use function tools, but this revision does not include a standalone Python **Tool Calling** sample for either hosting option. ## Learn More -- [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) โ€” Full documentation -- [Durable Task for AI Agents](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) โ€” Why durable execution matters for AI agents -- [Agentic Application Patterns](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns) โ€” All supported patterns -- [Microsoft Agent Framework](https://github.com/microsoft/agent-framework) โ€” The agent framework itself -- [Durable Task Scheduler Dashboard](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-dashboard) โ€” Monitor agents, orchestrations, and workflows +- [Durable Task extension for Microsoft Agent Framework](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-microsoft-agent-framework) - Full documentation +- [Durable Task for AI Agents](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) - Why durable execution matters for AI agents +- [Agentic Application Patterns](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns) - All supported patterns +- [Microsoft Agent Framework](https://github.com/microsoft/agent-framework) - The agent framework itself +- [Durable Task Scheduler Dashboard](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-dashboard) - Monitor agents, orchestrations, and workflows diff --git a/samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator/README.md b/samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator/README.md index 1c9d2020..052abfc3 100644 --- a/samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator/README.md +++ b/samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator/README.md @@ -79,7 +79,7 @@ Upon successful booking, the user receives a final confirmation with all travel - Docker - .NET 8 SDK - Azure Functions Core Tools v4 -- Node.js 16+ and npm +- Node.js 22.12+ and npm (required by the frontend's Azure Storage and Vite dependencies) - Azure Developer CLI (azd) - Azure Subscription with: - Azure Functions resource @@ -92,8 +92,8 @@ Upon successful booking, the user receives a final confirmation with all travel ### 1. Clone the Repository ```bash -git clone https://github.com/yourusername/AiAgentOrchestrator.git -cd AiAgentOrchestrator +git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git +cd Durable-Task-Scheduler/samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator ``` ### 2. Configure Environment Variables diff --git a/samples/durable-functions/dotnet/HelloCities/README.md b/samples/durable-functions/dotnet/HelloCities/README.md index f15ffd83..4b9ee705 100644 --- a/samples/durable-functions/dotnet/HelloCities/README.md +++ b/samples/durable-functions/dotnet/HelloCities/README.md @@ -21,9 +21,9 @@ Click the image below to watch the video on YouTube. -Let's begin working with Durable Functions using the new Durable Task Scheduler (private preview) backend provider. +This quickstart uses Durable Functions with the Durable Task Scheduler backend provider. -In this quickstart, the [provided sample](https://github.com/Azure/Azure-Functions-Durable-Task-Scheduler-Private-Preview/tree/main/quickstarts/HelloCities) uses the [official Durable Functions "hello cities" quickstart](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-isolated-create-first-csharp?pivots=code-editor-vscode). The sample schedules orchestrations that include 3 activities via an HTTP trigger. +In this quickstart, the [provided sample](./http/) uses the [official Durable Functions "hello cities" quickstart](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-isolated-create-first-csharp?pivots=code-editor-vscode). The sample schedules orchestrations that include 3 activities via an HTTP trigger. This quickstart showcases the necessary configuration for using Durable Task Scheduler as the backend provider for your Durable Function app. The template defaults to **Elastic Premium EP1 sku plan on Linux**. @@ -32,6 +32,8 @@ This quickstart showcases the necessary configuration for using Durable Task Sch - [Create an active Azure subscription](https://learn.microsoft.com/azure/guides/developer/azure-developer-guide#understanding-accounts-subscriptions-and-billing). - [Azure Developer CLI (`azd`)](https://aka.ms/azd) installed +- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [Azure Functions Core Tools v4](https://learn.microsoft.com/azure/azure-functions/functions-run-local) for the `func` commands below ## Log into the Azure CLI @@ -40,6 +42,7 @@ In a terminal window, run the following command to log into the Azure CLI. ```azurecli az login +azd auth login ``` ## Clone the project @@ -47,13 +50,13 @@ az login 1. Clone this repo to your developer machine: ```shell - git clone https://github.com/Azure/Durable-Task-Scheduler.git + git clone https://github.com/Azure-Samples/Durable-Task-Scheduler.git ``` -1. Navigate to the `hello cities` source code directory: +1. Navigate to the `hello cities` sample directory. The function source code is in its `http/` subdirectory: ```shell - cd Durable-Task-Scheduler/samples/durable-functions/dotnet/HelloCities/http/ + cd Durable-Task-Scheduler/samples/durable-functions/dotnet/HelloCities ``` 1. Open the Application in VS Code: @@ -73,7 +76,7 @@ Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to easily deploy the a az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table ``` -1. Navigate to `quickstarts/hello_cities` and run the following command to provision: +1. From the `samples/durable-functions/dotnet/HelloCities` directory containing `azure.yaml`, run the following command to provision: ```bash azd up @@ -109,7 +112,7 @@ Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to easily deploy the a Invoke url: https://my-func-app.azurewebsites.net/api/durablefunctionsorchestrationcsharp1_httpstart ``` -1. Navigate to the `DurableFunctionsOrchestrationsCSharp1_HttpStart` URL to start an order processing orchestration instance. Use the durable task scheduler dashboard to check orchestration details. +1. Navigate to the `DurableFunctionsOrchestrationCSharp1_HttpStart` URL to start a Hello Cities orchestration instance. Use the Durable Task Scheduler dashboard to check the three greeting activities and their results. ## Access dashboard after deployment @@ -133,7 +136,7 @@ You can access the dashboard by going to **https://dashboard.durabletask.io/** a ## Identity-based authentication -The durable task scheduler supports identity-based authentication only. This sample sets up the authentication through specifications in bicep files. If you're configuring identity-based access yourself, refer to [documentation on Microsoft Learn](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/develop-with-durable-task-scheduler?tabs=function-app-integrated-creation&pivots=az-cli#configure-identity-based-authentication-for-app-to-access-durable-task-scheduler). +The durable task scheduler supports identity-based authentication only. This sample sets up the authentication through specifications in bicep files. If you're configuring identity-based access yourself, refer to [documentation on Microsoft Learn](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-identity). ## Clean up resources @@ -235,4 +238,4 @@ az durabletask taskhub list -s "SCHEDULER-NAME" -g "RESOURCE-GROUP" Learn more about: - [Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview) -- [Durable Task Scheduler](https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler) \ No newline at end of file +- [Durable Task Scheduler](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler) \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/README.md b/samples/durable-functions/dotnet/PdfSummarizer/README.md index 021169b0..3db36147 100644 --- a/samples/durable-functions/dotnet/PdfSummarizer/README.md +++ b/samples/durable-functions/dotnet/PdfSummarizer/README.md @@ -18,14 +18,15 @@ The application's workflow is as follows: Below, you will find the instructions to set up and run this app locally.. -## Prerequsites +## Prerequisites - [Create an active Azure subscription](https://learn.microsoft.com/en-us/azure/guides/developer/azure-developer-guide#understanding-accounts-subscriptions-and-billing). - [Install the latest Azure Functions Core Tools to use the CLI](https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local) -- [Enroll in the Durable Task Scheduler Preview](https://github.com/Azure/Azure-Functions-Durable-Task-Scheduler-Private-Preview/tree/main) and create a scheduler / taskhub resource. +- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [Create a Durable Task Scheduler and task hub](https://learn.microsoft.com/azure/durable-task/scheduler/develop-with-durable-task-scheduler#create-a-scheduler-and-task-hub). Preview enrollment is not required. - [Start and configure an Azurite storage emulator for local storage](https://learn.microsoft.com/azure/storage/common/storage-use-azurite). ## local.settings.json -You will need to configure a `local.settings.json` file at the root of the repo that looks similar to the below. Make sure to replace the placeholders with your specific values. +You will need to configure a `local.settings.json` file in the sample directory (`samples/durable-functions/dotnet/PdfSummarizer`) that looks similar to the below. Make sure to replace the placeholders with your specific values. ```json { @@ -72,7 +73,15 @@ Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to easily deploy the a - The Azure subscription you'd like to use. - The Azure location to use. - > **Note:** At the moment, the Durable Task Scheduler can only be deployed to `West US2` and `NorthCentral US`. Unfortunately, the AZD CLI does not support `North Central US` and Azure Open AI does not support `West US2`. The best way to navigage discrepencies is to select `West US2` as your AZD location and hardcode the `openAi` module location to a region like `East US2`. + > **Region selection:** Durable Task Scheduler is available in [most Azure regions](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler#supported-regions), not just West US 2 and North Central US. Query the current list before selecting your AZD location: + + ```bash + az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table + ``` + + The template's allowed `location` values also apply. Choose a region from that list that appears in the provider output. + + The template currently deploys Azure OpenAI separately in `eastus2`. Confirm that your model and quota are available there, or change the `openAi` module's location in `infra/main.bicep`. The model endpoint and scheduler do not need to use the same region. Once the azd up command finishes, the app will have successfully provisioned and deployed. diff --git a/samples/durable-functions/javascript/CustomExceptionPropertyProvider/README.md b/samples/durable-functions/javascript/CustomExceptionPropertyProvider/README.md index bd62d0f4..c1277aec 100644 --- a/samples/durable-functions/javascript/CustomExceptionPropertyProvider/README.md +++ b/samples/durable-functions/javascript/CustomExceptionPropertyProvider/README.md @@ -1,4 +1,4 @@ -# Custom Exception Property Provider โ€” Durable Functions JavaScript +# Custom Exception Property Provider - Durable Functions JavaScript JavaScript | Durable Functions @@ -10,7 +10,7 @@ An activity throws a `BusinessValidationException` carrying structured fields (s ## Prerequisites -1. [Node.js 18+](https://nodejs.org/) (use Node 22 LTS; the Functions host does not yet support Node 24) +1. [Node.js 22](https://nodejs.org/). Azure Functions v4 also supports Node.js 24; Node.js 22 is the last version supported on the classic Linux Consumption plan. See [supported languages](https://learn.microsoft.com/azure/azure-functions/functions-versions#languages). 2. [Azure Functions Core Tools v4](https://learn.microsoft.com/azure/azure-functions/functions-run-local) 3. [Docker](https://www.docker.com/products/docker-desktop/) (for the emulator) @@ -70,7 +70,7 @@ The orchestration returns the caught `failureDetails`, whose `properties` carry - `df.app.setExceptionPropertiesProvider({ getExceptionProperties(error) { ... } })` registers a global provider once at app startup. - `businessActivity` throws a `BusinessValidationException` carrying the structured fields. -- `orchestrationWithCustomException` calls the activity, catches the propagated `TaskFailedError`, and returns `e.failureDetails` โ€” including the custom `properties`. +- `orchestrationWithCustomException` calls the activity, catches the propagated `TaskFailedError`, and returns `e.failureDetails`, including the custom `properties`. ## Learn More diff --git a/samples/durable-functions/python/agent-directed-workflows/host.json b/samples/durable-functions/python/agent-directed-workflows/host.json index a1239c05..c14a196f 100644 --- a/samples/durable-functions/python/agent-directed-workflows/host.json +++ b/samples/durable-functions/python/agent-directed-workflows/host.json @@ -18,7 +18,7 @@ } }, "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", - "version": "[4.29.0, 5.0.0)" + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[4.32.0, 5.0.0)" } } diff --git a/samples/durable-functions/python/pdf-summarizer/README.md b/samples/durable-functions/python/pdf-summarizer/README.md index 86066668..74b48a26 100644 --- a/samples/durable-functions/python/pdf-summarizer/README.md +++ b/samples/durable-functions/python/pdf-summarizer/README.md @@ -47,7 +47,15 @@ Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to deploy the app. Thi - The Azure subscription you'd like to use. - The Azure location to use. - > **Note:** At the moment, the Durable Task Scheduler can only be deployed to `West US2` and `NorthCentral US`. Unfortunately, the AZD CLI does not support `North Central US` and Azure Open AI does not support `West US2`. The best way to navigate discrepancies is to select `West US2` as your AZD location and hardcode the `openAi` module location to a region like `East US2`. + > **Region selection:** Durable Task Scheduler is available in [most Azure regions](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler#supported-regions), not just West US 2 and North Central US. Query the current list before selecting your AZD location: + + ```bash + az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table + ``` + + The template's allowed `location` values also apply. Choose a region from that list that appears in the provider output. + + The template currently deploys Azure OpenAI separately in `eastus2`. Confirm that your model and quota are available there, or change the `openAi` module's location in `infra/main.bicep`. The model endpoint and scheduler do not need to use the same region. Once the azd up command finishes, the app will have successfully provisioned and deployed. @@ -59,7 +67,7 @@ If you want to run the app locally after deploying to Azure, follow these steps: - [Start and configure an Azurite storage emulator for local storage](https://learn.microsoft.com/azure/storage/common/storage-use-azurite). ### local.settings.json -You will need to configure a `local.settings.json` file at the root of the repo that looks similar to the below. After running `azd up`, you can retrieve these values from the Azure portal or by running `azd env get-values`. +You will need to configure a `local.settings.json` file in the sample directory (`samples/durable-functions/python/pdf-summarizer`) that looks similar to the below. After running `azd up`, you can retrieve these values from the Azure portal or by running `azd env get-values`. ```json { @@ -77,6 +85,8 @@ You will need to configure a `local.settings.json` file at the root of the repo } ``` +The `hubName` setting in `host.json` resolves `%TASKHUB_NAME%` from these app settings, so it must match the task hub created by the deployment. + ### Running locally 1. Start Azurite: Begin by starting Azurite, the local Azure Storage emulator. diff --git a/samples/durable-functions/python/pdf-summarizer/host.json b/samples/durable-functions/python/pdf-summarizer/host.json index b7dd3254..dafeb2fa 100644 --- a/samples/durable-functions/python/pdf-summarizer/host.json +++ b/samples/durable-functions/python/pdf-summarizer/host.json @@ -14,12 +14,11 @@ "type": "azureManaged", "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING" }, - "hubName": "TASKHUB_NAME" + "hubName": "%TASKHUB_NAME%" } }, "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle.Preview", - "version": "[4.29.0, 5.0.0)" + "id": "Microsoft.Azure.Functions.ExtensionBundle", + "version": "[4.32.0, 5.0.0)" } } - diff --git a/samples/durable-functions/python/pdf-summarizer/next-steps.md b/samples/durable-functions/python/pdf-summarizer/next-steps.md index 1377f4e3..d442a991 100644 --- a/samples/durable-functions/python/pdf-summarizer/next-steps.md +++ b/samples/durable-functions/python/pdf-summarizer/next-steps.md @@ -43,7 +43,7 @@ To describe the infrastructure and application, `azure.yaml` along with Infrastr Each bicep file declares resources to be provisioned. The resources are provisioned when running `azd up` or `azd provision`. -- [app/functions-app.bicep](./infra/app/functions-app.bicep) - Azure Container Apps resources to host the 'functions-app' service. +- [app/durable-function.bicep](./infra/app/durable-function.bicep) - Azure Functions resources to host the `function-app` service. - [shared/keyvault.bicep](./infra/shared/keyvault.bicep) - Azure KeyVault to store secrets. - [shared/monitoring.bicep](./infra/shared/monitoring.bicep) - Azure Log Analytics workspace and Application Insights to log and store instrumentation logs. - [shared/registry.bicep](./infra/shared/registry.bicep) - Azure Container Registry to store docker images. @@ -52,6 +52,8 @@ More information about [Bicep](https://aka.ms/bicep) language. ### Build from source (no Dockerfile) +This sample's `azure.yaml` uses `host: function`, so `azd package` packages an Azure Functions app rather than a container image. The buildpack instructions below apply only if you adapt the service to use Azure Container Apps. + #### Build with Buildpacks using Oryx If your project does not contain a Dockerfile, we will use [Buildpacks](https://buildpacks.io/) using [Oryx](https://github.com/microsoft/Oryx/blob/main/doc/README.md) to create an image for the services in `azure.yaml` and get your containerized app onto Azure. @@ -77,7 +79,9 @@ Visit the *Cost Management + Billing* page in Azure Portal to track current spen Q: I visited the service endpoint listed, and I'm seeing a blank page, a generic welcome page, or an error page. -A: Your service may have failed to start, or it may be missing some configuration settings. To investigate further: +A: Your service may have failed to start, or it may be missing some configuration settings. For this sample's Azure Functions deployment, open the Function App from `azd show` and inspect its deployment logs, Log stream, and Application Insights. Confirm that the required app settings match the sample README. + +If you have adapted the service to Azure Container Apps, investigate further: 1. Run `azd show`. Click on the link under "View in Azure Portal" to open the resource group in Azure Portal. 2. Navigate to the specific Container App service that is failing to deploy. diff --git a/samples/durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows/README.md b/samples/durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows/README.md index 49089eea..8c1950d9 100644 --- a/samples/durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows/README.md +++ b/samples/durable-task-sdks/dotnet/Agents/AgentDirectedWorkflows/README.md @@ -1,14 +1,14 @@ -# Agent-Directed Workflows โ€” Durable Task SDK (.NET) +# Agent-Directed Workflows - Durable Task SDK (.NET) This sample demonstrates how to build an **agent-directed workflow** (agent loop) using [durable entities](https://learn.microsoft.com/azure/durable-task/concepts/entities) from the [Durable Task SDK for .NET](https://github.com/microsoft/durabletask-dotnet) with the [Durable Task Scheduler](https://learn.microsoft.com/azure/durable-task/overview). It corresponds to the **"Build your own using orchestrations and entities"** approach described in the [Durable Task for AI Agents](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) comparison table, using the **entity-based agent loop** pattern from [Agentic Application Patterns](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns#entity-based-agent-loops). -> **Note:** A [Durable Functions version](../../../durable-functions/dotnet/AgentDirectedWorkflows/) of this sample is also available. This version uses the Durable Task SDK directly (no Azure Functions dependency), which gives you full control over the web host and API surface. +> **Note:** A [Durable Functions version](../../../../durable-functions/dotnet/AgentDirectedWorkflows/) of this sample is also available. This version uses the Durable Task SDK directly (no Azure Functions dependency), which gives you full control over the web host and API surface. ## What Is an Agent-Directed Workflow? -In a typical deterministic workflow, *your code* controls the execution path โ€” you define the sequence of steps ahead of time. In an **agent-directed workflow** (also called an agent loop), the **LLM drives the control flow**. You provide tools and instructions, but the agent decides which tools to call, in what order, and when the task is complete. The execution path isn't known until runtime. +In a typical deterministic workflow, *your code* controls the execution path: you define the sequence of steps ahead of time. In an **agent-directed workflow** (also called an agent loop), the **LLM drives the control flow**. You provide tools and instructions, but the agent decides which tools to call, in what order, and when the task is complete. The execution path isn't known until runtime. This pattern is well suited for conversational agents with tool-calling capabilities, open-ended research tasks, and any scenario where the number and order of steps can't be predicted. @@ -16,7 +16,7 @@ This pattern is well suited for conversational agents with tool-calling capabili ### The Core Idea -Each chat session is a **durable entity** โ€” a long-lived, stateful actor managed by the Durable Task Scheduler. The entity holds the full conversation history in its state. When you send it a message, it runs the agent loop internally and **streams the LLM's response in real-time** via Redis pub/sub: +Each chat session is a **durable entity**, a long-lived, stateful actor managed by the Durable Task Scheduler. The entity holds the full conversation history in its state. When you send it a message, it runs the agent loop internally and **streams the LLM's response in real-time** via Redis pub/sub: ``` User: "What's the weather in Seattle?" @@ -49,14 +49,14 @@ User: "What's the weather in Seattle?" **Key properties:** - **Durable state**: The entity's conversation history survives restarts, crashes, and scaling events. - **Real-time streaming**: LLM response tokens are published to Redis and forwarded to the client as SSE events as they're generated. -- **No orchestration bridge**: The HTTP layer signals the entity (fire-and-forget) and reads the response from Redis โ€” no intermediate orchestration needed. +- **No orchestration bridge**: The HTTP layer signals the entity (fire-and-forget) and reads the response from Redis, with no intermediate orchestration needed. ### Why Entities? Durable entities are a natural fit for AI agents because: - **Long-lived state**: An entity persists for as long as you need it. A chat session can last minutes, days, or weeks. -- **Automatic persistence**: You just read and write `State` โ€” the framework handles serialization and storage. +- **Automatic persistence**: You read and write `State`; the framework handles serialization and storage. - **Actor model**: Each entity processes one operation at a time, so there are no concurrency issues with the conversation history. - **Addressable**: Each entity has a unique ID (the session ID), making it easy to route messages to the right agent. @@ -86,15 +86,15 @@ AgentDirectedWorkflows/ ### Key Files Explained -**`ChatAgentEntity.cs`** โ€” The durable entity. Its `Message()` method is the agent loop: it streams from the LLM via `GetStreamingResponseAsync`, publishes text chunks to Redis, checks for tool calls, and repeats until the LLM gives a final text reply. State (conversation history) is persisted automatically. +**`ChatAgentEntity.cs`** - The durable entity. Its `Message()` method is the agent loop: it streams from the LLM via `GetStreamingResponseAsync`, publishes text chunks to Redis, checks for tool calls, and repeats until the LLM gives a final text reply. State (conversation history) is persisted automatically. -**`Program.cs`** โ€” A standard ASP.NET minimal API that: +**`Program.cs`** - A standard ASP.NET minimal API that: 1. Registers the `IChatClient` (Azure OpenAI if configured, echo fallback otherwise) 2. Registers the Redis `IConnectionMultiplexer` for pub/sub streaming 3. Registers the Durable Task worker with the entity 4. Defines SSE streaming endpoints for interacting with agent sessions -**`Tools/AgentTools.cs`** โ€” Defines what tools the LLM can call. Currently includes `get_weather` (with a hardcoded response). To add new capabilities, add a definition and an execution case. The LLM discovers available tools automatically. +**`Tools/AgentTools.cs`** - Defines what tools the LLM can call. Currently includes `get_weather` (with a hardcoded response). To add new capabilities, add a definition and an execution case. The LLM discovers available tools automatically. ## Prerequisites @@ -122,7 +122,7 @@ export AZURE_OPENAI_ENDPOINT="https://.openai.azure.com" export AZURE_OPENAI_DEPLOYMENT="" ``` -The sample uses `DefaultAzureCredential` for authentication โ€” make sure you're signed in via `az login`. +The sample uses `DefaultAzureCredential` for authentication. Make sure you're signed in via `az login`. ### 3. Run the app @@ -135,7 +135,7 @@ The app connects to the local emulator at `http://localhost:8080` by default. ### 4. Chat with the agent ```bash -# Streaming (default) โ€” response streams as Server-Sent Events +# Streaming (default): response streams as Server-Sent Events curl -N -X POST http://localhost:5000/chat/session1 \ -H "Content-Type: application/json" \ -d '{"message":"What is the weather in Seattle?"}' @@ -147,7 +147,7 @@ curl -N -X POST http://localhost:5000/chat/session1 \ # data: {"type":"chunk","content":" in Seattle."} # data: {"type":"done"} -# Non-streaming โ€” waits for the full response and returns JSON +# Non-streaming: waits for the full response and returns JSON curl -X POST "http://localhost:5000/chat/session1?stream=false" \ -H "Content-Type: application/json" \ -d '{"message":"What is the weather in Seattle?"}' @@ -201,7 +201,7 @@ The LLM will automatically discover the new tool and call it when appropriate. ## Learn More -- [Durable Task for AI Agents](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) โ€” Overview of how durable execution solves production challenges for AI agents -- [Agentic Application Patterns](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns) โ€” All supported patterns (deterministic workflows, agent loops, orchestration-based vs entity-based) -- [Durable Entities](https://learn.microsoft.com/azure/durable-task/concepts/entities) โ€” Deep dive on the entity programming model -- [Microsoft.Extensions.AI](https://learn.microsoft.com/dotnet/ai/microsoft-extensions-ai) โ€” The AI abstraction layer used for LLM integration +- [Durable Task for AI Agents](https://learn.microsoft.com/azure/durable-task/sdks/durable-task-for-ai-agents) - Overview of how durable execution solves production challenges for AI agents +- [Agentic Application Patterns](https://learn.microsoft.com/azure/durable-task/sdks/durable-agents-patterns) - All supported patterns (deterministic workflows, agent loops, orchestration-based vs entity-based) +- [Durable Entities](https://learn.microsoft.com/azure/durable-task/common/durable-task-entities) - Deep dive on the entity programming model +- [Microsoft.Extensions.AI](https://learn.microsoft.com/dotnet/ai/microsoft-extensions-ai) - The AI abstraction layer used for LLM integration diff --git a/samples/durable-task-sdks/dotnet/Agents/PromptChaining/README.md b/samples/durable-task-sdks/dotnet/Agents/PromptChaining/README.md index 647b9e98..a5d9c38d 100644 --- a/samples/durable-task-sdks/dotnet/Agents/PromptChaining/README.md +++ b/samples/durable-task-sdks/dotnet/Agents/PromptChaining/README.md @@ -16,7 +16,7 @@ The workflow is orchestrated using the Durable Task SDK, which handles the workf ## Prerequisites -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - [Docker](https://www.docker.com/products/docker-desktop/) (for the Durable Task Scheduler emulator) - Azure AI Projects service - Azure credentials (via az login) diff --git a/samples/durable-task-sdks/dotnet/AspNetWebApp/README.md b/samples/durable-task-sdks/dotnet/AspNetWebApp/README.md index 2a7667e1..b864a744 100644 --- a/samples/durable-task-sdks/dotnet/AspNetWebApp/README.md +++ b/samples/durable-task-sdks/dotnet/AspNetWebApp/README.md @@ -2,11 +2,11 @@ In addition to [Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview), the [Durable Task SDK for .NET](https://github.com/microsoft/durabletask-dotnet) can also use the durable task scheduler for managing orchestration state. -This directory includes a sample .NET console app that demonstrates how to use the scheduler with the Durable Task SDK for .NET (without any Azure Functions dependency). +This directory includes a sample ASP.NET Core web app that demonstrates how to use the scheduler with the Durable Task SDK for .NET (without any Azure Functions dependency). ## Prerequisites -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) - [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed diff --git a/samples/durable-task-sdks/dotnet/EntitiesSample/README.md b/samples/durable-task-sdks/dotnet/EntitiesSample/README.md index ee3145f6..96f81c1a 100644 --- a/samples/durable-task-sdks/dotnet/EntitiesSample/README.md +++ b/samples/durable-task-sdks/dotnet/EntitiesSample/README.md @@ -4,7 +4,7 @@ The [Durable Task SDK for .NET](https://github.com/microsoft/durabletask-dotnet) ## Prerequisites -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) - [Docker](https://www.docker.com/get-started) installed diff --git a/samples/durable-task-sdks/dotnet/EternalOrchestrations/README.md b/samples/durable-task-sdks/dotnet/EternalOrchestrations/README.md index f28a9cb9..fbd1fa87 100644 --- a/samples/durable-task-sdks/dotnet/EternalOrchestrations/README.md +++ b/samples/durable-task-sdks/dotnet/EternalOrchestrations/README.md @@ -1,4 +1,4 @@ -# Eternal Orchestrations โ€” Durable Task SDK (.NET) +# Eternal Orchestrations - Durable Task SDK (.NET) .NET | Durable Task SDK @@ -14,7 +14,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) 2. [Docker](https://www.docker.com/products/docker-desktop/) (for the emulator) ## Quick Run diff --git a/samples/durable-task-sdks/dotnet/FanOutFanIn/README.md b/samples/durable-task-sdks/dotnet/FanOutFanIn/README.md index 85078699..a21dfc87 100644 --- a/samples/durable-task-sdks/dotnet/FanOutFanIn/README.md +++ b/samples/durable-task-sdks/dotnet/FanOutFanIn/README.md @@ -20,7 +20,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) or later +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later 2. [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed 3. [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) (if using a deployed Durable Task Scheduler) diff --git a/samples/durable-task-sdks/dotnet/FunctionChaining/README.md b/samples/durable-task-sdks/dotnet/FunctionChaining/README.md index 53b3d1f4..211b8cc1 100644 --- a/samples/durable-task-sdks/dotnet/FunctionChaining/README.md +++ b/samples/durable-task-sdks/dotnet/FunctionChaining/README.md @@ -18,7 +18,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) or later +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later 2. [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed 3. [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) (if using a deployed Durable Task Scheduler) @@ -112,7 +112,7 @@ The connection string is constructed dynamically based on the environment: // For local emulator connectionString = $"Endpoint={schedulerEndpoint};TaskHub={taskHubName};Authentication=None"; -// For Azure deployed emulator +// For a deployed Azure scheduler connectionString = $"Endpoint={schedulerEndpoint};TaskHub={taskHubName};Authentication=DefaultAzure"; ``` @@ -150,7 +150,7 @@ Once you have set up either the emulator or deployed scheduler, follow these ste This sample includes an `azure.yaml` configuration file that allows you to deploy the entire solution to Azure using Azure Developer CLI (AZD). -> **Note:** This sample uses the shared infrastructure templates located at [`samples/infra/`](../../infra/). +> **Note:** This sample uses the shared infrastructure templates located at [`samples/infra/`](../../../infra/). #### Prerequisites for AZD Deployment @@ -287,36 +287,35 @@ foreach (string id in allInstanceIds) ## Understanding the Output When you run the client, you should see: -1. The client starting an orchestration with a name input +1. The client scheduling 20 orchestrations with name inputs (`User_1` through `User_20`), one every 5 seconds 2. The worker processing the chained activities -3. The client displaying the final result from the completed orchestration +3. The client reporting completion for each orchestration and final completed/failed counts Example output: ``` -Starting greeting orchestration for name: GitHub Copilot -Started orchestration with ID: 7f8e9a6b-1c2d-3e4f-5a6b-7c8d9e0f1a2b -Waiting for orchestration to complete... -Orchestration completed with status: Completed -Greeting result: Hello GitHub Copilot! It's nice to meet you. Welcome to the Durable Task Framework! +Scheduling orchestration #1 (User_1) +Orchestration #1 scheduled in 42ms with ID: 7f8e9a6b-1c2d-3e4f-5a6b-7c8d9e0f1a2b +All 20 orchestrations scheduled. Waiting for completion... +Orchestration 7f8e9a6b-1c2d-3e4f-5a6b-7c8d9e0f1a2b completed successfully +FINAL RESULTS: 20 completed, 0 failed, 20 total orchestrations ``` +The client does not fetch orchestration output. In the dashboard, the first orchestration's output is `Hello User_1! How are you today? I hope you're doing well!`. + When you run the sample, you'll see output from both the worker and client processes: ### Worker Output The worker shows: - Registration of the orchestrator and activities -- Log entries when each activity is called, showing details of the order processing -- The progression through the chain of activities from order processing to payment to shipping to notification +- Log entries when each activity is called, showing the name or greeting received +- The progression through `SayHelloActivity`, `ProcessGreetingActivity`, and `FinalizeResponseActivity` ### Client Output The client shows: -- Starting the orchestration with the order details +- Starting each orchestration with its name input - The unique orchestration instance ID -- The final result, which includes: - - The order ID - - Status (which should be "Completed") - - Payment ID (randomly generated) - - Shipping ID (randomly generated) +- Completion status for each instance (which should be "Completed") +- Final counts of completed, failed, and total orchestrations This demonstrates the chaining of functions in a sequence, with each function building on the state from the previous one. @@ -329,7 +328,7 @@ To access the Durable Task Scheduler Dashboard and review your orchestration: 2. Click on the "default" task hub 3. You'll see the orchestration instance in the list 4. Click on the instance ID to view the execution details, which will show: - - The sequential execution of the four activities + - The sequential execution of the three activities - The input and output at each step - The time taken for each step @@ -340,4 +339,4 @@ To access the Durable Task Scheduler Dashboard and review your orchestration: 4. Search for your orchestration instance ID 5. Review the execution details -The dashboard visualizes the sequential nature of function chaining, making it easy to see the flow of data from one activity to the next throughout the order processing workflow. +The dashboard shows the sequential nature of function chaining and the flow of greeting data from one activity to the next. diff --git a/samples/durable-task-sdks/dotnet/HumanInteraction/README.md b/samples/durable-task-sdks/dotnet/HumanInteraction/README.md index 3bb82cb1..5d10c916 100644 --- a/samples/durable-task-sdks/dotnet/HumanInteraction/README.md +++ b/samples/durable-task-sdks/dotnet/HumanInteraction/README.md @@ -18,7 +18,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) or later +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later 2. [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed 3. [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) (if using a deployed Durable Task Scheduler) diff --git a/samples/durable-task-sdks/dotnet/Monitoring/README.md b/samples/durable-task-sdks/dotnet/Monitoring/README.md index a1fc4ba1..0c74186b 100644 --- a/samples/durable-task-sdks/dotnet/Monitoring/README.md +++ b/samples/durable-task-sdks/dotnet/Monitoring/README.md @@ -1,4 +1,4 @@ -# Monitor Pattern โ€” Durable Task SDK (.NET) +# Monitor Pattern - Durable Task SDK (.NET) .NET | Durable Task SDK @@ -13,7 +13,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) 2. [Docker](https://www.docker.com/products/docker-desktop/) (for the emulator) ## Quick Run diff --git a/samples/durable-task-sdks/dotnet/OpenTelemetryTracing/README.md b/samples/durable-task-sdks/dotnet/OpenTelemetryTracing/README.md index 7e9f831d..9b3768e0 100644 --- a/samples/durable-task-sdks/dotnet/OpenTelemetryTracing/README.md +++ b/samples/durable-task-sdks/dotnet/OpenTelemetryTracing/README.md @@ -2,14 +2,14 @@ | | | |-|-| -| **Language** | C# (.NET 8) | +| **Language** | C# (.NET 10) | | **SDK** | Durable Task SDK | This sample shows how to wire up [OpenTelemetry](https://opentelemetry.io/) with the Durable Task SDK to visualize orchestration flows in [Jaeger](https://www.jaegertracing.io/). It demonstrates trace correlation across an orchestrator, activities, and sub-orchestrations so you can see the full distributed trace of an order-processing workflow. ## Prerequisites -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - [Docker](https://www.docker.com/products/docker-desktop) ## Quick Run @@ -43,7 +43,7 @@ dotnet run --project Client 1. Open the Jaeger UI at **http://localhost:16686** 2. Select the **durable-worker** service from the dropdown 3. Click **Find Traces** -4. Click on a trace to see the full span tree โ€” you'll see the orchestrator span with child spans for each activity (`ValidateOrder`, `ProcessPayment`, `ShipOrder`, `SendNotification`) +4. Click on a trace to see the full span tree: the orchestrator span with child spans for each activity (`ValidateOrder`, `ProcessPayment`, `ShipOrder`, `SendNotification`) You can also view the orchestration status in the DTS Dashboard at **http://localhost:8082**. diff --git a/samples/durable-task-sdks/dotnet/OrchestrationVersioning/README.md b/samples/durable-task-sdks/dotnet/OrchestrationVersioning/README.md index 801f9ac5..8034a403 100644 --- a/samples/durable-task-sdks/dotnet/OrchestrationVersioning/README.md +++ b/samples/durable-task-sdks/dotnet/OrchestrationVersioning/README.md @@ -2,9 +2,9 @@ In addition to [Durable Functions](https://learn.microsoft.com/azure/azure-functions/durable/durable-functions-overview), the [Durable Task SDK for .NET](https://github.com/microsoft/durabletask-dotnet) can also use the durable task scheduler for managing orchestration state. -This directory includes a sample .NET console app that demonstrates how to utilize Orchestration Versioning with the Durable Task SDK for .NET. +This directory includes a sample ASP.NET Core web app that demonstrates how to use Orchestration Versioning with the Durable Task SDK for .NET. -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +- [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) - [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) - [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed @@ -267,8 +267,9 @@ Once logged in, you should see the orchestrations that were created by the sampl ## Optional: Deploy to Azure Container Apps 1. Create an container app following the instructions in the [Azure Container App documentation](https://learn.microsoft.com/azure/container-apps/get-started?tabs=bash). -1. During step 1, specify the deployed container app code folder at samples\durable-task-sdks\dotnet\OrchestrationVersioning -1. Follow the instructions to create a user managed identity and assign the `Durable Task Data Contributor` role then attach it to the container app you created in step 1 at [Azure-Functions-Durable-Task-Scheduler-Private-Preview](..\..\..\..\docs\configure-existing-app.md#run-the-app-on-azure-net). Please skip section "Add required environment variables to app" since these environment variables are not required for deploying to container app. +1. During step 1, specify the deployed container app code folder at `samples/durable-task-sdks/dotnet/OrchestrationVersioning`. +1. Follow the [identity-based authentication guidance](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-identity) to create a user-assigned managed identity, assign it the `Durable Task Data Contributor` role on your task hub, and attach it to the container app. +1. Set the container app's `DURABLE_TASK_SCHEDULER_CONNECTION_STRING` environment variable to `Endpoint=;TaskHub=;Authentication=ManagedIdentity;ClientID=`. The app requires this setting in Azure as well as locally. 1. Call the container app endpoint at `http://sampleapi-.azurecontainerapps.io/scenarios/hellocities?count=10`, Sample curl command: ```bash diff --git a/samples/durable-task-sdks/dotnet/ScheduleWebApp/README.md b/samples/durable-task-sdks/dotnet/ScheduleWebApp/README.md index d9952a3b..0fddfd0a 100644 --- a/samples/durable-task-sdks/dotnet/ScheduleWebApp/README.md +++ b/samples/durable-task-sdks/dotnet/ScheduleWebApp/README.md @@ -4,7 +4,7 @@ This sample demonstrates a web application that leverages the durable task sched ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) or later +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) or later 2. [Docker](https://www.docker.com/products/docker-desktop/) (for running the emulator) installed 3. [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) (if using a deployed Durable Task Scheduler) diff --git a/samples/durable-task-sdks/dotnet/SubOrchestrations/README.md b/samples/durable-task-sdks/dotnet/SubOrchestrations/README.md index 983e8403..e21edc4b 100644 --- a/samples/durable-task-sdks/dotnet/SubOrchestrations/README.md +++ b/samples/durable-task-sdks/dotnet/SubOrchestrations/README.md @@ -1,4 +1,4 @@ -# Sub-Orchestrations โ€” Durable Task SDK (.NET) +# Sub-Orchestrations - Durable Task SDK (.NET) .NET | Durable Task SDK @@ -13,7 +13,7 @@ This pattern is useful for: ## Prerequisites -1. [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) +1. [.NET 10 SDK](https://dotnet.microsoft.com/download/dotnet/10.0) 2. [Docker](https://www.docker.com/products/docker-desktop/) (for the emulator) ## Quick Run diff --git a/samples/durable-task-sdks/java/README.md b/samples/durable-task-sdks/java/README.md index 17672f16..0086728e 100644 --- a/samples/durable-task-sdks/java/README.md +++ b/samples/durable-task-sdks/java/README.md @@ -4,7 +4,7 @@ This directory contains sample applications demonstrating various patterns using ## Prerequisites -- Java 8 or later +- [Java 21](https://adoptium.net/) - [Docker](https://www.docker.com/get-started) ## Running the samples with the Durable Task Scheduler Emulator @@ -24,7 +24,7 @@ The samples can be run locally using the Durable Task Scheduler Emulator. The em 2. Set the connection string environment variable: ```bash # Windows - set DURABLE_TASK_CONNECTION_STRING="Endpoint=http://localhost:8080;TaskHub=default;Authentication=None" + set "DURABLE_TASK_CONNECTION_STRING=Endpoint=http://localhost:8080;TaskHub=default;Authentication=None" # Linux/macOS export DURABLE_TASK_CONNECTION_STRING="Endpoint=http://localhost:8080;TaskHub=default;Authentication=None" @@ -116,7 +116,7 @@ You can view the orchestrations in the Durable Task Scheduler emulator's dashboa ## Using Durable Task Scheduler -To use a Durable Task Scheduler running in Azure instead of the emulator, set the connection string to your Durable Task Scheduler connection string. The [format of the string)[(https://learn.microsoft.com/azure/azure-functions/durable/durable-task-scheduler/durable-task-scheduler-identity?tabs=df&pivots=az-cli)] depends on the type of managed identity you use. +To use a Durable Task Scheduler running in Azure instead of the emulator, set the connection string to your Durable Task Scheduler connection string. The [format of the string](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler-identity) depends on the type of managed identity you use. ```bash # Windows diff --git a/samples/durable-task-sdks/java/function-chaining/README.md b/samples/durable-task-sdks/java/function-chaining/README.md index 084e4b36..8433dce6 100644 --- a/samples/durable-task-sdks/java/function-chaining/README.md +++ b/samples/durable-task-sdks/java/function-chaining/README.md @@ -26,7 +26,7 @@ This pattern is useful for: ## Prerequisites -- Java 8 or later +- [Java 21](https://adoptium.net/) - [Docker](https://www.docker.com/get-started) - [Azure CLI](https://docs.microsoft.com/cli/azure/install-azure-cli) (if using a deployed Durable Task Scheduler) @@ -82,10 +82,10 @@ For production scenarios or when you're ready to deploy to Azure: 1. Set the connection string environment variable: ```bash # Windows - set DURABLE_TASK_CONNECTION_STRING="Endpoint={scheduler endpoint};Authentication=DefaultAzure" + set "DURABLE_TASK_CONNECTION_STRING=Endpoint={scheduler endpoint};TaskHub={task hub name};Authentication=DefaultAzure" # Linux/macOS - export DURABLE_TASK_CONNECTION_STRING="Endpoint={scheduler endpoint};Authentication=DefaultAzure" + export DURABLE_TASK_CONNECTION_STRING="Endpoint={scheduler endpoint};TaskHub={task hub name};Authentication=DefaultAzure" ``` ## How to Run the Sample diff --git a/samples/durable-task-sdks/javascript/README.md b/samples/durable-task-sdks/javascript/README.md index d922c1f8..6be34c72 100644 --- a/samples/durable-task-sdks/javascript/README.md +++ b/samples/durable-task-sdks/javascript/README.md @@ -1,6 +1,6 @@ # JavaScript Samples for Durable Task SDK -This directory contains sample applications demonstrating orchestration patterns using the Durable Task JavaScript SDK with Azure Durable Task Scheduler. +This directory contains sample applications demonstrating orchestration patterns using the [Durable Task JavaScript/TypeScript SDK](https://github.com/microsoft/durabletask-js) with Azure Durable Task Scheduler. The SDK is available in preview. These samples use JavaScript. ## Prerequisites @@ -22,8 +22,8 @@ This directory contains sample applications demonstrating orchestration patterns ## Available samples -- **function-chaining**: Sequential activity pipeline workflow, with local emulator and `azd` deployment support. -- **fan-out-fan-in**: Parallel processing and aggregation workflow, with both local emulator and `azd` deployment support. +- **[function-chaining](./function-chaining/)**: Sequential activity pipeline workflow, with local emulator and `azd` deployment support. +- **[fan-out-fan-in](./fan-out-fan-in/)**: Parallel processing and aggregation workflow, with both local emulator and `azd` deployment support. ## Running the sample From 08fcab85a5b7ced6880fcbadb91c6053f8deca82 Mon Sep 17 00:00:00 2001 From: Nick Greenfield <56556602+greenie-msft@users.noreply.github.com> Date: Thu, 15 Oct 2026 14:19:03 -0700 Subject: [PATCH 2/2] Remove samples using deprecated Functions OpenAI bindings Remove the .NET and Python PDF Summarizer applications, their deployment infrastructure, and dedicated images. Remove their catalog entries and CI steps. Keep AI samples that call OpenAI SDKs directly. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 4859cb6e-4912-4455-8d57-b2de3579b20c --- .github/workflows/build-samples.yml | 6 - .../images/PdfSummarizer/architecture_v3.png | Bin 226666 -> 0 bytes media/images/PdfSummarizer/dotnet-code.png | Bin 78521 -> 0 bytes media/images/architecture_v2.png | Bin 243905 -> 0 bytes media/images/architecture_v3.png | Bin 254222 -> 0 bytes media/images/dotnet-code.png | Bin 87732 -> 0 bytes samples/README.md | 3 - .../dotnet/PdfSummarizer/.gitignore | 266 ---- .../PdfSummarizer/.vscode/extensions.json | 6 - .../dotnet/PdfSummarizer/.vscode/launch.json | 11 - .../PdfSummarizer/.vscode/settings.json | 7 - .../dotnet/PdfSummarizer/.vscode/tasks.json | 69 - .../dotnet/PdfSummarizer/PdfSummarizer.cs | 150 -- .../dotnet/PdfSummarizer/Program.cs | 13 - .../Properties/launchSettings.json | 9 - .../dotnet/PdfSummarizer/README.md | 99 -- .../dotnet/PdfSummarizer/azure.yaml | 22 - .../dotnet/PdfSummarizer/host.json | 24 - .../PdfSummarizer/infra/abbreviations.json | 139 -- .../app/documentintelligence-Access.bicep | 21 - .../PdfSummarizer/infra/app/dts-Access.bicep | 18 - .../dotnet/PdfSummarizer/infra/app/dts.bicep | 31 - .../infra/app/durable-function.bicep | 54 - .../infra/app/openai-Access.bicep | 17 - .../infra/app/storage-Access.bicep | 21 - .../infra/app/storage-PrivateEndpoint.bicep | 89 -- .../dotnet/PdfSummarizer/infra/app/vnet.bicep | 75 - .../PdfSummarizer/infra/core/ai/openai.bicep | 48 - .../core/host/appservice-appsettings.bicep | 17 - .../infra/core/host/appservice.bicep | 136 -- .../infra/core/host/appserviceplan.bicep | 22 - .../core/host/functions-flexconsumption.bicep | 87 -- .../infra/core/host/functions.bicep | 116 -- .../core/identity/userAssignedIdentity.bicep | 14 - .../core/monitor/appinsights-access.bicep | 21 - .../core/monitor/applicationinsights.bicep | 22 - .../infra/core/monitor/loganalytics.bicep | 21 - .../infra/core/monitor/monitoring.bicep | 31 - .../infra/core/security/role.bicep | 21 - .../infra/core/storage/storage-account.bicep | 101 -- .../dotnet/PdfSummarizer/infra/main.bicep | 404 ------ .../PdfSummarizer/infra/main.parameters.json | 81 -- .../infra/modules/fetch-container-image.bicep | 8 - .../PdfSummarizer/infra/shared/apps-env.bicep | 33 - .../infra/shared/dashboard-web.bicep | 1231 ----------------- .../PdfSummarizer/infra/shared/keyvault.bicep | 31 - .../infra/shared/monitoring.bicep | 34 - .../PdfSummarizer/infra/shared/registry.bicep | 36 - .../pdf-summarizer-dotnet.csproj | 42 - .../dotnet/PdfSummarizer/scripts/deploy.ps1 | 58 - .../dotnet/PdfSummarizer/scripts/deploy.sh | 59 - .../python/pdf-summarizer/.gitignore | 266 ---- .../python/pdf-summarizer/README.md | 135 -- .../python/pdf-summarizer/azure.yaml | 10 - .../python/pdf-summarizer/function_app.py | 98 -- .../python/pdf-summarizer/host.json | 24 - .../pdf-summarizer/infra/abbreviations.json | 138 -- .../app/documentintelligence-Access.bicep | 21 - .../pdf-summarizer/infra/app/dts-Access.bicep | 18 - .../python/pdf-summarizer/infra/app/dts.bicep | 31 - .../infra/app/durable-function.bicep | 54 - .../infra/app/openai-Access.bicep | 17 - .../infra/app/storage-Access.bicep | 21 - .../infra/app/storage-PrivateEndpoint.bicep | 89 -- .../pdf-summarizer/infra/app/vnet.bicep | 75 - .../infra/core/ai/cognitiveservices.bicep | 47 - .../core/host/appservice-appsettings.bicep | 17 - .../infra/core/host/appservice.bicep | 136 -- .../infra/core/host/appserviceplan.bicep | 22 - .../core/host/functions-flexconsumption.bicep | 87 -- .../infra/core/host/functions.bicep | 119 -- .../core/identity/userAssignedIdentity.bicep | 14 - .../core/monitor/appinsights-access.bicep | 21 - .../core/monitor/applicationinsights.bicep | 22 - .../infra/core/monitor/loganalytics.bicep | 21 - .../infra/core/monitor/monitoring.bicep | 31 - .../infra/core/security/role.bicep | 21 - .../infra/core/storage/storage-account.bicep | 101 -- .../python/pdf-summarizer/infra/main.bicep | 379 ----- .../pdf-summarizer/infra/main.parameters.json | 81 -- .../infra/modules/fetch-container-image.bicep | 8 - .../infra/shared/apps-env.bicep | 33 - .../infra/shared/dashboard-web.bicep | 1231 ----------------- .../infra/shared/keyvault.bicep | 31 - .../infra/shared/monitoring.bicep | 34 - .../infra/shared/registry.bicep | 36 - .../python/pdf-summarizer/next-steps.md | 97 -- .../python/pdf-summarizer/requirements.txt | 15 - 88 files changed, 7425 deletions(-) delete mode 100644 media/images/PdfSummarizer/architecture_v3.png delete mode 100644 media/images/PdfSummarizer/dotnet-code.png delete mode 100644 media/images/architecture_v2.png delete mode 100644 media/images/architecture_v3.png delete mode 100644 media/images/dotnet-code.png delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/.gitignore delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/.vscode/extensions.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/.vscode/launch.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/.vscode/settings.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/.vscode/tasks.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/PdfSummarizer.cs delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/Program.cs delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/Properties/launchSettings.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/README.md delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/azure.yaml delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/host.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/abbreviations.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/documentintelligence-Access.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts-Access.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/durable-function.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/openai-Access.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-Access.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-PrivateEndpoint.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/app/vnet.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/ai/openai.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice-appsettings.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appserviceplan.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions-flexconsumption.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/identity/userAssignedIdentity.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/appinsights-access.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/applicationinsights.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/loganalytics.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/monitoring.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/security/role.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/core/storage/storage-account.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/main.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/main.parameters.json delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/modules/fetch-container-image.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/shared/apps-env.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/shared/dashboard-web.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/shared/keyvault.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/shared/monitoring.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/infra/shared/registry.bicep delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/pdf-summarizer-dotnet.csproj delete mode 100644 samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.ps1 delete mode 100755 samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.sh delete mode 100644 samples/durable-functions/python/pdf-summarizer/.gitignore delete mode 100644 samples/durable-functions/python/pdf-summarizer/README.md delete mode 100644 samples/durable-functions/python/pdf-summarizer/azure.yaml delete mode 100644 samples/durable-functions/python/pdf-summarizer/function_app.py delete mode 100644 samples/durable-functions/python/pdf-summarizer/host.json delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/abbreviations.json delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/documentintelligence-Access.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/dts-Access.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/dts.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/durable-function.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/openai-Access.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/storage-Access.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/storage-PrivateEndpoint.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/app/vnet.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/ai/cognitiveservices.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice-appsettings.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/host/appserviceplan.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/host/functions-flexconsumption.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/host/functions.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/identity/userAssignedIdentity.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/monitor/appinsights-access.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/monitor/applicationinsights.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/monitor/loganalytics.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/monitor/monitoring.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/security/role.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/core/storage/storage-account.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/main.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/main.parameters.json delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/modules/fetch-container-image.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/shared/apps-env.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/shared/dashboard-web.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/shared/keyvault.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/shared/monitoring.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/infra/shared/registry.bicep delete mode 100644 samples/durable-functions/python/pdf-summarizer/next-steps.md delete mode 100644 samples/durable-functions/python/pdf-summarizer/requirements.txt diff --git a/.github/workflows/build-samples.yml b/.github/workflows/build-samples.yml index f1c1497f..d959b1dd 100644 --- a/.github/workflows/build-samples.yml +++ b/.github/workflows/build-samples.yml @@ -92,9 +92,6 @@ jobs: - name: Build DF - Saga run: dotnet build samples/durable-functions/dotnet/Saga/DurableFunctionsSaga.csproj - - name: Build DF - PdfSummarizer - run: dotnet build samples/durable-functions/dotnet/PdfSummarizer/pdf-summarizer-dotnet.csproj - - name: Build DF - AiAgentTravelPlanOrchestrator run: dotnet build samples/durable-functions/dotnet/AiAgentTravelPlanOrchestrator/TravelPlannerFunctions.csproj @@ -221,9 +218,6 @@ jobs: - name: Install DF - fan-out-fan-in run: pip install -r samples/durable-functions/python/fan-out-fan-in/requirements.txt - - name: Install DF - pdf-summarizer - run: pip install -r samples/durable-functions/python/pdf-summarizer/requirements.txt - - name: Install DF - work-item-filtering run: pip install -r samples/durable-functions/python/work-item-filtering/requirements.txt diff --git a/media/images/PdfSummarizer/architecture_v3.png b/media/images/PdfSummarizer/architecture_v3.png deleted file mode 100644 index a7802421062e7c3cb89d2674b628075edec24194..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226666 zcmeFZhdF(_OZ?~QvquhM% z|8D-bY5&h)|IHcx&q@AbmH%^+znJ5Hf$9I8jUS}aET6B z>UMuu6&<}WLq@S#Z&a#%WvArZ>mm{V`ka3=s5?T6Yk*&^Yp0BDT<-j2u|q&>g}jyS z>Ic0+HlklR$`Zt6GPcUHNlMTAWZql);)o>_;?ngLtWKDlro=x7vN3x zu>O<=deH=%A{`Dx9ZYN|-?$yr&e);fVA{X=7A(OvK9A{h*|wWG@H6(B{LuTS-E>av zHgDtlr`@hRLyHMArOmN37m?~7`IxcSb@>oHUHLOIxDOYpSN$vRrin{*q(o#%+K|0T zw2YE=RR18MDu%Dez25}0ah*<9@VqWk{ks|Ol%;x4&Ew%|)Hnw4R$BwjO7xNwyi8vB zaGA5&o<^f8NVMb-4U-rs7z-2r&08%DbC0*1yG`lMkPrR zoH23C)I0(*3kdhOucJ2YY2B5Kn}#4_IJfRQz57Rae7{Et57SQ{LMdm~T&RkO@MX8* zvc8%WPH^`}N2vswWVH>^QB@AUmFh5Uv<25c|9evbBjCX2WVzT!#5?%R;%!@U=-DLFD$i)1a--d(H1}l9=4C+)i9? zTL|zjH{V0rO&?8&J8vx6@`)>KbT@~mVb9tDddxS7&jbEhYke)el8yBqX}ETi_7p^h z&&TgePTCnK`sI|wEn!O#o=3$X{D+Jx=7aU#uAn&?^@{e9Ow0C6JO1l)!t>JqfTT4U zN|>72^=DFCA$aEU?-kFeh)am_Csl1ujolSZuXtDjE75Y%+9Np5?F(WsE~J6$9k^3i z%8rX3)V1Gcs^8P8FPpI#rU(B=$!NJm@o1%L>ldd8kaY3$m-WOdCtf>nH;;Aq`!(FG zU$vW~PmgD@#NbNE+lF&lNp*^M;mO#zp4Jy1n1yQsO|T^!KMXqV0Nwbw?i~rfYgPZN ze^ET*DFqRp8nRuZSbbcYs^3L3z(YqV07jY&;73arSMlpS-NH2uIW-P{PW!;Y(UmdT z@Wc``_sMoLt!J8>Ah2zQPp@@U#&HT)>$j$N@1lKifxx@XfW=Ri!hiRLXRpVTy8ny` zLFy5OnOG=ivwzP1G>{P0Y5D?NqWM&4q8hAgdR?6T1<}Hy1iV453cG^?U zeC@le4GB-G%7?&E%ihA3iEZhkHnH<2dU(GtkD2Xy5Xs|OTWJpBz1sUFm;k;lCGk8lDb9^Ro8lS~qdIU#^0{jjra)ofaJ4(UScoe%C`v&iDk$YOH^V zTeNbj?+}-D;#p}&0$OZnj`CqG3H>5*c!!nf-yyT+F{2tO_{PbtC}oD!!c9jQ)W=3= zkr=j9z&&2&3aqDEHRljL_m4;lGoq|^@?$ne%9$Gu!KxT9|D%X7JIQ?GA!*?qBKJyu zHb?yfCt!a#8B{I6F7#VFD2%|A0&feA6NVvaWxv^)>@)*!eSA0)a_EX z6AL4Fb4OSn&^yH=w7zC}TvvMA&-x(oo<_4z)4h}jKCaXq*1Z1+oJ-2Dd6|@StU3Pl zZraZt>%XKvHT&f3_koO|;o>GM95*A}C*RFh*i9~kj5gKLnQZH#zbmscHi;(xB(q{CAvE=nz7OY5Cl~IDpM7XsS;r1(&LhL zR(adRI?d_vPuLEp-b1f*^1eEAI+_C7&*kfp2Rj&6iNl4q>%?u~NA^C)M%pn^3A)Aj z<@v?FqDzR^^-O}5ZBB;?6hMvz$9c#=78VYymtZ1RQl%bs%}B?mJ$KlxcHCNfi z8czCrv1BqMO2@QZ>;@Ghj3JpabJw0Vl6N9jrVT$n!Vm_4?}o1wz9Y z+7146;p;xOdRt*Mt66^E1?GD%nkMWcJe~k2_b1D&g>lV(x;6tAw>>{{uJ$CpgHskgOuBrOEFG|%Q692{Q1{ObDO*YEpn#klYp?N^sh4R)7WUy}SYm1NO0u=S&k zQ9?}{7XEwsT8Y=INonhskQ5Mfvk52$zIgO98jqv8GhlF^(pWL&s=+EJH=WBcY&eychMDz9Swm^ zGlS031oMPJss5t6^+FkC)J*==Fpf2)_e6Wc;>6ZPa+P4dB(Yx^b4W*)ec7G?hBqLS zdoYZ8Y~Irz+EK+dbp|I_9hronL+{!wh8JjPl4DX*m3mvZd&jM5pkXrD?L~t?V!Ych_$7GZ z@?59a<&1Y*s}j8_L9mLz<%PLy6OuZsszZ~Kl;|tpK@6NJt))T`Y1~#E&=KPNQS@z6*wWHQ&#ugvj7*A>h zNeZHq?QPH|EyUW`>RY&(L=89IOl#guyI-?pv&#Orl{T@}1W-O0Pf}lRb6$4pyHBWO zVmaieanVR?Zk|Tv{&JfiRN}q2rCHwZX7u+!JVSLvf0<0`{{H0D!g#DJrfFg4Vm7-HjUN zz4=H~G`Y-(^)E|zx@7bhJrm4W%)3ng^mDUYrF&6xc9dM;lZV-<@?J>msj0KWE^6KI zm^dCivT4HB5LwDei<)&4k0P?mLXBmf*2(P49KUJ83HM@>;<{xfK8x)O_EmIi?5l4G zxdKQ7gPD&Se+d+P&_m!54;M1?mbst=wsQX$2XNJu4GZP!@Jt!mQ;PYYer5TLN}tRa z5fybBd$CuvdHwJR5+!60_rgBAV6N-&visc^0V+)H&;Cm4LHl(#AR5Uli@4edNA@g< zv<D$<(*U*C{~t zk6-8Q;Hee~XQT?IRL7trcXzBldmI!;hJ=dzlU7DvqZBV!BS%jMcZGH7M@@It=fJw+ zWhQh5u=V23Ht-doM8_xwc{ZEsfTJXMaaIkLZCz_wdXVM)bCoZe*POdyX9UIA2Jb z@-TPoqp(Gl%Gc}DUfrMI^Cr3kHqfU1o*_$2RlWy#qzx@!K{~7j#vw0&tB{dXb1LOW z4%IgKm=w%=kVLi%e8JnV)S0VcU{rKvdG(;X@#q1wX3C}=Knx`^ulJoss2OIdtN^}e1Ffh6~c^Gr+=w^^;0lvQ*)U&y&Eos?EXC7oHZ-FutN^okCZ+R)ND?k#kVA(PiCu|Wy$-*!rnit z7{Doe;|nbZP=f51#jOk|w;9HbyxkiV)F{XW-4e6FED70fckl|OgM8c0QjmnE%U{AD zKH(Jj)j6>Dm5h2ryKQ4eC&aseM!}gOv(AV)A_W`TGq>H_I((S09ph1xi3~>jG4qw9 zFe5J=`Qx@%{0T|{oDClU*6T(Sa8o~Z-?<;1HV@fQW@3#0k!!yTWe@m{cf3+Og~g83 zdUNvQmD8}wxp@D;-@#qN=f28$xq02WoSLx`|u1!s};X6G>4hEjkk>AnEeQAJuFC72cAkb?5&^7=@)=IJ{F3OQ9rp zDA*oA?{l(@Uwm@?Pci7j=huN}k$t=PliGm&F?~lF)>U6-u_G@{+sTN8L5>*CZMby8 zO1Q~L*(+R6J8UvPOLAFd_F8qs^8o7v&EB)Nc&+3WY4e{rHZti47`A5iBJ!X*Jgh5a ztCQCpXYFyKru1-kuPz!b4EFI4P_@bJ=yY`Aq%b$>m+rsrgkv(~U?4BpQovl#ss8Z4 zBffQ+7CSpIcU#1YBIc-sD!N5{wSS}=efAV31kX<8YLr}Zv6$W(QIU{!9i5Z(5A2e| z4X+2z&Qdth%Abik@)$a`*HG_}qb9Y?=mMU?0n#fSN}`+zLJ}Q1l@NEN(Jl=$Qe@?~ zBZ!_`d)l+qX8Q2A9)ug!S&`b4~)Hy5>Y7P#TYe=jh zj~~3!$Tj+&Ue44Bxsl}XuVMdd0td|ZWmK0SmlOX~6EA5h?mEM~^tKARQ%@>#OL*2> zL%C>$?am1&0*7}( zuySt_=OBO|i!uxf3Ys6pn6-AS@rP%-tos1FXoLRnN{tDkV2V@U)B3(qm9Lca3A2Ie zJ(Mcq_xt+hsrl^e;fzo8KPX4jnKEHkDvDE=mQ#DauUf4BEWfLL^hNN&eCFdraE#L9 zqEDEv!tIE>6``qW@Z}V=pF{;p5|`wMw@yGs-1n?>_9vQ!BD2u+;Kr=!_yv38l0f(4 zijZH)9E9Vf5V=372d3Xxh&$1Uq7)Lni>Il2E1W|rQ>(uy;NF)=EW^{Eed7!&PVukO zlm3p&9Z)I}jLtGR4pssmJG#w=B{~7MH&@YXyZaJakmmsl!Okaszs8wKsQcm2;?p#gtg;j#YBA2+lTT26f zrTh&G(c~Tw&dcdx8rSdV0e5TyvJ~w`aFtJ{hfxzsCq+E?be*ZP^%=?I8)DlJ%P~b& zLgOdqKBg>teZ}t^Jsv|P7grq3^i+s_v8XQ=MS z@Q&s(GG*MWmLrvxXBHk~9(c5K+Sr=8z#H=&(HY7uW?B~y(}Aq@hp$tg{;@@9iz?}K zN>=3%SajB?M~~QX8KtEgvXu~wu9#Xrvi-XxUrKZF%}Kc*lkLxuQ=*V@FB_Nipk>FH z=MBAcqn$M9UaS-1w(@A1RJj(DLs>@Y(Zz zr^I;YCmSVzM7~j}ste(Q{GXUz`j!Jvb3;1L4wFha#Y(pJ4V|pg94-oT?R|8IZ&H^N z)#B7v`kc(OC;O8)HM||Rn-5INvmVn6b=j&{bbXNP>1o8OKkD@%){oI2PYLl~MmZizDe-r+S=02C&jjo6 zxc03@)_wV5$2DH{5@uZMBFmN16g2gQ4LDd+r*PwKD&$p9Oj=JuZTibGuCo__jL53$mtRr>i^Ry0D9&pzktpfySK<3+@4bJG)&-l4#gDe~_M)QO zd5{)P_RhWfcX`Ad^Dx|U3mP7Xx(kbZ|B>4Bo>e9b}3tGM@~bq!G&Vq znyJJ5(c=E(;wP?cP3(Q#G83s26^MK*=hed+^2BUMrg&qnigNQmcimXtI*SOPx%%={ zvK67CqL50d{t~C&8Yu3evl#MD#Iuk4U`V7SaVMc7q6#+J)RD+EKxm;v0fzSWu>3gK zBJDCjvz0=foM2ewIH!JNsrNuvA*Wt_R!U&(1o;Uwnk_z&{ZVmOG6NWVMN}_dHe8Y< za}LyM%nV!~|8cCd+Yo@b0JYDFO@8{<ZrBYB%_9HeTo$!n}zV{iUxdMmDt~ zk)K)!5G5=)ybJRoLltv9ACe!$crHxM5Iv$(E=$aA+kbNu`7ek|@i|zm$SKy1M^HJV zd_`>n2iF3$_Nu)vZkQ%i9OQl2)bY?s!2GuQ>cTYR{65PIbJW&w>`}fc&#besTF{MR zY!jH5XnB*t$b^_?)Es$`<-~YcoN{c-%wd{==2Rowdp8a(OfPb+J@0tB!eRdpB}7q_ zO5FFpN(A&YPsLs>^y~?y+g{+;n@P5d<6Rjauk`Sav;_V}!mBUh8Y9F6)aOevhYLft zv*&DAU(U83e#FH1RR&Qvk*wnIKOGj;Iisz?3n{f5VtW1T#tX>UoeArFyoq5WkEv9_ z$^LEE#Y{p>y4SUcM`nUt;#bsn4P*Eyfd1E9G(c&2;O@0(QF5mxD_vpO?zQF;XOF%Y zK6-V{#!JtxHLVEQ3FkK;#_QfmfA0Cf);>qkW*CH13Edhv6+MGR!Wep!fq>8I>Gqe< zYP9A~}NM8Qr$T60yDBeI}_OJ9^(c$4cP~s!f`A*(*CC zzo+`Rm+l+>ouhos;|a`OobvR4!><1c#Fm{-9ZzMZI|E{{FJz;<@#O-J zJ)11%4!?iPVkMJVn-@_hNCy);9vkJTqIiSGTV1;kFUqg?_-e(bKzQRi!?^rb=9>>z z{KlDA0;eVL$0I|B%7FtM@7r?Cm;lb9KQm3XFZ~6pC@UqW`5KIuTfevXhB6XQ`gnkC z;J1eQ_QTpy*|;6-URa))2C^Sw-8VS_PIX^s;Ljt5&kQ!TOu1Gsk2~>f{!;OXqJNVI z?Mp}Y#ETtt`X{XL<1`9}CD(vPXnETT3sH3)wn{M>%fkcbs`RI<>=fM%L$>(j({s(|jmRGUpB4yv)fk4mx z?blz|?_|q2t0wsN-i-gf!U$Q(7pH=8k~cY9~GyrMkc~ok{Zev?Zc8*3rY7+YL#jWm%-vX>X}v3lyMjQZz^ zEPE-U>9`p{b5br5m60L=mst=n~AfF3#ZkO}DASFAEj?uUSr11o-*8y1L>|!osZn zgD_A;SRebr;qTHntxpNf_q&P^yj94n8>iv6cOL7$kWf+EI3b($Fd}n`tAd#_7g&c% zZyRu-xa&3)rX4h0CDpS9NyQxZNAa!&BVU9ZCwX7>f=dCCpm#(UU$6EQSEr<=_#%B( z=j%#JO1k`k1mtod_g$&vr8t*;UA?MlVhBk2E5B7An@!8~FP`CPD)LtK=mLF^b)+8@ z1DK5#tu@kIQH+!Ms>b`FZ-B#m2K~_DUNaB~Z0xZ5&$1UFbUDlWGw0pLmz&Ws?X;)N z(3MX6jKu%8OE0A<+O)1^iLe^5RR$QQi}RmlWF_+V>DR8de=r)i9YRSL4C%jRW%an` z(q|S_t#^{%X_Nl!$xI>l5c}JPg96wYIiNej1Z{)Wm>0Jr0eU}NylC4L>4(GNfOAN? z4Hf6;@~Nj5Zp{4$!5h5HKn@G#3K{jNLSevQW8Py;-|%^w4)E$n@n~^zaA<^+_nkC# zr;-Rxf@k3|=s|g8H1Kut4dZ?EHw$)oAN{{)PtqAmQ&aAz^1?MrgiBr1j@_V}H-Ca% zOO;@YbBFEhj~>=on`@>qVm?G9fA4Deg?}vj3D*+_n_9qR*uQ1{9`?!nB+)@mwaZ3h ze%cmmWQ*TT>v|xU1eMpTz>bYAK%v^7k(Vcufi8zS)xXr@v<1u7+u>8!0>{r|`a>?F z2PCSuZzzQ$G>9yBr;T+XJVf5IF`z)?iV?ubcJHPu)vXvWFMFrzl3;()zi&DkB!{6EtiWHfp}#8y|bhJoT85= z4k0^hPeF?A{&+@`$VQQ95SaMIOpeIYg9?YUypmk($tZz~+V!CyvdpxZA?Ht=jFwRi z!=F>tKW|%{^~!57oWSuT$G%DQ9dnC`35g`U6|*QA9YB$5Y`SI#^$n`sRzDOlxqV`A z*^zJV!K{8o-l?WRXVmh>b=7r6c+@%>I|oLE%sM@1;5Y~z=crK5yE1xJl}D%9Me1sl zPsW`!F0(j~D9+rmnqdt;VLt0S^L>x+ER1UOCM2W;@EYtkawPseg=+Iqny&Y@p18Bq z-qJ=;J$H|}FXkLrQ!8uZ`J%!VK*KV`KWUmG$+X|r%m?(5inaI)A(aA0*6ZLogeWAjkchWJf%JL@~(=@-1y8dfnb$Li+oy9duO|~>jIy-q<18J$UpWEXdh7KmVd(T5k}Dp z>Ms`JzDLZ%v768R@IQPcN@naqop8i!3#~MOu{yN%rn&9PxA)tcO`9y`M7H6&>8ITd z^~L*BJ}{f6!0*&kE6zik=0y-@xLYpG*Kt|3qCGhg4_hK6Ez zuG5C$#PMKHi%W+rU;e14f>c!Dw&M#M3+(t-b4&?f_Nzm9&mZ$at5dGu8Thj^6@rdw z`r-8z8sG$G3EfrvEpfg`0;cJ$1&OCz1hV~n2VX&RH0nuFQ%cUE|0~& z#)B24Dq;DWujM`8wsi!n{pVfS$BE`e%44Pf8Z)?m~1toRR}1x~RxLCnbs4t{Oj z{@Wc(?7~TswH0EE55;!f%Q19j9^}JX@QZGyb(77|x5CYYA4MCo;4abf71P;5eCUcF zRNrB?FuS@Jdd(31d|{_jXx;_V@6=htV3a_%h4LKN`rIxd#d@2k=G9J90dgL6L?k3= zM5Yz#c&qcsH1f#Q%RaobzQpA+-wrJ17jx-czC-H}zZxH8X1i$fV`r zg6gU&F5kIWEy~53)3Dfjf#X}Dp#69~P2b-wH1BWXQB`~vW$1>jF4pF~w&Pm)y%wgG zUfhYyIiaaoR{M!BHVOxWF*_#8S!b6TWv#xQ58%(M9-`yBbojzYl?3>yHoHADX4Ij6vZHS}Z7Nj3yg!?G#*l<zjjUS3tJ56k*;Sb?ImreaQ z+v@L=y9EmyUM^>zHm`3{jvYF79swNz#7<>os@Bv<6Dr5Lxf5tD za204XxbpNf|CN&Hw7O(gA+iPb>#E))n1_LFIJOgkhaj09yzZz8lL&!xAM_l*KzR$; zrww^@I6c}^ot_XI%$#|g1YO4@G#*qxNCEytq8S)E?J(7{JK&>o0S@(t*14Z_nJp#W z-#G5jQRPf{cDKqISLHt6_3B{}XW=DM!**Z&@xf~IF%ivla;$=X7ssoiYZvj`%|UZ- zxi3Y2e=d&OckasQvoLGCQMv8WPJu$e-c0yuPz$Sb;{`_2SYvK9}10#9Q0I1OLO#j)LK3j78AV zM$idaQ~s(~_`mB&?U$$dj}+oAL&<-?sJi@P{@6~Hp2XT4*fo3^cYTJ4%epM8XT2{b z7fdGT^KiN6*|x>J*+9Ujfe1ZBI_o8|2i%J%#I{~!y7vC@9xgy zj=wnJ=E_)9`w=Fkp!u_L0=pUd(g99SMr+JFony+bE%P&u{ZS7{_=DBo{!W0+jzYeK zxg~Q~3Crz*FY7N%KJ^zn27ooX#T?TxQl5A9*g9T8Sszu)E=)Z}ZC?&o*aM1-1s?iv z#zd+m37H)%YXuq0UEh(ybh*XTAqLWej7s|$?d9&33pJGCZ+3?jhPQQIZpXgy^5klv&Za0 zm$3&3>HFn-eO4Nk4o4E=O6x?z!em#2J&+ADB;K$zrrtE99jtDY_sg3wx7g3n*<`b?yk#{X4>~yl4n1=F)%trVWSDB0J3(Q)M+{4PeU4GP zGbgJ2BFeN!z0!2N4vJ)VynoDyb#$7n*=%FA7+Hv%)=xpw9f{V{b4a+gUQyN8*DrkW zUEyTEzs$M=jBMa}S+7@u_Av_`85;vLU(B~khyzozm?G1HdFTFc)_9{vpe2#Jg`11- z=wm>H7tj6Z_yq*M3yd>#L~(fkxE)?>(QN)5WmZr6dX8ztkv)c0=nY77_i(%4@v_8$ zww4tj)p!>xIpEg`S5J9q*R(VA0@AP7aO96L}qnDPx$41g6FEW%@i3 z&P8-H$?a%2>K(BAmu}Pe=PgSBrAY`Nva7qBXgk;@>$^4AM9S?pp*2R3@ZsEnJ{zMU zn1i7g!VJQrzROoK^Bl~$>e4+^mQyjKh1Fjvj}c~6_q}FS5%u(Q{KL4yeyR?NeH+Lz zM|h(3-amAAdZ2IlMl+X`zKLujps~L#W@43!zoIf`&;RfZ|dtuNVAlUFdFqQkBJR|cW-JcnV|_v`{(V@ zaWdrn>r=Sfzv;q@QVjsqQ(7AHtx+Y*?bm^SfX!Q5bAiAJwb4yF;O5F!auX(A)dM9~ zDP&**r&Gv*u04zN3%w1~Ig;2aA>) z8aA-?7@8;4JzY7_c=qD$58wH?ZXSzh7543->eqE~G|F*Z*I6DQDzv?ghh1D6Hrr43 zVoqpD-ktZ7?$_(E+sA2Bqe)zj#zt&e>p7pLH+=hH*U0>PJ{^GRSZ}?D`ME&{!&!c+ z4$X)2!uX?gZvpu#fUX}IX>qhtT;4}d!oi+M$9j2EI3~^eiUjN(Q`Z*imh=|Q`$PkA zc*(W43!4?Myw_rJCOt)D#5$YJ196MAB}Nd)44MEZD2e{EQy@=p zAO8+F|BNRNr0~;{DX3&;cmJ?*BG=Knz6>rj}kRPtCW>)?+D8Q$!nd*#)Gh|qx&|V^0>`lbWX?y&^ zShZ*9Bb*p^{Ye(v(rjc%{je%^S3S}9bs{1~sbw6*ef9piQF`#jZ2}|+AUw&$g!C?S zk+W0arCVqwVI4`#i~zf@7p)a#5>i$Zh8!-`4_paDs{xvSNco67^T|E2rft5n704V$ zW5xb&b$K9-KI-eQC{}H|bHx48jNVjtTfKJurxbD5LoI=gRnXOGJ+V!t z44r55I2{bq^G_5jdtQ!lvpqpJ1~yI0gu>padU6W;1CL7EiJx$VRE8V!jt5;bv16}X zY#vs+n_&AyyFw~I$!Ly4D@^2wO=~xUEKg9b{8Pm6oo3iD{{j$R^mP29@15t30uARU zV2FH4!ie$XaSr*`mW)a5F@u1@^>3dQ4LFef=$H7G=-h`gNBgy3Vl0(_d;Hr#hny99 zmLG_Bx<&VHd(#`ixI2lyNJr7JUD$srKwxlb=d9W<^{=HIul`+x#tZ8C) z(UB$zh}9y5XF~V|y6j#R8{ltyLML|Rg>y~6Jo&yaNE)%QB;?Ou&HzRd7U=EfYcb}q z2bKC}CANrf`oUXCln|Mo705*t6~)$?XIm~S9B(oKN~lx-IjsY{d(^PktuIA0LNqNH z%qyERSJa_he&?-M9zpf_lMMDt<@E>hbLj`r0R%^xQp=2Ad@8>pffod6%wF(!j6n-Q z&xKI~`nf{+zfY0#XyfDh@V~kax&2$c%93?bogA;;7(K3?I!a( zqXDbipPHyF2*wcI#t5ecZmfiTOFd#St2y`Tjrekjkba1WB1cIE3#@seg#2Pj<|;JG~{un2rb-L+iMJBUjGp| zas6MeH-3)VNw`h!cdPX2&PK~>R_(3&TUPQ0cGEi6(?DkwLe$#NuIl*{ldZepQ9xRpQWoxnWM@_rBtSxN{`ts2qUY6?02GO8!N1m<_B8vx)TStVl`Zu!s zujmKwAJM5=9N+A)*OdJgu)8o`5Iv|dGxB)+glo|Esgjyuj?w_XIkl^|KbA9{#W-Mm zfqIJWnh%4OcEa%kJN-;#Y0p>+{~l}+fG--17cG)P$^>HTG~3?KAe0C%jM9GT*wnm8 z{6mNTv$nbzMdl;Zorlyd^QP@1ZcMbBBWx+YWejwa{keH^xTpY`3{y;uAnSUM`ps?Sm1&*bvjPakllS-=)--zHhlE?Ck=v%q_WLO%rbV-&D z3)rX;SI#rMB1YcN80qR-aQci)tD?qTV3v8z*-URqxTzfM$4}2;hfAS3P**#JHJ z4&>4IX!cTX?GXt_GARZ#k#7LzCauO8y9u+4P1lS+@_Vr7f-pa!`=+ z(LcLE(JLIQfosTDrVx{QD-la;>%7Q%=LK?Ye}HC|zvS?RfBi3jt|hZp_^KWVUNlvE>muIMWWy4w=F_VcM|$K|!$UC1}fEC2DFR~zm5lTC}BuHw_D zVs44logX1sc}=EkyF~NvuJ~U()CA>CNd!p|yBlW>*Z;3-7J%D5>HtR2@ zmI4Vbp$V#zdtwl@?K-rQUoo8|)qm0vrzvt2IF6aFm9=xs&R) z_b8@%eY_fmKtscAny#t?qPvd5B(wRYv;YM0w{GC#qAQf-62%VJ%s@EY1MmYXm0Kf& zckGsD%;o_ZROKziM{>|9CxyNa-2mlMyiyR+x8C8A33o&p|o`$ z*!})NzPMvqd6rNAz;9qw56YoKk{8j`;8eS6{~!2kozp7XwEVL2^Q#>2-JY*AJHR zV!)gxB&6Rf4g(U`=Va*vF@Kh7um-WE6gnwsFJz0GUcE$SK|b30(k)aD(DmUv3z#Br z-B@EGhbtUDRx48(u5^AeILb+m6hIB!9L+~?mP`!}G%@X|=qbGde0gb+Hnn;#IfNVP zPl>ld33$S&r=hQBsa4ClVT~)Jq`ON)NOlj-2*KLQRpbb$S53Sm#DYZww_7A+)_5>8 z4ieb$u)3z?y_n&>5;^*)4oe(-H&q|v5P-5S@cs>>I0i-Vg?#(X1OI>fBrjac?)?7x zY4K@C@dNnm+sn)_*8L0NlVzh$HF)uo5l-BpuUV~~q&1I?ZBLVJAK(yHLlk=|GB&_l z(b0El1m6TRuI!l7s(bEUzu8maW?4;$CUlP;5c zao_+X*y3K!W4t*7>e{1*_tY1!k9&^y>Cb0>xlJA2I4fBna!h5G5SnUm8@vZMO& z#Z9o7T)hsQNwbMq>JjU&c$@1-_%AQ_}-%=MZXUh@R7c_{Eva zzx_tP~?pU&q85v{bZ7qd96Aq^Eac->oWozpBVoEUR+)R>O|`{sPp3TV$h zcM*G^>CrQvw-l6sc0MQq{XivhR<%#83vIZM_OzInfn{HYAFO*fJ9+@+7`$>~xYvem z2W^~0kx13eM`I?C(Vt!BqtExc1kn0f_C)(WTn7Izunv_%sphqVT}6c}BD+S1=J*u$ zBSJJA$>$4sJc;-LA#qLDu>fdfDb2vi+bfrbn9R-;_KCEpEq@w|pt*-@IlQfY&Erx_ zDRmI@g%>IRZ{NlZ?d;~0j~uSne{Pw-d}EZVh_@UX;ovjznZ4mcliwR`n_tR?JOp~( zztk>U<|^OZ+bUlso0`B>jz0IsuuIb(8(G2bW(j}59QUo~7^d*UT=lDvHcmtM3g{@m z>Vh^`fsY&Qod**=^-@VM*`e1eV^coevWX=UiI4SJr{C5oy~*N#1MEeInB_m4*>9_7p|2hUnsh5 zz_?=dJq2yXH*RfSKJr_~q1UpqAvUzY*kZ8s_zB*Cj2#E*pv?gsWd8I@mZHZLjoEpV z89_AA=PX9MV=Vn>nZF0NA%uWO0#162oCQK4>ftJnXB*!+wpfsjOR-XxN=i!8>5t_& ze@DTooGbUV?W_pK+_#rpe83UehoH_tAJr-@Baac--Hr3#k@Fe?oCb8;WQvv+6S$KH zHp|TimpfYHvnyRrAi>ANAAa_(ceB8U`Q%82Thqj<3fYa<;lC@At!cvuM`;?4@*n0Lr`3zw6NuGDF z-mamEE`t1dbad3g>*D}*S)MH-dNgsu%NcVdCTyaA3&~aA#X$5PJHYuWchbkB>(}c- z${^-IG~yP)Jf!){#&ncIKKLm>bu>?bQn73&uH=^&e3WWVE@&|lct(Hx#8l4r{e&bW zBRf!fY5!yOlUOZE2DQOlYQF5H`B84WzZEpPdeZ%Uo#>KzNF86=%JBE#Vr)X;FB5O19?Vp^+HaX=5>^_5 z_yOETZn>JIqZ|V%_4Z7);=nuU@w>@OC*NqN*Nz5?%*UhQ@Xi^W&dT+W7W1{%f$5)Z zHvv&jM&NZ@?B|O z1BrCI=@bNs7SuR`L3R@S?1$vHhs=b@41(KZ%ckqSqq^kzUQC`CO_kP#lPP>`bw@1h zK9)REAfF%dnDEV3%FCi|H$Fp~@y6OwOweH-fq}he+3`tRj$~axKWsYBQ!NF(Rn)Z3 z4>tws=!=XvS5Mg%0NvPnE@|C2EVBuqk0n;Gtc+g{yl=3o@Qj`*L5efI63aQR?AHcm zEp8Z%^hNy957z;g4g_r*0FAKPl|M_LTRIa_$7dAwtUXGKO4jREg)|B?lr6NWY5sU5 z_QM0ZDp-DphO7VC~*%qR!n6fcur%qOxwLNMb zLFY!bH%>E_3lohG5|Ic;Lu+k?FO^fQRBj4R44K3px9vL?&7GkZHzz%ieRjvcrYSTQXl+R-pzCov)uq09c?JmW2O*Rw1vG-o0dJ0^bkT0!cNjrcd8g$O; zZALvDb!g#=;-|rsm=t`$r@7P>?PgWes1`RfgA{_>+f|_Qm7RIlsdv3D8eHVnM;1~T z605n-%uxOdmOjLlVDM3&-0q}JcOo^C!HcI*Ek45KS^j3e_?)}h(L_C?Vh21_za-b) z6q0Ed8vEsTO;4N^ zFF@N?qHOURD=6e8{kAF@w?@v9tGg>mw9wU@pWwEJLC?2KRC;!HQQ5B~YjR$G48Cw@ z_1LLy%^7Kvksb9dG=C<7BEgvkv1QvE-W#fOIiVDaOXs*?BF|w&qqhbIix%Y0@F7Eq z_<`{2G8b%m>pt$7+>Tlqx^-RoZjumWMfwE$^knELqi0 z;k7>YYje=90lAWcQ!G643>7SdvLPk&H@`ODp*V^=R)+E~82I z-H^N}|B8o>JKwIUZdMb8`TUrPAO^9o4Em8Zj~;i-a?zZ~lzKO%hzFcA>AjST>l6BV z{5*AH;zBOQ&{xc9^=Cs0U~eak!(~8lqj@J^xF~v5rR;$0LZq}-m_HQXP+lD`c&!+m0YljfCAYId7e|7`}PKfI?rzIeY*F85wIpQ`Wqo&4};ZT zci{1_ud=iO& zwT1tQ_nD1aNkKLi28TVluWU(=9Z|gXu35NoM;CS}wdjfQ+q6a|H4pu0L4S?=rNbFZ z`p=7wbE=roUCPkmh7c15F#Ji7#CB!c(mjJpbOs}SPpFV~-SL%~au-9TK3$WGADkb; zAwjAP+}!s5#)4$Jw6?kQO>f!%6PO9k~H-r7hmrMFTAwk{`7Dw&$4;;?~ z_(L}ucUO3N09*g#9u1tEr_Yi94@aW>j}XeU>u_tOQ`D%Szdz#)`|cEgbq+L}@@ljf zM+P?0*-hs31#-LEnlJU=j1AqmLiAEtR(EV1Inx+~i&f`ZMCb2C`Gs+n!> ztrI7Vr$_Er(duNpTo8OuIo%IR<%JKxK?>)KT7dL`SAEvxe7$BR>EeX5JIoeg6(#D8 zhyp`Nq_%^6{ZruCz0HQ_!%=g!|85&!^L|CsJ_fbCQZlf9=zH=dO8kMXq4c zPOG4Iyh-z{V0h6qL#pd>zbt8}f8T6ZX@4IuBtf(%mBM7aX>?$+52RF`7* zZ01c&Mk>T(6*G8V)+8-k2ZI(-DpK)q$krfr zHKw&+A3e*8@`=r)v)fK)@U&vvD$aBT-;gGivN%?~c;cXx&&~DuI6Pl#Jf7@4NpdF& zpD~1PoOfY)HtBC`biV#IbVUk}=R(X~3_yz$U8%C=0{C)L0C4hrsDkGJfJG&ym~8Ck za?NRREc(WrA||Ou)F8YQ&kLI6a-O7XZw0=Ibi?%itr<$77#!O>uH z;@k*<8-B7}U*$5tjry!L{p4xF56m-MSr_wvC=>v25&+EeJZz^8SZx8ch1z!cd#K7m z%7{x|I|}k>s&nEJYSPbdocuz0jTAR`F{|gdb?y`%pS&bX@?pK8v9x7%n;EC;cu#GT z&r?_0+Ks-ft2|Ih{tr{b7!n{z^a@5}z-S2fFrStusG4_vS}CP{4fZ}s?mo3keA?GF za`?XTwIXZdZ`K*6rRV4K){^F^$L_|RCHrk%&rZsh4h5-Loc|(+{e>ylZ2(NIS+mrp zfcx!w(fIHZSW+?=?j}+!QbLs3LO2+21ndV%rLv8DV1w+dVivQzRju>7eJdB97h0S( zDsrGBOH9|Us29w!js6?O<>Ld$?V4bIpUBE1PEt=OzfW0sDmzQqBYhwBg9k_^Md)mt zi@UGR?Z?d$&x1DG&D=2uY=x4LO0>1}E9QFkB#obxz)S548UFZk(ppY{vi`qtpnnAl zUwLEz3Aaw=*9|`)eN@RjVy?NOpK0zYO0zU-9U65lDN3&zVZP>I2SCAPO-^u&etLYS zIvKTZ$PWRu~lt8si$F`-*%y09Yd&r}; zjH7z2i7s<=7umsEvx^I%mTle~xaF*rhg&7H3u8qXP3ETSGQ3~zletWS*BzU(%uws9a#Mj=|$F?xqjdGPppFkF2J(yMX1;R&A8Id1)SuGswZCk#mXU=tQun~ zrQ6$CQ?s_+?{H5rXy=&lP3B_z=|jk!z3@t^HGy(i%Zbn3QY^rJkR5$ z%2lP=s=_VnG9MY`2&`;49if6Q<;pPJcdRpLUe+7BIprbawrvIP)EljJEjY<=yl1Ie zy2=aS|Ba>O%lrXYjKpK#-Yj5Y6Noladj=QgDqPJ9D>j422OaNQ4zwx^E9i$#<1^q} zd1;~-unH#MT;_P<-BSW_pC)=n68}ZO{7Yh)4q&Gllkw+Iwno2CiE!`{q=lUCp(xeQ zBvlB(tOw^^xsJ~=aXOC2qRx0a{esT!?qQRGoGVt$ix0*&pyBrJLJpgJuo@Ex8UIr` z{`Hf%8~~Os@1ev_`g<2pq1cK6FvS&tqB7LmW8LO%mABJmtV;w-p%qct5;-@jqpRGD ztk8AW4Z+I)nFTdP%U5@C=pD}X7uBEj%i*|63y7MOsnbJ@cEO%uzbEZEPT@k}dzf!L z>iW;7KV64E2#{ZypXS<$AG7Vme=o5d>C(Dye^KU3T(_H!_M`^c$Qj}K9Eq01sf_2v zu>Bk@o9Z&Nb(Aqj@0i<#;e4rDn=!+09^5~P6cc2rdYu^)7WlyL*2bwifYst$#_KK$ zkfyjo=N+MXnud@iZgaKr-1TwDm`~h(@k#|MRM4l^q^tthSTpP`%Pn4}sqZ5|!@>S# zen1=tm;X_$zjfF*=F8zhM}@?-2Rr%iuk}r%*lf6m?VcYGNu>t8ha*aTUT!LXIMmF| zNPDu??yBs-^B~|JfTI1^;om=Z;+6pnb#Y%eA4mU9vE`KOw7#Cy%EPpp&fEqtG#-On zK^q2;0{XlVO3gO#*6M)l7G}ybw)CJSQJd6#sgnZ!NDzRC#Ra}{6cd5QJt)G*sTER-YG%*+sLpwL#7o zQy5QSbN8z9CtD~@k9u9Ti#?LvbbmZ09~e#J$*(?L72GF(SMqdp?j&yK!ixW@P0e7|I>8<_JrO%QSTdUpk z^15#w7$yzo>AZBk?nvvjImi)VXgqYsba>pP*Jw0Y*FoTx;!6B7rKJF! z$AT@)U7QG2vO6<~^wc@MS_wmzGOWH}yYE~cuGaXbcPB{Nf;rVBQ9~Ls8r=+fL#H;kP z7{!5Dh)|l~>s>^XIjC^Oi&UD;$P2CN>vJIa_u>on*Xase9p$f)#C86un6{Dx=Z0Ow zN6Z3r14;qaDWRe{%SEVD;zcEkYLw>oW8d-_o65P(u)WQ#rLcX*3#sGU-(Po7X>^(l z=D@=lEiK08jIo|(hwm=9_bNZ!4Th4-!b4PDPkpTorQZ@Bae0c$2&8w1-FaHH}3v;^G5zMra^qm zlsN05VPBlL=532hg>x*_D8b>g&x|A^z(CEM}0$E{b5#y$1OqJGle(ze%S>s zr|a|DM#ocPLwkkU=?`J&*WFebk0QI##w!J5ZrcHwc znX(cc?vL0HdcFQtXV0hli23}FmsvyVl?LsXnSf)z*8QdehcD2<@Ej*GJL~sAO|-3d zlqK<8^&3M6XWrMYJI3QhIxX^?X6B1V!^QS9kzpH-Z6W=2zA6@H9R%y}19AezlJ}oG z+N_^{G*`6Wl(M^rudFZI4#|C9Ryaa_NOOF!r~EZqOn2WZcwlL6`mvmWb1r5Wn>4CK zitDucdL*vi;kH1CSKdVF_RVO9LG$UcC@Kn$E_882WnHUcmg$O2cbBo?8WR*0xYTf1klytw_yK z>es$9qQDlNfNB)kHe7~rQEL@z>8dC^-~5v^;o&8@2H`&z5BLd97?^Vho?Ue6$d2r< zNJ>bt$!v8A%<%Tzz8cT?j>M1j4ci~J>uF_~{*>+sbJ6h09>Po8rPj9ra~gwR;kzaG zOE5BET*mZ?SBps(xpgv|eR{ePW6`&ohZNUA+h`a4_bcOwBqqzHH|MnbcbNpG1?9+; z+wqUbp?cSn6${O(SL}~>-YS=+MRGDr4YPIlurFsi5)Am^6 zO{39Jb_DT2b$oif**s;E+dO)5BfBvzr}UNAwL`4{m+rthG~U|ODvhQ5UJzh-4aPc2 z@+zJ)#0AWbM6{gmn-UT09}AJx8n?&IP<3$yxNI*!k>Q?ZW@w9e9<&BbX1$g# zDV@2i?QWb| zv^!wvn=cp37i+wnC*CcQ+9$Wspzc!^3;XZSPL1bMK`eU#L+g{AXH(ye!!Z}Q?*=l8 ze0%oeXver7P23UI@m&XYi=QrNd0x`RnB2Ns%I^eLiWuw5JkKgN+Ub|po42dn>*k8{ zWDMkoU@NE;Dob$Sj=`>uW8raaw^}S4HkLyal$c)!Xg@-id9d8pIa7n(1cXpG?m`RB zpF4(b;1sc|8d}68&#=QbQ23!vktyd*2Pg{KZi-MXAp!xz(K0T0ROIURnQH47l!?9+ zY1^-4q%6mZ>+-sd)6-fnKBo*MbhNv+OwSbyy>=7cw>dABJkYq0-OIRqmFmRD+XU-LM4qb=PyE>$fN*G~IUY~QyxcSw;N!6u>Ho+ZCZ zs;%XI+G=V~8mYq4=4S4{{FO4U{c-T^{qa_U0~~C|{vP8cx+Wq*I9q*rHCi4RZgNL$;z5)6paOVp z3ui4CjLtEJQ24c=NNf)y4WntC52HyRYYzweLrcaCmCz;|W@%9SNMaUeR}zyR(eNMv zZ>wS8%E)QXs>2Vip0~7!c)&tFkO)8oe4xRfet*c!MaEld$mPW!j{N;=*`JV|i*qK1 zO&6-=Jr#HbYXy4@cM(t>-6K0?QRH5llwY+kQ2kw7yMg&}sZQT>@l`B1XO_Czonkd04p-|Cg|RAb+s{yLQmW*SC`E{JjNa_@H=mRc#%a{q&d{z`H7h zVV(h+wkZDB%V=SQDpNb=zKy|Mt`O?4L80!Y+K=mft^BSZ*U_%VPan*BH?)O8^V0{< zI&G`10S2IZ%HWo$^46M<#1B53c6BMBflOf0?jyr9917>_*QK&qPC;IFm@mne?)W}K znKI$+XF6pxy*j~_lFo({bSXd>woc+P(s5c9CsCcvW0~Fhq^vxo?tA*I`#up#h{kr; zhVWUPf(CI>(Q!FbNho?e@csG{4T37xIT#Jn>=&$pCq#xu#zl@nRvM4{rQ?_GstO-5Vjbie+IA;lfFVf@n*w^tLKTvRY?l zXn||o1W83sPRPkYoMXNwZi8O0Fld_)#VZ1JA-<*a3#wqRaCr{e54&>j>|t5g_`oP{ zCfH7XG;N|ue3grq`EPUhw{1)aY&N|Ezfy%vxBYE1vJ6lzY-Ap3mUu-3+#YW{DoJC= zCUTI&9YgT2G%8!I1;906doy@9=ZqD1>v!(dTQnmIH-`|ItsHax(pv}mCuRe){Rj4Z z31x?06qoXlj&;9x(+cUZhaPK5!ZzIx`%))7e9TxLx9+yEUTE`#1J30N;PfNrd4ecqJ%~@T}apjX*?QY-%56a?)QDEKR+;?8; zLK=FU-xyk+Pq@vT4_lm`P1=-GFfijh4oH}EEFd5dlfGqum))+qy`3nO!6ZXK@ttwo zQ^v!NaLOLI(@;cw8zqZD2`%p>vgGkZQHGk-=y-n!Zj*n%DUTKHxsW_x{Q}pD(Wa-N z`q*Jy5pJbqZFCWT9;I1Uig&H=-1xx3qF(<&m8*&d@n9u;SD=@+JzcF^=A$8d$yxbL zYOq((Yxxtt%UP8~rFr6P5k0iy*1>0FaI}kcNwK7L!dm0E;lhcrX%m@^FxLXloE{bH zjc?MC!7>5k?yT(GqB(62tUv*6_6=BlC#POzK};p#qcyY3q0UH?gY(ruF7^Up>rOOS z=Fhb%5^Q3Zb9-f~k17Sz4H@|C4a$Z0eJL}F3pwR2)7Syyz#%XF(@_8G8HtcPFLolI zLhZk4gYAj@?JsF#I=9TBaLakzSvUwqEfIFiZ^?xEP(QX5J3$5M?L9l4Z(RL7TeN?$ zv;s}iLB098e&VpLoL*Rs7Dy^aQ%{rqI*f73tBMdkr4QCia8E0(2GUI?tx8-q)ETBW zrCR|`>EC5Q$F?+>tmN=kYaG682$ryt&4+@3AS;GOq|ik^xH8YlA7?|nR}7^Lrc5$e z*VK?G$x+t7+^-y)7O<`J>r+nyYD?`F1qMFo9=jb9cTZrEIl zAcEjxRqAOtz%&iwKA=I7%!B1(y{UpOvnm#~Ay6}YP zHa!Ogu2ZYN!gNxp(yxmg_LkZF*et2+)HO7m#H8$?X?I-|hquM@uJk$85XG0%l=v*8 zNL<}Oiv53Kjn5Ph0UiB`Yvz|y;Yh(uK!#iT&9vt4%f8)EQKuSgxXt2!Z)POPC+xHB zwc0Dn39P1ci&>2jL;2w5Cj%X{Wr5v3_}Gid%9u))Sv@0JN)v~sujTM@o=L+{_)#P6 zB!oY70l2Hdb~=&D=|c;P+zJ(1#uAnApXqQ$35%k%M{zQ<$i zgNl&s3%m)3(?UBushr>zs)B^wlC?e4`$OL8m4+v zYTwk{uz%X9@s_xfSeAqRp<=op=UQc!+H{mi?%%TI=5RNlVL z6|1v&BrYss4WU+ZEe#8TodV9ja7*0}t;68z;$=;e9P+Q^M@Gy?5+@x24HmFTn|nlj z)fXdAnx;yBsS2tDUmjzw(Fwz>Timz{CHaB8(LUY6Xkq0Nh13v9i^)z4i!s9nz$ZSjWmBDOc8j zhMZMxd`DUFv|sY4OG+LH0A-O2u&}f&lP{{&)7WAU?$dX7e;FN>%&AmU+wwo6__ufJ z+(E!wdaxy%LIWs~w%czBPV?%k z>#Czeh8Krc&vJ2`rWxQEyp8i(v_k0Y`QFRa>#D1&aV)@BMF!}MYFk!%9L?Sh5L_rE5`vx`@D;91ff&*n6 zb7jd!Emyk>zVc0f{`X@4(Uw;A-`ZN2&RQ1#djl_Dp)!B6PD+Jjcqj}QA0kydUV4ft zp%W<7E^&ZRy6k~?YK{w^7wW$BfHhP6Vz}{X^(EfXDJ&-gb+WTl z2LO3}fI!UViXG2a*#|4Uyu8XZ8t!jzH7j-bTb#~@<0uJ9$(63F+&2U(32*p={u$bqoO$rQ!vR{9z-GB1(zdl^H0vy&$Ysiep z-xoWf8dpX%&lbG{@lFFDmoKl^gSz}_pz zIhbb&q5eEuZL%LpppBG}NT9*ya5!w(@LH)gRcICH857loKy557l zzF)DX)oiS^-e~XY>WYeaI9>7|pPZEa1p>edJpc&S0#$Ui-wy{7qO%Ym4yQosdIln} zTRdOtLqjE?424V)|7#I^puv1szl)4V^ck4H*CC4l6x@Jd_k@y^yGzjow)Z~CLpC#M zfQ^Nf`O$6X>rSi71npI!)dJqNu(pP+g2`lpfQeb6SPg9w+}bMF;pLh5nhoLDGHL1W z=ZBDMG?siQMCOp6pHD(Uq7VJ$vmkcAP{;c-<+-q@t+X^8z;TvRnY5Epmdj>!X9))3 zBok`^oXvlW+czPNkKW4praC9*?#~(qWj-aJj-{}+wYF|HV$p{Ir4TlrUfTc|-_FNCHE< z1p{GxgTq>+Q`vwDAYmvq>ZytY;c>ViMFC8%I`Rg9SZe2c>TG#F$%!a%gEn3-_j4aCKv z4OT%Q;9xMAAm8Zj`@|IQ2;jv1ozIq;0j$;FrYMKEx3{W1%pba`0#bn`v{XJ@guVni ziM*ZbK(;JatHIkkKf1+ENrLpZJdURRa@2oh#}|#vX7lP0J&^13Tb{ngq!J3wvIVsHtCt1Rgh?;*Z&GmB zetyMjR1IT0_*evdm#9-j1~w=*B(W5g!C^Tp{)!Y9UVPk zZ(0rQ_~g)hsW4%$ogDgGkg{w*#rM>y@LGQgvCCdiyv=PK$clZ=sr>>31N`M|++->u zb()LpSk^|_krlL_olCrZmX0+lvYldfHr#J!varSfB{ zNmGVQ40uW2&8n-rCkWyEwSzRE(SKngDWm3#ic%7d@8}@qBh6p68tpc5H}ci-!~TlQ zU=JtyA9d#<2a55`_=Oh!CqcP{0hJU9@<|>?!CXgn6((3PqXy;(vxhgeX4tiw4J@%@ zR$p=j+d~e{(Azd{o}2F*8}D124{2LwZ~3BrTCWE>V=ts!;K*-@2-7;}~z$tZ47BHVijNymdF z`LAc)41t`Cx03l03Xc4b+Pe?|#qyWz`}fK>iBT~h&k;lm5yhdabqwX%DFlQ%cQ2hG znPY}X>JcLyRV!F>0b`HMh48k2BZ$@uk zT%~G6jU<84RX9_PqsLY35bl;HG-*aJ|6^?z0a`qF3a{JC1~Rw@bWAOL!JXUHKGUjU zC1^u^Wf@`?I)uwzy+G-s!EI|!kTXnRtXha7cDRgQxj+t6uF|49hSIXv&edjSftg(` zBzmFl7;CUsAF8_9*}z~Ii}!tJETxJf4!rnK!+I<-QfAI1@i?49*8sr9nLL42r!Mh{ zA0lEvf9Z``_})$K1xT^2x;Q55>*KdY>M#mKg2%=4qGF^gX0j@mi4sQWTo%gNRVqaE zn(Ys)Jl^h>Q?Z!0PaNFBRLFMqs~{EdGP^p>s-{5l&{U>6+Y;4j5(qRjff+}^&Qu8y zzkl*7Ev+Qakfey)-8B&+pz4CGL*-`kJgdV%CcU?s(kIw8%FSXu)_AF_jay0!F#*b3z(|Gwm+1eGWmp7ftDojtaQ@e zYW;#bx`V`ie&_Gu1 z2?v)0e0J7|NLz!sCv!Y7-CQIr1b8{z5xTf!VRv=?-F`n!Le}n09nQXJS~DRIsmeB@ zdu|{{`o-K^+Fuua(o0ih77X*D+K$sW$gZwNzlU(%n>f=<4YyDAgEpTGMm}Ee3;*3sD*=C1j@P2VQZ(yF<*KhSbEvZXNJE-;LC6^x^ ziXI_3JW2vK5b<-vsRjq@aW|BGw+Wx=*sy$=hO^Dtvj4{`qy1u~lR`e#)9a0%SzWz) z-KT(Vx5LQ_45q@@jt|GE5n@V}^QD>ts&ljD+ULtH%d8%&We0hslxoa3obA2$<4 zW$JU<06KZ6Z&|aGCCuAHtc+J^q>R7#OBaME21_XnxodwIO7LpAR-1LZnnsRD)8wQ& z?|b7@MF)@HCMF^x@|WGWy9IL^t>(2djaaWYbw0Rs=93AD1cHtaFAF<6kur5a?v(a^ zw{YeUUWY-K85bLSc7Im$aK_o-aO70>ZKXj!qocec=BFXSedEy|m-in(`sFhagDctB z(l5XM4u{%Gz$9WNR&(mPff<7l9eWFAXt%OKogCuMys_E`XsV)H`|uzT8WWj-mtYV< zYgB-*g@dO7MqhNxoZ~YbGdtf?2~t-|CD}D%JGSfroEmhg{r4UfQ$*w4dn;E$`;UOr z66x@^_Whb)5)hQP&yaVW;;g)AqM9G(>Zjf(Lh`Q9V>Qw!7>iHJfy>8hg$W!-@ zHIyBnbn|n9ob&e2Fz?Z;_F9TW-(S)5`hq(xU?uyV7qI*#JszfyUg-nuixf*0hvgRC z52S&2XOHJb9M6__dqd0*CN`)P`VC(nt>omcL?bklxtcOsT9C2ujV5rs&X(7j>=ytY zR<6IrZf~}+akkBUA{=`K3>n!R2@gtoIf8{(PqO5;%9+#+3B^!#wYu~sU z6k@-sJor08qtdcKBH?K-N}G%d^QU2X8b8R_j?A9e8E@F}-;ZJUKpYT>9L=efhFj%y zwMhqQe7r{?qQ~2E!W7eBTH78nFR|OQuA0}?IbFq*oyv-hq+*roqGKf^I?APapc)~X zE<_4CI2Ehv#CZgPA%-#%(ynq>P7~(l*xP)!6hWf!n|PyBOo@xJJ&`Ow^Y8nzpI-?_ zStazf{<~#BU>VmiSWj?wgPEB8EUcxIa@+!kNGexi+%KQ2OD8lY=Ohx*mxlyoeDv=k z_6YXh4=3x>IGFudn$70C(3tV;7iszC0)#<^O+7u=M8lJVy0n^^0w??v5+oEAyCZq6 zhR2mZ9ya#AQk&_uhKD;g*%@xmO}2Z!B_xtDCNNX|5 z`~)v{t3n`am6Hq6@vM7(yrQ%}i15q(EC^nkK(!QDNoNC?#Q=v~5l|55Jq383GoZfv znUHYO<$u8GU_xi6Sn%uD=O0_r+yyWB5P|5&;qu;h9lkZ=rCnq&q_ zQka`bUEx+7`B~Brvcq69=zhHQFU^vpb_uRK$*LWf-jXEaaoC8kTHReD8_tVvU|@HN zNbO$nv;By|U1<5@Va=~E2DOy;??l@d)|*tm-Rsqs1DPI=`yCsh#CFkfswqii(Ue(` zp?ULuIAiiXOo{L9hYuNeATagyH5VU!)n~lpjkfyUO&n6WcCM#)p`oJA_hs@eJMKEC z8qar4mgWX_edhrivll$IOHs~Fw66l!KBu2iP)Oh(ze$bxA=5aQ1&2!b?m|0*NrvJS z7NYgjW?`xNQ1p`z8`&P-i9GV=78uj2RdaK5Q*v{YQk|02E@9kv@Zk;TWoBkY!?#z$TPiGLSwE4x4IU(%n%TcmJoVL<>*6O!8)1qLWKp>R= zYtM*t`>uIYQQetmf&mifO9mve%-elKO_H)djg!tByiQ@AypjsfrDL8kh+-t`o^aN; ze)1q63_}5qt_I(4p&~ica|31Sh4!-kxi{{WAeg0&TNAoxyQa9ZT8mL*KQC7LX`oWN z^E5eR^R0}{Md9nQQ)?nK!8B-sh6c#!>mQ1G^XZaG)4284KI1}JI#IB=`uh}rlkq9| zp?DPK;)KbPfGi|k(`xQ_1_F3h$%{8djXjM*!wkq3^?|-Pvy&>agdy1lZ0XGGvIr3R zY=@f`YKBiqP`#)Y+tKOXfP;Jp(f)Hl03pYZcKY!Ov%xofyNS%jZ1u04S+;tpZL$(i z%)vF2GFwldf^;}JiAT}1b7Fykxj3Dzb`MR0o;L)8Xz);iTj}YC!ZB3>hXe;AU^h`) zzYmzgh;%X-rfy-_9?v>9^0~M*^ZEA4HC6Kp=_N@5=G261wMaL$aNZvwbLa~}uyOVF z=j#G80sgEk<`mWn?Fwx=0#3F?#nQtdro>koEH0&1{h)@ql85J~CJ1mhe*M7Dm6Z*c zx;ul|Ft%uOU4y(#wcxipx7*7{KNz#xvldsvOU{}Ek8uCbi)PLuxs>rkevsEuX7+}B zLUdt=5;Gc2ys|3~Qx^Vn0JsP_nldm7fy0IOz~6IMxbn?t2QrT3{!m@Y%tCtG@*vaA zsXdP2LVKtc+i0@*Hkm46c&ss~B5uluL*CK|;Qrb$?|UQ6Djf?McFir_vRAv->g-}m zTU26b&l~QFH|HvYru$f*uK8WqD&-ej1vApX(HCePAdh{kGBnH{Z7tAIC%vdFaHk2S ziBn%u8EEdKYi^2ueYK_7QARtjbE3%k7CIKuo^Nv(u=zO>(t_LgLS?K*8?|VfWp7w- zRQlU$jZ4IkZl(R5 zSj11UCVNJ1o^{5;>ofa-^P()tb>?oQt=l6Tv69xGU;QdNypu3lvnzBuLJ4#p>G%#T z=Zcl<%=Y4G)&j?7HYeO~j9}b2oUPCh5#8_1zOWek2MIo$OKqOn><$WpVsSM(0$lHA zc4)Oua2dBd3oczI@$Hh~Nd5N$W*8fLdmlp3R0109u&_v(fbG?0M@v;EkC(INQOUWj zo&+wg)a6N(dhF`ED_cNE3Qov!5h5oM^`+jF$!&0~Od}{a z*MM&;0Mz4L6BH{5;E)B}$jQ~v(b;KeoT$}j`y=cdiQ>d2hyy)Wb%*N*u`$~EW4^85 zQsTjj3h zAOJ|eN|Y!tMuU$bgS1ljZ8uTi^Iq~=`URby0tfc7N0Yqiq$#mH`m9C{e#0(5xPPaa^B%J!)!P9Nm6rz`xh zkrD;9n{J0sbd-+XPN;OMoxg6lNGQ0!6`cTLV0vg5LPDLoG>QTpA;fB^=T>Q%;UOv) zmP;fKw_g=VO$=WQT^gT9Eg~}dwg^@7M1%@HuuaIU8TGAUn5YfDG1FphH*I@N%cI$P%(iS~q>0N(#kLY{f}``qMK zlAHjbFnLj(ZPv>1-Mi$5fBt|t^i%uD#nDj!^@O;x`lV_V<+mGZQ}}>u{QoNDeIUQ! z0@@Ctk<`L}SNXmw5uXfnFfmh9td?qZ|J?8Q(*OB(GQHpVfgb#i=|A`S1T5k|Rgh0# zSu`{c+m5)%3ft0&UNx0iiLycnHS~pLzWzQEE8hB(lj+EU!efzKg{V>dcZ2!ifmGC& z)}uO%n@E0@N_YkX2X|H(i$o*#k(q`)mi}w0aGpA!hb}w|dyddwlU_EG?Kt>t42$*S zs}neJm0$hSEt4ODdkkV$7Aa1#w_vV=qrWE5A0hLS`{P*SgrXISCaiEY5&SYd5L~ff z<)wC70m&L@1yd%Ce9|6E`w~iFMr(2Z?lB4m{SA^F^_9ni488e}c>h_gIGwLw{V`3~ zk-XU-0cb-3yTw^`R>UBW5DztEYCkDeY+QR^2*z{VTx1+LTSg6|1n_lM7H6dyK=%zv zQ9`4~Um$^2-(QTbHaL_^r+p`Os~v?#uaYi!w`HXn2+-Nx!CzrMxei>kBxt2Q(JR>@h2q! z91qT_mc`zk9xK~vjGU-?+3YNwIAMb>bA*eR*9ymYOQVz2(7@EmRh)eERhZ|8i-)#^ zn#gjjz4~k8zEstPzx8paL{#XI#Gx8p!5FgNj(uZj%J!+#ATeHINwP@OI(a~Ae@Rda zfMDJD5io19qL4G(?Z|Pj!%^O%`Bb>=5c`cP?*8!-Q)R=BBiv{$ zY^r$FL9BEC5sX=KQ zthdombaf;2WA0J0JRsw{dBUzY?mBPG`2RUSvCSIXuUF%yJEA-;cS?s#F4CUV+TO(H z^zWx{ifn+vyABmfiv`sMKgC%QeG@V|+n#?Vc$d`*{88vWnN51fa#3P}Y6kRP)DM(A z5q@*P0X?%bZAJ*!i_QXkhte|VmAp7)J{i>>b4=pw_N>9qu3xdne9pp^hYK;G^q5k{ zB7lWH6E(OW;O#4ir#$WAQ>U=KXtyaX@j@x3RwB17~ZTh=(FpYM)C(%m00~@W!hgoHDx7(HnQFuxUjj0X2xNCYn2npq^(K@Rh5+b`^GB%C@cv~t`5zI6`lS2VRJC+~2 z%m@+vx(O49>vL8r`ZKNmzBK;qXAsWwHg7IUp*}SC1qP|-$mwD`1QzEcV4!-NtRVic z>u6MdLqDP&IbcgyOUtCow%I|994!Ui#oTg>TPB08a?8*6xf8f&w>-H5 zVY!1>-!a+orNW6u@V3BE$!uO8G>?btrG>yS@3U~I!JX@OYIEZ-+j|;Lvm>YAVkeq& zMu9g9X7iQzvk5%U2=!WK_UHNPt2V9?m2*aW`dTg24ZDN-vZc2XRAkn4xx9kqre?u+ zi6-}wiBVxIFJDU$DNF9_o{V*qI3!Q^-R!dUE@o*f_4bnlHG-m2?S?GNeh*O3^Zp^h z6JAUen%tw#3NOK`MV%~D@5T>xoS&6G4~a_)l^u%0YWkLJ`VpVsCAa{0m<29CCe0G+yKRln)=^B~`>AvsoPS0uHf5HVV0<}x#-*(c=0sRp|; zZALGVfKpAp8rSjM6H(`c&!*F!!_Jp0gOU*%%#JQb@?4-oP(Sr}-@C>-Uh8r5IU8Ny zd8$6rLJK%sIct`puFQGRpN7s;Lgcm#&6$J{uTJmdh8HZ?A8v#ZL~0abyfT zn=HUai&Z;VB>d1=SPpwHJnFQCbaxorw!GoFF4uIwT;(lIME5^B(6c<{ZVh^?)TWA; zT5@A&d7aLuCEY}V&X!BJxHw0*-&;*K&Dl_MR4tHSYI3tkdbrBtPJx)vI#Q{Nkg*9D zZ&?8#IwKb^L$UiOO4qVzA3v^*Gyvvt0F*}JfsYi@6M6Br^TuEH&e}B8S(SV$8IU$( zz2jcYAm8R^PK7f^&dBa{;5UKyvOUK5xYF^?x!uV`;U?A_P#^WU~BYYk<0z0P3_O33ktU zBiIKu33N;fR2&nKm`JQ3=Xm^W#F+-jF0&6C8C32$Lx;y2I7(5Kh*5(EZe?&ASE6?W zvoelO`_r~-7O9$YA1hmHYQ_!aJgwKFVs;2Sm#`11w_grp*78R`7tYDXCC%TL!GCDf z5KyuMZC`kse_b$H0g>Nt&4RV%R2&ILhKLV4XR_TCo<^ zgPEug77=W&n`OLk`dbL^#dW7hxVGr(TbECmvNX`x=*bt6{sJ12$?{ctl)-^MQE0Aj ztM_#ku$~RJ9aEg%$xuzJ1>$!)8^<8TsK=Fq;)=luWl0yaW%S-{%x*4%eGdGZVlLL7&4(+uZWb1fm^PoMw6c2EIU2W( zsVe&}8zRcI6mRZu0Eov6w*{5OW%Ie>UX2C%mri!deRvBvFy(^bz{!y0d5r@29la1D zd9p0PL;Ce5!=bI%b{_B;2WWi7cXZ^NUINDT-;gn z?52sdiSltNaj>21+@ICuv|N^YmdvX$-;MnYS64Ed$FcqteBp~Pb=A+-WXt~RmL-Q2 z=jou@NW70o>uE?Lc|fU94#ermjP239!h=jBytW-`j1leEdI~_;}n(J z_PyU^f^DyFh1+b>B0xwix!e!7i~4dndlXdS;v)J=YNoS{w!hZWKThJ_EG3)=#Ae;h z+k6L7)c;AWKj<1oBG(0dhO|SE7GHt(i5a~|EueJzYuAka1<`8r@Rm zXEriUWdsy-INlfQT#@QO9{hygW>}C{DMvzSvQ)SHz#mO}tY@9N2+>w8l5&m?RV9Zi zy~-@#a;R?>@7Yy7LtM!kMhK1#?((SrQ8!KB~U(Unnl2Th= zpFNrpnkkA4@TK(W3I)=H_zwftQtCZ8!GKVllnu>i**X|8Fsd|`@CFy=#ZyvY=%Npq zDPVj&JdQIqE_(YzHloX{hC`HbHqCl#Yxq!A|E&e=nUa#kP_O zm-2~#VeW7m@Vc<(aNc=rzsu+dm&B{yq0tQr9#yjFZ1-O^Xc zs_O)6eppG0*~*ZpMDH+{Y9ZzH)o;@&c+DlEVf+;$Cg~d#9M1ZoDDm}K<@YPricM?q z$qFg(oFuIDI^zHe979H)oX$?@5Z@$I9_ddG&OFf;u+b#f_;*rW?GfgX{rYbNgG>8}ns?qL<+A5k>^ zSEQhs_BIdw$QHB4L}s-gNh9$-7SXgU(gwPgr!K&kg?u31_m!hT%YO>6;LaXMvOOfg z`vyPAy%#qJPA8^T8%AizJ0gd|0}+9wGZ%RWjf~A>W0iy-bEbAVmZk{*K5F+(i1R5G z(0aeArn#(|Cl+%f2m#d*OHikj-3_id8`+)iUD=W?LICQkDa8-AS~?<+OKu4I8aCFO zXk9i4tzCl#0`vu#fXV@XqC9cZTKeGlGk8$88It(Mfh92hx~GW__TI}ijqVwx!w1uK${gmO_W*S z#s^o`WC24O<3`W|fh4V{4*9mDNQCwEfW&Z&phtHT%D|e0Qx`9Gk3hbS7uaEIwz?ii zmDOMt$7N9v;QdlIsCGU|Wlt;ioXHvAXGb<%ER`hc*0$OA0UJ|O#oYv;`8}6cQB!8K zm{8ON+um}k2Kv=5=FcYwD%`j)$0X&;GM>BuM_|Verw~W;nRAL3*Ufd|Wz*yM7+|^j zP!94gqMPJ+=!XT%r;__ml(Xic#I7BvTQN|~{oA#VE&4?++8ZMF&5EK+M}Q`uTqbvk z)MWJ)H$}&M|9T(DBOTa&09snfpubG{61}^@7R z-r{mKDRCov4v>j_)9lg+>IK%Ua}6&wq#d0*{MHyD()R}L))tI=^blT(%u+NAvfS6| zIt+X!gR9YARb4&X@Fw`UHfCW0E{-o*HE1Ge`b1)T)wmEr`f{qvd2QZ1X{$!JzYZmg zP!llOnoX0|W~YnkAQ?~w@TFl(t5+#m(hs~)l&t2NUbFwl)i;J$wl!PFwr$&XM;+U?)k()j z$LQF$ZQHipv8`{P_q^xad%yqt+0R;Y)tqzGs8OT1V?^}@c;AQNIpqmyl)G-*|9vEC6#gAhSHK2!aKc;#HjCu^aS>aZ1eL2=61q zeEQtH>15o}{vkqVyl44Sio^!Y!?%s7W%P^+AvmJ%#zh)=Qp?g+UOZ^2bkrl|&%`zm z64Ea8c;PoJQX$o#PN79L-Bd5Sx&ZH>a(iwx_F~F`q9M^;jNncb@Zy@RKfGtfgs;tD zsLzW-dbpYKsUcuB8rHm?Dk&t8eDZ%1e|^4}4pR#1a5sR?T_;@$^nn`5kC}kr4G4Ds z@D9xCr?ln!ad&TM6UI?(|ELmjwOV zK9hUx68|t%|C3(3KDRGAEElOF?)%lWPw&qkygnJgPsdC7MSTS;^f`TgjK1qP^Aj}} zxB!L*dV=%Xr24CQy;#Z?ONz-5=icUGe(w@b<54$xw0`F|TsuUHzs{FEVg>s3ISq$Z zr{R(tF)(C@VNeLYeNG8pVjq7oeUCs;3jf~0?sr_dd>$;9RY7>`O_y6vH}&caK9iMq z_{{C>db2f2m7@I^RQt~c=)%>nN=>kN2vJtTSi6|2*Ox}lEtf}Vs1n7mbiIciewOF- z?(3?MN>)8vyv)_~aOf$LTw)PTw$p%ixh!1ATOzb;@A0GPchm8e?VtPnS9_?}!*79* zzMZ$*_Qg3Nua(u>9CF39Hvu-G1?~5*yw(M68jVm zi+y|RUvPL9%Oz>hQcE07&@7#s8l`Q~vbw)GXpdtF23d@_mJFT;ArpfO3>xmnL5x?k zu%dz*q&^U_L4|Av4mHIZQc*92AEP0T5*AWf%C2=GjdE3x&)|g&1QW_uj!fs?`G+S_nuC;WU!1R0NtHO|>%=NDM{r8ArfQR70B* zvxSX`7yO|A9Tm?3T`UJGv@wTpT-g6~=1Tn=`evsCha5BGqfj6oce5w`Lf#(a5Y!A_ z?n)mt<}JC3q*<$H`hfX0cZAx`I!u0(^0qQU` z9P-mp!(6{&=qQxdUJXCYP9r@&a8Fl8O2q1C?PWjY86y61+l##_U4{Kw(D>0H3D8+W zDlBo@__t~ytNjPdk42;l_J^c+RLHO;lMt|_=(UPb^oH!sDmr3{m z(cf-}IYAh_z(%P*83?MnfT81-YY_<;gn1xQLq8qB{arw>_Y8N@Oh+`(s+$|Vc-$CP z>Jhki@FO^hw?uM+o|q=c4K)1W6hGmNAwQe^TfvqPzEJt3z=Z8;%7jvDBANx2`cP&- zp}h9Fj^G1WEL-$KMTx??MTt1yt0xv0T|VDm0CT7`o9*yNyOO2@{sU?Jm4t~{SZ>{q zG;amlF=(Trju+DVt`&!2C=k1E-%{mtem@Qa{Zec`n3fp07(B9nJTf4 zamm1zK2@+=H+{+fW$9b--x%o{1&Qi~FcUOf`!P7B-1N38aRDc-is-S|EFmmcrzWst z1Si04IGgJ&jsFbon`6J*Qdqe=e2D=cRFx5&9CHdhvW@#4$-yW2^A;LLRS{MUQXhE- z(<~BX-VQpjrZyB+!N3G?5W+JzQ@-I=7}`n{9eOVDhHv#GY0b*f4xM=rYd7eRi%ZNYg(`n_yvxs`1AwIZs!{bJpLNJ6n; zb0QRF0Lv9y6Y! z{hQxNfB}?w1g3}Y^Gx(B;u5xxUvey~<|K0(e9UF@nIj20U5+MZfIrF;#V-?B|Dhj6 zpi?esC4$e%jP&z33C*~#^bi;5zE^2L&(bstR`({-#i?Eb5pQ_|GiOEBa^1@M&%ZIi zlD0;U*wh@0WM(M%;8yYW^N#M(lC3~%z42AQ6mjff__ z`w7~dlAZ8!>J5JfoxSrZ!FW%6)LE0%zp8o{UzehV74I1#ru_#Qh2?mp>K2!NZ!3a2 zvR)@3cDnOv(cAI%_W|={%#q%XC;ex|CH)xQ@CK68i07|*Qz<%$bkbB@I_8LO?V1dF zyB_KouWdKyqo}Zm2+#c}P8%D8uDE4WxnP`s69S=8A|X3O@_lXv4Dw`v2G}I)TQo3m z^i|jV4mE{`Yu^;)mB{3<1mQ(Q%y=48?rxxZ>92o5m|H4T&pgmnea9vGP@TqFrgZU@ z4j;H`v~?Hbypbh6V+K%tQw{wJ^g-~kI5g6~1voR1g7-8)1G?K3OPv`P<8uf9c@iomkQ(#B zB~^K}-@I)Cv-DyDSQu3+7;tuVV(6bog|rjadnp3Qy`kNBP!dul||dYI}?RbiR(c>f1APU~)b$0{Ks5&dCDd%9qx& zvTJGiu@@ zx4eoEY{XXIo&V0+`QdiU6;^a-HKh^g zKe)`)TF^`j6l7rnWQd}opnAd}h4PPs-%gk4pUT2*8wMHa(wr!0QdO>pM@Y*`FN+#FXE3WPjxt$FMuKQe=gr2l&A zoyfnj|8lh0xa~|bz65VbK?e0}-kum-)N&m>r5iR*c)9Ni8C7ZjwoUOd3Cht!k@F4658bW=uTr zByiM|&RAT$=;^%iak)^pO#P|my!aoY*I((I&~v$&j@$d*Y^KwkG7*NzN5#77bz?s- z%kMp$dpsXN-cSvrYMY^h&)>1Ai47=z2>a7Fag}eirB}vV%ZcN7lr^6aEYuY0^pvHeE93dvpCiJclqQDf>f)2Vt#0B? z5%%bAmxo{evYC7z11Qi#$>sAa?Mkv}M87UHez~7HpT;!RyRN2K9|PdJQj=Q07XEA7 z3nT|2p8z$@-cZ;_(^OSrdUJDAZA>dp2=F0pP+vIbdpCcT&!KnOLU^lFl~FtgfGkv0 zKG$x242$Y!4qn@1Y-6z&Tg1prem=d3+rHjXcIrgw<v+a;SZ=^t72(MdQ8@R?AJY2#%#O{(0bs3-D{L>Uoe4coueOyh z#lr_s77kvQOODkmv-HY`@>H-b4N8`+bU#4$NvlLN_!OGd^34Lb^aOJ42f{!P&$=N_ z)GV(w$Q$ByEKyzeSs+&0-PNpKd3GdCZ^t2bgn%?VWh-J$@V9|m>gZAJ-?P&bE0P*~&k#XERAq~RU}Dq+k@zbksHvwY$+&$Nr3 zoV@h)VcTJ6=fdmbUuH9B0m&c)&a_SDv*@Wf!m4WvHQYS;yS@m0u-c0I9G$1St7H|w zVAhp(;nbP2;7uh?-g1dn%zMq>F8g&kx)dga{SDn>&s(c7aYWQr&bEyaTBJR>PPI9dC)!S!`r6) zBGRPY`0bI0+ zn)z-RuQmV;6+j|dBRMzKD3gq6wsgT#B3#YcE}vOECi5$A?dgsjP=<6@D+w9M0m(1G zbeW5Fb?F$w7M3kK`nKixNF5D?t`F>RTP04z&vR;B%yBUwURdG9R3%&g5^B(hR2j}urm|q}Ex6AGa8hA4SJ30zS zpV9XmKL|;HB%pmg;ffgb7eY3`#}?tXblFyN5TH7b$-tR&2RbmTgrFcekBGDBP=nvZ z{ld&d$2ZW&nCG8m5CSZMM466pRZ2Qj&z6s&|7w(csw(zSV?5o8`ZL=HRhYv%Gh+N1)j2qJ|9u z(t|3zm9a|b940lZwaeSy%21>q4}5qK3VY%0KG|G5e@^ww8czelVNyk)FHqulXU^CF zvJLqb7w^G=Pwnonfo^e7w@;GtnoQiJm@8YRKOo=Ia-g1u!n}DZPp`)a^BFP{)>i?t=L}AGP5G)m~TC36VP961$F6~0Qkt00#TN~V%RJcAz*Kr%R z@szE8dK{Xk;k4PaG2YAB@wKrhFioQu0xJp7(#s^c9?SS~c5Sa4`?1+9QKfl1M4PrEhg!M=)IZ!e2aR zx5hWpsIEM^aLVIHb~$0NDR4#&FeMM=)F$)pFefK{^(tlk3;240`-kR3KtK0-z6asDxyL1PgoIBJZFTa3%fL^uw3%ty+ymC;$K3BhmR3m;!?gSnsiFqcHPU&bK?N1VKtB(S!p?Y^DutC* z34MObxUp7PrUKQ-UM}G(lc$=TJx`WAQ5t`AP#dJW`FQ>@aAN~4uLcd8Kn|MvCgF!t zxkS<=NliyO7$;4`3Rq{QkzRoA$1tAL8kaXHqSHsOd`djGDk>iKR4J7&9H5?_h&mZi zqFt!oqqG_JK%2`WOsr?>==5+-4uUSVL6e3SsnXC`1ZC62`gvd$Ei(g(j6H;`(=9Il zK3N`}6>H7h2rYz?-xtTx2jfylL^(LAA#6t_KpHWo7Gk9zIzA$}d!!nsQs(S1fO4rP z(Ep?n=n6&?vAYN)ix)RbotXcu5vd)k2&noUmrhAd%Y;wML=TJF$P!JPHP;1L(I%2W zC0HYgt}LWb4M_BrRj^qX;yXLQVImM~=ME-Wn-<1WDJ_=9HoZ{)AJjmGYCs5d6Nf-p z6SSNsyNLJxy}zr@4)K|0Ga8?FV`JlVxmusAVVF?UEknuiAyKR15ViFQH^9zgs7kU@Og zP65IM&v2?mLUlZ3<|pR4`RP_|DHvXef`#DFs+O1vGp&OqkQ13KreNBC4|K{H31#38 z1iN!u+2)~M0o<;akj7G)fKSKfQ{%__Rbj*K1T&ye9lpqPbh?XwJ@HVgQ$Be8wCfLh z3>gQ8LuC`NYC8gkY*ZE0YuZQ3ghhc^vNahh|Gm}oY`ZnSnqUn=8S0tL*~fS4h*8jH z#o8jjD?cTa4kfn)L%fZr@zrpqMyN|%Cd6o^jvXh*p+!zYh3(9VJEs7{cqNRBnT4-p z%i3r0)Cg_~VGxI318L&NZfyjyQ0~-}A49~P!AQ$;%;nG9N5nG1a4j=1nXVtGgH0Nt zNRi$`QY|j%v}NnIP(Irwn_Y-ULbD9-p@zYcn%4>|r-LYueR{-(`(ctwMt1G5Nr7qz z%FzHGcqQkmr_Mg6Qu{ZOJN{OeuHf@gUzIE%XFun0XL!<7GdEW&Aq*#)NoJ-#f^mlF zNOX))W&4pz*y)V)Z^komIZ7;rzD#lilaqhnQll_*)=FervZKJ{009km#(|>R!Cvf zY#no=M>2HeI!6eh#3$IaQi0Nw<&cm z%>Ns4NM2aiVdsXv!@flw7Zv28k=X|3>%~wiUSn5T{GMg%)d-WAV^_2J68n35Rr=kZ zfceLrPg|YrC3X7o`NotqK|2r`@scn#$6pW|Dozcthn{a{yKSPCb z;+VZ2w`YzVJ`CVOCu=sM6p^>3k~&+w3??A{>--)rzdbx8V9%lNWY<+SgEmyN=u#H4 z4h=w@M0GAd$G=Mp>#~CMd15-4h=B62c+~tnpEx?dNRC6IRi^5Jd@-22f5uWUBJVuK zBSWmzVcKvIMTiYpC2&=vD9j{P>t*tIF-*mR9!#y=oFa$-r6mKhld&|H9}7AufC-M@ zDAjk!1~(LxHjEekhwcF6EGl5P(0cOd`_Ohg4)1J)A67hxl{}gCr!ojoE3^f@rZ!nX z8^&;xD!5gH^)V4#RfT4hrH$Wd9>Gf~c|<^MpQ51L^0Z+H-w%`ZNx9@iO`7>nB$~gXwD~;3M=g$l=m!O6k z2_{z^7s@{SEZ?nlb>~uxqw)Kc;;Me=zUJ9H3#BtM#*In23Jb=m(z^@Yy zESr9(yFa-sZ2w0;dqApCQD@)P>LhsL-%AY)JonUYb@5K?r`QJ z`g7Xy*!J>RhW7T~vz%D9Td%aVjXrf>b_U*W9~IlXmxM<1f&~^% z-3WwpFWF9=={QDL$+1@>z)Tu2*Lw``dd+xR z&2~|H7BZZGRea`4IhK`_42_AAm~CkNg(D`nqe@LSdq(hlY7tlewGD7qB593QgT0Y#}Q`AjABa=BVLQop`fAsD` zU{Wx^?_wEOr33mAeDso|uJdfJ%B_%V$|3shG{tGj9c@qbpQiX$SLya$qwL#?`Qo|J zi!8)mr`FqDou-Iu%K);l7le*T!5>x(>vwG{)Uwk7z@S7viw_zUEM+T?fPHWsN+$$f7C8jFI6;?$g0t-=Dqlpuub@$pf;O2;2q%#7kK zI!8Qzwb`B!2hb35IF>lhdArjaxbg(Ittl$>gN-fLOGya@=Nk4X_1k8MSbr+3xssAn znObGIjjpaPz5VF2I5OMS$!dM^Avxl1&ABk{!wA4jq`#m=qg;)?qK~hK#V}Z;*5ypC zWawh8v0t5@8DhIN$hyXzDZIKDwKz18jQ$E7emo(Gd(zT_4SM>N))R46 zOXek6UFT0;k&mmU+segq!j}Uqio3k#QyG2BxVX4)Q@mFdy6sC&STO#WjCwXFAi&7( za|PeGeZM;0HG*N#0bw)9Zn`kqWV4Er>;veS1`Mc$ivleDbP6*l3ppWTGPDX__stOQ z`vM;viygp;1~6pKP7Y{~5s@7*h`ja3@ewY!(}5(_0+iFup4guPKAbE%XH~3y5$HiD zqBn5~2}EobldG*xFCe|#7Y6MnxZvrdEHA)~M`XtUY{Zm9RX}Dm`kVZ!>&@=x&#Fqu zz5B~e+?JMWTRAK+3YnCi3yn)qr^RDz!%Jyh!NlKM-U{bac2^HVEFP$ltY4 zd1)X*qwC{)bLL0ywbT=Ve;MijtoStul+f9sel-Kbthz>gb$#DcDTeET8BTY#J@xy>qFJb@dbVORF*-c?U)-YD=Rf6#c&NL7b}vKiOwYmy@Rr% za5>XV_0QFY7gf-{0{{T_}y z_FH@^w;~-)DxH)4L|)(S2C01tt>y}#t%6utSaJ^X8r%UUI!A^UDeU?U{>X?Rq`PPp zYUPvC0N9A%ZTft@oAi{nuCT7SJR#;a5o%;;ZEelqWjrxoxq#Pkz&1cmnJB`-?P0Q_ z{H{`csVFJaCi?e+k|znB3Fkk{hfUVR4m@X9-#AWMu)wtcLT5>0_{Xk>=s(&G|2bKq z=Z%P%uJdBBsvyb`b-d{;0z4;oq!o5Ff{Xna!J{-r(XDpZtG-5{I>w(&{kkJ28!e9S zKP5{_7R7L1>4K#HbYA}y`Y7do4z%1~hF{?o@(W=E;~WyhX1rwIHd=iKl*)4qoUk#s zx-9mo955S&10inoO*m{;45AIHvV$AJc@%jk*te;biwy2~TBv#~fj?pu1V8ST?{r^q zNW~+ucz@De1)aaWo>hNa4A!&ZhAV6YOpk*0P!NZ|K*ycQg(RQ;^8$EOgE&KOEGf3J z5<~Y|>t%+L=@O_RRmt@gnHa>tjxOIXpN87x&He$41^geAm>AgC6+rGpgA1GOuESCC z%}N5EVIJObbyw%B5?h}3=Kg}dm17@o-@^jLM*l`}J$J-@o3Ss`cd1n)=DkTel^@!+ zXRp&OX~yAvT;TtoYYKTd5Ex)iHimzN*8TWiD|+z3xYNEA1CB!^J)e3Cq5)8u^)40= zq+SC#3bYPF3nHVlcuCJ6oo*j~I@ei0BsgAhHisT|tij@rj~#2kIS0UUF+NaffVubk zpc7&IT%XLI29fJ|Vz6)mo{w}f5QEq!xsZip0Cj@Jb(uCDq)RUgHmg)fGIK`2?9M}n z1)3Wj03I%usg@udsVjyw)zww7WvSI-(R2TNTf0|6FnVoc@Zv+4ucMqM=ZUx&Uz6THpCpB#d{-cPjmO zN11brqd??!6%!RN!h{l`Lw>qauk4Xt`2Kfj{zcT!q~BM*YrQ)@Op9SAuZ&-2zWvn_sZ_|iYdK}-y+Ub~rEC;H+TIwJ>&LM&XHK@$ zyxyPUYi%J@hSLOOcmZfhXxe~mP`TX_gVuSRF{jzEJ$-|9_2@Q7;a7L8ydnvKQC2k15giQ9|#Mh zQpignIqkSM5%XQ0Y030T|Ku&o+H}jD*R0<8Nkqk?cP(x4>Oa*YG*sYsLmi5wLhJd; z!lgkr@Zf(OiG=>UyZwP+ETj756;&57F7n*$+~|MbPi!H?io%Y@ONV0_l)l{Fm_h1c zA?H9^QD6N68pC~0Oux>XjKZX26sF_IPRr-#n&3OS!DYHWyt}Q_w2O(bm45bd)Y%ea zlPteZW+LRtM97@+G9*-d)?um>VrIOzyMu5h^tuM_9>l}L9Zn_vp=}88I2&iTI0_`r z)RqfsG$!P@7fKw8wxy<~*6A2hvrn0IDrmJ`iu-tfpU6B4;Z7~qE9G8*wdYd_@kL1W zezmlaYijBV^YVgW9b&k~IQ?h;D4;-vitUN(!7CnkQtVc!+>?CqYNJ>vApA?R{Z&+B z$4RC}cCuKZ8DEW@1YVQOZaJ@bpmOzl8yiURvN6;F4P`JN$a|6?oX7`~{V5c=Uu}5p5`UgspBRcLmO&cTk-_nSR)1the)OY4y(qCngD$O`&+a&RWv0Ln5z0 zE&{^Pw}Te`Zw>fAXLJG^NXHtcW^P^+7{O6Rc)?n;UZ+PUkIO5-GcI=sU=8Q+aJooL zOq^6MUP>K_pwJePrql9dbj7}cnPMHZOJC!DXBIh}va@5r77!5dd=VN}Iqinq9uF{s z+3wH{s!qWd=v!I}_9jFYK#cV^Eav@jB%>E*(=;5s0uzT5+)T9`jFeH$*BZ-Ld!hXc z0iO<1DD|)k4JqQ{B9$^L6|_n1TVmDW&ambF&u7aX7OV{)XUcQQ7o3QxUxEr}U zI7tIc2vd~Xf)7%J9GkG`#rhKZL;#%q_j~GbfRNC}4dtYI+@m(?Z4Q*zPK|Wki2hHK z^PjMH(}Wf}5B6p7A)qU!KO?cz)4TQZAqYu6rYLx-A(mf?sqATS0g43KfrC}OPuBPG zuWL0K{T)Xt(Z}X@B?w`!GY~8dWU>c1?fZdt0n=M`+njeFTTm%vc5Z3U?OFvv%k;Zn zj&PykV#9XttQlZ@>JA84(zLOK?sOY0kWaO%by{y@{nY?QhI@^jUc;=euC68)1bj9t zObu~l7$_JR5Et5&YJ@z_Q0ToHneG~05cfCYQ8>9m&l9PvDL5dU1EzYh+KpDK41`aY zo9S=T6KU+Q>y5(C;z(EmJy2LGci?o_37%laE}=2NW{qt)WB;2^EV^AlOXW;MGeXb~3z)$Q`)2HX4I=kEj6 zn@FP?Fj#r0J3SX-c?CFukqtW>3>euZC%_?s;;(Xq1Bse$%SU7>+MmuQ03L_{;SuO} z9My?NtHl5(cw_wp2;*x2gw!(-+JZ*lx`kJuNsQHWr_{j&AYO!W{Yo`hSv<(9G8Gzt zxnZqw7cMN{#e6X$2Bamf`k@oIn&J-AkK+VtGksnZAOmb;1x3<)`)ak8t$2 zQAR@(Rs~Nak%*v>z@R|D{C^Ym97A7{{faE%mC08pgcH>H%`gx`B=pY@fCGSpbJ9q1 z;5*f1Nt-2CMv~c>HfUgq5aJH3Jv0qoszP9972pTJIg;v>hJM_mh!$YkCbGef;@jA? zu))T#Qhmz>z(&`rtxUiu`rZCtae8C!AuaR`j+$Y5BU}cawZQ;(QnQYXpa0ieK<_{p zsxWmL4Ly-8RsbkKbZGu04hjsT^b8=M=q|>gj{;&%za7G~9E^#f89=N7jN@4W7;tKA ztdBgsGNT*zjF6`l@8S*M{#c)Qj!lBdX}>jqMwA<2p&5-H-UCPs9-p2#8`-$S1&`0ICiT<)vnwY=SZ_L&6>@>K9UI?DtI1~c5>ve?)#*nm4>-Y-vzmeot9jN& z6MvA)R!8f4Rc3#yf7{Qu{=J5)(s*O;uW!FDpb(;s86~1EY8(tXtHRI#U*$iGPD4sm zHvb#GdaNq9RTl>)P;msaO{*R1CC@zEJa{$M1Mp$|{^vXShYJz$@pX`Fpk#xS)I4@a zHYTH6IQ&+TE*A-CAJ|J_Opi)oX{2JUsNS4QDK1?1fvb`=Ea?2Q!N+yVqF5rmcYnI@s8>?f9lM1aw_c|gd8{7ts{=;C}}mvFr} zcbps?s3sJZL>dorAKjXPk{)*DT%#7WATrtm35>MVF`~Zk`XqLV5x`iy=@2f4kPvD*9LWm ztQi{lI{f(y;0nr7KB|x}4lnK4g$0}2WVhK?!z87OnAL39A5wVQSF>kFeiHDpOuusKwHSdteDONzaE2oyceXvItRc)us`)DGEh-Kw-5 ztr{vYFTLk3x~5Q8qi=b_&6C1KUADfb3I5<$k0(t@Tx4yk=AoX*A0Qb zB00bz6bJcpnDvjOik*$g{b{t2>0DQ0#O9VS!Bpyxr8?&O3+=OG@=mhf>X@qId*3^d z0SjDB2eR#@leei=P9(77RXYl*r@yz5UuFGh3?= zg;LLO@cX|TZ~)cr8qSZukbdQG+0RRIaBv*b9@!&INjNRqBLr&;8e z`zo#l)(LLl7pXqvSIu#<_gY~pVS1k^LDQUpxDE8*!L@@foRjei&A$Ht^EEfCe3t-3 zo1FMm)A2sd%$SVZofN5P$srb1C=XtpSbzK6s_}{K_6;7FOJ*0Ji}~++=sAH6EV0D+ zQE2!IcK(cJr1C*L#Dw@Im;YF@y^ym^9>h-rN?y5a83hrjK(`Bm@x21j)v26MDmCzq z6NRIilqh2-1f~_Gpz>Zc+fXPD&qu5|46o%ZT&@NUwlY_}Lym!GRhQ5tSEY$#%cF1~DH z>CZh)U_byM&5$Xyu}Nt)t7J-< zMs}xHjDUJFsOm3a;Z_^IHKI_wCy|Xd_h79|=${iouKu!DDnq(^qy9l;Hq*7by1KQs z75hr>08{XrNI?s1q^_|c6y5&oTyto~khfYdih3(S<3HEoUk3=0AV?7$srFFnN3Jqc zYG9Q)E&LHeq`3Amj(70{VW&g?ogQ0^X@P!spkp-Tb+NN0?=92IIT*8cDQD%QwXy~=<3pz5-%@8k6iR!bMOO(^svS1Ql)0YE2pDmz#itcS; zjqcqixZ~;t?w-vF>N140BvLs++8DL(I`9cGe`L`Yinkv`b)^g9)ZO$iw=Fz@pUA|7 zuJ^hfoFg|{!n3-x#nB%`PCc8n=VVo~br$e5Eelc2^qZ=@iCf__*CNqp|Gmxsj@~w_I#s)gcl$&qDs|jF^F;@lKJw)l3i#~gNFN4o3<>LJP0xjxd7fG&bgb^yT<7T_n4m853s{jFLxp0Jg)5jZ18u*D{j+hr?6_(A6JbYH zm^{2tDQ+O`F+0^?Z;8XnArK@NYiMK?J#^sm0SD6g+|<;X@wX(~swNy=)3l*tXk}p! zn0Fi(U0o6hSzMyae%3c2%lCLs8Zn6L1BE^+sFrQYyZOERB_FPu!5&UG5aJ?BQ&PyX z9M5|66Cms=oF}h~t&>14m!D=*c~SZ0-m;8DLofbOD=^H;X*T4S2ssc^T!EzGF!f1Y zi5yr^^TOm#;U_5lDR1S)8i4My&hEUW}k4cdkD96+XsAts0&h}7@x=CF z+({Xh_7Kq=jd~>LC}7g*gKp{{T3R0&>(w~;Z=wJ=gVDu$*0O)QDV|Ew93p*uBlMEO zksMuDy8U^tsYU3!Jci2mDOcyr=*f^?4mghk8tA`(DQ%`0*$B(hrtDwLCHRoQWB~X0 z+Vc4L6kEa=J*TBk;56fd?}=O{3?rRQ)DV;VShu1gHlfc-9TTpS{J$v(D_Bq8682{l z%aP*!s-SHri1(`(R-KR4=5qJp&9f2j^2DFFT;8rg*?mMcWh7vxKj0`QQKrVJgFi3z znF+EXADPU7r}K$;nQR{IKk0e2)>pRPU6-RZ2{}&KO%D20spFU*FE5juD*0d6-#Ibu z8(r^!kfC9m6uVz#-@3LQG8tJ=i~#ykPG12YdXBpO5yUh^EO-QFR_f1{va7xTMu%)9 zB6C1_+Y=KL6Ui_oT9Rz7$re|G#m-7n+vN@#?|BfB#QIEeyE4Yz4KNf;Fx``5FJ^jp z^VRiu0~WbE>IzY=X|RVmhox7sDw~ar;ok0oLs!D5nSq`HMA7!yP4br_VXrtzJwCJj z!>00E_4(GH&4P!WRB7RK5`)OY<&J(_!Ov0|*@TsmuV)i7uF2YnuQ9a(e^CCX<7&+2 zuPyJs3Dj~-v!Vfj@9!`_g1^v!_PDG6S0eXHrbg%UOr1T2tw59%Q!7uD)o9IlDbsv4)79(Q}3>gFquWi~F^I<*?f1ll>}mtP#=mRI+Q8 zV4D*`U0B>@RJz^%&bt_@WjgUbq;D%5^gQfF%fz8USUZZh^8*5=yS zP)nof2vK(1CDJ*J*?XH2aylLdC?nhQZ;keU4%1?*;N+#=PIiI;2I9`}_me7?{V2-E z7Xr$|la6aW(bTD$B)JZ&anj$hHLII#S0!%?Px&l@5R%+;&#GW=>NJ7liW?3{n< zGyAM&g##M6;gwe-=-xA;O&2IJmW5oGNj$oecKw!z(uI%1=6Osl`gReUvq)J*Pq=)g zDb?mT47uC>wDu8CEFafLhYXu(TW}^1ncYPw@bz$+<6SA52PQ@#VxIvSA`>nWnSlFfxK!$XQY)U0(@{_yDq5;?x!o;DMh50-TfS&@$q*0n z-xRYW04ntK!0U85M6W!2zWGXO@XHV-#eb|#`fH%FkQV$gp~D3M91cUn!rn+Tk38QVu&?#|-R_y_(Wmnn=1tLw{FC-ZNCBdBMIH-=2}CS(E|0@_q@v-jmMIO&d~ zDmeELH9-%&k6Z79xH-InYi@ge`n0^!scv^OTcCozFT1bCMA)4;P0qKsy39@1A5$N% zK75b}p1${!@z%#igj<%}&$8J=mBMcU$0DC6+4DnXEc0=bV~$-m*E#ECD9{pbc|CK% zHnd8z`&k>?PyLwrn6~dfhPVn^NYK@bS?fSrv=aU4g@SgEk!|1PKdK&LZy=Ms0R7-G zjCR_=gkcM6g(`UZok#~o`t^^#a)hwQL_bKcblzMCZE8lb#HtsY2w#YuY?fv5_&j!p z1mchJo-IQXD{U6ry)(S6AUoL~Zl_#`5|FvwG~VTlmm9I}DNrnvqimK>eT{h|U#}P1 z1|7`DtRCY zH;#@7nG7F@TYp3mLalj4;D%i;*bwIqr(i>Vkb;IO8RdZboH_;>env7MQlY?)*r>wTI}@@c5&)T6;bWBW}e5&I17prL?Qk+8wV8z3plZ zv|tGaThVyKsNgANh`jms$>LPGUfFLtoz}JYrGi)(cj~W0y(u~VJa$xvKU;p_f{tjQHY+e?WqJ|kx9!t$WcVpusmpRVAa+0%i|;y*4l2Pciiv#{d# zXt(a>m%*!AVQ*}utk%cWEh1yAMKPi~Z?j=3a?yFrC?)fGLUGE5n8E}5>(Ky`ZFp$t z^wz8^eTzkj;@^ZTQK(0Nit!?ylgb+>(IeqA7m>hJ_lg^QBl5?4i8HTK#1 zhVsnByfb}*>xP%QOZY;)m=*&XflN$04h`8Ag#3AzZH4S?r33h{a|C<%^0`O5B2=d%iSeRK0;KshS8X1v^3Ew$k)6uF%w|F$bxOJJvy?{K}Dl(EPO!OJIwlM^Z% zp2M!q6bD#^$jAt-`*Ur1h~mmOPbNw-^H0rLrdl*MBmh6k82>cR?<`g2&Ss^8;X%($mNzdfCKK@7s97g^mWhZM zmkdu_%pCR!Xwa{jMr3$T$HRv>0X1jzttpI^ z?U@gWFD!)oRu_p9B)>QW4Ce@l zwPaa%qX&u}77WoA=2x2DjsrfwSM1J4%ag(c`TnZ$L|V~8l)~-I&aW=t`(Cnl7I36S z>e*d@aS2H%s{)&+UcTA~F65UI+2H<`@O+M4yWLpAKxB{x*mlFT1KGRQ`kWCy76_Bb z3$Wb`EyF$WV=t(yjOU>4h!pGCW=TrBfsgPB$vj5mh)d!6A2S+q*0+_+Vf_oP+~sev z{*Y#mBbCDd>NRpszCsN%GcEdK8wGvGUCf68VKlsA*l~2nRyD1nNWhLKu-23w(HSh_ z)Pl70nu>*L=4<+UKf!SE#JV>Q=tT!!K;#Z$TeFTU&vP}b>k1`YiXVQ+gdIGuW|9_a zd>Swg4h}N=g>8mSfqM1;kzCS6Bg*$xdw~`SR2;O}7|Ch1Vsk?bK14|FAfg@+(yu2& zo8RyWL}2gAPkj!k*qeF;W>NH;4u1RMsAf@oMl#t+1v!gq3I+bGQuxoz%`4WlwB;{% z$N4zjj54g;e{pPolfPvo2AC>)BiF?@z#pjH{!TtoFe@U^*ORV}kevznUr?;Ydyx?~ zSBymnN2X5PKa{1CD>tfgdM?rkia5+Fcid&QXJL~So(p~1j)Lk+r{50&6Pq?W+*y4) zi;Iu<1|#m4)$JzthhqRUhOFnYa+D5_kC)5UtCQ&Uf4k0ie>|>(!(tdjLn7e)+3xN> zG5OxgV!0h8YHCAAk7-f*jfDEPomd)PxgcA!p63p{NIt(t?m?eYs9YZx(T1UJJxKhY$8uS& z`nNLwkF0kLtZVDqzhm2GW7~F<#!i}~v6IF&+QzmT+qP}nw%xqz+|N1Zx&P1md4Jez z&$Y*#V~+8=u7O1ihXN6`@s5yZw(hdtEm{M`1J^(@9WHsaM=2Fddj9xS0?7(ZW&9ez z1O;w;stP_}U}O==p#!`B&1(w8@s}&Sh~}aNx|3x_M40RO-4k_Hg%dxIcs8o>-R_4x ziNxc<_IYyd*apqRbVgSN_+AB(ADEZ9hbRJ$oVcXX=TJYI+gjzgY!A|US7kajlB#UE zasFD1<>2y8(su0UPLi6|POjbM47zqI`6ys++|RC~vJq8bS1|u+hc4~)r|-K^2sl;W zcL&I&kc=>jPG2}}JWVDksipmTzeKnvVmw25phllM-(3Yhfq%In^Hwv3PtenrNuf*% zHcUYjg+fI@2AJyw2WTBLjWtx}ZD6gN7p+cqbfEcJ4`7tG5(5YQ(;jSAh-UqGnUjxn zJ}$Wbyoxr5;TwibLGT*J@w)tGzkwoT5*RpIPH%CA2%P3{N6wqnb4RNedWspNmEwVz zg*Y6Y$?(&p#hQ;^En@dDXA+iv)N`7-;zWG=N=OzvBS5&XM1xDB)w$`4lvEUCA5>ny z7bX-nl&@a8Nw~L7tszde@#Dw&>pQX7Dm%^s?UnEq`5Ksg#V# z{r84YaXVdYQwP%pKU3%Z1+<|XGFc5XW*7*ss(Owy>u7xhgyl5ptmF2jqN6zkV>sWI zXBZgsJbba!B-bgW>7CJluLyo;B&F-Zzp*ehh8M!Pn}(1o+?^I1(~)rCv;@pE+IJgE#1GX*_Aia|^nlTbY(;uhShga;!f7 z&Ev~GIQVI6@t6%>d2YO=rczmo)vj|y3sl6P{{9Kx9MUiu}T2_yG`C@Z+tuq|f&Ab6|?VQL0&hjcTJkw8xaMFeCP4|tco8|CFOZYp;_>_pC zT!cQSte@a1?b_{cha%BCnY`@oMa(X>A8h3TV&234&rz|nkayJuv9+<8{;cEtsyB0@ zxM^U~(f52#oUOf<{#~C9s1$f%SNFvix>l|_;`{Br^22jo0);ZIUtf2pBuMgH-vb61 zt)od0D6uh~%~~r$(s}LOo*Sjq$1XmG-x_*1`w#3syguA(|B$bra%l7Z7Et}U`Sg7h zFwcVw^|TmF?Pl|_TyX6R8SX_R>wSBBYin-@cv641h6%nJ!wJ9Q&3eK=nYFIxqpb_) z>95nRo#$B(lMK;wsEtgQDMAt?Sety_21{iL(p&G(_X|Tv50*=AH~NPnk>onhjg21S z8_h2ZHyMgI?e0%@#uQn)x9?9TeE1Oe8Z>OEjz{|{*HM>%Q75TvOytike2A&X-ormD zWt%Xcu(LGZ-+lQOKonv)GT1U54Gz1~_~z|C7+zd`7*Su^P&uR{`Y&t@M4OSnN$)~p zkEMcafpZawcw&2228&bi|B{tlIZL3L7HXfS(uzUc550WIT=#wNet``%n!&JrXvpx0uiT0xg#eWZJ_hHT<{N?yUhFkuo40%--e>{MBb^X%YuN2XF-F(-Mr%LG z@L#&ITTJkb1`%}HRXPO8QoBT$!M{tJ*x>zO22*Yelf3Vtv{s}DQH5+s7Hg{-#PzHN zbljcle=>E1h$^N}FfH#7bs`O6-YCCGZk1ij{f0LrTF<#2Kn^`?{R1+C@_d^RuI^wR zIym~nDC=8fW!%H!ITh6x3))j38Y47CXP=xk zA$oTvFX(VrQv*BZXL-z|YTRcHtbWgOx@@B3@o~H@o%Iq|KobK;Yo@E)(b1vX42M-k zZ8QBFl9P%X0Oclr*aP%M7BGSYz<5dw>hj@W@fn8p9iX8@8#g>kRSESWjXdyo;4%)! zQmAqqx{#*-ZY6KCvd%4qrL@xff_l~r?>Bck{M}Dpk0h8j*zU0{5EK6OZ6du^cRX$| zZlo%IbtXS4iJ`NHx4Is4v*TXy@amPAu|nH9qtzImHRWg#)4SE_nx&K~sgf1&xjpxE zF8I(d6sepr9+n#o6js~B3j7VHGr!H?>FeuDO@uMznFxmd=FW*HEV-X&jE5*%oWaP4 zPKInv5d<+Mo&+xx%@0pyfZvVt8vzykDn!vUyOt~^QZqMDVU6=Pqlt=CnjX>uCKB^) z>tJ$_WEnHIR2oIz?FD29#Oa`{TX@!3B2v?h-U*(KD$v4~smAaa0&r;ylJ?aD$%uG7 zI_?LJb%bPx@W}97mpq1@UjBtJmUs`MF*f%MWQ~|a=B#L#cjD8F^OcOoC{w8L1iCZ5 z-N-uGT}4*kvKNmHz)Nru6|EIN4c4Y2DEeeS3lU|}Oi?sR;#TLzLV}u2?f=}4if$a0 z|Meg?Xeo@|!ffJ{^R2LT*42L^!IT(wMc(eJX!FybVQ&wNC42-9OGxTi^lDr}-D$z; zV9B)h?#jEhomhmx z#T@wpe`C!OvVfwG#MD$=0G?xDgl8^g#ntuJ?i_3FDGe>zw?dR#7>qDWXBNL9S$%6p z&oY>Kwx&jl7l%W-Klqcamj@*VsXZ(d7Fg@hYA`mpcn?#J6S)d&Q=7Ic^lGvyBt0nE z52G%>ZFAw}Rs;4G?P;yU6iY-MaC`((v>TNK+9&az%Crm{FJ4Q@4vIKk+ zM^A?@e;<4DJ{(L>vrse@6uu&WBp0&#z zzyQmo*`}a&+R?L_eAy*W++2lJ_G5sz5)sK)9?#%&1=uQTa-Xr^HHPH79Uu_2jxm;> zr#t+LJGMv*6s)2i(KX&Y=ACr&m0u@XUk@h`@dQe8ECgseYhcPE+@3y<6Bdtu+I~!E z*{wV<){-x2a}34K9QH^WTr`=s+n>FocC-&BgZiyCbjY-jlTJkZp3XJLek@S7*k@Ne zs}e_+DK6AxVPf<;fUNV0(;>PO+9y?BMK9YmLUnK5DqDXVJGbhPEQGG%XNt;2-WJLX z;!(dthGK$A3g_G*28h2R20otXA~Sn>3UuFtmk&=MxeyoW8>(2qYxNo~=YOgj(F*{xtV4 zG1-nZq)9JB#dx1JJ}+S)B^q2+=M$ZCnu$AR#V3@TpQC)Ho|t?#96RLtL0K!lMc|Onk`XBm*1m6Oj`-v&QU?SEUT$_qAu^xLmoDbX#PK?x zB)5e9_~G_)M`M{?4Ifh{7K+qAI2c99hhUN5pi!x3^B?=Fbxjc{bGZy2$AgRY zR=0cvw06z7a|bXw z4op7IdkYU&xk8JR=8;54p+wbXlu|o`Ebj%Ztm7sp0~fL-`2EsKc?m(;EY5O)$Lai+ zi5PJ`d58eE*wN!059iSI{t?Lo{SWm@nrL%au!Im{z2D^s-|Xec+{CT|f1*ak$c3e= zFb7JLthXMq;Y%IPHA!2;44|dr1dx-BGV98;#P3~Z)0}FfWwB%H?tL@u>Q*)`&2#I|@hx;~fxec|E-Q?h(QJ=NLTiUDVI*)-0DqGM(U=osT?09ojU~Fhn@E zG*5RGd9O2}X!yNpV8B3G$;nD2Zi2$AS-lojQ!vSDT%Wmi(oRt>g88u*Vadzu6M#Zu z-gu3kHY6*_u>D(Rz9Gw&$t%_?;_^FJ+ZbL|kEBaGQ0;w>?`ub3G+#;D_FQ(vPF(aSMygf+l3!yOL z;xCO?W2+SMa4}b`qUFB=C@yy-$QpcR3%+c6-Hz9qO=@~Z*BTg!iHXJ7hKGM`m|0(c zzuN9K__{obmWc|!z?|*<-Nk7PlQS|h66(_HW>01UnR^ovpA&(AJGvC~nBV*5Zqw%# z5rReI`5?{i&-EbjnTgCngy6QtkRuI<1=lonfjOhUdA;n6 zA{NSQ-x~w=r(zYVt7&W3hWWd*!^1)4lOo+#7lsSeQrGSk1Y$w2@l+1_-LYr(R=z8P zld6-Xun&onCZ4;CTQhOD7RdM4r@1eiC;OixNKXx-PDXVlg#ZzH zpJ6n2i#@ueGXX7G`Xk8_f!jd7GY&xZ z`QiT%9D<_(TjRD;XCW0yz;dc{2l%yn56)zWh=^n>Y8hQM12P4%3kF6J7EcckGBd2= zk)`Kz;7qeFVLj3|UJ39HL0k|85Y(PCBEd25pUpvzA7{0biA?$vkvgp|HvB@#*hmeO zAGpTsAmR@!$@+4{I`ndx{J6$W{wYJ6Ip5cKPie`?0~x|`Vs5{HVgPvFZ?xK@shr;P z)y8k&*Nl4@fi_%-*;TDZmMRIOZ=Vt5bEiugUcf^WxHEb}{4S%PqEmY z0R!PCHpTzJ8M0rlghtuL8 zT78Wwc^2Fktllbimn*FMbe1;zIIgF}z?KsfW6j9?h&5b?Q;soH^B6q0CeZv%Ps zHz7k|G?CJI(Fag8i0mk>0W8tpp;eCCl#d%A%%UH?FWVnUl9{a*=yACD_<*73@wMU< zqt9eMDC0Qr)4wrQFVlG(HQA)as?wR*v9cjSe`9H*CvO1)Qm8<*2}0AM`QUa{T8R?Y zbm3Ld?)I8ahKV@vIfo=7e68aFA7wz_7JdiLp zHAXT*6bKpAH$We!7^rJBXT4mr4X%zlnqtr~ub%xs8Wfkk9=cYi9l|aIP^a z#m6fQRD}Yam~%uVmj>#-?;dB-IedSX?u3|_wCjTi{skbZk-?U#5O(TKuKe;7^h!~G zIW|gg7Lg^s)Zh z{bECMtTW+A2b~GA__AwZUqxN@2`=WX)rOu|$%FC;ITaI!oeE7wm9kgGxsEUs6?(!3 zSSoxm8h&xIXezx9;cuE&A$cEv=a@vvODkw~Y>QfIl5K4F8f*0A&!3jaOcFS7m<>R5 zCNpECM`tR1+#w-I4itfz>Pvsk2S4dD;8(f;*y}tyrK814;^fbYS(;%1(vYuX9)SOT z4}mUSfWLLX@ek`nx_HOVmlL{&gaSaC{_^q?;0iT8<|59@1Q#75Y)D^7?@w6%J-Z{w z5gLEuW)7W7zRyW>5^yX015{9Bu*UULGhQDrCoONlO1lH0#UikwwmQbgZuA3sgU#lQ z^c1s%_oy$IYoW_n;F_eYv1%hC#_{diK)=K0p#l2zWmWE`s@6E)vJx#7p!x9=-A?_B z;s_R|;9YQ%UM<*H`E&$gp$eI0D2n!f_#rhB5MR?@uQhYcGL!MqwUS1~apcBG^7nj? z?G3JMgI{0j&z4BcNgDY08uzhPc#|b`3Wt&KK8`bXJ*&PDtoCOw=J*jdGxPq@2#>Yi zUuVnh7WO^VC5YAaL&&$<>Wgglr~vUcwrUO(w~WJkEfXHsXG2~Jig<>Bww;rfy-Vbd zT|>1kv;@fem$_u8CEbyu%l2`!~uN*)OL`0}a-u9A^|xKFuC5s8w}L zOL`S(aA?*k=qy{QH`vk3C#R?IJ@F>_F&qf_FcS!@eN&EI6uK!F)*Y`xZs(RUL=s~=X|8Hj+4`YYRRfgSX{w+tNKcGU zr6fqX9#I=EBJYx4>}V3IwbOO+tm{pi?5aj!Qy--Pi9Mv3znMX;>AO^>?kl+LE7`}Q z!Bk*>AfP9K!xQ4*;3Q*ti%~S(-#dQX?>uAzCWJZKg{P_>(9p+z;Ga34xkK7Mcugj=NP% z*T_q6`#(j}hJY_6Ob?z|ZEXmbc!-BNF=f4! z-Gl2Cty0!^Xu0X)_!z1MSY~EqWbh)ha1kL=FFCkMPzpkIOdhX5)7}o{RK8(#!NhiQ<>alX0To@CT>3OZvhHpj-h^pVf z-G9~TH^gF=F>@GsOJt4C62huJCeiT@v{e;);8`EaeN)kqk+os#e5j+o@K&9lwu za8b^HV%9WYXuValQqA3os9b|)UofKkI`~3+YptqOtli~T(JOnd8T*O{mvG$NJQE)c z>%)xvQ}sQP(aUW3N%bV2V|5=^_`DuJX(Vxu9(fx|D1d1e)g@r z{6N2}KF%2Ug^vHFDvakUYKa~!v=}s5xhhUz<6~yNQ_n^6Wjeu;B`lNJi=oyP?)}pE z%D&hkn#P~Fk8 z7fr%Jv{T_gf8~#-p&RuYrDPD<3K6lF$?g`r&++E;qupDhV}=C?Z$!)bkHkx}~kWa1kNso$5a)9K}T6;9#2;{0JE zM-`p@#RJi~a&vBAgNK~uVsAx4z2RY4uIJW}H zP_s{i$eGWzV;k4wS${r9MDTZ-K-vbW%TnoYF$lHkHC|@5dwEW#o`-B({OoLDB7bYp z@06K{@WiRJ#E*&v*KTVM5o;6vM=EkAesbV&YXyLjm2wi zlM>B~fI)=>G`dHdvxNhW3|2&BoxN$b%eGsjyJJSZwjX@4wS_6dWp=EpO}-&YJ@gCJ z$_hWT&(>&S;%5qbg}C+2heevs0b3h4=LrnS{{<+zWc`GbI2nFr1v3VYfXt5?-_uqk zM4jB{o&``tn{zuAe!A#K9@i3nAhi{suoC6q6_(*|K5@W0s@%ZErq;Z=$|*MXps*Y` z*S3dgT9NELRYHpBwiy6y&0T@rk&~gzRy>E6Pu-sAAfr3xro%Nr1g|B-*i|{T_|4{ zdMPro___uA=bXzcM+)iRn#-P8mpR7pS$j+8z40WnVRNapWl{nPk?(nSnJM4~U#Lbi zEyq|mk#AvFy~cB}rv5XdRMGtkM(_E0n|j+cj6&eq=C)_W&(JIhFYxe96j3>hhv*3mAFb5j>V+J)^$Jtk* zXmrfhRcQ$c!Ln0fOJ6}9jLPt^Z9plNGC14@CJ|c@`D+X#eQO^al2X48c<(H>fddGN z&2%lF#wXU*ic2{}!6tB;(sF%#SMz1AZs^95jP>6a>s{G0lSH|rOBB9efepiSUDBvy zvo2dfV2>k8r(yT1#*Q!i*<7TuWvT-PUQoYQeXHJ=lWsO{`McvpIG#f;k=RaVP+q?z zY~RimK6VU*fW;^-&KiGB?q$3?G9y7m3;rAZRY_dvX1#BN@uz_q_dZL+CChB+1)S%$ z`c)^yvl-+vr$UxE<=?$McJI(++yIuUE_sqB+c0r)cD!0gc=WaD#&QWw)n=??6?uaA zx@`0AsK;7U)^$w@Zthnm1*d9aZXagwE_UCtEVKo-EMYOZ%Sn>mnr4_$a}CYhw9hcusT0G z7rL5lJ*9j_e)~ixn9daI_a&11hA!3xpcZsses5}B4WhHc~bmD2!Qv>ohV)X6BeeRN%j}%2rPAe)%^sg5U|9r59e%-ng_CHsDmDf zqx)OF%k7ukcDf+apK&-WF*H7uv0%=1x@`KXsN3$eguzuP(DpmBmO9$8ec)>8%ZUEK zp6lRn=Vkt#VJ25TKpN^KjTL#8#N%AG;chqHEvKZgAlL5nYG!B+&58~@F8{oDJ0|i< z=jD)3i|H%o^3x0N^dZ?E=v8IAV!(Rn5k z<{}{m8sTGR2&+Jd4J0Ey}7!_sxC%vzy!;PXieOK zF%Od$AR3SCZj;Y>srdzxzTkDJY9!Rd!}A`frt zyhYVzs6{vQhXb-XSSSD%FP7AMVtZ@X%J*(Ns{7A)J3Kqx`jB^tkSF05A!WU%$(Ku7 z8)R86*c@&C-d#ws8|Q!98qZR%e6_FBtCaBG%diUhb{Ues!c^~?hl!kwy=f0c7ul8P z;3=V;-roAiNB1GJAG5!?GJgf~VRd;>tYqfu{aSmzDJPt2znfXv4gSfmJEWI>vU^vc z!@=|;YF1d&lfxF%Wf$yXy@R+gzh6pW(|2%s7W@0m!xOcHtjm?!=l)r%!|=;5ovsJj z2@wS0w4C21P1zG`fx!u&42(PYF>Uk>-#>dh@$lWzwwXu@P0_}7pBD%l(5ke)tv|YE`O_vNFe$v|*6v~^k4kzq zfli}ByZ$6MO7P`wR$d2P;|8hA1yNd2wTBccn zJsmh74A)oL`3DZjOWUCEao(PGqm~koINf~VYkOI7IGG0u9NmiHYXddGjNN6qUGs3r zLqX)LBHxb-v#OGVYOeN%<9L7s+t9y?^mx>ECFFgr%S693GtM1W3t3kR+r7qQEa53g$JSlF1B2t%NVf8@`DU9xGG7@xl}oQEt9G4Smm{_E8SLmg4>& zp(qx_=eys!S_B%Qg8Z43Y&=efV1qA&Uawy~S}v)q>m*KZXOv5}-W}X~&+^Q`VuJEL z-0y5H&3CX?`4Ke@w8yb{VZm||5c`O)ay7`^IYYb$7Vlaac(KQk2Cg(Xm7+7ph^_gzGstwyWA`uu7pC z_cm+~`HMPbx!ou=68XwlJonY~R*Zx?pruWTrN)pk@N+Q$C)AMxO=q34W+9A8P|Ya! zayxEH7{jWwHnpq~{?r4JQI|==W#NF)A#SMMmq^n?N(KuD*W-ceUT@wXZ*!Kxx|8eb z#rJJ(rZe9qI|MTOdrT?31D00Hl$S6Fd(+)}&Lv^_9y}8ENHfa0NduZ>9ZHiT9VQC6 zDT4blZgDa;{l2_y^a!}cuL(o#)(9*sDBp;sEr{EGT-gV}e-5D5`Og4|hpeaf(&i20 zH!*1LA$iv0^~L2e&FmWEYmfni*8(~Ydn2jD)}l<mo{D6I}GU4k~PCSx>LDhn8hEI8QB#3`jMMfG$cdH}|6E$c_!CeYfrx6U-`3ooYi! z7t>zR3!ouD%;R8eU_er|1eCz=*XZJX(>QH@VHnVFEIrm`8;*tWIv$L@zdi;^Kq`eb zjyF9GMiECjz#c}nUk*e9Q(>N?QLcC#vzgSJ0k5@Zli+63&w4-uj44}sU?s3>p!>cb z4(oVKu{4>(Y5{OyV8hu@{B)jqn;CkF+<5iO1TgF z{^`@G5`g7zVCC+Jx?g9KR?sHk*U_SMxcnKf`idtC0{+ALOPf;`CjN*KCsuBpkOgE2 z0TMQBrd$gJD;8@I`#)X)0%~qXkoB58Ipn=x;V>pI;7lHDZ9=&htQ1E1Fr56L&OeR= zo(7k`A-Gp8Ez4cqy)+BPnJwC)V|ZU4oEv$DOzLU1Ix9{hcPJNp%BK?VrLS__G;6FR z>2$vAQ8;xzi}*4lZ>KrqFm;-0ZT(CUy~4N7TQl1#gHMP100wSnZv0aMB1GLjcYQN$ z8+FR~@hu7nH%J#uwviMBbRzY1%|Jtn&yxXzy^Hsz=}ctdEv}^&S&McAFRP7Ot$Ah& zGrPGj@|jV0dYh(%RXTV<*f=0d%QK#vpebkJ>_z*A8eAwDi;p%IOXWf(mjs)$&*KUg zSpxiC6P7&fAdbkMgB!Kze7RL2`NBon?SO%BE**x>k(Ir`PZMg=xvHPz7a5&ueqE(`9X08CDP|A!f zVz=m{K`4b3d80WYU;d**XrTc>AokSI)q3dJWJiWC6(b#v5e2voc!l_XB3Kx)?;Vxj z%^$?EbjDg+56w6>|5$i1@Nw5FhQUcXa>gU1>uLV3E`i1txp%)L*pNCPnqINsN zV5s{UGp`DKq@03TE=^7%H!oTLVi|qjA!-M>US+8}mw^?iM? zL%-us;H8jEN|>nW7+Nl4JEOy&1Zk%&eKuRoBGk`S{}fi$h`+HgIRdgAnsg@SI(B<} z-@z(~pmgkP*+7m>Iy90T>Uz>}9wIOmS(g0ewv6BB?mcbs@twzXx?mPRNq4#ZdO9B+ zrArN{`_LzoVf;kT5|ET+=tC#^%8%r|nrD`i9VSwux7GpbP=}|susl9Gz_bbaI;c?@ zs3ISUpi)3lC>|O(_$AUS0F}#|b;p-2Nmv#1X9eG(SKr z?k|Ck^jW*NQNPxpXgrCtr~3v95*vK&`B{P&R32K17se$8=>V9d0!Eq z#N#qixP4?KpT?8J_|#-#%sGVD$!XBiZUp!`Cg{w|^a@3!!tVidmr_+)Iy$xiEu;;@vG_JZku% z6a6!r^_%}EmA$ys6tZoMP%R2Z__EL-FeEmkT2=L0^#?S#Hfu78Kk9AlA-#1(s`Poi zRU2ZT>1!Cf26l#)dmft!Yy41Q_fUI!d#iP&PAZn?KC`+~`!VRX;m8AcdYGCa5cFF_ zJIH4w=?}L4itJVkW7d+Urrq7$lYtB;o8QL#>rB?jQN}YfGm(&xbfMX@biM28rkG&W z&8PmyW+qQGl=|mw3^^XX?$Y?2!)}3&<3akqWhQ^-UC)zl+oo3O1Dx#snWjLg7P7{_GQm|hN#kZo+DtlN5yC^MzC!3&%oN1ia|O7JaMmZPcG z>Cb3Ofs^@;y`-??E(Syl9AE*29i+lcU9{0tO*wu{n7TShAh}GBc8oEt{7tJnL3tNksNhw{j9te$3`NBTzHGwgG{t4dhJ{(Ja|CL1clYxkqXr{&D z;izIb;m;(O>77lQ=50FB?E07KwaT-vo=#=d6u4I;?LJ)?&jhI46>8h@ow7vGiFcDE z#&~q03~kpBZP-@!&n%J8FV?^z*Qq$fg8&vi$?e0T8T;CG=KdI<((NL+%@BgX92gY0 zoaGLRUq5jE)w^uXOM>(fP;8N}CVg{rtP=L1EPWr*#fLPcQ;B~1&7TBZ&!w_N-u%am zU>5KgUZ^$&GQ2+8iggCy>>_d|piBahJ~5R(es&Btz|;aySAzPWHceJ!&g6N30=ELs zOsd~&sd^~GO-=r~9u51M4;nM97UXgeRwA2EE6e&(IRg~q1(>?E+`i?8K^(-cth$WD zOyfeLn00n!k3^IR51X{*^*w~2MTaJ4nq+GT_UE(Z8aw|~hBYtv=yMNR5XVH5aj2hf zbv;Vlj=eBGmq&$Jd@}eM+aC#6aj+FU!@h5emA`PZ!p-a-!8$-NnnA((c)V{mlF~oN z`9j!3X0F`D_@%S7r|3*v>&|c;vR>v&Xs`}s`yCGk{5cS=bhcfQy{7+kvNu3L#8X&0 zEF?;|9lY5M6PO^$AoNByI}l&pZQ#YfLDrY%7j(NYd#x}Tv(-D;~03IV~IX7 ztUIsMHAIH4At#8xm-Q^#Ydnf~-m6Rv(c$Q5%TZuE{Xob%pYw@EK*qU-ov3=A6G3@p zo&C$0F)*`fbPMG(?(XgYcPw%tKW_%>fpFYJyx=ELu%HKqEf#5MMM{dvbLH%?UEz?1pckb;yjl0MnL)q_({wf3^~=`QQ4 z4eQbOf29zk`=V%29rM(7&%-$3C->;><~Jh%fUa)!>#N2fXLkz4(nRc zjhaM?dolBWyUL2oFgSDZV5&@U^JzXgx~i2!5jAGOCLchp^*)lR861UNvDkIhzQ591 z-o&hR@K{j_^0UQc;yJhh{D)CG?4b_92IgvJLPC8i&sfOuT=6Wx`Hj&Io4BJC*{?jF zR`U7$ac{i|GLPv{SI>8IcDhg9az3@yHrAaO=DTEne<_t;qo6^7(1ZY^;I#a;@qU2G z19SfRYt5W>oc0Gu`954XsDr8vgm8Eb?2sC*+{-qNt8maQ16NQV=-+9jDhL=9Vt!L% zF7N{~SxZLvCB0gXyo$!BVs4Mh^t238-c<)9hwe=*Hml~&glzj&k1+b2ZBFW3BwHB! zaD~?sPe4{>Z@grKHT!XQ1*(8b=w{RRz2$*!#Tf z3^BRtG-gLSUFQ)0Q2W#5QQgLqZ1%Bv2plufbepSiT&X!Wxca2Qr8~s>iH7ufl;XJu zfB2Row2rkx$OI`IxRl~=x_f%2$-JveDl#1=W6Hm(OD(;<6Y{#;)mZOcS!jj!t&aMG zaBph-dhpJte0AXeZH)CV=kkw>on@4th^z^e(Bz4L6z+(~mtVT(CD@$6|XILl*KoEWkF}K*v_FD$$XY!1`+aMqr5~`#H1KtqjC+gYR ztd9dNFcT^&D=8^$_QIXW=;*$|C>8qCP8XX&C`4WQ(>OOzRG6U20;y}038DO5Rg zXRl3AIcIC@vi)ylL=3^g{X#Q|zv7=r|4|+P^Jl{d^Yc?sX}1AaHSqkNsLjHpQb0i4 zU<3*!3jKM*U)@evz48m2=sgyQQbJik4-*eizxM}2{VPZhvzY8wiIlgNOiG=c>a<&3 z3~CE7sXwaCE(3v3O=M{6@o2x5R}p>1f|5_Dh)Ryb*Mp4ilrVceK>F(aIomsoq$bR~ zL{O#dAV&R){OkBM>GuCwMpbYK;d>~z8Lf7k)4+4J(J}-RWNib5W&gjff+F`fqZhyK zKKE2cQ-)7o6?qdV?CEuGyk~fh1S3 zq=WH?^UR~8*4s(^eU+r=OiRvZY zAM==FbO=2|Ak94wOUqF{-thg{N?-oE;Z^%xVl8c zb3t?@5RAecqS@Lr9bJp&c^w(fl$4SzHrk#Y zKTnIIY8%=f()`bIW(WPXLXANzm^PdqPGXAfaKRyLtzJAHM^%LQTyK-Ty@{pt3fphN zLx07_pxB>|%eL7&iK&ifXi5$y5Pt_|lORB6_!x?yWC<~HEuG|1mQ)?spC76x89kK# zU(4nufm)=-MpfGAojp=bpla8U3SEND&$P6GAJxw*W>O&R&6hIOQF(MLSMUX;Xa`1B zXr)nW7OyvCo|x-`SmogHdUuXg%+*>`h?#jR{};J@kEaDHHJyrj-|Lo)jEr(|od+o} zW=69wykt>V@7{d$MY{8(DdzeAgyx<^*Ji}RiH*MgxMKTDTSR`7vV|L0O4)|&BSm)< zMS|>oBAKn>=l}f4X<_|Oq+Y>_Ouwvi+Pq}p-oh7$E=rwgH`nMN%5UsL)cSt#)?4z# z&;HbU^aC-g#dCOeAdB`1xk*vGDaOn=Pm7LLbkLaZiDmAY-{IVct%;9v%Iv5-fpnkH zpXXCJ_(%EjS9CCf`EWRusWTPnnYGrav|B2+E0Ash=cwPw{0SXfDVM89p7?(rsstQt zKK22!3X-++bN<75<0FIilFd?8*Nq?Y;S)_1^vt80c$eT0O0VyX<4Wx3I(Q26y@^xb z=640Fl@gC*D&*12sx(XMhXO?^58+EL7>gl;&5SRMX#_#>?s!cj^N*CjANq0sM7bbo;ra`r7 zWy&hiLE;S~#80o31qXrb=e#30c@)!~#T@O;1;@ycL-C{z{U4^N!r_rQtNL^!MLRTn z_vu}@ezZrAh};Xvz&8`V6L!ng95y^9@|whhOC(E$vtD_l!C@15=|o0)~~ zb*UJPkEaofhl*`UZudnrm>^i-<*~vMz&*`zT^3pk8KM)Zd_A^P(fr#3BOVddE-Afi z0|`;JVn5sCT4JTV&``bfQJXr)W7LI9n(04$Ml`hlO~u?Tx92uC@Gtvecsw&YJ&g{# z1LRe)kd?R&uoyyjz=)*)qll`bP#oLM-61~a?~Ms7`Q@iqXtUrO-=4O3j2QNeU;_=e zw9x&nYYy_1svXLwToinRI)haQ5%WsklU62tqi0`4zJRc;(_r^uPjcZ<~`hS5D^{uW4S^$vic zLbq)#I@ht%30cuC1u5={HMzN#iT21s%B~UdIt{AL2txkE*wf7rc}gIg<|4p?_>SW! zur0d7ezxxrpc=!F{sh#=bdpD>u?c9G-E}m3Dx~SXv@d<2ey( zcB*7qLI2^unw3j^gch=7MtFbF=t9GEXcw;lUF`&4;-fJ;N-!xx5G>v1wQl@NdZiOYpDsK=3Ik{DO&&v9T^k`J<;v%9UhG<)&$8 zV;s!SPm(Y{=2rTp=p8}$LTec52#t%&LWG(`t0TZie*IXb_Z;aCIFr!m^Z0&`d_gXglZgY-y_?>dGFs3Uln2+t$=n$qB;qhe{Gn%Jv?LC-a|!)GpeJc zvhEGr+t-54A?Q`B%L|6;1{oMn=Cjp)zC)iJIeE9;!Y_ZZespj~RlOs3@j(Eg?t2(_*beaT1Ro69P@8Se02~ zQl0UBm#LWz^7q;NZo_Nn!%aj>v01u@-{Pt~TXuU~+GzAyUw1!?N4LTn&ahf2QX_Vh z=%SU79B)B9tvf|>SgVv6?7Na`%5gB`x~s2=3G9kMXhxcfCC~C(fKWN!+U}LCHx>2W zEUpfDeOmK6Rf_l;k-(q_uy=}ME)QM z7ew~xN7;q0BIzoHym{ow#Vi5=RTfJw8bK6+*kRLG3awdXeh z32**HTe)IQ4!E-jguM!%R5cwv8|Cu!!a8Vbu2%aQ+}CQAcL_pbnmi)epuMsaJQ5lu zrE^{maEIRpE~Jn0_0c55Hh8#Rg2#*Pc^pVZEu#LY^VDo<#J+~W{|y2K?QRRFF%K^9 z{C11WF%;U$^EI#g8X~&z;LpQt=Z%6WrZia&CU3}Rn*1*q=(Lf))PyC5t|AbF3Tg7m zabYmTGqE8L%fekn9RhDa-ZQtI=R%!h7-ZtopH8ctR&sK{_64D=2@rTp(zlJ<7t&+d zD`!fTyG!UZ18PM>VJ~EYFB?Axh|(@PgK1qH<_M^~yfSe}Ej|i3q-K9gn7D|NCZZKa zjE9QRgXDt8U0B7MXn>{3;!`8JJ-R`@CHIE5Vg`@tRC1u`b+Ym-hM-kSL;T`-f^>N% z;TM-D4J3Eyts?nZl_8-IzMQz&V6Bs5xAecXc+<{rrZd9@UF>|7R2wVtju75$t`Uv_ z{c1k5!#aQnU!*$tChrIMlhDjr-O+hR;Bmd=p^KXRV;qdU?PDCO!m7OH^3?%xk4g+& z%rY^FTFW3UK3${1&e~rP1TTfnR;#=1R756Bxi@E*2aD}|#`o5{d&Qy_k2f;&m2vNLxGM+ZEuE80`n3FgO&KJ?o0FT~%?0*jBPAqWG zmp{BV@9EvD5tVxZ?(*VgKlaonTRLS&GJX0&bvB;S=^$LLhcFZ6{4@|Vr>kM|WbxKO z!7fOF6R%16biZGc)cY#H@h7v3AfRTi7pn)a4yY zD#(`n#S6S9!X3OZ33f)tu#1MU}XvAKCU8z;OzjR6)*D61?*kIhrC2tjr`#p@-YYx`2C%vyGE9^oI-MdCKh_=F`AI* z{%e2V=*=O>IOILE2#C_fLsyCo!@X4(;FRfe!G3ILt^5;UA`#x7O#fF$Bds6hf9i-OSred3Wcp4{zqA7Q<3- zHzZI8=PUJTF^%5y?WVK)k0n`ZL$HsBwD{9^aRz>GmGVLg1R>rIzpm`o0)@4;9AD1` zh8|ZQARw^4$36I55=}{TJYgLSU+>2y5L|{WiOk9Ce0mk zJf7eklLy6(PBALjz15#1)ovHXp68w8-AqOm32MC^3N!Bzez^Jh;xt&eMos9kL8c}O zj_qRM0S(~7$1+Wn-%(`-n(#gWnnNgMTrlkbf}@nYI3*em>;+v3s&ayVCjnZquqm(y z|Dt>Jd@4)3NXo&m)jp)P_4W0b%}XWhQ*ifr@7wFVt9#Gs>D23&0^VDNK%IP3&)~>v zP)rj5Rh_NyE0cPyqP0F1to2rEO(N<10ViyTiOkWVodE^tD{o8RX@cdoY3-)-gTpnW zo{lb_Su-*B!en1H4TlO1Ixclsm_r8I?Du>%tZNB#GmldaQGvhxu#JC$qyLJOz zSmZ6lH%C$T91*ke2qS=);Lhwvl#b~%cd$M_W^W%)f?_n)Y z-cb`_y&AvG^@qCYKV4mAjZ*Ma+0RR8c{!k~?Va7#EjSvwtN>kqK!~&=vNkU&K@=b4 zaGw}7e9Z5+OZtKlR5D3?T8^tbEQC$>vhXojxaR zix3KnhYf5>O0$#5cXAhXZ5UAJZgF3<3NhW@oNUPh9&dqLKGZIeC;D!8Vg>q|BeEyc zRM}qi!4)ncHU1*=+t@es-U-!K`jDq`LwwJs66M2Ja6gLHbI5aN9{!oVHDDi~`Ph&Q z2#;3U`UbO%(t@-fSODL9Id*6#MDp&|uEfB0&?K>8rttol-(4v+oBpj$S=+1?_?3=p zxb$mC2}Dk-xVK6GHW@5o7u3}0?Pix&Mzse~N|xz@GPB@Eq=>ZOYcSu5#B?*2>>imm z*rDz*jAKH1L(PZ$8|M@%`CG;tL$V6*b$=jJpJWtheE^f^LbV@3)mg{B3fY~V9DZkw zZ0a_ci1VLG*t_>_zkKEF!QjX&Z|8{r-BsdnD=MX~0`WynH<^O7QEje|xn4VJhBoM=bPO zUw%%x-i7=TKDmmPRl%z0n1wQOPiQdj>jR?x^)@D_{B+?-rmMfr6ipHob|EP#10k*DIz*`y!S4 z0l2sc}$Fmhq2UHrU# zy@HTvexqj(7hGZD>%5E;jgUiD4O18wh#hs^P!~x!g0*0DKofX{oJJIrU%4{ouu#COXwC*m`0C|%px|0yO4Xr2INq@N; z5@S4IN9km^*L#~ON7S)0qgj7`g+kgm(5a7&A!W<}QGkc_Yi}izHnHxLDF~xFx`vfF z{&M2E^)By9!`R~Yf{+Ibfdsj+LRFuCUBKfoXLpB|Znn+*F*0wAG`SQ2zN*A>r7)&1 zANpF|oSM&r#GV4X{A#XRfKSp^H(-YI;rq+SBAQVKo`?09v!c)K4^0EKD)iVEmS3)| zgMCP}FO}Q2HZko**NPq>VWh+kATUw(ojyq4KWzy;bzl5wZqyw-9H1I~V_+e7ez^){ zOuKvizFK}CqUk(`dazS{V%=G*_GwTAVm= z>H){|rTNj_zM69;18SU^0b{eUv+?6&x-3d6DGo^z6j;2@=3`sgmmY5!5-zOvm+O?> zOZt4P0l8pAny7=rY1h(obMWwmwpv!t0GIbOtaKo+W`F<}R}~|@ECF7c;g+It!H@oW zZ0s_RGvvw(Oq@ih_X3CmtuX%;G*oNj0lvwvEjkAm#_3gN;%zr9{P}`(%K51dhhG6d zWbZ2jl*&}`_N5GOJ_<->q=e6xA@W(a>t7!WO-;sd!@muR8N8UzTH{Oa_A5BBGhvf^ z)2iH)OMGipPP+8_7rU6MrpH8NwV?ixMNWXRlpXnD2wVB<`aXs`KHHj$kXIH1dl`seG{xZ(zn1rUP75&e=^DuM4bf%n(*pwFWS=dhyE<>mW5I*X9fU4uxdQ^hrTvyG z4d!1zthCMpi71r{%sBfGt8Z ze>}hw*GcXcEhD&?q<2lkyJ~WIUjF39NOK36jY#hS$rD0H%YmSCv8K9Q(?Be zL3V{Q;3J(u&TcgwD20~rJI-2_?aXZ}EBT2dnntrYf7`GCYC!fIn$F;_L2W@0IUgc< z9};934RG*>Ai&8lcO(2(!CAV_^R+uYd)L@t)Bo+10}` z#1d9b&JaBEC{%R5r}t9o!xyN^qg#A|k3R=Tlc7+C$VEK6<|{)r9H0&-X@5&Yf-fm6 z7DTd&`||uhGt`!(`q@5vSvw9EW--T_YOs4ziZQh#;~Jz*xleA5zzjx7pS723JNI`3 zb{pQw);>8Np08kKDz6y0TF96Qy7)F&4D_dk*woD;0$G?=PJKKAx>He9?5L1%|Nhch zwX56lEmG&Yh!ekVFU2PB5<^!=5*1!ufo{`bR?5HJIWd&DR4k6WEjTA*4dMW%D*JAL z^qdqCnh!socr%?ei9^K z*nvPrL_*@ST~_J|sc-M(6iS{GRu6U5=LO>rAI#5nm$Nu)Fkq$^Zrmp~u~L zMiPb@y8r9cq_ZlfpVwJchv{7oy z(Rx0nDZQ@M9Y!jTulukYFG#Y7qa&yGT zen`;8&hpc)!;8D~Wl2?YZA=`mf3}1Dk#gsEEC|+DvKC@Q>x&|#F#$fZ z&go^$hES&!j*1Hesi9yU&eANSishu%^?s>kk|4=)%Us0zb{Frgu{7EGDiHLuGvXzvzHnP#xWcw;PqT^#g+Ts=^$%S;20p` zgN3`xfb04UuCM1fdG5sgck2S0=6n5lVDDsNfMW{_p8(_4Fkhzv>ATzRZtyBd2)m$8 zSgmcdGOMG6g7>A}WUC3MQ-~WMm9EF;XBN-c<%duE&DMQeDNzp`8;nW4`{6J=_E}xH>GcEcK)fcB9#xSqhzY!Qo|tr%&hWr!YHM= z_&fOe6GogbglbL9Tu`At@AWsESS0GYoX*jAe|eL`;k90P>ZEI;+c0}+YXLV&(RxgD z>os_N*xvq;cu=-za z>}~stccb@bwfcsJtLy8^ndu~lVxTYG=Ha2XvAo&Wi>s^1*jP@;a>UA4%TGPbwM!N8 zE@_sXfS9l3TuU~|qdatpSmi2i1>_M&UG-#U z_C~X<5_6(xpiC}o5o&`Xx7QPybH-2k0)#0mnG7gOE(Kt+S_wP>-pW@A{Y08tFb`>v}1|)p6PhYAc!oC zH_3qO;$l~O{8)H%uMJg?tPk}-9)R0Ql^9{piC3Do==;mUvDef zW3tJTE(M$IX9#&T>Rcor;$?3vW4B}H72<%oU%s(rXHMoyCLL_)poQx{QbZ{ zWmrq_qp16+))C_p))|2=UTa~toEqm8o;?II>4M_`5Z?XXr5CDg;F9^Q)uQ?}aH0U+ z56=<#tm~+x5BAWOQ(2XqvnDsM-7Lq>3OOq4$A8iBR4&X;^zpVLp=N2K`KS!9+_xXo zyw6xGHKqV0YThl`?d0Ty=E7SnsQ-9IGd3`gobyBu4yt#xd}HzFo~y5iHV6K(r9PoK zd}4FIA}7*jS!tEfa5noy1YE1enK*hd)U^?vY zM`Y1%0TB5uTXbdRq-gBELAt?0rXJw}of)PQ0Yx3%d^)B&VHCqk<9JpFUp z2*)7z%g%B`U#ICM-}yp1BY8A{d0OyP_)`;zi2uSu`cfg+ok+l5u5PEvZ9}8 zg<%N$wiwdQs3H|p2Itz==;Oq94W^5(uFoFwCFqjQs#uQO#(O^As3$^RcZT%1O+;>;W9=FPe|4pR@lHS)7de4)x2-lO#6}P%pu1A@T5cNr z&W519AVr*~x?4D`tC1TrbdcI)?0L4jdR_MbWX7JqlW}t&g6Z6X&7pLo$NO-lD%L=a zf{XQPIySHt*zJeJGWiK}BDkaQJBPu8-dH$Y`+VJZ8PH-2)Q^RDo6e%|X77FP(t!|H z(8=SwHiks7C*D%LLE~X)_?G>;IEy}HHaI$MofoKCKR&JLCovlRtK`r^7de^9{=?jaI)qZl8+2^z-i4XD+LTz8OJR z$??t6P5(CZLtRBD{K8NI^E-}m3HZMWf)PY+E!O#{c!QUR4o!gyymJkT#Ny2^{-Y`C zdEF5#+4X-lVV^C4j|FfudDbbuw7E!Gb zBDm-N4d1A4)TFM8L9_ys{`N%WpEeXAf@v2+oG*crevLfeT`GeY^`UssD$!fOISm>-DeM;DOhkCzH{%DC7v3Je6p#0)O0@vGoHB6a?40q|{#2YZD1yoiS~ zil&l(h7DZ(X6v@}K5*79gK}paCHu;O3mdOf0B)|oFoWt7_E8>6bAj-wOKkGVP3O7D z9-V7O%<<}zt8%YBx+BX7>`m#={|yYiUJV0x+ec-D`sph8JsY2`y{;mWBi{+_{))+vFn;y zT(8w{t%J)9n*F0HiVV0ha#RQxyq|vXmzH%zL|1UoS*)i`$8AsQ5jAA|TBI37k_Rl9JL)XO+)Zx$ ze{67M1esGS=A8^KCwAEei^Mr6X#LttC@@%mCN+GQH_*Y?yuTqSkM0Ex{8H&5$8v1 zBP6vaM;1)tsHV|nqZVqSiNB?c;+!-U<45Bh8x{~#&1sU>IXfE6&a5xg4$vRp`OJ31 zre270%tLPBOqc;;2)l6VyB!rNaSy*_+Ee5yBJkvSZj&ojso8%Q30xqIPt>AGrk%w2 zg``obT6sC8+HJs`AZ@3&W?A#f2gb|+Qn|~$wxE@brGutSU|F@dP^Yn8?cCFi z=Sj-#u{(pFv-LF^LWMf+UU%p75%~50tI(dVs%n91=(V&f1&7ql?;g&TE_HO15}&E# zJM;ktYMnAts3T@@zlmNI3~4n1tV$?UxVF05#e8;c&3pGT7(wmsX^`(IEmqtTqA*<0 zZ3%-3afBXIFU1pnC=CI-TbndxLwze}qY}fjBhDyu=B(s@+Xx&_$xw@X;YW;9;J~8? z)G;rt?Mdim?tDqByuXo`(10uetqvAo{aeS(@V^02ROB*GhOWHd?tf%AbMak4&A46 z;1%9CkMepeBT@3Z#WwUXuVzTWI6dxZGwZr@>E08d0H?Io5d43nQt5M32>y)Z?13i^@ZiknHHbTHmeP_=HQL{N6t^IJ0<|R1BxV&bX(@pdNpZ{&N6RT%NC8* zdGYQlm{)Uk32g1=p)Pj>NZC9qWDlWOt3C%RqGa+Y8qJ?;KYa`e4eP0&tuOKLlZ;F$ zx-Qtg1_M&~sR!V2JM8Rrpu^s<9{=NBi;=D+S1pt8Uy47YXc&_B)OoC$1c>n_cz7QC z?l5!uv_OX5^Y(P??(R;nQAGp(V-^%*&hlSV*V972>U5q_QQS!7V&enM0$ja3bCebTok(k~e;3=(=bNFP z-kWdd(*}-!fZdzGRlomI5n-{guS))9!t5|t;gf4`JTsUh&J)ld1Qg%~*O6azf&BU7aLEd2QChBZNdK-L?y zqMddrODkX}lq;algAs6jNkBSm$cN{2biOtZ6Y>+C6^|>T=EYn2#DzVW2yDEVGbVlVYuD4r-fYq|!-fBp zI|3)R@}*}e=AZL^FMSOiAktij)Mxuke2Rr{vCCvnbOmP0IcR6`u_1E$7V#xj?2%KV z%MxXGk!L^A&KBd81sY-%VaR-ha0GY85NdVN-^~9Ru7D!s+cvOSk4R6%AhkF-hex)& zQ2Uzx2+j+;;F@@rI6t-v`Q08~9u&=iB=%s6gCQ1h0uYHVf=wsGS;5HXBMAV;L3iEz z1-ZSQN`*#Gu+Ds`u$5Pk^~e1~1_G-F4xT4?)~LPdQk58bB4_@GU*a#^USultR%%qQ zr9GxB(Rz%UGu5$;h^Q?xzo{e1oOeug1a>|Aeld$fRy zi~IP9v-hrzCkC+YxakOZLT zPX!kKSfl?Ql#_8R`-3dIR4F}C{k`Bb86Qf*Kd|tlN?6}ygGpa+eZAU7$=A|yg0M;Q zhjd_AK7=P^OW5qsfs?{S40Y#2V}P`80#uA4WRY;V2qA$d2Y!q@c$!VI?tV9edV2HO zFDV*aii8^7tZ6_DaD_fV;sFr`A!5D7XgHeVS%fp8K5%!$Tv*l8{un`Q68}C=oN43( z=3ybsvKj;KmU!(PB*21tnE1&L63Q*X0nfWYxJ8GD#5)h!cyzK%5(tOc{bEt<|Pk1kD>4e`}HvL6T`a;c8}OQBB7POEzeso zJg53v8JpHV+V{w_b3MR1Pk2udnuwW4gmCQVGw_N+(qpsoVP+sl1Pk!p1d(6ksv;4;zO8v-i}X#j`X23`CnROqSXe9;h=tYF)pd38 z*I+F&+WlYTK-30=_AjsKF3<<;IwIJrGtOsa4;2DtLdF9DsxHS@G5qpO|8z*Pu$Xc_ z)4PsOyQ`5{Lc|LtthEeeY$f_#HI>^K1MMssP8p=@DAtT~k>!gT*=#cQZQctmkRJaS ztJZJlY{O|cYCG@QME|5jHF`Btf*`@T9K*Pp_qoVNG)ZkxAA&2 z)KWwkX^+_-@3Ya%jy6*JE_{n{H>7a6$IHLyscBol$-NPO{n*c*5!+$Gu#2%ZuTPJ) zoZha;go4l4#aVa>HJWs$2A5f(Ii?dp`>c(;AQ;q~@3Ew+DCBR;={xni*lbYE5x+H z{fdbx!2Pfkv%?6>(p z)XVwY9#VKKHXk237=O#n(+sDtsi^^XKG$opT>)3b7pvgD%l>D9Di+4l1nSwJ{HaDo zG-?O%wbbAq$&bMur3BwW-Tv5_-_5%JELi%*=ilu`SO#^IRurf}+`jIK-KHt0JwRf- zO{6@K6ZQR=XIH9ndJWQ-+@C4&lhGk(acvC0FE`c6(~v+G+|&aLBON8XAe0%lP0{Jg zjT_~{>+#48FA4#XvzeldL99qAUz?8s*f;R=c|mM7@Vi~kx}t-2+#rHC@4Bb5aw_f(j`DfXq!6%EA8;~!F(FcJ5*Ib?Zf#f}*-q53{6k9;zf z@~!iE*L0bsRZ-_|x*@#mWv&G)ysN(I(L17thl79~G3P|npCrW4M<@bLH0+%GH_MO_ zY8vqwVRCo~UV={(Y~2dMEXFJ*W*zvCeGM*r{t>-|(QZdSs+V)pQav9^navPgsul2v ziK~=o)acYhRgH|zS#M82Jo3QmYP@1N2@twbGGuCD6A(oBhRT=4|2>uQ^z#?|cg`wgK6^JA2r zsQ-Xxba|)$TLdHBuXKe<{{Sj2IAkmHhU=U3(=?`%%hK(U=GT|&5xKO30PHeqM7v}#wY#p=iw|Gj5u%KG2duT}RY0>UF;9Si=C%;b z!-+O+Fh+=7QPv13lJcS^1*5pliB#?WBgo*t5P`p93 zu6CG+zA{sj@vC?bI15U#gbciRKk+cb6;VFG$#L+*I<9xq(+Gf+jzn4a@*Q`J5Hg z3u4{jM*?^TgbP{HWv!p>^V{0mGFikp|H~mQBhK%Jh2{CVlQY%)p;E2*Tv1vo?{%Wf zK`|eR?U|0q@&@$v?&w$Wtv)43Jo^wzZ>zE&I-t{3VlR7p2-2-xvL$yCe}by!UHq#|Wdd#i zxsMHgZ5UUJbz!jijv!RS@B{t1g-*19-~`HG3@-&C;+Lxl=FNF-vOVusz5jWzwpE3h zINYyHl)JT3QQ%do=yVns8KrzU^)QHk0RPz5AEvzCmRqCE$Nq1Zm(vUT>t{ZZ2yfTA zzyguZb_a;;c%?YMoE)3lX^w@Taj5*=c1chRgZ?)}YN}jf3My-0t!olBv0#DD6ungO znyC_e@;_9erVW{IP<#NpFJZ*o?`{6eTd@1x67R76kINPqg;r1EX89c>vA(aw)BW!s z;-S=)@|o(-(@UWnT$0rtpA6)QPo~b?BF1F`pUNQ~6n4W$R>xcX0DjE1bfgNqn&;+8 zSr8P$3G8*XsF?LX^V#3L!ziV2H=+2gi8*K0j0VYkR>sJ`2lp~j&eyUud#3-M z=7C|Qe+7r8;pyE4+*g4Fs9P0CINx)UQ(b2Lnp9PJ>$(M%NJ1_%*b1*a)dMTBT%W6) z|NT~w^kg_h^@Kzd3&*ubM@6X<6(1L}QqblnoNvhk#jp!Na6YPQwZ|%XH9qQgJE6~Z zVz>Ws6yJXY=k1^jUM0VW9+=N;yzwL`yF*Gl%YtJhTR}j)CZH}6I^NG84S8HW##j~U z%yyo{a4p+Qndo61rrtZLd0uW2qv!z5D|X>K1C&XS4(WepK@(SeCpiu;G|Oh=O3dyXbAbG##e+ zV`_%(0SBQ)@zdeww&wGEqL)5{Amj-&+qtqOlWL(4--}eQCob1dJ#l2Kh;yP`8tYp? z>!W&f3cW_+A9k_y&DE<#Sp@W9I*?{^FrPIe&hAQppu}HX$qf z>-Y=!1w7U0!Yn*|vs|}*+^dd*v&JfC#J{icX7_~lzF#^+b)TRkqObDB{P8>>jTonS zjq_YW-RWlz=WRz{qoCmJYTS^Q_Py9QdOYI1`u5gSe%m|p9Ld+Iwp=#$>#s*e4dQg( z0MPwj%N;(07H9ZlhFzst-04UO?Z&y5khhP94>pY>l_c;B*je|?e_x?1EQP+4gJii| zN-e})!nhRtv#hSc%k_8Xoqg^sBC-ESzcy?}xyOM|~Geu7=dsQ%AL(OJwR2DM8Aze#qmOAn48zVFsu z{fhJ68i|vqB(E_jR4-?JH{sWkgR7pa$n%BAnFQ-?7_0 zqnKs_xw=u^lt`z32B0KG#SDGm)CjyLa5FkZU5=@ot)8L~yJz$!RbIuHknux3hx^UC z8 zAoOKT^kf?e>sO=-^^;KR-5zgyI%N7lp9K-FIm4>e1QNq+g*ew85!CnanHn))TYRdg zq43!chNAyj66utM$#I*mfep5FRg;SgQsy;A%qHrq&PWpbGl*f=B$+;JQ5jC)e(EKv{mCMZ7t% z$U%#j$>bdAYrcA_8I@!$z)8AytkF9zFMrJdmA^(4lavF7QzE{Dx-mg6b^?EW_UehVoJW<22sQVlr*m;=6V zE1cPat)9Nd8oz(s8`Rag0PHVo5vbs1^{$UbquauPB1Nonu7RU#6Ywno81F3KAPNoh zv@eQ6bGAvNK-o7_obzc}+AocO%Mxhae8xdz%1p6T{N$pdZE%A@p{Ii)@K`{pNesoL zhq5dTECZEzq`{1=Oni?=jSpBJG;;$d50y}+2{)S zI1Rq{*ghW^?T9Yl?@B4}$I9#06WLsomXTO2Hx0bZmE~@0Bez~kZ2Sj;-ymqOQ=50+5*FDVp!uulZf-q!~ z9dU*m#A&z$Y!@Xw0wao2_{|#H$m_F9vXysztf3`SwGOfJ9bPibvmQ2!ZbQu}>3ly} z-Y}wy*}jR`7Z{9$v#SVaEAa76TTWKQF93UJA{0}wQxNQ`klP<2I*Aiwkrq7wlF^E& z$bb@+cB8(a{QP`yd)o`}=oxXpjEbfNsA8Z#BE)Tr-G})~Nh1f34eJ6>7x~XegrUPM zhA=TL@&Zt2(+{ZsDIP%iU&Yh9ai*~{{soznqjqb(14 zyk`wVq9`dr7-_#7s@{c5N$Db-G({Se+!3~1uHP~`?}B7M8~KRGiY;61preDrtxB*cY#v!xL@MTH3ZZ5YI0~@RUSg%1d zvStn7iWqPw`IXxhBCIrf+x6;mMs0(PC9j7NRb34Qy@vYZ@Cak-w-@gP%Xnqu^5y!A z)02>c4|&z#su_hg!k4*;fo$DJl$_TU3g)iM^BLJ@!oCvU-cLI27dA+!KJ1!~-owap z#73{PTtcuHQ_(2z+fl6r)fp*vH|<4#UEmd`>)rlYZ^8cAY|E`nzyb%KtGNlqLa2bN z`Ew6_o*R#SYU*rI2j;TJ(~%f!nnKRngZ|BSxG;15fQ4aJKeG32L^GPS-P0TDW_gCaU!h5>}+BZ5`7hw{-siZ ze^R0g$|NDbS_*8eJ@d0hl32K2-ocBSrU-;~zWq*T{~7(LL^t|>0&)vnPPXjv!1C1L zG0(*V==bB{vGNK*S@eZsydLG&u5LNvH4@w04lXXY)!FJt{OQH1qSb>j zqj1jYvvB@}3N>JCTO@)BZq8WG_gbOb)vtaDTote$55!~HTePJ8 zLK1~H2eVD1M33KOra^YBFmB3_M^?!aj?iU4hgN&Jxk^Xa=hA6|14|Oo5io1=(1aeT z=_n=!r;48QJncj-&TZ;LbR=!l^{;Vf{4OgqVgxeT{pGwo6HE)5G(`*yKw!J8F$#Wy z=8qr&Su3RuNW)a@WTSKjdFY8eqe)rWCU@sCnb^6q7F)iJtRJqh_WL?Yq&5b3W zTUWfzbxR?`u(|`VqnidPrQCSQS>?~C*#7a~L!BrpEc=$lK}HmTEXQM3{GFyK{gD|1 zdd$*dknImfX3J6xr@ys}kl0l4p%%+ndujN4y(xTVE7bLKv&$H0!n=J4waK0oy*jn& zg#t8puoo**z|J)C1ek-DrIqbs=SJ!ceg2#389#4_2CdJ+3@wcwM8(m-aIn*YW^%mC z*^!TdVtA!=A7au7oc2mzTuT-w(|SuV-nKq+ro80+D55C3GDzI0j(|eBlPsTH2773 z)uwOQ<1@MV{p^+3C#gGdU7x6IowU4DffmC6Bq6ycR%)OL0ce+VStOgbj*OW5eWX^p zi!5~vY)rgt3g?rAq3?j`-le}Li&F$eN}F+`X=x=Vq1Xa8SG`m+pvFkGcy$UO#t@sV zIkF*P1v^bohCuJ zH-G{Utcr__?0|pV#k{<-XPu7f`^2Ih&fmgd$wbXo`vtN7h2+=a#}^AwOwluhm@?E2 zGFqT`!bix!`sInKsX945CqGVNrm=~PHZ#?WSPnj+432w8EwWqEf!9ScDl`uWc!dW5Jrx%yRA zN?eDpA#j(oXwt~4aRb-44s6k$+ty!BdSgdOHAI$Iz~7Y^0qta^vnF;dwgE4DYAfi*rVRefe)Xm)gq_!3ET)F`3V& zQS|rUUmEvM&TY_>D(jkdNH)D?I=sAQ<(7~-xybT@b+q|UC*)BXb##C82)3G0umSrC zHbv2ei)SV7j2#6BDX8`MxQ>DyUY=3kt~+7j(`JY+LEwIUdqiLoovud1p1cBWdxOQ zP*70N=UNph8WmH7n3eOW2r#UQ1@ ze0#7wu+R$~Vz*v$KI}mag$S)9_&9AcyFdAWVDyJRtmRX44Y-0r4pJPh=S!ogrdF0h zRb4+>^kx=#OfV-GmxrUH(XuAZp!g;o8t)diClgHH>}IeudAE6S~$E^Z7os83q8DAPU$pc$n_UKa3OG*L1jms_bY;#`HZ!5hNFir91NDD?}11a)IP4=y9jLpyXwi;a41uqQC zm47ca&$MdxrbT_la&LB@`}~8Vsxx|@T%+q1;j&qu|4zbU8xk7s=46GPk`iVa@AcPT ze}=pWm><65GF0Fl0=yr}s~9U{0a3|?NC|ps4rSz&20v;$N`8>>$NbA2f)CCDIv|vc z^}_xCAG=GD>XPE6Iq+7$1(udh^-3AAtat$??_|?{JupII=t{pEijiEbXlE(BfQu`YpdZ6m(2LoKEGe6C$oinZh||Fhs*0i1YeDTh z1;}2YdvlLbeK87F!NX%CZ9@?Y(1x)O1{6V{(lb<@tO;P4M~kDUe~nI?xebg)pT)AP zugG;d4k(_LwSsLyU8yF{>f3KBBO3B@6pOMJ2I5Own}v6jp^LRRJBvg+0_5<|+1YrE z>e|H6D^UoPH-<{>?49}NmC~@qaCPxK*y)L?Fv5x_C+P!!YFIprw7&Z~ZB6L8)%5Fu zeoc^E6OpDAYt+YI#43&11L=HI=$|zV<%_P z?wG6ZtSEG`&ymrGO)Y3g?~OKg^ul*wvYqb-CS+h&n<~atN2Ov2EM7jmAl1zSHmC`}g^uy@xXgGtYA`-fLag zT41%TSI#LD206+$7zp5m(rotYrH+^I*;Q>0W;}$#(pIk$_62v)5Z^4pNBzIahe4hR z(p(#sLVo=+MJPC{>5>FlwH;MhMg^YOkD?nO*aL3V(vh?PWQnXv5oelbprUFv-l_a@ zXsTZV*9^Di_Ha=;+|8;RMrCN!cu>q2k|P<@3Gc0b56NC9N-hmkH~AytK=DBcsal?O ze<%`i9P?+7-4kRYCKlFpa?KH}G53K)RAHrkMC10DILY`=P9#uaI}4|dlm*&<(66qY zXk5legZbt@Iaxq7n)?d_L^YO8pKQh<`M?1#S9VQSno8f;PaY_KMu-WFs!WdGcWvF$_`c|)ikkly zbSJSG?Ymzd`un|TZ6Q3u8um~R@EvzJr^sllbVn9oooD;WXlvB>fTLppIeWA9t)#0o z6e{DwyTLa)%8IcFnE>0aUkE9&3Wu5=SUQ_Jz3u3mrG1&qsJ>O_KZ!3ZQ5;R;6-p7m zP;QSAV1D@+I7e1nuOY)QqBHC?GcYl^2Q7pKdqn@!u@v ziha_7OM!xH+~QF+h<;)Xnjg#cA0pEbRGI&3y|!2~I4BtM@9TneKUct7pqm>9CXi-y zH1$=tt1bFlSP;xbczjw=Ah)7B{(%;74||B7@GY_}5>sR@pH#+y5Q3xIauW z*p7@8e)u%lrIte~=Je#>ggfAVi|AbzPziOg@k$&0*9AkP z5?F3RlOjX%|HtNXuBqe{Tf7Nk$XL<;k&=H%m4GEqa#>SR7ruPQPj+Ro4vXk32iC|F zkyaf-v%92&Z1cz38MyyD1`BG?PioxA|9jm8S+)sQj@fkDLP9y{o&QIZNrI@zaQ3Ry zIm@&v3-+k$2fM57)(LvBa0>D`wU8*${r8_?3c>WZVA%Ed{{d=93;O%;wXz25&*J{C z6ZXHvuF$Wj?x$`7Qt{GCz>9+pmcQfA8tga;c@=qKUKu}Wk4~_8d>#Y_0xvHWKEcxfI{x`(NU=>p~6_BIc zx!H`c{rh4H&>Ea4v1K^^9UTx#6GWh3@9eR&fQ#pF$2?E)Syf&Muwn3DiC18P`bw_G zcA`Z(`M)Fn$G-mkM4Sa-gG^W2WD2I4Jh33CdhpZVqiSF@poUH}u_$IO)a;yGN~X$gn6ZggTOnWq|)Zlz*DMU$yPTvAD{A-~2z1X$FPB+BA1()h7q= z(O@sbK0ykHJxTgf{os}VOHHJ>32mK-H7EiLm(!lxHVnA9|fB@@F@A6M&C>TemWnU(eGY z%rh|V+#Y>?w%k;5pzV#&O%W8J($XM=E`YzV#WLgMGqS5H2aqqO>Z7CE)mb86$|M{9 zdvgB|x$e2Sx?X&kz@D)&T5fI)a&%?29e%`XSG++(L&Gww9saf)g#Sd;O@z?A{M&sp z5(=4kazUtrV^`AgE(;NeQ&#r4bcOtIoQUZr2fe$yOI-iM`9#vY^=6_W4yV+xNU%xU zh0OGcdeFt*6w=n80)T82Rf1j?@x~qMqB{D`xYzy|L#rQxi_Fjw zW^qQg#zL!0JjI1o<@JE}@-6F73;tZ(pE6gV!f=Z+mkcTXAHU;=Nu}r~LiGQDl_jCm zR*pR%fed4dqavEdBuFrVW@I=E1f`q=41oTJ7ITpQ^Div*3x7(U)nTXx7Px{H9KZp1 zuo(@;l9)Wk@^rF>Yb^<1J2d%`AIVCA_M4Lz4!kCjB2gds!CJ_$CMcgf#=*=0R%t1= zPlgyz&{;YjyrI>X8{CRNzNmmy`Ae1-{y#Q?r0j2K3b?6!IGriT{ptS-;;#Rr+b5wA zKNsmrfx4*^V+|l816`cR9hvs!ik*lceD3BmQ_ns$wOkPbX%i&L(HP4X&j=u|y$KaF!DU*(HShUV9jIUu&nQ)q}V8=X1C5 z3CCOu@~C$2nRuR?G3m72j7563)_epM75nRk1Ok=1>*+*=$72SGt;(8`5)+lS z#P76n7XKAGk|sDTt+yP=O(3;^xHkSCg7Uoys0)!vE3w^zak9lt`dc{reAIG(5J
MV=1=oH)G2H+N1lkk(Jv=D~~9c5@R+nn-w%6_vlRR1E39xKn1E19LdNy!qxEFT+ABCU))k;=E z=qt>OxVWCI;J-5c=VXb$gL{rC%p`IQRlwTesM)<`H)F33D znhWz%kgN1~Q{w$*)(QB6+ps0~woIy;+eODxAOOWz&>d}JZA99KO_>(^a|a~i2X&I2u}x)mG>CChObb#zwq?>wgg?tmx2D5Wx*n zCY02}RMbRq^4t5?2}HVP(@7|1sA2tN>4%5K;TCS|GBM+zo!1SKWdNv;46QgKUhVXi zVJC|YnSvo_O;tok9uWocWVorlLZpeBBw9voYQE++p%!BBY3mGngu2AS9o$=(4>8St zZSf_{QyUh|$|TPmLl>c3X4zX$s}DogVtcQ?$;8i<$Lxoh%~VSmG>KS+r>=O%V^(6-x_o1XdMjEBa4-uS$a8 zblO$fZH2u!r7wg$asZN9&qENcM%*jAqWB+!ZindZbQ?AR10L8>6?Ayj+u|M38}~dS z+S2qeojAVC;xN9GRGuZ*)5Qag?~GAkr<`lLb;!|4M<8pt?U>rNB(~aSA9vwDMW-kh z`$j%FfcJ`G-$z;&?Tuws+TMwZvDB)Op^ts{hz6hPC8KsFMGqq<<6|s{W0J694u*o0iFt~oXan-m6sAJG)gk~YP$988zYLk%@9M~w-{MJA^Z|xHTDk~+69#- zjW>p#&R=fJ$F(BT7$-~Zx8VE5FNtwzQr1R$sD$4mRDotpQn-R_oP$fDQ&OaF6@vD? zwL&#&h4hQQ24NpHUEY`RZ@zUscrGkqLF(7g6Id?D z#O&rf?$v#ia6A0CN-N-B^Rlw#))^1Z=a@k9y!y*@)RZVJmP9N z+Nyu45~KeQHRb=Jn8SNAfFbat_@2UNmz=bR=l8WMYQ!NWh3~_DXdV2)ZHy#0CA9Mq z$funA?FnM_2K&<)%}Z>m?48^_I2$ds>v+_kqT(o0T_sakts*Ni0_tffOpwEeqD&1D z|0nO9p2h@&uCp}{M_t{H&ZX=pxKbOV_58Jhj^*0^V@R=F9@U#0>r7V! zO4<7UE^S*Ln?yxLx-qcGd)(Rx?Q6X4E8f<&K7=*lY{b zvgRu7`|Al=tntyzW@BaYHO{Q&WX-8rkM0=2UnF4s+qI3V zUwd7;u%Hz^(YPLXZdKe@#pxMqY|d}XK4C?s9Hx0Xeu5NR!=lhbDvR1fk7QO)tM9no zr(&isY3d^|<0ne7>JIvzsWnaY03e{eg z%YSMVAj2$(teR{#YG+?V9}r&4%So8Y3}@SW>sqm$wD}>bHNzl zu`+e%7GPByPP=v0Y4$NuErGqHe~|y`OlY$1ugUit(pYX*<7|Z4mOLTkbHKB0Qk0@{q;Rs>a-20Kcy_L zSifpd_4=z6^c|n^m2=134$d3Gg#%fZ+eH6zdj&|V*~OFqpxna01Du`}&avzU`!DV9 zDQTq^!RCdns#Y50qW^}fcRe6vTU2i{54}izlcBB(tnU#hx!^d;cAh~^{|)cwy*3VoI|4WnteVfPvPASI4`%ICs{wAmnB; zA~R?umb5>)dTm!P!tG5&&^9mR$>q?@6YDzW%?&St1)J-)c+iu5jrv((9l#OXc)Y#8 zYl;GckduLzN#X#9&5MTVMXL;L3ODug^qT@KPhf51>*M7c6nIPgX2KeTLLPts$5A=% zusxG_>4i|jPEQ@%cnNhFOkd}ajz+K0pMv0QU;X-r>O~)&R zo=j@$9edHypnK=Cvf9ibFNd_Fe`N^yWl?Z~#qdUOWMwV57O7WfljvaId~dVo`eak> zczfF%$(xZis5~Gf?^jX+S3U@T6K!MYogiF`I2##A`51UVm?0TxthbWKukGt3x_!XM z)C?5}sxz-2RwK(c3UwlLg7Lt`b^1^tzYFhV^b75qRy(mGZsLaghBT0AP8-ppZ>r&{ zRd#c-2|)oHFF!D8yy?!Zuq8I>UTumYKo`?m#^2c(s^AoZu1Cr~I7FWhog#z(gQtgY z>sn4Y9_8awzD46j@Cf^Ujbl@=ik*mL?0SP@M@ic>|ccFYa z;A-!O91O1aWpCX9Uy#ozM8mp-#l|=clL=arf#xRuU6ByI}mw4WeGUD%0nF^+tPwT24f-C)5F znLlH-!8FV_@OSK)>0zQ02)w+|xU&NZ6gY#Ph?mKtkGr3DRSZIB_cXz~3Ws%(?~;8f zX^+0)oLI7Y6GmmJ)!VK>*tmhwhkDGEzf$k@oV_Sf8Fk}yFg}g}ucTVE_?K32e4w4T5+@ zu%M?ze`s7Z;uDx1CpRY+Jc2~5k}COp;_)_>P?9qZk>?gzv379}n7i#Cg$P9EB!*5G zxbM+i=^LnONZzF8>1g4*M^1+|A1jDQrjfHbtJRSkaocWz zYa#JGr}o4DgqG2EacqHO7L|Tmf2iNF#qhqmdzkM1#u4^xC6{g_u*Ae1npdPcqMY)< zt0yy25gY~H&B(1VZ=f0Z(2MCNESFx^^BR!lE)NbfdSCv{ceG9iZOBtT8(jCc58KfY zg$IjY7I>P5{KH=~uRGJW4}YTDj1*M0RMG=2wR|+FYHE5I1Mn{!f);cvEj zk^Lu;>`?BMAX z!F)+}5M5Cqu-cp0qYp6OlXfh!V>?ljI3>kF-cUWxK_RXRh%-`3|D%D2YRsy=4ntFy-M`DO^oH!2_Hk_@9A4kSu+CJ=cPrgeM(* z!#J7S{y%5*KoGscTu|w^kZFo_bXAFzhQ{Jzz2(5O8l-SnSGa5zm;x0ggpYdHy91o( zOI2Ht`nrmJL&Tot7RwLMcc*146|D{j5<)@{$1!<%c|}D>AljPe!-cg&4Dw&)?4;7e zB(<1bM2h7I_WWe>IiVtO-4Pw3`$gb_=3bGi8|S{IzDtPiJed0oK5cCejBujJ^-p=T zkZ~uzy1n4VY_B8FC)=cj0X#g_xu>)oN8`rp+63a{)0u&l9LYL6Im~=4921($V;mF5 zc!W&vbH5V@^hmo=&#|nHV7fv!p4{oYGRN5@I$Bef{KO7=pM+EKBDUog^<6Q#p1>~B zFEk`Qjl+7ecnM$Y5-GJOAPk|$?tkxLgE%ErlJHj%?XAmSOzLpTzj*PpPy90E}3Ew^XB5Z94rUH@f2JTO5~bxym8@?5jk}_^JiJTVQ51l z44z2I;OE%bXwdY$Unp8urnWrybCC8X>1}>#I!dUqd~6IDy$%H?KCz})($HWwQ40|c zDT<(r7W3KuH5%f>J4IC~9D8{S*&^$2Fz&9d|YQ-Us; z$9hzLRma|#WL*{lx5oR*cyhC0ld^&Wf?n{BVY=@)K{{w>%5yUP*u=prBH60s%zwtd z^9;bNsov%$n!Cb5Ba8rp73{pR4y$6lk7B%E?!Diijub8)wtO$o&b*Gsn$yuAE;ib% zR%$^^Sm97)dq<1Ka&?d)fS?9oHtQ1xmwsmi8t>}k5IOHHsuq+KHitF-T(q*kkK%YML$w?jXKk5n`0aactK z0SBj&YfsDEz=_f>y5mFvD+r~AX=CGk1SbFm!DUCa;)>Nv&39#e=|)=9i&PKIyH&{BAAXww*1XpGmxrEs;1W*Q16 zKXVFoT>TI))!ll_0_@IEJ6{PSdXNXPY*$cG8V%aq=#Vq-7L%vlRv;(%x|!%1`t(c> z6i4p*3#mL+2_%Y|U)$R^x-!Kh$1uI0+P!u+ATsPY{nFt$e20RHF$Xa`u```eoC3lS z$`WsnLvZvmXaqPqWj-GS*(1W+Es=_T<|e8xzak>skFwpZ|1S8w1JxxJY8fwsgMtCl zv1W;o6ySLb-vpl`V(b6gj&BEh+w0B?VJ*!a=-RVt7G??`YnFjyhz+(FC^_Y~9AK|0 zqV8`zL>Ti0FoG#k`DXX~>g3PwkEd*YAU!%!U4nZs#Vz-9X+MPv{PMr7`N$Ia$~@;V z&rX`uJ-H5DrH2D{;q9AMC@8U~rHE$YsxeuE6t_-lLmP5HoK$uWjXc@tY(}+4-t@Tq zjM!`s7CDr3r4CDrId}(!1m;Cz!Kk_L6zoB%`$IUa#*V&RecPwWuS43WLjq5_)MU4; z$>hpfutQ!Is!Y{p44bGZdhg<)F!y(r`gWHdxCgY8&SMO6@o_2DRpl`nH4}OP{VUc+ z2E=zYfldk0>#E@bBdit9$2g1`zOuFZQhTB^&5a>DPRgS0hCp#oq8nNd>R;;tn-Se! z*C$}}Wpv~iB4F@iwNP|kM=>ReMWw?6FZbt{c|Fc9F842&T_2zh@cyBW=AHBFqg5)ld%iV)YEPGT3>3H1;UI|R%;+0U+%~&XOQ_0^^s%=O zy&h^0G8$Zoei<3Own%}}3mJ@GkhBocp|9+p6&Ju9iAW%=x}n9urOg|}J)%#`k^6S3 z@NtsG)(Um0=@p-O905^I&gv+>A+Z>1bquCbVnMbb$EI{p3O}DR3pJjsBNSdL#g>OJ z2iQ;&n5cvqHvxDw1mU`mko*5A7*GBsVu9UELZ@enRHn*l=eMj`=9Qe3)#wu`cB`DD zL$H1a@hGY@le4MGnwNYIUfxx&6YBsv=$|yAO z8pNs~j|Bnno3iaXh_`~e5`mgslD(e_%C==3Yust`$KqD^kIFx8Tlx*i*|kx-p#9g| z0~C23(5PM7F$J@ge`u$tivcb$Rkyq;pw~rIM*Sm)eOuoo4fi^68$vG(UM1NhH z!DGQHYFt4`lwkw4gz7U-aI$ECl!=Nkp1D?#ee?0c?su&HTEEd&&mMc+>4E_-Wq*;e zq=K?8ksZmqS)@OuAliCLk{n2Qg#SOnQ>E9l^jkfnQj5h+vo-3JT2w_LB&w%&!x zLQfvM7Ro(NPp}JoUIA@@T0X)M)-b+G2t4GNcKB1kSsAL2$SRN5>-)9!Rse`vh3)9Q?#X>j~X44I8L$8Ls4ylOpLs>%-XCL$d7s+2OS@qi#fY)-d#bVP)Q zH=oY&@9^%?DWIh0g8p?-;I%)Droe8yxjt6by=OF&*uM=F8-x@l_IcO6ttfU*y6=+{M5dRaSQE!+zV;Gb zj=Dgdzz^(d@RJIvoXx?{c+R7yc;z-k;$h))kT()4w*3^=Q7Z8(4VGztRgMQ6Rjvxm z@(II8n_?X0s*;l<#C3wS3j&n>T)!f~OSl5FX*NURD#lSl%bsw>0TKx*fIVSoC+x7w zc|n102rcaNPZ(eBJ1H8L`=qJGL?h5In~{8hJj^A*+*cQ1S{3XbS1aNV0mnyZ> z1zTxK%}AM;;*j=@c?lr+-frhC@I%gy&mm&4{?X~nBGE3e7f;s?ejm?5rbE8JLI_-xJ^xF^KV&6 zq-Oo*{M`f|!|UY};j_8vdCAw{q;qV&)=2RMa2t;CRRVt4_ijN|A9hUfX)M|45m7~Z zeky}2L4-uBR~wmUKtxOoBU$6_d`;D-b^ffq?c@0r;HS+7L*ArXrL)~@@oBa5Zc($l z(~Et+fJt6nUSQ;Ou|hFH-rIz-&H1!&&bR~a*bfufm6nv&-*Y~<8rv&QQ4o&4s z3ylIIAcz(M9Ztn3Ns%p5yw|t2@-zEulHAxd^J1vsvb`WD9agW10;n@d8bSsqnbFi; zRt4rI!W6t+g^o>ioym(kE&-zq60p8s%@9f!tPjXy?e_-5a21QSBcY8Fc~YL&y9%#nWG6RwmM2V2ytA$pYSrZ7&7Bk3iU@ zY_1g^3Tm)k-hy zf^2BvA^R?(XsOF1vD3Mstb@~ zx;KPu{hkz#bQY|QsnG?op{ctq^jjhz(2tbujM%{4Mbykn&0NIJVS8y?)b%=}Ou>E8 zeDBZHlluCpEdxHw;E|Lf#1_ok{f4B>vt{;qyIY##dmu~!Q0f~q8l%B)gMHG@P*Wiu zlg#Ned7$i(4K~^!yYCG~9CV0)z-06V7ba~QG2&p02;Cc)&JyWRK+=-RX*|(dZr0kf zGpDo7cnAMvS$zrVHrGJ2MUS|x2xFG?R0(ox81v}jzy=hWAdUKY*G+fWAfTJT=J2q% ziayx(E?+1v42#GEFerLV0#>I1!~%i+Y7LqXPCYj_r)**~L+17yg@{{eux=U>7IB|h zN250YZgZer^9SUyREn_8ov5G`3%V?pK+Ou4zbu3ZEEE)K_}5V5vE&~kCxC8_ePc?R z9w4}>wUyQ5SxplbE!*;U%Y_qa~ z3EAo1uvps^37K(~LjDDDQqS$}>*xw5g#~JA8V4q(M~5l$3mg2!27!ylw8{X+@?enx z7U)7B()Pylo0|LO`FDTzpbi>1vR;!Kf0#f+k*sSnbV*7i7gbLIyHclAZ#B z$%wf0gshP;mbbH%b~J`G(GOs6DJSut%s&1EeGsQOc*39 zD?JMjZBc$Yt>S3EKQV){cgJWm=O+Fu+;K{BQf6AJcDBlOS&LwyX#tx#zTZl(mKWqH16bZp?RKvj%#>uFghVo2gt( z8bVtSo+;PGsiNPFxp23?CA`&u-{u+TYFu|avbuF+UW}9^F-a0;gJ1MCoRRp9i~rcv+pE9#UHX(wn%r!X!9{X5dW5q>3#lv#UDv4un@RcVz=Wo_R{y!CN33^ zm-D7nN{UX<%pE~NK`4pJP8vawSDmJ_Q^clHt(*Ch_x0{=JG9*Cnt1yPp>$pUSWPnc z24HycUZqxmb90NM!ro2@B|Fz(AbiP9WQ%pmlvfp4CI*blR$JpqYcXL!=x$mg$bN!S zmY=apP~uAc4R~!fn2!&%rRP^^cN!%v+urI z`sb+(hQ}8+#AIvh=W#?<+P<#<)*z=ZTA zZt}^X&;R?{2-;Sf@;rF$qXFoc|-Z!#0);fM` zeqen73q2;aFP)xuD>$}ij|&TCKG>6;`JY^7fRD;&MVq5ulB0uzm_ zisn=X3XJvuK}mGNfqX-J)>Pk!$R+`;Ndet4!DS+( z1~1Y3jM>ipz#+r@!?m24YUah9kHih|6mM03&V{Rvd!2jOgFy$eq#hTFUTe2H_4F{| z$#;V2a|!|bBigh#&(rj3?;hYN{VNsq6|lXG8Wfqo}^Klq8 z76>4=)?MAyH^adgI=cw_Hp4~N7@D1{oj&IBPRE0ijBfIBnNOwaazBv9z*w9)kNwZb zUNoG4j8n+z`KUwoT73nN(mQ+Zkj?&vi$Ph18IZfbi|q29%|%>RTO8~OnAmh*ka*Le zI|1>K0)10qm3iY(`Lsp`CKA|s3#>PaWbUT9iX#d298nym4u?$F8@u~5rjCuGqd7ZtTglxoC zozu^xXzLf8AuwY5Wv&)CC?z=a1^2Dl7WLoe=0C0}H@?jlbEASt9^<{edY1{!kVsp zS5pCr&5|YXs)8El+Ux3eDG5obaT#XS4Re}nvFMBWNcTU&9339+%T&JJTy-Wsj;Z6B z%XutlV1NaAT(lMBr_LAo*kzg|!a?E~rD}||bvGmrd$+cR06 zTmNIg?G|)9xT3+0P8au0f*mp8M_0TM= zEhlWuj)sT|AuejJnH2PAKb_L9nA|S9uwqFDO8dyD$iSR)ZO!UQV*44Q@0%2W)<4N1 zY~e?U7INOIxG!+yVRuQz?hx0j2PSQ5RJm5~j2LhxZWSwlIjv$VkI}E&hrQP%RIqVX z+&)L0Wz>(;b!^VAEW((#xV!)Oow}&~)0?;IjZ&wox3oMVv%?SsD(m>@2x(Bdl2|=#Y%M;6mVlltdJUBfmyMWD-ZvWA z*EZ2&rA@ z(gb;I-|E#=`vn8{H`S>*$k>>WBX8Q5dD>bm&;-%9^A>;_8KcW?od>ovi1TCzow)nGzBV-70e%kS^Rp&%{;Q{$&wjE& zn88)0jY!`%(I6Hlon-*UeQEN*yHyO|eM-JsjjFVsUXI7_LI}{!!^Io8@>MqLleSa{ zp5PdmrNsn7m0WH>6aZWqY%A8BTu?emkx<|>mktL{1T2&s#a^yZ$lhM$C&&5k+#3@b zn^dQenC(fXXW+~+D#{ZO9ERXjW$11D1JPX?uk4^E540Ol)psU(BYzB{pTMxQmeqwO z!Jk&O5*LVqwD^cgg*ORsD-I{n+GDlA-AK8Gl=KEw8TZG~K3XXHI%l^S(4|q0mMIQ@HAX>j$n2-FL$3EeVP_9$i_b1e}L#1YF&B?Mt+k4hPHe2n{N5@5F zB6kask%>pqcF#_4l$5*S7eL!hfXMrGFIB)+ChMEM{EicvWMkNjEX@bF>j^o5p=btrStcmE0+>B%h~tLxJJc zF3P9*OP9N=kQ8l6fqN^h_A-9Zf~EsSuk^dIACmQdKJj)K8O*i>%3z&5&7bZnRSx=( z1lB5|k1n2mVuq{7S$B4Ot*HQ_R1QJ}-#`a|2752RY{4p3W!qf~?ZjkI$cTN|fmaI>9&(l!}R`62K ziCa8&q(+k@Bl*3ac0hxKGk98z-|M$mrQ2e%9*whMs>U~Q9lHPc;pONyz+QU!q)I~Sj&cv}cCL6P>kd1?bc zM54;YYWGC%!RU|1%=HMr?Yb{FI|C)tfrZ2KNJ^RC7+iZ#T=u1E1HyUe@8~<0uhy9y zN#-aAEh>qFN5ZLoJ&G&w1U^kKTe=-YozEzY&qtjfnxu{DsaxL`C|RUoM|BIH`fy@G z<>x^2gK>Pc;=R}wd75dY?FTpv&3VTO+>^^a%9^N)y-iHEkx}(-@m})NJ;#yI%eaNok7=QjXC%HGXHMw#y^HBKq zXJYxW*fH0-t-@Mp+_s1Abza?irekM)o;x=x|91#*R_%Pf` z^gO8k0#w^F3sh(4R+`PG;O{#}xu!^M13SOY2HtU%UJD8hdjSP~)GSdzflYAbv>4ltiv2D@o^p%G$5#*sW-@1yIttBJX#zQ8V?BSA;2_lo(Sx=a+)Kunqz<6W{4DN zyM*jOLoJl44p!}}yl6^Q3izna%w_Nml7`o210@7_=a@?6&IQ5ac{h8fvc;X- z>6kTQQ6MU{z-)dle^uFZ&cSBaVa7(Ab9aABm+vc$mF|Pz_Mz-29#_4WmbbO^JCfOp zr>6HbPMUn_CezM0$Y!sewki4N0N1PmzTU;BIT;&WRmQ08?10h3KsaIGPwrL{?)=*j zG<&_Fa-fHb^$cDsg_^}OjXX56xmw8QlVZp`w2iA;-jft9lm>ge7a~W~JwB zK{I0LL+^+7)#M*xlL{dY^6x}^)gG&`Z~QM$M@!GWkx<23oG+&l(HfT@rr?N2J>{PR zmrj;ppBYnZ%LJ?5*lpk*9}DKhj-ose94Mss9v77}Lw%dwFB0+3J#BOuGZ!Jgdb}lG z4>eW#IPW0G`02g+`#q8Ie|~Q7*{o4sb8%}9lx{H?K+tQDtf?W+wMLR57Bh)~SU3=! zosmBVQ%3zIFxwYVRUG2+o#dhw2hjE!{$6GFP{u6X`plXH8>$A?lH$%d= z(tKSm+dY;0V}R{y>r3+Gw}7*8`y2m22}sAFq>!#xUfMb-w#fN1Y_Qa;+B(Nh?FJS; zTG%|2$j(m$OKU4VTN~~}zr{1yl|W-CF&i6ewcM}fXT66^P|mdr%8ypY>}|)jl?SHg z`bI8l26G91W&}4yQW+~zH;Z~s>3DTocTjl#WG}(2zL>_dx%ibCDj4MJRXJ2zt!N4u z@ZIc!Wbg!@@vT+|eB>lMhfL`p^E{ptS7e-(=U&@zI$TU#(E9~W=}JGE=;4SCH+w&N ztt3}voj~Dcre;p$aXK$B=pDCvZTN>pvImz5BBp0ggEF&B)c6uj&U@%IiH9ZrttKlU z4+kN^^t$PuO6zai6vPqmG4p4vuYJgX&N|!QylJQ-F0c1{b6a#S_xBSLvi$8n>OfWg zH11-0TUhidj{?_JgwLS+VcA9rKo+B5%H6QLZth*p+mS& zNA~S)AVo{%D`O|S_h(GA2uRpMCOr%QG5=Y^mP-TPtLSp62&xY?LykuvLzQ=}!)P-< zzjuYy!3nR5_+E|B{APjU3^)Sg;?R=I3(nx#$IFs$r;q9Utg!S8iU{TR8}mToljr9m zBv1Yht6sA%3+Jh`wMK&*wZLdTLa$Nm!XIIyf6A=gji9RmeAt7nx1E)~mfEH=2?@@y zXIg|er1!g5J8t<65Y#E;GctesG@#yXj+&mX5;oDu^LqfQTwS@dweG2g@qk2Hn}@*T z8y|1xQp@%e4PPk)Bk)2Ae4Dno^H=~OPJpX$hxj= zH@5AhJGSj~(&^Z?&5mu`X2-Tuv2EM7@z?Wyd!N@))vB@P9OJsLp}`#2gL5~I==i4= z=t?}DFG1JmA%Kn@(l~fJ9l-eoF{5(`{NofM;Kz1{D~M0NC>VFRB|cDSGdx-X&FaQD zdgxrrm6}cE9uiPHj-#0El^yJ_@>tOF5YW(xYKzAV(R+4FcNC8v_OenL{=W8=d5g*o zJ%lYFJ%@U}pX7rX!K%A0W2bZ|a?adPry5Z8#;^19o zhL{Z!4sb$79R^FH>YnzuVC9RW)APwy%7uyzF7e_JRBaAR{|3@dPyv@-yP=0aJMJhY zA`2SmkY8)=B4fdJ&^pPD%}oB3&bEsB;p7;0&fmn{c|M#d%$KkbmlsI|wtOMDomgls zvj};HmppO3h6a3iEP25oF~Zb%E*3v-t7FW##5F~xZpCKQ?bCUo+-)JR4}%Z9bZr6(jgkwfXh)tSYJz>*E=TUG3YyQBC!_{DjVV|^o65)ZF~ zJBJ!&W+oq=?c3GXHT-q1St^$Dnh3V0^2fp&r-*rip@KeeI-PKk^r!qIoc5EFHc%72 ze>@tO-3PX0NUv9ZD#rx#@ny7Prgm{;`&pR7>7F(;7H$rM08Bl#i6&~7PcT-eJd3Xr z+=?BpaP`-a@tJ*G~#eo;Y!9N0n9+0@`hAsj!CHKiwXudu4@9y!?2| z9k3_(SG=NoQEX@<2{0o?&xUq9T*)aZl+9IT3#~R)vavrXy)JW2Xq5ljJC`kA!ct9x zbd#xn??Y@`IuF@InJ-<7P525}bE1tY!&J>xf=|NMwZab70=r-+F_aovFu(4)?9Gv5 zz!Dh5@9T_+Fvc#sz2DQEj8z%0PE21eob@u*ylwD=GJ*kDRjqVqoKdanK@%_VP)cVgkR=%iATru zjZlfx?e3=aW#ZWg)002qOH7Z!sCQ<)&5=4?AChn%TX5_@DAalxEgM5J*1+C z^*NEcm%OE7Hfo-{yx>u?h3h3zB(Y+8`M62We{Ho#bD3EF-reb*FR%&FdykD}XF++i z?y(f8H0f^$XN9#{LRVYo2e!QTw|8w)P6n=@pC5T~Q)43Cz0$(g`{xl=(S?R&(6&lh zgNC+jUu`{<=eEQHvFBH#>1y`%z*yl2$|BH_q=HFZ^E0`b`MLt&(|<5 zE}0XJk1#`yBG#^H)BCe2WhS?)7XTILL1pnKOEohO)`DjCY;(*lhR(SSA~`TFb&6VhVlAleBtdq0Ci29(~2I+=TR~HSl4ypHId4Q`%EC|=`^~6)ZCD%$oIhq$A4aR?rAB~;lBYPlam6B!h=T+l_}MWCf{BB z8jXtV7>l$T+_Xt6B4G1${{+GzmYN-yA zckkNE+^}ZAaz&XwZ?amh25zVBRT6e{`wzV#*Mwunf_A0Aby%?9=>h%Sz;*7=N?wCz zks!_Qy%$cI!Da#WE2Wo12%)3#_A)+-PhMxSDIm*J)Br`7s^_057?D3YQ*@#s5hvGp ztGT|ZqAe?2uggf>4@+S&aGLAbNzPZd9*6@8HVx}O`MCD+&S`;nx)DaP9&y!*;t21z z(-PQyRj~KkpCSIla%`E2d*(QWWuuM%0Rz2YMbJnSR+0Deou)awI2(`26aU5`>^&{7 z(HoENw-oS?;UX%)v_LM7Op0ku(ob6@K{(lo%(8Ec5s#6scFHt(92T&<&gk(tgOswM zyygL~YTlVUEuiAiLS)7UGL4ybBnR?wc>WVZzw6u38QA^BPh|p&{lP^Lp%{|7%v5|k zd3IJqh7-Z%_F9{mnZdro#@WuowL-ekiKRNwdaJd=&5(D}7Q3Y(2^#vAqIf%J8%%k< z1mq`^;Kfab3H7kJEQ&l@Zy_J@<+C(*P(}Rwg2PJ6!LJin=EXP0-rQ4bBu)JNK>q?y z_ed*esPej?zcKj~GAdD6!DRw^;rdbaBO!N;HvraOsa^OVd>^wm0NKLsY3bMfn|5D& z0#IJ{oqB>cZZ~V8Jf=w5VcBHsrCxkYR}k1b1-}bKVs9vJpgX;NZha)wCw2KHC!c*eDW2$JMpC@5uB&w!gYIVjW*c({L* zL!eeP+Oh_^5v^`NJMSxqvo>4UZxz`Pwv#Gu6~v$F4z_z26DL0lVnd^C&Kf?>9c*&E zgU`SVbCK5Vs~>Yd`e#3_gpD zt5(_P*t;E7bO>I84%nUJ`k~&e3+W(C<@A{}qy?c|%0Rlu=Vm5@9;Xs@a(O`*p6aSET=A`8MGEH?ape@!o%k= zL(JLIg`^|T7EbH3&9A`EjqK3xP69oYw9k!XH|>Y+r}4Y^zp5YguOu2m{=VDJ#>ZuU znjMUY+u+sEy*IN-P}Oc6uy2Y>|8W_s!)AQllpU^XHkiuH!)MV(Z}bbI=yeGkR_H|Y zjZc8qHFB;IP38>qohmk}=|hUU*7)He+K>AsumRe2h$)9!EGPTVzrYxlweVGa-hDQ! zHxIxehj{A5FS8>}?F%IsO_fAf??Ti~|541&?R@*Zng_NOLXi!K22{1!ZGS~`ZuP)p zJr9b?U9qxC9Gp}OIPdjzTond=Z4;Nk0%gykFT#|F3~-Hsd_2eL$JP=S?E z|J!A(H3b((CZ6trW7E%12tX=CZ@(4I+5}u~9+`Xrm)#F}L#?+_#gtoTIUy0HpswG( zL`h0FA`|hw0MTr^^8E0=wX*-H2w>{M2%gM#me9J2cSaH$@D#ILaFa+5F)oW$dtC!P zhehy5%T2zrp$%Vr`pl(^?2Zcn7p(kmwE*$v3zMa>Q&*!%qlMSK5QZXT}rR}PV zco1oR%xoez&pLIg(SbBA1?i0Yq5o^5@}OlW;&vqa>q;jO>_472(uy}RQiq=5fMB4> z+f&*O_e=Ls%dm4iT>?use%b&n_Ffyysx)4ot+MMd37ZXiJ53^yLbw)^@o2xd^iJwf ze!k%&C{#8(T6sSj9Aul0%>S{|``ty~Wa|r|ALsFQ2A6U_GibKQ9<+G$C*xwdij)Vh zq7o3v#2V(Gf&C#4q%!dnS&peg&48d?eugygdh=qZ?#Ex2@DoYp@_To5khsADpKa)Y zHvUmp4`vE@m3c5oMyydEu?~vVQFDH4xF{#7<#P`s|CpBf#@DMDnD%Is>(>n| zZ}EmeL0PzYd1AMKz2#~oEc7sZCZA)JJ585L&71_tBUR zF}>fy3&MtM`r}dOSg6bX+b3yJ37)op@urDg_oI8Zqi>&{fpBG-p7xaG1KQr^*>W<0 zG-_U;m$r%M>VDw3LGY9S?8eFRIOOTq zR{7@btchNy^Vg27ZV3=fnF#uURnL^-?l3eKAL+8*;a&i8B_o`%rRg)#pe;{u0c)GZ zZapSQhd-<3QU8aY04J4*{ zidV8%)S`s;J4)nT&Rqu}mefh4G6Zk{wG@SwECxOODHL8@EBKRznhiZ1a^agRbBPuR z8)20P6%xlt3q%~GuYIW6f(@s{GTGGd?w;u|W&B_`ncFnm{i`b%nUB&Qv3irlqfH*KgaR-`M^`9{!c`_;i8`Y_SIvB&*Svd zCiB=}qG3;h@7DEDl=fG~= zpk)ib#GcRN?4C+wR-VS(Kw9jo^e>6aDQ|JQwSCPY?_S>iA6t%`=dQ#kbM5d~Bnj06 zYi+geIsN{J@H~J!&=ER2SQi*Cn^{}!7#OIoBJu?Hbs$OMC}^E+tsj%S33yx#UjMPc z+wShO7A#JY${@2p6s=N_=zzHrc$>?(?X!1p;m`ie)7n;(#v)Mb@mbl}Xa;!C6t_FC znFp~cTe}kUIs4pNV5W_o#^*ng92kuUTo2|)R0Zx{E|$3Qedj!=<~k&bXgcSUSLQP3 z_s6-W*MP|nH3dg!^8@&|-xAEyQ{0XB1#w&3K=`WXrdW8iYrVy2(XzZ#$eEkyZVinP zn`-~>{qe<%6{nXtAk$v!!gEZ~?r7wEMR=`vsjTnZ+sjrA^b|jqxmRtwLBn6F^k4n4 zmUTmr5-QDMLA8)=FKwS4G!(2jx=SG#UY3cG_%Xqv$tkhX?rasO&7{55&rCM_9MIn9 z9N<`bx=Itx<`o-)h)=;USPE`W0=Xx}$}FKF4b>2g97W4zOyHyhRKZdYqR##Ui(1OB z=|v7a9enAcnnCz_pXA&wT`LD|SC5;M27xnGTukfWi~vxN&m${1`+$Ihg|#u3BRY~D zW2s{zmHAV{3;k4a2Vq&`#8gNWt{b?enj}0kw64Ta7zwn216^AfJhk+=p-z;6-S++d zJjqB20Chd#W~Wu+OMoi`6~`Ml9wk zNUvciGfva0My(;}soOC~(};H5B^4eMB+T!B{x;C<13rXeZ%r)T;ec0jq(_`#3^Jqm z?#h6XgxpY3VZ6!Z-OZn@0>70v6vLK12lBvadxST*Ob`qvhB3;xgrqLBHq||m zNHMehJ#MYC(0p-oNSlOwSwz&aKt&{r{FLtHg~~AOQ7mCBjTg8%>d{^O)moB;XU*f2I&zSUq7suCOmKG(U@U7y zSD{b~4uJzl<&Ma%Y-Nuj+VWFvt&KZv3zCEpCkK<1{GmRCLJ~;>{b?*#Ek!~eRsdnv zaM@6Jy9D5aIAF}thlQjHi2BC*zRe$RmNz8gua5q#%7>y_ zn4QnWcX-{92(N|zghQUqvB|EyAegWDO=C+XN=uG58f1?DVgD><0-thljxkO2Gr6?L ztCgyC29*hPcH!RHW$O@36OpU!#7Gn~#pQCl6OP`oqLKB373;^cVKT}UMv_BWSZEXi z$E2-YL9&Lry`&#}(xtH#IB6Q&i*X#<%>fBsxSuUOO|rwVKV#I+1;JHJTt9n$@yg8a z4=FO~(@br}dCS2!PV4>*;(lu`V^ zbCOT@=>P1EI;2)x`S|UupyoKrawHMq?hC8MUfEMzYpOP563>tn?#{$0IF z!o zUfPya?%j0*c&IN7IkvSu(7dF@e1FPWZ+l#_=~3<{>t+8*PxZZc%-e%V5g@XbtmfBg zb2I^3`y)&b_WSg6-CXR}8!Zyy-ZTCU6jqach|H=y>r=`E!(ra|t`v$R|9+@sGV0L$ z8Hw*Lm0l@gq{8e)-2^jqjp9~B3C&(_4k8Mc1j2!XlhHZWd?RFL*ZoTIiMapZWo80s z0Y+_r03%yRtJFmFG`|7&mfHNbJw}Zx^aBW$km-PY0yA46bv)eC zuL@mS74q+O|99l4L)V6kRjxr z&Xyh^Wp;qiCxCZD)7s`ZRu3XrjVZzM+xvTJB_#@YE*6YH>w}6yNJ7JoLcA-dIkhZ4 zRlsia>H{COm-PxsOcON)Y#Le8FG*AJh;iElu^dIJYGpUR{1dF~Z?-9sM~$-H^UNCf z3MsPS^cvD@^L=9&Aie4cDAm0pdlgC*-x_ryeDDIGE@gcC$zgA zFm%{FdeNpx+0DT0*umr=6R1F&@Zmd}FyJDz9O;G5;o`fs=zc9o?ewwmh9Q&2X9hS5 z)eo#U8S_giBS9o;mIfCDiq=R@D9?#q5sYMOmL()?9kAc5#?(ZGZoZzU^}1R2sG36J zWY#Gba_|p%b=j?M9M%S25=<0RCL9f9Q#J2NzSCB>?ipiY+ga2ip0OVT7v`#d|F`h$duM zNb5bM)$=M5`**A}z<5>5i-iCDxG$4V&*Y09eO??Q7QdY1!LEsTBTssnvDz^2AgySxv&|i@St|_e_=we}rl7|a?Wv2tC~|s& z$N^yj_p%(n7c+P119OLE=vscv58GbIKtO@HZpW1ClAJNGVbzXvTN@YoqC@r8L0AJ} zA`tT^MWbwuYO7M?D|_S}=V?%gO2OX6r$_n9KQfba!IO$)g-b-v8M7Y{~ zD#E+Sh*`701>73{*L#}jY)`RoiN9sh$1y#~Z`B8_KCYC&oc^KZ;91vK3ofc6PMk+lkC5)8Q-l5J)AVJp;mVX%fRT6y}i z0{&*XVtR6_TWTfME_Vy&NyR}|w{lPM2WlE@t2}Xqf(>v*j67!BAxL%5@wFU1*(+Rg zjqxLmdMz%-OH8e|oyPh*kCDR4b9eQWukNd7d#2m3bJlMVa+Fxpe{2ponrw^$#QK?1 zdMGdMakX}{#uUusXD%)n3!`@ z?d@q5#uzYuLhFJ|*Tnk27@j#6RTU&1-A#|w-W<3tm*~-TPM_DTATN8ophA2Clb%EN z_w|s!obK0`%tWfDpYm38`-Vn3XRu_0hT+HHeUV+XtK?#);+-sJ`RIS}d0r``n|S0S zhhZIzEoc%`1!|NWe7|9`h=DrAP)&k;E9qb6(NssjLj*1}nh%pTIYj)y#JhImvm(Q} zNM~HrgQyD}tFn{A$d{8hh?XDU?E$vGVk-4bjTHj*A|-hL@vf=4R+m?A@bX;yxM{b$ zoc{h{fL0e?{L*(9>qv8lfJGamkUG2W^N*;iLVY;8p zXwf_7!G0B{9VzEPsuZ<`R59=y2Ep1{kD~1=(2Cq6B0}yn{RFXenWwXl)!NyHrn_$JP8IFSAc5!r{)1~!5qU5jImt4&<`7OgevcML+w7h1zLI?`+V42+Dm1+f38XV8=EcrTDk`w6-+Lbst&5^8Bxi$ z<$oHQ7(tVut--aG+}>9oY)e}_-=-DsjdBJS$6M40o1x#u#Pfvsd676Z@C1eTxOok& z%(})=xmaM`Q8(t$^=|`p1KRq1ANKxAaoZC3^S_(h?=w63b%*@{-0zA$TeL0-JMwVJ z-*6Z!>RN~GPlZ4Uf}KCU;Lvk1;tfu8CKKP&(BNSHkB+Y7AwAe2Jq<#fV2Ve>K#MH< zig-7L-fa$Lz3|uiv99YIaQVneDP_u4kEw+HLtnzF1 z(cpSb9ll8uoi$8XJY*ac{@^ZMri{tI2AX)C#}zUe8J7mofxR4+&AtkA7qkPQXx8%? zQ^sCzfJz|A!mni(r+(hq16)8CH?$rm32|w_$F`ACAK_5n`$UKQ=FYtC7XR>z7s^bI zTZ2%W0INl5BYRPlt+7%%Vupn(&13}8~WO{_tx6}iGiNmM?tY~<0=`tZV zF~)G(-?!GA;!!`#-EfrqyneUAjj7;dM;I=XsDZkc!;}>%w7T)8{fRqD(8SD(ivXkf z>HZf{NUBO>N4P=gO=9!5#2NMa9Bg~;6=6;T%leO2CvNp_C)moNzcP~U8`#ZZs+l4L zkoaTyR=0kdBTe5Fu}%tdeK8Z#5wGhK^7)$J|Gi^p@B{9pqErQ^@UsH=A9ZH#5{M((706lIC)v8r^F{A1c z)fDsp_p=v6x>cG^Wrd?KZ8w-r*PjwhY1t|jr|2~Fd@qBY9iM(z4B4dUcKbx0*>vn1 z{GGq3!8lMG+aIrRI!u-XhKfvzifXrrL3TJIX-%F!ItiA?q8reR<{88`23+Kdl62#w z^8+@tqv0kEt4X9yOiV8EPzbP{b$gP2LyutiIIkn%#iRL}Y{usPCFdor>Ys7F%-%$< ze4#%(`3h)^XbKLGTpUvd1vZ4Qe0nKeE7>!H9XCJ6k}Kw&t`oRD0$EZDS||G$c}4(G6|u!ahDOY;#Xy8Cs%NF3A%8 z-YUhZe88P7I`D@r&Ah+qSlV`8(%9zVoRqBLecE^b3;CZa=syCml@f?bSB+2a_AAvp zcAAn;jaTTfc$o-&==Qs}1(m>pzK#9qc9%jnyRo_SaE;q8IfH%fO$xvhypTjwk?)4K zGznXd(P{?SMB&H|G?ed)sc)gv9(Nn2zhR7rzslRX0C9UfQ)xnmM#diQpowld2w2gT zr=U7RE%+UcM;e9H7K!mb*knE%K!=KodU3GSY@?M0Rw0(Eo#LYMUkS~u2icCIQ7Jc1 zyOzO~k^0bU0@)$q3RL8!3Ug}hm3F*yY`Axaj8ZltyYw6PLPIxxX$^~UL9j!L-66}B@I*>0hrK)2z-so{S%8TN?tq% zT;nqtOpV_+^F8$~e>8cis zn@g4S$fpOlN_Gvew7)0(ZnJ$0L@6iz`iGjdhMRk2Y$D0~$NzLRJT^La>txnUEIJ7k z6f+g=-=Tyyiu@Ji&;wHS-1q!yniQ5n0jSd{uvf`@7u)4MBun^k2qqdY1}DlwO59bn zHQV2@n3oTUd+#jo1Y{iUDioE5j6orgJ+B)+QQ3*FqT|EZ$}kR_y&T;ppSm3DSw!hu zHQKnRwz?NJT~mx`BN7Y3O62<%)@WNT2jA$!catD=^u8+%`!2V)fIxFp9R(avMWC%}Rtm+t zr1j)sV4{|qk=Dq2r@#nb0rQF{G_`9)MX+3umrI;_oIof<(oa`G^nwG>j^zd~-NBTU zc-RbGdwSA|m6LsD9r=Mw$rMf{m!+hT$O6zd%w*Hst=P2^KG z7@xES-bU@9orUEn^OLER6@-k1>e*Ts;u_?A?G%emBFHqjxk)?NY&7Uge^o_5%vnqn z#NiXvua>rGH6rhGhPTp_cS*RV0@ETKK2CW9lNLlk8a*ewJIVsTDLuK;-;uJ0e~=8T zhW!xPgp2&+M(SF{VoA7>^YCiE{6c2~$Py+=+rtb)p2F*v1lK?|dH)$z8y~Q94~wB6=_yOb6cKu zEBG$3PpgiJWJiZ(Oe#oBNR-+(B>AsEvM-@2_lOQ(PWAPJGT2 z!8BTWqtpFwqIOs|n?-^ISqac41C4UCHyG)zP^E^{qbIxSS#EClzsvjoMqxl*2O9Eq z#;Q=whbH2m2pB1D-<3K2^YwPSh2pmE$u}P8MTm5gEXQ4{T(a*axg*nmT+oX@y&Pvl zDb6<@q0WJ5Xk;XxR>iODm$VV~c|n&ant31~dV^o<`x?-Hp6VaygnP?u&D9grW``8; zzFPV`PfHQ&`ixw@{W%H@fbrFNS9SQ>cVG|qI8KaCn6sZWmD3YF(Wt%N#+nUg3Dldu zQNnL~g7TF6Hu1>G=^mh}GczA`)}e#<{92m%qm=jKo`>tATU7$Gp-{0J6W`BV+)k&5 zL6+!8m7(i5ImlI(H9%F)SUZA=tGz?bDknA3-QhTQ^tg`>kpnav>a5C!b#EnrZhMNA zq_+Ql%AXw}#&)#~w#4Ti%Y9 z<|rRdt7)Fdc6{9kcVUd;ZZpzp%RsE)@LlN;QJFyVJUWS>-bdtEE{6rfT|Y2 z2LjAou0Yv2o;YK!svP3CRUcK*vib5nYwh0IwSe`Oue$yulp15!U>n4Y79iI2C3t~a ztIQ*N%Dd&0C%d+ZFl#e>$FplYv)yi$uX)AM{%>?-gp>WP{x_$sQ^RoXp#18og`nM9 z1)et4*rH_+|M;Q}uu%%8+i7|B?p7zH49qyUzNd`;k@&LtK=BF%Nq4AazW#;G|8SV9 z$CXTdy?h5t%RAg!sKscjrChh18S|w=UuA8+tJb%y3#(^$j4EI3FrC#XO8FgkLKx`| zNAutYZp=yhN^^K-L+E|xT<1({WpYf=;F1_bK4s}pHg*g)$2UMO+9g_jCmBB9ZKtUba?p5h2mk#4i14Xv*6ik&jP$B zBS_jbR@?qI6GX{KBHliqE#~2=VOt9}(tJF;kse#7(z2GSWTOJ;pjX8HG>rLYTdIwX zjJ?`k+WKvFM^_}Wuu_(|2FBIG*V!Vu$TgL!EG=4m6xtx^v^Kgeqx#E5YNkAaAXP2f zfJFZT^6VSWf`aaoqx~hD_jVDSqk;gUt(%t7%z=KvQUk^Ts+s+CToxyabWIgr2k!2?z^;SKO$c9)gy2*W7<&@p+VpQ zTUXc(z?`K2xgCYex?(QceG-+BiA?hs^oY@-?*BVnsnO}*EI~#AtM=ll6#VgMY=oav zFudL^!2XoPUKd`V^2Spvs+uIL1SK%s@0AuH4m@bNz|(8PJ65Q2VUQjj^f8zQ>r5O; zQMzo58?mTdgbnvTD|qb%%Zk)Nfi_QU*$Uc))Z14aTD=0x?mSlOxBj+flO-Z9%K=uD z$8KLRP{OEZda)q!ARzS@h*W(%t=qW~e%=lfpRNm==(X5xt^=Eez%98c6dfu5g%kf* z!EJlNtd67s!P?)+bgwBMfoA3v{~Dk>&s-YsZ^kDjLuc^1Oh8F2MwHN9e3xh$`By7U zc>^277mD3E7`9SWm*6%Z@%CVi*h*!Uc9Qv}j*b73iAdwK{GHrI9G^=>Z;$!7SUF0r z$|X{0Ip4qECQ$D9t0&b({>Ly|_A|wo6)C95Hr2R^;B0RL_1yE*jDU}yU6lUy%%MCsYi#o4R?k#| z(_0nV6EWL_W2y+aTt6<}4Yr(lb=IEcY+ay|bOENHvY)rqrJP~4*=qVlx^}_7f^3xZ zr+2;VD!DHx&31jG+36%@>)7k=kU9dbJfHOsx%QJ_7{>cME8YvDH&@PrvM}YFK{;Rj zjIs9>nu%vE?njTUrGLZgW}Q18Hd-!Rb0hL&qjGLO?{%K&v+c zO6>FTvNtv+v)N<{Bdp!cAEt8E{xIoQyWZJxwZYh>KPPZ5F)_ya<=t@rHiE0mGci+7 zz6mS4dGZ_Rz9_d#)?{CQ=BxeSbP{mYr-aPj1YnwXDDF4IFt2D{zulLpPF2qi_xFxh zX9)&}NW)s^u&%a9_GesrRHpGYKlUsq)M#&h9$(N*@`@58!&fhN4kq?vM|;LwfS@c} zJuAcJ3$^jcoH?Ji*z6)BdLl@7<8|z1)-g_LA8NH7joEG2EY`JbjnUAuHrT9(+Fwi! zApl9iB2Z{ockZi~n56qq0xwz(b&cUGos`6QgezZ*?TCq>$P??!gWcuM?Ztll8iFnT z%ai!jY}5`j3;R?xgZJX!N>*Cm9N>(XpS+ijL3;Py!^Z%%x?}SpFQ$NTj#EP4Cz6M0 zpv~j8?KtQCaak{wP9p%D5#+ivFGTg5ZeAk-NRdf?dM_J*HE>)AdU6vz&xW6-2Wl-J zV(s|*ALl9J#xDKn6|7uWnw+jMfCT(iLqCUlCyEN|6$=ckdhBPXU4o_YWH~xBimtHZ zb?DYh#Osh1<5^$*s(TLugpSh^W_EJ>syKN$7Djx1d;(dlk;;bb$yF%_Eje|d(4u~C zN8+V*2T;}#yMlvo{b<=`zHFdHTM_#vz~;FRicI<5YjYN@*GVL*9;K6vN~g{wz12cw zaXX$8c*4={dB1#Ic`!#A+w%TVL$7nLs_XhPk^Haml9JJ>Qo~_3hO|sW!wn^;gZyIS z5TdK-aPfc*pSI$h2qzK0EX(lMHVylkv*+GPv2Ox{*e?iTmcNhrk5a5k2?LqN}GYUjhi3%-6g zA5O{}khxN`oO2nrV+Ga;lD89osbg8T({;~##{13ynkGChKEnYdujG}ERy~+?LI-s3-NFKK0V7w|2flIb#7a{{$H z`Ouv^C5(_Ux&q@+bI@JbUAmdVez|tuVZ8MMh_WYj3TJwdGKE36GHoGrfZ%H_QNwKU(`JgHAS37%jD`m{qV7tJFJL7`+3xF=ORZsbQ} zFHM4xhCo#~W!E&M_pZ6@PwQ1>yn#lRS@Ca(+sOp+Z|H_){iy0F9?}E#?*BYI(xZU? z4e@C|i<#=JKX{vwMD-I={qJMn>HTiUF48ZD;4(NW>6X>i3c9R4%NT&5NS5f&*>=dGk#)|;Oj z#VjZgedcvE`y9lWTsu+_l#V2x2!jfuQ$ANfdZ70K#?|hLdvVcQ|7+bP z_vX*#!ppcpg%9*DPm8a3@Eg5w%?#*9x)%70r+`r2mOUQ@UI`%4moo7Tpg}fmoc$o#DZ>?%O13Wlih%0SA6~-|5Q@fvWYv~ z_T;^cMPH$+7zkEFw|9%Zb3-4a_{+*N?NDNroRimdOPGD?kgiIX>Xj}|jUtDUA=BWi z=OM_wD;5UanKve~0n<+R4>>IEaG5S(0G99=BUfn31o+NpYDoAnHUoiQ%IWQ(L%*+JtPl8^l+>~kiInSjIJ@1 z&u=D{(d4ddpH4Xfdzp-eCM>pPh?(?3vU`BU$DQY`lUH|OiP#vXyQ}^w!=~#--tu=l zKS6AZn+^`U>)}1};_xpKZOgY2ZrWtUfml(dM=Y%2!WwHn52S5)F8Lb=hlz>NLyQ${ z&8xhWCij#jV(vgj9bz+RD_SX6abA5rj>yawcI)1lUt#gR5r6OjEfKIr1}qf}!_LlsHPLFUdoU zUAE?hAX>9$yMC$uvTXb$@!uyTAYgUL>7B{T)CRRp6<_kPuSPlDZa+5!8)fw;e*?ol zBbwfD!_XHzI+Kn}Z)cCM+pj%5y zN@`!sOx1=JEs1KY>Bv$;+mZh3N>d0D4%QDJ?xY;W5+fC^e*izX+~5`mOC%c21;eSY z^ITsX4MQ6Y1UuWb=4F4yWAu`hb#FFDgXM-DxDTF&fm znCxx)Y)pK$tp{OzbVdir<3rmBJE7ffo4u<@WN?_u7n&I;ZcJjBjM!PmYN9Q3Z}gsp z*_A9{oSMn&6@$iCB+Gnf&zGD;xm`dzO-Ng{I>NVcpQr&u86*xgsh|Q21H&nE&4Me? zvM1B6eSz;;YzL^Q1j@in%s5<(c)eb3fL`XJwU?XEqf9$V4ajB(d|sCeV41hSkjlm3 zc7%wW-d2>HN!SEn^`Nu45`Q{?umB7Cd-YF*KdM!lm{?d?L_||T;)i3&_-y7gz+4j0 zCHj(64*&Z<@1=spYP|{2*3?$wG@ta}LW0yV!SBCs-z&VxJya1b z(Iu%;*Z<;!W`sSiWjqqM6xstK@~D2k4THhZaA1I17=mJA%E$kd@wg632qFu5*!nBc zy?vpbGEN?pmv`c7#b;_((s@61F)_t@&6kLBy6l6YUv0LZ!#&EJ;v(Bb>`VEylG0eK zWb4c`;xXRHsQjfg`8gWPrK|)sE^TT9^H(w9nb9#E})c5Kh z;J-lI>Z0p{1;Xrvh(jc+-HZz_N>^jmbX|5p4S{M5|LTq-CP{3{Y$&Oy48wMfDj$u9 z`!)nei+|2T=%KgLB^DHlp&pMe5tm+x3Z?Kbq;0TIam3P4BqNlA!H&aTI(jK~NE`cs zL_|FzJlx8GKJq6_q#E3havXd2?{;MTMEP-fLDho%FH=^MJWMqt;+2FefHP)?fQO2u+aTW`$m+ec^(&0!jd|<|7ch%kd{e$ z1hMoVHTf}^pA>MZwz@5G2o0@vx>m(|pr5r=Yc!11D-@8jSB=pIof$+(#@{2q5bz7~ zmmS$Zk-MGUyjOkenx(~0W{i3!@MNkW1vN@P7CTXq;y9A>6RajhAp*CbYkdZ>S6tX0 zEFY?|P>bX%5y1)`E)1t}nbjzRVtHZz?hSLBM{!s62>Hg9w4|gq%zg${F(;wIo@!Wj z&w<)!C0CI94UHL2589gtjN)PG>zilr8lZ%9&Y&StgBTcV|K(@3;g|~!4whJl38ZT+ zx@{oRKPMTPv=);~0G_Qlu$UMwKDh|YObaRB$0_sS1sgX~3( zW)Z_11d}rxbfUL1V)MzXy;(#4)n0Y?bv9IfXb46&1-Ci%mcc0}^M7ItZ!LRPdpmk6 z#&{Xflpn$og2e6iSTK*;UQh%C8O5mv2iW*QtFY>Z_IGr{*#I66(whvQ@7=X&bSW{X zAj=VGO4rai4!Ic=?&%ciun$#a&gV%2aqXX_v)+SGTh#Ro|iwC)E4^lAJ&9(7aPoBt}Dg2UbWuxDVw%He8gM zhVKHqfTm;VmT}nrAqtnyWb_?jK|?R#pOXItXGF-{ytJ^;2uO_zL#e|9*TJ~Wv~4TB zrKtfu&1qD?SO)?ELT5>95jegBlnQ0LhQG&mu7lrwxqJ;BhV?vS_sd?TMgxs3@1)lw z?_oeq266{5hMZ9FjK^ua;rm-*C}2YZ+`+*CpTl~GI`J(O^vQ&a+v9->O41cg{jtQ% zcQ+VY;QfNtBx>H>C{Bda<76fu8v0$tzwd&dimKG$7u^Vr2T=kqhl&8DzDmGGd`;8hZ&t${w?HV$kwuA zVS}7PE8PGzFWYd$r=5b&?}GZt@A9&q1}88o_q2aQVw9pG{7-k#THDz&vpZ#ZBsVG6|iM{5`~1^q#9V~0cqUT z-xtq&BER%oc5v97_AU;w@m(N`;a@CQ@gc%o_6A^YCTGy!*Q0%k`_WmaKb~w7QI%r9 zYS)%VAN#H|KZz|&jba-OpFr(X;&J5Oen7kUnZ-*TwC!)^_+0jF>DA6a>6mDFm`eU6 z8>|YE5ootSTZKN0PZb}c@uJs4ojGVdu7z4rFv=4HZ4{JF2&<7GV= zxV4Deeg}kD4WZ_`^Imq_=QEoh%qYfgR5l9kj62$6`N-J3VLt!7%lV`OERTml=X|b6 z5XWqNPOu!?8N};YfkCWQyI4rD|j6 zW6aJN{zv$FjFHMu(BSo&Qk#$s<)zs4P&-xzZ@n250XZ7XyZ-*p88KuHZBmv5@X^mW zFO^*?MuF7K;TyDJuEH-AuLE#6+wdDvze}J8Bo*o)U@g0#PO%6_{^JUYU7j3x?vILt9fg6GnweT9KQ=R^gf^7c4XzM)-qDE z@e>nvO-srS4&u_{AvvnlM0XGNvFi89rBe8SLirN8Tn@J}`ZjrjpniJK1kf6~p$Xq@ zY~qL5AxeszW~j z#!4)M(10-8k^Z%6)tWnZ?yzCQ^n)4QMh!e@4YX_5j%5s(5bg^5#>U3BXwgFL*}c5H zuyALv!M+L9_`%7^c8uP=do!2*_~Vc73HHUBo+U?CL7#Zyi3ca1F=e9${&gBizi~dh zW<=EPb>alGC;QSr@28LgaO=mR;WBvpX** z>zg@KIiIcBfN?3Yks$|ma++DUsjmT`+zL5+TsbA_+|D2Sz4%^sYEr~mHbnx~n6m5t z_>XG`&-)Cr2##-pnie|F;S1KrhF;vVXjWEgA~taY=Y9+r^vjYtAqRJ;#(hYH0P*qh zs%QdU5dcf^WonAqX7r)&YmQuy9e)FshC*#lTKE}|-s@zsx`mz?VEYf`yTiE)CBPn#jo}n_*!<6*`}WA{ zX^&mpv-QZP=8*XcE`^f^u+pvHebBeBPKmy9w)(y<)mn5sx+y&QX87^V>xV5^4fwVG z`B8vep`oFWTA%@n3}VIcR;`9jX*+5vXRPIAW$s=5?udnJfugP)JOZGMs^Moi@Xe>N zE!S$-^N0D*0T&+8xFDC{rgL& zXak|g_t$9Mb=tb!m?Xp6F>C8NjBN|@a;I-Ra{R}2VEubmzt?QQ;{qTvF#)6=Fy{kK zuhQn{zxw-)RnrDQ3c*2ea6UZ!Ybi>=uUR^Ze(L-0G z*6lxyoF$7{B;56xBI|F+xIBsC@q+gPwv^af|hhF7L_o;^1)mfLcD@%Zh7a$dSYBwS`vjqwv6NiD;qn~fvuwDkcqsW z+dg`Y27kNwI#-d2m0dy0N!A~&gZ<`$zBOr_K!63mC1@66_B^&uYh!s0Z(NW))3?sz5;+&kYB}Jc24)`Td!U{ zmic8Q?8ZP;ar^oC1qKF6PY#Qcj{EX^Pm}J23m3lp^2-X)ZNiuZCI)#a11@I25fKsh zMV^NwkuuQ|BhH}KjxdN&Z;XyIH2{)z`SN9658hs`GQ$`>|9cu>OEUBhlxz6#;a`3A z)jwN6*5cq80ru60QOXnv+Y>C*c?6L9!3Q5;JEI0;L*n7XhaY?FG1ccjI>?l)Nf6lg zVK9!qk3};kWz;~K8c;vx44#5q1P2FSzkdBMVgUeK&>cY9D-2QjNX^e>KXXx`7JuPs zYF?P14ci0gn1KMg+oB@yK?`eJ9m1s;cmmv5+c|PC1lyCnF=7{`u&Td(0 z$CTR(AHvi~)j;EF1(t1~h;gF#`k%1?bGn z&V;)Fdsx)PFF+C@^Yd~+j;L`EiOeoeyl!7V{Bocz;!4la-1qq8wEpe$D9H6@PZXT3^0OW$Hs5U2u>Y$9A z2&ZsX=#(IRfPjTzuZ=BP2sMkumCwK8Vv00#b4h^`IeB`w8ulcnl*`6xd zLK0B~Ep=_D&CWopI^GftdGm8IpXF9qcGLJVUZ$NW7thd)nhfm(b99B|TD~k6F4db` zI=EZfyTBZBcwSc$QQrkM7K$zmYGs-nVVZjLwr8;`Cts_vvdk7FC#Kd44KDbs1y!#Y z(Zd1^kpip^l1@QJ!km_q*$A9hPyo{|A)$9wYPxqs!9 zJ{d`|ya)<~2+f3b0U};6_~d3~YMh*N zGT?qOC8U1t!c8SPc^3w@FhBVXFRjSM!h#)y9Oj0hw2e)P_G}o}cyH8zQ3L;+22?wk zzefbiYE5KD`B#tsJvrWUE>|X-nAw?Be$m9r>z?D@Il?1LZZKd8awTYa%!(bVkMI|d zWB|q{5ls0NZiZNK3HtLC8VqTmW}-KohOcKQ{Z3$0V^lD>3o#K z+=`EVqxUZ~34f`|opSth{@;K9{h&dEh|69O7PkLfBIU=b_@tXnJeV-b9Zr4v^kFNo zN>$3Rwr$%sAmGwwk>%(9pr7(h^7`wqlgsYiyE}B~Q1R?4j+RtB&Hqx!J4_eyV6f6NNFy?F5= zrsCkp`UE-{k|!i2FwnJc-(C!N%Eh(|NTqRNr3=oB8y{(Jo|~IXjywts3=9eilHv7# zfB4}CiTP?Ynq$X~1qTP~Kc%BDjroRzgdhgXlEB1t{frI7)sJ=8A~R`(JAySs8H+U% zgrqpExk=cIC6hgS_F!&IVHsLlwrq(3zM2L8p`oGNHfhp?4Zk>4A6SR50>em|y}*cv zmS8AWBT5H@7W*qto;-=3p^0qOs+InNs(wYV=lYjlej%6U&6^t}V!SnK;33oizzWAw zse(y73y`GPr^rl!L5puo{R`q#lAcncHh`F*b%d5!3GjzRYVZM1(Z3Zb78MDMMkO*O zO$D+MkDx$R(vj{z^-B>%(gN4EP|C%WKq;~c?Gb>lau7W=eSMusPXk4%A*BOUls{lx zSzab1@QDHy$x;(nI5Ad<4q^##T%z7e5>kx-t`e+NA4z;x1QBW}#(k6&40=(C zB7vQO`4U{BPSz#0NA0Mvnv$d`aF|G(OAzCV3n69hLRwo3EE83H3Q+ELb*QMljK(jV zvwG<>$xY{`p8@kFfQYLLM|&tPsj^OhJce|$B4m*ci7UdP zga_CKbF|ffEbFHrQ{B<*T=(U~Z}k!b5X#*W1G`!EZMkD;s8W z&_sAO>x;?o$#;i=S(4iAlvNkH2tP<-s)xP<{FHekSgPs?@QT~qO6LQ8thiNv)iAco zQyYa_S;DN+M+T7av2;spSB)qgD)+9ul_@Z5RdHTWWAkF-X2Qq-v^yEV)=H-neS}xZ zw73pS=Evg1M<0E}NXlA;`W;d-2!74&W+JMLr48Bq z=o4fnVl_(vbw%SWMv&#B62GV>Eyn!J4-)g`5wmEHdd6bii20UKl<~%>0iy;Uat%~l zO2>KMWmJrO1&srpr9ftJlq7aw1jY_nnEet&tZXvu5>Q9)z>S&WcQH1h6@Far5i&|$s6N(#zD5k^RJ-&IkO1hL}65{n5q`*9mI zXu#xD#yWrgyfpA)3SYT$W$DTE|KLGBR7@Cd*ic*kq+36C#;Nh+$4kt2^5n_OmMznN zN=-pkr0;_pz=1h6-~*enn5_eMuy0;Jj5J})C`(=(eIp;y7n3ILnKNfXhA2Jte_6znx9n&zzmoBY)5wQG@n6IudWn;eomXiKO zIhptY_>u^YznIitiLU>VaMyIOFaG}ZY1sUh4dvf8{+|v|Qbl(%j{eih8zUMuVAOz7 z0}osS4*>H;W`VI5lRR*z5IYEOWo+T0Ab*gzAg$s+Px(m9)r8qEK(Gj^AjPFMFmFfN zdF8-2LKBSt6%L0ok>3(PFu`vlzapZz1Skv;tYoc7RXW25>$7s@%IVXm%Oj&?PVARu z_U+{41PL#X@NCqm(edNQ<+#k|T{f5CId0rI5P)(f-3D@#0vIly7=A5Uw8-FT>079N z$sLjk{YR4~P2zwx_!y<9I!RxiV%Me`Cx zLH_dL5&hg%cllHPa?lc0U=?Q|&HIIcsN(%A9A^ItDUCuJHSkbrfHgM&Q)qMP&ZJ;0 z*_Fm&S^naP66{r3$CK+zENx+LOJ7s*;$Srff1DZ~H`kr4OITYYB!dKJqpMNMbg&kO z)vd&Q$pV9AEQ<-rni&1{kt0V8VwF>5%;6D9HFlP_0KRgp+P-}|(>XSfavY~L^5vNO zx88b-&etG|(ziggj33zWN~>Y^fdaL&{3t`pB1p`a!A7o>@^rv}0mRZzjn!0gWW3S$ zG`fu%FlxZ40iy=W)PS_i{r6(NvQU%)i+F+g8n6GD2Bdv`Nf7owRzzcQj2bX%z^H+L zkp_TLb!aUADzL2JSPd10fZ_i>Fku9KYu9@bgi&v?*%~oogv5L?0%LzI zc3M1LzI-`!mufK80mMOI)g+m%$^DcITQ}7c?tA#7)F{&NC*YC0PWkT%ExC^vh(XaF z@>?V9`;b?VQM`vy18nQV4i|a{KvEU$EzL;>+=-Da!A_kz#cEjV)~zWF<{>PaRlHPd z)~um>0{SEh$SiIy)l^nLos^UmmcsDiXcSOa{YRzUkPRU`{(!tuQBeS+^w%?H%)p0X zu{1evIYnk*KqQs^`2F|a=a#aA1(RA}VBnWueu)xb?t}k94qfiGoK|u!MK* zejkEXRC<6Yzxyg3zJkgy1}k3!<*U8?xXM#VPX7g!^Dhvw0=oV$29ZcB^`nDal|hbg zNZqXthm{bm_?4J%LE&xiS9+eib(^vuJ$-XJ>+925h2l^KC5kwo0V*mPUB!0QWQC7- z6+nI!d){L3S9t0q6#gm}EJFUBwZS|c3t4i+{FXT>r?unLxpQZH)~{a=<07loz^q`q z_%KyxO3Sv_)YMdN+3<=vaQTyNg6Urz3nXu0an$!O?PfyFY#M(I%it!45gYMsEtU2m>}vNVX|UOD|^Pzy;7gfG{x4m;0D8|6)(Ge%wC+kKA?2UvabqN$w*C zqF=6u-))3_AO1QrO878pV9uO5*tgOzgOJL8jUH2sDtZ@`dF$4#lgtm!&d#jh$%mK* z>xH^+PIaFJJVAF&lzkk80hv`LWKE9^Ad);6>KssDgG4G)WP>Q&Lb<@=q4WoStx~0m zbcZT@zNN$K`}FG7t68&V_`oaFzkh%ENTSua*Xm}whN1|R83#iSzxvnPZ@=BK zV@FB{U$DNv(f!bBfYXrW-$N_me_k;5_-mY8tnD21=YsmZ9IU$-RH6rc&%Z$}obCmW z=k1J2cD%R!|E!DR+-r%L+LV)#>T;k)2sBUenkr9PRd2f zCG`Los!DrWrflSEWg~cv)qGWVnc)#Y$nbzJCS=8u2#4x6$d0*1@lj^tNjV{Th_o`< zJEdljIJe5YP#3H8(~9_%E0U5xk%^VPi4D~)G!JnwW#Z5_j)qgB-u{YUzIvw&^?7>< zBWnK+7Y~$quV_Jc2x90>;>t-oy5rysAK&+TrP#Mqr3&tFnL%63F+l27PKkK*_g6iF zl_OHI*a6+X!@pCB%c2nOus8st4AC-7e%m;6i!U_Ku7i zIxclZ1U$J^X=oE@{Qbe z_U>@2-*ZG`ga@wy+1!*NRD2I{s|-DI0Mh*e-O2#+yfrXiIXp@5S9xmqE%nu@Or4Rh z0vrPtD}T2ml0xz6Z6)&3$)g(q#UrI#Ep{mW_#n^Ud2t30peH$k2}sUd?6gLW8ifx= zvU0C2TZEr`?m2wex{9f+A(g) z@*q^{$wnCINKQ`1f&7x~AuTNpdIwZ3FKO=#0xk*cWfaCFm91F%7=Mi#Flykg8mQ6w z(XsD+GkD&zTyb=gxa^$Wsd; zY4qsim;1f+PLsZ)3JXdoidz?-fU!$9jDGKHIX&i}s{Sv%H)hEOR4o%Cj8FAP+Krv= zRyml-REgA!Z~SUEau2AgKfw-a*sAMOuimK?oZT1Pw0+-Mi}Q1HWExc(w{fcEcgOJg z`HgyyXw+v!=>yq{Mfmgo7UgR_`gOJq^po=2_*Zi6)Iz^3YSK2oUOprHnkpL)G5)cw zQrWIX5Dqnf>L}6{cn|OGJ*ux~|3}U2Y%79-S-HFTJTcH~aCc%kG^nK}bq|ihB5PkS zhk7-NO4f3T6pBppyS-9SwLRyH*;!jY*R!RUvwi0}Roc}I2(IMXG}u>GfyT;mK-01t zp~l+s+3qbsW@Sil&~~)~xh;{4a>GQoS|zu!?HY_}+n`nT%G$CNWe^L@_lfomgFIbo z__z;jR=dn(4Wj&|+rmPJ`n8-}HIf>m);u5UVqM9-bTco^&8z(ESWVSHCdcGxZg1yM zzh;?@gt~TYTCdWG-j#;-(o_#BGmL@Eg?aftV;>VyhWGLw(dSO@vOz3^TNWe`Nnq1= zxKMw+>UqDfj2_lK!=QJeDp~mHJn_XYlV5H-`f1+x+^me2gC~q!^aY;!N8#zx7KbHT z_k8XRSDyfU09fo@z1okRUafg2Ivi(j|7HW9CRoL-Cz`DpPRLzZs~ebSn4gLwji0b7-IE z-|qhOJoG~ke~$_L3xadnVUMThjavL=qu#@1x4@|3SE~Voh)}h1W@-De&-HupUB(fw z;93U5kO035OonvJ*tj7PdK3Vf1dex)%lZrOmP zq+q_pl2EU3lnjZ#;;HWi*_ zNTt3%-L(EKcB$C>;-jAMrvLP>yJ79|_4OqkfKm2|l#`&k?52Zl0Jw<5Q56QIM0V^H+R?XKrRe zZdMtEDk{p$&H|jx$w&i1;5(e@E^hw71;oi2CMNhxAKW}vg3&=03%x`lu(;q(!Ifv}B$Vh6yUsiKR@Hi_nq;4!~y%wOX{H zadz!6ZYCPY%gQu3V~QDtM^N=4^F9MDJ@M0ekHG3=AuB~xL~ag7o+-B?cdc0HUb(82 z+sa1s^O89cXOB3#%YmkdDShWjFLs|g1Gq#^QK+NbOi_2pKrBQGZqnAjZjpd* z1|xovi(ip@u-Ub}MP}w!78Z?yyq#>VE4w=fc{tlyS$3;e6;X5YwVqCPLtEBmCJa`a zt1ZaN%g@ZsXR=Ce$(cDn9>0v6ka^mIyn+Hy-TZ<=Vu|W5D#{jt^N7X!QODP#s+U__ zTIO>-T7n~!AXiqd2tZsRJjE>3`Q+wnEzHd7`gyuJXx!{IwR}Bj0!rn{fMx%Rw>Xd9 zDO2`T1mY#ty|#q~bS!%Bwd~DqCy6kcV1LiY9!0~{4!@wTW_B7>EtH=llrQG`h@G#E z`*CMpbgT(x(b@t_S4Zzr{Y2ZyRhE#IDiAf5lS^RN_DwBa9C9_X3xnVMeA6Cnvi2UgnYYYE`H<0jUQ}r7;M{WPq@7k16f&4p5C1&&S*FK8TJae`B!N*YzlU`yzJtQ z)Aji#;+@SDT^WD8WCp-JE1WrzE=qUU|lX$O|Vup^<<_!&c9UtW-(i_D!Syg(`Q^Kzxkj5tWBE3)XK(`9!jIy6OQ z5#VkY&Cjz+&CZivI=^f4%}b|zYCIxG1mekbaF8rH$~5Ue>As`@^jEUyRDGlXL=k#Z zo}y3D*XepWQ`{nqVeQ^cO65!rQ7KA&F^=$R>+~kZ9nsA62Qu-LjB>JMFk)HSXtpnV z>+&DlTzvz@&`u|imR!I4;C7>*PEUx{=I62Z14RD#=JkQ~n~Q~nlJ>U9%bxPrK5^Z1 z+}6XT;O_6dEKqTmu3s;x0_~wO)JxXgroI+Xzj;<_5+do{%CF~R!1ll z3M4!O7G**CjBDtDKiQ?L?Ne9RbeTIB6||Z}FG~F>1udeF<@_k3OQDRv|C9#kq^T0> zSvZQJ)nbS6lpQ%f`fzP=00G^~M+{Q32it(&6=dinA`ZDOM#Btxst& zGO!|~2(0-3tqN0TuS}5DsVfAyQV7@@r30o~4pLJk<8XM+gja7X?ohcM?z+$TPCJIx zd<|d$WRUxVr7-e*AlyK@s(6$_b?ZCs6&_KQR*@;cenw@w|27Py%-sK3PeC1Gyo?$! zYT!X=AT%^oKUo&Lq=Bkj!Q+uM{>4FWTeYfg&TnuWnSKg)b=R+7Uv`dc4=IN{H!v_z zCZ+a$YRYQgD)*kK{(sJ~apOjLgeWvRkm`cHa;P1@2Gig_k+{kh&jRD8pMGkP0^ffa z7ptBsWUTra9Yzg2%o-@v=G7YePIAbh*khY*T)e9dnsZ_GjM`7U=M>lg`>2TRpWgiA zTfoD5QRBrfdw^2xnxwd;WyDW(jtJIvjc3WI{xVwMgcdtJadH&clU+#CV$6R!%rV#e%}3=d5wBulT~>B_bpo&&tit0o)|~^ zvhGMKEg^=Pu)IZofIfb88Xx-ho67Z?o&I$rb9gLyhrP9uJ>aodFRXfIz>8bY+q-yB z*sf2$vTNm{17Cmo*zEV4J~rygq1|7-IM&rSVEiXPeK52YpfIL(?*3Ijo7iK}t4r&5 z9~gb*{MEy|0AJ>8zY1DJK`=@FVg7Tq+xPSgsEPy- z5OK}M(P_-<8~kfGD$r_Qedk@Z)k#N#?nAt))M(syG&6A^#TAo!CPZ9!@u@s{#jmzb z&Y14}uY(_;6&wB7-iR$pw@#g3I{d4Jy`BHGQ9x#Sv58sNBWP)XvnE{nrvTv^_3+=@#x#hdw3sHbJJVvH^+Xz z9bhiw^rc&0{MhK{*t*WH7a`xcuy!`6+32moL6F zXEsw<7#5doZ)4rOs^7robv7J2my#(^t*-Tgn^f_wU%8T{h54KfJFmqg zZh3x$rMdZIOTGrB9n-EsuLjlaZLGeVKJ<84^c$P@)bw$GZD2=7TkFHuBH!J5khyM5 zO8U>ILT<#TOzF~e`}u3$PWB6jKWb}bx#wc|qAh>$em1Y_`*Oc_0KSK=MZLXwKX@_1 z6e#GkLCu!FWqGFBkhwOlK6aI=<|Id-{d6)wn@{T@{+-8BgP}jYo1dBD-D>cqHP6$G zEo|-UJ-OoCXHS9t(rby-$mM3NyPK1BB@h26N8I>uEii6wM6^erPE;8+Xj{eq>YVoq zQqu!p7;ow79QO9|v{RQ@BnX&3me}<-evo!wv#?_V0o{I0D3N-gWD%Eomn%So?WfIA~Ij zp9h`tn>a)hTv=1aFFz$cWX1vuCx^h9<1F2ranQPm;?}h_$a2iaZ63WknrUnRi-YG* zrESz%_PU7j+=$X+vp*{}Yp0LAuzL&mUB?M8 z41D#y$P4FIPkSssC(qW=u4%uqNzvg_V_hcCZa?N(@WHT?2iH9}$$g3m!q54!EaYQ(z*ZgNxf3zZnF1<5n;*T=7Jna?*cj@ zDd{2Y64YDi$x!?DiR92zhXWh5NQ?}7Z&0&gZ?34@xi90wcmI1TMXH%O~~dHDf{Lx=ofo-f76Z<*t5#tETqPNQ`CC&d$Z1Y*=Mvn5)$mGrgjBFXVqW z@5zgMei6E|u>5+?gcp81>EauZ7;#-sK;eV|A}zzr(ozU2tIr^S{w~Uj<{+xm`aqRCSs#tIf!#NExb%l~4A$dFgaR+UJb<44PLD?fiQ7I0i@4 zj5yQyD}~iNo1gfaB^K;y-gx5;lsRF-ggaqO`eGa14^9I#8=8(-k`>KI{Ut+j%Xnud zJjMTX{S1a?41n~%VpwD>#HDj9DF`un%xkDzx`@(~8){tnB{ks!%;i7vt0K-ym|{d& z2M3F%I`CJ-QX-02f9IvnUO5p*-8ZZXpc-Rg-^%H2s{gWO%b=80C-18NT^+yzGR!yM ze8XAv&6_vBQxr9EkO38uAg~HamxcxIG?LvZ3)TOw@Q4~xI#i`qWXf+4xAd)kNe!Of zUkt<`@rU8oXzlwj)Phll|E2~2a1S0lsFrQjs#VghE`>qpE`4_I-Yp#rMBjb)of^f! z0UwY7ExJJfc7;F&k0<2oFTVIZHG^Vcz7(g(?vrqk>?!NwW-A^nS?^iPjQs_;gKQ3L;!20+B( zPyOZ`+?dZ&?^c5{qOXE!#vK0P^vB~Oep?pMeVUbnEAwg#jT30gg*7v;e)|U4tAVt< z0vJ~XG-$c{*%4dbosB8k;QzgM?8kM#uY9*j-;scN9ml_5>*%y(Nb@z*M*sv^SXnVs z>ZMjdY!IT<3T-orytk^J1duL$oj9XXFEFGVd5Ow97SI;b+02FR8 zU1eU{d*=MTYd`p4c%}`@FCyRDJ=r$a9bOKU8Gt2XNZ#KUIrp3~nvx%HcmMzr0tc8R&U=yi>g8*`t8$k5o(%Rnv25KzD6{;!r=*@=DzhyZ8Y|j2qjRb z7dsVIN5m2qgpz)agUf8pR{pK-O&y#7Be(+Ri1M9b}T(>E>@MjZs z8vu*t75~Owzhq_S0DQl0=E&^Sq_$(8!SoEI21z~|*>3BSm#uAVVg6xx5<+?GK0f~R zlbmZ2)?V&*)q^~GcChkr%Za!}I##aE;B;4CemC;duW5(z+xCSoT4mt?o??pWW%%Ni zDM!zypSyB)^b6UcQ9yFOqx;?Zdh5-#KX~-+Wa+A`{6SJ+X^|Th%dJQ6j`nq`UY`C| z<|PoiC$;Gr{!@kn99*6@FKpp*c8-X)PHU&V%U|d+-JCNnUcda@0_PSDZT!8>tgX## ztgpZEN&2aa{?kS(R-)!b#DEJIu%xh10D?d50>?Z*c2@e~Gkf;z*|~Ekw0#tlV_?Ou zM&_9ARZNp3F&8ASw4B_xxBL;2kn-D^YrmYn3Z{X)y&KjDa(8YX>=&7ohA_M|@INfw zapd_gw_&tPBboliwxoBT9&*;$JlUn$*&8tnf7)Nm z$0OLw6@wT!?k8Bd*2#}yrU#x^e@#oX4$+S>zkHDu-j zZBhy<4S9Z%D6&Qa#YgJl(_srf%Zp38^whi?AAM1fkyZ7LXSFG**XMs`<>lrzuv;N^ zxFl_EmY0wW?S_SuJto+ZpL`X%;4>_XX$+PwPTs?N5%=Qcxfy3JEA=jZlqMi#GqT%XL}lzAahXqMl)+mz_`py*MXb!ViT^;S#tHIcL;Bw zGjI2TCx@hUZ=JpKkgYyJv3@W|cc;t+ncrt;*LuYeJO2z1+TZUcE;jb1up80y@cw2%J7dA1=Fbj!(c-UtrwU z8v8>VS8SL&x!Hin1+9dxlNUM!6|K>x>myzIuYP9a>0dVuePg+(cPv$Na+Xi(@8%m6 zP`?Ex@h7%yWF^eZ!crhNCPh~d?OOR{-(TLF1KCd1W*zD7t{&c#nVh(O)@Vm}FGjRc z?}!m+%e$`xHEPWs1+l;3&KCgao;B}Ps#5#uulBbcIStI0!H#UepcwLq2hoJJ#%}d9 zgLwH)ZvD3DfG1d=IQ-pL@nK1A<*vK!GNu4$&uF0Y`(B7TL@~XlKQw-n&14hdv*@ z?fh&3gGJY=uM)WPvb^aH43`xV4?VwXH^fY(@3h0&jZr=}UiX zW4-O|UUjY<+{Jr`%$Rr&nDasS>BFoCmmz?u$+z3>`n1oQJ~GwDT0hCsVa3J~R*~bv zE`2ts4_^)-w&vy**d?F-Wy7x@F6uSoty@>lF+yPoynp@2?+$E?NSO3~|N6A>vqv<} zZnP6BZs_aF4}7z1{jA3+FGDS3B}LmXcM>B=r%5ld_KCIfjnju0^r*3a{ZifQz$7R7 zT%mVe1-=uzC$T2sz$@kLEkjPD*WacA#k5wSsER}X7f*UbPsT}Ct5Z+$b7lQ@wcgnj8sGw zh(LedD&49X?8J!^nN8EGCHTt*Ru(qOd?)oM-K7iCv}sex2uxhqfjPOyAPldMWMGg- z$Mci}<@CdF(44$24N~g|yC?Tu;Sqz>?sdvvK3eiXF%SdEAGTW~?EA3Qh*6&Zlm?(| zKYjW%UnHEI_VUXwQ#Lwr>|SLd)%_84>ztd(1`56iRsMB-MaYvh!F=hC32^DsCH<$W zoBsXDC!dtJ%rjwCfBp5>H*MMkl+10zh7IZTc)+}r5#`*ubC9x2dt_$g z`X(M~`sFyJgaiOMX5R{cGKtF>0#<&or{g|*_Uyaw8rp@GlVNf-BJL|z0Q1qC)ppRNXE7K7aDNB3aZ1#5ve&m^#6tGb>0Wu_#- z?#Gms4r$8DZCIXa+3<_Kh4Q(re4ZD8Kan8+i!DEh0`I!l?O1EMLdh(CZ6Z@DslTKDz>hUdKT;9LU%GRDqWM)!) zVSYZ=&FS$1d35yfDb(gS=s65aTU&c4ihy}6C~AYA1F#)NZy2xX)RGv-G*y<7zUcN6 zT~QIptQ44E0#s?#dc^$IP5X~UW6DCE4q4OJ5ANb9g>0i{j@@eL6c7-57k6+LH@_+e zH++^78;KPd7Ju2P$ynoNr>9aifUU&kHZwUvncWEB@XCQ54SNj5BHPiU60>M3E-N)T zD>YFJNEFi4lqNwzNC%T`q>2r@ge@54&W-zyVoxrBh(};GCfGIFJc`XYsK>3V=aZsu zU_97m@|@CYzj5{movE`F?clsbvBS~6cCa8%P(+L0@_Tk@WOir-IB!v2zBU7!SskE87<{NK09;zBrL!a0 zt4o_kuI-v)V~E|QnBj3T4YjZ+%+uP{s*-X3Dl`t5?qXYNZf(W(|ClegWJlaeJ9SY3 z3PteS7n_cAa?{UT%Dft;&C0U!a_4P;P$Ko%*~A?OG(r9%q%w&VzrrdB(vm#ngdaeg zp2_&i+=J!bg$oxluu@*mX%Vj!OePlKO+xX^gwI9BV(%NBoED!Z4z7W*0drl9bAf%s z<5SEONO^zAjeVDIV6K}AxrB*HT2>B}4)SHn$D%n$ybd79kUU`I3sbPSi^IU?wR7_e z{M~fxH$oH4Z-re`5zz4d%QsGi-@atA7`5YPvxDWgf!7%)Cfjh&eVHQOnrm<|iZrf!S2{&I}1lJAPi9 zmVt4%Y-~a#1$h(>I^pvn!tOgNMpHdd)Nesi;`To>L&B+If%ytuD*ubB7tIXxxe!C? z%xrCD8LT_G`6eE&1x^kH8e1uxh*a`2O;1e!_O;22`n2<}(*(0zSqk!yVquRDeuohy zzY6)d=siwu{t~0es0$~A9erWp)g!yz1FO3GRlyC=R-<*-;R{yN=hOLPj7c#GOh>^& z6d0V9#?HarnT(qBe;m3RJ68{#-W0J|{%73+0!n$&lkeEEL*1jMlbo71w_tn0jnhZi z(a++dcs<3iAub@@nr*s)oMPR%cg+$IJ@?ANW@hH+cW=J@$8Yo@kXjJz*bi%1TWULM z8rHaglMqA9#>25r_a%fABO44Pq8#KK9decqkY8yzkrES`m68-6c`Y?2ii&pj z@*Ony<4zM^B#r{5Cc}3ivayIBO6qwt_&Vf>pSM!16rhNXJXF!dD zygbqJl-C)N)b=F0b5S&L3Fd^HY>Ji|e~VvyKw$g5^lsG_9YBQ3#L9^c-%0%%xt11! zzl2*p<9YFmlT^|z{vmg2>e{h=p~v@!{IQK~LquSunSp8V+9kZvK@D4{C&tnqa?(>6 zm_)pyB1WZrNH7!`O*x;@%#4=6k}CUMFjOZ90f5nOUOw#xTZNe!yIZQZ=rno7HWwd% z-PZ%f<48BHj+2BwcJboH3l=P3Oeq%4`0qcXfnvZ{G)x6lz5OdOS^O1z0P_5C^l|K7RaoY=wvX%L2a){Gf5*o6!tOpYvBksw?5 zRCvK4{XchGK0H!7%?eKWD~OidcMPPozz?U7k>ugwtQVtH{{;>36$0i9*s5O`I$YI< zUJO{4P9L09J-&=B9`d|3{a6DB4&1hF8$LkBT=d9y!cQ4F_@G>|Vg-RAXvfG-KON3+ zleaTx&g9b*uAi{5Fnv;Xp0ebK)v$i7in!tM_4D(Kii)Dh(wv#~Ll9VL$UJuJ*vB7# zoY7UX4_73?yN1Dn7!nC~WB@TUod%~?=cU*f-Zi>0fKdYvuLcC(lmY1J(`GPJXV?#H zTzvsRk1c%6LgU!**>zYbDN~@L{EQT)-4YKiT^!8f;zF;8DX6I_bMNf*bWFWcV~_I?)56cV)oGV`GsN1Zl4s){P&b%a*))85olIHcWr|z*S_d9wUd}ervM$Vf zG3H|049baYxe668*aQ~MuD(H-j1h_Nf2OwJNHPJYnygq600%xW4<_CWUpl5EC9=RC z&D0dCP2ZXgG7^(}KJ)tbZ%i|{6j@`chVEnv^uV0L5fc-`w{Lf z9g%^6nIThOQgWs;n0<+9zk(-9NtE9rWIMQVd6y}3u$;QEdnQZZR(Y^}|;O%>CHG#pAOH-I#dWyLhsW=M_|w%4c(NbjZ06hPCpkUU&Sbn@#o{ zRnoZqBeI}8g+)}ifa*-mGE))@@^S;}HNSfJcPz)5t52CSWz3i{%x4(;SQq?x$9AAt zco-l%wyRwY>`WvF*?@!})U<_kT*XzdEii*}fzt5GWM=2ZCxyQCDafqYt_;k^g~g|x zhJ)b17QuzF--J;FGg9bs0cVL~S1UO6*f}$B4hh~Vl`hsilzLHShmfe60ep&FXlORp z1h(?^0(OLsfYM=-EIc&=bRZgKM z6x;I5G^IjJ6mkWWX1ev%l_xqhz8;$-QpC(THB%H)iX=)Uq|;4S6<>a^=Y{h@tC&z#zUs$pcTCAzoeon3?hekfLV)t@9wuB%%=XbaA5dBJt9})t*B;&a zDXp?V9Kl1^U;vzzMSr@ta=~}Xi0WshKM@`){(E{TU<g?G&A+CG!y{^9LT+1x zsxW~tm;OcNT7>pd)u8ynQc@eVwXO_vyL5TG@J-AabOt2jD`ThU!S;@1K0CFwRgi!2 zKFKBfG$NaJ?YgtD(77cfnTH#hEZ%%4g@c2W+x*3gHtA@-CIn}X!S%~88gnDrinWTQ zsp^^(8|kb=u>5vE%sE~*6c78neq>|S;9q#4PMuwe5PoDGS)HZZ7;41|Iv$iR;S)sA z7MQ<5;Eg%*GnLw)JMnmM;oB^yb5g{e$(B(b}yHp;|GL{e2(@yCZ54rim&yZ6l}H|CD7(rx#|L>kgaP;`U=O)zS4JwE{s zY

8Z#m^KKZmY>7K>*C?wX-$4Tg373{xRYbxa^;*9e!r0rA#;tLrVm_}&{dbrx_7AwJ%f;J}%`#Ca- z2q9f<)z>J9`mLCOg{R6L&@b51L&g`>>-o7H&v8nTrnIbxp6#u;w;;9aG7Zi)>I=#z zuvn;$9&pn{3>GZ*a`QKa@W<&;K2_D#pGfDAa3>j6c6r0qwm2Lt$Rp^W{LOT{TY17_ z-`4X#E12Jo*_Z)I8>mpH#1~P-53dWiM8bD;5qXHg$V)dY#Y=%HlfMKe=V+3Im`D}> zsllPcS%Qhn2+BR@tJUY|>q?X6v^xzoZFu7knAZMf>pcvJGExfhJkb-#{i;4|m_VCH zvccgh%OL7EZ&Oh%T|{|`u}ilzE~m_sU^qGv~J`yjRm zXkOmxes#@ZXK(n^>v*2w<(f*(D1ZSEh%w;+w2P4M{2EZd&*;6u8@(i?^7cX`uj#B%n^cK`K<&}Z344rK-IvA=@15x|WXy|Y>64B6Nex08s z%EYX)gAD^ReZBUu;T7#;S}}0IMMnc!?yQ$iLa;s_702@euA#0%zKYxdq&?w7^r!3N z&ze79)p6Z8UtVHdt;6ej z2e~S{=F(lld;2q(210r_xuKjBf+b?H1(#{B2gWm;UO__g+=hd^@k|OP5)>o}aJF8L z1-({f$j?)e?+x9zA%B2~?xg{LW5bYjt;9-j`PkdWC#!K`xg;-J6P*Oj7i;=ytmstE zR79J*mw9riPX;C7s&1aLM6W{a%gpI~OLyZQFys6x;AUlK6P~M=fyvu~B-Gl|L-3x< zORW{Ro>{+#Hl!R%BQ-7q$xBC4@)|xGu0tErvDO0)58QcYXKXj+CU{^Vx#rz0 zX;KqCwxup#x4w1YRbM&`AZsehyGwBZB~w^2H96qk>0&6BqRV#^dQ4 z0Foq5!vCufKP5DhWq}~9sg2ZZR_Kg?2ia!@5(ju2379FvPZ?-LW5i)}bTTTvrg-~+ z%f>Ih1AXUvWTY`RHsG);DGs|>ifL2Y3j3Ed;*?5TI6CSCD+3Ws0JsB|t8U@azrNKK41xP6_2^F3SMM2+m2G2J3nwt3*07PAE8=^4W4V za2$+Uuqx(q&g8icGf?8~s2dR=E&g)~kFX*Sxy6piu_IGO$dfeoF;g+#3D^KH9|3sb zob4n6rl03H9N0My7Z4@zv}!Rqqi+|zGqlqbsO@xs&yGFG;2+Ftz z#arjY^4uFk)-9f@f=8?4WjXxXyJT=4w8d90D7mRCE>8R9Tj> zDAS7!UM-icBxOu|%iO_K7+=XyG7}@>{;9}`A6-a+^nzY6TYTRBVnpa=hNb@6 zY%Hwb$9|c#-~#>z9s0S43)57SU*AQKSZH;UJvkOLXzQj07PHB$tt=2c5M(mIQuDGM z>MOLgml_l`0ufr7<=ed@5qbqtcxxKA%b33KZ&6$GK;7mFR-%Hh>3?iSoT6r1eVlaX zzkwb=+XM19|5ywNX@V0Y1_@IOS{$pb2bucWOB}S94ysa5t82)k&!o6w-`t`{;hs7q z8RE;u6)B>_n4!!Ti4E7It+h|$ zsp?7@#iRt;eo4SPQ4M;ZjWCP&J0RNj^(W|8jFh&LIbjVA5QWfmZn-jJbTI<8B;vA~ zr4Gm#;|ROEimznc4!@V;(q-BK7fRUo$6!$1i&RDGlN&-=sZ`lwKqRYh5cV^z4<2C! zLqy?2S<8(&4b(mtuH7&G;gL|)TQq!3#Rf&d!VHLK;Ot6jP=Bk6$T0hCm3RSO#nBO0 z9M#-OAC4Dlz!~DciRN@ik zS~hzb6_+AiSUCSVSBq3bfwS%@%D>RVZ2-sM@IEHo3}w8~-!~D$t-uIfkgvsZjy9+t z$iHGXD=Ui;rpuKw+_N-~siupxe1v{778lP0l3x0zXT$;I3QAlIgVW{QxYHPL*`JS) zw0VAn5k$YdSf9-0Fi=BMhq804-qkW)^(K`b;s z2?hcY{y@bWYd7aQEAGsHI7k9peT`6zH9qXyrlg>ZC}PiOjkoIVIiCL0hIDl}e}v91 zv(loWEhS`Fp=&ZuH|W3^;k!aAF251e@Re4)nw=ZO5>WqN-@S*!Fc(@!iqi_+xS`$k zMzl4+GPl3q;41YC#!#!wXd5A%AFk%zP(5yZmAVN3C-4E|Bg7a)oB&fB2Wrxw$^cHK z^4L`DKpH!hXV?Ia`#JqPM&0re=o$k-dl=!SCn8^uY2l%w%({uxSS&Db9c7EvR-Z`7}-smG8}Nn2yBMvJ6>)$$w`5#547G>QI2|11@rPmuAGSRqZ)k!E~*ng|j*# zp<@QX8J24Yfd?1?t1&F1T3nQmOrrp$TX&6I|9(n3tdWfB1B&sd!ENHF8k|a^+S9`h ziAOSmq(^D{B{c-H3(`PJ(G#qbU!9~>Ly)4l9#=LcV@0Au?Ula#5=cas)+raY%;5^> zYm}d2BoKq)URavdS2mbPu6LL9aL-?}zP$n3F6FXLt@E43UFeJa$Z!Ei7<2@dlV3HF zn#MEDXCICjQ$XGbAzhjf>m;P0Xq#0pI3B_0{-K2ycaaP(T-7ITUm-$(OSv>kI(9auN6l|}CdBauaoz}U~6DGPX zl-55v@W9|6zEPwNh6LwZ$7DA3v2syY<1_Vl^$H;Gn{I5zd2gAxsKsg5@vETEyJk8P zr3fx1fq%ufJUJ?o9@VSigZ?BR_-y6H4Q!_m)EP6yI-tsU`xV^pq|!P|SLdsOfJcIL zC12``f9eWnLzqT8a16=T-_3`|d7jnevtkj5Z$B?gDulBvbS zN;zCc#$$SUTL{?%Dt^- zxiZ=$Y@t8W>OT1P)niQ^{qAXX{E^^ z6G+U=)#q#m)P$7iepcub*&ZEgKHV)uq?{;MFNGK^Ew(_w?Byqg=acmc(D?yPC)PCZ z?U5T)V4~xK_*dwjgjlVtYteb2#VGPCS6I|_%i@kmML})_qM&NZba28}jTY26z(egK zNaEV3Ix$7?Qf~CIn6>DaIo}q2whl-S4>gr@u2^5}EJECiPHeid z@v!21fzaPq-Y1Dkp6Tf+lpD`V;g6+O`SW6uNBY}DCUff$IpzzhO#d(l(hL0yd>h_o z6-qzdk@&TS`vQiO*8N^?0SIDsb#R&*!__Y1^#pJ={FcfJ?s` zWk5Si6-X4+Ll+1k7ax3FYK*MaTAe=dW>>&PKKgA_uUr@wNS|8AT$&tT3IEPYaWh9p zz=j;VEZvR@7!>J|^`;VY9-6?OWy8^*r-uf8g}&^j+U(QAz{%$$Ru!e+sWMd54j0h5 zi6OaRf0Co(2y6ZjQ&7gWvvG*jzI8s*R6fasw*>3i>n92X3HV@`eJNJRCX&NH2_;yS zFwC^uqRcbd&Tjo27XedxneC`diRq@(esDXUeWWs)%0BMcuP@dqJzo@<{;3{Cmgfcq zp%PQgIfnN$0d4%Vt#%9l&f~02&-dOGQ^+bP0iJxa9ytVtQl;|mAm&xI$Y&PL

?J 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

6Y5oZe)WH0kL0(rMd?ReAh^>*Qbk{;~{nQ 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 M2?g=DVvqd(4=(t3*Z=?k diff --git a/media/images/PdfSummarizer/dotnet-code.png b/media/images/PdfSummarizer/dotnet-code.png deleted file mode 100644 index 72544d470ae0bb891d37559ed4f8f93010f51ece..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78521 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℘{$$uobCmW(45&qxz|Nr0O|0`bz)zWs+>> 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 d*z-`q3!R3&w|^I;JHHbbt?9(zb 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 diff --git a/media/images/architecture_v2.png b/media/images/architecture_v2.png deleted file mode 100644 index 911dbda211b78bcd07aa25db5974f18dcc52b15c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243905 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

xQSIO0pU9d661_=+s&) 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%0D$W9> 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̿ci@t(}&-h0XoX`U-W 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

Wn+^aZy2a^P6nGc`p>cTe7 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%0Dq~V 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·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 G{r?ZPp&ZWu diff --git a/media/images/dotnet-code.png b/media/images/dotnet-code.png deleted file mode 100644 index bc7f3e4c46c7ab5387b457ccf77c941007b8223c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 87732 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 Rp%;jUoRqR;#b?uy{|^bmaxwq_ diff --git a/samples/README.md b/samples/README.md index 1a1bc106..912d799f 100644 --- a/samples/README.md +++ b/samples/README.md @@ -62,7 +62,6 @@ A quick-reference matrix showing which patterns are available in each language a | Distributed Tracing | [โœ…](./durable-functions/dotnet/DistributedTracing) | | | | | | | Large Payload | [โœ…](./durable-functions/dotnet/LargePayload) | | | | | | | Large Payload Fan-out/Fan-in | [โœ…](./durable-functions/dotnet/LargePayloadFanOutFanIn) | | | | | | -| PDF Summarizer | [โœ…](./durable-functions/dotnet/PdfSummarizer) | [โœ…](./durable-functions/python/pdf-summarizer) | | | | | | AI Travel Planner | [โœ…](./durable-functions/dotnet/AiAgentTravelPlanOrchestrator) | | | | | | | Aspire Integration | [โœ…](./durable-functions/dotnet/AzureFunctionsAndDtsWithAspire) | | | | | | | Agent-Directed Workflows | [โœ…](./durable-functions/dotnet/AgentDirectedWorkflows) | [โœ…](./durable-functions/python/agent-directed-workflows) | | | | | @@ -163,7 +162,6 @@ Go samples in this repository are coming soon. The [official Go SDK repository]( | [Aspire Integration](./durable-functions/dotnet/AzureFunctionsAndDtsWithAspire) | Aspire | Azure Functions + DTS with Aspire | | [Large Payload](./durable-functions/dotnet/LargePayload) | Large Payload | Single round-trip orchestration that externalizes payloads larger than 1 MB to blob storage | | [Large Payload Fan-out/Fan-in](./durable-functions/dotnet/LargePayloadFanOutFanIn) | Large Payload | Parallel orchestration that externalizes payloads larger than 1 MB for each activity result | -| [PDF Summarizer](./durable-functions/dotnet/PdfSummarizer) | AI Pipeline | AI-powered document processing pipeline | | [AI Travel Planner](./durable-functions/dotnet/AiAgentTravelPlanOrchestrator) | AI Agents | Multi-agent travel planning orchestration | | [Distributed Tracing](./durable-functions/dotnet/DistributedTracing) | Observability | Distributed tracing with Application Insights and Jaeger | | [Agent-Directed Workflows](./durable-functions/dotnet/AgentDirectedWorkflows) | AI Agents | Entity-based agent loop with tool calling and Redis-backed response streaming | @@ -175,7 +173,6 @@ Go samples in this repository are coming soon. The [official Go SDK repository]( | Sample | Pattern | Description | |--------|---------|-------------| | [Hello Cities](./durable-functions/python/hello-cities) | Quickstart | Basic orchestration with greeting activities | -| [PDF Summarizer](./durable-functions/python/pdf-summarizer) | AI Pipeline | AI-powered PDF summarization | | [Fan-out/Fan-in](./durable-functions/python/fan-out-fan-in) | Fan-out/Fan-in | Parallel processing with result aggregation | | [Agent-Directed Workflows](./durable-functions/python/agent-directed-workflows) | AI Agents | Entity-based agent loop with tool calling and response streaming | | [Work Item Filtering](./durable-functions/python/work-item-filtering) | Work Item Filtering | Route work between two Function apps sharing a task hub | diff --git a/samples/durable-functions/dotnet/PdfSummarizer/.gitignore b/samples/durable-functions/dotnet/PdfSummarizer/.gitignore deleted file mode 100644 index 4b3d3190..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/.gitignore +++ /dev/null @@ -1,266 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -.DS_Store - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/extensions.json b/samples/durable-functions/dotnet/PdfSummarizer/.vscode/extensions.json deleted file mode 100644 index bb763007..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/extensions.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "recommendations": [ - "ms-azuretools.vscode-azurefunctions", - "ms-dotnettools.csharp" - ] -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/launch.json b/samples/durable-functions/dotnet/PdfSummarizer/.vscode/launch.json deleted file mode 100644 index d526e723..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/launch.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "version": "0.2.0", - "configurations": [ - { - "name": "Attach to .NET Functions", - "type": "coreclr", - "request": "attach", - "processId": "${command:azureFunctions.pickProcess}" - } - ] -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/settings.json b/samples/durable-functions/dotnet/PdfSummarizer/.vscode/settings.json deleted file mode 100644 index 4627ced4..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/settings.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "azureFunctions.deploySubpath": "bin/Release/net8.0/publish", - "azureFunctions.projectLanguage": "C#", - "azureFunctions.projectRuntime": "~4", - "debug.internalConsoleOptions": "neverOpen", - "azureFunctions.preDeployTask": "publish (functions)" -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/tasks.json b/samples/durable-functions/dotnet/PdfSummarizer/.vscode/tasks.json deleted file mode 100644 index 9b0588e9..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/.vscode/tasks.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "version": "2.0.0", - "tasks": [ - { - "label": "clean (functions)", - "command": "dotnet", - "args": [ - "clean", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "type": "process", - "problemMatcher": "$msCompile" - }, - { - "label": "build (functions)", - "command": "dotnet", - "args": [ - "build", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "type": "process", - "dependsOn": "clean (functions)", - "group": { - "kind": "build", - "isDefault": true - }, - "problemMatcher": "$msCompile" - }, - { - "label": "clean release (functions)", - "command": "dotnet", - "args": [ - "clean", - "--configuration", - "Release", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "type": "process", - "problemMatcher": "$msCompile" - }, - { - "label": "publish (functions)", - "command": "dotnet", - "args": [ - "publish", - "--configuration", - "Release", - "/property:GenerateFullPaths=true", - "/consoleloggerparameters:NoSummary" - ], - "type": "process", - "dependsOn": "clean release (functions)", - "problemMatcher": "$msCompile" - }, - { - "type": "func", - "dependsOn": "build (functions)", - "options": { - "cwd": "${workspaceFolder}/bin/Debug/net8.0" - }, - "command": "host start", - "isBackground": true, - "problemMatcher": "$func-dotnet-watch" - } - ] -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/PdfSummarizer.cs b/samples/durable-functions/dotnet/PdfSummarizer/PdfSummarizer.cs deleted file mode 100644 index 76ed54e0..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/PdfSummarizer.cs +++ /dev/null @@ -1,150 +0,0 @@ -using Microsoft.Azure.Functions.Worker; -using Microsoft.DurableTask; -using Microsoft.DurableTask.Client; -using Microsoft.Extensions.Logging; -using Azure.Storage.Blobs; -using Azure.Identity; -using Azure.AI.FormRecognizer.DocumentAnalysis; -using Newtonsoft.Json; -using System.Net.Http.Headers; -using Microsoft.Azure.Functions.Worker.Extensions.OpenAI; -using Microsoft.Azure.Functions.Worker.Extensions.OpenAI.TextCompletion; -using Azure; - -public class DurableFunctionApp -{ - private readonly BlobServiceClient _blobServiceClient; - - public DurableFunctionApp() - { - var credential = new DefaultAzureCredential(); - var endpoint = Environment.GetEnvironmentVariable("AzureWebJobsStorage__blobServiceUri"); - _blobServiceClient = new BlobServiceClient(new Uri(endpoint), credential); - } - - [Function("BlobTrigger")] - public async Task BlobTrigger( - [BlobTrigger("input/{name}", Connection = "AzureWebJobsStorage")] ReadOnlyMemory myBlob, - string name, - [DurableClient] DurableTaskClient starter, - FunctionContext context) - { - var logger = context.GetLogger("BlobTrigger"); - logger.LogInformation($"C# Blob trigger function Processed blob\n Name:{name} \n Size: {myBlob.Length} Bytes"); - - await starter.ScheduleNewOrchestrationInstanceAsync("ProcessDocument", name); - } - - [Function("ProcessDocument")] - public async Task ProcessDocument( - [OrchestrationTrigger] TaskOrchestrationContext context, - FunctionContext functionContext) - { - var logger = functionContext.GetLogger("ProcessDocument"); - string blobName = context.GetInput(); - - var options = TaskOptions.FromRetryPolicy(new RetryPolicy( - maxNumberOfAttempts: 3, - firstRetryInterval: TimeSpan.FromSeconds(5))); - - // Ensure the activity function returns a value - var result = await context.CallActivityAsync("AnalyzePdf", blobName, options); - - // Fan out to summarize the content in different languages - var languages = new[] { "Japanese", "Spanish", "French" }; - var tasks = new List>(); - foreach (var language in languages) - { - tasks.Add(context.CallActivityAsync("SummarizeText", new { Text = result, Language = language }, options)); - } - - // Fan back in - var summaries = await Task.WhenAll(tasks); - - // Write each summary to a separate file and upload to blob - for (int i = 0; i < summaries.Length; i++) - { - await context.CallActivityAsync("WriteDoc", new WriteDocInput { BlobName = blobName, Summary = summaries[i], Language = languages[i] }, options); - } - - return; - } - - [Function("AnalyzePdf")] - public async Task AnalyzePdf([ActivityTrigger] string blobName, FunctionContext context) - { - var logger = context.GetLogger("AnalyzePdf"); - logger.LogInformation("In AnalyzePdf activity"); - - var containerClient = _blobServiceClient.GetBlobContainerClient("input"); - var blobClient = containerClient.GetBlobClient(blobName); - var blob = await blobClient.DownloadContentAsync(); - - var endpoint = Environment.GetEnvironmentVariable("COGNITIVE_SERVICES_ENDPOINT"); - var credential = new DefaultAzureCredential(); - var documentAnalysisClient = new DocumentAnalysisClient(new Uri(endpoint), credential); - var modelId = "prebuilt-layout"; - - AnalyzeDocumentOperation operation = await documentAnalysisClient.AnalyzeDocumentAsync(WaitUntil.Completed, modelId, blob.Value.Content.ToStream()); - AnalyzeResult result = operation.Value; - - var doc = string.Empty; - foreach (var page in result.Pages) - { - foreach (var line in page.Lines) - { - doc += line.Content; - } - } - - return doc; - } - - [Function("SummarizeText")] - public async Task SummarizeText( - [ActivityTrigger] dynamic input, - [TextCompletionInput("Can you explain what the following text is about in {Language}? {Text}", Model = "%CHAT_MODEL_DEPLOYMENT_NAME%")] TextCompletionResponse response, - FunctionContext context) - { - var logger = context.GetLogger("SummarizeText"); - logger.LogInformation("In SummarizeText activity"); - - logger.LogInformation(response.Content); - return response.Content.ToString(); - } - - [Function("WriteDoc")] - public async Task WriteDoc([ActivityTrigger] WriteDocInput results, FunctionContext context) - { - var logger = context.GetLogger("WriteDoc"); - logger.LogInformation("In WriteDoc activity"); - - var containerClient = _blobServiceClient.GetBlobContainerClient("output"); - - try - { - var name = results.BlobName.Replace(".pdf", string.Empty); - var fileName = $"{name}-summary-{results.Language}.txt"; - - logger.LogInformation($"Uploading to blob {results.Summary}"); - - await containerClient.UploadBlobAsync(fileName, new BinaryData(results.Summary)); - return null; - } - catch (Exception ex) - { - logger.LogError($"Error uploading to blob: {ex.Message}"); - throw; - } - } -} - -// Define the WriteDocInput class here -public class WriteDocInput -{ - public string BlobName { get; set; } - public string Summary { get; set; } - - public string Language { get; set; } - -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/Program.cs b/samples/durable-functions/dotnet/PdfSummarizer/Program.cs deleted file mode 100644 index a0d6ea3d..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/Program.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Microsoft.Azure.Functions.Worker; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.DependencyInjection; - -var host = new HostBuilder() - .ConfigureFunctionsWebApplication() - .ConfigureServices(services => { - services.AddApplicationInsightsTelemetryWorkerService(); - services.ConfigureFunctionsApplicationInsights(); - }) - .Build(); - -host.Run(); \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/Properties/launchSettings.json b/samples/durable-functions/dotnet/PdfSummarizer/Properties/launchSettings.json deleted file mode 100644 index c9484b72..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/Properties/launchSettings.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "profiles": { - "pdf_summarizer_dotnet": { - "commandName": "Project", - "commandLineArgs": "--port 7040", - "launchBrowser": false - } - } -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/README.md b/samples/durable-functions/dotnet/PdfSummarizer/README.md deleted file mode 100644 index 3db36147..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/README.md +++ /dev/null @@ -1,99 +0,0 @@ -# Intelligent PDF Summarizer - .NET -The purpose of this sample application is to demonstrate how Durable Functions can be leveraged to create intelligent applications, particularly in a document processing scenario. Order and durability are key here because the results from one activity are passed to the next. Also, calls to services like Cognitive Service or LLMs are costly and should not be repeated in the event of failures. - -This sample integrates various Azure services, including the new Durable Task Scheduler for Azure Durable Functions, Azure Storage, Azure Cognitive Services, and Azure Open AI. - -The application showcases how PDFs can be ingested and intelligently scanned to determine their content. - -![Architecture Diagram](../../../../media/images/architecture_v3.png) - -The application's workflow is as follows: -1. PDFs are uploaded to a blob storage input container. -2. A durable function is triggered upon blob upload. -3. The Durable Task Scheduler for Azure Durable Functions schedules an orchestration that: -- - Downloads the blob (PDF). -- - Utilizes the Azure Cognitive Service Form Recognizer endpoint to extract the text from the PDF. -- - Sends the extracted text to Azure Open AI to analyze and determine the content of the PDF. -- - Save the summary results from Azure Open AI to a new file and upload it to the output blob container. - -Below, you will find the instructions to set up and run this app locally.. - -## Prerequisites -- [Create an active Azure subscription](https://learn.microsoft.com/en-us/azure/guides/developer/azure-developer-guide#understanding-accounts-subscriptions-and-billing). -- [Install the latest Azure Functions Core Tools to use the CLI](https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local) -- [.NET 8 SDK](https://dotnet.microsoft.com/download/dotnet/8.0) -- [Create a Durable Task Scheduler and task hub](https://learn.microsoft.com/azure/durable-task/scheduler/develop-with-durable-task-scheduler#create-a-scheduler-and-task-hub). Preview enrollment is not required. -- [Start and configure an Azurite storage emulator for local storage](https://learn.microsoft.com/azure/storage/common/storage-use-azurite). - -## local.settings.json -You will need to configure a `local.settings.json` file in the sample directory (`samples/durable-functions/dotnet/PdfSummarizer`) that looks similar to the below. Make sure to replace the placeholders with your specific values. - -```json -{ - "Values": { - "AzureWebJobsStorage": "UseDevelopmentStorage=true", - "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", - "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated", - "DURABLE_TASK_SERVICE_CONNECTION_STRING": "Endpoint=;Authentication=DefaultAzure", - "TASKHUB_NAME": "", - "COGNITIVE_SERVICES_ENDPOINT": "", - "AZURE_OPENAI_ENDPOINT": "", - "CHAT_MODEL_DEPLOYMENT_NAME": "" - } -} -``` - -## Running the app locally -1. Start Azurite: Begin by starting Azurite, the local Azure Storage emulator. - -2. Start the Function App: Start the function app to run the application locally. - -```bash -func start --verbose -``` - -## Inspect the code -This app leverages Durable Functions to orchestrate the application workflow. By using Durable Functions, there's no need for additional infrastructure like queues and state stores to manage task coordination and durability, which significantly reduces the complexity for developers. - -Take a look at the code snippet below, the `ProcessDocument` defines the entire workflow, which consists of a series of steps (activities) that need to be scheduled in sequence. Coordination is key, as the output of one activity is passed as an input to the next. Additionally, Durable Functions handle durability and retries, which ensure that if a failure occurs, such as a transient error or an issue with a dependent service, the workflow can recover gracefully. - -![Orchestration Code](../../../../media/images/dotnet-code.png) - -## Deploy the app to Azure -Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to easily deploy the app. - -1. In the root of the project, run the following command to provision and deploy the app: - - ```bash - azd up - ``` - -2. When prompted, provide: - - A name for your [Azure Developer CLI environment](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/faq#what-is-an-environment-name). - - The Azure subscription you'd like to use. - - The Azure location to use. - - > **Region selection:** Durable Task Scheduler is available in [most Azure regions](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler#supported-regions), not just West US 2 and North Central US. Query the current list before selecting your AZD location: - - ```bash - az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table - ``` - - The template's allowed `location` values also apply. Choose a region from that list that appears in the provider output. - - The template currently deploys Azure OpenAI separately in `eastus2`. Confirm that your model and quota are available there, or change the `openAi` module's location in `infra/main.bicep`. The model endpoint and scheduler do not need to use the same region. - -Once the azd up command finishes, the app will have successfully provisioned and deployed. - -# Using the app -To use the app, simply upload a PDF to the Blob Storage `input` container. Once the PDF is transferred, it will be processed using document intelligence and Azure OpenAI. The resulting summary will be saved to a new file and uploaded to the `output` container. - -### Review Execution History in the Durable Task Scheduler Dashboard -Since the application leverages the Durable Task Scheduler backend storage provider for Durable Functions, all orchestration executions are persisted and can be viewed in the monitoring and management dashboard. - -![DTS dashboard](../../../../media/images/dashboard.png) - -This dashboard enables you to monitor the status of ongoing and failed orchestrations, and troubleshoot any issues causing orchestrations to fail or become "stuck." It also displays the outputs from each activity execution. Additionally, you can use the timeline and sequence diagrams to gain insights into the orchestration execution, including the duration of each activity. - -![DTS activity dashboard](../../../../media/images/activity.png) -![DTS orchestration sequence](../../../../media/images/sequence.png) diff --git a/samples/durable-functions/dotnet/PdfSummarizer/azure.yaml b/samples/durable-functions/dotnet/PdfSummarizer/azure.yaml deleted file mode 100644 index 892b98e9..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/azure.yaml +++ /dev/null @@ -1,22 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json - -name: PDF-Summarizer-Dotnet -metadata: - template: azd-init@1.10.1 -services: - pdf-summarizer-dotnet: - project: ./ - language: dotnet - host: function -hooks: - postprovision: - windows: - shell: pwsh - run: scripts/deploy.ps1 - interactive: true - continueOnError: false - posix: - shell: sh - run: scripts/deploy.sh - interactive: true - continueOnError: false \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/host.json b/samples/durable-functions/dotnet/PdfSummarizer/host.json deleted file mode 100644 index d5d6ac1b..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/host.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "version": "2.0", - "logging": { - "applicationInsights": { - "samplingSettings": { - "isEnabled": true, - "excludedTypes": "Request" - }, - "enableLiveMetricsFilters": true, - "logLevel": { - "Host.Triggers.DurableTask": "Information" - } - } - }, - "extensions": { - "durableTask": { - "storageProvider": { - "type": "azureManaged", - "connectionStringName": "DTS_CONNECTION_STRING" - }, - "hubName": "%TASKHUB_NAME%" - } - } -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/abbreviations.json b/samples/durable-functions/dotnet/PdfSummarizer/infra/abbreviations.json deleted file mode 100644 index 1330bd23..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/abbreviations.json +++ /dev/null @@ -1,139 +0,0 @@ -{ - "analysisServicesServers": "as", - "apiManagementService": "apim-", - "appConfigurationConfigurationStores": "appcs-", - "appManagedEnvironments": "cae-", - "appContainerApps": "ca-", - "authorizationPolicyDefinitions": "policy-", - "automationAutomationAccounts": "aa-", - "blueprintBlueprints": "bp-", - "blueprintBlueprintsArtifacts": "bpa-", - "cacheRedis": "redis-", - "cdnProfiles": "cdnp-", - "cdnProfilesEndpoints": "cdne-", - "cognitiveServicesAccounts": "cog-", - "cognitiveServicesFormRecognizer": "cog-fr-", - "cognitiveServicesTextAnalytics": "cog-ta-", - "cognitiveServicesDocumentIntelligence": "cog-di-", - "computeAvailabilitySets": "avail-", - "computeCloudServices": "cld-", - "computeDiskEncryptionSets": "des", - "computeDisks": "disk", - "computeDisksOs": "osdisk", - "computeGalleries": "gal", - "computeSnapshots": "snap-", - "computeVirtualMachines": "vm", - "computeVirtualMachineScaleSets": "vmss-", - "containerInstanceContainerGroups": "ci", - "containerRegistryRegistries": "cr", - "containerServiceManagedClusters": "aks-", - "databricksWorkspaces": "dbw-", - "dataFactoryFactories": "adf-", - "dataLakeAnalyticsAccounts": "dla", - "dataLakeStoreAccounts": "dls", - "dataMigrationServices": "dms-", - "dBforMySQLServers": "mysql-", - "dBforPostgreSQLServers": "psql-", - "devicesIotHubs": "iot-", - "devicesProvisioningServices": "provs-", - "devicesProvisioningServicesCertificates": "pcert-", - "documentDBDatabaseAccounts": "cosmos-", - "eventGridDomains": "evgd-", - "eventGridDomainsTopics": "evgt-", - "eventGridEventSubscriptions": "evgs-", - "eventHubNamespaces": "evhns-", - "eventHubNamespacesEventHubs": "evh-", - "hdInsightClustersHadoop": "hadoop-", - "hdInsightClustersHbase": "hbase-", - "hdInsightClustersKafka": "kafka-", - "hdInsightClustersMl": "mls-", - "hdInsightClustersSpark": "spark-", - "hdInsightClustersStorm": "storm-", - "hybridComputeMachines": "arcs-", - "insightsActionGroups": "ag-", - "insightsComponents": "appi-", - "keyVaultVaults": "kv-", - "kubernetesConnectedClusters": "arck", - "kustoClusters": "dec", - "kustoClustersDatabases": "dedb", - "logicIntegrationAccounts": "ia-", - "logicWorkflows": "logic-", - "machineLearningServicesWorkspaces": "mlw-", - "managedIdentityUserAssignedIdentities": "id-", - "managementManagementGroups": "mg-", - "migrateAssessmentProjects": "migr-", - "networkApplicationGateways": "agw-", - "networkApplicationSecurityGroups": "asg-", - "networkAzureFirewalls": "afw-", - "networkBastionHosts": "bas-", - "networkConnections": "con-", - "networkDnsZones": "dnsz-", - "networkExpressRouteCircuits": "erc-", - "networkFirewallPolicies": "afwp-", - "networkFirewallPoliciesWebApplication": "waf", - "networkFirewallPoliciesRuleGroups": "wafrg", - "networkFrontDoors": "fd-", - "networkFrontdoorWebApplicationFirewallPolicies": "fdfp-", - "networkLoadBalancersExternal": "lbe-", - "networkLoadBalancersInternal": "lbi-", - "networkLoadBalancersInboundNatRules": "rule-", - "networkLocalNetworkGateways": "lgw-", - "networkNatGateways": "ng-", - "networkNetworkInterfaces": "nic-", - "networkNetworkSecurityGroups": "nsg-", - "networkNetworkSecurityGroupsSecurityRules": "nsgsr-", - "networkNetworkWatchers": "nw-", - "networkPrivateDnsZones": "pdnsz-", - "networkPrivateLinkServices": "pl-", - "networkPublicIPAddresses": "pip-", - "networkPublicIPPrefixes": "ippre-", - "networkRouteFilters": "rf-", - "networkRouteTables": "rt-", - "networkRouteTablesRoutes": "udr-", - "networkTrafficManagerProfiles": "traf-", - "networkVirtualNetworkGateways": "vgw-", - "networkVirtualNetworks": "vnet-", - "networkVirtualNetworksSubnets": "snet-", - "networkVirtualNetworksVirtualNetworkPeerings": "peer-", - "networkVirtualWans": "vwan-", - "networkVpnGateways": "vpng-", - "networkVpnGatewaysVpnConnections": "vcn-", - "networkVpnGatewaysVpnSites": "vst-", - "notificationHubsNamespaces": "ntfns-", - "notificationHubsNamespacesNotificationHubs": "ntf-", - "operationalInsightsWorkspaces": "log-", - "portalDashboards": "dash-", - "powerBIDedicatedCapacities": "pbi-", - "purviewAccounts": "pview-", - "recoveryServicesVaults": "rsv-", - "resourcesResourceGroups": "rg-", - "searchSearchServices": "srch-", - "serviceBusNamespaces": "sb-", - "serviceBusNamespacesQueues": "sbq-", - "serviceBusNamespacesTopics": "sbt-", - "serviceEndPointPolicies": "se-", - "serviceFabricClusters": "sf-", - "signalRServiceSignalR": "sigr", - "sqlManagedInstances": "sqlmi-", - "sqlServers": "sql-", - "sqlServersDataWarehouse": "sqldw-", - "sqlServersDatabases": "sqldb-", - "sqlServersDatabasesStretch": "sqlstrdb-", - "storageStorageAccounts": "st", - "storageStorageAccountsVm": "stvm", - "storSimpleManagers": "ssimp", - "streamAnalyticsCluster": "asa-", - "synapseWorkspaces": "syn", - "synapseWorkspacesAnalyticsWorkspaces": "synw", - "synapseWorkspacesSqlPoolsDedicated": "syndp", - "synapseWorkspacesSqlPoolsSpark": "synsp", - "timeSeriesInsightsEnvironments": "tsi-", - "webServerFarms": "plan-", - "webSitesAppService": "app-", - "webSitesAppServiceEnvironment": "ase-", - "webSitesFunctions": "func-", - "webStaticSites": "stapp-", - "dts": "dts-", - "taskhub": "taskhub-" - -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/documentintelligence-Access.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/documentintelligence-Access.bicep deleted file mode 100644 index 0b30cfd3..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/documentintelligence-Access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -metadata description = 'Creates a role assignment for a service principal.' -param principalId string - -@allowed([ - 'Device' - 'ForeignGroup' - 'Group' - 'ServicePrincipal' - 'User' -]) -param principalType string = 'ServicePrincipal' -param roleDefinitionId string - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - properties: { - principalId: principalId - principalType: principalType - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts-Access.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts-Access.bicep deleted file mode 100644 index a0935bf1..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts-Access.bicep +++ /dev/null @@ -1,18 +0,0 @@ -param principalID string -param roleDefinitionID string -param dtsName string -param principalType string - -resource dts 'Microsoft.DurableTask/schedulers@2025-11-01' existing = { - name: dtsName -} - -resource dtsRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(dts.id, principalID, roleDefinitionID ) - scope: dts - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID ) - principalId: principalID - principalType: principalType - } -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts.bicep deleted file mode 100644 index 6280e5a4..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/dts.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param ipAllowlist array -param location string -param tags object = {} -param name string -param taskhubname string -param skuName string -param skuCapacity int = 0 - -resource dts 'Microsoft.DurableTask/schedulers@2025-11-01' = { - location: location - tags: tags - name: name - properties: { - ipAllowlist: ipAllowlist - sku: skuName == 'Dedicated' ? { - name: skuName - capacity: skuCapacity - } : { - name: skuName - } - } -} - -resource taskhub 'Microsoft.DurableTask/schedulers/taskhubs@2025-11-01' = { - parent: dts - name: taskhubname -} - -output dts_NAME string = dts.name -output dts_URL string = dts.properties.endpoint -output TASKHUB_NAME string = taskhub.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/durable-function.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/durable-function.bicep deleted file mode 100644 index c19ccd67..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/durable-function.bicep +++ /dev/null @@ -1,54 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} -param applicationInsightsName string = '' -param appServicePlanId string -param appSettings object = {} -param runtimeName string -param runtimeVersion string -param serviceName string = 'pdf-summarizer-dotnet' -param storageAccountName string -param virtualNetworkSubnetId string = '' -param identityId string = '' -param identityClientId string = '' -param dtsURL string = '' -param taskHubName string = '' -param azureOpenaiService string -param deploymentStorageContainerName string -param documentIntelligenceEndpoint string - -var applicationInsightsIdentity = 'ClientId=${identityClientId};Authorization=AAD' - - -module durableFunction '../core/host/functions.bicep' = { - name: '${serviceName}-functions-module' - params: { - name: name - location: location - tags: union(tags, { 'azd-service-name': serviceName }) - identityType: 'UserAssigned' - identityId: identityId - appSettings: union(appSettings, - { - AzureWebJobsStorage__clientId : identityClientId - AzureWebJobsStorage__credential : 'managedidentity' - APPLICATIONINSIGHTS_AUTHENTICATION_STRING: applicationInsightsIdentity - DTS_CONNECTION_STRING: 'Endpoint=${dtsURL};Authentication=ManagedIdentity;ClientID=${identityClientId}' - TASKHUB_NAME: taskHubName - AZURE_CLIENT_ID: identityClientId - }) - documentIntelligenceEndpoint: documentIntelligenceEndpoint - azureOpenaiService: azureOpenaiService - applicationInsightsName: applicationInsightsName - appServicePlanId: appServicePlanId - runtimeName: runtimeName - runtimeVersion: runtimeVersion - storageAccountName: storageAccountName - storageManagedIdentity: true - deploymentStorageContainerName: deploymentStorageContainerName - virtualNetworkSubnetId: virtualNetworkSubnetId - } -} - -output SERVICE_DURABLE_FUNCTION_NAME string = durableFunction.outputs.name -output SERVICE_API_IDENTITY_PRINCIPAL_ID string = durableFunction.outputs.identityPrincipalId diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/openai-Access.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/openai-Access.bicep deleted file mode 100644 index d3fb68f4..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/openai-Access.bicep +++ /dev/null @@ -1,17 +0,0 @@ -param principalId string -param roleDefinitionIds array -param openAiAccountResourceName string - -resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' existing = { - name: openAiAccountResourceName -} - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = [for roleDefinitionId in roleDefinitionIds: { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - scope: account - properties: { - principalId: principalId - principalType: 'ServicePrincipal' - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -}] diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-Access.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-Access.bicep deleted file mode 100644 index 498b501d..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-Access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param principalID string -param roleDefinitionID string -param storageAccountName string -param principalType string = 'ServicePrincipal' // Workaround for https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal - -resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: storageAccountName -} - -// Allow access from API to storage account using a managed identity and least priv Storage roles -resource storageRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(storageAccount.id, principalID, roleDefinitionID) - scope: storageAccount - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID) - principalId: principalID - principalType: principalType - } -} - -output ROLE_ASSIGNMENT_NAME string = storageRoleAssignment.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-PrivateEndpoint.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-PrivateEndpoint.bicep deleted file mode 100644 index b2ae5e2e..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/storage-PrivateEndpoint.bicep +++ /dev/null @@ -1,89 +0,0 @@ -// Parameters -@description('Specifies the name of the virtual network.') -param virtualNetworkName string - -@description('Specifies the name of the subnet which contains the virtual machine.') -param subnetName string - -@description('Specifies the resource name of the Storage resource with an endpoint.') -param resourceName string - -@description('Specifies the location.') -param location string = resourceGroup().location - -param tags object = {} - -// Virtual Network -resource vnet 'Microsoft.Network/virtualNetworks@2021-08-01' existing = { - name: virtualNetworkName -} - -resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: resourceName -} - -var blobPrivateDNSZoneName = format('privatelink.blob.{0}', environment().suffixes.storage) -var blobPrivateDnsZoneVirtualNetworkLinkName = format('{0}-link-{1}', resourceName, take(toLower(uniqueString(resourceName, virtualNetworkName)), 4)) - -// Private DNS Zones -resource blobPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { - name: blobPrivateDNSZoneName - location: 'global' - tags: tags - properties: {} - dependsOn: [ - vnet - ] -} - -// Virtual Network Links -resource blobPrivateDnsZoneVirtualNetworkLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { - parent: blobPrivateDnsZone - name: blobPrivateDnsZoneVirtualNetworkLinkName - location: 'global' - tags: tags - properties: { - registrationEnabled: false - virtualNetwork: { - id: vnet.id - } - } -} - -// Private Endpoints -resource blobPrivateEndpoint 'Microsoft.Network/privateEndpoints@2021-08-01' = { - name: 'blob-private-endpoint' - location: location - tags: tags - properties: { - privateLinkServiceConnections: [ - { - name: 'blobPrivateLinkConnection' - properties: { - privateLinkServiceId: storageAccount.id - groupIds: [ - 'blob' - ] - } - } - ] - subnet: { - id: '${vnet.id}/subnets/${subnetName}' - } - } -} - -resource blobPrivateDnsZoneGroupName 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = { - parent: blobPrivateEndpoint - name: 'blobPrivateDnsZoneGroup' - properties: { - privateDnsZoneConfigs: [ - { - name: 'storageBlobARecord' - properties: { - privateDnsZoneId: blobPrivateDnsZone.id - } - } - ] - } -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/vnet.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/app/vnet.bicep deleted file mode 100644 index bfa21d60..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/app/vnet.bicep +++ /dev/null @@ -1,75 +0,0 @@ -@description('Specifies the name of the virtual network.') -param vNetName string - -@description('Specifies the location.') -param location string = resourceGroup().location - -@description('Specifies the name of the subnet for the Service Bus private endpoint.') -param peSubnetName string = 'private-endpoints-subnet' - -@description('Specifies the name of the subnet for Function App virtual network integration.') -param appSubnetName string = 'app' - -param tags object = {} - -resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-05-01' = { - name: vNetName - location: location - tags: tags - properties: { - addressSpace: { - addressPrefixes: [ - '10.0.0.0/16' - ] - } - encryption: { - enabled: false - enforcement: 'AllowUnencrypted' - } - subnets: [ - { - name: peSubnetName - id: resourceId('Microsoft.Network/virtualNetworks/subnets', vNetName, 'private-endpoints-subnet') - properties: { - addressPrefixes: [ - '10.0.1.0/24' - ] - delegations: [] - privateEndpointNetworkPolicies: 'Disabled' - privateLinkServiceNetworkPolicies: 'Enabled' - } - type: 'Microsoft.Network/virtualNetworks/subnets' - } - { - name: appSubnetName - id: resourceId('Microsoft.Network/virtualNetworks/subnets', vNetName, 'app') - properties: { - addressPrefixes: [ - '10.0.2.0/24' - ] - delegations: [ - { - name: 'delegation' - id: resourceId('Microsoft.Network/virtualNetworks/subnets/delegations', vNetName, 'app', 'delegation') - properties: { - //'Microsoft.Web/serverFarms' is the correct delegation for Premium Function and App Service VNet integration - serviceName: 'Microsoft.Web/serverFarms' - } - type: 'Microsoft.Network/virtualNetworks/subnets/delegations' - } - ] - privateEndpointNetworkPolicies: 'Disabled' - privateLinkServiceNetworkPolicies: 'Enabled' - } - type: 'Microsoft.Network/virtualNetworks/subnets' - } - ] - virtualNetworkPeerings: [] - enableDdosProtection: false - } -} - -output peSubnetName string = virtualNetwork.properties.subnets[0].name -output peSubnetID string = virtualNetwork.properties.subnets[0].id -output appSubnetName string = virtualNetwork.properties.subnets[1].name -output appSubnetID string = virtualNetwork.properties.subnets[1].id diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/ai/openai.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/ai/openai.bicep deleted file mode 100644 index b3d12ee4..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/ai/openai.bicep +++ /dev/null @@ -1,48 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param customSubDomainName string = name -param deployments array = [] -param kind string = 'OpenAI' -param publicNetworkAccess string = 'Enabled' -param sku object = { - name: 'S0' -} - -resource account 'Microsoft.CognitiveServices/accounts@2023-10-01-preview' = { - name: name - location: location - tags: tags - kind: kind - properties: { - customSubDomainName: name - networkAcls : { - defaultAction: publicNetworkAccess == 'Enabled' ? 'Allow' : 'Deny' - virtualNetworkRules: [] - ipRules: [] - } - publicNetworkAccess: publicNetworkAccess - } - sku: sku -} - -@batchSize(1) -resource deployment 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = [for deployment in deployments: { - parent: account - name: deployment.name - sku: { - name: 'Standard' - capacity: deployment.capacity - } - properties: { - model: deployment.model - raiPolicyName: contains(deployment, 'raiPolicyName') ? deployment.raiPolicyName : null - } -}] - -output endpoint string = account.properties.endpoint -output id string = account.id -output name string = account.name -output location string = account.location - \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice-appsettings.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice-appsettings.bicep deleted file mode 100644 index f4b22f81..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice-appsettings.bicep +++ /dev/null @@ -1,17 +0,0 @@ -metadata description = 'Updates app settings for an Azure App Service.' -@description('The name of the app service resource within the current resource group scope') -param name string - -@description('The app settings to be applied to the app service') -@secure() -param appSettings object - -resource appService 'Microsoft.Web/sites@2022-03-01' existing = { - name: name -} - -resource settings 'Microsoft.Web/sites/config@2022-03-01' = { - name: 'appsettings' - parent: appService - properties: appSettings -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice.bicep deleted file mode 100644 index 9eb55851..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appservice.bicep +++ /dev/null @@ -1,136 +0,0 @@ -metadata description = 'Creates an Azure App Service in an existing Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param keyVaultName string = '' -param managedIdentity bool = !empty(keyVaultName) -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet', 'dotnetcore', 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -param runtimeNameAndVersion string = '${runtimeName}|${runtimeVersion}' -param runtimeVersion string - -// Microsoft.Web/sites Properties -param kind string = 'app,linux' - -// Microsoft.Web/sites/config -param allowedOrigins array = [] -param alwaysOn bool = true -param appCommandLine string = '' -@secure() -param appSettings object = {} -param clientAffinityEnabled bool = false -param enableOryxBuild bool = contains(kind, 'linux') -param functionAppScaleLimit int = -1 -param linuxFxVersion string = runtimeNameAndVersion -param minimumElasticInstanceCount int = -1 -param numberOfWorkers int = -1 -param scmDoBuildDuringDeployment bool = false -param use32BitWorkerProcess bool = false -param ftpsState string = 'FtpsOnly' -param healthCheckPath string = '' -param virtualNetworkSubnetId string = '' - -resource appService 'Microsoft.Web/sites@2022-03-01' = { - name: name - location: location - tags: tags - kind: kind - properties: { - serverFarmId: appServicePlanId - siteConfig: { - linuxFxVersion: linuxFxVersion - alwaysOn: alwaysOn - ftpsState: ftpsState - minTlsVersion: '1.2' - appCommandLine: appCommandLine - numberOfWorkers: numberOfWorkers != -1 ? numberOfWorkers : null - minimumElasticInstanceCount: minimumElasticInstanceCount != -1 ? minimumElasticInstanceCount : null - use32BitWorkerProcess: use32BitWorkerProcess - functionAppScaleLimit: functionAppScaleLimit != -1 ? functionAppScaleLimit : null - healthCheckPath: healthCheckPath - cors: { - allowedOrigins: union([ 'https://portal.azure.com', 'https://ms.portal.azure.com' ], allowedOrigins) - } - } - clientAffinityEnabled: clientAffinityEnabled - httpsOnly: true - virtualNetworkSubnetId: !empty(virtualNetworkSubnetId) ? virtualNetworkSubnetId : null - } - - identity: managedIdentity ? (identityType == 'UserAssigned' ? { - type: 'UserAssigned' - userAssignedIdentities: { - '${identityId}': {} - } - } : { - type: 'SystemAssigned' - }) : null - - resource basicPublishingCredentialsPoliciesFtp 'basicPublishingCredentialsPolicies' = { - name: 'ftp' - properties: { - allow: false - } - } - - resource basicPublishingCredentialsPoliciesScm 'basicPublishingCredentialsPolicies' = { - name: 'scm' - properties: { - allow: false - } - } -} - -// Updates to the single Microsoft.sites/web/config resources that need to be performed sequentially -// sites/web/config 'appsettings' -module configAppSettings 'appservice-appsettings.bicep' = { - name: '${name}-appSettings' - params: { - name: appService.name - appSettings: union(appSettings, - { - SCM_DO_BUILD_DURING_DEPLOYMENT: string(scmDoBuildDuringDeployment) - ENABLE_ORYX_BUILD: string(enableOryxBuild) - }, - runtimeName == 'python' && appCommandLine == '' ? { PYTHON_ENABLE_GUNICORN_MULTIWORKERS: 'true'} : {}, - !empty(applicationInsightsName) ? { APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.properties.ConnectionString } : {}, - !empty(keyVaultName) ? { AZURE_KEY_VAULT_ENDPOINT: keyVault.properties.vaultUri } : {}) - } -} - -// sites/web/config 'logs' -resource configLogs 'Microsoft.Web/sites/config@2022-03-01' = { - name: 'logs' - parent: appService - properties: { - applicationLogs: { fileSystem: { level: 'Verbose' } } - detailedErrorMessages: { enabled: true } - failedRequestsTracing: { enabled: true } - httpLogs: { fileSystem: { enabled: true, retentionInDays: 1, retentionInMb: 35 } } - } - dependsOn: [configAppSettings] -} - -resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = if (!(empty(keyVaultName))) { - name: keyVaultName -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = if (!empty(applicationInsightsName)) { - name: applicationInsightsName -} - -output identityPrincipalId string = managedIdentity ? string(appService.identity.userAssignedIdentities[identityId].principalId) : '' -output name string = appService.name -output uri string = 'https://${appService.properties.defaultHostName}' diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appserviceplan.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appserviceplan.bicep deleted file mode 100644 index 2e37e041..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/appserviceplan.bicep +++ /dev/null @@ -1,22 +0,0 @@ -metadata description = 'Creates an Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -param kind string = '' -param reserved bool = true -param sku object - -resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { - name: name - location: location - tags: tags - sku: sku - kind: kind - properties: { - reserved: reserved - } -} - -output id string = appServicePlan.id -output name string = appServicePlan.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions-flexconsumption.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions-flexconsumption.bicep deleted file mode 100644 index d6a5e632..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions-flexconsumption.bicep +++ /dev/null @@ -1,87 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param storageAccountName string -param virtualNetworkSubnetId string = '' -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -@allowed(['3.10', '3.11', '7.4', '8.0', '10', '11', '17', '20']) -param runtimeVersion string -param kind string = 'functionapp,linux' - -// Microsoft.Web/sites/config -param appSettings object = {} -param instanceMemoryMB int = 2048 -param maximumInstanceCount int = 100 -param deploymentStorageContainerName string - -resource stg 'Microsoft.Storage/storageAccounts@2022-09-01' existing = { - name: storageAccountName -} - -resource functions 'Microsoft.Web/sites@2023-12-01' = { - name: name - location: location - tags: tags - kind: kind - identity: { - type: identityType - userAssignedIdentities: { - '${identityId}': {} - } - } - properties: { - serverFarmId: appServicePlanId - functionAppConfig: { - deployment: { - storage: { - type: 'blobContainer' - value: '${stg.properties.primaryEndpoints.blob}${deploymentStorageContainerName}' - authentication: { - type: identityType == 'SystemAssigned' ? 'SystemAssignedIdentity' : 'UserAssignedIdentity' - userAssignedIdentityResourceId: identityType == 'UserAssigned' ? identityId : '' - } - } - } - scaleAndConcurrency: { - instanceMemoryMB: instanceMemoryMB - maximumInstanceCount: maximumInstanceCount - } - runtime: { - name: runtimeName - version: runtimeVersion - } - } - virtualNetworkSubnetId: virtualNetworkSubnetId - } - - resource configAppSettings 'config' = { - name: 'appsettings' - properties: union(appSettings, - { - AzureWebJobsStorage__accountName: stg.name - AzureWebJobsStorage__credential : 'managedidentity' - APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.properties.ConnectionString - }) - } -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = if (!empty(applicationInsightsName)) { - name: applicationInsightsName -} - -output name string = functions.name -output uri string = 'https://${functions.properties.defaultHostName}' -output identityPrincipalId string = identityType == 'SystemAssigned' ? functions.identity.principalId : '' diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions.bicep deleted file mode 100644 index 256a4a39..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/host/functions.bicep +++ /dev/null @@ -1,116 +0,0 @@ -metadata description = 'Creates an Azure Function in an existing Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param keyVaultName string = '' -param managedIdentity bool = !empty(keyVaultName) || storageManagedIdentity -param storageAccountName string -param storageManagedIdentity bool = false -param virtualNetworkSubnetId string = '' -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet', 'dotnetcore', 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -param runtimeNameAndVersion string = '${runtimeName}|${runtimeVersion}' -param runtimeVersion string - -// Function Settings -@allowed([ - '~4', '~3', '~2', '~1' -]) -param extensionVersion string = '~4' - -// Microsoft.Web/sites Properties -param kind string = 'functionapp,linux' - -// Microsoft.Web/sites/config -param allowedOrigins array = [] -param alwaysOn bool = true -param appCommandLine string = '' -@secure() -param appSettings object = {} -param clientAffinityEnabled bool = false -param enableOryxBuild bool = contains(kind, 'linux') -param functionAppScaleLimit int = -1 -param linuxFxVersion string = runtimeNameAndVersion -param minimumElasticInstanceCount int = -1 -param numberOfWorkers int = -1 -param scmDoBuildDuringDeployment bool = true -param use32BitWorkerProcess bool = false -param healthCheckPath string = '' -param deploymentStorageContainerName string -param deploymentStorageFileName string = 'functions' // Default to functions.zip name in WEBSITE_RUN_FROM_PACKAGE= value -param azureOpenaiService string -param documentIntelligenceEndpoint string - -module functions 'appservice.bicep' = { - name: '${name}-functions' - params: { - name: name - location: location - tags: tags - allowedOrigins: allowedOrigins - alwaysOn: alwaysOn - appCommandLine: appCommandLine - applicationInsightsName: applicationInsightsName - appServicePlanId: appServicePlanId - appSettings: union(appSettings, { - AzureWebJobsStorage__accountname: storage.name - AzureWebJobsStorage__blobServiceUri: 'https://${storage.name}.blob.core.windows.net/' - AzureWebJobsStorage__queueServiceUri: 'https://${storage.name}.queue.core.windows.net/' - AzureWebJobsStorage__credential: 'managedidentity' - FUNCTIONS_EXTENSION_VERSION: extensionVersion - FUNCTIONS_WORKER_RUNTIME: runtimeName - AZURE_OPENAI_ENDPOINT: 'https://${azureOpenaiService}.openai.azure.com/' - COGNITIVE_SERVICES_ENDPOINT: documentIntelligenceEndpoint - WEBSITE_RUN_FROM_PACKAGE: 'https://${storage.name}.blob.core.windows.net/${deploymentStorageContainerName}/${deploymentStorageFileName}.zip' - WEBSITE_RUN_FROM_PACKAGE_BLOB_MI_RESOURCE_ID: storageManagedIdentity ? identityId : null - }) - clientAffinityEnabled: clientAffinityEnabled - enableOryxBuild: enableOryxBuild - functionAppScaleLimit: functionAppScaleLimit - healthCheckPath: healthCheckPath - keyVaultName: keyVaultName - kind: kind - linuxFxVersion: linuxFxVersion - managedIdentity: managedIdentity - identityId: identityId - identityType: identityType - minimumElasticInstanceCount: minimumElasticInstanceCount - numberOfWorkers: numberOfWorkers - runtimeName: runtimeName - runtimeVersion: runtimeVersion - runtimeNameAndVersion: runtimeNameAndVersion - scmDoBuildDuringDeployment: scmDoBuildDuringDeployment - use32BitWorkerProcess: use32BitWorkerProcess - virtualNetworkSubnetId: virtualNetworkSubnetId - } -} - -module storageOwnerRole '../security/role.bicep' = if (storageManagedIdentity) { - name: 'search-index-contrib-role-api' - params: { - principalId: functions.outputs.identityPrincipalId - // Search Index Data Contributor - roleDefinitionId: '8ebe5a00-799e-43f5-93ac-243d3dce84a7' - principalType: 'ServicePrincipal' - } -} - -resource storage 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: storageAccountName -} - -output identityPrincipalId string = managedIdentity ? functions.outputs.identityPrincipalId : '' -output name string = functions.outputs.name -output uri string = functions.outputs.uri diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/identity/userAssignedIdentity.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/identity/userAssignedIdentity.bicep deleted file mode 100644 index 0d4e02ea..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/identity/userAssignedIdentity.bicep +++ /dev/null @@ -1,14 +0,0 @@ -param identityName string -param location string -param tags object = {} - -resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-07-31-preview' = { - name: identityName - location: location - tags: tags -} - -output identityId string = userAssignedIdentity.id -output identityName string = userAssignedIdentity.name -output identityPrincipalId string = userAssignedIdentity.properties.principalId -output identityClientId string = userAssignedIdentity.properties.clientId diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/appinsights-access.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/appinsights-access.bicep deleted file mode 100644 index f151b104..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/appinsights-access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param principalID string -param roleDefinitionID string -param appInsightsName string - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = { - name: appInsightsName -} - -// Allow access from API to app insights using a managed identity and least priv role -resource appInsightsRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(applicationInsights.id, principalID, roleDefinitionID) - scope: applicationInsights - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID) - principalId: principalID - principalType: 'ServicePrincipal' // Workaround for https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal - } -} - -output ROLE_ASSIGNMENT_NAME string = appInsightsRoleAssignment.name - diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/applicationinsights.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/applicationinsights.bicep deleted file mode 100644 index f6d9ee51..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/applicationinsights.bicep +++ /dev/null @@ -1,22 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param logAnalyticsWorkspaceId string -param disableLocalAuth bool = false - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { - name: name - location: location - tags: tags - kind: 'web' - properties: { - Application_Type: 'web' - WorkspaceResourceId: logAnalyticsWorkspaceId - DisableLocalAuth: disableLocalAuth - } -} - -output connectionString string = applicationInsights.properties.ConnectionString -output instrumentationKey string = applicationInsights.properties.InstrumentationKey -output name string = applicationInsights.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/loganalytics.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/loganalytics.bicep deleted file mode 100644 index 770544cc..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/loganalytics.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2021-12-01-preview' = { - name: name - location: location - tags: tags - properties: any({ - retentionInDays: 30 - features: { - searchVersion: 1 - } - sku: { - name: 'PerGB2018' - } - }) -} - -output id string = logAnalytics.id -output name string = logAnalytics.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/monitoring.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/monitoring.bicep deleted file mode 100644 index 791c5eb7..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/monitor/monitoring.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param logAnalyticsName string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} -param disableLocalAuth bool = false - -module logAnalytics 'loganalytics.bicep' = { - name: 'loganalytics' - params: { - name: logAnalyticsName - location: location - tags: tags - } -} - -module applicationInsights 'applicationinsights.bicep' = { - name: 'applicationinsights' - params: { - name: applicationInsightsName - location: location - tags: tags - logAnalyticsWorkspaceId: logAnalytics.outputs.id - disableLocalAuth: disableLocalAuth - } -} - -output applicationInsightsConnectionString string = applicationInsights.outputs.connectionString -output applicationInsightsInstrumentationKey string = applicationInsights.outputs.instrumentationKey -output applicationInsightsName string = applicationInsights.outputs.name -output logAnalyticsWorkspaceId string = logAnalytics.outputs.id -output logAnalyticsWorkspaceName string = logAnalytics.outputs.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/security/role.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/security/role.bicep deleted file mode 100644 index 0b30cfd3..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/security/role.bicep +++ /dev/null @@ -1,21 +0,0 @@ -metadata description = 'Creates a role assignment for a service principal.' -param principalId string - -@allowed([ - 'Device' - 'ForeignGroup' - 'Group' - 'ServicePrincipal' - 'User' -]) -param principalType string = 'ServicePrincipal' -param roleDefinitionId string - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - properties: { - principalId: principalId - principalType: principalType - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/storage/storage-account.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/core/storage/storage-account.bicep deleted file mode 100644 index 6149fb2f..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/core/storage/storage-account.bicep +++ /dev/null @@ -1,101 +0,0 @@ -metadata description = 'Creates an Azure storage account.' -param name string -param location string = resourceGroup().location -param tags object = {} - -@allowed([ - 'Cool' - 'Hot' - 'Premium' ]) -param accessTier string = 'Hot' -param allowBlobPublicAccess bool = true -param allowCrossTenantReplication bool = true -param allowSharedKeyAccess bool = true -param containers array = [] -param corsRules array = [] -param defaultToOAuthAuthentication bool = false -param deleteRetentionPolicy object = {} -@allowed([ 'AzureDnsZone', 'Standard' ]) -param dnsEndpointType string = 'Standard' -param files array = [] -param kind string = 'StorageV2' -param minimumTlsVersion string = 'TLS1_2' -param queues array = [] -param shareDeleteRetentionPolicy object = {} -param supportsHttpsTrafficOnly bool = true -param tables array = [] -param networkAcls object = { - bypass: 'AzureServices' - defaultAction: 'Allow' -} -@allowed([ 'Enabled', 'Disabled' ]) -param publicNetworkAccess string = 'Enabled' -param sku object = { name: 'Standard_LRS' } - -resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = { - name: name - location: location - tags: tags - kind: kind - sku: sku - properties: { - accessTier: accessTier - allowBlobPublicAccess: allowBlobPublicAccess - allowCrossTenantReplication: allowCrossTenantReplication - allowSharedKeyAccess: allowSharedKeyAccess - defaultToOAuthAuthentication: defaultToOAuthAuthentication - dnsEndpointType: dnsEndpointType - minimumTlsVersion: minimumTlsVersion - networkAcls: networkAcls - publicNetworkAccess: publicNetworkAccess - supportsHttpsTrafficOnly: supportsHttpsTrafficOnly - } - - resource blobServices 'blobServices' = if (!empty(containers)) { - name: 'default' - properties: { - cors: { - corsRules: corsRules - } - deleteRetentionPolicy: deleteRetentionPolicy - } - resource container 'containers' = [for container in containers: { - name: container.name - properties: { - publicAccess: contains(container, 'publicAccess') ? container.publicAccess : 'None' - } - }] - } - - resource fileServices 'fileServices' = if (!empty(files)) { - name: 'default' - properties: { - cors: { - corsRules: corsRules - } - shareDeleteRetentionPolicy: shareDeleteRetentionPolicy - } - } - - resource queueServices 'queueServices' = if (!empty(queues)) { - name: 'default' - properties: { - - } - resource queue 'queues' = [for queue in queues: { - name: queue.name - properties: { - metadata: {} - } - }] - } - - resource tableServices 'tableServices' = if (!empty(tables)) { - name: 'default' - properties: {} - } -} - -output id string = storage.id -output name string = storage.name -output primaryEndpoints object = storage.properties.primaryEndpoints diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/main.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/main.bicep deleted file mode 100644 index 9fabf898..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/main.bicep +++ /dev/null @@ -1,404 +0,0 @@ -targetScope = 'subscription' - -@minLength(1) -@maxLength(64) -@description('Name of the the environment which is used to generate a short unique hash used in all resources.') -param environmentName string - -@minLength(1) -@description('Primary location for all resources') -@allowed(['australiaeast', 'eastasia', 'northcentralus', 'northeurope', 'southeastasia', 'swedencentral', 'uksouth', 'westus2', 'centralus']) -@metadata({ - azd: { - type: 'location' - } -}) -param location string - -@allowed([ - 'EP1' - 'EP2' - 'EP3' - 'P1v2' - 'P2v2' - 'P3v2' - 'P1v3' - 'P2v3' - 'P3v3' - 'P1mv3' - 'P2mv3' - 'P3mv3' - 'P4mv3' - 'P5mv3' - 'P0v3' - 'S1' - 'B1' - 'B2' - 'B3' -]) -param functionSkuName string = 'EP1' // Uses main.parameters.json first - -@allowed([ - 'ElasticPremium' - 'PremiumV3' - 'Premium0V3' - 'Standard' - 'Basic' -]) - -param functionSkuTier string = 'ElasticPremium' // Uses main.parameters.json first -param functionReservedPlan bool = true // Set to false to get a Windows OS plan - -param dtsLocation string = location -param dtsSkuName string = 'Consumption' -param dtsCapacity int = 1 - -param documentIntelligenceSkuName string // Set in main.parameters.json -param documentIntelligenceServiceName string = '' // Set in main.parameters.json - -param durableFunctionServiceName string = '' -param durableFunctionUserAssignedIdentityName string = '' -param applicationInsightsName string = '' -param appServicePlanName string = '' -param logAnalyticsName string = '' -param resourceGroupName string = '' -param storageAccountName string = '' -param dtsName string = '' -param taskHubName string = '' -param vNetName string = '' -param disableLocalAuth bool = true - -param openAiServiceName string = '' - -param openAiSkuName string -@allowed([ 'azure', 'openai', 'azure_custom' ]) -param openAiHost string // Set in main.parameters.json - -@description('Public network access value for all deployed resources') -@allowed(['Enabled', 'Disabled']) -param publicNetworkAccess string = 'Enabled' - -param chatModelName string = '' -param chatDeploymentName string = '' -param chatDeploymentVersion string = '' -param chatDeploymentCapacity int = 0 -param skipVnet bool = true - -var chatModel = { - modelName: !empty(chatModelName) ? chatModelName : startsWith(openAiHost, 'azure') ? 'gpt-4o' : 'gpt-4o' - deploymentName: !empty(chatDeploymentName) ? chatDeploymentName : 'chat' - deploymentVersion: !empty(chatDeploymentVersion) ? chatDeploymentVersion : '2024-08-06' - deploymentCapacity: chatDeploymentCapacity != 0 ? chatDeploymentCapacity : 40 -} - -var abbrs = loadJsonContent('./abbreviations.json') -var resourceToken = toLower(uniqueString(subscription().id, environmentName, location)) -var tags = { 'azd-env-name': environmentName } -var functionAppName = !empty(durableFunctionServiceName) ? durableFunctionServiceName : '${abbrs.webSitesFunctions}${resourceToken}' -var deploymentStorageContainerName = 'app-package-${take(functionAppName, 32)}-${take(toLower(uniqueString(functionAppName, resourceToken)), 7)}' - -@description('Id of the user or app to assign application roles') -param principalId string = '' - -// Organize resources in a resource group -resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = { - name: !empty(resourceGroupName) ? resourceGroupName : '${abbrs.resourcesResourceGroups}${environmentName}' - location: location - tags: tags -} - -module durableFunctionUserAssignedIdentity './core/identity/userAssignedIdentity.bicep' = { - name: 'DurableFunctionUserAssignedIdentity' - scope: rg - params: { - location: location - tags: tags - identityName: !empty(durableFunctionUserAssignedIdentityName) ? durableFunctionUserAssignedIdentityName : '${abbrs.managedIdentityUserAssignedIdentities}durable-function-${resourceToken}' - } -} - -// The application backend is a function app -module appServicePlan './core/host/appserviceplan.bicep' = { - name: 'appserviceplan' - scope: rg - params: { - name: !empty(appServicePlanName) ? appServicePlanName : '${abbrs.webServerFarms}${resourceToken}' - location: location - tags: tags - sku: { - name: functionSkuName // Change this to the desired Elastic Premium SKU - tier: functionSkuTier - } - reserved: functionReservedPlan // Set to false to get a Windows OS plan - } -} - -module durableFunction './app/durable-function.bicep' = { - name: 'pdf-summarizer-dotnet' - scope: rg - params: { - name: functionAppName - location: location - tags: tags - applicationInsightsName: monitoring.outputs.applicationInsightsName - appServicePlanId: appServicePlan.outputs.id - runtimeName: 'dotnet-isolated' - runtimeVersion: '8.0' - storageAccountName: storage.outputs.name - identityId: durableFunctionUserAssignedIdentity.outputs.identityId - identityClientId: durableFunctionUserAssignedIdentity.outputs.identityClientId - deploymentStorageContainerName: deploymentStorageContainerName - dtsURL: dts.outputs.dts_URL - taskHubName: dts.outputs.TASKHUB_NAME - azureOpenaiService: openAi.outputs.name - documentIntelligenceEndpoint: documentIntelligence.outputs.endpoint - appSettings: { - CHAT_MODEL_DEPLOYMENT_NAME: chatModel.deploymentName - } - virtualNetworkSubnetId: serviceVirtualNetwork.outputs.appSubnetID - } -} - -// Backing storage for Azure functions durable function -module storage './core/storage/storage-account.bicep' = { - name: 'storage' - scope: rg - params: { - name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}' - location: location - tags: tags - containers: [{ - name: deploymentStorageContainerName - publicAccess: 'None' - },{ - name: 'input' - publicAccess: 'None' - - },{ - name: 'output' - publicAccess: 'None' - }] - publicNetworkAccess: 'Enabled' // revisit for wave 3 - allowBlobPublicAccess: false - } -} - -var storageRoleDefinitionId = 'b7e6dc6d-f1e8-4753-8033-0f276bb0955b' //Storage Blob Data Owner role -var queueStorageRoleDefinitionId = '974c5e8b-45b9-4653-ba55-5f855dd0fb88' //Queue Storage Blob Data Owner role -var storageAccountRoleDefinitionId = '17d1049b-9a84-46fb-8f53-869881c3d3ab' //Storage Account Contributor role - -// Allow access from durable function to storage account using the Login identity of this bicep (usually AZD CLI) -module storageRoleAssignmentApiUAMI 'app/storage-Access.bicep' = { - name: 'storageRoleAssignmentUAMI' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: storageRoleDefinitionId - principalID: principalId - principalType: 'User' - } -} - -module queueStorageRoleAssignmentApi 'app/storage-Access.bicep' = { - name: 'ququeStorageRoleAssignmentPocessorUAMI' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: queueStorageRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - } -} - -module blobStorageRoleAssignmentApi 'app/storage-Access.bicep' = { - name: 'blobStorageRoleAssignmentPocessor' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: storageRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - } -} - -// Allow access from durable function to storage account using a user assigned managed identity -module storageAccountRoleAssignmentApi 'app/storage-Access.bicep' = { - name: 'storageAccountRoleAssignmentPocessor' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: storageAccountRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - } -} - -// Virtual Network & private endpoint to blob storage -module serviceVirtualNetwork 'app/vnet.bicep' = { - name: 'serviceVirtualNetwork' - scope: rg - params: { - location: location - tags: tags - vNetName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}' - } -} - -module storagePrivateEndpoint 'app/storage-PrivateEndpoint.bicep' = { - name: 'servicePrivateEndpoint' - scope: rg - params: { - location: location - tags: tags - virtualNetworkName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}' - subnetName: serviceVirtualNetwork.outputs.peSubnetName - resourceName: storage.outputs.name - } -} - -// Monitor application with Azure Monitor -module monitoring './core/monitor/monitoring.bicep' = { - name: 'monitoring' - scope: rg - params: { - location: location - tags: tags - logAnalyticsName: !empty(logAnalyticsName) ? logAnalyticsName : '${abbrs.operationalInsightsWorkspaces}${resourceToken}' - applicationInsightsName: !empty(applicationInsightsName) ? applicationInsightsName : '${abbrs.insightsComponents}${resourceToken}' - disableLocalAuth: disableLocalAuth - } -} - -var monitoringRoleDefinitionId = '3913510d-42f4-4e42-8a64-420c390055eb' // Monitoring Metrics Publisher role ID - -// Allow access from durable function` to application insights using a managed identity -module appInsightsRoleAssignmentApi './core/monitor/appinsights-access.bicep' = { - name: 'appInsightsRoleAssignmentDurableFunction' - scope: rg - params: { - appInsightsName: monitoring.outputs.applicationInsightsName - roleDefinitionID: monitoringRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - } -} - -// Allow access from durable function to storage account using a user assigned managed identity -module dtsRoleAssignment 'app/dts-Access.bicep' = { - name: 'dtsRoleAssignment' - scope: rg - params: { - roleDefinitionID: '0ad04412-c4d5-4796-b79c-f76d14c8d402' - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - dtsName: dts.outputs.dts_NAME - } -} - -module dtsDashboardRoleAssignment 'app/dts-Access.bicep' = { - name: 'dtsDashboardRoleAssignment' - scope: rg - params: { - roleDefinitionID: '0ad04412-c4d5-4796-b79c-f76d14c8d402' - principalID: principalId - principalType: 'User' - dtsName: dts.outputs.dts_NAME - } -} - -module dts './app/dts.bicep' = { - scope: rg - name: 'dtsResource' - params: { - name: !empty(dtsName) ? dtsName : '${abbrs.dts}${resourceToken}' - taskhubname: !empty(taskHubName) ? taskHubName : '${abbrs.taskhub}${resourceToken}' - location: dtsLocation - tags: tags - ipAllowlist: [ - '0.0.0.0/0' - ] - skuName: dtsSkuName - skuCapacity: dtsCapacity - } -} - -module openAi 'core/ai/openai.bicep' = { - name: 'openai' - scope: rg - params: { - name: !empty(openAiServiceName) ? openAiServiceName : '${abbrs.cognitiveServicesAccounts}${resourceToken}' - location: 'eastus2' - tags: tags - publicNetworkAccess: skipVnet == 'false' ? 'Disabled' : 'Enabled' - sku: { - name: openAiSkuName - } - deployments: [ - { - name: chatModel.deploymentName - capacity: chatModel.deploymentCapacity - model: { - format: 'OpenAI' - name: chatModel.modelName - version: chatModel.deploymentVersion - } - scaleSettings: { - scaleType: 'Standard' - } - } - ] - } -} - -// Learn more about Azure role-based access control (RBAC) and built-in-roles at https://docs.microsoft.com/en-us/azure/role-based-access-control/overview -var CognitiveServicesRoleDefinitionIds = ['5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'] // Cognitive Services OpenAI User -module openAiRoleUser 'app/openai-Access.bicep' = { - scope: rg - name: 'openai-roles' - params: { - principalId: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - openAiAccountResourceName: openAi.outputs.name - roleDefinitionIds: CognitiveServicesRoleDefinitionIds - } -} - -module documentIntelligence 'br/public:avm/res/cognitive-services/account:0.5.4' = { - name: 'documentintelligence' - scope: rg - params: { - name: !empty(documentIntelligenceServiceName) - ? documentIntelligenceServiceName - : '${abbrs.cognitiveServicesDocumentIntelligence}${resourceToken}' - kind: 'FormRecognizer' - customSubDomainName: !empty(documentIntelligenceServiceName) - ? documentIntelligenceServiceName - : '${abbrs.cognitiveServicesDocumentIntelligence}${resourceToken}' - publicNetworkAccess: publicNetworkAccess - networkAcls: { - defaultAction: 'Allow' - } - location: location - disableLocalAuth: true - tags: tags - sku: documentIntelligenceSkuName - } -} - -module documentIntelligenceRoleBackend 'app/documentintelligence-Access.bicep' = { - scope: rg - name: 'documentintelligence-role-backend' - params: { - principalId: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - roleDefinitionId: 'a97b65f3-24c7-4388-baec-2e87135dc908' - principalType: 'ServicePrincipal' - } -} - -// App outputs -output APPLICATIONINSIGHTS_CONNECTION_STRING string = monitoring.outputs.applicationInsightsConnectionString -output AZURE_LOCATION string = location -output AZURE_TENANT_ID string = tenant().tenantId -output SERVICE_DURABLE_FUNCTION_NAME string = durableFunction.outputs.SERVICE_DURABLE_FUNCTION_NAME -output AZURE_FUNCTION_NAME string = durableFunction.outputs.SERVICE_DURABLE_FUNCTION_NAME -output AZURE_RESOURCE_GROUP string = rg.name -output AZURE_STORAGE_ACCOUNT_NAME string = storage.outputs.name -output AZURE_STORAGE_CONTAINER_NAME string = deploymentStorageContainerName diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/main.parameters.json b/samples/durable-functions/dotnet/PdfSummarizer/infra/main.parameters.json deleted file mode 100644 index e72b9dc4..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/main.parameters.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "environmentName": { - "value": "${AZURE_ENV_NAME}" - }, - "location": { - "value": "${AZURE_LOCATION}" - }, - "principalId": { - "value": "${AZURE_PRINCIPAL_ID}" - }, - "openAiSkuName": { - "value": "S0" - }, - "openAiServiceName": { - "value": "${AZURE_OPENAI_SERVICE}" - }, - "openAiHost": { - "value": "${OPENAI_HOST=azure}" - }, - "openAiResourceGroupName": { - "value": "${AZURE_OPENAI_RESOURCE_GROUP}" - }, - "chatGptDeploymentName": { - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT=chat}" - }, - "chatGptDeploymentCapacity":{ - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT_CAPACITY}" - }, - "chatGptDeploymentVersion":{ - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT_VERSION}" - }, - "chatGptModelName":{ - "value": "${AZURE_OPENAI_CHATGPT_MODEL=gpt-35-turbo}" - }, - "documentIntelligenceServiceName": { - "value": "${AZURE_DOCUMENTINTELLIGENCE_SERVICE}" - }, - "documentIntelligenceSkuName": { - "value": "${AZURE_DOCUMENTINTELLIGENCE_SKU=S0}" - }, - "embeddingDeploymentName": { - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT=embedding}" - }, - "embeddingModelName":{ - "value": "${AZURE_OPENAI_EMB_MODEL_NAME=text-embedding-3-small}" - }, - "embeddingDeploymentVersion":{ - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT_VERSION}" - }, - "embeddingDeploymentCapacity":{ - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY}" - }, - "searchServiceName": { - "value": "${AZURE_SEARCH_SERVICE}" - }, - "searchServiceResourceGroupName": { - "value": "${AZURE_SEARCH_SERVICE_RESOURCE_GROUP}" - }, - "searchServiceIndexName": { - "value": "${AZURE_SEARCH_INDEX=openai-index}" - }, - "searchServiceSkuName": { - "value": "${AZURE_SEARCH_SERVICE_SKU=standard}" - }, - "storageAccountName": { - "value": "${AZURE_STORAGE_ACCOUNT}" - }, - "storageResourceGroupName": { - "value": "${AZURE_STORAGE_RESOURCE_GROUP}" - }, - "azFunctionHostingPlanType": { - "value": "flexconsumption" - }, - "systemPrompt": { - "value": "${SYSTEM_PROMPT}=You are a helpful assistant. You are responding to requests from a user about internal emails and documents. You can and should refer to the internal documents to help respond to requests. If a user makes a request thats not covered by the documents provided in the query, you must say that you do not have access to the information and not try and get information from other places besides the documents provided. The following is a list of documents that you can refer to when answering questions. The documents are in the format [filename]: [text] and are separated by newlines. If you answer a question by referencing any of the documents, please cite the document in your answer. For example, if you answer a question by referencing info.txt, you should add \"Reference: info.txt\" to the end of your answer on a separate line." - } - } -} \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/modules/fetch-container-image.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/modules/fetch-container-image.bicep deleted file mode 100644 index 78d1e7ee..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/modules/fetch-container-image.bicep +++ /dev/null @@ -1,8 +0,0 @@ -param exists bool -param name string - -resource existingApp 'Microsoft.App/containerApps@2023-05-02-preview' existing = if (exists) { - name: name -} - -output containers array = exists ? existingApp.properties.template.containers : [] diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/apps-env.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/apps-env.bicep deleted file mode 100644 index 030b8233..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/apps-env.bicep +++ /dev/null @@ -1,33 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param logAnalyticsWorkspaceName string -param applicationInsightsName string = '' - -resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2022-10-01' = { - name: name - location: location - tags: tags - properties: { - appLogsConfiguration: { - destination: 'log-analytics' - logAnalyticsConfiguration: { - customerId: logAnalyticsWorkspace.properties.customerId - sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey - } - } - daprAIConnectionString: applicationInsights.properties.ConnectionString - } -} - -resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' existing = { - name: logAnalyticsWorkspaceName -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = { - name: applicationInsightsName -} - -output name string = containerAppsEnvironment.name -output domain string = containerAppsEnvironment.properties.defaultDomain diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/dashboard-web.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/dashboard-web.bicep deleted file mode 100644 index eccce0db..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/dashboard-web.bicep +++ /dev/null @@ -1,1231 +0,0 @@ -param name string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} - -// 2020-09-01-preview because that is the latest valid version -resource applicationInsightsDashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = { - name: name - location: location - tags: tags - properties: { - lenses: [ - { - order: 0 - parts: [ - { - position: { - x: 0 - y: 0 - colSpan: 2 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'id' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AspNetOverviewPinnedPart' - asset: { - idInputName: 'id' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'overview' - } - } - { - position: { - x: 2 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/ProactiveDetectionAsyncPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'ProactiveDetection' - } - } - { - position: { - x: 3 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/QuickPulseButtonSmallPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 4 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-04T01:20:33.345Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AvailabilityNavButtonPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 5 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-08T18:47:35.237Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'ConfigurationId' - value: '78ce933e-e864-4b05-a27b-71fd55a6afad' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AppMapButtonPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 0 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Usage' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 3 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-04T01:22:35.782Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/UsageUsersOverviewPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 4 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Reliability' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 7 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'DataModel' - value: { - version: '1.0.0' - timeContext: { - durationMs: 86400000 - createdTime: '2018-05-04T23:42:40.072Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - isOptional: true - } - { - name: 'ConfigurationId' - value: '8a02f7bf-ac0f-40e1-afe9-f0e72cfee77f' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/CuratedBladeFailuresPinnedPart' - isAdapter: true - asset: { - idInputName: 'ResourceId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'failures' - } - } - { - position: { - x: 8 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Responsiveness\r\n' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 11 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'DataModel' - value: { - version: '1.0.0' - timeContext: { - durationMs: 86400000 - createdTime: '2018-05-04T23:43:37.804Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - isOptional: true - } - { - name: 'ConfigurationId' - value: '2a8ede4f-2bee-4b9c-aed9-2db0e8a01865' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/CuratedBladePerformancePinnedPart' - isAdapter: true - asset: { - idInputName: 'ResourceId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'performance' - } - } - { - position: { - x: 12 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Browser' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 15 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'MetricsExplorerJsonDefinitionId' - value: 'BrowserPerformanceTimelineMetrics' - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - createdTime: '2018-05-08T12:16:27.534Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'CurrentFilter' - value: { - eventTypes: [ - 4 - 1 - 3 - 5 - 2 - 6 - 13 - ] - typeFacets: {} - isPermissive: false - } - } - { - name: 'id' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/MetricsExplorerBladePinnedPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'browser' - } - } - { - position: { - x: 0 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'sessions/count' - aggregationType: 5 - namespace: 'microsoft.insights/components/kusto' - metricVisualization: { - displayName: 'Sessions' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'users/count' - aggregationType: 5 - namespace: 'microsoft.insights/components/kusto' - metricVisualization: { - displayName: 'Users' - color: '#7E58FF' - } - } - ] - title: 'Unique sessions and users' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'segmentationUsers' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'requests/failed' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Failed requests' - color: '#EC008C' - } - } - ] - title: 'Failed requests' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'failures' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'requests/duration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Server response time' - color: '#00BCF2' - } - } - ] - title: 'Server response time' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'performance' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 12 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/networkDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Page load network connect time' - color: '#7E58FF' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/processingDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Client processing time' - color: '#44F1C8' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/sendDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Send request time' - color: '#EB9371' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/receiveDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Receiving response time' - color: '#0672F1' - } - } - ] - title: 'Average page load time breakdown' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 0 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'availabilityResults/availabilityPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Availability' - color: '#47BDF5' - } - } - ] - title: 'Average availability' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'availability' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'exceptions/server' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Server exceptions' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'dependencies/failed' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Dependency failures' - color: '#7E58FF' - } - } - ] - title: 'Server exceptions and Dependency failures' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processorCpuPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Processor time' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processCpuPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Process CPU' - color: '#7E58FF' - } - } - ] - title: 'Average processor and process CPU utilization' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 12 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'exceptions/browser' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Browser exceptions' - color: '#47BDF5' - } - } - ] - title: 'Browser exceptions' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 0 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'availabilityResults/count' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Availability test results count' - color: '#47BDF5' - } - } - ] - title: 'Availability test results count' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processIOBytesPerSecond' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Process IO rate' - color: '#47BDF5' - } - } - ] - title: 'Average process I/O rate' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/memoryAvailableBytes' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Available memory' - color: '#47BDF5' - } - } - ] - title: 'Average available memory' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - ] - } - ] - } -} diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/keyvault.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/keyvault.bicep deleted file mode 100644 index f84f7508..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/keyvault.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -@description('Service principal that should be granted read access to the KeyVault. If unset, no service principal is granted access by default') -param principalId string = '' - -var defaultAccessPolicies = !empty(principalId) ? [ - { - objectId: principalId - permissions: { secrets: [ 'get', 'list' ] } - tenantId: subscription().tenantId - } -] : [] - -resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = { - name: name - location: location - tags: tags - properties: { - tenantId: subscription().tenantId - sku: { family: 'A', name: 'standard' } - enabledForTemplateDeployment: true - accessPolicies: union(defaultAccessPolicies, [ - // define access policies here - ]) - } -} - -output endpoint string = keyVault.properties.vaultUri -output name string = keyVault.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/monitoring.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/monitoring.bicep deleted file mode 100644 index 4ae9796c..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/monitoring.bicep +++ /dev/null @@ -1,34 +0,0 @@ -param logAnalyticsName string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} - -resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2021-12-01-preview' = { - name: logAnalyticsName - location: location - tags: tags - properties: any({ - retentionInDays: 30 - features: { - searchVersion: 1 - } - sku: { - name: 'PerGB2018' - } - }) -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { - name: applicationInsightsName - location: location - tags: tags - kind: 'web' - properties: { - Application_Type: 'web' - WorkspaceResourceId: logAnalytics.id - } -} - -output applicationInsightsName string = applicationInsights.name -output logAnalyticsWorkspaceId string = logAnalytics.id -output logAnalyticsWorkspaceName string = logAnalytics.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/registry.bicep b/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/registry.bicep deleted file mode 100644 index d6629f86..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/infra/shared/registry.bicep +++ /dev/null @@ -1,36 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param adminUserEnabled bool = true -param anonymousPullEnabled bool = false -param dataEndpointEnabled bool = false -param encryption object = { - status: 'disabled' -} -param networkRuleBypassOptions string = 'AzureServices' -param publicNetworkAccess string = 'Enabled' -param sku object = { - name: 'Standard' -} -param zoneRedundancy string = 'Disabled' - -// 2023-01-01-preview needed for anonymousPullEnabled -resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-01-01-preview' = { - name: name - location: location - tags: tags - sku: sku - properties: { - adminUserEnabled: adminUserEnabled - anonymousPullEnabled: anonymousPullEnabled - dataEndpointEnabled: dataEndpointEnabled - encryption: encryption - networkRuleBypassOptions: networkRuleBypassOptions - publicNetworkAccess: publicNetworkAccess - zoneRedundancy: zoneRedundancy - } -} - -output loginServer string = containerRegistry.properties.loginServer -output name string = containerRegistry.name diff --git a/samples/durable-functions/dotnet/PdfSummarizer/pdf-summarizer-dotnet.csproj b/samples/durable-functions/dotnet/PdfSummarizer/pdf-summarizer-dotnet.csproj deleted file mode 100644 index 9e82aabe..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/pdf-summarizer-dotnet.csproj +++ /dev/null @@ -1,42 +0,0 @@ -๏ปฟ - - net8.0 - v4 - Exe - enable - enable - pdf_summarizer_dotnet - e72707df-797f-4b46-b0c0-ad37a3e882b3 - - - - - - - - - - - - - - - - - - - - - - PreserveNewest - - - PreserveNewest - Never - - - - - - - diff --git a/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.ps1 b/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.ps1 deleted file mode 100644 index 326cc9ab..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.ps1 +++ /dev/null @@ -1,58 +0,0 @@ -#!/usr/bin/env pwsh - -# Check if required commands are available -$commands = @("azd", "az", "func", "dotnet") - -foreach ($cmd in $commands) { - if (-not (Get-Command $cmd -ErrorAction SilentlyContinue)) { - Write-Error "Error: $cmd command is not available, check pre-requisites in README.md" - exit 1 - } -} - -# Delete the bin and obj folders to get around an issue - temporary, fix is coming -Remove-Item -Recurse -Force ./bin, ./obj - -# Define variables -$functionAppPath = "." -$zipFilePath = "./bin/publish" -$zipFileName = "functions.zip" - -# Create the application zip package -azd package --output-path "$zipFilePath/$zipFileName" - -# Fetch Azure environment variables using azd env get-values -$output = azd env get-values - -# Use a loop to set environment variables -$output -split "`n" | ForEach-Object { - $line = $_.Trim() - if ($line) { - $name, $value = $line -split '=', 2 - $name = $name.Trim('"') - $value = $value.Trim('"') - [System.Environment]::SetEnvironmentVariable($name, $value) - Write-Output "$name=$value" - } -} - -Write-Output "" -Write-Output "Environment variables set." -Write-Output "" - -# Upload the zip package to Azure Storage Blob container -Write-Output "Uploading functions.zip to Azure Storage Blob container $env:AZURE_STORAGE_ACCOUNT_NAME/$env:AZURE_STORAGE_CONTAINER_NAME/$zipFileName..." -az storage blob upload --account-name $env:AZURE_STORAGE_ACCOUNT_NAME --container-name $env:AZURE_STORAGE_CONTAINER_NAME --name $zipFileName --file "$zipFilePath/$zipFileName" --auth-mode login --overwrite - -Write-Output "Deployed functions.zip successfully to $env:AZURE_STORAGE_ACCOUNT_NAME/$env:AZURE_STORAGE_CONTAINER_NAME/$zipFileName" - -# Restarting the function app with new functions.zip blob -Write-Output "Restarting the function app..." -az functionapp restart --name $env:AZURE_FUNCTION_NAME --resource-group $env:AZURE_RESOURCE_GROUP - -# Purge a deleted resource (commented out) -# az resource delete --ids /subscriptions/$env:AZURE_SUBSCRIPTION_ID/resourceGroups/$env:AZURE_RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$env:AZURE_FORMRECOGNIZER_SERVICE -# az resource delete --ids /subscriptions/$env:AZURE_SUBSCRIPTION_ID/resourceGroups/$env:AZURE_RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$env:AZURE_SEARCH_SERVICE - -# Recover (commented out) -# az cognitiveservices account recover --location $env:AZURE_LOCATION --name $env:AZURE_FORMRECOGNIZER_SERVICE --resource-group $env:AZURE_RESOURCE_GROUP \ No newline at end of file diff --git a/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.sh b/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.sh deleted file mode 100755 index d10eded2..00000000 --- a/samples/durable-functions/dotnet/PdfSummarizer/scripts/deploy.sh +++ /dev/null @@ -1,59 +0,0 @@ -#!/bin/bash - - -commands=("azd" "az" "func" "dotnet") - -for cmd in "${commands[@]}"; do - if ! command -v "$cmd" &>/dev/null; then - echo "Error: $cmd command is not available, check pre-requisites in README.md" - exit 1 - fi -done - -# delete the bin and obj folders to get around an issue - temporary, fix is coming -rm -rf ./bin -rm -rf ./obj - -# Define variables -functionAppPath="." -zipFilePath="./bin/publish" -zipFileName="functions.zip" - -# Create the the application zip package -azd package --output-path $zipFilePath/$zipFileName - -# Fetch Azure environment variables using azd env get-values -output=$(azd env get-values) - -# Use a file descriptor to avoid subshell -while IFS= read -r line; do - name=$(echo "$line" | cut -d'=' -f1 | sed 's/^["'\'']//;s/["'\'']$//') - value=$(echo "$line" | cut -d'=' -f2 | sed 's/^["'\'']//;s/["'\'']$//') - export "$name=$value" - echo "$name=$value" -done <<< "$output" - -echo "" -echo "Environment variables set." -echo "" -# echo "Showing environment variables with env command:" -# env - -# Upload the zip package to Azure Storage Blob container -echo "Uploading functions.zip to Azure Storage Blob container $AZURE_STORAGE_ACCOUNT_NAME/$AZURE_STORAGE_CONTAINER_NAME/$zipFileName..." -echo "az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT_NAME --container-name $AZURE_STORAGE_CONTAINER_NAME --name $zipFileName --file $zipFilePath/$zipFileName --auth-mode login --overwrite" -az storage blob upload --account-name $AZURE_STORAGE_ACCOUNT_NAME --container-name $AZURE_STORAGE_CONTAINER_NAME --name $zipFileName --file $zipFilePath/$zipFileName --auth-mode login --overwrite - -echo "Deployed functions.zip successfully to $AZURE_STORAGE_ACCOUNT_NAME/$AZURE_STORAGE_CONTAINER_NAME/$zipFileName" - -# Restarting the function app with new functions.zip blob -echo "Restarting the function app..." -echo "az functionapp restart --name $AZURE_FUNCTION_NAME --resource-group $AZURE_RESOURCE_GROUP" -az functionapp restart --name $AZURE_FUNCTION_NAME --resource-group $AZURE_RESOURCE_GROUP - -# Purge a deleted resource -# az resource delete --ids /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$AZURE_FORMRECOGNIZER_SERVICE -# az resource delete --ids /subscriptions/$AZURE_SUBSCRIPTION_ID/resourceGroups/$AZURE_RESOURCE_GROUP/providers/Microsoft.CognitiveServices/accounts/$AZURE_SEARCH_SERVICE - -# recover -# az cognitiveservices account recover --location $AZURE_LOCATION --name $AZURE_FORMRECOGNIZER_SERVICE --resource-group $AZURE_RESOURCE_GROUP \ No newline at end of file diff --git a/samples/durable-functions/python/pdf-summarizer/.gitignore b/samples/durable-functions/python/pdf-summarizer/.gitignore deleted file mode 100644 index 4b3d3190..00000000 --- a/samples/durable-functions/python/pdf-summarizer/.gitignore +++ /dev/null @@ -1,266 +0,0 @@ -## Ignore Visual Studio temporary files, build results, and -## files generated by popular Visual Studio add-ons. - -.DS_Store - -# Azure Functions localsettings file -local.settings.json - -# User-specific files -*.suo -*.user -*.userosscache -*.sln.docstates - -# User-specific files (MonoDevelop/Xamarin Studio) -*.userprefs - -# Build results -[Dd]ebug/ -[Dd]ebugPublic/ -[Rr]elease/ -[Rr]eleases/ -x64/ -x86/ -bld/ -[Bb]in/ -[Oo]bj/ -[Ll]og/ - -# Visual Studio 2015 cache/options directory -.vs/ -# Uncomment if you have tasks that create the project's static files in wwwroot -#wwwroot/ - -# MSTest test Results -[Tt]est[Rr]esult*/ -[Bb]uild[Ll]og.* - -# NUNIT -*.VisualState.xml -TestResult.xml - -# Build Results of an ATL Project -[Dd]ebugPS/ -[Rr]eleasePS/ -dlldata.c - -# DNX -project.lock.json -project.fragment.lock.json -artifacts/ - -*_i.c -*_p.c -*_i.h -*.ilk -*.meta -*.obj -*.pch -*.pdb -*.pgc -*.pgd -*.rsp -*.sbr -*.tlb -*.tli -*.tlh -*.tmp -*.tmp_proj -*.log -*.vspscc -*.vssscc -.builds -*.pidb -*.svclog -*.scc - -# Chutzpah Test files -_Chutzpah* - -# Visual C++ cache files -ipch/ -*.aps -*.ncb -*.opendb -*.opensdf -*.sdf -*.cachefile -*.VC.db -*.VC.VC.opendb - -# Visual Studio profiler -*.psess -*.vsp -*.vspx -*.sap - -# TFS 2012 Local Workspace -$tf/ - -# Guidance Automation Toolkit -*.gpState - -# ReSharper is a .NET coding add-in -_ReSharper*/ -*.[Rr]e[Ss]harper -*.DotSettings.user - -# JustCode is a .NET coding add-in -.JustCode - -# TeamCity is a build add-in -_TeamCity* - -# DotCover is a Code Coverage Tool -*.dotCover - -# NCrunch -_NCrunch_* -.*crunch*.local.xml -nCrunchTemp_* - -# MightyMoose -*.mm.* -AutoTest.Net/ - -# Web workbench (sass) -.sass-cache/ - -# Installshield output folder -[Ee]xpress/ - -# DocProject is a documentation generator add-in -DocProject/buildhelp/ -DocProject/Help/*.HxT -DocProject/Help/*.HxC -DocProject/Help/*.hhc -DocProject/Help/*.hhk -DocProject/Help/*.hhp -DocProject/Help/Html2 -DocProject/Help/html - -# Click-Once directory -publish/ - -# Publish Web Output -*.[Pp]ublish.xml -*.azurePubxml -# TODO: Comment the next line if you want to checkin your web deploy settings -# but database connection strings (with potential passwords) will be unencrypted -#*.pubxml -*.publishproj - -# Microsoft Azure Web App publish settings. Comment the next line if you want to -# checkin your Azure Web App publish settings, but sensitive information contained -# in these scripts will be unencrypted -PublishScripts/ - -# NuGet Packages -*.nupkg -# The packages folder can be ignored because of Package Restore -**/packages/* -# except build/, which is used as an MSBuild target. -!**/packages/build/ -# Uncomment if necessary however generally it will be regenerated when needed -#!**/packages/repositories.config -# NuGet v3's project.json files produces more ignoreable files -*.nuget.props -*.nuget.targets - -# Microsoft Azure Build Output -csx/ -*.build.csdef - -# Microsoft Azure Emulator -ecf/ -rcf/ - -# Windows Store app package directories and files -AppPackages/ -BundleArtifacts/ -Package.StoreAssociation.xml -_pkginfo.txt - -# Visual Studio cache files -# files ending in .cache can be ignored -*.[Cc]ache -# but keep track of directories ending in .cache -!*.[Cc]ache/ - -# Others -ClientBin/ -~$* -*~ -*.dbmdl -*.dbproj.schemaview -*.jfm -*.pfx -*.publishsettings -node_modules/ -orleans.codegen.cs - -# Since there are multiple workflows, uncomment next line to ignore bower_components -# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) -#bower_components/ - -# RIA/Silverlight projects -Generated_Code/ - -# Backup & report files from converting an old project file -# to a newer Visual Studio version. Backup files are not needed, -# because we have git ;-) -_UpgradeReport_Files/ -Backup*/ -UpgradeLog*.XML -UpgradeLog*.htm - -# SQL Server files -*.mdf -*.ldf - -# Business Intelligence projects -*.rdl.data -*.bim.layout -*.bim_*.settings - -# Microsoft Fakes -FakesAssemblies/ - -# GhostDoc plugin setting file -*.GhostDoc.xml - -# Node.js Tools for Visual Studio -.ntvs_analysis.dat - -# Visual Studio 6 build log -*.plg - -# Visual Studio 6 workspace options file -*.opt - -# Visual Studio LightSwitch build output -**/*.HTMLClient/GeneratedArtifacts -**/*.DesktopClient/GeneratedArtifacts -**/*.DesktopClient/ModelManifest.xml -**/*.Server/GeneratedArtifacts -**/*.Server/ModelManifest.xml -_Pvt_Extensions - -# Paket dependency manager -.paket/paket.exe -paket-files/ - -# FAKE - F# Make -.fake/ - -# JetBrains Rider -.idea/ -*.sln.iml - -# CodeRush -.cr/ - -# Python Tools for Visual Studio (PTVS) -__pycache__/ -*.pyc \ No newline at end of file diff --git a/samples/durable-functions/python/pdf-summarizer/README.md b/samples/durable-functions/python/pdf-summarizer/README.md deleted file mode 100644 index 74b48a26..00000000 --- a/samples/durable-functions/python/pdf-summarizer/README.md +++ /dev/null @@ -1,135 +0,0 @@ -# Intelligent PDF Summarizer - Python -The purpose of this sample application is to demonstrate how Durable Functions can be leveraged to create intelligent applications, particularly in a document processing scenario. Order and durability are key here because the results from one activity are passed to the next. Also, calls to services like Cognitive Service or LLMs are costly and should not be repeated in the event of failures. - -This sample integrates various Azure services, including the new Durable Task Scheduler for Azure Durable Functions, Azure Storage, Azure Cognitive Services, and Azure Open AI. - -The application showcases how PDFs can be ingested and intelligently scanned to determine their content. - -![Architecture Diagram](../../../../media/images/architecture_v2.png) - -The application's workflow is as follows: -1. PDFs are uploaded to a blob storage input container. -2. A durable function is triggered upon blob upload. -3. The Durable Task Scheduler for Azure Durable Functions schedules an orchestration that: -- - Downloads the blob (PDF). -- - Utilizes the Azure Cognitive Service Form Recognizer endpoint to extract the text from the PDF. -- - Sends the extracted text to Azure Open AI to analyze and determine the content of the PDF. -- - Save the summary results from Azure Open AI to a new file and upload it to the output blob container. - -This sample uses **managed identity** for all Azure service connections and does **not** require public access to the storage account, making it compliant with enterprise security policies. - -## Prerequisites - -1. [Python 3.9+](https://www.python.org/downloads/) -2. [Create an active Azure subscription](https://learn.microsoft.com/en-us/azure/guides/developer/azure-developer-guide#understanding-accounts-subscriptions-and-billing). -3. [Install the latest Azure Functions Core Tools to use the CLI](https://learn.microsoft.com/en-us/azure/azure-functions/functions-run-local) -4. [Install Azure Developer CLI (azd)](https://aka.ms/azd) for deployment - -## Deploy the app to Azure - -The recommended way to get started is to deploy the app to Azure first using `azd`, which will provision all required Azure resources. After deployment, you can optionally run and test the app locally. - -Use the [Azure Developer CLI (`azd`)](https://aka.ms/azd) to deploy the app. This will provision all necessary Azure services including: -- Durable Task Scheduler with taskhub -- Storage Account (with managed identity access, no public access required) -- Azure OpenAI -- Azure Cognitive Services (Document Intelligence) -- Function App with managed identity - -1. In the root of the project, run the following command to provision and deploy the app: - - ```bash - azd up - ``` - -2. When prompted, provide: - - A name for your [Azure Developer CLI environment](https://learn.microsoft.com/en-us/azure/developer/azure-developer-cli/faq#what-is-an-environment-name). - - The Azure subscription you'd like to use. - - The Azure location to use. - - > **Region selection:** Durable Task Scheduler is available in [most Azure regions](https://learn.microsoft.com/azure/durable-task/scheduler/durable-task-scheduler#supported-regions), not just West US 2 and North Central US. Query the current list before selecting your AZD location: - - ```bash - az provider show --namespace Microsoft.DurableTask --query "resourceTypes[?resourceType=='schedulers'].locations | [0]" --out table - ``` - - The template's allowed `location` values also apply. Choose a region from that list that appears in the provider output. - - The template currently deploys Azure OpenAI separately in `eastus2`. Confirm that your model and quota are available there, or change the `openAi` module's location in `infra/main.bicep`. The model endpoint and scheduler do not need to use the same region. - -Once the azd up command finishes, the app will have successfully provisioned and deployed. - -## Running the app locally (Optional) - -If you want to run the app locally after deploying to Azure, follow these steps: - -### Prerequisites for local development -- [Start and configure an Azurite storage emulator for local storage](https://learn.microsoft.com/azure/storage/common/storage-use-azurite). - -### local.settings.json -You will need to configure a `local.settings.json` file in the sample directory (`samples/durable-functions/python/pdf-summarizer`) that looks similar to the below. After running `azd up`, you can retrieve these values from the Azure portal or by running `azd env get-values`. - -```json -{ - "Values": { - "AzureWebJobsStorage": "UseDevelopmentStorage=true", - "AzureWebJobsFeatureFlags": "EnableWorkerIndexing", - "FUNCTIONS_WORKER_RUNTIME": "python", - "DURABLE_TASK_SCHEDULER_CONNECTION_STRING": "Endpoint=;Authentication=DefaultAzure", - "TASKHUB_NAME": "", - "STORAGE_ACCOUNT_NAME": "", - "COGNITIVE_SERVICES_ENDPOINT": "", - "AZURE_OPENAI_ENDPOINT": "", - "CHAT_MODEL_DEPLOYMENT_NAME": "" - } -} -``` - -The `hubName` setting in `host.json` resolves `%TASKHUB_NAME%` from these app settings, so it must match the task hub created by the deployment. - -### Running locally - -1. Start Azurite: Begin by starting Azurite, the local Azure Storage emulator. - -2. Install the Requirements: Open your terminal and run the following command to install the necessary packages: - - ```bash - python3 -m pip install -r requirements.txt - ``` - -3. Install the Durable Task Scheduler Extension Packages: Execute the following commands to install the required Durable Task Scheduler extension packages: - - ```bash - func extensions install --package Microsoft.Azure.WebJobs.Extensions.DurableTask.AzureManaged --version 0.3.0-alpha - ``` - - ```bash - func extensions install --package Microsoft.Azure.WebJobs.Extensions.DurableTask --version 2.13.7 - ``` - -4. Start the Function App: Start the function app to run the application locally. - - ```bash - func start --verbose - ``` - -## Inspect the code - -This app leverages Durable Functions to orchestrate the application workflow. By using Durable Functions, there's no need for additional infrastructure like queues and state stores to manage task coordination and durability, which significantly reduces the complexity for developers. - -Take a look at the code snippet below, the `process_document` defines the entire workflow, which consists of a series of steps (activities) that need to be scheduled in sequence. Coordination is key, as the output of one activity is passed as an input to the next. Additionally, Durable Functions handle durability and retries, which ensure that if a failure occurs, such as a transient error or an issue with a dependent service, the workflow can recover gracefully. - -![Orchestration Code](../../../../media/images/code.png) - -## Using the app -To use the app, simply upload a PDF to the Blob Storage `input` container. You can use [Azure Storage Explorer](https://azure.microsoft.com/features/storage-explorer/) to connect to your storage account using your Azure AD credentials (no connection strings or SAS tokens required). Once the PDF is uploaded, it will be processed using document intelligence and Azure OpenAI. The resulting summary will be saved to a new file and uploaded to the `output` container. - -### Review Execution History in the Durable Task Scheduler Dashboard -Since the application leverages the Durable Task Scheduler backend storage provider for Durable Functions, all orchestration executions are persisted and can be viewed in the monitoring and management dashboard. - -![DTS dashboard](../../../../media/images/dashboard.png) - -This dashboard enables you to monitor the status of ongoing and failed orchestrations, and troubleshoot any issues causing orchestrations to fail or become "stuck." It also displays the outputs from each activity execution. Additionally, you can use the timeline and sequence diagrams to gain insights into the orchestration execution, including the duration of each activity. - -![DTS activity dashboard](../../../../media/images/activity.png) -![DTS orchestration sequence](../../../../media/images/sequence.png) diff --git a/samples/durable-functions/python/pdf-summarizer/azure.yaml b/samples/durable-functions/python/pdf-summarizer/azure.yaml deleted file mode 100644 index 61f62853..00000000 --- a/samples/durable-functions/python/pdf-summarizer/azure.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# yaml-language-server: $schema=https://raw.githubusercontent.com/Azure/azure-dev/main/schemas/v1.0/azure.yaml.json - -name: functions-app -metadata: - template: azd-init@1.10.1 -services: - function-app: - project: ./ - language: python - host: function diff --git a/samples/durable-functions/python/pdf-summarizer/function_app.py b/samples/durable-functions/python/pdf-summarizer/function_app.py deleted file mode 100644 index 77c2786f..00000000 --- a/samples/durable-functions/python/pdf-summarizer/function_app.py +++ /dev/null @@ -1,98 +0,0 @@ -import logging -import os -from azure.storage.blob import BlobServiceClient -import azure.functions as func -import azure.durable_functions as df -from azure.identity import DefaultAzureCredential -from azure.ai.formrecognizer import DocumentAnalysisClient -import json -import time -from requests import get, post -import requests -from datetime import datetime - -my_app = df.DFApp(http_auth_level=func.AuthLevel.ANONYMOUS) - -# Use managed identity to access blob storage -credential = DefaultAzureCredential() -storage_account_name = os.environ.get("STORAGE_ACCOUNT_NAME") -if not storage_account_name: - raise ValueError("STORAGE_ACCOUNT_NAME environment variable is required but not set") - -blob_service_client = BlobServiceClient( - account_url=f"https://{storage_account_name}.blob.core.windows.net", - credential=credential -) - -@my_app.blob_trigger(arg_name="myblob", path="input", connection="AzureWebJobsStorage") -@my_app.durable_client_input(client_name="client") -async def blob_trigger(myblob: func.InputStream, client): - logging.info(f"Python blob trigger function processed blob" - f"Name: {myblob.name}" - f"Blob Size: {myblob.length} bytes") - - blobName = myblob.name.split("/")[1] - await client.start_new("process_document", client_input=blobName) - -# Orchestrator -@my_app.orchestration_trigger(context_name="context") -def process_document(context): - blobName: str = context.get_input() - - first_retry_interval_in_milliseconds = 5000 - max_number_of_attempts = 3 - retry_options = df.RetryOptions(first_retry_interval_in_milliseconds, max_number_of_attempts) - - # Download the PDF from Blob Storage and use Document Intelligence Form Recognizer to analyze its contents. - result = yield context.call_activity_with_retry("analyze_pdf", retry_options, blobName) - # Send the analyzed contents to Azure OpenAI to generate a summary. - result2 = yield context.call_activity_with_retry("summarize_text", retry_options, result) - # Save the summary to a new file and upload it back to storage. - result3 = yield context.call_activity_with_retry("write_doc", retry_options, { "blobName": blobName, "summary": result2 }) - - return logging.info(f"Successfully uploaded summary to {result3}") - -@my_app.activity_trigger(input_name='blobName') -def analyze_pdf(blobName): - logging.info(f"in analyze_text activity") - global blob_service_client - container_client = blob_service_client.get_container_client("input") - blob_client = container_client.get_blob_client(blobName) - blob = blob_client.download_blob().read() - doc = '' - - endpoint = os.environ["COGNITIVE_SERVICES_ENDPOINT"] - credential = DefaultAzureCredential() - - document_analysis_client = DocumentAnalysisClient(endpoint, credential) - - poller = document_analysis_client.begin_analyze_document("prebuilt-layout", document=blob, locale="en-US") - result = poller.result().pages - - for page in result: - for line in page.lines: - doc += line.content - - return doc - -@my_app.activity_trigger(input_name='results') -@my_app.generic_input_binding(arg_name="response", type="textCompletion", data_type=func.DataType.STRING, prompt="Can you explain what the following text is about? {results}", model = "%CHAT_MODEL_DEPLOYMENT_NAME%") -def summarize_text(results, response: str): - logging.info(f"in summarize_text activity") - response_json = json.loads(response) - logging.info(response_json['content']) - return response_json - -@my_app.activity_trigger(input_name='results') -def write_doc(results): - logging.info(f"in write_doc activity") - global blob_service_client - container_client=blob_service_client.get_container_client("output") - - summary = results['blobName'] + "-" + str(datetime.now()) - sanitizedSummary = summary.replace(".", "-") - fileName = sanitizedSummary + ".txt" - - logging.info("uploading to blob" + results['summary']['content']) - container_client.upload_blob(name=fileName, data=results['summary']['content']) - return str(summary + ".txt") diff --git a/samples/durable-functions/python/pdf-summarizer/host.json b/samples/durable-functions/python/pdf-summarizer/host.json deleted file mode 100644 index dafeb2fa..00000000 --- a/samples/durable-functions/python/pdf-summarizer/host.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "version": "2.0", - "logging": { - "applicationInsights": { - "samplingSettings": { - "isEnabled": true, - "excludedTypes": "Request,Error" - } - } - }, - "extensions": { - "durableTask": { - "storageProvider": { - "type": "azureManaged", - "connectionStringName": "DURABLE_TASK_SCHEDULER_CONNECTION_STRING" - }, - "hubName": "%TASKHUB_NAME%" - } - }, - "extensionBundle": { - "id": "Microsoft.Azure.Functions.ExtensionBundle", - "version": "[4.32.0, 5.0.0)" - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/abbreviations.json b/samples/durable-functions/python/pdf-summarizer/infra/abbreviations.json deleted file mode 100644 index 545600f0..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/abbreviations.json +++ /dev/null @@ -1,138 +0,0 @@ -{ - "analysisServicesServers": "as", - "apiManagementService": "apim-", - "appConfigurationConfigurationStores": "appcs-", - "appManagedEnvironments": "cae-", - "appContainerApps": "ca-", - "authorizationPolicyDefinitions": "policy-", - "automationAutomationAccounts": "aa-", - "blueprintBlueprints": "bp-", - "blueprintBlueprintsArtifacts": "bpa-", - "cacheRedis": "redis-", - "cdnProfiles": "cdnp-", - "cdnProfilesEndpoints": "cdne-", - "cognitiveServicesAccounts": "cog-", - "cognitiveServicesFormRecognizer": "cog-fr-", - "cognitiveServicesTextAnalytics": "cog-ta-", - "cognitiveServicesDocumentIntelligence": "cog-di-", - "computeAvailabilitySets": "avail-", - "computeCloudServices": "cld-", - "computeDiskEncryptionSets": "des", - "computeDisks": "disk", - "computeDisksOs": "osdisk", - "computeGalleries": "gal", - "computeSnapshots": "snap-", - "computeVirtualMachines": "vm", - "computeVirtualMachineScaleSets": "vmss-", - "containerInstanceContainerGroups": "ci", - "containerRegistryRegistries": "cr", - "containerServiceManagedClusters": "aks-", - "databricksWorkspaces": "dbw-", - "dataFactoryFactories": "adf-", - "dataLakeAnalyticsAccounts": "dla", - "dataLakeStoreAccounts": "dls", - "dataMigrationServices": "dms-", - "dBforMySQLServers": "mysql-", - "dBforPostgreSQLServers": "psql-", - "devicesIotHubs": "iot-", - "devicesProvisioningServices": "provs-", - "devicesProvisioningServicesCertificates": "pcert-", - "documentDBDatabaseAccounts": "cosmos-", - "eventGridDomains": "evgd-", - "eventGridDomainsTopics": "evgt-", - "eventGridEventSubscriptions": "evgs-", - "eventHubNamespaces": "evhns-", - "eventHubNamespacesEventHubs": "evh-", - "hdInsightClustersHadoop": "hadoop-", - "hdInsightClustersHbase": "hbase-", - "hdInsightClustersKafka": "kafka-", - "hdInsightClustersMl": "mls-", - "hdInsightClustersSpark": "spark-", - "hdInsightClustersStorm": "storm-", - "hybridComputeMachines": "arcs-", - "insightsActionGroups": "ag-", - "insightsComponents": "appi-", - "keyVaultVaults": "kv-", - "kubernetesConnectedClusters": "arck", - "kustoClusters": "dec", - "kustoClustersDatabases": "dedb", - "logicIntegrationAccounts": "ia-", - "logicWorkflows": "logic-", - "machineLearningServicesWorkspaces": "mlw-", - "managedIdentityUserAssignedIdentities": "id-", - "managementManagementGroups": "mg-", - "migrateAssessmentProjects": "migr-", - "networkApplicationGateways": "agw-", - "networkApplicationSecurityGroups": "asg-", - "networkAzureFirewalls": "afw-", - "networkBastionHosts": "bas-", - "networkConnections": "con-", - "networkDnsZones": "dnsz-", - "networkExpressRouteCircuits": "erc-", - "networkFirewallPolicies": "afwp-", - "networkFirewallPoliciesWebApplication": "waf", - "networkFirewallPoliciesRuleGroups": "wafrg", - "networkFrontDoors": "fd-", - "networkFrontdoorWebApplicationFirewallPolicies": "fdfp-", - "networkLoadBalancersExternal": "lbe-", - "networkLoadBalancersInternal": "lbi-", - "networkLoadBalancersInboundNatRules": "rule-", - "networkLocalNetworkGateways": "lgw-", - "networkNatGateways": "ng-", - "networkNetworkInterfaces": "nic-", - "networkNetworkSecurityGroups": "nsg-", - "networkNetworkSecurityGroupsSecurityRules": "nsgsr-", - "networkNetworkWatchers": "nw-", - "networkPrivateDnsZones": "pdnsz-", - "networkPrivateLinkServices": "pl-", - "networkPublicIPAddresses": "pip-", - "networkPublicIPPrefixes": "ippre-", - "networkRouteFilters": "rf-", - "networkRouteTables": "rt-", - "networkRouteTablesRoutes": "udr-", - "networkTrafficManagerProfiles": "traf-", - "networkVirtualNetworkGateways": "vgw-", - "networkVirtualNetworks": "vnet-", - "networkVirtualNetworksSubnets": "snet-", - "networkVirtualNetworksVirtualNetworkPeerings": "peer-", - "networkVirtualWans": "vwan-", - "networkVpnGateways": "vpng-", - "networkVpnGatewaysVpnConnections": "vcn-", - "networkVpnGatewaysVpnSites": "vst-", - "notificationHubsNamespaces": "ntfns-", - "notificationHubsNamespacesNotificationHubs": "ntf-", - "operationalInsightsWorkspaces": "log-", - "portalDashboards": "dash-", - "powerBIDedicatedCapacities": "pbi-", - "purviewAccounts": "pview-", - "recoveryServicesVaults": "rsv-", - "resourcesResourceGroups": "rg-", - "searchSearchServices": "srch-", - "serviceBusNamespaces": "sb-", - "serviceBusNamespacesQueues": "sbq-", - "serviceBusNamespacesTopics": "sbt-", - "serviceEndPointPolicies": "se-", - "serviceFabricClusters": "sf-", - "signalRServiceSignalR": "sigr", - "sqlManagedInstances": "sqlmi-", - "sqlServers": "sql-", - "sqlServersDataWarehouse": "sqldw-", - "sqlServersDatabases": "sqldb-", - "sqlServersDatabasesStretch": "sqlstrdb-", - "storageStorageAccounts": "st", - "storageStorageAccountsVm": "stvm", - "storSimpleManagers": "ssimp", - "streamAnalyticsCluster": "asa-", - "synapseWorkspaces": "syn", - "synapseWorkspacesAnalyticsWorkspaces": "synw", - "synapseWorkspacesSqlPoolsDedicated": "syndp", - "synapseWorkspacesSqlPoolsSpark": "synsp", - "timeSeriesInsightsEnvironments": "tsi-", - "webServerFarms": "plan-", - "webSitesAppService": "app-", - "webSitesAppServiceEnvironment": "ase-", - "webSitesFunctions": "func-", - "webStaticSites": "stapp-", - "dts": "dts-", - "taskhub": "taskhub-" -} \ No newline at end of file diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/documentintelligence-Access.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/documentintelligence-Access.bicep deleted file mode 100644 index 0b30cfd3..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/documentintelligence-Access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -metadata description = 'Creates a role assignment for a service principal.' -param principalId string - -@allowed([ - 'Device' - 'ForeignGroup' - 'Group' - 'ServicePrincipal' - 'User' -]) -param principalType string = 'ServicePrincipal' -param roleDefinitionId string - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - properties: { - principalId: principalId - principalType: principalType - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/dts-Access.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/dts-Access.bicep deleted file mode 100644 index a0935bf1..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/dts-Access.bicep +++ /dev/null @@ -1,18 +0,0 @@ -param principalID string -param roleDefinitionID string -param dtsName string -param principalType string - -resource dts 'Microsoft.DurableTask/schedulers@2025-11-01' existing = { - name: dtsName -} - -resource dtsRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(dts.id, principalID, roleDefinitionID ) - scope: dts - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID ) - principalId: principalID - principalType: principalType - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/dts.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/dts.bicep deleted file mode 100644 index 6280e5a4..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/dts.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param ipAllowlist array -param location string -param tags object = {} -param name string -param taskhubname string -param skuName string -param skuCapacity int = 0 - -resource dts 'Microsoft.DurableTask/schedulers@2025-11-01' = { - location: location - tags: tags - name: name - properties: { - ipAllowlist: ipAllowlist - sku: skuName == 'Dedicated' ? { - name: skuName - capacity: skuCapacity - } : { - name: skuName - } - } -} - -resource taskhub 'Microsoft.DurableTask/schedulers/taskhubs@2025-11-01' = { - parent: dts - name: taskhubname -} - -output dts_NAME string = dts.name -output dts_URL string = dts.properties.endpoint -output TASKHUB_NAME string = taskhub.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/durable-function.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/durable-function.bicep deleted file mode 100644 index e01de2b5..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/durable-function.bicep +++ /dev/null @@ -1,54 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} -param applicationInsightsName string = '' -param appServicePlanId string -param appSettings object = {} -param runtimeName string -param runtimeVersion string -param serviceName string = 'function-app' -param storageAccountName string -param virtualNetworkSubnetId string = '' -param identityId string = '' -param identityClientId string = '' -param dtsURL string = '' -param taskHubName string = '' -param azureOpenaiService string -param documentIntelligenceEndpoint string - -var applicationInsightsIdentity = 'ClientId=${identityClientId};Authorization=AAD' - - -module durableFunction '../core/host/functions.bicep' = { - name: '${serviceName}-functions-module' - params: { - name: name - location: location - tags: union(tags, { 'azd-service-name': serviceName }) - identityType: 'UserAssigned' - identityId: identityId - appSettings: union(appSettings, - { - AzureWebJobsStorage__clientId : identityClientId - AzureWebJobsStorage__credential : 'managedidentity' - APPLICATIONINSIGHTS_AUTHENTICATION_STRING: applicationInsightsIdentity - DURABLE_TASK_SCHEDULER_CONNECTION_STRING: 'Endpoint=${dtsURL};Authentication=ManagedIdentity;ClientID=${identityClientId}' - TASKHUB_NAME: taskHubName - AZURE_CLIENT_ID: identityClientId - STORAGE_ACCOUNT_NAME: storageAccountName - }) - documentIntelligenceEndpoint: documentIntelligenceEndpoint - azureOpenaiService: azureOpenaiService - applicationInsightsName: applicationInsightsName - appServicePlanId: appServicePlanId - runtimeName: runtimeName - runtimeVersion: runtimeVersion - storageAccountName: storageAccountName - storageManagedIdentity: true - // deploymentStorageContainerName: deploymentStorageContainerName - virtualNetworkSubnetId: virtualNetworkSubnetId - } -} - -output SERVICE_DURABLE_FUNCTION_NAME string = durableFunction.outputs.name -output SERVICE_API_IDENTITY_PRINCIPAL_ID string = durableFunction.outputs.identityPrincipalId diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/openai-Access.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/openai-Access.bicep deleted file mode 100644 index d3fb68f4..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/openai-Access.bicep +++ /dev/null @@ -1,17 +0,0 @@ -param principalId string -param roleDefinitionIds array -param openAiAccountResourceName string - -resource account 'Microsoft.CognitiveServices/accounts@2023-05-01' existing = { - name: openAiAccountResourceName -} - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = [for roleDefinitionId in roleDefinitionIds: { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - scope: account - properties: { - principalId: principalId - principalType: 'ServicePrincipal' - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -}] diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/storage-Access.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/storage-Access.bicep deleted file mode 100644 index 498b501d..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/storage-Access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param principalID string -param roleDefinitionID string -param storageAccountName string -param principalType string = 'ServicePrincipal' // Workaround for https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal - -resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: storageAccountName -} - -// Allow access from API to storage account using a managed identity and least priv Storage roles -resource storageRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(storageAccount.id, principalID, roleDefinitionID) - scope: storageAccount - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID) - principalId: principalID - principalType: principalType - } -} - -output ROLE_ASSIGNMENT_NAME string = storageRoleAssignment.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/storage-PrivateEndpoint.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/storage-PrivateEndpoint.bicep deleted file mode 100644 index b2ae5e2e..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/storage-PrivateEndpoint.bicep +++ /dev/null @@ -1,89 +0,0 @@ -// Parameters -@description('Specifies the name of the virtual network.') -param virtualNetworkName string - -@description('Specifies the name of the subnet which contains the virtual machine.') -param subnetName string - -@description('Specifies the resource name of the Storage resource with an endpoint.') -param resourceName string - -@description('Specifies the location.') -param location string = resourceGroup().location - -param tags object = {} - -// Virtual Network -resource vnet 'Microsoft.Network/virtualNetworks@2021-08-01' existing = { - name: virtualNetworkName -} - -resource storageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: resourceName -} - -var blobPrivateDNSZoneName = format('privatelink.blob.{0}', environment().suffixes.storage) -var blobPrivateDnsZoneVirtualNetworkLinkName = format('{0}-link-{1}', resourceName, take(toLower(uniqueString(resourceName, virtualNetworkName)), 4)) - -// Private DNS Zones -resource blobPrivateDnsZone 'Microsoft.Network/privateDnsZones@2020-06-01' = { - name: blobPrivateDNSZoneName - location: 'global' - tags: tags - properties: {} - dependsOn: [ - vnet - ] -} - -// Virtual Network Links -resource blobPrivateDnsZoneVirtualNetworkLink 'Microsoft.Network/privateDnsZones/virtualNetworkLinks@2020-06-01' = { - parent: blobPrivateDnsZone - name: blobPrivateDnsZoneVirtualNetworkLinkName - location: 'global' - tags: tags - properties: { - registrationEnabled: false - virtualNetwork: { - id: vnet.id - } - } -} - -// Private Endpoints -resource blobPrivateEndpoint 'Microsoft.Network/privateEndpoints@2021-08-01' = { - name: 'blob-private-endpoint' - location: location - tags: tags - properties: { - privateLinkServiceConnections: [ - { - name: 'blobPrivateLinkConnection' - properties: { - privateLinkServiceId: storageAccount.id - groupIds: [ - 'blob' - ] - } - } - ] - subnet: { - id: '${vnet.id}/subnets/${subnetName}' - } - } -} - -resource blobPrivateDnsZoneGroupName 'Microsoft.Network/privateEndpoints/privateDnsZoneGroups@2022-01-01' = { - parent: blobPrivateEndpoint - name: 'blobPrivateDnsZoneGroup' - properties: { - privateDnsZoneConfigs: [ - { - name: 'storageBlobARecord' - properties: { - privateDnsZoneId: blobPrivateDnsZone.id - } - } - ] - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/app/vnet.bicep b/samples/durable-functions/python/pdf-summarizer/infra/app/vnet.bicep deleted file mode 100644 index bfa21d60..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/app/vnet.bicep +++ /dev/null @@ -1,75 +0,0 @@ -@description('Specifies the name of the virtual network.') -param vNetName string - -@description('Specifies the location.') -param location string = resourceGroup().location - -@description('Specifies the name of the subnet for the Service Bus private endpoint.') -param peSubnetName string = 'private-endpoints-subnet' - -@description('Specifies the name of the subnet for Function App virtual network integration.') -param appSubnetName string = 'app' - -param tags object = {} - -resource virtualNetwork 'Microsoft.Network/virtualNetworks@2023-05-01' = { - name: vNetName - location: location - tags: tags - properties: { - addressSpace: { - addressPrefixes: [ - '10.0.0.0/16' - ] - } - encryption: { - enabled: false - enforcement: 'AllowUnencrypted' - } - subnets: [ - { - name: peSubnetName - id: resourceId('Microsoft.Network/virtualNetworks/subnets', vNetName, 'private-endpoints-subnet') - properties: { - addressPrefixes: [ - '10.0.1.0/24' - ] - delegations: [] - privateEndpointNetworkPolicies: 'Disabled' - privateLinkServiceNetworkPolicies: 'Enabled' - } - type: 'Microsoft.Network/virtualNetworks/subnets' - } - { - name: appSubnetName - id: resourceId('Microsoft.Network/virtualNetworks/subnets', vNetName, 'app') - properties: { - addressPrefixes: [ - '10.0.2.0/24' - ] - delegations: [ - { - name: 'delegation' - id: resourceId('Microsoft.Network/virtualNetworks/subnets/delegations', vNetName, 'app', 'delegation') - properties: { - //'Microsoft.Web/serverFarms' is the correct delegation for Premium Function and App Service VNet integration - serviceName: 'Microsoft.Web/serverFarms' - } - type: 'Microsoft.Network/virtualNetworks/subnets/delegations' - } - ] - privateEndpointNetworkPolicies: 'Disabled' - privateLinkServiceNetworkPolicies: 'Enabled' - } - type: 'Microsoft.Network/virtualNetworks/subnets' - } - ] - virtualNetworkPeerings: [] - enableDdosProtection: false - } -} - -output peSubnetName string = virtualNetwork.properties.subnets[0].name -output peSubnetID string = virtualNetwork.properties.subnets[0].id -output appSubnetName string = virtualNetwork.properties.subnets[1].name -output appSubnetID string = virtualNetwork.properties.subnets[1].id diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/ai/cognitiveservices.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/ai/cognitiveservices.bicep deleted file mode 100644 index 2728b239..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/ai/cognitiveservices.bicep +++ /dev/null @@ -1,47 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param customSubDomainName string = name -param deployments array = [] -param kind string = 'OpenAI' -param publicNetworkAccess string = 'Enabled' -param sku object = { - name: 'S0' -} - -resource account 'Microsoft.CognitiveServices/accounts@2023-10-01-preview' = { - name: name - location: location - tags: tags - kind: kind - properties: { - customSubDomainName: name - networkAcls : { - defaultAction: publicNetworkAccess == 'Enabled' ? 'Allow' : 'Deny' - virtualNetworkRules: [] - ipRules: [] - } - publicNetworkAccess: publicNetworkAccess - } - sku: sku -} - -@batchSize(1) -resource deployment 'Microsoft.CognitiveServices/accounts/deployments@2023-05-01' = [for deployment in deployments: { - parent: account - name: deployment.name - sku: { - name: 'Standard' - capacity: deployment.capacity - } - properties: { - model: deployment.model - raiPolicyName: contains(deployment, 'raiPolicyName') ? deployment.raiPolicyName : null - } -}] - -output endpoint string = account.properties.endpoint -output id string = account.id -output name string = account.name -output location string = account.location diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice-appsettings.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice-appsettings.bicep deleted file mode 100644 index f4b22f81..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice-appsettings.bicep +++ /dev/null @@ -1,17 +0,0 @@ -metadata description = 'Updates app settings for an Azure App Service.' -@description('The name of the app service resource within the current resource group scope') -param name string - -@description('The app settings to be applied to the app service') -@secure() -param appSettings object - -resource appService 'Microsoft.Web/sites@2022-03-01' existing = { - name: name -} - -resource settings 'Microsoft.Web/sites/config@2022-03-01' = { - name: 'appsettings' - parent: appService - properties: appSettings -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice.bicep deleted file mode 100644 index 9eb55851..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appservice.bicep +++ /dev/null @@ -1,136 +0,0 @@ -metadata description = 'Creates an Azure App Service in an existing Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param keyVaultName string = '' -param managedIdentity bool = !empty(keyVaultName) -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet', 'dotnetcore', 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -param runtimeNameAndVersion string = '${runtimeName}|${runtimeVersion}' -param runtimeVersion string - -// Microsoft.Web/sites Properties -param kind string = 'app,linux' - -// Microsoft.Web/sites/config -param allowedOrigins array = [] -param alwaysOn bool = true -param appCommandLine string = '' -@secure() -param appSettings object = {} -param clientAffinityEnabled bool = false -param enableOryxBuild bool = contains(kind, 'linux') -param functionAppScaleLimit int = -1 -param linuxFxVersion string = runtimeNameAndVersion -param minimumElasticInstanceCount int = -1 -param numberOfWorkers int = -1 -param scmDoBuildDuringDeployment bool = false -param use32BitWorkerProcess bool = false -param ftpsState string = 'FtpsOnly' -param healthCheckPath string = '' -param virtualNetworkSubnetId string = '' - -resource appService 'Microsoft.Web/sites@2022-03-01' = { - name: name - location: location - tags: tags - kind: kind - properties: { - serverFarmId: appServicePlanId - siteConfig: { - linuxFxVersion: linuxFxVersion - alwaysOn: alwaysOn - ftpsState: ftpsState - minTlsVersion: '1.2' - appCommandLine: appCommandLine - numberOfWorkers: numberOfWorkers != -1 ? numberOfWorkers : null - minimumElasticInstanceCount: minimumElasticInstanceCount != -1 ? minimumElasticInstanceCount : null - use32BitWorkerProcess: use32BitWorkerProcess - functionAppScaleLimit: functionAppScaleLimit != -1 ? functionAppScaleLimit : null - healthCheckPath: healthCheckPath - cors: { - allowedOrigins: union([ 'https://portal.azure.com', 'https://ms.portal.azure.com' ], allowedOrigins) - } - } - clientAffinityEnabled: clientAffinityEnabled - httpsOnly: true - virtualNetworkSubnetId: !empty(virtualNetworkSubnetId) ? virtualNetworkSubnetId : null - } - - identity: managedIdentity ? (identityType == 'UserAssigned' ? { - type: 'UserAssigned' - userAssignedIdentities: { - '${identityId}': {} - } - } : { - type: 'SystemAssigned' - }) : null - - resource basicPublishingCredentialsPoliciesFtp 'basicPublishingCredentialsPolicies' = { - name: 'ftp' - properties: { - allow: false - } - } - - resource basicPublishingCredentialsPoliciesScm 'basicPublishingCredentialsPolicies' = { - name: 'scm' - properties: { - allow: false - } - } -} - -// Updates to the single Microsoft.sites/web/config resources that need to be performed sequentially -// sites/web/config 'appsettings' -module configAppSettings 'appservice-appsettings.bicep' = { - name: '${name}-appSettings' - params: { - name: appService.name - appSettings: union(appSettings, - { - SCM_DO_BUILD_DURING_DEPLOYMENT: string(scmDoBuildDuringDeployment) - ENABLE_ORYX_BUILD: string(enableOryxBuild) - }, - runtimeName == 'python' && appCommandLine == '' ? { PYTHON_ENABLE_GUNICORN_MULTIWORKERS: 'true'} : {}, - !empty(applicationInsightsName) ? { APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.properties.ConnectionString } : {}, - !empty(keyVaultName) ? { AZURE_KEY_VAULT_ENDPOINT: keyVault.properties.vaultUri } : {}) - } -} - -// sites/web/config 'logs' -resource configLogs 'Microsoft.Web/sites/config@2022-03-01' = { - name: 'logs' - parent: appService - properties: { - applicationLogs: { fileSystem: { level: 'Verbose' } } - detailedErrorMessages: { enabled: true } - failedRequestsTracing: { enabled: true } - httpLogs: { fileSystem: { enabled: true, retentionInDays: 1, retentionInMb: 35 } } - } - dependsOn: [configAppSettings] -} - -resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' existing = if (!(empty(keyVaultName))) { - name: keyVaultName -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = if (!empty(applicationInsightsName)) { - name: applicationInsightsName -} - -output identityPrincipalId string = managedIdentity ? string(appService.identity.userAssignedIdentities[identityId].principalId) : '' -output name string = appService.name -output uri string = 'https://${appService.properties.defaultHostName}' diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appserviceplan.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/host/appserviceplan.bicep deleted file mode 100644 index 2e37e041..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/host/appserviceplan.bicep +++ /dev/null @@ -1,22 +0,0 @@ -metadata description = 'Creates an Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -param kind string = '' -param reserved bool = true -param sku object - -resource appServicePlan 'Microsoft.Web/serverfarms@2022-03-01' = { - name: name - location: location - tags: tags - sku: sku - kind: kind - properties: { - reserved: reserved - } -} - -output id string = appServicePlan.id -output name string = appServicePlan.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions-flexconsumption.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions-flexconsumption.bicep deleted file mode 100644 index d6a5e632..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions-flexconsumption.bicep +++ /dev/null @@ -1,87 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param storageAccountName string -param virtualNetworkSubnetId string = '' -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -@allowed(['3.10', '3.11', '7.4', '8.0', '10', '11', '17', '20']) -param runtimeVersion string -param kind string = 'functionapp,linux' - -// Microsoft.Web/sites/config -param appSettings object = {} -param instanceMemoryMB int = 2048 -param maximumInstanceCount int = 100 -param deploymentStorageContainerName string - -resource stg 'Microsoft.Storage/storageAccounts@2022-09-01' existing = { - name: storageAccountName -} - -resource functions 'Microsoft.Web/sites@2023-12-01' = { - name: name - location: location - tags: tags - kind: kind - identity: { - type: identityType - userAssignedIdentities: { - '${identityId}': {} - } - } - properties: { - serverFarmId: appServicePlanId - functionAppConfig: { - deployment: { - storage: { - type: 'blobContainer' - value: '${stg.properties.primaryEndpoints.blob}${deploymentStorageContainerName}' - authentication: { - type: identityType == 'SystemAssigned' ? 'SystemAssignedIdentity' : 'UserAssignedIdentity' - userAssignedIdentityResourceId: identityType == 'UserAssigned' ? identityId : '' - } - } - } - scaleAndConcurrency: { - instanceMemoryMB: instanceMemoryMB - maximumInstanceCount: maximumInstanceCount - } - runtime: { - name: runtimeName - version: runtimeVersion - } - } - virtualNetworkSubnetId: virtualNetworkSubnetId - } - - resource configAppSettings 'config' = { - name: 'appsettings' - properties: union(appSettings, - { - AzureWebJobsStorage__accountName: stg.name - AzureWebJobsStorage__credential : 'managedidentity' - APPLICATIONINSIGHTS_CONNECTION_STRING: applicationInsights.properties.ConnectionString - }) - } -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = if (!empty(applicationInsightsName)) { - name: applicationInsightsName -} - -output name string = functions.name -output uri string = 'https://${functions.properties.defaultHostName}' -output identityPrincipalId string = identityType == 'SystemAssigned' ? functions.identity.principalId : '' diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions.bicep deleted file mode 100644 index 9a0e10f9..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/host/functions.bicep +++ /dev/null @@ -1,119 +0,0 @@ -metadata description = 'Creates an Azure Function in an existing Azure App Service plan.' -param name string -param location string = resourceGroup().location -param tags object = {} - -// Reference Properties -param applicationInsightsName string = '' -param appServicePlanId string -param keyVaultName string = '' -param managedIdentity bool = !empty(keyVaultName) || storageManagedIdentity -param storageAccountName string -param storageManagedIdentity bool = false -param virtualNetworkSubnetId string = '' -@allowed(['SystemAssigned', 'UserAssigned']) -param identityType string -@description('User assigned identity name') -param identityId string - -// Runtime Properties -@allowed([ - 'dotnet', 'dotnetcore', 'dotnet-isolated', 'node', 'python', 'java', 'powershell', 'custom' -]) -param runtimeName string -param runtimeNameAndVersion string = '${runtimeName}|${runtimeVersion}' -param runtimeVersion string - -// Function Settings -@allowed([ - '~4', '~3', '~2', '~1' -]) -param extensionVersion string = '~4' - -// Microsoft.Web/sites Properties -param kind string = 'functionapp,linux' - -// Microsoft.Web/sites/config -param allowedOrigins array = [] -param alwaysOn bool = true -param appCommandLine string = '' -@secure() -param appSettings object = {} -param clientAffinityEnabled bool = false -param enableOryxBuild bool = contains(kind, 'linux') -param functionAppScaleLimit int = -1 -param linuxFxVersion string = runtimeNameAndVersion -param minimumElasticInstanceCount int = -1 -param numberOfWorkers int = -1 -param scmDoBuildDuringDeployment bool = true -param use32BitWorkerProcess bool = false -param healthCheckPath string = '' -// param deploymentStorageContainerName string -// param deploymentStorageFileName string = 'functions' // Default to functions.zip name in WEBSITE_RUN_FROM_PACKAGE= value -param azureOpenaiService string -param documentIntelligenceEndpoint string - -module functions 'appservice.bicep' = { - name: '${name}-functions' - params: { - name: name - location: location - tags: tags - allowedOrigins: allowedOrigins - alwaysOn: alwaysOn - appCommandLine: appCommandLine - applicationInsightsName: applicationInsightsName - appServicePlanId: appServicePlanId - appSettings: union(appSettings, storageManagedIdentity ? { - AzureWebJobsStorage__accountName: storage.name - STORAGE_ACCOUNT_NAME: storage.name - FUNCTIONS_EXTENSION_VERSION: extensionVersion - FUNCTIONS_WORKER_RUNTIME: runtimeName - AZURE_OPENAI_ENDPOINT: 'https://${azureOpenaiService}.openai.azure.com/' - COGNITIVE_SERVICES_ENDPOINT: documentIntelligenceEndpoint - } : { - AzureWebJobsStorage: 'DefaultEndpointsProtocol=https;AccountName=${storage.name};AccountKey=${storage.listKeys().keys[0].value};EndpointSuffix=${environment().suffixes.storage}' - STORAGE_ACCOUNT_NAME: storage.name - FUNCTIONS_EXTENSION_VERSION: extensionVersion - FUNCTIONS_WORKER_RUNTIME: runtimeName - AZURE_OPENAI_ENDPOINT: 'https://${azureOpenaiService}.openai.azure.com/' - COGNITIVE_SERVICES_ENDPOINT: documentIntelligenceEndpoint - }) - clientAffinityEnabled: clientAffinityEnabled - enableOryxBuild: enableOryxBuild - functionAppScaleLimit: functionAppScaleLimit - healthCheckPath: healthCheckPath - keyVaultName: keyVaultName - kind: kind - linuxFxVersion: linuxFxVersion - managedIdentity: managedIdentity - identityId: identityId - identityType: identityType - minimumElasticInstanceCount: minimumElasticInstanceCount - numberOfWorkers: numberOfWorkers - runtimeName: runtimeName - runtimeVersion: runtimeVersion - runtimeNameAndVersion: runtimeNameAndVersion - scmDoBuildDuringDeployment: scmDoBuildDuringDeployment - use32BitWorkerProcess: use32BitWorkerProcess - virtualNetworkSubnetId: virtualNetworkSubnetId - } -} - -module storageOwnerRole '../security/role.bicep' = if (storageManagedIdentity) { - name: 'storage-blob-data-owner-role-function' - params: { - principalId: functions.outputs.identityPrincipalId - // Storage Blob Data Owner - roleDefinitionId: 'b7e6dc6d-f1e8-4753-8033-0f276bb0955b' - principalType: 'ServicePrincipal' - } -} - -resource storage 'Microsoft.Storage/storageAccounts@2021-09-01' existing = { - name: storageAccountName -} - -output identityPrincipalId string = managedIdentity ? functions.outputs.identityPrincipalId : '' -output name string = functions.outputs.name -output uri string = functions.outputs.uri diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/identity/userAssignedIdentity.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/identity/userAssignedIdentity.bicep deleted file mode 100644 index 0d4e02ea..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/identity/userAssignedIdentity.bicep +++ /dev/null @@ -1,14 +0,0 @@ -param identityName string -param location string -param tags object = {} - -resource userAssignedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-07-31-preview' = { - name: identityName - location: location - tags: tags -} - -output identityId string = userAssignedIdentity.id -output identityName string = userAssignedIdentity.name -output identityPrincipalId string = userAssignedIdentity.properties.principalId -output identityClientId string = userAssignedIdentity.properties.clientId diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/appinsights-access.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/appinsights-access.bicep deleted file mode 100644 index f151b104..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/appinsights-access.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param principalID string -param roleDefinitionID string -param appInsightsName string - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = { - name: appInsightsName -} - -// Allow access from API to app insights using a managed identity and least priv role -resource appInsightsRoleAssignment 'Microsoft.Authorization/roleAssignments@2020-04-01-preview' = { - name: guid(applicationInsights.id, principalID, roleDefinitionID) - scope: applicationInsights - properties: { - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionID) - principalId: principalID - principalType: 'ServicePrincipal' // Workaround for https://learn.microsoft.com/en-us/azure/role-based-access-control/role-assignments-template#new-service-principal - } -} - -output ROLE_ASSIGNMENT_NAME string = appInsightsRoleAssignment.name - diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/applicationinsights.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/applicationinsights.bicep deleted file mode 100644 index f6d9ee51..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/applicationinsights.bicep +++ /dev/null @@ -1,22 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param logAnalyticsWorkspaceId string -param disableLocalAuth bool = false - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { - name: name - location: location - tags: tags - kind: 'web' - properties: { - Application_Type: 'web' - WorkspaceResourceId: logAnalyticsWorkspaceId - DisableLocalAuth: disableLocalAuth - } -} - -output connectionString string = applicationInsights.properties.ConnectionString -output instrumentationKey string = applicationInsights.properties.InstrumentationKey -output name string = applicationInsights.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/loganalytics.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/loganalytics.bicep deleted file mode 100644 index 770544cc..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/loganalytics.bicep +++ /dev/null @@ -1,21 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2021-12-01-preview' = { - name: name - location: location - tags: tags - properties: any({ - retentionInDays: 30 - features: { - searchVersion: 1 - } - sku: { - name: 'PerGB2018' - } - }) -} - -output id string = logAnalytics.id -output name string = logAnalytics.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/monitoring.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/monitoring.bicep deleted file mode 100644 index 791c5eb7..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/monitor/monitoring.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param logAnalyticsName string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} -param disableLocalAuth bool = false - -module logAnalytics 'loganalytics.bicep' = { - name: 'loganalytics' - params: { - name: logAnalyticsName - location: location - tags: tags - } -} - -module applicationInsights 'applicationinsights.bicep' = { - name: 'applicationinsights' - params: { - name: applicationInsightsName - location: location - tags: tags - logAnalyticsWorkspaceId: logAnalytics.outputs.id - disableLocalAuth: disableLocalAuth - } -} - -output applicationInsightsConnectionString string = applicationInsights.outputs.connectionString -output applicationInsightsInstrumentationKey string = applicationInsights.outputs.instrumentationKey -output applicationInsightsName string = applicationInsights.outputs.name -output logAnalyticsWorkspaceId string = logAnalytics.outputs.id -output logAnalyticsWorkspaceName string = logAnalytics.outputs.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/security/role.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/security/role.bicep deleted file mode 100644 index 0b30cfd3..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/security/role.bicep +++ /dev/null @@ -1,21 +0,0 @@ -metadata description = 'Creates a role assignment for a service principal.' -param principalId string - -@allowed([ - 'Device' - 'ForeignGroup' - 'Group' - 'ServicePrincipal' - 'User' -]) -param principalType string = 'ServicePrincipal' -param roleDefinitionId string - -resource role 'Microsoft.Authorization/roleAssignments@2022-04-01' = { - name: guid(subscription().id, resourceGroup().id, principalId, roleDefinitionId) - properties: { - principalId: principalId - principalType: principalType - roleDefinitionId: resourceId('Microsoft.Authorization/roleDefinitions', roleDefinitionId) - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/core/storage/storage-account.bicep b/samples/durable-functions/python/pdf-summarizer/infra/core/storage/storage-account.bicep deleted file mode 100644 index 6149fb2f..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/core/storage/storage-account.bicep +++ /dev/null @@ -1,101 +0,0 @@ -metadata description = 'Creates an Azure storage account.' -param name string -param location string = resourceGroup().location -param tags object = {} - -@allowed([ - 'Cool' - 'Hot' - 'Premium' ]) -param accessTier string = 'Hot' -param allowBlobPublicAccess bool = true -param allowCrossTenantReplication bool = true -param allowSharedKeyAccess bool = true -param containers array = [] -param corsRules array = [] -param defaultToOAuthAuthentication bool = false -param deleteRetentionPolicy object = {} -@allowed([ 'AzureDnsZone', 'Standard' ]) -param dnsEndpointType string = 'Standard' -param files array = [] -param kind string = 'StorageV2' -param minimumTlsVersion string = 'TLS1_2' -param queues array = [] -param shareDeleteRetentionPolicy object = {} -param supportsHttpsTrafficOnly bool = true -param tables array = [] -param networkAcls object = { - bypass: 'AzureServices' - defaultAction: 'Allow' -} -@allowed([ 'Enabled', 'Disabled' ]) -param publicNetworkAccess string = 'Enabled' -param sku object = { name: 'Standard_LRS' } - -resource storage 'Microsoft.Storage/storageAccounts@2023-01-01' = { - name: name - location: location - tags: tags - kind: kind - sku: sku - properties: { - accessTier: accessTier - allowBlobPublicAccess: allowBlobPublicAccess - allowCrossTenantReplication: allowCrossTenantReplication - allowSharedKeyAccess: allowSharedKeyAccess - defaultToOAuthAuthentication: defaultToOAuthAuthentication - dnsEndpointType: dnsEndpointType - minimumTlsVersion: minimumTlsVersion - networkAcls: networkAcls - publicNetworkAccess: publicNetworkAccess - supportsHttpsTrafficOnly: supportsHttpsTrafficOnly - } - - resource blobServices 'blobServices' = if (!empty(containers)) { - name: 'default' - properties: { - cors: { - corsRules: corsRules - } - deleteRetentionPolicy: deleteRetentionPolicy - } - resource container 'containers' = [for container in containers: { - name: container.name - properties: { - publicAccess: contains(container, 'publicAccess') ? container.publicAccess : 'None' - } - }] - } - - resource fileServices 'fileServices' = if (!empty(files)) { - name: 'default' - properties: { - cors: { - corsRules: corsRules - } - shareDeleteRetentionPolicy: shareDeleteRetentionPolicy - } - } - - resource queueServices 'queueServices' = if (!empty(queues)) { - name: 'default' - properties: { - - } - resource queue 'queues' = [for queue in queues: { - name: queue.name - properties: { - metadata: {} - } - }] - } - - resource tableServices 'tableServices' = if (!empty(tables)) { - name: 'default' - properties: {} - } -} - -output id string = storage.id -output name string = storage.name -output primaryEndpoints object = storage.properties.primaryEndpoints diff --git a/samples/durable-functions/python/pdf-summarizer/infra/main.bicep b/samples/durable-functions/python/pdf-summarizer/infra/main.bicep deleted file mode 100644 index bc6201bb..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/main.bicep +++ /dev/null @@ -1,379 +0,0 @@ -targetScope = 'subscription' - -@minLength(1) -@maxLength(64) -@description('Name of the the environment which is used to generate a short unique hash used in all resources.') -param environmentName string - -@minLength(1) -@description('Primary location for all resources') -@allowed(['australiaeast', 'eastasia', 'eastus', 'eastus2', 'northeurope', 'southcentralus', 'southeastasia', 'swedencentral', 'uksouth', 'westus2', 'eastus2euap']) -@metadata({ - azd: { - type: 'location' - } -}) -param location string - -@allowed([ - 'EP1' - 'EP2' - 'EP3' - 'P1v2' - 'P2v2' - 'P3v2' - 'P1v3' - 'P2v3' - 'P3v3' - 'P1mv3' - 'P2mv3' - 'P3mv3' - 'P4mv3' - 'P5mv3' - 'P0v3' - 'S1' - 'B1' - 'B2' - 'B3' -]) -param functionSkuName string = 'EP1' // Uses main.parameters.json first - -@allowed([ - 'ElasticPremium' - 'PremiumV3' - 'Premium0V3' - 'Standard' - 'Basic' -]) - -param functionSkuTier string = 'ElasticPremium' // Uses main.parameters.json first -param functionReservedPlan bool = true // Set to false to get a Windows OS plan - -param dtsLocation string = location -param dtsSkuName string = 'Consumption' -param dtsCapacity int = 1 - -param documentIntelligenceSkuName string // Set in main.parameters.json -param documentIntelligenceServiceName string = '' // Set in main.parameters.json - -param durableFunctionServiceName string = '' -param durableFunctionUserAssignedIdentityName string = '' -param applicationInsightsName string = '' -param appServicePlanName string = '' -param logAnalyticsName string = '' -param resourceGroupName string = '' -param storageAccountName string = '' -param dtsName string = '' -param taskHubName string = '' -param vNetName string = '' -param disableLocalAuth bool = true - -param openAiServiceName string = '' - -param openAiSkuName string -@allowed([ 'azure', 'openai', 'azure_custom' ]) -param openAiHost string // Set in main.parameters.json - -@description('Public network access value for all deployed resources') -@allowed(['Enabled', 'Disabled']) -param publicNetworkAccess string = 'Enabled' - -param chatModelName string = '' -param chatDeploymentName string = '' -param chatDeploymentVersion string = '' -param chatDeploymentCapacity int = 0 - -var chatModel = { - modelName: !empty(chatModelName) ? chatModelName : startsWith(openAiHost, 'azure') ? 'gpt-4o' : 'gpt-4o' - deploymentName: !empty(chatDeploymentName) ? chatDeploymentName : 'chat' - deploymentVersion: !empty(chatDeploymentVersion) ? chatDeploymentVersion : '2024-08-06' - deploymentCapacity: chatDeploymentCapacity != 0 ? chatDeploymentCapacity : 28 -} - -var abbrs = loadJsonContent('./abbreviations.json') -var resourceToken = toLower(uniqueString(subscription().id, environmentName, location)) -var tags = { 'azd-env-name': environmentName } -var functionAppName = !empty(durableFunctionServiceName) ? durableFunctionServiceName : '${abbrs.webSitesFunctions}${resourceToken}' -var deploymentStorageContainerName = 'app-package-${take(functionAppName, 32)}-${take(toLower(uniqueString(functionAppName, resourceToken)), 7)}' - -@description('Id of the user or app to assign application roles') -param principalId string = '' - -// Organize resources in a resource group -resource rg 'Microsoft.Resources/resourceGroups@2021-04-01' = { - name: !empty(resourceGroupName) ? resourceGroupName : '${abbrs.resourcesResourceGroups}${environmentName}' - location: location - tags: tags -} - -module durableFunctionUserAssignedIdentity './core/identity/userAssignedIdentity.bicep' = { - name: 'DurableFunctionUserAssignedIdentity' - scope: rg - params: { - location: location - tags: tags - identityName: !empty(durableFunctionUserAssignedIdentityName) ? durableFunctionUserAssignedIdentityName : '${abbrs.managedIdentityUserAssignedIdentities}durable-function-${resourceToken}' - } -} - -// The application backend is a function app -module appServicePlan './core/host/appserviceplan.bicep' = { - name: 'appserviceplan' - scope: rg - params: { - name: !empty(appServicePlanName) ? appServicePlanName : '${abbrs.webServerFarms}${resourceToken}' - location: location - tags: tags - sku: { - name: functionSkuName // Change this to the desired Elastic Premium SKU - tier: functionSkuTier - } - reserved: functionReservedPlan // Set to false to get a Windows OS plan - } -} - -module durableFunction './app/durable-function.bicep' = { - name: 'function-app' - scope: rg - params: { - name: functionAppName - location: location - tags: tags - applicationInsightsName: monitoring.outputs.applicationInsightsName - appServicePlanId: appServicePlan.outputs.id - runtimeName: 'python' - runtimeVersion: '3.9' - storageAccountName: storage.outputs.name - identityId: durableFunctionUserAssignedIdentity.outputs.identityId - identityClientId: durableFunctionUserAssignedIdentity.outputs.identityClientId - dtsURL: dts.outputs.dts_URL - taskHubName: dts.outputs.TASKHUB_NAME - azureOpenaiService: openAi.outputs.name - documentIntelligenceEndpoint: documentIntelligence.outputs.endpoint - appSettings: { - CHAT_MODEL_DEPLOYMENT_NAME: chatModel.deploymentName - } - virtualNetworkSubnetId: serviceVirtualNetwork.outputs.appSubnetID - } -} - -// Backing storage for Azure functions durable function -module storage './core/storage/storage-account.bicep' = { - name: 'storage' - scope: rg - params: { - name: !empty(storageAccountName) ? storageAccountName : '${abbrs.storageStorageAccounts}${resourceToken}' - location: location - tags: tags - containers: [{ - name: deploymentStorageContainerName - publicAccess: 'None' - },{ - name: 'input' - publicAccess: 'None' - - },{ - name: 'output' - publicAccess: 'None' - }] - publicNetworkAccess: 'Enabled' - allowBlobPublicAccess: false - } -} - -var storageRoleDefinitionId = 'b7e6dc6d-f1e8-4753-8033-0f276bb0955b' //Storage Blob Data Owner role - -// Allow access from durable function to storage account using a user assigned managed identity -module storageRoleAssignmentApiUAMI 'app/storage-Access.bicep' = { - name: 'storageRoleAssignmentPocessorUAMI' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: storageRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - } -} - -// Allow access from durable function to storage account using the Login identity of this bicep (usually AZD CLI) -module storageRoleAssignmentApi 'app/storage-Access.bicep' = { - name: 'storageRoleAssignmentDurableFunctionLoginIdentity' - scope: rg - params: { - storageAccountName: storage.outputs.name - roleDefinitionID: storageRoleDefinitionId - principalID: principalId - principalType: 'User' - } -} - -// Virtual Network & private endpoint to blob storage -module serviceVirtualNetwork 'app/vnet.bicep' = { - name: 'serviceVirtualNetwork' - scope: rg - params: { - location: location - tags: tags - vNetName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}' - } -} - -module storagePrivateEndpoint 'app/storage-PrivateEndpoint.bicep' = { - name: 'servicePrivateEndpoint' - scope: rg - params: { - location: location - tags: tags - virtualNetworkName: !empty(vNetName) ? vNetName : '${abbrs.networkVirtualNetworks}${resourceToken}' - subnetName: serviceVirtualNetwork.outputs.peSubnetName - resourceName: storage.outputs.name - } -} - -// Monitor application with Azure Monitor -module monitoring './core/monitor/monitoring.bicep' = { - name: 'monitoring' - scope: rg - params: { - location: location - tags: tags - logAnalyticsName: !empty(logAnalyticsName) ? logAnalyticsName : '${abbrs.operationalInsightsWorkspaces}${resourceToken}' - applicationInsightsName: !empty(applicationInsightsName) ? applicationInsightsName : '${abbrs.insightsComponents}${resourceToken}' - disableLocalAuth: disableLocalAuth - } -} - -var monitoringRoleDefinitionId = '3913510d-42f4-4e42-8a64-420c390055eb' // Monitoring Metrics Publisher role ID - -// Allow access from durable function` to application insights using a managed identity -module appInsightsRoleAssignmentApi './core/monitor/appinsights-access.bicep' = { - name: 'appInsightsRoleAssignmentDurableFunction' - scope: rg - params: { - appInsightsName: monitoring.outputs.applicationInsightsName - roleDefinitionID: monitoringRoleDefinitionId - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - } -} - -// Allow access from durable function to storage account using a user assigned managed identity -module dtsRoleAssignment 'app/dts-Access.bicep' = { - name: 'dtsRoleAssignment' - scope: rg - params: { - roleDefinitionID: '0ad04412-c4d5-4796-b79c-f76d14c8d402' - principalID: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - principalType: 'ServicePrincipal' - dtsName: dts.outputs.dts_NAME - } -} - -module dtsDashboardRoleAssignment 'app/dts-Access.bicep' = { - name: 'dtsDashboardRoleAssignment' - scope: rg - params: { - roleDefinitionID: '0ad04412-c4d5-4796-b79c-f76d14c8d402' - principalID: principalId - principalType: 'User' - dtsName: dts.outputs.dts_NAME - } -} - -module dts './app/dts.bicep' = { - scope: rg - name: 'dtsResource' - params: { - name: !empty(dtsName) ? dtsName : '${abbrs.dts}${resourceToken}' - taskhubname: !empty(taskHubName) ? taskHubName : '${abbrs.taskhub}${resourceToken}' - location: dtsLocation - tags: tags - ipAllowlist: [ - '0.0.0.0/0' - ] - skuName: dtsSkuName - skuCapacity: dtsCapacity - } -} - -module openAi './core/ai/cognitiveservices.bicep' = { - name: 'openai' - scope: rg - params: { - name: !empty(openAiServiceName) ? openAiServiceName : '${abbrs.cognitiveServicesAccounts}${resourceToken}' - location: 'eastus2' - - tags: tags - publicNetworkAccess: 'Enabled' - sku: { - name: openAiSkuName - } - deployments: [ - { - name: chatModel.deploymentName - capacity: chatModel.deploymentCapacity - model: { - format: 'OpenAI' - name: chatModel.modelName - version: chatModel.deploymentVersion - } - scaleSettings: { - scaleType: 'Standard' - } - } - ] - } -} - -// Learn more about Azure role-based access control (RBAC) and built-in-roles at https://docs.microsoft.com/en-us/azure/role-based-access-control/overview -var CognitiveServicesRoleDefinitionIds = ['5e0bd9bd-7b93-4f28-af87-19fc36ad61bd'] // Cognitive Services OpenAI User -module openAiRoleUser 'app/openai-Access.bicep' = { - scope: rg - name: 'openai-roles' - params: { - principalId: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - openAiAccountResourceName: openAi.outputs.name - roleDefinitionIds: CognitiveServicesRoleDefinitionIds - } -} - -module documentIntelligence 'br/public:avm/res/cognitive-services/account:0.5.4' = { - name: 'documentintelligence' - scope: rg - params: { - name: !empty(documentIntelligenceServiceName) - ? documentIntelligenceServiceName - : '${abbrs.cognitiveServicesDocumentIntelligence}${resourceToken}' - kind: 'FormRecognizer' - customSubDomainName: !empty(documentIntelligenceServiceName) - ? documentIntelligenceServiceName - : '${abbrs.cognitiveServicesDocumentIntelligence}${resourceToken}' - publicNetworkAccess: publicNetworkAccess - networkAcls: { - defaultAction: 'Allow' - } - location: location - disableLocalAuth: true - tags: tags - sku: documentIntelligenceSkuName - } -} - -module documentIntelligenceRoleBackend 'app/documentintelligence-Access.bicep' = { - scope: rg - name: 'documentintelligence-role-backend' - params: { - principalId: durableFunctionUserAssignedIdentity.outputs.identityPrincipalId - roleDefinitionId: 'a97b65f3-24c7-4388-baec-2e87135dc908' - principalType: 'ServicePrincipal' - } -} - -// App outputs -output APPLICATIONINSIGHTS_CONNECTION_STRING string = monitoring.outputs.applicationInsightsConnectionString -output AZURE_LOCATION string = location -output AZURE_TENANT_ID string = tenant().tenantId -output SERVICE_DURABLE_FUNCTION_NAME string = durableFunction.outputs.SERVICE_DURABLE_FUNCTION_NAME -output AZURE_FUNCTION_NAME string = durableFunction.outputs.SERVICE_DURABLE_FUNCTION_NAME -output AZURE_RESOURCE_GROUP string = rg.name -output AZURE_STORAGE_ACCOUNT_NAME string = storage.outputs.name -output AZURE_STORAGE_CONTAINER_NAME string = deploymentStorageContainerName diff --git a/samples/durable-functions/python/pdf-summarizer/infra/main.parameters.json b/samples/durable-functions/python/pdf-summarizer/infra/main.parameters.json deleted file mode 100644 index e72b9dc4..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/main.parameters.json +++ /dev/null @@ -1,81 +0,0 @@ -{ - "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", - "contentVersion": "1.0.0.0", - "parameters": { - "environmentName": { - "value": "${AZURE_ENV_NAME}" - }, - "location": { - "value": "${AZURE_LOCATION}" - }, - "principalId": { - "value": "${AZURE_PRINCIPAL_ID}" - }, - "openAiSkuName": { - "value": "S0" - }, - "openAiServiceName": { - "value": "${AZURE_OPENAI_SERVICE}" - }, - "openAiHost": { - "value": "${OPENAI_HOST=azure}" - }, - "openAiResourceGroupName": { - "value": "${AZURE_OPENAI_RESOURCE_GROUP}" - }, - "chatGptDeploymentName": { - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT=chat}" - }, - "chatGptDeploymentCapacity":{ - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT_CAPACITY}" - }, - "chatGptDeploymentVersion":{ - "value": "${AZURE_OPENAI_CHATGPT_DEPLOYMENT_VERSION}" - }, - "chatGptModelName":{ - "value": "${AZURE_OPENAI_CHATGPT_MODEL=gpt-35-turbo}" - }, - "documentIntelligenceServiceName": { - "value": "${AZURE_DOCUMENTINTELLIGENCE_SERVICE}" - }, - "documentIntelligenceSkuName": { - "value": "${AZURE_DOCUMENTINTELLIGENCE_SKU=S0}" - }, - "embeddingDeploymentName": { - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT=embedding}" - }, - "embeddingModelName":{ - "value": "${AZURE_OPENAI_EMB_MODEL_NAME=text-embedding-3-small}" - }, - "embeddingDeploymentVersion":{ - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT_VERSION}" - }, - "embeddingDeploymentCapacity":{ - "value": "${AZURE_OPENAI_EMB_DEPLOYMENT_CAPACITY}" - }, - "searchServiceName": { - "value": "${AZURE_SEARCH_SERVICE}" - }, - "searchServiceResourceGroupName": { - "value": "${AZURE_SEARCH_SERVICE_RESOURCE_GROUP}" - }, - "searchServiceIndexName": { - "value": "${AZURE_SEARCH_INDEX=openai-index}" - }, - "searchServiceSkuName": { - "value": "${AZURE_SEARCH_SERVICE_SKU=standard}" - }, - "storageAccountName": { - "value": "${AZURE_STORAGE_ACCOUNT}" - }, - "storageResourceGroupName": { - "value": "${AZURE_STORAGE_RESOURCE_GROUP}" - }, - "azFunctionHostingPlanType": { - "value": "flexconsumption" - }, - "systemPrompt": { - "value": "${SYSTEM_PROMPT}=You are a helpful assistant. You are responding to requests from a user about internal emails and documents. You can and should refer to the internal documents to help respond to requests. If a user makes a request thats not covered by the documents provided in the query, you must say that you do not have access to the information and not try and get information from other places besides the documents provided. The following is a list of documents that you can refer to when answering questions. The documents are in the format [filename]: [text] and are separated by newlines. If you answer a question by referencing any of the documents, please cite the document in your answer. For example, if you answer a question by referencing info.txt, you should add \"Reference: info.txt\" to the end of your answer on a separate line." - } - } -} \ No newline at end of file diff --git a/samples/durable-functions/python/pdf-summarizer/infra/modules/fetch-container-image.bicep b/samples/durable-functions/python/pdf-summarizer/infra/modules/fetch-container-image.bicep deleted file mode 100644 index 78d1e7ee..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/modules/fetch-container-image.bicep +++ /dev/null @@ -1,8 +0,0 @@ -param exists bool -param name string - -resource existingApp 'Microsoft.App/containerApps@2023-05-02-preview' existing = if (exists) { - name: name -} - -output containers array = exists ? existingApp.properties.template.containers : [] diff --git a/samples/durable-functions/python/pdf-summarizer/infra/shared/apps-env.bicep b/samples/durable-functions/python/pdf-summarizer/infra/shared/apps-env.bicep deleted file mode 100644 index 030b8233..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/shared/apps-env.bicep +++ /dev/null @@ -1,33 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param logAnalyticsWorkspaceName string -param applicationInsightsName string = '' - -resource containerAppsEnvironment 'Microsoft.App/managedEnvironments@2022-10-01' = { - name: name - location: location - tags: tags - properties: { - appLogsConfiguration: { - destination: 'log-analytics' - logAnalyticsConfiguration: { - customerId: logAnalyticsWorkspace.properties.customerId - sharedKey: logAnalyticsWorkspace.listKeys().primarySharedKey - } - } - daprAIConnectionString: applicationInsights.properties.ConnectionString - } -} - -resource logAnalyticsWorkspace 'Microsoft.OperationalInsights/workspaces@2022-10-01' existing = { - name: logAnalyticsWorkspaceName -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' existing = { - name: applicationInsightsName -} - -output name string = containerAppsEnvironment.name -output domain string = containerAppsEnvironment.properties.defaultDomain diff --git a/samples/durable-functions/python/pdf-summarizer/infra/shared/dashboard-web.bicep b/samples/durable-functions/python/pdf-summarizer/infra/shared/dashboard-web.bicep deleted file mode 100644 index eccce0db..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/shared/dashboard-web.bicep +++ /dev/null @@ -1,1231 +0,0 @@ -param name string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} - -// 2020-09-01-preview because that is the latest valid version -resource applicationInsightsDashboard 'Microsoft.Portal/dashboards@2020-09-01-preview' = { - name: name - location: location - tags: tags - properties: { - lenses: [ - { - order: 0 - parts: [ - { - position: { - x: 0 - y: 0 - colSpan: 2 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'id' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AspNetOverviewPinnedPart' - asset: { - idInputName: 'id' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'overview' - } - } - { - position: { - x: 2 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/ProactiveDetectionAsyncPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'ProactiveDetection' - } - } - { - position: { - x: 3 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/QuickPulseButtonSmallPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 4 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-04T01:20:33.345Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AvailabilityNavButtonPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 5 - y: 0 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-08T18:47:35.237Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'ConfigurationId' - value: '78ce933e-e864-4b05-a27b-71fd55a6afad' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/AppMapButtonPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 0 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Usage' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 3 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - endTime: null - createdTime: '2018-05-04T01:22:35.782Z' - isInitialTime: true - grain: 1 - useDashboardTimeRange: false - } - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/UsageUsersOverviewPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - } - } - { - position: { - x: 4 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Reliability' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 7 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'DataModel' - value: { - version: '1.0.0' - timeContext: { - durationMs: 86400000 - createdTime: '2018-05-04T23:42:40.072Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - isOptional: true - } - { - name: 'ConfigurationId' - value: '8a02f7bf-ac0f-40e1-afe9-f0e72cfee77f' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/CuratedBladeFailuresPinnedPart' - isAdapter: true - asset: { - idInputName: 'ResourceId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'failures' - } - } - { - position: { - x: 8 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Responsiveness\r\n' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 11 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ResourceId' - value: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - { - name: 'DataModel' - value: { - version: '1.0.0' - timeContext: { - durationMs: 86400000 - createdTime: '2018-05-04T23:43:37.804Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - isOptional: true - } - { - name: 'ConfigurationId' - value: '2a8ede4f-2bee-4b9c-aed9-2db0e8a01865' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/CuratedBladePerformancePinnedPart' - isAdapter: true - asset: { - idInputName: 'ResourceId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'performance' - } - } - { - position: { - x: 12 - y: 1 - colSpan: 3 - rowSpan: 1 - } - metadata: { - inputs: [] - type: 'Extension/HubsExtension/PartType/MarkdownPart' - settings: { - content: { - settings: { - content: '# Browser' - title: '' - subtitle: '' - } - } - } - } - } - { - position: { - x: 15 - y: 1 - colSpan: 1 - rowSpan: 1 - } - metadata: { - inputs: [ - { - name: 'ComponentId' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'MetricsExplorerJsonDefinitionId' - value: 'BrowserPerformanceTimelineMetrics' - } - { - name: 'TimeContext' - value: { - durationMs: 86400000 - createdTime: '2018-05-08T12:16:27.534Z' - isInitialTime: false - grain: 1 - useDashboardTimeRange: false - } - } - { - name: 'CurrentFilter' - value: { - eventTypes: [ - 4 - 1 - 3 - 5 - 2 - 6 - 13 - ] - typeFacets: {} - isPermissive: false - } - } - { - name: 'id' - value: { - Name: applicationInsightsName - SubscriptionId: subscription().subscriptionId - ResourceGroup: resourceGroup().name - } - } - { - name: 'Version' - value: '1.0' - } - ] - #disable-next-line BCP036 - type: 'Extension/AppInsightsExtension/PartType/MetricsExplorerBladePinnedPart' - asset: { - idInputName: 'ComponentId' - type: 'ApplicationInsights' - } - defaultMenuItemId: 'browser' - } - } - { - position: { - x: 0 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'sessions/count' - aggregationType: 5 - namespace: 'microsoft.insights/components/kusto' - metricVisualization: { - displayName: 'Sessions' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'users/count' - aggregationType: 5 - namespace: 'microsoft.insights/components/kusto' - metricVisualization: { - displayName: 'Users' - color: '#7E58FF' - } - } - ] - title: 'Unique sessions and users' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'segmentationUsers' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'requests/failed' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Failed requests' - color: '#EC008C' - } - } - ] - title: 'Failed requests' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'failures' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'requests/duration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Server response time' - color: '#00BCF2' - } - } - ] - title: 'Server response time' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'performance' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 12 - y: 2 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/networkDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Page load network connect time' - color: '#7E58FF' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/processingDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Client processing time' - color: '#44F1C8' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/sendDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Send request time' - color: '#EB9371' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'browserTimings/receiveDuration' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Receiving response time' - color: '#0672F1' - } - } - ] - title: 'Average page load time breakdown' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 0 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'availabilityResults/availabilityPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Availability' - color: '#47BDF5' - } - } - ] - title: 'Average availability' - visualization: { - chartType: 3 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - openBladeOnClick: { - openBlade: true - destinationBlade: { - extensionName: 'HubsExtension' - bladeName: 'ResourceMenuBlade' - parameters: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - menuid: 'availability' - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'exceptions/server' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Server exceptions' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'dependencies/failed' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Dependency failures' - color: '#7E58FF' - } - } - ] - title: 'Server exceptions and Dependency failures' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processorCpuPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Processor time' - color: '#47BDF5' - } - } - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processCpuPercentage' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Process CPU' - color: '#7E58FF' - } - } - ] - title: 'Average processor and process CPU utilization' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 12 - y: 5 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'exceptions/browser' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Browser exceptions' - color: '#47BDF5' - } - } - ] - title: 'Browser exceptions' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 0 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'availabilityResults/count' - aggregationType: 7 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Availability test results count' - color: '#47BDF5' - } - } - ] - title: 'Availability test results count' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 4 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/processIOBytesPerSecond' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Process IO rate' - color: '#47BDF5' - } - } - ] - title: 'Average process I/O rate' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - { - position: { - x: 8 - y: 8 - colSpan: 4 - rowSpan: 3 - } - metadata: { - inputs: [ - { - name: 'options' - value: { - chart: { - metrics: [ - { - resourceMetadata: { - id: '/subscriptions/${subscription().subscriptionId}/resourceGroups/${resourceGroup().name}/providers/Microsoft.Insights/components/${applicationInsightsName}' - } - name: 'performanceCounters/memoryAvailableBytes' - aggregationType: 4 - namespace: 'microsoft.insights/components' - metricVisualization: { - displayName: 'Available memory' - color: '#47BDF5' - } - } - ] - title: 'Average available memory' - visualization: { - chartType: 2 - legendVisualization: { - isVisible: true - position: 2 - hideSubtitle: false - } - axisVisualization: { - x: { - isVisible: true - axisType: 2 - } - y: { - isVisible: true - axisType: 1 - } - } - } - } - } - } - { - name: 'sharedTimeRange' - isOptional: true - } - ] - #disable-next-line BCP036 - type: 'Extension/HubsExtension/PartType/MonitorChartPart' - settings: {} - } - } - ] - } - ] - } -} diff --git a/samples/durable-functions/python/pdf-summarizer/infra/shared/keyvault.bicep b/samples/durable-functions/python/pdf-summarizer/infra/shared/keyvault.bicep deleted file mode 100644 index f84f7508..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/shared/keyvault.bicep +++ /dev/null @@ -1,31 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -@description('Service principal that should be granted read access to the KeyVault. If unset, no service principal is granted access by default') -param principalId string = '' - -var defaultAccessPolicies = !empty(principalId) ? [ - { - objectId: principalId - permissions: { secrets: [ 'get', 'list' ] } - tenantId: subscription().tenantId - } -] : [] - -resource keyVault 'Microsoft.KeyVault/vaults@2022-07-01' = { - name: name - location: location - tags: tags - properties: { - tenantId: subscription().tenantId - sku: { family: 'A', name: 'standard' } - enabledForTemplateDeployment: true - accessPolicies: union(defaultAccessPolicies, [ - // define access policies here - ]) - } -} - -output endpoint string = keyVault.properties.vaultUri -output name string = keyVault.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/shared/monitoring.bicep b/samples/durable-functions/python/pdf-summarizer/infra/shared/monitoring.bicep deleted file mode 100644 index 4ae9796c..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/shared/monitoring.bicep +++ /dev/null @@ -1,34 +0,0 @@ -param logAnalyticsName string -param applicationInsightsName string -param location string = resourceGroup().location -param tags object = {} - -resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2021-12-01-preview' = { - name: logAnalyticsName - location: location - tags: tags - properties: any({ - retentionInDays: 30 - features: { - searchVersion: 1 - } - sku: { - name: 'PerGB2018' - } - }) -} - -resource applicationInsights 'Microsoft.Insights/components@2020-02-02' = { - name: applicationInsightsName - location: location - tags: tags - kind: 'web' - properties: { - Application_Type: 'web' - WorkspaceResourceId: logAnalytics.id - } -} - -output applicationInsightsName string = applicationInsights.name -output logAnalyticsWorkspaceId string = logAnalytics.id -output logAnalyticsWorkspaceName string = logAnalytics.name diff --git a/samples/durable-functions/python/pdf-summarizer/infra/shared/registry.bicep b/samples/durable-functions/python/pdf-summarizer/infra/shared/registry.bicep deleted file mode 100644 index d6629f86..00000000 --- a/samples/durable-functions/python/pdf-summarizer/infra/shared/registry.bicep +++ /dev/null @@ -1,36 +0,0 @@ -param name string -param location string = resourceGroup().location -param tags object = {} - -param adminUserEnabled bool = true -param anonymousPullEnabled bool = false -param dataEndpointEnabled bool = false -param encryption object = { - status: 'disabled' -} -param networkRuleBypassOptions string = 'AzureServices' -param publicNetworkAccess string = 'Enabled' -param sku object = { - name: 'Standard' -} -param zoneRedundancy string = 'Disabled' - -// 2023-01-01-preview needed for anonymousPullEnabled -resource containerRegistry 'Microsoft.ContainerRegistry/registries@2023-01-01-preview' = { - name: name - location: location - tags: tags - sku: sku - properties: { - adminUserEnabled: adminUserEnabled - anonymousPullEnabled: anonymousPullEnabled - dataEndpointEnabled: dataEndpointEnabled - encryption: encryption - networkRuleBypassOptions: networkRuleBypassOptions - publicNetworkAccess: publicNetworkAccess - zoneRedundancy: zoneRedundancy - } -} - -output loginServer string = containerRegistry.properties.loginServer -output name string = containerRegistry.name diff --git a/samples/durable-functions/python/pdf-summarizer/next-steps.md b/samples/durable-functions/python/pdf-summarizer/next-steps.md deleted file mode 100644 index d442a991..00000000 --- a/samples/durable-functions/python/pdf-summarizer/next-steps.md +++ /dev/null @@ -1,97 +0,0 @@ -# Next Steps after `azd init` - -## Table of Contents - -1. [Next Steps](#next-steps) -2. [What was added](#what-was-added) -3. [Billing](#billing) -4. [Troubleshooting](#troubleshooting) - -## Next Steps - -### Provision infrastructure and deploy application code - -Run `azd up` to provision your infrastructure and deploy to Azure (or run `azd provision` then `azd deploy` to accomplish the tasks separately). Visit the service endpoints listed to see your application up-and-running! - -To troubleshoot any issues, see [troubleshooting](#troubleshooting). - -### Configure environment variables for running services - -Configure environment variables for running services by updating `settings` in [main.parameters.json](./infra/main.parameters.json). - -### Configure CI/CD pipeline - -1. Create a workflow pipeline file locally. The following starters are available: - - [Deploy with GitHub Actions](https://github.com/Azure-Samples/azd-starter-bicep/blob/main/.github/workflows/azure-dev.yml) - - [Deploy with Azure Pipelines](https://github.com/Azure-Samples/azd-starter-bicep/blob/main/.azdo/pipelines/azure-dev.yml) -2. Run `azd pipeline config` to configure the deployment pipeline to connect securely to Azure. - -## What was added - -### Infrastructure configuration - -To describe the infrastructure and application, `azure.yaml` along with Infrastructure as Code files using Bicep were added with the following directory structure: - -```yaml -- azure.yaml # azd project configuration -- infra/ # Infrastructure as Code (bicep) files - - main.bicep # main deployment module - - app/ # Application resource modules - - shared/ # Shared resource modules - - modules/ # Library modules -``` - -Each bicep file declares resources to be provisioned. The resources are provisioned when running `azd up` or `azd provision`. - -- [app/durable-function.bicep](./infra/app/durable-function.bicep) - Azure Functions resources to host the `function-app` service. -- [shared/keyvault.bicep](./infra/shared/keyvault.bicep) - Azure KeyVault to store secrets. -- [shared/monitoring.bicep](./infra/shared/monitoring.bicep) - Azure Log Analytics workspace and Application Insights to log and store instrumentation logs. -- [shared/registry.bicep](./infra/shared/registry.bicep) - Azure Container Registry to store docker images. - -More information about [Bicep](https://aka.ms/bicep) language. - -### Build from source (no Dockerfile) - -This sample's `azure.yaml` uses `host: function`, so `azd package` packages an Azure Functions app rather than a container image. The buildpack instructions below apply only if you adapt the service to use Azure Container Apps. - -#### Build with Buildpacks using Oryx - -If your project does not contain a Dockerfile, we will use [Buildpacks](https://buildpacks.io/) using [Oryx](https://github.com/microsoft/Oryx/blob/main/doc/README.md) to create an image for the services in `azure.yaml` and get your containerized app onto Azure. - -To produce and run the docker image locally: - -1. Run `azd package` to build the image. -2. Copy the *Image Tag* shown. -3. Run `docker run -it ` to run the image locally. - -#### Exposed port - -Oryx will automatically set `PORT` to a default value of `80` (port `8080` for Java). Additionally, it will auto-configure supported web servers such as `gunicorn` and `ASP .NET Core` to listen to the target `PORT`. If your application already listens to the port specified by the `PORT` variable, the application will work out-of-the-box. Otherwise, you may need to perform one of the steps below: - -1. Update your application code or configuration to listen to the port specified by the `PORT` variable -1. (Alternatively) Search for `targetPort` in a .bicep file under the `infra/app` folder, and update the variable to match the port used by the application. - -## Billing - -Visit the *Cost Management + Billing* page in Azure Portal to track current spend. For more information about how you're billed, and how you can monitor the costs incurred in your Azure subscriptions, visit [billing overview](https://learn.microsoft.com/azure/developer/intro/azure-developer-billing). - -## Troubleshooting - -Q: I visited the service endpoint listed, and I'm seeing a blank page, a generic welcome page, or an error page. - -A: Your service may have failed to start, or it may be missing some configuration settings. For this sample's Azure Functions deployment, open the Function App from `azd show` and inspect its deployment logs, Log stream, and Application Insights. Confirm that the required app settings match the sample README. - -If you have adapted the service to Azure Container Apps, investigate further: - -1. Run `azd show`. Click on the link under "View in Azure Portal" to open the resource group in Azure Portal. -2. Navigate to the specific Container App service that is failing to deploy. -3. Click on the failing revision under "Revisions with Issues". -4. Review "Status details" for more information about the type of failure. -5. Observe the log outputs from Console log stream and System log stream to identify any errors. -6. If logs are written to disk, use *Console* in the navigation to connect to a shell within the running container. - -For more troubleshooting information, visit [Container Apps troubleshooting](https://learn.microsoft.com/azure/container-apps/troubleshooting). - -### Additional information - -For additional information about setting up your `azd` project, visit our official [docs](https://learn.microsoft.com/azure/developer/azure-developer-cli/make-azd-compatible?pivots=azd-convert). diff --git a/samples/durable-functions/python/pdf-summarizer/requirements.txt b/samples/durable-functions/python/pdf-summarizer/requirements.txt deleted file mode 100644 index 01f0b556..00000000 --- a/samples/durable-functions/python/pdf-summarizer/requirements.txt +++ /dev/null @@ -1,15 +0,0 @@ -# DO NOT include azure-functions-worker in this file -# The Python Worker is managed by Azure Functions platform -# Manually managing azure-functions-worker may cause unexpected issues - -cryptography -azure-functions -azure-functions-durable -azure-ai-documentintelligence -azure-storage-blob -azure-identity -azure-ai-formrecognizer -requests -pandas -numpy -PyPDF2 \ No newline at end of file