From 4e843626178db0607dbfe331f19fd5d215aece38 Mon Sep 17 00:00:00 2001 From: meriadec Date: Mon, 23 Jul 2018 19:12:01 +0200 Subject: [PATCH 1/2] Rework persistence data layer Closes #1235 This commit introduce a pretty big change on how app data files are managed. Instead of having multiple `accounts.json`, `settings.json`, `user.json`, `countervalues.json`, it now store everything in a single `app.json`. And it does it in an *async* way, so it should prevent some frame loss. Migration will be seamless, and will keep `accounts.json` encryption if set. So no user action is involved. This changes comes also with some simplification on password handling (e.g: no more need to store password hash). /!\ Disclaimer During development, I ran about a weird issue (~ 3 or 4 times) when my data was simply "erased" in the file, so back to onboarding, no more settings, etc. I suspect race/write condition, something with write-file-atomic, but I didn't managed to reproduce, everytime I tried. Anyway, I feel not 100% confident with it, so if you guys can test on your side, with your data (with encryption key or not) it will help a lot! --- .circleci/config.yml | 1 + .eslintrc | 1 + package.json | 6 +- src/actions/accounts.js | 10 +- src/analytics/segment.js | 4 +- src/components/IsUnlocked.js | 27 +- .../Onboarding/steps/SetPassword.js | 33 +- .../SettingsPage/DisablePasswordModal.js | 52 ++-- ...blePasswordButton.js => PasswordButton.js} | 58 ++-- src/components/SettingsPage/PasswordForm.js | 8 +- src/components/SettingsPage/PasswordModal.js | 19 +- .../SettingsPage/sections/Display.js | 4 +- src/components/SettingsPage/sections/Tools.js | 2 + src/components/TopBar/index.js | 4 +- src/components/base/InputPassword/index.js | 19 +- src/config/errors.js | 4 + src/helpers/db/db-storybook.js | 13 - src/helpers/db/db.js | 104 ------- src/helpers/db/db.spec.js | 226 ++++++++++++++ src/helpers/db/index.js | 292 +++++++++++++++++- src/helpers/promise.js | 8 + src/helpers/user.js | 6 +- src/logger/index.js | 5 +- src/main/app.js | 15 +- src/main/bridge.js | 9 +- src/middlewares/db.js | 12 +- src/migrations/index.js | 33 +- src/migrations/migrations.js | 53 ++++ src/migrations/migrations.spec.js | 96 ++++++ .../mocks/userdata_v1.0.5_mock-01.zip | Bin 0 -> 5867 bytes ...data_v1.0.5_mock-02-encrypted-accounts.zip | Bin 0 -> 197160 bytes src/reducers/application.js | 6 +- src/reducers/settings.js | 12 +- src/renderer/events.js | 10 +- src/renderer/init.js | 22 +- src/sentry/browser.js | 5 +- yarn.lock | 4 - 37 files changed, 861 insertions(+), 322 deletions(-) rename src/components/SettingsPage/{DisablePasswordButton.js => PasswordButton.js} (61%) delete mode 100644 src/helpers/db/db-storybook.js delete mode 100644 src/helpers/db/db.js create mode 100644 src/helpers/db/db.spec.js create mode 100644 src/migrations/migrations.js create mode 100644 src/migrations/migrations.spec.js create mode 100644 src/migrations/mocks/userdata_v1.0.5_mock-01.zip create mode 100644 src/migrations/mocks/userdata_v1.0.5_mock-02-encrypted-accounts.zip diff --git a/.circleci/config.yml b/.circleci/config.yml index 4c88ec55..7ceba1c7 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -21,4 +21,5 @@ jobs: - run: yarn lint - run: ./node_modules/.bin/prettier -l "{src,webpack,.storybook,static/i18n}/**/*.js" - run: yarn flow --quiet + - run: yarn test - run: yarn release diff --git a/.eslintrc b/.eslintrc index 0cffcf1a..6be03c28 100644 --- a/.eslintrc +++ b/.eslintrc @@ -20,6 +20,7 @@ "ResizeObserver": false, "jest": false, "describe": false, + "beforeEach": false, "test": false, "it": false, "expect": false, diff --git a/package.json b/package.json index 6b346c61..74273c21 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,9 @@ "compile": "bash ./scripts/compile.sh", "lint": "eslint src webpack .storybook", "flow": "flow", + "test": "jest", "prettier": "prettier --write \"{src,webpack,.storybook}/**/*.{js,json}\"", - "ci": "yarn lint && yarn flow && yarn prettier", + "ci": "yarn lint && yarn flow && yarn prettier && yarn test", "storybook": "NODE_ENV=development STORYBOOK_ENV=1 start-storybook -s ./static -p 4444", "publish-storybook": "bash ./scripts/legacy/publish-storybook.sh", "reset-files": "bash ./scripts/legacy/reset-files.sh" @@ -42,7 +43,6 @@ "async": "^2.6.1", "axios": "^0.18.0", "babel-runtime": "^6.26.0", - "bcryptjs": "^2.4.3", "bignumber.js": "^7.2.1", "bitcoinjs-lib": "^3.3.2", "bs58": "^4.0.1", @@ -87,6 +87,7 @@ "redux-actions": "^2.4.0", "redux-thunk": "^2.3.0", "reselect": "^3.0.1", + "rimraf": "^2.6.2", "ripple-binary-codec": "^0.1.13", "ripple-bs58check": "^2.0.2", "ripple-hashes": "^0.3.1", @@ -106,6 +107,7 @@ "winston": "^3.0.0", "winston-daily-rotate-file": "^3.2.3", "winston-transport": "^4.2.0", + "write-file-atomic": "^2.3.0", "ws": "^5.1.1", "zxcvbn": "^4.4.2" }, diff --git a/src/actions/accounts.js b/src/actions/accounts.js index 9551145c..c6364b98 100644 --- a/src/actions/accounts.js +++ b/src/actions/accounts.js @@ -16,14 +16,12 @@ export const removeAccount: RemoveAccount = payload => ({ payload, }) -export type FetchAccounts = () => * -export const fetchAccounts: FetchAccounts = () => { - db.init('accounts', []) // FIXME the "init" pattern to drop imo. a simple get()||[] is enough - const accounts = db.get('accounts') - return { +export const fetchAccounts = () => async (dispatch: *) => { + const accounts = await db.getKey('app', 'accounts', []) + return dispatch({ type: 'SET_ACCOUNTS', payload: accounts, - } + }) } export type UpdateAccountWithUpdater = (accountId: string, (Account) => Account) => * diff --git a/src/analytics/segment.js b/src/analytics/segment.js index 7f99c5e8..0d5f01e7 100644 --- a/src/analytics/segment.js +++ b/src/analytics/segment.js @@ -52,9 +52,9 @@ const extraProperties = store => { let storeInstance // is the redux store. it's also used as a flag to know if analytics is on or off. -export const start = (store: *) => { +export const start = async (store: *) => { if (!user) return - const { id } = user() + const { id } = await user() logger.analyticsStart(id) storeInstance = store const { analytics } = window diff --git a/src/components/IsUnlocked.js b/src/components/IsUnlocked.js index 8c56e2f3..9356974a 100644 --- a/src/components/IsUnlocked.js +++ b/src/components/IsUnlocked.js @@ -1,6 +1,5 @@ // @flow -import bcrypt from 'bcryptjs' import React, { Component } from 'react' import { connect } from 'react-redux' import { compose } from 'redux' @@ -8,13 +7,11 @@ import { remote } from 'electron' import styled from 'styled-components' import { translate } from 'react-i18next' -import type { SettingsState as Settings } from 'reducers/settings' import type { T } from 'types/common' import { i } from 'helpers/staticPath' import IconTriangleWarning from 'icons/TriangleWarning' -import get from 'lodash/get' -import { setEncryptionKey } from 'helpers/db' +import db from 'helpers/db' import hardReset from 'helpers/hardReset' import { fetchAccounts } from 'actions/accounts' @@ -37,7 +34,6 @@ type Props = { children: any, fetchAccounts: Function, isLocked: boolean, - settings: Settings, t: T, unlock: Function, } @@ -50,7 +46,6 @@ type State = { const mapStateToProps = state => ({ isLocked: isLocked(state), - settings: state.settings, }) const mapDispatchToProps: Object = { @@ -114,18 +109,20 @@ class IsUnlocked extends Component { handleSubmit = async (e: SyntheticEvent) => { e.preventDefault() - const { settings, unlock, fetchAccounts } = this.props + const { unlock, fetchAccounts } = this.props const { inputValue } = this.state - if (bcrypt.compareSync(inputValue.password, get(settings, 'password.value'))) { - setEncryptionKey('accounts', inputValue.password) - await fetchAccounts() + const isAccountsEncrypted = await db.isKeyEncrypted('app', 'accounts') + try { + if (isAccountsEncrypted) { + await db.setEncryptionKey('app', 'accounts', inputValue.password) + await fetchAccounts() + } else if (!db.isEncryptionKeyCorrect('app', 'accounts', inputValue.password)) { + throw new PasswordIncorrectError() + } unlock() - - this.setState({ - ...defaultState, - }) - } else { + this.setState(defaultState) + } catch (err) { this.setState({ incorrectPassword: new PasswordIncorrectError() }) } } diff --git a/src/components/Onboarding/steps/SetPassword.js b/src/components/Onboarding/steps/SetPassword.js index aadb0b9b..767f4552 100644 --- a/src/components/Onboarding/steps/SetPassword.js +++ b/src/components/Onboarding/steps/SetPassword.js @@ -1,10 +1,11 @@ // @flow import React, { PureComponent, Fragment } from 'react' -import bcrypt from 'bcryptjs' +import { connect } from 'react-redux' import { colors } from 'styles/theme' -import { setEncryptionKey } from 'helpers/db' +import db from 'helpers/db' +import { saveSettings } from 'actions/settings' import Box from 'components/base/Box' import Button from 'components/base/Button' @@ -30,16 +31,24 @@ type State = { confirmPassword: string, } +const mapDispatchToProps = { + saveSettings, +} + const INITIAL_STATE = { currentPassword: '', newPassword: '', confirmPassword: '', } -class SetPassword extends PureComponent { +type Props = StepProps & { + saveSettings: any => void, +} + +class SetPassword extends PureComponent { state = INITIAL_STATE - handleSave = (e: SyntheticEvent) => { + handleSave = async (e: SyntheticEvent) => { if (e) { e.preventDefault() } @@ -47,11 +56,10 @@ class SetPassword extends PureComponent { return } const { newPassword } = this.state - const { nextStep, savePassword } = this.props + const { nextStep, saveSettings } = this.props - setEncryptionKey('accounts', newPassword) - const hash = newPassword ? bcrypt.hashSync(newPassword, 8) : undefined - savePassword(hash) + await db.setEncryptionKey('app', 'accounts', newPassword) + saveSettings({ hasPassword: true }) this.handleReset() nextStep() } @@ -71,7 +79,7 @@ class SetPassword extends PureComponent { const { nextStep, prevStep, t, settings, onboarding } = this.props const { newPassword, currentPassword, confirmPassword } = this.state - const isPasswordEnabled = settings.password.isEnabled === true + const hasPassword = settings.hasPassword === true const disclaimerNotes = [ { @@ -110,7 +118,7 @@ class SetPassword extends PureComponent { { } } -export default SetPassword +export default connect( + null, + mapDispatchToProps, +)(SetPassword) diff --git a/src/components/SettingsPage/DisablePasswordModal.js b/src/components/SettingsPage/DisablePasswordModal.js index b5098ed3..bd177544 100644 --- a/src/components/SettingsPage/DisablePasswordModal.js +++ b/src/components/SettingsPage/DisablePasswordModal.js @@ -1,9 +1,9 @@ // @flow import React, { PureComponent } from 'react' -import bcrypt from 'bcryptjs' import { createCustomErrorClass } from 'helpers/errors' +import db from 'helpers/db' import Box from 'components/base/Box' import Button from 'components/base/Button' import InputPassword from 'components/base/InputPassword' @@ -17,8 +17,6 @@ const PasswordIncorrectError = createCustomErrorClass('PasswordIncorrect') type Props = { t: T, onClose: Function, - isPasswordEnabled: boolean, - currentPasswordHash: string, onChangePassword: Function, } @@ -42,16 +40,14 @@ class DisablePasswordModal extends PureComponent { } const { currentPassword } = this.state - const { isPasswordEnabled, currentPasswordHash, onChangePassword } = this.props - if (isPasswordEnabled) { - if (!bcrypt.compareSync(currentPassword, currentPasswordHash)) { - this.setState({ incorrectPassword: new PasswordIncorrectError() }) - return - } - onChangePassword('') - } else { - onChangePassword('') + const { onChangePassword } = this.props + + if (!db.isEncryptionKeyCorrect('app', 'accounts', currentPassword)) { + this.setState({ incorrectPassword: new PasswordIncorrectError() }) + return } + + onChangePassword('') } handleInputChange = (key: string) => (value: string) => { @@ -64,7 +60,7 @@ class DisablePasswordModal extends PureComponent { handleReset = () => this.setState(INITIAL_STATE) render() { - const { t, isPasswordEnabled, onClose, ...props } = this.props + const { t, onClose, ...props } = this.props const { currentPassword, incorrectPassword } = this.state return ( { {t('app:password.disablePassword.desc')} - {isPasswordEnabled && ( - - - - - )} + + + + - )} - + { isOpened={isPasswordModalOpened} onClose={this.handleClosePasswordModal} onChangePassword={this.handleChangePassword} - isPasswordEnabled={isPasswordEnabled} - currentPasswordHash={settings.password.value} + hasPassword={hasPassword} /> { isOpened={isDisablePasswordModalOpened} onClose={this.handleCloseDisablePasswordModal} onChangePassword={this.handleChangePassword} - isPasswordEnabled={isPasswordEnabled} - currentPasswordHash={settings.password.value} + hasPassword={hasPassword} /> ) @@ -129,5 +115,5 @@ export default translate()( connect( mapStateToProps, mapDispatchToProps, - )(DisablePasswordButton), + )(PasswordButton), ) diff --git a/src/components/SettingsPage/PasswordForm.js b/src/components/SettingsPage/PasswordForm.js index e8422f68..d4dd4a53 100644 --- a/src/components/SettingsPage/PasswordForm.js +++ b/src/components/SettingsPage/PasswordForm.js @@ -14,7 +14,7 @@ const PasswordsDontMatchError = createCustomErrorClass('PasswordsDontMatch') type Props = { t: T, - isPasswordEnabled: boolean, + hasPassword: boolean, currentPassword: string, newPassword: string, confirmPassword: string, @@ -28,7 +28,7 @@ class PasswordForm extends PureComponent { render() { const { t, - isPasswordEnabled, + hasPassword, currentPassword, newPassword, incorrectPassword, @@ -41,7 +41,7 @@ class PasswordForm extends PureComponent { return (
- {isPasswordEnabled && ( + {hasPassword && ( { title={t('app:settings.profile.password')} desc={t('app:settings.profile.passwordDesc')} > - + ({ - hasPassword: hasPassword(state), + hasPassword: hasPasswordSelector(state), hasAccounts: hasAccountsSelector(state), }) diff --git a/src/components/base/InputPassword/index.js b/src/components/base/InputPassword/index.js index bf550696..483ba484 100644 --- a/src/components/base/InputPassword/index.js +++ b/src/components/base/InputPassword/index.js @@ -64,18 +64,23 @@ class InputPassword extends PureComponent { inputType: 'password', } + componentWillUnmount() { + this._isUnmounted = true + } + + _isUnmounted = false + toggleInputType = () => this.setState(prev => ({ inputType: prev.inputType === 'text' ? 'password' : 'text', })) - debouncePasswordStrength = debounce( - v => - this.setState({ - passwordStrength: getPasswordStrength(v), - }), - 150, - ) + debouncePasswordStrength = debounce(v => { + if (this._isUnmounted) return + this.setState({ + passwordStrength: getPasswordStrength(v), + }) + }, 150) handleChange = (v: string) => { const { onChange } = this.props diff --git a/src/config/errors.js b/src/config/errors.js index 73c5bde5..fa6508bd 100644 --- a/src/config/errors.js +++ b/src/config/errors.js @@ -12,3 +12,7 @@ export const UserRefusedAddress = createCustomErrorClass('UserRefusedAddress') export const WrongDeviceForAccount = createCustomErrorClass('WrongDeviceForAccount') export const DeviceNotGenuineError = createCustomErrorClass('DeviceNotGenuine') export const DeviceGenuineSocketEarlyClose = createCustomErrorClass('DeviceGenuineSocketEarlyClose') + +// db stuff, no need to translate +export const NoDBPathGiven = createCustomErrorClass('NoDBPathGiven') +export const DBWrongPassword = createCustomErrorClass('DBWrongPassword') diff --git a/src/helpers/db/db-storybook.js b/src/helpers/db/db-storybook.js deleted file mode 100644 index 812aff0c..00000000 --- a/src/helpers/db/db-storybook.js +++ /dev/null @@ -1,13 +0,0 @@ -// @flow - -const noop = () => {} - -module.exports = { - init: noop, - get: noop, - set: noop, - getIn: noop, - setIn: noop, - cleanCache: noop, - resetAll: noop, -} diff --git a/src/helpers/db/db.js b/src/helpers/db/db.js deleted file mode 100644 index 1162dd22..00000000 --- a/src/helpers/db/db.js +++ /dev/null @@ -1,104 +0,0 @@ -// @flow - -import logger from 'logger' -import Store from 'electron-store' -import set from 'lodash/set' -import get from 'lodash/get' - -import { decodeAccountsModel, encodeAccountsModel } from 'reducers/accounts' - -type DBKey = 'settings' | 'accounts' | 'countervalues' | 'user' | 'migrations' - -const encryptionKey = {} - -const store = key => - new Store({ - name: key, - defaults: { - data: null, - }, - encryptionKey: encryptionKey[key], - }) - -export function setEncryptionKey(key: DBKey, value?: string) { - encryptionKey[key] = value -} - -const transforms = { - get: { - accounts: decodeAccountsModel, - }, - set: { - accounts: encodeAccountsModel, - }, -} - -function middleware(type: 'get' | 'set', key: string, data: any) { - const t = transforms[type][key] - if (t) { - data = t(data) - } - return data -} - -export default { - // If the db doesn't exists for that key, init it, with the default value provided - init: (key: DBKey, defaults: any) => { - const db = store(key) - const data = db.get('data') - if (!data) { - db.set('data', defaults) - } - }, - - // TODO flowtype this. we should be able to express all the possible entries and their expected type (with a union type) - get: (key: DBKey, defaults: any): any => { - const db = store(key) - const data = db.get('data', defaults) - logger.onDB('read', key) - return middleware('get', key, data) - }, - - set: (key: DBKey, val: any) => { - const db = store(key) - val = middleware('set', key, val) - logger.onDB('write', key) - db.set('data', val) - return val - }, - - getIn: (key: DBKey, path: string, defaultValue: any) => { - const db = store(key) - let data = db.get('data') - data = middleware('get', key, data) - return get(data, path, defaultValue) - }, - - setIn: (key: DBKey, path: string, val: any) => { - const db = store(key) - const data = db.get('data') - val = middleware('set', key, val) - set(data, path, val) - db.set('data', data) - return val - }, - - cleanCache: () => { - // Only remove cache store - const keys = ['countervalues'] - keys.forEach(k => { - const db = store(k) - logger.onDB('clear', k) - db.clear() - }) - }, - - resetAll: () => { - const keys = ['settings', 'accounts', 'countervalues'] - keys.forEach(k => { - const db = store(k) - logger.onDB('clear', k) - db.clear() - }) - }, -} diff --git a/src/helpers/db/db.spec.js b/src/helpers/db/db.spec.js new file mode 100644 index 00000000..83632255 --- /dev/null +++ b/src/helpers/db/db.spec.js @@ -0,0 +1,226 @@ +import os from 'os' +import path from 'path' +import fs from 'fs' +import rimrafModule from 'rimraf' + +import db from 'helpers/db' +import { promisify } from 'helpers/promise' + +const rimraf = promisify(rimrafModule) +const fsReadFile = promisify(fs.readFile) +const fsWriteFile = promisify(fs.writeFile) +const fsMkdir = promisify(fs.mkdir) + +const accountsTransform = { + get: accounts => accounts.map(account => ({ ...account, balance: Number(account.balance) })), + set: accounts => accounts.map(account => ({ ...account, balance: account.balance.toString() })), +} + +const fakeAccounts = [{ name: 'a', balance: 100 }, { name: 'b', balance: 200 }] + +async function createRandomTmpDir() { + const p = path.resolve(os.tmpdir(), `tmp-${Math.random()}`) + await rimraf(p) + await fsMkdir(p) + return p +} + +describe('db - without init', () => { + test('throw if trying to get key while db not initiated', async () => { + let err + try { + await db.getKey('app', 'accounts') + } catch (e) { + err = e + } + expect(err).toBeDefined() + expect(err.name).toBe('NoDBPathGiven') + }) + + test('handle the case where db file does not exists', async () => { + let err + try { + const dbPath = await createRandomTmpDir() + db.init(dbPath) + const dbContent = await db.load('app') + expect(dbContent).toEqual({}) + await rimraf(dbPath) + } catch (e) { + err = e + } + expect(err).toBeUndefined() + }) +}) + +describe('db', () => { + const dbPath = path.resolve(os.tmpdir(), 'ledger-live-test-db') + + beforeEach(async () => { + await rimraf(dbPath) + await fsMkdir(dbPath) + db.init(dbPath) + }) + + test('set and get key', async () => { + const a = await db.getKey('app', 'something') + expect(a).toBeUndefined() + await db.setKey('app', 'something', 'foo') + const b = await db.getKey('app', 'something') + expect(b).toBe('foo') + }) + + test('set and get key, even if nested', async () => { + await db.setKey('app', 'something.is.good', 'foo') + const a = await db.getKey('app', 'something.is.good') + expect(a).toBe('foo') + }) + + test('get the whole namespace', async () => { + await db.setKey('app', 'something.is.good', 'foo') + const a = await db.getNamespace('app') + expect(a).toEqual({ something: { is: { good: 'foo' } } }) + }) + + test('set the whole namespace', async () => { + await db.setNamespace('app', { foo: 'bar' }) + const a = await db.getNamespace('app') + expect(a).toEqual({ foo: 'bar' }) + }) + + test('handle default value if value not set', async () => { + const a = await db.getKey('app', 'something.is.good', 57) + expect(a).toBe(57) + }) + + test('encrypt data to filesystem', async () => { + const data = { this: 'is', sparta: true } + let content + let parsed + + // let's try without encrypting + await db.setKey('app', 'shouldBeEncrypted', data) + const filePath = path.resolve(dbPath, 'app.json') + content = await fsReadFile(filePath, 'utf-8') + parsed = JSON.parse(content).data + expect(parsed.shouldBeEncrypted).toEqual(data) + + // mark the field as encrypted + await db.setEncryptionKey('app', 'shouldBeEncrypted', 'passw0rd') + + // let's see if it worked + content = await fsReadFile(filePath, 'utf-8') + parsed = JSON.parse(content).data + const expected = '+UexwDUPgM8mYaandbTUzTMdmZDe+/yd77zOLCHcIWk=' + expect(parsed.shouldBeEncrypted).toEqual(expected) + }) + + test('retrieve encrypted data, after db load', async () => { + const tmpDir = path.resolve(os.tmpdir(), 'with-encrypted-field') + await rimraf(tmpDir) + await fsMkdir(tmpDir) + const encryptedData = + '{"data":{ "shouldBeEncrypted": "+UexwDUPgM8mYaandbTUzTMdmZDe+/yd77zOLCHcIWk=" }}' + await fsWriteFile(path.resolve(tmpDir, 'app.json'), encryptedData) + db.init(tmpDir) + const encrypted = await db.getKey('app', 'shouldBeEncrypted') + expect(encrypted).toBe('+UexwDUPgM8mYaandbTUzTMdmZDe+/yd77zOLCHcIWk=') + await db.setEncryptionKey('app', 'shouldBeEncrypted', 'passw0rd') + const decoded = await db.getKey('app', 'shouldBeEncrypted') + expect(decoded).toEqual({ this: 'is', sparta: true }) + await rimraf(tmpDir) + }) + + test('handle wrong encryption key', async () => { + await db.setKey('app', 'foo', { some: 'data' }) + await db.setEncryptionKey('app', 'foo', 'passw0rd') + + db.init(dbPath) + + const d = await db.getKey('app', 'foo.some') + expect(d).toBe(undefined) + let err + try { + await db.setEncryptionKey('app', 'foo', 'totally not the passw0rd') + } catch (e) { + err = e + } + expect(err).toBeDefined() + expect(err.name).toBe('DBWrongPassword') + await db.setEncryptionKey('app', 'foo', 'passw0rd') + const e = await db.getKey('app', 'foo.some') + expect(e).toBe('data') + }) + + test('detect if field is encrypted or not', async () => { + let isEncrypted + await db.setKey('app', 'encryptedField', { some: 'data' }) + await db.setEncryptionKey('app', 'encryptedField', 'passw0rd') + db.init(dbPath) + const k = await db.getKey('app', 'encryptedField') + expect(k).toBe('HNEETQf+9An6saxmA/X8zg==') + isEncrypted = await db.isKeyEncrypted('app', 'encryptedField') + expect(isEncrypted).toBe(true) + await db.setEncryptionKey('app', 'encryptedField', 'passw0rd') + isEncrypted = await db.isKeyEncrypted('app', 'encryptedField') + expect(isEncrypted).toBe(false) + const value = await db.getKey('app', 'encryptedField') + expect(value).toEqual({ some: 'data' }) + }) + + test('handle transformations', async () => { + db.registerTransform('app', 'accounts', accountsTransform) + await db.setKey('app', 'accounts', fakeAccounts) + const filePath = path.resolve(dbPath, 'app.json') + const fileContent = await fsReadFile(filePath, 'utf-8') + + // expect transform to have written strings + const expectedFile = + '{"data":{"accounts":[{"name":"a","balance":"100"},{"name":"b","balance":"200"}]}}' + expect(fileContent).toBe(expectedFile) + + db.init(dbPath) + db.registerTransform('app', 'accounts', accountsTransform) + + // expect transform to have loaded numbers + const accounts = await db.getKey('app', 'accounts') + expect(accounts).toEqual(fakeAccounts) + }) + + test('can handle transform on an encrypted field', async () => { + let accounts + db.registerTransform('app', 'accounts', accountsTransform) + await db.setEncryptionKey('app', 'accounts', 'passw0rd') + await db.setKey('app', 'accounts', fakeAccounts) + accounts = await db.getKey('app', 'accounts') + expect(accounts).toEqual(fakeAccounts) + db.init(dbPath) + db.registerTransform('app', 'accounts', accountsTransform) + await db.setEncryptionKey('app', 'accounts', 'passw0rd') + accounts = await db.getKey('app', 'accounts') + expect(accounts).toEqual(fakeAccounts) + }) + + test('check if password is correct', async () => { + let isEncryptionKeyCorrect + await db.setEncryptionKey('app', 'verySecureField', 'h0dl') + await db.setKey('app', 'verySecureField', { much: { secure: { data: true } } }) + const filePath = path.resolve(dbPath, 'app.json') + const content = await fsReadFile(filePath, 'utf-8') + const expected = + '{"data":{"verySecureField":"i9SyvjaWm/UVpmuyeChmKjSuiWJuMxEJhhvUhvleRoe6gpAOgBWqREB+CRO6yxkD"}}' + expect(content).toBe(expected) + isEncryptionKeyCorrect = db.isEncryptionKeyCorrect('app', 'verySecureField', 'h0dl') + expect(isEncryptionKeyCorrect).toBe(true) + isEncryptionKeyCorrect = db.isEncryptionKeyCorrect('app', 'verySecureField', 'never-h0dl') + expect(isEncryptionKeyCorrect).toBe(false) + }) + + test('inform is a field has an encryption key', async () => { + let hasEncryptionKey + await db.setEncryptionKey('app', 'verySecureField', 'h0dl') + hasEncryptionKey = db.hasEncryptionKey('app', 'verySecureField') + expect(hasEncryptionKey).toBe(true) + hasEncryptionKey = db.hasEncryptionKey('app', 'veryInexistantField') + expect(hasEncryptionKey).toBe(false) + }) +}) diff --git a/src/helpers/db/index.js b/src/helpers/db/index.js index f04d4cbe..3be639b0 100644 --- a/src/helpers/db/index.js +++ b/src/helpers/db/index.js @@ -1,3 +1,291 @@ -const db = process.env.STORYBOOK_ENV ? require('./db-storybook') : require('./db') +// @flow -module.exports = db +import fs from 'fs' +import path from 'path' +import crypto from 'crypto' +import cloneDeep from 'lodash/cloneDeep' +import writeFileAtomicModule from 'write-file-atomic' +import get from 'lodash/get' +import set from 'lodash/set' + +import logger from 'logger' +import { promisify } from 'helpers/promise' + +import { NoDBPathGiven, DBWrongPassword } from 'config/errors' + +type Transform = { + get: any => any, + set: any => any, +} + +const fsReadFile = promisify(fs.readFile) +const fsUnlink = promisify(fs.unlink) +const writeFileAtomic = promisify(writeFileAtomicModule) + +const ALGORITHM = 'aes-256-cbc' + +let queue = Promise.resolve() + +let DBPath = null +let memoryNamespaces = {} +let encryptionKeys = {} +let transforms = {} + +/** + * Reset memory state, db path, encryption keys, transforms.. + */ +function init(_DBPath: string) { + DBPath = _DBPath + memoryNamespaces = {} + encryptionKeys = {} + transforms = {} +} + +/** + * Register a transformation for a given namespace and keyPath + * it will be used when reading/writing from/to file + */ +function registerTransform(ns: string, keyPath: string, transform: Transform) { + if (!transforms[ns]) transforms[ns] = {} + transforms[ns][keyPath] = transform +} + +/** + * Load a namespace, using .json + */ +async function load(ns: string): Promise { + try { + if (!DBPath) throw new NoDBPathGiven() + const filePath = path.resolve(DBPath, `${ns}.json`) + const fileContent = await fsReadFile(filePath) + const { data } = JSON.parse(fileContent) + memoryNamespaces[ns] = data + + // transform fields + for (const keyPath in transforms[ns]) { + if (transforms[ns].hasOwnProperty(keyPath)) { + const transform = transforms[ns][keyPath] + const val = get(memoryNamespaces[ns], keyPath) + + // if value is string, it's encrypted, so we don't want to transform + if (typeof val === 'string') continue // eslint-disable-line no-continue + + set(memoryNamespaces[ns], keyPath, transform.get(val)) + } + } + } catch (err) { + if (err.code === 'ENOENT') { + memoryNamespaces[ns] = {} + await save(ns) + } else { + logger.error(err) + throw err + } + } + return memoryNamespaces[ns] +} + +async function ensureNSLoaded(ns: string) { + if (!memoryNamespaces[ns]) { + await load(ns) + } +} + +/** + * Register a keyPath in db that is encrypted + * This will decrypt the keyPath at this moment, and will be used + * in `save` to encrypt it back + */ +async function setEncryptionKey(ns: string, keyPath: string, encryptionKey: string): Promise { + if (!encryptionKeys[ns]) encryptionKeys[ns] = {} + encryptionKeys[ns][keyPath] = encryptionKey + const val = await getKey(ns, keyPath, null) + + // no need to decode if already decoded + if (!val || typeof val !== 'string') { + return save(ns) + } + + try { + const decipher = crypto.createDecipher(ALGORITHM, encryptionKey) + const raw = decipher.update(val, 'base64', 'utf8') + decipher.final('utf8') + let decrypted = JSON.parse(raw) + + // handle the case when we just migrated from the previous storage + // which stored the data in binary with a `data` key + if (ns === 'app' && keyPath === 'accounts' && decrypted.data) { + decrypted = decrypted.data + } + + // apply transform if needed + const transform = get(transforms, `${ns}.${keyPath}`) + if (transform) { + decrypted = transform.get(decrypted) + } + + // only set decrypted data in memory + set(memoryNamespaces[ns], keyPath, decrypted) + + return save(ns) + } catch (err) { + throw new DBWrongPassword() + } +} + +async function removeEncryptionKey(ns: string, keyPath: string) { + set(encryptionKeys, `${ns}.${keyPath}`, undefined) + return save(ns) +} + +/** + * Set a key in the given namespace + */ +async function setKey(ns: string, keyPath: string, value: any): Promise { + logger.onDB('write', `${ns}:${keyPath}`) + await ensureNSLoaded(ns) + set(memoryNamespaces[ns], keyPath, value) + return save(ns) +} + +/** + * Get a key in the given namespace + */ +async function getKey(ns: string, keyPath: string, defaultValue?: any): Promise { + logger.onDB('read', `${ns}:${keyPath}`) + await ensureNSLoaded(ns) + if (!keyPath) return memoryNamespaces[ns] || defaultValue + return get(memoryNamespaces[ns], keyPath, defaultValue) +} + +/** + * Get whole namespace + */ +async function getNamespace(ns: string, defaultValue?: any) { + logger.onDB('read', ns) + await ensureNSLoaded(ns) + return memoryNamespaces[ns] || defaultValue +} + +async function setNamespace(ns: string, value: any) { + logger.onDB('write', ns) + set(memoryNamespaces, ns, value) + return save(ns) +} + +/** + * Check if a key is encrypted + * + * /!\ it consider encrypted if it's string and can't JSON.parse, so + * can brings false-positive if bad used + */ +async function isKeyEncrypted(ns: string, keyPath: string): Promise { + const v = await getKey(ns, keyPath) + if (typeof v !== 'string') return false + try { + JSON.parse(v) + return false + } catch (err) { + return true + } +} + +/** + * Save given namespace to corresponding file, in atomic way + */ +async function saveToDisk(ns: string) { + if (!DBPath) throw new NoDBPathGiven() + await ensureNSLoaded(ns) + + // cloning because we are mutating the obj + const clone = cloneDeep(memoryNamespaces[ns]) + + // transform fields + if (transforms[ns]) { + for (const keyPath in transforms[ns]) { + if (transforms[ns].hasOwnProperty(keyPath)) { + const transform = transforms[ns][keyPath] + const val = get(clone, keyPath) + // we don't want to transform encrypted fields (that have not being decrypted yet) + if (!val || typeof val === 'string') continue // eslint-disable-line no-continue + set(clone, keyPath, transform.set(val)) + } + } + } + + // encrypt fields + if (encryptionKeys[ns]) { + for (const keyPath in encryptionKeys[ns]) { + if (encryptionKeys[ns].hasOwnProperty(keyPath)) { + const encryptionKey = encryptionKeys[ns][keyPath] + if (!encryptionKey) continue // eslint-disable-line no-continue + const val = get(clone, keyPath) + if (!val) continue // eslint-disable-line no-continue + const cipher = crypto.createCipher(ALGORITHM, encryptionKey) + const encrypted = + cipher.update(JSON.stringify(val), 'utf8', 'base64') + cipher.final('base64') + set(clone, keyPath, encrypted) + } + } + } + + const fileContent = JSON.stringify({ data: clone }) + await writeFileAtomic(path.resolve(DBPath, `${ns}.json`), fileContent) +} + +function save(ns: string) { + queue = queue.then(() => saveToDisk(ns)) + return queue +} + +async function cleanCache() { + logger.onDB('clean cache') + await setKey('app', 'countervalues', null) + await save('app') +} + +async function resetAll() { + logger.onDB('reset all') + if (!DBPath) throw new NoDBPathGiven() + memoryNamespaces.app = null + await fsUnlink(path.resolve(DBPath, 'app.json')) +} + +function isEncryptionKeyCorrect(ns: string, keyPath: string, encryptionKey: string) { + try { + return encryptionKeys[ns][keyPath] === encryptionKey + } catch (err) { + return false + } +} + +function hasEncryptionKey(ns: string, keyPath: string) { + try { + return !!encryptionKeys[ns][keyPath] + } catch (err) { + return false + } +} + +function getDBPath() { + if (!DBPath) throw new Error('Trying to get db path but it is not initialized') + return DBPath +} + +export default { + init, + load, + registerTransform, + setEncryptionKey, + removeEncryptionKey, + isEncryptionKeyCorrect, + hasEncryptionKey, + setKey, + getKey, + getNamespace, + setNamespace, + isKeyEncrypted, + save, + cleanCache, + resetAll, + getDBPath, +} diff --git a/src/helpers/promise.js b/src/helpers/promise.js index 2918c5f7..ad494a16 100644 --- a/src/helpers/promise.js +++ b/src/helpers/promise.js @@ -64,3 +64,11 @@ export function createCancelablePolling( }) return { unsubscribe, promise } } + +export const promisify = (fn: any) => (...args: any) => + new Promise((resolve, reject) => + fn(...args, (err: Error, res: any) => { + if (err) return reject(err) + return resolve(res) + }), + ) diff --git a/src/helpers/user.js b/src/helpers/user.js index 15a8b7cb..d9a8b7f5 100644 --- a/src/helpers/user.js +++ b/src/helpers/user.js @@ -5,11 +5,11 @@ import uuid from 'uuid/v4' // a user is an anonymous way to identify a same instance of the app -export default () => { - let user = db.get('user') +export default async () => { + let user = await db.getKey('app', 'user') if (!user) { user = { id: uuid() } - db.set('user', user) + db.setKey('app', 'user', user) } return user } diff --git a/src/logger/index.js b/src/logger/index.js index d3a015ad..0a46a6f6 100644 --- a/src/logger/index.js +++ b/src/logger/index.js @@ -1,3 +1,6 @@ -const logger = process.env.STORYBOOK_ENV ? require('./logger-storybook') : require('./logger') +const logger = + process.env.STORYBOOK_ENV || process.env.NODE_ENV === 'test' + ? require('./logger-storybook') + : require('./logger') module.exports = logger diff --git a/src/main/app.js b/src/main/app.js index 18a7b839..25a438a3 100644 --- a/src/main/app.js +++ b/src/main/app.js @@ -12,12 +12,15 @@ import { import menu from 'main/menu' import db from 'helpers/db' import { i } from 'helpers/staticPath' +import resolveUserDataDirectory from 'helpers/resolveUserDataDirectory' import { terminateAllTheThings } from './terminator' // necessary to prevent win from being garbage collected let mainWindow = null +db.init(resolveUserDataDirectory()) + const isSecondInstance = app.makeSingleInstance(() => { if (mainWindow) { if (mainWindow.isMinimized()) mainWindow.restore() @@ -66,7 +69,7 @@ const saveWindowSettings = window => { 'resize', debounce(() => { const [width, height] = window.getSize() - db.setIn('settings', `window.${window.name}.dimensions`, { width, height }) + db.setKey('windowParams', `${window.name}.dimensions`, { width, height }) }, 100), ) @@ -74,7 +77,7 @@ const saveWindowSettings = window => { 'move', debounce(() => { const [x, y] = window.getPosition() - db.setIn('settings', `window.${window.name}.positions`, { x, y }) + db.setKey('windowParams', `${window.name}.positions`, { x, y }) }, 100), ) } @@ -91,9 +94,9 @@ const defaultWindowOptions = { }, } -function createMainWindow() { - const savedDimensions = db.getIn('settings', 'window.MainWindow.dimensions', {}) - const savedPositions = db.getIn('settings', 'window.MainWindow.positions', null) +async function createMainWindow() { + const savedDimensions = await db.getKey('app', 'MainWindow.dimensions', {}) + const savedPositions = await db.getKey('app', 'MainWindow.positions', null) const width = savedDimensions.width || DEFAULT_WINDOW_WIDTH const height = savedDimensions.height || DEFAULT_WINDOW_HEIGHT @@ -178,5 +181,5 @@ app.on('ready', async () => { Menu.setApplicationMenu(menu) - mainWindow = createMainWindow() + mainWindow = await createMainWindow() }) diff --git a/src/main/bridge.js b/src/main/bridge.js index 8ec0ab74..eb26a90e 100644 --- a/src/main/bridge.js +++ b/src/main/bridge.js @@ -24,10 +24,15 @@ const LEDGER_CONFIG_DIRECTORY = app.getPath('userData') let internalProcess +let userId = null let sentryEnabled = false -const userId = user().id -sentry(() => sentryEnabled, userId) +async function init() { + const u = await user() + userId = u.id + sentry(() => sentryEnabled, userId) +} +init() const killInternalProcess = () => { if (internalProcess) { diff --git a/src/middlewares/db.js b/src/middlewares/db.js index d6b92b5f..5c0d13c6 100644 --- a/src/middlewares/db.js +++ b/src/middlewares/db.js @@ -1,3 +1,5 @@ +// @flow + /* eslint-disable consistent-return */ import db from 'helpers/db' @@ -9,27 +11,27 @@ import CounterValues from 'helpers/countervalues' let DB_MIDDLEWARE_ENABLED = true // ability to temporary disable the db middleware from outside -export const disable = (ms = 1000) => { +export const disable = (ms: number = 1000) => { DB_MIDDLEWARE_ENABLED = false setTimeout(() => (DB_MIDDLEWARE_ENABLED = true), ms) } -export default store => next => action => { +export default (store: any) => (next: any) => (action: any) => { if (DB_MIDDLEWARE_ENABLED && action.type.startsWith('DB:')) { const [, type] = action.type.split(':') store.dispatch({ type, payload: action.payload }) const state = store.getState() - db.set('accounts', accountsSelector(state)) + db.setKey('app', 'accounts', accountsSelector(state)) // ^ TODO ultimately we'll do same for accounts to drop DB: pattern } else { const oldState = store.getState() const res = next(action) const newState = store.getState() if (oldState.countervalues !== newState.countervalues) { - db.set('countervalues', CounterValues.exportSelector(newState)) + db.setKey('app', 'countervalues', CounterValues.exportSelector(newState)) } if (areSettingsLoaded(newState) && oldState.settings !== newState.settings) { - db.set('settings', settingsExportSelector(newState)) + db.setKey('app', 'settings', settingsExportSelector(newState)) } return res } diff --git a/src/migrations/index.js b/src/migrations/index.js index cba381f7..350221c5 100644 --- a/src/migrations/index.js +++ b/src/migrations/index.js @@ -3,42 +3,19 @@ import logger from 'logger' import db from 'helpers/db' import { delay } from 'helpers/promise' -import type { Migration } from './types' -export const migrations: Migration[] = [ - /* - // TODO release when libcore will fix the issue (ensure it does everyting that is needed) - { - doc: 'libcore fixed an important bug on BCH that needs a cache clear', - run: async () => { - // Clear out accounts operations because will need a full refresh - const accounts: mixed = db.get('accounts') - if (accounts && Array.isArray(accounts)) { - for (const acc of accounts) { - if (acc && typeof acc === 'object') { - acc.operations = [] - acc.pendingOperations = [] - } - } - db.set('accounts', accounts) - } - - db.cleanCache() - // await delay(500) - }, - }, - */ -] +import migrations from './migrations' // Logic to run all the migrations based on what was not yet run: export const runMigrations = async (): Promise => { - const current = db.get('migrations') + const current = await db.getNamespace('migrations') + let { nonce } = current || { nonce: migrations.length } const outdated = migrations.length - nonce if (!outdated) { if (!current) { - db.set('migrations', { nonce }) + await db.setNamespace('migrations', { nonce }) } return } @@ -54,6 +31,6 @@ export const runMigrations = async (): Promise => { } logger.log(`${outdated} migration(s) performed.`) } finally { - db.set('migrations', { nonce }) + await db.setNamespace('migrations', { nonce }) } } diff --git a/src/migrations/migrations.js b/src/migrations/migrations.js new file mode 100644 index 00000000..ed7fc04d --- /dev/null +++ b/src/migrations/migrations.js @@ -0,0 +1,53 @@ +// @flow + +import fs from 'fs' +import path from 'path' + +import { promisify } from 'helpers/promise' +import db from 'helpers/db' + +import type { Migration } from './types' + +const fsReadfile = promisify(fs.readFile) +const fsUnlink = promisify(fs.unlink) + +const migrations: Migration[] = [ + { + doc: 'merging multiple db files into one app file', + run: async () => { + const dbPath = db.getDBPath() + const legacyKeys = ['accounts', 'countervalues', 'settings', 'user'] + const [accounts, countervalues, settings, user] = await Promise.all( + legacyKeys.map(key => getLegacyData(path.join(dbPath, `${key}.json`))), + ) + const appData = { user, settings, accounts, countervalues } + await db.setNamespace('app', appData) + const hasPassword = await db.getKey('app', 'settings.password.isEnabled', false) + await db.setKey('app', 'settings.hasPassword', hasPassword) + await db.setKey('app', 'settings.password', undefined) + const windowParams = await db.getKey('app', 'settings.window') + await db.setKey('app', 'settings.window', undefined) + await db.setNamespace('windowParams', windowParams) + await Promise.all(legacyKeys.map(key => fsUnlink(path.join(dbPath, `${key}.json`)))) + }, + }, +] + +async function getLegacyData(filePath) { + let finalData + const fileContent = await fsReadfile(filePath, 'utf-8') + try { + const { data } = JSON.parse(fileContent) + finalData = data + } catch (err) { + // we assume we are in that case because file is encrypted + if (err instanceof SyntaxError) { + const buf = await fsReadfile(filePath) + return buf.toString('base64') + } + throw err + } + return finalData +} + +export default migrations diff --git a/src/migrations/migrations.spec.js b/src/migrations/migrations.spec.js new file mode 100644 index 00000000..5898cab8 --- /dev/null +++ b/src/migrations/migrations.spec.js @@ -0,0 +1,96 @@ +import fs from 'fs' +import os from 'os' +import path from 'path' +import { spawn } from 'child_process' +import rimrafModule from 'rimraf' +import { BigNumber } from 'bignumber.js' + +import { promisify } from 'helpers/promise' +import { runMigrations } from 'migrations' +import { decodeAccountsModel, encodeAccountsModel } from 'reducers/accounts' +import db from 'helpers/db' + +const rimraf = promisify(rimrafModule) +const fsReaddir = promisify(fs.readdir) + +const tmpDir = os.tmpdir() + +const accountsTransform = { + get: decodeAccountsModel, + set: encodeAccountsModel, +} + +describe('migration 1', () => { + describe('without encryption', () => { + test('merging db files', async () => { + const dir = await extractMock('userdata_v1.0.5_mock-01') + let files + db.init(dir) + files = await fsReaddir(dir) + expect(files).toEqual([ + 'accounts.json', + 'countervalues.json', + 'migrations.json', + 'settings.json', + 'user.json', + ]) + await runMigrations() + files = await fsReaddir(dir) + expect(files).toEqual(['app.json', 'migrations.json', 'windowParams.json']) + db.init(dir) + db.registerTransform('app', 'accounts', accountsTransform) + const accounts = await db.getKey('app', 'accounts') + expect(accounts.length).toBe(3) + expect(accounts[0].balance).toBeInstanceOf(BigNumber) + const windowParams = await db.getNamespace('windowParams') + expect(windowParams).toEqual({ + MainWindow: { + positions: { x: 37, y: 37 }, + dimensions: { width: 1526, height: 826 }, + }, + }) + }) + }) + + describe('with encryption', () => { + test('merging db files', async () => { + const dir = await extractMock('userdata_v1.0.5_mock-02-encrypted-accounts') + db.init(dir) + db.registerTransform('app', 'accounts', accountsTransform) + await runMigrations() + await db.setEncryptionKey('app', 'accounts', 'passw0rd') + const files = await fsReaddir(dir) + expect(files).toEqual(['app.json', 'migrations.json', 'windowParams.json']) + const accounts = await db.getKey('app', 'accounts') + expect(accounts.length).toBe(6) + expect(accounts[0].balance).toBeInstanceOf(BigNumber) + }) + + test('migrate password setting', async () => { + const dir = await extractMock('userdata_v1.0.5_mock-02-encrypted-accounts') + db.init(dir) + db.registerTransform('app', 'accounts', accountsTransform) + await runMigrations() + const legacyPasswordSettings = await db.getKey('app', 'settings.password') + expect(legacyPasswordSettings).toBeUndefined() + const hasPassword = await db.getKey('app', 'settings.hasPassword') + expect(hasPassword).toBe(true) + }) + }) +}) + +async function extractMock(mockName) { + const destDirectory = path.resolve(tmpDir, mockName) + const zipFilePath = path.resolve(__dirname, 'mocks', `${mockName}.zip`) + await rimraf(destDirectory) + await extractZip(zipFilePath, destDirectory) + return destDirectory +} + +function extractZip(zipFilePath, destDirectory) { + return new Promise((resolve, reject) => { + const childProcess = spawn('unzip', [zipFilePath, '-d', destDirectory]) + childProcess.on('close', resolve) + childProcess.on('error', reject) + }) +} diff --git a/src/migrations/mocks/userdata_v1.0.5_mock-01.zip b/src/migrations/mocks/userdata_v1.0.5_mock-01.zip new file mode 100644 index 0000000000000000000000000000000000000000..c04b3b2560961adbacd53df744b34f80291ca931 GIT binary patch literal 5867 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 Geftm7dZMKO literal 0 HcmV?d00001 diff --git a/src/migrations/mocks/userdata_v1.0.5_mock-02-encrypted-accounts.zip b/src/migrations/mocks/userdata_v1.0.5_mock-02-encrypted-accounts.zip new file mode 100644 index 0000000000000000000000000000000000000000..fd5e0532d027ae7a5d668dd2fe82ba470f53e5dc GIT binary patch literal 197160 zcmV(uK=75e^^_ie^^^}cnbgl1n2_*00ig*0000Lfa-rfeIC5F-M1j0tKM3a_{8r#v zO)t}()Z6?&kQFyOJxSm_J3?T~%9E@F7W!nn_XS}uJ)Bwmcvx78N1_&0HO4QwPi=TC zc+&Lkk>YVOb#*`ya1y4sk+?R>8SXDzbh`ur8K4}_!B+otq=Ir>?l@VS!Q4ShB>b7lW}3d_dBP= zMyY&O6PQ;3@G*e<%|yjiv+6D$+~R2Ah-ASopv&v4CwrmYw=1jf?|FSEhEY@S&Pl!7=7?m2wr$cAm zI^aome3qzg8H3$J{6!lf_atwn1Ys^8{?!sWmP6RGfjUGPC_t2tt+S*VAo5EZ>0gtx7V3%=5X0JIV``cHco!R=+t7M1Sw$0E2- zFBUoDj!ub6vO-R++Ens4hMQZwfr4x^rtf7zhuzgZT+K2i7Q>^;$r~w_c88}PX9mD! z76I*)?%1=@ziAOlIxUIgdhjvJVm~kysS8Jg_1KS4Anv1+ly*i~`ny8nAm)gWpsT!d z7{hz4TEWk&^#H7uSW$}nvctguzxj&D^NErCf?YJIe=^+d!S5ub?eRrmm@EM zL<}vPEXM;7l7{|H1yCv)i{gkxy$S}fStcuyvsV+7DGCi|bP(}i{N(!^r$iq7hx2X# zN@Lyp}FCl($QihJEF!o)rZ3AHVY3G({Y^n#`G>7+67l@!>buIx1 z4HC?xUjm{V0k>pOYmPFE$LWrj3NrI{8(dOxiU~_tHVIt?2#Mauc^sfy5x)R?&kfe2 zNMAE4Z3y&%zY(19l&eEjJ%X>K_>M*0y)bUr$* zRoL+!J6c18o{jCCKWhiURs<-zN{$=m9 zc=O;jSI-a5Q@L(dMh-|yu#HaO-cA{Bsob+lpf{wd0Q%1QqVj4L#D#ZqMDOM8I@?SQ zC9;(8ULtI9oPra4s>6(ya5Hn3CI%KrhsFM{m8=%VXm>tliUbKZ@8CN(z6`uV3Mv?6 zZz*ox2)`rlg}?JKfqFyTn}+&BQQ%9*s^gKu_e7;5_bY^lxVx5MJ*)$-YC!D4Xg`5I zm|We3UF#PWoGvuB^f?;|!R=GTvqMZM``(jQpjpgx{KQGXS8|I4En<)ZUY-tz(eY9L zb#x6@wFvZ(WEx+y814wFyMels5npf6y)g04l5tcOxJh#koLEC)``4+hLG(V;5Xd*D z!4Fu@JK1!08!lfdmWj7YjgaFeJ|SD>NhZr*f?M$clVFNrH30Z6WdqKk#!vGHW<%rb zdQhN*1dD#&Veh{r`LHW2>W*>=$hF@t-7%~NS%PhBpT#|SKtp3mFt0m9ii6v-T;d*| zs%B48cBi(;=Z$X5wKKR_H+mYmB)+|w0C(Cdo2BDc6BNAZ(Ct#)zZsGm6MoUNDwMWW zFT^@g^``XX;x1u_IINU#b;SKOC07)7VOoESNcmvZUwax?=AGG7)nc3kS7h{UZB_0r z1$Wd5bz-9pxqqm0Hn~LriF9WG8%Fj>!bY2~>6lIa44y@}6$|ewTDWo8pHmZcsG<%r zMb3w$5h*Lc86AnE$EJ$#wW`yk;H9JTo$G+&)v=G@=c2d)86j}eeNeyDu*Kc^s-~<< z$s&eD?|*(vi)3C>K%38d!mA!#QjBfstS)Wzd1AeET0s6h4iKQK*32GbIBp7JUF-jG zg++j-F1ZUk?j|THvDtrD`k{+EY71xuqU1_|eJ$Bp>5d1P%XD90nB1hU&McwejJAor z4^ldHgH@Wgo=h&E*nOmJ{0Jr#dUc#$a$TzN!PQ9S*~-NF72|!lA#Rs`S&q$aB4ZBc zG)HICwvCX?D2C+jel1A=0-7!l1cdPwi<4llSN%Fd+>cz57hh(qpz8=DZPh;7D_@iF zT8nK9a}fV4CyI8$>i9q}V|M6Iaj+@{`L^MdPbZV;lBkc5BP(5f%?Hk z986pl$lJ>O)EH{8rwwv-BF!`n$~RLD)&>(LtkyTHTRF6Dr4#(@Vc#q-DbuNzJ5QYn z{6n7eWgLpmsNoje^P?FP?izL0zy*gA*JR?Wi7u9Qg`V6uLE!9 zlbmnO<%7~f|H{K4+5TWn-+nn268x;nHgbY$%m)q`sAqsnN%NP=C9PqSFKeix28o=P zg5%|)PsN^nZW=!ZpqFuj5-d{JI?^W_`wC%=iq;}n z7(EM(&2t^F*7xu}P-lJ%4Hw`2;EvXjSyr|rp2tkAg^4XYb!{WoG2Y3`Dm;BZ%x~~J zuLuWSJ1v+T{L~&*r#hX$I*nm78u0+R5@zUVfUHmOQ>QN;xZfY1i)c*N+z|YD#02|q zi*RSnI74ukl{@8Zme;t*P^)z*J9{iDHG-pFVlty^)>KRf*z-As%-3$Hg_jw&4tZeb z%rZxFiKJSwk-1H)W;+;=7nW&bM0Gn+v6K%V4(zc#*0X#Hl+GG2M)o*?Dh}(?96y-8 zoVlAF8Y4`7WJ6kQKv>m}TN_#Jr3OKF`x$G!>hhA1YwY4-fGJ?s@V)@iR7Qv;>hq)m z0SP>6)+aY~Ad{~qShf`4l-XtKgW`<9P$I5Qi~r73TS9)PrZf>)HUn60N&AG)tkVqi z)c)cK9b`XFVfYFs(%+g_jLxvHTxJKPBt1`R(=*R}5bL)5AS!*ouBqh|WLa~gH)h<$ zd>pT7msJe!=KiO8n)7aQn6~<^J~_^TM-N&t#$g@FZ|_Q}9ED3vy6!5t&lUVUDsLR9 z!9>(kQ*TYJJR$qdkPNS@OH=E?4DSwyYxh|-wZ^x=BkrChgiw0M-z{BYgm)`uNu~>j z!fl@^qT6V=n9eNMcKC+;MCLg$o^UkivYu*>F#8+y;-Hlx=xD4jj^!Uv#p!;_(jiNz zesvin8e(-4pz3UUx8R9TxAgsnP&3sY9u1yD=ZbTU#9h97ven_oI2uB^nKA^Qj3QsO zZjnr&W?V3b7hI4d%%FI?HsMa&ur{*>>wK!`p3Y3$RnjiY%yCBZ64Ch_mO9K0bsc6I zGKaL7Ib`p}@kj>^^2Ho=>?Tvka_QU91t+c?M=Ac)I4&75+}AESo-Exx zxnofmu+gcxE|82lh5s?WkrVN4NNgUyh_jwO%p=fLbGAziQ2|*)jo}_B6qIDGC=>~I zaZ(n~knw03!tlh_*cnZWotdZA?(6ahlNyWD7Gp*Q`H)mYQ$g&68*nhjexRvCs=`F%SxI%K1TbO&Kg!gmmg*!G2%!}bE1}KcBy`{x@Yr3k2qD$J7;$2{Q~;(vQ=Z@(@id(2YRbnSj!~@f zSqsVWI758WQ)^qcrr<)*U7)8M&2|_UVGW|2g)mDliyG-l(rkOY0U$OmryoT_@d0#K z<~?p>FY=hpmG+XEx5aC8e4K(vJ|R55ZgAu-giWvfjg9(V+db!5nIDj|+$D{3{C`of zPsOgfFb%7ao_k5Zz)7(WjN8wz?3$elegDl(r39(d+V|>L3qm@^We>LiiLwfW9U({6 zfr@RA%DXu!VNN?-RD&kQc^(nkZep)HR0#@~>w-y}0zZ<9d#4YjPi0Yy3~yu&|3puWSb32R`Wx5RTQ0yc+9>*QCl>eHpe==|Ob5&?Z zliCwm{*RW<27*v31+bf2{C_r&v;yzaemHlgSfkdfNsMTHJ0XjpRPlI*WR>hah_@W- zuGb7z#oz0J$Z%a_N5|7(IvzZw$!vbQUMiUxmawo`maE8cgMegz~^Mdpd>HX zsqCZ=NM|t?UKm+a2|E;|GR1A+|+Gf2A7ZKNYhsWyWw?-mDyDU6M zX|P6rXk&q}^lr3ym(nBXS~x)wnnAUi)Knc{!jQ1HCq5{X@ug{RkiVc`YvpBH$ka_K zsQND#0t=8hsdlJL!zyu`6X819$koCm!Tp$aKop4V5XVC-PMlzcao`9`AkuuAZ$od{ zq|3e#JSWmDx%HLyhvuIF%?)!bpIjb8y)aD1o-#YOwh+1_2yV(|ZC0=XYq(&{@;M7K z*(>B2K7yB6`xGP9&-M|^Q?p>m2jB_v$NwD>OAQK#yAsln>z8bc0*OPl-~|#*Qo@xO zl@csY1E0E*G#tDKB4@bx~n%;_P@d$!jGH_L!#glbmuOh zU*|(J6OmtvDZp{0+ur-rDUhQB3=z-g#58GVxr z*Piie=gyd-+$A*yw%gVqLaovE#~8?j4MqF=WB}0SW$9bFDIa*G=87ZPNPE2Vk}2kEIM@NPs->TMp9%z54Awg|se#ZhAf#643`7GCbscnh zNpN&7Xd~&HTHo9JoSl}_co!nCrrvt_v;;y7B%H(VOntv9FYLxr+SNKH#q^~ffvJQcybpe zyc|RlIXdSgK^!ACij#{0Y7rAOev8w>@G9p2@+5`LVFCm`-ClaY?SQ*_;J#O=O3@q2 z5gGcZGBd!xjnT}MDCx&S^n~{NjcNKE6|E^Yj-ezUSfp}s3$wX-L0TZDiv(iK;Y@z5R>?(*-J#g9=4@!{6`MO zR)E}^vnH$N2~aAlt0$lw8=`N%8VR%Ke15D}0{Dx;Fh|(G!1!$GvOR=@_rE zx?A6J6O8{{!m&)4jO5W}>Q2a|x2Ux28mm$pcqRLhcG0S`N?y3lXw*eAay-@wC)`ob z@qj_Au=0g{7a?Kzq(VTVa(7HfaWaWAi~u4pY*uXY#EfzbuvPWyX13D#dCuVq@tXI) zIp7=G&iS4PixRmI`oA;xBDi^8FANfnOWZEcZly<}tj^1y1q0H~p0z_EWol*^irP zOI0Za<65s@7Tjw>NrN<@c$TDK(1^BHaQ=_Mfjj`_7L`*|f=}y0(<~a3H1r^&a9Cx4 zR*H)-6At#t=A6MU#-yglAVRXA9bFb*hQ7t5CXE2QvEij|N%%c78}|~?UX@T+%J6xT zwTNdyAz=u+c{%fAAVVU;`2@YY^}QQc_d47;h(qp8GW>I*jc$tj4<%$@`Wiw+Zv!;$ z-cc)_KicH=GQJ1M-t6uGAHr?cQO0he;=~3bE&mk+&SsRKIPY~XmYIu^$MFC$iHJ}I z$H{P<_Xhk0@uZR#_mgpATnl-v8IVNsQPhNX7V`iog!VpMd8%Te)7S^EsE$VwF-(V) zSW+0;r_L>Ia_zV>yBB>5eeC%)=?($o8F!-Vf!mq)vF?JbpP1v8Tio>`Mx?P$r(A|> zXMx25W;po5S27uq#cI_wDWKQe&P1Pi8KL=gYzv_FyCWDf=ihn}j=7UqDjV zDIrQ9h4B*b87jEj@FzT}Gmr`Q6l(O1o8#1L=v3SHt6aU3LUX~>O;v!dr(?OT189U^ zbW3@rSAJP{oGk;94OB-TN6hJR5uYa^30D5D5_5M@99Fzz>km70#&t2zzbiwz_I1My zR-5I%#Z~!t4KU%7$AxFa!@h&iz7|oIqa3*D;cAmSS;Dt8T)8G7pGPh-UutM}&Eccq z^7G8ZXCg&-3_8F`MeNbim;(FzmW%1LzR|ls`0iY$@+29E-Fb+G z<6k(L*I`b`0aVYXRGT<+9Iqp|mVnBQ>3Z?(F$(cROkR*Xc{OWUf$tfqM1mea zD0k!5(cwFYq6(r()WKPp1E7cNsH~kSCa&9NkTW&sX1QN}qriwW0OFv_#G%hw30AVB z9zR*irfsd|-*dQsuJD$$S4`eErZ1X(KwmW~-~EYTl%5U^#zJtr@tDxI4KhDlR=jI? zu{+z)y5P4^H9HAzEV>Q6o=vlR6gg#Io@UQCOJ0!#tnP4Nr%h(CcpLGk4MZ6o8-Ob= z1=g%OP$V+o3_ec`kn5nlV6eK7 zYM>hn9i$6kmu9Wh#6Ft*sZMf^cLfW_H3h+Ir6z z^Gtfdr|x_@8jSHn;6;;1BVQ(c;d$|lAd6haG%Gg0AD(k{VxDb>iCAqm$K#n^O3P|m zs0QVYI4Mgo20Mx^uUj!pJWW_->BoU98ZQ=29yo8fJp>klPa?*rk$9<9 z1dfSbkR`aH#1HjpK}H7Xw4hK#SA%_TIi_TX zfyC{6@K;IP^EujSsDzK1?rHqD@In2xOeD3^Q-YQ1?7_jeCDYkLH;YKf2Ls>Cz;X@N1i**E|lyilk3w}Zk z8*OxiJY({7*jjB=df7A@;gOJ%qPZBQPhxE>+MZKW%>Bt{Xk#xD_u(m=9iX?;KoGly zg;jwf`gvwncvi<+=)7xjp^RF0*cAH|kRW=yS)O zgK2qZ|NEP_@;5oSWT8M%3fLpt;-4aZN-vm<3=rJsw+k>A6Xtm85K}HPXca@ z3)a)xARI?#ZOC$O-WvhJ^Bhn-062`i5i~*CqYRevyko0bz>Be(Y{)l70HMjDf3qmn z1grtVyo~lIS>m2BIY_famFn%=4YwEIn`Q)t^`jd(pB)~@z)E`Eo5>=S%>r!))F@3a zEj+{%G?0=pF;|i|r@Yrm_nH7Vz+_M-S*PnclZi2jjy`0WOA7TaUNTC_ZpS18gPfP| zv#0_VYEwL$xalVXuh0L24w&WTDiRx}CSo>xF`KicIPT^Y3+h3XrfRq&vI~~YA{tA4 zw0*GC6e0%aYti3v^akOzsei1pc_Cc#TReZm1mh(J+%Ds3$wGdEGhYHP zU2thakvOK576_Y^20$vAT-{yTP+s_%(PcN^&Ta^UdAm2$*#7Xc?Ie!jE~tYg7ZZcN zY&+;tgbm&OThPwS0Ir+cyHl7eJ8>R&9ys6_K_e$rCgus@fndASRc}G*!ao-WadkA; zrMRpj+r$=+k=6=_8yJu13bdc_3Ict{pg;Gg(baV(Z7;pIytY2|?&8 zn~LU8T?PMq91J26U{IE^^MZn94h6Y764Yd$rDY~CvT{yEV${Lm1$P{?w?4Tzfv1+8 z2G(+Nrff>Gh)5$7@hTMIOK`K1|ID0*;vyLv<&+PFpc&IMZU*z1W#zN- zH@X%%)hyIH2)i76?H-(QM9BGo{Sb_|iqWi9GAhgPl0OLFH*t#~9TnxU5D zY=HTJJ-Es6jdJ&SO=ng2GPfHJcZ67nE|q{NL^`t>n&%<2tCgx(qS38!u#w&| zsUih(L>r>~)UP(C^hQQnG0wzzK&Ass-oX(`w4*Jx`e1Igp0o0zq#Ft@uP==ud~Pg^ z|1SZ2jTiiTkiwu_NcUC9fKORVyowMV8fVN={G0olWg+2u5LGvX_M@Cr*(Ct6&ZWeZ z@7?TQDg*CR`|xE*YYX7frleZ!Q{8cj{b>SGd6vfHws)_l?%;tkGC_hRQe(jV(Aq>- zz!cpnC^RVTM9&z*QM?#gVSP4uWHv$XOtbJ?{T1M}f`Hks7 zN80qtgHwbua)4)=t?TH}xkNNN!dM9!uCDr;a6Hq9bJsY*=|zj8PMp=ECyG8nr}slr zq7OLNyIhcClb(qAL?*`oE^TdyRb+qA^1gxt-Kcc&v$*aT!XFP!5_ktZYIK^;TQsFFf3}2u) zEAQR>E0O+_^8a$FK3SNTDU?5aYdQS0iAPrZJL$tkZ;D@@U>SobIwG<1?giy}&ljjB z2$o1TfwE!CSn& zpSpo^AS|U3_dlM!(O126HA1&c2(y3wu?=S0jxQQH6Va~IvR=ornODq`pP-P5a_e!eWOanFNcwc|*Ps8y#@hj(*TyChC_WkzA&b_uT2#jQs2No4sdgMN$K@o# z{2T}=oF4rW|FQe=u~QoZiS$HPV;*fRfjHsJ9XigF89Lc%NmAV8`G*iF4GD0i0O(}v_teFFRq(mR_#asjk6#PQl37k_>19gbYp^b#Nj)?FrQ#`7E_*ZKp_5B2LT!` z8-$$drPx9pxF{yU|AGvL(PbJqNIJY6{y-9jXjZSUA_*Nr0o95EWRT#DldI8+7yYY- zggSRpg~*1`VB^@-GVKuvV^@Z$ChiIS6K2CqgsyBm{yqEm5(Qw0k;QqR68(iy@M3h` z2Tpg*vhN&4RbzN?%Pu|yq>S2Gs|@W%U=eZ>AN+q47+iSvn0iRwRz_709ot_ulA43K zl*3;xl2b8hO@9{9;L?5t@>GP-;QmToeYeZokNgkgZxn;s6=mxch z>?2<-k1J)UgI%bV^!Ivz1kAF{6#de<#ihyZ8WZpDC)+znh%Ju;z37VtbNG=G9bS7M zJm{tb06y44QH|>P4RQ3@gyWA1;NVA{m=bG>CPT{7&NSFcPP*2qp?y&;zp>{B`)| z!fvv#yL0(|8ooo6D#b(MqNKtyLxX%EcD(H8sE%ue2zn!-@hBW2)FZv8qp$*B87s5C zm?j)dLu}pcO6GnIaU!V+A^zV)DW#M~f1jl7aEKjmoCylLwECF<@4q7*f`ye@@LEuG z>vTjat~EXZ4hAbYp)33w@B94~89i+dImrN>ALHmiyPdU#SuxFq!t-mlaUO(yRj8|8 zM(e+SOn7B~$GvH*Y!lo^Ba(S)?RhI8+9Qxw$|zH#-c@D|a#GHL?;#H}s~<6xH3vZt z9PyJLnTBU8ZUl+1_b#gS^9yM`fP{mbIZdToES#(hqor99X)I}FQ7(h6`}O;;YEU$* z7(u5AuJW?-&Yye~l!}oTfTBbFw7C8974$uIt`R=N|7}NE+P>)yjxmR3xNP$m|6ZKM z3|YrDv1eGe?NExP@$%T@co05ZE*V;jg&%j|;EaWOnJmjfy`a<< zczj(c~}SpDPk8$edSH*lY%;Eww8%Ry9N(+GkKOlnijrI;N!35OSpVlzJk_E{LGsNVXR~?@ z@5he=^`^N%_LZNe@a)6cgvrs>xqlK7O9O-Z_+RHxj(S;~0V#dOa5%o%o7dxslq*anK!BFOh^8q`Kz^W zSi$%X(?Nc#qdZh;xT<3eJ|`J~kVL1`YbYs*v(Y(0hHaVFN37#C@^z`(h8%(xxtdQB zgEH=iMvL5d-i3j-Oax8SI{cSdNUaV~a(7bDT<2)S3$j*vl3L7)0&llTnEwJ>3CmET z!o9wH&~hmz;D`Pl9X#DU{PE654V_0v^EiFhA#;jTMizXvV};AS7|5t{r~XA;?ID}) zb@isS{&c&W?jO2vn)+?xD~}G*lD5IYYUg1-gQo$6<>*tq={#UY>6?lY?-aM-@kJa$pYf4!w{=()O9P_4+*UXQ=@c>a}Z?pW8 z!os3ii9x?FJCQCdR!?3@dDYFD{9Y)7UyUmH%O-s*Rm=x7+&*(wC)B{-)4fuzr1yUF zU#E1*rp~G+AB-}vT0!ulO^U{9LQ@yCz)=>`VpZGFt$)pphE5o}Ay0t;?}0_R`uN2M z62sS&c#Lzdc`(pck$r{TD zTlNC`hMY~ffgil-pX2zoUl{RG-IS0Wkl9YHlU^$x7^6W`KcaYkPMi>5*^{3bG_a{K zZ+nn1TE2DNji(~=d9P5tCpC~-UTGiR+ncU2EzYw`=x!e~cZ)Pxgb?VK*%d263UbC9 zllwlJnl*N~uR+>hF+n*>UBxaJm>H!~Fo2Y|&c5RG{Crl{tgrYW)^oX4hv;48*p?)< zlnoOIEkU^ACZii#;z^$iAgu)>1B(9+(liS2qAIMJz+tQNHeUKVcIUeGW1jOtJ4B|S zhbHbc{3OC0^2DT@D1%Ss>Dh{JQU(#jpiGX<=wf(?#?hGkr60fk`szw8FrYv0_P*Ri z%G3p)h9r=w$4&=pgZAvrUl=4s*Glz}u(~?J*SKVrPdt3^GfT0!r z9lHVxU4mIKXF<0f3LqUyvjx}ulDkB><&BOr5uK>dh|Hhg5;6`*3f8$&&&5z!RI@+6 z8W5mL%F~50_%1hFhaTy9sseD?n;@Ne-8>QFzn7%8yy=?dSX>+s{DNgP5E~u+kl7&I zuDO(br9N!wq);(6MYbc13Df}dX#9{Ez7x^XnGhfK!fSvaCM#It-QFhjSI?_t##q6R zF{3zy=W{V-9m>v$D;<2MTgF8k#!EB(%o98nOpw6nkqxuA`sQo)-D8iB!yd}woE zIaK8gd#zcVtIL3b{ZNyWs&1u9#mKDk9ecdw)@e5ylrF$sq)+DrvH(={VsgC6iTN(U zNi$LCRXg7aIUL$eGMtl`wA~_QiiwB2RZaZ48(X>XOkul-YoXj^gdUretS21un;?28 zO=oPJwVRHP5wlrwB9E%00Va zK=A}f7KuKi^Tn}$o)Qnr=8Fn4-nl6jL?(_GO2;iktY)l)g%u8|W0CLEpQkg3mK8q+arekw3)(Sn!4su+o?TNs4#D&y4uOEv7kBNckHafh3M$ zwMsi2jGFgBY`rY2p8`0eUG}gk#`A1_-DCa-`G_r6@gx=*;BO6sCRIx+P`{!~iXp%v zQitkP?}@7(?Ykp*w4qHoxQn7DvkNPWKup>s)XFb55H}#zcz#KvSYKD#=TlK|Smn`W zJG)01F7?Ei=jJqx_k{=wk%jF3yXMN`+Q*N$n!IoZ${hkE6Kkh6j9)*xDWJS^=cw0k?W+ z(y)?>&}{l7UZ=3-)Kfe6#i?TI7s^Qv%y~JR@)NOfRoX?}Ya`Efc*gmEBmK9^*IRjZ z5?AG?J#BhkiH^@ZMP=7(@;4TOo|rV;h;nBafH}T`L0SiH zI8Lv`dYk^L_06|tcv!-p`P9Pku33e#M896j-}WnDTQ*!$1g~nl%bJB?y@iue0xAI6 zYhcI=LAW7{cK9k{g?ZTc2d%)};j5wI!TrejBrq4#mE z3oBMYXZ+oDiKwZ&yhgMP%Ze^-#rh1lyLsogK}eeA-iU)mE<`&Eo@Elf;Sy#45<7bv zhbA_z+LnmwL@x=s#NU#04Xo4CVR>(6`_PWq^5g4p$3ygE=XD8aJY^E~2`NE~-tFsV zIy#4O`_mg~@bN1WutJLbdl}f3*Hx0Gj z!>4!#dYjFjsyaaoCY6(vqb2t_E;Pnto^QwU3O4$(wx&|b%_G#qa+h!twd8759bt?w}(R^BtQba~;-&`{|kU@iks|4XKI&CBR zuXb=}pQX+JrGbHLQ_hl=yp#ZrP@Z=z2+fDc6oG z+@YVAOcv5p$PbMsqMwy1U{IakxU^^LB>HudJy-b`>9+IRYJ>gtKF?S=NuQmII3!d<{yq!a7qh-KjMh{yx zA}Vc8SjoA^Kn?mlQ6#iF~DLou(4!&Fhyy z_2syeN5mxc39fK_DdB<%l~?S5AGvZMo<5mk&++Z>PPL%&0Jo_)96VSrD1xXuBqD`} zP}mDZr+2u?W_p63=GCU!qCW4sjO*;Ig+czU@j)V}QsRgYKIiQKfW#hglifB6yd zQ1f74(WRBo14`S!`^_9TR>u}yogKo~AR@~$fn&D5sD_BzZ!t>OY4n3u#uUWik&HD> zX*rL~&2Rs%kJTPTt5~u+4l(m{Tpe{uWPRdv>jwS=Mn7Z17R$gh;bgh8I;ZkgO!#C* z!>py9CD|Io!)S^-JQ*XPXmK+XlXEW~_oB;a^^H*4HJ9IkY2If%L)7V-oalIxq;gcy z3>#Bvj_6wm4!uDB1z{2+SmEY_rJ~jdQ zNv{`!2*&KLHvJ|&+T9|?=5 zl(?ItB41rPxv5|&&G=%sYdG3@o&fii*%5!T_g5kD!}e!A;Hw`m66Jt0(eUr&n(u^iKwXYoX%nsPUijW(io!2JjIH{+s9p%Pp7 z;Ps_hgR$A<#Wd@$)do<82=tJ3bnvx6pk4PV&tmf^A%}#PNNWKU<%0fZzxHdVm#O446*npGl_bEMiR%JG;(7+idh9NBfBCslL;F5GW_hV?t zJ)P-@v6t!sT#*XUJ;F6mLwFDPn)U641t6l-U|xa7C4F7WoQ&eRATEUk5&eL`H%SJ(3amXq>#M7Rdj(h-Ik23xM%1vO+?l+^=J^_87aCfo~fmDdN4h-u#yIkxGSW3PL~pPz|L%fQ-XXoP)k&SQO7Y{ zs?`cdiSW~Tv@3@gtGzx088Xw^tl~2h?3)|QHTKku!Eu1t8T6I2l) zj2`L+PIxc+uFneezi*o=usSS}d;=?4S?NfTquoo~$nnLqn-OYqQx@TQfXO#uI4vV0-$Lcf9(CLLb((?h07Ncedq=}12B6O<&K3ml-KMuMm2!<{(dC9#P{1r#5) zU!ep)fd9$Rnh=Ytjw7YbrOHm2MmcL-QK=MJ9u)l?rLveHo(I2AAcU5VKb^_>K@C~jNK>S0q_dP z>bEP+T0JOZSvJktX75lC;iNau@an{+8RM~`{-A)}89VOeS;jnRXo3P-p2;J24eu0v z#I0b5*eV+M;YY%H0#R8KoH)l@l_z&je(tm1I=Wbs-KFgpM|#4|1Kauh{9H)Zv|}V7 z9_=D%+8TbRw6rr$)U$jPfbIhE(Ja$QQ=wW5~Rhxr=D_7O8&V79A!GeNCdsm^M`*F)zVx3?CLTM@ege{p3%K zj+g@UcFvaTi=;clIR(Z(G-|mEPP{0jn#vJlzaYDu%S>WxAr5;DV>Etn60*kBA7Q4; zj`;PsvNI5Vl7K77enTF?0M+2eMxUoH5c6!GBpR=<0X@}=G>Pwsf&_bnYB$=sM5#q% zUm>WuEwR@o%Ia4k1_G4GBBrrPpC}b@m)b4mr*z~bJKRX#nZAOe`$ZyU%$isk&+~Ce zNOEKe(UOd<`^1NDS>%sUO8$;p2R25d{(?U7n&qn!K@W3Rfuxa3g;zc*%C@%qmz$4X z=~pdVKUhJR+JJF1N%;z44I-%JE(kQJAq$g z_rCnvh1BPg_o&imjianfxmJ4S-b&M{+ssP`5?N?jSm|nlB$f*P$JoqhVn1Nu$7O}H z0Z>Et5VUe_;$n4$OWkm-H9oH^{k?%9UipvB#pfx%_W8PkyBC&io2Ltl&QhYEJZLY z=N>}&6SiR;eJFQMu8vM(&i`6$G63i&fM zcuEvHYFdQnP9S2KUNpG>>Oft>ET&xGKG^uffl8rQ4a}3Jp_bm0fC0KD2-ql?o7@d0 z!6x5P{a?;&oi4^K0Kx~|7+rAk`{E#(_hHDUmr2DNB-k;nz85$UxC>sWy+s#7q)Q0l zgmy~34e5X;pzBJ9pGqiEK4FOWj*1XQM%z3TnT26{Z^n-8lS4NPOgqNhg>S#qVT~31 z38b69U_YDb(Gdxs*xNQ!8f0|67eWX! z=;0Gd+z4eSMEd+;g}3{C$AxzTYql=ArrO$MDM4}W)Ak#2yyeh*if_294@;|U_G6kR zO9N9|b5)jLWgzr~$_gGuEu}DfHC-8%`3avi3laEigF=1g7d5Z8y`e?l?TemuvI95!<s zakB8uDmUy`6+CM{Bh$h34DkTDL357DW}r`KQ>TRnnJ$;6OWLE0k&Q9StTejk!b|#c zE+ETV64XHNVF6?UGFarAh~4wn=79s@A*0p;9&(SEUze z6#GRPH0fKAf#+17D!*TsD{+`!q?l89s#>2C=a{c*j$Rp zzgj>)Ao!iclud+*Oe*{PveyG!c;uMeBh3v%52u1x!2cuu6_iKzmpICRBeb6<9O}A1 z($nyatC9KG76H|G7+9eB+pAaOM!E*1zQ>om$}f`NRU2D9D`4w50+xp4Cjpk%f@Pj( zoSgD|nsFY-2^JNI>>u~qx@(+}7X#-vdpf0x&1w8j1;3$Yj9Os0bu{LPlMk7cu*(k1 z`y-nkHy2^?TS2_*g{G+pL!SEf7Usn9DlSt|(2p1i>7Ee|ZHMdMIx*@jV#~_1pdsHd zZ%BDA)^tTtJtZP4(Hyv}_ln9y6s|9XE49=I298Ws_a4s8-kk*3LhEOf{Jin1xEVM=6GlQN3wfItqIu5Qcc;K z{8{wH^j6agZ7{QOK&76@5r@2%CN({>w~4S!ma4P2DbNbs8&;!W7Q#c%5_V_)x_csIIV6eZ27|UC#gE$bPT(#1a(8Q^-DkE)NLhc`%_ql zyGblvN=FEDBBAUa&U7-+i*5oilZnhqDv;9JhngeE*Y_>>veW*~-^Gq7g4|73zj;Z- zWnN{?)ka9~do$_tj>G?2F6?pN?R6Zmpn-_uY)`K7_2ba4fm|q$W^9=R-37qrx=4ny zakvp#Z^(*%a8v9OQ61;p{o&seZlHn*I5wmhuS+GENt#()kAkYgfPT*Or`yx5GGMTo z{9SI=6tXWFOrs)hQ$N(|5yQF#nMc~;Gf|au49fINnXk*rw-J&=Gc3B34Y84h3{0Yr zN)aDbg!p1*=aYKS1d(hbR3{Md7dL|uIyO+Ox1sx^rv9(&;^qgK8pBI26$ce0u7Vxtj$n{gNNsG}}6Z=Y4v(=n%=epJL4guADEnM$lEv8U_%q>-MSAb985Cdin-!7$EvUo$w-5;N~Y9Fr150gzbx3nx1+k?6=|3 z&k7S*vI;U}CoivOCV&aAt1pDzDQVZsIT92hN^yQvBbgj7M2#g0)%wr3l77)qG+AlT zjU|57a7=7m9_8oB@R{E_Oj$f9r1S8kI87U0zE0l7XUrhfo24>MegK}ktQLEB?6&JF z-ZOY?Yz=ONd7y-k0C(pz)JlsJUNe~|J(;PqlX6=x4Y7@Uf1y*Ud_xRS=CopTR8rG3 z?|cMKc6Uay^uskLatn@Ifl$4sUU^*D3|__`qr*jq0V3QzM3(X6b|L@f zEKe&pjPst;CCWg3cr8!|h!{-e!TW|-yt0Xi#SVh@VLH_;v2%lK`Gl=MX|0BJ68%Uw zpd}CCwDeR7Ny!ZWBn#!mO_&e6ouWA>eWx-Qy$gA_xq!PLwEr%k{XrtQUsM(RF?8K~ zX`i%%(9N-H!&Sszfxxz$z&ZP?*Cz_CA*&lq>dK&B_#l%3)fS%KJKofthhRRYbCm0% zeMjPPylXF@Di4)UAZq(oSu~C=jSkV-K+lFAh7jgu5!S*34^}u+oO9XmY&#Tlg=f{O{c%Yu?oMagbjw?}nb!Dgu(=zSAPaZJGfGqDtRiPBm_ z_5F6+>AR*CF&M>?^aO`#ShaU%?*PZHxVQ%or%j|bjuKQevP18A9PIVW=vN)UYF7GH zi}>|ZsXpGy*2jQ<9&l0)vdGOJ1+C8uH&x2|#FF-=h*e7|{{2A8Wm=zxt5W>dn; zW(k|Up)c}AXH;7X7p&@H4>Rj$*bLV%OHx}VGjGrE%&hL;N^^XT(cIbb!1y7WVgfta zB2|d>*((!{#3!K&V)xGHE$g;$yv;0%|Lz8DgdTA4a1vkGn*Y+re!e;^kSEslsNwf~ zy`di#d6939ts&t;ld+`F?M|;3rOx-AXIQJqFb?-Vsb%UcLfYfp&qu}sjG67S;5XUs z%UqLe*dKDI$xh=SdtPm;_e7xmAl*FNot%WdiXvFhqI-cggcRN%z_|1G+A{PNqOk(f zBS6WHa+>gqtz5c_dG0(K$kq++q)e~U5W)+jkd(=NBO#0U4?lh}KxM$~(|g%WY&|5< zY6c_2lgq_624~SSd0%}sv#i*dd96Vf^1I(Mj5@b?+kSi3HX$3|tDKmMq-}=(gH26_ z+>+VsNi^*FFWCzZoZq<4D}KI^R*1uIWxAy?8-l*k=?J_jK6<*N7BPxZ?FB!f4V@R( zSshLXi*TpJwJlLv;B9zgFDMc*P4|eZPnzVEse?N;9<{O90=H%;0S>pFX^s>RLH0VLmzl^SgM{ z2AhGo+1yKZs8H}PJuHoie*8piE~TR&VAFJ+kK z4MqmJ;{l`{`dneoqJQwJbwm`f~J~j+z zC!f$XC46Sl_RU_7D*8IMnwEW@dKw$N)(+_nFA)H~L_CciHl38|;C;vdXykOXrP-Y~ zk-+JHCCJ(kfcoqbOuDJ4e2)h#&*UOCTxSuS$}2i7+r#hm-_=m1cDOk4`vC`dpz#YA|;zGWdJFNiq=Sb0k=P$AB{7ILFRNvt*;_p`sYvyJboBh*5*OX9dQ z=ru06Kyw;o)+q#w!0r1FsEAA376!ah{xhFM+4Q?o>sHTY^7EH%^1;t=etez`F-k(N5w7{mZ#+ zp<$ps#aencS^*|d=N;E4dmph(38wCSEf6AN~i;mGIG=7~2SU(s2DV-slR6Cf>|*-dLH>J1e# zjxaUgja`5l-$we9gZIG+Np1TZZyYDXHzSO^*jzQ;s_(|M;?Kcm8!5l=b>O1FOmq0MwqjYo2;pR!kn=FkQ z+|I(FUrZ;4)!W{QkW>Wq(s*=xtLaVtq^fuLsIPFMgk_M>9u81Sh9-1TKK zHiEm!qJ3nO-z~l|N9Wiv&r7;L3os}3EJupaWHu>ZetpHrvaOMT#7KqoQzWr;!)&fR z`&l`c>Z6LaQwE=;dn+9+tjtZl5xD#(p!;nQU2cnAjG1z4lJBZzP zUvUznF%Og9nP4i7ATVZhz1FcMDu4OVE=&T%RuU*scCi^y{&NnkEQch*qi;3m${2lu?hUQC>{& zSz7LK82UOI-q2HxyS<{5LYb8d$gtQLVECfTD*rzAw;yJ{ogo-*J9%Od)t9tDHs`qB zA&Zg-AeQT(q7$<%icaYcoOoORO^|B;sej!M8v;oWC_Kqw*+^$ln6*O9%ni2%wC^jh zRk9rYl8G=~W^l0T*yLkCg6|3Ro|F96Uu?*Y(8H+k$RGqCD?M8X%F1P}-NP79QLb$D z9`DVaoH)IWeg0dsOhKzJo6Oba+X3~fQjb9@3l{_gFWA@r2ru&_ zrB>m+Lv*$Qo%jo&>0cj#d%m8RNq4d1EnbmtX_fzz#pxshFJopC&cE8Wl&)pWoLA^8 z<(6!Xfjbu2?--@2^V#Q7YUpQfnTgd4sRX#}GN&B?HQ(CA=fkawT%dxL!WEX}44SWj zg9s%5o?@x#C98&K#_PBfgUeT=x5WUh=fsDKTb$Bu59M(c*PiPEt$SkS&+&myU=WUF zbO>(p?3fEX7egS{jOoOP6a_8wXr6kH#Wqoil`cj~c}c;3?EVJLUz{MOwBmxK^EDE| zOD^(zH0D!z<(1M*$SS|Kz*Mo-k3btI5O28TcbYS*%_YK?eAx`j#!xx&!I}?QwcM8s zeiM%aPO}5m`qk-N{m6@!9wR?78aqdn)52<8q}w4N*}^`+RfkVpv57lUSy_#G*2q;2{vje2f(41IE3&hIcvaDEeI) zXLqOjXaH}5lF1Kl3U;Z_4idZ5@&gGOId*auJG-;>7ZnA;md&gZWkQToMekRg7g z9T?rif-TAt*Sx_(dA+-a1hQ5E6r(97a_VM^?Tk+rN1jGAD1YB)DI^UN=6E1yT*?+W{qGF`?!EUumtk7YMSDUmV8?^;$6agg(uq&QMBOj(P)rXd`y8@BnkM!kGhSSIMXtzZ z$&tf+Z|dyWl~R%;>e>*Mi}`VXdUgUSJ`|)t{=~<(Z*Y?Ex+xriMMX%&#K%oP7Sew>t&^Z z+oX*7nyL|R0!YT^(tsF9^vlb_*4;u~Fjctkq9y@L?RZLWDl`x|)r_24DMaLGYEZd{ zQ_9ea$(*w5_iztBdZqq>pZNEN>JOTWy_RXS%-N;E3rH(t)WOF8nvI%Ot@hp@{vnz+ zG_C>Q{iQqPm%Gc)EdPiacf zN=jI5&61x>1!qh~qRLAL*vRc*s*ejE;jQ?fzGFf(leVr@N_EOEmhZ@$y^7SWCP~?0 z*bLGpyHvlHFdc5vny0_~GCSDaLs({io+XELKgvQKT-FkoPi zMNfTm8Gnu}F-)S>Y6?Y?GG~A_R&_3f9HB_n=!;J?6$S+fD{ zIcp#tF(QGIh3-PSCHo%pU8RFMm)awP1ZCiT_16S%Fy+trXvQKv+IdV*{PL}ZBzS-( zB#tA+e01WmuDp9nf}~p5lBU38~e(KURZo#jYKpbyMz8nO6VCVHNH( zzOq}> z4iq})ptZfb`1ocT8;%Ac5tVl!bZ+@f!QH3=X7VKoz%|-jtyagG+JG7XMXi5REqUON_Y5JTJo_?0XrFmJ zi_=d_oo-3)f^Vc1^^bb)GdAmTiWti7CdpIVeoK(>%+^9Hcv0L$)@g;8vf>#Am(h&e zwVRh$mQgZ;aJYMvWXS0-UVfbI7?Qv#ner?g|FAEYTND4qot5v;6a7U6$YoeEw@6`xWK>9Z z8;9yMbyyq4)jX(e6_fzBn*G++r!mZ>-j*;mw0BX%;p<}LFg zQ7dCRs%1#PIb0pLZD>n@Pcb5sf@;Z9*RvB=0NeuoOSsNp_QoDVz}S4pqk<>M4r0?b zk5f>d$D4PU98xX-iB!o`m-&Axl&qU5)n`WG>NK0pXA2U1bFO(k7Um zb|JKaNx5E;odh}1m}p{x?0nBYc5dDDIlxw6wEhC7#99H5`pJG3(G7o?ssgD1=qx6Q z6CJH{2CbQ=VL-u2te{;EB(^#%sZqej-uGc4D>D@{3G$|jC{Gz0owZq}KEO$PgrNvb zR!{$Tp)ma2U6ArY+ruGHqin}FE9l%~ixmfN~cQeAJjd;Q<+Xec-^8UZUc#v6=(t@tbHgYKOq2gdP*iytfLG{7?L`<5qkU;sw#q z9lbCQf+{=$RajYLFRM!TxO>H0I;4xI-Zm$d%(wys>KD!YJM_yNHVG619-r;!kx375 zW_?+2>#$=0)o36^6$(g3D>P0OlG+>06mK$fbCmsDjQ1SSi)Kl6Eq23FsO>N?nW$>m z*bS_q3&djA<1xJ!OV)+H6390fjb2ay_-238YB+mLw-Kd^`D-#kftvxzNc>;zb9^{W zakeZfHEFe+*>!4|>xOlh$!=>uA7fGl?^kT*&3eYMUq!|ldPFdbwn;Nas_v0yE5>un zlrdx<>7Oc>RrSVq60RO2SEuRA>dmh7rH>(%jR*xTPs9mk)g6l&3kgF-VUDhjyijg! zoAd?Sm2)46XzP^+p;SzDbp)%mN+H3Iil6l!N zYQnAmHtoSC$bR2mmSbr6!~NW}?N1rlV) zqMY<^#nb%_^6?@Bc3NH)(yurE68l9YhJA5745D6J!X5)z`S!rsq&8~?xj6JboMj}~ zNwJrkX!x}6oF8_qy2{ivjh+6%I0X8h9bZ4pJk@8#d&K&-GE(Vsi@^(2XidqGgYPYr zTGYYppz*29+)*+v=2_VDdOp#%RrN^RdQB6@YW>PvpX$KKtw&nFgCtXH$K~B?2<-2t zylvm2;;+j>!i@qUk?VlHa;k*dnQ~*$%91q0DpxfX=HeL(Ok!;&=}>$e)R0ZYTnNuk z#n^YQEftnAb4@>{tKvF~Dj=GEGxUJX`_cTvuRS>ezF+U(Xy7n8ELHl6!w~-7* zEj>x{p{VT&w`yI}++kTO&GUJ?3 zv!J;3SFn+3o~iRaqZFW%9*t5h$-rcD$Ey_HvYMy2gPm2m%#iX6PKCzx(N0%cH8qa_ z7HG1}#MQP;cF0*c0``pB7SXhpw4ksjwh^zy3e^pe?(>Gp00Nes1ybU!o$h^B+xf0b zLqQdtcIi?6hBefq+kks&c`t}9|3!h9a)5w9o@2OCjvJ}75Ed?oVOvz2AWLV|+7xTU zTx@+FjFs41fx^f2?A3jqn5TVD{Z(T_`q5Wm3wK$Dz7esKDwpf5ibpO&b$)h%<;6tfM#K<&0owyL>7i^Nagrak4|m zSo(!SZ8^U=KE&9FT;ZcOLUueUm*CNP8^y3nDI*yk(`vzs-9{ehVC2S1*&|fV*?hDX zBQtH^c4SllFgkuXw|HB5znSV#E8b;SjHmC$4=O$$Kj*H7N)1`V)-gfQB zXX)cF6tAH9uPx%2^_H;jSdVpD8qBup{vjyrdK7g&WqmIHVS?L_`Q3lC2RSoXzciONXm zbRjI!3O4$CAP-edI7EY2snt>g+Z@VMNdNL*g zE}yDVHW1Q;&`5XH<$`jCK9{uGB#8~rS5>!-y01g5g0z47p(txI3NfDb_L)6GPRL@rhhTX+RctC@vN`JuX&Ls{q&N+Jfh6H*}= z4{y?fay|cYn9S7RwbWb)B=a#pR|1?GmAo7pS;!(}7jjnhnXy)9`TN{W*LO=*e@S!4 zA7f!+Dey!3-*$#vePz1ji-oPCz?6m!lxJpt(?L@m5j_8~Dwi7?%<&`1{Zi47Kgr08 zv2Zc4K&|S4Kg0v^Y?nOlE^+oMo>a0k-QC`8O4_Lf@HHpCqd1hX7E;R{421wJIH~?d z+SjR_tzE|4m6mVEqO7)e?2I0%BM`o1Z7opA`(|pQ&J;B35qdkT+!mvejCS3o^u#CT zM0T`(Y8UxOSK&MVqjl!$VJeM9%bg!0Bt#VLJ)GY<-aRQ+>k44|aMD8zP&x9oaLEzy zFjq$HfDotUEoW~i1d*)fbhp~7@@;C&QKD@lb>9w3(QQ1NR&I9^P6TS*B!H>r>Jn$~ z5pz8z1Nx&IC~$Vv_GwKks)0>s`S2Ggoeo4`Y6MattbB2R|5xI0cQPCVc2krBjY0aj z_;7e+Fa)C(_PT8eD@%t3IZ8MY$HgY~R9CP=UaDVO>EBlHB%Wla1}YHLLzCb9Pw&)J zR1c$^>oBoxHz+l%Fx>XNK$uT;QSJ(;5%~J+fd+gi58Ev1O*+KR0276ahevW$u;4|} z{n{}NnREU!TysD1cgNNDbiD3z*iTvWSG9&#|UogLj6xB^3PFu7R$c>GI)f zy*6_xJO6y;v=80X=1FM5JP}qrmpV>AY`cI`EEmWp(XLG(+SQ6WFq! z{0tb2V0-Lod|InVel(A$13sa47SF*H7+9Yd3i+rYBeZ6qG=~9&~LCl%rd2g zCTg87{V));6|yb`d)p1e=)rP7EeS5uj$1@DxBVy*G@nW#h5j?hD4LCCO)BWI+grw1 z_pc}lO%c?0v)X1B3eIE2&0*v?Rd0}b@S$yN=4v{m@Qb{Dd$YmM-jUM2ZOk+ebXE_a zTKQ*T!WCB?J+S3+pmrPx@I}uWE3nY94{gD{-7M-KBPznNW+ZSDS#=OKo#&a*(MezOYF6`5x#omGgh03oeA^idV1jM-lR!Z$Zu_!7%hc<&f^>& zcDgTh5xS(Zp4pfd&lkCp2zkaMoBVDa{%HI=CfGx}WAmaF$z@z<+~;xlg7aI#yrw4t z20s}}U9e&iug+=nF!+;t9RfDfAnyrnL9SvIxRIpM0!t|`=Zf#i*Z&r_zDHtXPD8N@ zJ&px!h1!-z9yN@A#bEP_*6R`IjZ>S3-;X6tC_ps|j^QM%Gj*vE8|rO83jc65i#~Wk z(1MeF0RL5#glbcDB#&~Zug^jIQ2d24tNjnKirx-z@Mv-liaxskX-IkTuS%m0JrMn^RVNtzW3X=ZL}(pt2dT5kdn{tPs8BF49=Snwmw8rnUdo6yJ7 zcYXG_EKuUd7T57Xyv-96=$i$Q-ftJBl1@$v#CAsZ3r>cujS`NWmHhQHXQ@}LMh)Bj zKx-`RK;@Wn_zM@pG8;h@Hhtkbe}1k8XlQBn$DF_`bPalS#qVwR2F&20!lP+CvmLFu zc$iQoQ6$>Oc64xpW~fg*cL8sDTdOi@Z`LnwdnVC>2^xCnYw5_KxD2KRDpFPrNuEhB zoG78yGgL4rYwEOANo%u>=*@gej&KU%*EP zmGO0U%-gbb-BUL|OdKjppHn$3KXw3Xm*~2?LqzbV8@&x|Og&jBP$P7700C-?|Bw{X z8=fW`7hpl?AN6Uxc=O>0ZVTyx;h=7Mk}y|}++brK=M(ynVMe7|Q6cwD_#>!`3gSzt z5qJkFIp<2BDnjyIs}4nT0c);8ei`Gd70>9K1C=u}fg4Q8Rn6HopC5@1NBS6Kz2bc- z#km{L*17AMU!_tru;}4j`ZttjhJVHTqK^WID9ZI<|IFd(Qf`I`&m5P=d*)Hukw~$Q}MdQ zwvyG#nb0B)S4WaCFS|ZKlb!_W_QdUe5hbPZO|N9~32B4zNrQ23Z2pqE2;TE9OUvF= z2PwPPHjLA4sQW29isOcC0Js#x-yV(_Vc0U2p(chc>5YeF2Tbfn1&y{58?|WN+oUW; zAbN1#@Yv4Ui0p;p7ro>@?Vz~;Ik2sNn0XV63-DwY5%f2kT70J}HgfY~3UJAV*ULhV zv@^@LflHWNRLs2>)}_N|;Uuhuiv$C}mbIeS21zpb4o1eHMzBsxc=M3cEQ@HFmDN89 z(3F2dLe$JX*jI0=W=)d~NBlMf1xg!P4SI!82TVnN zn0Lxs*^S`)UM;7?hrQJUYu?ujDwcF93QHx3GVQ^`Xh#(s4|d{q8>3U{bA8MwFC6jS zuI(Z-37f1~W;oyKN7UAv?FQ%AX&9Td<8G(=*M-M%zKpPnZXE~^>ogQnvEFK|Y~RwX z>KF7X%@l^CCMk@+q*n(>mbL+&yh?P`voRB4ux%tA=9>D$o)uz6%Wqku-4~kM&9JSN zI?;;LDCN6l=2YG>DAP=-a_JWuTY9Vf;f&FDCYBqwjG&A+VF#|lhLUL?$urNnm?SjiUVFF znj5`8Q#m}4>iIA<+jMgXos*DLa}>FSPmcFctDf#rhrRhM%3eG?_FD_Pt3=N2SSdRej6L~Sa}$FmME_ZRrk zNK#_i^0~LW@>h$@#~CvgQ<`i3aZbG}UiuuVm?ChTRfl@0e2X@nnD>JrvXZlmM?xN? zt|ZwOmQV%nLysf~#=EV?of7-)4kkFcNa;s0XR=!*N&d&LCOWQ_20KGJq7MPGx`2|? zeY==LX=O>g)u_x279=*5OT3q3XRyDz+PWnbX(VJ&&*^0th!pOVNH7Q!ZkSO{K%{!% zma1l@;K7?wJB3&Fr@3&2`VgIwlU&bguU6kANd#iinOujK=DtGO3|fNTg80^vi&B2& zH#*-oh%xz{g#LAYN&i$nI*Mr;u6Wndo}M4a%k+{EB|||1NY|p*MzO!Vr#DfBq@UW` zJOTSulB-c~C4sPc*oD~6TO(6S0!7)?pIIY1RKeeAl|}N0C}a=>O^5#wVjXBK{L8k6 z2ja_ODy60!% zp?Vd8D+*ZBE?=zOQ9>2JG2;(WvfT-50k-(*_w-R_Mju8JqFl+5Nse3+DdN{q13wZK zT!8Ro!iE)_SJFUunl7$={tXcCEF>N#L!^G;|G%+dw=!aM7U}%5H-;#_c zkC>$R7GvJDWCbd;U1XOgZJXK%(i{?-0uv#L1_vbaLg?RQLWU0CxVt4<$38gFq>EPH5+4S+plUJUH) z@rsWhZ23OQ?gebI6Th^>n=;%4z$l%>vA;DxC7WKZh*gZC!S27rh`m}WRWr44vy{!|n1en$) zE^(us2ramUX;z^f_8o>kGY7_*0c>fui}j}gjE!Si_~L*fXKI&yhQ-V&L8nAfZ3bM?X=_@Zrn%){zu6D zi@xn4?j4_F==1gr6hA<#O4(3{W%2B2sym<%jW9tMJqS!r6s`q-T9VmVKj(yQKzSnf zQf=F=2=Y&RPQMAo>|$0|3v7xj-U8lE*5@hC?S4roGB(|G(54)(`~@d4`Vklq7E%g#rELInoz*3NB;bMdcx z!ziyy_$ZnnR^~lfJb}nHZ$Bx~_3!Ifi;Y<>LaVj2HL4|rW2Mp>k$28g8Q}W#oG{a& z1bA(5av|&2I=COU8eD}Npxfrs4$r|shC#RxR#4HZrnh-^A{&SHIz4$)q{_k*(t&F3)1b{O17*WX-a9yC7T;QMvg#FB$n zwi$%_R7I&y()!;6=40(K*t8X_M>`Gn6j?MEM0<^!STTw7y$(m_8~_lPNTR}ZAT&MR zD(a*y5vPT4&(w2eF7>CSjsJ#5(H$oE!#U13%*&y=vFDr1IKtJhkZW!@R?nO`n{qoy z_~kT%B1nLA%5Mc#7(Zm6H4#$$l);lnNV4KsEQLXYL&&)+F7r=U+tO50J(7wLRat|Bbfe|6d zpm9^8P*lAfrbE{E+(N4BdKCPgmFuo;s}TppgKV6X7_=#Gg+qi~ufMSZuUVyTdH#@R zh5}8CabGCqyI)E?g!tdhUBmxLH$I7IJe|5d@cqUL({sx>hD3N5z77BafMH*pR(;EN z1zZ>{@8uhr7V|dOTj`F33o4nDNn9=@7sesdfNh%ftlm$*qMs+nv*I3hE=w)E!PPJX z7W0(VnYFbJTy)XHrHz-09VPckr2GVaxlDVLjbKHe5p3+;<>8h@|>XFi1-CBJje8y15(D3{{u&VNX46a1~ zqHUUGN3Kk6GQ%vJs!DR4>seC5`aP3cS>U}7s)}>lLQCV;B#8t~rf(tOGCv72Z zz!{n=8eBs7t$q4x>*nhV9iVK5&9xCb*r3a{|5k8;Sga6co|c7-(Ic>>KJ9Uo;}&Pm zogQ9)QH0jn(1M0rdAN`v=afIHfeFD_&Juje767xNG>@peZxETZGBi;o1$!Z}5|{AL z(kKT4^qH?%H}+E#y0F)x%1X}F)e@?IEIQCg3Ic)H_4gg62RLV?@OuH|!N`Nd5mxEb z;Nav%pr9JW>g)Y*${dSKKN+LhvZy;6hg-b7e}{TUDouZ99&yso$I8qYLgcUG!he-2 z&_|)8k?W(nAa$_s-CiA&2oO<;IRfLteMA+6t6w?kakxi)6ymMxOZyFj2Jr4>CAL9{ z+^wK5!{J>A=6#MncWTz{S`}`rDy&1G==Otp9GM1cIA#W82bOe@J<4or01SOyyAvUe z)^rPw2##J(?#gk;D^JZZ!&}Dq2Qi~`Em`!;VWTf@vhFgue={ODx~*F%Yr1`COv491 z_?|~q*-(@+Af}}ET;j%UZdA0!+tEzMoFn`FKZi2K2Ic-}h_@9qJ9f&tm;VfAWeMhy zp@}g<3hQ2Kd3phJVGWOFQkDLwSCn$W%;r2VNL4N~X-iQ*$RR;v=7KIbDbSWn`n{sa zch8&hh(nU3=UhvsRWKld(@I;lR@|t=Hy_jdav0mecJM1E&I{y?5&ej*!lz4~Tz;oY zZ?{(5teYvNNm`JO>4D=pD}TTuI#+iXwfRV_k0B@x>kg#36mZWl^p+)-R;+v zN)|6r{XGyP0&PXUt1FsZgcoGewV9HXiy3BN)aj0+dOsqan!9?Chm!pdL(8sOkTtTw zvqCQt&%L*4>^deIEbt6c^gP_#F)xF#Y*km2A3v>+GV`I%TMR{KZ+^I~?_yUAAd&0{ zGwOpC**&4MRQV;J6XLr<;L+XOhuQhpb@p7`P0n;(Hq>W0T=x&g#jk!a=T`eTKHq7{ zr4aw}hKiD28j&&N-MQIOj~gu6gQS6i&|l1CUpxwE&4HHn8pPgFY=t|0FmXj?Ydhrw z^O2sqvqqYyx>5HO{+c=Ne7WGZBFT|CrUFq#LAr%{Fu@{kviMmw@{X{jr+5Zo@KmwS zmr$U;JW#ml${~rb-N&ZuI%uEcXil|+q~6S!qFOSkC@bNdJyHw+)(|EtaW&G~^L7=b zPfQ+>MeB-eO2q#HXe>=oX2(q|{zW%Gz=ce7w3L3#^s;%zydz`9@G?b6Yp+;i;js=7 z>#lCnK*`oFpP9B`87xZ}sMbZh^%VA`WvC7ZYTH*&G@7a-=ul6LV-S+?2@DKZd}AQi z4nC5Lw^w*LXdn&Z8b7<$sJpp`v&ak(&aqLTMGmxh^;$^ZI9da7XCpy+w;z~eOFdm) zUSIjUW;qoTNEil73jEJOFl!!i*LR94qb+~XTayFb zd^b8AXUjw@haDsIR@$7w12-$SYjNHPjAaE7apM&q1b)u|hdfXn8mwt!eC;u9uN3th zjnp5N#W0r>1XKC1y-}3wqY-HUlxI zp+u&qGaw!7XI`%zfi>>2RJxo~SKK28+#zkZ!n0SM5p`2Pb(oivP2WGTXKWk&T{NO@ z23vIdb>YPQ{q1u{*uCR;tfSBcE<50vW0%k-t8Rc$aqN#+XrgjOg^yWUZ&Y)Q9;M_&t;nQlN$Vm93?m$gZ;^YZC&y1)NDTl-j?;|r-XyB!Q!vrs=4%rTSio0c5P zgq5zX{siAO&^jR-CfbPgSiVxQRFKG;Ssbh3mWW|{;7VgpBx zFNrGNQ)djQvznNtGDe)Yu`I=JqmGCfyg9$Pur5T~qxsX*Rq$e!$?Ge6L! z`}B8wz=UOUG-MWY=SM@H>=1Nb1{#gY-qP!z63|6($;Wno-#xOT2GG*IK;gH5I~0|< z8IMfWeOQs>WhTGs_v5bii2f8?j*daHngy>}lZb6i^%aGEb5FhkC&(TKE5cyh{3ZCZ zDhae2-gYwYCTvB||Hbk%`0V}cB_rZ3a?jkxk4 zSX{Qg#zM}l%jDAgEDTSurC_340<&e(Rc=zhswB-jqHb-JKWH<8;dwvmurrcRVF`TC zb#t-Pdr%$M{4IG(CCyO|*+SIZ9*s!D(rajp27w4P)Y(&SzkT#bYxT9t-H2|wIU;(- z9s}imtM=+gU=xI5%+Muh4zXZ)&rN6`=aEVGU9#BZYcA9zUc$dAC5wK>vuxf58haQ- z>ImQ8x+#Q`G&tyU?aDd~VGcE#(t-0*rHW4TgD^)?J40c{N|<)qhV67dj9BOzfd#03 z;6RgyHQ2Lw0;h`~44Mrxnt0pJy*?Tals|*7mjD*sFo33BMER#)C0XN#_^x%zBb6OVPR4f|oEz+(4JwU?00M3=; z+@1cJMEXukd!?XpE9hb%*2Vw@fck&LW}cn92tzV3`rsj-8W<$;3)%msiqI)WOS&El zUcM|Yp~jqSHEd4SwM~K5WH!NXN%Fz$kv^r!Tp<9EfOk!h%>ZYK3{GQ;Zz{kG3!(FP zGbTz00PGLD0N!$MGDs#!5}gB5pki}xet1Rla)bvY0*jCHA8jI9}M3!==J^qBOGH6S2UgkJp zjzzQCu2Zt}NtERtK#Q@@;mo=J*;&ceGG%AngGJHT>Fqp{C~Vz4y3x+1mXOSK1i7sh zTWV$QWS*~fke`Z5RSRe<*QNX*#RoK$T8F0a8NCqrsdHwN;FMp!ChZe<@BZ=6*(TW$ zMlSRIiR>CNGzkqPSzGO@+z}yoYKik5<))eK(=psoNo6maYp==?G~+D95EO%)wXNWQ z!a4xvZ}PRK+BINetsIoRVexE!{<>MTp2C@gskoT}MgiUYk!o@ZPR^xbB;5zp2wu}_ z0}DW z1j_lRL0m;(Ohw5R0@Q@^hEZUNwM5lbW1C(on?8{D?7<>^RJd{NIauB`zIWXOQ_<4` zxWnE>_nHS432h=U4(6LB{$=o9Zoh^2DB6Gf^%$ubwu<5;XicAyY&F4vs^X}^9Cw;0 z%737|Y$QYmDUT%K%_l%rR8HC$8;O^4ybMGzg1rA4bZw>U@hQPn+Tq}Kpg3V?sdZskYCu~S)20Id{cQf*+m4xt<}YX ztW!5XpG8i!b{pmba~IYKIO+txCykU!qJL0uNb1kg=HfE>+HDnRlOaRhpejzD>w0CY zQUI%6BPGg(e8XHdnA*T94W}DHn=lu|$JPZ?HbS!vdf;)#Mo`}`--2Rav<2b*uRaI& zgrmTHd#=pj0WIi#2v^iCb3G88m4F$zI&-*?rU`I;}5 z`3>EZ4`kGAumOC z&g1?v$V_ZndjNWk6YM9bfG5VhoDYkB07AvDkcdbQ#5Xthcx>$y?g~45e~TfPnxPXq zhs>Xo?GLPoFi{C^B9xhqbf>G60|hz)j`G-z4Gd(P$o49X#w*EE-zbyu3sgzP_L3#$ zMdtm}Y!MRUQ@j{eJ$8`ax~1d#8C8W4(;6@btZ3@wf2nk47!2GB-2{G|`2(|t;iaM6 zlwWe_tCm{lp&%{OpF1nfx|o~UW16_!tkrJs=lA_N@hF)G4XB5a7N#$_EcbLW@pebM z8@XT9&?I+HppG&tVk-gQmCgRKuAAUDUD!TjmADpipoA7pKj&m#X1G2u4(BS?3PG~Q zXjp?=E6#(FH{3z)Zu2Db&MOlNc1wULQa0@*&ajrEGK?^}UN< z3(bp0LJ?Bm-3RGR+359?znsy)KrKB@(oSQEEM|mU3{vV6iT+5%BoF9H^mRT+=oBy} zakx`I47_4)jD}2GC~<Oup-X~e!a9Nb0C4Kf17V&l z3Tp+b7@+~0f(4Zx4CVakvyR(>yLP;K$7Uh5FE>wDN~N-u4LCJ(4>hFx1)}m=7aQlF z&FXnKVJ&^CgQVanv?3k&GfNMGGVUcOC)67rxWvf}S@;9$-FOEytjL#DJx&SIoV&}} zNY}1`IZ+f_brW{vlc1o%RB>kN#aUgVkVtNygx~**lXKEG`kWm?=CSj5EqccJAjm_U z)$hDJrsok_Sc_lIUM46^(^MH$?{4vAQB?duZb`hJ{UFwrUlCAzkFos}X0VH{Q{&8a zSAyE|PFudj>;eBZvIm!vjhYRfaF3iu7S7xio!C9E(o1?l%r ze9p(SMxFoM)pHwO(=u0D%!I?sCmW)-m7lQ%iiM#3S}_SemV(`KWk*5;VQ$BB;K5H( z4SX~l$TPgoc(CGd>%FuhBlh9Z!6`TwA4Dnk}3EGmZSu)jxUz;xl=ZTSCP?)Y|j_K zHqZvv(@LFL()5^|$rS2YGeX)vNrw=n#vWjRNsJ3dv;ins_v@^~QnD}AYkaXQ(?DoLO zkgHMHl8r6acY9e0&bwR%RY)L1*$Cr;bd|OJSYVquf4mA&wH8s*-VtSPx8lu)RK0$% zrf~~UmwYQE@O{L_Y=#3)470QJp0-ARt&TK@o=Xss6muQ09z;ZIJ*NZUQR))3xGvrC7V z*uRccwaD(KGyFe0A6ri5EMF2+PKYblHWqyJqDU6kv}$x80=|Ba&T_f78V@C88cKrJ z3R`#>{9e6X{bQ}Yl9DUh_E1O0Qr=C`E9@nvRIKr=N`vNA$RQwGba0tZr@h~yC;EpawfzC(%3?W9)zXZ15ew=2?0cLJTxZOOREVPtG zi@7lt2K0Li9<7_J^9vjNOQYO2H|ug4N~cfZ>Ot2ML-#bY1E5Gl@4yi(=)k#iRX#bW zU(pHZsCFx#Q|sG3H6(PS%?s?0l>Xe=wjh#>LY&6v&ce#IbD~nY%MFiiRMxxcc*c^* z@=PAKImdSA`Fo%05K%%}I1AM9pwpJ{+AU~25!Vu^UV44f_?4R^;dR$IX&ppPr|lnj zUxVcrD940&a7u;f_D3+(Z;H(@v#)UQLX)JYW$oQ-s|SAo?XD$`h$=3y`Q&t6^PEd~ zbX*#08DIN49a|Ij%-Lk;Y1&$h3RAR!EhFjDpVKflzi(^Tz2)N&HnKOPcd=SD?PTq( z3doKU!VD|h0meb1mNL#jIh)I`O_u0UbK9J9QP#zuh<)H4q42!$fG3c@jrS{0IUuk4 z)t6ndkZ6UxEXXKz|Q&ID6Am?lDVw;SMf23s>80`4)^mI_9iuwM;nzb zy-elqm!-hIN^3% zuOv3|auZz#l-bEkyM|L$(oR?SsosL-YdYeV!vgTpmYvOOt$G<8JV?w>rD~R@m?y6^ z+9|fjF6J)KCkM-9F@Fq2qDbI)Z%r}YOgB%+0?FLsTlsic_!PFNu-j7Qk;0ZKPQl45 zUMhl$nBN+bf{6VUJ1wW9rfDKmZ<)z)4v`^ugq3w1{2r-%rZ6_^X%!b#SnTQ`JwEx; z;fQI4(;MSZ`XRr6TNGz0(p5+v_}FJ zc1Hp7$fv6E+!r!85R^^B{)**iiR$V zwmNv7ikxu5`NoPrJf?pmf+4}Ih4%W(78P%jCr4HudSqtsNhkE0wQ)(u4QnEDDE}cZ z6AYlm>KuX1pG7%$=T=|;s`ko`G{_TqM=qRS7QHR_Vmr-;<=!NY8hsY6;-hqc9D0XM zY8}B?Gk}xWV+j}vM6Ajv;E_6*z)fqA=Jxk~MYnCpMj_)LW?XqSzUxYBKsHhjU?jp=A1Fmn zmBdShDCKzUw{}FbF9>o50#*-MGB&?fHiTjHd8;89v)*6ditD+6kCY?DSk^J8@kQ$3 zp0F6yCt*1LAA#mw$3k)5QWoq_`p9)@t#!mt4zaY3u}9~pBwf{wNxI%h&PkR{`Glb$ zmCTGMDOc^`$sSRWFb~rsQ1z1N)0}8t-zSAXRvm*%;lm;X)|{_X6!(~KRxvCv5w~-# z=VJxE*{$gxA*lD`)8_p_Y&|e)j_BgUucx>Jp5NiCYn$SmZ%B!z#K|AKYqar#p>tJD z`jr~TBkk9jh-J1pKPv4T2SFY|fFtLBnx!0rx#!H|-jqm}i^@Q4)gpq;22zQRTX{DG zeqLSLS+b->zAJBTtgx!B&nmqfpB1#5X&V?i^IPSQV(E0QZwlk=;Y8{fdhSr0Hz(E9 zzOz(g_!+8hT3rUsvg_%OjCZY_SvDphgOH|}KXK6VSj|ZPy;rgXqfP!p^KDax`J+q; zVeK`s6=n{l4tEs$c=yEsc64`ImRz9K0ZCpyA87n;OBn)51SWEX%3-tmQ-t6J=aJwe z-y#J(QSA)5S#RuN5r06I>pRq4O-@LB)Aj5b2V&OgUFU+q;F1&eb;Ca6fOT$>Uga2N zFXefA;r59|a@IZe(L=h1n)3odk1weNYJMpRiq}HZ4cI z)>OQcbulZ>M%{Ts7&U6$a^LpX>;?}ORX7Oz@&zw1OSI{ z_>jJaVCn8<@z9&_!tgiHb)7?f^oF)WkIc`?p0#Ju80P7RTEwEXKJwZ==7p;A@uE{RZ6Vz zt1q^tCe)p?7tmtYkWjh{GbjJ|5aUmE*_jDJ&}b_sBUWdME@K~Ro~G3Lq|}ue?EBO7 zZM!RuyDwQV`?K=x200*Aswyo)`)IQ>{)O@rD21C!4;;Vw&rfUJzhe~hDr;> zlrCPnqBUikxy-)MOu)BX7XuiM<)2~`N&Dr= z%C(F=DrWE@2mH7m!{u2>G(5HHlT7)>>_n-xWWXwh07u_f)3gGbRL+InS%x*a-RQpA zb`OHbLKW{>M%uI_@|Hgielw`FNCv~nOZoQX)np0lHrIWh$p@A{-brs(5a+QNVWODd zeUMcwogSs5`j|~D>f%yw4*Fy|BBhgYY}cj2+!Gpz)TP!PId9BEkq#&KF_r8a68hKq zTTC^UsR0&M*Q zcWh-1ON6MA6Ls8KsR#4-6muBGFDO;0Sx+dceeJ7%m$uRrr?_R8YzVCnt_10VZ=@|( zh^;1!+O;~6LZ+`yopshjl@m-0=M^lGXU&@@S%{mj?!i>Ma*kRnU(h72`3xq1x0R1N z=9hH-(?NlV6@C-XAQ6{44&lQ9pk*7mi4MHPO|EEtDQ!v|uB^1vDyLV`*)ELTXKP8| zd^Hgm+Y+cFljk&xOG@Vgv|O$@05C*0S;wKNTymS7EBnVi4Ny;}y5uLYuCj>SLwjW? z$_d2xN|>&PX=EJ%syIN1wvH^{^O73qc~gjW`F{K7-Y?K#0Q4ZOAW~aBYf7%g?;OxpFCid z+OzktZo_3)kU^L+8r5JAYYtE*^97Xwv9+T3cP*LuPOJRX&lVx?a+dp`TBCQSE}%=o zo@}>VZ_qCF++?cmDcs6LQxSmW+1r#9`PVHMwofOP5eKSML$%{@(CaG3(Wf8J%f&UG ze4;VI#?u167K-gm8$(mz&$53Ty)U*HANh5450rZ#t)07h{eNfOt?yj79!>)@`;H36^O|I1dp17DD3%n}*2 z$%YrFc#$lfHQ&sd!GW8Bge$ME!0DF2JeH+Aw2{3qJPzHB?WV{ z%C4yolxe2s4p9VTkKC_ujVEG(+&WU?vb5?xz~qHnLZ(y_&+p4*7ehPJW-AzeEU%E7 zNH}rb6l}*3aYQ$2Ua>-3@?b^!Xg@H-XFeAddWWePCrg)Ot{~Ho`6z0^-D`|aQAM+- z6Rk|dJ}z!W$JtdBD>zIJ0^={av1(aVJr6Xp%tS@dl0`EONw{bbQ0nLTK=3KMOPSv5 z#th>2Wx-Ra9{5N@V#?(hxTY)pS=|l1aAC+Vu;qYxtpM@wkVNTJZmA}U$QM(^_g|Zdpl20uOa8>2J_^dgd8{SeTf^n z@i|l7>E^m$Iyi6S8h+-wU|~CH1t%yN$lB_T(o1j5b8>On-b@0HNENvwutqLM{1WSD zyb@201f0Z15#nv|jZ;bAS^1tv61qjInN^Cmx-md&e+)bB*0h`mXu$e6EU>z2R56|! z*vpYx)D+9?fhRa>v@?WAl5mZ)45{*MOm4_AShUs1T~eBpMAcQ=Td`k_6zeoc_(MHz zz_gH)*)G+JRIz^P#-v1#7T;MD#A{cZ2KO@Co8|J;d+1%*Fz0VnRVEj&z^sb17VuLv z8nuh&>)WqtXgmpMLxZQXz^tR_@BaBUzwkBpNrdVK<<-cn6a+C70RI2f1g_D7`rf=T zdcKGq0PpIO)*u*cvM~L^s=shE8y}pFoFxs5dKVd&a}P2)OHwpSqo|DWY?TG%m0Wbj z-%j!;Q0R9FC%{v8ETMQ}!Hz-{P7n_dy_DBzP_wk>mLV3=KG+C+^UG*g@)0X&aFT6c zrUCjb;KYQr?7FVR5f(=4vd1@wX#43Yn_9%OEr63R^}*HEf5bE+tS^()I;37}VB;x3 z?jD+ua$54=iW&<3^`*kr(Xw=;J}?V&0Rqg4515O70JoiMC71wq&~=?vZM;7iKy>E+ zOsY$XQ2e64YA($Vw}yDNULVWLD+V9>4X*llG2vfufo%Ld++k2|3748-+6jA850#Pr9rQm#dHl&xa#yjJ8NCT7Crmr2FtLa1DSxbrm|q&9<96fV(O>A+@joBvb2eu{ZQgCwO@GF(A==kTu}uW0Z_XwV)`)w6R~mW>r!H;!hu?-X4V6>m8hv zSiqDEE?B_>b5{zzdlnv*h5}GMzm~m5;br<~WhNgzjgfx4nB4Bp)~W>ph&c3fWbwZiqab>rTD)_6v+)C)$jCJ;uzvU!S1sx>Se_fP3?Qr4- ziZ!+vF&TH6)(!7g*=m#VNmqW8|0E#}I27QkdV$ibbsfg^7g$F<0+5DLa%pCI?s@d| z2NRr=V`Dz$1mFS(5%KwF_6#i2!uThWPKiRK{D_+S-Vv>g@B>YV zP#q~!WiboHL3AT%GYx~Z5TH%o3imi@N#Cp{Z#<95mo@sJzn%$BlfUjAH*6#YpZI0R z)MMIKd^s+qLY6t->d7vML)13B{GbedYLm*tYVp5t^RNmnx`)6+aXu&A^XUSxb>3A<&a_d}T(V9zcHw{D zJxsq}mJRK*s~*EXmBw;xZBk-av^`Z6&lRNqvnt1LyxnzNt#l{qER2LY9Rs*z_To>cRM)m{vqmkyJX0 zGFi87QA7%Z~>>-^dEF`C836 z(;`&^u9J-17e3)wO%vJGY6X+S7FoJ(^G&)h*o$=>qb|}VecQpkn^nXk_eum5U-38N z{&YSu49Tfy$V4*;pYycJz))n$uRwdtg6*wKF6Da`K%TGlx9NEKNitrU?#YHVW<&oY z7N~$pb1B$+(O{6ImRlMCv;`=b&Lg+N%3pQHMkB*Q#}>7_k4WbXaVyCv&+Pin{$ZRI z{-h`D8B<1PJAGNNjzPZU=j9p05B*BmEY`nwu&6=BdE3V(`~ZPEv>Z$XAxc^LrfR@y zz{~zOHfz#$=_}3`Wq-VkuPT;ZqnVUe(#QLRS=DaSZ_D!thxU{GeaiM5Ou!urwsICR zdETZso9@k7$_Zubv-2Av!bC^Oi^|+s{Ml;7yOZ%G0g&B^aKV`4NRR4qeTB#YVFP@o z-a`H^ z6fjQu0FdY!o%*o}@iI0Q4KZWJ(?HXrl=f;d!ZPb5d3IU2kB4oS!|CbXhF{;X5JznE z1^Um%rT^eR=nwE-r*?APw_TaZ1M0tG+J10a9OpT&73kN5f+;l}<)a)OqE1d3dPMHB z5UP~5SNlf8F=p#6usnvn*1ZMY4z1wvRk@rQp^j4Gq{zEhPv6%lFTt=iOr}6fMM~%z z`DSTG0=D>zeQxFNBx=NMv=H6AvbgMSIg7PON;Y`34ubGFcm=;W(h>WduWx+Wam+r;1!_$Kpog=&eDA>l|`;@rEI+|#F|Jz5E{vCGl(Ov#r9h$Fe?5u!7Lz|^Lr z^m!IPQZfqS2jizj$PT#dj#`1%f+|zoxHk{y3#+ zOo+bPF6ghz5_FnkaT$r)ha@ViM!h}jo|4xA!fwr+j&%6nv6!-hVa{;^x|WV{>$IWD zYBr*`{g&v)vd2o+9mXrLs=ow>y!1z8XJQiQT@aYC7|&+p zdmqtv?F3;wWt!(MDPVvBJ+KBZJuc>I`XL~=#eD^_tv6#7z?rvTykMd)l@2JD>!BTO z@cr^ZKNGPwP;HzHUr?A(*ubm}4XK7m+;meBCJ1%UBMDV&x%5OvN~UE12aZ?-k$#?|b8CE+rM`)Jog56d3qWmQek$l4EM z7N;2Q_ZUx`0vHm;-rC#r95Se%1S#sT{%nsYv^elA{5_5B&zQ-gt4K<|&e4GV0~aka z@FHtBEyQNY)7ni%cf6E!kP+FaMtpsx1lz3W=ch#_T9KSoM(LTI*QMnUhhCrWgo1%~ z#Anuf1$ynAUT0h-YU0mIl~LrB*O1-`(k0-`6nt;-a`!U>C9Cv$U&1F!(!N2Oxx#Ib zchJPqfjF%i`bFxd80;RIwY!;mmZBvAJbhJ((5Th0P-o!Wq10S^=c}kDgx$Krr~*wP zSG)rm))n^#vzVGT8DMjdf6KgFy5oO*a6?*Q?>qHW(Rz|VGw2Z8{XpPaBRUOeAR zpVd1swQPB`XyV5QEBy4SXVLVTsV_FLilkMF&s6nRMc%|UbdbdyLrch=mWB2S?=}*4 zUsdKu8G&uLjzDbcpYU~U3i%9P1E{*Lk=&vFw`{#dVjIxu=pT@<9AR?{0pjqzg@BjJ2Kx`Lqg-jRy0_ z$}{n<&ogjQI0X0F2ewo&lbJ9(k3D*0YJ9G3Es<{i1_dY%Q*lKU1U zjCjVucf~}D%>-%WT=u7coPvTX+{A6>v6wdolh;2V&Bl++<)ivXjt{I=A-40@hwj$N zKqLc78~(4{)zmq#SwgWe8>(?jMZp2|KA9aMoGvi$>d?dzeSbt|hh9Ep@7zd00L!8z zVA~A1iAPm7d4(R5Kos0?J*MQJI;o|lSp8|oo@5eL46s7v$vUdDAZ4fp;H|nyJq`4@ ze1xJGEu4!%W+OJHW$vYxoCqpC1&}ABEy904 zbJQP55_7;Uh8UY1-Ufw2ZeCMs#Z{a6{00t zcHh(NEc%>VWR?88d%1>f8vFlY!WFsxntRStH7K1hrwR=%<3pd95>iCIIa0`mKKP>b zd)TuMJu-b(5w0U**0ykk^1XbEH5|%a0=6a{{10Nuthj~6_*@bM{(GRa zHX<-Di;-kH)to#cAfdq#+HjlrftT8E1JKS&V3)kG0W%(sT@)=a(g035NvcE4`6Scb zObqw9Rs4=MGw0pQ zbv(GKA~V0{5nVe3)2UrNH1UpQgphur@+z^Dj^`2}oez2kXJ^`Lw;prwm2&~1qHdzU z{nArZAEiK5P2hPJIDnPbqr{dOPQ#D54ZKaNp<)DJnG^`@nUjP)Z}S7>gT7UsZ;MMb z#3TBs&L$`JTIfvcU;cS%Bxa)H&JWC%?+&W|d^9OaW?0{7>^v$O-@lH%hy)7e9*7%2 zn=OGSEO-i>bZ(&21*BY=mIv7%f7aZfgrF6WzmxZ|m1s?JgHNivZ+q%v2lQcR#}pYT z5}KHjScOD$FW4JfM@y`jhfx@i;V`MB?nFy{Co3z{ZBK6pwTd_clBVL=aN-K*dC3;H zxJc+JW6+RTR8A$*F!ZklMtxy<`JuJ9Vv=YxY$&ju$HiiL#vtc5=>byFn^f~0*Hg?X z(OT^$ZoIS&-p(j$Dgexuk%FxSz)9aGsG3TpYEzOJ+V_9xbllV=<6x(5)rLCnxKkzv zFc7op!Sc?#ew&Ep9xPM3y0c>r;^reAANc9=dV1ZPbjc2R)G@KofX7DJ>-Xwj@^gpM zJo$T7p+;BrgswHqo4VckZ`3`XPICEfFs#UEFMs9ShFjv94=@emmWuBf$3m*8(Eul+ z#o=oe{Zw${+~P=5nI*vPL-cv>>OQ5~=R9V$S0GZ8Goi%Qn|5R`_A> z*+eUx%3#Hwy=_oIZI-<16GRM=?C>RTi%fyGa)E4j<`~dtRGwU;C>l`^1+W~^c3$H+ z6qJ1@?+!0&R(lfY+pGpMmOfg%LnZri14EXbv>}9@Zflt`SYGcYSQ{sRCDl6W4DDUn zY=~P~wmm}Lu84g&t@S%6=Tj*yaGyCM^U17`_sLE`MDt{;Mh07_dl_BUirm%ICt zU#^u=f&j87OZejgM>{8B^udf`%E#l-xH~djN_5q4|EEavLRA#2__(IK)c}kna@uPE zKcAqX*dl-IQ25*;R+!Nws(JR!djpA7hy;i>W3Od&ZjAMM&C#;sanC*!nvvN14Eb^( z#CM=aEUoayofAHj5(dK7H`Mih(T^ga1zZq2Nr)RN{$KcC+Yve^q-gmtiYz+L!ae2Q2f zD|qcb3J6WOQkwJDmj;TO4kjm?D0Y4%OYh1k)%>0{!b~l31y_KU!28PG;2JoOK*~cV zHRRzEk!ytuhR9t*LYhdXW+edPU^pEWK<^qwCTyzk25cNQ5m+kMKq>t9lg0z%oSZb9?W}Kno!|KIHo|$W`Jk?bU`Iv@q!n0fn z?|%&o&NiV$Y^ye;Ve!+KIjb|TtFOORmV*+7z7W37-)#emN^c6M=$LrA;B|$r)p;nW z%6D@p66x)Ll>EiNmo@UO^e`iajql{E&@(p7B5{N_o4{2?22u2JJ7XDAKzUwPg@6LJ z;DtC|X0-mR#nHW2fOwilR4~?jKa$0a{{qJ@33Kw0Qo21EcHbtRqp?`ouy6fXH!LZo zHaZ@jEpb+2_3p?KJZIIfou^F3kJXNP!%SrX~w}-zGXd7_G21u7Z*b`B6}@BMSpR3Mi&WckK}1 zP3J0!M-QPj!H<~+5^A+!z6^a}lbW}#`klGHD(?1d_vtF-ZX!_3St-Jt9wMf~oo%NY{{5uHJyQ(gDk6?JidmI0 zWX*?((m&n)9sU3%jGWFX$^}8JYSBulL zFjbO{8*E_}7d}39a5ZSxzI3Ob)5zsnX3B=SokbX|KA<{1a!}JZlczqTz0`C1|82}4 zZ)*sP!rk$R+gxbV9f5W9Z82bM9kBL4V4$5KtL+yBR7+LP)M2*Tu+p+aO=mZ`&v>i7 z>A`u`gMKT)Av!GuIZWfyx_P+?|9FN55!kj0q~Cgtq^6A1t>_{rG7%?cnyO;(8b|V! zPSgeuA4w3_%lZ3}P|H(&R1E)Ha=$5Beg%yqfO;>5T{S3AIvGU=0(i7?6I-QMyTR$^ zP-$X}&QqFNum?QWpHrbpU;`*Hg7cdGF-A2UZ~Q8WZn!`TC)^};PcoIlt9=1a7AA>% zPezfnH$IRlQbTKExy1C7CbK*(5G=0X&01&8msOAt*viC&T2df(*FOmHsezV#qdvt&+Xm4rIKB92pn3!;@5VI-QEwpISVy z-A5A~6@JKOW_&E-W&jjDVY$-g#l`vTMXpYBzFHd&j|c2ZBwqy%Oh`5*L6G6i+^f}z@*!9%gFqwnqnH{eS zf#+0$=#U7RGjyPh*XlY4Z~2t9*@#wNH%6tj-ij-S$zKyo6*JN$t1hLv$y|s(vK75J z{JhQ27x|uqdPK&}BrkE5SwmX&ks3A^TYf6el-Lr8H0`h?UFp7NzbB}O^LF}K`m2kD zWHntB=I?{^f)-Ejy=C&f;u?74Wj?@uH*wf&?}`M9XL$%+q`f72+V1YpS5<6H=2{h1 z;_c4YabX)lfrZ#GbVLPKKwCd0EGsRz!Kj3o-%Zox=JY#O2yU-8lV)S?v+~k5Pp7G` znxwfwS707uM#Wgc7!EmW!;)Q>1v}zUEIv;#^csBga;h?ztg?`dP~9ND@LU2H2Y8y=Fh*!~iEJKZRrL%%t`1^(XDEbR(zV{vE6b0A^? z9uhrb_vXpy`*hELnuLmowSYgkJ>YvE53lkt33D1T|l<`CQV zcqv$PcZLW=cW%}dr$mb)JW(W?0JS(UY3F9*Fbf13_&Gvks;E&ri z`kQz%M0!8aTR&xE2?rC?Uc1o^ z!pHXhX*SNyiSB`48awi>U(qpv<%Mdb8YYJl$c9Y`y#I1sIx?77IUtDOEom;zA+$7^40{0&eb?c z(H@fj;4%NTiTb-dlF8s|aVcocW&BK`g&*1N# zr{ajm-b##NMTEkt+11eG%2m3g^_0a618%F#|2Q~>ttB$xBoXU};Nv~5SC;0w zGh8GuEW{d}i;KP;|FWD2Nx^%9KCF4GFbq>N$%Ljt3~J0HzE|~8{)I;3daIO|YNx#w zG4;;avKn!T;=nfx=Q51xm$B2mc`?M_ziXXZNvM-!{3ph$^uAVhDVOEFvU%`#eHjP~ z7^0oD3>~yhi{l@!@}lzIL? zg$?<$Yeye|_HMk<&1q8f-JWwh2Ujiqm6Ab~CBj<5+pMjtBRY^i-_>}G;^3YDO70v? z?E3hjrYHYa3!@$jeikNDve++GJWD}`yUj!zBbPdcs;JbQF+T*fbn@TaFpy~Ud+o|o z%-!Mqd_=)*yaL>%;MxB5_rUb`xz ztY7@;ax%qhBgcFs6p=XvZrYe)2=(bBd7%~W;QyMw_dacOQA5)GX5D(}o)7kxtIx2;I;@|@drKq07!m6#%W==~KA6;sz?1`BV zJ57M}woBpM6vF)BPo<__YQzDKRwQQ~r5qnyeE`W)ABX(pcDmV7FjNm-6pYe||FO-B z6ess6uT$EDu{(ZB5fD%wQ{dPhvR&J{LM0rVGA42i`CDB+(IJCfpo=S($OjDg0J#nP zm}JVf8!cPpu0OKQIW-DA%TCoe;hizKO^WF8co|0WQqj8Bb<9(WBqpYOqCRz<;4e8@ z?>RAv1Jj_Ye-o}#xB2Adn*e6bo6`exlTXxXtIcLw+Pl056nuVrS{$%#dCc3zF?Y&c zL%uTU26A9eOnFzy%AOHOz)f}N+WIAyHUAV=Cjg0PL1J%Er;tF{Rgytv#AOH1H>CncexWiENF_E7V1w$P{7+!f#adH$3vx*K-=$+RP>SzSwXno zL=?U?IQ}h-!NS2K>qX=7j z#a)jcuw|x=ujYRzy1SR|Tj4%!uA^e6mEV<%WMjXi6+fYEOeilMmJJ(=RB9C%o1201 z{+;Q6muw{SD32?If3wJ^^&6|IfT*5mTPhhqAnxd-(bhd1V%XU3!&)!S8_#)bKLU}g zrw$#88<4Z$1z~win8K6mf~YG!CrrRHv$S<9mByRSaf~$eLoxYO*fJ^S`Zj+q=oS)w zrQx4C**U{rjgi4jw*hsmUci480ZQpUYc;iK`*^K7yKMw#Uwl9VL0*y5kLLY<>)SPa z+9?B0ee6k+1BQ?jbOWK$4U3cRPed$VQ7tXQX}I9o>qE4a z74P`HXFx5mm7V~9Y8-Rj`b+wG&D6%#r2B6c1E|9rnq>>8P*CI@`9ZB$z=wYrAIq{h z4Z7{q0a7TNPxif;)^ZF)r}2k_!{(Xs2EP6U`i~ifp07PrEZ`O5P!_M$R>uYbu+sH& zJ~T^*+t*L6orpwf(#9_%wm!tA>Ddc;&V^PFcnWMD*wx0{az&9j zWqCej8q6C25h;}^zB+YVVvV= zF@S@!&P1U)`!^TLlO=7=QRz4CUo>T+7qiMb_LqTQ`{UMtFX9_Z@`)qmoO-;2E&~|# zK1`8D_(O$@BR-c}6m?tm>S4L)v?}zNj*|Jhyng>QKYgh+5LZ$binIz9zy2Fz`kg&M z$o&ypfqhZ9$rI|!HzJ6tlr@& z@)X2aMhEaZ20LhqIvo}HF#N2u$Q{C03#G@VvbKP2_*CvoZ2VG@s`o0bPm=0`Vt%xE zP5z2UwVaNgF=jbq2*Yah8swbL;4!-M#*FDso}MHy&HOQf9P}fJ*3P>Ry=J>;5PPSilfnJ!apu z!!w*|;7qeAp<$mMj6zh=TKsu3O;k13^NlEKM0p-F(J_1>?0rBBKfa#r#FZ+EQDA>% zMHR7&_L5kvk=?_t1Q!#?m4ieG&8T+17ab+B66ne?-ROK7t+tUp+dcLM1BC6Rok1gR zzHB_>Hi2@D1!hjKF`@&Ux!&okaz%2>c5PP1pFmDxE9FnhWNK3>O=<>IlnN6J&eJUc zmEfpPFTIwL=u8xBVAxq@ESNP-UPeg^V}hPc@x~ohQJ0B^O!}9IqVQ4ygMw={ARRzU+S^(6e(qU zox3|)TB)iPex9LVklS~}wD9~iu)r{{q5iGt)SKB{Lmd&*@7!_xUAdss2RGt&H0CR{ z`H9eeDUTzX3_GCt`WRENXiB~$Q19AgOp_z@3D1F3jYzA-{;BZ@v*M{gL!|a@OZrq;KnH3`}#0P*Z2IQu3-xBr?PLI;8&!dS8kRH>JF&T%sD%5=R-7YUJ ztKUHM+FH0R0N7dqU5bs%&TUTxVS5+PXQGlN$nJL9GOuBc{#WAf^PYE$Qz1aI3bVM8 z#F(G$YXb9S)>$!d4voH+YEB91a@X4j3ah|;NRhg2pH=5q`8+;CAeLxi-#!61q`VKz zg%67SXCoK{Z_Yr-Wa>BN`<+Z?g`~;JDxb?A=zuoLW+z5~YKM4`;=TC>@!5h^F$vP; zTO$ek9l>8e!KRAMVJtw^mi&FswDP~fZRKY?{KEv9B7;mRrQLJ5(>4& z%?kMU28Ihh%ww%&BsKhxK-;()V6G$Xm%P7+9mZ$|?R0neK8JeYF|wTaYl7~>{yn|Oue}Z=ubL29z1lG)NPiDLBF%)&gwz0(K(PD3 zV*WM7nvI=;y_-?(uH(79UPW{7(sT|#7qFR!W;`Fvo({sycnNQ=tX2B6uBgfW)75T# zL(FvZLo$3)_@cr|6ipiKs{2A^kA+Ab;XO8b1g-hQB=%?zeK&?##I4&g#}Zb;xO7o` zQn=hIw0c7cu#550F|)2vxC1HMX4f;|zmf+)CKH_O0FD|l#f`|n zzeIW<4{y!?OgFFO#kw$snl2qxJjTflur(K341H#0XG1^nYp{47{d%OJP*YL$cevoE z=9Dy%9P9+MRC_vM_snftBi8Lo-fWoUZv+bb0`Z-z_N2Wg;wtvxQ|toG!{JBfR|8mP zxk}kCo__vDpGHRmedq!sul-OgRg(Kp z_cg?@SEeDkk_WObc^Ptw%dBf+;hcfhV)l%Ael_ z{LWVu!r|AHZSyu3Epie*>BB4qw=%%TiuFi$xgp=tnxc-+B`_!DJ+R7BDWA7kefhn# zvQ+(xLZN)dm+vvZx=emWbDJu9BMRO*^PtYW<)5OAz%k{S1dt^tu0} zhn2zo7bi>g4)=6@oF7uQ9Is~sNTkG>_G?*Bo4oNSLXKt5ry{tAK`O#2H*skToD7zS z_&XV)y=I9o+5VgxBgXm{7z3RZ4AWt#*1XH3K8C&MIC0BIq-BwKMyYqan49F3# z;VDldRjq$q35!vj3mfG)w4*6U_Uu3 zdgH@(ExUjgnhU~6$v%CQT+xM+?5dmdrZmps@pzWfhK*QcME4eGv6pA+&%{173i#5< z++*&&23_!aMJWP#n;R)Q)L;uPZ>jbiR1fMMqiI_JO_eAUwvl0IpKiz*gH#$S)m`bs zDD|M%0vI=VKA#0tugyotUsnEu+l(%7Q@fgr({dGipQNeVe{{Oq)=^48FiE&#vmR#Gm@#wp=6CIFQcIwP3E-jO|3fR zT`rG0WSrT<4fwq$^ebtA+25B3L_Rx` zM_qPE16jLY8%5xR)#h?Ggv1%BUAM0r^3PCCqWk!~?pD4hk@nET zqxUx*KqUIG)}h#k&|G5R7&Ry~tc~n=7xayfSsdDO5N?(02lY&qz;?&S!%tC*giCy5 z0EhO(^DC7qYo*faIwSHVcz2t+>4~%6*O3u5QN>pdN&T(OOXZ%(MZ!a%Q}b1D&^PKg z)udxuNAnI4Uev+YL}BRZqG31@hw90mPpoEk2|(vL z@XIxBjoZ+pk{3K1^7g>z{YT!5W^~iZ5AF=<=q$tqQ9y0Axxpq*NOxee&-Vb>cGCt| z8s{+6fsk=|yCvM3xLwffHF~s+ED2)ukRN?C(g!_g#lPfp?e6L1yPE>-dAW?FfNtEu zE@P?ZJ2%BiSu;dcT|JFfu77kz=|`A)w(oEGVoZUKgw>1=mLB#ETiG;Q|3(45lo{9# zKE=w7b3}#gN4^<}b?j7>PzKnVeFN=hbzvy7S|9RFQ4$%{M@F^jNkKY$^&!Rch6{Ym zg!5q+{e*!ZqEUdIstKddHZPJa|?PZfE*)(CV9yo1d zoB=Ap_8L_vL}f%f1#z#?+)cw<;;z}V+cG|X1DuJQ8=$_(>PckvU#b4r&q8m}!Hr5h zr9_+tUByZK)q}5s$fWWU1TB<>D?9{X?dMk`9fsr^0HgiXw$Vu!y?F){ONHA{k| zws7J4o5MfgEro4ua7dGLV{_(*>*jlIdu-s-9U+&Di0!>gb5fyAK+4DoijptV9B0N? zJB_PKQ)~d6vK`4DOK^g5M0ue`YFrvSvln42)$1MGN&{$cwDy_vr57zV{c*&?8n$42 zXcQ2yXX5Sk)fr0UD7DYf6o&m&Pngp*PF4j{!UFj8#Ge50oa`;n9fTpV-1^+YGUgfg)!)2Xq)9{VA1=cU z7JJk^g)0M%exalb@CaTwAV8@4xb0@OT`{6T3o#;$fWI{s1Ra7$fYVP>5{g0Hq?>z4 zke}ONz>swTjEES@@CpXQ0sKXY__jKC&(SRxwZ$-haB zY+ewxzZiab+U~XULP8Ub!(-JCp2cWfW2MYfs+ks8XZFh#@Io=_c%yC9;QrSIwf+=R zMBTB-LGyqF>TEp~GgDUNy}+sI{)f!F@wOh{B$+>is4KkiS*m~>ZO=g!!YkYPQ#|hX z@bE-{+u1i%B3-y$-f>v=s`xY%bhaD1IO94I2Gc`MRf&aLZTDL9&%xir2<(eW8?AF$ zRZM{x)^~7FcFeWp>J% znGuxe*@V4cLMiN{Mwp+g&7F`6_yg#aoGY8-zheDkdob;nBDV5T7qG z6f@_pyUP4^lgJ;dTMz0!#&AD^4XbSbb#DeB{7kGqWOxH@c?!~hg|Tl;!WdZ2?TKTP z0V{R0+w|X-kyG5*szTYd)lR{#5dV-D!lS>73;uYTnQmKGoLF``kalLT@NdvWN)ZE| z)GIrp=k^Y-$5=Jtn@Xc4yIGWBp??mV_{Ea}<={qd&Yj#0TQ}SI3@XNWGo@eWhBy23 z)*?MUz&Q6UD30;ZzB|R2R5*-XL2Au!S_@kmX92_~Ni+QGJt3++p4w3LW65?c&*F7A zXJjGtog&39TjMlZS??UM4et-fDKIDWj4le%`9&T=Tk{(1*yp!3oMj9N-4?pZ(SfhE zXbv_CBD3CO7gFMdQ-yJ%9^&5Yug-abe7YG60@^0~$80~4<$8YTE6s4V=yg9v)?MSi z$Of~{VM5uu9trr!xpp;$m^RyM`}0Pu2#2@Lq{Cbnldt+OH1Y9VCCA53j#4Z>2$i3d zE)WXzlrD*9z={6rzT(S3Xgt5QN3G# zR&@|A$4`3DTD2{WeXUX3)t7+Bjf{pgEzm83ZLq&{D<%9Zxkr`@q~?~iSke=yWqbCc zawqFkCPMq)!b~wn-Qn|EPfn#_BDtC+BCMi+$Kh_w2 z66Czz58uvz`#ivFW`YnGA<`$hKNkHe#3CH*(2~(jpfM|)HPD&=1;|=IrXRHd{Ua(SgjhV#i(C3oWdxj}O0SSazefDw12!#)ozx*bkF#5X`olL9CNJ8F3D zhm{5?^W_E;30)Ei9*WEXSyzcdqxWpSmk>8B{u%DV+8sLMK61(03%(GFO zs>T#8AvKHQKz&3DRi&^_&#MH2Sg}6mo3Dg-#2TvDc%vd;9{FKhUO!!jhz{c5#QcO9 zt$&CfMp}1}OdPR`22S~X2Pz!z+8O?=q!@~jv__kkLkh@53l~P{ zMt~fF)G+PER2AIZq4r|@9}#CyJkoS=Ja^fD5FeVCN5>e3bSu+PMA5fpQtvLqCmUlX zBm^c{E;Ppp%D0KjV?LZyl<6}q)ASg^jA#Usj!VDXqMd_`%-V$5No}skjHamHj=j_} z!L?o}v+NAyA^Gl)R3ocBSnNL|RM_`sIJe=dGh(1kapB{ZZ_^}BQNM3WK4T)H3XR*% zec|vFignTDP)+gO(TbNSms|ZYA?6A|F6e&s2AL9sCC3gy5Y4@1f#qX?u)l=x>yTG? zuW(uuss?MRkC^yF2^^{@TPhAj0?EbXvfTP4YzerzeX_zIPXTWBbv>f89iy_>`e~ma z81Z260`%T62KU+mp8pTgd@|#|SEFo>*-+H_U3@!(|2o49x6fta<~mrZ8rG2x>a%1{ zpek$rl}cgI(ya?6V2&>q7DQ3x)JemCW79}J3ZAoKEB=BXE8p!(O!NSv;d^uiU{XFz zTMVVXBDqMI*$)k7JAyh?9W4Z6B!=yXC}Pnql#f3UHV`skFCyqVaH}$O zHMxzVPr0pEI?&gm>*f{|lYnA+1z7&oA_GGq;!IE%n`~R!2i_H$+FPg%^i#})4_p|y zcAEah;vS!5e^vvh9shh;3sVQ88b|B&5S)(*o{x*hWt3gg@8Bsy;yXS0g{muA*=Ydx40H7YTf#*iWAkT)u4829m(xTp|dPTS+@z`uX}D7+Q^s-5o6yFa)JC z9?vh1EgwHgbiu{ZTa0|7$P73DGCB}uH*@S^)HYp(MSdeli?t!I3c|y1VsHXgz9|pF zo_;~}?}ADPEwwqS%6OqQ|M{w0*RhuzG&$Vj+@pz6JfTi&H zgC0YP2t2hb0MBxk-u(TqtSZfocMZWkn6(7dV^Fj;w_gDg%7_; zm0^TV6I4aNd;=?=9v2J~t+kS+0aPQTyrr5b9h(^VS?*?I6(S|@i63Owrqy4@gjIum z=#*)tN9yAx!M42ERo;>y{_XAh|8*PU{?BOKrC1(d%p+X_Vevlw;-_4K)+O<7 zxJ&NfNI$27uhMQ0K!{{hR}Mzus8$i;yg4-D932Uxhw0|1j}d5Y^s|@M-w1Pva(}zm ziH<{wz*w#lDKj9##J?G2`OsNnuEgEYITr^LBX)y2CJ1*g(Jo1)My@4yK$IMSsf>(n zchC^`BbelSwikU9uKe!A=K@@LX**DmJA5o6_Xn@9JWM7BoGB`-&9l=L>m`22nLepI4POAQ?SI>NBU* zK7Et)0b*mBt=jP{rXTF!92qb3U{J`{Aw*G0oQigg!bc!=!QkP-*E2s~` z++3QOS^O~nnX^p#CYO)ccmDq846-##>*jFas$aPy$rNR${HyB!@bvzKfE}b1VXhD> zhHhi85iGT4*aQ2K0>|5YylM*O>F^f9ltm_w>Exdp-<Zh*RWXG;ui?((0aI(?UUDBhsX-xCsd zdBKiOWg=1^%&`No{`2IafPAedNBDnHH&z<6Ytzi|J_p8gM{yQ){2Efl9j}AXEfrF> zyQnVbdyaNbV@fou47Sui%{K1>L;eTI*z}no(@`=34NwZFG7FYf&@O^z3_;!Rh=X;N zihnRJY_(`WiKiw74niL!M(YnTJgZz_RV~!-EE^tIkXP(8Yg`EHW#jJROHIo&N*Y2Q zj$SCjU$U8#51I<5Y6A*90DXh!>2YE_t~nKCsL4}=3JjQ1VkQENPEHR|PM*>AdR}C; z!Oq>GAlWx8qg94&ORJNmfHBM*WYm7l<%7OI_tIp`NkEST4-`&Yi9}Is`~LFvi9RMU zmS}G886y*E!yx>^-c91mcev$u9-FtP3txk%?1x=c*4ho98U zgu1KCj*2WQ_V#H=-zS##9LYO3Zhln zx2?a|k5!E(KmJ0{?dA64*Dl8KejFr3t@LUNvqhxNhUnooPL;1ok+#BVra}H)wU1R& zOKdd^I3b*z2u`HBnWJDrXg8vgyl}ZPZArjiFpYVSlO+x`#Fctbl@;H!TtC=pG%Zku z;ScSNa;W9HK+CB{zqu|iXKkt~2ppJk=iKIr!$$jg%SY>(0Zu zqX;AzX5tWZPP(G48=xf#r$q-jk9=6gp60aOdhjxExF(#`&<4640Y2ovbRKssHA~%k z+VTBoE6T8L`Pu=bA*hoUta{x3bV&i>O%P^OuhgR?44oW`x zz-KFr(lK)1VJ_+E^318?n{Kn(&~yL-jAQt0cyeIPqQsNnHw~`qiN`FER+I`^&t98; zXI2_|Rh}ZR+p32m$5egOEiZ$yld_lsahU|1eeUBF;1S!sv%GE0^?E63pV~}e{_r{7 z;%}Sm`1YIj@2za*tc~r;s_LvYamvB2>Gb*x+mD^(g-q+S3q6CAxH|0SBmxX+fZ*y^ zYt%Znbrs!bEmZ=`#*WK03&RxnW5IRJ!&Fal+!pN1zj@%US67G~3j74Sb5zX61CVg( z&M*iXk08#;ABGjh+GYjTX~;aV9GfFT`5YRWSR&m7e&s|?8e>Bt4gEB7qWIsBX&M>0 zy4}hO2_*9mrzvHccmy`WsqqY2H_?F&MHPAMR%D;F70Ypzb@3^h5hA1TU|COjf02HydlOW2XuDyH613*@7Nh7X zgcca3{yMk23&kRc^yw?U46Iy=`Q%1QDIOCe&?h&ICyE*^O}g*ysHe>b z94-Y!=y{(?mFzum%bveN=pHwB_*pj0kmBy#XQ+XgQH9&TNe9-Sp}S_;qOi}CB0cE}q$S3{QBg$AfkDh(auO&uRd6aa;Q z3%6^!t9@NMOB>ppo@TD`t$1_#HPCBj$l1;}2=W%vDEOz<4TRv_ENO41$584=(|2Qi zPrGf9Vv&s-Dd#{iA9e*-dkPcq=q#oy_6`1ndYG4D%*eNfQ;n9ggm2)sg_gugqZ~NL ztn933a;m9&bN5XFdHc3Y_j0((R!<1VrEJ_&)N@l=6;8v?1&^NK)sC5rwrJgH)QFXQ zuC5COqv9v2DmtioI}60Vp=>FhT42%fPS)aEAS(&OUn}b|r}_tMq||#;@4js}OOo-k zW=;?QZDiP6`h7tr+>7i^Z?5xO!kad|*>*lIEJyp&>j4B!5(F)Kx@f!t7nwiWh`alx z(7Jj&B39$wT=7ot{yMEZ_Q@7~h8^DBAH$(|!Sk8*V^1gcF~*xc@WiVThj9T0tS0z3LtIu(SBp=S+l%n z_R}}5qhE2n`~)SNy`y4TkkP?!D%neDEjG&RuK`2K98r)%shQZ*Ku*2S}^%#hVUkTn!SR>mfS~W{f%=D4mypL@5Jf10&_>=w_hwg}&jeHJjVr zdc)dtn&)^PjLa2d12R5MQn8}%y<#6J#6QU-U|-f~`L?}hd@0yvrqIb)cR zx;waHHSr=VIb{M?7mePJ<6#IcG9}aX^l?U$9c&O*jtX5uiB5Ow6kwg^kTg;0XYRoUwTQP0f%a05%!i#nmnl5Qus+N zlUQXLyVhs22ak-VMoPlq{d|*#ET+Z4BN75*ae*2RLP#FxjNbv5h3dnXh985;W$xW$ zB|HDY5_t4d@ZR=%G1@+{%Z?^fcq9y;fV5XY-%1{6|Bkw@6f96IXTKkMi$9^BowM6r=*}qgT9Q45l996iGlfJ7jV6g z*jI~d;T_1ow@8bSgUoe_KPq&)jFTrW!#8<2#1QZpu|FU}N?)0h%?x86aVgE4@Kz)d zPXMTfbPNTQ*RKU&7va|$<<*}5o39j$}7uAnRU34 zEjaJ0bxdn8hd)l(N2EI}a1C%9q)tzLWWC1Yln$AOc@mlj#pboNl187INOz+P5VL|z zkjUf8!@YM#Jr}*znY@f7%Q}G?L;SV4fN}?Y?@WsAoY1tE6|8OI+26{C_Zr6cR;r*V z7O`&Y#&4SS$VQVc1v0v@R-db}ZJw^2uZ$HdMLkbo|8bxv6)#ErW#b0<0Pk7cPoYjcA5V|+wy@v%_#*e zgcIl*O`g$yGdqM0=xPrhm0bmTS>S&B!{S6~e-AS}KAgQL*ENO4a-3Rxm9zX+x*@-0 zbVC(_8yX;3Zat5WnTRa$%xOc1`6FSp`tH5grvnnRYTZ;IZd!rHd)9i4%Pk-Tz2|P( zoeGLnm{(@wv1tv#;!{K(aDw>b6FT0;_q_(gWuv-`2WUruIwNzd@)A7os1DtKy7#Kt zX8RhXtk|RNu2K#7@!lhY1TeRjPm~J zTX62!z~($J^K&{qW5vqX`5EY6VN%}te2Sp?xUYGLgoo=@S z^`}mMKl8Rxtwua(p@cJPsLBqB^Iyy#`*{7o6wlC(^(k>`4|(a<^A zxJWKPLHx*|rhr|o>nwgynB|s#OxA+I{`A(>rbJ7^P4uo`X0+E{gcCtbm)I-OnN=yv zOKhcSHldMv@TEddL!8@k;WF~zo}^+$2U?)KbF(RkAX$9Y}J>J9;%49*Tf*u2wM&i(WTn37*)i4E-#XZOvvvN2sP&rUL!O z8d8wUX2SfsvK0!rK!-tL3a0a;GjfonlBX^r|12Vv_(H5Kk-xOV^CQ2EQNW0JzneB` zco|ZY0+77XU`}nnO}AxbWB5rI*J4(t%E^Q0$}+IoH@k07uUW*_QAmTxLsc|H&wZs` z6K%_%zAtO{PgXXM!`U<0woBgaEK5Qz^Vn3nRx%1$pC?EpSS3r;1#XURwbOYGIJPB3^Cc1YE#GfZw$?*CJ(7Q_%_~(lAe6m6#g7(cE1baDKqvr(G(|{p162 z-em)6nv-LF{|CxMkigj2=)C`qg`Y;Pb|s@YBnyR(Xv%0IupS5hB&($M%D&d<_&+GX zJu7$+aqQXD?h^;4&Tr(rq(*zxgwU1dTOeOfg$q(+!-uc=i-qlHD~-`=QXpcByeu!O zJCev)ipI-g=cMeyPu#>phabO?(RA21ieMPi31g=WIoTn}qt)-*w&XO{8&a!moQl)i zpA(}e*{n*^Cc)8i&DNMH(6}EWmKt)+&Vkebk<7K=jkt!Uq)0kcX2!wAh`Lj z%@okup%xgj-jh`m_xog6EPtF#Yu&(I>KCUFs9FJ67<8~s_j-sq{AT5Ux%E|El$8^( zFU3-;qjMzJN6iVf(vi<1*A;9}AYfvxi&QGo8B{P4_KGcpnJa2Wn-Q=)XB*>5L{CTY zGNo072{o{)a6Y0PR4&&2JB{+(5jL&M^QV#v1q8;yM~46-d!lPGC=ZXJD9iYR!$z0x z|4gOF#J{QhCMyW>PgtTI0uH=>@-Acjm!SrOlcJ0f^+6LFB%!2OWwIV`*rMtS?p6er zd+dQ-Lrh>8AgW2tT#|po|3de&Mxu^^j zwitv0xs-FD*5C2L$T#t_9~=WW3bH~e?PE#>8Dxc{_ z53~*y+SYf%{QA@W_^n&JaEcB=AM+4XHS(nR8gy%8ywwEBd>Lu-bPU~p z@v=@l^Pi)~sVBqMc`6chA0P749a$ZS<#_1W9BY9yf1G#OZtSRSQN&o51~RyK+tyuL zw+vnc|2x@q5C@4sOrI^U4IB;?BSyNuA9K)FEy|H87#C%--EEX%+1!fkLEz*QwVOXxh-7iXxgRdoWuRJO}bhJOsT}lwv25qgP zA6J_uMoj*t0)Sz`%Uw_eD8CI2)@A|y7qUH;7Sd6>G{IS#%QDN(4n9={T}SOwD>9kz zQ409dh^JQow50T121@-r<8KT-H;h>g^SO}r@|NnpNvq@QDNB=cS(&3ck27?*2Q3q1 zh*Ib`@OlR{YMaY%K-_``2#_Q;}bcx*&q_!yQU^wS!7gPOmgs_kuCAOC z>4*V>E>jYi;`KAjCr|Vl@z9%>!T-h&Miw%=arEyhZI6>sc7K|_r@6e)YzZ^lq)A4=OpdZW$)8ye7;m;&qFF_$A5Nqj57JY7 zspx8+X7}jxfqzt|J%P&G6Xev&z8t|1I)Nj>(;qL+M%y*(i!akBmwAiI+hJT1((4SNF+fWQiv8mP_wd8+gdpG-(vJ_)4cgR zX2RUm9es)4&}q$CRer6_D+s6>PDPdh!Cibfd0nKHyJ1gP4fFfqs^JW)Vs0YcXw589 zHt3s1W)%y@KI_c(o~zGRdo{RnSObrgFF4De0AlL`?=r1WCeShqc5mRkcZ3eAN1iE* z@-|cBg{{k(Pzae@feqbEnH=Pyo8KLktLx6w{<+@z3qqe*hP6c%&zCmV#-EYq_{-{J!slB`80hfeq+uJ~kA1ngkpnA)vfQ5G`RWkw z;PyBMG&iU7=9J$$${s2MEmPIn=?4S=O14S)!(l}qmQHeByeGhrrWjosSiN25dwR+^ zxJmYzTB0S9%~eB8`35V*;fO~HUg&9SrtV|NFD-o^2S8Cqzd zE*^=GVuv2N^xyMg#234u(Q_2Tc7iN4o?jS%H^tR6t?VdQ9&V~8jY}I2nW#_(ah@O9 zv_Kreq34v1w4>L-*w!zYb;iHyTB4fj+g>`!3XG;fX8qRre8;ll3p**%@y!%|Cd~B| za2-TA?r<5_v5@KL^h!NWM_= z(h>xQ^|Lrm5P88vkmImYBJdW_XM#&@kOLj%tGW*}nn3!gswKs(IzZ}HoczLO1Y}&! zq7R!~N7tg1Q{@7xV-^T-8pOp_Dis_D5K7yjoOm}9k3+bJoy4UIwLexfbU|&7K)wV8 z8m)^X8v*W5XyPF&?_?ZHz5>?+Slvd&{lwht@0b@s83}-5ZYxLCDRfPZ{-sV~@-H{<7!5E_PnVA6g03+V;)+a- z2!PG{*}s&yz`FgsA%LMX_XiNu!K;YhOioS(%Eto0nM;i zWcxWW%P6&HfM?TgipT%bt6!uu9TTyqFNCAw72JZ~Bg}p@xgQ@Vd<6ARR*J(t-HrJ# zT{M%F055lD!}=4;CZ*HWz*+SqE=`z~S9gCW&-8Z6O>p$qvXshiDC8YGOy725Laj5H ztN=Ef37xLc4Twg68K$ZESm`U5%epC}{3j|a2$37;_k6dwE_Sa^epncv<_1)kIRS9e z-3qdPZzM{1#d(dW!~Htn2$p)r1)$8SppsrX38?=B=q9%Nb& z!g0-BCP+8D3+#55-SgTlNBcKq&?i&NpZ=WrojRd)qa?`+C|p5a_Lg6LpN^v?7MLOP z!r@5JG(Q^o*)mQ+n4H*(p;t_Ki;x-{-Hmh2gPv_POxfa#LIx}+Eq1b&iIfe0-pX%` z4>7hNxeJj{gn>6JX_&jCcE^Hyu{R@njUVx1(>`+a^OE9WT!qACE}}O`!T&c$$~orS zSGWljI5@chUqD?w&UTbO^QH7M6TLZ^B#+;+gXt*s;h$LR2{rehrgNoISJnQM|b)SxqxYxV_Y~s!bM2= z7ze5zvgmZUEfyCcrU~0lVN&i5ObKVT@6o;4Kk>=US#fZ}^S@^mYK$o@@>Z{Wp?8%k zB7g?PJJeX=GIo8Q$-yJo_$E920;PwFNvM|+-6%5%^)pf7q0@Qw&1xn#ukqF|$}sT7 zI##|L?>Oxp6oQjHG#cm8V|qHyKJS%E(>?8p6eyPr-`!<;kAf_vU)EDz3<4A=lzb&# zPH6Ozd<>HQljsfIJt=mZyez#_IK!XM*Meo%L1 zK*1ga-bU_CoK$(YNGX(i-JPU1wm*_shwk=w_mdbPRDqhfEwtcQ?6DSl>kZAFD`h(% zLFt)V?V>1?mjly5PH88N1;+OM@66m56Ad~j;hgf6vYqwRClt)RYYh-aTK0Y&vD_cdizf9LsKU~k~5a?`C1 z^ZGQe1F#(aPH8rDS`uq&*z29vi$9%+IUy(wgSJ-xrb@BS^^>gt{NEY2&JN|*pW$5wc!TDUOU)<#sq zK+cnA0pUGg8k(Ax|F~NeE$%2AFHE~+K71OWoKv3r%E$T=M!T$a5QU8?vJYvyK0&fq zg#?~GzVCrf)R}iBS2&s+x*;+^r)2CUY4Gx@ql0(4g^^e7(MO8siwz$|>e6S*#V%VM z(&vp^oK=2nNi@6qJ3TyArOm;N zl9{hQVLF4)F)^63;-D#J+u*Ey1NRKm(S-ft*jN>MKWtYmbK@7xe`)MiiZJ5on?KYa zBnbDaPFvD~h+=2ILOQ~aGI2sC=zDCo>>_Cfsm(CFAIZk*TpSacs`jzLPFmEOi{3+3 zB7$&N-`k8b^XxdY(dL)J zAXHjjTGYQI1<<#qq}kJ5@wt~ckatf8bHp^Vio;oczn&U~Z3rY<9qAIJtXaznmivq( zl>p2{DCs+p2|qRXjSv>knEYgvTM)(Sj%13zTWy-~wZoPmWR!~lIMMI9wM>%L%=5JO z1Wu(fPpz+MQt!(KzzAhI3KTP`hu=obq~eRPpX#LYe4q0CHShV3U_!<$)3hoSCkzg)xWT-_VLa!7?y{{sW z<1Ox=_|#*`r&G!NeS&lD9SXi#GX=rJ3N7*%^mTVYg&-+8v_#d49gTlec2Q41rELt? zdmf1ugI81_78yb@Lq;4+-jUF5_0downeg! z=ZG5WpEBVQc{p*X`kH+m9?mjW75U1$f4~Stn=qK*Yk@|&+Jqm!sj5NS<`mV36ST*4 zYLKpQG+nvnQt_Oow>o7oam!$*_YLGcG7C-a! z!EF=qP)-OE@s-Ycd9XtGcyVo`(vZi*r=iPUCXeFnAELsP+a}cE}jTmQn z|Fc-Issr+NRJ6UzvVunQ5d0Ddz*u(-px3K#-B=~!8=3$d9ei#ZGp7p=0vcmQDxaQ@ z$f`rKZaGt3+!WL6g|=NNAkYrYj2H>GBxPse9x( zd_|^@t;(+4KH6EjoKRh%`B7+++;kL&r0|>OAV;EfX}L7w?vJX96A)Rh4;a+O@$G#^ zJ#SCobsPyk&gay-C_fJ}<^lh^tp7iuo(EFxS7+)$=XaO_^*1y*pk^3PYXr;Ke7Pqxf8&RgTphB zj_UbYm65#G4#$UPE{4;WD+IZA>BQ~^q;>?e3!DMJG%3qEi6|lMGjZ-UVD=xM{uW`D z?XCOUYysI!$Ak|qa`6lJEv>Zj_l*BwN&wHjs#u@Nb{}w+kgkfMXID)!ob7s`xe5xi zyk>XHRv4AN05Vc2m7~1qefN*hFT|GQm9B+?)9&6#yDo0 z68UTiF>8N72K}HX!$z`KNuZz37hFwhI&|_I`2+Y&2ENeU;Nhp*hp@3{7W^T^RI6C4 zK~kGLF+QE6^n4~!_`N?NDf^Ee&0z>b?Rfl>G>QQHR?|B@{8iOXEHo$-slt+%h|v_o z@yfbJHzIHc$UU_x-4nckz>SMZg1S6|r{CVE2%y~1rzq0eJqeWp^CStlv=o63gCaXoqToWg3;vBKp-pD4V$oe zyy0#Y3KB3lOMV7h?wh8&T3kjl`m7>cmWY$}Fc2#JmJByJVh?ollLUk&@XKv*(IckV z$@2(85&8oT+e-Er_&%xly0_aek*V8X$!J`mi7iNsvAU|b{$mM13sexXG{k|MdR<{D z8Jl^7^`&6E<3#&^In&Cf9}w=k`R*?$!^`cXd?h*BixwBMnT2esyjz)^E4r}o3)>y0 zLYyQaGd=_NiI*+-XvmyHmNeOaz?o9+zguFh;KpJh9s$J9@TR8J${PZzo$th2A&+SM z{(&*XlWlN&<&+-&pSJ5R1-#-(|JhbciH_c3R67b521 zGg=^bFFsv$#d`T-0~+aE*{059(uI*%Z8{zeTX(-_rkDdYyeD z@1M4G-|w7+z$`78K!K{HfqbS{$tK4I#>S)(Y>6s@YAMY@Gu0BhP2(l$U3mtZ!u2iMDS60Iw1!N(vp*{hxlZ}29kt3^gz|y05 zCpf{0Ld%IWF+@7gYphgfC#@e}?e?;+*8ocs9O*V$O<5@>W!_T0f-nY}_N>c%2+q5_ zXz0tp=@tbW`vPL=&fHPF9TWQbC-uT@dtlS~a0k31ioMV2!G~Lgi z_tt_&K{Sm);yC`GUy9hMmB8F?A&*D*XheFmxT$}5b)zEg6j+;&W2V4kep)^FmE=Wl ze3S`5oMqIuuE(`6GZsgc_ixxACmjeRW2K6=A4x)$0xnslo4ZhzI8;mi*a#vG1}*HC zxMe3;hL|m6?7l|F!}fryIVpRtu%wLuWg1ygW+C0-n++6Z+)cV&AEH3N9^!A*?3>** z>aypgB8%7Kyr<+$J#wu>ZOv+9MU@Q%6|Bd4tIp2>&J6tN;{%>wn$hV~N)9 zR(Lb^(zl8~_5`BJ@B^YjZNSWsZb6`e5VbabNag*c)4NyOoD6TT zgHoN%iFV;ffSHj0LiwL-g~<@g# z*e$qW6ugHLZPm}08I(C|XknoknJ1JfP-#Xq$UbrF*Qvg_?uLmIE=f!y2+zh!3l-GV z&DVtwPtBO9r(6UE(Nu zc(4_65d;7m8>AwedrkoVT7ZzJ1u@2Y1V)z|LrMprK*YqU9)mQODf!C{c;0_cDpL(n zO-2}<6$$U#AtYo~^b})@1roV(-l3c59~T=jdpGS{RtN zPgp8GU`dz0>cXzV+gRbFanW?SgD}Tic5%WD6)A&v*=R<$x9Kum{&gz=+esz7X(&A&a=-wTlSi z10sjZx)SXH2R}(9r*gUVEhZ1$S5g^GS5Iz~Jhorf2g{|GebeS>)svs-IBr)Pz)@KW zLw+c$U1}O2-r(+%bjbAg_!#D_NBEn!WPreskpu z|44q!8)!~Nr&`O4U7QRx8e|jqa1aMm0YkIcfJj@-(n%m9&4|%)Oj0?zs4^#<>5HwJ z7XF}W_@9m_C`}{ofybadi|7i&A9i#j_GpavI9O~-B(|Ha&cR6+>FTB%yOqwlW)YzZ z$A0&}8-ba+LcA0n|C};qiZ_%e1h!)hZbb(^({IHrcyV>ceDf;J0y+H<_p!hU)={+G zR}QxkWUdlYG8xlu#tcIu9o$ceobc#!$#^A{a+;-qC1)cYiWXn9RZ?0dsS`7L0hTc! zSiPftjV&U&XLaZ^)-(x2J0+nnh1)iYVYp)T3iewU-2^;0j6JK2vfu6j@i1HB*0T0e z7T?UTmIVdEM1$%6a2E8K#>HDGhP-91iUbnif9^+_9RiUvYT^^igzF z)NWU5gi0BrL0W&P7UPt1eAr7%Z&@m$W*#o>ng%=&$PC51RXmK;iyV8e zBS8|WFL<8DtX@J*@ z_~{3JPO;L%uS|DR7yek1+;6d#Tu3=KHGFJbcl1Vgg^!g+eh)z=cqb)z)KqMDXoAVs z1rb7!s%_E8_z)W2vF$O$tCR--m1@pS{+KF+vB2mg_d+aq7{AgvBv(kdmlT0#z^I!O=Hdd(6^ zUCx5PeCZ5)$JiY7<5TwauHUrXSdHN@CC*X>nk(^IxHeF^li2R481hK}FqG2_azzvh z6Yb{6Y!>w0K9eC2F$C_Y;MBV92y!BC`Ct9jpnm3S7vaHMG^dr1nc^0OeId|hbe;B} ztAo?24X#S&b+aoQ)_`MxUwTc@1o0Fn0LC@UCza3I&~h|j8&;(3Ca7%QCHIV(QfH!) zmJ5Oy)R#*dlWeEJ%QS1)0X_b+5U>KMX)&vQyxQc;|bdO5w zKEg`)3~%AAy%JeR8uK*{REq-mRDO>@%U+-^8aW_io0Q*%x$H``*VLy-XK~%QE4EXucP&O`cJot4Y-noaUxC8@#}E(#K>bo&;X=ej6YaCrQ13 z)Ui3}O7NkD0lE$O-z945zN+o+lcFr%^#&FwX599>>tP0H2L18CsB*@v+?|pN54UX> zDBwkuy+~QL0&q-86sn>W`f8kX44yoOLE!aUZW%q#@tqxx)RFfH*#~(i`#Won7Ye)W zVJ@DKJfobcy&~%lGJZN#eTtSi(_wmq1=y>N-x;olzK>(+6n*v1KWQ%3Dc% zZGztHgEV9U@a?kgCMnpB#c=LFK5165X4}6I;+h94SRwRssS-kd^Tr@?S$p}M^0U+H zd9=+X6_XkLMNj2QW7A8NN+;oP$?Bk_4iJbOy|7MjLE=UmM&C6w`I+2UI&NO?FJYeP zXWkq@bt!vgTCCw@vf)4mhl&3uVH<6>6|}i4MYnhM99~L!@M9vwx(sd$@V%JWE;{QB zyjGZFe#JXbi8y0m!3}?SWYv{WhyPyjwg{u3n@(;CNSB0Z=Zo%G?oPPKBy|s`q~aaHdg% zu)j>UnaTuTNlC}jA4YcLz`1gtPBbw4ntHLD6>~=!}x}zp?I5Bco63&;TqUZHfli`Rq_mXHkIl|HYMYqL5rEVrT zAU^|n(WH26(&5YP(x-S96Pfp>hCA|%1Z83Ep1)9wA%eU4DEq@5>@7+ExQq;H%X{Fp zN@B(69-6oQFm2uaYIs_X_JK@(ir{@J$9*_%Axv@|S{a=O52LZg)NopC5D;N1%~#9= z9T+27caI)$WBy~(@JM-`zjheiJp~7crdMacq{ni#pF7%HHPo-vZypE~zW&~0=2hf- zFs#z`_Os<|yC*K62ZROM zZfvY2TKG?&EA1L%#C$)>fmQH9QGy!!)>Y&fRT+MIL@^r%^uDxSj04s@m(w`=GeF3z zy60{v2s#kOo^3%bH9fU~TAAO7qQG87+$1T^dLnn0mu@XRYF5lUqHDy~BX&&)E{~W? z8-bm=u9s5C=v6KXuwQ}$_pR*zHOA++E;C!W(~JE zYOev5zk%HT{l`>#Z+{U3ehRe=Y*c{y*EbTIauc{UdmKfcml3U&zzLBDW@Fyp1aWmPED-Ktr-QO?MA|(hBg6TQi5h} zz7ZwMqB-Gq=YZ)Ryo`O%qrS+Bq3Zdg9SCwUd^6m@6nW^UTW_sYn;x z1Md484_jm@D~5^=!kA5pHg3&!jao%nigTb)4=>Xason0Kl*Ngke7A%IaZ1sIq6B#Q z=-_1y8c|GP*OW$(Yy#GS#_9L@$Hvsbo2Jw`lNpFfN|gMo7Z1sMOEAOf@h1a|c5JZ| z4YIOm-U4LHeRL2xc)IK6{?hQv!1|ck2wqOOp6~$JiUH1XiX86n`7E|uuYu2CO-^{D ziH|t;Gu^7<2)c4SD-$a?eKHz^IXt-eb`~-QgAm;q2d(3+rWwjSrm!=}oPQe_USxNq=ojnwk$TFcBD*EnGnm6h zb{~!BGEO|hgF5-NybyySvJ2`Om9gBc{zcAoe#F>4@upe{%kzRtv03^M0b5KA2Yi%E z;?MW`cCX{|<1kNa)vt@{l@QGC>%Zc3P#DmH3^NW^ExCp8K8ZFqarjsIL?bDf`A2Q! z!>*p_(Fo+Cs(>8?>$Qwb1!+{y+t$PyuG7ukPGPTi@x)u|b%ZpF%ZJ$Sz0n01kuav1z1x!eKF&tV<% z&FQ2nfLSDmzr(%=8SU3CDcY)L1lZTcH{>8@_%}=x1&DmcDN}mSk5q^U_Wb+TuaDhw z_;9T!IZDFmqcaPG( zTe5%ls|srx!gFjl> zbC7(_fWSmzbxF{cIJT z6oAwgW5AcPnnZ3(?wj&CUmB8yy-EEW(-A<=qq86A6-0v*oVh7<_D7e`llmwwz56(U zWV1gEK&DoOMyy5t8;nFk>H(#&kgk9dj+=yAYWh~LHy$uV;?UI1&twv6qUi-{Vn4)S zW^$=_gZZq44m{N)rJbwH17C0mg47}g5bVb5O%StBO98$yvb(qNG?@DXeWDmF6uWpZ zfeHCYH!>*md(KQP2c~gzA$s_v%0M^ra#{xNgCbO2JIf&L)vi1ZHy%Q1b#iFy6xmc$ z+pLpeCsU&ItEdR+`~=}$uoo5jcqm&>SeNquxJWUJYZ-D|=hXI~ZF}`5U~9zy-)*!s z5~H3`9JA8PRi-u)M8c$`Z!oW);b4TT%_Fw)qAnf^@~)Ml13@iVuz=qkbHdQI>>N}; z0K?1^X*pP!-@wy<1CmWj@o}s={1~)TKT!OBa#EXxjSS#Ay)JF#^RJE_gF7BZym_++ zCTPxYpYnacX~c`?1=u%g!)4{qR(sA#+3fA1zm+1k#Zo9F6d*IRBvXK4X0JyyiC+xR zNL(wj9lqLbLkV;^gzZJ<1(_VwvHi?Se}Q&&X{_rQqzj%&%*bqBZzCpakVQ%y6n-0l2&wn=JUntuie&_Rp+r#R_d+&Em{Pm>* z%vqY8?_X13zw=_c6)@VU0Y!oP!4Vb#lKuwrue|-jt10n-R%cD0!G@rab_ezrc+R!bIJ(n~ zne`(9f<@B#5FXyx={%b})ro+gtz?pC%J9%k!%k6Py%5XGau(S&MvNFfcd_Yb4nzvh zNVLXczm?vw{fjlWB?zG%d`B;*Ag{s2c*R-skO;q0S%D=j8~qv66p)Z6vm)J!Bb*Cn zzcwo{xZ+URBjEsPzme}A=Urd*nb=ba9%gkZdqr!yMh5`q2nXHI0U$Ub!{BK<&%ysG zOy!M8Ks_jFg1sAJ48oL1l}U2YO98kr8&_{8KXQrxJ;wg?kDRzfPpC>L4tF0tkpZe) z2rYB!sF~6~7WUPw=5aMCfqqJH@mm^xSGY1sTDvB00E`KF?!K$%7ZJ}=$rg~I7cA)v zIv@ArfFsMom5d^z2G1Hkbre~ELx0Jdff_PnVzpBfup`TDM1mu`_x~3V*;5}MPI58L>VJpF;A0qTl#Ms^|T=JLKmWWpT0k(yL<)c>_f_nE8*5!#6PuWZ=WAmK7Mzu>a%Fv z;LG#&Jx03IG(g0>`w|strFjPq7%0FsV0yd)S*sEOMwts`-O87ho&D>K?U9l9Yq~`CiRVUKUXB)f4D$VCv1ppIh{f*RCI( zCH&>koO7}*)>&lhHXAHd?r&?furr(>UtU(D0G8orr6*5oix~)JK)f3nCA@E`yRmZi z)2upZ9L1Y|Z?oIzZBK$K27g@3Kq_a`%Hv*D&s+V=8yZ|{)H~17fPmd9noB_b9;c`u zPYoV;l433$1(WgK`N`B{7W7K0`*`bA=_JB?q@Fvh9T${puT@O70RZ?O)y0vs#c@tQ z(Y>4yi}GfuCQecLm9%2vM976OF83A*G5zuY$-g?=VNjzYm{20_idpT$DUlD%pp?hx z^z!>HT%&I~>)i_-&27#)fC}cG@~&2lB+T_4SiU~gf`(^R`EOKaLgdk~pvH}OgN7d) zM!*!DRZ%KpM0N93k0f+NRAMy6@o+BV$Vp>Vf3X@)+Cp_yM+4^|LBWMMbQm&^gExdm z%)eA&L_i&*#&wxPWRAUvD#eluBpXZ|dzxE-k$fW+=j&WY;3A7mgoYKo`sSuhfS2ns zo%AUH@5Wqo{QUKeu#}h4YlNq7tRG(v>u#Gh>!kiaMx7UMIw zr!HxdT@(3YhA(#MO=Le37ku#aV=qNwDvh&8rppxG^gci56GR!Rd~Xt}^Q=-q!hjSI z0RenP0264HTPN8$!#Z%u8Wx zKWrrI5M(S1Tf4%9!t7Y;*##!YRMDiKb0k{Mp+sZKV>TN^9+<$$m?usfr z#skl1(FRb5?sVExn+~kyG9;f$1m{lU>@liTXQxkh54X8l?n7}Eo0x;$;ua7`3QFxPUpGcgHHqdo9MSKy)PnBR)ANE<|;wO z$DRRHiF14a6N$QQ;QH&~LkhIEbYwnHK9_x#d`_#p{#+EY5b%(0Xct=TBvlL`HXNv}sh%?$&^Y9+e#EM) zls1R(df$EpVgOmfXVeZ#45#0s1WNYpBexRsx-XqSrEY}I@R$$=a&pNg2ru(n6y8mY zNC}WnIrZqWa-(oPXKXLZcL{_@nAffoD(;#`c5QZ$g3(-YpU7iBCJlc{e zh)JaC*6h)MZVdq%|&$7QRnom|1SVvWPa=s#nhaIGZw z(;&NJZgbe75_r?O}EmJh34K)!waVkDj0v>Q?#e*3c_gk;S?@ zukE()<+{$~iIeAFVE#?4kMh2+(FD>K`e3A4D(4nVV8yW{FDtTpnClQ7U1|uF(@5vf z2lwZ6q_QoJyg0KWEc$>dEbU$NMF{pxC|Xgr=yY0)_<^e4%|m!{rsB}ubdJwP6PIH5WqHAgNmh*Vb=M!Jj4^`?=7++b zwxyPX5)%()30G@Jqu5$YsjTI-i?g54DCM+TiPf`IBk%8qy{&(Mq3=cNEc_(RkEln3 zI|;0#23ZCq2K|KwE87vy=DTr##^l>Gv~RyS4>l(g$PnY$Cq7B5XUqCXySovV_*2L^ zLx8 z*T7#j+gTi)mfa3B8OGaj1^?YgZ(RCh{_4AIgVI^TPAUT@>9&w_x`IH@JGe~|NGz+& zg7A8Og>)PE&)8walqZ-mM+3^4m|xbSk^%xo&XaB6G=5VH81ai~to*8ZGaq`hWOG+) zpRfo3!b}eug$~&jSCT8#^?*;!4kFNraZKy}@9_9O&^~*_0VP|-cBmQuu`cKYnlBXd zBc$s0&JsQ$avF(i8T-t`<{FLCx0Xk2C|NTaoj2xp>N6jpijS<+f=#5XwgP6uiR}47 z7UBog7cRlbt!JDra^p+9BiI0;00Afi7;AXuEsN9G^XO_6BFCzrq){T2rY_%q}w{^Hf_NoW^R|1CHFE*UVi^a6v^ zeXu;Mc1BFLcuVecbf4h%H)J@uiiapjB<#;nPJ}tYf+wM;w7O+O4m>9R4eeplUYzJ8 z(RY*5%V6|dg)#$+!$U2$PY{B+;Uq~Jrt-+ zvOEr6t{3Ag?)~B@00HT*?98feT|&aF2oIcyexvjImF~|+Zou1-aLkrI-h?WK+PkSq z8e;s_+QPGPb8@Ur+aHlvAwEq}_~OHSgFJYh!Y7K1)MR!(X3KXU`#QyFYpkVrq}d!p zGHDz=Rd&tn7jGA|`-{7uwWip3H!M>Tg*&hqJ6|P%^rW*JL2jXt3v9o7Sp zOvXo#h22znC?ogQu>P$|;(->N2`avdM1x4;$?&uUbm@XwMPT^pu+SN*Ynfjs_U#Ve zU5iypf@Yc4NhgQrPlj|?B#*4mX&Psv5CzC9RT1eu0FP-5ClEZ=DlX_fwx(PZuX|>M zWRF9Yr{?fDDJ+wH^S<=7Z0=g9b>;1i*_2JeZV*3$Z#6zEN~9$EKn=H{f-~CZ3ug{u z+;6iqAiquItAmR9n}P301-dCd2~p#1HI5oVvn=^7=&Z@WO%8B~nMxc--`cTtkkTFo zP!ku+Djye6$Pi4f3EYp?7*R&X4%(r&l}lUcpJT-s2XNd5eQ_Ec(;EbaYH$4tyoF-# zaN*+rNt&O5?RY=7p%tjmuL34$TY}GE0mCEj=*fRJt*$+!50AvdGo^9SpX8*E;w5b~ zKdgGt!7D#O11)U-Sx7QeiFP|Jqn}j>rb6e})+wV6?z$}fQLeRfj`N=kKuC!zlgzfp zG2}w^BhwDA0tfj(L`Y%GQoAHYF|@TKOW5(y5hyn)(#D9$g%J+srJsL{(cHbatg3*` z)`oedIEl{x1gC+cY4&sG|KYNX(gUEaJf7M{RNmuJfz8T%;WhdzweMFKK@#97}m_my~SeLP< z)UFrLSNRR~9#6DH7Hkv{iKp6>Qu4HQPBQjsuYSnW`ubQ2N4SEQaA);VL5qd@)lcD3Ka&Yk;CW6<8%D2ET zY{vcpJgPMh+MSa&&%|JGOLrHwOi_8Uv|CXip=%cDHLxIrWFo>^G z!ad}#ee_~aTOXWIY#c0$yniOq&K^3N>l4K5tSoTlUPZRs+q;#3T?h&7YcT_h(@{v@ zg?YN=QQ)OIY2$3F%KHHXwaOGdIau7{Vi8P(=MGQ$Vk)DLZ$&ypeATv}$uAMS5lh^8 zb?7y(rUcLC(Cq^n%n$AeYVt!#U$T$M+!B(2;{Q5}*IrXKQ^yOt`_0_w%t;)Dz6rA- z03)+ZRYvVGK3H>KCVJo-r_TA+l=(9TzTwJ0HHt`&F!PGiASU@#F$5PEB8nj2 zvxU#ovHts_#jeYaXAm#X>nWD74L z$S7cKpXp#^PAc!M)p!AJn#d{Oyn{X!&w}A%s6y53y2xwu+Z%CxlfhIAF(KVp^MAIe zSLN3GHBdn*_3mjM;bVe6xvaIDB7xMiM4IY%oKfsnigbTdTkpU})-X0FIX(u<7O5CKs7w39UfRD`%qReg$8%R}FVg zf{bC_uuh5g-E!cB@Pwn$2y+caKo>0kCOoSjAN=2QAK=u)J9a6fww;^SnDduOvaUd* zlL(s20{5sc=MZpGtfGR^w~ZLE$TY1lrtlHcD(BA>;OPijl-r=5#L}L`SwKd0TMkR( z)sN+*LDeuzWW8jsuOPELcI`!R2vG5a(ewZ0F>)Y5IT_yNS z68toZT=s&))>H%?$rNg)G#sZ}bWmNJz(o|D#4={!#if4juZ~Y8ILw4H%Xd@jY||>3 zGeZ`a=}n5#&arhF2RWFn{H#HbaVGH%HyHmGqe#{P?Kg@GtULvS8ELk-*=^|=6;igI zU5-hT0*3%tpqt6K@*o!4tooa>4eu#+wu@FK84*G^0Z z4ihDG7Zj>;Y8;)_QmM*Bk0ApIdH2Yej7Gg*-f@th_QX@ z{U+O|H7E8gre!&_N5Ch19$HSy7yW5_ZcFeFMa=ns`|SH)Qyt9=pICbf*3Pw7KiT@; zP%?_iO0AQVFjlM(-n1ypA)SllgnN7GGVf_Y-YV`v>FftomLv;*X0vxYEF`bzYY6b( z2{XbzKq<;UOJempLkE8zoxL=6iX&6O0fu@L7=nUv#E*{R>Y-rzv5T*2A7snw=@L zMPSW1ku&cw9s0=|pt+Wl4QJpJ*szvtcYXBB77ie|Sj`dtYKLFDMzA3axKjVb6xrH9 zJZe1rjL#zVq~^eVj_pbvrvB8$iW*>87NO5$qXxtbF4q;=8DS{WG>~emM<`6Ra=Eg= zC;%ySL5;#Sg5i+o;i;da<)I^$zt5>yu`dhu}&0SpYR!>VyAuo~h#fEq-{Hrv;>vMHGDFM== z&PRd`U6c#s;uD-tJId%^7+cIJKd5h?F6bGVvz8ah#i;eSq(7mlr^1aD*DuM;u?w`9%lUvKDi{48IbWdh^128*#fk2M@ z_alr0F8XS3;ore!j|OJZGE2V&hCt;{aoYqWBSV{Ecv2G`*!kWd2=HbKhY_8`NFcrG zKB6#n(|J5~f#fn(m-Cty)YinD?G>0`*;4wK=yzJ+_n&ou<-qkUKF@OVnDHMnJ`iw zT|rhcUR;5axNsVuF3`$BO+9&%sEt8lA1c*&G@Mi=?a3L-9aeeKZwI%|%}V)aR%u>T zB9t;&iL*wRQ`4(hQhXi_T?_|dTY=a$3h2ci*_BxNSGnxtsRMxL2-*_KOnYdVI>nb1 zMrc||F#@tk#Ab;4#&0W0tt2to5-ReS0X*mUv^)QpOzx~y^i%Xewfhqf zWN*TAK_hsnu`rN$E=>nPkXM0ja4FpDUeoE*`=^ho7VeaOvrkR8vNYc*fuKkdyhJ!- zi6r=h_5oc+zSzQsJ2{o(bB$k`0=?~y@+&-HQK|S&*i4z+L0ojcVR&fkZ#(S2e_UDT z!c?%u@>G=Q*3Ww4c{fG!#s@2q^hvSZ%y7!Z^&Njj^W65e-%l&1)O|+nj@dmtRHmv` zei_zKEMrt4$wTI1W#M1Pui=i~ukGV~8Fg}$fp2F}%-lO(Qr_fmSOo9$N)?8afbo2t zsk6+dD)6(5yT}Jv z%SlDnJ$=qCAu!R85h(I-+W+;rP|&E54wPT~k(eagL-mhl%_S6gC!a-f z!(hh=3y2+xTRIuXFGmK;E@PSa%`+)YQ+#CuomelUcw4*vz4BhZYib*wshxvDHE)x1 zQ}>5y%^KDRyD{L2o=SV9V=>dId-Q`;)Ys1%?NgA_WR!EP?6IqHVJ0wR7CPo<@%)1N zm@tpK$@zmET?Xyyx!VV-fLT!t&T{4u#Q8!NP)!n5dzS*gPE#~jd{~E8Tw>_HkH&d# z^|{jvGyBU*mk^Jlq;Jp6jgG#1R8LUL9@k2Ga#ry2(P-7`oJ#Z0)1px3HHd;|aFOuq zDy;qj>Ws~KXuKQc9;-$CtHKo7iEqC&-lSf7JL{XYk&ljw8QVrJP6&oHqjjmv0#H%0% zZhI)1F+zt+oMYd{;StYIe6@CNoWh-$&%QLlll!t}b}BhqH?erxY?Zxm77oMZAW)u0 zxn!ctH}DJU^Df#Ww8H*e_u1?n%L9m+-01q{sdYCyNV{GjT2l5Se1j|}!(*2#_g_G^ z^*a>CkA@f3A|W=PUIsp!a2C{&xUGp5OjI$uW+h`;UwLl)4&acm23%} z#^Zjnwx=VufShw81tT^4qz|9*KFFatn9D@wzy&j|BGGkUQr-I}R#9FRel@MwX?_Q( zRt^%>=wi5O82dyZSmm=S8HPu5(-=i(?bZGT@c!5?dqkg7W4-9-W9<9J|;$<2qFWVj3bp zDwvsqF<&*3dO-$QDsuH_#a26>3ocn=+j2>xpDN%4#E)Wk-l@emRHkrv^!Gn)R~qub z5<5?QGP++fy{}l1%P$wPi?Cu?<2Eb`P8ds4;7>& zV?<M69!gZw$aXV#Fy83 z6p}81$(53KJy3s(dJ6Mxz2*eI&KxQx@FKZ25_6_Ryt!!TSpp{T9+2uhoU48uT6DlQAsePD+IWuHFC)UcO zjLBF6rzQq%R1pBP@)PLuN3Q6_3OHSxe&wh}BS41ewc+$6q)!{Y0u9dmteUJB8{n{I zQOxWF(aSPW%*w#hEjkezj_+!h0x#TGT4`SxQf==y^61~A>2=Sn_*P)@D#1I2HH65d z=zC*jKdkZhErV(sb~`SEcH{$B;yQUHJkA2GVfOjYX;`$yNC&{4nmA0gV35+vj}z{H zPGJ2-$TBh%CKteFx#ZO~Z~m%F?7+5w;QBb%2Q7$#Z0+&*zexlX5+6P}+O*QuEM>d1 z6u}S`>4yQzWD6TfC0oEBJ|TY_Ipde(3Xc&k8Z$vEHS7KcIg=1iR zkrk82;Y+al6I*A}RZFYgp-VTt3#^l8m8E#N>e=+F!3)4KrndC3f`%P7z34;WzctiiN*3u_VL{8P(?kEM?OSo37Iuq&BLgj&- zrb&kD14mBCOhQNh>m#!~V+fxY_99G6r#d~evf+cd#CP9!5U(<_jdzWD>xWfT;j=7$ z;=#9&ZMD}==B^qd)ZoQ)Yiioy!{SZ2A58e38oeMtH8#(LKTz)y|G*X|x*KL#lM0fr zDI8#bA>9p^!Ckyz>xAoX%``qU<`l{Xv<;uqshMFpRY~R)VBQ#G-os5|l^(-v35Oz> zt-air-IB8__m5ta)5pwqB{O$6(2*!Q*$y@YJ@h&2!g<0;RaK)gcp@O~f1b3eyC8*S?GvjwbIsx$+b9 zgIl8KwZCPEW1(tk9@x8AqWz@IV~X8G6fHZpcF*h93nFO%%0JYYq?lrOmxH5-Zd$T_ZQUiqjEU?7>%-1uUl27AfSF z`72uZ*C|^34dUyV$?^n`fNt3pPtAQ$3W09d>Q&jq=JZL*4LRUfhb=JCzCM+P#1Jg zDwVLE8~5G%p}~L3!cp_*kJa4-?K~Pzqp-Q02a(l`K%-+=i zrTh%{gm=hz!zTgD$fK{NWVD|5E%+Lh7x+{?*O^wreDdoCF_QPor9g|O;wSI9Y?rA- z&q!(bbbNDq%-fH2Fu;f?LIm<9?>^pI|7s)D3Fm|eAX`cXA7A}B)J5MeCG@yBk@+~( z1ff=j#98=Kfh5lmOy;jN@YIsEFx$(x%$l%8E7RZ`=Q8$+@)uy+BZY|hi61MX(t-BhaWYfTR2s4N^;acr&7 zn~|mG31)@vch95q>VnqKt?E?*b~2_chbmg!ya2%(!JcqH-vUMjSx|djLXv;%@+8=G zo_chhA3Tgbut^&C`xc|pG=VTHZ&)JDRTQoos)%K5fvK#|dFET0-|w;K zdZXQr7h5q*l;-SeB+s93%qH7bRRA>nVp}{L24%UY(Hfd?N90t{Zuyrt4D||^bbMi> z7B6hTaCd%lp0x{y)M@5Uj#y-f0B=%AP`;5_y%S^Wf@N`QmjuG9<+?gs&qYQOx)AW{ zmdeF^pVYSud4c^CWb?(r_4#Y-6Cywi|G-1>9zy1TN|32d(uGL3HC{A4=P3Q4^56$59;-XgmfUyQvSjR;PWBXb+SJ))CgaZ!8qSLx9D*5A5b5rV*# zWr>lsN&-;88Y{H4@h|BIwb|=Ht2&~eX+%oae<+)I2figoqy$s~V*r!@qL*M>nI7Uj zO_wD8g(~G?|83f3JhOW0=n(8rL;241+*6qHw0i5#dF_W-GQYE9QRLo5fEpCm;+LNb zJYm}S0ezcOd*L^RXw1)ro@;xPQPLTlSNRe^fv-<`Bnx>U&|~D7B+g|? zyfPH`-LnN!Y0V&?_GR_Ste#S!21L=-dl;aKv%p5n)xW;LrPg9{=BuBBdf^gjVy~X7+}U$FV&qo{lhh?I^oks z<{lNnAZO4*iY+)ELlfuRl}3@W=wonaE|ke%!55y`BIOJCDPJDJTJ+qbbLY{B5t3%X z`+DTK=ZkA*MH-qz$2vZVB%MKu$BL+waYawWpt?BBL7Qn&CL+9R%6Q4~Df!>5TiwRTC+KQP98ifnj+n^W3PE`Kf>-DkJZ~77F@M>0m?YpDEdoD?Jg|% zp2-9P_5EwG`g=zgQ2q4;7$ucRGSd`g6KJkPuYGO+#~{GmB(v400+U3p?L@;=?QwWN z{0Ws;>cTd6yqJbOkv1J9t`ezcTz~u0evxGa>-(VKQiS;NuV6mEe(w}(MnTmz1|Q41 zkjs{#?QkBbR0gTvPGatYfF%1m_ZHJ1C_SQ3fnXpuV?KgXg=3+!pw=h|B4McaNJA(O zTM4ozp0Y8IMs}|rgKo7Weh6rd86Uue5qGec+-I=y_>G3B# z{SU1|l`!ZxF%e#alM{0=J);q?3S%yvtrvq4{6D>!(`vgTR0gs^#(?lxy<@$AgG!a* z6qS?~bIQxo82=p;vu!KX-#;fhcGcPu7T$RZsV+T>*Ez>r#>%1EA)xu8Kz$Rj#x+|r zJ5Chx93%C7oO5Xpu^n=!>-`_d@Q6Duaev4xsBg@RI;oootLlA2nr~MTI;QF7wTA7BtFvb8TFmdGegDkUhk{NzA>AEI(c0jTMflK?b=KME%OKTuWnaNIFsEZ&{XfGg& ziE0~{c=Fc-`M5hXaO1l|7@th@PkFoOg*57sci*r8Egw<|8$k+yb2HD#6ep?L!$|Wd zxXw5xCF3Y&a$cB?;DA{ek#3WqXk(MeDByKQL);sH}sLs4TI#K)&g728fH-}IgZtP2Vozgp%*{((}#=W@>3*1z*^qm9EcI;moNb)MEIbhrFqDJIJ4C6<4-$J2lcI1zW z0V#eYEjsx=4-vPFd>9_Bwxren4Mi;c{tda;us*wql@bUYO zx(Z=7PZO<)PZo1ZH>jrZ!O&ylF{R=kXkxFdI3bp!Mb{;t1^mI`p{Rm!e&Tz2XVY}= z8jN$i;~U-*t;UFD8zvQazJKrVl>5^SH(`5ceu8<2b@@uUkTB2y`uF+BEIvPJe3?1_ zFh)-cK_HzE{boJQtPz?t)y`|J!{wbYSet6!8EtWuXFLzvfa@9?!nw*&l|oEbZBEv- zz5JEF0$}0!Y;Vj8Ff{Dvy}wPfd|aD-GaA5GPi&!S=L>xjPv;ORleo{ngfwMPr=PUf zzL-c$4FLxByvGj?Ce$M{I5J>%y%S{()!ZUiabtRctMg(kv=goSsae0OzYYfOzI`Bj z@_rxiHlw>cTujTq_B}Pb<_o~|8ioPt_`zFeildsj$M+u=V}oV)g>ZnKdDeiS*#oEY z6BOet`X`do&?j`PVEO}MB01`d!P_FHDL}Xon*nz2-kP_ zylpq)Sf^(U*olF@Zx{v|1fRh;|G7w6fe_>^KR)Nwgj0dzBp1>HsB+)UqGLalc95hB zW9)?ZaZ90pejbrl|GJAJ_4hin*x74Iy%cTw+jP)=u@RlQbA5O48M#E2rCYM>>!D5o zb-vE=&>cl?=I0gz)gyi?_1E#17B*c=?z=PRC``8Ao<_+ruf)Kq>-v{aIL^Xb0BAow zb_)gOm)$Y<_=)*161HR9_e=oVErLG_XJeUc;*^mgWPrh5&*c7QPlWWId@M z9@C&k2}D#u`jQ?!A;Cihjl8v9#xQ<_hf*1u7K34Ni^~DgaJ0P=ftx(0LJ)ILK2MVd zkVlyNPIrhw2NB5&w>KdEvPCo{g2yZFYdFj6c;x~Fut`AP%=e=$?o5@{$)sjEtvZSe zujJbR9(Z-apICS-&=j! zlBIzx>3lQhqt9jz0CG61R)l5H-s6)kgv39eM{@CQ<4f{z+H!s@~n9d;VYU+X=RQ zd);DYt~a~gB~G@1G!fuKi~X9kZ@z9bfpV-}CXlo5S}=n-oE zF|FOV_iP&{+28X92c36O{U>$A@&1<)zHi_}R!uJ#i3#B$6bz5hfiy{q++cc&OhKO< zQ)v@xni57>Vlz-v3U&+*eX_Jy8ks2Vs-TTMEv}jaeauFm92*XX$b^nM4$I&l(RT}v zv#=qOs^yTa0?&hRnGdG#_~JTl2M7=T%%a3x?m~#(-nsVvovSZK5Nq3z)(DkhVC1X$ z%~U!(1C~hsSS`BbZchWi4vC4lED&u0wv6(Al%TmmZ?fau!%Z$INh+Wu_)NNLJd`D} zI%gbLgZpaEpC#Yme3O4w-yf}_a6Io(oc@O3UrHHRidu%bDEGh(4?V?PpvGImZopEo z-1cYk4N(do|}Lp)}3U&-jA(1U2N; z-70ufH0#~N07falX;@A|8I8`bIo1aqF*8*7y|`D{Jl2S+gbdbJB&qea8{ADcK)}v_ z4=tR-#RTl!G~h6?^K4JEPA5tR(`~cQ=m(?DbQY5+V$u@PQyTx(EQHLWc{#VY49e3Xu#H4jo#UKNi6LPMK&N1?895wGCQcB-C+WNX3)PyVjU@7V6O^&f+n$~ z9$hnhV-N1^Rr^ROk0tbq1UM9QbUnueT!XF|${SywF^eUeT62!53n6 z&--KE<*0tJ&$h<0x*~Feg(bh3-ksqWm^L?!x z>8;xXJb9D0M%t*K7SDT$WAZk5{;}c+)!&=Aom@;E@$crDgzfl4{0(YfkTCQ{|0WEk zOONn_;$&ca1e-#ac0~MNivy}r2Z?F4^(e(j>PcMMbv338xoOfBT zq8uRixv47yj`b00j;0D6r*wkAtD?o(?4(8QHzaPtm9mD8U|3SraoNn?%&X2x;5t*_ zQG7)XGm*>=_nNi!NW*!&T=Z+@(XS1fPlydrZmu{c3YcRf&E5r;uDO)#DQjTppz`M0 zk>>T>}IJJ|Z|pMUJ=UM9>aS^9*i`)dM$HDcBT)0EI*$S8 z!)=;Dl&M3Hhc;%!19j4*{gW=^-r`{>A%7zi5~c=Zz3MCwFPU<`c2O4PrIyplUN+Vs zDByGF+2EH@vU9%zByTmzKS-{nbIP88Lp&s`ch!MdaN8bsNmAlC=bG&A=~<$&?8P4mJ5Mtsce;Jmu&5 zz{W{x;w&{wGb*IeBR9yw7`UNNhy-r6DUw@rf}&i^WlTsbl_TTF+VkqxjQtLnKW3^} zag@U;eqJPk3ZpySMk{edS&g?$A$HQsL$aNwHN_RDh{H+Hh1wzm|9`H*FFKnCOXgdj zUH$lDu9*U+5kCx_h}IAeJ8CHrFY-85ZPKTzSE=!#wt~tl)C%9Xu`zwg4N}b%T2e-}lgJJQ>JcL4}Di^l~`1K48?J+9_20z5T?HsBa_Z^+R2Ae|CI3 zFYb}1#}VAWq}y=&_3S0yc&1LlC^?#{JqVA%1+o1(SQKd$ z4251auw7t2FXmOi??B&DmPoRN<133z+J@mJT1+Kxvxen) zw#oKs_3{(u?m}P+2x4Oln4sR6Fk6G)@vJJOA0eQvm+z_{kvDPOS5!1o7@1o(+jaBh zV`VGN>WMz;GS_HyM>vE^qEp7+I7&mr(`P8U72N4;A;xgV3T|nz_mLgD?ZK|9h6Y|N z;&QMZGTBnIJ2hXyXB{9WS`{4?U8$}u#TC-Hup;Nt*L)+f%yuXWz>GE4cp`?ctbtI3 z0Q=A)f5CY-hQ$g2hZhyY*b%4%&^=|Appt_jiHl7bI^|x)0hUXfYJ0T-3J`e|1Ku5M zT-R^YO2{Wmm`AbQNIcbqNxl8nF7xnuP$+H~<_GxJcD4B<_wxD{fc~K%HF=4#^q;om za%+|XA?!cf{DOBXKNt~`?3(fjRa8kMz1b|DQ|J2(E>ea~7Z4}rSI9cxxl{h40i-w0 zkBr9W$3el}>*o=e6OZtptSEr48Ee$1f z!*tw_^)5OmBR$JzAquQ>0<4vb!kV%>#+ynR0ZfseF-VcG{JXji&I#JsP=K%E@X|iwF0%`UQ$Fnu5%Ni(&3*(rCK5HuG8dseT|@gM z(Qk5X0myR(TJt+s$+Sk?!X-4Hz}UJ4mJ0g#6aiXribx4dW@Z^MfG3m;jpBocz%^Rh zH{cN|k1b3^%nR4Wdd#ovhFQjdO;zboV|bj{&{8Xsw`odN7O3RsV{*TUwQ8~$pH zUYe9^>GnvLY@36OlNCq7`I!Ug&xGhGf|ckcKavCqf5R}v0J!`M^w=9Xvgc6B6IsO5 zNk2B}-UvmIx@wR|M28LBkUc(5EEbDMw850AgcWlu0rUc+gsVxKLvi(pmZ(UhKHI4i z|6akv803bz518tQlZSliIBvQLYg()C@zEHV&sE`p*QRfU1whndVFG^83azYabbRs^ zkkWCD)Dte7$-ZDJpFG$?5baEBbM?EoYUl6Emwd2`D~ zn!<=h1j?BaCo}&aJ@ez#WJ+>&$$jm^5RatXy$9yUfFxgo5hhNMz;EI@JVG`5Ph0^! zJ|-KZQi@X4nxT`)(Sf$XbdBoYM(bPTV(01e3o4EZ>OU~Se z9v!+G+cT&#Pcq9Eaf+vvi}$o5R-P917G?5l88gYo;^M|OtV5Meqtft?btN~`iT2g< z$*w4BbLrDV{@&dzYANhZ!k@7ik4Q?M1S(o%Y)4!kcV^C3cDvKQN!z9~VzDuHX@q-BRa>Yo44if^T-6S{JU7OqqK640 zYH4<0K-1o1F>L*M)1F(F!*>=rOxd}(O6?w^RGm;O3js$#p`U^q{DVB`w{$1Uij)5+ zQYLXf+PCBI0zA~36xD}TH1|b51iV5Fj_C5Fk}>nY=Qsk8)3Pq6*Q`6gptino6KUFZ z*<(2_Q`ab#3bfS#oj2mAQaD08`Q!eDP_*17 zQQh)V&~S>&bUF0W!%MhKR6az%dVjoH$K6>n24Ds67GYV3JiWH}P*>G-GOy3Di}iXp zoiu$WA^vQoxse3|2yRAw>{=)v@PaeAZV=jV=fDk|C$oVV_$qx_BvvEw*Id~VPC&6+ zQdn~{hP;o0Llb2OPfTS@!Z12#_qp*{Y`~at8lwf|={6I!d0;`Uhr4wJUE6(z&kex( zn~;q^*Pat*pnugR7&gkTc-|Zxk6_!v!A5Ikjxv)4qvr%gz%Yz(^1Mr<_mWH6<=hpm z!sP(ti9H4PwN~g9@l`dNMSMmh!~V2CvwkPjmqg8dl4Nq`_b0z70i;CdDyeGi%~+OF z(2!7GG+e8!y4f%jxbOD1woapHUVhHetb}y?fsL(Pe&xoj>r(A0r7$Pj+Kbyt(Qo^u zi{y$%1>vG7Iofj`=v>eZ7F;nt4#mNE>wySfiE}9p9GXK^u1^-N#~2i>Jdz_#?vB5! zhN;LjUOOxBI`OAa=dECRT87~^SC%kbW z>uv8KPttW}aCDSpMmlb)=mE5=krE%VhJI z4r?X-)?QKS{}O=2dpehE4v*#61BtDt;1^94d7!k74ZjLR+v1IUwAyggG07ZsdK(Tn z7}G5=mc|+&xj5w>9sdhATxg$KSn7sBUTw1%f>4@wcfG~l$Q<5m$m4n~5B^Ke+Jq(} zXrO(;{^~y($$CQe3u?{o>s?y;HMpeZ$wtdx9OoPkrh3JYU}7x;{>kH|qZLR;E`TdL zdt@m>em)lj@DZqX!%)rvb6DKh-f}>noxFSd;}}Kas)PMB*B}ibh_MR#ykXrvv7|W@ z{_zP)6CwXUNeu@k=m!xj+{3#=J-np>>DWG*A~cmJFrOqMp(mkUdg;bHO~LphROWa4 zw~V4}&q?L~BKlTb_7 zJf9V;G2IJ!oQ)#-)`BGs<74ao-w}o4rcgs`vfLrl2t$Gf5JIC7`i`|?!1u8!xJ#4& zII*k|sM+0ExbY-9beqP+8RC% zih3w&HZ<%A>DWmLTEnxtF#DO(Qdw-X6G5-5exD|9U5g7IUd3;Nkn@pG# za}V~N_#3sO5DQ{$#U4`$#>p&Dz%PvK77y4WgkIJUAm znlKYE`mO=0Z`}(vq!mv62cxwi6M$%Zv)=^#)j~~QUDRWc+GRl~G3mGGHl&X+qqfbEw1+tm82&Hl>7N!QKFcx>RSev5M!$Lw0L39&WyKWckBp|e% ztGEnY;;Waipykb5u=gG&Cjo(GxZ>Rf^%~s3g#f5-;;$3uM6a1C>ky(uMY#jJQq3!r zg;#Bgmhgocj=rWF-<~9Z4b`Eto#!vC3h*=xgJt~7Xt`b%-dJoz2YMlFJjOVr7$#-3 zlg9K97*S@{XII__Kj-WNx$NLC^hoL#hwq>j{oQ8L%vh!viilz5E2@(spcG4*bf4u_ z!XPm%7SVN1v5Let44T}R2NGgr&S9s1O96&=qC9Y6`XpS;yOzI!48CC%$YJX}5J5$+ z?27v70p0Vd`fRxCpv`t4csj+&gBcSVLRW1_W)4asWmZ8Nc%zd;6r(+5aksZs+#2Kwv-YAxt**mlu^$H7V z!3tI6A;*o&8gY0(3Q)6Kt^y~B;GulvQmd9+aNHeBzY;l>Oo&R}6DcwfpN1V{@%r(| zFT@;r07t5}eJyijXIwjbw)K{D(a^V8xXY#}Zrc(I={k5}iaCb#I8acDxEaHb5hg7( zk`i-Szq=D_3bR7No6_4|>0+*1lfAj^&$59pe6P3P!#PQA2~W$~Rs_{KCq~FO-7(_{ z?Nn}PQmYnAZgdS+B6uGUeWBbGxPD;pt^x0>libG2(-)IN3)VQ+6<3C`X;|?rsV`Z83ons5rQ}mUZV8u5 zx)qLx22_9dq^rIt%9i%XhsePngv8#dL7xiissB@{A@!)HP4!0Kw~d;tls?(IV}Mr zhO`TXb{cK4aWy5w+02UcNPgY|)(poJ% zZ7E1LC>#El842{BZ?S{j)n@YyKv95EWfOxtnlUYd~BOEL_tqCWRjyDdq8!e&f5xyj)yMzu;SXh;*>e53m_H>-^zD};Qs=<&t2W} zT;^PHcYQI5c!~oqYIy+!05=UBlIUth(fW5~f^4hz6+k9{I7l`a_w)Kn@@{90!8JcX zT{fkrZ~vE*+KG^*@o`|VwA-rgVVe~f0lheVLrPTnGo8=H|LJtHh0(dHY3v{Wgn3dkX2cw@d6zjVUIDx@&>)lSyXc0WseN^ zi^+x~-r2_5G}fU^eXFx9R^DSjr3K&fC%mV|iz+CKs^UcX`9QTA$sqU{W_Jd#8;NmfYG zm`1gX(e!4WEUY(v??Sq;>k{+cUyvl0i5`3M{8(A2X`1d3z&{DbAq0OasXA{*SrMPa z3tR)NlIDcMX;}f?HU?3OJIEZ#gY#Sn>pEBEKhLrO`3X_K$6aw} z+?*KG4ia8EBL{fn0*Vo?<}cn6a3e2r7%uBcsF|< z+VJSBdhYOh6|^OK2ZY|JW#@D*?|rh{23^2!o%#`~c7%TX8$cv=q4Nzd-oK={%uZL~ z2i0CEO$fxK*6cm?mrtD+m|dz$^>tCb%zeL`%p`{Oe1gIv1CRy;BkbvO(>DxEZu z8G3#~Ch3*;A|8fQNo1Sco0LbBp*Z)xaZa74r_5zS7p|NEpEu)gfw4?9H);-`(ws?1 zPWiW{%cq&XtZ4kqc}&EzQrey3m``+RiXm3Shbv>kRU?hKfJ9NW^UB|_MZyRy{a12r z6r^~7SoW3p07x|#g9Hv$OJ-%)E6%7_EywcBl|B<*w+kPEfAa6E6oRlkcQV%*m`U2A zeZXynglTMc`1+ZQ#J{gL)(CD9UvX~F`eLoWum`JR$!cGx!ddPYH5-1*yz78q4rk-o?dr273enDU zZpuo^G0^=uS2rD3f3^!ABpHJx_mI&%+;jPvrrw&o9W;e}i4GZUQ@joZfRGp8PH`!{ zl4Jh1$}y57+_m&Csby~WTY*jB5!xL7wkdc5Z-P@0`lAYg;*jN6Yy0#}lR_*x{a8kxhi=xf>5r?yAF=fv zF_aPGZbWGe|C}LQj2{JddEbF`RM@*wvR>{157`!Ypco$$!tVkS}TzHb&43tr>SgxEM@nMqD}lSmcr|2Y}`722hVoR1O;pSBp?I1nCNdt^(QS?YZsyd-Qltwx2 zfgWW@9*o)el&bO{SYHBzpzODMo^Aj1u!s1Hf0=((+I~rGli*$+L^cNWp`hC4)&!~? zM$~`8F}-PKA~GKs67IU z4KD8m{4WCfo*;)^#)f;_2K#MyXLMs(VMSVKw5n3Y(HQzMVwI*sda0ap_3`ROm~a;n zK|lAJWELs`JALc$77c^N+o@Dlt0r(Bl$IKW*{>^?Wv!?IT8Zgy4j#GZHY9eqR`Q^& z4=);FSSUY1%`H)LCw(W8GzfIXgJP~leC}|hNcz)Y{A~*x6+GbrS4&H#5Rf{7>*sQE09$tkD%G|)7@TsV)E+>2*+~6+ z1@Z1Ti&)uahh0NXZKF%uiMtzgt#Ohu6rY=1Ov2t)J;c4b+9sS2025c+R*Gj8ql%cD zK;ybXTCI4jslP8a;8>c-lKMm)p3Qq_Feym$fR@CM*h1GQ~2MT{>2B!b+8^G z-elZj-%VE$I8xX(572O9rXeeX3BR4f7yZhZlExOQRPWb{mt2#Q(CJaueZiW_ix4Vl zaXz%o7vd>#V_GOpx(jjODCQiiZf+=I5wv8~CS<)yh|f zzE3k0O7yC3#&2YnvvjLMmRrqZ@JigUd%*=)e>Fjuw6{X(nzn>KIF0%m^2PKKfm9FJ zf-gPyNyBp{o7rCFmb80Y-wDQv=~MDl+>C_2uOs^!sREVN0(Yf*mm&|$D%z?h-SFaL z9-H&uXNU5JperfyS4^a~@v}K`Nvcv(*7cJLPzr|!)%+(@;}}Bd(UUF3#J3`+^>-(k zhW}(OUykPY5V*k#r3=Ce2p4r3Ptn>oA-d)I@EiN{SXM}{$=DBWsn(y^IqOH~t}5{B zGId*WV_4?MsPF>7nx4`L z1Ez8BBcV~&;vv2(^wy%0)V|1I&Tjhmlgif@Oh}8Rbi;-@xlENyaAcn(5Tch zhmZ9fXTobM%DD5`T9e9uJkr)5^W{nBZIN+g0$V8J8ny_nSh6*=pX_~`%2ihQ1?<7d z8e!?;&$9P>BQc=i{|D5~?VQS{6~-X(vi%3fVCL7@Y6TkJP%|V9GA)w~U=n-SV4c<3 zkNi;V0AD90W}pv%QJU@L?fQk_3OQyQeHsT>aY3!MXk^S|L2>eQkv!s%m|1u^_|f&f z0Iep1(}sO9?v&OX$-xZX#-WE)CY1WdfF89>Z2xT*F+y(1Qdjsh;0eUz#vyco(p0Z5 z5nKgGh=2ur7x~oL4fqf%wd(G{kTO_MlV&5@Vj=!5e-E|!hM+sCBK@rWI8x9Y`{2JA z8v^l|lYgsng-FWxN_VXCD4?For7OG^=Nw7IMMV*t%J~XFul1nOm>^;WhRvMe4Js^k zwOPJ{-&DTn6+4$gvi<2D2M5c5&rV=78@<%?E^^)*4DM8Kr>#~N)e6o$t-GYo2N=Uk zfI^Tzf|}1$j=IXyDj$U1hUL0FrFQ#qJFZRDvhWlEL$nXwx^6D#>6RoiUUo}f$VE3K zc!sgB{Z9mMIKG|F|DG;`G?mY2`k8;)6)T@bcHidAcmH$e%hY0yTz5zOT3t2+vsjre z38PmPE^v|T))7rL=%<@f@5r<7z<|{mTHS_n1s#p(MTS_YFZReFc;j|K2f|K_^F4j{ z?Vs;?$i0Xh1{!@mW_wj)d%Q7@gRGvR=w4BRm84tPUH5Wm7yZ3U4DAlJ|5z0Q19Zhx z_R(ihhX#UIyETQXoEe9El0M}0^S<<9FH+E)rmb7uhv~3kJn{=|DyFC4b5`L;PgV;I z>RM=L`#CGkNZ|Huv3qxF*5I+i)u#;QeFy@zYP=Z40KG`FU92$1wEH+kp{yv)75@Q` zifUxPpY(Yd7NJs)27sy6E-uP``B!#8_+>rQTlT^|O(7o&6lf^;N_c;MNZx6gy%1D) ziI#_DXg?XN)4Cl83#ytjsD10&?*M$MWwQniI)HUtL0|=IT9`Bc$W3++fhH0$AxYMIWmktisPz~_yN zF13;NY10zB2D0VX8BY1n1TT6GS}H&kNhE+j(tlo4x_=hj4=BYiX{^Q>N;)1vvCR4j z>VAB#rg0M=#n)u8n4Bg8#Ug}3r3j}*WmdW*gnxyR0M&Q3ku6pyrTd-U5kv;IS(CTZbMp|Ig zXJ^Ar2RtKC-;6&*TkN)2>KUIeY%1gl3NVA<90j68(*rs7wmgv&!aOG}tm{z?KwKv~ zM4BEVHGU&5NB{3S_WtXGQrlh#D#jUJ=b6gjQi}ijUeOoI=6zN+b>f78s{9d_^Z{Ar zDBe!WvJE4-au#3fDKZx{W2u0_C*Gs5nmo#V5czExHD6V-3sPmS@)t`9a}+LSJI+C0 zC}60G$D~2$QE;27hoRySWvdFTsaGVg{PS{1l(r3nAR->+r@AQ_O<5Z-9;uuaug1bp z?AY7aWANKtAkV#D6Z6ylIVa*gQpW!!I~{Z}=&zoaA7x~v@N+}l79h#&+2OUE?rS1s zn>a#pLgKzb;++7S3DI+oM!W&<0BfJai_s(}Hef=^A7^RpDn0^79s=Lqj0`Pd zblC+G=diA8ld>-ZKBf7NO-c)s*Y(%i(oX9+jeY0hO_<${|X5s#l(gjKJ#E?!|b@YQ? zqWF=5pi$|+BkrthfGc{qdkt~5!~N{=W!0E9JbcxwvG-c^p@5L8!_QvuJ%Cx2EeN7OJ(gkBf6t# zq-epG_&1APsVWfaKGR4D+lePpi-v?JpZ?0?B{uHEx{qbEp7E={jDkS0Ha<2k=OISX z)-#%=ae*XEdt6GSMjXRBio46ga%bLG-AypN!>rXDj$P2ig~&xE^U~`6oZ7Fg8ULAP zPNIQ3Y>A(l`W~s@$ZI?QEzx3}s)m8%hH}R;ZC(C#rk#1f@OU%_m7o}y=uBAv4ZXB4!wzc*f{u`Wz%DaQcx zxSmu7=Y5-9)>LYhjE;r)iDISi1~+F->_D~9wtG+mU!rC-kwGp-{hSy!divEaWJ1LH zv;cuzCnYZ3cV3oBNl8kYOV#qn;p;9?Si`~dj1vzoi;ho6ghtP)``oHm6wf`nLbd`3 zr``6af#lX8RY8CaTmjf4+jufkEBx-tf`c?ac}?mOZX-qg{R8`cNNloN8$0o~sfs#H z!_KQPs4LG*{eX}eaE8=kzV5Ikr9@Jt+}LiInQTIyYl<*1=6-fELZ6ONu3*+ zF?d1o-QE9K1zY+LFLjP$vKqwSi%}J`K5f~q@m*d{=4_`wNsSnw?a4%uo3S<2} zN`ZtpY^p8e5WxMmC@v6&9;7D3+I)z^-a{LrVT6bBMBaJ4>qRfS>H=%3QKh0rE0&p7 zOFQ010|tr%I&q0OwHtz@n-RXF<#m5}pW9d6;ma)A7qpk@iLkOX+dgg)3bpt*fA1^R zCw{SIr#;~Yj~Dj}w*$hE?`L}mlu5q6!)2jys^;#)p_}Mt3SM)# zrr_$uNOLoWWF=+e{x%KjR^4OTpGoYR@*e~M^Z=FtdZO4r7DRQTLeDN9^*q@*hR%Z6MOfp z)08TGZTIcfEMiRHHtilBehQ8YVJ4x{kdfZ+OmX(arDfm1yczw80phmn*F&_of&N?^ zA^jq9h{kY1QO+;BYtnT77P!|XOKVNdf6|c-JW9~+Iji=TP*DfN!P$&jEl>;y#*k&e zpropv^ha@F-chkINsyx6P*b2N3CXN!eKN=as=coOpPpY*(5)@@@hBR(jE3sQguw~& z?&MPZNowGPA|KkdbyGWoWp%Etbe&rWKD0}H%TqG*f%yUo)2?`}dm5iwL>V9t66X}m z$Hsgjl-RT*e>5;jDZv4<;iZgrdQ=FY@QtN~jmV`Rq3u(`ju%%)C`5=vGvFc8&Bth^_fv2^%p-ujN_c}=i^vG5@CBz7AbtHs8(rydL+?Tzpg?iA zP{~R*3DsH+$m(Li*O@v{GXVTx(Z|r6(;JW)Fd2;EX=COfX@LMM8l2+frFWzbz*x2V z=favPMSeMg<9tAceXR|YP8)UXX*aQuk*~)m$Lr9wu1FAVFiq-{T(9ieo+eq$dt!@> ztMwOQa?gwfD%(2WumZ0$tFa}q-+%V`4)=9q-;e|&kYq{|9W`_cZI3$wML7(FS2N*@ z$Fb>PrkQri5X9xzd#J~$~zF1Qpa(VASG%RgSZgyh` zS1qlim+U%+N6V+Cjo?h8yv7=NMWugSmsUo@_r+Mt&jQB9K6ZRk!%6Ry6HWY~<$HY0 zEU;ALCe_MeYpXLl(ba9RnIIV;BUo(09p#q!g>L^)Ra3bL&#uqd;6B$G(!KOEG;fcY zV}U$iJ+(r2Nb2e+KDdDnpX9-hD2|aj!ff|z^ceJKCgzkhg%XNao;vRwKTbmYm#xnw zlG3Y7e_WzLG=wl>ou0X}CHU(@ zI4#cjJdBy}-$hdJngLx!4Bh|U>PSdEX3^|0P zej@TLYs#2_T@4T5?{271k;|*ZMTgeqsAHa%=P&M-(irw&0A#q3^UwSbD|$B3jqp4= zcVs*eexNE5K0n@A<1%KK|e z{D8hE%_jlMKAs@v7xJ8;Vrsi<0Qv$OD9darDtC2G*+Q#hd;IulTp$pwAKRtjJC2j0 zJ3?pUACY9}LTkN4j)aTNGJ1Kc$)j$~DFkuBN;Eb%=nzmmHG2UG1U?|TlBtxnmTHy4 zKrb)Kkj#Uz1>lIJmV*429TxyUMppJsg((-l~)D~Pn};5C_K znCienenxe6TnfHYd58BEHYtF@)6avUnCw*_AgT1{BIOLvd;0J2`_pJEC5*|PwjY~( zi)!V7=ICRdiN2*WikV%fLD2h^-!@V{8$dHvHt1ILC9O1w}K8!ROQthkLM66=?2 zOD0YdnvV%-U2@t?Wb1ImPcTh@n(w)IH7Dzl6S z;m&wD9&q)MVDU*BUkaHsP~U^w-OZ-D+d2mW;iA9?9I%>{-oWvbTVif3z{2vHGsVAXkwpdEZp-qB)1#qEkU4K!OvB*dfq{8nrb$?Zl{|piH1gwB3D0;Ff7}Df$An^dXrIPTN#! zk(F_wGpo89#-S+PAb;TlAh#tY0G7ZjFj(>dV%aMp*%s;|Pu(Vo@Ma&ids)^e;b9Ml zyBrhe3;l(hzRH+$s%+czB!Ny~{G0n;6CnPGk`4nMY;cyA|x8`+c;! z4!y)}FgVtIC$+RB08c=$zk`)$q=XbWaoCPzK|D{M(@L6GHc(Bb=t}9!G#CtJOv5!b z-`@?@FKRrXd%sj73)J`YEX(tEOH7jCLbCmqPn#@aV^di%2>=bkw1Lgab5(G_&h}XW zf)j54CeKG()GgFATiQ+%bCfHZR`&!ybDd|e765O{osiaSFykAqq>Pi-`iRe9Y@3j_@1D!rYi))}J{-XNJ>>|Ue{!QgT% zu-NMx6LP)mQ*O@8gaFZ>C(E1khC;V9;B+ywQI47C&Ozk;kBUb?*Q2>`ngomce#rHe z@w_2XfQP`3jWK)60Ap?|lB7!yvr`8@m?Pf`=|8?|3INVriI2~}HcoMfer9|QqXFFa zj9-?8m+wqjeFBzH_j{_J-_}Q7H|NT2e>Lb#hFH!O8v=D@K2Qm_lK(i`N6_)y)vYs? z-%{|UTF|fz`)jq8(;%LrA*yY%vmyKU&3O#(ZUut6drK5reF@gffG!qpwoED-a_kQR zSrU`Gcu2P~57N-0CSe`tUC{$dgyPp{nBDDrwG&pwfTA78~$<&PNpR8mHYJS;{r zQbD`Z5Xau&3+ZQt1_%BgySd1oi(z_1D=jD=tV)HE1N!=Yj>qtZ_O~^47OuP0Whe+)KGx{2 zJN)~2TTPPVloCq9Gp&;mhHy(clX0q~H*C%Lmi+#qqD#&Fz7k97nxF*;VawQBUG`V^ zn1Z>@JC8TFTw%=<;%#*+^dEq>@zbm!3n-wopfbWkrfQ*gQ(zn4#Q0Yy+p>IEdP)ds zpG6^OQZ{p=2AwWygU(_e!7MrTIcN=vd_A8!MlktXVF>Y(vM6U02E>qgN~l<1pI_5j z;Y~l23Gm*)@AJvWHvE)xl1W$cuu6CZz>(=YQDDUvL zJ}GGJ1rVgx%mko|P|%4;!=<+K#2Xi1A_`Ed%Cd;xKsRos*Zv=l*r31dDNw>$ok5_e zPH`JaiT&flRJ@v?i1$X;VG|J``f#lfU-?GI2JS^TNr!bg1x1AO{bKWJwR2bWRbS%IqY$ae z#2$*Byr}O8FcA6A({s57XP+!b@=x!M(QO;uT;(HF`Vr@dOEGa(((c<##WI>r&o!L` z;GdB?dl~Ynx_FFZ)k7Ju|LoLIVZT&+l()1x;TqD~PeozQP#1wMr| z;oN4tSpk})i2#I*K|w73VnA~#;@&X~vYp4D<$fQ({AUhW5cCvJ zy?BB}K>S29iZ&7lMXn|;qCFr6Zs=Cr5Mi%vEm5i1zq2Vkce;m2_Spb6ilx#9bHZa% z{H=wub?0pPMsjjxW|VFczTqq&2k%zn3|(3rRdMPXXh#Jd=4imhI97FgEZK^2p5oYI zeG0~*+V6JLl@~Oje(Q&F(0Pi8nmmW!3aFW?)R~gg>zuObTBhqQ@dUCvOLRjkU|4|8 z%ohuLb3PlH|wwHFdD?vL! zQl`!IJt0x=MKG*jjzB-6czQj?T26psXqIZQR(fA6AEYW^%^P4KFz{d zDC=B+E@P@8Z2a0ku7hiua<)%HpefY%T&03e=Be^P;r>8YIfe%})z<0feJ~uVnJj>( zj{XflqL}jFef@Z7@BjeL&+53pP)Kv180uvwbpMaCE(9$JCE|3zeIvB-BY# z-z`02`dT{`^mJ&NQWl~+87mb?3b-rFBT7m$lq4-Vy$xoac0w(MOR#n$@jF+ub-k!K zX*%e-b0Chx3MwR4J{MxDuE@WS#U#+B0?rpWHQazU$vDWeAkd&fG3s@_ zJRO?djvM;!ddM_5QK6YRzM!KQ(DE+74k;h{fK=lM5&rsasQMjVKQx2y@st55vh8wW z-`YspJsc2v{BrGs7b?qPJO1BHYxPKIyz7CK^S+a};DM_F@;UfUVCP<%RbDLd^C9{g z`_YBHJ7!^%$~|e|0uhR0lw8*#VGh;(M;5lat+l^t!ev7;B0~$8F&6t`3(CGv)NSxX za|Gn4Y~|N>l|EogGTsh0>d(I=l4H`-=8BY;BJA z(YWgUi;#e|rxXqGZ|ACt?XP+jMNpE9TJngU z<7lm(u1{m?{NaR&B~7}{I+dNliLD#Mfy(t-Slxq44|my(KRIu3F1BB5EZ+4hRz~?lqPR zT4DAgSoxfAPfrMahk#yuL3xCnX7ZI)ezAWtC#RGzs7q>m@ED?kiFxuJVyJ+&gu|&P zikW6L`LNCks*CE$ea)`4*_@Br^7At>NQcp#~EfmQ$Cud3ccAW$@47 z`dCZ}{HeuTQh{u2=Kl2&)c~tc=jem6Xu8+N#hPQd`@uth-affv;^Yz#TK`DgO>A?9 zr8`S&VflcKTY~h670Ll%)@DLAiP%32+of*_mvpKr(7$=jQtP3WHAI)}0*l>(1t&#C zJ@xS;hqiUWDrgBibXPK`M1_$ zxb3jF?Or{)@ut6$j9t8r?6w?Iyh4PgL}CxlY_eLCx-ht$l-dkyM3G}=VNCw;Z+gcv zQ?BUCwUGCbhdK!nv3{jFm|rudN#`;Fbn#3e;_%XU8fGOOLp-wkmEcVru zr zVxU$jhRn_A&JKp&5cN3CE(oHhG%@mFP-*X9V$#V#z+MGKlccDhde+rmd4XFeCAg|Z z0W73?b9es-aoU?4v;a@3OG>(J^rt$|fO`?RU@cY=Qkh5)=b=(^PI|h%xgnIg1JOmJ zCn<8&V?_cuylI(&alDjYYY8qhvm7;vB;JYPHMG3u4|{<=>l7%S$a++{^u?de+Z8zJ z+!Ve?r{Ki+K-F0alXuSIOFn{4APBr3Y4yR6f_6l zj+Hrb?kM>Dkvz=M)6&>)P-naB|M`6%@0R8XykhDL)u`PXo|d3;K!+y^j95O+USf1O zyRoZZyQ+IahhE6Z@@3xF{m}F3x||Cris;^vKIE8-#eQwjKImBIaVn=cjc!|pHhl{4^TH?jfjB42IlP49@=xUZ& zKpGh7;@$4qhR7GFerGXg*PvJcsuI11>J@k1L~<_M|B+t*1`;CEh4WFTRAa&wT+CV{ z-kqH_{tO7YEhx*!zTNRcoSVhnNx3F7TdhY*6eL+NpPauG;eXy{bTSaHhs7#6*f6A) zVTpy(EeM&IuKHQdH8npM@@2xsql;L#+<9_P*9k{eBc$3bpFf>+XaL!FBaU>P88*U# z-+3PK;M{3%Z{b7`pyRWQ!0qlF(=&YHuS1=HbSgCprgAVrEm2Pnfc{7%vn0`)r)S9~ z5tM?+Tjv2{R1lc$P>m?vG8km{nuD4JcC0VBz5y7EYYdxZ zX75V8U4c@9Qg4KE3?LrrITqT%WVSnCc@cO`wT_1iZObpLf@6zk!#3+2e$m1R0q<^N z4!gAz{)XCik*?am=dmFp2z*POU|mKWCl*90R(KT{o|0P3url$&SA6g&Ja|}7fb7to zg&}hWC&RD+$qDGL&u|gZB=Mm=qY1jh1jT{p&KIA0SI$2+No5Kk-h8;{8r@pDI*kwI zV1s~GK_euc{;yhbbrM0Ph7UU6#67bxb4S)v;CyrR6P>lva?Ba>rI_0-LDi6GP6taOz<(urgqW9a?FS62 zTMpovMF$fV{v9BYRo%rX6`JVHn_uaC55jgV|7D$GOy%3dTxkS7z|6^c28>HkUHwWV zH@*i2amoR(C7s1*$ivAlc9QSNjTRs8oqS%O|BELE&_5|7d@|qGPsr&`?9y_~<=yK? zr?oRt(;G4EEJxfuZpUo*X41`TOjEXHN-u}sAcc(u1g^vmq~Pgg?f|;Oh?ZPh7Q*H zIoRsAG{>qSuWMXxZ4TOJ(=nwH+;DU-J0ivt&zY*FPwE zP$>fX1lN7L;#5VvW+x4eR{-zHphiF*j?;mfmT*Ukn_jGxEuzbpRBXF4Zb0kTN^@>M zZDp{9#dA~ivvYY}=M+>_CIW&M$vP6_dU-Iv> zD6^049@^-6tKH(7ccL%;rM6NM6FM#K^AQmaOanJ;vj_Mr8R}mK+$_=a5O|DZGoV=A0!OlZFNm#p7OUw zDgUy4`Vtu1%FDvDXzpG*k$BPwc1r?j!v3q#y$gD}_PIgxYN&@g0NH${Ps}}sm=TUP zV+NxhQ>ZkRa^7{z?S^APr)LyfU1144g=+p0Us%DyeuU6w=tE;(Mpm2J90SDJcez~& zPRat4H}k?EDZ59Z+Z>9me5d<#7qeCmtXYJ<(yUK|oO*hwW6|1X3%fo=Hx+vpbv$Hf zfkb%_1x{+E^-h0q2+?_XIKi5SiI%Ul?xfk*0dDMeSq+2ni$GOk=LbG4TYP1O{WvYH zQol3MDCTFpq&o zA8%EiOkGAaaxrZbamwoQ#Z&ca?t=Wjucz!}|L^gU@lLF<k~ zGOd;k!3s7ydzwhsL)#22WOPJlV)2~zoj-<^v?l?qFqqGc9y9dyntD#2S`!LU&e*w#NQ@(8E{7sd1?sI^ zU5v+1qp^vZyoht`^_cmSI%_ex{$^`h18d&}>^)=s&Yh16er+T1jf-S5?|7IY9R>!3 z{h6xUjp)@q4{=#n%b4&+hf?a8yt-bqpo$A$Ew_tx=N^YS_p{-woz;ZVx+ZOzI3_@(oM0C8M( z97NLn3HAH+KRUsCn-ZO}ZWFv1Zj0s>yI?b4IsV-^tMv%Lwg&zzqNqj$i~U81Zz2mU z?EQ(8J9nsfP%VH-*xstfL+5Flb&coSot=Ees9{#MZ_ z*e4JD?$HTi>OUpZ=LDVwC!h(b*VND!rm7bRGW7B$4oVs(z5#nYo4p>ch1wE7KSTkT>^isgsM*IS`c+<)) zqbTcHTh>RmbI|Tr9_@3Ie%-0+${KCdwUC{`4L-0oA{iQ$OruirBpmwOcj%q~X({%U zD9LFbIPsxW>TgjX*OB|a?x5jO616T~5swvN92i*n5zbo`%!!;&G8QKUG>K|4NFPA( z7;w{Cn=7=GZgZ9+nAoMK`h%ixq)l~ip7p5VR_NsO~})>d6&LOgn8?XN*HNbfNwlJ)%9?*pr?_Kf_gUKnLPj%Ajrd~BurTf#?ZeACtz1k z)GvT)O;ze}dgt3m>exaj-LyU3C)w(raqcIxTffGxxz5}#OizM-9dqiKx6jLXZLZ%L zW!pR%=$p;>rw5o%sF=5D_1kw2^E$#*J=+SoA2{1U>0VZ3wRKmJ7(ASK-OM$W&>$Ei z*6Y&kS;3k2sm{t^&d){VKlgbuj>z^$0s2db!oOc8>rE|@X88^Fu0{;5REVfvuu3Lf zvy-}%g>O=v7VB*w6Ge*QJa*$O{=YVBy$+MH9n_f~bf>cjTMGuNv)m_0Phjck;r|b~ z)OoyrB+YzAu41|P!8G(p!5}v`wS)QfMY*VnU3^R>iXQw|a3`8_`qA(E8(F*#JbM|C zh##64Ynm7D>>=>+Ig4|Mt{#1ywxy!@Exe0!t*5PvsqO#eJnS4=`kineCNsk0>3Qxx`tGNML~Fr#%9r zK!`tfcOlKRs*@8%T*d?f*HjmVDuoHQECH#k*+E}JqK{Vktuyl#K)pe6CuNU4f{;}w zCaz%Tyqne{c?v=b;q>YS6qtn(qpH*yYoXc3Q4=mC@dCSXV+MRS0b(WFDG$EeP5)C= zp5~}VO}7*?ZPBemNCF%>LvYL`Ciix)5{|g)INrd{rfBdc=fc;iM^e06+E4&QY{VVg?jGkv8UT_OJ6MFkQ5AZ;mlQ-X)pKzorY-KX%{btZ%j98Psmerq| zgtwLqzSdTnU_Hiq?1w1j5^oF1A`sJ5aA=0lzKUY@>5m)xz?BmgDu&H8uu|=6B8PID z^JEhaE-#ShD|OC^0KskvuD+MhyB4@7}DW-`U{DGaPx|$22;NFKWG)1Mktwc?nyWaP^2L zlC|ya7@;*?DyY9-{XHLy0z>VcU(X6auOXvSO#Uzkw5@4h!hNe-eYNA{Y|jB57@n#= zcco`ujnWe?>|Lu=R^diIxQC&qwg05N3vpp9G9zWB5FV=WT}jpB2D3yfOjkI2-m|2A zznmIMc;|;sb2`J3`A6WH+0&OI;NZ z?Tqb*S`rfW`SjBL)XA#N?}g`WHDwOLK{$C53&s5h(q zN|g_jlZIStjw8D|(Nl1t{jBc~VKRe>$L!ivgy?lv-eR7}FvN~ ztvfITf+sD{ONtKsAv@0`nFu!;rj82B+6eG(nV$!ben8|wT}^|%XL;By&{zjfxp)Rp zd3k+zcH{9Q>zUCqs`KcSwykDBa!B=ObW$I8IP40k7Mij`&G~1n6bK;%-*eC+QwUZWoKD47$gA6_=_po0WYJ(u0xj5z2{R`%0 zWwDQTkX0^Wsq-wclV{AtqCZ($#$3@dLUY>Vdaj7T%acl8+FU|6@GdpiK6x6Yhzi5m zpM#$1qWH3Y+zld?yP)|~JcqhGoi{3J&G!VR8GON02LUlTKt%?W)REZB|5Oc@i)r>i zSW4rme6!-CS`!E|pfqn3p&=|F1oQZy4MN!CgIZl&9{;^gRbK#;fy7qOh|^>~nyH$K zF{j2qs{4R@rt}OfrUOJ~P-WA%Hn@S4vcNw=zy*f7X(_b>X`($yogmTIXb!iAtj#gk z3^K}kHhj68B`4*s1VQyY)3Awo`OLB_4cRx##Z)EJYYOSu{#@W|UK6i7uyiIY$H?6% zl@AOSC+`PW9ZH=pKmFBIJ}(G~evQzs-!K4*?|r%#=Fbw)|qTX-5V)?E*&*bJll& zK-!B60t#%&Nm=oQ zK!NKrO9ubETzxH+kK{yBN~^QyiwcK4&}N1ndy`YXgO0VrqN43u4Oa8J)<40+;_G6F z?}b=#`8KPB@)n}}+Km5Vd4HxRUfV{zM{V%F9b*p%@RU@7O6h zu=7OmE0ZY;=KGciB*qA9pqGQmCT+!{G5o>#U1Oh@`0It>$gf3<4w)OwS=W<`Q2;b74rRei;33OM9(FM!yrK*C0=l= zXkA2OFfKoF!*e`*oxUim2y5?kStD$QuDYHm_sT_@MXWH6)eMb&;IBNQut9 zxI%*BKE>sI46OfupsJkI7`PaTT_1*gcf}Q2^@f{ku;IsYOF9PYBk#z)Yw&E_^ z=daNunnUAm#1cB@?bfBRUc)vGRIK@B?egr&DgVzt9sS;(j~}sY8PR`cK8xw)B$8cY z6y0F-U0WydD0*MD2uS@0Qf!%_;9fgufQ|!X)Ts?huDaQbNX&OU zmr+a&(^$sjaOaGO#v5dNe3R7@CV78^NscnAY|UqRz=7ikx+y*n7s2k17QpcqLxHoh z+z$$r0^MddK96I`GqIRAI#JQ=zQi6WiZkbQmDa>$DzD8b! z<(*Qc9SV@ij7cOe%4rjncq4#=cB()DsO+BNjk_@?9vNeFxnrEl`6?Cy77E^}0>Xg! zuj-_|4+6O15i7ITYl{n27PW)C1^3G~Q6-LD7OV5ntTiGr@py&bFcqGr+j15)m_i{I zTK2BM_HHqGcmy{vl|dnMqxWp!H5n0vV-59$aoxdqc5dM>TeRwM<&>=EJ5JwrY=z$0xP8!K#TOiFZSYKS(e4P z;m7lYYLJC;sN4o`!)}UYOj35%AB}@FVPfemamfV_fI={S^CUu{(D+DFf@-}1{YHdT zCHjmf59x@*v`8l@HGqT(H2O)_ts2}z*I7YSk{{-;u@$iZ0Ga zXVJ-;KkJA^pxE6C-@fBkotu44b0}qykjF|FJLLN#nG5VC=yx$wWc6o#v7>IKR5XIdb^B zuCH6&hWGx0Ok_~G-M=v4>p%+2ps)d{$tUodcANy4E*VT^QHtW7gEM?&Sq?Qv1P z<`ECrOgw$gCy!^t;u;0&&DLT?Q$Y(hf@J{3(S-^i^q`Y`B>CW_?=j2+ogZ+3qlP1p zS2iLQ{AhAS0`}UXH7lLzOED_-v(>`Km(>P)JUa-20DyAP{k54SP@}%8StGGP+R`Pg z&93k*ude0bSQF{m7otifyS4JbLTE`+fj071!6ntT27-~76a}B@MN|SF*<0m{2x@JD zL6Ns#H2`MnOOxw+hU90oD7QZ)vqZ5gtB3{6RXU&}kkU~h90e(TJEa0)9GFI}cPOE; z-a4gys(NO&=shB+Q&{?W_ZALE#|bVW=WJn}zF+$E{7REe$psW6bWQdU&I}{>QDKz5kRin zJApOAu6G|}ct2aocx?v3R44O22k;sNz<})xAI_IjRFg38rX)T}F^e#pm3rdyg;wNY zXpX700+k5*WU^LjEZKK6L_>3eSy#g@%LlA&0#l#0SXqTe<(|;#7+YXvqYw$ag> zI5LhOAvH;q7rrBks^ZZJcME4D7SRnjOLJFbpm!E$MvGpJH--F!?&*M|W1plI;0uQ7 zo>9cwA_Y3CTPl2=uxL_e`mdHDljQ)~lE}gC5H0D>+5+S}kvsSMk03Qqt?3ds-yPh& zqKsMaggIE=^3yglJwsdkvBdn1rjXLnXu1=&MhZs z6O7=lu8h%3x|eQ`E#7QDHs;Yf3d$kyAy$&~Df(zFElkm_LBPl?VQTMbe@fGa(OjST z#o%8)f~tw_=;N8}51Dgdpp*a#H&Zh&+uF=d z&-I*z-}kI(Rblt&D?-2*d@HTnZ->F1wVs?*Xot+irG19hu85RuZa)<5MT8y|SDlPlxN>A? zUIBxC<3icB>n`?4iIdI^QN#l!jUezmY$TK)pa#MGqk|5-SCUTB;Uk%Hh z5~MoLWBv-85X+^;g%SV25MP)mmo*0uffDdHEM&-Io950%4D`^YA1ZJO$^)}Fp5t6U z_HDlsZS$OTLKesLrqkWvZ&5%E`I^!>4tyi5SK^U&C>PUhhFhnsYE;e zfAttkIGxK0APMeuE&Z^6IP$hu<}kMEau<1r0n8&)VV3d1T&F)=Bk!J-#<#n~F#rb; zJSGZ7fNf{A2Z3ugf?a;NBT=nBZo71{Y>|$&7-o=TiVOfqO&V<>nMqa>w9fN78)-sN z@n)KBT*+A%656&%U`e#&P*?7T4qu0>9urT~nt};ao$oh6nE_iTXwaabNN2ycCAHpk zdL08Z^)p5oArGhUj)zp-o0;7_lHKFgloi+XPGJ3#ioSlEU?`aT{eKBE z*71a){DS9J_!WFBAGgS>Z-6@IJ26ZDO9B{@$>}9yyCJK_xq9`QWb1F<=hhj9O<8gi zflH&Ak@2%p>Gjg_q(sq}5AvU|>dMl^0suGGd{JXLeZIwgWqUK&^!F-)^8p4;vk21q z_58OT`h?_DcHXcjynf=&zq-qs<-R;xEDl1ttl4v>O&E1d#TIRe)ci@NoC@zdzivo83GVXP(Oh9GmXWsq=j zwkjC#16F=NaE{ehR2mgDBKUG+^aX>h$XiL4+KICl$42v9FbI$3K9I~M|C#ux-YtIyp!HRW zOaUye4_4e(+oZ#4>fqHQ56`F)))&y_wOOef&;c#EY%6jj!+qW4^{3SbTFDL zL-Z%u32Sb#70sOvZW~ZUJ8A_h?RQ{m>ie;f(AC$GaC2m*Z*$%|T~}$JHx~R=7Od<}R##tt<{M_nNA_mJxsBVD>9y z;tKt@Fk+3^f!9vT@VD?3g!Xr;8wB&Uy5~P;voIJJ(+~sto|d9n^a9OgLiC{(I+?Pv z&CLeo9%)fP8Xccw!n(%nGkWrxKb|^+yfO`PrX@TY5x5)x3Rx%VN-ERREdj#lgvx@k z^-JzazG@zYc=L=*(vNAr*6uMIU1y+(*X}muE&UJr`4%rPC%C|92e?I$wF!d6y(!3u+`-{q|=F(T7^*)q>AjQGSvi-9r^*K)+WT(-k?9djeHCbxyb0TCnlJ#EN) zOgUIZtN8Q&H%|A?FDk?>>$F8JKfg_ssK|jjRPyrHQ?jtrjT4#a{1i6-lG#Di%grQ1 zS2og%ib?aIRzG`eU??h)F1**SODQEkTDWXc1TW(8!;m5A3VJ zD(+?p&hUH%1Q=6mK`F9OnbFDju6fY|ueu+{$jDZUn4m}DA9EGS!ytR>^o9nx7`}db z{boNqK|#hQ-mZ?oc=S_{XjHEgP(6$Jna|76m`yBgnmv!TjvT--LQ#%0vaPTXj{RC z!|Z6{NQ6oOr+9~?Ld*T-==0?e@Ni41n2nPJ!t)`Bz5H3D+wTkF4r-Ie6cuTgn$jA9 zJ;E}1rG*yb=`mzo9lV{yx?&qHexZ!42OJFY|`W1cCHMV2~~F| z)a*a7u#+DED80>YUnCp!MC7w?Qt0C9o$_xFssQ1?UjbV_Cz-z9@f7t0L~Yp2b7Ml4 zoAh{}$!5N^@o)_C>;vRX=O8P8QA~0nrrt00E(V_!Vgb>znuROyEQzC9K8Uj- z^m^>|xVO3TiGti*R(5JKNzSXK-QmVRlKfx=aNWyGxD#V}%^eSVkV?;JVmi8~GJvi^ zr=hb7SnOai{Vp$edO9?H6iS?C$A;hy7osrrbvbs%jn8poGc>CQOV}Wisn`} z0GHvETytqbbEY#^_JU;VY~M-g3TIkA^c}#VK**018nHozJLIVc<8Y0dsbAkmr~9 zjOWE)oUoSd;ubW>?~5-l8U=UPycppe9?It1JHb1C?e??rX*B49`=8p5C`qmgNvm6i zqNIdKmopTvt=Ma0>*E8iD%19X)R^)D0gKpBv0eXwQtSwqsfYUx zByk`X;Tq@*%2#_3cSW(9NTailrY_C5t?Ke`Iw~<57s>C)0~zdGy)378mF zp4>`jjluiR%s(JiXo-3$t-<{?M@-&{&r@3UvAu_5h?TnB!sC>na9p{6`>S<&z+236 zidQOo0W^CwEkHp2tyM#I{kVN2$tkQ4pl^7m?minT< zL8Fm^qe%AdFNHi1kAn1yMrnU@0Z;XNmwd5q7JSVDdyLKa&?W`&>_iUfrc z7`OFD@s$m+9vZ^;ef-=3bV)+hCXTfOk_D#Z6_&5fel2;#)z|mlplK2IavQ$6MiE%u zCA!jUA%)gX!`T3`^J{k8S+DJESj(`L4+6lDO{htf?SYcKytwpJ4|xf<$|hmhIeycPCycC&c5pbz@% zE?zB8>KXU|)%m~0tOxIS9%drz20gu!uhiNY%+SB|_5Mfk9YSpj$mpRAPjnB8)nEk% z1|kY@7`ne^NJt90NwQEQZs%4M*H}J63F%sLmPm=L0rJTkJnBA)b zAq=fo>w#nn+1zZD)3k?RLJwXOEFzi@Ecku2knS~OEXU%-8Q3~B0N%9&--I{!y`)K_ ztW2yafA}qGHVwvumZN#^_ojGt!yeK7oTV0)Vrk5%WTnU!%wla=Y7~9og>cmRM;72umHC0^Qls3EuoU~ zOlmEe?f3QbZg(q3WNIqC(qqc+58I5Imbzu4JOPpv2#2>Dbl~tPzywF7?e(@oL!GQq z)6JTxT+Qrp7P3a(d#pW^Mn7V;-ozeA)D>FW4M=)_cP6QCaDvj;^mX?g8M3P&RAbZ=w1`LNU z3*OK6Bx9>D$P0&}mmj7J3F1kqFS|J8YlP~H< zc&wzv>2tOO*}W~AP*H^?45bL9sHoa5#MI$$Oml-I$6gljws{p4ddn@jIt_Ny zqj3aLC+Bk9hmt^QdQ~XV^Qy@Eve>geY++RtEO-5N2nZz?9h8I8AuH=v!a4ndq3&%` zu`P;Cf9)n+(I5V^T=8CLvUL1j>_{DjhlK9U9TSqa@EQT+vj~jH_qRnG9)=vYm>R=^ z!Tq51Wpdb320Uk?9&Yrj`_Io&Tap8#=wcNF7_`3MyYN z1EB&3$d|E0BXdMh%2P2eyRq+(mLM%QzX*YxdvIgEA=kz1a#}B6rTBMw5|hd@M$Iuf z+s66b-~4o1Y^|*{tIOGeT(8K)-}jz{2NknF_ZVJOdO(Rf@P*;KeQj(*H;Mh|YoIpd zh1G^#UGJ*1AqQZUIF_N7p5yU0T=i2mB8r&IQ*9I`r~|L281S=)C7~R_)i2+9zx9h2`QQ(FS#AVC|z^N#fYo zJT_o>+NWDU8uewquLHG>h4my7MGnOp>NS(=Ta3pIr#EB2U_L^KsNC*LqPd3m)N9L_ ztDbIi=cV?@<1))-qA1-fd5ZuD-ufcPGdAqWqLM3&;+~4&J>fU*_~@pZddSYEbog)I zA#{ys`o3j@_HC@)lp!=kmxW9AQO|PI&4r+dvmS>XU*o9L9SI|!Pm~&cGF8Fu>IxYx z+h76hKO)NG4u+rU?%iGsZ1UM(zIFH2`MQWa2Lb ztT|xc>J(M76@W;DGKkRl219|BZPF|y3^fdh;EZ=%YPGj+e{knyW+I2?NA`!g?T4! zHM8gDHYk`bI(l4%m-43C+CCMhWcrDlA?UGj+F*1xl+68`*m{t(CT}xF*bb?rdN*?- zg)o4(ouACuAQ1sa@95Sc00MQx2^RynWVH2rTg~yN*4jn zb;z-`e!I9is-oi)fc^r?h;~^=!TH&MlF0Ig1(a@G& z)TV_e9bL!Ac&l>D=$e^0lbY0on!~v+rNx)S!!NK11!nGU4v5~U0fevdpE zbRlhKs=+ETbDu4VuAD9oj4qhk+H-e*lWkp+?J2#Wav4^>P3d5Ot|^V_N{#Z4-u0$K zD0=lFO>Sskj#%H>Lxe;?RQTrLf;^0GOr&PYor~42jD%s>G^xFWMl za}$d6?9?|kRLk?M#Rjk4U|pR;84E>z&;U*=W!PR{itswN9vFpj=T_~edp*1}nH@2ED@N^t%wCv1_|O6|(r^c4XeNoVg@lZ78E1*a*0K)VeMIO|a5k z^8TAzg-6N$LYz$4T3 z;t(vF)`brdj*=NK<-13>)*+PN+j!xsJb9UOQ0d~{E8!sW$`CL`<0hijG}LN1*dTg} zlN<+yCIo(BTa9hFNf%pcpR!(^eET@U{#dE06`^g+RX?Cjcd zJ?rp}xOe^uCb=)~StO)OX0;0JQscJtWASop&`i^O^W)u#*jJ{9(w2Tis)we`!r63m z>c0MhRVT!PZrmJM1!0t*EM{fo-R7p%yM(-TsJA$5s*Ou{>iO{onZ=>i8qJ>$klpeu zLybWic}%5}m%+>c8h7@BmOC7zpQ@!vFM>bj*@yDqHgCv=A0EK?nsOl$k|YgBjbRZ& zSwp<@^HA@P1Q+L@t7lqCYg7b?1-9d6ONN)YdmB7_ugY9M{WufaypZT!wqX_M4Btz z3GF5?>W7_}oV)=>@gy{pB~2XuC2#8p`k<#2n#beLIc0j^XrmVi4A)X63S?_9H1%dx zI$Hh=)F}|mxadn%r=unQJ|w>winHUMx!wAtwO+%ackX8g$W}}oBLsJJXSi;<6 zc!WT0NGM6Fl*Ih6l2mN*Fab14w?p8Cy=0dUHJ4Y1Uy-&;^J((BJ3n7Y7aj!J?751z z;(SB~3LO;`o{cLw5z6TuGnBWhL@uTs!Loo6bJe3^^DcqHmW`MO_up5^!SHk3kKfy~ zSM^Iyw^V2?Cu}Vuvue^dLGU~jH4}zu`WCRzFw>T*G;Pq2a~wT0u%;7Sxh_ups9ZZ& zK2TXbHA<+O?-yaG2C0@&?dL^G_AuwSrECvDKQj9fi`R^mzK1}kT^~YNca-ppD{qU z>pGf+nYVz}D>Gok{7lQbCTcs%H6`=MgtxJPb8lxvPFE&I6aY%iw(fxeJ##~L?4O|08=mR^Jl`j(9o``2;4{^__JaH7pYk=aqB$CW$%W&oA$StujJPu zzVzc&i%X@o0+%|%bj&E`;gnt?(ZMA)u2%z5jVu3o1wr&Y;ieE0-qJlP-#t=tKKEq) zCR|XLXDS!3#NVR@O_b@eTJ>UZ`KUI0^0ysNZOg%^UPUW%4dYd5))H?e&b4uyGOv%A zYxjczvBYZMEJ%;%Aj({A70n$tAXJ!QQkZ?gLkOlhJD`Ler5Z5@;+}j#(`*6JsDoGW5 zzr(j}mn2vQ)WElVmDB(ngLR(l8zA7qbN!;;f=~u70qTR*+^DpQ|6$OC1}MfF9Lrm6J*rFC_WZHt4rg8^I#;R>gYT?Y=UH$XrndniD$4hd=lEY>FoJ;11BKCMO7 z!Y%F;39pI7&YaoM$MFUE5T>_e445LXzqfq6kK)}Sb}Q(W%wF!m$XFO}y7J|}Y01=W z5IqX)IL}X?=nu}vxsm-1+dY8++tP|1niW3gqM;N8!+aM%#rF3PlXZ#3tp<+R+YpqL zC~wEEX-!dC0n1DV%YtDBC`VZ3bhc4_uy?vYd8a+28p(vb2-w4$dm>+#vwuHzQQgPk z-hwhL3Cl4}T2hy|h6V=&#R@cKqCSKmM;VX6qJE@UH=mzbwKJ{IVR6VV{E5^>A6urXbO&4UNAX zp};C2pof&>Hsetb}We}|FZy<0%&m}Jl?vOQfK#rRJXGsy-LJi13i9i5^CY+Q;?V3 zcu};Yz~3cq@|o>4|9aOd^mo3TP`}&Uvd?zXNA8+hjXi$~0DMdvqff<+rGgCVjt-g_ z>ok8pNIgtI0|}nwgC;{~=4L0-c`o9;p7aUra0B$!NXF^Q0U=T_hI8^Yn~toH0F#0h z4@PeM$Ty%M7VM5xRx(pz&bzRr`cc{O_O&f_(F_LFf*S_3sGo5$ieQrTJbKY}X{J9_ z|8A_{ik5LnFIc2K-v(d{XVjDM_eBauQ4UbY8RgIyzvw9ovfcgBjylV|mq5i$t;?Z56#?*vuU&y3ZVI9XIc4pb^d zk=kK91!@iK#y_ia;eMX)H@du@t;cXi!7HxB zTPz~Dy+LKu@6EoR14_v--k)8YyIKX+Z&Z6QV#&SXetDobfQkPL{f1X;Cj7GAo109U-)p)H56= z8DMBj{eYDSP_&aWn$)g>zg6h;!7p?^BluHam3>08ek86}ICK!~?f!mll*Zlx=ey*n zhy=gsa(=OYnxf`Jt3e1Y@}_hadzlXyUjsCBWH)VTr>~MJlKHzd$~HiDqC+oe-{C!p z!*>J(ZsyO{o6a!ES%`OKC1C*tsPbzXkO7dBhLTO=4TQs=`FJ}{)e^h^OYe+BrStsc z(EwTP((VDM8-A!-d~ARMX2mZp3r77+?bCsI@=*##LHWs<8@BG(On`ouuB3Bm#|g?H zMvWqkKGx-ygSN%X29s>NQmepP&3l(5R}Cl3!$ekJ;ONzI;E(?l3~MbjXUb@!i!Bk( zOGxHa`_vYgx2cu!AN($|#_3NqnnM6$9u0W7Eh;>c-PdyI$4@H*13iKm)F7KP<8{2X zm7{u+82%Fe%#zK2hMA??{fK{zjbSrU$P5QjmSSIpFD zfmPn4p{LKjQFZ}@veXk0``9haE2S8${gIDU&TnW>mOmKKzG*OTPsb&Tk}+z0U}Kql zfX96W+~@JYUzlCW@hqzC%V!9+)a-vE$E+^{`CL!m3zZ^}bP;E08BiknTL;l$MSn-) zOP{RvqGj_j5q&R6dqqUC(HQNKyW_zdXwZofZZOCFPEb> zOY;=bMOAqM*@B(2w}z~+uRq>$aX5fp=t7~@GtUIa!xk*iFC`X#-cToS0d08fDTDvAu?;z0TAG>v{4NdJld^D!UZf&}?Ei!`8sE`=G2UGY@Ff2%) zQV5n*ZglU6R|0oafQ>kCT?)JRd4VTSwo}P_9e1YQx;;P@c;6Ag=q$;w;e^JY6LTg? ze=9SB9F?ehXS@)mBsqo1F(8hMIM-E(U)&l2bt8Atx)ng};!G!=lZ$JdQK+3IWT4l5 ztd|?TUb~D2bz4JVEw6wCJKRQ>0udWBP=7Y9pbbp$c@JpHP8I4rl*a;!W28c||culsm{9*R+ z-7Z-E+I|?o?qPC96$iKqS`6=y+QQeUV4=PE4+>+HpKYr-lxhy(CdWrIid<8XBBw2L zA}~*bQCh9ql@7y>MmUvg@7n6Oh`YTd%ee>MI>q1FR`!TsEk~|oevRj^-FM6trL2M7 z=SjCZ0Gnm~+A~Bvyw#Vulhg)=E#=s5MU8oq&rlJA;aRwBmN;pJOJ?Ac;aiw=L6eDCeI!?yt$9Hp?@P7Uy9WUB5x z^iQxEK{^F}R37viN19ANaK~_?4rIX%@Y{2r>CPV_{0W(Clfl9(fk00<6YSx>yPr_> zBA-Vp z?0eAZUY!y-nGysd(!zG3eMMyd>dc;1Sw?=T}PXCh4~F~Q0iK5Ne&kdl}V!k5S^0nWQ@}pdk+V0U)VAO|NGyQXo%#bJ5Yq=;Pg z*WdfC@&b{8KIh_$k|CM*wWNJ&w86G?FpXm(<>8p)?u&x928W0)tq4V6t6^ynEV6vr zISY`7c|+4HLa>L1G+pC-#E(@GBpii2JO*6;YB2>;u?64fKM^P;Mpb5jNouoXtwmNj z)~-Kbs)?hE(@{#2*GGCNmo8%79;jl{IB5{9qkX*uS!-1_8S|oo8QXWilQnKmeFh^= z7k+dk;Ft5elJ>D1gx2$0*ZM$1!8^tAokKkK0ZZ7HtHL<0akSw4Ky>r6gv>FD`^Dlo zarBI)+$u=%8fRi7@`C9z-PXF(xAEZZGx0O-^lh65f#XL9S1jP8HqePGAtu1 z(=NmFd0mp+|FaRGL*>NIs_kD{4yu+a24#(GDH5puDj1uJ@0~wdxc5?alV~IKJ2ncm zMYvI8^m8cT`ASsbfxQW)Ex`*1xW8p$*D!i@`-e-xNql?~OFC8=pT(DT&CNa`pLN1d zNw&keu*MS@vq`|w{e{XqASeCO^nhO3#T$VDE{kHi6z~5Fc$$tS z4EF1#RxOL+Y^rb^h~Ai^s<5t^Lhc~j$u`oA9GrogwH?+}bbX)gKmZPBAi_w!VxpME(zLCw}x6kEtb2G zN;uwrsilSPJg65ab+OoMoOovpKUX>0=kL4XR(@<9SF2>EXlodCIdh@;P$Jk#gWd2* zBjc_Y#ti>)b2wS_BBSP%fwZ<^d!3##8Hl`BBM~(PDEfB00$aIcVTXZ|>=|nM01xT&H{;W;>AXFR&6+R_Ig)dIy(x zBN<$uBiD+^yFss!1{$$h8=mjHr$3k{l}a@dznzqb&BlV7+UiY?I(gpK=y)|1X(=Hy z6S(KbBmC1pGVBa>k^YWT`t*2G4$(Sj4*nrR*scv}+EA|WZQ7G1CQkKX)PE1%kBR1y8U74JvOPalFBz3C>Y2}Aw^f|EaA zIzHkqAQHNo&H8qZX;GWxF+vcf5D`{YH7r+>I1zoPr?!t=U@01e8s7G85!?>YyO}zH zSNgUE_u)D=6KJrSmO>~|Y_YC5)7{Fq(gs(D9vK|zvD)(5~ z=QhG!v$#nywyE1}BPf19svIOu0s1OlP05ikIoMwA=G*9rGm$AAb%wJ6Ew*Q~Y8gqS zsLSiH)z}mi9*{vGPs3M^Pz)E|UsxEL&Ue;F)G7mTw}C_3@C~e*{O)zwl8vNB+0U9%2EPO9l!hb$##g z{t&-V@5hDEpEa8|jQfMybQc6tIUR|3#}a!DU0=mx2$;1~U!_H1HdYH!>**qwtGuBn9;a7D`huCWUA_TGXDnsJSf*x^!ynWM(lY3$Be=D!_f0O!<+ znIkIvif8J@>KW zfex++862t7AZ~W)-($=3UmFV5q;M4I2nyl5&-N-ty@vEKPGtU*tH*Nw^L?bC3gjL% zcjC_w&@2RSF4$l zbXf{ocJ!<@eGx+CsN0~LD>t>6f_uIs4W38mZF)l9d;3kE;9=Se!d|J@AF|K7-^kCP zt&Lyc(?ZE@oLYvh!lt*Gsj6#zL!BPj4I%TjU7hp|H;pG)eMkZ@D0zKxi;A zK+@4Y4knRG)1>!J5_xJXboLkHgo9^8>Fd3tH0^25oOz&qs**X00edLB4Cu+qYHqON6)VIG%0M<|H#;ijniv^wLU*hFH4C< z@N@4rShB?@rp@rC=vl@>Hp#218|b1l{@`b1IQJy*VO_Ox75hO@Dfl8d=`&I3zvfcs zpykIqMB0u5z9|U-PPX9$Io3_%pOYx#D9snb4iR|QYLyN`OGqjFC}+?0f)wH{kAP>H z?uaVh`vk|vww=N8O42$U{+?-Mu^0UJKN3YI%%2gC{X^ERaOe5n)&pPFz3J!52%dV1 zW$#RjljSMIhL(aB$7jK^*x%awRbr@oE`fK=V`9wg`D`237)96by;y>#64l4BZ0tAM z|10*6gSHs|vYa7&^#z{*^-I5F8@I6oBn^=5;{AacrbpJ>U&X|B_-*zPxfY)F4y&G& z6yW#++Kvmx3n8IWUMeCGSXGn~ntG-?sVZJPtjh9vUF=N)yM~c>*RiEzJN7E zR-Pk&y04iN7|r8}RUpI*ztnGp@CLdCRg{&S@ft9^NgsRsx;Vg1-4%F-LaoOvW>ThQ zZP@ic6Nu1iI!<j| znPf?i)lF+U^|y!5_V4zoSNNeYvyJN>!;3sMyc9_6WC%4%qVz?e6Vke;JuX|#-g}c^ z$gQ3Lz@3p?Z)q%Pe%wgn77U0?QR*hfQ=-OJMVwyd@<}mqo%UmK(x-aFoLRu>98L7x}Dbd=9bkt&t z0Xr=}3=l3!Q@EBhZiKvMRMaSyHOu*e&+xH!W~jt-O*L$?z$L=^e$@IB+$B(Vp>LV3 zmAOLo>}kcc7|uc?lp*-j0)EHNXcW zhedgUYA2tHZjq(7%GEv-OuUxLBTlH$C~!M@pa2q$X;vyf+8_hQ-(1_}cdamJvC5+t$DytH>>h95FA^P9R zbRcdFl!xs*oAt*vXl9IEsPDY*Nz|+Sz_l2%rTNe|vOyLfF8MJN#*oysK(wx+(X#je z+2pa(nANnr4t?xKUT*?i#!E=~x-D@)JKktg`98`4JxuYTafShfWS*!$b3PN<2aR8) zrkHtD@dL$x1YD5&Rmjt4afn!Eex4vS4Taq|Fml^Af?p6+5BOCDg}K_9FbR(;ZpS0y zJn|8S9flzN5gsG=ypc$%{Zu!2H=wfZ_OHj28nlzhnIi;pr?Mee88ekW_vfW*kS_km zTxC-OIXD8%)Db?)a)Q!lM1Z;@A)zj)LhuSBJH^y8;c)Gg1Ke~2cbqt5-%M|@$Qgm? z9OYT=#g1*Q&ydZy=sr?DvNE?jOx7l5p_a%4Q1@IUVJ#)EQgw4esOJ3oAe%FQJ`{P@F0(65{soGS zs}1t4v;E6bL5Q%h()G0RC&H~CuikZ>aNLen!8jAj{v0bv`8U{f`uMyswFAeom}mF* zuz7+Uz#%A&4!Rms58YKY1r-plHnepv{J;-)1)dFb@EB2v4+mv z{rj67ZXNzurq@koJb{?9Bp!oY{eSA{`ySk=|1Febmh~i>>>TfloydkA@MTo5SwgTu zM@amCrKAG+m0c6Hw~nTsb-=u1y%Et;D?c>^fzl&@z!S`THR_D$Rr*&DPVhofxAxKQ z!}>lQpQ|slqFrFJJvW~E%L35sPwgp?rqgfZR7J}}TH7B;*xGT@*CJ5E^Wmums*XR9 z;YG@W#He1mLTN+C$3`_l5J)C9{PSHl3;Iw@&zdI|?gQB=<7LGXwNtRs7)3s(I1BKW zL4&0x+?iwmoF`g04j-ND^>M|C>gE?0AeLfEbVm3neN0`g-^ii?z9kHXTT0Wh zrGJN%4-fO?8oiTH3=ZW`#^cKj&@7#?S`o%#3liqH;*|x?j-oWrnG*JyrU8OvpncyI zS;I^`EEU-x1$8q;CA58Bepw~~Iw}}2RGbD*v%GW^#2fb@I2jg#V$^FFE6sxdM9wWw z7MrTK2$n_gd)D=AKW3$l&LxSqEVo|s*qU4q%1TSY)mWABh z*!_QOn2SgOjN448qS|-ieByN`&mEYm5amrcuiUcptOhU1df+k_fC{f}qiV=P)+)o* z5DJD1bM&WFa3-ATM##TT^j=b;)~oDdVEHX9>Yl2_*p? zhM`B{r*G>?b$+8$XLjqXx&7%9o;KZ>tUR>VLebTz4BVFYzfS^T5>EDUrC1Wz9vn`$ zi09tUfJj8H%MMBRM-su7vGB_e)K7@BZALy~>H^=K z?0cL;?}F09Ab~u`-Y9}ebvz6j(j6yg{4U9;-sHnIVA=v7Jj629t1NAd=VRQb)3cNo zhub=RmUpL_0(q4DsZ*mu!3OUJq`Z_mTJs&d%fB-CVD-82y9=dErrHj=qKj-|H^2n`|RDF$BrK-(BRddjk#ume*J+-wTM-1o0<)sboE zx*@VE<4|0I%5U;5q}K>0@Z$h#IsR+eO6v7(N@mg8^b*lJ_UYqY9cu$-vNLiNJ@>7W zZRC;|n<;UQHeP1yq6`w1@?)pVq*r_LI1YTHAinNX^KNt&N}3VSa7E1{O~opnU6;v6 zWhqG0)-5-(wp|X3_6Bmz*gUuhaqdU9*f65JFyrxpgUj^!*j%}1>y$V3W~WH2g_0#0LdkAY1L#t z1}KlDmLx5(yG8kWghnJh`41x>R6EJG%4Tu%HLAXWOtNgdvt**UDgVXV=##XZ`rG|H zxxNO>IglTOC7Ah3UBir!kOkZH{+-mQ;&uT%+Ha=nK0V5!#Wai!Dmu!*&Vg?gfmCxU zGeZ3VJtqxbntub_@Pt1}5*l+T3#utaqL51Z?nBECJCoL+tCD?Vwt@vQE|#i|P1)%- zc{2PXCr2@|(LVy~eOTu1=a7yQlk9|5V>|#p3Y#jA4TdsEWWvi~rL^t^-0g2C7|X%S z+FX^|ioFv1wSbx=eWSc?nNh0o_IfGE)W%|h6BD$K?2S0dRd`4D7Qy~gzoead7_~2d1 zqv&7a*P=pT5I;*um{>DK7p$GWAyvSjDcvj^%`%kUD(Z)t2+nB|FFXy_aYxu2NOWx%?v8q>Zxx zJ{De!hUu}YdiBO89q}%A}?^wWsn(9mQz!z)*+w=_2h9Rm7 z`X=uS!Hn7K!NIb4E*5(+N?8xY7*@Gve(;eOI)u0EUIgOpz z&H=I1TSx)BdnAN5ncewVDz@tb^#BKvkwaKk_&QP6jMOAh2rZ}g+s1QgZ3Isd&ls$h zsbR(6!HrQf?ijl~Rf5x9z56A(RG!~i?@d-&fU-a}Z?(!#vo}TaR+-Nu79P@%d= z+vNP&L_}jiWAr8HyO994^0Zh?Woox|5T7i$Kb);)ah^S7?`=G?m)K8k4Fvn^FQ_kX#;}5<*(2k z7-B`Y>8hKKx_$=s>t$<6p!TxH#f|wqO(r3@*-eQc?hvB4ZR-_gxX)C>gs{%vEbh?> zjar6TM%K;Oj}^Wj`B?G%Ayq>4?^uvQa%v(NTxMku*Vp|t!=9L6N0Pg|Xc^nojMl&Q zMq`TYpgjD%@{(`_jG6t-VDY;QFBr&M5?BXGO$mTcEF*#y3qG7YHh!C}m1|&IxVkM! z&YD_18#K3rhrK3Yi}`C21;m>PRTh;w&4|j3`b;xB-hMR?0iEauH9@zPYCFbjemP)N zD2H3k@8^icvp#`+tG4pdDxl?p9CcMI^|5s;#8@HyZq(Rj*Yf+WK*CZ;ZRkta5up)g z40Hp!gJx2OxkF^_y)DWh<_Ge|jztR`IXlyA7+1~#ML$>@`7pitA)ScNG13|WZx$5j zLKHfHdeIfTtjf5j|BQiN!&%efEfN_h!((s@iud5UMe0=!Q6bWhGbs3EOsB~4Gx zszO%3X@n5o#sdLRJz*;)m=vURMwln5R#Jyfp{eJG@`DYkLc1)Qj0$YR8KnGA+l7MI zEu34*P@3HqlNQ*CNI{8jaev1!symplB5qiZ3&L>@ZxdNrsfy1?*QC5xk)k9@Q!#P_ ztxBljn|GuY;4mR<4#jugq(7j$-nOCyue9*5+@s!HKWiRoxE9Wk%o;MW%>~7vANh%p zCg}pC=Muek$fLlxIuHH; z>)1JBQ`56EaAN*^wCiouEZTnii2u8mkotJx)|ge$g^;e!8{dU*@*m*NWC> z&V+F`Bv8>OURZi`o*;tb?5C-~ZHG=E14CclV3mugVhiB|3*_s74nA!DqQ!|q!jL?r zMq9Sm>%+DSDG=CrSEWJ;1 zEj>402fX!=po7BHcMAwH{m6)bmvjEMq;L3mymUuEGD57J7B`JXwo-Sj_H4mX>RB=l zgIU8U$g|Ie^-7@GcVwoX%;cZw=Hwl)(%qDTf;&o5&stb_5K-UmpTbkQ0YJ|c&=m&S zN9IFG_?y2+wBWo%bQ0nI~AYIR8B>YB!s-#Vzlz4|dq>br>19B}%g zlSZO^Lw<%%+HMj9xs9vw(8;Hb)?4=-m>3TXhwI9t$lKr!PzeF2iJYS-8M@Tr;BdA> z0hQ;Nw;3iSPpPo5@f@Pw}ipcN;#)m33|es5Ft~ zy-(3k7N&PGOMni^)i9QpF}{nc0xk>(W)DOqpGcXRZYMftr;J^(G#`qT033OGDi^{w z-F|b*>&A$YuB@xS)Lte+H}j_vhR)}KaTo4)h4Bb1s0j}7`-JUIZHHhd2$)xizujck zbGJd)&zGxH@IUy?R&Z%|n&{9!d6a&`THv-0ulEM*EU$Aakw4xBuVni+G>=YVrEBA? zC^t-$EG`rs?t#dyi+_;tTZk_<`~%<&n$OJZbzQ4%ib<=?UXl&E1DQoSjd0b#(pX9& zvh;0ov872vc}J#ptVk0>sSFBwZffB@?a$^2k7)fbM$o0P!r>+djO0Y?mE$nd(a6q==l-wavpqfVS5=Fe> zZw7wc5)bn6!dWgsO{%^-kz-XPjTP1i?z0YwclvDSmQ)##sPA4MwRgj8sZ zx!Wm--;Xp`2-%o}^-c{qQ(WEuqvJw8mHd{a%0vI<<8&d+q*CK3&aTd)JK7;kQN{IScO1r= z+=glVZ<&hK{pcM^-n?E3*M67IU91O>fNC7HbK(S^N`$G&bXZ8*Spo`o*45~D3p=~o zmz}Hoe}wzS<&Lsu7V2);V2t=Z^s=|zg?=F%nyu?;;qB4rFN*x{NDcr1l>N z26r!8WC+LmvSF7D$$NGUk(!3r*3Yp94RG0S8j}MCyAPZz(=e!qJ|AAC|G_EQX6Bv> z*|&?ENy)}h{X9e!XEY{#-wb({C37P|-)pD{{i6z!+JN*^z4`b+^kZ0oEg|Xiz1+iL zssffq*>26{d=s?{1qO1(gR|c|4fD3`JLW>gNWL>?pZMk@g%LDasEI4e1~8A0qP5~-yG}=16W9oA2zVP<{4w^|;wIAi4E|2&=JH~Ii@_UB zx4_RjdJKo~3}HUtF@n@z zOEC4sGGG|ZJ?!-iYBgP9Dp#%p*9gteO6({N)V)NKL5ipX29>|}7UnED{)o+M%49#K znN!f2eBwf#x_E}mPF)}FPm;X?Q*8pQ<$0!4&?tT+(SQ?1MvEA;6EwSHr|;fX$zEn_ zCl%|BBE766BC!rbf()83)CeAT;Ia>3KnuFt`PM|=10Yo>A>7?f%cb3EUWL4 zAKbyVcQ&XH%IzYKIQ_Tk&TYW2nwT zTdx4fJu=rKJS&Yj!~=b6)`>D@*(6imJXqu{BrFi!cd84*rg;A#s25lf#V5vk7Eqssx#@~I}57`#!IoUzq z=;JfdQ4!~_kklRS&K#HG7@9hP>P2Fd)bBt0nuaE2Bf$4V^%)W zZkB*0xe|)ssVMV!lsg;GMvtG(5*Pj6bdfi@pyXe0RzYYzV84qpqz_PI8|JA1j$en2 zLn)>*GZtR9^=88N2N&JJ)!&fHs5!LpD zzf)$Ia;N)8`hTM9c$9vUwo`)2Ap@IKn=Lx6wW-)dz|e!xBWqrduoYHk8cbPQnhDwT z-UNZ`MX$9cd2WNQH!;te2OQu!&>j5d3QPdg5H7_QQo=3^@!F%5)`p@zx_f>mVuElL zqnI9}56VHiSJX|qELtFA*SKXNi$fuV*iqIoIvmF2k^A4^u7jW1Jkh{33Gg*%day4Tcy6>YNDErCFi z%EKcVoADrjXEd^s3J3MLdru0G{AfdBCj)+IfyxrA{s{Lk*2iy7Ngw_AoDjwq&rx== zi39D!y~h)3vhFvX0-he=jx=^z>(2So2#*M>O- zkUB&pXiFHQS&gG|IMqKFSmbio&xg9SvQVwDXoJzU4Djm(ZlB7bK{rDqeP)8ZR*S@7 z7U!ebEcPE@cy}PDhDut{2_b$PgeVXv*qYhTS~ur41Kyg4{=GfkbF?3`WM^Lp>|9<+ zb}O9e+2&p7eI?9m9{-59tp=zHGKu_~M%OPfy6mE)IJc?J;SSR3xi9#xD7+as9zAxh7*9#ah7u9HvgZhi-M)hSZAClIww--C1|Iu<0Po?C- z&lPY<$JDQCB8ZtAxy^|cQfqy&iBx`S&~J5J5<>$b83H^YFnt4t2Djh6{q~#)GB*uZ zPiR@z;@KA}5u3NShBL1dBpJ1YLy@d&UWIdJUtAQo#Kq3qud3nwkIvS`{O z3R@tD>w(#^oxwchOfj%QjIP(f^x|V%myM9h^^d~V&>~Pmj7OKav5-rXb)E<7F@tov zC#~%al(*C<^L_ds#(h5w<}=`hdan0vdOSSi{{fulf9=;I?AzeP{;T<{M7iJ|s(*Dy(L1nG3uS=`uG`^rTCMN8`&oiQO%Hj4>IYNIAU zYvV0;mTx>3`+q}oe4`soMG?WHk;~~-=m_$9<}#co*}47zfC)BGX@M>LF1L_*lCuJ?5gYM55nm~~}OAdWaDmvCT}vXp*8La9~p_VMEl7`&;U;24hp z;T`AMsACV?%l&ik>=e11Cs-6b9f{lDX@2a?v&UH8z7t~rK@=5QicY#P2mea|sQ0(J zLA?mk@B(Y!V`w}*%5OzBe^yMNi(^0~xR^+N(WRXY*(DJvpxXvORD^dn&q@3jq~^tU zJoW8*!M5EamO-84jkTzC6UaY=YSSNp>zexBb=$(pK$zh9j_y|LKt&X8DKkAaV_ux% zfPsRYq^h+E2)MXO*W{YmygSc6J^(S-fb3io{s%q});ufjx9+c<+)JYhjF@Besy+{IJCJg41#~8m2+CyxCAhN?wNu-+b!0*z>x&up@ z#M~(g+B%ouItEH5IrW_hg0RMi@VM43Oa+^&jKTx%`?6dLDUrhXjPf7+2snWQi!0mI8FH zkt&|XK^w~sowCztbX51T*+ULB|9voH*3aai0nDM%Fj4zd`nh^2NZBE=o1U;F)NI&l z$7vQWG+(`B9!!x~t~JwB)#Yk6fMpl6t9t_Gnt(PfO$rxpJv+No|3{856$D^BM;l^` zOuPoVN@7dc<$?mOTXyYyC0daDsZ)Gn`^(7iRZslFb=$z&*(~;Qt$69k7dX2b`3ei9(*eB4 zaaaG^2cP~iqx9f|PcN#4(hbDGy|JB}Op`;gZ26(f%?eh4WvSn&!cO#}=ry8wurh%w ze-Y1)(8$yHjJh*gX_Qy0XFd6r(P(nAbyQ+zfZ^P-AI;I1N{>B0SW{rAY4TYBwp<&_w<62EG-;^B~fn<)GC4XQJCxlu2E?$A& ze>3M(qWeDLmI6kARl#@U7V0+V%^CA2(p%6kJvWuytzk1FO?wU?~)*DPp!j$6`&UkdX#hn*!7$qL?KDL<8%59J!Q7@ zGCG>FF%)~ty?(e^60aRB_Rg5BqL*l6oEQk!0y~)ka&hB1hcI5akK{m7M8%~407~Gr zuOA!Eb9QwA^G)GA&w@NEnsttWzCJK9-Xke5YJqiD-JU?VpRfi)lLhzY3G`VJM9GTk z`GY>7lK?LXbmf<=vYitS&%x$Ek)`g8_Ml?YfT)nUz;_Kk=(H6T#Ilb{lak1Am#U%D zPQDcoX3m{eQh7Q=2jWkyZ&o;L1W*QXCt#t)ykFQ$gPb_Hn{K&;J>SFRvLQo*NX1l` zq+*OdZS7wZbjoOkm+<&r|HVYtOvYGjY0^C33F^B98}Q@5zwQ&kt*r<8!^7zpQ9(s? zUz={9>Ba$&<3YmBAd7YmFymetPYvjKGI@;6GA-`zq`|8fovpx(eKxp~wZ^77MD18p zu!HiQ-c5OR&3&vN0;>veHhCKfGNw*DVu^5iC}g(tS1k+QBu#A!kdKoi!hLiez@uy! zn0zLNtp0AK^Vl%Q{V-gbms|Llv(LpxN+Ga>B)D6`nl$^N$FY7%)o(ttT? z^W$o@;w9xIm_tHzvLKhgzT~BD2V`_?W;3f^K{r%?zaI5fc-ra(u6Z+9pvVYDJb+K% z)^irqwJo-m;Q%~M&Azr8Gxc|*oePM3(nyjhXzL?UZLuq`IR<4G&iTB(F9H=Qo9Z$5 zd#RLU!Z0EKUtC}}rkQb``2xx$s0dn|+NHV)clBuq60RG%jLlDOQh#>?=HVd4d-g0` zcQ3q&5If-+?0qkfMIwYfAbjQC$@5 z{O4UQ2n(|GuIx20PR&+O06J^L8hEt3|Jc0-_KM zrwlr9o%k} zd@PM$b64;yPl=Ki>kqgWQVmA9k<0S~UfiB(>ISm|$s@XfiI~x?lst$K$2fy6#KHb33 zZxdFB(I~k?59Xrb_p_ZLJuByDHA*9qhOxK=#~hi<5V=?j9_&o0J|W9Hb=Ijz{7<`d zL-g8*I>!wAuoL%EZO}!P>CzR^gq>zg14$in$6HZO1&%9x!}-F;J6sIkiGFI<%^``& zd+Q5-eLH%VgjI;|CMB}4-0klZ-s#+#YN6N=&R^k{ButJ;b-eGu4RLK)tho)n%on(M zexoWsB*8l+`Nunskl5=T^eDIkB^UjIxL(sGIm1;;48AZAS62?sGu=e-b`h^W2UBN~ z#jqs?DOY1Xr3|1fsM_ee@hRP#GtJ6mfF`6U(1$zpNG`cU>?;}U5-u#V>oaMLj0s4| zJ@bC=cN?{dpLo*(la!NX754J~ zX4b~(@B}9$U*(Plid{BmvmvFKC-H-{hVN$P9(CD%foaHHr`KQKOn|K0fomMeffj^F zuGkUy3pQ@P4~$gC9;r1H>fA$TGKNTfD0W7!V)^r7pHX+LMwwiJQl1p^m6Avhl8nI~ ztC8%eIL2E>kNlTpnJymfHt_ASHHAu|#WYSCY$R33q_CM*Q-itO>;Sk(SF*$HX^pJ4 zGmlZ!XWTmE5;a0M`sa;khA~W;MRLqbgu|_5Kw@bSWMYG-ghNo&imih`c`82cNZ_LX zrG~c~gyf501mLTkFCHwR(k-(?{d+mIUniL)N}hJ*R}0>l78SrW4oLC%I^et-b#6O09jB{w=)#pnz?9 zIAmayHalz}dd6n0^<>3;b+faJtFTf?dAOnfTEPsD!9PGqcoLwVo*3%W(e;m?fJ_VU zPJ8%k1F~||Y)?O@;GM+pE(J9UmR|&32wW*g*W&La(l@M356w1Hm;#~cKya+O-OTCeAC)+ zYo)iZPYIO`{=!V;@PLqCK0=oy2=mj_`7_;)4%aLSmqZ>V6MhCmE#1X)!sH1uGe%$V zHXNUsv@Kwm*4wV| zD%BA(C0BR9Te2D#_d4N9X`9+A+NbO-K6qwBz4wQRgUL`JUTXUc%;&Kie#M~adiz}q z$>FTQA}k(m!}3}9w&LCBXxR>5{k9E3BJo?U6?!J`V}k<_yl4azO#oLQf0g{%t>cZ) zXx@mP9gvrWR3B>Cx=5^I-k=H%IXH6f!aFN1Elcjzk>dzWxh> zI^>i+%HIbe&r^C`IpCl0Jkc?ME8_o-#+l;bWkVEsMaEb4s@hhwh;N8zcF)OH-@QM{ zQNFi+f0dC&+8*ezZ*j%_y?tZ*o)g1FmtzLLEXqR%ps^;ncWztjnCRHQ)fuOau28Z8 zU?|dH{{ZBFtQq~F_}_QqGGOqje#0vzhZw3M&$|M|Yje)@vlVT9&0%Jhf3PR&FWi(TJ54?0W(dlF5vW(A0}UgrY+u7qLZ-Z)WGJ zI{({*S!LVRK$glxS3(;Zca>G!oWl15=!+FIsHS9LB@&|`uIrx%889s>g`vO!`>H!#+%0horpD2xyeIxNgRqnW4hL_iSlex>6${PCeb?^x79m;&x+=6m5{^h z{<1d#RQ{i+P6G)c{8~Rj!puy(36tBQQ&Z+Nm}Trjh1@3>gzuqTX5lfQ@-Y1 zD$I1SwcUNKd(54USkG;0nqdn98GI-op{M*Uby_<@B{Lb-(P+`+87GGLN-+;)03SJ; zA7I&@Bjz*s1s{2Y+{(`qq)GG2`}e}b?RU`cQ6#SkcY6d$9coJWk1-K(J?n!GLxyyE z9@(Q<@VeOpP58Sr2fThk7sySMl_otavCz_wlyxd{r}UaD-3eRe*AA(Ge9$T~xv`U8 z1kK=Em((c(s;~C#rzlQp$f4hiArOU-g!vd(GR;m=jyy=%u_^?+LTy(Rnb& zT$Sen4_M1V;x%4Nka);GrtZ*PG9j!QeL^q4i7B)2&|(5`Jdi6yXI-6r{{tetKOgdu zS|TYaVWi^*P`G;a(l8jWgEL4SKh#tO=a2GNejtuBdi3Wy$m2Tq!($UBT_dAB#hh2O zJMv&xHcsf9b^)EzT*9Zh%@NvHbu=YFbn$pLckN~-VhRwl`VKh=wPA9N*Rb2@`OZwV z!2gW~=KOb;A4Bl{MT2CetGT)wlOrO+QmfFm=kr3{%oG3H624=@^tW_`E~=EyAsnar zbYA_*Sc%-U@cEfNFW(WJq?ZF6A0P$sUkelOCjVGwkCHTK(^*Mfhx?faxTghF_ zbloWS!3E*5k|}?PB3?dY>j@6W9M7j}sC>gnS?b8fxhBDP-M{^FY~LydLM{d~)24ZS zO{s395tMaT2>N8bG_=Z?F6L*u6xZ{Bz8RnaqsK+&-KR4Lme-`3r7bZsbqM6dg0z}& zlM_tH--~{5rN?&}x(keX<(!3*sAN7Ka0_kK?9+P$$e1kpX!acu+J@JZ+pZ^P9OPSt z>f5PGao;<+eeutwZ-fW%55p^;P?Z7! za`WN|l+g>?;S=8RPJI==c-No z);6AmK2vBw?MF*?Z`e!R3Bi){yP+sH?is6FC95EYZl)49f z?JQz#ZPAAAZ0PJZS%~rgRdtldsVqOt{3F>H;%S-*-ZO&ZV3%klMG@X1VQsE1-2p}# zH?~bMPnhS|TfqG{6RF*Wx~O^J5-SRm?pW4@GJvxPP!4As?_=Il41nLm`{Z~K+(q$p zd%`S!6g^jzD;%6RkDuxuIAT{Qr=$f-r~?w@$W39jWP-h~WgvmYvpzS{eIX^I-Qnm} zdx(Zyu3M;BRwfHO^F7V#YB`><<`lxxyJ7=# zT9A6g0y=T2q0pmpYH!2GT^#%KTrs+Z10lWrz*cBE7~@q$qA|NzKi3m~c?$`k65kv7jfyj3~%Uxq4gK-u{Q zBi{Y%lhP&acQb?PWsa3{O(Y4t#@X+*zK%iBd*O0g^vaXZESFk8#tlurFo794+`d=S zfKp>B6>GiPVA!j%0eId(4UBmcVfI%vy z^q8anNg7NZJM#W#u>>Ovx+gR_BNl5u1`F?3x$fufM1`FT*gerfg8G&>wUX$+ZixNB z2EUj|XwCAsQ``}GZ#H7(eY(TebX9ZLcR*uS6iO|3A_Uc4`QC*~Zqt3r<$8msxv4|6o(O#8;7dW-#)heqd#*h?WojgtY2Mqwxc-*X*t63S2fz5cdD@ zV1i^i%83DUkUVH*ATJ5-yHyUZZxA0o=tDE+;$9 z2}u}1)8PrI4PLSLGFB81z4u#5aq;OiwmXe7!@)Y48eGG9drh}(MB~A+e%;vNlzNi7 z&XBhS6Iiq*IIQfR4g8ybiGkjGmXz25+o5nCrD#K60OFsOs>H;ycG$HHLF+__bG{r< zZrcJMC1bN zEZ_e0v{V|@Xw?4;d2&_>cw3KTE zo$g}`9~L-XWZ4n%GNVzUKHlX;KHy?AhkO5vIjT?4V!PBi5u4tPx*V8`C3%k_<2!Vp z(7d%~Bv2hULzm_ER_wC`+koXQw)iIXq-e7a8#-UWRgQ)`t8xhx&--LBV zQ0t89qAw^9yRm1=-r!4A5uEiTP$!ojr**C(GSJBt4<|xViSe54PWTl};;HlGIe>Wr ze9@kT(YlOY)q@PgWO&88n$%zeBD6Oo+Io^|*4N?Zt*!05eUbBV8%>qD7L&gfISctJ zuAj0$#*M3UBi*!~eWsPMfuElAqd}4V{XkfN=VJ1jZG(2Dc>p}a25$U$7Vs@}5y-G& z-^Dz*_|7rwWBh^&c=61jP&1kQI8dY`Owwl*WAvvD%EVSIitr}zP13frqRK?`jw~li z3}v}|yxJxxu3s_AV6oY|!G?HFw+BlNldo!i5&yZif}n_c^zQHAD}XPfXJ)0G-c0`) z2>74thV*;#vuXGt9c9w8cvfh0@!VW?4-!jQe3`g3T{~Ua)`aOt@6HXK7#Me}D^Q?5 zTJ2PGLhfQU)Y`hLpkvXeU9E^{gY~AD|L_T>m0lBExbHzwWkd8mj9gcB za!(VH!`S8(3{<>0sJcv zLVSh9$YT&fyW!epMdK7MRIvA4m!qp!uREzQ7u1GBRtbtbv2b-V7riAT`hqFP(>4mG zL_&_zBEKvnQd3oN!~lI%-9{Q=-Dy z9zU~t4SRI0B$!>-M7fOmlHC+`lvo6*YvIKy5 zhhx+!tXhDnT9N|Is0bE(>#|g@X+WSdJ_GIsNoJ-9sOuKr?@$q#J@>>_iXlwVz!2*S zZ{gST?=@vV?5oEBbiAER3D%wzCg5yew_kgfd~&8ZIeTuBSITSJt{&0Y{2R!uk5A~i zg*Th?j2kp~@)uE&c-iDvS_mUG85ZmPnonKqj{7&g9?@;MGqa&Po^5=|5i98NT!0iD zj06x42H@|{ct9!6QEKn~oXvU`aD<|IgL5I2b>M7lA>xQTUYhWr=70cT{n=)(2X)^% ztEmMy;Qe7{Kg5gmXqpG%dbdl{Y9vAf6*x=)PE>-Lj|enevW$%E7{8oOEeD->owt?qqDxP zkF2(5ZMv6hDExvDhf}b#5n!kxD8ddnZsJX3Y9E=KeSMhZ8J*3e_%n|&NS zMf?n+g~Cizjj6 zFPNd^%UhNxEl=uV9SQN9qEXAzX6Iy7EKw2`KglUK;eXF5BNp@sd^i*i8i~fFw16O` z_68}%&K}|wZV=DuF{8_x!RnCYnD_K2*obdnON~T-mhZVhBo>UjGSyb8->fx>(^#1L zY*4*-t)&A&lx$noOLLsNJhONnrG`nD#+;lDZ4C)+92hRnb(lZjen6>&OJ zTY;~v_at!#ubMW6j7wj5E|~to8>>FR`tv^&A%{}E44WZ>v}p*Do06+}W%KE^kvD&x z^OGdNAA&s3&Fzwvse1(hck>B4(06_gmS5DgDmC7z*S55CR*IsCHa~$UR}I~;>e~|p z27^~(q)`1QtWE%o8lB`80g zb|8fhyPN#PQ^a{1;#b#8D8I*XQ)c-P@+yRSGsX2A`=>IMYiq>H; z_@kps5c%XeGk_ToKLm#J_sic0LJ2TO??5lW>X3|qSSp9%eP(*GJ}N=E{4W-CF+u1^ zlpJSnfqb^)P=fx0`4pW064uj?nrswsod+d1PhuXKF(JNs6a_#n6qxn$(->SZsG@`{ z(s&T262nK)UcxYelz)D|2KW^fu4-v50L z|8Wbz$1mqL0nTTS&Ppnz06%_(KB{a=sR4f65^^$WmGR?^K5@*8X*eI}6{R6e{gaU9 zDB*BC{fs#YHK!UOKF(p=+cg$}Q9SvqMmM{~Osf~3BRr@3$pf`LY*LKvtML06AH6~b zf1ot_IMdB2?*-`%_mqeSUXR*t2f!y+2|bnx2fA+~8A(Xx%25OI`+i1}7F1Xyhc^la zv!oQJh{=eRKnZ8)rsreWDI~I^+lm$3=k4wocclE_;CX zDhQ3C)aFk{X=sVr-7f)9UFj|8$RW>FIc43>W^nsJy7Rv5!Te%Am!mSUL0%qq{o+vFw9#GjU8Whp^f!)_ti*MWBER#=g}3P z@FGdVQtgIXm=e5siy7(G0i~3KB|!ke5p~-XB2`Wbh!9#yKtJ~kMb$V~wPC=@VoztI zjR|zk2^LX*4NE;=-T9lo`<~wlKD`)XhryyEU2k{rp#8zy`#QbrGI(>1I^vc~))!ZK z`DZ58;)lqDP^9^;JfZ6~&OGJle!BUre!vwDNsR^WurnfI)jvGCQ!@?@2MU)=&@XF{ z=W5L-wGivu^bgJQst2EqOsk54``=x7r7p7$ZwjTBG2{$^%M#tV)qdTLxYK54kG9I9 zSWWEGT;QIsrI~s+W%>FBbdy~dI3s#l3*pf&DovjUYH{lk7LBiTewa+`Cth~;Hl0Kh z7XR`u{_+9ScOgE|gISfM3nXWfo^5cF{h=F(A)j^@IKwSleP`&};9nGmR5_-ee7BMi zbNt4+Cq7@BGK#S(POHV{uKNoQyqHbWPznogu-z0!&ut#;7)X-(tz64{hy#4k;^)D; zA!dvW!B9X);b<6uK@mUOKWRhp)J|-rj}fqkmYDS#Sypt!Mg(~W?N~%a-z(eJLr1dN zNPN&i=w*$Ko5KIS@jHN4V;-bcm1*R;K%^ZgA3|xDBo76uk@(N3rHZT_wTlbbMkJBUri=Lach-Q9)V7u z%SvsmZZcT>J0P6(x95(9!*gbrR{>?eH;x@(X6e2DD-F<_n+B#14@|^$yRIMU=YaXG zL_>2XXZsd6yO#T^JxoSpYS{RbP}GUQG@#sEi6D^bkV2NkO0k(+aU z;RF&>Hc?`+W-o}CS6-U~U4NJ?rqCH7!AsIHQVm6{rn}CdM$LS3=)`xOi5IvvojF8{ zoCB5*hwG{`Sx-#+o!sDUdc1s0w`bYptt<A$7721{T6N-?|Z6 z;{o!O$4!{!xQDMl342CEnm3>KWKjiZS7nu-%8I(VLMd?~T z(tdVRdC>wqPdjo6yd+c;Dm9`1>s3<;!d3CG16|_AB0qSp&HI2!to3rsho9u2saK+_ zU>bQ|45?!bMEqkHb^m}#=r176=yqEm&K-0q6>zDYvf!cAVLhE%Y?l0%9#Xe^>i{C1<_9-MBKP3atVmGXWe) z90iiG4`%zwRvOr*E<&fVSDV2!ySZ%hcY^Kjcls~9NGKagcf>38y;tZ{c3szTwnpKu3$n0_7wK)!m0>9}aOcJ85h)HDFa3%4iJJD)-g;`op zEnQ|^m5kAJ)s>eoyI1DTB2wkje}$yCp@JsWtP-?MGroZ@Zrps$&Qe6taDs=x_hH`o zYyXFQ^$KCxQ&e^tp_c047xdW{oDfS!UzG*7a+@Ae%@m~^}35L{76+fU%Imi^D!xAXE z^FlHT;+qcz?u^DDsJzinjuN3P38?JVA&8#T2izg;pJC7vV(xPm2`)MEcTh?wxiz?) z(#B;)1ObGWAvJi`n{VUOkE<+BdY8SgWE6xxyuQCScq>5e^1ZrIUEu%e5V-NEVAS?S z=$K-o4hCr``V9Upz#Wnabb4`mEI#oH>{)n#)iD9|WUFcfT9h3GB|Z##kc!Ml))ITZ z@G?m*Pp}ZFIY~a;UMmo!O@`K|XQ*#!e=tfgh;1-n3jcacJ1FU+ZIG6*k|8c%UeiRq zspr%AP@$irCBuKj^5Ev&`27@2f5C*;5TEYyv#wF41}>6u7T)eaUofL={z1IEOoMDn zS7oJSpWz$1yGrTj5R1ea$XY7wK&|Lm_ESO8Dyr`0nz z=RrcSliI7IUJ;#G3ti=sr9Y-eKHZpqb0=3=>@)s?%@p01ZQb0~dt~{812%NSHx)*P z;^bASx)aWigfW728A2bPXUTh%ivJp4se7(K6}_PCs^$+?n!drJXI?lh8XT;#Q0P0g z(;I=E47a{T$SU#{d}notO*{Bww+trTnG-OA1u+y{EYHi`%z@*-d7h@BJ4ek&3u}(_ zh?>=g-2+JxM(@Qm6z`Y!BL)BtjJ)j{Wqqu~&gbYsisE(dpHwsCpcbyC%_S_owxWzT zW0%Q#PKk7qxn>_Im1pH|wj~7*)kpkjflG#OlV&GmW0?3qh=zjnFLX-0lqfo~vPm_C zQuZhWb2N7AU=_Bv>apV|6w#x?{~R39t(!1-&p0$7lp|GbG8D|f%1@h4h~nuj-p^l! z2aHZm0D)y1?-TsC+u`DZ*2zu?m;=Dv zB1A7Sk(`2P3_?aqIT)deuJ3n#rhz}J|n_KU1VgpEv=QipG;NKfL< zY9XXii>53}D(l1THou~6=VHA@>&44+>1ZxNtVikqu9GId_b6Hm;Owv~=&Ess>ExC4 zHmG_IJzV*CRhCI9sMYrTBymBBc36-H(><&7-1 z3u$BStvhLgq+<5CcN$S1Qem6*qHBf3bQKor4zYpXIO-$#o`d~21#UoWsWG|NcKJU; zKM-%bvoaXha8t7?pE48&K$GxLbHS-nv?pkHVZ*XxCB+gpdgSmi1+Z_`e6dENQR~f> zv#IgUKTohB-)A3MbGr04=a};8q$62BXKWSnc@Wj^v9t;-^=BUYfZHlx3)Ki{ESyL2Cxw+88kx)l5rvEEyTV*)3I_=6G#@nJScXA`wEuD453Q-kmfhfJo zGg#Vs>5A=i8MxMYXC_1Y;9iGm*nHbyW z?i2VZ@dO$4T;y*y$tgg6U=T$6U<*4D$Px449+FV_a4xo$LFYCgN)r>X#d+TywuTC z>*($@O|vVFxS*sVF>Z)SpR`6C`TP_ZUyS6)h92lhW7~5#&Pfl&r;hAxymnK-z8{75 zdAnhwLPN=z6YwT3r}Gz!2tzE<#AD2OK2FpL2*T}|h=XBq+d>Z+m;auyK__q-1IS9f zkM}cl^QaaaL2W&PJ36V<%RD9hW@}P(I@L{br%Y7wJ(0&1u&)fW z2?(&up-m9T%)*zsS{ajqviAGe&l*+M!E`Ga^OWu`#N&7N zqpNk4>;2PBv^7c6hTsPqE=ECuj0~Duz5u+^$0NMW@}w7h#ZpDcE4VCbWDAaY|?mE;goTq!ZG8{;vuO2s4)lKn?lS?1W?R z)_xwXmWvZcJg9LXrTi!|;^%lCA`{ef6?|-P27|A6kCFvQZp)?kuIjN3qYy8hCtIxC zYLEzk77Ah_XwvdW3mtGC4~W~rjs!oY=6uHS%wn$kqECxzs(eN$K{ z4K|^fe3Crsy@+OqP|pm>V{fLU*0LCa#Mu17up1X=lgf5JzT^ee|04bRLfcXgk0-QB{li1n{-X0hU-^ zIYrztT@J7hph=Y=vDM;?i*D7)Tv?tSV)Tv4YwYc&|eGZdl8*YAcNIED8Oby*w4l5}-CDLlhSCiqWksGy zm%qnPAlCB7K@;(y5~$;-gP*BS{yRPQw(uzeOpq84Qkjha8R=$V>_pM++T2ser(5nW zTXApBL2HxGY-UZ^#0?p|VZiR7)vY9Q636o8O-i%?f)bK_8dyFP=w51$m4$!uM@iB++6EsQdX92h_{+FU`ZC%(HQ)vTUu1n>GZAHq7o_e}nK z{9(pi@UYr@@wDN~86fS8(K^yI&f+f*uwcbJ$+ zR+G<|<^?y^r27|Eh&HY@oDO#&?xHn28Z;Ey7mmCyDGPX^6`+40n~N$5f&oJuihjut z4K`Vn zkHu}-7LN3*`eJ87AL?Fp9%fH0YsaxeQUBp@SM>S8)Xp|_@lo0d;tg!kZ`{DaCk66U5fgnE++5R$Z&iO750fe}Nj|vsd9e?JZ2fhuu=&0u$C1Fx>MpG$ zt=@A#eY%$$@Pk?%>y**5`Uc(UHrB+`X#Yhl8-SPNu+>@Fd@4nRD5-eD1Y>DssSnAA zy%#=dJQOPL&EDgxkCq{<0@CX_AN{iC&Bs6~Ut(okgB zryS)!L$%=~5i&@B>^MHm&2Nn=Zv7|}i&pCZ)}kN1e?%GbA_falyHRFpLa zw#J;zg87|Sc8w((e=>5A>Fe7;C5KRA{8hU|o@8uSuQOL5**XP@|xS@L%h}#@i$ARVqydO@mGsbi_(jPRmy7 zpgXHYdF+G@EFl1pxDq)+Bye2%By53{YTaH32u6l^!_(WA!OArvEL7C|9tpr`wUrXl z{=p!=r8drtT~8T+7vqU6gxkte81Y#SKT&yz*WuW>kNXhHb!Zy_^a{3$*n(Vk7(TW5 z#5{2^bCFzwZPSAqL>T}vwu^ZYKuqECIdz3n8Ns`e+O7u*ASY?HDKJHhtSV42Mp7)X z58!z$9qw+wgFXMfO|(OGf){0mU$nUT!Q)qnvdgJfm2J6Y_N9TAK+~9R@Y8Zj4oKIE4^c z7$ItVt{KE*S3WP)Vf*xaw23%Q8r?WBGWAZO8gbha$*vG(Aafi`YTjmH^^d=$s$nU} z2t0rEQzN6!t^#cZb|VTre~l8-@PM4pDsR1(Ps_&q_P?AkGG}ZAO0ba>n!I?W*<}p| zfc+jAx*>O69CK}HcR1I z4K2!3pRtKPMFUagNI=LV$l=P94QeTrv?EexfPpn>8;0tv2m>{X_z3I=l3Lpe$Ic$9 zlm!wLv|){Yz%nQxV71xZ>jnYqn7L=X{28iu^XJ7!uf|Bqfa|G$j!CGi?m!e|$=;cq zCj*gl?}l1B_VJ6Uh$lyXy$42W66^xO=G(vvIsYS^+``i>X$&+i{d)XPmxs{C<}f)p zp^%3Uf3flxj1AmbhooZ`gQp6_S5gTUPGEOM`WAUhK?hW}D6g`9d^3%{ll|1QbWvDA zO*bZP{O6!>3$-5t5j(PwLSl6WI23{<)7&Uw1YH~I<)RR!P0jOhPR_U8I z#Sn4_$F}fhVT+X3){Y0l^cK1J!Wj2YdrB>#E%Nx7KqBU?2oOL1DqSJ@bCzJ-^bkqEcai6 z-a}6Uia1kw$Pc?(JET6<;8C9F=eRe0M4?r=5{cF8FBd;jTJHm>iqE-R5$eFY2!>7fxn^k=$%RjcEqJ zH;<+}ncn?LLiQd(p_LO&GvBW~%XA{%w+K>LnOv6=X;Nkn*YshzJ9+Ek(FFx!pu2wN z>jX5wqc3~5%h$$)@d7Uj<8+b5)>TN`+CT!xKQt-^1xr?%Aq)eLJ`i~x%?%o#BzDwR zH+=b>$gVq$VMKoHZCVX7W;N_mrcPo%oA@bpyF&CcmXWtm&rQB^%SzU&tZ>&@n`?QL zE7jJdRNsXa_hHB!{0&0L$XoIl zv>P=jb45$J7m&7qddTxnmm9L%mb<(Tg3mD^ETuHFNkcGy*i%%I#7PF=CW{W)`9eZV zs8x)OC$%RMD2r*OI}hb8702@??e+27B6Oa9XE1~^HFRqfy$KVcV=CTzhO-#Lt$|8J z>Veg>Fc#}NMW+S^JSFqp8DN1i5aNnmXae0~S>mN7YF}mgT*PS6g=dPNh|}#&X2wiR z34@V2Om<_qntu*B@yL|X@?zFna~UCCAdpLFoz*j3AWe=eXI1P-jmape*tfRuYo1F2 zscqVRmWP4^2@FT=6Imo)uP34&WlTGRntT>{nhLSeDARyJICg0;i0&2*EXG( z!V2_%`lpPjK=S-b&h_h8;Cf2!_V68Gqi79qesXQHvI!?TIujTsV{mGMcw!{*V@k;cWnVN>UU`r7uf&a}e0$P&EV{ua5I*!PGxTxJ}!wU7f!js)P9+{LZkAn&x3i519kiEfl! zG1$r@7PfQf0G#Bw!Onh@0RXPZkm=wHP%oElj{PFLua3&l>lFVy!0ekf0wtv70K%Fn znS#EX!$CdH*R6|0)X;dp4N#N$%uQoG!_czVlQHI#EGe_S;DeP32-{1|l|i+&G2;*E z(FqEg0Dp2E9;bV}zX6{9Z;(8^_3*dlVzi2dA5 zKhmG2tsm~#r39c=>3FePk`E|}=ko&!W65SXrwoAwl+R%sKd&QaI? zv?$joN;i(`@{r*e5`SZn?+7KVt@aimR@vq-$hvg9cEpYrP565B7FpMRy?$T zstO{tKJ&%ahB(W3tD2)VCTRCTa{xa;z`ta1lMm%vfof#jP$z;>APqhgq}DR#kHIUH zdwA^`WfJ3On|r&FB(_}2Yqr};-+nxKnyWlHa$eKm7|j35kU447IKz#}ykS%_$6~i* zl%Yv*EwFwn%K#$+<-B~CreE>y1tKt# z#@P|}c3A360Q3gNy>Y2@85Iu7t$IeWIZzvs(od+sc-t^_LY0&&+{nmtY^ajGgQRGk zf9vpbUdVs9vOuU9?Vp=LnnwBX+X;Qt5hkw&-C?uO5MY2iMa}0I=KMz0?G`z4jp^tzD{1BF}HxQpV3?w{!I7I7&1r(6-ZkDrS3y3$yS!FooCN-QGp&|}x_ zYM=B13-++f@Xzy9V6?9#{^aX$q2&;O5{!x86Vf!ExvzK145@Uf-~Ai0Tw6TQ4d8c( zB+(j|$wgQIO5}nakq?MSKJ$hr?yTFT$~-%gHXt5663%)Q7Avzdl4PY_H3j}DEc&20 zODLHOPGWB110Bz8$m2&L400#Z^RqEb+fM! zvcK)+woX=lWuXC4p9t1qf z7=do8+So%awruIc0FzT|2#*aEUyb__8}t+Z#K``mIYahad-7EiD=n2~{AkqY{=uxo zzfQzib(D@-vlDgupXYw&96uh9mKvC_r2dL+6PRIOTv0=9bh;@g2NqxN@3_sas^5wt zXJxv)8Q_S!2{SsA-r+5d(}YX$-?)<^pbK{AQjeFq35;bBIkmsZSW-Y?TJScEVu-Zs z+q&5c_(H}Wp<5TLp*6FwPKbF8i*u{*TKoIX75!jP`qn0WLRG6lR39Jd&{Tzbj z=GgY4^X)PI35ADD{v~-6I>ycnqTzS2-|!U%Fd?>x2qZpgU5(GPlIqBDg4)! z_#^3+($S8EwPnBF-J`;-!-@bD<%<#9z^j4~c>;uj>b2fh$Kg7(F2Yal=Be>SISArJ zFM!@#Gmxr49y>e-G1(xibz)X*1_k3>qr9(H^0j=9VZfoP9<(ZW)xwVcFvU(4YMcS` z;z0$5rArMb^H=&$`d)|@hUh4RFzw|=e7!(oD`tY1;yy#x$tEi%5m-$){+ojZoI4+9zgCb>x`H$oE&>kyvCtt!2KJir; z7bYTU2eIaEAe1xUmAU~9f^a!g$;QAcRf@x}r`jTxS0&FQOZjo#8<)o0v&S(A%7t@s zmRc&Q3ne_EmijR@3^l@XhCuF18j;S<4|2@)H10f>Q~%yM$$AP-XNwfag7HoPPu=y= za_w+5kY~l>yi?aabZmA1F*_5VKUngvqGl=kd>02BoEyp zHCc*=O{=-F4Q5wEH(f?=hBg=@Ex~?+@sdS0$o^=Almx>p?oonTMLnyYNWtJE0n&7J zZs@Lt#6Qp3jJa|exXdm6E7BE&TQ8KMoWbukurx9ve?`5bP^{&W1tPqz` zd^$O)2`&iF4LhT`>sg1%y?Z zrj8JsNL?RY{T;}6r{gBqiUUxxEKpnlIXqgD0wg>SHGLsn?YYx*8;kLiL}+Zu^2Z5U z^?(D#Q`7!z%$m1ejiiPkKO3p(_}X%VAN1bB5;GJGHF$umWDENl-s=<^xf-@Elo5Dg zpHx8E?uXunsRadGTqQtpwbd>#KK^F2jmTNDs+ZUs_ZWbZtAk{Q>*MEIS06+y@%W!{ zMM4RV;X&6WKnC)Ik91hL8o2?GRC`D;0Sq3Dy~9DlEh~vuL)aVIHDO&Bjts(tYNU-I>Pd7Y zPCoY>hpRm7B=F$%Ag2goD8_(EYimOYBUW7WonMt*yA#_MR0PFdK{Q*9nBgf$mME87 zKY$DnuM7zTc1>kvqb&5`HXFC6e~2mNS%S@b4CpWn z=-sM@^xj(6pv!<8W&L+2Up+(ePmJh;c!^a0;fkoeIh}_-G)z3h!@0lK{IU2XIDApsavQC~?3HFIIsJEQr0B2P%Dq{iksv=|{Zl%*qXqmIyE zh_@-l4JDBb{aX3ifV!kR#d0!^LDS?%-UW1Hs$2krJ4K{{I zyu=X6*nHV^JFLU_=Pu1!Ea8au()@s_*zHi`q@26!`vVaDkN+uf)ODi0^Ik;+_9Q)s z`ST!$i0XK%nn#80LZkEGa=?cyly6`+IRYr81*c`W`c5)tA()r3ncx2>%RqRemdx(N z^q@T-`)TfrCk?c>LsaXEt?$9PfZ#}#Q}N3{r#*`90F7xpJgdQYyeN#t$9;68oK=0zg;8fLjqa*xmixNW1 zqRQI`(Eyt6saF@mt-ztq5$tlVKRcjI4ZpI6_S)*4O4lUMw>0_jqf)OGFJ9a0diE$h z!O1L>HV>oxd$-9l=2nTQ#0>YyHoZ^Gt0`l9@pNW)6Q_3`y-+5-u{(3`9|WHI4PSW3 zkJN(>r}8FB9)s^I@&70SL%CcVoyqzTkf*(QzPfFD~X{mcR1hz5AY@ogf3{1}Fs8r}*&D5x+kvH?V1 zz5&bEzKd6NrYs8AFmSM<1rs0%3^b9Os{s)g&iy3_H(t0+iBc;sT^B3Wk%DPu^yuGr< z?IJR%T*SZe60g@*HQL*V3c+9``cwD%<7m z_4#E(@0@sAezhTloISHudgv|mpA4#XEd*=RQJ>w|tr-vQE&LbOtsJ_DtzlPxrq;r5 zh_lmgkdz|q^cH=(<1DiVVgvs5G9G+Lq}Y6ug%TB5WsMb1eWGV{{chM8-UJu{_92@) z{^&&R>IHS96pJBDK=|LAA47; zr9&`Wltt!t974^+ku(MCko1H9Af6cM&k7{1|G}a6@=O>r>3|{*gO{b>hkb90iYHgl zmDWd}j$NgVII>NE`h^f0&^%Vb>(6T+w^@jF8{dFb_W&r+8jah4*$GC(Q`Wp0LaKR| zDDh<60ZmuckTm6BS+e=Ir4R}Ke2gN7{((4;g|J`>f=L$kpBv5Umkmm6h}rkU%r)^D z=O@E4EFe1Sl0ayre*mb}DIYeWUZB3#$r!QWV`w)DTWhjbcpHI^OT3SDCn;|*BD-ej z9hI1(*?CzqQW>wvhU|zEB9`VlXCPHjZ0_nhH5B6`%?o6B5gPjePc!GTare=DO@qMM z9weC1=apthz(-};|M=w)Jo-=wjB+jcdzDlF-5kq^der(`{=g1QGqk%VjO#2{fycZe zocD?t^F=YnhS9dsPo&vkoS-& zEFEgrSGxh6xYZOV(BeU3$M9EaPf>&U#@}qBLFBu5Qkqt$naAIWxP41!T5i%!uWTel zoRMf7?;be()3+zx-g2Qr$M@uwgr5>G^7y51q+J+ilXEBcHROwJzGcyg5o>BCN zybk*{a`{51d>4vwoni&wZY!_$69Vl|fC#}MHLe;Fx0DEu>3O|11zOJtYaR3HKV>S1 z3J}rs@%Y1vCmB$sIso%A~)j~Wu4;iN+#>sbym##XR*e< z>n1;eD0OhCq7nqz`=JIdQ|9T0&Kc8MTZLB^j{(~jTAB#sr&Aw~dV87(JD^%rO2bcFtWl$i4M4ynI(4G-=1A9fl%t6t{ zK!}WU<*b!*sL)wwzvt|C4(L{NYC~ccumRt(N+*BK3wIPKh;*x4rfmjFCqF)-FCMA~ zH)sHse5k0baJ+TCLk=TQECtjJ5_Sk{^<>@J15a#za67M(UY;trW@Eue|?7sB>(IZXr9)z48gP z&r?pU7vS2veaS^&NIr#@nDw3LFi9mO-NP|%-Y>zazD8pCTN=D}AJxYYD_`mkAg zze%+$$dfAZAVoS8CLfA*3IN&!X%z@WW_1WACm7BoxREdgbaa4`Syy?6L4nFKw1ySx zk%78W=1QIoxBLYOp+H{dn9=dfDD8XM@HZG0W!^B@JgHizc17Vs7Rlp-X8Vtu32xT4 zZb8Tk)Ezp@;hjjMae-woM;QRf!X?hb#?ORRqY3zSJH?z-foQ0r510_I0HIju9%#Ak zp%{}oLN#aMOW_ zfbiAf&2flYT++%Vq+4uuJmtmmp9g!7R=5{MDg14ck>i&PwYdimZq=0sCtH<^^t8lz zY_k%X>AoAutx>txK?qQTFpH>8L4)CcvhHgJsHxQ-x^JQrYhy%pog09gMsySser@Zn zBN5xKK5Jn2V(3~Z%1{gK_03&|7%@rQZfUPu zCt-H8ju_0rO!Yw#a-Sn?B8IdD9lmsSEDb5Npe|&R_Io*~uKPO$VX&yFO}9?h;ukry zgMYD#s6jyO19|ZQ#F5)LuFmt^8-r+F-^G+*##cO0RRfNU6`EXmI*-3sBPRgM4Co^Q>TdEM{q`bMsG4bgDczt=dY3&D6{&AwIQj zNjs{xqY#M(@}BV6<1kdHSEJTZsIeok8*3c`TKr%WZ7vBH9V$14v(C-A!m+I2x~gZy zNYju8Hd@E4V*z+l)eCfri5I=LSt(p_W6rfVc#WomN^FbCIv!ftB^<4jA_aaHd9-_`KxKB13`e0q-ywzfh5<9l#~0>Pkk+|p<>#YyOmDD<~n#I z2k#mG`FUU?wDwGRY-GGAe3QcN;rJyi*!vVs?yR$Z7wrY?DT-NtdbzF>JW!h>!VVf= zWHM)C6%TE;8IiK~GMt;)P^+4NdD;|vKzfr<$31(c{uSJvz_)G%uQ7GW#o8o|hLOYV z9Wp(K4$Maz&N7|osb#Ax1H9`87BivrxlZVu9gbB^(}a7w*IBO7027H;H78*I_H9oyTxiCr#z3mW+@HBvhbSR|gD$YEEk0utz1V=o+ z@Ep@L;J`Oy7WRM$oc3>NrB-qV9x7Hxo$2hPRDx|2*&WwehuV~m$P4xU5$FGj-8F9c zJM=Oxm%vTTMrrENhMT@?!7;f}w8O}%l8DddM4YDw)FtX4%E_Z9d1Va4$xs`beS&W# z(7Ug=>}X?x@VX4mrBkpPpc!&dM)Jr&?~7I!C9f0&LIWFVSUGT@G_cWgX6jfHDqY4% zlVpMqR@xAlRCt6WZ(G{h6Y8mcj}TNYLg^d4Zkc^VF1uNkS$`u{>e}R)@B@Y`%XIW7 zi^;aDKjIeOieVaY6fg-MlTZVVZUxa@_SAHY$WBb&u=ERr6L*)cnPMwY)=vx2Jdt#S zmnGP{e%=E_ofr(6_%I9()6ML&={uA{DsT4?|xyhAnrc>JV%Zodc1 z#4X*QT##p&k)Ce8;0hIhm)+2 z_F;vAFD;_nYWSUT^{-Ape8e3Vi^0*-IrmuGXjrr6D+1>IAdhxNM^&M_CKxm82tys# zd?uarwYtPQfy#roTp5lxmaZQ-bGNfJ$$b! z*@>nTcd0VY(KbsL82X11ihk>}!l#C}W2f4&pWAND(K;PY0X5aA#d-O=z4zp>+A-#f zn9g3SjpP)~sk?|ha5W%iuqJLcnU9Ec;w#-Y2?3n@<6PTvi&_w;f|9`c4w{iKM!pNa3%1-ll_3ML617|qCiJ5z(A3qZ_wchb21_yH0V`G@>1mtlQBjmf z!W~NNNTY4Jy|Q{xgnp4DE&z$3_TS!1@29KO54ceTVWaJ`*JD>#Elu@4p@en8|IoXY zQeocW6Qn;9g-p`?6wIxQtP|+~7VD5D$>gtXf7Dqq5So_4($c1JoL(4L0?jEUFwSkF zR*7DRKop8f$Y_$gGy#_M+U$0;j#z?_(6KkvZq(;jdxcWw^%5>cnp8ph-z?gz9#aGh z$t$aw0O$00e0m5!9?ceZztu>uzQnEgnXl{+$bk>@6nWsrq$k&Wq7OmztPSig$~^L2 z1r=9{)hXxy(g=IaNZ?2|WOan%85P?BkNE}f9G%3jMhU0nQd~t;+~_0bJoAVFy|ar0;5$-^03}FR2TyM`8rTtQQhtMAyDZ zaLysWU;w!cCU*swm!Zb#=FwQmbJT(D)t8Tsq>(Y?WCd+!lhw94QzO)9Yz#0nZD zm?x;j7RsnZms4fkdQ;zh**8CF9*A?oLH4G|Zpk}6-)Kk8>8H_ocYc@yx`!FRc+-0- zFzn>(!v-IeIKtWJQ58LUOQ`lqQYWg*?j*x&>Ff|EUNd{EqtItAm#^CdE`C>mwATU0d;udKB_%=bR6SHLVVh?ULc`5@97)qet0plKJGX zahA8axtyU~00^IJmm7|>s#Pz4V9e=jgxxwbX8jAT}-MITAln4*{j2Qpn|Jlzdg zD^QIMm7m|)*WA;%K#*jYW-Gf@7Tt|NYlcDL&;`B50C$?y>yaua2(z_~xCt%eox%;x!75*L|I@e(rRQ?BQn??r=&>D+k)3J^z-cZ|HqbtNs^;U5Sa z=4v&POL#VoPZ-xP=K>#vr!Qd-qk*%lq&Tcwpah1YP*pwGn)+?^?ChQ9n1~VR!R1ru zT6`Gi{q56KO|~=wmSBRZ(+uR-RKc!a?4SY%IJ69e;4HJ-G79J4E2>h}H7D0+xwloW zX04VZu>Kz*iUL)zhG57*iSUlY6QtrW9;1R z7tJ~)2@X2#j)5HRy&3e?D> zK~bIYaW2QvPWr7>b{%g;u@lUfNFXgt@4$}PM~K0E_hoL!UbegFntYxi=#*u4x$HVG z9b>eQ)`_0IG-Tr}c*zI}W692)gtKAD>!s-g1(CZfoXVsb!kSPMkgCQsxRGqifJ;53 zxFOdPi(G{m^Ebn~=4H#=xgrV8_u3O%Vfwx5J@}TkNIWOw;A|J@%jv$wEkOZ5k~MUI zrMiL*_zWlWjeQ;+JzC(gWbQj>iZUCLkf5q3G=h7SXCC6o?n#yhX{ z%-ZNlD_f2MSOgtqD_Sx_*CxRaFG?$TKCUEGl)Z(s7Yh!7ePjc5)RXCHk+IL6VsPx9#6w)XFRtIQ#@U_qgctODIE7gHNI2y7)i zbd;H^%W5eK;NB|981#LAGvma-8hr_AnLx$+#dZD%$O<#pvF&vp3=sOP!jY0fIl@kU zv60%OR~ivhibRW7;{gh)K)$1v0c~P9IG*4v07|%T+gv2h8!Cyc*9%8S^&Z_Fo6*zV zh5}?Y)&Y0^V5~=__hzf2;`z-ZqIQ7ePw~>T`=x46YYHWL8fyGwkzjQ%TMg%To_$J3 znym1e)HH^08=NVk5%>r2u*zU51y_<-V04aly^=F!=$&n(xXIN+>QSvMuE?3-+DZdH zFxv=g#jp%Tgh!hQeymboXGgIFN-}Wen>=&KaW<4&;Ps&UR(mZ1jLRiXBt`wrc4)aT zC+l)mO+r>ib97Ac@t6#m|E$F+;R#@Nyw>)_io1GO%6^7IGN`mzg|`-?;`=H8gr* zD#j1D^^_b_?ikA_>f`U(*`}a0$|91frN#x+KW?QH$kg(X?2CVQq%_6=@jn^4qt*Yt zJTz`MvTOCkQEi+UlQX>(KkXM^p{G~{?$GyG%3h;X?SX%|c%mSEvC!gc2^fsom5|lz zQY8F&Fl84}&Kmkhsi>0m?g~W`ZcM5si(|7xM46q!GHfBOItea}q;0)X+@5W6)Y;Ih zmA>hhYSsuvLyZ>AQxBFl3vUsItM}OQuN4#^{Yg9np8pm$bzK zV5mLM8_7N8$HE(Z-bvbB?QKVy#Gd%R+k3g)d9> zsQA^r9@LXm>XKAN-Hqjt?}wM^dJq(ertzX5D4eaxPC$wl9Upi?HzZkMT?OAtc+CSv znK#XO;a}40bpQx}!2aM3(kib#b}h)BQL`?wE0z`W$tLb+vh@}npUX?g3O9>0UI{Kv zcG~Nr?2=pE*fdLLiiAUkI-VK+&|e3U)~_Z1nf*`OvTZ#TOf_cSNTMqsZX{Ejs{LhBcsr90p)blz zsy#HIPn}WL{?5g84t=L&r7T^I0{Q@s#h>qjAoV_7I+NwPm(3+>LF+mIEe?z%B9@#( ze9i7zj-Guxk;Fb)2gz9)`bxJ#ul-sN+QcE{WGqDX0gwU{pMNYb3SzI+aDJL5&*BL= z-dN}eF_pDN%(R;FfY21abTWiy`WB8e$0YF{Pc|rrIE0*e)(2{^_K}*!EU^!!`;hY` zL@v@fkLKwIUXUt-3vZ~L>4gpyK=dO$EkuJH$*p4<|JibS4XO~{dV291I6H!%ed20+ zGAmQR(RxC8%B~ZyWS`cX$h83Tg&8~S(jFH`(+UQ$r^kKGH^=e!>>??p44dq&^TTlH zT4VlZ?=Q^lRaMM<{C{XBl&;1j;z23T=?U~zLo5+u35&flqkC+z6pJ^KHMk=tVsv;t z*sBBT-b6D|B#n4~H{PywLl;Q|Q#L4=9=D^dPX1gU9>NPZ_0*5n)GSR<-polAuCP~v zmlE@SabJp;bZmexi7m&0q>5bp#%i`$xyDw}hOMY?5=v*0 z_-vKXFS*KW$E*qXUs~spX-~M^=6OxZUoO%u5T&rLo=N3UoxinyI*=s&*Piq$wGGX3 zExjuoOjQoJpK6qBvS)=ZSh2An{K%nq2czuExYZ2=BVc-IEmtu-=Q4rn3wd)pZgpUj zh8yX)Rd|#eoan_y=g^FS{DV&tcw!v@ZwsDy*qI48aNpXRus7y^-zUsSDx0N0q)u#(8-rdB2RVYoVSzJO0l)u$Cy+1TVWCDyUV=%ud^Rdd zS5W8Hj%KhCGm6P)S0%X-XIy7w3!?RC@(#i8-3xuxel-`nx7fU26=Si;OL|9n^HIfd zLunnbcVXA0lpZHoCRGqroR%!F4bf96>Wwpv#~t$Ps0rwnMP0=64$^*DYWVLO5+F~# zUlG+n_U~H=P>tSjKk5cr@RAc5mpq#46m@GYMg|cEW4&*w{P#bHhvOgT|8}xTfvu7M z-;v!dtWdXzv_3Ls&gaLrtv*h{cCMfM|3S_&x%_#xmMpVC%PG}T#*z}pV72nNyW*n%W zCGY&?TeGbB7`rOSzx24xaRW!wNC6)uBgSgYSxKgsI+Yn6 zCo%{c)OW}K+@OJ+&k}`pE_3>jlYxI4E|p|m--W&MZwJ~J$BqTpss3?HRL<2m?Uuz) z9?(FW62x3|uzsh|Auc?Ap!gd;;P8BEPn{8|g9h_uE8Y|tF&gOftMT&7LEFeq>$h14 zT?~MlChJDhJgIDFsV@mpV8}g%vplE$;HRZIMvGeOk%(D0vv=KmXr&Po{BX+ThwGy^ zW>mpPzW8#$D2AX^<9yw)TdZ!jHVMpne2>&LH7O|^iZWvq-<#2u@)k)YQIfnd+jTQ1 zYzOMyK#dJwV+xF)f|c$jTiPQB^+AS3NH(B=sX;_neKQ2UtfR^{059@hkIqEz<>8#O zS^87V7_S2q_WQnui5-u!nFcKj?Kf6u1DE}=bwMYEe%sHHVRASKC(QHZCD$hUo2sy9 zfg1PPdRv@#YY^ml)dI%^9I^u%p(0&aXgQo4rSxGFw-`s^$qMMGg#vKMvUbWAQep+f zCz&^dbVwlK;dmli7)!@~ZEZ@);*td!+Q?M{J&QpaZ*lW(T&!F7CVB>Toc*JoM__w$ zP4hkiW4H_Wy=#V4>|P3+&oG*2YdPQ>ze5*k zJmD>y{dsAOhNqBnzqMSXfsrbjqr+%4<>S2+kx@;Kw#UF|zTr$iDsi+MgZ|TXL8QbV&nqi}IE#R&Kw;hwhY^55!v|*)GS*Mi@ z*CQ9^@Yh@neC^lKlz@Vdh}RY7yL?5bbLvN!attymW`MQzBZ2RCV(84hsL=bVT2F4p^M9ybzd%F);BwK5vjo-UG-Y2kx zithA%%ScWbz9RoQs#2k!MBj!XA&jM4hc-~ni8cF@H!(BY#N%Isk%c{AaX!j9gw;_- zf6l8~?g>8&$=P4aNXjq`(};^A&6CGMJs0||Sn@)78qQ?2o9{vh^diX6<_H2A>!J~R*EFzi=ZBBy+DaKP9^Q_ zI9%L5@U7$~>y{x;Dd6<^c@gJ3DEOmzZ8EP-f}Ul=a`5>&;-4( z`}B3r0`NIYj?}fNd#gzYGfGp(hgC6_omaANF5akh_zs@q%e+AjGGK-BE{esQ1t2IqL&e^G>{N5pHH%o(Bx=;> zf||vvW5Ye*J`~#B3)Rxg5TtoC{UHKNn?C}=^`ZhVmPl(b1A8vI)gfM^sFHY7K@ync z$JT8Y)`IZNk>A3sZp|8Na2}0|lAY`cqmvGXv^X)X1T`KUWATfsGG?iRVfg?+*o+@; znh0<;OlI38%da!LMf= zOKMpUvAgTnfBb{w`J*($+3QS6V~$8MP^lo+c6NXn3$l;x0q#}HL>;Aor!`xWNk*&D3Bg? zTwvT;grb?P73mY&_)4$cBc}$EoCC{C#-K1#0}lm)!D`=M9tIMPiz$5%A%KLWWQW{h zq9jt2PDkBf-UZ*y^aB4wHpPjz#m$MCIirr30jE8m>EDD|7|VppB-77)ANc#% zmGz$6pPj(nJjYcqi3;`w`<|tkVA)V6Y@L!9Y0~pOod}F3A>l^HE^7mE)=NRjfGA8r^ERSghM>>gJUi;*`w{njw4zPNWIL(K>8x73EAh`^BZ;x|JFl1n7}5^ zE^G&tvB`i~fL?R{H(V_M{>bLNT5a|On$&D$L7-%puM#?a2rYbU0u^1RQeaC7*%2(N zp{o<)7gIc89(QCkrZOA9x4M3ZDk}cYH5PY~Ij$EPt#`D=h~8Db8@nkyLjbq#Wazq{ zU~Ceu-ZlaA(;Eq*b-|F++z90p8BZ-=4$_0XW!mIm^W#ZeBRd#zX3b2@z|c>w1Q~C1?}&s;eceSs{4~Iw+C9XvtbkRe zw!XJj%LP!nJmyTth7{_?pMqa1d-Z9oz$6*+kB1a6*ac{OJcXOXUhp&weF0*{POi4H zpwt^F3p@0_hMCwD^Wk=bZ2SyBIL8aOaDcqTrjJzW&(&^+(Wq3@UiMBB$UdnUJJNlv z4I1Yr9$sm~M`i2u62k6n2lwnxU;4exSN|+WNUPoE-nJtL>#6cwWlB^eIC+EVCfrUv z>SJISn0$AnAgYO`v#j**pGgGl+^o6a7cBdt&PWkMlg&S-ocLS zrc}sI7d=j_wrcf}AE|3aWmAjIXsAFnk2+NhL2KrxzHbZ)X@IWX2E=x##wYuhT9@`P zAvL~SQDh(oYkAHi37lkmDKwFgGi+Jh*?jE_*fSd;3yYrYW0b~(xdrCz)Y=pQi^cVP zUs`1e9&W6;d$w%*EM2Cs***v{RwZ6a75S_?dxr(K)k2H-e%%EezO2iOALlQVYrdQEah~?-dVlF*PPz@@|$p#N5G7F1#NRW&nTX!VGJB>)z zku-;!b)I3YoW%-`XxSE$vlFQs3ZON`bX5kdT4&N8k4Y94E;nH;%{P6VmGDVUxo^tX zD>wJzK5SIQ2ejn*>2V?vP}Ojeg8b}!1qP*hT;vEo0d(xHx-8fVJV$W8JjLNTM?3J& z5CEA8ZmeKdPd_vj;OddAw5kzCncR+j*)NGqnHII=3BotUJDB!83|(Bn&1TgN#*WP7 zEX>LBVKcGzeGA-oP^mDzOc&YN%}~Q40|?5-Cj|UT`G;!15i~#s%}W^e05l~*8_M5t zFW2$3*%^1|jO~Ck0PU~;+HiJ2GdMpmp@@O!uUUw}GZG!nD7vl*vlX-c-?yj9;hr6L z4vEP@v8l}bLW5{bC3=r7ZXlJ~>#Rg&%*}duyq2i)9RM-1QdD`@PgT18l|EUOz&X_w zt4Cw#&M&ELK?tYJ;c6dpZTTDHLBYFm-=|49{9eh>TB%KRFn&NT!>(^oDFdhX4j4c@$0wVcr?-^eDE5D#D`z-`+~yiF#)?_+X4(Yj^n&8F zc58#Qi`fpiBAzcN-D!yxbNAaIe-f#Y5lJGf=%Whf#YSWmx%rSSFpj&gfrCAN(B@K+ zWXW97BF3$C)|G?t-;Cwa5f1$|b)(b~GM~8oAYK$3`D9M+7ibBKo_Z5@D_-*4r#V}e z?7>3@MUI$2Nv!BUY(VvRGKHxEeA~Vb2Bh)MB!U%~mBY?PxZXl(=U7LJg1P%QY6T5o z5C8aT|FT<+eXRs3bfn@ex4?2v^5xNNCeHwfdHL0>*n(yqGBcNM&ScxkX4vGYBlyo+^qoXwg2oixfUI!4q>EAWg^&PTfNQ}K_Q3&uHRfuxIS59N z`}IXlPlK#Hxqk%N3sBz-ZNP_;mo+LFXvRqbiq9tT5UBVb=-i-xT%$dBmGMLm9RC#7 zXLxnW%7!#YF*tt}PK75ocd_k)Z%C{O#j`$OHsuycJOg>v!Ndw_P+Yd=D1XJEPDf_d zZ$4j9YZLHA$SV@)k+CB|G?{xjfuNDZ$+zf?2XYr2TxXP{i&HDkDn8`k$X z=mO86{KJ`gw36cmp$yCn^&B-x*nt$Vnu(a%JoIO>Lh^FIT_6g9xMse|Qiq$1v9J#~ z;7`CkrH=C?Jy=CCQOjd~Ac&C|a&?}&4Z2N3NO?q3zw)35v@Z)^e1I#8C6k6b6E67APW-Lt)M-|pcHxofNN_x#8KKMyAh+()B>^T#B@R}Xy-Q#jtT1GxAT3l`Rbh zrGFe0Tt{QOy7+F;hcm8nH5_(id}pxoL>9jWMKl4ttY3ne9Kye1`cXy!qDb+PY`n`d z`-o4l%+&0o$!Ja{xlXu0AWA>bcy~|y=$CTcEKv#q>`;14q{o=+53q}Y;Tmbz2~Sjk z7DcCsa*pAh;jqE%%i3a>(-QYqCL=9Ioo z_?v>>o`ap3Fe9f5Gqdi0rp6)T74bT&re*ObeGYIv;?E^7DYnZ1=N;oGZ~(9Tp+y6E z&i%HTxFOF&%cpxBzs6|D=fSvn6rIh{#H2eTtBzP{5zY79!x)T;fFASu2AwF@6y3!9 z?R0S2!*mHnYQ`BeY0g7Q$^4$CIp2Tr>)9Kb=qLK(E~}Hj^x&?w@!_JOIaG4J6RFh*Wg^)2^YmU^}z?7&q^5C$gWQ5-)GXf9!6Gb2Z*O?>@#Oksj zSxQOGt7S#2s4_)K+h8zA;?sJ7<-L&!o6ljD#w3$$XkMBp>nSDvaXm2_^2(d5lv;iz z%X0y`?CyG5sUy;Xr?>y}a*%pY>`9Nr_n!dLBg6}~VDCs^`|EgRldfJYZ2rJ$IQj+pR1b_!0^gU)$V@_h`{zR6jLC7=;qp%ZfFt8!%;pRo++EteGXp0mV(w zI|AL@y~OZ3*IIs&k?Gqr{#8xIECfXxAK3&6_mVr=;k<)3Yy;3SM@~)DS9PG~6`U2M z@^6T63Xs)Fo3t%DKFR__S#V3JNNRbNI6+QOBp|dO$~Io=2JDCd#zYGn=c6Ae+R^2= zXwI98`{P#>Kv~9i@-oD)9CwmYc&l-m1gnry!Tk6Eota36>Rz=1TFRrm zfLq>U#K*U!4mbs=I%~hDcB({ZVRR47$AB5Du^TZ{~6eCwFxLPN@UTJ1rF1&&DY)ZN zlN-VIg1@t&r2#K7(9X<*QJs3BSBd?1hrZ)_LIxslKDtPWNXxl{-yWDzB{S>6{NLDiU<+-EdCO?rkSNi4Q^lzG%%Z^Hlw={DmOo&v zR31fPSg}0fC;k;-c`RScd>%RaC5*1WSUSD;{0TLYB7Q+1#y~8f^&XFsWtaW2$FoN= z)1Ie~NFRl#TjWSKeJLU$5NkZyDBktWsq@QnOz<}RM$N6oT?H@Gr;4(nG+w<2fKwd0 zyt<(6`!$v{ll2FkeQF)@P|qR`9k-Tu67Kq0I} zd(g?hkvve5P;@;;w6xExdWlngpbEoPTZ20aRAWU+Q#e60u+1`#nGHlOAY9)h57_}` z4kF;5^v)xQbcYY3MjG*Sr1fNSw83Lrma=Pf50E<>uwM&-G&m&*%GBPc3Y52^>KF!R zp4{Zx9{o@puo0k|es$BG%bP=)zCn$jbb#AFO8lgC4@KF@O#2gSG5}0Kv%mjqmLNJN zPD*E$e90;`Ss7jsOI*(hQZZXOQDU7y|0UTdsLI~Fw$NsWS%p+*$YC|M8E%DUDmDMY zq!&m$cXg^r>egXDidSTJjQs?i>?$zkyZ{Ex4xipjTZQ}hw|~4oNiD`9x%<+04} z@0S2Ce$Z9x68XR21%3&jl1006lzZ1S zh&ZF(vgjz9VHJ2M=Ya4sN?%SI{)|@c+0KQn@vOP!&u@7|HT>F7cB)UrC224qlX~OD z8W1)$W}s+pf5o>JlEpaZ6a?xiE2|`F5n_yPMy+XQTent_pLYzKr`xnkzD*~88`eqY z1@j_9AQ~4InSO*upJ4FJF?%Gc%VbKvdEzjjh58Vo9=wj~@!s<=rz4!OYQ-`7#` z27X>RB7c!bS&Tk%7@^odcba}rq?yBZU3gmH6qo&p@@4=44@LKd7)>IYGKu#` z1J-Wi&ymCf$pDTa=BwB5m{@0G3Qv|}D_nS}5HMe7Oq%e)?Gu_|%DLfJ^`nDXj_*Xi zrmjJeHE!w*;OL^P)A)`aKq%BG)&h%PJV{Jx0#|^DI>3uVX5{s@{t2w`Fh#H zF$Z;ihAd|(CO!JQ{C5<8w8`SLixF?^womKz2KsWO7}W_4*Kn|>nvUa(kWBWu(>By; zKABvf{uh3wGCrN6NfLJ+J&##CY#!ooqgQ4AdAubiZ8?=w^)uMn68(xd@00C!Q@V2} zZbH~a!Hk{xguXB3a>!Mnm40V zizIYwVJ^_|=C4yYIn?x*bk$u?^);@ZRnJ|w)>O&l^i~%*d*NH?%xo^U9l>5{M z74i9l@~cPy!lF-zc90K41ltU^eKbT++i-)w0v2y({RhR?F7`QgN(s*hVdMBeV-)Nf zZnycCVE0A&{Z`OC9PxgV=qh&tcXK;2XfF7Em&9iBLR=DjwGcgB&IcK$0}0O*nG}@b z$#v7Z9G5qf1YB7@og2VBgm)a&wAY6CX!SnOPD(&~fs$}ozsWy9Qn=hQ^e(6v>U%d><*Kx5!Ju?Vl3DG65(S-7 z1`0FcPjxMA7_#dFRZ*V_H%0N#LU^i@-W|Enb{KAXi656s33NCe7xM_+_5DxBov)rZ z38cWzT-vcV&SiEr76OdOy5%0VRK9e?MRDD&7HeNay9AEl)$S#o4;8y|#*c+^i_xZd zbWO3lnoR4$!_zskq|9sAboD*KMcXlCrwrd!79Ne#f7Y0{>5VS2H)wu4pYC1sOR5S> z*8GXu2eM4PosSa)fQ?3q1z%gk7252v;$+M#oAaJ%#U~|Hidz!b8VO)YuH;f!)7)yGp zfC`DHyQvJDd~64Nnepx$O#cVAnz!b^mRMkAKm3zP)j@{Psh=uf?^a z?LdLK4x%19Ak1pe{SCIu8O z9zC6ud2Ak^cEoWYg2(VXzd$Kph?c>+E~-Krc>X+`huj zFc(HDN&HezNx(QPgV_hSKyb#)L4mO6B@+Q6+yGZ0OfyahARscQxvCUQ!3%-i9@-XY zXjzRC357%|AjEv}zlKNDLEB#gkG(Q*YuQcGMhS4U6qAG>T8*rznfgE@$+_7ED2ZItikz&8N%^x;m<*L?V7u$JFGm?d$|BC^MPqB; za&1!AV9}LoqPRwxn z^7*tcgD~R)1+F4Dt2*oa2xQ|CiuENz3IZyp8GuSN0A>in*dE*Up5Q&aK7LO~fHq^F zTPnnXE-Mf=xhBFs=p>OYhEv7(&Qv=r377O=uOWC zD9&C)c_mIYTiU-cNBaE-djL%->Ta0@$peQbJ$>W$r98o z`d?bNC()YDUPlvN+?Yx#@oOKPl5yL-m5J&Z$Ya2;{>6NLJ>6_wzk`?r5}gt~xW|`| z0hT^m0m=5YCx5l)*OT?SlU#J76K%>O#R`sc0QQHuxV(*x@H>jM@z-N5200#02FLrs`%5R;nfxF4b12* zfy=D|TS@`J5-slDGX~MKN{G1s!fH5XDbwW*3Kfp2f#?X=`6~>#;B4Y+MG)X=dHr`! ztd~a~5Q>fUwr1mtOKw*Fx=0iJ9*jr>w;lUNlAvKZ^^4xzEWh-E@vL?&McL-HPlTEqPC_z+Z*#Au6alAcp!hyb5)#-w*B=tzd6-RAD&bu#wk6j|5 z!1COMJit6|TZSMSbdlGgLS6eBW+z!c!Ro2N zd6H-)_ePY0yp&(c&N8vC^k&z8wRjJtE$I;j#xB0?*10%f=DuWjDbi{ea}>0yv1J3= zv*EF&<*fse+I&7(WnmMHel4449VCmTB{unwS31Bo(<8p)x{Bb_M5cO*6aNG_^oKtFljlfD z$WTE%UBsPWVdHZ{>O^1iJZ%h=)1A{=B<(Incy1K-BYSV?hZ9Ry#;9wbe}Pkzywxh2 z(*t7}BsY|9zktyPc|8xxppsab>)nuXqk>(KF}1f9Nal{1y4_V?)H0UEHGb-gGb^j^ zQy(YowTY7p;6lAL<rBa#0k(yJ?J;)J+z z*NF_#h%gCp1cSZ^YN)H%(A~_dI&rp3lmg4dwLp=VK zF5Fi=rV`Hng1aAroV-((6RB@a3hM z56=?5ZGb%VBl6rfDXSDT;+3Yt^ z=l*D`90e(Plz1c*pH8)WqC_3gn{)HQ_PxJi$L51%yL|#ax))0FLK>>WA#1uPY`B&*`4h$Bh5|Z8CsFR>}P+-r7Lq!`#g8bI13Bv8^o2R zZXk>hfwLxTgjibv^!CN6`9t&;EB(vbR8$4{TnLj5kI{6_ctXQ}2Jr(|N8I6~+zpEbkEMrJ zVmD8qmt8bN;q9+vuqbqF8uG!rBVp^kT<}|SigCgw9@efu-yYVg>q4?} zJ(~0j0xo~(YN2~BuKBZn{=U?)xXlEGf!D9BtY7=yxIa?5Od$>@pIAktCx+rIMjQ9S zK{&kHE(K#$7&aBuJad&@72`qHs@wFb8FKlb^Wp6`HByag&x#+u?BaEgwWx5*;#3I~ zT?%foo>wYBIbbMNXU?lszb-zK23uH%2oG3b##~3NTI!{pXXZfW z4ZmlD>+u%(T6Si4s1$}#h6*fgjyT~t8Alt9i=7_@T7O6v0V7m9A4MD@;or}c+~fMT zc_Wc50-FVxqfDx&UHOKE$jyTs8N}QC)<^{jJ9*rP0Q4r)cX~CV1!M$ge2OAx?h$Ng zK4$9KFf^(pq+mM4r)P#i3gQCN9r2(`QEfhu)Kg(K%=Y*Ra*_dL{Gm{Mkf=+kULVSjtzZc#+|W&uHJxS{AYBW^xTvf zp;&NfL5~c$NaTbz+En129r;yaB;P_556Vq_fzvh-5o2Tky!JSha7l@F9!z;&#ITlJ z^)5s~M(8h|lrmurXs2N(z11NfUMvsYq<+w%*jPU1MJ+h1H#3#>}AZ{vC!{4yFo-`AOGQFY=RAgRY56ea^5tG#@2{4UXyPiII2f#$-;Rq*Ko+Zm5 zg=G)tDl))VZmB=2jf?MPqVP7*2wZo|qGrV9O-tF}9{C>lXL2j^)iE&dqA`&SZs?V%Sx>>c{;AmO!f+*sc!h+ zOPQDu=pT;Ibh}nrwLUFSXJj!SOCR|iW$tIb1*{Q5>=#viavty~gp6FavNHkL$fvib zSq8ANk!VTOT@SBghD;0n9@qW@3{fI4`KR?2I=U}0IZBEO!{Y@l06e@G}uDCn8`J8^V zC&JDNqC}efmYJ%sUk39@ougZ_ucj9&QmX$U0TxS1ad^`1%=ZwQ=d7?=(Tt^@m(u=2 z9g3y>(EW+j@m88XGOK=kn(Bc3mZTwUL!31k>P%Um>K)G33k}H>)xy(A+%Hc1ReDwo zk1qI)rKY&L0jfqUMj9kUpp>(OcGOZ)GFd2}h===r`ffElNxI3%p>k6Y=s|=&qOWFH zptq~{xIDbyWKbIT&M2xyZGYxcfKzA^6<79d@a#gf%cxISk@>E=tC}YY0A(+u_d8uek%kgmCcF}kvEm(^SW_!M zVL>U#xGGAR`=_hg>4Q{DIjRJY?POiZlBCNc9m}}lE*6-yY{K}os5uP$jT8(Alb^!?SI1%qZ zwxP5^ht{oC6yf>Os2ITbb!lIVT!}2+-2ZhEtX=8St~2?Z5_7fh?Gr4UF}5 zjCu1;2N^dHJhU-)Xzs$y|Da$mt5vikT9*luQVxHT$6#Zqex$7{W#$|1A%C@kcSG=_ zO>`)x1JWP+A=$4fGs4qqvRQ2o7+%}Y?KM2C!_ z3^#E#^XjjSpLevg+R5OEe1nQSvG-u7KhH2PGmVQ`@WBiy+56#7-O#BnRmo2ruVKrs)5tX zA}Twaq%-66LE6X8k1mB2AJX4Ss0Cr@ugSDSfMM_wQUh<~goeShTN2!s*P|6{VAs-^ zLo9p5M;rciulzypwSd+lM053)n?EzS1RpIeI4sl66;#E4REK=Mdw2=IeCs(AeLSWv zYU|4WBPuPidQ&-)gq!+RsHj^tA3j1-#gzN<1>NX}D8pfUuU(r1EfLls>|EA~Bs=uC zNK@8x_;{UEzo-7|usGnzLCytVQNF9ntcXI=l#K|iTQl|{oEd$;Mq$B?Nsd5OKESPV zF!t?EW+@(mOGz$6vEByog}7DJfVaUMPjm}q_G#(ZP#H+ir7;4cKQJvmP(9^v1`3IY z7CE6Pi6DXkov9=H+Vb$_qt;ZmXSr}Mn`FdOZzj2CKYE~t{+4<3Rqi~(I!u{GSHNB| zY;Gxx$cDrvzytu%38xqN_W2=!`|K<5W<{3P-0KSq2d(lhkGI^JX#Il8_>PaVg`Eh(uJrKp5sd-ZezzO{l58G%6SQpau>f-%Q8p!9z?tguHWtUq1De1oV$C_Se))end6ZZZ&9fPETHYFc)Q4B!VuCKzVXNu zDha~OIsm(?|0NTT2Bnf7<|QW{dcyP0!brX4Ck@Z8;!I-w(3^65XsuT)#*YMmAnZWv z=w(n0?Hxi+SETE3YjJ%fanO22Sha*1#VD?t3e~8G0~@U_2a~$a9!<3gJpOUrMKtGf zZ)*uzazt{t(Z~#aw*9jOBe+*urf6fpr_;<)eze+&H9_U3tr^fl7>vLec60LVeNtchs04NZWH3iT@ zDd-9V=c{AY2N3cb$ZnHzDLAz)@P#4!Vo)daJu+ZQpU@s?Zl^We0(+nNz~^kTUoc);AyqRS*VM?2PHZX{4?! z4t;e>K#{RCD7mrCicg4{$oqpC0K0pm<7w%Fy;XuE%n-_)(?R`4YPI9d7!LAcpA$Nh z$7KE&3J=g>jFO9C5Of_XZqp5C{e)h&IV;njjcp7o-h4cm%C)e z5y`38Kq$8a!iwxJWR4~MNvvD!K_xcUp+5AA7}GNl7t$346TxhS2|<99X+s+SkOh5` z9^2b8oNwWT@l&(6mjOla1TM#-vCxR!&GJFo<~%4PmqC$@`w-Y;6yu|9b_@?WnnN0y z@e^?Q5v-~6#NHH)@6nCRZL)cv;DDEd@QP=)9~Y|Z+qGUS<$kqpyhViVeMoPz$wzhx z%Dz~YSMJ=^-&3rPX`vyYxI)a;zdK=ICP~n$JXHCC zp)(x)w}-TtCv289`0S^>lJyR)x_nJZwi50AVlvp92B#gK*YJ8!!_A{jrN@}0ljAgB z_Oo86^d1sz9>ymd@@9`mg!J;{0WgSh;8xt`s@dY={o@4JHHWwyk!3b^;Ez-sYs)H~ zdN1#zNq(j(0Vv853m+D1Gc=HWHYd@q=`2IpO~<}Aqfo_ZmP;E=oIVt^qV#qcI{*6t z;*Y}ccv-;qLoz*vb)wa`6CNt4rgvQgIl4Q=x(`=h3|+haO~pMC5lLYTJu6@l2xI$s zBgqljx1{)5<6zu4TN`w~rtM6Fnv5tiEihjc;^l!%^`MmH0iQ#kI_k3nP#+0;vd=@6 z{Fi2-@32Ms#K>V@x$Z3q!jm9Y*r)xC-uvOfC0yY6KTfXKKMfsn9)U?jNLi)*y7X9n zJ<0k3%g-=LKQ#(~Ayic7@;X|k(iE=HXYksP!3v6&0t0v;dtHym{RBo0fl}>6pY^xE z!v&`QLB9i6VBK+O^MmAIcs^lUwOdExB9|cy29aig;;)-ta%s@X5R1k7?fIZ%gk;O= z3DQ9X#{Fa-q@8WzUu>X#8-v%r*tIp+whS9UJnS4#VI7Y=OkJAAXS3SpY}&w>QdEq* zJ#5$mfb@CtbJ5l<)wnQ1N=W4k&I9JHwQ<+6-*Z6P69ugD>H4|CrvK@)7}pmYYSLRP zjESia-Z&6UY9g2z(T(&oL_yaq!wc-m{l#X3I>o_JHWuWnK|X56;?PSeMCX$MjQ9QTiI?$EmZo%F#`KSGW{dZ^Hv~rbJQ8WG50(Q zQjiNb+}j@tR3Enj*CTUHET*lnMN>+arH)** zzSi08N<9wK_4F@0ce<|J2JqIkI(Sa#<9-Cm?}21!7ZiZs|* zzV0TI^`}So^&Na$m5n)2(be;GF1^Z$_RiH&1`2H*=`|tqkJ~k>IjJrcP_gRt#{^}N z@gXedoB{_yI5AIg{B#sqJsen4_|zkJXo|=J6K%UvRGkPfMr!NM%lu?B@tGQ9Wpzm7 zHe93P>Awx+LXu6#*&Zl45y3%A{Fz*GZ5M&FaF+@sOt}4C6U@XMdv8&DFUZyZ+ZrTS z-ErtXxRLo&LF+J(Frwj#PtU1sQ{fZ2w&s1w?N@;@P1HQH1?Nm;Dtp2M0DY0lMqTSu zD%=fE22=#pL1;Sy*^hjvseX1C+K8e7eMq9vz^qPPS=3cbcr2$hrG?gxHl1bQ15*Ws z@-1L%F?)lPqC9f|wUUokw)(MlyZ7usjY?DAPKaa4I)le2_GoGl42sVMrInXhiXMR7 zMOeyGoZESFd>!Q@4DPTs@YtX8Q%PGJ-{ps^1!6Z~^)KNu7HQyCYAg1muE0Qfy+2wc z!B{%3kDqlFeE{)e_?JLyqs~44D&3jPrBkg;{pi{1y6hB_0!y2BFS+4JOUPO|#w@L0 zA9lI!-hT?qo2Q%n0{s{rL9Ic%cm-u1;4W@{;|~t3E6)WHUH8vMK%a za618i0n?5l^)pY)jrSo}2I~Tz;)UoP5o1j#QMA6qu0mi$yJgCXBUJcd3+_As?z__Q zK1BKeGc5Z+^0mI198xO=-F=p8RvNT&amNkLq`1*nsV~npuUyTCrE2(QDchql&wD1X zn<$abJqSbbAW|W{YL`bA>*h732#8kX*lln;=Ege5q4omS98FvcVqX4bEPESFMyrbu8gZ6C`LMm0fQ zU@Su}px()!hjs%uF40pUZ~(N_wyNpNf>j!jrE-xwG(ahFgSfZu&Zca&@Vi{OP{D%w zIcYJW(l=%KKn{~CxEr)?dFQSOcR=Bts&ypKCURfOJ0aq1LlaZbt{lS}tzuspOU@oqptcScRBM&){^tS9=K$%TUJ9 ziffElsIt^Tg%thRBzycwh!)}-Nh9c|XJvG_Oj`+m8~Y~J-xIuu zgZwG_Hr-2AI5Qnqk8mcC@gG0?t^oVmy=4G0ZTt*cLGbhx(s|r#sbxZK7K1=Wi8M=l z3!Kbs5q+hViqSP#bCFAH{ulvDt4Qc5P z-QOCmV~JmyS%k0#mN%lz=txGU1dpW@MD}1u5!HCLf9#6LRI?ROm|EHEw3H??#{s4I zDP6R?2kXypj0RqZ2aqT&4~0%}LE^s`4Q9ExpsTw3CNbaW`YSoT0jyhwI>NCfpnOZO zq1{0?{)`4#jCk+jTkKhZMJ~Dl6d1D3x)-V<$5{9{cf8;w2qway{ z!$(5+HR)WiVm*$>_lYbZl!pmgKz>Y>7%*P4M^L!MWK8ybo+Eze^cA`=#M8-I=q5C( zBW6#tOJzmqo(F`gklim;%&)H&Vk@EMIsM+s%FqwJ8RlyIwv(S4p<^eB`0yRyf6%d> zBCW9iezR&?g?ut&^RM4CypclrTy4oAX2RtOU_jLv%k>~^cIkPs>N`k8?!3j=-=q}} zWCb-lr#V6ZY<34L@3_+^Ye5=t#i{_-u=rsZio6ScO{r*M>@8_ZXr^vOd~uC*6KjCdZDgl`Em8D58|6JlJ154vd-mNItmBCU>#QVknO?e# za+AZUOxfLpUFvc}XCAW(bio4@E`HadiM0k*QNrVC{cr#gK;D$X1!Hik38)eO6EjV}dtZIKxaFQSnuy&KCjfkBzT0_=y;%?(0ZeECdNU1MX95BMo^ZJdZV-r)g%yCIsTYa* zf0YxH1F*${6Herii9hxP;AM1L9huNl>>#@TCv3E8eK5w^rC1J95l~I0J|CR*$bQK- zAZ8g?Z%aXi2$l znXkxt+PW`}ok1Uv^d8}sj$w%q;@7v^HDr_5X>ngRU#7Etf=p)U3&glA`cv}C1iqD2 zEShueU|UyT8~@A zSgP%uC>@0MxlpkEM}XgvBQ;zxdDy6N7_XvO($7IC1@zdBYxzL^6A=6AS*V8`o$?xU zW0P3)Oc;F~ig2-gB1Rfxk(4)pa$28(xdyY;cXkqX?QBM#u~(n6nv9QLaWUckRMS0t z!AB74U`6w5rqJ}mND{uGVp|R{Ttc=bD6XKw^R@w#IQ+_HhAzjF-(*vkle^tMKGrxC zPP>Fp?x7hHguc9T3Cz@sh6YfkU!xQWm_4~4X^%Dn_{TDmwk|n$PRz|v2iNL(ej^@*^B_(ES9QbrKU>;sDXmU6oXc`>G4I9{w( zO@bTdM%AFMbD!si&=_DBPewFE3GN(Hlr7h~RD%g@43e?N#ZA57&VO&Zrq{^X)h*rZ z_1yEM774?jOX0lSD>ey{?=fB7ViMPB0T|#V@_0}44j?3}r1cr3k^q`_VF_ofONtvG z5tHnKzMr0ija?A)ta)+H6Z53W`{jo%rD-x)Ci;94KN>c=Z5!C#xmHMtmsaunLLzl@u)gwO4-cg!t;&|zo9CoxOmKVMn!y;zUzT9u zstQXe$V@R^_LF;KN>B64U ziC91}Y6DQ}pok)s`J9Lt2U5Y3c6cVMxvEKvSm&!HV-p(cipD-ZM@?hBe5^>^sD|tW ze`1?-28P^dXfGcA7#(JR3fN7zmr=5xxl`Nn?{+8iZdD^6980tWo@jW#cg#Z!5C0_$ zkhYAaQQ~F(HwzWHxyx>Cd5!d^=k;9LBqpvU%j``NJ{jn~hD;eArj#X;pK~4+FJe*y zoim1Ur&Tl7poC_a)X-0GA~ut?dN>$`zZ*1#(RZ1UpG3;E>}t5(o?!jOn9II5{r@>6 zhw}9cuCfG?P=BYngIH;lIiEaxMZ=YZTz1=il@(*M0D-$yYgI*$3`+KgCQtCHu)~BR zw9YPQin??Ii{C3j(!Wpo1II8%=yYoZD@sOeetu6J5!CP8W)NU7r?BwJbUQQowwYc^ zZnnosLb4aK?4%8z2{#0YytF>NALgeQ4WfpZJ@DkOk@Av4ZNuSFlj3u-ctxXb1L0ta z>ZrwVx)fAgPzds;xIO}F`tnE(V$&Q@2zha0@i>%DZ$|6Ta=^V8ek zw<_bpX>cSwgqzTH2eSXTN=YDhI)uel1!Q57849NT)=09iX5hpQ`E>34RKL{Mw~Vew zlhRPp*1Ww!b_MCpvC(?JD%F=^M*DiqxTPr9Rt}kqxdQtiGsx(9@YSR}K6hgB=iQVo zU~4<9yr064=wlKsy*k=M=KkU^+2YfB`Me*dm~?0uu@QsSUbPp6skmWqJxY;G3}Szm z^Q*t}vRjWgG24uNoRv+UVfi7gtW1ajw}f^iXat{fChOot~X#t22`W zj!#-7%8}+ph$^-g-v>cpp3jK1Pk{3J3fUwe0tiJ8A;)fw#ev&E2fkg=VDuEFB^dZA zk0)J?J3tKDz84(wxo(@dFhS`t_pRkpx6CQ{;DvV514d60b9VmWXhj$yb$SY+5sB6I z>B%y!>ZxTe$tIM)k;TcXUC zhQU||fND4zJ21bIS7S|X%63*B z?|BC^&fz)n$~cK#mE+yhv4t?&bcV%sI6oxN(Th+G@)f4Q(BA^PQ0Eu$`vo3?1#&UI zBA@cU9ko$9nK-vuh}wfxVZxCz=6-e^^_Pe^^^}cnbgl1n2_*00ig*0051B zO|Le&jorHaD}r}D9q3!C>}zilRu7=jiXh`RT|1{L3$Y`SIWW%in+V(@#JC?_dA(Z~yE6{BQZs{7?Gd|M{0+ z{`$A?#-D!t;eY(;{{Mga@w-3&e*ec$KmPSkzx~%g{L%j5ryu{JKmA4iCH>cwW=hxm zr@N`7ynase=e)j~M=gU}=iORH?%X`SoBOO+(A@9lRu{LnyS4Tjyt?k@QZhFe`}L^Y zocF8y6}&s`U(evP({(qGk%H#6KU;cm^W4qya`@w(TYe*7{1Iu(udg&-AGBpT+QL`z zq@*p^K7-aR*0FlfY+|jox#sb6-C}Jc`8gXumo3(sTF|`3D(dFvOqwVBI%wXqEV*#& z7GA&l^?K{XB()gL04PXm2`fu#2ptmpT1GXSI3p5J zl(vIz_GETak!D6>iiPt(Ze|(gY<^tLjDfuQ%_nMR3uYDb$jw_(#SHr|Y-S8Z*|OKv zW(Huct9nz?%mB)(tHH8@~pteipyB8Z7#L(dO4+(bwx$ zlbaa;5o>*&pluAq402<$$B>a~W(!7L!H>6rZKbjTninw=1ttx=h#m>jf&(5FLWlJL^BW|*dE4hI z1P+}%{|a#fJLeVLgVsna6ClxQLkVe z#58!zQ_&*in%}?2EW$;~TG0;}Z*E-$>o69X(t274o<6e(V#Kc35rauMzAYHi7V!u~ zY_5XrFf2p!6+~lRHp~jH!ffQpRqz$WV`SYk|A0323f_UJC9A=<6)V-ZJ)(klAfk8` z+O{C#_eITZH^2H3)r`qiN@1~VYqGAEf?wZ4U8~n=ukor=Y;CXR-%@O4uR$*a! zj75_Hsc}w6}Orw z`Aj#P?ck$?Z03Svq`WOe&Sd)Xwhvi8d=t)`-sY(pOk*3 z=RH*t%;zWT_|2?s*Hf zp3c-)W8QD+M_9`}&AL#V*_M(!EBv-C)!VMPyno6zGr6%uEFO@p>}iMj>bW{THat%03?9~rFnMR-IcENMDa<`R+mtHdEZnOZCsdn>ujj!ghAKl(RW@~e! z{Uw<$i&J?#CKyoN&+%%MOp{x$?eXCAtLrV?CdwNOcS|>AZx50wb4%XfCDY})<_MZ^ ziE2WAypD0}b)D|y{j2#FX&tm*CR1%$xnw?)>2n=tT8w9B>$dpx%P+BH3N2yup^ENF z>9XBS{D_NM_YPKjI!;abL3=l=y?W10o41Vn2wJyT%N+gvJzKE=!@mE zmwaWDsm-_e%52`KYjd^FO2MzU{Je5&-wle9Lk{{jz!?1XzEwBulnuloEk7k^s|047&R#V;SvX3x70=KIj6U-dji_LCMnurd{&WIP!gWaa6tf}jkJFNYLGI<2s=*aI!Ww~vuqcxzJHnC-PN484ZUY41i z(lmb-bht%Ws-EMmmxkU=P>N6ic~@tH zHcsO*YkkyGKn}<>mX^Jp9cW*!x%_z=q6efy0o^5?0VILgsvOA~t;*`Kl=)fNB)-J+ z=W&^dDYOm%PEcf->nZiin+DA7q6ihh1tRUB)g+w8D&<8rGRXSk9T?CBvTZh>UO;?7 z>0-9YNdbgG>Hc690S2Yl>`w;}VIaR&kNibwW=R@FWq>v)y_Mncrr4-`-aVwvYP`~v`7AU3}Ey$KKn^81`9fCn5w zUYA#QfDYuTd)Koc05}4z&{*W10g^y0r>I%bVGBKLX+|)bx}R{V5qld=*`L+R^v8Dy zBFIbk?Vv-l4&rw4E6g34{Vjio=z%;nqZB-A%UNrUU=0M%GRH&%r?)9F$3*jCK7)+V zf~=Sf7Wg(DS&s~8PXK&D?qV+I^Qi&g3$pC%e$4>DKwdRC5&~F3?lV_#&-uHzMagHf zCF;5b-*TtC1ELIalc;gM>D)FdS=M~;q%CY&NxXXix&IIp~>dB4F^w}2%UUfruB01&e1 zqfap*0wHH{8A;&*gCGx3RpbuYI;=|e7yt*-p#-06Rzrem@P$dA0Dd4{gK!1_2wE-F zF;&1_P0EQkJb)cY^WbO#pa=4<%nl}i59AGA`2l<&ZqXzk1JDQZ@T=wVCKi)$jU;S_ zLe@!|&np&?3Gz*RCJN95nE`J-0hu7J%a@xA%9Ab%F>QR6zs-*pgS+ zytl)ER>!H^Xv1gG~wSCdrm7SqIhr0s&|nC%tkowC*iSNz}&3lI%zn_mjo z5YnIvms`!AUh1lH2VD1j;sj8Jq^Xvd15&^;sPV4vqi)t!$wS_{nw@R62TGOAx;CwP z2Mq)W@0-=39B_G|WFT*+j=7L_m|#^JNy(eXAECaP?_ zorP*d`Teh`Q35Fk3Y!YZCB2F;nY1;me|{;z9AsrKItPM6#-xJgcJn2cIQP#blZbRk z>r)fS9VT?>Q3vxVB(SBmmeHlCM?N-qmN^%)PNv!a;HlMKJID)%YDXFOoG)_><&M(T zFC(aSOsl0y9w*d0N{7~Hr_AVNP_PRHkMbe4EgpbbnyK{$Jl$qr=A7(?LV06SNd!aK zvYbmZ;oM;hbLy!Jw{Ho~c9s0R44}+Wgk48|-gTkOF&)M5VOLP&6?OnME;&DY^-uvR zuPx*^}Ihz8;)KC1IbZ8H!^@ns!W&;i02mmnXAn$S3@ ziBI@twnLt^&GRN-7X3wQWrveJp;x5UTh3f>x zcR9BO&^Kv0mvA$@ED^sLP*Ea0=j=fg2;M?C2EQjB-6H{b%1~sSx#Q6w_%L(gs&)7$ z#*=W3C>~Qxqj>#BaBlSlSR20QaYPf`0_f{4gBjX)9A-A!R#;;+J}7S6Mrq%r;NNr` zi#`Z@{m0Z!!qoF=XuI%QxW(_sLH^@}w{G8;iDl0WCR>sV<`1|SlJ7^G$M9ru+EiNj z^1=&-I?wiK1w7G`zS|8NV)xkaaWNeRYEmAMc{qG59oJBaGD`)TC<)G-eNLJycM+3+)_?|z88{_wf+I$|?;~Zron3M{ zu*0K9yVAAn0wstMsA*NtBv95XSWITUDPk~S(nLMZa)3idKS(QAVeyYDF` z>NysHxO^cJ?T`$=;xqcudUnG5AyU8v9}&%aG4k7a9oXTS99xK2|bNHGaeDxR3cu?S5Lm5PqG$D;Ocrnp0!v*^!d%2OMoBkO+r6vDvG1M4->pQ_g zbIztZrvbyKdmFSHAZt1%8Ad_H6XZC?5Rlhv{Cmc(wc<`ulSOZ6?!Z>e$_JVO{j=c1 zc%bCPsCXMhpkkD)o>?KVnf0xU9bnX^o*y6)K~j9_6}wr^ z#)YL5Z%A*v@FUUg*Zj0XIngoha|OGi`KdD5JQ-ImMV&g9Xb&tDW1NBX@4Lz9C&JAM z>q3*GdP)@YOTfuyg^(iQ>UqyBIW{E@`NW;MBT+ zD`S3U<8UDVj0}vS+&e(VL5JmwDA5Sv^pGiWZXWA0A}z7r+3$pSEI zk%H>()HAhwvTrdhWUxZY$6I5OF)kzO`IhI3A&z+QGxq{vjd0wZU`RpRC{I3Uyoi(t z06#3vyVn*JbT_&>U88ppvsCx(J_Z(;>O!Q>@P{EOr8?G`u4uoQ1idxjww5nxBNjA_ zIQ}A$bg=bKmiSPxNYY2Y26A7sCV4TIZSzVzJ9-N^iul?aat<%ajWb^M)yP~sMQ9*^ zb3nNzx0hY8Y$8tWg9K)fvw(_v*mre3$n8=lk=0N&MJfSLWuQVb9NkZ|@plUT;@jbO z$RO6OLnIg;BhSK14Y)(P%BJ9~>|v{-OwhI}6Lm{p8mACqVdSZl=D!qWI|#E=Dhti1jW)F+MG1VI5{429~Dm({)wTGnJ43pbAW1zC^;QI z0#(mD_qT#zNky_xFC86F#o0Qp8pfY#oUC|XRABLWw%)nO7I;KzW}os$6kZrr-j5ov zV6`V73?OGK_iZC-kV&!}A8YYtrPFSpnJCrSI;W2xzi-m%fYeeZk2%+%$ILEzgDEnF z=Qn*ARhQ2;0O0aqL5QqxtoDEqF@O< zjvkCg8C{A}Wv|sB4dq*0e{AFUZdSK1F66{SBgkQ6r#RLAX|m#Ip*vK$YXAG`0=!q` zSFNy(f0xG1eU4_VoicZIuiorLtSbsw&TbU%iMD)9tiPuY4ov4p8=S#&tfGt(ABe7k z%zY-@7sE&N)f8%-9E4Gvas3lZiD4Gwm#q)hv$9C84hiOGn}Z z1!>?Ocmz{9x8`v!A$HE(4{F<65g3}MHn{g_-Fi?lD zH;XJJiLb-;m!Y3{!+HYm7n6#MF&RQYp^-7m_yXAp)nKHhTczWtkj^l6veM(bFXTx} zpW2gy*XF`ShZ3&4(tuM>U3H+PdX~SQzZl+t?F3?F#vRb; ziZ-SAu=29Df+WC(5;J<<@yasv6o^&=XS_1$Hd-vK_3@X0I{Mli07+AuQoSlxwvieg zBdP=dfunD#X-WCJNE{)A^D5--@jW$uq22E+Uw_Y{oV!yAH>Nc#D!m6tX+k6z2Z&@CPyRX{Q9rW2Ya_S+LHV(*$13Pgz-S zqof;(E+O{=-9X@c3)J1U*5Kc6Rg@l#cm(#z*Az=azpd!}_V0`0x9TO9_Y^iluG|NU zWiMJ|B(0F`Fa9)j`4{0`Xt>p11~~%W$}T#&-=SP8_>$X*rV6W)*{coWB3u^e2Wbph z7+5Sh8p%&#pHNN}pWjpVc?L1$_5_Ki3a#<%q5B3%Gfy6pBPqkP_&sENo`p(8>VIE{=vA`&_6)x#x*8o{k?QTgIua3Io6*%MVAy> zL<)WV1Qy{}_12dZYCUtpXQH+w#WI4ne^&nsUK z61pPy9MMlGYlOzhoO^3f0@JcmmEQM43&THrk?qC&2PNcnm1m4`4Af=u;tHG2!}jrgn#5)|FddKLWP zawm?`BTTXK*0O{XgPftDfy{TBdTQG{oOu_P70=2(HD>Lj4XPM zOGhGcEwZF~Z`z*kV8A3CJ#^-w4LOJQevizhlxDv)Yk*fNrY+h_=iEnmyI`~Ysgj^U z7Hbf0SGXJj%B;kyUbmht$Xxd^-lHb)3#CZ>laiIu;y23~%paM#)a^kFtA6IcX9I{% z(gH}R2b=%|##D_522MdUtiVRKX$54aLsiME5#&yV_y>M{+IdP43e3-_nNViy{Ey}f+vWfmz1d>NpQN+Twa_=*L+ zkkR-G(?6gl7Hmw`Tzb3>Sw^ao zLd7k^>{$-R!3h8me?#?q@-^Wir$$%qRzkcgr($>sL?D0IqaNqztWKj5;drllfDB*= zz}HB>8QO=?v%`tilllBn2eUzq!bYeG>nLX~R)0X@g$~|GORdf67R06boqdYjh_e(b zO!~wA?3wyH@~Sm|1MYkq9d8Z)4i2kjuNd1^2qRzT-f-XBB^_~)$ZygPPXdyyzFpH3 z_x`(Sg6A0b(5Za$thH~29{Lxcw{RH{3x+g7^!I_rZ}3d==aP3$a{QC+lB? ze<^Ly)t>rq&0Iqk1%LV7H+V5xy6>ipTM7 z%6Qzc=(yNPA;bKNRIJoJrgszMiR-)bAqM#kymvScOn+AX0y(0R5uUiSA{W`|?_D#( zP07FXRBSt46@fjPnru5gFkk32?7-s`wz~-sjI@3CeHVBdoeTp;)0 z0pigImdn=RVv&155M~R%e0i3nv_@q>wWV`eK@S1pu^t)rj0d$Gz`f>lTm9QkG_h_xo4?z-&A>9_6 z%nl^+te@<&?z`WFlPCz^d+#`ToTLZgGyPk@L_AlV<7k}K>HR}3Ru_N7D@EGJfNzMB zIVa*IA@S_GY!HaMD#SoO;xvJSvMReDLuIQr#nf$1fAcbNM?aNjA3jjR%AgYI21Fud zR)ZI>1Kv+2wvXp<@#x~xTXzKV2C@(TDz>IHYl2QfP(sOGAAbMB37Ta4t-uev5jQ{5 zQ|suNH?mNK0L(oCV!d6KI+!=O9x%-!%7si90Op=jrz=1vPV|IwMD&qaU&a-PcTmq@ zz`Lj5C}GtDMN%;QQ)*KIHoPw=U3KUp#zX`z4?L_0e6;}}T6`w|ZcH=PxG{On5dPr= zOY2SdzVb-z_>18MTtW0td*0WjGX#V8;>}?dwZx5Oocg(FJ1)JH4rUQ}JSasY)rKX1 z0CHZ1sdP}vFoD*=@|NtQ&%I;mT)UapoMpIWyvu0wnBkge(#R6d4rjg=@$j@iZ=G>~q$Sr=uQ&XRwCBRYBYMw; zXRoR0L*@%52UqntvYt#3lA66)?{bN(cr9?+!&w4h;RnRV6ps0_3A{hNEIeLT>ZBQJ z&3syBu1Xz|YCT%6>8B$zG3c9gQ+3BAn94s~d|aF2FZ9x*V8kKLqn#Z^?_HQeN?0Et z=1&=hbd&Z1CXz;NksVmy?lh)+VP+nX$V<_3bPcuYE&XO0bePcJ&;cb-?^`3V;Ltv@ zBfzZGBn0t1eI>aOBu>yi2I_%ZoeZX*DZs?zzbttcC6+w8wl>`l;$2fJA?5>J+j#!i zP<%=jn=F=p^19Dh1mvZ4!n{6XhQR=^}>Fs<+G3fU}8H`ASt3I#vWFVcK%1{ZS*tz)zT_+JPsqk zz?8~|2PV%fBSb;|YsV-ngqZ4l>Cz%NlzZ05MUqquy+tq`$U9*R7zkzzUJ;wm8$TYD zXJ3j6p_ehZ3yAmp@WtaVFhH2fi%dW_--dS?uLY$-wQg_wq1jV7wJFa9oB_-*7Qe4t z;?S!@XniteW(b6(*_&!GTIlg>N#yT$Un*OJUy~*LwCnk9$qsnvpRVVe0rK7xr-yN( zJSiwV5?|u@X?2s8~P{*>Y@P6b{E?JdWupgQ@_TWl1Lm4$IzwT>_Ss4)t zG|@K=LM#TQG*^e|)!`hyPEt=$%B6XT91CKBp?+1-FVOHFCL4LB{zYpR^v zKv>7h$2Aq03*Z5oq!2DNOA#EGX_p6!vxeCtsjvqy4#oTfbDrR{WwS4X?6L-@A$Se@ zGH*eDvc`kFR4~{!tgcV8hP!FI#T9^Je)!VbIWR5BE+X&s zAb=&8J?^MQ%o1g+J%xP&G0Kg?CCRuOW|(U6Ldeb%Wr?FmP+}t1&D9 z31b*ozgLL|7phNlYVkS1vRbqv68ke)m4OUnUj=S2qJ`me(~wG>P{Z`~Tv}$nNld=M zD-s5^2TXJDo$T)vHZ-XKv%soe-KP9bk}HzIKz0dem#T!}Z}__;u(9dk*{w)}st}1F z-XHmt?4Ce~b)~K5KG5G-JbxH%0UsCxzcx49<`w={QYu#0l^BfGbtJl_Al zk{aT5j}XfDE3ZlMxGzEt1_e~5dyv9UsPw`s4@lYy4i6WLEj88vT$v6^b0a967DuHB zgfRB8vzvA`(s(usZO+9uzO>RNG&x)EoL`Qq05GjnETJMiM2bzMAy6RvRrNK@FN{%` zyLf}eaN_1iymF@ByIIJ=?=N$h#`s_=DJ;+1GM$U@G%D1-Kjwkn90{slgK@TQ=`8FS zR+!O(l7WLV1+71Vk$Bn%A*5g_IBm-FG|JaLOA`bcQoKPb6=AJwwxhhSMBx+jF^0FI zfUdTvR=fGT4Mrj-zj;PD2Nq_{S#%nwjkpIFX8A6g;t2_=+IWi}a6pfUwzB&P`U@6i z*{}Q}vCZ@S^d&6PCLrK^NnRr1mewbqn>@G&@>`woXA#F$RdFGh1cR*ULxvkvfr#PK z_Jj1b_Cwkg<_S``<{2E(qmBy&2l*|bj)wgz$c)9Gt0UCn7Gdza!-^PEn%{tUchVbr ztb9IY{n^qN5s9p53GUDdkA%1?mVOwP6?tY6<9p{9%Y~3oXm(5AGWs)+b?w|%`aw^@ z8gwpB1=IaZaohhPT;p#{&H`{2c&R zH7R;YRIE2~CJ96AUYYR$js8JLfq4L`ykDgZHFCf6IC-5sd^v+O}? zd7x`1QtZl95Ak|MbY}OADdaRbGgHF>s1E*J{_La690`2&Gw38JcnNtaDUZWQRJ4^U z@y3jU8O+a4x=z{&Z>aEz{C68|gOQzBb+Y>O;eGG;7e`a>Td1pUz;d%b^}S_5{H4Pa zZN(zepc81EFIYc3!@wl67zBy14QqMLjYRpcju-Liaed+4L*yK`Xa4}`e-x7*Ta2}N6|Fg$rnDR;pvQnupAS1Ovgv?wFs*({-XhVvUK;>6|3^z05r~jJhleQQbhvSS?KX5va z?XY!0&x4(ijb)c9l&i-JJ1i;sRWIWFmIfn(vw8eTNtMAunwk!${Iz)7U%+t2bxOG< zbbF~{ej3VQmL?H*a&pu6wvSYoVNufA?Z7J_=kl_vdVFxFz)9cpi}0xD_QX$q$B#pA z(NY21W5Y=3t zIds>BQ-jNKp21H51+NNI%i!UDL!q_XlM2}waMjXbJ+t?nxZ|+}O^9;#Gv~RL3mWt_ zqU!2I%gUi``3!WbId9&Na4QEiD?pocFufO3XlX>PH31?p4tPYnX_&>ssu5tQs&*M2 zkOZ`w@23a>!K99S_xd&(yq{Jlbj$>(s`8Vr*fQ}A9v$@VN(N|+9`j@?@=$m*K z0Bk5yE?`K0RU;vQr6RAtjs932@SSqm6T2JA`zb%5N>VFuLrUn!XHSaxMY;d@=(i&& zNbx*w2j-AI*M>q^Di0vwH+rtGDW1m*SFi!43CbQ}Wbr_!p#74mb`SZreLSfBC3EfR zarfB~yE96UsP3u9X0Li<-42y35@FWwM=4-_N8K&_D%%ZFA8fPJ&EUxusPx5MHv)?v z+TQW5EJ+mZy@#rwmS>Ra{YbSeeP@)YO zCRi*&Kfe)M6QWDKI03FYh)Q_i;inKiCHiL^DSWR%hUOiQvpli@Sbe+B1d9$y%@bPp z=JV|~$?vXkwEi!b^QmHV!@+uT2G`_(8|(CBKz&R0q|Elr`~BJejYlJdX-4D4OLf98Lbe;Yf(#>!_pmHN7j1@QWVt+pEuNLsF|&7#jiyAH zGpq;42zOI*v924hq%~fq^f^~2+x40|=f#T4Wg%y^1lgy?c)+Lm-=6`#{vU@P0e^Zw z4{q}V{@(u#_;C2!^Y`+5`u8V8z?k`4`rp^@8RcKw3C;Gbvcc*B@l!*e7OBsR z9nU)9&-xBj)C=qo*NO z^XI*@p^?(PN32hGnG0QTnB=Z^t@yL4fPuG?!4qdFM~{NSybpH1Am6T*>7*J$>Hf|#H&Dz z-7jyiNOKuQHwPtKgLyJ%=&PRD@6}PYxkJ5P^$;`eOE-{lX<|%@tb$P3E1JTHf71^@ zUR|VaEYYLkN;vBMlcldXP;2(r9sG9o#mB3 zDw(!@FNrpq9ZaUJmHX>d+r5^{xHR;fmCq7#%yqgEBdLjOQ9Ii|m^Pez&=B6=8%7%2 zOY!Am1sbNFJ&n=EHilMjEx1faQiHgd&~}_Ro%w(Qn@1&Tb6z^<+!?+7}0( zUtAp+Wt^SS>3hA5KAA1OT76ZgTVFnOYO6NnN?K{s+LJ)qNmc1$JQ-w_DOkG-1;^#y zlP%12Y-Bjh*EwnF7sW|STI5w49>%SVFQk1mlba9nyN8Py=2=}!;x3nT)x1)*w392` zTCUTK=c$Z?3hkL$e3rc$hAtGoFesA7kA=-mYZD!#zxiLd}T>Zn=Y~{dS$hqWnGMoU3llld@Xz?$%@LtQx|4wzS+u5&Qlh zv;-vEIGeuH17{8)YdXp_i|l6S=x;^)?QLxOEq|!5Voksl`rx!~X6OAvuNxDGZM9H0 zktL65gO+TFSuChfm2#L5yX~xuib^<~6==nlXl_-~h!;uW5H9p{`I_qutq_mD zo6kPcRY{W#M-mAB?V}^rTT8ga0PU=_gN1in2J&e~*MQ}#p)2wH*s}2ltl^&nEsUx6 zM4ZQK?(Jn~z0dY|M-y5H#*{y)+WiCSM^aioY3+z^OAkq9R3pY$y=GpJvHisRztUDQ zlZ62?axtk4-v!LV)F_pkNHQOJ`8Ab(=dfv2`n7aV=g>Hsn zy<(co5- z#x%IB0dfN)663P8ekCn{QAUq8x<{>U3En*XPkst}`&{is3+J_Ezy$he(^j-gtDw4% z)0%W)INq@W8f*Jr(?x7dLGDiUb!jp*Pfh;dV0P{@4GTHPUeS`ycE_ry*d_n)Ma|&T z&8imQx@&Bl>A8r*zE_M)`FHj51jormP{!?XrCR?6XQG0wx`i$UbHwZ~XdrUuu*ndG zYQ{tcTln@>*(2!e)ybtJr=w?GU z*ZlSsi{f`BG#A^o1)D1t<;`Nmm%?N0On)jqLmT(sb#{M z&7a64qcZOQy;+ZL=#g#r;R* zUUmKHWYN~30bLNG#~nxgS+AYKkRg-9eCzk~5M!U1#$3llV}`kXFId{@F5@@IRUM`$ zacJs8&Uauk#vWtGyL^aVqlrJURyuKU(7|J=VZq(dr}(7V6Q0)U%-%3(LYmB;x3U^Z znW}F$ezT*3bO2uaWi#fKJb!|>G=r&rMx1*!?NO0DNxpSe`fl5AKVbqFt1)F{gU|DU zKY@Y9^TCgE8N;py>H$4E%_6vGl-R^9MTrl=nKXvEYF!%JhE%Dy4f*r8ets!=J&ris zs+k0ocxybat}1sTqO>gZ_2w90mF5F_43cb&D`^Z5xzy(25>kY78SI$J_&HQS^pj*L@S^tnq?p zcX^CA8^Mv5jTvCT^255ALWzNPUa=SPucfI<4EtU;>n`V@NLQJuhj9bbMiaTgWIDnJ z9MU_QS^lpkfORQXQRmM_6NSAR(BdRcB7Y~4Ok}YZl*ts*tcPuiJ4&mb?atO~bqC)d zR;#FK^q!Zr)rlbXpD>P*Q|~X>6id=A;2S$ONJ2e}Z=#P4oJ%`{A3^#7RqD9v%v8U0m64 zP^>~sgA#kS(z-Os?mw?rLN(p+SLO9;S~W3w{I8D8ffy3@S_YcC+s8X6`sg{mj``*y z0>leD&?@}JEBUX0oe9ipUYyzW^O>4FCIcrW7#4mv8}9I_V3~D3>*w|Qgu_{zSh!%6 z${QK!EKs3%f474?o#D~sXyEkL7H zs`##dw@bwJdbV}Msw{D&hNYE9(cciT6JF0)dqI&2S^@pL<~6T}q7{;A6(t%p)slD^ zG`VUebBPl%T4GfhC@4micMK$km;;#*4mo zsO3MpEZww6t@2}Qg4J?<)3E&&Q+K+6!X`)0iDLYOVn@xPo>~Y%M9tABvD|4T&is6W z7jvL{zor{!n<wd%Kw)f}|CO=icc;8aUvv)?siOYZTk=DeQVrDvRvTE=R=ceMXk|!~`3dvS2df6+I&aI(P&DAIIzNIhCi4Ex1C$Oll5VrDO3T>ScBk&(S8(@YgVU+IaYJ7#sk>6+CkwcT7O8Ch zv@~cfQZYMu$cGUtA1o+1Yhh59q~yj+c^oQI(fG?TpQQp%S8(F$?rdLkq6%B0&~7+e z$zYQ$F-wJ)C^&lVwusymwX6ig6{POW{S+o{zstQ!W#5vtTu4Y@zq=~qx@Cw~?#CL{ z^iRD$7w>enkD)_a*YlTZo~-GpY9|lZw#&y#XNRWd{1(J{IlxJY4hvppnviMmR$Q_ZTEoAjn=<^3#lKUT*&dqHrQ(2rq8->Tf3 zJlf7iR@L0}+IAxBR)PL=jk{8Q{6J@Mf4`L@q0+pHx$Um4Ewz8E&nd@%FW_@K|L@bb zz+c9lliNSX@%>+iw}0;rfji!QEg8MyBjTA-J8^xlH35PX6~8`13GCqoA_F;HvK{PB zTorg_L!1L70g}k-NJZVZunXjabgY!ovc+Zz;+}wzt!();z#hN~mArDn=gw7>2WJI4 zkbKz{6Tt@52nmc<(njY9>hRXR6(_p_O>$M6+>kuctW3Z5+T>3*xAc5H7Vr5(Eq^@XyOaWL*G451Z61!^K2jGGw zO&W9sOveaa)s48Lnu8*6640qAi-L0gY)4GV0cuc_9318l#5OQ0jgP2-MDe183Lq3L z_0dfDtaeF0qDAgWH30;ZkFgOERPMct&USEHNhgH3BIdxKOGpq^AU4Iv36?bQqBsQ-u3PqlByK%i z(Fnp1&rK=1kz!m&x8O#K`H(<>k)mD4s0-mQ>Qfa6p)bzKqD~NQfvN@NevgM|EkJuo zOJZU7Z~Z`@fc@N~8Q2?~)3$;Ul3zd+2E^#Z%6jp+uVM65G-V+X2=h_4Sssct%`bwa z(9r6ePY6jX@ChB7C!Z6S<3{p)h;b4fU94o+RBoa>5R{BfEN)sM2&>EI*^wSy9ZeD9 zSj0CJ3QD3IDhHv_zmmG%cA$0q1mUgDKhSSk}^{kT#^zU*N~9ltV9@vn{ver0%|4?tmw{A_|3?G z^CV|s(E%DYr9VOd={21*Z41&@#@g(3yIzCD;r5`B0-YdrAwuTbPntQx0g5)AJK_V4 zHJvNr6eP(cX)t9HTEYf-mm~`>S^K1}vMquh>Cv#LGt~=1Q`XKeERICD4}@gqh$0OH zV@|FDy)KS<#lo(t1)g)B4vv2b>|N9-r5_2Kf&~|81NTId$8)eTaMcF&Xgw9}CeU4` zkEVRBJ(mOe848XG^kxf89&CfA8L0bYU`QBKwe7R-Wrn#Cr5Dfed_+s58hjys$=qe@LM23^I$(h3Q-n=9Zy` zg>!hk+E=oaLchnU_0Os|dEB2bgn^qk8`u0?j4-m;sj8z%?K#OA!IX3?51SDcFPw5@ zTpz8W3R(C~Is;X8s0a>+M^)^6G|e_iZ7TUDQzfVa0U7kvyt9@~XEEZ*{c;zMKGLYE zeZ`RnQL_dFJ1b%&wG==Vxw(B085>5fmv)?_z6^n>Q~|T~fQx5#KC`7k6RcupYS}!p zATf-zt`>+SLnWlY&$Kb)Y(i;36ySnk=19yZeu_9kk>jt5CU4oy}M6r1G@=CtsGEcODvabI%J+r9T!fC>~L{Jc>6Ev{Bu! z!VV@!YjPwwOqMqX(KL%jK&qPNMX12i^MORL(6ltm!J7IK4*bv$Bp#t=GQhu%ApRan zDaix6Y~n=eYDr*d6PoDc?YGopIOgDGSddb)j$NikVRzEz5{ba2MteW>Xe2eamS|n+ zw~VaJq2uV%RnWF)YP$<8z@&P6*&j=Ghmg6N-YxZX@Fif;YWZajCo({%=AU^fr+=;N zoPW+Me-GSjrkFXJPPj^%LgBWm05hG^RY_ORH*v6WzBe4j&KNvx>nP8Z+Gb{F75lE0 zb<3x!3x(7sZhp`@ko3t3DqHVSXca-sQ4k!kY5Llx(ph}RCa`Z_I@}dDnc0q%5>JuI zY)nkS@mtpS55hX6)g`J=`ElIw+oV8k?VX~x7i+*p)a_7{F&9cfod zCHYdztfWkucL!fiRUSjv*~Cw9wBKUmHae`ksYjJkcht39(Fu{nwxnwMi@VZG?(G=s z^1WNNm5;O8jD9F=TY(594mv%%tlaP zF!|d@&zG#FWhwc`e)k(xh{rQieq2P0VOxbOFdsz-x-4(p303FvvjxDmFmfy-=W}o0 ztH|g!s0|F7;`{LUTYJ0D)V5pG()%?Wma7-t?&6y_6ze#bwMv&kcTOU&k^^yMdU6c< zaNu#%DG*XjN9Q1Z|Axp$m0EOxb$_?Z5eE%D3VC? za;@CJN2;^ixEY|o=y;Z)9mv0)LH6c)+26E@WM**eV3 zwQqqNtH1+xTGq|(7&Afp~N$gENy`*+e zn&g(fWKv*04HjuvN<|4xR{C1;DX}AdqR^H;=FgKGk*;|M(g5Dn?Z=uBNN~G(TJK_< z_8S*LVq0Kwg=YlNxw&l_1}bB$uQav3r0^QhQj5L_fyLjly=vTq^F6swsC=*bd0z1G zCZN*u2e;lClIN9FS^K@{^PWTK1y3mnWQb#NF!h#5*TVK|t4HpJ$t8>lGD=jM*u zfJr3wu|3`#I7q(K1p&)l4;!+n(XFwH8!^F6tDR`zpvqklb}1q|ixrWPf3z#?urXiq zOv~a~Q2(1;Gc0%1+Qt=SgB)Z16NFQQeSwaqY%pY(38?}RlP|lTJbU77liLU@Xjvsj z>1ms;TDWYcO`^B+mQ#&o(EoX%ajq-X};ua>hS68iWL0raOYR2z2))!A&6@JSDG4eIzQ!Fo1NA z>AS=cDN(F3ODYUFeq~Q97l8$C3=0R9pn*%x@E+wiqS6Yz%S+X%O5WB}AwO*}z|FTR zzyIve3gzET;z(Y|_I;jTHbR@6yYkeAxR<7h}CEF%=4NqO2 znwLphfo>2%+rjod6;un$W>d_3iIcDUbxi0IFPPy3z@a?f=e^REsa1D=f}zP5Uego^ z?!rO>XB@|uATd1Ge3eJlqxq5KA1b8-Nr(xM(i2^_Ps+&7M+Q1GIX z^aI%L^d#I+oQ~xA>QC8WWJzArCKzgTHajDs7mM9AVT(Y zmz^NF+bcn(C~o_~A1O)k*@53seVj@1C2wiNBRqzJXWUYxzl$K+^SBdJb)f~rfRg8w zS@HrVHfCvK4`A(iQ4t9BdF;<6Nxn=+EJ;2X8qx&sGF(Mzd*%5#9EJpM^b=2DWd(%Z z96;qM?X=7kwI*2-45T8*xxEAM^9lLx^JyE(v_^VTpv$G42A7KHo7W>sbVZ&N-?Q;; zprOmMntW5ex@Q-w-B9hzF?(r}Ui*-W!4Fmh{rO4WJ#~*RY!?-s-AXVMrOWmT(aH&) zt5miyXtY?QYAAiuD8*bQAeJ)(HepX?Uzc;X(Ml;o!`gcjo>v0 zu8ZD1V80W)Ylf~_&w%;uKBF*G34v!D0Yae43B~mfay+Grc!1c;w!%m!Wol?tX5<& z!WsW18r&u%z{*UUuZq(X=^GO#n(lQSc+-532d*B^J)#HA$>WgU%JE3(bZTGg&<#IrT`dTh{ePo78s4C7sF23iYPfRYF#FS&1=@S2YYEPD zim^?&08h=M_POVy$p-{`Df%-n)~A-ZpJaef&5w+H2)E5;KDE~MWnVL_UJODkm z7>I^R$&YLz_MHASj-RAfPCeszy)H{UE@rEigzK=edjltE#vpi9+JeiMO|UPmXufly zp_R4YTE})=hVPtA(Lt&b-9d%dM7qe3Ew@&ykp6|j`<8}BRe@GG#a-S}Im9$4b_%2Z zgBzXTP!p*tX5*(lxLC#13I0BVhZ}QpxaN`0Rza6Vw66?-YKBFk!+ET9A?*Vl^4z_H zht{>`<-7IgnBAX~kG~Ut|J-K>des+=i)F35nYOZNWOvvBF5r0AGz73l^_Ene4R&2JLGUW}tCSYI8m#EvVH;w$dS z5GlRXt(0!=NE7EkGXdX9&9lh02-sH0M()R5!Mn2r=+VY^EjFG>J>yjFCAd``iA+PK8^XRJg#Lj{Y` z_U>{#*^xP73eznvkgoJl{G#2<{z-ZZHHShfxzs_IV+;Y8@~!)gG4I(Tq^$ilUdwsS zK(pYBS;J}sb5u0qX% zQtwjDc9+f0x_b;|7?qsFc%h4Mk0b*cktSi!G?2E(+uiKyXp_$R>8dKKSBHm>g7e`{ zVQ7uutKT<$Iq(#e>yb30_P1?qoXb{kr_UV!QS;!Qe{>6eYu!H%>RTn;T+E#R9sl}#mLNI!pO!($7XJBLdVKxWI|_b%E(T~VQ$R9X>4r5#K_D>{C~6(7z7{m z-(YnA=w)w#|3+RT2vFd+g9F0+&dR@iN`n458kziWINkr%Qg9&9|3*U+%KiU+wl==zn9g|C-tVYM1{ibn9E_ uf3nj5SNZ=vpa1c`{;SCAzaam5m;a|6f ({ isLocked: true // Selectors -export const isLocked = (state: Object) => - // FIXME why!? - state.application.isLocked === undefined ? hasPassword(state) : state.application.isLocked +export const isLocked = (state: Object) => state.application.isLocked === true // Exporting reducer diff --git a/src/reducers/settings.js b/src/reducers/settings.js index 7c7028b3..76e51bb7 100644 --- a/src/reducers/settings.js +++ b/src/reducers/settings.js @@ -37,10 +37,7 @@ export type SettingsState = { language: ?string, region: ?string, orderAccounts: string, - password: { - isEnabled: boolean, - value: string, - }, + hasPassword: boolean, selectedTimeRange: TimeRange, marketIndicator: 'eastern' | 'western', currenciesSettings: { @@ -67,10 +64,7 @@ const INITIAL_STATE: SettingsState = { language: null, region: null, orderAccounts: 'balance|asc', - password: { - isEnabled: false, - value: '', - }, + hasPassword: false, selectedTimeRange: 'month', marketIndicator: 'western', currenciesSettings: {}, @@ -140,7 +134,7 @@ export const storeSelector = (state: State): SettingsState => state.settings export const settingsExportSelector = storeSelector -export const hasPassword = (state: State): boolean => state.settings.password.isEnabled +export const hasPasswordSelector = (state: State): boolean => state.settings.hasPassword === true export const getCounterValueCode = (state: State) => state.settings.counterValue diff --git a/src/renderer/events.js b/src/renderer/events.js index 5b0862a5..59324cd1 100644 --- a/src/renderer/events.js +++ b/src/renderer/events.js @@ -9,17 +9,17 @@ // events should all appear in the promise result / observer msgs as soon as they have this requestId import 'commands' -import logger from 'logger' -import network from 'api/network' - import { ipcRenderer } from 'electron' import debug from 'debug' +import network from 'api/network' +import logger from 'logger' +import db from 'helpers/db' + import { CHECK_UPDATE_DELAY, DISABLE_ACTIVITY_INDICATORS } from 'config/constants' import { onSetDeviceBusy } from 'components/DeviceBusyIndicator' import { onSetLibcoreBusy } from 'components/LibcoreBusyIndicator' -import { hasPassword } from 'reducers/settings' import { lock } from 'reducers/application' import { setUpdateStatus } from 'reducers/update' import { addDevice, removeDevice, resetDevices } from 'actions/devices' @@ -84,7 +84,7 @@ export default ({ store }: { store: Object }) => { syncDevices() ipcRenderer.on('lock', () => { - if (hasPassword(store.getState())) { + if (db.hasEncryptionKey('app', 'accounts')) { store.dispatch(lock()) } }) diff --git a/src/renderer/init.js b/src/renderer/init.js index f63ca39f..23ddee15 100644 --- a/src/renderer/init.js +++ b/src/renderer/init.js @@ -17,15 +17,18 @@ import { enableGlobalTab, disableGlobalTab, isGlobalTabEnabled } from 'config/gl import { fetchAccounts } from 'actions/accounts' import { fetchSettings } from 'actions/settings' -import { isLocked } from 'reducers/application' +import { lock } from 'reducers/application' import { languageSelector, sentryLogsSelector } from 'reducers/settings' import libcoreGetVersion from 'commands/libcoreGetVersion' +import resolveUserDataDirectory from 'helpers/resolveUserDataDirectory' import db from 'helpers/db' import dbMiddleware from 'middlewares/db' import CounterValues from 'helpers/countervalues' import hardReset from 'helpers/hardReset' +import { decodeAccountsModel, encodeAccountsModel } from 'reducers/accounts' + import sentry from 'sentry/browser' import App from 'components/App' import AppError from 'components/AppError' @@ -33,26 +36,28 @@ import AppError from 'components/AppError' import 'styles/global' const rootNode = document.getElementById('app') +const userDataDirectory = resolveUserDataDirectory() const TAB_KEY = 9 +db.init(userDataDirectory) + async function init() { if (LEDGER_RESET_ALL) { await hardReset() } await runMigrations() - - // Init db with defaults if needed - db.init('settings', {}) + db.init(userDataDirectory) + db.registerTransform('app', 'accounts', { get: decodeAccountsModel, set: encodeAccountsModel }) const history = createHistory() const store = createStore({ history, dbMiddleware }) - const settings = db.get('settings') + const settings = await db.getKey('app', 'settings') store.dispatch(fetchSettings(settings)) - const countervaluesData = db.get('countervalues') + const countervaluesData = await db.getKey('app', 'countervalues') if (countervaluesData) { store.dispatch(CounterValues.importAction(countervaluesData)) } @@ -66,7 +71,10 @@ async function init() { // FIXME IMO init() really should only be for window. any other case is a hack! const isMainWindow = remote.getCurrentWindow().name === 'MainWindow' - if (!isLocked(store.getState())) { + const isAccountsEncrypted = await db.isKeyEncrypted('app', 'accounts') + if (isAccountsEncrypted) { + store.dispatch(lock()) + } else { await store.dispatch(fetchAccounts()) } diff --git a/src/sentry/browser.js b/src/sentry/browser.js index fa32d63b..aa3cab2a 100644 --- a/src/sentry/browser.js +++ b/src/sentry/browser.js @@ -4,8 +4,9 @@ import Raven from 'raven-js' import user from 'helpers/user' import install from './install' -export default (shouldSendCallback: () => boolean) => { - install(Raven, shouldSendCallback, user().id) +export default async (shouldSendCallback: () => boolean) => { + const u = await user() + install(Raven, shouldSendCallback, u.id) } export const captureException = (e: Error) => { diff --git a/yarn.lock b/yarn.lock index a4815b2f..4bf969f8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3548,10 +3548,6 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -bcryptjs@^2.4.3: - version "2.4.3" - resolved "https://registry.yarnpkg.com/bcryptjs/-/bcryptjs-2.4.3.tgz#9ab5627b93e60621ff7cdac5da9733027df1d0cb" - bech32@^1.1.2: version "1.1.3" resolved "https://registry.yarnpkg.com/bech32/-/bech32-1.1.3.tgz#bd47a8986bbb3eec34a56a097a84b8d3e9a2dfcd" From 813d8ffbebc01bfdc410275597319f3046e2c8dc Mon Sep 17 00:00:00 2001 From: meriadec Date: Fri, 27 Jul 2018 18:24:25 +0200 Subject: [PATCH 2/2] Rename db.isKeyEncrypted to db.hasBeenDecrypted for clarity and change its return value, eh. --- src/components/IsUnlocked.js | 4 ++-- src/helpers/db/db.spec.js | 10 +++++----- src/helpers/db/index.js | 12 ++++++------ src/renderer/init.js | 4 ++-- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/components/IsUnlocked.js b/src/components/IsUnlocked.js index 9356974a..4cabf8cb 100644 --- a/src/components/IsUnlocked.js +++ b/src/components/IsUnlocked.js @@ -112,9 +112,9 @@ class IsUnlocked extends Component { const { unlock, fetchAccounts } = this.props const { inputValue } = this.state - const isAccountsEncrypted = await db.isKeyEncrypted('app', 'accounts') + const isAccountsDecrypted = await db.hasBeenDecrypted('app', 'accounts') try { - if (isAccountsEncrypted) { + if (!isAccountsDecrypted) { await db.setEncryptionKey('app', 'accounts', inputValue.password) await fetchAccounts() } else if (!db.isEncryptionKeyCorrect('app', 'accounts', inputValue.password)) { diff --git a/src/helpers/db/db.spec.js b/src/helpers/db/db.spec.js index 83632255..79260117 100644 --- a/src/helpers/db/db.spec.js +++ b/src/helpers/db/db.spec.js @@ -152,17 +152,17 @@ describe('db', () => { }) test('detect if field is encrypted or not', async () => { - let isEncrypted + let isDecrypted await db.setKey('app', 'encryptedField', { some: 'data' }) await db.setEncryptionKey('app', 'encryptedField', 'passw0rd') db.init(dbPath) const k = await db.getKey('app', 'encryptedField') expect(k).toBe('HNEETQf+9An6saxmA/X8zg==') - isEncrypted = await db.isKeyEncrypted('app', 'encryptedField') - expect(isEncrypted).toBe(true) + isDecrypted = await db.hasBeenDecrypted('app', 'encryptedField') + expect(isDecrypted).toBe(false) await db.setEncryptionKey('app', 'encryptedField', 'passw0rd') - isEncrypted = await db.isKeyEncrypted('app', 'encryptedField') - expect(isEncrypted).toBe(false) + isDecrypted = await db.hasBeenDecrypted('app', 'encryptedField') + expect(isDecrypted).toBe(true) const value = await db.getKey('app', 'encryptedField') expect(value).toEqual({ some: 'data' }) }) diff --git a/src/helpers/db/index.js b/src/helpers/db/index.js index 3be639b0..2f2ed528 100644 --- a/src/helpers/db/index.js +++ b/src/helpers/db/index.js @@ -173,19 +173,19 @@ async function setNamespace(ns: string, value: any) { } /** - * Check if a key is encrypted + * Check if a key has been decrypted * * /!\ it consider encrypted if it's string and can't JSON.parse, so * can brings false-positive if bad used */ -async function isKeyEncrypted(ns: string, keyPath: string): Promise { +async function hasBeenDecrypted(ns: string, keyPath: string): Promise { const v = await getKey(ns, keyPath) - if (typeof v !== 'string') return false + if (typeof v !== 'string') return true try { JSON.parse(v) - return false - } catch (err) { return true + } catch (err) { + return false } } @@ -283,7 +283,7 @@ export default { getKey, getNamespace, setNamespace, - isKeyEncrypted, + hasBeenDecrypted, save, cleanCache, resetAll, diff --git a/src/renderer/init.js b/src/renderer/init.js index 23ddee15..52fd35f7 100644 --- a/src/renderer/init.js +++ b/src/renderer/init.js @@ -71,8 +71,8 @@ async function init() { // FIXME IMO init() really should only be for window. any other case is a hack! const isMainWindow = remote.getCurrentWindow().name === 'MainWindow' - const isAccountsEncrypted = await db.isKeyEncrypted('app', 'accounts') - if (isAccountsEncrypted) { + const isAccountsDecrypted = await db.hasBeenDecrypted('app', 'accounts') + if (!isAccountsDecrypted) { store.dispatch(lock()) } else { await store.dispatch(fetchAccounts())