From 67e60e64e428b29c0621cf4759ae39c98d3e9e13 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sun, 12 May 2024 11:22:27 -0400 Subject: [PATCH 01/42] Export AppDispatch type in TS page --- docs/tutorials/typescript.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/tutorials/typescript.md b/docs/tutorials/typescript.md index acedfb5914..79b33bb7ac 100644 --- a/docs/tutorials/typescript.md +++ b/docs/tutorials/typescript.md @@ -53,10 +53,11 @@ export const store = configureStore({ }) // highlight-start -// Infer the `RootState` and `AppDispatch` types from the store itself +// Infer the `RootState`, `AppDispatch`, and `AppStore` types from the store itself export type RootState = ReturnType // Inferred type: {posts: PostsState, comments: CommentsState, users: UsersState} export type AppDispatch = typeof store.dispatch +export type AppStore = typeof store // highlight-end ``` From 3bad83083ff047457ae8bf5ba8f3aef5de6a3567 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sun, 12 May 2024 11:22:42 -0400 Subject: [PATCH 02/42] Expand setup instructions with TS details --- docs/tutorials/essentials/part-3-data-flow.md | 109 ++++++++++++++++-- 1 file changed, 100 insertions(+), 9 deletions(-) diff --git a/docs/tutorials/essentials/part-3-data-flow.md b/docs/tutorials/essentials/part-3-data-flow.md index d9115752d8..6ef460d92a 100644 --- a/docs/tutorials/essentials/part-3-data-flow.md +++ b/docs/tutorials/essentials/part-3-data-flow.md @@ -9,6 +9,7 @@ import { DetailedExplanation } from '../../components/DetailedExplanation' :::tip What You'll Learn +- How to set up a Redux store in a React application - How to add "slices" of reducer logic to the Redux store with `createSlice` - Reading Redux data in components with the `useSelector` hook - Dispatching actions in components with the `useDispatch` hook @@ -18,6 +19,7 @@ import { DetailedExplanation } from '../../components/DetailedExplanation' :::info Prerequisites - Familiarity with key Redux terms and concepts like "actions", "reducers", "store", and "dispatching". (See [**Part 1: Redux Overview and Concepts**](./part-1-overview-concepts.md) for explanations of these terms.) +- Basic understanding of [TypeScript syntax and usage](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) ::: @@ -29,7 +31,7 @@ Now that you have some idea of what these pieces are, it's time to put that know :::caution -The example app is not meant as a complete production-ready project. The goal is to help you learn the Redux APIs and typical usage patterns, and point you in the right direction using some limited examples. Also, some of the early pieces we build will be updated later on to show better ways to do things. Please read through the whole tutorial to see all the concepts in use. +The example app is not meant as a complete production-ready project. The goal is to help you learn the Redux APIs and typical usage patterns, and point you in the right direction using some limited examples. Also, some of the early pieces we build will be updated later on to show better ways to do things. **Please read through the whole tutorial to see all the concepts in use**. ::: @@ -63,17 +65,106 @@ If you want to know specific details on how to add Redux to a project, see this The Redux template for Vite comes with Redux Toolkit and React-Redux already configured. If you're setting up a new project from scratch without that template, follow these steps: -- Add the `@reduxjs/toolkit` and `react-redux` packages -- Create a Redux store using RTK's `configureStore` API, and pass in at least one reducer function -- Import the Redux store into your application's entry point file (such as `src/index.js`) -- Wrap your root React component with the `` component from React-Redux, like: +1. Add the `@reduxjs/toolkit` and `react-redux` packages: -```jsx -ReactDOM.render( +```bash +# Use NPM, or alternatively Yarn or PNPM as preferred +npm i @reduxjs/toolkit react-redux +``` + +2. Create a Redux store using RTK's `configureStore` API, and export the store types needed for the rest of the application: + +```ts title="src/app/store.ts" +import { configureStore } from '@reduxjs/toolkit' + +// highlight-start +export const store = configureStore({ + reducer: { + // Empty to start with, will be filled in next + } +}) +// highlight-end + +// Infer the `RootState` and `AppDispatch` types from the store itself +export type RootState = ReturnType +export type AppDispatch = typeof store.dispatch +export type AppStore = typeof store +``` + +3. Define pre-typed versions of the React-Redux hooks, so that the `RootState` and `AppDispatch` types are built in automatically: + +```ts title="src/app/hooks.ts" +import { useDispatch, useSelector } from 'react-redux' +import type { AppDispatch, RootState } from './store' + +// Use throughout your app instead of plain `useDispatch` and `useSelector` +export const useAppDispatch = useDispatch.withTypes() +export const useAppSelector = useSelector.withTypes() +``` + +4. Create a Redux slice file, define a reducer with `createSlice`, and add that reducer to the store: + +```ts title="src/features/counter/counterSlice.ts" +import { createSlice, PayloadAction } from '@reduxjs/toolkit' + +// Define a type for the slice state +export interface CounterState { + value: number +} + +// Define the initial state using that type +const initialState: CounterState = { + value: 0 +} + +export const counterSlice = createSlice({ + name: 'counter', + // `createSlice` will infer the state type from the `initialState` argument + initialState, + reducers: { + // Use the PayloadAction type to declare the contents of `action.payload` + amountAdded: (state, action: PayloadAction) => { + state.value += action.payload + } + } +}) + +export const { amountAdded } = counterSlice.actions + +export default counterSlice.reducer +``` + +```ts title="src/app/store.ts" +import { configureStore } from '@reduxjs/toolkit' +// highlight-next-line +import counterReducer from "@/features/counter/counterSlice + +// highlight-start +export const store = configureStore({ + reducer: { + // highlight-start + // Add the slice reducer to the store + counter: counterReducer + // highlight-end + } +}) +// highlight-end +``` + +5. Wrap your root React component with the `` component from React-Redux, like: + +```tsx title="@/main.tsx" +import ReactDOM from 'react-dom/client' +import { Provider } from 'react-redux' +import { store } from './app/store' +import { App } from './App' + +const root = ReactDOM.createRoot(document.getElementById('root')!) + +root.render( - , - document.getElementById('root') + ) ``` From a1a74c2a378ab626682bb2af0cf8187be1f7a604 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sun, 12 May 2024 13:04:04 -0400 Subject: [PATCH 03/42] Add store setup instructions --- .../essentials/part-2-app-structure.md | 2 +- docs/tutorials/essentials/part-3-data-flow.md | 215 +++++++++++------- .../essentials/devtools-basic-counter.png | Bin 0 -> 31711 bytes .../tutorials/essentials/devtools-initial.png | Bin 31711 -> 67786 bytes 4 files changed, 131 insertions(+), 86 deletions(-) create mode 100644 website/static/img/tutorials/essentials/devtools-basic-counter.png diff --git a/docs/tutorials/essentials/part-2-app-structure.md b/docs/tutorials/essentials/part-2-app-structure.md index b3b5a6b761..a6351951de 100644 --- a/docs/tutorials/essentials/part-2-app-structure.md +++ b/docs/tutorials/essentials/part-2-app-structure.md @@ -48,7 +48,7 @@ The counter app has already been set up to let us watch what happens inside as w Open up your browser's DevTools. Then, choose the "Redux" tab in the DevTools, and click the "State" button in the upper-right toolbar. You should see something that looks like this: -![Redux DevTools: initial app state](/img/tutorials/essentials/devtools-initial.png) +![Redux DevTools: initial app state](/img/tutorials/essentials/devtools-basic-counter.png) On the right, we can see that our Redux store is starting off with an app state value that looks like this: diff --git a/docs/tutorials/essentials/part-3-data-flow.md b/docs/tutorials/essentials/part-3-data-flow.md index 6ef460d92a..2f5487be56 100644 --- a/docs/tutorials/essentials/part-3-data-flow.md +++ b/docs/tutorials/essentials/part-3-data-flow.md @@ -29,6 +29,8 @@ In [Part 1: Redux Overview and Concepts](./part-1-overview-concepts.md), we look Now that you have some idea of what these pieces are, it's time to put that knowledge into practice. We're going to build a small social media feed app, which will include a number of features that demonstrate some real-world use cases. This will help you understand how to use Redux in your own applications. +We'll be using [TypeScript](https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html) syntax to write our code. You can use Redux with plain JavaScript, but using TypeScript helps prevent many common mistakes, provides built-in documentation for your code, and lets your editor show you what variable types are needed in places like React components and Redux reducers. **We strongly recommend using TypeScript for all Redux applications.** + :::caution The example app is not meant as a complete production-ready project. The goal is to help you learn the Redux APIs and typical usage patterns, and point you in the right direction using some limited examples. Also, some of the early pieces we build will be updated later on to show better ways to do things. **Please read through the whole tutorial to see all the concepts in use**. @@ -59,136 +61,179 @@ If you'd like to see the final version of what we're going to build, you can che Once you've finished this tutorial, you'll probably want to try working on your own projects. **We recommend using the [Redux template for Vite](../../introduction/Installation.md#create-a-react-redux-app) as the fastest way to create a new Redux + React project**. It comes with Redux Toolkit and React-Redux already configured, using [the same "counter" app example you saw in Part 1](./part-1-overview-concepts.md). This lets you jump right into writing your actual application code without having to add the Redux packages and set up the store. -If you want to know specific details on how to add Redux to a project, see this explanation: +#### Exploring the Initial Project - +Let's take a quick look at what the initial project contains: -The Redux template for Vite comes with Redux Toolkit and React-Redux already configured. If you're setting up a new project from scratch without that template, follow these steps: +- `/public`: base CSS styles and other static files like icons +- `/src` + - `main.tsx`: the entry point file for the application, which renders the `` component. In this example, it also sets up the fake REST API on page load. + - `App.tsx`: the main application component. Renders the top navbar and handles client-side routing for the other content. + - `index.css`: styles for the complete application + - `/api` + - `client.ts`: a small AJAX request client that allows us to make GET and POST requests + - `server.ts`: provides a fake REST API for our data. Our app will fetch data from these fake endpoints later. + - `/app` + - `Navbar.tsx`: renders the top header and nav content -1. Add the `@reduxjs/toolkit` and `react-redux` packages: +If you load the app now, you should see the header and a welcome message, but no functionality. -```bash -# Use NPM, or alternatively Yarn or PNPM as preferred -npm i @reduxjs/toolkit react-redux -``` +The project is configured to use [Yarn 4](https://yarnpkg.com/) as the package manager, but you can use any package manager ([NPM](https://docs.npmjs.com/cli/v10), [PNPM](https://pnpm.io/), or [Bun](https://bun.sh/docs/cli/install)) as you prefer. + +With that, let's get started! + +## Setting Up the Redux Store + +Right now the project is empty, so we'll need to start by doing the one-time setup for the Redux pieces. + +### Adding the Redux Packages -2. Create a Redux store using RTK's `configureStore` API, and export the store types needed for the rest of the application: +If you look at `package.json`, you'll see that we've already installed the two packages needed to use Redux: + +- `@reduxjs/toolkit`: the modern Redux package, which includes all the Redux functions we'll be using to build the app +- `react-redux`: the functions needed to let your React components talk to a Redux store + +If you're setting up a project from scratch, start by adding those packages to the project yourself. + +### Creating the Store + +The first step is to create an actual Redux store. **One of the principles of Redux is that there should only be _one_ store instance for an entire application**. + +We typically create and export the Redux store instance in its own file. The actual folder structure for the application is up to you, but it's standard to have application-wide setup and configuration in a `src/app/` folder. + +We'll start by adding a `src/app/store.ts` file and creating the store. + +**Redux Toolkit includes a method called `configureStore`**. This function creates a new Redux store instance. It has several options that you can pass in to change the store's behavior. It also applies the most common and useful configuration settings automatically, including checking for typical mistakes, and enabling the Redux DevTools extension so that you can view the state contents and action history. ```ts title="src/app/store.ts" import { configureStore } from '@reduxjs/toolkit' // highlight-start export const store = configureStore({ + // Pass in the root reducer setup as the `reducer` argument reducer: { - // Empty to start with, will be filled in next + // An example slice reducer function that returns a fixed state value + value: (state: number = 123) => state } }) // highlight-end - -// Infer the `RootState` and `AppDispatch` types from the store itself -export type RootState = ReturnType -export type AppDispatch = typeof store.dispatch -export type AppStore = typeof store ``` -3. Define pre-typed versions of the React-Redux hooks, so that the `RootState` and `AppDispatch` types are built in automatically: +**`configureStore` always requires a `reducer` option**. This should typically be an object containing the individual "slice reducers" for the different parts of the application. (If necessary, you can also create the root reducer function separately and pass that as the `reducer` argument.) -```ts title="src/app/hooks.ts" -import { useDispatch, useSelector } from 'react-redux' -import type { AppDispatch, RootState } from './store' +For this first step, we're passing in a mock slice reducer function for the `value` field, to show what the setup looks like. We'll replace this with a real slice reducer in just a minute. -// Use throughout your app instead of plain `useDispatch` and `useSelector` -export const useAppDispatch = useDispatch.withTypes() -export const useAppSelector = useSelector.withTypes() +:::tip Setup with Next.js + +If you're using Next.js, the setup process takes a few more steps. See the [Setup with Next.js](../../usage/nextjs.mdx) page for details on how to set up Redux with Next.js. + +::: + +### Providing the Store + +Redux by itself is a plain JS library, and can work with any UI layer. In this app, we're using React, so we need a way to let our React components interact with the Redux store. + +To make this work, we need to use the React-Redux library and pass the Redux store into a `` component. This uses [React's Context API](https://react.dev/learn/passing-data-deeply-with-context) to make the Redux store accessible to all of the React components in our application. + +:::tip + +It's important that we _should not_ try to directly import the Redux store into other application code files! Because there's only one store file, directly importing the store can accidentally cause circular import issues (where file A imports B imports C imports A), which lead to hard-to-track bugs. Additionally, we want to be able to [write tests for the components and Redux logic](../../usage/WritingTests.mdx), and those tests will need to create their own Redux store instances. Providing the store to the components via Context keeps this flexible and avoids import problems. + +::: + +To do this, we'll import the `store` into the `main.tsx` entry point file, wrap a `` with the store around the `` component: + +```tsx title="src/main.tsx" +import React from 'react' +import { createRoot } from 'react-dom/client' +// highlight-next-line +import { Provider } from 'react-redux' + +import App from './App' +// highlight-next-line +import { store } from './app/store' + +// skip mock API setup + +const root = createRoot(document.getElementById('root')!) + +root.render( + + // highlight-start + + + + // highlight-end + +) ``` -4. Create a Redux slice file, define a reducer with `createSlice`, and add that reducer to the store: +### Inspecting the Redux State -```ts title="src/features/counter/counterSlice.ts" -import { createSlice, PayloadAction } from '@reduxjs/toolkit' +Now that we have a store, we can use the Redux DevTools extension to view the current Redux state. -// Define a type for the slice state -export interface CounterState { - value: number -} +If you open up your browser's DevTools view (such as by right-clicking anywhere in the page and choosing "Inspect"), you can click on the "Redux" tab. This will show the history of dispatched actions and the current state value: + +![Redux DevTools: initial app state](/img/tutorials/essentials/devtools-initial.png) -// Define the initial state using that type -const initialState: CounterState = { - value: 0 +The current state value should be an object that looks like this: + +```ts +{ + value: 123 } +``` -export const counterSlice = createSlice({ - name: 'counter', - // `createSlice` will infer the state type from the `initialState` argument - initialState, - reducers: { - // Use the PayloadAction type to declare the contents of `action.payload` - amountAdded: (state, action: PayloadAction) => { - state.value += action.payload - } - } -}) +That shape was defined by the `reducer` option we passed into `configureStore`: an object, with a field named `value`, and the slice reducer for the `value` field returns a number as its state. -export const { amountAdded } = counterSlice.actions +### Exporting Store Types -export default counterSlice.reducer -``` +Since we're using TypeScript, we're going to frequently refer to TS types for "the type of the Redux state" and "the type of the Redux store `dispatch` function". + +We need to export those types from the `store.ts` file. We'll define the types by using the TS `typeof` operator to ask TS to infer the types based on the Redux store definition: ```ts title="src/app/store.ts" import { configureStore } from '@reduxjs/toolkit' -// highlight-next-line -import counterReducer from "@/features/counter/counterSlice -// highlight-start export const store = configureStore({ + // Pass in the root reducer setup as the `reducer` argument reducer: { - // highlight-start - // Add the slice reducer to the store - counter: counterReducer - // highlight-end + // An example slice reducer function that returns a fixed state value + value: (state: number = 123) => state } }) + +// highlight-start +// Infer the type of `store` +export type AppStore = typeof store +// Infer the `AppDispatch` type from the store itself +export type AppDispatch = typeof store.dispatch +// Same for the `RootState` type +export type RootState = ReturnType // highlight-end ``` -5. Wrap your root React component with the `` component from React-Redux, like: +If you hover over the `RootState` type in your editor, you should see `type RootState = { value: number; }`. Since this type is automatically derived from the store definition, all the future changes to the `reducer` setup will automatically be reflected in the `RootState` type as well. This way we only need to define it once, and it will always be accurate. -```tsx title="@/main.tsx" -import ReactDOM from 'react-dom/client' -import { Provider } from 'react-redux' -import { store } from './app/store' -import { App } from './App' - -const root = ReactDOM.createRoot(document.getElementById('root')!) - -root.render( - - - -) -``` - - +### Exporting Typed Hooks -#### Exploring the Initial Project +We're going to be using React-Redux's `useSelector` and `useDispatch` hooks extensively in our components. Those need to reference the `RootState` and `AppDispatch` types each time we use the hooks. -Let's take a quick look at what the initial project contains: +We can simplify the usage and avoid repeating the types if we set up "pre-typed" versions of those hooks that have the right types already built in. -- `/public`: the HTML host page template and other static files like icons -- `/src` - - `index.js`: the entry point file for the application. It renders the React-Redux `` component and the main `` component. - - `App.js`: the main application component. Renders the top navbar and handles client-side routing for the other content. - - `index.css`: styles for the complete application - - `/api` - - `client.js`: a small AJAX request client that allows us to make GET and POST requests - - `server.js`: provides a fake REST API for our data. Our app will fetch data from these fake endpoints later. - - `/app` - - `Navbar.js`: renders the top header and nav content - - `store.js`: creates the Redux store instance +React-Redux 9.1 includes `.withTypes()` methods that apply the right types to those hooks. We can export these pre-typed hooks, then use them in the rest of the application: -If you load the app now, you should see the header and a welcome message. We can also open up the Redux DevTools Extension and see that our initial Redux state is entirely empty. +```ts title="src/app/hooks.ts" +// This file serves as a central hub for re-exporting pre-typed Redux hooks. +import { useDispatch, useSelector } from 'react-redux' +import type { AppDispatch, RootState } from './store' -With that, let's get started! +// highlight-start +// Use throughout your app instead of plain `useDispatch` and `useSelector` +export const useAppDispatch = useDispatch.withTypes() +export const useAppSelector = useSelector.withTypes() +// highlight-end +``` ## Main Posts Feed diff --git a/website/static/img/tutorials/essentials/devtools-basic-counter.png b/website/static/img/tutorials/essentials/devtools-basic-counter.png new file mode 100644 index 0000000000000000000000000000000000000000..088138480a88c76ec45b2fb85550633019aae409 GIT binary patch literal 31711 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 literal 0 HcmV?d00001 diff --git a/website/static/img/tutorials/essentials/devtools-initial.png b/website/static/img/tutorials/essentials/devtools-initial.png index 088138480a88c76ec45b2fb85550633019aae409..1be4c62f72a195221980475363003e5f4533f748 100644 GIT binary patch literal 67786 zcmbsQWl&t*)&&Z8LJ|T5cL)&NCAbsZUDLQb1b0br4^HFmjk_keyK92GyWXAiy8 zs=gn$>UI?cP4`-Buf3*>ImX-}3UcCz@Obbb5C~CHLPQA!ddmU=!HmCs3H-;{Xp0W` z^}<0(TnJP)@_rY1^U73ERuBZLj6!(Oe+|5c`y%n#0R%$o{PXjo*S63I1bWVs6cJQ$ z)j3#()x+q1`f(~tp5}=5;S*IBTp-$~Pr1Bs-+XMom7yc|^s9CdE&T?RcD!{bEct2Uz1*0lM?*5$^*=!0VuZ;FWxmKZW8 zUUpTw7r=%5dA+u?bHN_$JNZ({`tjp9{R|*8XgHj71Dbmy!*d@2_x?M7*@T~vlO##-EWb3})GA%{?*=wTXGY}c){j>(rP28U#VOK{@5AfVsPHXm?JO0_<<9dX zPkTvU%$Kf}7y65eD^(l?t+6|4!Mb_H{iT9eF;>2n2v}2`Z zSj|3Eim_R`h8hTJ(R=snI4Qfmg|5ib;j;Yqz^F<-qD%89Qzy{Q zKG>h0sn$~H0&^nnxs`O1W@j7vELWP&Wo}Q&0xP3N(LZ#wx|S|@5BcL-$ljW7&kDI% z85@spuc|$mr)i~b&Puc>?G0w(FP!~gD^xEqy=HLp)5w-aCPLtHyvS8k10&&2F&=*) z92aZZ9M}!V`R`?PE8KlV=WBLB9bEQ#-{Qu@%f*$Ksp%+F>Q2x&7%M-gp$Tjx`tC$D z!-tlpdq(TfVcBBlM1{z}|086^>F znsZBH9SXNX@uY|3(Cj(K-2pZj7uC8h{DW@nGdT9Q*-CDCGE>)4oUg|v>sDuSlzg=X@9+T}?sb?) zPBi?UeTVCmneRI>#u`Sbj4%ma@FWH-Vb>3_pRTJdcb{%M89e1XPoa{`<5y@g8vj_C z4FQ|8uFWG3MKUDUo?B*N!n0k~p25rU%0!232l7tVs2y@!H(l=KO#etq-&>t7$WKf> zRz8G7{CoJuqG^ia0(_tWKXsW``^)w;-7wSiqZX%o8>kiCnq+Nl73oO5 zwWXf{PPg$=Uson1g}oGMrQ$BgMS5J^5IdN!G-X+ucE#ml>5|nB+kt!|7<}4SY590C zX3mn&cx#sLnIhnI<9wIh0H1MD)D?~g zd26QHtF&Y+As4~@PN8H#sjs85^YI?ZO}{4r_B;OO&-1uqse{?2^s`4IJb5Td)B0RMPqdVQT* zMQ5)Np+roG{TYe~#hbgCy6*-;&OuT!P?waLk%kRRa&eCD(vw**O{yG;%;;rD^Gvog z@3@32c7kMm#3)RYn^`T-8P%bX-^E}PaZdZw3TCNPn7_-0Z_g5VoQYv9+}8dHI}H)| zj}sMwqtoS@nu`h*TBu0tR0Uj#D&+V)N}Qx(6gpSdR^;SMygbKKY?4*xXI&0puaDCX z71J|cGU|1$DebVG9B+G5j-7~{eA-&~G3ajeP2}-xc0z1K9)!%8EFfdC zmDgttyS#JuZ7CxG`}shI+KpEF2=CiGV(sJ^`-<-+=%m7RKKEB=D0#B%qeov2J)EG& zCI#WE5)BUYKr&EXM`h7DsZH#-_F}qE#DJEesHPylpP4SNi>*b2NJX~UUCa{Aq{}GO zNwx{E;*1MLI&6Ho|B)m=v6?*F&*SogWb@#f$kSU(Xa9O@$Ywfk!(pGo+d*oc>_+~n z&}+C0VbHWRY=6P!SL}SOEV+34a^vrFK8`r{Yp$9dwll~U8v&H=%zx;@d4Jkmp`37- zkD$0OpysBp+Q;g1?LLjN#6KsI`Cvr7#LL@tcQ~d{$vSLeU_cU*qMzW&s!WIN^>o-h z7^ou$1e-=@Z+avGzDE0DMzE@)h{q{aC9_G#yW0GRopkBdnM02$jIq6+Ve!C8ii!3% zaq^6$GV5SC735fE%3CpecL}}MfV@Lu63W<)KQ2*F8@LMpPyXw{WBHAH;z}(6LT&+E*3$3#eyGY(n{gOB$@uuKSAQ6(E+l4Y4WCZ zxpaN3bwfT{Yv_Hm_v!dXTN_wIsKV*|ki$Za1Dd;Y`TN0_U$&;g zKlA9zyoN6H0hHQ~LIF$03r5`6RvEC|@4b`rF#SYnOHW5U%jw~S$L(!T#8_*llb5-h zJVXzVBd++$p`d_5=KW%I|Kod{85`LQ0+cZk+9KX`FYB!__LY%afAWilOMGmmF?j^( zw^&y;ZG15K$Q*JEh=1J`S6_Ni#B@|n%{R%o7Dw3*92${t{xI1;30CZY-0L!DvP@1I8BOF9rBq? z%`4xKhuhb0uFUl)C5v1}Y_#Z(zueTQE;59a)qFX_=X^BgfI=cwBkt0%*5(uC@V8f8 zmKF!20t-UH;;TNp0Vz61zxF>|;WXObrv6?7tt7X5UPJxkf*oKTB1@RcTJf(3bKaD; zKInRw9{FcIJ}jNJE7>kH|5~Nz8&b9*M0~P%f<5ys+LdmDZ$pW<(W!22Z$C>iTn)Z+ zGDY9KO!3%6RXsb5)suuzr&PNN?8irAq*LFgG=rglSMDBO?Bu=eiB>&h@n-TE4mojD z+@Gp3#CK}W9{y36jujJ!sPN2A}&uJ8rSeHDlQ^M8- zln-O}rw99T;!;XReRlz?8435x6Gc6bFR+{kzJvy|RL^7}V$&uHwLLqo`3j z!82~Yk`x2f=gwT+;BYj^iRZ|yW{g4E;cAhpg#O@j9Hpbhuj?u`;{Dkv>GWW#vmJTO z4caH;%tTvju22+r$6fBtu%~&F#AkOk!lgBp0%7c0F-q!(1LsH6RjiV5f-heVGBJ!j z82$65l!hZ|`Ej^1Kc_2VBabaBTVm7Wuvl*93y`iellL$5FP6{FLC|}hXY$R__*RO_ zIQ1N&B1xxwbC1}e(AYwkq7@BGjh=~4#m@qtn#j{<>~nozwjhbn#sNoAuk%AFxSd_W(j?CSq6gHZ=lXf@+6?>5Gjq>um8eMF5xoGj`y|XSt zV!M&8xp{d)7^%_xg>7VDzJ@F7F0;i|_OIz@M0Zm?Y|{W zH?7sSgFud7lr-GPtc3UTqt-VvH)r?OV|1M}{GVBh1>=kyE~u8{`aU%D7zJ%$LeJl2 zMu*c?tHB}CTe7KFRX+R03+#V)L=~}4|U=A)p@Rm7mvrnUuJVL$9{4K2kbW*%qF zlti>Tec8yQM(|l6vS*>59;ozg-lkyGVJ*=W#ST^q}T5Flvcp<@cGc3>3IZ3~yiA2C**Dubp9l0|zHLo=w z^LDus)trdwGOhl>XOm55{ zAlz{nY+k&qi>w`>Q?ug%r-%0UG|HtX2_|wAo((A$6%CXMk=t7@x(M3BM(z;c)Epg? z^-n-$S3RrLc=h_#pVeX{HRcKp$r(iYw=Itpo4+cRYP8(nxSTP`H{+vIZuchS4qY^y zIHV+aU#aqQktuaV9cdF@>~={aBoIZ&u+*L%t*!Dr$F2U|lU^Zo(IwI9hsZ4=BUJ)W zduUReGeWh_r5i_NRF8m-*znsQ?TjJdPoH_+yJ*Mg{<@R(Fz?Ts)kPRZabe?rV=`;D zv^U#M1eTDQRC`xJzR|SQq&BGa5vJbPG?_c(KFRW48l~&(U@RwAr;ya@c|tNsxH~jf zlgrqgD%ojpeDd;Ka!12$AvvtMhLtTucwmM0tV<0^_7QeQjRqbg!&APEg(Dt@lZ&jN zq}(?Kw&k6hz-3Z_=v{<1kr%gd6?35BL@6~96s|3fmhSg7tGIiJzoF%ojsynmo| zDdAvp(=9a{JC*Cs#e9Z4E zD<^!o>{!7rVKAMKeimjuYqe8A6!rcoKRU74G%%I~N^PHac z%kfa;8q&Bu7o^lxHM!jAn7Hfr5uNou_4%rYp6LXYdP<+#>vRYQc3!}iCp^B?y)L(A zh&alB~6QboB#tuDTiMy@O^DhoBX_9Jhsgq3)Yfj zRcu~AD%h24Kwq=OOWyX>EJ!TEYrv%9TYT!_!cvh5ZT+`v)61?w#&E)qc0U{1mI;-U zKR5GzER2mxl_lffOPKh#pqDZQ%0soX&x{FyU6g>+Uj5j%8xVc(*01Ci7DRXVph+t7 zd4P-g_o8Ms3 zEfytAB5SJ{Q*4(!1S3r~rgzV0vVS2u^tMm5R&d2dGQ3;xq!)~#(@wd8%7n^%g82fV&$&5a417>h0^=&()q-tvNU3+GYrzu!(Rc^(Z z&?)8KBEo2KWcj-;+&0CFNmB+0n@N`geeK(^3`z!(Fdo|DvKI&&Rw$#_C(0ag6Srvv z-GlnG7mXhc>ep_Z>H}DM!jI-P;M8+dA8A=>v?YBAGFemDObRnn0?4}4cq(=Uy953) zQczq`SYo+_C30j~^(2ctcG{Oewi?F&tVXLs2GA2ajV4}|-_WrcbyGgNWZAv(iL*7z z9%ez@7@XIibq*@RY&06Jn=;b7VmtjFU`RQ%h=PV!FoHuSStOa&TR-Gsxh8Zd{Tx%{ z@I<*k8c4gkgN=r!M2~N=f6HBECH1RUGjd5rD!w2zCO5pspJ&#YG3B)5z%$Se=Y#z< zwn0$)K{G~5=8?kt&NRz=HOBXiH!mo3K3dr(|_FB`|6}@0-Y52x=V3L_y;<^YlxCOKsQ=V_ z>ug9P4;zyZmpq+8nRZWOu9@xd?tzn>NOI{b8w+hZlq!GhrFp7N4uMn@cVksjLX$!KqAXedc;kb zQk?J=HmBbg0%WZQFTGRBpLeGUme)P4L42!4O^uH0Kaxa$g6aQRK~L*5JO}daesjI> zW=-|KT-#7glu77jRt{y3;ZZT$ZD?djL};X9dn>=ym;-Pj!9k^3=V9*97Jx>PDtX@} zT*D?=tXp5_8mxiKq8|uW_U=LtA)SIBcx_`16+t5MVA2l(=p5ksMd@no6}tvc_akFu z5-&al&lY|^C0e5cT+cQ&3$3GV#-S^w?-k9f)!*pitkunpE3#oYe3GQFs|&obBn1 zYD9L=r3Fyd!h71Tlvd7_NOizJse)xPU!LOL^~_<(DcR5cBxrwr+P+P(|1np#wLZL9 zZ+-3`6&nzTa`yPGJhH_4Z;@?CThb>odZfKjH#2&j+%8lWUUKHG`7EgII3r3ypv;c)w@22_z7`J|4MUvB#j0gAoWYroaIcjy6(g)6)K()UR zFubgk1pSRtIYGVkGRf?R5MaFZa$B>|YtU3*S0_e-YeUhx5Www)^Qs5|bSh0!@$fz3 z&W8GEe^zKCI6496eDw0X-S+7*li~MYJaX~@hl@FDvf2Y%`#)ZX$+T(@l>bd}IG>{b z%i{V95~>&pDfpqsv$nqY9)|b-L!O!KUo9I_41J*c8Uz>pFKz?r@&1=)1^J%-mtF>e zdj5|)2H_z8e;V+I4__-=uPm}?{E}|ntYSN>N}D-lL$rYD>{_q(H?}A!8vjqNjX5+V zBWo1X@Pg^bA6u%zF{F4a9mh4Ek*!|)FV2<87TJW6ZCI?S?y1o+3#Y<@F@kq zyriPAW-n;V3Y+>rI=Zy9bZBVk9WlLZX)qqk&n2y;noqAmFjj?Za&%#drhjJ!fijIk z)BfjO+<))z|64Bne+N+O74s%wEEahR+2Z>y zZyMfhD#@vc_=8CcO;zT1M|OyL(zLqfmv6U;oR&qNbae^|BheZ8v}fn%7K&-9w3H08 z>%1VfWGLf$sh`@9T&j^B{nqa^-!ZHvaI z8lSgM6O3mVNyBjQe%y8;Eh>~B^_kH@QMp4yrF6GG{4oD<=udfoViND?{!uPp74)N1 z{%L6NX>M>JZg=)Sy8x*uA=5GI0}PI_jg6`K=i1Qt>iF8QT2FM^Y$}>=it$gDq2iFE zm+#frK)f-I8D17fYK)%-3rPMmy0A2y08+ukR$E`XW@5N*W4Ui+Yz&kqhWa|)OG6Vf zZ6TP781V+NW*?G6de(>+{7!eq+fVX!VwGoK{6fvej_)I3`X}trFs^G~)H8FqRMt7y zR#sNmFmce${WEIq>)P*sqd5pvSQCy4sbFPs0KQmNg+>cj{TKop8Wffm=ZXvh@si>2 zz4_0j(KOme$;@f0QI`aN!~2cGGd1wfenB9NUys!5U9z;9Bp;(GGEiLzqGVME|L9QV z|8s~K<8zf5>tyiJ$Wt&&ZzhhZxS_lohpJqwPHGANBM)sv38JI_Jx(fryaZR5Ba&K;7n^sJPsBIU z?S0Ds@r8uhBsc_RWo*k7`(#f^TweWiJr+Y`{0ps+PPA{XrE`A&1{Bb*XhjC>YkC>k zG$?dfrq;GL5w_Cd6a$%tQ!zQ|U&IKCs;X+QvNbVSGcvYL=9`zhMU^K`m*7oP6Kk~l zFUx9Br202)fN1_?z;OIWB_R5OZv|=Z`}}j_RU0D{#wh=PHt@f09JqyogT>nsxf zMXE;VW%_cnS<1gNV5WpsuLJT3Akh3#c4+#hmzg8~bA|;=Xs=P_DbrPGaimooOB>7s zVrU)-2U74NP-xc_7V#fX4&_EZQyy6?ujC~l7#Lbw#zV|4 z4AvC#e$2eSX&qYvIR zyL2nvzfuYQHx6QC55^vL*Z=-Z) zIpv1w2A?(E9AXTKfK)JZaD4eC@}&9 z_)ktAE{n}0+;=@d0p;#%uN+63T4`mdqXNIC>uf*t>6?7}{+RDx;hF8~0F(U`R$ zy66jG4wIP!kB)0g45$S4TvThg#6A*^jmp0 z#dHP#N*z&|b~(DqT*eQ8zVS!GB1%vIbhXcE6RS4^6wLbi78ZTJArxgt1Qt^h@NdwO zKaz10BYk=wsK&$qK(z(1;yc@0y`tlB5?JRAFIt!%q#a#dBA&U;oIH>ee4cUC|5)j# zXuPQs7KeeG4j5!W=f=&pV%XG#VDsr@HMI%@+BVJUC*gc2<_)F+zp(1qIyH<= zP5w`TUHFcI2taNpl#LRYDFotB9n@>F=B&2xo!=D*L^W}fIsFsA?XDt9&0j7>kdzV@ z>0qr0Gi=6muL-flPhFlMGoFZ`m0xSP`7Ov7J`0$@F6Vf3*%6>Mg~jEIl`r=HAmBok zS^TLI!wuTj|A8tW7>PWb!JTWb;G@W*dYFLApW@$feg{*AtRC%aDdc*TZ)WYo4%;l1F zNa$O{`DXpc{#VeRx#XyHuFN7R*)l)VR;(U$L=UiQL(3GER5C88CaZ&s!!-PSRTcAb zUcRW9n06apa$IWZv>H*jRVLSwKn|RaM5?eOAVF(?$Nn2Qs*?dHKV3xcY1n{M5v61CA^}8=|$4u<{Estn3ZK< zo-F%>!}^iB6WIs!DUV6-NvG@Br_2YJaRQ9x7{mciZfApK)<<0bt&wq-G0^mmpu*?unmJyF}jrLDEGt zOe*E(QJwJU-0<9!ee4>%xb_#;Er+=^Q}2q@V!yV534kJCU1M5sspi{HsjI>>CMyL2 zr#})rV9PekZJMP~UWeqhN@K{^+-}SSj9gY}{6Mcz!K5pm{ z(w)Avw8RYOtN`*LkUC?I_-JMj8jGyEnzc&*q;6w`CjY}!Cc|*|l*{g7KJ}al(Y!`! zglAth3mDS#Qi~EO9~Ek}OIJ`_!()@-Xo$e*Qbbs6ZYhmwF>B$r_D9oVHwE>|!$Yh6 zS*W$Sesp}i6Azu|cKV}5RQE~*I-A`o-1tXhme8Hwli6;uKwjxzz3@i4zW_E14&-a+Hd}UU@=KZ#8GmfE-x(bL;*RgW z=B^NHIK@mASpq0k9TP3o%RXmtM2M_Zbp19Y-V6PRZjdNwl->6NoneMO?>$o%vyp%( zp$w#?B0A6j)wThm+*5MQyNnxhDP(hJ4anIz?1dR+RWXhD&R@>YMx%PEUelKM;?dIf z7;AqmGd3|c4tPd)yL#yMxK&U`dRkW0hjO@v6tK6fg z$Rdh>(^JbcID_lHo~oEWYqZ3~i9;Rxv??#JAdUO}dbiq#lCpqmJk1A*2oa9U>1eMO zA3QlQ)OGQ*h5iMAyrjkJ8K3pms@Bh3NO>(-EM6i92wEr4N&UvYrsH*zjakBTu`Hg3 z0qJ2prh9?u2uipe-Kq{#zFzm@Vyxw5fjQLXYHmzLQsw}}hT0gMD6z@uti z+}68^OIrbE$`LYIA@~^X(B1s*OhyH2U~H&3XFLt0H1ZLzw81CMtnDKVc5ziD@ZGWp zHJDiQb`xR-XzO;mG^aKw<&G-~s&G3QLe%nqu-d|HymMhBXVHYwc;7X~R9MUAcT*Cp zZGXlYTGeF!a{Are+?r-Py&)3qd|29yGA~&E-F5x)md;7#j`H{O56dGckBrWm9`^#P z`$b|lNN3#^l1+&y-nUbAPCt8(Xhc<~w_t*tF3;_&)SP3nh@7o@6I5ZR_A6fJwn?;9 zc=pi1m=?_*`>%~Wl@GF@qPlI*^-o&lWu`C)u&|sztR|MNHssCl%q_CnXy|(OB|{(~ z>Xe%+t(LR4I;{*DVF3Z6JOa8NJk6!0GN&dDj+;$)C_g7VTR+DJZf$MBg@nLHrOHT4 zqsIpvNac;JXT-%hUTl~jFX&A3Ep-#3#m2JX zcJ)#o@Ho<~a{AZSsxGQUEzZpu8JVQ=`J8S+nQGgtEp?5{3Q7T|+C!@KUS3#>?ds}c zrQ==OD5|zFj!w%d-r54U>sXI(=jZ2VFQTKzGU_x^T;*8L?00^j+_vrZ#_JR7Glx zpYH4qy{lf|Tbo)t&BxkmgvHr4&7x8QG8bdQr*yzyBa@4X|7ngeQ!TDU_|`lk+Cvkv~_dm`M@NByp=1F^rtP{mqe9Gu-zGnYih_y1B zp;$1A|Fx56s-ij$0gglX+pK4^WBCf_oA&Me_8Y5|iz= zE1<-oAKu(2kX`tO{jlV*Rt#BI( zjsI4y{F*yw%>t}CVnj>UYuWxwI!66?wm0f0htiHl$I!}9%)>2#Hucv=}EAs5y@3mo>jHwn+lVCEiWCnpi zB5#L7$olx{{phJqzhel z*NSQ4nLUqLieFDaDDT2A^kplZ+T28 z6z-N^UZdkf8>wmQ%HS+tuOj^e>nDOKUcIfF9}EleUO&t7k9|2zM%>kC-7iuuI&;4g zSegpV4D}Rw2mQEJh6NJOgvRtvwWm#F+SC!#*5j5iF8Tf%Y9X z9f1YVfaBeip*B=<;>Q@6eYf<(u)1Vk+Y83bSd(Mbo6+m$C_8|ZXJ>`o`A8P_mE2wy zR+XEh1}bZnAJ#jRE|~ksWVX8Ry9uG*99ySai%nQca{<<8a8Pb{YWh{Uw0GQSni;;` zUtz$;*Da6$*KQco4Nr9t=(~8|?)gG;M`dwm%2&o+-Jx;R_{I*jj&!e}+FDq_M5^qD z^9XU#-aW!KgE+ckV-yG#GnSsJGx{_}BW=!W3ZRj;h&2}bPeIrsO{4NcrVXE#cEQA8RhO1kd%p;#;C{NX4)7UnO?gR>zY*t{(L4r&b=io6P15 zhol*!$sbMbV#>db22fI@E;lf1wBGIg7O?r`fPGpg8^wj+Vn5)Ii@t5ki4)Brxy8nV zhy&KFd7I9m-;>lj|NHwQY|R1o8{{M^hpjD>S^z1RRz~H;=#a3n$)-K7E)VAk^4U5# zoCAn=P`%7{wf6c~H2Uc&90dghn}w^&bt%Py$V!NmY^<{L+`_`#qPfqzkT(qWnH?g$ z3UJyuHM9hlB{T!_p;y&uG4{tmV)c2?8Iwv96*(|8#Cv@$$|fB66^25JnvPBgkvKT# zvT$qWw%-{FW_7S1;!Bc|cG}HOCz71(`r|ucjxurvejP8( zqZNi5} zm6ZBM&+Cg)&JAa+%uWKQ-RsNw#LG=Mz8LgdbM_X})UEBuIjm5dRd`B0bjH2>v=^K32BIDx~&b`R$1Q3*Vfic!Sl6x z+#XO5I6xP$6DTBY+Ppl>>FsGBew`aGI;uqKfLm?q>drgvm&Obo>>UPzdCy`!dB28T z2MzcMEqiJn9$$OHR1Z*%@I2O=G}_)U`W;{05N6w$ms>fwFq&>NHG!=fIk zQj)u=Gf_<>vETv!YMzAhJLRXxr6##pxij|uS<&X5_fE#!^UX1F?{TXPhYxTO_yvk( zsb?;Bx7arKD|gjhyiacHO0m!(sRGFq8aqsg+w0B8X`5P;c&ZbJ94a`j}D7cCF_?DMC zmgI^Y?MuO;fHt1Hgr4?6?cMHs0GaNk9|3R?$gbE7+K8=o(ly8kQ4OA(O|JcP^z_SG z4nxlI@$qh#3y9-RYroLZ&_qr1sU$^8i#607MhTad(@Tq0KB}TI<>uvKx4Gw=Mb-D$e-%8VqVFM<@2t`?t~&F zmKS@uKK4K{$m0M>MkKCvsZ|tiw{oqk(O*TsxWLu?k!Bog)Y^9 zSt~uh^6%624S6@;_7IUVN+Dqr(M+4@qI>j<)*D^2@#c|- zP?-MUqChC$;>}gYl&M5J`;k(|?j^!y{wZ}rl8W0G>$S^eplz=>=<%u#mDF!)mmxm7 zo*H$V{W!Wk!k&8LUY-)^ZD0Da1Xs?%Y-2KB>5dZy&QFdBK3*zzTVZ-Mp# zli^Lx=HiC7*5b|2D~B^i3OU00EL7pchpUJmsH6q-_fLfnus%1t^wr-OgWJ&$if=K# zRJM-!G1dv)1Nl_CvF<3%Zn8Z#YI|ZNbJ~YS_j@=`^93~Id?u`3WaG#-;eGrnawK7+ zlIsc=w^#6j*vf57C2dr&?#b}p&DCt(w$erO$EcrePIN3~0S`%h)6>bZiOTk^k??+z zWQP-Xa82r-i&b2OnO9%8gi|_c)YW=H>%p_XdYN=WL`GrB)KW8Qm2jA9 zUkqvNQU5i=G<+&`1`# zVdyq&fLDDl2Z$#ir)^zF%RZkbsz`^bn+vB2>f(4XE!-p(vEpiOeue`F=MyzSiU$|@0-7N4Z{O_ z%Q*eQX%h<$JBn@;H8i+Iy~^i^ok81+Thjgv(X;KV@j$n%peB4j(Fd|roxFGAW6MXB zWN&Y6JS0*#rfeqi%dtIgdVUaI*1C5uOyAq)fv0g%E~Z0~DPCV$7C)=Lz6|H(mKm@c zzz-aFfuot?ZbAAP+(Gcjh-?El+lH;775!U3M!b6Dg{=%C{M~UA8|~E5@U7MzJkQMo zdAfFTPGaDO#E7Cs2EMZuZiwPpxBKuBCznX<7e1rqN5H1Lc?Ov9oSf;>;`~V$k}c%> zWE&yX9xk=1%Hzj9yl)1SxgbENQb5_`j~=y{4V?m)vN3-_@t6b@ujhJWV$XB>#`5>? z5nS^?poZg(B8SEa>78%rnCx_lQex>P?e9p?aYaR849;_N87fI!R5yOctpG$yO>LDz zod+%Q9gGjq!5|&`kV^u$SR|9o`tc_4p_NWjsttqJavV$B!g5*fZDO6_R2Jrf>~IXd zB$h>+FO0y0C$rd!Us1ex?3Hk@tQNE3P;lAGyc?B8V{voQ+OoV4B@v=ou?`|T$0!^3 zuNT0fR0Ex*d_M1`RNnCAn&xKQ?`I!v*3}gol#w-+E9FVu*FmSoG1sn)?%4+p9?mWe z*kVOQj8uy4qw9W9)s(>bdG5q=~fUY>{>-Ql!HlkUr z!tOmf+SPF}0Ztx%JEPOC)4?m<(8?3DwM9z3y->F2 z$BSB|J@O~899P?d(h)DuEANNt(D|Gm+%{)_Vj)v?H&g9$eu&HDlG-kK&YD*sZf=Pw3V6P& ztC5;o!p_$P9k#ggroqsmqm=mgA{|aFqWL{Xz64deX`HGEvfmbpD1bC3we%qWkzi5nA$`vH{p8xjH z?AE2SZ}}|ssnK@t`lxd~t~{Z6u{im(QB- z)A|b1o$+d(#$dAd3zmGOu{y~_cG%Z#%vvLp6^~Y~frjg*V#DxpDf)cT@Gz%rQdpM9Wu`XKv@)@1F0hqJ1u~98buV6fzP|=A=4Bai>yH z5|1y#vR5M-U){`9#>EJ=jm*3DjDL|lGy85TRFDeK7h|QJy0O}>93#aEegit$QS?JM zD2k8&B}0Z&6L9eR&??CUI-xc-dX3;Y!OW5Gr*v{EaqW(oBm81)tokR(KD6SY7tjE;yBANu4 z){R~Ih7?I+(mI*Nh;g(C%l=aQXdLX4k7|PX3iOH6>agXPWl_w=xQ*G><}PU#s=@Be zP4~<4H66A5qso%QMPYhN&qI4}pAX!kPxg&zX)DLi>8%S>BYfOhy)`;*NJ=|I2&RXP z@fM$R_6JF&2~$okt#c3+fkzwKoM$vyu7V_E{9N$KDL>)29}wum-}0M{eBqk?CJLoE zD__1ZAKX3|chtZ)_Tbuoa-~NAn!v@l(mFc=R;^cCpG(t9psC!YdI9e};V_oA$+_y3 zP7w}1Ja>P`cuIUCYv2}b$9KTn(OeXgYINdPFOK<6nzeRZ-Ga`&OS>kaVgu83+lOs_ zv_wZH$pZp4b^*kk$tL&XFaO9wt#&u@faESo4wG!42@-hFRB`rvz#~GvW>%CUJl3iK zFf8*oLv4@h7msk0(nH_VaO|1##y>#{HWhO`3iejgkkOYb;QDLbo(rm<@pznt(~76N z3m(zu9auJdOUy}^{h#1^*%_Z78tyu6jY)OA_=<7#%8=6uIe- znqV~Pqf=1ivlV;HX$*?TB_+ib%0LbE^%a+e)9LC^qN5cpzHJs?U5(h=zn-kQa9r*+ zsB~6Ed31Y@c)+};Nl1WdvX^hF3e%bndMs-_tmo=n*E4aH@98l{vI;ud*bgi>+Z7d= z13Y%5>f!WTL9G_N4(1w%qaN}?Njf0+@Rl?d#Rp6t=UE(;IZGvn0(=Dy`JuC$w6rt= zLR4Q&ZwGNo=pULZrSOKPV?Hl@lUaB*N>R) zmuDf5@>X6=XE$G7`|;CzAcO3Z2bTXg{WD3~gA`7im5)R=S>wIzv%7_!3tO0Q8vAI} z1FP8<75$WcW^>3{xhh}V0@$q&F>2v@;%Qg5}sVHzB_@kNggim$G}A~9rac`(0A^2m$=;eBJFkQ0~vbGY>QX!mS@3V=c{Ynu6NlC zy1HJkyB9TK8>n^j*{^qSn5@k_bX~a4^bc3&p1VIz>e#pm zytO-uWQWFz$NF9wsH+hkHTm|!Wa6{y8(M2qdd##~W^pJ_P5{DZi-mig*@{YQBwYeM zk&g_0*t9_4=PG zYjcE_3uDXEx0OAJ3-#8Uio>!~eb_VmvzMh5uxMRDV*>Mjl&>~*OX(005MVt3v8l9y zlj|k%oj9K>KxwnEOok7Ia!1;bHO(dAanZNsi}g^9$fv=sLNa!muh5 z;5yvRUmAI5BaAzb*5fN*+q-Y%R2IbqC|4h?n=-~Yy!GLw&h+pDJEb5gY%?Ol!7sSc zsuHq~>&GqWjR$>Q_R=OdmXhOZ5A0JGm1J-8%P*U&;5M_m?vaz+M%JE8!RvFmqY^-- zrZ(!VAK(}h-twZ4>;lLjU!g6>Dob`&p6b)b#isdIvRySZ4TIvml;i3g{F$zn+c1 zu}$LH?`DXwoN;@YembbEi z#VX+OwgZ*Cs3F4khdL2|i3-N8%@j*<I;dg-4#W9 zTh35j4s^Nlw9ANSZ`d~=UK#t>lwAXqf}>hl zoLF*3$9iLFmS|XusmRt+-OWC|2A^_<@VlnO@1J2aX-fI7%-3eW1q>#5{vYPvJ1DAd zdmF@nynuj85)gPLN|u~Kk(`=SN)zBksDVJjyu9ec*Qj45RVTdgsZHb0;F5zrQasXkhP@2KFQB)gt1fD`5$A;SpLnYNF#=JOzcT zvxDeO`vrs1%;m*M$piP*9TV}8diB$kBz@0ll!>(7N2!~S zpPy9nb8@n$euzQA-K|G^oZ~VOYa5%;w2`Bt!R0Pi*$N@JuSsfJ5lpX#Kjvk8P*B~~ z>H{)IReJ3|n3$Qb{4ZDT_P^8DdM6Qa#*D77v(lm4&S~NwXAhjlTKo0XKRr=zRZpTe zIQ+iMF)jxU@joasGNUQ?|D)X`0mk#C2v18*{)lr=+ZlmFZR_kgkzj3uk-28k?2+ z+53`}Mn+~a7PYFVWj_s{>9Of0=<==;0!~`X=ct-GH>YDtRHMt0|4CLK4UdO=f>!B{ zX|2@x+l?rLu{G*@8uPCLZ_Y?N!WjhF4o~7iHay}CW0Bk>zAEYwX`eA+&)$ioTUX5W z`)}-`56rx5Pj^(xj%j3#r%&46f48QrDu2$9;9u*Rae?+Vv^Tb}kit)uOVM2jsca_4 z^Il8vhB(#bT&#b=KesmexUZiXmz(xZZE<}V8V?hPr3LCjwnM^zP!z8aU z6bjhH13`cqUuL{Ns9KfCvzM0vFopD{H#u(n0TA!Ey>#Ih6x1vr3iV#NjFGl4 zy?f&?r08!#%x(sHm~rI{)@8;BLfpUjp`TJo<^0uG?Cf}FBquLBF6cp1+u?9)x~N{wZk6{SK{LWIfJ*mV}>m9uIib8yY8l^vEyWaP)j?2Od!?Nd{wx^70N zt706S5`0UCqUfsE-)bB*=8$b&nn{hFOpJ_-Qjd8L+ul8$WV&aVfH}Gq+$c{r2_n@Kf!{dm!hvn*2%;K_49*O-zsFH%yxAx`K8Lf3VL& z1D-Gd?f7i8$@?v1#yE9z6mBy5W42dSAckbo+4v%^IJ3Ux7y9>dab}4HRCl}WMt**N z*qs2g+N_9Ays7>Qz+>H8>tN$0cD4@1>B%D1tvNYHH7%v4h(dan`;xyp^V3r^T8t01 z{u^^a+vL)6wh(lW;|ygw$jU_rVW*2rjdtB?WfN5Yd&y5cuA>EauVT2?TvAxyR$H6j zMV{?=Crvc}gH>pJjeZ;5ZDA7c>cIa72rdUp14M|-cJ9A+^j_3ABLlYh;49C0*A#vH zYJCbyowPd3??WJCML0N-dB^#mNPD2G+*)De8YR-(JsUh2K&BzxyZ)e5{Aev&eu+Tk ziV!%M2S8Iytl3I;Hpu=3;42SN{fm2SEPg+?j3M@K5%ZS@41$b|MQ@57Wm!TGJ7rnu z)X&m17B<@=V~v{*??J&)gJ~9ns3)^_%a0+Y53UrN$b+a!YU_~F-zW!x=!&!&PJZ9MxsA__(~H`e#BWT$kUy z6=jv>ADs9Mzy;=Se6a#_j-ol({$YoFdDlZ8f6tY?#(Az{?Euol#A#j&K!I~|^7Gl< znkm;keWwQ~`?nF~U`1aU#|K2foeYZEW4-KMaKJZ~zX0t2GbPP`p~!K_Q?HbmwBN=o z1EM#s|3dh2&}b&fvAjQ7uws^kvM#I=u8!Pmn-ssFV42;f_O;*!z6<~B0$`g0g*O6Z zChB|tfQn;l0QPa4+0sLj$7A{>r`78@W5tw10a4B^SjusO zG7wJ_%y?izYXKUC!0QrL+P$1R#N*HE02Fvp^)=1GE0HsOZ4TNQ2;zJE(4EO>mX5C# z!J`C78GK$QP%p@Sa%f3TB5NoQv~>g~PyFCxJ}Ib(Tth1t1Yw}N1R!DH8_(Llq2|i~ zIx*yY`*+tN}J!>CR6YlT55zRdn;C5P-3> z$zuW6NdO@NIc8RCD{H&un*a-jV`{qUsjy7E+w;bPgcU3;Ak$qjDszB9)s_QKNG>>)7i#YPDfP)d z*|n&MwSb)l2Sh>J6OYKfvuI4oGSilGa#q6VLFHxEs;AiYLsCF@2x9N1+d$>$}yM@0-8Ln-DBIm&i}9m z3hn`Wj%}|=Eigd=oGe@q{U%n$N=C7#_mi?ZdwwdZMUBNOIX`EnRMw^vzRT~Teg+gf%@W2^e6`a%wfNK$fFpYmVrqccSHo9INvs7iEq z^YUeef|@AfQjJ*xSz|LFbXf$0|9KA_9ie5qqQi4*QC6j^uTh)RD(e)k&OvN~0N4<+*fh3}kNmJX8BP zo+XbOZTWfN*>x|lHw2#)c{E?oD}aWlW0RMMew0=zv+N=bel6&LSgu6}QG-$O)@ z`^Rz64T+nvk<9=Bk8?R-+47fcgxW{!>BB!WB`%6O>7@{>&P^732^rJjog4F-UwjwX z=zV=;gR1`w-WON)qeOfsc)5A6Y;K;vw!w7a_~H_w8_w=44Pf#FIrqL-HPo*DV}o>9 zn5p=qqLK`iAXE5XT!*+3_v5bun^K2MFW(osYKKm(KE8g3XUuJm>IHXW!(7JDOOe@B6NYwNNcEG5T7m( z7O4KP&_H_>S$*frR!(j{D+^0o`z$%YRojEZ(eVb?TcMZYHK|nI(!p}^_iumnR5)-L zDJz3kfn(DGJk}q=gw;8|Bqj^k?;=JwD{q#E2#-PQ^kF&-T{V%b%R{j~1 zFApEl7Jmp*cn||5ZHLne);2SR+Yq?mI@$kR0pxs2OdCqbfzw0!x81+?AaC{lqlozA z4x!sYY%C0X1DHli%E~1VD?~+W9_?<_+G(>k3HuGfNX^!V743JeB5yRMJFa|nO7KB2 zK&WS4aQs=fK&L8bP0F%}p?9Wxn?mdA`Fjq@dREUpooBx;lU{;^HH-E~89y8RVR!;> z7@5cyqAD@@y~Q|ss3pS5RA94*TzW^;XT!(f9h3EJSV&{8;2#qJT>K=v^F2H+*I<_D z9Bur`{dgm2lXqxPmv9v!Y&$sKuv5gfKR7mMYV^+zjT0Hl*ZpttKb)61{Dq6y5b+w7 zlo3~#Dk?IOazp~W(SGq%C%7Nv@e1sL9VGN`VI>9t_8!}?V64unoBc$2MR0iR;Xt}& z0@M1s{+xF+G_c5Z!#Tx%;qgAau&G>WY`$yt4z|IzG(eJVyaw&G7Vol*`bOqqgrsCa zOjlTLkNB|>1(U4L4Pd+aK|sY+L;+9c)}vApCAp&7$@jtnbo;iihtOYkgyiBmS_Oicw}2#P1!R92ng21 zE)up`*_h4;7FE-ei4;^srl@%mau^M)V13YX(yVY!{u;Z7BHss)nszbKUJCz~hr}T_ zvtuO1Yc@KZ{i+?cZ$A=ZcrceDC|$5NNQrzW+w=K}H@cr~@80RrsZia-QIfh;^$MHj z>M_LVKGO!mxa@Q(oT;lwy{E)ud7Itsc*A*U<^TaV6mYmqD2CDx{#ot7;60PmFWXmj zhnV&#*Tei<#vMG<>Z!TdcT6Sg7B_EYvT2PbbJ-U=kwFJa&t3a|Z1P5vQ5;3;;r&?# z035cFfIMmUz@4n8C>&4C2U0(~ZC3S_scWj;#ED6z4z~EN`kyl+4to@E?d!6Np|O8{ z{ryFuj2uhW1FhEm9Xrt$*&SpfDxxU-&)08;s6`xl(&t~m{0;afUKHO@Zi99Urx0WA zH$vM^j=)53Zt50vwgzbb z6Q^tZ(NoQlV5}d(6B7o1K>-&(?5JnHRb}y84<$_*_gIOFH-H}S`XqggjSl^n!|M*D z49Z`<^*vw1*jZlA6vkKcCOBKpnw76%%H)i-c|P#XW!?|RJ`bl_a~2xUr1V>5FvANAY8Y+ozdeo+2Fr^FGK{i+G)kEfkpF`aDTq-IAv_oy; zkDRNfYF@oIVxvmhZ;7h_?N9rADL8yGW|v2?p*G?ctF&-me(jW%&63cJaf@*&J<{OF z(XL?_ZadI-8bgg9=aJA)ZFbpY?eCVtc$o53Ry;kxhu)eaK!>y*m>B6n4+_xl6VARh zQp4&}RHEyQ)ac<^PLe$0Wwu5GXJEAoFt;n=F?IO0!0X+GslC(h-WgnmrwGW{*E5?w zZ1aW9k5>H#%H5hReo}-Xx=&aeQ)RIpcS?K%nB=6tsxzx%li8K3Qf`loY<#laJ~U0k zAU*uedyjvE`(Cu83(FQioCufxe(6*)YG42pc*XyEt0B8V)Isp+=iD?ElQ}8KZKqSK zXFoJ6KiBabJ0Ir+ep}*yj#K#dtli*WW(JQ<9VnF|p|0 z!`N6d2k-5jw}Q{jAmWr1P##I`8FwC*!=*86j_O&B&{L6s7qf0YOMQgkw%%o=~oKt0$p;O+1jH=-I=;dIrv=H@YLsQt-3-+aM#+$H)StN*>yh?kJip zzyjR~YLkj9LPT(8&{u*DM~7RCF4M$)k6R6Uj?J{}e?~eHoULu%v!0pIi=_D?t5Att zAa#WpBYhC^)21iSoWiErWl^W%VZx?CS}ai^PS0JVH%f)=<$kY);%3|%;gygP6aFMTevnSJz@;el;H-F6m`p~iU@l}M~P&Y4=xt@JP@3$~NKnAN2N*hDjx27SGUTm_!WG+_^g= zN4IhkYWHm&RrzW|kmVh`BFfleD7923*$ZFaBI<|IZsiG#;)TZ}lq64bi{i<*Zw<*N z`^rxXo_fSyx0rc!7*TBCOf;KY@_x24S0~}~`5KAz<{FF19QrIa?mjpz3#^Z|$$uBn zkWKC(-)DFbYr9Y<$TQF-d9UgHpI7(rJVdbLB-CYrK@?&VFMRz30*0 z84<6g=?m_kdRYDM6VD~VqaH&m%b<^S-vZD}lQb2!NYp{sR1|!MtE%qgpuQPC^DU@* z>V*DsO;f>eIOg?M#SP0bdt6Dn%hFGerg~~3D)@Q=(Zg?;5fS#Z z2uSaDLzi1DAexQU#XMtob+y`RSX)Dd@JiDer1qaPU2NxPHo__W80Q_#%UQ7*sQ-bz zw2wT5UcoKwU31gLKoqZAz{r@jV7gZ|QrjP0ENak0(xnQDXmo$MIKH{O8CGP0`Zi2B z;AwB#(V`b(Ss;Gb6mjYGxWl-TC7k*Kf);~oJm@xJer&bJ4_STG{cACXXb~x{GG0v_ z@cY(j+Ec5+`ZBHqS?V3c@=nS(N9~L|xJ@eP+4r|>Fc(D-kIkDUk5_AKTSA0&sVd_ldV0OuYb%l%i(S@|!omCF>>f zm}eE$KGwxA;$1XnNf8LtB^QdPn$%|~{77tK4N*@K*gsWQ+tAVNe~cZV&s6)K`Wx$< zG*fdb1mk!G892kmVoHo3|K#vIiFt5KlCz!zI6a&Tsw;BW8~ z3n$U%)-TtPSY`{YR=d-+c?@wg)kRttALw9fY`8Au{W^;vdj7n&`|~SPLULu$2~6%f zVL88ff%v1bh^{=~ekZYosamCJ#;icXsI-;rX=Y5v0jl)GynVhuyu4J7z*Al7@-0U* zzGG<|7w0x1u}bXcj?W;eG^$^`3j4pOoIdm#9JPph+w7OsY)YbnOJh~rz~Q+jwAk<7 zxhV(vhwldFlw)#|(`FNolp|RQI>}gk27cDhKao-AhM%dWAGiO?PZ@RB0obsGbskmn zGdEd??Fz`O+a@xXru1_6Tli{{;V%^t76`A@6QVL0X#9_{;dQ4^1j< z;_xruWUWVD?M4$lC%xEoNa)Ai(|(W#SJuM3!R7Eb5GVrmoS%N@8l~R_-Faml{+J%O z{3u)6B&s5*zNJ*}(>O#gb99Rzbsj|Ob8c^r{~U9XbhIA*0>ZnyA0DqQ03Sp5t-6JHZsOL6&!!}7Kc&92SnHWfQ+d$V>gF(F zaim5m_c@0e4j!qBT4;%IG!_LZ8SkB?3O1B{R4^Rz$_kK%Yw~)oNjZLc6tCC-Gd~`n zA4p0kQSSP4=@j`3pzd%SG69@&Po&NSkDjd z+w-lJ$3{15=y%(r>qr%j9e!sCK1r{bD>1u7kg)Wh&#{PdK9)6`I9+Tc3TO+NTQ%OS z)SDs;G?PY9uV@{vm)dX|HoYKL`Ad^B((%ma$H3|W^QKs{WSmVw>(*8=%cFB2-_odx z=Ffmk%*kmVaG`KQfM~#MKs^b)C>93X{Gw_*ECd3Hb;E^u)x>a+eefsyQa`p6R^a~AQe^?B7d2*HHYdBd-aj9ZKe$%aTH>)d$S*}S9j;ntma#=! zp-v4F%;_&7U92&8Jig`uok040?lzYnrmB#>bkbu#)cC#&_esyXgL=Dibeuy=gmQ|- ztK)srD$blv#;^_$*8U*Mt$VHts;vep-uZ^4}MVf&1u@5<3UOqPg?asR!f1?Pl| zdot@rOC+NYN7-*nBgFcnV_n!pGKw7&xGw-YWK(kU#=(yF@khOEe6z-FKb3OrLGIkg?GSY)kJ{~bBcww>BKIl0MFLPQMq5Ri90 zO8e$I98vXLWi~_NcN;N$d3x)2O%I2?QTugV=*vs&BXGrTlfGG!z~;Gh|Fn8^ucN)h z4)&~pG=od?^}^EI7x%T`6n-C?1kp_(DU z+_-W_PC9O7Z9nrS0%!r-Z;Ag(cU)`w^loFo;C9uDs~TEfawnj05~+TP`&jhHg#P4| zc;Ns{x+1=RYWGQ5rDsVA1xJ*4g6HM#@)jFC=bW3QVe}(vsZpMeU9y(iYLdi@%jg=@ z^_jvX5Eqov$Stg~!k+qTid$I#w)n3PUY+<)7qa&=*2(HxS(gY<%VYkB!O{@3GOM9^ zscq`ugc6IfYoc=(sHU#K`f59^ z;twg|LAq?0@qX=bkii=`8is}1qRT1)GWiXKg%);B`X-kY-|o|XjKY&QK-Lw>`Q3^u z@t;(-*=aIVTHtRTYHfnZ7>#ImTksk0Xi{?v8T$_#KeJCiT2>mTy4Q7V%0F@ zK4`TsQ4%8!I^&Uwa_f!Cq{q#KE_DQ`3lX_)g!SU~$wIG%ctNWQ!p5I#hg@+~sATZ9sQGkC-0h>)6AR zwuulP=wW5tkOjm{stz(vlEH&<+zA`9vtCf0;A%^|#~~46MN18Z-He6p*oN*%vC7 zQ184|!AawhH2J*viN=5?>0!G(U?QbY8omhM3MRp-HHvO0OOL)l0_PF@J5%E4#cc$C zLht*779+3>RUaWp_a?R8zAB;C2d!UjOk$dxPELf>UBCJfnJG*&k_U*wQuS1R)Ir?l zG3^xe#P@x*Aido7uJ8NQFIlD?gMC#%R7^wkll`3Hh1mUrV+gX6K&>+mu~gjTLn;P0 zY8DsJjovbf0GC;uIoz6h;?_D2!7iLwJ0$e^+V;l2RW3gNSt{RS20z-vy30V!mWOf_ zHn{`y8+o6Za(!?rKJFPXYU(-6puBx(#}9GW}Xxs$4S;N)jadz zu9vduXqo4cT_)1#e73Za7wVsKvpL0NggCN9+K0o0&%+theLifuKDf>+_)#l+eHcq8 zzKp4}bd^E{>JHab?3d6Wht#9BN-@(50{ZLeS8hwpJr9@cWaaR& z>0y}3H(X>3yd!~?|212c(f?>PzhdgGYkS1^r0pd%?0D&^EOA2Y;LHBz(tfJx<|wV< zg1&?7n`W@rQ3Tf&g*vl;e|x^|FzVHa4enWK6fAHEt5>$3S;5E;csF?fZvWOOe@bl8 zIm6Gzp;nV^R$I(!S4S)ld%dvTD5Uk9?XoT{&9Tk4JL~`m_@XL!8Yp(d^Rhg>)=~m9 zv);lwgqxEnMG9bUK-c6iSCp!!9jN_kO&tI#&9HwOr%%ux{E%is`&D=C(Ye@Ca&7VC z$>|p1$Bq>c)*|4OuUxrv2fzx)fch2hA9fYc^+|APmp+<_W!$WEJdM96N+LVjJ^(t~ zwXNF=Wk%s0uAeSBY}f>L4ZsBCqdALfXe6woQq_(F4sKp-vg_y8`0uai!42g+J!Y_a z+YNE4Y=$tQ1Nz-=E9Q#Br6|dz^~9W|Vpt7)AV!|?*<^FkxwbEE2(gluNgb z6xxJ4OP!r3eRJ>nIeBb2GkbO_Txy>7@V*DgDaz=+cx={qKm{8Up9x>p(W_af`A*^3 z!*R$b|LSm%paUV{IbO!siGJwUWW42bl2ta8*xsFwQ;3T`lF-gHoLgM86c2d(>r;+2 z1G-22olUgsJxwkSmtO*#?%2AUUPfg1XHH3)W6fypk29BzuY8~7pK-^>6VHN+L%DqS z8hVbVRpWZMHr%Nt%uPQ}^LKYumpIuPwlRyphWYOdd35~LYD+ppJQM+KKidltE(G!K zt%B{>cB(cjKZq$Lpz5B~|0?&%e*=nVgKSw>uryBO!-BWW?dAUz$nw5u+KH9nTx< zPk*h%nA=4M!8R}Jo0_Kc<7)i2;EJL+QIQOuPvpKD@6VW@{-`#EpOFMCzF@|ngCS_t zRO|5A&`@F07?3B^VWJ}icbeU3_VXO(t&*ARLq(d9LFuHLJoLMN>Vy2vTd(%ckPy&l zkrwI$oq;$i==VYFWQOaMnBP)I1CK0Aj!h(rEIblZ?U10yXAJDObBSfXa~KoroOUzm za-Wq>O7=e8^)*Xre=(QeXSXOBqdgE#xy&6w>BN_F`Sg$rmEu9@$!27Lgg3vCC>Ja% zzq0isA**`oh;o8nK$Yie-By!z9&5)e0lujuY~_q*Uvd0`tn7tSz1w{8q>A1)hQoMV zesa6aW1&-cmA`o4R&4S;kL6Af{U?;5w@GdvpVr=2Kk;4dQ#?J6JQic|vhD2gJB{DO zCC)ocI(|jIyOn|9-S5l&k^j@9Z)t`OENpqQ+vQLd8oIO6-WAv}U;TN$kI8eF2_iL)NL9%Q;YyjFdR|}-8m$RQsqUJnNK>mpyyD`Lj zR3fp2!~82pGY|{!KSM@R}<@WFWQmBJ0t$i97w9 z&-}J5i*jJ6Y;$e3DK&6)?kCl!DgV}peM;xl+xotj{yHzgF4ztL`rhofC*m`{?3J~9 zYQtdWyNM83Yid*$wfU10rF+o30zBbUVCVb$fRY0d1L^6)l#ksnn0Fi>-;e9K5^z)l zn(&{pZ~sr^Z2!9!T*v>2ags>7xw*k$Mh+YtZf^W=0ur!~kG!k0vahd&k59dxuCFAf zA#{0c-eg00tbYi7fJvz(d3hBsH#y5p3H4{fNxB;ri5lp zKgd4bf8cjj8x2V7IXE;i$A1DK5c7i;PSybUyl=KY{+nzNgDLS|*2e_-#%Ew4gA05} z*sl6nLZ-K`&%`(tP$aG7V}H0e^pR4rQS}cV$6*WV}RI`@-l;oXY!ua0H=`xg;ee zB(eaw+^mN^FPs!dLd?&ExrYvKEgukrdGPDJEJYvIT#u*>29 zTo}L`EdTsDJv~@f1c!$k3>InR74fs@k~s%sfErUz#DSLsgyVo5yb5Xjb<~jwXz6#x z_norV&;Jw*+||%xB)y(ZS3L>LssClsziz$(**;r&An`Woi8kIU?rb|jc8vQS{di~A z5*vQzdj}zIqd0EkLCdu~)byT1JYGGydZ)2mjn`XS5mi6sm-aR%rH$Kxpa`Lx$3jMxPIBJw-i8s4#B{d*X{n>ZS$pKY_s{~iFQJ1`M4 zb=tjI#F{YMAo{xj^&u4T_qK{_2of>Nt1XpT?GC%EKg`rO=ad1&tM1l@)cHzL220Io zcbi_W`Ej9NmB-aRu09%3acWjsE4yt6c;^!;K%F2bGYNoJ+)SHHob>Hv^(sE49%!=` z^eEjcV6Q-Zlr#4P2}5A#muG2{&!n*X=Nw0~ig2yDfGvzU&4EvtWI;`2L`PU?aY|(t zBzWrv=_Fq(mfI=#Q(+;+f$cBix$T4*`8s$5`^E#}fE=@~H~+?aDCer$xM|tyDmRsz zE2F6Js>I~_Y7j(pTjfx2#$d{_1v06)dEH1MRI+)#t*i&~giBz+{}L&lmemXqdljOW z$?v$Ai4Wf@b+(^^r0cn5>^BZ2wLs|{HfgJ%@)?6Pl|`~ z*tQs1g+5TLgF+6*OrTj=m0(FZp(m|wO&H0dIy+oBN5|=QID(m(d2(U`IMnbcDBw8- zrne}(P`_luZfND4d2G7x9KNrsOVZO@@~gcxUn73TMUmCX*n2#Q+j1WIFWd$RvxiWA z`A1dNlcTMt8L)i4!_xsRj1>ui=#Ridx8PY+7aO!!$Q6#~6A}R!4UE z8ohog;W7KYli-i=Iglgo-B(pTJc!Cc!m!1Z@w@iqyGPRyJ*?N-8$>D;jA@>)m`SNs zK33lb^biGh#5XX^X3hk}big57phsO(^AV7}RY^dR2Q&&F21x6x14m5_2B4GU1CAFd z&ESo%mC~o5mNL*3fF&*`92h?|?fTNw(9pn@LB_uCs`X+^(!>pP3(Ngh>A|8#n0gQS z+joh*_U1~sxxsPiho2578upnYPB$i+tNaaQPOP`3Q4>HQ;)TTHc~w4(P||RSjv{bxQq%&U#Z^JzEIECzE{`? ziWP7>c@q&i3b)Z`K6b=wbKTAEv)xhhbi#|32p0lkmu^)KqxV$A#gQ9yJNDt-04ln> zURkx*1a4da%!(1X_9iM!f4{#%r&x~&*cz^tE`98ECsR|4@|fmSl-0+&MeFKoMa0Bp zr$hLxcJdg=UEddZI)OhPNP3*{z=5L{uy19<4=Y5w4g~9HO|n*^=)S#LJO|Y&QsE1O z(k>55hY=Z0BA!Rug*0M^>5qvn8N9#^wOmbD$@LFR-r=X~`9H#o6_0m}2}QldmRdvD z2O7!eF~{#%JGk|ai?o*<)sM!zoAH;4IP@L~n^k$< zPnv>|C;KaqUm16mbrmCmWo(qRhD8Bl`l=+3%S$PAQ`I{e>8|%)FFT0+&yVQgy2T$# zCWBP;q1%(CC6p?Y{fjy5F_Wp$+FG&pS1*Ob9{P6*P8lb%vvpS&PyW;<)$n4Y*etyP zp{vC}>dJzT5LYI9Zh!tGa!x`Uv$B#@s){V>zrhS~(n;=o&lG;P--?ygTW&u}fDJgF zBW6m4K+J$Of5t5zp-PseAL$H$xWBTz)hL}=O*T@}E$=y#0cH>N*$A@SDIctJi@bjR zeR2?kB%|bEyOSVw<{i-zV?r+H*TAwR8$f#bVlLn-6b`WMW&M%iex8p1 zdq)};3j^WNuw9l)PMYHvuIz3&PZcppZG^hcO^iN|E}`uwR#6-xRg>7N9DQI^e<26oE=CPfhA5)j@ccj^+KyzGE`EyHDmMP?;YCWrx$CN)` zEj&SI7_yt6vU0SqB^2Aer{oaPp%ULbpz8Sx7_eu{_vkY|r>AFy6Z#3tE%*bRDr~V&B#-Uaj0mW*U=WE>#+L6>jss@N%1{aVB{<= zxbcx$Ts>F$NGj0QA11VfJjRo@p@*H@9L3&M7Wg@onbz36e7-2mTxc`SJLfn>-{{yo zY&z6OW4$N$GmfL$ERG3v)J)|929Tv*um58=G8pg}CXhYZtcz}@KPV&1i?o;l4aj$V zD&wU_wzA*n-%w(=Hx{yV$^RZN0V>x5dY(o2^&b1-yb|L`vs9V!e%eY`bve3BOI;Ws zyK~FU4+vHQk_8{1_*pH;SbfsTtq1Ys?k+c|R2yrRuvr0)%9PZ3TL#2BfZiqS5v;(p zB3nyDz^y-Y5&Vnc^5{3Y_64YwBS=f^a;JWAFFFiDsDD*rRYGJVH{jZ29IsB4m6dt_ zK9xHA9SYcsO8Y@T5U0}FpH(;N7P0+kk-4+8jc#tJz8VOwoGCBcs>PwAb?giZZ4q%h zf>b2}GL-g1`j*;y(-dB`vO{Z&El;k;Q7tm&%sTFlnr1Kg+so7Hq%F{8$KC!@}!8%B$wPJN(2 znox4g(&(L?r+9oXZ{g5MeX#moT~@X}d|8#!p|Nz|b9*||ISqWeQ}^0B@dmPO1~ZtnQt*5@?@Dd@ z8VIPd2PC`s~w(>l0&^)gKJyGu(W67Uc|E84;=V>^X>Xyhldb-Z03m;|QXwJ>p$;HqH^F z??g0v=*&?S<+u*(0p%)3z}x-L7mJ|5PGbfif|1Rl-BhlK;#P?VU z0rIx~y(dl;?T5)X^@F;+?!2r>q2TdpswwShO8I?O2ydal+IH8g6l%q7G-DL}ntia7 zpE1&0J_n;E9ytXLQKn$V>lpz2+5N^204AAcjCqd=DWxY}x!Et%wfYsq5k9X^bEL8p zOf|a2@aFvdJ9FajN?Y^n$@er@g#-34zJRKyf3g2_m+vh_s{2=NS@&BB(l}gi7Ud5T z*Y2Cfk2rHcBJ`h6;1vRP{(dxIHsF~z7p<=Wp%T+qy|(+8lDg91n8w>Zz-R*>I_Ill z@Olr(soL1s*x~9ZF5o`kiP5{h)x5dvwF{yM%n==(yMXeLN~6G^@2^esKi{hWKG%tK z)E<5a6Mun5YtLg-vb~|Fao0_o&$PWRFO+;CrpyH_>@U&(fgls7iEzaOs^^pg>2bo+ zH>m}jsLAhV{_&>B2d-=ST&F6p8}pAB**0Ro_Ab(f`*f|!|BqXxare(uy1MMm9#B^t zc=^Yg^4=`7#;|!Rh*Q(wKz(WipOI1Nv+gGY?@cys&yRpqNZZ)-Pn~GK;TY8PL<2fl z&Gs-lriQxy<+sQxvTC=Vl$%vWuFKM=*++t;Je(P28;N?BIzT03)-NG(dcTxFkzvjE z%NO&jSV=1Zffe9PLf{SbB+i>udnn9drS-b(u(E;7Q^6X~<0Fzpk?px~cpSm2-agvt zCUGKKX}4D@K3Bc?tn3=E{H7Unr#fH?b-6uW>}vgUueouWz$)(xsX3^;$Yc5hqAud73vuJ&FUplQg> zB}TMAm<&7y=gs3ktL9xC7J(cQNXR+-miC;!*U0T}CYkhRHqnKPenGRw2AkEhWe3-R zoY?gA9C%y>wWknJu_5Y_H~RJNLXbEQQ`kH0zD766tI6~1N9PryclYy?Yzfl30z1|R z5!^e+0n)E@Cu7y{ABWWk_@ZV+vm3_BYhrUY5zP`Oq^BW4@_sgI)Ki&nE1HswLnCV| z14cWB0~&K2hb>?7--=})ct7waDLc7Ak&RM_+qhAmCs($4M1s_HA=tyk1n=(F!eZuK zd&Mvk@ml9oFy<2(K`_PTiw41Cmzo}RW0&QcjB#AEAxK^iQyDj=?#v^e9lW{OI{Xw1X;Jw3HP2*+n5=>1EA z?%4G{6k58)$;auEQH9!E>^K?$z$-ybw)y5Q7wCM`a%YLx)8cNy)sT(M_sq9NU4lTU z`!_HWu@>qcX8wM%3e233m0UD4HKXg~c7X6iRx6!sjhvZAXtYiPX03~~Luz~oX^3R% zAOBIT_MIjW%)va_OoRQH3rAY|xIMGO@ECdv3=JS=hkA7B+V+LbuguB(@2v2o#Lr3R z9It_Y6@2<6X(MB*6n^Hm+HGB|pZ?8ZVr^(HKuN1_6?@)S?C*)MA23(D(P1W>`d5Pe z*%9XW*Px%DNsbCfaJZ?v_T<~QeRuVec}XuzK`0ZX#J1M%2@mlr-5`w))hER+l%6G+ zWktpJ-oyDB^c$${zm7pqF%erp>lB-#-VXlcY~~T;4NCc?+n2OsKd7 zl%(#@$id^pu9_BE|Jn-4gP{NP6k3pcFF%5R?O-ZeJzcBh`5k$k`NWW^ro3?HMRU5k z<7{S!mN;q>Y!{@mlmg~~+L=!aZdqVzNOo$#J#<(%Pxtreco!KsS`aDrK&HO#IMADB zl)Bg-(mV{eSBPEY-Lhde&`&rz{u_z-Hg13&@=}yY zoJ?h6yKGHpX}@qcDvmwvyVya1VAHcgRj6}?O7@_+Ez~7)bP+|LPFHQfMm^U1IyXdh zNti?PM`fq%S)U&VCB{|oJgZI@HO_iAE(E%CXlX4~f8`NvwY_6=|2|cIoYmMsxZ$rs zwfbx*zLYrMeW-KGSBUyjGlAI+Mp9i#KYGaU;(ELwd>FE0A_Z9_f}2J^nw}YAU_gU@ zhulZqb+Q6@Vtaq;nc0m)Be1HpM1%fYj{;D;X)v`0j{^dvC?*Wuy*RoWF4kz(9$Bw= zMOJy!9e(X$Yxv*?Z1>!c|I8FA6}}u2T6CP~cKDqbgA8b3M|+%;Vrr^JS* zb`QL_ z9(@9jDWG{&*QnG60@9%kulN0@0j>Ls#?;EcTK9^Dca$jl(_O!3W$OznDL1$+zEypB z)xa;tS5zdNXOmNuc&7RXdZ_dn2=aXgf(rurId~sX#Gc z@D#RQkA@AH)h09Iy~uU<>nVB>WoOZLC8L9G=mCnF(BmnEo;&o!u4nY0+q~HQT})tilGw{NGd)el(64rPiD)1_z@V({jbsV!> z@1*^})zmgY=!K0P{;hpr1T95tHrKY@mCE*ZUTAjXZ}Ue>kaJ^cAYKD}W* zL&b=Dnnc0iRIe$+<;UM$>#h%2Pxm}=fVS8hbGbZ){d>x!c|KXuu=u(=ooz(9>K2Ga7OPABcO3O1&4p8)hAk$ z>P`1@rX=sfM9fS;hx8&VtIyHyrkK^3u!B%9LR#kMcboPHb^bF^DeKWzJCja_tu<#g zhw-JKRK|9~8;E?iF`7<|O-K@-F(oH^5kWt>DwbR68b>R?3jDsm4`HO^u@MRbYM7S% zsbT8i%^L2vgLjKAmZrE_`abgxyh$7l`J$(!<-0FgR#~(;UTCN5-PSUIg|9OLIjk^M zri@w_h1A#-Gf81WHhE!N?R~Q-i<(h;=)vpQoHZJS<+ZDW*qdOYKeMzdWlo)N3M#G} z%_(_tiCGC4-x2YdZ@~8Z7b-BWZiI_p8aY_K=FhI9YkajFvI~p0a$cQjMj6G-8txDF z;>MV+t*+WRCDVDhwq*73f>i=>>1*$?Dp8d51+&9a#D5~Hg1z^NtXH12V7wP(Dr+nD zcc{NTo9#M~yci)O89@{Eko3?l3}uaLIK_62I^{2kCV$<8(n$KPL`Tjh2^BO!M-K~V zcsCLw0SV>VdnC~PLP#9rO_$#mURhR}NF>r&nHZsXbVV1L&%8R;;^0`Ljt2P8n~x?x zkY?@`g4OJ04(E_kG-I%hNN`Z^cN_T_Uz?V#$)0h#CTcpKNRQ9fc^yG!6Lt2#Kk2e6 zN7FByBwMEp1occ-S$7Qz6JM5J%*d@~l|vzkVLke|8R4Dj<4;7T`Wh#)g}Ylu>Bnhf zSKVFhC7-2iu=^hDlb<`w7E0!B)|)|=XhQ0C6XIPNZEwq{MR4WJ)w(MiUKy#~Z+~cg z|5qugVD(fA6-wxFnC(D!3jGbDWTEiTkG}|jUje22Y|S=BExNAYq<=pDUsPTE??d?i zp1O|zrzdzN$^k{=93tN+Y*=0O*O&eOk+%3BDLhKZWwy?BWI;poy8dDa;0^(W?Of$p zT0^yfkOpAt_gM;(yPa@x|RTil(wUjsg2m%;JgZy4cIuyI1=_!)=bq4I9Y3CM6ts|yG zhEECBsJX8QkJ<{N#s`U6PluIZPv0ZIH@WuQS4fR)O;*V}o*Ged%D%1=`sV!4V9FI9 zZ;A5bpZZQ7R?^L2;_$&czf(lx_3aM2wmULrO z;c?gQ=f7U7O>=S7vjX9D2G>7OVfZy^+f4}qQJIYzb8tN3^fPl5*oomraZJMJ&cDtS zm+Em%GNaEdr@|x~#h!6&NC@iAy3L;1r#W2MdY(h8TBl4{2AoIWY9am@zlAESK*;HK zcB**s zWW}?@)Wp=^b?MC`mzb2 z!t-PHeFg;0UWT=nchBdUYe~4|bZ8Y^a(avTVyV9~B_;{M2dwmHsb4YfkxSj&+X^oaJYO$NCD;{Lg)-k0w{)EUA z!zn%8I1_o-1e7FA5y$xg&MDSIwB5%QmJy`!n$CCCuxc2=Qy{Olq+P(Q>K<~#miqA7 zlsRXI$*;&<=G*1=7lQCD;!@B;R{KV{1){vC?lPXuGuj>$%yVWKNzgE6fp4rfp)t7e zM52b%t*sckm$?Byx=7Y>dj5ijQTfvAOJYo#<4%y8=U~p&vk9B5$}Pokb#e|q;N*6a zr;SrDE1ev1WwVXfJZ&_kaeJ$80$FQ9lMYnz6NhI+J;@R;s#i0NrCaWrK}boCAHR4&_KbA&L6E$TKjrOb80PSUCu_GutDv{i~XTirB9c#>DUi=->D zKoE(jRI^`?*OleIQ0-61E=|O%H&zZwH{)0$9vf`;u9)M0NXgHRM3U<1y0RXovLHJ; z8@fMFhx;nAwC$RH6`i-*kfhgDKsIcE+^{w3?ncpdMHpd9ivy3&;{ZPp7IR6b8Cy8iY zZ5?L$&?_g`cWahnl-ZP(z4F<ZSlnlEBOW)^BoN)VUY#N8F?%8<+w{gJCL;%*lTDc3b1;#^d1 zg)?V~L5_X_7Pp4DneHa&|-L>KN;@z)>1zT6jC{VP}8{&?IhbNCZULqzuOiBQx~ zahn$4cT+Lm&AuHGJz+!wFAkOcdg*wYrVS%sslAZ&8Vmml`L%HYYG2|XEY5Et#K9A$;;LoOv@5j6!=E~WopB_5MX8=KQu7VeE2 z!4#De2C=5NshqN;u9hGeJ^wDcByS<`Qp{d1j0D-4L@f+=rK>N~^1a?OQrP-or|(jH z=ytUG8oDa%ZmV9t{6lmw#X~#fR3iEwb1a#Aig*7=k9^cy<@yw7`>pQ|(S;w8W(@hX zqKtc?85k8mqJ1`gVc&hiZTiTYx(DIWp1*{|pu0Jv?X_Y#cD98>6P&#=-nq4qxvge{ z@DQX`MTXSEi_|?e1@(vJQw$mLzyCT~I(;@6OO^&wDX8-)uR*ghHpT@byes!RH*!b;Y621`p2@{mPPWri5 zqZF_>(#?!2I_O4!u6uKZVRZ_du8%N{V0mKHyP8S;q6!mmWqf=Qyoxq_p%NhO+rsXPksDo>8)qk`<72>p#f2jB`tc`r ze!(#A!zz!cD2Z%VMO9@CuM#)zZ${0xH_s1mP{M6sk=i}j;+^B(hVZJqp@sF|QL>Un zsP2?~PH8qwv$KKT=8u&arSRYn?0JDgf`fC8Nm7gl)5ET(U9?{zrnBEq(aAE=*o`!A z+c&Kxq>a6a9`jLJW}l{@Qx!#{JgMrGVns?=_U>d(hd{;%tXT&lP|rVScpZ(fZOnY} zT(PUb-s_7A_xc*I7`@nd@IUkV0|gwz92paVY-G8<-rYnXbgE%a=kFJ4N)|L>efzC; zLi%kO{_G8TUQQTbeW61LN0b$ z$M$5F46@tks*1narOKmjSQFYMEq>|NGrqhmAlmr?oa^%Equc+BBR}?k$jv^%A8lQG zl85MH!b_gtY*2UP%gPPU zjKtXLud#P+7WnRmRJ{w~`3uqeS7|S%_dKPg^O4ZcN1gDipj1_>l>IuZX^Ca&eMUIY zWw@7MH}WD(0mi=<|1#lnA^f`%{uPIRb;7?=@UIm7D+T{b!M{@QuN3?%1^-IHzf$n8 z6#Od%|A(XisrY99HE`;~B8aT=0;0Kc#is>pR(NYfUC?;|<@kf^pBI14xBKzy(EW38 z?5Bu7o4Kz1-@d3}^K8z+yN!tAToZ3NZ6I+L%XN+d26Js@UayvJQj8E&@+bWwk)=Mp+ch zD)l^t*xQZ?-yNu?E$0q!?Yyo%;?%G>7MPYkUCN&7xxG?VaZ_`32d#(wnnv|=tCNl= z5orE!#<0+&BY1Dh{&!~bd-U>u4R3e(dX11fCYC-fAD(zF)>Y%@VmfUv)aa$AS=wD8 z_kF1x@42e&Xhbz!p~9wjy2ihC-nTOK>sAg6GsVZdQ(%_^c&gO*x0@QrI3Gi>W=yQe z%BN#BU-Sv0ZU$`YkgIdvHW(pO?=MZFbWsg*jLNMeu)+)yML2?-G=7nIg7%hT=U`T_Bo|O zV}2RMU8Bk~1ooR3og5{pm}MF4>^jBudiaaR z#q`r6fr_Qt!}obT;vAm8lJHd}!};Xz!KF)$V2~-Q%*n2GQ3x&R*I9?hjyMj?^JhpM z_9f<#$g4=OPi*ARC7r4@!dHT)*br=t0-}}9i+K^Ak3g-Ta^{IxxX?bf&Uqz?35L2= z`7#3L8$)Ds!I{g;ypvI2Nb6TbHUK`%7(4->%AZ?Fpv_NBhy2*h*wg+a53oBa?7<>6 z>*p33$iY<@cpqmp`GWa2%v*nr^0{oAg1+y}NMmo_7Icb@j7Cy0&t`bN$nDX(yOy`E zNty$8t-Rl3A;wdb{dS+HTQ(P0rRk*D9+Hj0_BjOE3A(#$g#DiJMQYS(zV{w;-ak%d2F$ z?fsE3CwW4r`a4i&rzt8h0Wg2;_~Ow1u`nzV6)Tr0uWF3K8>h{wO6d6>`K>(P&7w;D zj(#QISX8bmOE@3Xml&N!Th%J(;et|#^WnGxwS&)EihjfC$3{M-VUH#Z9bT~LvB1fS z5Z|`g6kA7#D<$k~V$IssDqQ01%U*N9-U|iQaIV{@&jZs2!h!bAEC|G28ZQ7A`=?$M z(ofxclax4ySmj5~5fwhhuTapXo^@1f`|SpoLO{#EhUPiXsYw;z=IF)ogje}3c~iO? z*6iah^RICYk-ua~vqEiIO~4iEbAxIjqQfOX#ZG#2M<=RPaS+>sN2YWIt4| zwQ#*S>)XpS`a0hTn9~wj1+)hA?$~?lP2Vj{X$lO^#cLHNq`4#6=~)?D+iowu(Mi zbh;EU<@bRqL1VF4`?08dIuJvIxYcg1+-_AmNXT2q6nM^>*-54eP`ScPPB$2q_P{La z7rL$(A)^jy)doF!An>+>5bv`*tU&FVSKDIbn6Pi@QUQxT`}IkIE_a<0hQiEQyDD&_ za}>?vVzLZ_Hpys2IU>jEa$9mZZ^I&431OL;HP*o9Mq@PlB^`IQwb(;GE3ka#hn#1T z^QzKgcIj~IOu%M}6<#Q|Io(d9mgRQd^!Tgjd#@hz>Nf0y9H6!u334d&Bnn#iPGCb)q zAe-HYWy!5wf!w#o4@DKlFJA@nDnN{Z*I`ShHKVWu_FI7 ze*U+K+cPMFF}}5*RQm? zcQGHlXPR>VMI1=k$vA!2B?-R?GI*TRVtD5tLmDAE@cNwnv7dFXIfF~vb1TMT_boi? zT<5uFd0_rig*xcO3!<-7i!8UhRjBOHUT6GjJR45EawF=?T}d*gE%W&OnL(@x8Bniv z^uS_qvB_sDL8R$1(DkMsLS1tfq9&hF-xpSi5#-wBW&|zyHt7Kx@CiFh;vxC;&JH<$ zgR`OL;QJRw_1HuvF8{+3e!q3GytG_@4ZsNESH3o_FX8t*`Q4Jl-BgdNjv-531hsb%l0UB8(1OYN76%!LK8->P}kLEv3QGoyE%Oy(u++@#KyD8oac_xheLMAYo>|dW9VY~DC)osOTmQO zh=97ILAX65Py;3uHcW!wb2~VZNjIHNW%4S3ED$e4+-zNBVA5KGyTC#URnGUvOtZ&c zazZHTL2CtlT82c9JLv(@g{$zc5Si?>rpv_f=3xEYXnas0xr0pdux=i)G`+vPTq{I- z2Y~8XhM%TctnAD_^&Z|^q~U}Eom1iPSwG60`swGPOG8EXE?mi)bO_Q2ay%#Fci7=JVUx%k=8BSm?@9`&c(@xIJ|Ucf4vbJhsp z@cyW~n}2*(H?aI%LR__wV0b9UaOUq$a4pHJ_7zB)4L@ewRAt7X2gZ znRj)lB;%r;{-vd*nzNwp7%)`~IA&NsiU47s+RJ!Bfns@ld6_UfK6PN|2XR5s55DJ} zeX}ird%269f$mG91$58R(uECk(dst*Zu7j2p)b!vE z^;8XMzkF&3*}}rY(voFH6pSPGM#f7TIL$dJ-Q(SNB`ux78)BwoUmnO_XOFplos^5_ zk@3vWs{{c>tOOy!q%`z(o_UoHDj$x)mD-n-A%Q1T4ws99$Hc@WM`LCjUk##A^wP?8 zAt9dw-NDbF7pqnTJM8l*v#ClQWoMUB`|OPqs@oWq_$?e5Pkm08VDRix&q_VQeV6S> z+idufoSYn&nwp$QhazezBtyD$sVUwKtTcJ3E@QqU5KSh%^G+aLJ`CuT+BMS@2sC1J zaY00H4-6%WauA6;_202BRx7qDhVB^TD4R{XRv0?^LJrr4^R$Z$>wW&q1-kqYSP|pZ z)yR?Rjg8_GK1)h6dg_>WkWA`xWqS98S%Q$yWC>2jPUL#^OUc=yd`;xt$nNfr@V|nN z0?vS5AH+oAQ^1K#vn|2oe7u`oynEL}A*Y;3GDl72^aK&il18x(+{?9_j(6xE$=Na~f2ADR~DT&W{JvEsbwY?jQ*E!+2 z@?*E=z6TbvLAPMGwdUBf!}SqIuhp2*MCH{Bp!{cT*U?h3s#utasIahz$aA`SW(K7n z*m;;$Y+Z@)#3${0N^*2CIq+dDNP4ewZH>3zV_T8%iRI7fo?Bzsm*NB-`A9iqJC#k8 zH;Ey1zreaSi*UPes_pi;t}bQ!Hpo=xbZ53DZNfpPbSc?$q|n!Oyd!gIDRyZAMTOKy zl>hf}SZkb|^g2yqoGj%nEeTiP>!G(58eycQ^8IO~Di`-g`r5>)&!A?q3o5|D{f^tNPJlbB01t`o^bbbAbM!JELmlyc@+NnH} zGkqS45Kxk$AvIEtI|>HL;E#qqaf$15gz!#m5$o!X)9Au;ibV%9lVW0kowbsS zpJe4j@2S7~!X({iFCtQ&r&ZwNF->xatg94rxZEPvw{8A|&9%F;8`;^}+12qj+tJ$k z?OSD1-l#QI3LCWH=)e$aXy_jJ@C%Mc>4Pa5`^+*BwZ+lM#d3h(M&<+OTX|HODaWna_dy+mwpD2)(7UX*6K8J}) zas2uvxg|O3!WY``XRQjv&`{mvsfLEDfxoPohS}PFZLKY<9YD>&8zDVtIO{X#AWCFh z1Mu9kGX7J~qlvD494;+t*qkmdyd(e;srJ_LjaI_N90D;sF_6xvsMy-9M5i1#r_}@n#b!DwXBo$Iy$d|{sr{f+fA-~n z^Ybe7kOm%j{jQjZ*y!-En6L=zvN`F-kNU#u63+4RH1-3$&ci$U;{CPAR^7O1L3=sV z&N<1#L=mxETW0(RH9yD_#V=Csl)BS)^5gEVdC9dBbJO|G#?-_1>h&x`A1tS|DEQ}= z8$bMa>ItrtU)+0c=W0&x!6>-M`w(6W6|-_qJu+Wa00dw#^J2vn?`?wnk5W3jZcgjK z`{gBR;BfEi>Xx9`Fgi)wuK0d+`v|=XztgBuv|gjLtJ9=P!?`{>rr>`JG~xQsZ|@1# z*4H(p*`o@~b85(hD}}|x4xb2?RJPv!?$r!yP-QzyW>jRWaPZo!R)FG962XT}ZPQW8 zp@38QxhGkN-aZ3dC$-*Io3d8xlm=y`{H{&iDBy_;I6Din_Ej^twAei0jfwo-)4|8_ z8)UqZEs(B2%J_zM_&7U^POQGfZCt+-?O<(vgFVsO)u`fsjOpdk(`pItY6*Qi+jTlx z{nwPLZXDST4z?kpHMZL!tj_?cjDm^QBrE6ptkg&{MRdHce+d5#n$<{6^|p3SbC^N} zGvTmFtTBYLYT{VTzAC-?7sa<;xSn-OUYJLy0aTgouO?}`tvbS@##61bDI56YQiDSy z*|d{{gapCo&upsV#*LB8BqV{ zk%l&U05yafK$L3LIvl~r=*(cR9D^?ioQ^@tJrwY06Jes+J7(&&osyo5SM%SDlHI3V zUxpqN9T&mY=0?<_VSW0YT2f;8kGZ*P*0q#rV&J@zwSo2g{I0sXx~HrJ?2J|TZ1r>( z7Y`A2k2n!w;X<8i)BZfip^;&c>z>2Op5P00`_3PTiX4=bTvb%;&CE1hUH5zRHvj4u z+o-M=i@kAZD<0`%b1n$~l+dUx?fnZXm85v9eui6HnOp6xm&{2xgHFUX={xm|&$$G{Ow4Kq2;h zL(po>R|41c8aZqtIcldii&8^ocafa_Yaz;2T8iLk2rl+Uyu^5NkvsnJ{$!Koe2oOC zesRm9pAS}IWrRQFw1BCoVHZGF8Qi|A@yZ)+ra=wm__6-wRR1=UV8%Q4p0B<5?HW~8 zg(Bh6F;rg>rP1rte@nUURP=OogiOy}Ov+B-(AZE?5~b+WUk!s=wR{tkX0V@8VzD^D z=%j^xz545UlQ$JL_4CQ|aCfMeyZcVY+l{Xbe4e!Argns-W(52U^&F)D z$x`O}Ws%^M>#`i9;aJVE5xk!oZi;V`GmxSSa7myc2Vrt}_{2ItvO~ zdcw6&>R4j(RQJD+Qv-Deho0`9!Xig&2U}Y*rWJL-mzeq3U=$)O>NqX?C@Y8MyS&nf(R*TDA<2IUZAD(n67_sL&Gt15_3ETYiFd2smZfNn(_0g zZFqKZ&c94cQ0)JW4Vm_W;F=E!!sCT=A4O*S?H-rj)uMN6V;xjjcwXz)AKlCM>812+ z@hX#)iI>A-)cA2@l>oTE%1wR$gt9Fzj+DVr@)&Lr221C!JNWTk0?d!bMoUQ6HcXXW zI-$^L*emzLSa2SC^^IVO2Al>C=z-_zf&v`5n}j*$X=x4LA5<-R2%TK+r>xgjRn?M3 z#N_9&cJTNN0AAen^^sXQLx-*S{`8|lC)4Kl^Aly?w7`zl_y}?Zx~UOp6ijY@;C*nC zU*EU1x-N?dUR2TqYa~ZJq-Q*xNVEaFf%o-rHhU=G*T!lU)~&z4!7GL}!A%t8+(|3( z*+f(;y^N4_Zu~BBNDi7jB;RTO0z`y26*l9lowm|W6R*=t=4=!+VzxKH=c)U<$Kjn3 zjN6D5Wwx7{{+Lv9K6}I6-)i`TTY=BQxDC4)p&ciPJ@u9mnTpe|YDtd^i#_`NJ*A54 z&lSkmw~=yy;was}D|LE+Qf<4P!*`QGsry~Bf#w%bw)xDrr>w|IBmNs?#`{Ylq;z7V zqoeFC#(#pN?Uz81H4cZDlal5T7kf^;97(pUsh3V#aY})qaX9jRd9@Y5o;}=^$6d{0 z)YMCgJ3Rv#68oy$NpfBTg)#IMn{IWhu`mY*kavkYDywVlLfBJ0I%o>wC>8FoLDOxu zvHt3DR&T?Z;WzF?+#5%DZDF)Wz+m2_+M12f{T^B-dSB1OH-eEM>>zd0BbJiAU0+DK zbue6#7X3!u>-SfJpj*<$9aSZ=H`k0({Rat@e7WORmXWQ1^2HpMv}-pc)4$6v4e))l zlX=s@tx3|Z-Nn*U-owKK0)ec4i<+Ce+LSDC7Rxw1Hm0eoTMe1dGzXPiKf0^|^%_NX zB5iCO$l9g0i|hG#*!7XMCflU!rk_~EJIUX9Da=V zn>$#j+)&2WoMJ(6Mf2EDzP!Z7ol}eLw=^z$?LBbuZ@xut*;!FAXDk0RGldw@BA+vA z&o19`-l)J6B-{WGGS*9ImJ)0N4 z6Qo^DZvLKR8{6Gr_EcO^n)z-U+N#vFU26}X#Ln-?=U$X$6Y17)H> zFXZ5)r8C7V9i@CnIoW#{eon2$i|dZqHW*W1dxY^HRAUgk?_Jk@xLvomk+$Hd;nFHMheK;(PKh6wQt%ht7qzCW8i?(Ec7j#0|aXPc3-;MS1mU;ce=`Ea4Do? zrf~GDa-gSA@1=bEgAE;2wd5@U{+O8!@+E9Ex9w%4NPV@%DF8Qp#R@5B3Z8*i#J-I_!|u>9s#HEGDnKY?9>muO*qb%<1Ur3QbB%!USMY zs12ZFGC{$X9)OTI-EAshsanjCcfF~~a?*eI^Dom99iIRA)mdwSRAdRcxo5Y&MoUW@ zJ!rIDSI;;6Y+5L=aGQ5lE~!NBTO%ta%>8gaJW;q#7*O|w%;7Tbm~UslB2XfplTNs> z#9&nk=f*kAK>tUj<+_>{o*PrtYJw$eu-a`%&g{v4kEF@m${y){N^)iH?9UgJFKf<~ zrn}A4jMqMn;`W;e*0p%;h|5JYH{Cb>;u)0z9U@eG){er;Md;+|bAfSWBy+ z6w)%1Fwq9s&DartHjk=9t}Kq=ud*Ev7QeVCO8lUIO~(1(|1{;XGQY*cXKQVpT~rkD zSb5`(rMwm*rY`sZ@APm<=V9M=6s)xk+yb-<0w;{dgZ=u(26BHLV=}?VpVp`(h?J$x zog8-KU$lq4dirA#KD8Vce_J@v2iV*j|^kekVu-7*sU5wJ9E}ct^SR#3-D*Gsow23xB?l z+uAm2dn|dn^WEY+?6_aDr#;uTIaMpinn^9$;2gYzO;yUYu@ol<#a4ekz5awH2hRiGqc7mLlaYD ze##80*@R`I+Fs!IVuaeRDd-3QM?@W-voiOdVScrf!x$%ow>`zAb}UbQ`5Wf2%(eRh zr*w{|7Mc^X>O7HfMPX643FvE3-D5%xzS^aYmJnNNkkeqdtE~q4Lh8VN@<^s#OkPe}GGIVe*MI;X z4u_>R&#=K$qX*5V*lcZWxw%A(3~CzyzfmyO+V*8Q50&(d3pe&WGc;6AOG^ugWKEtL zdT41Gy!Ho9Yt?Xd@qxLW>zp6e6vs&UR4oH7Dk*o50q5Q!6&4QW_c!0lliU=dkZSNg zSukrS``z{Ot=`E`S&|7q!+K|IGy8H;H^bw){2$`{hwJ@1wI<`3TE}`b_LjfhwZzVq zHS2a;QB>;HVFDV{Lf=_RY;a8Y^Bk2$Ch_f5vKI|Y-vee_{&-@QwGx>cap%f@Cut;P zH1S;SCx%Lf$(3qV3v;W?rF5}aY!JGkWK#nl#%*N72yH&uLr@SM^u(+Bk6XcD$ty&-Plix&zaBKwemhwIq*Z!2@I;_SRPXW1$p|P={zW5N9*J;uoeC+IEaP@=mBWZTr!Edxy(TkwFyX(<9 z58Z8i3VK@&vlIQ<&a?ok5A;n^VO5uA(sh~F3)@|pwwZDlbrPU&ytAa#(4?mq;HkHF z9q!jsZfyfRrco9sEAlbdU}-&4~~6{BDAw!l$Q z70O`QxS2!#zyCRO@K@S{B6-p>SWj8Un8)wMy~&zf9N=|dJ*vsy*yu7`dDO4B?vzGu z27BV{+`pPt4}IdSUPYtk2%Cu^S7aMt0rG=PER;oj5VI`|Vf~bAt_01%b&%;K9Z%gl zYe21`rIwbZiOEys&-Z~uF}Ijx+t`DY2@}A>j*g5JqKiuqh}<-UkDYi6;0_DkRJHNv*ZQ9p z;=kFCv*IL&BL{e`z zx5nxdmGcctk4hxej;8Z(*Zy7CjzA!U1Ye)ZX~xx2Rs2YU0qIQhh4x)!l%8~Fw@vE zR#8#00E0DL(moj%g=(TR7v!YF!c^Sd-NE4D^^u~Y+}xL2TDnvly6Wm+UETT&A3FmB ze+>jyyN_05X)29ef=MW!{cR8X^@QHhUP^_2@5^9J0HlfRZ{Sb$34m zcwX-APD%b z=7%dUS4>;We&S7u$^6m+;z7BpB^C0?LoeYm_A#L`&wHgm)LA;s2R|396=ivhu6xG^6rn$~{#zIP5^0KETV{EwYt8|#9CX@4CM{K3WE zd0w5ph7I~tt7VM-8i|mO{#&&VWX@9P&3WPi)OUTDy!@PvdI0VW0K2*>t>K?az<~s! z<#oJT=AFK*Kgeq8C8OW@D{w&+Jz}g?9Es1U{sWL>qmloBWvMuf{ad9EdVzuiy^lG^Fb| z;Gg^YtPp!7E+N&ED0$qXd+o=JaQdR&a+H7-IUp0_5qitQGmrPXt8WX3GQ9mA3ZkImL z;3aP}n^T})%BBx9_k%qU6M3b{d2`cIwNZSz#7F<_&}RUtvOxaprk!@t z%jxHVcq_K{joTNkEUz4VGZ1SAC~>q8Z&UB(j>N-*?BQnSkAUz8?A8las zpI4ri*I2g~amcy2PnxYqK7Ip(L0x6tjH`Tk}Q*TO9 zAEk5w)A+nVi#C72vLjqvOG!RAe|@-NMj@@7WuqK8Rwa9h<1{c|;4UCgmi0Sgu6Gb6 z!Ck&DWWE>wT9L-)P_T8eH{&SPsgi#PkosIyA_3z_W!0~FM)gVKT{`z0f; z)>?nyuZAN#Gn(RG&V@wW%bwbQ}@I7QWaXK{}$CrG4d_5RPxY@xM7k&S$BT zK|a=^e=;V`|DsM2S}m5n%jZ*mZZ$N$7daT{j(@2@6c;O(QLptl_QpqTfr$%FzOzTT zxYSA&zh3>&5@7LrR)MHjHW_gKl^*il4okRY<*a zCoMNwNuD`bGDtec;U)>ll{ZQ8VyWawVTbX z{dbxuf?`%>r>b%u=6hqiElgDI=dVWg?j3(S$fM;^AD;Gp&qiMb9pk|EF-J&aQTrwq z$AoHBQYNo%O!r9I9c*QWwu8Z%Q3GB173rdjF<<2~k~=%NIg*{MJq(*-%k%QI>L`XYH$3NZOia4#+V`)=Uhmb? zX^{SDotvk7JWw~)1L_|@p^7uObQC5zyH&ytsgT!4n!AT#n4Bc z#sFxZ47}=IKqbJ?%i}#?z=S`DGqFgucEuP-Ca1(~DO1)7Hmy@?c^HDE(zjNYRzGYG zG@Y;4Y@_c0Ftuhd%(ZrBp;r3iWpT@hRT@zlj8zY9mjb8zsB~5OG8KEn%`!X~m^fg* zzKS_Hz2e|vDk(KdNLaJ2DAX@sJ$!DrByCtd*Ig`l68k-vseUqrk_Pa9CA|CPdtX!r zeLP5dXBf5B=d^5a93*1XB)QemDdP>So{$PpPE=`kq8soq{)#mhKRQPQ{p_iTW;@;>WTJT^ey=9Nj&HLt-f%O#a zT`o%1jn)rCucTH-evuIt=~t=naJ0JvOtddNYf zq(gqCSj}tOdplL!_Fx6MEnTvVFSvQ7IAX${@s+rn`Si~wlj3#K zmpgEAlO0dXH*4vm+h~nz`$f{?*tOP5Pt_D@ZhquMVsfIsPSyf5sN88FF#wcy3+u$z zZ$JytZ3)f(bXEs%1dvcO$~rw#2P>$84*h2x>ifS;l?G4?Nex|SjNCQFDz##{Nru%H zk~(z=R^0}dyn|)7>tgwi9UX1{8x@3R=AzfM#u@y2#xz_?Q2AlGD@1f zCSId0zCNJuP=||Mw_>EUk3QP7d>^1Q>e{~eC5+nPv( zxcTpC&nb*f@5Cs{_<2DNjM4FKOc&us#!XL@@UHl>)EiEZd&6iGN&xW~k}gCt)8 z#M|;sbpGjt#iq=G#1@blyUBRgl(8HhX6wNRojd2RTUs~z%!djaMZ00C8{KA0C_OB2nJy;!1fiTgYo z&(0+t`N##&%AH7TS<|fq9ax=B_VO|I_|+|hRW{GYdvGU>NOCBPJH1J~d%lAV>|oq} z_P3oNMGE+F3$f^AFlCeFx};{6Yoh;I#LUkLo_>OYGDx;N%@yO+;<;%i=yFJ2(fL`? z(za#5FaMuot41}r&bT^9ptNCJVzx0|sFb9my}N3m6OCDx6?Wd%^f>yt=R9a>=#K5; zls@62QcgaF+c3M_9{#*lJwI)sZqa@-^NmY)T%%Ll_w?(_3ekGf!3%MhLb}^|DNrdN;qrV2 z_h*yaJ_{vUjS}-}kL?eB%FWlrF{ai&&V3o0?0neHPTmc)gkJ8!`w5>Zuc(H~9FtHd z3G+xsTBCOM(i?Gy(v2rm%;eJh6Pd9Hto+xzOH^Spety$Y)kR0gjmcM6vOM~4Xy|AT z_1zZvWxhyV#wfta%?}+V;E17rBp@l`?YqkHr*W;LA@Gu ze5~zYsNP?)KusXv9vvU$iqzWAZ#f&-DX&k!A|@PLf3%R3-E6X{V0z2GSpt<};OqBL zFnn`hTh-eEwoA*E?q52o^?2N*3oO{ruEamcMc#H!!!=Z89-N5WxY<9)P+k0QQ4&OucUIw_8m@Aj&*7t3%hP-$l+JeWZ<1v)|m^60N_XK>YYBEE3` zGTBa5$q5(Tf?=ZC5?=W0jlIC~tZg{60gUV-a~9Eh{F(AK1*YkD7fRVG$>ZgEov`@i zK|N=^{!CBp7D=q}e#g)w!*<6+tGd*crQK^*Q}bA(E8jqzoO_%Lo|WnZM7b7WvsVmKjxK;S(Fb$1% zo8n*M(NRy%FVMjbF>P0ES*aDiRc1jbC`;NU@bO=1wW-{H{KG1Ktj6O!%aqoxVne+b z=0-~qL|@xCzpq?YQkp_Z+x|_mxteLhQ;m3i@|f^N<7$AI@d@Lt^}%MT9PHQIvk@!1 zIsXM-Y2Hi*RuQ_mV*Xx*5MRSi(m}nYtc&~#VH59a=%6aGLY?h4z%Adi>gB-_IgV`N z<++sv(X761p_^p+E#?oU_5dp*gQ}ZbTMwXg1i32SuNtV0Pe>D*NPVW%@n0)_SL3PQ z0oCG6IG?43wAQ_GCTv%?I(Q~mABt^K*QdrDXE{zt?eCGO!KKn3iE&3-Pt+_eDmY@7 z@~zVApGAZA%Heoni^jPjo$|vNM}Dt^27TzR+*vv;P>{5oDxLPo3ui~Yv7?z7D}!IB zbM*g)waRKs_2{-(R%Q^(79Zn{%r?Z2xE|v+h@fwe-^WpGpKe(7z@1xxlaM?B2HD!I%Jn z>unWB{HdK$gH7=GtvQ#Gj7nv?$T7r8__}4e{X2(r^8rHYM(EngK){f7Jt=toE_S|2 z7pgzu@FRWBtfzLRMIoGn+ZL4TxS58>R;KoR7WHsC=%SMmEHS>oliYSgp^x|LgGm|g z`FXmUElyD5{m!wjT(=1#9`CzasnCerKTRS9=cU#xhu0cS;5g$Im&12Z(0a((?}bQ| zx`6$XL_33)VG{lItZEOSt77WmXLkJvvxEsD_5D3*Biygg$W0*`|G{(ltoAP0#>oIx zs3SHhOe9eobex4oVf}KE;=KL{{O;a?S~9jNF!-+db z{7N&5@|w#&I8QU~urQK1F9r&Iz-rSNCh|&#*OdjtsSQVSNLE^O9~L_8OT{2mlsaslCOj&aKXzDjSy%)-JwBV<9_n#kvr>T^%m*DsV= zq?#7oy=PlH`TVv`7Eh6tr;hl|EPhq|fcs#Zg*N}mFH%rM5bD#Nu9JgfHHPHUqw#Ir zN>icV0ol9h%1QZn#NJ*(cRvW`qV!U~ckzq%YucE{Q8C(&Fe}l`dkNkVV#CA2Vj?1% z+Cd`YgwL5HBw1^}J>n1>d0XIfUZA2B73N#8c!#{JtHTy6wQiIUm*Sl!>rORECy)rF zXEYK&!n>u%;zt@-A5AIVvp;UQh)_0L2UP;590@iuMcdKc>toD?_%pCYPVW*?QCFd_ zwp%t+in^!UsarGKO0mS_eB#ZThVu0WsK$Eaw}FCP?Kl1gI+QojbxkSBNpjwmSvw~J zXp#|oocRXtsy8xFn??NnPWYej|E! ztTPOZ7PV`zT{)7F2t=RHPd2(Om88GceRe<3>4d@xw=SlSx5E|ZIW(+A&8K_a|03zs zXx7_+0TqFSPWjihuG3E(<-BZfT;5~ypT|(-blV4|LWYZQn^78V3IM3@^&6Mvw{$ky z_()=cOax>{B4>h!u>J)fCkR%no zeLNt)3n5;^0RiH1+C0hMi$>74=mRE|B<_B)feS8NY&^|^;O!qpD^>?biQH<&qwRO zWnslAdOtE-&+k~xlTL}{HYIx)A8~_b9WZu{-UevZzzrN=bvH{7Ces-u+*SXA{k+N+G3Z7Zn@86@t86*ztn>-28bUf;t zTL&JMuqVON?BSA@E}rtNFB8o6>`irfuWDoeI4C$}3Y>H?fr!Ti-0 zLpBCRzjN98i&R*`0a3XmrVV%BOQ3~72`UKTuYY1s3vc<&UR-)MqSt==J)(&rICJ)s zK7)*`=fRl@``>S(4xB6D9CcXU9RK)eTAn#FgPi^0f8799>e%*m6il91ZX#!zlS+DN{pC;CPtB=f0(qP%C8%}Mh#-Xk&n^PrSh(=02)KbZIlH0wgkI#Gi zG(ykens6^;mRFxIAziyNuw?>`z`&o}+?p{4(+2oh4R`j)`)HPc>J#U2ytU2pVX~FS z^B>J_tJ_)*BG~=4QsOS=w95*2bk0#<9YY*+VSfVUu`L$0h_c#V8vf{UxK}}24xh<1 zytfz+&yrD9`BLyoZ3$)87_#SU9J16KjIiQ0uMR68@^kC~Z*_BPvC-vFfg4Ov$Wom+ zs&SSLn~BZ8Utpp}7i}i#E9-tsj1e*(teIUL2Xi#;PpB|AgI0bD$&g#Ml1N6yDQc^c zGklG~#JPoz72r`vz4k@0%TnCEc(stJ{tU^1UMuFn5u}78R>r_@GdTZ!od5E>NmLE3 zZoKdvo3mx3C@ti1U2EHztOLwrs!21)dVUVfP*ogW80xjWp7EF8xPb#~W7tpQC?-QD z)Na0WNk~6)jf3UyXCzo593|S}=x&0xF{mN%J<1i0>nSx?r7wYL=$Xr`-PycCahaeM zatTUXPk(%d(Uvpj1Pq^9Tr7|uxj(`w~Ay|}dv6_crce>~BdFo#qDtyd<)TaZ#uIeNYp1kw{vXF55h zDn8&78!0iXvyF>*X=$E7V=OoQupqgq+~3Hk06%D~xlwZm+pxY`$je#}6Kb^okSrT!G#<1$|?OiAoWi)%Q zUaqBs0)w299_V+`nnQJ3@XA*1Ecomw91n9XkiTu^fxq-VTC;U~934UegLGlgxe_p| zFHU_ccPZZBDS3elo=@mV66Yms^{l!-Z8%$soo)u#)8b~4hyW9VyA}tBZb0^d)S>a~ zpYh`r?zM-h3%=qia}A(rDj7XX=XiS6SdC8c@3Bf1D6a@wl-+01hgRd)2Pi7Hs=81k zQu?1#uy+oo)AG28)b2q$%g>G`Dy$_1CS!UbMZ3yH2q8z`vs-VPokW!FXrAm+p960Wem?{QK!w|UQn;ioHfr5M5sv( z(GMpU3-=gJC`>3p#V~7P&8+o*$kmst^Zf4na=x>Ja?smH`ey&Fz;ZX4s9Gfv_~_}G zI8Km$;8v^|^pNI@?n&F}Oj{@%K?OPi+0M6!p(poMD#IP{>O1maFd-F84;xFVps-lEYuC-ok_@j$*(Fa({*^8$xw zWwh8GR7S-fZ4PL7SAUc0l>Od%L;kLDH{6GQ)G`BHiP0bM4GeYct!>& z+X;~Rs{-cD%ea!uvN6(b}o@^U}A-)(F>02#qjf$0$~U%9bGT zKncQ=8FDO1?`)KWGjUFk`S+$%@G}9NX3&-VQKI?Ps}pCf{x;=BE z6v7rlRR^vDP8G0=OS#6elWt--)NB z;&szzHZClDlZ{YQY^iLo((ymAqjjYl_LQFNR35rB^-e5mJ(*EI-MK^wbdI_`Ix!A6 ztG{tzDr4h3iJ$T{n$qBzZ37$xV@O( z=)cY(n&)@tj!@#nKUHZw?EWDH+V?M_kw@bRT~*02TCvz0IdM{V9hr?#_w|sQOYlpA zZqY`{p7SQ>T{Tj11^oaTUda8J4O*HLEsL#Kx66Ig-c~pQNYk|R+(G@ymE~s_C43Y4jn($|7vqlZ7wftdkN=>h zb{s!al*x>N*Pxd|f{m~k>rB63BZ7a3mSMS{TiUw@BaeJ*u2FpWUX&cr>_A^vRzK=I zRr=hdqN2V1noq#yI@jKDSHfkmWLgkr3%^*OGW+hdG}NSG)FRs>c9qIODw!CZ^h?){ z(;sepr81@@uwM|$4?7T^fD{t+04`?D<_;1c)|J$lw7&QKx6C@(uZDLB>}|l}@|g^` zYB+2*mKXWZp?~y?w~@68g~RCnU~l}vayh}|nFWFopUxlp>|kv0owfC74gp`hQR6a$ zYH-jt*zU@&+W#hR7VP(;DEYCz*IjJGP}`4T@mlN9$?;I`Xk+{>7VdL{ns5q`vRtHT zvrukT=h0cPfP{SDQt>6d(Gu<0o!X>|7phTzi5FhTDUovn^Pxqx#>^s+1Sd61rFgn}L*AsGQ7I|)U_)J6(oQ!vR)ryau zeuR;?c^Fr3i)WA%XMDWc^$%X}`V4VGI2S8vdDw{b6Kmnhpp%tZ-Zl^(PC>rJ=Q}Sn z^J3dB>STCMh*7ppeh)HFc~}X($2B<^PWvdWs!&XhnbEs`bz(`}dWYE?Bi4$2&NsDAjsQrtLv7v z;%R(2Jzh-TI897{sN4=*c@-z;JKl=S3hk*HC3?*#OQ+v22fBp?0fAJ+^K%?W-GiSB zIqwL!3v#>fe=V0q)gO!*oV*-O0?JpbjH4!~d*fb`blSB~3*Y9PJ3E#{8M#kLKfU^-p zk9_oA!gdk35*I_+x9jFmQEpzVfL=aigY?AMV~O7gUxh3S_0Z8kQ#&g3B-G3UH}oP&`81e7?Cr{=rm=_P?iZ+ z4?>p!^ycK8llh%#kHDe@^;UiE2=aiMOop*v9hBC=iENE)v?*YPl^2B z`CGszSBpmL@6k#8l$9Q!eXx8s7+3dUq4Xi_iL)+JP*=bpi8rLMaC`@X>Uh1iQ~2uC zhxQD`5>bb^3>d8(C%^onZ#sm)K|C5)+wTp0vo$!(0MTRKaP>ZYd=|&#SgJxyhx84j z0<2-QpRa<5to}lUPK6wuS6~M1>1>ZVA zz02h~+vUrH;S0|*PKXB9H1g>44V&o7RV?g94KTDiXW8n3P!|Y!)AEiU)#0)D1`$)F z?A7jsjKJi9-x8s|+c7PnVZcO8+sYz)7kM}dr-mNSy`z-JlZ5P}n$fDezjCehOb-^+ zgmg{?DWsm2@)#QxzE|@=$;%))*@qoQXNq~AkG*v_59P8dJe4bQFkQy>gqX#7A{dJU zO<4y;qlFI8T9(t788@D*-&W&&bVuC3W86p7%DXdSYG!riCp?z9@@juc1Q%I5h+DE8 zA_e=GZKNjRSP?v+Ak#@gI|UmmP*@acXJ&U(0ow7_uE+LcLW0>9y$}}CPayow$_vVq zqhMgX8Vv1=nNWh>wrUEC?x;SzxL*U5KT<%0-n`*ptKjzitufp&Bdm6qNg;ZS7(WM< zGTVVmiBS3&jMfW+#FkCA%*I_#b!)$!hP@*fJ53##$=qo`@@hU?4jjovV^C}rXZ`3@d98JaGz2lI;v|&*!7pOiX zUz9RxN2Dzm@xwC~k2K5#q0DoLv|&F|+)`5U+1NjVcPlNB!kJs!#H+=6w>m|2L9jXN z+zM{F@4RP$zKv7Q9?n3*{~wf>p(6A7OUpmW5t&RRDqCV?uT;1M>#|x$*h|&sfRFLF zUBn1~OE(*1x!1ii2m3EWvZpb$qQ02p-Ncvh38W{6hf4<0AmWNgv zp`(LU4j;2Os*TAWB+WGNy>Lr#?$EDR+HKd}^Xz^rs61b}e_A0|N_w3hvR5mwRfE)_ zCCeQUIM`2=MMY+@2;wMO%RZ&{ut-N=MS@Q?MsbZ%n(620CBTwQPeS@V;or(KgVH+} z3ki`RPm-L1mFH6#S;v4ky#zAcO5$LTyL9*r{OE$(qBxj2>oBdLRNLB*qbMzHkKc2Q4ZQQo>S%J$>Zqj};;edIAFt-K?V!((U_?{sudmrk z)X)b;!@$8_?T8~N8ot#%95==a2hlrA8)f7I8R=IUvs5+Km>0I31ldX8$Q#cEGxl_( zQ_`G=BvS8%l6b5XrR3hVwP0B{2sHE0ncVf~!=oUQ6dczK1urCEjczbZ)&1jqyZ+(k z!HfX#8?PbeV?HWNv&jjv7F=1oa^{g8%}>&51ukD{^}pUJ$IwDmqA75AxVUYKJX%Yc`p00eHZB8DqCR1ey8 zP|R&)+*Iqh#8qP?YO=qT=``3hd_xc~r9w6ow?CpV79L4oQ&_J*XZ@lt#lO!g`Ly(m zd*lbx9XcKH^s(^ayne$1t*=+n+Gk}^lFzdxN~)ImgIg<4rdDZRHRFOF`ccWU0IH%42h!*tp%jD+^KIYk^wQ$y}6ICgmGk(#4M2 zU-f~Jtk#ln`}1n5{?Zf{%uR-EzVtk z8Fmy-Ip39@w8lgjW7M)xwKWzJm*hh~h-4#AQSvuAd})Pl(9^R3xW*kvvFY1%8Up7z z{Gb1deLtxJ4C0I`MC2GPS&pF5-M<}3Qe!o4S4w&T?#erUd=8oi9&-hH4ty6k zu3{P%RQUOwfAkZ`ttq-2FE}b|dQSd%+{yk@UDZ9tlU8qT9v#YIt1K`OiID9Bf$te$ z{bmVp7q#8P0f$gK^CvmhJv&^Cy{gyVF0K9H5LL&3C*v?J0hRTsxC~Y~m!3+Hk-^KG z1`V5y6jsm^#mTjQDB#s)Yo+LX&5fp6wmd(T{iB3-j?QyJ6O}UxLRZc(U>|0Ox)-gGqU1U?!&Z60Axv3c~CVO zm7jU9yk7BpZQxMaBRE`c{7j0;{ka1!0n@Y>_q?`KafpE3nqp&0u#JUBH@l^?;_`t8 zRlHl8PeE)?I3MA$yg4_MjjrEo>LD_TFF{KaxR3o>oXVt_@{^Zq-y}d(7GtWrngipy zL*>ShoVc77zV%ioR`$X37V>es(lC?~U$>?4QkYx&Bzdf4HnABYvyn z)Y3s#VboXG!^yA(O;?^$$*ybg;ddf|r{A#Y1wuUV$cCkvlTW?F!zVWx;R*z_4Ly~z zU`N;e$-jgDdaBge)7_oC91hX7zzj`$AKajG{KB2(WOA`!5U-b{ZwtPsu79 zMA3C78<4~@Q5lBOvZyNN17p`qSE=#@RFS`girHbRM;FfQQ(N@-Lz%D@mDpxE-i$4%D97G|TN^9)hb?iES7OR}PIJP`B0m z8J=5dZkhL-s~^~LMR)3en1^Wh^oG|x)k^Yd{4VmS6xr4MReLwYqilFlAel*l?Z;ve zW_9__lU<`zCbjlkYf>OaJ+R8=yIiXEN-ouNLJ0mHXc%KVQg8z2|D8IEV7d2xa4U7N z_0?;w9<3vq&?bYQ3-UgVQ^Jb3TCNYLMN!hwVqbtlXet$R{ce#xQ;>)y$97zWVm;n@ zcqLP&Wmfb2;PE5fhgg4gj7)=fPu(Lf!d9l0T1MmZlH!!33dB?hk&(ymGKB3*bg^W% zx+yT|8W_F-Os0c_w7$qso-Ra?(u?1k)JtkT6<7_>qVMCC3yY4rNJiK@+x9qBYJ<}I zpQ*22&Hfuv{BGJe?tllRSr=3MJQ-XPofXsNc#&FF7zyTqY4qdTW| zy_;PwACnh@^i$HdMm(4qEhLvP0G$OP)K!P|pCSfOTymk0|9!(Q?iCyOK}NN5z)FCNifKfN^2@%Igv8E$snt^^ot`0(7!)R>0&w4x)D`DHR^;5JO;`iTtm6hJ zU-s6{vvC#wT@=3^1yVnX|CnHSvovI_4#c=$bUJ8oKo)xNt1V1(eU8XlAc>;)`Bu5| zL#Zyjy4}Q0hTv$=%53(w+Ar7)-`+r3cdE zHW2!oHkJSoZ2h@xHTeO-98~|t?@R7C|J4a7#T_#HFaH0DROt{yI@M$;dcDV~Ytmo+ z0k|k9PSA@QXc)EBurmc=R@)j+wy#u0heJ{xsA4^PK6+=px;pZ^n$uqVih-8ibyE|+ zU!EQ7R?pDX%*4dKXw9vHf!ajeUqn9jd0}K6e@dmy56x(9U_Lo4BNo0M| z_o*7{dxyb+pHdI-czJX>vyPs7r<(Ql#EG-0Cz^j6DY;D7C0eR z;zHF<2mTe2zj48UDiaxX!5Log=ixE_g9qrc){oP(3e>29jIjB`u}4d1*zn;xK&=V* zWTV6omqF{OQ>81bP^rmBhTe6xu+dy4Jpr)P!8*ruJ-CL9G#JSmTNgVH&C7-i=QC;i zo^y!~5U^KUQyI#xZNbR_HkWOR8FLr1Qu+O5b&WW|eH2#&GK`FVBk>X${O8~~2 zyv6Y<@HE*8H53*arlunMw_$-S`4O+`F(z$P1~^ga(AD9nIZS_6IzDxY!gVGY$ZeZp zHeUu{Z6kUBP)^~}JlCCbLOahu`w%us>IXBMIYqIYzKq{&Thp5J43e`svE|^imfdb_ zcv~HiW%gzRbsoX|;bOZ}S-$Wo@A$7&6m!!z6%ZQ!u-9QR=2jv#b6)R$^#=Qq_Y+ET zfX32#9zuO}EL!6Sx16|8<2I%r;2}{2km$o2D=$hx@Yv1SM^2QEddN3 zv!e?vBA;V|Sw2XA3F=(p3vWX;MOdaNwW@NT*e!C*icXB{tzl3LKEPhj7|7b|BOZ8a zd+LvcV{6Opcj^?ZLa5W@J3|$ZPtxo8lC9{op5wT{3St(Et|F9?E}-%I+lE$me(O#@ zr9RC&zzqbG?TEHjuDYbJ@+H&wb7C@x6EmE8cx%GZ-PLvMIgi^~0euIsaQ{Q#k~xH~ zP%j_j{Xyor@^bGy95Wx*1$ywx=}enU7=OwkhjXpXH4Pq}nLzkv6SE8;PH5!CURfZ7OLGRmtdurVaDc=SV80OtoS_F3W87+9pTe!i=VO(M*!l{(klc>& z^O?1&$I?l^9>y&~Y*ka{5|GQ-Eq1-%@9GCj{NR+iRn?HHxy+>%dzk?^U{!=tlOjDRmDLM?uorOKubfH!dHEshe=jxiMzS?r0&czXc;gp;i@arO{3p5{ z{dG+rxZgaUBwSUs-gIsDemr^NDExnF*2g3ufUYi$R`g+GiMv_$R3EphStUn5^gnkl z8}5_|StH-kwFXDmebAFRmrXp*Sq63%eucyh98vtGpLj{Vy}h1KpZnS!F9^Yzd4s;0VNB z1^qf+ah+Xgc`d}b-v7y0M^@g3wxK`sv!A7m7vGmG7@vgH_iRyuM+Z)?K>dQx|10YQ zE;uG!_xJ4mXb~E6Cg)W0ZNPJRJDq>Yo;aiYmvq;!`XG02Kc**pBVwpVq-a(9RbZge zM0(W|M9$!Ju^w$$nPkym^Qf#>n^gY<2jF;?!b!_ZyBWYDa5y$9e1{Bsn+9XnG8}V> zF2|CYE;aS6qb~c}Nzq2Al@@OS$a&|nOUVu7L8>q|Y2aDH7y2O<&&z@Mu}lIYA#>Qq zT~7NCz8;yHil@P!>7Ux~U&u82_rmsjQwuKLhHv&4R3;Y?YNYP2uL6EpclFf^>F_aL znY+`y*EVr1V>#E(2s8}rdQ`vsC)K`L?Lpy4&x87eGcAJ0muI=LjN`Fz_q0@f3`)4o z)@|J2W5TX~ME8Ybdm{IXFRoJ5!xn|1O_*-{AO)T4w)ua$M!P6#p=BC<&1A zo|#yZHBA#g6EpcN$noG>aMf_8Y#{4`dyaKIKR#dRSk1|H_-1Mm?f6z_TY+T&g;d`6^0%H76P#D zxIUy=JZM>4%n@Hw{tH^v#aC0On);`mH0+jlSDoEO#kDGoEWe8aM@Cs4qsCF1>Nl%5 z>;^=@p2#+S1IYTU;|Ahg>b>NMfw}y1c82y{+CfUXDjNmT3BH zIwjNU8AcsbC^f|oYz=Jhvf_0HC9pLux7Z=)V83*j`p<vJC(L literal 31711 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 From 1b38f388538b9a1f2492ebcd162af24489d6b138 Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sun, 12 May 2024 14:23:06 -0400 Subject: [PATCH 04/42] Show h4 headings in TOCs --- website/docusaurus.config.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/website/docusaurus.config.js b/website/docusaurus.config.js index a7692a5216..e466b231c8 100755 --- a/website/docusaurus.config.js +++ b/website/docusaurus.config.js @@ -14,6 +14,10 @@ module.exports = { organizationName: 'reduxjs', projectName: 'redux', themeConfig: { + tableOfContents: { + minHeadingLevel: 2, + maxHeadingLevel: 4 + }, image: 'img/redux-logo-landscape.png', metadata: [{ name: 'twitter:card', content: 'summary' }], prism: { From 28b1859d19f3bee9dffc9b828baad67a9a0ff13f Mon Sep 17 00:00:00 2001 From: Mark Erikson Date: Sun, 12 May 2024 14:52:39 -0400 Subject: [PATCH 05/42] Update existing Part 3 content with TS info --- .../essentials/part-2-app-structure.md | 2 +- docs/tutorials/essentials/part-3-data-flow.md | 259 ++++++++++-------- .../essentials/working_post_list.png | Bin 51937 -> 42347 bytes 3 files changed, 152 insertions(+), 109 deletions(-) diff --git a/docs/tutorials/essentials/part-2-app-structure.md b/docs/tutorials/essentials/part-2-app-structure.md index a6351951de..2f7a764c2e 100644 --- a/docs/tutorials/essentials/part-2-app-structure.md +++ b/docs/tutorials/essentials/part-2-app-structure.md @@ -145,7 +145,7 @@ When we pass in an object like `{counter: counterReducer}`, that says that we wa Redux allows store setup to be customized with different kinds of plugins ("middleware" and "enhancers"). `configureStore` automatically adds several middleware to the store setup by default to provide a good developer experience, and also sets up the store so that the Redux DevTools Extension can inspect its contents. -#### Redux Slices +### Redux Slices **A "slice" is a collection of Redux reducer logic and actions for a single feature in your app**, typically defined together in a single file. The name comes from splitting up the root Redux state object into multiple "slices" of state. diff --git a/docs/tutorials/essentials/part-3-data-flow.md b/docs/tutorials/essentials/part-3-data-flow.md index 2f5487be56..e632f9064a 100644 --- a/docs/tutorials/essentials/part-3-data-flow.md +++ b/docs/tutorials/essentials/part-3-data-flow.md @@ -235,15 +235,21 @@ export const useAppSelector = useSelector.withTypes() // highlight-end ``` +That completes the setup process. Let's start building the app! + ## Main Posts Feed The main feature for our social media feed app will be a list of posts. We'll add several more pieces to this feature as we go along, but to start off, our first goal is to only show the list of post entries on screen. ### Creating the Posts Slice -The first step is to create a new Redux "slice" that will contain the data for our posts. Once we have that data in the Redux store, we can create the React components to show that data on the page. +The first step is to create a new Redux "slice" that will contain the data for our posts. + +**A "slice" is a collection of Redux reducer logic and actions for a single feature in your app**, typically defined together in a single file. The name comes from splitting up the root Redux state object into multiple "slices" of state. -Inside of `src`, create a new `features` folder, put a `posts` folder inside of `features`, and add a new file named `postsSlice.js`. +Once we have the posts data in the Redux store, we can create the React components to show that data on the page. + +Inside of `src`, create a new `features` folder, put a `posts` folder inside of `features`, and add a new file named `postsSlice.ts`. We're going to use the Redux Toolkit `createSlice` function to make a reducer function that knows how to handle our posts data. Reducer functions need to have some initial data included so that the Redux store has those values loaded when the app starts up. @@ -251,32 +257,44 @@ For now, we'll create an array with some fake post objects inside so that we can We'll import `createSlice`, define our initial posts array, pass that to `createSlice`, and export the posts reducer function that `createSlice` generated for us: -```js title="features/posts/postsSlice.js" +```ts title="features/posts/postsSlice.ts" import { createSlice } from '@reduxjs/toolkit' -const initialState = [ +// Define a TS type for the data we'll be using +export interface Post { + id: string + title: string + content: string +} + +// Create an initial state value for the reducer, with that type +const initialState: Post[] = [ { id: '1', title: 'First Post!', content: 'Hello!' }, { id: '2', title: 'Second Post', content: 'More text' } ] +// Create the slice and pass in the initial state const postsSlice = createSlice({ name: 'posts', initialState, reducers: {} }) +// Export the generated reducer function export default postsSlice.reducer ``` -Every time we create a new slice, we need to add its reducer function to our Redux store. We already have a Redux store being created, but right now it doesn't have any data inside. Open up `app/store.js`, import the `postsReducer` function, and update the call to `configureStore` so that the `postsReducer` is being passed as a reducer field named `posts`: +Every time we create a new slice, we need to add its reducer function to our Redux store. We already have a Redux store being created, but right now it doesn't have any data inside. Open up `app/store.ts`, import the `postsReducer` function, and update the call to `configureStore` so that the `postsReducer` is being passed as a reducer field named `posts`: -```js title="app/store.js" +```ts title="app/store.ts" import { configureStore } from '@reduxjs/toolkit' -import postsReducer from '../features/posts/postsSlice' +// highlight-next-line +import postsReducer from '@/features/posts/postsSlice' -export default configureStore({ +export const store = configureStore({ reducer: { + // highlight-next-line posts: postsReducer } }) @@ -290,18 +308,23 @@ We can confirm that this works by opening the Redux DevTools Extension and looki ### Showing the Posts List -Now that we have some posts data in our store, we can create a React component that shows the list of posts. All of the code related to our feed posts feature should go in the `posts` folder, so go ahead and create a new file named `PostsList.js` in there. +Now that we have some posts data in our store, we can create a React component that shows the list of posts. All of the code related to our feed posts feature should go in the `posts` folder, so go ahead and create a new file named `PostsList.tsx` in there. If we're going to render a list of posts, we need to get the data from somewhere. React components can read data from the Redux store using the `useSelector` hook from the React-Redux library. The "selector functions" that you write will be called with the entire Redux `state` object as a parameter, and should return the specific data that this component needs from the store. +Since we're using TypeScript, all of our components should always use the pre-typed `useAppSelector` hook that we added in `src/app/hooks.ts`, since that has the right `RootState` type already included. + Our initial `PostsList` component will read the `state.posts` value from the Redux store, then loop over the array of posts and show each of them on screen: -```jsx title="features/posts/PostsList.js" -import React from 'react' -import { useSelector } from 'react-redux' +```tsx title="features/posts/PostsList.tsx" +// highlight-next-line +import { useAppSelector } from '@/app/hooks' export const PostsList = () => { - const posts = useSelector(state => state.posts) + // highlight-start + // Select the `state.posts` value from the store into the component + const posts = useAppSelector(state => state.posts) + // highlight-end const renderedPosts = posts.map(post => (
@@ -319,19 +342,12 @@ export const PostsList = () => { } ``` -We then need to update the routing in `App.js` so that we show the `PostsList` component instead of the "welcome" message. Import the `PostsList` component into `App.js`, and replace the welcome text with ``. We'll also wrap it in a [React Fragment](https://react.dev/reference/react/Fragment), because we're going to add something else to the main page soon: - -```jsx title="App.js" -import React from 'react' -import { - BrowserRouter as Router, - Switch, - Route, - Redirect -} from 'react-router-dom' +We then need to update the routing in `App.tsx` so that we show the `PostsList` component instead of the "welcome" message. Import the `PostsList` component into `App.tsx`, and replace the welcome text with ``. We'll also wrap it in a [React Fragment](https://react.dev/reference/react/Fragment), because we're going to add something else to the main page soon: -import { Navbar } from './app/Navbar' +```tsx title="App.tsx" +import { BrowserRouter as Router, Route, Routes } from 'react-router-dom' +import { Navbar } from './components/Navbar' // highlight-next-line import { PostsList } from './features/posts/PostsList' @@ -340,20 +356,18 @@ function App() {
- + ( + element={ // highlight-start - + <> - + // highlight-end - )} - /> - - + } + > +
) @@ -376,58 +390,67 @@ We'll create the empty form first and add it to the page. Then, we'll connect th #### Adding the New Post Form -Create `AddPostForm.js` in our `posts` folder. We'll add a text input for the post title, and a text area for the body of the post: +Create `AddPostForm.tsx` in our `posts` folder. We'll add a text input for the post title, and a text area for the body of the post: -```jsx title="features/posts/AddPostForm.js" -import React, { useState } from 'react' +```tsx title="features/posts/AddPostForm.tsx" +import React from 'react' + +// TS types for the input fields +// See: https://epicreact.dev/how-to-type-a-react-form-on-submit-handler/ +interface AddPostFormFields extends HTMLFormControlsCollection { + postTitle: HTMLInputElement + postContent: HTMLTextAreaElement +} +interface AddPostFormElements extends HTMLFormElement { + readonly elements: AddPostFormFields +} export const AddPostForm = () => { - const [title, setTitle] = useState('') - const [content, setContent] = useState('') + const handleSubmit = (e: React.FormEvent) => { + // Prevent server submission + e.preventDefault() - const onTitleChanged = e => setTitle(e.target.value) - const onContentChanged = e => setContent(e.target.value) + const { elements } = e.currentTarget + const title = elements.postTitle.value + const content = elements.postContent.value + + console.log('Values: ', { title, content }) + + e.currentTarget.reset() + } return (

Add a New Post

-
+ - + -