From 1644b841cc3ff4691a734452793f66b36c37c93f Mon Sep 17 00:00:00 2001 From: Benjamin Cabanes <3447705+bcabanes@users.noreply.github.com> Date: Thu, 13 Jan 2022 13:11:45 -0500 Subject: [PATCH] docs(nxdev): lazyload iframes (#8517) --- .../angular-tutorial/01-create-application.md | 2 +- .../angular-tutorial/02-add-e2e-test.md | 2 +- .../angular-tutorial/03-display-todos.md | 2 +- .../angular-tutorial/04-connect-to-api.md | 2 +- .../angular-tutorial/05-add-node-app.md | 2 +- docs/shared/angular-tutorial/06-proxy.md | 2 +- docs/shared/angular-tutorial/07-share-code.md | 2 +- .../shared/angular-tutorial/08-create-libs.md | 2 +- docs/shared/angular-tutorial/09-dep-graph.md | 2 +- .../10-computation-caching.md | 2 +- .../11-test-affected-projects.md | 2 +- docs/shared/console.md | 14 +++++------ docs/shared/getting-started/nx-and-angular.md | 2 +- docs/shared/getting-started/nx-and-react.md | 2 +- docs/shared/guides/nx-and-ts.md | 2 +- .../storybook/migrate-webpack-final-react.md | 2 +- docs/shared/migration/adding-to-monorepo.md | 10 ++++---- docs/shared/migration/migration-cra.md | 2 +- .../node-tutorial/01-create-application.md | 2 +- docs/shared/node-tutorial/02-display-todos.md | 2 +- docs/shared/node-tutorial/03-share-code.md | 2 +- docs/shared/node-tutorial/04-create-libs.md | 2 +- docs/shared/node-tutorial/05-dep-graph.md | 2 +- .../node-tutorial/06-computation-caching.md | 2 +- .../07-test-affected-projects.md | 2 +- docs/shared/nx-core.md | 2 +- docs/shared/nx-plugin.md | 2 +- .../react-tutorial/01-create-application.md | 2 +- docs/shared/react-tutorial/02-add-e2e-test.md | 2 +- .../shared/react-tutorial/03-display-todos.md | 2 +- .../react-tutorial/04-connect-to-api.md | 2 +- docs/shared/react-tutorial/05-add-node-app.md | 2 +- docs/shared/react-tutorial/06-proxy.md | 2 +- docs/shared/react-tutorial/07-share-code.md | 2 +- docs/shared/react-tutorial/08-create-libs.md | 2 +- docs/shared/react-tutorial/09-dep-graph.md | 2 +- .../react-tutorial/10-computation-caching.md | 2 +- .../11-test-affected-projects.md | 2 +- .../workspace/structure/dependency-graph.md | 2 +- nx-dev/nx-dev/pages/community.tsx | 1 + .../generated/api-detox/executors/test.md | 22 +++++++++++------- .../angular-tutorial/01-create-application.md | 2 +- .../angular-tutorial/02-add-e2e-test.md | 2 +- .../angular-tutorial/03-display-todos.md | 2 +- .../angular-tutorial/04-connect-to-api.md | 2 +- .../angular-tutorial/05-add-node-app.md | 2 +- .../shared/angular-tutorial/06-proxy.md | 2 +- .../shared/angular-tutorial/07-share-code.md | 2 +- .../shared/angular-tutorial/08-create-libs.md | 2 +- .../shared/angular-tutorial/09-dep-graph.md | 2 +- .../10-computation-caching.md | 2 +- .../11-test-affected-projects.md | 2 +- .../public/documentation/shared/console.md | 14 +++++------ .../documentation/shared/detox-logo.png | Bin 135809 -> 37891 bytes .../documentation/shared/detox-plugin.md | 22 +++++------------- .../shared/getting-started/nx-and-angular.md | 2 +- .../shared/getting-started/nx-and-react.md | 2 +- .../documentation/shared/guides/nx-and-ts.md | 2 +- .../shared/guides/react-native.md | 8 +++---- .../storybook/migrate-webpack-final-react.md | 2 +- .../shared/migration/adding-to-monorepo.md | 10 ++++---- .../shared/migration/migration-cra.md | 2 +- .../node-tutorial/01-create-application.md | 2 +- .../shared/node-tutorial/02-display-todos.md | 2 +- .../shared/node-tutorial/03-share-code.md | 2 +- .../shared/node-tutorial/04-create-libs.md | 2 +- .../shared/node-tutorial/05-dep-graph.md | 2 +- .../node-tutorial/06-computation-caching.md | 2 +- .../07-test-affected-projects.md | 2 +- .../public/documentation/shared/nx-core.md | 2 +- .../public/documentation/shared/nx-plugin.md | 2 +- .../react-tutorial/01-create-application.md | 2 +- .../shared/react-tutorial/02-add-e2e-test.md | 2 +- .../shared/react-tutorial/03-display-todos.md | 2 +- .../react-tutorial/04-connect-to-api.md | 2 +- .../shared/react-tutorial/05-add-node-app.md | 2 +- .../shared/react-tutorial/06-proxy.md | 2 +- .../shared/react-tutorial/07-share-code.md | 2 +- .../shared/react-tutorial/08-create-libs.md | 2 +- .../shared/react-tutorial/09-dep-graph.md | 2 +- .../react-tutorial/10-computation-caching.md | 2 +- .../11-test-affected-projects.md | 2 +- .../workspace/structure/dependency-graph.md | 2 +- nx-dev/ui-home/src/lib/getting-started.tsx | 1 + 84 files changed, 124 insertions(+), 126 deletions(-) diff --git a/docs/shared/angular-tutorial/01-create-application.md b/docs/shared/angular-tutorial/01-create-application.md index 95753b14b3..dbabc89b61 100644 --- a/docs/shared/angular-tutorial/01-create-application.md +++ b/docs/shared/angular-tutorial/01-create-application.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 1: Create Application - + In this tutorial you use Nx to build a full-stack application out of common libraries using modern technologies like Cypress and Nest. diff --git a/docs/shared/angular-tutorial/02-add-e2e-test.md b/docs/shared/angular-tutorial/02-add-e2e-test.md index 4b85bf5719..58bef5d334 100644 --- a/docs/shared/angular-tutorial/02-add-e2e-test.md +++ b/docs/shared/angular-tutorial/02-add-e2e-test.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 2: Add E2E Tests - + By default, Nx uses [Cypress](/cypress/overview) to run E2E tests. diff --git a/docs/shared/angular-tutorial/03-display-todos.md b/docs/shared/angular-tutorial/03-display-todos.md index 82b0603067..c3e46d00de 100644 --- a/docs/shared/angular-tutorial/03-display-todos.md +++ b/docs/shared/angular-tutorial/03-display-todos.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 3: Display Todos - + Great! You have a failing E2E test. Now you can make it pass! diff --git a/docs/shared/angular-tutorial/04-connect-to-api.md b/docs/shared/angular-tutorial/04-connect-to-api.md index 6c515847c6..bb79a5386f 100644 --- a/docs/shared/angular-tutorial/04-connect-to-api.md +++ b/docs/shared/angular-tutorial/04-connect-to-api.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 4: Connect to an API - + Real-world applications do not live in isolation — they need APIs to talk to. Setup your app to talk to an API. diff --git a/docs/shared/angular-tutorial/05-add-node-app.md b/docs/shared/angular-tutorial/05-add-node-app.md index c008dda360..d3768e995f 100644 --- a/docs/shared/angular-tutorial/05-add-node-app.md +++ b/docs/shared/angular-tutorial/05-add-node-app.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 5: Add Node Application Implementing an API - + The requests fail because the API has not been created yet. Using Nx you can develop node applications next to your Angular applications. You can use same commands to run and test them. You can share code between the backend and the frontend. Use this capability to implement the API service. diff --git a/docs/shared/angular-tutorial/06-proxy.md b/docs/shared/angular-tutorial/06-proxy.md index 21d2acf3e2..54ed196882 100644 --- a/docs/shared/angular-tutorial/06-proxy.md +++ b/docs/shared/angular-tutorial/06-proxy.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 6: Proxy - + You passed `--frontendProject=todos` when creating the node application. What did that argument do? diff --git a/docs/shared/angular-tutorial/07-share-code.md b/docs/shared/angular-tutorial/07-share-code.md index 74a388af70..50c9f41d78 100644 --- a/docs/shared/angular-tutorial/07-share-code.md +++ b/docs/shared/angular-tutorial/07-share-code.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 7: Share Code - + Awesome! The application is working end to end! However, there is a problem. Both the backend and the frontend define the `Todo` interface. The interface is in sync now, but in a real application, over time, it will diverge, and, as a result, runtime errors will creep in. You should share this interface between the backend and the frontend. In Nx, you can do this by creating a library. diff --git a/docs/shared/angular-tutorial/08-create-libs.md b/docs/shared/angular-tutorial/08-create-libs.md index 62072ea947..af7986cec2 100644 --- a/docs/shared/angular-tutorial/08-create-libs.md +++ b/docs/shared/angular-tutorial/08-create-libs.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 8: Create Libs - + Libraries are not just a way to share code in Nx. They are also useful for factoring out code into small units with a well-defined public API. diff --git a/docs/shared/angular-tutorial/09-dep-graph.md b/docs/shared/angular-tutorial/09-dep-graph.md index b0506fddc9..1374169100 100644 --- a/docs/shared/angular-tutorial/09-dep-graph.md +++ b/docs/shared/angular-tutorial/09-dep-graph.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 9: Using the Depedency Graph - + An Nx workspace can contain dozens or hundreds of applications and libraries. As a codebase grows, it becomes more difficult to understand how they depend on each other and the implications of making a particular change. diff --git a/docs/shared/angular-tutorial/10-computation-caching.md b/docs/shared/angular-tutorial/10-computation-caching.md index 64c7f69354..689a1c37f0 100644 --- a/docs/shared/angular-tutorial/10-computation-caching.md +++ b/docs/shared/angular-tutorial/10-computation-caching.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 10: Computation Caching - + Nx has built-in computation caching, which helps drastically improve the performance of the commands. diff --git a/docs/shared/angular-tutorial/11-test-affected-projects.md b/docs/shared/angular-tutorial/11-test-affected-projects.md index e835308b30..755ba4d47b 100644 --- a/docs/shared/angular-tutorial/11-test-affected-projects.md +++ b/docs/shared/angular-tutorial/11-test-affected-projects.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 11: Testing Affected Projects - + Because Nx understands the dependency graph of your workspace, Nx is efficient at retesting and rebuilding your projects. diff --git a/docs/shared/console.md b/docs/shared/console.md index d6fd962da3..8e13ca6ed2 100644 --- a/docs/shared/console.md +++ b/docs/shared/console.md @@ -55,35 +55,35 @@ Even though we started building Nx Console as a tool for experts, we also aimed The `Generate` action allows you to choose a generator and then opens a form listing out all the options for that generator. As you make changes to the form, the generator is executed in `--dry-run` mode in a terminal so you can preview the results of running the generator in real time. - + **From the Command Palette** You can also launch the `Generate` action from the Command Palette (`⇧⌘P`) by selecting `nx: generate (ui)`. - + You can even construct the generator options while staying entirely within the Command Palette. Use `⇧⌘P` to open the Command Palette, then select `nx: generate`. After choosing a generator, select any of the listed options to modify the generator command. When you're satisfied with the constructed command, choose the `Execute` command at the top of the list. - + #### Run The `Run` action allows you to choose an executor command and then opens a form listing out all the options for that executor. The frequently used executor commands `build`, `serve`, `test`, `e2e` and `lint` also have their own dedicated actions. - + **From the Command Palette** You can also construct the executor command options while staying entirely within the Command Palette. Use `⇧⌘P` to open the Command Palette, then select `nx: test`. After choosing a project, select any of the listed options to modify the executor command options. When you're satisfied with the constructed command, choose the `Execute` command at the top of the list. - + #### Common Nx Commands You can also launch other common Nx commands with the options listed out in the Command Palette. - + #### Projects @@ -95,7 +95,7 @@ Clicking the  icon next to a project reve Clicking the  icon next to an executor command executes that command without prompting for options. - + #### Streamlining diff --git a/docs/shared/getting-started/nx-and-angular.md b/docs/shared/getting-started/nx-and-angular.md index d5476aa869..71c7934152 100644 --- a/docs/shared/getting-started/nx-and-angular.md +++ b/docs/shared/getting-started/nx-and-angular.md @@ -25,7 +25,7 @@ modern tools and libraries like [Jest](/jest/overview), [Cypress](/cypress/overv ### 10-min Video Overview - + Check out the following to get started: diff --git a/docs/shared/getting-started/nx-and-react.md b/docs/shared/getting-started/nx-and-react.md index 880cf1b0ef..ef1064ad00 100644 --- a/docs/shared/getting-started/nx-and-react.md +++ b/docs/shared/getting-started/nx-and-react.md @@ -25,7 +25,7 @@ frameworks like [Gatsby](/gatsby/overview), [Next.js](/guides/nextjs), Remix, an ### 10-min Video Overview - + Check out the following to get started: diff --git a/docs/shared/guides/nx-and-ts.md b/docs/shared/guides/nx-and-ts.md index 4e4dde82f1..7370247af5 100644 --- a/docs/shared/guides/nx-and-ts.md +++ b/docs/shared/guides/nx-and-ts.md @@ -6,7 +6,7 @@ The `@nrwl/js` package ships with corresponding generators and executors that be > Note, you can also opt-out of TypeScript and use plain JavaScript by passing the `--js` flag to the generators. - + `@nrwl/js` is particularly useful if you want to diff --git a/docs/shared/guides/storybook/migrate-webpack-final-react.md b/docs/shared/guides/storybook/migrate-webpack-final-react.md index 9caec1350d..93387384fa 100644 --- a/docs/shared/guides/storybook/migrate-webpack-final-react.md +++ b/docs/shared/guides/storybook/migrate-webpack-final-react.md @@ -2,7 +2,7 @@ Nx 12.7 comes with a dedicated Storybook preset for React which drammatically simplifies the Storybook setup and makes sure that Storybook uses the same webpack configuration as your React applications running within an Nx workspace. - + Here are the main differences to the previous versions of Nx: diff --git a/docs/shared/migration/adding-to-monorepo.md b/docs/shared/migration/adding-to-monorepo.md index 0f763fb851..9bbecca402 100644 --- a/docs/shared/migration/adding-to-monorepo.md +++ b/docs/shared/migration/adding-to-monorepo.md @@ -12,7 +12,7 @@ npx add-nx-to-monorepo Watch this 3-min video to see how the command works and what next steps are: - + `npx add-nx-to-monorepo` does the following: @@ -94,7 +94,7 @@ tools because it looks not just at the changed files but also at the nature of t Run `nx dep-graph` to see a visualization of your workspace. `nx affected:dep-graph` shows what is affected by your commit. `nx dep-graph --watch` watches your workspace for changes and updates the visualization. - + ### GitHub integration @@ -215,12 +215,12 @@ If you want to disable the source code analysis, to make Nx match Lerna, add the ### Speeding Up Facebook React Monorepo with Nx - + ### Speeding Up Remotion Monorepo with Nx - + ### Speeding Up Storybook Monorepo with Nx - + diff --git a/docs/shared/migration/migration-cra.md b/docs/shared/migration/migration-cra.md index 6a8782955b..99d15aeee8 100644 --- a/docs/shared/migration/migration-cra.md +++ b/docs/shared/migration/migration-cra.md @@ -25,7 +25,7 @@ Start from [the commands mentioned in this article](https://nx.dev/migration/mig See it in action: - + ## Doing the migration manually diff --git a/docs/shared/node-tutorial/01-create-application.md b/docs/shared/node-tutorial/01-create-application.md index cc2419cec7..928e01b5c9 100644 --- a/docs/shared/node-tutorial/01-create-application.md +++ b/docs/shared/node-tutorial/01-create-application.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 1: Create Application - + In this tutorial you use Nx to build a server application out of common libraries using modern technologies. diff --git a/docs/shared/node-tutorial/02-display-todos.md b/docs/shared/node-tutorial/02-display-todos.md index 6477d2d921..1a6eced42e 100644 --- a/docs/shared/node-tutorial/02-display-todos.md +++ b/docs/shared/node-tutorial/02-display-todos.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 2: Display todos - + Great! you now have a server application set up to show some data when going to the `/api` route. diff --git a/docs/shared/node-tutorial/03-share-code.md b/docs/shared/node-tutorial/03-share-code.md index c36f210417..628ddc6cfd 100644 --- a/docs/shared/node-tutorial/03-share-code.md +++ b/docs/shared/node-tutorial/03-share-code.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 3: Share Code - + Awesome! The application is working as expected! diff --git a/docs/shared/node-tutorial/04-create-libs.md b/docs/shared/node-tutorial/04-create-libs.md index bf08085503..0f94591928 100644 --- a/docs/shared/node-tutorial/04-create-libs.md +++ b/docs/shared/node-tutorial/04-create-libs.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 4: Create Libraries - + Libraries are not just a way to share code in Nx. They are also useful for factoring out code into small units with a well-defined public API. diff --git a/docs/shared/node-tutorial/05-dep-graph.md b/docs/shared/node-tutorial/05-dep-graph.md index a1cfde217c..1b567080c5 100644 --- a/docs/shared/node-tutorial/05-dep-graph.md +++ b/docs/shared/node-tutorial/05-dep-graph.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 5: Dep Graph - + An Nx workspace can contain dozens or hundreds of applications and libraries. As a codebase grows, it becomes more difficult to understand how they depend on each other and the implications of making a particular change. diff --git a/docs/shared/node-tutorial/06-computation-caching.md b/docs/shared/node-tutorial/06-computation-caching.md index ac0ebbfd47..6eb4842580 100644 --- a/docs/shared/node-tutorial/06-computation-caching.md +++ b/docs/shared/node-tutorial/06-computation-caching.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 6: Computation Caching - + Nx has built-in computation caching, which drastically improves the performance of the commands. diff --git a/docs/shared/node-tutorial/07-test-affected-projects.md b/docs/shared/node-tutorial/07-test-affected-projects.md index 3e2b219a52..d8555e7e81 100644 --- a/docs/shared/node-tutorial/07-test-affected-projects.md +++ b/docs/shared/node-tutorial/07-test-affected-projects.md @@ -1,6 +1,6 @@ # Node Nx Tutorial - Step 7: Test Affected Projects - + In addition to supporting computation caching, Nx scales your development by doing code change analysis to see what apps or libraries are affected by a particular pull request. diff --git a/docs/shared/nx-core.md b/docs/shared/nx-core.md index 396c218b7a..d4bcc64444 100644 --- a/docs/shared/nx-core.md +++ b/docs/shared/nx-core.md @@ -195,4 +195,4 @@ what `build` means. It can be an npm script, a custom Nx executor, a Gradle task As you can see, the core of Nx is generic, simple, and unobtrusive. Nx Plugins are completely optional, but they can really level up your developer experience. Watch this video to see the plugins in action. - + diff --git a/docs/shared/nx-plugin.md b/docs/shared/nx-plugin.md index 7cd6dd1eed..88d91abbe6 100644 --- a/docs/shared/nx-plugin.md +++ b/docs/shared/nx-plugin.md @@ -6,7 +6,7 @@ Nx plugins are npm packages that contain generators and executors to extend a Nx > A list of custom plugins created by the community is found in the [Community](/community) section. > Plugins are written using Nx Devkit. **Read [Nx Devkit](/getting-started/nx-devkit) for more information.** - + ## Generating a Plugin diff --git a/docs/shared/react-tutorial/01-create-application.md b/docs/shared/react-tutorial/01-create-application.md index 901af257a8..b7eff6dbf2 100644 --- a/docs/shared/react-tutorial/01-create-application.md +++ b/docs/shared/react-tutorial/01-create-application.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 1: Create Application - + In this tutorial you use Nx to build a full-stack application out of common libraries using modern technologies. diff --git a/docs/shared/react-tutorial/02-add-e2e-test.md b/docs/shared/react-tutorial/02-add-e2e-test.md index 9747d12b80..4c405a359d 100644 --- a/docs/shared/react-tutorial/02-add-e2e-test.md +++ b/docs/shared/react-tutorial/02-add-e2e-test.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 2: Add E2E Tests - + By default, Nx uses [Cypress](https://cypress.io) to run E2E tests. diff --git a/docs/shared/react-tutorial/03-display-todos.md b/docs/shared/react-tutorial/03-display-todos.md index 95fc83f453..a546ab29a5 100644 --- a/docs/shared/react-tutorial/03-display-todos.md +++ b/docs/shared/react-tutorial/03-display-todos.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 3: Display Todos - + Great! You have a failing E2E test. Now you can make it pass! diff --git a/docs/shared/react-tutorial/04-connect-to-api.md b/docs/shared/react-tutorial/04-connect-to-api.md index 00c5d19c56..a801517ab2 100644 --- a/docs/shared/react-tutorial/04-connect-to-api.md +++ b/docs/shared/react-tutorial/04-connect-to-api.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 4: Connect to an API - + Real-world applications do not live in isolation — they need APIs to talk to. Setup your app to talk to an API. diff --git a/docs/shared/react-tutorial/05-add-node-app.md b/docs/shared/react-tutorial/05-add-node-app.md index 10f2f778f4..5cee68c09b 100644 --- a/docs/shared/react-tutorial/05-add-node-app.md +++ b/docs/shared/react-tutorial/05-add-node-app.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 5: Add Node Application Implementing API - + The requests fail because the API has not been created yet. Using Nx you develop node applications next to your React applications. You can use same commands to run and test them. You share code between the backend and the frontend. Use this capability to implement the API service. diff --git a/docs/shared/react-tutorial/06-proxy.md b/docs/shared/react-tutorial/06-proxy.md index b5d543cbce..1bb46ef15e 100644 --- a/docs/shared/react-tutorial/06-proxy.md +++ b/docs/shared/react-tutorial/06-proxy.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 6: Proxy Configuration - + You passed `--frontendProject=todos` when creating the node application. What did that argument do? diff --git a/docs/shared/react-tutorial/07-share-code.md b/docs/shared/react-tutorial/07-share-code.md index 1fc90bafba..3c1772e292 100644 --- a/docs/shared/react-tutorial/07-share-code.md +++ b/docs/shared/react-tutorial/07-share-code.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 7: Share Code - + Awesome! The application is working end to end! However, there is a problem. Both the backend and the frontend define the `Todo` interface. The interface is in sync now, but in a real application, over time, it diverges, and, as a result, runtime errors creep in. You should share this interface between the backend and the frontend. In Nx, you do this by creating a library. diff --git a/docs/shared/react-tutorial/08-create-libs.md b/docs/shared/react-tutorial/08-create-libs.md index e270bbe655..4cf79bc9b2 100644 --- a/docs/shared/react-tutorial/08-create-libs.md +++ b/docs/shared/react-tutorial/08-create-libs.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 8: Create Libs - + Libraries are not just a way to share code in Nx. They are also useful for factoring out code into small units with a well-defined public API. diff --git a/docs/shared/react-tutorial/09-dep-graph.md b/docs/shared/react-tutorial/09-dep-graph.md index f8a6b2c1ce..fef2e7ae7f 100644 --- a/docs/shared/react-tutorial/09-dep-graph.md +++ b/docs/shared/react-tutorial/09-dep-graph.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 9: Dep Graph - + An Nx workspace can contain dozens or hundreds of applications and libraries. As a codebase grows, it can be difficult to understand how they depend on each other and the implications of making a particular change. diff --git a/docs/shared/react-tutorial/10-computation-caching.md b/docs/shared/react-tutorial/10-computation-caching.md index 0291e34a32..4f460f9ccd 100644 --- a/docs/shared/react-tutorial/10-computation-caching.md +++ b/docs/shared/react-tutorial/10-computation-caching.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 10: Computation Caching - + Nx has built-in computation caching, which helps drastically improve the performance of the commands. diff --git a/docs/shared/react-tutorial/11-test-affected-projects.md b/docs/shared/react-tutorial/11-test-affected-projects.md index 9cf9f70ab9..1e5dfae134 100644 --- a/docs/shared/react-tutorial/11-test-affected-projects.md +++ b/docs/shared/react-tutorial/11-test-affected-projects.md @@ -1,6 +1,6 @@ # React Nx Tutorial - Step 11: Test Affected Projects - + In addition to supporting computation caching, Nx scales your development by doing code change analysis to see what is affected by a particular pull request. diff --git a/docs/shared/workspace/structure/dependency-graph.md b/docs/shared/workspace/structure/dependency-graph.md index fe27008705..0689f5b90a 100644 --- a/docs/shared/workspace/structure/dependency-graph.md +++ b/docs/shared/workspace/structure/dependency-graph.md @@ -2,7 +2,7 @@ To be able to support the monorepo-style development, the tools must know how different projects in your workspace depend on each other. Nx uses advanced code analysis to construct this dependency graph. And it gives you a way to explore it: - + ## How the Project Graph is Built diff --git a/nx-dev/nx-dev/pages/community.tsx b/nx-dev/nx-dev/pages/community.tsx index f8b86e9846..493f085cda 100644 --- a/nx-dev/nx-dev/pages/community.tsx +++ b/nx-dev/nx-dev/pages/community.tsx @@ -242,6 +242,7 @@ export function Community(props: CommunityProps) { Get started with building your own plugin!
+ In this tutorial you use Nx to build a full-stack application out of common libraries using modern technologies like Cypress and Nest. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/02-add-e2e-test.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/02-add-e2e-test.md index 4b85bf5719..58bef5d334 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/02-add-e2e-test.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/02-add-e2e-test.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 2: Add E2E Tests - + By default, Nx uses [Cypress](/cypress/overview) to run E2E tests. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/03-display-todos.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/03-display-todos.md index 82b0603067..c3e46d00de 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/03-display-todos.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/03-display-todos.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 3: Display Todos - + Great! You have a failing E2E test. Now you can make it pass! diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/04-connect-to-api.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/04-connect-to-api.md index 6c515847c6..bb79a5386f 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/04-connect-to-api.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/04-connect-to-api.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 4: Connect to an API - + Real-world applications do not live in isolation — they need APIs to talk to. Setup your app to talk to an API. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/05-add-node-app.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/05-add-node-app.md index c008dda360..d3768e995f 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/05-add-node-app.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/05-add-node-app.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 5: Add Node Application Implementing an API - + The requests fail because the API has not been created yet. Using Nx you can develop node applications next to your Angular applications. You can use same commands to run and test them. You can share code between the backend and the frontend. Use this capability to implement the API service. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/06-proxy.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/06-proxy.md index 21d2acf3e2..54ed196882 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/06-proxy.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/06-proxy.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 6: Proxy - + You passed `--frontendProject=todos` when creating the node application. What did that argument do? diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/07-share-code.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/07-share-code.md index 74a388af70..50c9f41d78 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/07-share-code.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/07-share-code.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 7: Share Code - + Awesome! The application is working end to end! However, there is a problem. Both the backend and the frontend define the `Todo` interface. The interface is in sync now, but in a real application, over time, it will diverge, and, as a result, runtime errors will creep in. You should share this interface between the backend and the frontend. In Nx, you can do this by creating a library. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/08-create-libs.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/08-create-libs.md index 62072ea947..af7986cec2 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/08-create-libs.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/08-create-libs.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 8: Create Libs - + Libraries are not just a way to share code in Nx. They are also useful for factoring out code into small units with a well-defined public API. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/09-dep-graph.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/09-dep-graph.md index b0506fddc9..1374169100 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/09-dep-graph.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/09-dep-graph.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 9: Using the Depedency Graph - + An Nx workspace can contain dozens or hundreds of applications and libraries. As a codebase grows, it becomes more difficult to understand how they depend on each other and the implications of making a particular change. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/10-computation-caching.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/10-computation-caching.md index 64c7f69354..689a1c37f0 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/10-computation-caching.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/10-computation-caching.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 10: Computation Caching - + Nx has built-in computation caching, which helps drastically improve the performance of the commands. diff --git a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/11-test-affected-projects.md b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/11-test-affected-projects.md index e835308b30..755ba4d47b 100644 --- a/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/11-test-affected-projects.md +++ b/nx-dev/nx-dev/public/documentation/shared/angular-tutorial/11-test-affected-projects.md @@ -1,6 +1,6 @@ # Angular Nx Tutorial - Step 11: Testing Affected Projects - + Because Nx understands the dependency graph of your workspace, Nx is efficient at retesting and rebuilding your projects. diff --git a/nx-dev/nx-dev/public/documentation/shared/console.md b/nx-dev/nx-dev/public/documentation/shared/console.md index d6fd962da3..8e13ca6ed2 100644 --- a/nx-dev/nx-dev/public/documentation/shared/console.md +++ b/nx-dev/nx-dev/public/documentation/shared/console.md @@ -55,35 +55,35 @@ Even though we started building Nx Console as a tool for experts, we also aimed The `Generate` action allows you to choose a generator and then opens a form listing out all the options for that generator. As you make changes to the form, the generator is executed in `--dry-run` mode in a terminal so you can preview the results of running the generator in real time. - + **From the Command Palette** You can also launch the `Generate` action from the Command Palette (`⇧⌘P`) by selecting `nx: generate (ui)`. - + You can even construct the generator options while staying entirely within the Command Palette. Use `⇧⌘P` to open the Command Palette, then select `nx: generate`. After choosing a generator, select any of the listed options to modify the generator command. When you're satisfied with the constructed command, choose the `Execute` command at the top of the list. - + #### Run The `Run` action allows you to choose an executor command and then opens a form listing out all the options for that executor. The frequently used executor commands `build`, `serve`, `test`, `e2e` and `lint` also have their own dedicated actions. - + **From the Command Palette** You can also construct the executor command options while staying entirely within the Command Palette. Use `⇧⌘P` to open the Command Palette, then select `nx: test`. After choosing a project, select any of the listed options to modify the executor command options. When you're satisfied with the constructed command, choose the `Execute` command at the top of the list. - + #### Common Nx Commands You can also launch other common Nx commands with the options listed out in the Command Palette. - + #### Projects @@ -95,7 +95,7 @@ Clicking the  icon next to a project reve Clicking the  icon next to an executor command executes that command without prompting for options. - + #### Streamlining diff --git a/nx-dev/nx-dev/public/documentation/shared/detox-logo.png b/nx-dev/nx-dev/public/documentation/shared/detox-logo.png index 0ccc1777fd4028b816de1003fabd8186d07ac527..e09e2bf3c28973e911429168d7e11058c4bcb247 100644 GIT binary patch literal 37891 zcmV*TKwQ6xP)^}1t6{Y+2&rqLGo&NAwD9nPr)Q7tTb5k$l|RS$v7O{wa$ftP{25cFyhYNN+l zavbrhs0ac<2c$H;X!uJI-Zd{Y4cxZPllgFtXpC8FfoS#6fN=p#`Jc*Hd#c<6ybpMX zh
6v~Mr=7OIca~7Q?GRC+ghdc5eY7m92ve%O
z2>5ytUIMyDRU(uGhT Y+a5&)c{CaruH##gm~R;`_*&wM$+kz-?Mn$@5_RwkiLr_zysWHdFaj1S=3U;S+)
zcEsUUqw=$*cE(FycpD%3@GJQ1zx$hLKr0Y2HpcIMxO^;6zv;z%@{V_%_Vu>qWUo*X
z{bO+n{V(qwp!HU>v98|_RTU54{54-eJ+0x2V$~=Ut=3!dD}ljUufAe*ac;<^aFIjB
z_o!I)JVD*_A~-QPG0|FC{w<@wi5AYGlRjK4SWO-HB3x_u|8d{kFkY19V66N-Oy1Gx
z%Zta*0l&;4U%CIpS`N=2<{Q8M8@TPc&t$1Rz(f&$^=C550vQY(KmH@H=h@GE7W)qz
zpx5vDcDs%D{x5pH-d(+3*Qki^PHzq@&YJ4VX9Jyc$y21$>uDll@+|vOqtUoyVR140
zp6~qjox6ALm@ZtXGrrdEN8x3T^UvFkDtz!`pI{;yU`GD&WqM9!ryq;rAKDtqg Nb<}ZGmqM3g9CFa#emwgnvtj3prtFp(=)Y@2RB;^@h;vIlge;gM920
zpW;(@-@}(4dW55ki#X@7#*!rAu*Oog3m!j%e7PY8Mu1zLJFWz0^*0rJ{t
z;g?YTH4&LxYPWgebD#BZ#qe!0Vc>-J=ukj*boj6%uQ--}uRPXE2IzUnJWMCUYPuUv
zYmKvdZ_az1bHk%3k0KtG&&uB#1J;~aIDm$tp<+b%)4%@PtALjxG70*xQUABy#Ur)9
z`@g@THnHN=@yb{Kz-gF~?(C;Qf
z{{=u#h?7+BVf6QC9OK+HaH{g&!fWu|852tqmO*&3+BE{V_Fl+yrN|wk9xbb?twaA)
zRqFK`4?XfIpT6fF>h;h}LX`~F7a1}C{cFDShkwL7XPXl
Ajn;}W8zW44!r8!Iy#VR&LFv@=)R`*$hoFCy*;i57KwD8BZ)ocj0+lA!0DZ3L{
z5y=I4y@>q2S7lJB)>9eI
&$)7lYV#>udntoktwcdGCN9{fy!BMH88BV5bx8ghlES?9ql0Ul$K2iX* e`tR0D&%Sc4TDO{z>w|N)hK|wiq
-gyZo>9N@FGdbWw!Yf@G?ka$Mx{A7_P*g(WSc5)^m& zLb}e$vihedMw62zlM^2zUHC&0?Xy9(b*qM#DXYvTp%F>>+0UGtBF^InKIni${ZB@Q zn5r&U{(so`lF@6f*i7*q$JfjlUcEhGDMpn%*cW!!!u87%5vNnvE2)S`pKT_?>luN4 zi)Ag%!1a#yii#*IKHQZW5wWWJ(V}qA-Mf4C)#vTq`FK4|lK!A@h4Ud=1<~8C-M(qD z$D1B$66Qbz#0BwFKMcG+ihU=|B}&dv?P42>t;Pi+t9(Da_iiy@48c`?3KSZxcqIVt z3&1}{(4Vw5b$sqdzOG$0IFy4!XglS((}ve>x6t+2Tp_E9pDa6MoXeG>X9OOZ$Mqdk zDF5|>H2Coaj^x5ZAzaWH4<$QoRFPoHk{!*|Fx^Oo@tIDQhho^6^MnSPLrqo +!tBDPpX#?|8?1-M%OG zdn1T7qBmZ;jiseRmX>ll9VeYmVcYE@iH8mEIXWFD?e>Q3qrhfo7F4L+c9nWdYE;#M z`7O{N5TO7$p(ZX>J+GJPm>GJtMB11T`M2uz>i{cOyb;x%+iE9r*%j336rw5^6VzJo z?d>Am#0G@Zm77Rvg2?%i1;dNBd1e!(?_s7U{Q4sWKlUYuowT^rgq)me$-gm*@F}gG zxx?lj*LA#f8s2tIot_J8xn`929WmqzFWlxwBIjvZK^kvZMCfOp+>Jj^=anZGGl~en zm?GpwFsl3u@H49NNgxAnL@=nh5Ob`eYW13PYD9ydh8YU$FoXw&p2ZR>37gzw4lX)p z1f6IYv7)-;6xYh8bH0)Smk1&As^USci2p$m`OT1!%eqQelw}J`j<*irQPva%{WUQl zQQJIK;DvLC^7Gys>%9T=_cp@q5JWs3)~sDB0;U?V{Z=B-$(0{GC*hVUa9xjyA|yHC z7;?I*A1{8E1#ap3o*kn6=B4Q{SjI@u?|L4l?1r|eIMzgtTtyW>ZPoF#BEH1zoul_6ElX9#F*n z`c0~QKou)S{7Jg_R=KCrZX_|rU;bP~9z7MeLx}7MZON hor(Q*DJyev{ z5=(Qmj*@C?)(ipYgEbQ?{MUZr@9!5{cZx?O7Ex1fx_nA+x_p9m+ljTo@E7b3;#8Rs z;ok$FSLK7in}I(EJ`LOf`c1p$Qa95uXsp>S>gB+pllPLHQSgPyG((jwIzJOt{m-g= zy{at4MO(UnhoB2lB>`lE!qXl2ie+ 7=G?T3mr$2xxoFZ04%6*JcWTH z8F+lV;HNK0c-1b;Vy+}IY6NNpwx@774-C_Yj#Zf7*fmjkV9Rp%sztcGD)q#$ce>_l zR;<9MFW6T9A5Xtzf{B{RRF%0_!p)aW>P?r2CdonFQM?a@!bB*H(VIl{ldAlJs-7z% z I%40Xih4NFb!fyjF zkC`LoWSH{73<|}2MPhF38o*Ojog#?{4}rc2xF4{@3En+-{8DcxLhW`T4C{b$IdG?l zHcw>AtH2Wpz`K3X@Ms@iG^b44P#d#S%`e<4(6qwW-8tYN4k}5@QWz7PiZfcls^C1S z_v9VNH=kqqlWS^pot7n~hUc}Sbe! aOHWanRuL?4uLyq^ zpXs_3g%WsP1tY-;`r)GicrVzd%p^)4K{@0UGP?gl;rFhoaoq$IO9g4>kbV*RG{;xd zcO(NxzF6=zyA1#5>KbLda@99lrZr6^%5!EziNH^{4K`;OQ90+6WqnoU6_6@OeA0 zD%Qv!P1o%^QzQ1Wa~ggzcVobd@t+ZRlBi0d$}3dmuSKMxp$AUFvfVLW+W<*wB?q4E zz5a#Z)2yeesA%EYKc8`;bXI_`q=^Zup*FuGa6U0fBDPhNKdV`}&MU9&WqMaX^WwZF zF_u!|ChjTg>xBPH*c8Qz=#s$CV$7|(x2KPwSVf(pBBHuu$Hof)aWkndp5KWA+Ht*! zRp2G@^?gSThjMuFoU$!dGA~i|8*zowiDN{_ys|A3-um=9H%trpVgbD(0xulCQ&4mq z-*Z92pIu)cRt78k7F0Q^NNDx7r=~n_*7Ny}aQmXcqL^Vy(WwJ4B+v?q9=BXXWfJ4>$t{zL>DE9xB=3)YYtBZaEI$UFJ9w1KL} zPE6Fw=|3SlE5y#_bo8hrO{s{XSg+~}kIxECjBv9mUkiF0@DyNX#QKJ(Spe<^`5WMm z1@`MGhp=q_sJpkPCpx@!Q@dTnR&IuHUH@JYxs7AE9jd@fMd^FteMbWrZri3bP2hOT zfw%G;;8bZCq2rbRa$nA$KH)f&Y3P|QaP5@gCoWF;=Dn7V8`V2mjoXxpd1zl9GArJH z)UYE}o;?$C`tnL9`zVe1#Aq0!>6BjPk6DgUQ74E6{u9d2Atb64#vr>YVqm9Jlw6M_ zL7k(e$_G{DX;GC~$A%bAFvvYwp }KjwH6nZw!%ZNIXke>* zw%5Kqz*o|NBRT3-%94W`3ile-XayBy?~ZWO4 pJX2D44Fy4{BwmUdhHVRZk#qR?CFOZmoLY>O4 zx!M@l^Byrq3?aDURuOq$41{0z`Y(-HB0_iIabC+_4gV4J=RuOCj&YL{ZruQUQh;wX z0m{K6IqF4rZSUy8`3cdG4=BsLP6}u&kgcLdFr0Qyw;C-iIgCLFqD=w(JK(>9x?uDf zE&398`!eDEM+}!Vm1j(Q3N7PCPi!%l6EO_vi p68*Q*7T~EsDa^DT|d)1Ba#O}EwdJa6n52zOSFRJ`|AmjuJx@+$EwuH0F z+WF;5VWE`K6g&?6@u+V_0A4K`F+OnAaMgtJ)G^=@7VlXCyy2KshOe0q#gv}E&GXnm zc+b3{=fiz@9RcrnETQlm6L^4&d6U1ZsvlO>BuNu5R;U6Gf} &i>!g4p@adErndvChlL7`+^T)q=*yaW7~Lz&Ien&xZ&le4gbP ztINbqS8`?>H;LDX$Q6}9jgz?FvJIS+t;U65#M_JNH^mz>v2yuw&$k7>O(pfg&&1sz z{}4qt=Mg@<5c-%ued@^pypo3gAPFI7nGeanFPc;4Qh4_f!$bW5Kv)}qr8wu@@r*12 z@C&Luu1W&p#RxlRmvg@ 2Jl7=E>)bH|Wh Q?>z>J zkDsSn27VQa4QTWuY04W1xeuNcR4~ahu9p)c3Io?um9JNoD@D|^K~rkXkQ0^}GS95l zcvh_zQjl1OC3OpYn?w^6VZSdIz{G^UI~D!l(L&^b9{$EDB{gM1B7M>TuS%u !3dSIBQYA5S4FU|%ZafCzD=be_p{_sPk7_QePKrmd+TM$STtmu>7kw^ zRShu^3^7+tD7VabKGzZMSTrGWd6=mYD05ozORhL=si(b3Ro|zoiA}_3TF9>LE8}wG zwM|Tbc^=4f%Lj1k_ct1IC9ly$Ir^1JqeyJc6(}5-9~|>sTj1M7nwT&l)86Aq3#b); z^TdEJUep|Ks(Ch9HBW|CGsIlnRBqko`BG2#*rJIMH34mYS#8x74TM5k;eJGaPGTCE zD->C!2|&B;N;gRKM(|znb>r$kM5^k2@s6)_gXCtPTTn47$8H<51-?xu(Z4+;{PW|r z }J_|*&%PgbfLVuS#|^Xkg2vz`b06%I(y^+tZaWhYX~MCbnyj4YZE zG7#9cePxS{DDa7@6d=0^@t1HK)_O(n3r$wS+b=Hz`{g(m&n@t6GEGieUcJk6xQ~CJ zEgbIh2Z=E6W6<}Loav2Gc`p(}+6G=YrydM35A=jjwL?}!zBbqM8l=1TbQkUKdMCyh z9D 1DP>iI-FgreEf1p!`BEASaH@?R2bFe1*xmNdt?Oh}$o zeWj|_VjYMq}7xXsNw*Sm5gzOm_=>XNazu73~fn9p+-l8{!8vuu z+A6ldcZTQ%yQHjPR93?Jh$?Sq1H0Ou&6F3R@>&l<)2g~ zNv3=#Qgn<|oe<0{63d8O0rIRkm#1}&$HKadbV~tvicMrsl7`BBPaIu6)NBiUXONNv zjXtO{4)G1~qc10;=a8ygFOQ8YGcTN1Q+A}v7rI6zaQ;US`DwAi4VW!~IgZ^va>{7* z&=-K#qLuSB-Vd>E>}VK-0ZgG>Rf;q=TYWFx0^b>=Mk9$)9^!jFFRhk+E65!&DEP~Y z`&FS+#&8Z@5x`TLo Jn?7~;PO`cOX$yR3m`ba7vuSL%>r|CDmYoVV{92UdI(3cXwBG5kFjC=0S?U0} z3OiGEGZyp3p8V ugvC!|`Ytmo5Kul@@}}%$lO_ z33US6qSHg6ygcGP3D5@K1pHF0a&}VX4oVUkRTC=(rIN2!YVEFC5n34s;Hipoc`?dT z9|lp!%N2-R-0(m4)93kz3FR0HuU2+%KmHOei$ujSzND-;xq*-9n6xZ{v;5!1rsijW z1=eW%`emuuKN)FRotNF9cd5#*wQC5iq{;#uE{GyF2^|!kK@kicg^QWxrOpyFvlA=S ztWZx3^+c#8W_TX2D?z>9F&(EOS!~zFpQP|@U+Rl}`Z<07$M?5**_@7*09=iFJ&*T3 z 1dNI0> zxQGBgak8?T(H8j55^A+9?Y1L!`a+dAfxJ#cTg#XB@F7Q$umoK<^Bn0GEcV^VqA1~W zE9)0?Vv`Gcd1zE}xLr_74ATw6Y%8Hv3+vi>9h%!$1K^lzVU-r$q3SIH{D><1vqBOJ z#epLY`KF84CvCT#%2a}hLw X=&w-hgXnde};V4+vwHRvGLj9kB^-d0MDs{*C+UJ2N0<>}0M4z@jq zI|Wk>%Z|x}$+{hK!t#gJ@s(#B T_H19EUYaFN_Jp>eQ{s7~2BhSwyXt)lSEas#vSO5%{jy%%jRNFea2 W$|8Eh7z sXLP&%g zE^4TqN^qHCR}-y|MJol}(HW|J3fFnw@|$~-1})I8>PiT2IoZ!LnwUtUz98OvBrkZo zs(u&{YsBwc%z5-k2I!E}s4Ckh5-!_W=YqK!Qw=++gXy(modjY#?bVLaVhg`1e{YSj zt!24rN1aP{G?;DL;pZX&guTr3z@a_|+XdEyNS54 `)v!#|EeDoz4lIR~nbM^(-zn&2o?TNZHtK#dWDoj%D31XNNa5w= z`k4bfXT~!-IdG6C?|EYS;{BPh>pw?Gr zTS7fmygyEF#BkkEO-7kr>w8;b=UGZ3q7NP(aL0Y^ l D%@Bab2$}QjTgqJF)f$m^eEP`IpHsw$5ho&It CntP$ zy9%fjJt6DKc{^)NP9@62eIc*tX4Pq_>TJd+-GOkZ9X1ndL#M|k!W@R}2s2_Zu{vmC zLaD&R9bu4Hnv}9q2aLc}uW+zn=YoTytAtl?f$uD)&pp +(HEM|ro$f|NbEoz|J3m}Y bGp^uwvmU>a z_4wOCpT74@8^Nh!MKJ>N9Y)2TDuD}CvM37 bxsl81m1^r60Rw2)@5 zFl}M?>^QI6;(TW@-F#UKV+@~oxZ`JAHaTxLy&w3wxZuxtrh7GGAuBwpN@9dvQz=HI zP*wB)w|DkIl3nF_|2^m2?w 6KUK;S$s^oVkGxj=1tW(hO4B}kjWqvK$k#Q=BXDji_LF(PG zkT}#ezOk~k&7~#Z_c)xKy=ZS&i$fn5e(ry(jJ!wE(R#n^c_ZL_@8-1HY_Lvd^a>aE z4~xP{e|q&|=O3S%MwwZ>@6T5B#HrG*I(Xq-Eb};eVwJ{^tK(hgp(oeN2fniQqpQ>S zcM1npqIlWBST2l*#@ZrB*rc1YN=(XJG+97=Ek*uTn)1w2pQ5{fB@rXU04W$w1&oIL z@+|PBD$tieMoeN_QLp{Bo~M9^)*Sl_<2A!HynQKgWRM_ioor~y_dSl=uJ7~mLkmo% zW^2FsCf6%e0sk~Nyga|^^0{|2Z5UcMIw~=lA9npS`-jEP7lq2hSN5HO9bD{i>kY$8 zI@SYU9%qBKI=GlwwLB cj}QRkLfw%HA}`gi2u8~MNt}n)hT%wPT&pxNtp4} zut(twLbTk%9?4&82~spXjx(Je?^!FK)S%A*021a&L_t*P&6&VVD`2jz+sG!MC#H^5 zm2~sKh%j`5j%3^Cdt37D0t|=V%uHsMa>TRyfcL_NE%9Z=7VXVyQy6xxjVu}V);)dy z=%ljZ
zud9$Bwl zah2C<(~u+A9vmMECHHk4zUX9^q=s~H{vl#CaGraDc&tkFlqV^w$cDO1H0V0x8 A7ipwBEkw`fjpr4hrj`{N4uLJUu_B?RT8frC0;c&{&dCh z#WhEYx%e^wj)lN6FTj)LiI#w*v&g3inB#LZ+psuICPIR)jMG8 xTom(w 9Us%F zqA)Y%z3m7b0PYcXqf}2vY 8Js#e$*SN6{$JUI8V_vwW#5R&?=XGDmkCfn>6@2zg zCf+Q;9ZQi{^>eD(M7+(?rmZ&OjIOPAz7XK^u9}Dvg~Vqhy|p%N{C3K?7lnD7tLc{E zSPMWQ_>eEsUwQoTVs`C~oh*GQ KFQq`Dpy|n;-Dtt zc_q7I@5Qh4j-FUmPTEWeB^OO{@5AiJF+!bM*Ix)3A*PLn>GNC&mg)+n!J6gnlnWx< zd>UFA*B0=Gz3{p{##OzX=a-3wU(KJ3y0;o(r|V~X=Hyn3=$3rD6r)j53n?K ni% zh2A##z?OWw7^6{PDZ37vnTucr@E?F*$Po(1C2YcPFR)C@l$y1c#A&d*z~14V6?y7j zdG6cGuGrVT*u!z`#25*#uGS s=4C;KuoEAG-rMOYl8f3G=v-igY8JP zoyeGiK{RgZi&-6M3wOQ@-&{@iXX ;O}Ep`%K z+JZHSuhoU0v) 0e6Go&btb-^Ieq%yL!p;H5;oN6uibk$P8wsRI2);6K-IIg3*B9X284?~^j@ zd^wt1gn0+DJZO8si)#&-CA3rY+aO;4Yq^l$`=*h&rYB}8uQ|J(bD5VluRhW3`Dcrc z+iU@yLrcCF2!_KP0kc;fp^j9iVzj>r+zIy4x)xV7`kytLZRY02c4k&gD|0c~aY=7C z+07>Vtzu8lI}Zk7JTYQSJeRpV^Eo*d=7j~sOTq5W>({1UxHGB{Nhu* @F^_p-l~vtmA~7xF zIZ2m)5juYJ69e#*L$^t+iaPCNF6|Ulh7Spw1b$|pc>R)N9P{RRznj;4I~{dS690j^ z5yBNaNRqab>@P56! h$B3fMwZED0Z;gb=kk*f>iSFY OS#_FWe(b;ymydC-#dEE?5EFmxKifvN(ZQA()#%R=GH1bxKYGmls$&-(V zdOE_H;l|@ojK{%)xe${J(Qq!tZqbROzOzo(b7+6>J4QUno81XHL($M);GK0GI4c;; z6VJ?8pUmbASsI`B#CR6$d Fzivw*^0Gf9O*m$>-8OmDG^pHY`wy!0h?6Bao|NA z<97~sdE*|(O3Y$_h0EG4RiHlpS%+%Yd-tWlBn1j#T(N@(MVog1Il%Jrrt#6-^JNqp z+={vb!~qG}-^X-gp3~cwZq7OFni*@888M|T5wE_Ebb77whxRON{N8rABs0-1j6oOH zW}@q1B^p1n$Me5#7VmyC@W4u95{-jB@#baEFI-))T!_=baEM@VV3a?vI#-#~sJ{dB z-x~waWIM;WmV7NPJF=c;3T6x(dRv}JJlo8&@skfRu|A#U>gFc#Qa0C=cTRqFT0Iq$ z?Gc=FT;2@!^mC7DNI8m~iN a_7*xYSYdZmmQLvlfygrYDq7VHn$ZTMeN4sVKOUOTc0+>v$|m* z)iz@u_ (a$v72q$QpT3CgWsf#9DW{ zA>OE$3pO#G9bJL>GUvPcqXia*3qH&E@2tw*M!pu89aV^`o1+KL3GaQ7)PYSuh$=*? zP?2)uW~w8e2Yh|gKO*Tp-nsYRad`R6>tD8 IO zQOR!Iv2wcU5s0hBb62NX+a;wrV-;o6^}DdxYut(0=yhE$6SA$oV08*?WNYeA0N#|6 zGj9j??;PV=^0m0^IQr;BXI57wktE%ilD*r^-b_8KH%GV%cwF!)q(5{{_f=*24d 2;#0&e%v zn ) z&!3_Sp&_74DN1rtpehCXvDaM9M?U+sl36whRpGsaoKoRBHvZPrEbKYJ!1e5PhZp&O zUz;!uNk^{fOC6=jBwcC7XMn5fbWrCr%RE 3JO}^UgEVn4%gO3l(?1 z^2&|RdGPodvZ=ILGK$mdAq;!|$Cd~F_g=EU*LU;goR@%2XWcsLZJLmpgvQfwJQ}Zg z?Bry8(^W%P|g|V5~e<|=`u)WSH%|g=ZG|?->LdRXQiD;u$D(X&~(s+7h%E{HKx`lrS=#gm^ z-TuX%$zccfUD!}@n|8L?l{k8QEeloyJ|&CJb%Fa$`awaghk!TqUH0`0mPZAHj-$5M zCfkdh{n=UQui5a2X_;7=L}no|o<*uiTAxl`jPcK|xpM#atxsmv>e^Ih*qyiRzu;?V z)6N#V5++k22uVIT9|Zr*;0NoeyrL Ctu`T0KYaui%yD>*gJ5`GKag3(}MLtNKtrQPYQVq8y804xssxJ)bq!uquA zNc#23Z1&roqVU~rC&ie! D32*u_~kMbvxH z4+u y5T=R&XB2{FDtnLTF7?ww4_dxpcoHwS~h%Cag7?_(Z8G<6DRZ+OMhC0#&E zz81R`wQrw2ZPNP%ZzoqeU9A*hDVa@Xl`pHx1K(Webx(FX#Vb-Rofu*ygh*M1H8Z=n z@cv)Nn2xQEC$6{9vC*K f-DatvgJ8!w-IjI4(`+O~SC60b+ zRXEXK=vs`aJ1wgZq?GQ;YKW#-6RV!Oy;n~E;D&3iIPvVM@tae!BV|=Bgb>SU>EXip zPpz!4Kb4|sY1sEmqXCPffvt|$RaSu*Q$m(HMWL#S3}-X@{_nr~IbTCdz81R@4<26? z$R@Ly4lOV8l_yWSZpZ&M;4U*e1guCpR(N;M7ry+|Lx=V+D#b|Qy(Kff<@Ouwe|+?W zuDj+CAx2wUpL*{-Wf@|(Q^+uU;fW!bnbGSlaQjVrzoXaClCQ z0ebDrMt1L~pQiA>7C$rZB$oFsrm6})8LC2{sse_Yq}1_+^*S9}pUvbXt9wtst7ysB zV%Os6qhr?BXUY=>QV7Avlt^_M(>v#!lsbh^-Z`69L2}p+9lrQ&f$s)d^0nCY`1lu2 zG7DDQc1g(+a-vgs%&?deciep8J(n$7v}n TMx`$>@Pxtb=Myo au(&u6n;^d+KY(8hAi&QnC@9G JM)KJs#ox4W z?||&Ko}R9f000C6;e!bAxwwM>0umAu0DeJ$pdc>}g4e^_+0*<5ud~PPKNucadsw>L zxq8~UIJ5o4Xl~)+ gDeE z4{<9?fVHEwleM#_2M$)?FRZJri>Hf+t;>Ib`tQg8fdEdmYHELJ{HMG)IsGN!;i&+| ziSb(@|0%SGwzsP_;F-0Di zZDh#)sV&Vc;CK-FBV>} Jq>YQalQ~XgJ129HHNe#w#Lo6tk&^N*jxO#v!Z_}P z{{6bLyu7Bni;bNl?gNi!N)OqT734()Bt%7d1^ER2VOLE}QrX$V)7;t8TKN%>9j6{X zJ3A{$VF_~)3sHU{UJ(m130`3<5dmItesL>a33E$P0dp%cVF@dnKj$C0SbF_*f __c+G{yEqR57&8>v3tVKmd1T6oY*KoJP1);g)|2LkW zq50E$Bp=&(;Oy%CJ9xCL-G0Avv}60nVI<8he+B}O-SVdgSX;6GzHIlOXyAV)!7sEB zTWcKB|HdzVfqA&tctXtGt>r*CZT$~C5Aa{H?_m!9@0tIfneV@0{@*?I|Bw0Ks z>C1oL;YpJQv;BTFko*R@dI|sV&&6OiJk~!)uU?u9`Fnj^Iq=VGg6+Qt<^FdFLp2Eg zA`hhc%gO%|q3`uSoCM?f{uS-&{|@11ip-_3hgq8Uw7*f;LoVtuV2s9-^mG&`RSbTi z>r!9#{!Hj1nRP+vCy> Avn$7M3&LdTUzzHg9v6B^Av`23s{*(^C#xJ8>%mhM!A_^OUMFIw zmUVMJ^0p@n&$ S4{5_wUhMMWsqZJC!3 zv+#WJq^ZepykUl$8>z(U&)P!nP^zjirNu1Nyp BK;wr+o#p% z&h^=FkI68jh@C!DFNj!b|9Iy)g{jWJVYQDPS?)pAOG-iACDNF>f|eL4c>vJt1n5l| zK_oFW)_u%ji^(8hRC=iAAdB958k~ZaSdo3++vww|LVhCUEAm0}9v*8T)lcK(F@KJs z!~kYU*(0KwImVEpaeiO3GWAlM&9~l+1tWuObs$&_=g|S#d4LE1g-q8TnCwVmxn!Fr z>fh9Ox{kKFXf)4C4rzXcGv?OPsEZ{{@Qg7lB@|m?Raj*CywSvTqUnGo;=r&v=Ep_V z(doru(%}=OEKNLVJl3C<2>13*m!iZAV d@O7p0=>Kl;MUgh3lLj!i^QVrj-U zR2XXzRWiJ3N>GpwU-s#@J+Z@L*`Fx>v8Bac&Z%B{y5l39OA(n=MX>JIGZgbL;7>Dm zhm=-D$yC)cmySZjO0hKl$QBRH%~i92ZFa%!>5!j-;Itd|kOG;yO(o`H(|Nk>ADqNN z$1MesDu_;>91G#rw}osW4+4?Q{cULUrp8W52E5j}l+Gx2i;tR&=$EnW`(`}@*a#Y` z(g()JPtvBQCsy#5TJOcA^%dizHrbux&9O;d5bOvT0ymvQP=yg};~(ODge+|0Ky3W1 zre-X!x7SGt?Bx^?#oB f_fwd5^hKArMUUA{+OE$ZpG z2R~?1lz3Amw%A%fQZ?H%?{b`@hRQuu4t$7z_{$CqqD#!KQc}>|ZNe?&=^Wx_#0B#p zxkEDo>SFOuXk-Xphs1tb9)V>W7>xDp+#vYNAx(T-J5{Aet`QGu44!n z4$D;juA3g~t0?OY1L#-{1rWJ0;bXG24H2IEmlZ^YT*770C{)ox95xVS78G(;JeXb3 z6to4`^~74}Y^M4E=Y;Gx$J-jWTD^)4S472{cW(S8Eh6k37%)6O9zQ&d+`Nlg++^`% z;PBYm84g4y&vrX*m1Xrcn1c4gVF&|*v+9Vm?Ret9XDgH(2Jd2|D7`^D@*DS=rXU%$ zZaq-*A;DS?n#sy=`HY}?k)9%CQjzJ!^wxGf$-fRtxqxNXQK M zm1R;%B<6k4;tIlyjQNkzXlc`n?W&oL;|fQMi`N-AZ~bFj=C5UEnFvHxB^-{u$<%?3 znX#qZLL;N;!_D(YFtA3sj5yH#F6y{)=Gp1czf#44pP9;II^rV6 z2^ABEo&j>xPrk$*uk9N}-0tT@_#;hsH_W+pOIhbRZ{lK%aQkOQjht!0Y@kq`YwHu| z{4$=-?Tye?Fm}c`7R`c_mKp2l;Jk_aSdnnX>0k3VyKGL1m9Xx}FY^>rxs9 r?vU>zpMfMZ{ zsfuQ+y$Jk|e_}t?z@^e5{^Fk0@sdOH-Rs4COrIlcA-Num2&p@eEoT&ZQ)_+E9u3HF z*`BDYtXN4o*aWT}+P%a%`_Ir9iTVtWXCC|MGyZX?MspwAjSvdg< 2@^*$?DkZ`c%CjDHLW1Vsyu1di;8gtNQ3Bb{2dH zvSB~X^)tx}=;BJCFbNVdUwzZ?_zQ0>0&5^t13mdNQnjhOx>xgZGSv{u68M$;cPbmY zS`tGE#v?&O@qEhiIdw^bT-My%-izTMV%B=MieK8((;prPS2-gqK82kz$*BEINdF{p z&Cb&ORQ{Tq2m^!wjtGjOfu&p}n}L|XKOLtz5PJhN&Uyc71OR$^bSDsh`qLZVo?Dof z6q1wF(QM*L+g3di*)OStRcshm^(?J4pKTA){yEY& Aeo!bj{WdRz_%KI8rU(C z6Eg#(^nEt@ezIz&CI@G1|LfU*x`NGcTugN?k#Ar?Y(HQq$O<2WvtYT-T&dg z2pmQ$Y_9o5$fLK13wq`oR)W~1W%{o&ZI)XyO;ni>i)sADE2j&AxJbwh6}2>iUle5H z{K`S$DyH_DhOd9-`Ow4+9Glg*g>f>jGnd!k^LPJC;y?@6iJ5wNIn}d9jQh!FR5cY6 zMQ(mqAK09n8K^m^tQ5t>9xBKDDM2)~uTIrKE0wpe!Ao7%QbgqD3@g*hz{wS|gwgx- zWZCJWhedXFo4gGgUVm7-r;qa~9+_(7>*kHRPn9uF(o u%`x|*i3r&&8UG*hnarp z=K3(oW# ^IbSJ$JJ-}VNelC#E72;t77NONex8<359z(+=Db4Y%n)^B0@0v z^mkvdiA$(G*TqqO!OiP+1?_qyL0f2=Z({C^D mkD2 X%6Z}@3_BUNUJ(tTezD4c$)C?WsEA~+y z4-t=3C4C|uY O7JecDB!&B=7#XQMrzn8!$m`VDUoE)V--dNY@ zE51xHi{z%?Xjvhih@dc (;LMoxs`? WI5KNi>;bwDq9c4wbLpUrZuKkek`>50WLfUL4;bG=<0SO(W-wu5UlLwRVHv6S58Z!U<>*|pBUC6P&-X9 z7jkv5G^BsDqHYs$ed=GeQ`-xSvGRntOoqy{mkaG$&^2MOy6iFd6Dsz0jKuvb)&~_% z=}}TNzlR>&K!HZjJoD#2ri_rc1s&L^ykL^&lososS(k)dA)nim^aJu18G;sK{`4{S zap}kzMgM#2t&LYFXm-H|MsrXwMGf?7(-`DUC9Zcd4wa(&gB_nnhO}p4B8Ko*xr)&> zsj4IAG`?-WYWxP0tnMoAtddX271yc8Ki+XLIKD?X>_#67PN}mcpPhA>!A<3uI?*c` zd>Of$8-~!Brt~X+VywJ(rc4~~A;O?U1ea#c6Ru=1+CI+9hKuDikI93ND}Uzwa4CjA z!(9~|B1{?3kM3{2bpizx$wR0fCb?8SG@YyraRbT!j)6~RTaTHJGpDmEW46zb8ix43 z{hI5$PK+kT(q9LEx$^vPW(iQt;e@Q^h<)pKXGjWWoG-5KZr;3|R3zk<`x~7-E3bb? z%Igr8a;XEKj`JD9vDuLRrO9jwzn)E`PW8g?2BxCV3*)m92PfHd244SCj}^pV**uRh z!uw8kPMbZ==~TZY&hyKGkEXU$iOtRjl5DCwMZK-Z-o$~5gV7YL8;;JK$}P-Se}kHv zOi%N`SRHFzt3$w5iB%C>TNP{pR18f9GDZkrg5!zNN`D9&I`p@XQ4Ic!%3VS=DN3(? zSpOt1F2W#07;I)%ks33yneOn?e$iBE(Ajm!qhBpbxIS)t4w#Qf0k~y`VBWz@Zd|Hc z8U29xX;o}i33hKdbxdZV_vJs`!_fB8{Am?#Pf#+)MzYD} cbw#e;}`QS zVq}xiSXw5# V+6N8+zQ7Y z`OKWBm9fq_zy75glOQ05-2du$U^Bh2_Wpn*eWh%(9^(WSIJcMOBERKTz3_{{ij{yl z^yqNKnHy76X4c0DJ*NnB@=JS(^FI?sy+cDf-7kX!C#EMWuafZF<}D@gk_$NMQ#RAu zK2NDaW%rLxz{|XEpRi8({gPrL=spbGGMk`k^6u$Cbza$v-KOJ#oYq$f37md16YVbJ zP3IA;4 @iyr%`Sq|{dDR@(`1I~%kd zPVx+_I#?< P~PPX{@zQmNVVT7&^=QvOC9` zpsxQwNYJ}8`%^q!30HcpmHgUbh)k5KzORB+SEF)u58*#ExP3;^2d>xcZXM8+*MzX^ z5lBTMUvmAY*)@EppYy Mis$f=6wFLpJ(CTjFPFjwH9UNTrbimQhZKNaB1$7-)7G5&YEUWN7!Km zCmFPf5ZSS)a2-Q?5~ugW^Wfep7tL@VC^sWOgi^o1U*yZ`6s`T(7v~#+R17ft>FTY< z87OOs%`lu2bQa}?**To!tUbA F8{a|C{Rd-vH9mFg%kar9Zvqk?+s7NtxGV>?qQO;M z!K3ikCf*yb@#dcPzsA(w+}t ; k^0oO!EAPo7EA)PQ6zB)n=u6fM;NnK&B7NY$+oWUiqv_j4bZ zptPk>(XXjmxp2k%=LSu{*gwu^@Pi4F4@cL#R)pv!BXMiJSWk>Nie{w85>Su9r_}9_ z8;vgrX~3d=@K}Yv2^~pRZQdxwj*l|>W+w)rHWYF~n^{D7ZUFrG)_Ls>(q0Y{{90I8 ze0jo1b)rY<>+rfKx+l_zKOGt7uhd5j6ll|LG2dGBC~3(ei`0+kEt$mg?cW|f_A@Ko ziy_Hi4ZQW5Vb-WnXP`XPs%HW{v`f@a^GR(lAX1C)H|7$=X!#<`_wU(aqC`;7P>;Ho zMz;J7D_#c=yt4tO0h3XLG}Lg)bY9ohP)u0Kg<3P~p}P2q27a}N(4i_V>-g~PQax47 zn98EP{F`dPO!!~KpV=v1r=s-ur#pxw>ed=z*1hbqC8fGXfO;?&rIx0uEeDfimY-jt z2R&%F$e=1kr$_w3P$q|G6PkN)OF>Qui>82Re{XW)Lu zky;VQ*f^X*KTqKG#4z`r20e*0vr6!^B2!Lga(_FHUH%aX$Dpm@s`_;}f>YMz6?*-9 zFKl)=Uf|I>?D W|MB9p;3=@SbY=tjE6xCfxFmBj}|REa_>jeChr_wbz!s-X(W z&s)?b_bkANZlEvnF%ls?2A({r(iiu1rJMu`Z0BS+3v%GWU2BD3ySNs*8BO7a9A=xIo}M(*@{wQ(r{Q*zI_%%1ea#px;Uk`y?RpZq8gK^;^{n`=Bc zskt~pc#q#k^@&Zj@>TEJfYBUcrCPmbH>7q@+`i1v2@X{MLZ4-O8dyMTr;xk6w|1N1 z!m^|qd=s$_fWYgg&aWc&&U43ZYt%KtplimMyE4@NyW?b)_Fjw|tE-JGu+_!{x#mQ` ze7^*$eyh%SrfKG6jvLd|y;VxW>Ia*y-Ny$X4Oh9FAtIUmc3H 4Z$GMR5)c{^GK z7hT&q?Gj }g!>{(u(yUGX-`0{g zUW5&Bx% HIp5l?g?Pz~*Z5}hxN%2-v+9MMZ{eApNZzTIb*phabVb7|1e zI>GyW % zxMvepxCeY8mC+-$Z>1} XlK_?lyBxYRA5!_m>;GUE!j1-D33TW(|lZGgX{eOb{v z3rg^h^`MLadafPuD|kfo&knWl#3jEYB)601jQ0*j`ee->kUXUHs}tXjPQJ4kG%I%_ zj4~~`hcfwH&li={vHA9lHOQs tx+dwB?ZHnHuia;jenh!`W;;+gwpY4Jq$FMh zwVZyiG4otgtmH~A+3$eOmt6Z8Uq@$WaLB?u&r_+YuU$Oj+nxML^P!1c^mimxHiEM) z+h?4FHDIB6`ZCC*?Q<^c{Y-V`hx#^Qn&4K|L}O_!BV(P*OWG592V;KHsI%jR!;JYe zZx*~`J%Wf7wB?25^hI@KJ_&qHMcqsZ=6*}+ 1qSLQ%)fJq?K@Wr%GZqTEk-|L-Cz@@!B<00#X$oQl=!`Z}X+kr8$c&4=m5?gx#1^ z4O(Op<=J%Zf6bvjzV7 d;|mrD`Ikh^3@+bebtX}OD1 zTls2!5M$<*Obs(mV$3B+^hGuvcfS&{h<4>m%&ba|a*Z?w4u6M3##fYxkWB^^-O?+- zt-8oTqTimYs_>px+i)S(4}7rvq<`V_tp+_{gc>YBc(Qs2;RktC=tmAcKB^i^p)=Zm zpar|NN1bcXm0!)0v?N|HY4=%t)qy`Z8FoB>A=*9o-jXXR0Je9uGDYK8&xtM5r3r|+ zxcPOrZ-*5cP)8UoL9@7i0nGNi)*W3N;2?dm_kNkVhnCetRBAI;udKURzsni1;f6UJ zEGZM4J&N*!*IGaJ_wya3#dV~5f(@hUb#rAtYEmcrdkLtXDw(BOI+x=)@ZJE)IL#=Z z^$M=nkec6D8GD=EXEjL2)crY!&&GRcP~SpbB=w#Cyu*iF9 5#{0-bG+thpD0+5Y_iU%m^N6WleUV>WKwdiI=?{lm-Ozw2><-7V z-@|L?8&6vH444=Ojg;B;b?y}B|0tshV!4wOsXi}$In=;Emp>y~IT0`KU2?ZM|0wGb z(^{;rjS3!h|B9)^zV}3c@7;ownz(7-lQYNWaA%2;uU^j^XS%#nd&EIn{b5=uUo^)& z5Z+;YtIC6d8w#4pZfU*g8xF2DzsqFY8k$Cg=dhzXs+0e~XZU+6D-CAXe&sOY^wfS! zGIjc_LF;639#bJEV*@hvOb_7Sma?$^@ER0k+{(j>evr3krrwZ>SN-5(PofVZ?xpj* z;GAmtb$i94Tl(#z^U_()diBR=66<{wA&M9G=QTsJs3PE-X!Ecjc~&xRqEqWoyexVZ znmI#>&8wmtbMfQfb4^-$5&HntI^&jkHyRoVJep!eMMI 1TQ#N;wuxN1Yn{}IO}c6QzWoOLlJNQp z$D_#hPmb3~
t+>3bd(zgDtqJkE=20DN|;DZbyppX5nhguX>0PerEI?pnEOpew2QxF&3z zrkC;q+#@e@TuNNzn?%>Fz<76R@7*<>Q6EWSdOLfv&5gNBvP@^<9Shv~wt;%XX<`AHIuS=4 z^hS&yR81{x!HqqadQjiUi)}bz-Z!O!LnheIzou8tJ=c|5xaz-}-sjGp1OIqxkeIxZ zAH%Uc^5x@$190>O*uptlmmq+z5wWbR^1c0u4%7MP#RNjO`nJ8Qh0gXnPh?fU6}d~B z+!L5Y=pIL6OLQJ3JUbO2k<-{YFDV&{>?_(1F!rTHCZ4#a%*hnb1&|y;K?PWq?foFQ zQDE++))xf9H)vM9V}-g1GC_?n++6XYJ4s#2@7nkh_YW8D4(`gpz7RyIb4IQ}Cy}D^ z$CH)K3-9fuWZp)= @&UhXP}c`j)7@Cs#W7z#yRV%@C=p(LL>Ieblf+2?gRVeVV1 z7i#4CclxKbn5Df ~qOl6IXTioQ+~c zltkcWA_M00-ox_%oBASYzKOm4^>bL*y7$3-uskWx$e?`e8q@JrLrVz72?OVWw30uz z)Lr+m_!hprsa2YA_JgUo@b}+eAjA&fu~tG!X)QLaK9O6tK8u}nhw3>XBepcvKIEd$ zh0pk~%D9^zk7b0(eb4=2s?zKd@0Z3e218JQs+-fYRx%fO^)p+hVJud97fa4yi3>l# zV9oSsnBEi$5}Z&w-MgS(-!l3=*Qh0t$s;jw6hFQ0@P*8ek3Pq@3LSSJUR+ISmyzKL zqo{jE&UjSuv_AdWP{-S)1*>ykce#*@O2C$z98jgR1Y6R1q^Nx4b-JEE62NnZtq+>E zsw|C}>l1pQ+*R_1wYh|-;@r~I`{x~`!m6c(Q-<4A>|giW->#e%kR*B!AG^K1sGbPm z6VS`=s`m*@PS)d)Q9P5}IlpsZ`H@=H{i>>V>1t3$XzQg3^KZ18_t;8|AjAvGdVP$9 z6oa8xM97{50oWC#{AdhIIVGVA9}DzQo*2iD8 W%qz)o&ly43gSXJcf&xmg+Ei`$=oA+(J=^j?W z$7Ki*9EpYnn0_mO9eCTXD+fdm691~{7y}xSp4e*R%!d&C>G4r5F}RV3{N6lBBW7;1 zDE$tAFUw~lOIn+hF!3gnrVVLFyqOl;9;w}Ev1ZJrapSM9FUbkvrBz;cwd21YlN})= z8R!(ll(Cjg=O*TX_t>7+?i%;cc~UWwQjbhB%L5-8Fb?qEF HndSRC#ab z`H0(w-*^r0V z;u+H=;8Hv{355pNX&LvP!1_Xqi1IlDQK<6Q-S>J5nf+Ry&`fuapEc-lN&0=xPU1lL zFzj~;qf!L=o*{+uq 68nD>55_EIYNw z&!B=3`GZ`dLV>LN;)|DGwP(NG_1$KC6SuH+7#-DjeVH$Q@g*loolKMlD1bhxahciu z`pM}Ag#fv)i(lyjpQ+$eecCK3=)tYQYh;J^&FE g{c4)ER$` zn$??j9W4z 2qwlGaMMkJW=-ZAsFFfpsrhd|SS`dDvg zxz&=_BQ#e+>PxH0881^0yvd6T(Ut>7AH`*V6q$#H`++G7R9E=hNm|FxZJiQHqVTa= zgL2w2pT?K$d6KI04SGNS_{=8I9rkEzBc$nr@1$O*ws%4-uQGp>Y8lIkYu+ulNUBJJ zE4j(sB#oY2tdwW5^P2Q_@AP)YPAYD;l8FLEc1&+C`bA;E1_Iv2W2Y1479ZGev5I$k zu(%rBr=Ck{!ykx$QD@SS2U%j{Dqb(sHs`&D-*PI6?|X^VZz)ARD;)XY` ;V93@o!*xf&0=zp