From 8c7161b6d2c4ffdf71503cf77a2c22af483daca0 Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Wed, 22 May 2024 08:16:21 +0200 Subject: [PATCH 1/5] [Doc] Add Forms dedicated chapter --- docs/AccordionForm.md | 2 +- docs/EditTutorial.md | 481 +----------------------- docs/Features.md | 2 +- docs/Form.md | 2 +- docs/Forms.md | 767 ++++++++++++++++++++++++++++++++++++++ docs/Inputs.md | 2 +- docs/LongForm.md | 2 +- docs/Reference.md | 2 +- docs/SimpleForm.md | 2 +- docs/TabbedForm.md | 2 +- docs/WizardForm.md | 2 +- docs/img/Forms.png | Bin 0 -> 106273 bytes docs/img/form-layouts.png | Bin 0 -> 72860 bytes docs/navigation.html | 1 + 14 files changed, 786 insertions(+), 481 deletions(-) create mode 100644 docs/Forms.md create mode 100644 docs/img/Forms.png create mode 100644 docs/img/form-layouts.png diff --git a/docs/AccordionForm.md b/docs/AccordionForm.md index ae398937d03..277136a8b3e 100644 --- a/docs/AccordionForm.md +++ b/docs/AccordionForm.md @@ -165,7 +165,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./Forms.md#default-values) section. ## `id` diff --git a/docs/EditTutorial.md b/docs/EditTutorial.md index 65cc17bf5e1..f3b9fabba14 100644 --- a/docs/EditTutorial.md +++ b/docs/EditTutorial.md @@ -9,7 +9,7 @@ React-admin provides many hooks and components to let you build custom user expe ![Edit view example](./img/edit-view-example.png) -## From Pure React To React-Admin +## An Edition View Built By Hand Edition views are very common in single-page apps. The most usual way to allow a user to update a record is to fetch the record from an API based on the URL parameters, initialize a form with the record, update the inputs as the user changes the values, and call the API to update the record with the new values upon submission. @@ -17,8 +17,6 @@ Edition views are very common in single-page apps. The most usual way to allow a To better understand how to use the various react-admin hooks and components dedicated to editing and creating, let's start by building such an edition view by hand. -### An Edition View Built By Hand - Here is how you could write a book edition view in pure React, leveraging react-admin's [data fetching hooks](./Actions.md), and [react-hook-form](https://react-hook-form.com/) to bind form inputs with a record object: ```jsx @@ -89,7 +87,7 @@ This form displays 3 inputs (two text inputs and one select input), and redirect It's a super common component. In fact, many of its features could be extracted for reuse in other pages. Let's see how to improve the code and the developer experience in the same process. -### `
`: Form Logic +## ``: Form Logic To use `react-hook-form` with Material UI inputs, the previous example leverages the `` tag, which expects a `control` object generated by the `useForm` hook ([see the related `react-hook-form` doc](https://react-hook-form.com/get-started#IntegratingControlledInputs)). @@ -163,7 +161,7 @@ export const BookEdit = () => { }; ``` -### ``: Stacked Layout +## ``: Stacked Layout Displaying inputs in a Stack is a common UI pattern. [The `` component](./SimpleForm.md) is a convenience wrapper around `` that provides this stacked layout. It also includes a submit button, so the `BookEdit` component code is now more focused on business logic. @@ -228,7 +226,7 @@ export const BookEdit = () => { React-admin proposes alternative form layouts ([``](./TabbedForm.md), [``](./AccordionForm.md), [``](./WizardForm.md), [`, & `](https://react-admin-ee.marmelab.com/documentation/ra-form-layout#createdialog-editdialog--showdialog) as well as a headless [``](./Form.md) component. -### Using Input Components +## Using Input Components Wrapping form inputs with a `` tag is a common pattern, so react-admin provides a shortcut for all the common input types: [Input components](./Inputs.md). This means the `BookEdit` component doesn't need to use `react-hook-form`'s `` directly: @@ -291,7 +289,7 @@ export const BookEdit = () => { }; ``` -### `` Exposes Data And Callbacks +## `` Exposes Data And Callbacks Instead of passing the `record` and `onSubmit` callback to the `` element, react-admin prefers putting them in an [``](./useEditContext.md) context. This allows any descendant element to "pull" the data and callback from the context. @@ -346,7 +344,7 @@ export const BookEdit = () => { Thanks to ``, the `` component no longer needs explicit props. This may look a bit more verbose, but standardizing the `EditContext` value gives react-admin components a simplified API. And it enables further simplifications, explained below. -### `useEditController`: The Controller Logic +## `useEditController`: The Controller Logic The initial logic that grabs the id from the location, fetches the record from the API, and prepares the `save` callback is also common, and react-admin exposes [the `useEditController` hook](./useEditController.md) to do it: @@ -403,7 +401,7 @@ export const BookEdit = () => { Notice that `useEditController` doesn’t need the ‘books’ resource name - it relies on the `ResourceContext`, set by the `` component, to guess it. -### ``: Component Version Of The Controller +## ``: Component Version Of The Controller As calling the `useEditController` hook and putting its result into a context is also common, react-admin provides [the `` component](./EditBase.md) to do it. So the example can be further simplified to the following: @@ -439,7 +437,7 @@ export const BookEdit = () => { }; ``` -### `` Renders Title, Fields, And Actions +## `` Renders Title, Fields, And Actions `` is a headless component: it renders only its children. But almost every edition view needs a wrapping `
`, a title, and a ``. That’s why react-admin provides [the `` component](./Edit.md), which includes the `` component, a title built from the resource name, and even a "Show" button if the resource has a show component: @@ -472,7 +470,7 @@ export const BookEdit = () => ( And that’s it! Now, the code is concise, expressive, and easier to maintain. -### A Typical React-Admin Edit View +## A Typical React-Admin Edit View The react example had almost 60 lines of code, the react-admin one only has a quarter of that: @@ -498,464 +496,3 @@ export const BookEdit = () => ( React-admin components are not magic, they are React components designed to let you focus on the business logic and avoid repetitive tasks. Tip: Actually, `` does more than the code it replaces in the previous example: it handles notification and redirection upon submission, it sets the page title, and handles the error logic. - -## Setting Default Values - -It's the Form and Input component's responsibility to define default values. - -To define default values, you can add a `defaultValues` prop to form components ([``](./SimpleForm.md), [``](./TabbedForm.md), etc.), or add a `defaultValue` to individual input components. Let's see each of these options. - -### Global Default Value - -You can set the `defaultValues` at the form level. The expected value is an object, or a function returning an object, specifying default values for the created record. For instance: - -```jsx -const postDefaultValue = () => ({ id: uuid(), created_at: new Date(), nb_views: 0 }); - -export const PostCreate = () => ( - - - - - - - -); -``` - -**Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. - -### Per Input Default Value - -Alternatively, you can specify a `defaultValue` prop directly in `` components. React-admin will ignore these default values if the Form already defines a global `defaultValues` (form > input): - -```jsx -export const PostCreate = () => ( - - - - - - - -); -``` - -**Tip**: Per-input default values cannot be functions. For default values computed at render time, set the `defaultValues` at the form level, as explained in the previous section. - -## Validating User Input - -React-admin supports the most common validation strategies: - -* [per field validators](./Validation.md#per-input-validation-built-in-field-validators), -* [form validation](./Validation.md#global-validation), -* [validation schema powered by yup or zod](./Validation.md#schema-validation), -* [server-side validation](./Validation.md#server-side-validation). - -![Validation example](./img/validation.png) - -Form validation deserves a section of its own ; check [the Validation chapter](./Validation.md) for more details. - -## Altering the Form Values Before Submitting - -Sometimes, you may want to alter the form values before sending them to the `dataProvider`. For those cases, use the `transform` prop either on the view component (`` or ``) or on the `` component. - -In the following example, a create view for a Post displays a form with two submit buttons. Both buttons create a new record, but the 'save and notify' button should trigger an email to other admins on the server side. The `POST /posts` API route only sends the email when the request contains a special HTTP header. - -So the save button with 'save and notify' will *transform* the record before react-admin calls the `dataProvider.create()` method, adding a `notify` field: - -```jsx -const PostCreateToolbar = () => ( - - - ({ ...data, notify: true })} - type="button" - /> - -); - -const PostCreate = () => ( - - }> - // ... - - -); -``` - -Then, in the `dataProvider.create()` code, detect the presence of the `notify` field in the data, and add the HTTP header if necessary. Something like: - -```js -const dataProvider = { - // ... - create: (resource, params) => { - const { notify, ...record } = params.data; - const headers = new Headers({ - 'Content-Type': 'application/json', - }); - if (notify) { - headers.set('X-Notify', 'true'); - } - return httpClient(`${apiUrl}/${resource}`, { - method: 'POST', - body: JSON.stringify(record), - headers, - }).then(({ json }) => ({ - data: { ...record, id: json.id }, - })); - }, -} -``` - -**Tip**: ``'s transform prop function also get the `previousData` in its second argument: - -```jsx -const PostEditToolbar = () => ( - - - ({ - ...data, - avoidChangeField: previousData.avoidChangeField - })} - type="button" - /> - -); - -const PostEdit = () => ( - - }> - // ... - - -); -``` - -## Warning About Unsaved Changes - -React-admin keeps track of the form state, so it can detect when the user leaves an `Edit` or `Create` page with unsaved changes. To avoid data loss, you can use this ability to ask the user to confirm before leaving a page with unsaved changes. - -![Warn About Unsaved Changes](./img/warn_when_unsaved_changes.png) - -Warning about unsaved changes is an opt-in feature: you must set the `warnWhenUnsavedChanges` prop in the form component to enable it: - -```jsx -export const TagEdit = () => ( - - - - - ... - - -); -``` - -And that's all. `warnWhenUnsavedChanges` works for both `` and ``. In fact, this feature is provided by a custom hook called `useWarnWhenUnsavedChanges()`, which you can use in your own react-hook-form forms. - -```jsx -import { useForm } from 'react-hook-form'; -import { useWarnWhenUnsavedChanges } from 'react-admin'; - -const MyForm = ({ onSubmit }) => { - const form = useForm(); - return ( - - ); -} - -const Form = ({ onSubmit }) => { - // enable the warn when unsaved changes feature - useWarnWhenUnsavedChanges(true); - return ( - - - - - - ); -}; -``` - -**Tip**: You can customize the message displayed in the confirm dialog by setting the `ra.message.unsaved_changes` message in your i18nProvider. - -**Note**: Due to limitations in react-router, this feature only works if you use the default router provided by react-admin, or if you use a [Data Router](https://reactrouter.com/en/6.22.3/routers/picking-a-router). - -## Submit On Enter - -By default, pressing `ENTER` in any of the form inputs submits the form - this is the expected behavior in most cases. To disable the automated form submission on enter, set the `type` prop of the `SaveButton` component to `button`. - -```jsx -const MyToolbar = () => ( - - - - -); - -export const PostEdit = () => ( - - }> - ... - - -); -``` - -However, some of your custom input components (e.g. Google Maps widget) may have special handlers for the `ENTER` key. In that case, you should prevent the default handling of the event on those inputs. This would allow other inputs to still submit the form on Enter: - -```jsx -export const PostEdit = () => ( - - - { - if (event.key === 'Enter') { - event.stopPropagation(); - } - }} - /> - - -); -``` - -**Tip**: `` does not take into account a custom `onSubmit` prop passed to the enclosing `
`. If you need to override the default submit callback for a ``, you should include an `onClick` prop in the button. - -```jsx -const MyToolbar = () => { - const [update] = useUpdate(); - const { getValues } = useFormContext(); - const redirect = useRedirect(); - - const handleClick = e => { - e.preventDefault(); // necessary to prevent default SaveButton submit logic - const { id, ...data } = getValues(); - update( - 'posts', - { id, data }, - { onSuccess: () => { redirect('list'); }} - ); - }; - - return ( - - - - - ); -}; - -export const PostEdit = () => ( - - }> - ... - - -); -``` - -## AutoSave - -In forms where users may spend a lot of time, it's a good idea to save the form automatically after a few seconds of inactivity. You can auto save the form content by using [the `` component](./AutoSave.md). - - - -{% raw %} -```tsx -import { AutoSave } from '@react-admin/ra-form-layout'; -import { Edit, SimpleForm, TextInput, DateInput, SelectInput, Toolbar } from 'react-admin'; - -const AutoSaveToolbar = () => ( - - - -); - -const PersonEdit = () => ( - - } - > - - - - - - -); -``` -{% endraw %} - -Note that you **must** set the `` prop to `{ keepDirtyValues: true }`. If you forget that prop, any change entered by the end user after the autosave but before its acknowledgement by the server will be lost. - -If you're using it in an `` page, you must also use a `pessimistic` or `optimistic` [`mutationMode`](https://marmelab.com/react-admin/Edit.html#mutationmode) - `` doesn't work with the default `mutationMode="undoable"`. - -Check [the `` component](./AutoSave.md) documentation for more details. - -## Adding Fields With Labels - -All react-admin inputs handle the display of their label by wrapping their content inside a `` component. - -You can wrap your own components inside the `` component too. You can either provide it the `label` prop directly or leverage the automatic label inference by providing it the `source` prop: - -```jsx -const IdentifierField = ({ label }) => { - const record = useRecordContext(); - return ( - - {record.id} - - ); -}; - -// Here Labeled will try to translate the label with the translation key `resources.posts.fields.body` -// and with an inferred default of `Body` -const BodyField = () => { - const record = useRecordContext(); - return ( - - - {record.body} - - - ) -}; - -const PostEdit = () => ( - - - - - - - - -); -``` - -## Grouping Inputs - -Sometimes, you may want to group inputs in order to make a form more approachable. You may use a [``](./TabbedForm.md), an [``](./AccordionForm.md) or you may want to roll your own layout. In this case, you might need to know the state of a group of inputs: whether it's valid or if the user has changed them (dirty/touched state). - -For this, you can use the ``, which accepts a group name. All inputs rendered inside this context will register to it (thanks to the `useInput` hook). You may then call the `useFormGroup` hook to retrieve the status of the group. For example: - -```jsx -import { Edit, SimpleForm, TextInput, FormGroupContextProvider, useFormGroup, minLength } from 'react-admin'; -import { Accordion, AccordionDetails, AccordionSummary, Typography } from '@mui/material'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMoreIcon'; - -const PostEdit = () => ( - - - - - - } - aria-controls="options-content" - id="options-header" - > - - Options - - - - - - - - - -); - -const AccordionSectionTitle = ({ children, name }) => { - const formGroupState = useFormGroup(name); - - return ( - - {children} - - ); -}; -``` - -## Redirection After Submission - -By default: - -- Submitting the form in the `` view redirects to the `` view -- Submitting the form in the `` view redirects to the `` view - -You can customize the redirection by setting the `redirect` prop on the `` or `` components. Possible values are "edit", "show", "list", and `false` to disable redirection. You may also specify a custom path such as `/my-custom-route`. For instance, to redirect to the `` view after edition: - -```jsx -export const PostEdit = () => ( - - - ... - - -); -``` - -You can also pass a custom route (e.g. "/home") or a function as `redirect` prop value. For example, if you want to redirect to a page related to the current object: - -```jsx -// redirect to the related Author show page -const redirect = (resource, id, data) => `/author/${data.author_id}/show`; - -export const PostEdit = () => ( - - - // ... - - -); -``` - -This affects both the submit button, and the form submission when the user presses `ENTER` in one of the form fields. - -**Tip**: The `redirect` prop is ignored if you've set the `onSuccess` prop in the ``/`` component, or in the `` component. - -## Nested Forms - -Users often need to edit data from several resources in the same form. React-admin doesn't support nested forms, but provides ways to edit related data in a user-friendly way: - -- [``](./EditInDialogButton.md) lets users open a modal to edit a related record -- [``](./ReferenceOneInput.md) lets users edit one related record -- [``](./ReferenceManyInput.md) lets users edit a list of related records -- [``](./ReferenceManyToManyInput.md) lets users edit a list of related records via an associative table - - - - diff --git a/docs/Features.md b/docs/Features.md index 01c1fd4cfba..56a4738b820 100644 --- a/docs/Features.md +++ b/docs/Features.md @@ -1133,7 +1133,7 @@ These building blocks include: And if you want to create your building blocks, you can use any of the [75+ hooks](./Reference.md#hooks) that carry **headless, reusable logic**. To name a few of them: - [`useRecordContext`](./useRecordContext.md) to get the current record anywhere in the app -- [`useWarnWhenUnsavedChanges`](./EditTutorial.md#warning-about-unsaved-changes) to warn the user when he tries to leave a page with unsaved changes +- [`useWarnWhenUnsavedChanges`](./Forms.md#warning-about-unsaved-changes) to warn the user when he tries to leave a page with unsaved changes - [`useSaveContext`](./useSaveContext.md) to tweak form submission - [`useTheme`](./useTheme.md) to change the theme programmatically diff --git a/docs/Form.md b/docs/Form.md index 11744e5e7df..701adf95073 100644 --- a/docs/Form.md +++ b/docs/Form.md @@ -83,7 +83,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./Forms.md#default-values) section. ## `id` diff --git a/docs/Forms.md b/docs/Forms.md new file mode 100644 index 00000000000..0fea7103887 --- /dev/null +++ b/docs/Forms.md @@ -0,0 +1,767 @@ +--- +layout: default +title: "Forms in React-Admin" +--- + +# Forms in React-admin + +React-admin offers a set of hooks and components to help you build fully-featured forms with minimal code. React-admin forms are powered by a powerful third-party form library, [`react-hook-form`](https://react-hook-form.com/). + +![SimpleForm example](./img/Forms.png) + +## Usage + +The following example shows a simple book edition page with a few input fields. The central form component is ``: + +```jsx +import { + DateInput, + Edit, + minLength, + ReferenceInput, + required, + SelectInput, + SimpleForm, + TextInput, +} from "react-admin"; + +export const BookEdit = () => ( + + + + + + + + +); +``` + +This may look surprisingly simple because `` doesn't define a submit handler or default values. How does it work? + +- `` is the **page controller component**. It calls `dataProvider.getOne()` to fetch the book record from the API, and stores it in a ``. It also creates a submit handler that calls `dataProvider.update()` when executed, and stores it in a ``. +- `` is the main **form component**. It manages the form state and validation. It reads the default form values from the ``. It wraps its children in a ``, so that input components can read and update the form values. It also renders a save button that triggers the submit handler found in the ``. +- ``, ``, ``, and `` are **input components**. They read the form values from the `` and update them when the user interacts with them. They can also define validation rules using the `validate` prop. + +As you can see, form components aren't responsible for fetching data or saving it. They only manage the form state and validation. It's the `` component's responsibility to call the `dataProvider` methods. + +This separation of concerns allows to change the form layout without affecting the data fetching and saving logic, or to reuse the same form in different pages (e.g. in a creation page and an edition page). + +## Form Layouts + +React-admin provides several form components to help you build forms with different layouts: + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +- [``](./Form.md) is a headless form component. It only renders its children - it doesn't even render a submit button. It's useful when you need to build a custom form layout. +- [``](./SimpleForm.md) is the most common form layout. It renders a form with a single column of inputs, and a submit button at the bottom. +- [``](./TabbedForm.md) renders a form with tabs. Each tab contains a group of inputs. It's useful to organize a form with many fields. +- [``](./AccordionForm.md) renders a form with accordion sections. Each section contains a group of inputs. +- [``](./WizardForm.md) renders a form with several steps. Each step contains a group of inputs. It's useful when you need to guide the user through a complex form. +- [``](./LongForm.md) provides a table of content on the left side of the form. It's useful when you have a very long form and want to help the user navigate through it. + +You can use these forms in creation and edition pages, as well as in dialogs (see e.g. [``](./EditDialog.md)). If none of these layouts fit your needs, you can build your own layout based on the `` component. + +## Validation + +![Validation example](./img/validation.png) + +You can add validation rules to your form inputs in several ways: + +* [Input validators](./Validation.md#per-input-validation-built-in-field-validators) + + ```jsx + + ``` + +* [Global Form validation](./Validation.md#global-validation) + + ```jsx + + ... + + ``` + +* [Validation schema powered by yup or zod](./Validation.md#schema-validation) + + ```jsx + const schema = yup + .object() + .shape({ + name: yup.string().required(), + age: yup.number().required(), + }) + .required(); + + const CustomerCreate = () => ( + + + ... + + + ); + ``` + +* [Server-side validation](./Validation.md#server-side-validation) by returning an error response from the `dataProvider` + + ```js + { + "body": { + "errors": { + // Global validation error message (optional) + "root": { "serverError": "Some of the provided values are not valid. Please fix them and retry." }, + // Field validation error messages + "title": "An article with this title already exists. The title must be unique.", + "date": "The date is required", + "tags": { "message": "The tag 'agrriculture' doesn't exist" }, + } + } + } + ``` + +Form validation deserves a section of its own ; check [the Validation chapter](./Validation.md) for more details. + +## Default Values + +React-admin Form components initialize the form based on the current [`RecordContext`](./useRecordContext.md) values. If the `RecordContext` is empty, the form will be empty. + +You can define default values in two ways: + + - [``](./Form.md#defaultvalues) to set default values for the whole form. The expected value is an object, or a function returning an object. For instance: + + ```jsx + const postDefaultValue = () => ({ id: uuid(), created_at: new Date(), nb_views: 0 }); + + export const PostCreate = () => ( + + + + + + + + ); + ``` + + **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. + + - [``](./Inputs.md#defaultvalue) to set default values for individual inputs. + + ```jsx + export const PostCreate = () => ( + + + + + + + + ); + ``` + React-admin will ignore these default values if the Form already defines a global `defaultValues` (form > input). + + **Tip**: Per-input default values cannot be functions. For default values computed at render time, set the `defaultValues` at the form level, as explained in the previous section. + +## Hooks + +React-admin relies on another library, `react-hook-form`, to handle forms. Its API is made of hooks that you can use to build custom forms. + +| Hook Name | Usage | +| --- | --- | +| [`useForm`](https://react-hook-form.com/docs/useform) | Create a form. It returns the props to pass to an HTML `` element, as well as the form context. React-admin Form components (``, ``, ``, etc.) use this hook internally. You will seldom need to use it directly. | +| [`useController`](https://react-hook-form.com/docs/usecontroller) | Create controlled input components. All react-admin [Input components](./Inputs.md) use it. You can use it to create custom input components. | +| [`useWatch`](https://react-hook-form.com/docs/usewatch) | Subscribe to input changes. It's useful to create dependencies between inputs. | +| [`useFormContext`](https://react-hook-form.com/docs/useformcontext) | Access the form context (e.g. to alter the form values programmatically). | +| [`useFormState`](https://react-hook-form.com/docs/useformstate) | Access the form state (e.g. to determine is a form is dirty or invalid). | + +React-admin Form components all create a [``](https://react-hook-form.com/docs/formprovider), so you can use the `useController`, `useWatch`, `useFormContext`, and `useFormState` hooks in your custom form components. + +**Note:** [react-hook-form's `formState` is wrapped with a Proxy](https://react-hook-form.com/docs/useformstate/#rules) to improve render performance and skip extra computation if specific state is not subscribed. So, make sure you deconstruct or read the `formState` before render in order to enable the subscription. + +```js +const { isDirty } = useFormState(); // ✅ +const formState = useFormState(); // ❌ should deconstruct the formState +``` + +Check the [react-hook-form documentation](https://react-hook-form.com/docs) for more details. + +## Linking Two Inputs + + + +Forms often contain linked inputs, e.g. country and city (the choices of the latter depending on the value of the former). + +You read and subscribe to the current form values using react-hook-form's [useWatch](https://react-hook-form.com/docs/usewatch) hook. + +```tsx +import * as React from "react"; +import { Edit, SimpleForm, SelectInput } from "react-admin"; +import { useWatch } from "react-hook-form"; + +const countries = ["USA", "UK", "France"]; +const cities: Record = { + USA: ["New York", "Los Angeles", "Chicago", "Houston", "Phoenix"], + UK: ["London", "Birmingham", "Glasgow", "Liverpool", "Bristol"], + France: ["Paris", "Marseille", "Lyon", "Toulouse", "Nice"], +}; +const toChoices = (items: string[]) => items.map((item) => ({ id: item, name: item })); + +const CityInput = () => { + const country = useWatch<{ country: string }>({ name: "country" }); + + return ( + + ); +}; + +const OrderEdit = () => ( + + + + + + +); + +export default OrderEdit; +``` + +Alternatively, you can use the react-admin `` component, which grabs the form values, and passes them to a child function. As `` uses the render props pattern, you can avoid creating an intermediate component like the `` component above: + +```tsx +import * as React from "react"; +import { Edit, SimpleForm, SelectInput, FormDataConsumer } from "react-admin"; + +const countries = ["USA", "UK", "France"]; +const cities: Record = { + USA: ["New York", "Los Angeles", "Chicago", "Houston", "Phoenix"], + UK: ["London", "Birmingham", "Glasgow", "Liverpool", "Bristol"], + France: ["Paris", "Marseille", "Lyon", "Toulouse", "Nice"], +}; +const toChoices = (items: string[]) => + items.map((item) => ({ id: item, name: item })); + +const OrderEdit = () => ( + + + + > + {({ formData, ...rest }) => ( + + )} + + +
+); +``` + +**Tip**: When used inside an `ArrayInput`, `` provides one additional property to its child function called `scopedFormData`. It's an object containing the current values of the *currently rendered item*. This allows you to create dependencies between inputs inside a ``, as in the following example: + +```tsx +import { FormDataConsumer } from 'react-admin'; + +const PostEdit = () => ( + + + + + + > + {({ + formData, // The whole form data + scopedFormData, // The data for this item of the ArrayInput + ...rest + }) => + scopedFormData && scopedFormData.name ? ( + + ) : null + } + + + +
+
+); +``` + +**Tip:** TypeScript users will notice that `scopedFormData` is typed as an optional parameter. This is because the `` component can be used outside of an `` and in that case, this parameter will be `undefined`. If you are inside an ``, you can safely assume that this parameter will be defined. + +## Hiding Inputs Based On Other Inputs + +You may want to display or hide inputs based on the value of another input - for instance, show an `email` input only if the `hasEmail` boolean input has been ticked to `true`. + +For such cases, you can use the approach described above, using the `` component. + +```tsx +import { FormDataConsumer } from 'react-admin'; + + const PostEdit = () => ( + + + + > + {({ formData, ...rest }) => formData.hasEmail && + + } + +
+
+ ); +``` + +**Note**: By default, `react-hook-form` submits values of unmounted input components. In the above example, the `shouldUnregister` prop of the `` component prevents that from happening. That way, when end users hide an input, its value isn't included in the submitted data. + +## Transforming Form Values Before Submitting + +Sometimes, you may want to alter the form values before sending them to the `dataProvider`. For those cases, use the `transform` prop either on the view component (`` or ``) or on the `` component. + +In the following example, a create view for a Post displays a form with two submit buttons. Both buttons create a new record, but the 'save and notify' button should trigger an email to other admins on the server side. The `POST /posts` API route only sends the email when the request contains a special HTTP header. + +So the save button with 'save and notify' will *transform* the record before react-admin calls the `dataProvider.create()` method, adding a `notify` field: + +```jsx +const PostCreateToolbar = () => ( + + + ({ ...data, notify: true })} + type="button" + /> + +); + +const PostCreate = () => ( + + }> + // ... + + +); +``` + +Then, in the `dataProvider.create()` code, detect the presence of the `notify` field in the data, and add the HTTP header if necessary. Something like: + +```js +const dataProvider = { + // ... + create: (resource, params) => { + const { notify, ...record } = params.data; + const headers = new Headers({ + 'Content-Type': 'application/json', + }); + if (notify) { + headers.set('X-Notify', 'true'); + } + return httpClient(`${apiUrl}/${resource}`, { + method: 'POST', + body: JSON.stringify(record), + headers, + }).then(({ json }) => ({ + data: { ...record, id: json.id }, + })); + }, +} +``` + +**Tip**: ``'s transform prop function also get the `previousData` in its second argument: + +```jsx +const PostEditToolbar = () => ( + + + ({ + ...data, + avoidChangeField: previousData.avoidChangeField + })} + type="button" + /> + +); + +const PostEdit = () => ( + + }> + // ... + + +); +``` + +## Warning About Unsaved Changes + +React-admin keeps track of the form state, so it can detect when the user leaves an `Edit` or `Create` page with unsaved changes. To avoid data loss, you can use this ability to ask the user to confirm before leaving a page with unsaved changes. + +![Warn About Unsaved Changes](./img/warn_when_unsaved_changes.png) + +Warning about unsaved changes is an opt-in feature: you must set the `warnWhenUnsavedChanges` prop in the form component to enable it: + +```jsx +export const TagEdit = () => ( + + + + + ... + + +); +``` + +And that's all. `warnWhenUnsavedChanges` works for both `` and ``. In fact, this feature is provided by a custom hook called `useWarnWhenUnsavedChanges()`, which you can use in your own react-hook-form forms. + +```jsx +import { useForm } from 'react-hook-form'; +import { useWarnWhenUnsavedChanges } from 'react-admin'; + +const MyForm = ({ onSubmit }) => { + const form = useForm(); + return ( + + ); +} + +const Form = ({ onSubmit }) => { + // enable the warn when unsaved changes feature + useWarnWhenUnsavedChanges(true); + return ( + + + + + + ); +}; +``` + +**Tip**: You can customize the message displayed in the confirm dialog by setting the `ra.message.unsaved_changes` message in your i18nProvider. + +**Note**: Due to limitations in react-router, this feature only works if you use the default router provided by react-admin, or if you use a [Data Router](https://reactrouter.com/en/6.22.3/routers/picking-a-router). + +## Submit On Enter + +By default, pressing `ENTER` in any of the form inputs submits the form - this is the expected behavior in most cases. To disable the automated form submission on enter, set the `type` prop of the `SaveButton` component to `button`. + +```jsx +const MyToolbar = () => ( + + + + +); + +export const PostEdit = () => ( + + }> + ... + + +); +``` + +However, some of your custom input components (e.g. Google Maps widget) may have special handlers for the `ENTER` key. In that case, you should prevent the default handling of the event on those inputs. This would allow other inputs to still submit the form on Enter: + +```jsx +export const PostEdit = () => ( + + + { + if (event.key === 'Enter') { + event.stopPropagation(); + } + }} + /> + + +); +``` + +**Tip**: `` does not take into account a custom `onSubmit` prop passed to the enclosing `
`. If you need to override the default submit callback for a ``, you should include an `onClick` prop in the button. + +```jsx +const MyToolbar = () => { + const [update] = useUpdate(); + const { getValues } = useFormContext(); + const redirect = useRedirect(); + + const handleClick = e => { + e.preventDefault(); // necessary to prevent default SaveButton submit logic + const { id, ...data } = getValues(); + update( + 'posts', + { id, data }, + { onSuccess: () => { redirect('list'); }} + ); + }; + + return ( + + + + + ); +}; + +export const PostEdit = () => ( + + }> + ... + + +); +``` + +## AutoSave + +In forms where users may spend a lot of time, it's a good idea to save the form automatically after a few seconds of inactivity. You can auto save the form content by using [the `` component](./AutoSave.md). + + + +{% raw %} +```tsx +import { AutoSave } from '@react-admin/ra-form-layout'; +import { Edit, SimpleForm, TextInput, DateInput, SelectInput, Toolbar } from 'react-admin'; + +const AutoSaveToolbar = () => ( + + + +); + +const PersonEdit = () => ( + + } + > + + + + + + +); +``` +{% endraw %} + +Note that you **must** set the `` prop to `{ keepDirtyValues: true }`. If you forget that prop, any change entered by the end user after the autosave but before its acknowledgement by the server will be lost. + +If you're using it in an `` page, you must also use a `pessimistic` or `optimistic` [`mutationMode`](https://marmelab.com/react-admin/Edit.html#mutationmode) - `` doesn't work with the default `mutationMode="undoable"`. + +Check [the `` component](./AutoSave.md) documentation for more details. + +## Adding Fields With Labels + +All react-admin inputs handle the display of their label by wrapping their content inside a `` component. + +You can wrap your own components inside the `` component too. You can either provide it the `label` prop directly or leverage the automatic label inference by providing it the `source` prop: + +```jsx +const IdentifierField = ({ label }) => { + const record = useRecordContext(); + return ( + + {record.id} + + ); +}; + +// Here Labeled will try to translate the label with the translation key `resources.posts.fields.body` +// and with an inferred default of `Body` +const BodyField = () => { + const record = useRecordContext(); + return ( + + + {record.body} + + + ) +}; + +const PostEdit = () => ( + + + + + + + + +); +``` + +## Grouping Inputs + +Sometimes, you may want to group inputs in order to make a form more approachable. You may use a [``](./TabbedForm.md), an [``](./AccordionForm.md) or you may want to roll your own layout. In this case, you might need to know the state of a group of inputs: whether it's valid or if the user has changed them (dirty/touched state). + +For this, you can use the ``, which accepts a group name. All inputs rendered inside this context will register to it (thanks to the `useInput` hook). You may then call the `useFormGroup` hook to retrieve the status of the group. For example: + +```jsx +import { Edit, SimpleForm, TextInput, FormGroupContextProvider, useFormGroup, minLength } from 'react-admin'; +import { Accordion, AccordionDetails, AccordionSummary, Typography } from '@mui/material'; +import ExpandMoreIcon from '@mui/icons-material/ExpandMoreIcon'; + +const PostEdit = () => ( + + + + + + } + aria-controls="options-content" + id="options-header" + > + + Options + + + + + + + + + +); + +const AccordionSectionTitle = ({ children, name }) => { + const formGroupState = useFormGroup(name); + + return ( + + {children} + + ); +}; +``` + +## Redirection After Submission + +By default: + +- Submitting the form in the `` view redirects to the `` view +- Submitting the form in the `` view redirects to the `` view + +You can customize the redirection by setting the `redirect` prop on the `` or `` components. Possible values are "edit", "show", "list", and `false` to disable redirection. You may also specify a custom path such as `/my-custom-route`. For instance, to redirect to the `` view after edition: + +```jsx +export const PostEdit = () => ( + + + ... + + +); +``` + +You can also pass a custom route (e.g. "/home") or a function as `redirect` prop value. For example, if you want to redirect to a page related to the current object: + +```jsx +// redirect to the related Author show page +const redirect = (resource, id, data) => `/author/${data.author_id}/show`; + +export const PostEdit = () => ( + + + // ... + + +); +``` + +This affects both the submit button, and the form submission when the user presses `ENTER` in one of the form fields. + +**Tip**: The `redirect` prop is ignored if you've set the `onSuccess` prop in the ``/`` component, or in the `` component. + +## Nested Forms + +Users often need to edit data from several resources in the same form. React-admin doesn't support nested forms, but provides ways to edit related data in a user-friendly way: + +- [``](./EditInDialogButton.md) lets users open a modal to edit a related record +- [``](./ReferenceOneInput.md) lets users edit one related record +- [``](./ReferenceManyInput.md) lets users edit a list of related records +- [``](./ReferenceManyToManyInput.md) lets users edit a list of related records via an associative table + + + + diff --git a/docs/Inputs.md b/docs/Inputs.md index 1f60244efa8..3c72a190b6c 100644 --- a/docs/Inputs.md +++ b/docs/Inputs.md @@ -158,7 +158,7 @@ If `true`, the input is disabled and the user can't change the value. ``` -**Tip**: The form framework used by react-admin, react-hook-form, [considers](https://github.com/react-hook-form/react-hook-form/pull/10805) that a `disabled` input shouldn't submit any value. So react-hook-form sets the value of all `disabled` inputs to `undefined`. As a consequence, a form with a `disabled` input is always considered `dirty` (i.e. react-hook-form considers that the form values and the initial record values are different), and it triggers [the `warnWhenUnsavedChanges` feature](./EditTutorial.md#warning-about-unsaved-changes) when leaving the form, even though the user changed nothing. The workaround is to set the `disabled` prop on the underlying input component, as follows: +**Tip**: The form framework used by react-admin, react-hook-form, [considers](https://github.com/react-hook-form/react-hook-form/pull/10805) that a `disabled` input shouldn't submit any value. So react-hook-form sets the value of all `disabled` inputs to `undefined`. As a consequence, a form with a `disabled` input is always considered `dirty` (i.e. react-hook-form considers that the form values and the initial record values are different), and it triggers [the `warnWhenUnsavedChanges` feature](./Forms.md#warning-about-unsaved-changes) when leaving the form, even though the user changed nothing. The workaround is to set the `disabled` prop on the underlying input component, as follows: {% raw %} ```jsx diff --git a/docs/LongForm.md b/docs/LongForm.md index 662c1caf123..2971f668e2a 100644 --- a/docs/LongForm.md +++ b/docs/LongForm.md @@ -147,7 +147,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./Forms.md#default-values) section. ## `id` diff --git a/docs/Reference.md b/docs/Reference.md index 1327d22c1dd..0d845a3e594 100644 --- a/docs/Reference.md +++ b/docs/Reference.md @@ -323,7 +323,7 @@ title: "Index" * [`useUpdateMany`](./useUpdateMany.md) **- W -** -* [`useWarnWhenUnsavedChanges`](./EditTutorial.md#warning-about-unsaved-changes) +* [`useWarnWhenUnsavedChanges`](./Forms.md#warning-about-unsaved-changes) * [`withLifecycleCallbacks`](./withLifecycleCallbacks.md)
diff --git a/docs/SimpleForm.md b/docs/SimpleForm.md index ce52e9c3edb..5523da1d700 100644 --- a/docs/SimpleForm.md +++ b/docs/SimpleForm.md @@ -108,7 +108,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./Forms.md#default-values) section. ## `id` diff --git a/docs/TabbedForm.md b/docs/TabbedForm.md index 049d24fb39a..f9b738d2aa2 100644 --- a/docs/TabbedForm.md +++ b/docs/TabbedForm.md @@ -150,7 +150,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./forms.md#default-values) section. ## `id` diff --git a/docs/WizardForm.md b/docs/WizardForm.md index df8872d5668..721846e372d 100644 --- a/docs/WizardForm.md +++ b/docs/WizardForm.md @@ -109,7 +109,7 @@ export const PostCreate = () => ( **Tip**: You can include properties in the form `defaultValues` that are not listed as input components, like the `created_at` property in the previous example. -**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./EditTutorial.md#setting-default-values) section. +**Tip**: React-admin also allows to define default values at the input level. See the [Setting default Values](./forms.md#default-values) section. ## `id` diff --git a/docs/img/Forms.png b/docs/img/Forms.png new file mode 100644 index 0000000000000000000000000000000000000000..50cc99cee47955376b2ba4be156a17592d4e6b2c GIT binary patch literal 106273 zcmdqJWppJwt|%O4?l3bmGgF6|nVFf>;dH3O%*@Qp%*@zfrryCXXYQMO=C1YboB93K z_FCn#RkmcSWLc7Tgo2y|JPbAr5D*ajcS%ttARvfZARsVdD2T6;bBuc2uN#=TkgO08 zP+ctSn<4nuGoi7hk}MFA7da46Krj%{%U4mr2@sGgBM{J;0T2*(Di9EcLuR`o?^lI_ zsm6CRSy>?JuRIhG2rvo|=vNN->jxBO2?X|!JP^=VOJ5ggF7V&Axgh_ng{aL1{bwFb z_%A@yw87!8Ml>x|G+Z=fWw?#)ZRrh7?2Sz6J!~ER0s!Lm;Qq?mnz|Sgdf3|7IdgmP z5&r{%`z!xfF#|E-KR{fp`G_@S6$nM_olFVY=^5!6iTPm&2?=?fOw72IM8*Hl>t9cN z#1<|t4%`e3?(XjN?kx27PUZ|uTwGiXjLZzo%yeH6bk3f3E`}a-cFrXK)yO~F5jAx- zcCvJEv9z}%{Ht9cf7LKB(K9mqciUgD z^8QuIE$?J$`qlGa?ejD7{sZ!Vl>MK6cp3ic{9lmyFG~MW`b8=~3@^if4;w!WmfjvD z5Rf3ycTph~58#U|$V^hzrce3f?9PS;u47ZsiF!gV5+Ns)HyU{bBq2p6UL-g~RF+ai zG=khzK`>;|F-1}sX^qv)`+Cnind8rEmzk|@EF)l7XWIl2mF6R6Dk@ojE0yi_bTRpFtuNxoe=*CO_7m6;FbB@cs6kV0mJ^q zuAu)3P5-}T*Bcbze>YBoJ4mSt>2Yl$qQ$BdCO)ddp~>Qfn*>R@9P}v9(wx8JLu)0P z*?-!Ux{pO_rF3>}ky&Tx`Ys4wg@8o{e@zB47qSh+|K5q-fAH>HuOpA?4E~pk9KS5>*q+f0g}0(z$?KUI4F3(o&Fz406|}ffT?u0-&Y#k zh1dL%s8ASO50mp_z%TdG)@5ZQFOi9i*tkqiWZI_t)xM+zn@7DlPYoO^;X~iT%E9*C zmz5TW!!9uzhkd+ytD~?kPm#KU+VnF>J`og=SD~EH!n2Ft()U~ewlpMje}eJz@KJN%;wP0YA=Mzg z&t!#5Su1x{>Nm-_*=Z5Wy7G`ATO~FnJCczuZc@T-`@&9~7nawnkjrCI z{IUQ6QSXAoXO;BfkCmzVKDws7uN3bv_J(&w-yE0mOVIIKE~J`c4ncFw|BhfT1~lgo zjko&4V7=vya~{}l;+CajM5u|xvsO`E{#(J;J96UrTIZiO8eKa5(T^yx%inRYG|psI zSxiz@5X#Z*841sq?cyKLm!)y{z`sQV<8mVEsjI5a&tv}@E;geoD~)$xrT-PIEgpqQ z)^{gV@6@7g=f6T>e{B|1DLjL`f`j=b@!+HG2i4;LcVYg(7^t(Kw1y@|EAnGO7%G#6 zo?Jf@16@5M8PySzNH3(waYJ0Q&7oWJ-p+AE7-gi#;Cor38hrd+I<_MKwBB|E;Z`(A zNlS~Gj*gDma-OuTvJy2m6f;pRm_RhOPf~{6W{p}pr6zulL}KEPr86lKRIVj`+a+BN zZ)421Mo1<_H47uujTJuTaYPmA|GtQv2!VuztGDw^{VY1Kj}znvNs);eXG5w1Q&NV@ zd(Vev=&VU6)oBq@>-o%YywIX~qBq!(&Y2eIo3uTj}*ild<+GKNqeZ#_f#zG#=IaZm3!GO(&IQ_aswog!ztI^lC1 zF#(AH{L~40tW#Iy36;q>PSeB3lVqW+{{G}l1X#F}%&ux}<$%g$9;W$pH+#|9ys?qI z((ZGf!>RNxpAMU$OKKxgGR9tB8a`@$P4_N8lUq3$fGRptPrhEe${Rukoc+w>+X4Jf zo^O}heL)02%vCHq-fm$ZIfAsm<7%j&ZNr0xa{&p7RR7JXI+#z9oY!Yb4nnQx>%`7m zp<@^Pq3mA@_K_cNVHIEb|+bnr4XC254l zw8&Hmo!0h#R~Sz+`)E0bUgp3N<9A2=wkC~Qb>es=b6NQo*^%l}+@K1(^eDw~X~6HK zotoTJfd$X~&OosM_1j)K(HK+D-v;}4P*P9TUG3gDg@gPE4Y-V!CaGPQXD9?$_f2(zU}b( z9FU<-ngW$EC-$Wmv_n<*u;b`n#n<4LG0F0%quWML=-P)I{c@d~wjFJ1K!Ms1E1)?h zwhpm{O(%hd(Et!W9^5&b|2aIlJtg>jO(_dl>Vm-I+a%fHM5x}S42$``#D_$%+%6HQ zo$!DA`r%MP5VLjTodpAs>n9&z!gbuIV-HbFR66G$A<|_JdxabU^MO^Iu8w~M+LZN_ zzEjbV^RU+>puuhrhP#GqL*15StB~>6fEj+QwR;97CMJIETOuIymu`qeYT<~{z^L_+ zXpDRx%TPRQLr4sv!&uuD;WiRSSDB29%JYTYuD7XPWix1REhKfA!b9vH`})=XTuVcW znb-ztZ*OIxEHY+I+P`jhOg0@XOWx z4<$_S8QO({LDsz4*X$c)u-m6i9mE$u1oDphO~%_C3MN%pT_l!IZ3I}_%(?5A z8a%k;3jWr)KQzrFat$EmG7 zrzu!Tfjkm}toTmxB641_J1;hB3_} zP7ZbH+WnP$NDivm*>0qzQLIwIB>!Hj1a4Wrh%AMD?k>GGjhBig7pbL4TWW73o=wy8 z$H(rL;s?qDz(fJOvzAb!NjO-^S{o>6`2A+`j-sm;MPr4;t`b8+vfqO?{h@b0Z&q*d zTkHs-85_kA4Lr|DD1hFyPP$2a<7w>_xy@LUd(yZ(=`9Bg0wORUt=5Z1%~oArx^B4I z7u;x+Lw_pUMeUwdmlb?}fQT`s<>)evYm$xw7dy_rE7`ZB+G#zdd7)E6oxkF$uWf=S zryo&ngJ;exoIk`Sp+lU0YXizAsMd3kPu6LWF}AaZhTavaPUHWoqQ8U&{I+ff-MehW zw3kL3MYNkpEBP_et>Xlb&e&GXJs}T?T>7rw!eIyjiGAQm<_I`>s5LA5(OTHA*yiz# zC|q4}uA(dtT2E5Yp+bmz#Ed?fpHHlW@&2tB8TQZbBw%$Ow4_2FdVo0)wAOw4 zn!(-6BU|M~`c&j!6zm?z@FS8opwX-w9Sq+nwScYl`KkCkFAP02-z_~wllv+CW<2}& zvIWgAjtc^o5^^;$pj{FI_)j`Jo1nI?+dXwQGyjEWzIKELJH(90a|W#YZ-P)bdeJ9r z1JXM6oxpnVxDu`Qx~0o=W)l;I!pX=DtP~4^Pbl>WEz$(nyfmwZJR~nz;?rm_M;r=6 zG<@5z6cR|(jJ}7^hvib_IrExGRjiZxsDR42UKqpA^ubt%KzxSIvN!%)u=nr4Vu(w<3>s$hdbND5a098_iiBEJxAWOAf^6}TT7-*{`Zw6$;B z#C(cW_r z_3*qXv=v9lTkr*^F8vST^AFklzy!<|_oOn2%7Y?P7YxgbtBCCf_!Sd+pp&YoSTs?*O{ti4|}2zO&Lho@Dc9z|jzZ46>wp+njScZB^}41(>UGDp=3 zQYQHQ*_NK>(mM41+-M)P3+>$3#H$9?e9T$izZ+jOOs#1y8P_}>SKf3y(=OP{!kZXi zG_l!dHB~y9_dYWx>U}xhyr|&}o8KRn-tuOD$YtkJ5z>OwV0Fr~7?j14p$H++!o#n& zHmLFP*9f}zGh^^p&MFGqz=Vh(&1~&ElE4{IE-_f^Rah+26a`X8cn{pPQYQtpplVii zDs@;>^h3XxxZ76!0rm5+1Qa#9r7XhXCsr;T^fzk)W&UXXuq@MWel}c=?8#Cl{#LH! z`&*gD*lB=f?e#b96#i_(N_He~$t&jC6JZT)c_pvai?5BCw_O%q6+81ud{CIT33qh~-W0TEL^H#Wl-(@RXp*CEs1}8rM((ks3x?#2m@#o3X$$|D$236d5x1*d1IPyIJdJe@R~NP|#0d5(I(q?uMwo5N-lofO zh(jAGk5M)u=`8BUqZ$Z=|BnYK$6Y_*-GF7Lm;!{(6P2z_Y5`ZIP zXCJ36ma4n)=1KVuHV=saIu1>#NASV~Q>1N8*$f)I>zZO}**b^UFzLg=F8)Du0*M?@kx*YH5iT2X;*N7nGGPy8xZIPOG z%QH<^g8IdJ=5mN-Hu%;d_!Thv-a+AyznG}5X%3DG_Z276!X|_L5EvHeTV2I>b(fU% zDaep2iGM+vjhHH!7J2aE0}SrbE&G`X)CiOm$=HI*$&jE%tFs>G+ndy^S}qfb3WlW~ z!xfpKTq!nBCJz)X11QvWFYT}d41X-Lu}fN-a?O@p5J9`-IAVqwjs8R%NLkGAeVNQ; zW~Y6wJmX=Y?Xagm@7O9vY|Rl^>%qFr*pHt}sy&WI;qneuXYWnEmp%OX`3#xnPqJa( zaqTNDkcYNb_q+&IPRvv3XDherh?uAyx~v1=VNkEm&osi|EMele_yQEV;EgVNsDACP z*S|7nl7hdR@QuQgX+77N#>!CA&rem<&WnxqFS5^T6++=b9nmJKcEk z`g<=fIv*id`SQydJgX$nx^eh(4?+H6N7G_$TyTACHwgzpPJ^7J?~5EV6@$4Moo!U) zEBqMo@N|xV1+F6IayrQE%TMSD`R!@lmNKc3zH0)UIAd}T($u}8$LMHGzMx;x6}T%K z3XPW$@`VyM=`WKHX9I8f{>3`aE)~21$P|Fc$PBUu5lic$AWAsOsDVUDC!NKU(^U*8vrpV!6#NT>^t}tVR7W%naDNKJ_ zOW)xQRqmuL5a6Pn5b9M83ran9VuSp;0b1o%sa$ZM(9cFs%+QA$yS}xVs<%g0P_*&` zCT@<@fb7GWp}M-TZOkOrbswTRO8Ab76TTUPnN{W=E|f1NIlrD7F4Ad*BrsTF<`ZM+ z=jzFo>}hg;=34K1uC`WZ3j14V78|`U-~;8BsAkD7T$#XTo4QC94GMXcPbR(xOH3FtEJf38vhGjS8$2(bKb-fjeX`4Si>JLwR&)Agw8V(9m4rbL zySo>Qv#ae@nAYP(>tkzfCOh4;DKkjuZH=MmQXUdtwMgm@;b1u1fux4_yPZ|~gu2B> zMG?eOArE{M9=%r^Nmf)N_n%kS7!(j25$aaqpPLPIe82k^x7fK`1n^1v{JgBjvK8Q_ zk6v`aLkAoX@H=Z+0lB`P<8MC%i@m&zvxh;u_Y8V;K8XCq3p%cpB|5hpDg^*Q9!CuT z-AKfslu?Eor91}gHL0(4g@FJ$4$+YHs41(JyEnU= z&+3OBmrtekv~Mk04P*vPe~W*iXy$vqZpjnc!Y-EANSY8}YXccD_okpHG``(kBB0Md zz_4P}SP5MfU*^a6d_46)_IioKTokF1m-w!+;44|APx z#T{KbeXjl!EP8mG*tKe-3rg0SK3WG z))~j|8Vdw=*TrE@V4=rpx(+B?1#`2VG9Eop~~x;Ik*f(8>`}rjIp@!RVIwCK`#^Y4VT~7N(HM}V#gXkgxPRItnX*SJG{q1B}3O9pIH_L{j#P*YhA8A$u2u@9_B3Y zgkR{^A=F(so$#Rgl);6LUN;(o@OT^V@B$)#`1ALe#A+0-tXnPCh>10TI&`Ix7I7OL zT6;J)8S7WHl=!}@Q5&r_bv`m{p})o-~dLeih2%!QCWkl zX?{-f!nlAHE8yG=w}5?e_A!rnh3ho79OYB)zW33%(p~$tpC3inemZGdQdB@6&M(~eWe`loLMlyI#DSYE{c_7Y&;sr z^ut@4?2Ia9Yf3SVf03eL1P;R<^?GYb#AJ5%SH0bqRGBr@*t#mtQJ())isrrA1mIYY z(Ak`TkY8Sb`bKVBL7Res7tjcY$0}nL8Xe!4WP0NhZM>srx#SS!5hx)Yf64M$R$F9x z6_;AMV}OM*2_wcT)>~w^p|{9HlGDY!L6ox3QQx9GY4K2LIzfB~pO1?V}VV2slV5a+GXjtgv$HoA37T} zodN@2_e|n}l+8%>NLVHSh9Unvwk1i(8#i&hH)a+Vr?U6#9NW^2!&L_IP)E`=_PQPJ zk;P?pFx-irzw`(ta?%;fsxn$d0cq-?ts#6#BZqgs^-WJsUtGXgS0J4ffOuRiLdxGt zN!)WTN{K+?(A`Q-&e65FZkJeyzw(7G;IdgU>*f8Mv+vzT$gfJz47*`h!?VT5onffu z3L+z(E(x~E?V8;p(-`G}Qa^}22>WvrVaqKE_lf7ZFq~Vd0b9Sl+n9(JHqw398>ddp zks2}mR(mcg!jbKj-vw6|gJGc_hd*1NW!577J|Hsf&4umpfE;P=urZNeC*M1ro;&P3 zYj6r&r}(+Z{@WTKxJ{Zn?6m=uF&0pBf8nkVkJns-%6BDw8}s0eIm@k0pOxV!uo37}w+KY+%*wYnmZY&r8R+Nb=V8E@x$55agI*oNFPg zT^Or_EO2od`QDIaU)n&NjEv_3q^k}-)4ji-yr0yp{u(2!Q8rp+bKy6Ldo74w_t42B zO~jkIk$U}`n|TNFg|*~ab;Cn9tFbY3@E}MRQENVw?R@ZC#CT@JH_|cKFMGA(PjtHE zmK|U17%szbI080t9Xkf$N#fwVa&^kFH+8cIrtS>yO60N>gD5_xI5jO?p^G~}cj2{CRC04fT~rJ*=8(o}rUwjphV^XSf>X5Bq3*2L z_2?azm&Yc!j0eBp2^=?&umbS!FsqeNg|AGc>I_dI^JmM?8U1#tr zEz0sJ8Y$K@dqMI=3$7}5Sn+dV{oFhz)Z!VUsnY+(uoLOMKo6;1z;FrRd(`ae?G7lM zaSKOOZh0a=q?3ZpemUU7*q14GI`!k9n++>|gUw$Z@)&iDRBwNy<1N*>QD~?HHdp2c z1y&@8f2lw5Y|+oW_F3XbM5zYs^$tcEh`69WXlilbB+cV{-KH;SFcT7_0 zow~u^Al+L&BvEHt&h>%okKQmR=!|~;ZC1`5g<8c2wTf$wuD7bJ2dCHNNEr#Kw*QE{ zV1%`c5m)oH(R^70NMi=9Cmm}?&l`?^n^-ci>UPbv3r4sL27W8*tykiVt_5ZxDE9f70o3T?hJ%nEgbco?SKMy0_g}nRwj3fS#f0 z*wQk0|Jhtdadv9Q)85gwmEzV+|H^%K(LB`tu^Rc{-Lf@YxRL<7tx4}8B4iRNEa>Fz zTkkzWAHmu*`X`U%aFomWP$Xe^EORc%bTdv-361v4TWe)2@P%k84wS$T#U#bxq=~s;1Zk9BIh~+9gdR5 z^Lq~M^kde}+uxTTmWl+wGgpS+PmnsZ24P)oOICRqmt&5^KT!7-+j=(GvIHSqA#eQ6 z*UUfX?KabZc_pt7ryNhSz~TM9pE)g#1bnQ-{7?LQ*m|QZHbT>Yg;$JypWB^xq3c}W zU6<-dj6+ki?gJd$;63;1jE3*)zYLl(Ki-tQ5cf6D#=5YJKRF=tt$lGRKdtD8*-W z{Cx~vJ39upe!WKvYrX5h*!|)rKEEq38e;3)-n6RHy0;Fbp~Y{*iJ#( zp|wSADl(pMjwPR2$9s=YAvaG#77WV#Oe-04gx1OC>3*j`{v8ATj*e(%u^z@k1lPYD4z~XS3Ldr^ZhjmX}7YE7YWs={FpBIdLnpw5z{yxs1H=)3){+-{p4h*(wS2ca|T6Ybaf$V zGd#mcI*qkFP}eM-ZE&krb&*B@%Om{Y>GMrYA?R{rX`URUoLjMl3f#9V{g#DNB)~XN zt;ES|#K$R%n|_Kv(RGu!Ka<$NgFjx-!h^=sQ$Eqvg;HsF(svh!Wz&_7oE&eF&iRA7 z*KnPYl-LPD)H($0BtRB7MwrY5v#vziGLFT)6^Nn-Ytc)h%QTfwm_rB=;5+iz(Y;h{ zqfYuS^SthEwNAYnm1OmCsBqPTFvJu^RZ}H|YucU>hM+Kn1f_8Gk9n9fEG9JsfeT44 zB;l2ZI^&{t)O@sdY7Qs;wys*(HX`m;Ud%t2$&%6yHe2=IjqC`XPKR=Qw^6>=&>VQ0 zVj|M91x}b!ak?=IHAAnIK{ye72k0>O*Kw!a|=l-jG zaQV9NgCTcjMunC13Vx)}A9Bg>12q$DTLP~b7nbPKYjG#TwC>2Xct5e>MDTNma4{Fg zP3z%I8{##NJ82cPCRRe*o{#A=Em^1SQlRQ!W!F~8@kG$HY3)qVLRP(?2*j<1KoBY; z(~!|co6VR1)PKS)SwzoS)iaswoyGer3gFdzgs)YdO$t#gQw5$OnGP||4cyI-a!SJ0 zKa_KM+UykcWCwlZ$%FGW+5za}_drk|eTkM)q#LPwcLqD$#yOY34z#->+G(Rjc&9S? zACsZi5L<5mT#pW@&{U!qZ>c}Jo^e}LliAisW;Sq>wyJ}&AL4;ywW6(AmwpdU{Jptn zd{*-`4>(iD5>JJ|gt4diq2+g5Gs9Ch)<11tHZX~)fETDyQGTta(4u8afgZJ&AQvAm2s zKBUJw2~bC3e^XmUTP)7qYZmxPLy>JJUPFK!ET^?~uUw|k7XY83Hty043w)&@dRErH!BCXX!}zFR z#gbDX>C24XDc6xhimrXveVSS3+k;p-I7|7OSEE@bq=`YpiMd2*0e-4h3hwB2J$paC zU>mbCCuE4ePo#;aO!%-$JclQg{$KNZ+iUo|q+pYZNG`sFM0p(W#DI}~K z#k@++$mT8@ZKvF#*%F;oHbyB4ZwDT`4I&S+Kk8Pg4Dbv?&=+Uze!@=X-QA>@`XKV9 zA~RgXg-^S!?y%AJK8_R*(WoX1#MWAIzf`PFC?0I=WcxSqCOS3g4vG5Kaysc)y*hTC zU?o)GW$89=%u%R;t9G#nV3n=M*zu6R7mGiq5Xqq_sQ@uThf1LJ!HN>ux>XnCA%^v; zt|q3ep!wOS+j@Cvg@u7CQ!fOmPFC_~*$qgy>Xy%6n|YfN*gpzz-`|1^dN$m$w0=I} zq@PKvz^S@l=xp1Yb!4Y@w~>&)7#QBUotEZvZ!-7`y|O&cyws-D*gka?lDN5{BU#R(TS28_HaHP^c(0qWkg-ID5T5yE#V< zv0p}oi``QDK4td1dVPPD4}tLp{XXb~@0~ZYnmxJwI#u(%>PeE}$+6s)*fhtXjgQ%9 zP!dW(wH|gG?5b5AJ6!~7Vuu=EUbuOMP0Clf0FHp263eU>3s6s8(WRuSM+UoW`wMZo zCK;JcRf*Xoc#v1m^6R5fs1WB&(~y=dj>)0y5RS&I#Y>!@XZA2G;;n5oEhDNZb6c%i zm;t`%(1=8!{djIyvEB}#TL@R@Hs`rOogujlIyEmb|BhxDb5x8W;yp-{RifCEJ=}Y( zIiL(d0}rhc!QZnTN%&Nk_QBWuTm0hM{C?n)_SbWPuen?-xou_ok3FBlB8`WfZLHZ! zuAVP_ykoBRJcAY6i+?6Cz-*jkl;(QUwFr6gH_>9nN3rFcPEvC~kz3^g5lDJI;FRsU zfGR!mXyj)0W5JW^nojo_hoK$Di=NT-VVQO7YbX`BkaTNNpK^mx@RSRgiFJ z%e*$)F-7#Ll@tm6D-9BMeVmeANC=~&1MFIL>T+7Ju{;4EZ!JVG<%rRKi7l34#Qlq} zNKBk(`zHN4&b+`Gw?8%53!P_w&iaP?a|6GI&JudNf_}Ygi@ejR%LxtP5XYR z=MPHxfr*Ph-pHCj*YV~vH_a1l6`)J}?2uf;=3a;AGr^)HOc%06NXXWN5$fIxZF_Za zDj?YTi2QPDC8?5vrBW~&>;A2UHlrS8X>Q>*+AZSwt{Y^FovK!+is72j0uTs; z+NR#`YL=@_T0i_ebd%uYe<_cQM ztR^0V6Acha*aP9a0lM$qkd_9qPH(nM9WbKpnMBc*7TNObbL~P?wLk*P(jiO8x|pK7 zwB;%=w63a=ZkWZ@F6NCmQEYBC{oT{Sg#b+RXq!2(Y`c6KVcD))wq7|Qg@6siv{-Ms z)x&vzz2FN=;tf_g7M@yIrV+&lK;@K5zv67^ ztpGG7-Z+G+=&f1otcW=~EGP_9=n#Txzk|QMh)kk9cV`dgkU3vUX7Z(X zzdyq8-sAU5W+rjP*uvqz*pLK;inHz^^DJx!dNH{E#%!bir!l#ATZ~XyE=A`4qG0*P z#I266?E>KY2(TVieMNwiSsS00I}yf4K5`%RtO7JN=`gQQ#P(0N5@EBiAX(c z^*C$@RkyzyrNuC-=Uu%**%lu^!xeIKA~eU}v1^ASV7@XrnRsSfCiNWE5?J^p+IPoo zcwdVKSH2KKWTQ!skr`RyWL>Wg;os3O+&++6^Z4skdu6?gHoN}JD%rB*bJOlzF)qYV zOIP4L6F-abdC!I=0`6kAUZ!2^vdOp6nx{^h-+H7=bqgUzCBpgpB5FL<9 zUu9En*}bDiHnlJ`>8}gy#DuO~jXXb(9rhtv8JySR5z2fWKG0(kSYeGHsL)WpSk0f! zGv2(Lxku`sQN*G*0|QF+RzWvbaQ@3+ulr0kfOmqU%if}MV?AtD$YS%ykbF| zTaCK3YGi}rg4uh-fT~F?D|N7l{GFn25D{+Xr!T)D5b^l9?R;TxKgyMKaPwk1*P?Hg zbUd6wexP9m${&F&AqQMBd8^X|ewCa>^+ITUR?7oiRWN_|WA1tbnLU?9Y=}vD(Oa;n z^}*IMxv*sUz1h6@_w&mndCz9k>g`~cdGtQOfYa({v-=${D<^`zOB*D}axc=AQ&!-a ziAJA}^`XAnb}}r@XZlc6sAn2;)i`SL0PO)Q3ouFbxzeRPD}rBM(Kbv<=|)t&csHt+ zg!{^Z;(&Zj%qZDOhkU4XYqv&5{`-~;>0Kt*Btr@b(6K+uQ2iGg|N0Gz$FRZgwv9rFuMC<)!f01EZ3j_hf8Ke!tK6 zMEZ9e#;5Tg4&9Lrz*?t+s3#9FASnbDfu(}M4qd37DPtiog{tX456|8 z6hzi$#*5wC**ev}>7*>gjq)Sa$D-uD$Ae5Mfm#gHWo8Xh-SPvK7qoEd*i=&0r6b^e z8n~0Pu2`(rgpsF$Qq*9A;7BD8hI$}^R>Ndjw%4LLFrP+3%r{>8BN0xsNd1UZ!*07y z$wFihf`eU1x|?J{OZ@4*vc+t1;=twi)E5s0ceQ9)CbIFfs5IOK1D8G~E$$Ql?36uL zSdwqUtulMm`2J#$i;;WgEK92rxlyKU$i6Epp^h6!!B))K7psPvWkyEzVcvRn(d4HQ zTQYmeQ{mdcl$P0f%tBr=iO@)qF9*dy)v`O!arR4cz;E$&1sdiy@}?asHaxN1DTJER zzScBYx))k2?@?Axalb0Z#jJ5h6^qMD5xvv!+NapbwDY-)C%Y)h4v%UMEOeojmor6v zPjl-=5x?q5wuhZfIw(+!>7`t`NP4;3T6&dL5%o_zTSM>VgHoGsb?m!hd%uc6^%H3> zMw#yV_d?Xu-fpQ6=_y?hy+6G&Xc?$|J=IcNUIPg+fXy>My(B)9tv9lDo|dOuJ3~m* z*%&$wF@uBnzzTK|@Gj-BaVPyAfMteW21dLNnGc<3akbpmj-c57yo9Ds?kxJ@dB5A_ z2sr2@tSuk-{H<%A*n`O3jzcL9cMzt8n=a28w}N^$#t%Ck_Ar~~h9NILsP2eS_U&XV z$Fq7&iQPT@G~*O+P7kups1BhlfId{cnctsOtddW5r?p}*&;>RuWsRn5)7Aed5m!=X zKKiw^sgFHw1)bgE@9ajMR~@M#A)Gp!x#_JvM)3m2T1U2X`|u3FvEXI7RbtZTYAA%V zv3H!9osYSmV@g82k*n@c3jHQi9k{7VLNS%7dG9uAt<4cZ19weFtKZ}iaUnX|a;v(e z^wSnwn|J;Yi!^&nF(L+={Cvf(w-cSJrc_i{@w;HF6Up0nb2~%?wCVeL~d9$b=WR)L?}gu{sS2aqJalXu@bO{Rx=U8pppo_U z3#TR?NE@#gq4@!%{oQc(&U7o7A1x$1d$-T*EjU>PzJ4tDa8pnkUk=bB@3N8^@N<%X z`idy+K+*bb>as8|F zgL?IX_RddksW$r4UOkV{NxNs*iFws^ed}!KJ16kFDfu3B1{lp?;s0#@F1_g8)o0;! z-wy9m?p3;46U_;vZZ_e`zS1!!ch~FYX7;R2vxT6RN4vP@t&lBZhg^_eU{gDBocl;WJjyJY=+n}>5B)W5avbdxG%UunlvH?Z(O zF_YFe@C45#zZ!MB$yM6y0Go|F7U{7Rry}(G%&;xRtv6FP6a{SR^!VclG~4EZu$k;C z)68@9#2~$HGY#Q=T4fDM-5Xl&cM1QzbSo#pZ06#nhp8%AUDh@p(#4DBwNMp9|B=t( zY1=QYG8(zHk>Tj>eb4#QaMgr#bIDxyt^Y=2q&-bMk8`9NY?2Y*yQJ$ulR(E#A2a#j z$~yj2qrl=}=(XTx*eSV54P~0jBhUQrGsl5lzXIqKPH)SgOb2P+t8=0`lKs??C(x@d zZUWmk69J_os2d^^lQ`iE*FE^jy0&{IOPt9yyiL6CeteijyfGwj%3o9#Sic=7NnN0<% z?oi4)rr2!j&|G)dY2-&&IrYztjBkP>B-VW+m#i(9*&HoF6Vq2?acY#w;*%gwM}*zh zwOhsC{dDp8sIH8ahWe2~ zWiCJUmf>B@rVmNOP;WCqLz_{~os!Age89!>xYBqO%)0aHy*`m5^tE|?z9u!mp}gcOs?rC_D2SSaiK0 z0p3$+dmJV+%-ZrYd^ff<WuhgntdPv0oni%gL8^X~G;2(=+!-jbV!l;bc0wGL9cq z?J;ydT=2DKU4g7yftlDXomw8jKOxn`Oy-s!ya6dOHxnzrHA&2>f_k9bz`Yr(no8yQ z%d-v~tyy0s%sr3x;jUL++&tg=0{MQyG&;gIyZT&RCx}1q$wi&8#0{b2q;TPT>#6f& zQ0JT6cdz4ktiNY6Pm-Uxht#YMkJZd}8k@a-q<42L{M1pS!U+hyX7T@WyPfKTyvG14 z7v?<*M0NejQoTxX9nL6759xme@Q`19otm>nkOtJ_?fV-?FHZT(|CY@nRF36T7$1p= zb7V1>`o5$<$yJ1c(ZedPMTU+GcWYJafs{Xs6Lz^2R%W>m*5np7z)G<=%aqPqZ^6 zCK<)84nkY=oq|!ai)EpSRAz_@Rw24JIVpoJ!mX@Fqy4iSOD(l<@{BTk$^x zFzv2~J9SK%mlpZO^=Kl8v4$y55cY+e4tIJTZzufU~ooNAiTf&)Mkw%7!i2 z=~AZe#|TnF$do(nI`~oolP>?R5Pj!~{cP`Hx z7&dBQxH7f_+~W2`wtq>jKYHXT% z)b|_ZS*k5%m^2e@mBn}5?KNdy!){w=A`>yCE&X5D)M*%!-Itd5o>f0A>&xB93bkf0 z)6D~a-ex^dy*$$}m|r@tkb44}anVmzvsFT#vyNKF7RjYlL!)@*v@AT=cJ4FRZWMq; zy8k(alY{*TrPvLsFnU;p&taPgiIrn1vCixHl!OGMkA?Fgj2lvrW>v9#wgZ zbpBl##+UbYGPcbM=iT_0Se8zFBwqoZE91J``E;>9di`7rFZ7E2WI+tIh+@Z2-zM=! zOgpXiW%1}kE~XL;-ThrDQ<|(|I{#3V#65C=;gN^ zH6raLUx^Am%(NYt`o?gNoD>GbD&inLYPi!eXmx-H8O;@2iBIhcH1PuD;C(1sVcv*74fjBuwD zhO*HImE3#g>{VD8b26~)zWPE&icd6jtg%JL*nh#)&wZTTG1#~!`2w<)e};awF7&pk zmEE%1wR|Ob_3k=ZhZ_T%)69!O6BT04%Btbv|BDV1x{o}zs1zEZMWUQO0L2xf;TEIt04D^*%x*_;h)Dv zCt1?eS=8rnptBmbf$bbnlbH)GI_F(mh|pNKOpVX6J7JZ=g%8C`kkIyxU>qicz*;^qbkeNpC*7)iE5oEgk@=Kk56V;tl{TCV`KOaYQ zWbuZ@b5D7@Zu`fWe;3~#p+6%F82bn;xU-6_>qaI0FvRADp=;KjT0&FLiB-WI(Ca(T z%`UIn!Yz3#OWbgOUj-JCt#mG<5G#)Qz80pvQLi4PAeB*`drn8XS>|PGEvo#Iu-Gu~6wS6WDdUgG`4LQEH9erz9jLDs_hW@=zvOyb9FSJY199 z$`V%rnT2b_1w#^9t_Qaib)K#X^njpz4Gnk%)0b?lceiD+-e~8j#uXC*4RVsV0*<;j z*wZ^(HD>aR zDUfJtLB+o49EBTr3K>4PyWBd~vFflOT-3)-mAR2<;P>izM;MEBW`mJ+pf8m;9Wq}1CM8r?kE;t zXb|5pEOPImB1R4RJjI$=V*dHM;Ab`S(^W?gr?|~-FrMkKTV8MTr)N>uu@y zl+#bGG~DJF9I#2cl;r4i>;2}_$3Y93+lCgoV>g^D7h@aTH46prMJP2>+Fj3Jhx(Dr z6GXN*@hOOeaLj^rId(YnDtCUwjHhJ}o@)vs;_ytJw8owTgwFb}?LSRnovq#=oZA1y z-)CcrJ|6PfO0GX?Z{8_$0K9x)Z!}(buNc!OmHe^ryy-2T{5Z5i1#9TTQ=#+XF}@!c zD{E=|kH<@nxrxy@q`kM5b*#g?(p8mXD5G<4E>%NcfwfoM9w@A~jvu6ik?+vxJZHE^ zI3#v|xTBf-_4yRwIJ4aAA+2gIO=!GHKeP4sf z^UQlF;}r)AuV@PwBiW(8WxB*!4e6fm;emtW^p$77_}Kn__5u+TTXI$jbDTc|Miy9 zLPagbHQD)@xi;+PWU4-uW4B<5@inn@8)-*2XSu?R&qj8d<42&`dh*N8D-dcLERJDP z#DjH|t4!TCG+7Kn%i?OvDwuP{<_-`E`yuJ+T~H*IUB8_xgV%(%l_y3{q^y&n4#({I zz)SEx7ZtGi`OEu>eW}IK{RG}d;_=?+#kxc_kcX4?!0^n}^UX<*G)`sRLPe7D86np}3@&;M zrM+Hbh|PxPR+byxF}o7I>oWBEo3l9~Csh=)Hz#G1hI^fo)50D1GrOL1pVZUm4IEJm zAM|eNyIpeaMo15UpB#nv+i#)UQn(eP@?<`fLX7=<7um&GLY8*d-CuKM-g)1#`jYRx z$oFLC?5Gx=BfLBK1J%VU3-`J9$xtbH;g&-3EcwVNt+=T3K_{bMi&(>$h(MNTm6AQc zy+@-?`BpyF`VIeN#(K1bU-7~aAED_>a_{E^6O(QYL#nWWjK25Mk z5Yp`HKRZd4KGiM;d7E46%3$K9PM#|}Y5qi|sdnM!e!1hDKoqipgz$DL-p47spydTp z6u?c&TMcGHS0jzG4yGHTmbP2ve_i5RVlb3Fa|5(iU+kQ&RVTx)g(v75HU#S>leZ1q zj|g5=uOaxLV+G97QasZ(u&*dY;x?yUQ)0(Tu{NY+r5Ejv!vz-}O3P#$ zR-Tx$>Ez{l+y01v2^P7b*w~d-*06v3@GRn~TAvgdlFre)7Yi6(cUHmsdmsC!rC*gt z_8y$m&iV^_jdAgn5Si6Cgr0qSqG@`BYZ3h8RHuij?dkgg9)M-L<7kIA3_FtXvhU@+ z$XfWOu^`K*qkG$6)Yj`kz+0H0!CRa%2GTK{4~0=xdNQcIp;WJ`*CB#dJ66QeUMvTS z;63~=pZa$AjwCvw*LD5L73L%vTx~Q~Mm(?un#X){WPH7i3{}}2dHu~X-E#W24%%_Y z$dYoo%b-toV-7-LKfA#kwLj;DD%e3JyT?A-&L$fk7yTPIhej`LC$EtzR&3V%f;xaiKxOeKG+IDFT1aki*I3VMcy|vkXGop)WEnK zo3QS<)$m!NOL6Q^VSYg|k|zX#ZAZA%9&lJ5%zvcK& zeWATrdUbJijClL(;_L=@&rVphlF0_Nyucm0Z6HVZQ{?6olTX z_&WB=kZtT)S{`03r!X>Q`E(qVu~kz*DGp=dxM$G^Swkuh%9kBBx7Af-18a%Zo(`|Y zRRaA@cQNKJo7OoZx*hWE=Qz-`@LFs6C5zDIcJkZH^}Q!$k36*Vsw_Vt4=I`4ZWMDl zpXQm2u^nBw%FO}kZ9QdTGAs#7;(v-c5k z-A10jV@Euc-;jzD&6G|!grCo?qKwqY?X~*F&mXn`8CJtRTRH;I8)?BEXtcu9IJ+LS zyVnE5)lcZM_d_i5G9}DEdUm!VUG!8?5aN#Na0^S#R=D8}pNej@dJ>1~oN7EyhE9@X zM7=?R(pF66hNlWrt_8guNmHDrTMG!myW+BD@;GIG4;p%RYoq=!khnd^)KPg!(*4*Gc$*oh{y5>Y2mM`O+n z8Y%5M+nf-;O+-1lOIqzNZaIi8-&$!h3hvKY24h`pREBM-<^-+B2DC>gu%N}Q~H~JvRKzA!~CmL(ug`9Y=OICJ_trCNa^1VAI$9H-tcuJ`Fv+v)J)_abMh2j=JpmMh4|9HS;WVua zDy_Vpkq2*VvB9S%kv{w5Rh7ps^B&_U3&xLN7Szw%WNGTH0_CZ6c3UA0jj%45gn*y6 zadmM7v7?>RvpAp;nhcTDhB)V!MsWwn83hV1{gCgP1WWabX;99ji)C+(G`iRLt|6wd zdfsY}El(14Zt2aDw1`FETl5CL2r*3-(GDto@k^h828~%gT7nO|tRJrzgXoj|laoA+ zx*!vz;+I4l^T#2IM-(?_vh-+OO6&YN^ zMHJ!=ak;n*qs{oPyz8c%s>4U;JjW6q*^5i2n>rF4TSGM;irb}t;6@UxL*NCUmwx{k zM?&<=^MsuXJjqE>sB@i-LKOD_?CZX(%h=ON|)vd=KDgQBLs^R_eIsS+(sK2mH7)i#40otNdmBU`M-gx zF3}p2nPa{zFZpg7Cb?y}Xt%o6M?YbVEcjHivftH8qn7{TalL~*g<}_0oxMg(`92ok zb9Zx}+O>)&wy}d6coEHav1w{Fi0f!OL}59|0!m4(Ck4VM*EiM1JFau>8yW&eKOK%_ zyYZu@X@V7%4Xr+NZD^4IG#EZJDaWp=7s#I-R;lql^QbDZ!gcS(q+vnm8sfZ{ZmTtN zJ`RPbrFIx4V^O@+mrbJOzox!4V~|wCm->lF?lyq5uKA6L)mr4ZDH-gVD=PVIDONlN zj_*2S{9Fs~kG%aERY2**#V{~N(d#PXXlwI}VvnYG&n)e~ddbuQK8gP7kP+ouRS+6#n#J`#{ zxMw-IHE-XwiTub4VF`<=h<&;h8K>z)ff7|u-&;`aZ@{92$dy;ECL2S}!E4+%n6qk} zhv?TeM6(u31R&4S{a~M((6>X6FuAiW)3UKCCdxDk#^cIem~h}}bH*Afn>{~C6NW6!=ZK~~NpvrY0ud-jv!5VF~ra?3#~Yi%$dq+wE+I0`Rx z{$N0yhi+$MXlW}GYfMpDiIvE-mDN6*FJuH#8a}WWT?|wZU2UXUrZeE94@X}!YE{{N zzTF^lgFBm@9s(DI>GfoBHnxd0>K8ISL1?@ZRKdj-&%Pz=+}`K7BZ>|fgoD7~_}fpR zbPf|3pUCtz(kxghZ4;4$s~Dx#zR?nR|wZP}o%$TTqMuCAM?%Iop^|$F2)`u_{PEv4V_&zPfeV z%$7GA;%P>x23@XxB6BmH>h0_l;a<->m^-SfV5=^zpV1)=DAQz(OCfsyU?l%OpXQDy zUrHB$z??vCpws`_x(WAqd>v1$wGy!lKbTy)s8jP9CGcf1F_sb=DP9FM=FlG(Ic};1 zulR|+r*&Cty~Sr~z3%Tn2@(sEP{MUTpdT!=-zR0Rxyfy05fB{5VDsD^uwTrzdy}_* zynxk=8#5u`6Td-bq+Xf45F?l0v=Fob$x#YdNc$cuYU;}!WZE01vlSibVU`J%(DWx{usv6dy=`GcD zZd67W#?Pe7y|kO_xO%H~ctS)x;z^x*?KgG4R#dpJdaTMW=4jbO51xJ=2Qe$guutyQ8HTOsh=6fH!BWYd&I~;> zzxyL>gH)K0{ZuSX{72HJMVdIExUILP<}bP|?L8tHjp{p%8(k;m!pq z)Zct!n}6|@q4sd-U-yy*ZueeZ^@CG-a4#C0dlGMJs;GCXKowE&hSk?&kBvc3dw#Qj zo3#B~JK+a1p|5PF;rP_h0~^`i>%UfS9SZ-%jY<8zoS20GH5;3swIUeU5yjrBw(m3? zS5v51#~EE2h`!M->C1)&V8E^N?xMcuvB^=zKZM}()3c6-JjP=sw2Fh@7;0^=2JHL% zv@QMwlpK@9Mx!E@vn%_a@icEESXHsCG|xZj0|7p`0BVRTwOC-~isNN0aGmzMO0J zDO^0C#_+I}`5LU$AC5|?!(~@+c_9YKvzb^9kLs63RDioIcbb2Rz`xP(?=R7c!r`!J zm~cee7<`N3#HYHfu**)z)XgQf2xKlp8k-#c@5zs(*)l!j#D=%JrbE2(&_sykGP;@z zQd$p(b{u!OspN+bk$T0h-W)|{)8Iefo7}A8!hbFc-}>VbsPgsy;b;B>=G==R;Ame~ zV4_Bb(X)QINIVk@vtCi-1&ir`+x`Vg?AZ`gU0jY0M&j^o8SOZ`eZm>9Q;*&lInWFC zxGQK#5w0Bo9^L;~^&j?}phD)EXZ%OS_z$W)!~O%j+=*ot_um48zej-n15=&h53KqB z5ojB}iTM9w&Hpdf{Qtfh;s2voBj_q6vAqtKq=}HG9qe#;#a5-M{AIGJXZ>iyfHqEE zr4DvIr^PkuRNj5?57yy7EQpsFLh|s;D)p#v!vg!YR^j#5nP>0%QTWOMQTBN9EhaMJ z8ZV|sEttSLcTV#$8=XE$oMPdoQ&^kRZ-MClwz}w=$nPq-5R>pKMyAm;OWu-{ySh0%z>l*KWSgQYCZBsTa7bepCL0Dm z(`e-KE78dBWmV-eqLxJaIU=pr$VK)Og+-hMhfSxI>svzVrq#3LxL-fyzn-=QInv)$ z)mB7Ntkge|uI>TI;c84}AJYBDU>9KIMHdiM%9!{O!0C z$JWMTx|hA(dE4N@-Kk^WP1Z&0mKQC|DO>oUw2KXRIFy)c`nXy+KdRsvGOqX|gkOKy zAQ&haTM7@clv5`W3^=}KD3V~uHY2e%Y+~UN&u8Lw&%b&6IISG^Q!=K^r*!HYJ03_9 z^ZfT~Mk*ls(7p=NBu%e2(rB(bAAOXBQl@LEUH&M^C71PSX=kLf$Fj`Mb2MuIM~J`v zxWu2h{M=yFn_oLN-w+7&Brmqq1V9o2n(B|Wb=oGlHDMkg+y7}1cMNxws*HYsTB4IR zO64ie&Q}U;A}#E)bllo%`dQlFK0tzO=SL|msCGXjV68ye>M!$7zTZaSi7X0qatq?RH<>(^it3Bfy=H zhwRlobtA0Pkmxs3fh(R9?r*+ZERV#=S-P?`@o!(pw_KED>kKSc@=&!O*YYaM4bN)n$VO4-MqPMyLG zsox$_oEjIwzN(0pL~}l_Av9popYQh!K}*n}ZUs>|i2U~XA0fh+zw?FUIQ{HAZbkQ@ z`K_E#e^>1kkjhzj7C44sj*48LLAp!#+kZ#^bOMEk=CXAj4Qs6~;^fhpd!6I`R!woA zmp!sJOaw&l{9g4~r2QWOLMp+`zdfC}hM`u_pVXqCL)Yv?CuWUx7Hjq!%X zX0%F$;!wTck0D;2C*-fM);G|7nEoGRQlEMQQFE%`^;2wZf#Jm_r`_(gKuy!O<#s$F z7)NYkB16Z`lKrS}I=?+ljOevR(@M~j-^eWWHLHBwmPOWC5igBk}xe|reA4+xC17e(%7@RH@MGB#pO*6 zA758Civr+}m^1pRmUZV$MiBJvDIE36vE}BA4Cb)OIz$WoNtVyK7M;)-fu{HM_F#N$ z?3=(+%a6ZuV7NAjq($28-0DdMCMiS1*c7!x{qR9nlbsFqGkSz}-vcf{i>=Ned+8(~Q@NWLCPXAz_a1gL{ z?`~RnjtDD{Ev)LR=3i&I$usIL<|!g-8I&m{o41S7FT`v$Vjs2D^^dM69mR3&5k)wv zlv*@+ilnsA=q>ARV-QE}tW4NH+L7KQ@o*fIXo=B5ow*?C^z@p1dDZgX@zgnMX?Z^N zc!{Q|)~8juy*-5I98K6V$M$-SuKHk_q{btg?gW^#4UcGCD^NuFe; zFiX#Tul0T%@5-#7`NUypJWZ=G$Vi8Wp6FROi(q(O-noqG^{cN_Xr4*c`Ui6c&&fIU zTQxB-Fh+8pPzX*hW{LV}^MuPt{E`AW^oXR5%_ntwT-Rrr2#+gT&&nh~Jz};A$(t1C z06m&5o*k=iVO~ptz_ZB6{CXE_h1t1{=h!Gqm-8yzQl*k8tCQR6*;KJ|?Xw4jtsjpD zroo+HY|ec7q4yU#>8`xgRWA(dR&7ucPY9VJl`CgZb-P$a4y?8NHHt%QJ(-%hU>SGs zV7>#$m5PBp-k0I=Je=Tq5R_=U5<|t}yVcQJ_J|O_)wH~9O#3o?RAHM5dc{HvD7G&i zclt3wBj5^p!Csx0nJMU^c)qv5O4`F}Jvcg=cz1L0$?h(3WJLKSi%B)>6dEb`3+<&Y zdd&0vo$hzVLd@wHGp%ii!K66A6uHV-u>)0f*___1QP#=l!t;20w!Zpj+!)tGS9JAe z?wF%o_O%&|+1RSRMQoO}xc}DgVCSF-v3Sa+5|~6@mww-B9_a04?=^R+Nu+huuX0?m zqode8k7wrN=vgj&`nF^vo1(+zZ8l#B0;tXlGw2QA4#U{0pF7%`kfEg-1oB+k7f7SC z)GFWQ#Qx!8M+gIzAK%5MN;+H~uCB4yu)OK2)~EX66PUjQDbtZD#GM9L7>IGZyX-f$ znGVMHR{PxWaT8DHDLn1y&g3%vNG`UILA>3pvAVjvo_Vr0p3K>vVtam8ldZ=9s825U za@h!H{g@TEnuer7_B!jf7H`Hiq|WbZ_yags3N?FOUO^#FtHx}wTu(?QNJ9I|*RT1i z*`j7|I2alGw(7Lwva&c<{2nsdbQ|A*sNurUau78&1O9Y{a-lXvEI9(m} zQ;lB3f2CBW9e2DMMwPlgI6VBhD+qO%)AvLA!r3**z~?OgeVa6og&6^b+r|FYfCf;H zp?6LPS}F4j0WQ%NuPFyvK5C2VU8wcH2)Axy#a6Sd9MYLQY4(MjR@t^{Bo8;$wQw^m zp($HVS|VmQRfR|ka%JML(QZ_HO&i`snyaSgRdOlO&-1z5gHWz%;}fu z(?CSlE?tsx zB7jT>LskZNWJu8#ym)}xyhWxLt0Rj)S6Cq72$%Y$!|g@*Zmn|kEFT^PEVD2(D6Gf#Xn~@NN>X8# zCm4;<#}u{V)RQ&cdK=7OMpX(Z15fFHS{^3d*&Izb{W)E1MmKaAkiWv zp7MJ4ZqBRqMLJ8BeuB>7P;+6Qt*mntKawu#hN6;N8N2CB@|No)pE0Do#u_-o3#o2? zi0^Yf9P-GHmgSpfZ^J|aa09a)07_88NqnMhj3XOf$eCcA)+I$NpRO~X|IG9G#KHWn zBoZyHv1(uYRU6YS0j}l@+Y(1H6RyfWj;nu_v%G|X(~!%>*ESgA3Tcq$u!%b zrKMGEm1vz=3cm!c2#+*IY25Y~wea!rBS9tWvX88*Eb0>~KqbfSePs5n3e`0=qviJ( z9pfV)PLW1fk`4pMSfc1W+#gpo2)ZBokE9%xrwX`^35evGk7s?E0|>bl477Tjj1=GS zblZ$&*pF@Foa+!@} zf;;^D#_blP;ftA4%E`(qwzw+D5^5MLD6`#;KEfVpJ04)YP?aPI|f^>Ctlp1$FV^W-1A-ycRXz!2|{s1^KjSqM~hs>G5pG^TBC*@X9edw~y9 zKE-#TXq>I33&1U<<*M=&f_wz?=JFMqDJ2uueZo~GhRC0)PnwSPeS?|Fo)s~j8F_D! zEKO9ji_Cn#)gv*BEzt+DQWKb(#GToau#4?FKF)`bX=zFc_NI4>CB-q7;xq-q5gW_k zfrA($s_NDtn1Y0>L{;Pl4|>3w;aS;0_jTCrO|K9QL8lt4xxXTk766c>f=4X>A_oKo z9^GL4I3G^tY=D|Mn(0~A$Eq-0?lr8WNq}Cb^Q9sr`3thke6?F@o&#Ebf7_GD=s6~^ zl@h?y0v?V=@qov5urAbx=gpzX8lGoA87PEYwu*xJs^8kXyWfbj3C z1eS6V*=Gt~lTGES7pffZw;ZG(Q9Cq3Ca%qjoY%{ez4E-r%W8La6%o;8l3PR>}MWZEB zW*4h{7su9g;5;D4=QUH&1=!1~58#ocGHRt17W{n9&V<<%MldjLu)utwKOt|oYp`N} zSR~y4eb@Si1_%zz+L`EixR|shlS`e`YW7VoH?QkYL7c!a+&p2y zD7)g#lgem<%oLJM!I-*dS(*zVC3oeI0C{l%5W1K1B^YV81CJ};jbTV?EyP=CL*bwL zRJ(gFo+9jccz9-zIHy+9324lFxqm8@sz{-Q-@5M9@ei2X>$(V4i=)+ZLqiQdbkP;M-ug1Z&=r zy&2J-a%l#A*@^OCP1fU6Yrns?=Jto#9F(zd{YtJ&@DB+rs{7Wlc&;#9J<31iLoauL zI~l1ukhY;}-ebXyD50k?SK~BEJ=CA_u35rIdlDXfjnIK7M~?Yb%hMrxYYcrUW1O*E zUft+gTLZest+LR@W8jm_Owl(BJgU#rp0Bn7YCviIvWixr)&*6ypUcZ;3L1>(J6vQR z4YMeXt56Z!N*9dT8jskx(#!Gq=Z|-6Swz>`;WD& zr1?6n5m9sg`{62&G{2BvYwfAQB+5+_cQG0mei`yTJQ+39|DL*D)bUd z-||9`v2=I7PRV&lcKl1K4qTKoQqN#o{V#u!mEd9_lExkbGj_DLYXj~B)zY-`Z9z8d zZ4d)9Xh(q6ZMv)_coQ+Av%>|$-=c*m|5S!AOzGr~|EfaTZ z5-a6wVq4@*lv+3T?XO!&g(hhTptIr-go<|ASXN>sLz-SgaslIG7DH15%lr!7OpxVc z7oVbhrDV@Nrdd_N!t3EdX5C=b{>+TlZc1Nhx!#_Sy%07jPbHFSb3sy_SyDrNZ>G>z z#y6Y#RPF~RD&NZhlIN$bDmA@E#>S&D<`n(EsN9HaU|1Xu8Hg+PLsrlvwPXrQS;vhY zw+_{)?v={iX&=|)^;}<$)jL{OAQuy95K~Sn=b5*weika&Yf zXl8T98>kBCv)&-gq$h$ru{yJ+dO(CQ>ee3V;c_GDp6ZwwG(OR#lTyktIwOkA(FLyBft%?j05wP_5?UOzN-MGw5TNTuzhGJkv*2*?g zS#D21(Y+iPO2^P|Ib(T?;5 z^REQ(1-eB}aiitEqM*KctWuD{{ZQVg^l&F1c0b!;wL)usz2%zntJIFOgh(&97!#5y zjB-JDZQuDU=459#gRDZf3rGD0kV+n&gJY(Ert%|J5mo~g7@?UZFIV{)n@{BSLjk8- z=8~Z@ojcnU0lBq}vg&MI2&<5iH7cn@i(BL)h>9@##C*Q}f6 z^6QT&Ko_<5k{S{KUiooJ#~*WBpl}sh$FISn68#2$4b1AiU`5@SmINDixRykfc)8m- z0ozU5Yf}Qf^`C7QW}0EX4W4=~=!V;;-f2EbiHWAZx1yJGLrDj4fR4?F){I`xN^_CMRZ9?sD%dRSP+6ppC9^W^EL6>eg@?Wf_-8mSM)PF|<0= zOK#gQLRq+z$ZL>{)4B*i`3~{@)TFs6pKH{uMG8-W*JiS^p&6ojDJa|4MQIUc z1f%mT6<>TTWg+mGh~qPpY8)!%Wf{fu#X9Rk@8dxxm<#Lmuj&Fruf>s6NZpTt&Sh++ z%2W$|)?T9{L+{em9AE6616?4u*Sdm-%QoHy=@I+iSO6#M_HE@T(Ypmw zecEaS8XSB3+R2JH2JvaktZLpBH0O{nbmuQ*U5j@JW2;&4$z&r?8fw|*Gnvz)&C+jz zq9R$%EdiWr&3q1zJI#ov7`0`%8w2Z*HBbNwT;+-wR;JoosX)k?Cuj;^dkzTk7%!{X z5n0ffsZt>-vVLXRbP86A8aM5I0=v6dNrnw4E0~!TfV664ug~{(Twgmoui})O@$~i* z$XYCsqRdIaV|^JUY3)<<5_suov%Nu#=P)_RbpTYNUKsuI%m~ST^rJ{&K($oZle9e} z4(;3rjH8>$Y z?8PG)-dCPJtIB#yI)uLb`rsP^XnR?ljEi1F^YOMU^p5hYqi)?$AZK!=(p8Ru% zpU0a`G6ZJ!mw4|T`(v+N+qTC1do*jrww!~I7KrXd{Vc-V=W2O$z!X#X=X~YZ5d3#5 z8K{DKhL$gR(ehLEvU;_JhEH0zs{SN#FWkn3Orbs@<0y~ccWgm2b0-l*(Ohaox0)rSsDe ze6-$gI+Vb?*}pKJ;$rW^36I*jad;hy5O^^DnTpi7k%;inBY?pGwz86+8o*qtj|3nc z0GF8`DlS~Jc;d7HWfG2vcoU+}bh~od`yDsdwi<>{45;E$OH~Ilu$fG+1HU@%ePXV@ z4`+2M)_>O+S(I~D0owA~C@}-`%o9jY@fMe7C$V*S`DM3Wt-tlyAC_`l?@-@(EO$PG zM8r#o?R~}KBV2$my=7}_V&;*A(C76bNwBZR)pEbZz(JKLzesMCME(w|c1Ie6?xKt3vP;9M{s)#;wM% z3(;$(iQ9fz_(ORc4CJ(L?fO~ce1FM$4=_*olG!_KW=`x*bT_$$V6KP-0s1IH**oq1-15+Ls~yi=?AOv(o@q zsisD@qh0;>HFlB9d>@bzD1%awpaN~ZJ_YV=aM9h!D`^9=ggd@hE?yjoHtn>D9M3{g zO-|-4FK8o~Q45zR6z6$aNN-g?NWJq8(TB})8^~V-9oQoim@Ijpv)*L?@2%UIA+P^ zD~kf$+JYaY7%}n4l_f^ry-QA$UqW0zBOsy7-t_JTlZX}HU7vln@3@0#_LO&GN$YvQ z63j(4T=_U7dY%{(DQD|YdFD)t0l)3F(bw0U(qcl8ap-;;+ecj@I1p~^%9gmU|>j`Nl z%3+#yd1Aw|=Tz6cs)u#GIK zhoH~=J@v&%BY)a^JO7kmZw~}OPJX5V$9StjC$P2|W+a0qy0^=B+bL{|u8M#{GX*Qz zRY9POb;$4!%Cn7R*?PbZ3ISPbbyk_)=lSEoiujGYUOCuke!t1Vpl<097MI>!RrI1j zZLSVu`ckKHq4g(=h)-C_k=*5`p(t(+m{Cc zmMF(on|UUlT_1ZxGBU`us*FPB@=@LjL#tT!^^s7Y@E~c<+rbNvj=cmx;)f57wB>0U z&PTmO3ukE|u+#{RQULq*ba4$l|64vN3w)vvHJj|IKMXD!RD4f8|7aK z_iastXZyoNZ=oKgYvjK&AAS4d+!^X+pVw^THzFVOoF-MNWeWEf?o1lQ(-hlM98wKUfZKBY@m7({ z9D=&q^wNs9bkqbE5nPag`O{<$1m1^@c2|Tt%urcgE`I{7Ll|#pA}ercd#Z4Bzu9$< zajf_nu}SV^lRZzP6e1f6rWEkLtc+u*)o`|wD7A={f!bUj_=zP(VgaXhcW7y8^IoUd zJMNS<5Kj?Nvhn%ncU8VL-cKOmUasr6Ui$i_9$p8J52Nyx7QMeT=3XCaT24UOZg$>g zN!E3YsKVYA+ZFFC-m&1dJVs6BwXWY?ZYv$AjTCHKABam%pED$N$otjULoRKO1l!%^ zaNqF-n+9IvF)wAN_8YM-HJ)&QE;YMmpSIRI+VJ2Ydl4x8s%1P+0q3feA1TMv13yd5w2F1MXyTS#?NxtxQy?EKI!< zYb)aGp^pGoRwX@see&I*QS=;R7i&QbdkerDcnM|@uEX?CO!CVAu|u(Au58LreA4YK{qLBGD+u3Ga!c=}+V5zQBMawv30_5N*sq-XpM;f^gKznxl~wkaz2QG- zF^vZ2IPV(oN$hV4`@cf=-+cSO7BX>@A6SWhi-o^fKwu!E-^}zsj_|ypL45!IJ!~1? zPjY0+m->tQEUKN{7BCN854u&Ae_{^rTk#;^*g@V9Yl_UHQpS6pqme)VjE3|3tz1Bz zy=^AW)?P-KwAx0Lx)~a7Q<*Kya$>X7#ylLkyG`o zr>6-~hZ4u;aSR#93y_~;W? zpZ$9+|YO{nI&kU~iEo&#`0S@pb(l;sv--Gm3=2ij0t! zeLkXgj}4rgUbROL9(rZBtSud+6&-Isvi8}0&%J=j;W*}Y`6kO$Ti`>E7z|m|7m=R zwh?6=lj!RSww(gxS1@Io&j>B2BR|vCd~kEhS%{s!jLO( zkKg=d?8F_=+)*k{8+1;eQt0W>Mvbs$%M?CVUS>O<(v54%{%E7m5pSxDBma+O0Qh8p zi?Pf#Hc`_hDP4*wa;-M~#~-yp(O*(E3sue2xskWoBuvqb@H!nkt3Ul^Yb!Bc!Q1FQ zqpc+xrAgD}6fm!WFg2MZ(m6nOhp~ws2?9vHZyxZ^bDu-B6GiQKJ*4bh$Fgx*chW!U z8_$w5GwGU|nq;`D6w^Xv9t}q&BK@TYfvTOUKBl9rAg71k{(dhiP+TelvyM#rwYTj7OAC1dk1)8uYSXF7hayCrwx?yXydu6u~Q@p=n`Uf!LJfXmPixo^8?^JU)?>+0sO z7OqpB23Ab})@E^2j91*1JmGLk#5`a^{cLQsn2zsc0i&nZsEJL z^wm?EX+~j3dQ*6GMX*RylH`GpGPI}{jfi?;H%;;~-N_KQJApl0(cCbaX4H#KruM_*nhrc;6Ro%ZX=30S zcF5$w2sGL8Tqi0pC(Ry@%t?xiOU&Hz4MC~0yJ>rw|DA&Nbz1t0aeh8U61;MLl3dB_ zK;Y{-_)$DaQ*@KcvBUla`DiM)+~!!O`l^(IqLux!F?=i|KEdP`Aoy2q7r;VT8K~Jj zBM$KO)t~%6BVnw+rds&P`@(YayT%lw?8HyfxXHeZo~1E@2(ALOe-68G!^KV5*M;(z zX>A3=oqy6CukcGJksYNu8xKj8=8>pl`Ci(`p+w2ZMkiGYqHnrsLO4yWClostFnHYa zmr#5ju?h%i6}`z(R(l(|z+oW}QD&782F>s_F0^H?= zbYCCrlv^U-=o#MAy1q9Zym01?%;A8Sfy=6oEFnbyMI=MKi50aEKIC*O!Hq8F~bCsxy(Q3Byi;q;^=eaIDyKCdMIp=j|u)n5f^)+=^kuLG~iA^~sU)!uCPFDUnLxhkWDF7Im}47K}H{DWj8AP+sCXp0#by$C<0pix_>8f*5ol>Td=8}}H|PJ(sEk|(y#J7A#tKt{z> z$6V$Vs*a+^;W%nbTQ*OSWsdWoegNL5KgR#T+nI7_9yuUk{IfHv6w|Ni`tT)P_?cLQ z&9q{kg8GTw^%6h<(gFT7(8;xZiS(Ci#(nnc{jITK)ytXv@~HhFRb?(n8&@EZqM6G! zrv*#ypTY9YQ}QIz*y%^#)zY4p(+bWC9$GvHBSCKR6aVKI zA$p3|#LP@58oit9G3a?UUPpM+l2>Tug=2haY<7{9^_xdHGLOsqx0cudEQnnV;kLKB z*ZbUlN3>4+%vwNeQp&e4tgkxw!!@n)OBCEi1?#rne?03+I4H5ZH|NN4%Mg=_kDMUQZaYeg7KzWSYIV31SF(Y@=SBEl28{ey&0GiX~%(YIWy&S4+! z&Og|nEj#B!=KJ7E)k|VZIxY18e7fVI26FA$jXcAaNuXw$Ym*j#_W*02l8sH?X>;6d zZZJqqC{3x#WK#ND+43nmYtPVufqeOJ%6BV**Ea>;Gyhq~F2RoBHt7|DQYysGJUl_f z9-x}C{v>FOhT)(hDlYDP2!~|~i^)`|sy@J@FO9;O@CbK&5!8~NqDswe<9<|q)xD{? zw;bLLAG4Z%_@^(p7gP9bQ{1ClC6A4XACq=5-VLd;R#iHCqt&DrkB;r z_pD3i8Fm>?ulKxbYzzWutOhoDus(!&E0jn%C?rI0$sB@)Mvt79YjH7GSGG=mTwGl6 zNj*Ya#x((OcC{kpbd4*VSLgk2rB`pyQk~f5d+J7?(bII~pR!{o>H7A6DBL!*Now<% z=?PZ%tO-bM2jIRfXgU@wrN3wOdwJdA0#! z>>rY)sZMg)JnePf-aJaGvSCLHym^!Z-E{H1_sQayQyB(UmXqDGRX$PV0I+6@1?d;r z%xc)qyygwwn^#kFYjwSU`*UvN>ilpWE@LtIsVk}ZuBM+qe{KQE%t=nGRL?VxB{y&0 z^w&Rh=OL_DCWlYKd)9h3q&Ftt?aBjrUrGK(^FQRi;Pc#xl1M3}&{n=h!Tt9}8MT7$ zQ&V6l@Lx2jI)EpvNXf+1+)e+|ak}K>+{%EDhc*qnM|xE5-M9Pa=Yjrt$Gg4i+>)g! zsBX(88BVe(pPI+o(O&kV_zhDBadG|1 zHYZI~UFAtWtxaS%x_jPWu4g$mF7CYMSG+z|BoIBRk_<4EuT?k_NK@|cZHv9P-nQ>L zEghE?c^C6tyX=b)tonT z=~OrTRx?94Et>g>Z5?Nh@YtxGv7cZnnpzvr2mwktoFq zs!?TYH$1PXxMF2*Ah=H$FlY}DchqskD~iDm(6^xF8HL2fg9vHmYLrb%s1wDb0uiMX zjy9=3JmuO#uIRM=U!7L#vb1M}8EwA$^1jRM^rkVJtYa)Q#Lj?xiw?mLS4F)@SfA$_ zbk@>l6w`5}eFnbr>k;RblH!GyI_*oTw*+@LL#8~Kqp7F(^<9pO^FB1Bq-=kJ=aNtu z0vc|eG5wk+w`uhbtnTRuXE(1;4FT1G2x#4fqRN!=Iv0~!bidM_JbAK8N!(s*sDAq$ zHkpIE9H`=C62u%|k1seUC$DP(gQU$F!7vk|6X{Evu@TZ2zdy>jc=m$r7q{wrRh}oc zXY}U2zSAzRHny-DCfi#YHAL?J;Lh`>~q(o-SU)?_W{# zX(Ir&5BuGGBQGP~sVfWJ6994_#k12Z`26@(F9@r!3I*Dtwl{+5l!t2Hz^A0sDdp5C z5F2E+-}ENqHO74Pk=2J4f2r5Ju>howkB7s}y}34KDCWxdl`(ag)v;a9jPzgrXy2H! zRM3}ilF@5gJ!$r}h9J8E2;;ly?*=CyfQ~v0MV&U@of`&%P5q2(CF2=ouW>3id$@9~ zCP^?9hz=|NF+kRwqLM#Wp_?fd7r2RyuKRSLT zE_>DPMb60BsGv;Kppc=D4v9cq4|9)D{t=#)Xl3OF{g)2}C%bd!LzBN2tIvEoyL4B$ zR?J?_S}y&L9@+Ss;+FgVxBKx(&iCY-u!T+b7PRV=(^66O915TOSkhyN4zU*JQI=c9xhc4KQW#khvnFZ8?B;D&@b}eU0TuluznX=R?!!h zofQ=wX6>@_>!%kG20O3E*srZkW)&DKp(q~5-UL-Ho0(^hMnFkSII3|jj&}yFtk^Ke z3NeR;50;}`m+pEHRW7#|TE_J8P*N)HKYUu3jMLg;?FMa4!Z2gO*Q3pbSzl_8iE~j? ziN)1Dr}Vf79OPV4|K|JRbe%@k%N8RN1v77O<3Y(O!dxjNT$U_bLyO}v*ta(AT1B__hqN2`{W zmU{h&gbcW|mGp3^JhUR@G_H3y>m5$hNRz)uYH!SHFjhF8&MdB@rB##R%q{2G-oxI$7}R)cN=020HhFfvi+e9=8f%8t6OMX@>ESeg0k>(WnB_TX_n5 zkQAu;cwohbKD-ZS*Azv|2UE90Ba(gn`qJwA2QNuL_A2`F<;(gTV5}ILb}=eN=g}b( zUD?$imvgh7ol{f>8Q0MUo#}Jk1{v?vw%1-+jCV8?YY$X;RdFbYcXbly$D-&WcqCmF zr%RS2=~RnvPL(;woUCa{O)c9PWPGV9*q|z&cJ;>Ce;=sc-4~RT^EQiAf zJ_f1Wo$w^%Rki31om_O@W|K`dOgqV}T?2k))KGsqF)prVZE?K8Cts9)avFqeLH1Jx zou%5ZA7Cx+d`X05}0fVQhW*?b?up8B*Io4a?QDQO)GN#_%_Ier>=32FoD@LIz zV4m_H)(e@z$nAx%MLcgj7+S!}VSmYa%K?;Kezt9;j`pLy1=;!9I*kPhylt)^Hm~s$ zC(>5so~wB)kk>hNu2U>x&AH0oHMYJHl=cd7A30tqD#~?bX%^+y{g>h%IrlU|@VqIn zVYeEUt`42DUFy=AIO|1XnFh-g4PP;^cYn?HG1yo%BmYB+S&#mVenV*c5If#^uM3) z1CG%(Dex0PkX(F_4N|pBMiNFx!^yS`wf;Lt#*z~w{h^hoU_7035VY66kO$pD@*v1$ z;ejyU8>)v!ct|&^)};L=4QbJ2ePb5RQBG@ar?1}UD_t9-)jW-@RUgb5C!eAE+}D?y zRzCe1v8v6r!(=>$s#k1g@R5KTp@NySJ@eM*#OoZ^m*B<+vQ^=gLK>L$XL2*zhaH9^ zthIXbjE1;P3P&#tgiHmdtEimR1y2!x6ptV-S&uQf|wkCb5rCGmY*<81^mR8(s>h{qF^4PynkbHv& zFFjHpw3F}ZV^N1FV9-2~04ZgA&E-&fu-Av&x1%#qeO5h_bFQOHiNMA}9x zlVbnp)E6&41Hhqfs?ROTW&dXy| zyuAGzBWq3}>&wC(om3w64xNs{KAR$1Z6|z#6_)2u|C#t{#-Q?c=VH&Qv6f>$!p&&g z*~{?RbT)=*ZzCqL+S@N-c50Wy8P7%Y%DA~1)r`~H~G2P9RI#X%w)bM>`VdAq{2NNGoRnOF61)N{cX9?YX@&W zeiI8VHmU&N8XRV2w-tPJL@~QG!T-iJ?ReZk1agWjc1X@xji9 z@L3*h>R&)Q7@2k6%OqBRQT#m#K|RCIbP7=@3v=`I^jFH&mkkRsec*(b`fTOE-EWL- z8{b|$)xob{@rzSX(~*J*obc1`S%#7tt-47AT4DJN=`R z;=6xP=E<}%jyl$GBT?)wQcSLkWpTC%?hqY~rLF$^QQ$j?mGah_4KuTLud zgZXtQwjuG@SeMwP*Z%9a67P`ow3QbZFw1A+_wHd-w{t|v-O=w%H&Tu5OiV~X@QU+vbabDbh8m+7 z$s8AaEhaulUJwgEF=H987YwcY@0o%Uj--D#itjf-P!%*dpRqMTVF51%wqUOkxKb;i`85fh=?xFX;!&)f{(bm%+W5^ok04r042Euy_ zBh4*o%507L>nk0~CIRU5LgBHFG=r#C(g>yd>r0bE?0p&aW(y;dZeCsiBO|)=d69eR zA}%vQP)X0I&ocdkAc_0~lqFa_r|xonGk6IGjL6q$v(cPG5%r<0B61n3^d)wS&p|MG z3&`;hRIcT?oZ?F@H^t@bs7=wwc&FqZ7v2AZ&_{wBsds#qYox!OJC_^k&=v~a66YM( z7MOUI^9+5laEWR{m~|%Pc2GmU7Ii6r&?n}%tRQZF1wi>3xZGL@-ZvBJ4f{(=?l{a= zYV+0h=WfGRvV9yyI2ZcPN9&ObGOGxOp3ZwsEhe=Fe@A~!Vp=-NmEQuY1 z(;D8pV9;?3iiCzIJZ4{?rm7Tm+~KX0`jC0o_2HvOLQ+!CEo-N*Ff&VU&H6akytwhC ze*DXqFE`hl8lj5Ndh_srRE8>dl%wZqcBuuwz`zTLsTy|YyffsqnNctJ^Z<7vYi+{i z;1Bls&C^BiKLBpw8e^E?uBItE;h^rbTfCvHta>fy{q6$vbd-#Y4Bt)L7_l8d*w#<7 z>iZYSwP$Hoe+59tA1bgKfQ6A#oHmcwfHWQHz)APWwVqaG_CtTb)%)iJ|LgPG$oCE< zC;xlXJ*bug^>c>ZTS#vo~;^)DmPh%!*Os1%>A6=Uf+BVCH^fju`9|)PF{|y;gB`z&hZuS zA_-|dHU)5_Ne1X3d;v@-7>V(SvmEa*>$(>d(j`wq-pX3^$3a32kc51t+6_G5X)X$s z9~6zaYI?nN<%`F;wAk3#2J^y>z%t};H`4({EFuEOt=FuM9*S&jy`H=@TW{Xq{%!5#HkfZ*buM~he)qdLVyKFWo961c#0(1@VSe~&cITHcF)T-XafFc*I28mt@PFHskKTeeAUU;!j#b@=H(?q1c-bep^I}TRGSyOxr!;s90I%MJFVasg@yKXKko8HBR3U!Drc%)F%6ks5O7)D=+y@6&o`u-i_0 z{kE~NPa6jxLPkWiVswr2TX2^N;k$MXH6qxl(BdN|A5`F+kz?cdvZmg;uX^!A*-Zg2 z0yj5HUbVe~At51zO$LLOAwfY@PY#nl2gZZhKsXVbPN;b~y3?Ra*22O2-J^B=? z!mIPOJ+7T8vLZ@(hNEfjf1KqtNG|bGjg8^SsTQo?@BNe8*aH8(+WO)T-t>nD9^C@7 zmt;BE+5Rdb1pNfxp1P>RmcKiUA2XBy1~@(~?+VWTb!9HR@aVTJlKwtOE6D;Wn#JDZ z{XMDL08c!Zc!Tt>cjSvl(l`q<8Wj3Q}VMEI${*E=i6AdM4$@?Y~zc0B@07?M5N(XYLKI@kX?jq<2H zd+D4xzDt(=V?$&LArTX%8h-qJlU!>2siouK@C^<3n3SbSo?l&EC0r{8I40XD%5E(A zU`bHB?QN&1z`egALABE4FS$5l|H)mVxiIsL`)CFUY=SS{eE=Oruect|46NI1E_Mz= z&TxqoFaio-XlS$E!90q4Un<<5LvZ%HaQiuJ`m2}<$NRtcTeTemV__ZOp7-Bf??Zn+ zXpEy%D=n_qECryawilc96{gixuU?rSFj+5U=#aQYubda$SqfD&45Epz;s5?szi-JO zJ`}X}S|d#_c&ayA#d(FG>{H~`Z6bGj`gEo{52l=`Hp+i}hhRgHEH)^6p5azH)AjsFbp_HkP3Wp#X%4TwgYoF%%U%v@Cz6IFX zgQF{ic?sVRoCtC&RYSP6=n-kjcg%Ep0*wDsxd4WoR zye=N$-N>{>kEa)jIn9UluM|%L9!3e(yFWDRhmJ?^!?X^7wUBXC&%%rg-z~^l(yz?jYXJob!TH#{KzjAs40vhFn)2Eo;a+%#aDayEu;j2!`*G?1{<5t_#;#YUu?i@b z&6Br9Mg0NH6@jd6(43nCT^1|oQwwL99(u@LoaS}v0OBw5y6vhEI%u}sXI%%S7LaKxkCaR1`CPeS%cDHBDs&SryJSCv0XT2b`;jw^VvP6(%0wp|(7Jc; z9hj)GSaM=x`bmn=%GeO))j3$P-K#y`?Bcrr97EyAx#lg4L!nG@uSw`bBP@aNbIW&vyc(Ce zJbscTjGx(k|DhA=>8!a(4?9=r{q-Vw|nhcx62V;hz;>RnJ^K|TZe%G_1Mgxa1_0$JiL>L3?r%U85RL8eLVJlnfE z5;U{c93#D?$iMF}O0*|&FHyu7@v>LeM0g*2t$K{K_qQVz>^|90{y{np%CP;8IU_7~ zYn5gDhf-ULtWB6DqNS%tv-LJ%b_~sd0|(^%qPxZlRpjmqNAYLJLfXG2U}Per+VvS_;0K$Ya!F-@3X)|e~XCfDz=I3JI?)({6wRd#zt z_~H3xL9$#|`N*z^hzQ`0)9T=mvvVja{u*6Gi-fDyFN$nbC@sFKIavhNH{}K@lsvjM zan!<4iG@5`ZHd!WJ`lAZ&0>GkL(C&VQ8GZ5p?K!{YTvYz{8y_&2EYAbsTx?HQ#Jea z@4r?Oxs^y_u|Ff#ii5NVBsnH$#@ZZ1jfgz?nH^K9CoDEE=*-lTn7{;uddpHM$Wx`A z^68awE@gKXr}@UezJ|8R&K(mjq_0~?7?_GsRa1aXU>cRdX~0kC5_va;UNM5jBLjdNR=$S_S1NUs~McnyaB$Qqp29 z+jyCc`|E&H{b)#dNLE^GwRR(<{_}DeNkdUsm2|15VR+B~mwf&8)Ap62i5X^laNm~@G04|ef}^EMJLW~UgW=ymuLMWjn*Cu%o@QUX!V z#d)w(Ap6vKTe7AT;E9uR`G#GW=N0yOaXd;aYXQMpwvy3;)9;pBPNKlN+&BMqH}8R7 zCR+07BL->GgVV2-bM^1Z8%U@F6SicUIe9e-WDX5`Gr9;p_ogBf1JmW>E7bz;WR|$j zo%We`+&`C{G9IjF$@PH=oU7*Dl4QA&3gXQn4q4(m_fZAY zb?4~m8&X>iG1HzHLZ{6aZ-uYbMw;ho{u%`A4n9N4a`)4Uf2ToouogV5(U?b1m^$5^ zGOFc4XQ+P&ymDg@;7$IQ&M9lQ;f)&i++`PoY1X$WHx=7w6?rot0V8nCAe3aWpGInV zkfn)R2w$TQWy-f()L&gL+olJj&AwwlnXBzmH^0@@)wL9=8fjTc%ISQ;-9Y3Q?FHZB zG4g%rwG!#b?{NHS3;uGm<$kGHtPRQ6GYqT-MTV$W&+I-3)Dv&{?5VPCg>X%fuT>^?P zR)=J+qu&a?;|FsLI>k!Yr#R;yiV10_Wl4W{<0zi^GTWUwNh1O`!3a=5?$ZrV3x+}s zCI%#WBn|N1fb6VF6_>Ux@OFeXKx`^2AlpZ|E}^#Bi>YsV$r zF%BMNbCHU}l;Km_a|4$E({(q0jSWQ~A~G!}WS0?0)7KrtKo%O?263qp!iCzHe>U8eW)4!e9$cx{+>yGt_QF(;31Q?$&(1V(W0s@5qbVW*k3MMr1s#?$1x zy}ck@`}4p&f|8uRcCV3YX>slVwcEFEr=>9Feb5;Fpy_j4kj&9y^aGLx!sR%bF%={V zkak&oT*Cfo)%YW~_*~k3pACFlbOzA}?Jy%LCY6t%D~J&E%(1)yGB6VoUMB~h)4YY& zEK2A!EBDP=S4Zn0fI3;!&UNq>0+`udawojiuanSShmca>Ze_MUx_E1Cob)lLQG1%U zGk4@L4A=`VI?*`RS+-?a)aPZH?EbP-)t)eHmHR=whWk4lOwEU?@kgcCbMrfTu!!$G zJIu54X~Ug*Uk?ov4H}`=9kN3DJ*IUXRz}60yC)Rlk3^hwluM3u{NWMclQ$_~V5C;r zMNU25c_#R}XEWa%q>XEIoHDnahJ+)ibh%`DaM4C7Jn)O)R`z=ibk6!y3h#?X*7r1% z;{$0T&a@_2TCYL^tE#kq5yLC*`r{ML$Cq<}w@-xRGqtFQReZ9VM3{+R#UF~`bFw5% z#Emn-n%+XQs{T`l0>?JF5JwgCATc;}`o)toG{)Io_FUr%9yGNn==4zcPw0&}jfJ}k zeefIypUf=*TinW4I_t%9_szqWtiV7}AYLT(aIt`)MDdM-rw03rEIU>5HzW?1!QAG^ z<;tY2VB^d|%P;B=4QKm@dDbWVoVM5d*$m!d|7eQ%3Nx6gsN7H7=GLM+#z}M)#ppEa zF$$H5IFs2hXeb*E=p2Wbql8Wwzq)I;y}4{2Jr67dUCCmHa+fwbEl(KxjLj!5_B0^- zZRulHP)?u=r0(u>TA!2_EtBIpdM}bBLxMV;xHUh*d24l*M3B@{hGQc0ZHpM^q`wAf zOfUw+bypbI$V5n?d~W3;8I$yjE-Pz(1<5nyxz=W>b+TtLa;>L?Y1909X5GZU>JYYm zR*@?s&}oV?Gpnv^<0Bvn3ndH#;sJIZ-~2ZDquYv$6T*>2c9=>^K`&0!{` z?0pukw?oJ~f;kr3q(#nZ7u3PFhn9kZcvvMd+)UVRGPhF-Q!2|?_Mz)?zq9j`yF>6L zf{=Rg>oeL1jVs3d&K-(65vQ+nZ_K=9XQ9V{ zPTqV)(%;NEUCa!MxYz=H(Hk~R*Rb2~sbtKRc3=4B26p@bDw2Y{e2l&Ey7;btKp7u> zn)@ida4dzZTWjJ&mhD$zPp)JcU>%AqU@oEzM_aPv?7poUUy4>psh@0UZZ<+Cc08k9 zPMIG2NQ8cz2NkL9S6^y@){2_IU?;{YR#keDhol5Jq(HOLAF&)Ye|T$lOw{dDeD+?s z9BUXbH0*+KT^Ogys{$86g^!>E{^u^ea!;K_(x`syd1$3et-?yBb=+AVuG32JCG z8j~+mn(f`%Tu+4hh_N!MI`E#~?JGjOtM9~HjyTP@o>r)|h?q^0Imfrv?BjI4IOQRP z;~y-Qh#Y(-1K*LJw4;a{MPVtD3oKXo8>+3f1kL#y5DfVTfk2db`_&nWgvW6L#-2xefbq~*&W+U{-dCGjb!Y~!9gHMYH(o5Yaw*0A$j z(n|oZ^AzQS6g1qpI7VOAF^HI|`oGH8=zgtD)j4ycBudAETYy8wyn$8EgFf#TR87WK zYy>owGS9$A8C53l^YEj<^svl1m+5&wx%g%ncoOR~lXJ7asDS>2C6=yz^VMey#375g{#PPOTf={p*Ut>!iLd(LIZ*(>^N;=(W+%P{OvZD+Wf^hOWRH4Zc}ZZZ|GXiPM-dBc6FPdbA3CuVVhce zl;+C!2J-;s<7C97 zW>t~&^*xeWpP#oC7&)F{OV1>11bpNwYlhMB#hA3*4kh%;)y8RPJhF%^y&ri>!gn`d ze2eBJO6A8N;BDIUfnsbYz(iXg=mozq`tX?8Ei#9hYhk3kP=Sk7UjcxqB@gchn?}|f zZHnnxt{<*5D)xQ#B}$(_B6h2PV~9-}{uenlV2B} z6%^iAW90j@-yi#)S$s<|0a`n(S@0|F7(b~B)V{(M1rFGZ%^ zpk}Myw>$A^9=!R~5^C$=PQaU527GuU)gb8?hlmm*nQR#WN?XNxXPoSEaIn2qx~Sw5WCLq^_NR{;F7hgML!$NMT^3KwwTvbPL0rkbP>csi~{8Uuc zu}c`}*~nzhb2}f>$I#TXjU}GHui*Es<&(t_P?xPty!@B_N`o!UC2BwOmrG>f!KAFn z{1mW%zC0<{We>U|rkmo|@AdDqNfPFBktK|({m(D97bBMlU%g#P#{Mst$R5DSO!*=m z^80uF{*&kqSgn$WzR&j`{PfUvK02BP>{Zr*=2w65!+qP7V6_I4lLY@BgkQg!3?+Ga zio5u|zgUqHE>5OCeG2zqE=d7%m7PuA%{qTNGT+xNVF0U5j^_n*8hyr{%8sR3q!ipGw?QzCJ9N6&&`ZJwvT*BgG!OaP|R4s&Pd-%g(3kTA)^fc%a`}7+6o^1!YU;A99?X zWC3-CN@7Fv%ZgEg^Y)e=a1F@-l5(d<&9|JD#(D1%%CY+geC{(T$;m=CgGIllLHHwk zF$gp&O<27y=SJ^AV>={Upmu`jf&l7-En(~aKjhHdH^`mPZvBQNFK{wRK2sO&VsR2W zsFk{Bdi%ybr=Vf+=TrtIhErj3#cRgL8%rU==7ZR`1UeL#<&D~d(0*U>-~OPAK=)z4 zF{XmoyrTux&TpfQF|zoQelK;Jn6XGc=bzdu*SKLkO1QIcBUu<(__`Dulu6YX<0pQ7 zP|?CDft5)C7umreKFgiso*8`r$Pb-sMfa9PeoNCNbRdC?c&!3M`~E8tjCO=e)_J^l zK%GBd)usp;sm}eNzogi@YJg0a`o#Xa7e9QUC6Z#F>>d1Ndw;kBvzr)SJ$HKG;*UT3 z`EtGps2MExTmM=X|M1OGOK{2L`c>iGpDmE1KzVYhA()Ax0XU4(1^wut-ygP&6e$wVL)+@k zGiy4A38PyZ7Jvee-`d*%7*H3dCk zri0pcXr%2>$O53@iT45(FCbXAUNxz;s0dxwO*F@Huemrvdz3zT<+Q-`pa{kfFdAjP z-kkWej*v_#jiV+yg zVW@QX5up;P2PwfJM4GOb-EgI@dSC-kL@s^>BBZNw)!cA8tNP4rM`|y?-Ru(X^Fa58 zLEBWAs@-V(Ld7xhxM_!BP6X{~cn|I4cF2mQMIW8GH}mOr!I5SkP}=Z1uC+!P6AIss zvbh%O$-je%<&B1MCeqky6&;BtS#l2^=TI|k?4P|@wK(+EJy7#Z(`AJOIiTt zCk{qoH0ouPEYY+Z>FWy$i)QjGK%7f zZ9~7{g55)mN@}gKtkF#TgW9fsYbn13)w>~<)l1Mq#qJICcP9>TE{DjwvOy9Ac z-{_K~f-l?$S+*XK5Mt0!YBTy?Lj@gN$k_41eKBrKCGVr%xLnX3>psi*QUzXgafQ+y zNsW>;oG(g&z}zuUyN_aP=E&8(oUJ;Q2$Ww=@8oY`Hu^5y5^r6%Z`ZHu9zq4SViQ>t zqQo!-vXM(wB;B`}@a~2qf;BeIp?$x8 z8})0)Gxv8qSZV9qz3T`i2E55YY}Q>;gsGcG;9@|K27MAvfd)reqypkjSU_9Xn@bs} z5Yxa=HS!W%AvwY)*_NQMh+F*NO?U5;xd%WgB9|u5N^fjtu2g>da-@1 z>7mcy2G_a(+Li?1H%>XWAFbB;CElr{05hY1=F@k32YNw8GUB&lm4Xk`%c>+2c|vNX z5Gjx;l@SG@Rws7Bu>(nAl(Dz|`kE**hBf6rvViA7oT(bwJm+gr;P z{f^7=0LquhW+UY5$9#CjSfbPBS}uq2FYGNjpZc|9BSq1Dnd{$hVY?@MOpc#`!|l+v zA+$dFSt9ij;kYROQ(1pPIfb((VxcV5w?i(+e~3UlNg@TJ>=9nCWjlA%{iuOFD=TXN zS?KU2jAR*7*RKy|8ijrW!wxab`_{dtf~D2qnRC0C$bJh@xG63K3b&y5QP15e+K04K~oG6r)vLa&-? zxWfn0=SWn#=!e`36slt=GIY1heSdYpGY3Lt0t^umV)Qdt9f>oeZk#VHJ4`g zv>HfKSZroKHSJNJ~#9{biTbUmsP_@}1iDN(ve2k(TC|T#+kNWQ|zxW6|kv zOel4I^0l9jWBrr|HD=i8+P65*62rIgC=KnbhY&uTtZN3U#Tpj!Is$Cq8kC%u>0g{NfaH;RV@$+Z`xa9x0Pg!GobNkiLWd4uH3?C~71Pgf* zZaWLs+x}xyKxOK|31)E2YqkW=rO-Ixx0v*OOPka&2(I$a$QTi*%F?blFJdX=nzsGt z?l#q7rQl^fl+Rtq0MJ(_nerDS`TnVV(LuQN22UxAQzl)B)!RFy4gM=#=VK%u(MK-a z+y@tal=1l6g@$n9SR^)m`PdoxU2gbSM~^I^!W|Ah4I3iy=I z2F|3|lNoML8L5u{aO<|~>X2;dL36_>LW9=P=iedWu+SyBdS9JBwBzU9v>?YnE9Vab z2ZpUb%W98w@M0?T)uK&zwsAg2F!vE zb1yVm06CxERRY4(MDs>&HWfIJqmZc5MOasz)QJPPmcP*T%Uv`0pdyv6%`aL`!8IPo zNX1(2Dl*@>X_F=vsMgadsBLGZ%HD|1XboPg8FeHBxYJQ!C-uhLinkHRhp3=FdPi%6 zOvGe)!zL1uQSc0p#QKPV+}^Tic=@p_)7aRv8;9RfWGF3J!y6||3hI6imLuAGU(2%X z3u5ih-WoMktTy~s8sesx?>}Yu>U5|9}rA}8e494*sNEy^q0eI(U) zqU7l3b|ma0HN(Qp+ap2V4H;f`i^-~;dW}qPYLK*|JcO!#!sF%RNb3#&1tHZ4|yr?PmOG<~=O#m8F{#j~k9zRZJCImibI z?zYF}1Sc(*XTL3zR-nk})#t~n{s{>Q3!w4NwYDo9jHW8)Wb8sFP~8cTe+`dUD&0bqZ;9zDXRHFAs1F8cT8M3LaT`!K z?Q9hFGDH8Ap$nmbB8>T^lBbVsFIoPm{81)*a_&;<21$e1*gY~;B#6N~VtdCSy=0_+ zS#z#r;;==~&sAA{k;@)~kCScRo@k+@I!qMRgO&$Il^0yWG?Ru|1kyF!n+vVB)A0Js z&~_73{UBa3D3nS-xHj40Q9g(e_Dpt3s)NueTrWLLcvn0v)<+C%ox3a~*#0(C})+@#|s^lys7 zBjD|h_>$Sy%wXuhjK-NQl;}(T!6_lwyFBhfsK5w6aHK}>NZtH$qgl+s z*mk;-eRc~n$*=1mBoKv}hIbIj+5Be>JamTBB6?M6(2}Ew^z|2*#uXN6^Tmw?ntfPI zzf`bTj5Nu$do;_z$#!z*qe*b^ET?`@5g@Nx(6!1`qMk!c+3^S_mDpqt43fn}Ac8z` zK?Tg4OfA!~WShF(I#G@-aN9dhc40jPr?-aK%7hR-kNX~4VXkF(y)|owIH3S-YUcH@ z#U4%xuEaTs%NT{w4pJ&J2~*RIyFtAp9A)%#`hpTb20_r*77{U=(N#&iMPW7p}0%ipuzBrX*7u{K74qyG`vH-(3tJCG;b*a``=01A(yL=X z&%}*Lybwp~hHSftP1s!qP>I-M~l??p@ zcSPE`V2cPDIVW?Zp*jd?0e!Qys4Fo_x>#RQKeDI6oT}AQk7)V_ zUMC_5V?7I%-b_nJt;s|lWSr29`v8NXg1?kP1sB0$w=iM>{XB!Y$R@*>h)9H;LLT=g!BIFIo{yOYkndG7c0wSw1W*`;TJ!a9KwULYUe&2;(pFWL+* zI`VS;uZiOyzwI+l1}Wv(axP}Ol=j<4L6YQ)2)#X%?7#vTu7~6b+%WyGm;P~e{U%@k7sj3fcm{`B)B}N1ap4tTAt=Rlg zb;8&Q6CwFWc(!Ay>euj-wt^zCuD#>_mb%Q}Chs`z?t58M z)p4=i9VLi)c5qyc-$mBQ&E+e^UZKhvnr`oAE+&;b{y4AB&FGy><$p>9&YDMsweJd9(Ib+o(2Gb^>Xs0DTLqkBd{*mx=9lUg{_DEx^m1qO8^hmDkRN3}c z%Zn3kt#WReIxuZH{w@8D^cIwuaYeVVQ2-192|OI&^O1UTLVW;QiS!Bq1#LBPUhlag zc!)ofSo*wxTW+vMN|7yfC5HmN;9YJ&yrGcRWllIkC+sOqBhX$6mg^?L+(GMs;A3p3 zLI~G2ILgmi9E^hOkK0O~j%iWLv%($bEibg0m88u{Ix%simFS$Lm|I)kE_-*F#!-jX zs$A^nJc=*+Jc!ODKYS~?>{7~M1h6E@qB%@)8&2-3T~|7TU*Ye%coDjn%tkNspOEfm zin^kKDJ2O3RMJpx5s7ngCn#CrKNp&A92t}cwO?`rPV`W`e;6S}QcT1-7WYpX4t8(& z;f;YlhiG}J^6JI|^G{aC_>(andA&8QJI)J3gvVRn?n7a*l#{G=eW9_5RtQQNERaKY1(jwD?;|7)&bUkx3-KBVH89F|O!U#H^6Z;Yqx)iy@Siv; zy;ylMQ{ZB!inU51OjeP`ya`!~2FHLWvs9`OVe1;a>ClV4&0QUh6PZ#ntWnVh1ZgXf z7s9RB0!0BBsW?sU5*IsOyN}{U0Zi8Gg~!&L$r@zC5Px)XjNDIEa6q4FYlh@loikd8~& zx1&=L`a+68m5`!*%yM$7P|UN`{phs@$i6}}xUBrM3PL#PIV+zU zG$KUlC=YkT+=rj)2o@mkSeIwqc7HnZ8iOF|IHiCp|5L)da{f>kaPrs4W=LTwn3g0) z+NG!lP3Db@hFqr1U?d`bx|moi$Y9yY??Ir@?37w0D~he4w;oBgcDSs*G2@Rb4QXrf@ZMc|wnlp+$Te4yy-ij>f^N_o-#=6B<0fq=8s>_*`;b zocH$bb^(pt#xO|Bl~dA*urv#TuQi2GA5zP8oi#L*6IEWpEtwbP@0jvub&YWg;P78< zZ53J7eW4*E9nT|pQQFBk-khU|@p}2Wiypofl}QOp7^(LeJECYJoiT%ul$u8Mihvm& z84nkk#~#{*n}%ovUae$tm;6Ek{ipWX(x4z7ZW#u4D=9}skD~M#)AdWjIns^ybETXo zexX=PZiC_WLv%xlAKG2TwY?S3ZC<1bD$kBphH`k`NGRjTRuGQqgKthBqYG~yVIFLXp8*<-ii zWdUYFiddLA7ToBOn*|J~OqN)Gsbi}URfG(O6}$>P5eog>g@O-H*RKxxOV1T5WibjY z=O<1tx;Pnl{G1lYn&~sZShUS~-mIK?}SHbPKp418Vg@LNuY#ED-Z^^bYH}31%BN}}p#;l5?@s5M1 zn7YT24h*D^!wSgVFsb7IWACk_s@$T!QAN~k%TYoFQ8Gi_+bpC|%MG-&}+WocE0Hk2~%d_rCsh_Q4&`v!1oqoNLZsF!_W& z5a1<>ugXEwrm!5NbqR^zh632dqb1{<&bRiQ^*?E5cx%NL&BS*rL8jRvH z%R!~Qh2=}vXQRWyr4+NCWlF5m`zpGKS3@;tS}A#iSTdl|IHzq9)C`kubZ-TT$d+tO zI4{!yJG|B$;aT&Qbo#L8PvIn1Xf_v)F`Ir<@ z52{CjK$!_nf_TGy=HTr8hXW{g;+>oLCLWp`5cqv{ZM*b^P;gk7GQY*)yF1hSNf+j5 z=>!Q!6oUqM^AyE_+$nxs^S4U>xw^8}z6a;x;s|3QAHiHN2`Vb}Lg2FioLQel_hvZ&*F>COpit zelW&4(U7-`!Js%RSkh_puFvzOi8Hk8xCt$-w-`xPZ%kZV+R*)#a9B|$kq&P^3@w9% z|3e$%u@H>7{dwi9FYc5>{q3n{=8J6gJ{^x7w1cLp#I#OwY$dc^jCNzF2X*BYLBSGn zGXlfR>6YhvY7VHWR{#tt=%{p1(odWC$qs_O@iZOjW9TQbTQ1z-be#BM34}E~7a+Y{TEI;&L+w;SXQ|7<^@3*g7da|WY z;C#W~Wze~8Y4lb-ax^qTe`!trwRVht{$=DCz!x6aQ}dqxmk%%f&Y_$kn*X?tP8rCN z4vwC-Tw;&@+gpWhw4GUd13&*#8j9|u`+6q`A^nk4fC=W7%S5#2H}Ad^|P zZ)qYaVUS#7=F4E-)hhwD4uNJ7H`=YrO+ru-6bSsCRYt~IBDAapuyO^R3W9d6=eR@@ z*}_G3TH~7M*lp8jK5bliq3Bale?htH4;cUFG+TP{hqh?PmM#35EPp1;Vmw*NHWd;_@bmaKwzWW5QbU%~&g^$1aS49yi@6+b z<7F*yA7WfQWNv(z!@7ni+RcX8-h1N!Vc4eBbf(mka<7&ZeQekwE;DpnZuZDifJvgN zXlP5+^s0IiDBqmMwbJg%GdqbW-KYx;75A>|v(No@K0S9$qq1`8STB292_$OXGq-G9 zof!-5+I?>~vopcKJ96VjEdLjA{I z|F?@J?S?*N)XBF6|G`L3Vuw~`OPF=I&#{ptu*?ONrF(XjGY3dbp)cIHeyb7&KYq6e~HyXs@_VHryY2@>y zIm6WlHLb2E!86}y`lSdx^KI-dmr&7P1>_$W6n+%*`qn&?LiY9Rt7jhDs4t!LDoEhl z98~~9Dc+HXiH1@%zbCZ3vk{ziIq|-Jx$6&>aVcxw=6rzZ60%S)_UjfGYRHsX)Oo?aE=XI*(`1wUpJ!qh2@7G z+^_seOreEj0NPGsNDjm346#TlK;;KWoG;+=5Ot+u{buURWyk98$*7}Z8B+JqU@!zA zpackG#@RaK13{=&3gP421U?dU?Z5}G;$#Wm6HShy7I^5-w0U#iN~u;H2J^~qUBKgE z8#Myx@@JC=R2(nmp-J6*DSLi)V7Lv*hqjMnCQylKAe1VSqA&MY3b~RRhtteATC=)L zKEs|kmsz9!79hg}wyJ7d&;|Pz~A@vF^)d%`MFs+kIU{xK7LT;W*zT<*)CD`=Bfn@q6BE?8cZ6btXj@E zCMW|bkVHu>?jwboIBZ_zF*0po11LLk#AvA=c^`Q?3*@)t`Hq|;fGX=5VGP)4WmC)N zo^m8xw}6BP@CgAM*H(<-Y2_s|Phx?#12zqyWfh1Z6h~HL2Y|qGq;7_Qf0p1a5(X3i z?+*SaI!7j};V8Zk`Ai|42-7UX{=$Sj5LkA+@%xMy5JfM0|3Tv;|? z76pUl=0qE(LDcBk`OsQH)G`auL0HDAk#NB#rbZ--W6EC5JpGM!-ankpT>la87Z z622lyhI&4JM%KhsG@A{eeIo#iYPWb9gPB5I1jQaZAMO)?a4YCf|w|y6GyoK&|UY_ih4+}a;iT7?W2T7BvT%omk|MyhH>W!!hcJe6h%B8~F zaoUY^-uM4{_YS-ll%51#SoatGJ=C;FLOc|zGE11KuP~;upe&qJ%-iz{kd5|1anQ4i z1v(S88jbmN+`2_B1G-xm<$Z zHQ)t)&~UN}*BErZb>CpV(j9ZtVivhUoSg;HwtP83kxx}JTih{m3-p_vPJm&NBr6ua zF$!p_SnW}a9~-FT^3j<=uU#7M$LOE|WoVNr^a#|(-I!x9F2aq-H3r={-$U!ftc|OL zZ@5sg=caHed7lWC4bqq4CF7;IQiqsd*(W*jC01`aQItQVFA#o>Z7^wm_*Nv-I2_@x zVtFKN$o&VC$d?PpDZUn=t#E@Iv_%cy8Hz~^P@XLSK+ABFJ;!4Pjb|n)%Jtx3YEc1B zI6{eKvSgLS5xd}tTn5=jquUH*B*KB1r?9*nl8=#b5l6Mtazed$qfV)7kzV2;F@ZH& z;^ZEAfZ6AP<9GTl1f(T9O}vQ5taqPw>!Q**r7C(P$b_T57nJEfg=W6L3IP7P1!NfU zsCNE)6o+B}qic{oJ5~T-E2_{h@6U*NkhniGQfI7DvyeRai1M(ON6xnSW7h)%t?L=h zS^$VvBx2qcIJY_kwO`7?MB8c0Ep=EU!gHXj`b@NVZ;i(zQKGjc8L4pmU+d*!^5Gl& z5I-?06~jjNx0}_I_T=2oFzge?n}Gl<4O2Lout_ocFgd-a_SOvT%rH!4JyTf=Rny+1 z$;UX(v4}~GDjBfGB2E+WUMSTp`FLXKxow>3#?f2I&&t`|=Zx2`R2ktAIf)0hoPsZh8Adjzr_8njr3IRvIbM1ur)m}ISY-P zh$jh20$BanZ`7+2s4p#$__(OnE@gQ35keA|lp=FGBm7_Y!D6>nKX*&JC>kR~2aBU$ zzFU7X%U_CJ2lw1Hi`PWZC+m(wJt*ZJfG!CYpjXER8e#Yt|d)PS5FDpodQx1^* zEgT7WFZx%2nkd)Uy=V48kBC-9-8yFO`p<%HmrXT1bok>@`((2c8RjD<)0SvW2D+u) zu&v~0dX+hINNPD8IVZeY8!18q=)9RPC>9e&oGAqrw43&G8DqIM@!#4DLwY zX)oMaS;wWlBMfzRV_xSop@!q99t+s7v~R22RwZ^6rzm%2ymYzFGF7W6Gy%%kZQXr$ z)O_j(db3{AatL2h5+l8hwi*o`mg;Q{hJ=^^N&Si00T)46Q}qO9xX7kFJl|ypuP>#wv+BDTgs(>fk<%3eW5l?-MP8IdcN(b_CDtSJ_4%h2NZzRW4 zUGWyQ{2|)-0dN6B$_W&T32cg+tJ=G+N!+0vr=%~`4vf&QRJPOMplN|7{Ii z>oFMjmwV;5wC@U>_y+j4&pqbE%Eu7qR2d8{9rFRV7%XiMNkO@&;8a-v=^Yx)s(rs5 zIUp2hy`$(%*J{a1U#jKrmpLS|k^FG=?Jav$nzV19?DN6aL;^PMtLt#T;kjp+c(>8V z;96AEeS+-q^K0+7bTMmAin;Y2`@C5j}>RRbfz&+SWmM(X=8M@{2wXjR!M&CkWm2P)n+C8}Uqdy>a_ zf|Nbpx*tlI*qOv9SnoOdY457V7QzLywf?l>(iG`DOTy8n%5jrHgiZLzWp7Lp*n@v; z)gg`pVuPs(Vp>r(=)eu;iHC*&kJQg?lsEC@R0>e#zRQVv?yoZbTXAF<^!q>2-$QuH z^8KnvvJH{N`b#>?LdDNsB0Y+jx@kbqwQwLSO=1zQ<yKl9qTukO2T3K_I&}0v-M1aknVe%QueGxwFU)mP5zUq~DBGKA~B` zb}BvRAqbQNWqvO$nKS#8okIF zVnjI7vXwqe_4T4%9ekslhliVU?kr>%C++si_dZC0%@oHPzQ^OT9*79?Sh}rihwnUQ zmQvJ*0xS)noO#~5O+PT$koSN#SoDtYTZ+SKHh!1}ZC)bM@N5|d4~$3CwCh^|_u{=F z(%0#pj6C8x%aK0#N_M3Na{b2*6Cb&=9?_M$%QEJ;J!I<6v%E1VK^M;~=5gapyT6Wk z{M%Y>cU^a?*)cfX;t_h?CH!U9Y8H2;NQkstMf5JC3U9@w%~)ky?yet$Ze=usZj9~C zF1qF_gRf7@O?@y6(Cl{*6gSAGm)$RK_m9}{6T-B-#0N!n=FvzR(}cV7(X{0B&)kv| zcpXOlW7+z-!@_zDn_|`I&ppA!@TQ40N=qnH;uFXBw7fv!l8#vE)<&PiTah=>Ed1pp zq}S9xEGzShlj^E0^opN99XR8`6l10knQ3c!y@lf?+s*7^Zz^?)!&++e(R6R4ZqZ_~i5;hkK22v>nd%2Je)}v z)pt<>gIvF0aEe>Fbs@9A?yY;-b~P+^L{Ow5mvBa0DVA(}4^Bc!Y=#(*-4o3`>Sm$S zovFUnN=AuB2+M zd>3vCL>Iby`V3cY@GHtLG(dvpU1#q9uYIG1&xK^cemZ5J{$DDAo8c`xZ&3e_{5PoD z#6d|Wt2y>RbPr2$@RkjSTvvw76&Kdc3{{)BH-!JF+E^X}k%)DluB?g*zuolz&xQr} zk>WILW(!dF)=UCEAWc29`lhAx{KhW5CgxR@ilxXfBRJO2*Bsl`Pdkx+?BvZ&oUd;B zGaeBOWxDI@U&X?QpY6I)ULKWVDP$0wciyfv!0j^4RU?+bA5;WMIk}?0|E425JUr85 zGs+X*Q9K@$X!h7)z#&s3uTFm;Im=;SoX6#YfU*&6q9Iv1z}N6^Rgfg;8gq8^FzJwD z)!Uv~2QSX7JzK#u{xrA+vRVx^ryljOsh(!)W_WwG>}6%5K8K5k`rB()y1_3-#xHDT z$;DC#H}y_ow!|bAPj$xp`=^xcWpB3NwC75)@3&enZ{BVc69t-ckI}9^0w7U($o?&O zGU@^FS^+jg6}Zg@{Zrr!OCde!DmZg^7C`d`37U}~07cc71Q0r3ft0CPkCVk0L09C` z0)AvL{ki|sXixM|)2h;1Z%grGUgge*9awnP+PW3Tl@BgjEBHY55C99O(S4c&dl z>A}8}M_o))a^`8CbDL?*^@pOW-SY*>0`Mb90=`#=eeh(Ve)+@0=l8Q(K}3HA7BBcR z9oD`^ph#74G>xvXAXazx)`B^XJW?ncvnDS=OC%JvO4#gz9aX9>|@HX~NKRzN}4&DQ^ zNSn2$i?Zc2s6TjXBDPl=@KDM(3;e+GI(56;n}0M>Y?Ji_q-#BSUD4hg1XReGDIk3X zO7V8RLUoqvu06C!9c6Ee5hp8&;!2@YMQYrHOYYQHg-1%1$u@Pml!*z3LgZRiH}sce zcH(_q7gRIzZ_z~9=%0Muu_pF{fsy~2DlA+fmz&NmfM!40}a0HR6O=V`MpA;%7&Q-Kjg z*Ph^s3qe++2+WM6Ph7=dPN?ug5x4?C(+{<|G<5nPSCR;xZtNHuIO3IO#^7s-g~1tS zN%i*`f0I4SS_J%Eb*R4Di73uKWEC)j#LLsi%(4YxU-=4{clIY$NO_JWJXx_P`aa0n zu#2y>pTWxlD;00Aw_b77T4V`|UvN?D-OY_%z-ueeS4AA8T`m(JlAs3USK?buTZuk{G|-byb(J%6Fu?aADI$4ra+^)naQ>~rOnjWgr1aic1Mqsp9~e4 zt}Cg2%1BvFh<+{R_9Zfz)%QM&(?CLD%Mm{{S%&Q%7P;oz$-GgGY@V(4jZ8Liob2Q< zU9Sg)_?eHdZ(Wzfk3~v5F>QW@D7MX`i0TKz)Y;K@%W_g7Yese zcZv$uzsIbO2{{3 zr_FnB%>hxK`mFYGE86IEYH_EPN3%gVJ=vyf4i8`f{q}_o^83^*15uO_VH?L*& zwA=286PTzk2BUf`TPA?b*D;6M8-e(lZp!=kDQ(7gSCRhr><0s|>WwsO$+DXVuFrnz zxJC}h@`m!TtqB2RfNBoM&K<9Z14?yovXWd2)rt(@n4%Ww;M}1=7|Iu;X@(r@6_sY& zo46O^W2X=aD$XmVLzR@JXkOOv!XE$Dtp`|5pD!y$ixNk>zIQ+oHA?9*p#S=7@eKI zs+I2g-$QAQXEBIUjpdTFT%_Xl9GM z2P5Xk$S3*--<@Hd*btl(St+U(Md_C3FvjvMfFCJm%9|FokvlJv$c0O>YW9P)Sbl?~ z33P?x9glrPMdG%S1etwW>d-G^Jm;Q22EnD{!Ql4LZESB3c|yZt=vra}nObgd+*MXq z+FIoSf^rBKwMQETSeXPME%_l?_o5x_ckYnc3g4?LkB<3hi2N5KlZEiL#nE-&d-E%Uk`%V6rWA6!_ zv?W-#4t?SYOFYFaT23Rd%X(WUPdKBvAb{xl^~Q-s0evlSjdjmVzr9;hOpPf=wM8OSV@CD^i2y&lB0T+T&7`um6UXMH>KMk zyz}gbzPZ$s%{7Rx0A{{V`_Osc64>1xPqBlJiP)$?=oKh8Q?8efB(h|}j^-nfGLZ%G z4e=@b{1|5%I|Tf!;Y3f7S2eJ^q>HI22TX*q3Y^_FBdY|iEp_2~mFC8p&MYqfbtFCo zn?8C(q$Fu%+H=#=ZFwJNJ3)q}|&K!!q7*!#UZvfe>8LrE*5e8{FE#^{EQES)hh(d)p*}HlrQ^9@{+#OGg6Qk)NI3XC;ecK1RpHIkqvQJnNGV ziXq{M6|JCd$0umioMC6zi^_cxu~A#0ZL=cKV?ZCxmv$+ki$Aw58iH9{kNZ<@)?^S0 z^G^5Hlku@hx}pQ5Se9{Tm}&V9o+hY-&;^x-0@t0qogp97PSw`Hgnj2({g(cHF6teZ zAzS7%hQ9)9=j~J{>H}Tn(bB|}uOiE#xnAkexrl@O_OFQUl;OY<3MV30Dc14(UqS(Gz&d6Y zb)JQ_7IYqFW(fE9FmP3|4xrxk(-vqX6!D#js4JegiBD`+GV0HaaiWVz1FisgL_Jw( zuiDDd}onjRkQf(kl4Hfb>VWmyhW z^+B+ROOu*S6Ii~?rBX#KpaQz{Te2J$Yo9bihu#w~On~Zt9wr^!+)AGJ*u1P7c2SCH zuA0L^o_k*?Cm}I_&#}WDCDL$r`U1{5>o+IaPo}{sLGm2=wL|BKQzb0!uOILYT}+)q zHP<0)xdUXU)d5jG`2%#%g6Rs~auNe5vL8WRkZqS|M=;IxT(T-}j@1zG2nMY!@9Yl= zEM<1gK|+j4_x54qvZf55P)-1q{}m?aCDAxyY9Yx46F6OG9}0Ro+?%KJrH#1o@hwJg?G1E?Y(PxRVf z;!VkTtLkY(_p_`{-|FNRoGc1&x{pC;FRe}=i+~DfE3?y6FN|{k(gP)V7goQAu|Tco z69@`KeAocPeXE7xS27%OwlZCVyb&ZRr#lGga0VQ*c-XCJSXekkWOsgKlV^SnI`OeB zM+C)@%vSz%Fo;B=vkrIXo--QYt2mSZ`v?B~PM%lLs1WY~^~8d_*8L6ja9~QVdJ!;( zjvfo55XgYS75ejZPD4+EjbB3;heLsYUvMz_;dZ2wgEG;h({I{^9LJ%>DAAt=DSM4t z9A`(R>&h*`l6-whPB&9a()6Ot2n`mgj4-|rLgXsqiJJ=qd1#7OAXOOsMh{R#0~mww zB(_m+#Pi|H1Z!}T3|kOKgo9ky`)%wJkTn?Z6hMX3Q{ZJteGlpPNFajHhi__w&tH91 z;S*={-RF^G3_zG-XPPO< zee7w8<58Cm4n3g$NbET(@hMK$GpyMav^2HbHFRQ5O*47XIP@lXS|zOZ8ix$LQ`xN>wLg93O(=SFJi(03t{RA`=d2OOjqPomwC;bDl`gr>`6 zRqYKVNYVw`mBzi7HSQjdJ)%-b+6~G%p|dLWb+9qwr%ihXQ7*zhtHfgpu}T`5=2SrE zmDz^7*6XP(AT*c;9^j8M`#oc!z535Lq;;`>M?B~Zq%P2{$qtw#$uJf58oj!$zB)>h zL!QS}x_zl9?3*bx(41L;-~e2(QH>z`tCHON`pUvRkfkGP@Q_3lI-e5V-Q&MPL0t;0 zhcE4n6DzsQROPl$37JbJCPpERjUkp0L*HF2>ipN=s=7ud2}Q*{Pe z2yJDt;CnY@P?W_aw@fWxEK$0W)q*!sIq(eq;<)G56H;2YSgOWreJv*+c&)Zb&p5Q3 zB!N#ogD&EJ&HFpsDxQCi3r~*Y5yZE6#JF3I=`zyTs);#GS2eZl3I>Z&`2P9Hu(>(Fg$$9l6;i`c$?*4YBQLq)R>zHhie=qtDC`PbX3X1B zz4Y7x!E-Dt5B!+DM=skpTg!}g*E|Ij;H-MVh()$@-@MHQE7Q)VE=H&E@0(oolfMus z@x8Xw>jt>*?$5nZI%q~ryt*pCoP!Ts#80P#)8&C~OJ~M_U3E2D} zV3I01xcMEDaE+maS;cC&$nq}@&RgGh|4hoz3;83v*ULqZA!lMm&aBk4sNiDZ zN@H{f>X+mf)0X!@rj46+Qe&OxWZLGuvYKFWg}SiEg6aBi=aPD9q0&m{lw`$}o#HV! zKdy{MzrPW)mkDG6yyZB4`|#>?Q3c>I$y@iY<}fc`4!r$x1YF@|DdMV6{{BOT8)+@9>4!><=aCPAxZn+ zHYg)3Ndel6;~?a>`z`2hrsq1PU0VIrg+$3ugWcSjZhS`%*9O9Q7bmtQk*43D)Y90N zPLdYpbUU^zTio=qm6n0UP5K6&^}j#)#r;5%L{Fny8pB?#EWdethi?(#KF5qxxoVTz^w~I272v zD@_NQ)G1MDu{v1jFBSs=MGn1>y0eWk4B9VN0S@L%T2VhUxpg?NLzkySa|d_1eH+lT zAM1T;KichcKE~_XEUS9xI>M2|OD$)d$i~)PqGTGxUglNjGRUK}Cc#^i{DtCeEC(|o z^o^IxW}4Xp*A~xPA-A^X(z@MNq5%WQUCUYkBLx<9t8PaqeDA$%LKh2j8=z6zq$?#C z03Nt8@?-qNQBEZ z;fjCQ0F`RL^SZlB)w#7_N{ZPFbRwo^dEwQ${BMtAKT1}=>|1hq`7KBNnR;E$fMnHH zj(i0aV0kZD%FA{`vih?V{_~T+y$~9N48B!TVM&>GZ59J?owJa^ZwPwvZ#S}ZT||_@ zb1SU$tzGe5A)6qB-(kBvC@Crczy!QCF@ zn-5SM^>`s~?V2=T7d4zpim6F~#uSod-TQG34oS;y+lX2-<(HYIi^WxMRRee|^mqZ!Pyv-4Rqf27So zv*eiS!Oc;rDY8^pdvY7L5Lo%yqAD9qZXWMpv`IkRd&vr7`)JfgZzqbe?(ad zR;j7Z{)mzRoAq#-SZW_1Vod z^5M@4xNv${5|Ef5jn&F`IJCW@glT`ohPsHm2^W#ZvjIQ0K^!ihi(s6 z^TA`_8H5Z3%(Kfy_#QCpX?Y&x=Z%5t7QU${D~~1YbRGgTBEhc#T>u+jL_7`z1W(k_ z2U#sBqh(Py6YXlCzL|vD=bl{k5%1onXfzDC%uhQ?A~dO64T2#f!Vh0Vj69#=-C6Jm zS^%$%Amu7r!|pkkvBY3JpqJS-zX1tNhUwdCb-qKTFJYky)6pzVlQz~L2!bSRyXT5* zhS>V*;Q5)3Byj2o_cxI@gdW-SLPJBZD8L7Gu#&#sJ>a{uZ5;FVAo#1#G)4ilD9n-N zBO;1)0c5slnl1x1(uSGeC!&7c4#NdFD<7Faau|^x8Yi4Q$K2+C3H#}6Jv87S0R$o& zkNksN4LzZBs86Y3d&TV`Yd`nR__uzx6t#z4smrx^h$$MXjXe{C-xAH9&jZLs3Pz+w z?zStQf|GuCBh(|yeN|1LYAffx9m5RJTN^oUh^MLv(5jdsSh2J94= z_=4z2-?iBEc!?gbPb;Y@HEPaMtZ#r_;W-jiL)y-KiCxf=7DLUMg$h5a!zKX+poUg) zv;zTaiOe^15J0Mi2ULG8Iu)7rw}?`Ktw`)yuvAh?LI7^zh=?_NL_OV?eOQyS@+C!Z zY&!|E1v!b+ZZB~a7pzQTh8Wl(FmW6J{R0--j(WgIg^YpFph{ zP?wzLXfOgZ7SEyu7o$kI@b*5#xjkR8h5c@IV#wiTXWYwTCPMUM1Psqm`-&PUAmCnm zbrOT4%W$icCMzetrGLP8!c~QX&6h&0n)T-U2@M1zp#Dc8D0{D#FzuR%UWy8Ds>G2c z{J(Fc5X&Bf$vXwgPt+%Tqz=BjNXmoS1a@`V#BV6b4lXhNeg?=SVZfuT81GR(D2EI2 z2^u0_tAc5MhzC1@Xvj|{XrAjL;K8~pt0!F0Ed1-)>Fe4G;aDI)4!yO_QmnjRdQ~~a|1-r`<+c+y6TWK~ zZrwJHNnPWC4QUD~)`YxbsqBl@BjHeG(jd#vWx<0$=Vx%1V-3QoVx&taBZirm=oeF?ENaon)r-@1^Y1e zZL8Y|#Nc*)yFO?$PpXJ@P@zWBv`G&SlfLUH_*BT7KFt)xyg}G{fM&AWQ7E!BQ5Eot ze4+a4ySn?lJ3<5!7ta8W#fT@AzAe`xu60tW49Sg6jSsYR@_gH;M0QztLT;ayaEHGE z`Fcebvp2BjJNC(Y7G=5pI6@KzaQcLI60suED#T*IVIFZ+x=sULOa>O0t1218rGtZZ z5hbFbN5fqeqdx9xz?g%Y8Yv!aG&{yVDf<1*|zkHjESjW9KlAe;+ zZXLqVQ;(_3=O~CyP~18R>TH1@cd|cmLcH0Xgx39_YTVLpVG6LIg71w|t0DWAQn>!W z;grTjuf{{AWgEo`Hj8|b7yJ>K@y6eZyySg=Ac$%wFg+kzM02$`4lnFQ5JL_Vdqc42 z;++qi_~&9X`IXBCB67X=t|M~P&hl1^+saib$nLi*r&!8uR@D-`O(Ba?DN?WkemxSQIqXw`^NstF}*Vn8T zOTHmwM7n?O%^5w>8sTavfy~0l=GH!CGQod`pMbbCA32+QEoQuP5ihqsr5tQQD zDaj>+&g_F%t_SUpxrz>E5Nt&hSs1BslD9bqjU(-b+wtWrQTbCbP0d$BJ%|2sO?dSc zrg-43B!6`ZTuCd@U5;fvT3JU+$lf(TNDf5#f*OOzQ4km00358lyJ(y1#SJX7G3!5c zfJc-V@@jByS9q(K5}yfiZaB76lV?xt>tK`BIUw9pVUD5aV}ZpfoO6QQ7SZR9Cj$Qn zU(MpFv{jCdIx4$T<2ED59%j8QCP41;Y!)p%KJ}h5>)|bg>}$VlF!cSi-N$O=>WCo7 ze6hakn2TNBZ(;b}VJF5&{RxvRF{z8Ugw0d;X=r zofUASxa~EC`>1)${|UN7F3$Kd^;><<8_cX&V#9vbumoq9wK5<@OHIUf-qTA9f<+LA zk!vL{x#+g0iRf@eU(>f7mxr%>quDgu_k%G=vPxOCQI&WYLz5uMur$ITR&hl%m^ z^}xr=%!t0iB3|1#M+grbIeJ>a-wd^fzypF>G9>c`DxqL!>(yGq;j)nekP zf$UP6F42%)Ave|kdBrvV-s#Yi_2b#x+X>h?T!Eezk@ldS=UAc}HrXBF%;hcgVfes*5*4`jheXx%i*9dqS7K06ikU3%0b)N!ZsPn^TUoT0Lm3^s|jO5A-f^?ANFutj;(1y zIWXpdh#Geaun6uZx7*w>uq zf1ZJbLg8pCqTKr*M^mf@yru2PK*s7r&2Qi8xpls%l<{6kFA>Z;gE7^4D9M;|$NUd{rgSVNei5h^5`%oC#%OP^ zBUqm&U;g`wpM{e?PKvFx9-OHZ3U{5oq2Lk9wE7Lpmn_6Ud6hBuFAehX4ZF3-^&=Nu z3zx5Jc@n_Sz`X=)g?k}750XS{^D8V@SuA;R0P;U&0_1|pQ2_MWq)l6#U-@exF(jkt z?o>Cb_O~RqvDq(wEg;t+u9YLfUTFb9D_epuAzSda>x!#Z&J7`c9DoO7%+r%f98BQp z*Uxw?QH|CCg4Nr|VmHp9VZ`LBSw# z`^hy)uu#YgSUoT9^RK*@5H-y+07=FerKf{tz#5JDQ- zycWn0fFe2t;CJgt&FoGfT0AM?b{OlOa;+b+0~kdY;DMy#vghno(ku<0ee7P1VA_qP zAmR5TUV6SP30tZ`0(Ml6_Ar3E z8i&iQ1Mt7oj)C;AHU2ytTfZVgB*M&xW8z;TdJmlQ>NoBo?_DtQ*%I!KaCs~?P^g%>8S{c$tk{NEAbOBF&{#L?TlG` zNJ2rzN^!Vcw9v2ZzSWq zU}^wj7Yj@n6p{J1^?;|!MTmoJJJ_??m0$lI2rf!pP*QPdeuGTIKz)L#B+cy*%X7i}>s5X((4V`T7_9lnx0f8pLOyKEWeEe9 zl)qh-@Xzk+&LR@=2xxKh5m_QJ#>kwQ`nbuHJLLo=;*5+MoHg)jSUrQEdZ4H(U1PS}Z z#_&i_7%T3QS{MgkgA6DER&X^KSIFB;F9*(_drb_*M9q0hl_qu3rL8c>jrkfdQ>wPa zi7D;JNs1J^t{P(2i{Px$rf5KhU-|*U+1Rbu0bFQodQa!) zNG`p=aczOkUs8>CDLBw5guqF2HQ;M5upJjl0Fv}>(vlehZgeqp5m^m8wy8|r}?2o~?$UJ0gA3rt1r z_HrcvJdQkTnL*}QiF)p~LGmn{saT7X!Iw4#YY}Kw{n<&ICmZ&F%*Jea2I~u@3Kyo! z{j$7~oq#xT)Tvj8micA${xw6x3#*Hl`lr7{07WhEPby#&@DCo9SE)7wQx?0_g)*3{ zGODH9S<6=V1PGjfAT?Bu0RGbf>H_idM}h_w41Lxs>V{AhY@jFusS#PWJtYNh9bQGi zvdAb|!&DBzK&naRX1J6NsEcTUFpV@oq#rB@|MSrsApQGpeZFUCRfc%DJQ%5LNun0=`0J>6~QtjH=m?NIQ zOH(hz=}M?kR(<`k%w#F$#bIK!MXC`L5+KNecsK!ZA=5&;A4mWS`E6B`8@{Rm81-;7 zV(1{N$43XPY{1++HG^Ky#HSw0YD)DIK2G^(2(|Ze`jK~C$p+>-x`>;BycVM(^p@q> zeYKTn)=KIdQsu0sr$ zZh?|%{%qD{ky#jE?tKLt)+BtD;5!*5T!LL%(Bha32s4NhR}=?>k^I@=AVjYPjOrlv z^#DX%)7NIySjbR9^K77~HZ%t=GcPlmYCnP_LNJQHyZYc!L;_8+&6Mnfk1v_WkzLQW zwrJ-do=hts>z$q%;`LpKgA1N(aE~SG^xxgDF$cNhm(#VM(O@M+v9xQW_E9+lgDhBx zT zgB96hR5xy%g`M^iVh*aFkr!N(!9IaScGTb}`EN%2kRGQKI3E^@cMzi^A+86{PX^mv zdgre@TC4K_kHQ;`(@2>CG|22qL1^Sa8)PVWibMkHV4N~-e0vH+M#}qVoS`<@K1_7Q z+@U*W4;~@1g`3mNu?r6kWyUsCuu1?#yen4;-?dZbcdL1B5EgG<_G5Sww%@4B2@rW_RRvwcY6q{-X*8W0!`CW&Z$61;ksbJOs+-a zX*kaJA)CORV=o7|A>HC*HiAvjz#!t=nk`RcBa~RYiOc0Aq4Nu(C`d*T4#iAB=u_Fj zyPbyj6nljYq$M?W6bia|{u%1RbWueFfEkY%XeB03I{Hvjv}mf?AeIK$c~-XCG3V8<)_dT+3#LvBsO-O+ z1B1$Kq)mU=C~nKLmr==>_pi*HzcKT`ka_-!N#Nk90EFX%_Z}>V=jyG|z}H6dEHQl= z;hMn$PUWaEtFI|et4*Oe3kY#fgI?R2_12(#X3+c4Y0VQQKNm9T(w=@!?WOyg&20I+ z2`U~alZ+iPNmp9EK!2Xxgf>I}-0BAV=OfEI^3RRu=Zmz*a5iLiYUua*`LWe6O4maI zPxD3G{Ql}oT|RoR!^MKtTenzCio=p8*3a+%^}=!;M2F22kJadYer)xN5aunI__Xpj zeHv@h$e%w=BLtpH>$Cp$TWgK6j0^bRJ2WBso8O8ok4&@{36%WXwpt6bEmxG6M+oFB zWWPYyGG?asYf4d0_chI@+g7iD-=3T)RPK1k$9wu0{w9=;u^e%ESHX77ZSB0;dsJ(a z;uY_$YeL)PY1IR}vmpyi14-))3v^s{dGK$0VQ$Lxn&0bN;P;Aq=`RZkOekix$7e_~#vk z9EYj@XHZrS-Je1EGgHtC`LlffC4m1Kls|(4+vT6=vm#zEW~P4z<3|uMv!8#)VjE`KiHdD4F zZ=}11^e~-?W_CF@)*Jlz@=pB#v1ujP0k?l6%V8{i$k)ZM78*q|T;v)GCHmjDGVMOB zIJ1Uw5MmFj@0Va8CnmR$06^>N%kM6eFvkkbq_{w zUC#b>JNkB$3?6vUlC~NInWPSTmi0;c#cd5PQm-UPU1#HmEtcEYXODUf@~4We*sHLE zu(2>V+qAkZ4n;WSab|pl3(@q)Jn2mJ?B12zqmUKsG2M+GOCoiKyRk`EWp;$_I8u5Y z-hHOnrcG=`WlW0*-O3njiz{If^{Rdj@lw=V1)Ba|pKX=Bs=jtP5cVEk?$DLLxne2S z1Kqt!Dn5U0Vdv-clt*ef#YM+f+~%(-3tK178ud{3M894+D}HUI@RKVCe#OU^t~w+T zZONnrmQ{E0+upotxc=?Ft}?)+IP;E4e8sP?xUm1v4U2t>oVxDvJfM;K0$m63L8hpf z#A04yAK8_)KHiX=!k$=@v8c@l$7zcW+B_6eLeB1OW-XaZ>rEGjaPCAx=h58N0tA-Z zag3ULJVnkk_bJ#F?^V$~+NmxN6GS-M_RW&}(TwULJ@sT!TZJgb+^ILotiR6+OD>$h zF6XGIU~G4awwjJk%|v1N6D@D6$FcbGUJvCiYwvUhsF|W&k>O9_7p<=)4&1-h9 zSRe~ZA}y*+hjFQyU=YTsUyA(7lOKSG#eRHSI+fw{Sz1i;Sq<`9@c{erLTT1h9iu1LPPSxw4EtwDQsdm8g=JmK>d5x?C>>Aj6 z226)6#&H|UfxN{;8$AE%gTb6TdwWTy>n>?0YbqIm>T(gCnwCa?(Efd%wxctcf^Yo6 zse!?~XFc`b6XqP8=tgZ@_D|ZjCC|@~^=}l3?aA0R!JWwdxFByR;csGi#2fGYWL<^( zwC3Jn);bYh2P#cfLN4l1N;RE2w*PM@(mM?=FS>DElnW6u;yzo!Whk3!@b&cFhMcqe z3#6V`%8-h_X8inESnTCRu~xZ)8a5jn`|KC}{k?{IHolE{y~P9TJ~(tVTMY1b*ie4y zpXqqsFm&TC&4K3Opw7&;>btCp9k4|d;eYBHYCR(LWzOYwp0Rb}&8@p4eHTl~t`VIL z6pQ5AY!{c_y2S99X5F`z@GL&*`htcNv8}*Q^{(vs^XDJ+9TVTA3G_797B2N5eutEU zDL!ZPHybO(X{cYm!I?haX2-g`SkStUuO;EBYB3D#A7~7n=l`f-k3VwB>Z-W0-Ndbg zHnW+l@^4NB$NV!?e&_UPS4k3IUN4Q)^jIM#p3QNT`T88U3qixAM|3{_CQ0;Uz2J2H zEfD7#`R9h!gz7d!i*I(-ncryS)+_2X9Oy|>Y2oK%$uYcB@lX0X!WK8lrCkSy-~DNK zk4V_D=W&t%!S|w`t;Cvl=Va*Jm8N7qOq7p?4`@=V|^t7csH{=LE zYOHwT29xNOwoh@-tB;?L(L3@Xfx1e;7gk>JzRS>ImK^r#WGd199Yu<3`^$FL&)H6f zEm?Mbb!_mYXu_QOfM@-8TaWA+a}WM`wdWuY<$v0OE%xAa1hbZ_zrQHg*2-;*Gr1Y{#6i+Kh{fT1(dK zH{z$XyOBE!@_n@BRT5vfo!^yLE$#TaE;iD{M|B6_H939nF2>glyci&;auhxw|rx#xaf`6$v^vy|o>rL!WzQ)k^mMpfDZZ=V#xAD##`IZYv23rg@w{V4T(m0Xq`i1o&$D`Y)+{O&dkK^0 zI(U`mW`{>RPWz~v!SQG2*m3~hPilT!eljEKZjnh$djhk<33)>n9xJWH$Mj)Cld`&6 zrvwC=qw6bEK9(u*oL~}_$sEd0o-FIwnr%*6`{j$)>{C^{*KoHVyEdFWWJK;J$(g?r zdClT3RPv*^c2I8qke5^Mx6vN;nb|nvggCp%0Pa?Sxf5lVDGaSmi%aGbj74wDKbYjl zXDg%IlV+_!ymqu}#+>OLiv@ounnHxYaw@I1q#K^=tLqZ=={Ll04-D|3zT{J}S&uO| zyQ=1gNlIhTS(R@iI6F_piof)n)(q`@ak}=m^lSz;$G!*MlvxvJG~HNTdiE4FV3c~q zaE3}_D&fofgOS9c^RGM)gm;t|%gDA&7Ta`J%&MCyoy6uxk|cW5hnoMRkoEeX3GcJY zgmNko-T3O$Orj#X$E_f%n>wtl zKi=O|wDZC9kJkXfF{-btduMyRbzePasHsjwa;!f)Ujwh^XPtZjF2b|3&AmOR2>J(p zzaUH!LutCv)Iiq#)`6VVe1hO?g-lnEfr{>|(}2ed+Ub8PoVe2lM_gtkM);sO5~up-)l3jXzHR*x4$a_1)8^X37d zE8N$2GyCAPUe3#rDO{M(e&p)xq%3UFF@nK{Y)_u=KOT-@5x=Xb`}ue;V1i?_ix^3U zRoWt=UrVJHrt#!6iKm2K&wppE`i--m2Hc%k!jH1VRlF^HbOjLgWIexUZ*MtpL9N>! z>89F`Nu<_W+O>66AC?*@4wQVL?BS`yt}%Tkxh^&8ylQ}nMy1J~aOu3Z)~cvVJ^u7G z1^$L`0NhqkR4?a^1dT(Y{D|K>8aXQkD$wNr=;ocM{ahx#Z+~B1BE#4~OUvu*aCgnL zL}y>~zZH~uZjId3q+Pd;I`qn>-+9n@Ze0uYsMYsRkET-da|~^5 z-#V*pQr&me2hZ_0^Bd*mU1i~ybMm)U#%cr_UPzuuw}^fHmB#FWn9FeIl`o|+7Bu$f zr>D%aIj2%gOzge#pUHjYZc4p)z`n5@LOKERMi8nf8#^Svb^CDmPIs)^(5RnvX6)3(trozuSEBf~*96}NVM ztPY-uwCjmnG&yDFT)zBK#;N>ugzu-Vd$HdMd&H&s{NkuheCXp4Aoi`}qw-Gae-_L-M0-2qOH=DUtjC zw0B)`O=jC(BTd0kWB?Hm6|qD*0)jwLnlqqCNr=>lQY0b}rI(mNK&0tNlOiA@frKVf zr9=@Ni4r{!kS-;(P^5$wNbVQP42b7E+=u&ce}^X?lAZ5cd#$zqdzJt4{x~`vO$!bV zepXUaqG5#yzAEHFqtPxF9d1W15{!v!_Op5qN|uoIUN8<M_SAYpi=vt>7nRGDy#qeV&bDWUt*;!Mof0u2cZrS zUZOazsz`i0uODozvhNfL@;Z7uROlY12?HpkM0?|CDXMyt=ix5@@_SiZX=?`LQrS1oTDo?E`P*3H8YS(|7GY_-{T(?!;?O zO4JrsFFiRkO^wo}e0njqr8VC6Nz`j<|Ag|p~hvq}O310SWA4S*L!a3V%A5>d{; zDP36H%#ZH3EJI~5c<}Pt#6!sTVhXx+!qWfcCVIEd6S7lihNtC1vkC7tvupVIM1Uzi zCG5lP!OXWfDKVcjN=q4HNpS;9c}tl``VTl>$us`=m)uMVx?-52UmHC)Il;7Q^e-zg z&Z+y{y%73>p4rxYXQC(~5i(_#?$FYK9&B)%PkKFo^gXCHpF5|`^q)wYR`a+7gjHTh z;n#y0w=Se6Kcogr%f5fJz>~%EP(HOD1vJa~+&Ck=% zPfh+ISpO_3qh8hSZp)V?voMqa+yuJp%OLm0}Snwl09ls7)JE&6k{^bg` z$$7C)&13Xy6BjmS8*vx}5H~k?vF3e%G71U`e6VD^y2{jWQ-$Yu?7cWjvO6nR}}I0z4ahs zBES&OB-n&M&9QHQgKlId>1p0o-1D$=9k&~Q1BR^>0HpnkxQ4lu)II?h7{jSK)25j;W$Nt2ystW(`_oq5SE~ z{bMc_uz6xUEZ`lYkORIzhdlJg87Js%4UgJ^6dvIsyk(MnC;yGHG{4o z5K;%2xmkodPFpL!DLsslw=~Zl-lkBx&${!o6lxRsqpCUL+t>sa!tK;wy)?*Pq7aBv zvp%eeFbB5T`RZEV)DUX>VUsxKwjqs;&`IDNqVY)hJM(+?XV@`N8N{wPP&BvuzmF;9 z7X!g7BsE}U_r_H=A33bqw6JBVrhog1yM#7YcrS;ZrM&T+-4rYX9tIf0NGrL_xoPoD zPlnV7n!Ad}GrQKW09!u_s{}Tf+@Kw4~9}80G`C>f0iq?k$4@Ye8WIFI#X( zNW?pHHoeRtNsNeh45WSY;lB5f>oTaa1&tM7H-2U5hv}wMD(8T>PxzNFU-pZMMVaS# z^d0x$01=N~&N5vCP7KLJCD$k4tTuDXHv`0{$cx?9$*ajZoYo=8_qjCYNU53m#u&qj zTu}hwO8uX&^7$Mn=66m--OcEA)gYS^_$&tp z;UN4#Qt^r+U>f+bv)ZN!OM)75yfJOp2a7F;TTQDtASz~ z^K|X{N5jJ?4)B7j`CcM*Z&L=P2?^(hS3NXb6jaocc%=B(>TRc^>-9-`l%*#?m~ve^ zH+VV8C{0R?U^;4mEF_rN;V$bW4D`V@j|&5tU*nM#YsLJs58HX?kduYyCr2a7P!G0Z z@prkF?_{C&${(BsYuWtgpmeimJ~OS@Bvp+*`N#BI5pA)~3dKcq-Mi%6XrGmzP7P!` zwx>&=DA_lxr=>9>JE?jv*#*KMb2~Fr+59IN>HK#f@-@9@#%ypmZ@-hx zd+KVH&fAe7JUb$5HA$_ilUjV+u<4f$*vG>iko4ck5O2wBnaaIJiAe>W!atZfOV9L= z$g1#?U6!uOfvCemnJFS|A~cz+F7iR&c=o%js0ATGV2B#^VWJ#zY_3xyJ&{}!rAN!k z)1yS(Rw(xU$?1VO$p$_ir9wQ0X|BkNx}-RW7}+5O{4|Ixd;N7yTdvB6y;{=&q$c9#X`cY5zR_}X zOBm^yQ=_PP3*R*tUo(U8F6ByR3`-(^WUX@X01|;Mfn?pfebbAP12P~L5N?oYbHDyW zuZ2ueu#JdnMo-(hEk|JfBKreUayDt{#tfs&MVAs2XFuaG)j+qM$@SEBZu}fR#_cUm zFuxyLzPg`}*}yUJe&5pK{n}rPa~xpkr<~BWXEr#b&k=3H>&qIGn{1u8DhphEWn1T_ zs}GP}7+1CX`o40~ul1&hg-D2wW94#V{uR~7uxG7e0+GcImSPm9ba2uuG0_rw?N5Of? z2|btF(Xz)h=3CM|h9a?+WvbV@&v);~6kV31tr#m|*Usy%?qg8D$9B)+kAMI4=bNT^ zPK|w!yQg>X3NO}wqS?`0<@QX9SMRU1@p}~?Ht#qo`)N{${xj4391FNK(-eRC#e>Ut zW&+0Jo}qf*h1WP~CE70ah=qpI0l72WX{|emq(Xbso6{FbnHn@hrgx(II;jBcaw^QP z#twyg$(2{vH$@>90MmZ5nwyGu>+#%*9KqF|z_-{)?#pd!s;Ym|XyiX0inS~^RXc?{ zW8XJmtAaS)9R2Xe!xr$5v7pC%wHI)FU+D8@4_X6&iOZg7aj=7)J*@l8UOseB$hF=O zhJDj)m&jm4au^WI8KP2gGQ>kT%LcX5g|jAHN}dI)4Ig*HH5u=p_CTd^WT(lIlOX(~ z{ldaw3wVj)0o+2c4Us!D#$hQSW^gxAdX|uBe z-PXfVKtH0!csaFUu>?M{dvrJ=bS@yZs?F@4F&VP#^e!W~EI8~6C$4+m$8-)GMyq7GA^@URlU3D4}3o7{6cH&ZGbJ=0$MaD19qicylc+c~`L)10<5)7eP4i?8USMQ#wh zcCX9kI5^8Qr*gAR-A)fZQc;dtFn6Vm6ktXCk7diCUvs@OS2L{KZwhVqOpPBNlzBfN zfW~IMPw%5g`YFt+ z&uQO;%o^Z@Rm8})+NE2SR}*m<#OEJVn(ywJr0VKf;Wg*^KC7}eTtk@S8UkT;v+dQ% zV&`@kn&P8TQVFz}XNtH(r3F#y+ndk7YFdROr;a|vn8wP-*FSx0#i{9^x1RuR`}6 z(5Lfw`M;bjV`=8JLX^8?c3#T;r*YMMWIh=^TGI#YQ;3z?aq91;Q)$VyL()Gn0b#ZW zSAju+rqtma!=3O`f8aj!bjlSB4#b~vMH<{{weE&kJWCSD=fT(8l~wZO)KfZ>ov4vN?gEwh#uPV5G<9|4*HFf8HULMP1nGGf4a4s=MKe@R>CV=9fyj1f4C= zZhf607MWy8m-q62=#*nkrO|Q;xBubRzTx4^fq^pQ98c@&t^2b6?*A3bMkV=MH~uS@ e|Gik|nY)kJT83S1u)Sgz0#A1P;VR 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
Creation & Edition Pages
  • Introduction
  • +
  • Forms
  • Form Validation
  • <Create>
  • <CreateBase>
  • From 9a2f542049666ac8880a9e7662693b9bea3bc656 Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Wed, 22 May 2024 08:22:53 +0200 Subject: [PATCH 2/5] Show when a component name is a link --- docs/css/style-v20.css | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/css/style-v20.css b/docs/css/style-v20.css index 1955f10d517..5597842cbfc 100644 --- a/docs/css/style-v20.css +++ b/docs/css/style-v20.css @@ -304,6 +304,10 @@ ul.sidenav code { background: 0 0; } +.markdown-section a code { + color: #4183c4; +} + .markdown-section a:active, .markdown-section a:focus, .markdown-section a:hover { From 0bfcacd438cee10b0d99cf86f5ad0d0abdabb5f5 Mon Sep 17 00:00:00 2001 From: fzaninotto Date: Wed, 22 May 2024 08:46:27 +0200 Subject: [PATCH 3/5] Spellcheck fix --- docs/Forms.md | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/Forms.md b/docs/Forms.md index 0fea7103887..9f28320b358 100644 --- a/docs/Forms.md +++ b/docs/Forms.md @@ -44,12 +44,12 @@ export const BookEdit = () => ( This may look surprisingly simple because `` doesn't define a submit handler or default values. How does it work? - `` is the **page controller component**. It calls `dataProvider.getOne()` to fetch the book record from the API, and stores it in a ``. It also creates a submit handler that calls `dataProvider.update()` when executed, and stores it in a ``. -- `` is the main **form component**. It manages the form state and validation. It reads the default form values from the ``. It wraps its children in a ``, so that input components can read and update the form values. It also renders a save button that triggers the submit handler found in the ``. +- `` is the main **form component**. It manages the form state and validation. It reads the default form values from the ``. It wraps its children in a `` so that input components can read and update the form values. It also renders a save button that triggers the submit handler found in the ``. - ``, ``, ``, and `` are **input components**. They read the form values from the `` and update them when the user interacts with them. They can also define validation rules using the `validate` prop. As you can see, form components aren't responsible for fetching data or saving it. They only manage the form state and validation. It's the `` component's responsibility to call the `dataProvider` methods. -This separation of concerns allows to change the form layout without affecting the data fetching and saving logic, or to reuse the same form in different pages (e.g. in a creation page and an edition page). +This separation of concerns allows changing the form layout without affecting the data fetching logic or reusing the same form on different pages (e.g. on a creation page and an edition page). ## Form Layouts @@ -96,7 +96,7 @@ React-admin provides several form components to help you build forms with differ - [``](./TabbedForm.md) renders a form with tabs. Each tab contains a group of inputs. It's useful to organize a form with many fields. - [``](./AccordionForm.md) renders a form with accordion sections. Each section contains a group of inputs. - [``](./WizardForm.md) renders a form with several steps. Each step contains a group of inputs. It's useful when you need to guide the user through a complex form. -- [``](./LongForm.md) provides a table of content on the left side of the form. It's useful when you have a very long form and want to help the user navigate through it. +- [``](./LongForm.md) provides a table of contents on the left side of the form. It's useful when you have a very long form and want to help the user navigate through it. You can use these forms in creation and edition pages, as well as in dialogs (see e.g. [``](./EditDialog.md)). If none of these layouts fit your needs, you can build your own layout based on the `` component. @@ -157,7 +157,7 @@ You can add validation rules to your form inputs in several ways: } ``` -Form validation deserves a section of its own ; check [the Validation chapter](./Validation.md) for more details. +Form validation deserves a section of its own; check [the Validation chapter](./Validation.md) for more details. ## Default Values @@ -210,11 +210,11 @@ React-admin relies on another library, `react-hook-form`, to handle forms. Its A | [`useController`](https://react-hook-form.com/docs/usecontroller) | Create controlled input components. All react-admin [Input components](./Inputs.md) use it. You can use it to create custom input components. | | [`useWatch`](https://react-hook-form.com/docs/usewatch) | Subscribe to input changes. It's useful to create dependencies between inputs. | | [`useFormContext`](https://react-hook-form.com/docs/useformcontext) | Access the form context (e.g. to alter the form values programmatically). | -| [`useFormState`](https://react-hook-form.com/docs/useformstate) | Access the form state (e.g. to determine is a form is dirty or invalid). | +| [`useFormState`](https://react-hook-form.com/docs/useformstate) | Access the form state (e.g. to determine if a form is dirty or invalid). | React-admin Form components all create a [``](https://react-hook-form.com/docs/formprovider), so you can use the `useController`, `useWatch`, `useFormContext`, and `useFormState` hooks in your custom form components. -**Note:** [react-hook-form's `formState` is wrapped with a Proxy](https://react-hook-form.com/docs/useformstate/#rules) to improve render performance and skip extra computation if specific state is not subscribed. So, make sure you deconstruct or read the `formState` before render in order to enable the subscription. +**Note:** [react-hook-form's `formState` is wrapped with a Proxy](https://react-hook-form.com/docs/useformstate/#rules) to improve render performance and skip extra computation if a specific state is not subscribed. So, make sure you deconstruct or read the `formState` before rendering in order to enable the subscription. ```js const { isDirty } = useFormState(); // ✅ @@ -267,7 +267,7 @@ const OrderEdit = () => ( export default OrderEdit; ``` -Alternatively, you can use the react-admin `` component, which grabs the form values, and passes them to a child function. As `` uses the render props pattern, you can avoid creating an intermediate component like the `` component above: +Alternatively, you can use the react-admin `` component, which grabs the form values and passes them to a child function. As `` uses the render props pattern, you can avoid creating an intermediate component like the `` component above: ```tsx import * as React from "react"; @@ -415,7 +415,7 @@ const dataProvider = { } ``` -**Tip**: ``'s transform prop function also get the `previousData` in its second argument: +**Tip**: ``'s transform prop function also gets the `previousData` in its second argument: ```jsx const PostEditToolbar = () => ( @@ -461,7 +461,7 @@ export const TagEdit = () => ( ); ``` -And that's all. `warnWhenUnsavedChanges` works for both `` and ``. In fact, this feature is provided by a custom hook called `useWarnWhenUnsavedChanges()`, which you can use in your own react-hook-form forms. +And that's all. `warnWhenUnsavedChanges` works for both `` and ``. In fact, this feature is provided by a custom hook called `useWarnWhenUnsavedChanges()`, which you can use in your react-hook-form forms. ```jsx import { useForm } from 'react-hook-form'; @@ -606,7 +606,7 @@ const PersonEdit = () => ( ``` {% endraw %} -Note that you **must** set the `` prop to `{ keepDirtyValues: true }`. If you forget that prop, any change entered by the end user after the autosave but before its acknowledgement by the server will be lost. +Note that you **must** set the `` prop to `{ keepDirtyValues: true }`. If you forget that prop, any change entered by the end user after the autosave but before its acknowledgment by the server will be lost. If you're using it in an `` page, you must also use a `pessimistic` or `optimistic` [`mutationMode`](https://marmelab.com/react-admin/Edit.html#mutationmode) - `` doesn't work with the default `mutationMode="undoable"`. @@ -741,9 +741,9 @@ export const PostEdit = () => ( ); ``` -This affects both the submit button, and the form submission when the user presses `ENTER` in one of the form fields. +This affects both the submit button and the form submission when the user presses `ENTER` in one of the form fields. -**Tip**: The `redirect` prop is ignored if you've set the `onSuccess` prop in the ``/`` component, or in the `` component. +**Tip**: The `redirect` prop is ignored if you've set the `onSuccess` prop in the ``/`` component, or the `` component. ## Nested Forms From 4500db9db3c9d5463880e518ebcf567dccdff276 Mon Sep 17 00:00:00 2001 From: Francois Zaninotto Date: Wed, 22 May 2024 09:45:35 +0200 Subject: [PATCH 4/5] Apply suggestions from code review Co-authored-by: Gildas Garcia <1122076+djhi@users.noreply.github.com> --- docs/Forms.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/Forms.md b/docs/Forms.md index 9f28320b358..a591dc0ecb1 100644 --- a/docs/Forms.md +++ b/docs/Forms.md @@ -95,8 +95,8 @@ React-admin provides several form components to help you build forms with differ - [``](./SimpleForm.md) is the most common form layout. It renders a form with a single column of inputs, and a submit button at the bottom. - [``](./TabbedForm.md) renders a form with tabs. Each tab contains a group of inputs. It's useful to organize a form with many fields. - [``](./AccordionForm.md) renders a form with accordion sections. Each section contains a group of inputs. -- [``](./WizardForm.md) renders a form with several steps. Each step contains a group of inputs. It's useful when you need to guide the user through a complex form. -- [``](./LongForm.md) provides a table of contents on the left side of the form. It's useful when you have a very long form and want to help the user navigate through it. +- [``](./WizardForm.md) renders a form with several steps. Each step contains a group of inputs. It's useful when you need to guide users through a complex form. +- [``](./LongForm.md) provides a table of contents on the left side of the form. It's useful when you have a very long form and want to help users navigate through it. You can use these forms in creation and edition pages, as well as in dialogs (see e.g. [``](./EditDialog.md)). If none of these layouts fit your needs, you can build your own layout based on the `` component. From 9411364023b019d46f2d760fdb52789ccaf383d0 Mon Sep 17 00:00:00 2001 From: Francois Zaninotto Date: Wed, 22 May 2024 09:46:12 +0200 Subject: [PATCH 5/5] Update docs/Forms.md Co-authored-by: Gildas Garcia <1122076+djhi@users.noreply.github.com> --- docs/Forms.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/docs/Forms.md b/docs/Forms.md index a591dc0ecb1..c343914c4a3 100644 --- a/docs/Forms.md +++ b/docs/Forms.md @@ -351,8 +351,9 @@ import { FormDataConsumer } from 'react-admin'; > - {({ formData, ...rest }) => formData.hasEmail && - + {({ formData, ...rest }) => formData.hasEmail + ? + : null }