From 030612b5585477911e581369ddaeeb0ac7021216 Mon Sep 17 00:00:00 2001 From: Arjun Dureja Date: Wed, 26 Feb 2025 13:49:30 -0700 Subject: [PATCH 01/10] Add blocked popup detection with UI to retry (#1538) * Add blocked popup detection with UI to retry * Remove test code * Share retry path * typecheck --- .../src/core/communicator/Communicator.ts | 2 +- .../walletlink/relay/ui/WalletLinkRelayUI.ts | 5 +- packages/wallet-sdk/src/util/web.test.ts | 67 ++++++++++++++-- packages/wallet-sdk/src/util/web.ts | 78 ++++++++++++++++--- 4 files changed, 132 insertions(+), 20 deletions(-) diff --git a/packages/wallet-sdk/src/core/communicator/Communicator.ts b/packages/wallet-sdk/src/core/communicator/Communicator.ts index bc7a1a1833..bf730cc886 100644 --- a/packages/wallet-sdk/src/core/communicator/Communicator.ts +++ b/packages/wallet-sdk/src/core/communicator/Communicator.ts @@ -99,7 +99,7 @@ export class Communicator { return this.popup; } - this.popup = openPopup(this.url); + this.popup = await openPopup(this.url); this.onMessage(({ event }) => event === 'PopupUnload') .then(this.disconnect) diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts index 600ca29d88..6302b961c0 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/ui/WalletLinkRelayUI.ts @@ -2,6 +2,9 @@ import { injectCssReset } from './components/cssReset/cssReset.js'; import { Snackbar, SnackbarInstanceProps } from './components/Snackbar/Snackbar.js'; import { RelayUI } from './RelayUI.js'; +export const RETRY_SVG_PATH = + 'M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z'; + export class WalletLinkRelayUI implements RelayUI { private readonly snackbar: Snackbar; private attached = false; @@ -67,7 +70,7 @@ export class WalletLinkRelayUI implements RelayUI { info: 'Reset connection', svgWidth: '10', svgHeight: '11', - path: 'M5.00008 0.96875C6.73133 0.96875 8.23758 1.94375 9.00008 3.375L10.0001 2.375V5.5H9.53133H7.96883H6.87508L7.80633 4.56875C7.41258 3.3875 6.31258 2.53125 5.00008 2.53125C3.76258 2.53125 2.70633 3.2875 2.25633 4.36875L0.812576 3.76875C1.50008 2.125 3.11258 0.96875 5.00008 0.96875ZM2.19375 6.43125C2.5875 7.6125 3.6875 8.46875 5 8.46875C6.2375 8.46875 7.29375 7.7125 7.74375 6.63125L9.1875 7.23125C8.5 8.875 6.8875 10.0312 5 10.0312C3.26875 10.0312 1.7625 9.05625 1 7.625L0 8.625V5.5H0.46875H2.03125H3.125L2.19375 6.43125Z', + path: RETRY_SVG_PATH, defaultFillRule: 'evenodd', defaultClipRule: 'evenodd', onClick: options.onResetConnection, diff --git a/packages/wallet-sdk/src/util/web.test.ts b/packages/wallet-sdk/src/util/web.test.ts index 3b6ef5dc3a..323f7aa092 100644 --- a/packages/wallet-sdk/src/util/web.test.ts +++ b/packages/wallet-sdk/src/util/web.test.ts @@ -1,13 +1,27 @@ +import { waitFor } from '@testing-library/preact'; import { Mock, vi } from 'vitest'; import { NAME, VERSION } from '../sdk-info.js'; import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy.js'; import { closePopup, openPopup } from './web.js'; -import { standardErrors } from ':core/error/errors.js'; vi.mock('./checkCrossOriginOpenerPolicy'); (getCrossOriginOpenerPolicy as Mock).mockReturnValue('null'); +// Mock Snackbar class +const mockPresentItem = vi.fn().mockReturnValue(() => {}); +const mockClear = vi.fn(); +const mockAttach = vi.fn(); +const mockInstance = { + presentItem: mockPresentItem, + clear: mockClear, + attach: mockAttach, +}; + +vi.mock(':sign/walletlink/relay/ui/components/Snackbar/Snackbar.js', () => ({ + Snackbar: vi.fn().mockImplementation(() => mockInstance), +})); + const mockOrigin = 'http://localhost'; describe('PopupManager', () => { @@ -28,11 +42,11 @@ describe('PopupManager', () => { vi.clearAllMocks(); }); - it('should open a popup with correct settings and focus it', () => { + it('should open a popup with correct settings and focus it', async () => { const url = new URL('https://example.com'); (window.open as Mock).mockReturnValue({ focus: vi.fn() }); - const popup = openPopup(url); + const popup = await openPopup(url); expect(window.open).toHaveBeenNthCalledWith( 1, @@ -48,12 +62,51 @@ describe('PopupManager', () => { expect(url.searchParams.get('coop')).toBe('null'); }); - it('should throw an error if popup fails to open', () => { + it('should show snackbar with retry button when popup is blocked and retry successfully', async () => { + const url = new URL('https://example.com'); + const mockPopup = { focus: vi.fn() }; + (window.open as Mock).mockReturnValueOnce(null).mockReturnValueOnce(mockPopup); + + const promise = openPopup(url); + + await waitFor(() => { + expect(mockPresentItem).toHaveBeenCalledWith( + expect.objectContaining({ + autoExpand: true, + message: 'Popup was blocked. Try again.', + }) + ); + }); + + const retryButton = mockPresentItem.mock.calls[0][0].menuItems[0]; + retryButton.onClick(); + + const popup = await promise; + expect(popup).toBe(mockPopup); + expect(mockClear).toHaveBeenCalled(); + expect(window.open).toHaveBeenCalledTimes(2); + }); + + it('should show snackbar with retry button when popup is blocked and reject if retry fails', async () => { + const url = new URL('https://example.com'); (window.open as Mock).mockReturnValue(null); - expect(() => openPopup(new URL('https://example.com'))).toThrow( - standardErrors.rpc.internal('Pop up window failed to open') - ); + const promise = openPopup(url); + + await waitFor(() => { + expect(mockPresentItem).toHaveBeenCalledWith( + expect.objectContaining({ + autoExpand: true, + message: 'Popup was blocked. Try again.', + }) + ); + }); + + const retryButton = mockPresentItem.mock.calls[0][0].menuItems[0]; + retryButton.onClick(); + + await expect(promise).rejects.toThrow('Popup window was blocked'); + expect(mockClear).toHaveBeenCalled(); }); it('should close an open popup window', () => { diff --git a/packages/wallet-sdk/src/util/web.ts b/packages/wallet-sdk/src/util/web.ts index c02500d2f2..584d4acbe0 100644 --- a/packages/wallet-sdk/src/util/web.ts +++ b/packages/wallet-sdk/src/util/web.ts @@ -1,31 +1,76 @@ import { NAME, VERSION } from '../sdk-info.js'; import { getCrossOriginOpenerPolicy } from './checkCrossOriginOpenerPolicy.js'; import { standardErrors } from ':core/error/errors.js'; +import { Snackbar } from ':sign/walletlink/relay/ui/components/Snackbar/Snackbar.js'; +import { RETRY_SVG_PATH } from ':sign/walletlink/relay/ui/WalletLinkRelayUI.js'; const POPUP_WIDTH = 420; const POPUP_HEIGHT = 540; -// Window Management +const RETRY_BUTTON = { + isRed: false, + info: 'Retry', + svgWidth: '10', + svgHeight: '11', + path: RETRY_SVG_PATH, + defaultFillRule: 'evenodd', + defaultClipRule: 'evenodd', +} as const; -export function openPopup(url: URL): Window { +const POPUP_BLOCKED_MESSAGE = 'Popup was blocked. Try again.'; + +let snackbar: Snackbar | null = null; + +export function openPopup(url: URL): Promise { const left = (window.innerWidth - POPUP_WIDTH) / 2 + window.screenX; const top = (window.innerHeight - POPUP_HEIGHT) / 2 + window.screenY; appendAppInfoQueryParams(url); - const popupId = `wallet_${crypto.randomUUID()}`; - const popup = window.open( - url, - popupId, - `width=${POPUP_WIDTH}, height=${POPUP_HEIGHT}, left=${left}, top=${top}` - ); + function tryOpenPopup(): Window | null { + const popupId = `wallet_${crypto.randomUUID()}`; + const popup = window.open( + url, + popupId, + `width=${POPUP_WIDTH}, height=${POPUP_HEIGHT}, left=${left}, top=${top}` + ); + + popup?.focus(); - popup?.focus(); + if (!popup) { + return null; + } + + return popup; + } + let popup = tryOpenPopup(); + + // If the popup was blocked, show a snackbar with a retry button if (!popup) { - throw standardErrors.rpc.internal('Pop up window failed to open'); + const sb = initSnackbar(); + return new Promise((resolve, reject) => { + sb.presentItem({ + autoExpand: true, + message: POPUP_BLOCKED_MESSAGE, + menuItems: [ + { + ...RETRY_BUTTON, + onClick: () => { + popup = tryOpenPopup(); + if (popup) { + resolve(popup); + } else { + reject(standardErrors.rpc.internal('Popup window was blocked')); + } + sb.clear(); + }, + }, + ], + }); + }); } - return popup; + return Promise.resolve(popup); } export function closePopup(popup: Window | null) { @@ -46,3 +91,14 @@ function appendAppInfoQueryParams(url: URL) { url.searchParams.append(key, value.toString()); } } + +function initSnackbar() { + if (!snackbar) { + const root = document.createElement('div'); + root.className = '-cbwsdk-css-reset'; + document.body.appendChild(root); + snackbar = new Snackbar(); + snackbar.attach(root); + } + return snackbar; +} From af7f9c19f1728cd73bccc5d8fe58dbea729462f7 Mon Sep 17 00:00:00 2001 From: Jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 26 Feb 2025 13:54:24 -0700 Subject: [PATCH 02/10] v4.3.1 --- .../wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz | Bin 0 -> 91610 bytes packages/wallet-sdk/package.json | 2 +- packages/wallet-sdk/tsconfig.base.json | 3 ++- 3 files changed, 3 insertions(+), 2 deletions(-) create mode 100644 packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz diff --git a/packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz b/packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz new file mode 100644 index 0000000000000000000000000000000000000000..901bdebf40464d2b317ae5c0bf5932f4d58bc84c GIT binary patch literal 91610 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 Date: Wed, 26 Mar 2025 14:18:19 -0400 Subject: [PATCH 03/10] fix rpc url (#1569) --- packages/wallet-sdk/src/core/constants.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet-sdk/src/core/constants.ts b/packages/wallet-sdk/src/core/constants.ts index b04e80f8bc..06c9d1ece0 100644 --- a/packages/wallet-sdk/src/core/constants.ts +++ b/packages/wallet-sdk/src/core/constants.ts @@ -1,4 +1,4 @@ export const CB_KEYS_URL = 'https://keys.coinbase.com/connect'; -export const CB_WALLET_RPC_URL = 'http://rpc.wallet.coinbase.com'; +export const CB_WALLET_RPC_URL = 'https://rpc.wallet.coinbase.com'; export const WALLETLINK_URL = 'https://www.walletlink.org'; export const CBW_MOBILE_DEEPLINK_URL = 'https://go.cb-w.com/walletlink'; From 767f72be3413989a96c93e1c49f1cf1c2de75419 Mon Sep 17 00:00:00 2001 From: cb-jake <95890768+cb-jake@users.noreply.github.com> Date: Tue, 11 Mar 2025 12:03:03 -0600 Subject: [PATCH 04/10] add action for canary and prod releases (#1549) * add action and canary release * update release and canary actions * fix release --- .github/actions/setup/action.yml | 18 ++++++ .../{build-and-deploy.yml => playground.yml} | 0 .github/workflows/release-canary.yml | 42 ++++++++++++++ .github/workflows/release.yml | 58 +++++++++++++++++++ 4 files changed, 118 insertions(+) create mode 100644 .github/actions/setup/action.yml rename .github/workflows/{build-and-deploy.yml => playground.yml} (100%) create mode 100644 .github/workflows/release-canary.yml create mode 100644 .github/workflows/release.yml diff --git a/.github/actions/setup/action.yml b/.github/actions/setup/action.yml new file mode 100644 index 0000000000..9ce97a1fe6 --- /dev/null +++ b/.github/actions/setup/action.yml @@ -0,0 +1,18 @@ +name: Setup +runs: + using: composite + steps: + - uses: actions/setup-node@v4 + with: + node-version-file: '.nvmrc' + registry-url: https://registry.npmjs.org + cache: yarn + + # For provenance https://docs.npmjs.com/generating-provenance-statements#prerequisites + - name: Install npm 9.5 + run: npm install -g npm@^9.5.0 + shell: bash + + - name: Install node modules + run: yarn install --frozen-lockfile + shell: bash diff --git a/.github/workflows/build-and-deploy.yml b/.github/workflows/playground.yml similarity index 100% rename from .github/workflows/build-and-deploy.yml rename to .github/workflows/playground.yml diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml new file mode 100644 index 0000000000..fa26a140a2 --- /dev/null +++ b/.github/workflows/release-canary.yml @@ -0,0 +1,42 @@ +name: Release (Canary) +on: + workflow_dispatch: + +jobs: + canary: + name: Release canary + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + pull-requests: write + id-token: write + timeout-minutes: 5 + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: 'Setup' + uses: ./.github/actions/setup + + - name: Set version + run: npm --no-git-tag-version version $(node -p "require('./packages/wallet-sdk/package.json').version")-canary.$(date +'%Y%m%d') -w packages/wallet-sdk + + # Build the package + - name: Prebuild + run: yarn workspace @coinbase/wallet-sdk prebuild + + - name: Build Packages + shell: bash + run: yarn build:packages + + - name: Set deployment token + run: npm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}" + + - name: Publish to npm + run: cd packages/wallet-sdk && npm publish --tag canary + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000000..a480db3495 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,58 @@ +name: Release + +on: + workflow_dispatch: + inputs: + packageVersion: + description: "The version to publish in MAJOR.MINOR.PATCH format" + required: true + default: "" + +jobs: + release: + name: Release + runs-on: ubuntu-latest + environment: release + permissions: + contents: write + pull-requests: write + id-token: write + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: 'Setup' + uses: ./.github/actions/setup + + - name: Set version + run: npm version ${{ env.PACKAGE_VERSION }} -w packages/wallet-sdk + + # Build the package + - name: Prebuild + run: yarn workspace @coinbase/wallet-sdk prebuild + + - name: Build Packages + shell: bash + run: yarn build:packages + + # Create a pull request to update the version + - name: Create pull request + uses: peter-evans/create-pull-request@v4 + with: + title: "[Version update] v${{ env.PACKAGE_VERSION }}" + body: "Automated workflow: version update" + branch: release-v${{ env.PACKAGE_VERSION }} + delete-branch: true + commit-message: "v${{ env.PACKAGE_VERSION }}" + labels: version-update + + # Publish to npm + - name: Set deployment token + run: npm config set '//registry.npmjs.org/:_authToken' "${{ secrets.NPM_TOKEN }}" + + - name: Publish to npm + run: cd packages/wallet-sdk && npm publish --tag latest + env: + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} From e5431d472c5747b81062f7c70c2e227357e06986 Mon Sep 17 00:00:00 2001 From: Jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 26 Mar 2025 12:47:03 -0600 Subject: [PATCH 05/10] mod release script --- .github/workflows/release.yml | 4 ++-- .../wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz | Bin 91610 -> 0 bytes 2 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a480db3495..429a22911d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -33,9 +33,9 @@ jobs: - name: Prebuild run: yarn workspace @coinbase/wallet-sdk prebuild - - name: Build Packages + - name: Build SDK shell: bash - run: yarn build:packages + run: yarn workspace @coinbase/wallet-sdk build # Create a pull request to update the version - name: Create pull request diff --git a/packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz b/packages/wallet-sdk/coinbase-wallet-sdk-4.3.0.tgz deleted file mode 100644 index 901bdebf40464d2b317ae5c0bf5932f4d58bc84c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 91610 zcmV(|K+(S+iwFP!00002|LlEhd)qd$@P78MK(o7*lu9yn@g;KIu3{^RwwCN#cGEP? zIuHp-v?-E@plm6w-{1Z|g9{1pBFRqbw!8K@+lVAE7z_r3!C+?KWAh4+$);t~aPykD zmKRhm=_Uy$6=M54wR&Y1+Ro-t_n^}sbpH0BKf^G#n@yDU-Y|?>W2=t-*4WxMYPIcc zqlx}z)V6jE1O3hT+avtVXo!Qq8K2!2?+l9m{fqo{2M6fLHi=6KDs~44rHup6Uj+7e z5~8|M+o{xzx`7U{i(c8TgBKecCnT8Kl-iz)LJ!R-DI?SK7iBc{EPJ#lBkWq6UVwn3 z0(&?M2?{4RMbsOGH#i_@g;X%w1c_>baHz9Q}?iQh@Q0vs5^Lu+WkWWh1%z5Z;nsVVRvwF)b92M zsC{&V-nLIq+x@d{XMo;z&)#gDc3!tn57F5%I(yR{D1iG1N9Tv#{%cmN+dDbxb`I6r z$FESYb9(Tm-9Kx;>>hQ`-a*3~uexXb&R|eQ-9G9cqs~vA{uvs)0U!!aFFWX{+kSb} zL9dQaQM>;R4Nf`--S$x#9d=JU2WRDtZeRRD$EWDvxIgIpc;4xsb=ybiu-$9F1{8Qz z`S|ut`)qLB`Kfb?PCJA1qcgz%)#-5$9UTt_8^^EE`JhuqhwZaAR6RL8e$_o2l+oKa zowGNcQ^2_0N9}{N?r|TwcW~T4J8c67{m$#7?(0tfpaT_;q4dVt@#$Ij_&5bj;qtZrCF#Zf>fWVOjNp@utH|QOWF; zdezw2ICmXFDGJE{&Fp|!Xt;o7!m&*}bO>_r4XjOg91vJ~JizlNutVD&m!l^aq) z>c*4Q{O^{ZZ{AL zJTGjaFqo0@20~;W64#>e?vSggb?RB&)es2nTm%>t90Equ~K z1wQbFs4KzDArX+QhFz~B@V>?YEwoU<8;#`frTe)ldnfq@cqItDKvY4|upu-KyqOPF zd|&v_ufNV<0u?@#(fh)G{`LK@zut)7G%$;s)#tzcqg43tK?1qsKR)E+Ay^v_R@*Nu z?TCkd32;eJe0OeY!fE_3L$X|BHt{0FK9EK!-A^p#VQUC{IR%;ZJpaShB zzAdSopq%SfOwXmBL)O6-JC1h)Y=46T7Z_L+LESL1(h)eCzzP7_f z3l&VNHsA-g8@{!zaMD6G!-zlp-^>fiN#OYmFIsU4v9uAOWNIf7qP9DB$d6Dp`6506{OoM3k>RPP}+uRxt; zL|-=N$sBZHJFH-L0bI`qJf1?7fcngMCk$q0=mm+XbV(=!WD!3gCJu>J8O>ai39Up? z*Q*2s6lD`ijU8`@owX*9i>ENaOdxjMP$AHiP>RR!@thLWpG}7(sLFE4c4~C_ zJ&U%h6_m0_Y@xP8=IA8}$e4b@^pm}@vH2YFiBqv`$~NlHH#at;Wu;=Xb#H@7B?KId z_T>)0Sg3Bo8{p?cX#+4k@Z4(>guMTB;sqgyMiaZ9Yn#|%;)O!NSKXg`ofh)^(4N|q zz{Y!uuY^c-ZIcAwZ%E;Wh(o5t4RNsO<0(N!fKp;&z#j3ZD)3%N-`e4%Sg_sjeW6r} zRNHVCxUigt^{wp!`Udd|K)zz51R@C$2aF2>7TVw6XT=LSAktN|=4aXM&oU8c<{~i5 z!eF)@3L|??tPC93`&xZ>UaRjW5ZTH_gjFgm1+|JIdHBqhAhexNnQV+^DU>#%k5GBz zj}zJPSd}Rb%}H^y zSbbjl^?kAW{QJ_cAO5jf64N`J`iYU|NON8&pzl$^TDW*>n+4Qb*1-fv%p3^)!sg4-Pz&~Lw?_@&EWCE4_)JqEm>0iD0&ibIg{skzVF z6&3iGa1wYo$R#(Z1L|C{&<@5kkd$C31^X~Y5((CMKE53nmJf=s(4dhWk|`>}pbiNV zwB$otg7W|32+$UKIU9{gpvYwgX~3bd4wR8bIck3*Wx$~fy(lAlBSkuFSzvih_ErVW zMQUx^D3sMvVl>PrqUSlQf$kO<#^`%gLoHr)cyLMqhG3)!N4te2 zrZ#2Mg3k&GcXLymx8fi~6YN?J0o(qZSQUr3<8XqC@9Q5*Oj)?bfz1u;@(X+bm{h{* zAD?wv=!PH@W*9pM=Et?zaVRXzym*-(1hXB#J+cX9x&-VW7$8Xr&ihr-9GAqdMMk!( z2;&T<>;oeT8Sy>iL_QG_V-K{S5EPL_<1Mo?UqNHhEdTmz6umXzNkQv7_Gt+=9j;4I zc3MI#A-bSa3&9G+sw+4KBt-k@{RckbVo4xYDWlAv98ANmYmxc!s91Q|QnOjbht z3;OrqxX;CwlnoLCICm)8?5JJNErD3opV3KCUm_TFd?; zi{w=4XHAoDQ4N+L_WL{5liX?0b+55w!x>#j=(qjv&<(ejB&UFiH0vxS;SuZKDeNq` zglp7GD|*9~*>yX^d-G4UTY~P$zNt^&q59T#X^s9t!>hXI&ZZI@Wn~f8YS{J+ZP916 z&xsJdcole4v7)=PY21Uj#!7)SnEC9$k)bN25>4WZzCi_aP1$neK|LctTXAL<=G`#Vs#1Vcc#|db*x7M&i z?X|{LZoqPfcHR?%yNuQkVq4boO2*Aw2cV_rQU$M<(DUd4y70dCp|nbn-LL1F=tS5g zDY6b~05?URbC=G1I4%Lx5jf@XX%O=BDfA8EC~@__3z|P$afK3~7+P$4DAa#tw-#G# zxJJrUNM?8a9(9rBxdm_{wB0N4MT8$?7$4>a;f|5(-Nc)&ER7nbcUl2}w^@2&LVZc~ zDN;1mPNg=WawD12+&&a|3;YY8%@tJBc1{SRDG4W@wMnjFuf;rUu-JJq;}*9{#~WjB zgm`y3j*$`UUvRL5v~tWF)As|<4{RI~bd8-Ep>bydd?T=6-JxYsBHnX(v(TSKIxD=f zaESS{crhW^iiBIEj-K=36di_AOy`86wlo7!$@0pMShve@gh20%$}!x~zQFOl{UQ2d z&Vr<#$yHZYR7{`EO>|DV6Aqxf8DiTJv}YL7&|_4UdsgUZBvm3_*0)$l5GX@;Rs=;% zp_0^e0XVN@&I0*Tq2xFF&?!knCX>{?y54RC;!aNLOjTJ_5l?_YsiYY#sOQ+09WGAb z5Gso!q!5#X%XC{_Kx)K!#spyt0jA{a91vzyVCEXe%oE9yiK&b#z6kDkznF@DgY5PCADdz0P3Je%-kk9K7lD+Co4GVdf1liSRIn zJtYZ3JNBSr!X|d7N>^bvc+0XuwqfTa1wg6AHn57f7@R3;e_U2ZdywHN;AIBjL9d3ov74DvLG>16{)Wj#34QpZAUIVtPO;o$EV0H;+=qSAGVzafN(&`7fIq`@H9sRn-jps z4k?-vPIuS-W@KzEMH^k-1_r+_DSvy=;Z` z4zbfq#@gnxr(@nG)F0!U$#ZU$K z$|jD5_PM7GuPMzjX#YE9Vn#NF_we5j%%l*V1edfKEWJ{qew5`#eV=(?pzpP*TrlRw zXZ{sXO9QE@T8vKd5UCa?eQZjl53wxRP&!_e*sDEOWn4nn{3y+!ydKQC5hL?IZh^{o z(z=5F!6d@n$I?cM%-N=k9O|mwJOI*Yj+qfllmv)0B6 z(ty?xZ8wUkl{dzV;Zx)?fk_OujViCMA*LXOD{l`|P7+R7yUkldOwYa^#2pLWui z`Cbu{AJjqPg*Bj&otjgW0jhGk^50=3;orv}Ka@7~@!&$8Z+lfU1k&Ys${s2CII;V^ zf7cumM)N0$tj6uU&=RQ*h2pN~%crcaM_g9QoY?6}nFTMGR0#u763HB?vNo2FB@^!{ z74In*b;{;lAwOiSr{^1H^CJTj*tT4hRy=b zTo!=`ryk5or|6c249r$hGsfxxo!?0Qy306p*B1&EgR||mK!P?1E<;6gQFb@cwIdHUAC`9ip;)8;~Cd9~g z8T}8558=PAX%m_SvO2PzkOW1G_^<-QKQL95lAIX?Y;A#w&L)XZs}Lnx6q8F?pJZR5 zOmgdCPHe{th$~bhv87Oq+F!{MORd>`Pq;KhBO}u^z*btf>Bd|v2>1gULtxlFP}6C%bU znhse^oHa4Z5sGlsESW_mh{n+}=-@xU-aOwdy*EBYr^NzH)pkv1X6ZAgBt86fEi17f zM7R2g(})c?WF}-&v+KSJol+iVER!pFlU`j9b!urRTVJL6ZV|r(9@ZM_@G`Luq_~`> z+58Qr6V+h!yP1E$67qRcoU2j5w19NBoQ75gEKv8prk;#Lprit`0${0>OWyp&<=*Sz z=hHD>4VTk#)oQn#VtH1t3?iM9sdr7NVsYk5I+mtcsdBK02(eK9GQQRW=@pfnHd)>xOYiW zb43;)fwN8$sxgsbA;C6|S7h-4q(V`H&tLDyMN;7hYU!#rzzAi0MEhb=S1|=kb@3Lc zzf-Fp3M2db59qF(RWl<7K`WKT7<@>WubJf4#He7Za)4?;U&0Ncw4#gYLL+dDPePBu z$e%cLf*Ty8WP5V*@U0eWW0`3=$qQ@(sSFf@QT?DH6p5{=>ejMQdtuZfha|psvVy|A zA??vzJ{Ak=uoaRc#*Z^H$5G#}rFlpdUMxmPYba)}CAj4ROd=$PZ4Er{@?@6oJ;0EX zLMrc|KWk!waZEp)VZ02TdgTQJd+bJEkH{FCi&k{@gNjo+J^>C*%2qb`P#1@@fPlE> zb>j+EOR&aWZgUscjdj}6k!PckXr|25aI9*r`DI#*$3PsRiAk)^-L~}5Wz!Zro;wz~ z^*95>!eOUYuWqQbS%gi(jE%6(C3idtSuex^4eWA6D3pw2oBOatNWWudh=SG1t&pi7 zF1SZ=p|qiylHv}r*&`YZ751e2L@IutAE)AgSY!l!Xv|FMNbN z;ps@K;*6<<#7`KF(uQjMrYo9EG^f<2=7dbw!kBF~NtNdoQ2U{|^|+l|W@Sm$gz=7@-?ia^O}kT!EP`dx)5vn3f+hIWisUW}m<*Bd%ybHcWro1mt$958$VmFhH>rz0S(h{ab-gRJ_<}o7r@BRRf}kag;!iT z+K1xOuvWdTmFst#;}TnMS-t)5qTFEYMH$t$OBo%B8-X4OgL!1mMNx#!%>=R@7b65@ z@4iKPWJ_E?Myea7J!tbJU`8^|mB1Z@0;O2qA~vD08)q|)n$7SBW}Bj@nbMv%&Ixa5 zaUR87tyLY*rhO68C=d7{DAL{AP>ub28#1^_7FJS6KzG1ofzcGxt7N`nHv244SUu2G zM_w?61Q7`K_*j};1um@qJ}TB+^zFAY4v}MAg3~N_Pqx|Rd@_W?m*R}My7Z6Fc!mmW zL5gOg*ggT~|Kol8nl%Epat=*9#)?X_vU?(Pi_RsY%m`W*HsnN4HzGh^FYn7n!g#r- zYz2OrsT<15ksiU zR@tEEIRv|R=sn9Vw$CmOb@~ivBec)yuOy-XdhDZUuQ8=#xg$~l@E21$&J!REP8HIm7l*TvlKKL$AI?VU zT|bnMynJGGG$y}SqY?_Lpt#QcFsUebC=AX5rv7LSe{^QP59@IXsr;uc^>I+0#-Ypt zr@G~aA?(aq-W|SA6dki&wzNueS5X@T8lY^4GPH$8pUdbYR|4P{r@+TD^QGL3PN2%@ z)EwhJ+xQ1LnrGW|*{g*KHD zj3sq;@%2|GJ-SwoovxE^E16+l;0KfA1H;$DH)Jl9qigL}TE^GDmEAVTkkPELyn4vLjO+8gmwsHyg!U0>QZo-T`5<_XoCriw-qlPBZC} zCwG720DqIx6~|R%gg{CHzX$zqzrMBoffW`_3MFjSwv2BuQ4yD!8p->Q)!t*dXn(~E zFl}=m0y8(F$VbXHG!Uzq7tcP6!~P11WPmC=#rs`memjROah$zyDG_}i$r1#@L|+ub zK;3M8FLqco3{VUHtHDvER~nL-xlmKfH3(VI!XWZvFy`-#%8Pd86|RgvJcsm&T416k z>y$tI$IQil?OFu_}csI)fF}rreKFY?8(8e$X0Z z_XNkunaft(_*$q4wZRm2Z302;`_+w&6NkVTN=RhOgo~gkl)PaDs}{N59M2$?`(|kS zbkq0znO}jQe>Yj5ID!?A_sQpd0@K9Q3t(A+?IANiR6p(|moALh6aw?1uw^WvQxQmC z0wq>Ed~3U!Hw9O98JWh=Pl!{4Hda87z>2N-n1neKTUb8>n}DB*be3BV8U2ebRusL3 zZ53a*uq#geY`$g-%E5+<^8s-Mbu6?XVG_Y*vWJlvzOUpxp)bf@5ck>+JQvOz8QR?u z%Sy>k9mQoZYMC;yDpj!uwp9vOhKbxykMRO^Z=C!>Xsx6~b7%VdI z6H(j&1aW`-$1U$z)$vR&%Q$=8r9b#MoUq8hk9#>V144Zd4sG@kzQK0L*}pgooN@*p zJgOL`dE?HBl*lAn)ym@t0S*go)XKmEo7kY<+~Q_+8w8m zO}S;0RFf}xWEB?#RT&|RX{BK$`Sd5A-?_-3m2$W>Zmz(FlFw(@a^zFERVeeZmflbI zqPVzZCU0`d*!n%VgoW=8kUVr;CTq$|Vh5^Y7x?t{(P%+Z~^u9__Et z(BbInVdwu`|F``K394W47Qhwye-qC7b^X6#)Sm8teUv|bVHvsws}SF?o_VqHpv=-` z@!#CmbH|mKLbbYSdI8ylC6arGT+%``A^5Ty?c>M5pEx8xkOf507884MGg$bcSEaLI z=#Z*XxR|=(sdI4nMp-N1t#vR9uHoBBg=Ik$sW155TIhYjB7uDk&e5ob1vywqTV z17Zz`8IZ8(-MA-#ea%rRBcG6fJ1G1>7E5~&wYU<0pTTSCu%jL%5J&-QcLtT$2R#KI zx81bBpcFyjH-n+~1>!O^SuPI3e=ehlC|;xrP0Gl3u)=;V}$tkHk_I_kELHsAnF@bI>vSQ1Y7#kfBuT^$Bk zDsFencqfZeX$U&WqLy>IEunr+x8v6J-br#C5=jn=B*+2XRVHxwitTudS44yqiA=&b zHe16Juledu2`X?7FSN4M_yYB>Y-OPpH8{)XRPnD&x-073loTsI?1B$R37E z-k}z{y@ON6+c*)Frd>xn zwL6{Vvlozk-gZ3e`_3$EfFI5u&^9v|_0ZVr~~|8N6jLjSKDTgJ|l{{Kk+zo`oscPn+H-iU1M zWz==eD*9G6rkmm$a}WMb&f?pYDd;V*u(_ef3%Ms_tDJOwc-Rg-=q9N68eh^xHS#V4VZ(=*I)A}Oa7WA4~PSgAS;TN=$^&r?!^JR@Y084 z5n5szj!-%LzzaQ=U1oymF>GvElIU@;wfkPdQxA3c-3c@{(06a1HvA4l&I1(KIvnd-x#80>AbWDQ~1R1~XPhrXFr- zgfKo5h;u6bzynAf4_oRp+*d*37qJP5>kF~*Cu-mzIa`NTT%OzaFoFJQX44ubO6o9U7XP|=1D zHk;y3jRdTO=`Ut4Fi$fYyz&B(W&V`>-;B_(9gL~qxYLsZ@lt`y4A6eO?!*>F)4`OY z>;(#uc}O4`O%@f^{TjcYzIcH(S4$kQtxbqolqi_uFK`)M4B3yWACM6Vh-;EE3oBaC z^T6SyhGi6gg%?a<7UBK-XQJe@56a;Ko%!6XAD>e}G&`GGhzqjBH=F8R7BTXPQW5g| zQ9lwTG(6*nL@9M{inv{Mh8A_{HVd4VB#3@|Cy~(KDwN#FI^+{u>R8b1Cq$7-IeuM- z{F2U7rqY#D(zQblO0Aa^nEbzdHyUvEgiEfdmc}V{w7P=hIfT8`((sjnX4d(aG_FDQ zDnBmGJ(**sGZIcN1lDcS^k!~I3$2_QITYu+W`>x6#ECW_A~$nZXYydKOZ(&>M}ilv zf;%pq;48AKWqr{3kNnb!Rc$@Qh5^A>*`M#0j0@jVUr^#&2XKk)8iPXo2>~s@8RSv2 zK+T)NN+KrUDAc@-PvE1M1(=ZF#X#of1iNGKqN0?$yDsPol%o^z?3T6Z#2Nv5Aj=+& zY*LvJ$C+X`w#>-schCNr5al!Ti@XK)gl0Y}2409m79vmLI_vc=5oGni!H3gd82bTp zHAq;uGnz{*l8kKSv{sbE0K93JgcsL5h<0^@HAXRuj4+I%Olh!8)R+@&yIpHF=nQ3| zSSzjBo+z&@WI3DUV`ic2&kBXIHK(I>+1?pbNw zVZU4Lyrf82nl&>v(zTa4N<_W~+*rHMZL{gchJA{- z@;pOwB_}TIri#go$>3XZg9Eqtu^N>CPetaX7^6`|!lQIX3Ch6cSq3)G;IvO7qq-HP znIHnVk?9?k)z!5Ar0Ol|2qpB~3q>#FC=`nqaatvziKsC=@Ktp*5&eMupNmV^tscz{yzg{SbdpY570ac#e;0F(esXQ0|6R80CHCLJ;SXQN3vBuMPh%(T|J5|=Pv<{> z?D|tU8#2N4+>$tT^7-OW6xE%{noJ+{vgy`Kfa{=pOe~`=oVM zfmn^-&rAkx75LgVJ@;PLv3x&J%@Vf4(KCUFBvRMCWNTpt9W(4}5d>znz#%z_)*qUz znNfrTiGofO@urbB8&cIk({}DhicEgODXMKRbDdFioA(ZN%Pmgz`C#g1x77lTg{Sc63CvuG2+NP zN5`X)ZQ9sD$>=;Psnc+^-Dn36G)XGMl+ml#|NJ(EiJ zGxQsJX4--25cV@9^Dz1WQMSN~(TgKkPEw!w+eF(uyU$zpUlF*)dQv?0`2~KZsDccR z8~pSdv2>8^RkQJW5U=Ft-fZzFhV*fgaOJ zZpbj9g+u|vQQjC9;41_9KuAW?6HLFFI*W>4fUwIAfU^MP&vTX^3ar(jodm=rknc>m zKT;XQ%3_(h-e6N17G^`HLTC`Wz;A+4aVaC;qwJ0)2@RUEVc-6oH3rwj@QMIL#+pTK zcH#PH>WQ2s6bX|INK$sIlc*1C0YKw1r3xwRkP>GEX|TX4+yoqgMW!O8oD8OQpj#1B zsPIJ@Wv{9!HHqVsdHNY6&jo1@`>N^@t%`hoIPoaUcOuA>+dgTR-S&uwy5i4mXWtG(SicyYk24NOBA`nxxlCJEvFlJ@- zn(NdUvW)-};fRfvlS7_hy4G9XsZ%A!lM^VA7P1@y$%ceYSQ;8VS9ZO4D-rKn;*Og5 z84Qo&scKsZGA2hY!euYt=$=4l9r7MA7UYDBrf3w$tx=g}E?|jG5JqDg60Gt*25(yTW=NtJkt&+3r6mVNf>6c$xKQ~gBB1%!llhYz3Bnbl z`-{sFF;|^RM}n+s5r>4NxT0dl!BV=QKoMKkL-0%BMM)STRc5KlS@wx!5cb_#GU))8 zZW_-J$(a1QC^1p_io^~8c+m)%{J9ca^AlMPv;h2&aK98WJ>#{}W0^krnpfr7yljx2 zBVjbI>LM&sK#K7~l`Vy`R7?6&Ivq zRUkeTN~K)(c^HS^m6mptjcRc%UU?g>OKE}Xq0!877R(Ju>Mt%+#9-8<@kb!LM8u{S zbFUJM=D!@kue9+S|2p;$xqS(-M6zQ{%{9XCnQj6>+9*m9t$Nm zxe^@SlAE(~ZppO{(jIi|sQ$@(AT5+k5E3QyD`nTdTb% zH>=Et*2T_4rc$_1!E&8PFfNBLVBxs~98r^v1U;`pyrT*YJLe=(X{TdDjnTaDV&{C~vxFVa9N zX5D>MkO%%L6X~XO%1UHFO2_O7D6P#+SaU`8MHN&M1h0S8?f;O(0^APb*yO4gjML4( zz33gk>>hP44m+KbEFfdAY7Q$mtP?S?LSCXJWh(ra3cmFGPe(`nzVm;}Xr|_Wb9=k~ zH2)uc{%3^FN#BLQH`SerNJid;{Ms#4Y19qFC~v4{Hke9%FMI{JWs4HEbcu5pUt`+= z=UY*zURDBauuCy>%9JJ!QK%6Y;*PR?FC54;*`iESNsDAp?XbgcZiqf_DOs2xUj%!- zqxQnq0(sc?ZS{N9a@@ylwU44czp+t#uB)H<21I;m$aE&+25@fQQE8rG>S>{-Mpo5- zyM>xH6!eS)i5)o%xlp@Aarp$y|9%$ngA75sMZ0 z0BFH6k|SHF0I5CD>B#|H2Ubu=LF6PUh`=kB0|eb*Di7)`G+gkDc1Undf+{4}mTihU;(p0!1x(@b z;xq7&K$*{}vYPP|T{xU#3mwg9wDvnSs^0*|n$Ku`=|pcByIa}J=7JyW*kxnOK%?%V z0{!lPci;2$m$CoL&j0n>gJeRMH6J3ei{?p(AF4^KOTL1!QaPS>G4F zwS_0q^at2~G9o0tKo+nS^M7ZnmT~|0)A`Ti`u~2J7_0|}AqmM4B^q1CibWA5qUIr! zaUsc2kB#&Rxu~6SNUk1=%Tmd6@jETY>0^h4@_%9Zo~3q*k~pa1opt(|oK zzo-2Fk39dEv5*?uxSZ4e=y=TEDZ27=Vk5akI_$h^pC6rFoSb%Ebxu3|gH9x!^pH2c zD^qV2Ll|Y<#3oZls~6x3xmQ6vc!~uRnCkFDvRZ zy;zI!1m2D8FRF)b)~#nJ(V8|I0L7!rAiUzhI+J zeQXj$ugB<_aN=M-7!B~f*n}gKO?o|kwpXo~!y8!IO-d^PutYii3O&EYuFdbvY`LCG z_M*p%1#H$b)Him(lkv1%xIDs9Kg|LTL@htE9j7vds|ymK?U3-|6=nu+)s%1SqKQO# z-@%It+y+Nl!OVrYJLO|&Pi=Qxk&9jnQV#4v+yJCvtz6sG9@>r_E?VrT!@rFKb~|ILocvMP#Jo2?UUztK`R&!anUHV|0}7V?J1ajS&x*r zJocvLW6J{U6Ciz$+MJxo$a-Iyx3b?a^!EYr2@YHQAN2#ZKam!m!Oi2d(A(o3gSxzj zG+a0mXa0soUbm*ivS(BIj(6O4CnT`Ly@)tr=uKl#{CQc~ibF zG@9Z=4z>>VDQQsx>uDI(Q3r^>0fgel7Q;HbW7PpNgRi^=)}9(8#x{pB}X0u!+H$ADO$)TNM^rB;-Ie zjG#Bz=HCC!ypYh=vtNI$8?}RHi2pd0KX&Dh7ti)WJmlQF3qKuFaqz;M2`&VGqY8HH zu^Y*s_*KQhR4oVhw*`uJm3WyD!O5?T6Ef@Z@u!|+Tl^c`X5hj=uqRc_vKP!}4{rPt z?{Xdm+>wJr{?b-ZkDjGwNVRv70;s)~_a~%aWNK{?DdSnBGPEsQ&R^hr+r*BbIc%SR zE_)e@-Oa=f2@?sCn7Oen?*=B;jTcx+Y4M4XZO+E)E<-t{Vc@yrTU9I#J;%Ds)T6VP zv)@m~s-muzh0=SLBjP!n&4t)@N$}w|5?awj&+hiZA-9%ILG5M(clWWBf9-;1xnkmG zMGy@gh^4eVa|SwTm0Pwt4%1MJ1y({DghlZxzXTE$U@Za^3i@a4`;dcwVmnqb0T(Vk z?ZXwQCZ#f5J}M%Ah{iQI0``)_xp<=d`D9jJ{700M=?k>6>i(}<>ioZ1+j_G9J?{D6 ziffay6MKz`42Fly{s%k-y?QLBPyLK2liUas5tIQ*@tH|-Ou|k$`8W04Q{UvdJXKbYeIaCHzl4ajJZhr{O(lHilUCJ%tGgGl2q!%-fDIFqxa4f(#c4ctYru^z)2CbBtq5-1);S7v z=*73}#fukf_3#-~dB%G)BnZ1~B**Ny&782LR4oAyeY-Cj*cVL});WaAU;}_sX5B6A zWgR{0;b9M-3k*P#snXG94`?6>B(D)IKte#y#xvDy+9yi<-)M&CY({90f^0Yb?nOq@b714HfP&v7op!I1#~aRrWP{+--aT`SlRlm4gMp_BNe!Rb1r+_tG($tl#d+ z*bFd?MlSP~SCLCi&!cu1?&o-4ma-}Hwp4^-ERi10Sn4iPVl4NNfcdf!&tHq~RMEH$ zacLXk(=ulx{q@&kBfZa2l+OaiT*GW+uLT! z;{4}Ie((6;2MFNqKm<1&qZ;#9*lNEz=?I9b6mkZW&FyTiY>r4P&>yRX28DG|jEu7uei+ z(ZHjI@xmIu*nVMHyR{d1XuiOB*x0dZ+b>4jcz3tfv}(1wVeJfS+c1c`#IOjqhJ=g^ z6OYIc4~bE$H=0}9JG(DxLu@omtG+!nc8B%m_Nd+%?KDRw8P-i>yJ6I8FSfSG_KTW1 z+Oe8jqakiK8@NsY#paG-SVO#pjYeZ$yy{0YRBIYWO3M~4+%qq8{jYBfGb5vU1Jic}Xd7pSxVP?BweQSGZ z6ZU9fyW<1T4Fk-s2^MuRPdkubmtsdLK3s%^HtJe&C9LYDZRJu0Pr*<29#{`;%OXKs zp$i^$cDTrETz=2R0F2W2q8pd-%Zc?tGq+oUGh&VrprU=y8KI#PyB6gxFVqSN>no&2 z7pgoni*&)AqgE)Rno-gK=wsW`<&$#Ch~awpf-xV}t=+AiQ4=?aWe#5qcXo$OYs+X1 zM`Wkbu!c3#7;T%DSs(7a*r^e+(|EC6-!@S5;|2LxwNRtp&wmNvKlbte%?P{HJhAyMvd~O+GQfVpwpv?y-jF%J1OV-8V3KKH zxU5;H=u3Otb;IQ)Bh0&Q$c0MLolO(C_i#9=jvUY9A5*BGl5uD5=QNZ#*W?8GtM7rd z`Ts>{{rdAi?f+HV-hR^m|5*Rehu#03zA!m2feepHj@4Hgfto56mG~U!w|N-~R;0Fw z;QY4=f%N(>505vQQx}A`{=WHN43_I9k^iM(Jmvp>T>npY16XHjL$F&kDOi{j;V&D? zR+Am7M29JA&FD-;eR-Q_fmd1V$(s1*u>XCrX}|9LH?~vx9~Ouo z$oE`M=WNVP+L(yqQYvIc5ypE5e(i2#wHuMpoSdE<$h(UJ=~Ey0=6T@gj-2A-OV3(> zl}^iPr$61^m1XG?TxWerJ(mTT71&)N2##~iVBv>eHNdXrP0!D}hs9EKwP$pFeRMsp zxbc+XTja=<_4I(ux4v+4JUCMhJcgdNXeH0!lzyne8IZpU6-+On3V;d0771wb7@+{C zBE$_VV5Ka;5f0?moC4TTnGkJMp= zMlHD1n$DcCEN<7ii)hEsBs^DUS!DOhLz&Ws?vch`YVNokWYY6DnQixojIp_hGVJMG zBW{!4M`OnuV&`mPQ>_UxvZiME>A*e~$dqhaHYpurih6R(GP)RY=wYx>#%u*Dsg%M3 zDI!`~BMoEmVi?y8J-@`9eOZ;?enaq4ts;K3(8VxnWKVH~Ww$S*;)SWY4hjq-hs@ZS zFKLWlmJ#_j%B5LWGC`K%&gN`NO7;?|HOop8&9a&wlX0AWsV;C@+(uO<_T-MQQyheR zw2xh9p#Y&kUcY(3id(8A6J+OjPI8^@zZz9eI$!bujy^;7(zfq+-I13VGMqPLxN2g@ ziCZYIB#lbx?3=Vn%%C0Ni{-s# z_6T8jAv2+}WfViKbp$`I9*lW1Re=ZsTw6$*@`>%!X!^6Xj-Bqw0A8~zZT>F6C>e$s zK;=pwr3axG#w64iGUZGpIRv)iK9SL8AM(!AVf{+i&KU- zP*8pG1!I7O0IZ>-VwYy!pGx$`W=lIC0d3KPgx>`cPA)))F0^t!fW~PZ;t*e4*Ru=F zhSUt~A<6s-F^TE#x#Y`_Gc78?1evxAf2|u3p7#Iu%Kvmqcn-)z8#~@O@tB8VY3_bT2vT5M}vgN9I zeUpi-qg1wx1jbf6z&@F1aGJYjQF~bI_ z<-klNqTI{GATML4WnULc8C9yR$L!XkeN;#Z{=%M;QbJ3889`7@pNXuVYA1bw=Y~bd z)lAd$V;m+vYGw^c%wNna&vxOu@lAn~jFOL0&M<;+wE#_uIzNfi zn=(otTQQ(;X5~Q^p{Y%2_I*Tg1_e%@L_Q3Nx95!3N-*JFsg&*$%atH};WH3L`>1$} zLOTSL6<_5cVQSn+8F}tY_Wr=J&8u>ZJ=pal9i9;an579#JHM$qI(JOt(u>JE_*osbT+3DuP(M>|i!85J1*tG3~WgapwhQW-a z7bEUn(?SJ#OzC=#8j59Aj>`mcp8apl2$7Jjiz zhOJOBuA8S@N>$`ZrF<0qkFCEfo~wslJifnY@N)gHme&93Mx*(3|I6d*e?DB@=~~7- zt+>TnTWnTK*vb+dvW~gz!X@)ih=s0&_K}gy42c~Fw$4;s3*N)NZcYNh76H&2*xW=@ zJV($1fZk_Mwi`C;%+CtU**FxJdZ8OToS>;Uv>mbn!(!I!Z&0m-{)vqF&WQi*B`kP0 zRL!WFE;k6_^5|$Jindh^Jt1Xl+a<-sv$=_8u47*jXTg#)GWh7mb{s_DjsuaykyfLhc{`was$EJ<0z^^Z&Tbx8uo?f0}Lo_48kg|2#c8_(CC|E91XY z`Cqn-?Wg(w=a~O07d(l8|E>8iRMkIV{@0%D|9_hKA9KOe{QqB@|NM01GX=oP`Cm`X z|N7JYzkj0nA92Bx0Qm2p|1|Uhcr!3PpIAqpiJbv|^-wXeBK~7*r=H&bKjnXYoWC!V z|8a8@ogE(@x0tJ*i)MZqg4KMFQhVqukVX7}m~exR;3RH0){V$%e#@{TQz%r1R0%VO zq)f`}E80iw--I=pSAhU=_Ct$^3%!7FN4(+{S(K3-l4%+^3A-Vg@)C)J4y=M^n+A7* z7-ZV56KY6n>o|s-4liZ}zvm6IY}vdq)Jlip^RqSuOOdfRZrf33vn(2u&ia8Y7#6as z3R%T6eTb()9_K?&cxq0)Ymx<31E&;Q1u^X^%E=7@-1b}&JO)ru9b$RWE3%+x-YIJn z?X#=EWC1ukC^{rWHao6BHu_e_l!wgjA^V$evaeCQB9OU6t8+ybMZ1)~NKJ&HvKnfD z?$=+#yDEsSkiNCUNs)Ih^Oi-mGgW^^CkZCgjq&j>t=`BBI^dkl2WkJi+|fx5hdxqi zuK8H`$89_!cj7@z)$h^AmiFfEBlw3F?ppu2y&{XdkNO6W2vZ@D7!rU##YDli8W1?u_Bqwc|SptGT4o0%}#7Zv15r*pazrcX$) z9#CDCQm5}aXYry@anQa*R+dpg1D=W}(MX#e4Wkk&yM)&5>>^a*EUknHr(s#f#w0ve z8q@mCGgC2GpsW2r7PLF+v)jgtX)P>;xZ2p}W|X3ZWuFoGO*o2(avW`nTrWfm5{kKD z>4>UR<#Q2LiIb)ZCEaS&`g5k%Scy6*663&i=3dKKb-%P zb4t~ZbTLwmr+R74y0KupU*!bp)0OpEqY2~;ZQ3O_;$xKJEmdiiT!=ta{pkIQfl{jI z(=d;3tF|(KTIw=G)x}BI-%bV6EMo!D?QYoh&X_xLqIAWgs z;+;z?Z5havGcYJ+Cym?Ol+k9T|`Uk zN~W&Kn-GeYx=v}!s1y)Tm={X*VxnA$#7Uf`1LroE66rLX1m(D)mD|z8&hE*g|78Eq z-2V^kvHOLRKrh|@*Xvt5JE{GDt?_jJ_sIKyZO<5o{Urs)dO4u;(?I`T1_$EOSwNyo z;1rPvqMg6YY9Qg)t{5;_e&{GrpSX$VOk>6aZ5L6iiFDXm^^~l3k=3JpaBzIyKN|>3 zLIKO*!MMO#_ovRq!JBrse=#^aK5f75#Dzoqn($zYk*G3A)w#yDgNF{U z7Ps@ZeRR}0yEtf{v|o0Qx@X-^sw%gk9$+6c|9hLH!U-bjlVQ4$2^-^;HqI7YMi*xC z)JJ3k2Df^CZMmKwICfe0rqh`V3ADW+F08)IiB3=oi#LgaSMjV8<`s2D6?2yQbxkpY z5Qiks7$eyLLKj%lVNID(j;K`rDXo!fT0Iou)BrYE+CVn{l|Z9SsK6HFvNjpc!}PdS zmBhSjXZ(F{d`R@lO!Ue`EmTt?*b@DlVArA(d_`m*qZieo?ea`0snjZB4)1G^`Q>@G z7BTaM(`6Kpk?}1bl8{}}aU%gM`)dlCs_RC*)spI_XI~jzSXz+Eu}@rP4D&sI=A$7Q zc>#$hG-$@5l1y0m9#vHkkR%S&6Jc9m4o z0FQ8Bml9k3BIhw>cBoUnRE0vXyx;^HI`XhZtb1mezQCo_31dXfcwm&xW!6w9f;J-n zS#iEHqEkt;n-2Bmld6@Genu0UWib<##I$S7quXRklZ-fF?UDt?hY2bu!%+1-D#NDQ zuJx9WiR9m6lAL;&6x*gD*sT^Q;szVoVQG8D0;JEL1*Cv%H^QfC@}<6%k)t+QrYZm= z`<87($k}v8_WT$;W!ZzW4OH>EQcYQO^ET%kDxlp+7%ZXXQo$DO3R-) zC8J%s;!mQktmOzmDGi}`VI`yQ5~9Y+6EzkWHBh%4>wX6l?2ZZC3csY)VLY%`nWQrhMdB#*Gmi=Ms2gdz zh%t#xf-w;XY;waV$q^=s=EY^+oU?2s za%8w(XyVN>$qYG)!!p zhneOlaf%8TN5P+RrP4=$^ig^m$w_sCDWWseB$SS3PF2=gxv^ z&4fv4=>ooFZy+|u;wBx5zA!K(bL{d`zx{^3D)RB*Zx~J2R%-c(mC^_OYhBord9W`s zr*Oz{Bbj~xQH;=xT2B&yxly0WiOJY(=EL<_JWE`<8W2ROw8k;Fpfm`zsG)=;TDkbK zYn4<8%e*F*cOaGbMS;7QxgO=p$<$eUrbk0kMx-3=65OT&S&Lb+w|%gP^LyMVVOj_p z!F3B|b}3|H11FbCcJG<=lPD}k6N=OQ?SgC~=jM9Wl#ZJ7@bVNRb z{J;x6({qqRu8G612Fy3dW{g}s8FS6AcYkK#Anq!ZvSHa=PbrZ4v9#ptYBaZ2%-6)Z zZKUHw7H80L?zyfeR_sI**>O;&Y+f8d5H}2LLQ|E&J*ilH5BEay4a^4?fK<##Z)&xW zSb1%$l$YEzaV}9RWx2*>nQ@n#hnGcfvS6vpp)O+6m6BthJ}8gQM3)WM(tSz{OCPj! zTbZkS7HL+PjmjDQSf&xkuBmb=L#beXxb1va%T_rfwo6ym^z)q05m7U~xAM=vm+($0 z6GOBgVXBO*@+v*L{9|9r*Y!d9ossMOLVF zRme#oqVUv{ukl|Y{|9&3q$IGhV}BxFKo+dH|D#@Or2K!k8&C89vGRZL%pLrOb~^E9 zj>W9(7Ry46JQu}L?^P6#Yn#fwQ|z}YC5P^>s?2@;$~Lw?k{ixsrOYI>%uV+#88(z` zM7gfW2cAU~cjQeby)gJ7Bq~WJSIUBqttiI~ug}pymZFeTnbRrs5Qd|fDLbFQEWA@@ zm39bEDGiocc~-{qcd&CEUY}R3a_}Uw&|01e_j!3UOV6+pi&<7gI8;MzI3AjU`3UF? zFm2BTu$!rCRie%^5)~PUl6EauR01qZ(L-@eLRLj6X}n@t(fK&jbY0V#S!57mxH&4m zVL}>v#BqiP+c4qXdVYFTEIh35a?{M=RVl%NIpOA7aEB@u{ zU5dCvp0h^86PZIRMpoTHDfvh^d^ICUMqZDc8}3=%qzwzMZ%fZ!?NBtwd_^2e7-|WD zBKnaw_QlppR)U{k342%CqQ&lOhaQ&HvW8PyV-6StOI( z^EBQ6Li1n0|2uUbv$#L`;rX8$Ml%0%y|LYV%K!eD_8;NghKl^A;g8kSEzqc1850<7 zc>(Y36bED5tvF;9wrbn{9DT(%R@e>q#5X2ZS}*i(mQ8&JFIppq%=fTkkKGEyv(uJI zK;PSgt7`1gq9V?=|~&yES@%p5KCA zRiVToX4rB)m#kHdUXO1@TPuhspz=oI_;slx8WY}J5& zvSEl%YEvooo15fz4a7NHwRZhEVjO3%fA+vjcjS0CEwD`t9kLgad01i8X#sn3 zCV~BNi~VwNNPaFFr99>-N9C9BQeHnQ6N2H?egar6XP(-FAm6T?_B zDk9Iswk+cA4ZQ#mtod_9JvfN|JJ}&aLiUEO{pHI^Nj3RYp|#--AG+=eJ)1F|h}_H9f}*T7NeTV{hcSArOYNY7KwB z=h!Zk=CioEwfA{^UzrkjcAFft9L_`pQ&O?riZ=@rT#5iK9F*A{;5VBYbT5ATVxu36 zz8vX-Ez5Std|`kJ@&%VO_a9y$5aaNcgK1bXC$?kB)o191p*Lmx6E86jhR^1#J{DV} zozZTB3fua+6PJI8xJa~)sE^%<`L>Kv?SiqSNdE@FXqlO^>8mwmo~iu!<_XZ7OCz^>R(+Dda= zFdpJ!z1}Fl*echIM!8xq{SLgQHUGJSGY4vd!>rNPXnW_2GFhTMW#Xh8`}~Q+jxuBe z7~|x!AeJ(NEn)_0fKs=na+tp+F`2Dsn`>z{^{szq>o(CUaZfbJ+{dm(td+}Hq}k{* zI0MUf#a(}1Qr9P;yxn~)f#+Se9YNo7KA92z1pEKh#=xcf|5~HoOxgb$#@3Vl?=NKk zi%wKchsGBO!-IO%dUN7=SBdlFLmXW7 z;J`*XN>1f;GAWI-TIqr$%3s8HC1@XgWal0B6y^rK9)B~RI(yLJ?PmGpO~3xj;$;KB zJvH#5VfQ|D?e6P|gWp=76+Qpr4`1KB=uWq;htqSr`(_djUvGUn8T{L`-kjbX+q>6R z!)hG4=BK0Si^VUC-9_)PeRI?R*xheV-n^VxugBwG4h{S4tTXE$UM;$ZotvY}ALqw! zJI$lZt54m-@$C4lH|`y@Z+d6!cX)iz-0IcG^WLC2?_c&O?0L}^<=f-lp<1_J@11pK zy|Z_p-tqclQU0cT*q$G$?~L)hchEF?m;cU!$=h8R?A=e70?(hlm=1Pt-oHFwoL;u= zqfgCU^YtqOAH1C6w{v>*^S^7u*XJ*~)1T_UyxqF~<@Jwt_jRA*pWC77{zQK{Gwfe} z{>2$iUtIli(3LddZ4BBsgTwCp=<>Yz2g=i}a`IqQAuiLxACZ_xhKyAu7r>KR9u@9KScX9Ik-Em8ib zce3nF+_wC;J?@>gXZ^#@R`>Ab_VBDd?hTs8@!=$cp6yV5XI*yYN0*&?ubwgPhuRqN zzP-*Z$Klolp3{tS2Yd|q*!Q~}=YMZ^Z9Y~fgYM-o(_f}tdpG9MsY8bcwT1O|?wkz% z?O4;FX2bgFRo8xbIehKhWRLHUFS=L8ygz7e9iNTIy~}sA-r_?b`%`BJ_7h-ogEe;L4TmNPHi`~6Gxt!m;`}x$9 z{q5P!M*p%q?w$QO>s_83?>@D|qs#H4XE*EpOEcs=aV2=;N<2GWZvi-3m%J?C1u|jW zWISoN=SP=6HjfX)zdyhG1oZ0HdpF&KX0vzM4fS${UjFqs6!0g!z418u7kFYI%FBP> zyc6Xo8ejCz-qm_n?`{}x9K85sP0epUO2G^l!>=X2Uz4i}uI7eZZ^DaA579^#l%G@4shqc`+56nzzR2C;VzaOTGYsAsUg_6E&*FX~sjF6k}%-oO0!rJ(Vm ze*kS7(Do-bmY=L%@2orS!}R;v@AqwJ<@{d8CImZC*c z)Wv?iU0PObZ=9Q*%Qo2@hn8rIiA1U-<;%MM?(c5~7XlzC$&Q=0yY4v~QzS3|2Ebru zFqdFfa$=6dD-8Tg{M4Fipt&Teh(SMMe9^YRBq`DK^Bi*fgp*RIDA-XloKL~Wh&a{_ zCL#Q)*GADrDc~Sfv2gg$gDJFHE6Iycq*hc5C*V;HAs|4jSLaa5!SsM}l)F9yxiu~# zBEL+NS++2gw1CGSf85f{0a|kL9AE_C!k!4$F68P=;|f6_kHSfqhnoCL6;N*%=d}_b z>mA>97-R30Q1ssyXjl5L#t#>L9uU;HzBY<3)=XS|vfa?Q&bC0G-F~1o8(oH*$`ZXb z4L?nTYYTYvx-dNE8@A58!Q}a&9$`gm2UH_rYNFfmTF{d(kYfc_$L%`)XBz7A13wPQ z0=_gNFcF)Pbw_$Z(Q!klz$QvW_3}307ecjl79MY0U(53ANyv~10?Ru8q<~#hA+7-e zu_qQP$kQ-h2a`o@_Zf%^oLZZ=!9fkr@ZDycEbBj;-^F##6-;6MuL~-62MHxB@ z{R0+2HcX>g-XNbg;ski5Ni>Y|Mi5_v3(*7L8&zi#S&%`*AC1y5%UF($o#^}^&e<;^ z`G$}btpo8bHPmW(79X#JVIU4K@{$*?%8~^vA+30=z+YcM8 z(Ei|G{_dcE@XSBd6b>3^ygc>O`Ul1YGw3NElbj^UnQ?lZhnd!CkHiMrf$#g_Rh`si zLONxr=TV$@QFO+LMRgih=se7iu=ZOB#h2C5;f@z&ppX!knpHtciNtBMA1sSR`TI!t zh*RVrP78-QyS;ABg3&P~s;)bxQES%L*R9V<6qB^uFC3%zQl#ue2QuWAM-tqg7>js^CgD z2okW4{(vf`L50q88>hnFLJ;`7ei|w5hDvgh<`tPw&9r2BDkgHTHLq%z z5vBD0U-}IL9+)~T{O7m^TVR8=mwtM{G(UDkcQ5_lPz%8*E96%mG4jI{Y_?S~s-es9-U%-;ZT z5RAfMGz}&OLBpp7h^{0E3sF7^b7Rb7c`7wUbsw&ICXWBbaBy~P5pe)UBppB8jFCi? zR=kQ#h2B6dApX@umDnJW$OsE4%hNk7Ab_!G0g2l%TL-aF%I?r=R;(borv)*|*1vMq zu!wp*+(JNF+BEobf-&7LS~0>wDBzF0wW3V;tf47co{CeuBIZlDRDjE~Q@yaWJe8NH z(mOf`yjX#NR{{&74P+&i2iUcFe%7r?t9R9@c@6=)qc}*fsSEk)Gg2J+!l^8vHl9xj zY6&M@gM~<$yC^$|^YENj)l8TSyJGHm0~K?pN(qF3sx2;JVz6vg+F)^M+y&@T&M2Nw zMb7AJb{|X>EaX1&jM7q~vOAOxQ5<88~qd2bt_ZMY5(K($<0Ha&KMJpB0& z9T@)`(Kg4pHMR>Zu)vO_L7^Bld={M(bn-S~V{6I|-t-R-cBTENLqG}vDC;QpnUJ<_ zrU;9Ib;J$TA#GwgqhVkz(6rZ2*i8<3^`jAKv3(xqPl5}$i>k{ii*O>^{QNQx)9Yh& zZA{X74ZH$AfX7R=y=M2EE4$~ceMFI!<9em4-R70uZQiMB8cw#?@b2u+wX$)N=EHez zuAfSObQ=u*O0Q z8?5x}uUJ_U?LP+>0nxT@64}30;^LHl*NN3X+^_-MZfyK;17o<|I3sgwMZ@IN7KGkD zqY+XS%1~;I-gH%Tg{g8YJ|lyt?Ijf5TGlqe)zszj!hbA*S%iZhZlJVYj}UOF2{%Oq>?rV*s6qwGBRAPP88g#88^75E%pgz0siXi7oK9D#ab`|k$6;I%&BhmY%( zL6PXi%Qw6DD*OLD=+(~(@jqIw(=Nq-^_q|IKfcL-V*YoUbi23~$%dC3V#H$c^5q@6 zi5*7qmr^ysgG?=TryTGrC4i@fZ3lbL2S+Ebe}2jHjFSc-sTnVIr`+0Dy^qKIJcW!D zwZfW?6A}pXT{KiLsdq_7&qHFQs`Ro#rJJOo05ao`3^(^2sNU8P zZ*-{5nPQq&q}djPk7e04!V8EjW7J6024SfbMToXyS?oNToqU#tXJHz~!w}=>sp#S6 zTDLOmfvM?ld2)w41jn&~M|NLH)w z)Mbb}x}4CRk)onoZ!q0Oi4@(iCN{;0%#gH(ysmRIR-v0X(GVnO%{V|2K^P zr?3jI(l_a(PRY#ydTrn%$tr~bsxLw)V;WKRGDyQ1GE&7MH6^C8w@sdLMhP=c!4hw_ zG63Tzqc+2Ljc8OeHjP>|s)>vfYI=$o;>SWLZh_c*5F7fqS+r{kUJEduO=Wn(XBg(D zFx(=)&?X<{cco-{^g+0UV8ly!B@HMgLD4_`aKqcW-S~eSunT|s;ReUc%q1uzf>nSP z3JTPN_~1zzOba;#(hZjMDb)Sr3`$aOK7KVJX-5NO>cVB3RIPIHkSfk9xLp z$G=7|$4MOi8odlgzeX>U(XTs`VEAPxOw;RM4+aF{uP$j!BMJ&W;2T?fi2{yQkOG7p|nz$cxN?%-2UqqkGTZqcPvJa1;f1 zOzuSLn?|ipgtM%Hp_>}na2!s21if_C|5vdeRrz078jRmw|JQci zRw@5W(|*kV@@@5hIPJt#*t}CV6>@?-@edDo{QlFEXM^Koe-G0{y@|6~IE>Dsa75Ea zu%rlTVkx*eJUM#VKRF&8y&W8#433Uo994lLCnQZkP^4+u3-b(xL6+qKq@KVyk1oQP z<}kn)>?VYlqe-+e;lntk3Kxe`NA2iu4;5D^m-!_z7C9=KNILII=tu)0&?W!wuq4k75 z+Z>%4Q4Y(&2o_I%l)Z%teAdMo{eJmWF20&xKE=>X#YAbE5i=CtZN4f1$lWiYAJ9&A zKB5>Y2+vU?W~9+q+_mD!98W3VWnBi)vV3g!B8uanpEeb!c z>yv!Lpcy_j?lAuP*Fx=rUxkkHFH(JrV$iCWa7ord_*$Z^|u;4n-s|b1j?*Z z)+lC;i~8l8+Xcy~Zf=#;FOF#?lzdODDI#(K%y26d5NRgl2!-rWQUP(}3+tgwr%z~4 z#N|h&OEJ@wu}w?jFPVU!uxvZz94X99ln+&ALP~Q*9wfQGY&%qRlH~$}b(`-ugcmaxT zO4Mi}71C25&1qAWt7}oNEz$J|_HJ_e8U5##p;ORkHv@gO#zFStGG;SGWN2Pj1*}Xb zmV@9k6~|L@`niMycqg8nP~C{oW>COia{BoLeEBHTwuMsoV`$)e%Kw184dj1=934`~ zmG;-_0T#>uw&RrKf6sfA|G$<0H!|#R>7-{6KPfe``D``;S$ifd0^>DU17|?yzJ%8q z7}23?Rv}4I|K_5Smbcd|u)1JBA<9qX*J@C*;#B(nLoJw0z;q{@25C;N7+=JbYj_nV z0X}}TsJoTeq?OE|W3uBLF@1&`214n%j}a{lM$Kgqii;QYODGgjJJBeKRa1F=DGS0} zA(i9@qR4{MAb7fpaLymk&%mWjs=i(dP^S#jFMt@sAchI1v3-owBp+koEd#=C2`$XX zIS_@}C#@ZWmQw5K%p=|Y9qE6NWnrGNjJptM>OnNX3+cbp@_<|_`d`;}9_jx#y#EzV zWe!OMbmZMk5?DzH_J%I97(z+5{mS)LUsMjNZOV~}5CC2Zjq;_)iUkCT-Usyi<)tciOI12Y0Id#T^)bar=;Y zhP6t-uogw2e{tMq({r9Yscq1D5U0uD@t?M9VE&SfMm2+ndlKG_wrkI9&oMmP>BHZS z-L$%nYq+*+*`1Ej?cg`~+h^b49sE!H4fWwKtH-`k*zmW{zQH^ApZMFeo%hdLPSbFE z?S8A-wmK~jp7DR;@0Qbi+ite{@Z7dLmg9N+d)w*4clf&xW!QIkkN*>YH(PI8PP317 zSbh2(VK-awcfaK{-!oiaj-x!}c!s%x$4^_z@*@%69(3_7Uo>}LpS@ns>e}=VEV{qA z{ZV+9ktYla`WJU#4JTQ{{!3>E1Ao!gb{1~^rL&8l9O2Vh2>-`FxneDw)k4fs;P6~D zi3=A)hHcldRkA$Wp4YH#&+3i6_R#9OrfqpW)3MyP)$N+D<+V*aXmz?K{I6*?P222v zRsVgbw41G-W%tZh>lfQ@TOHGO+NSN=RSgS{}6B>6*4hSjs7M_$9m4h5~QV>LaK z{=rT)>?VNgw5+B#Y&b2`hE?Y@I&G`nGVNa5>a-g+fOAc!-L-md*04KW%kG-C?O0u> z;dDEeW7>{mwTF$C)pf0w+vr){cEfVKhTXC}8~WGTZ+op_!*1ACyW4QAb`QGOXj#p6 z!wy=#w$<&K^bhNqXZ0F(*McGST+3@UoQ~CU8g|FAI^9O6V|l%Xy_Q> z0aCnP)3Qyw+p@YHv*olcuRCm5txm(U>>hTjX?g7ibgN-|me+ghdfpIwW}5)c0mNhH zf>y6<*^Wv7keP%|bx8+@PP@_VS{={qI99vWu-h%GXWFf%)owUW$MQPA*iO3vbLn(& z1|7Qr^Vzoh?UrY`PQwNybNVU}2gc)iP0RKgcCTgGZUaW+B3ew_^Wcr^IhNBip){b;ayurJ^*k)#*(MaQ zO}EvB>bl>!M~&@unBCd-BE}7tlf3V zdbNLPxmKrTHqCCwYIV)#5SA3|F9)Z$XLTHWbQ_LmIrcBj1})gIJ047_XLVuAz`pRT zRvZ3>l?~7PUeB{Sogo&2D)6mi_F$>OW7ouDzhL8z3#+r!vRWP>t_{1ihh)jKI`B`o zg^yo1Q7$EbeEj=fuRUzQ0{2JY}htTsAsj_Hph*w z)o#7@9INMyyO#I1)fJ1Hwhg<-v)axO4m?~jU7*D94}G+ImU|3~6E?eN@;2X3fmE7q z(`t8yjW!(4O*lY0E*^LE(Y7tuKDND%2~@J}T8?8nZe};FcH3;hLMM+~;%|p|<71Deev%ZUc^0&$7D>8|Xhixd67=a0ustzk4Q7F!I!b z{ogckz1vpT1gdYgtWJB}wOnu5uzIaV2R2OG>NF5Tco=&0xd)xXT?)0@UGfC|N1)Js z({7qJzO&ntw&l83uQhZn8z^myFhy;TJOO=lte)3^FLtNVL8vw!$uJ1u37Wk|mkiVK zU`AWLq1EY`9XL7LKrw9xm=&9h2%mda3n1H`)oHXW*C9{1GWw2(N4Dz$k#{^7sHJNI z&YV^o2#(vdI<5CpU@O{Q!?E09v(W{Hqy>zJ3#1sv+@a4s=nO$f+w_3ox!4WBr`H)m z&t21j#o$>jvtzZ%L(6h|h%q>4;XuJB>}=C?VbCoTj{HW~>f(EtkhTk4nB9Vry7aGY z!vX?G9n&*y8`|#n;DIbkSYgdBSq`=XvkC)uVLiKM8(2O<`mClm_AVM7t21u2EC&{N z*YeDs<+g`S(<69<{RC9JL!MkXE}M-uat)0()-#(81dd&X6=HUQukb9}&Y+;pm{ z9IM-X|IF#yaPr#T5T>VznC!uc&_%8XA7Kl&$#!jvh7A! z>RiiSp?6Y^P7nB8U^F{@^6a=U%N-kq5zlNlt(J{bU^P3dQDm=0C^4-|NHWMzuyf#v z5af0nS2EILDA}dt_?hjvq|IRijt^Wv4hnkEK+7{d%WJ&_ssj|u>yR^O-?p8%E=W0j z+jdN+V*(%1CP;Ij8$%D5Mzal~nM)L(W?ZBpYU_;ohgJi%nd8gh#>p7<7 zwgV3)*&{OzXCtn4k8A>b@`R%hHlOcVF1&Zydjbd-H}I?O7!FpUGh~Q%>;2RLQ3xn_ z=g@7pEypB7c010Y+wlN9t=7KVb0#=>U8~z2w-4QJn{JxU`)6*aW4f^8CvB_cHEfVx z#+E&4qu30;-am8O4xX2u)tNLpaC|$xal^9hNuvwGuhZLiTkyklV3)wB37jHbtJ~Rk z?cSm5^nliTI1+Et1rp%&ET=WLZ2Qpl=%;r3&~0}?T!gMoZ8$DGvw6|7y6rI>G7iOp zXSLrtAUD#tWGJn62V21+4lafkOy+*81CsDX!*<3tkhr(5ZMhzO%>aSCf`Il3ocGUK zAfzCwp*;!~C^7@va^FuIZWESX6ARh8Qnq7x&ihr^R@~>5#XbWXRr)fESRqorahl|o{z!HVMCM`>0UG{pG)0qI>X_+qYHLx~YlP<_A zbZJhyNT=`@u1>qv1r7q5d_T2uwKWgz7BWO0@N{F4qb4BAHgL1qZL96U=4-LdXSX|+ z-KHSm>}vsK^&FFLKMyuVvH!gH&zw%zaHvJ-X*moumY_SLO?L$C zCD{<99H>pYz{z_p(}i;i=_me+3LO)52EZ$No&637m4Vx}y0%IFg)&WKy;_}pED9jp zo=N^Cr#C6;fiSVs&O3xf|Gy(O7JAr6sqs;2e3Tj=rN&38@lk4glo}tU#z(2~Pb)Pp z<6-~XM8{Q_*hkUvQFQ!GL`Rwi@6mqj(SGb(*^k{;rY4jvWB(g$l~;)WG~|JKgm9ky zXg0=ho(~ZJp&b9oaXtId{`Z^se>`j+KWzp#Q_UwQ26^TGUrIhH1c?B?!cZ3RNKd!4+N9YCVYq9C_vHPN>NJ!jxQ z_J_N_OoAwW9bV-u7Ji->ry-Bs8 z7wH8!{N&@1wV^;P;VWseIxnQjJ;bmq;9PcqChu6xZSZJmx7Ia|EYyjG z0-VmX98m9gZR0e`CGQl{a&&>Y6(PF9N?8+aXT1c2G)97%(ZHGnRyIG)C!s|)2e@L^ z(%=%3nQPM=(iI4<@o@kFifTcaHO`0A8pQQS$9U8DP^0Jsr>0Rz9zT}46vjgu9t{va zzyyJ*7!_n=!+1wRYZB+t@>Cj^5%KmR3!@%|#xuVUAykIraQG#Ij6A^%5;%n;Bgjdp zhj>)(2myQ)X7fqTF~m~PONe4CMfOml$nXcpjlKReCChnqvB~DJ_;70$bAlVdA}JDu zC0N2(9-JT20Plv~R=)xoUI*uxgh?6@O=hRQh5bUoH44zWX(H8LvaMO!Len(v*$C}B zTj$Dxre9a+S_Ob|!4j-t5)Xqs$H)yzZAc=@=FhM!OYAJZsOX2d!MBk0V!|A{(VXpz5l-sN>oy<1H{a}rE5P1h?hLH0YASO)NRUF_`b z`qp9}VvRid=s^5!?~4_7b%#eCcO+5_KWzFnoX~-x&Qk0OKm;)pwueX^Kl+P zKKP>ayYTcl8GZ?KEiC?30mw5bE>U)1LMSnk=KjDxdc8C7U!NR2e?2&Q>mPzh(!^*) zq{PwS)tkZb>yy_9&jv5vyf(ItHu+40d9aD2V-UtB#^Wd{Rf_oAHwvo^5SXS!VVhaj z1DbeoE8N!iCVwPdI#H#5$ z&WbT%a*a}!hv6796J|oS4Y|W7MU~RXE4m6O4T0G=&M`p_MB4nEV1Sd;@GMEg^(DQe z09NiIEw7&$64C4lq(piXXJHsa#?U-_5z|FiQH>_yIRZWkBc?D$_gOF#`4}urGM>$eB zQmY?oCntQx*GzGcyX^HxQ&Wv4>82U@4hpefSbye=G|TG)XK?v{(c?st`xY+ePRm0i+;8 z%Fm?T*t-JpuM0avr{)ks*h*18i&`X^tzBDfvy-5-Bd+AO>%1wh@`1JS~5tvhf6W0CD;YtE~U>JR8=Ftt`j{> zLxH$-wX4TL(YJtqx?8_WGLisjS$9M#ui1L^&=HoJK>hEs&S(ak)fO0SbzKMOb8%j+ z1WV}e1FqDecsLFjl0NI&Qt{3NoNXo!DBsCIN~z_DXv$J3QLVem5^|1qn=`lS-N|KE z0?j3v`llam3en_tBb^ODnT4Puv~~&O$Q2ov2~bqw4w=Vu-4@%}FhB!2o#ntjrXgka z4a|6Kc%ZFJ;t|cvH;OVY3`kHw=35{pNNFTVM>ISE$dAe>tlfj-{)^|&2mRNB-A(O* zzp(+wt5^=XG6-$R4_v)+82D~kw5!r_N}6vfGElr$FgQvNacgj7E-X#9k?wAVBz_O` z*U>ag=6P}D;x(Ji^$Inx$n3$@E>D^e<+ZH9kP(~*QM?es9q}bJ%vaUY!k3vvi`JFA zuuH4bIU;qpmKMKVQs%bu>+RNe_iSGe^E3^EFI%f^hvj==7N!vQMbr-fft$|~F8ixu zp}doL6Q-nNFmYGqs6xPXL{vN|pntaj7ol>@(36gRtU?t_N;zg46-tm|fgnYb(9n~k z$`N5gdc52%0O!%PLOk2pFwUYhqeW=0R3g}AhNSPo5?LNhXO*LwpJt#?h;tOWGIe+~ z(z~`gB963sD7IRKJjfjlQPVGi$ta|9D5aV-BFzT8dEEYCs7>kfu1un{x0gOSJ)P}3#XMZ*25$|i_VuIZI5R;?ql%<$dk%Z zp1%^6OEt6gDHn6szjElLdq{Uy=?~jrSfM`sn$}BHh4O_4RbWE^Z{Q=d5@nfM(P(i1 zaYZ&OtHi;i65*_`EU%SDt0zR*APPvAnJO*k`K%;3!L?sqyvt$ISyW`WwMe!Loxzy# z46DWN{M+f=oM96VlP9aLXoN!2S56qBG|?gf}Ja0IVRX9HSYK$y`wDZh}si zr81{n(+zTl$vof0Ti)^t7q1nI{A=Qr7eaS^fr>$!Q|DY1%j>#~Z}J77ST~dEYB`Sb z^`I8gdC1PQ>MoG)YWuVn`6JdOmR!c&*o3e@x& zG3^JdgS13sMQ;H?0JeLG_jhCX;vJ z={QNgNI7;d={tgZ@D7OLi{wk;^!5+t^%k(zYUE?k-A$uBTQ(w*i<}X(Q0&3KraBZ; z>L#7-vVX*=iZ(KTBqV*rAtXAxuFFaJ$|?GkUZ7tA$+oy@OcJ7Pwa5#TzYso+)9?(a z&?LA%MuX=~NIy!f=Lm;AxXQyAO;^AXg&35BIS4Z?*B36GZ$BBeDE^Fe>LeR|sg(+B z8Z~%t+^(-LI2p7|_e)`Vz6HZgR)F*h=2du5D-j20^0K-LjaFVNr{CAz*?cWSX zdw^GpT#FCt@-bV&Uu|4lbhMrX>*dSYI7wy;4ol5SG+7cm%mmBDPt~sYwoEHiYL?2_ zyl7OqE>~8Iy)NgV?%7;3FfM=byA5HGDQK+KZCynOQxs zYN2g`l`4#_j-4|Nt;(KH`Xmfeh6RqJ^)0-?fp2)|(+>-MjHZhOGEEOh;UvsM(n%fC z7U1Y(rF7QUDmqr6;MyZ@KgpP4>06v|^!?NDS}6!-S6cmO)d{0J2((twY%gnv&#oGN z>#>*gVT-%9_l>oEw`H%_LU>!naZPlj`u5IiEBJq*n@Z7PWa$9^E9Zt>9RH>1l=441 zcH3@0`hWd-{J*G6(M?s{B>n1nbk+Rx`hQXvx(C?*u4CJ!{oiSNkNf{y=6_Y30nv5x zrsNZ+xja26?oOYAGlwe26&`@wf*+mU$QIde{#*(pl7=I&H47%dseSt4hL^nEV^?b9$HCveC3^2PCM zh3^@M!6-~Ko!tS%8c9+bykxULnG8U@v|L~3rkALOzyWBryr`ByY*O82W)OA7CMbEa zu7+FJC|DO^$O{$NxtN;lo65td{!{&|!2wEUfz0fbgr9SQpg z@5m58fBh@mS$!|!<|HsSjSq^y8x>Bqv`3x_eaK|2fhYuS!hivIy|a3A@cUZ0s`)HAjnF(ns5Or^hRJl6#K;R45mGfh#<9IQkSmuytJM!ltNP0FN2Mwt ze-xx69B@_+cY?7_kewj^s`GR_OlINeFc}7u<2*^>Nf4(fL7~lbCBy z(qy`WzlHE`_;P-B1}^9+hWo_uTH4UGcZf@i_|b?>RKH&mj?fdaPYsw}!o@ndk)a-n zn?|iBdMUzh;}(_gc~XQiS?nW#4T)=NTU=opdqKgr40t(a@}>81jk3ckYdS%23x?xx zM7^|8%}!V@I(O$`evpUL`hwlA;d84^(Ka@W7xCm;Fc0Lm<`+R4q47x)hsI@at-mli zVS3)lqOslTu<<4)MR6~n7l_`~5k{b(r8>-EAYe|ZWM#8Sl-FxUtujX5WsvcEkGD~9 zjJtIL2&kBc+Cf$nI*!gE0&tBOSJgmRs_Ek|@Lqmsek7J(HQ;H#r$}VcDpce`k;*Qv zFEW#_z;@YmYLP*_>h3!&2WCOH_KONveF=jZ#h_55+Oc>jyK-yYk{6g_YG{YWy|%#t zh(7=IuNCe;n);%%_V%{ak(-qQQE2u=1&u2&RyzFBhoTpX^t81CVyeBL#8P#k4TD?_ z5mU#5I4|bKE_u*aFQY&Wl2OmX39j$zs2F?%v~sp|5Ng5t2c?yd3&nS6P-X5ZNP6+f z03VDpD~tXEW)jT`lKU=1D{c$}P2+O#XdZZ?!WSNt#xM@f(D3ha9OU7J#=8=|RDvvt zjmyv&C2=iB_(7rQxrhQZio2Rkq9Fv<3{TxkCrR+I4vk?D8(9v4ug~Ta$OJ+98_jIH z=`e2?tE}>YxS$q{;tu$_AOXbJ*9#lKXtdz2ozOJ2mgDmY=BU*!ja=VHJI>>w&}C5( z@|0f7LsAu^v|#jAZdbU1hyPZ`4q6Y?SKd!@keb5TNPKIZM)62Bv@a{6nXyH+GMX}> zMN#^u;;0Y`vR8U)!1t+8L;bY1fI}3jN$<<{(>!wBJTgUprCWaH&rh>q8l8qE2JmEQ zz>5Ohwg9^{VXE*&ys=7xSE&Q@2(0p>(pxLYbJ#_)aau7BP26iXkg~9bp^n7aUI+bT zxg7C$l1rA+EvzqwVNDG50&7aB5dKL~W3pM4<7gCDFv@#k1yA&udhIjm3L>~97W_nd zB};nsbz@WME&n2cW%9emCXT8d7c5F~Le*$gC6P%VpuplzW%6ru3DKEvNnr_zX)+28 z#Hxvrfar|+_mPzpjo=U&2Nz)0Y)r#xl3p8AxCjX|5)VFx|A9dEr34*_^JN6;6dF7p z{Xs8*WOJyFkq4(4c;h9+q&he?rl^|1&)7LNkip-0Z-Yr12BT{@Tw`KYjZH*nc=SmF z!&n|Bc4MAFNJTgc(OO#t9-vn<>nK#90S|&xBbZE*%dCI`CjHd5{&b#8sDtjPpf7_A z>Wz#jgX4V$F_1EdE^ZjF$5CcX!r&qlz(;YpH`fqRFRqnf7cOViM{|nn8e%Oe=erOo zQlK4ql7^$>J5i7_KU!D72v;HHFXbB%sf-m-mor(4inJoIMni)0?@uQ6g)HGH8O}kc zU~y~ov>X;r*<2(l_?KQQsq+um`Wrvk9T^N?nA z*Lc9qQKn~;7PEwRWj-iR)Z+Y2x$tEeVf?er3SAT(zs1U}SKS+FR937mUMQistEnA> zlN;|T{wfzb53-kOGz<^ocVWZ}OK**zmW)6ujmO1&GATDT4X&Pq;ma`H3$ow5rI%@x zq)~poq(v>Od$(R_K~(kZJjf2CX_Sk-!56DEiUq4j%~ggoNfn^E_(ac~ANTa*p4RSZ@#WHn#KQO7(YlZK+SockfBO9mD{0m3UAeDeTZSXyjmf(6 zHG93Pxs`W&sayJ;rRjae{?g*K5?|+GUg8R?qZdfBbm3UVkVG{&Vs&tQ8Aqe=I1Ywi zPJ2p)w|_1To9%MG$4Y}mPVOPoyf=yCDq$N#c)J?EhE(*L-1*p z?mVe8HPNY&d1p3XGJx_Z1x8u>vCJ#0#VX<$-!Cs!dF^Q?hN&sCadOE-`uM!ASKsOG zE;g&LHS}7!BqlSnNvF1|)KMq}|J>9m&oE|rm`$QMZ;YZ0F3B1Y_{sPOTz!I$WtKO{ z_l4nOMkI}77Le3M}1aAT$lo#}7AYD7U!xy>)SR-N*Q+FB{j zVcb><_rWvSJ#umQDCS9}geR!Ndc|I5dzkOc^(w#5RqB>>Zh}`Zv%sVAAJDb1W*S2E zl9pHU>8=Sa*Gz-EE+X;PX?Y3(R4boif~rMvnsxCY3O`4kBAy*)3XvwITpbEs#3&2ybYA}pC z)9A7&Q4l0bRxz$GjtH``VLVAvroBPB!O)$V*dx^LsM%$LS>Y1PV-1%2SVU#3x{w7dV3Ha0#qN;q8ZhJ-p=<_{u9>w6@Sj|B3OK>o1^B&c6yqSsGG;c8@4 z_6E0RX>t*b02T8rPp0)n*)vDsrlwhQf&UY|QT_BLhAcJbarB>XL`aTtuxlBw(`%qP z5K$Hl?(xGsgWoC#O03$gPgVX;D^Yt)Xz{;z^xS^8vI>j3zZ{3?B(fwv3=25&7$D|% zjQ>&*J>r4lzcf3J*D1w+>A0=O_%Gk$zas1iW&-GE8J@sWcoiOYWJtgA2Q`uhJ#_T7 z*;oD`$I?KK?P&1&=;xE;w|gfq{nz`(wo!ZLS%A>4(X@K)ZpZ7lt&VHEF8ghCEywM6 zUBk9|Ew|$tJzCzi+>Uo>H{qvkIPmMOXL5V#B8z|MSPnwz zSRJU=u{tdRv<*NHdzMX0VH;fwY7%60;SV6!wH<>$^=7p+D zUdP}sP3xzcD;@7XHQpS6K@s)gGZ?6fbO7Z39Yh=MvBe$+Br1%?0W}XIk_nF2A?~fT zM!hzQE^4w6MXFecbI_2%j%*B1FSF5?#xTno$e0T^@8QG>X0tFJ^~cc!bHWh_>lLVG zPQ8@{g(;H*d&u-k@d}nj8BO>dKsxKg%QTr~@=ZH)v)0Kq>f}mbw4p76d7cceWcn(~BwrPCO@{-joc9b1K$UcqJk5no?OE!%fIR^@Bo(0ha zvWxR~(I_87dc)@8a{D2;vqC|8LBUyoz#eJ;Bkc#;U%gPMwd0d$GC7)0U;}}fSuz?e zuhXAIvz6;4aeopGzijdV3?)rPh2U6z{joBP&Fy!RAbD3ZBN36aD4l{U`fQxU;cr4k z^ps2?B1GY1m!S`m*XjzWk zbeuyd*lM+k0!>n&#X&$xSp8VQDZT^fcBjK3*aQS`p>26?vuX1#u_oy z5bm}oqIevpQGTaAvAm9EPxKe~q1>AP-KUi-y8O?PEXnEsNG#5wMlWz$~`t)4|Ut$AjbJgBQcvL zBAAr6OtCO80yR7!4O2xE!^%^Si=krw@#wJnX*StrT;IBTbuvSyxO3N6>9&F?$qh^{ zf1g2-wP(sG{Rt)*Jb9Y6)tSJ8=XhiSzajr8OaKJYNbjEdVLAWjdaX`d;s5N8?L6N9 z{l5HP>n{A?*ZC4r-=R1`uVBXOh0&~II}(3)5yqn=ZG6r)!hGBy1scHQZA9@Xyt0P( zNgu(J+-Z|YROfLJg`?_h4r+1$wSL*wL8|Q^9u8gu9X)w-bf|E<$mdq|dtp+Bug=JD zw{#3)47NSUCz9wqrV+;3JPm26E%_x&)>shf6;f4Pf!xqZkT-S*Py9EBuTT2>{sElvxbn7*+AdY+5ZlO7 zaTw0Y(aS#0c~ShIJV<#B3}=iajn1Pun9zfB(_kC)Jj%!OQ{0+tpYn$WA@7ZB^kw68 zlALZ_xK_uqH|RN#Z3y49bjXLbAv?{#WTVZqN+AZ1j5}n*I3dv;RD)0QP0WEHX2iN< zB<7Ps7{V*w($cNhiu12#DjQJcsfL=s%#ziJIvD{^6++%Fl%3TY(npF*M{sY7Kn zdTEaMGfC4H2vP4fd!K)=4hXJ#x<`<@G5QY)BT`o*bLrx7FKmj zx}}f(rHOeg*4Aew&&I(QS!fV)ke`J4_=FnX6<*h>_@l&dua<+P+5GiaV;+yfvnZBD zBY;@sLs*!3kpd@<|N3>TqiL&Tz0-Crle*I2TQHU69jr5a@GE*1#y+L41}- zc_B0&uPQ#UeKCoK&|4{_O$b2&Nep+Au7{?_jLwWW9Ktg+ zCX#yvBE;i}kITvvx)BqE50zL>d0&6@H?w5wPW0^hSk(f6rV7 zfc?1+tWK7vU!A}Lkswb$3P5DbU_R+Ls54q;Sk-e&=|;=3|_Knji69d45X7b6r)FmOTOHlUy70Otnd*Z@>SZ)Un8)G8a*D>@CwOa!{GZ$!T@u z6;7t)0n`aqW~iiowyV?SNf@8!V^Y3(-(@?SgkUW>0|^7N0OXJxAj=J#`u#50bgbjt z$yeBP#Y-zsqiLNcIlC`as}*g4B`4ou##t0jMl1BO+OPU9y^x`--W6%flVj4@E~Ueg zP={%;+UuGlzJRc;As!VM2FeDw{YuuIu2qy6H7@P+z2Mi*yuIlc#l>5sUm8lJkfADf zdy3D3V0^v*{Zfjv61kz9{S*h8QEH>?^V6z*ehPfg43q^SOH+}~Lv4^s4Vz67@S*w9 zl-Hj=gS9MIt9h%n8zc|YIGEIHbIeK)ffa+%s7O?Xjn*`o=ym?I%UMAUDOJzYyKSp` z9*)YAT;LomasT`tNfIk1f$`33j?7IOmQH-qDXw1?7oXgQTu@kVcn>LmBnyh3J-VcI zRVz^or;z>ba4$*L4@B{c=QB+nqe68gFK6ydK-6K{j+0N8nk%U?E+Cf#rJ#bO&?{P$-HhpC80V06-QUOmTSWKd6EU#sE42E5jnu*>zoP zgOD+$fTBmKILN9eLR687jTJQ>ObF(g<+vOyjc%E;V1WWshGczCq8QbO8v2=5$G0c5 zI%63@83Cj(e*INa^RgJeN*H5pEML%>1w4RnMbKR1gJoIDoP6A>fX0;P)zGR4ro6Wc zsBxH|T)+)`5-$NNvP}||uIwzmRj353Q-_o}v?}n5HgZYt7b!5yu*2a|I7}|WRDnuL zfJH(Q2b0QTYU8|Iz3jWJ0SmX^OCYkcaJR7#D2xW+iFqwnz?4#@UQ!n+EkFi|;PS4G zlxnTg&OI8rOA9dY>sdJ34f5dR!qzSTO+k0ng00mGF5BT^*@X*$+#;Qn0$nYJUnR;f zXh9oYeDNTvdD;c-2w@u+gD)#hR}4^&JcXh{U$01&yOhy?o)||j`v%;gf~FBt4NFYE zP9BmkdD--us#?E7Wqd-|j;C>Q8MB+1K;%KnhhOoT>(sSe3$0%=1WYc&6eg*Bo%k@^ z(f8#RtSBB%=A%#?+j55QP5cGWVhohb(6uUD&eCueq@h4TsCFa2Dx*5BLsY7LGI9@1`eh* zBY?=G+Nt8!i500DqMY;$L9$m1hRTXmL6s7mAyDZ}HDFz`GY#-k5;ERM`OCt_%Gu1S z@kG*;F%&JvP8As8vfzs8G4!*>uM0O9-7Bz5bZOgFrt_;v+{c!={1(&fNpCdS^rYn@ ze-fv%^reLN5?I8x{I(R>Qe!Sq=4UnW*IC#xDo1H`mKy1u9@Xpj(KtW6qH1~iIHtOz zlMbQ`8XS#ijHHz#igK^nl9gJWtMN3s;(!wj@_D+bqOGeKj7Bfh@GQF8G{jUD8sTPX z9=fm6zVV1tndV|i+>p!dKU7`jD)u0v4ZxZ%XVl#uH;B>Dm8Njdo|Evn#h zm#~SN8MIV+SXG#k&BG%=Y{ier@ zK)5S3UM0pRzv4$qrEFLjTK)Q~adZ3d3#KBMeSY;#F;=O*D~?kd2?rH-Rywj#V3 zMoZoLu6{O;iSSWZzA@say#Ap6UfVr5?!S2ce9(VA*j@W*Y#UAZM}EDv8Yo)f;Q1Z` zvJsH*@@`;gcN`H4_T_e69V|!$rFYvPB&=7)0pgpCB1($hh7for?g@P;8ye~>7~2M` zqIlRH#KUA7#plSsE(ITHN>{+%_}kw|-M;~TnL99h^$+AOjCndSieYDAdJ(2@i?0;> zz{~UjXCI9|rk4<^M$;JyYaGDXY4wegGx8kFJ7r+TcJZP#-s+azKL9j~cd;Z~8dcmpb%m6}bh166EliK`0=r_JH|W)SC+y z1Ddz5B*RFrtGt}WDV3%-ywt6bI-AK#&t_t2gVv2NVGRO2(5g)ydHzauhPa+u$5yj6ph2#G)-7hKON z7R96v5L9O3D}ed9rL9U!SZ7H(fOzzEVy&|McV;CN6Ga!kUf-&)N?SA>_@D`h+tzxQ`yTTPPw%WZR?Mp?gxB692&W@Ae`huZu{Eb|XvO|11=*ne! zTg7+mMj0g-BsvaZ-Xz{(#EUGnD`2|g;(WcOs8)2wm5jy`KaA>Q*e~L@WgJL|zw+p(h{1tDKaGWu8-} zznWWy`>&MJIWwDQ@qyPXPn3T#sBuaQvNsFah=Yi{_mUSe|zpf z8<@u1!4ZUR6$9KsswYUYpoGMO>-sdwvKJWb=fw=poR`TY8j3LvF`#2bv6TZBE{#@L z$~tFNXEI!#kB-Ata?z~pL++7e5xLo|J2p;mkllpvPMmV+|UU@C>6e zT}JUJxwN7<4pYR4(GX{1-PkZ3<41!Q%Z6zf#{b&-PV}~zsc;AuIUq7~T1Y<=NF*nk zKbyf_)vI}!UQ<(rLNUb0l&9A(_^>n%v+y3R>_1V@tRHTM>Gdp6EE3uL&6|VW`ugps zEnP)WT9N(%>WKD}LNtv}mw=z`A8rKv+(P&)7%hKIMtf@_hPQvXfj_q?A_ zim{q#qXNTRyead{_{};?hVznH>G$}pD$saEKnVI7tBOn)tSyEP8QrAR#)fflhAD$* z>MAucxttLcYx6S7#~5J+cMiezSq<+3q(h_2Uc?o-e1F+ol4nOzA6iycGKP? zhm@QQUP%pqYf9v89ZY3;&YF6Kx1{#8B9PUYYbS_oikvotx-dX=hxu4}rcEfu@BCF+in2borB&iEvP zw*c8PeIZSjjuIZDpa7nYzCb9RO~N*buip}{{!PY86(31l#7#zk zC&>`6rY!Q_6i7re+g!k3)#)Tqoea3P)=5V{d+I@_Re|%s2ti%!lF#XgbDhd5lBs-oFvIt&q4~NS5H97fu1I#Ybh5gz!AVM zN%krhVM$5_2-1pX<+iE>Rw7dUAqCWx^FI|S;qNRRE|&kAcBfg&{|!k#ALYM4oBhYl z?N)`xMp`|OnwmfB{^uzU9&-P?b}9c`({0+1`~Oe3{|m05Y&44xj29^EW66R-y$&@x zM(0oA>f&}0N#P6fk*54+`ycdLhtHDJXc87$t%uwHuHAOZ`~Ok@`;GO#N8u<+!(qM~ z1(W1l)ZrEyQ@M=tv#cLJq!NxEm?q6if9KuFvllxDhl7*d!Qf>@-ka*|H?kR}yk<3t zNJ_?igwHQhDJs{jsf;2bILJtlV=Gd*L2Dz&+FEKN$H*|X3pI{+pBirtFs$z+4TI6O z!9XqWeU`h<1RC|`Sr|WPh-6WR0C=6qiD2rNT;=^Hos?xgV#5f-d2@7Fub5z=A5{Wr zjdkE;o=$3}xV-A?);JB%6op}BzZSM~Iic|7>eXKLK|CBM>FeNpfj}FG6T>T5d61st z-D_=ldf7-&!msHH!sw_WC_L(lq#>ZW7AI+V7N%*K;u4G#^SrKW^M38!nntfDCzKo~m&|k|KCho>QYUR}7*TG_A@~<4tSM*3 z!^`FgF)_f8Bb=gA`j%w_pfg+258f`jr!R30k6hXxmH(rEG0fdVx3QT2YdNm1-v8TP ztNqCTeT)BK+popJG+f&>*8aiM#T8lL)_?%6(O9)msAaiUle`_#ypHsX%BlP_xCoB1 z05C12%9rr^GD%0-8oM)EV{NXP@^8`w_BPDN!XrAVvfpySLVV$G!c%wcJ9<&E2HFhh z>@*q8C#2D}X%OK6PzWNaBtK_sym+R38(BI1nnj~A7;M*Dwn;0@J&?iFH*Jf#$hgl9~V{nBB zK0KO)jR4|wW{^0OVT%>Ji10~xyNO|`f^%%~IspGkcsq}y94=zeev1{^m<*GP2B0Bj zSR3cl2?IAv!_#>*83CkpYBbU_!$J`h0AU9kGvnWDHO9~*tHo?nwvB)PyH+!PWJxXR zHA^C2wRMXwSK~*c_V0h!w*LL^Sb_wXHmiVveZgSV{=H`W-GG#c+#n|BNaKU4KrRd` z&xSB6Ya<66*t6)|!dloC{oV*BQGkVqGouk;Ydq&E7|-(g7=;&n77z??p@H#N4T8pL z67x5R-bQ1DzQeZBXoOecuxORf^z|%6vmJm>AjZjH8u6wfgDZR^xm*nkA?1dZXQq{B zS4N|87G1HzS@a)VF7UT8fv|V56K^T?0G>OHhfyf3)PKau=_K5MU;$*~{hw{M=(+~# zFv+gyTgS3FNr3EWkW?)XQx`vbR3{3W!siljG$Ch=$&ghR;wrov}Xh6k+j&d z?5^c0-=)O5Gzsr)GCwC2?f=@ABQ{;Cf#&XMxhVOJ@4HsZQ$IAw5^ji?<>!K~RGvq) znXc6>l_MRN%fSp*l*`b$uR-(%jVwv|+*VeZ$MY;4(JC25wov+flJI#IUgI=!2cpI_ zA^YP09C1y4&e%jd(z2sFkTzx)6{K-W-N=HBE&6t=fFx|6^4cr5FsazJy2U59Tpg=j zv{EbsifI8FrTe6gE$$Sl6Xft_LcOdH|Nd?G|AMu5&9$>=60U8oEnNa@<{FXqkCG%` z+g#(nv$f3+YeYc{%**lxm1k=oO%y<&>PK^JO7sWW+UAwlZet+%uaX0_w`~O}loW=X!X?b4R{=%i}KcFY6cKR{yQ^a;2Fe=y!PU-h1Wu7u_<1NBDlaT{)6wJjQI*EHa->Q zbYJmF?rc0DCGk^H5yysgipfZJ{Qj6Wfk5DCE86kNsb`Xz+>7whV7FkR}UZ1-}2BJPrBN9`u)E7@K$d z<#ihPexQuFC-$ZoG2M1@Z)SbIlK0sY8x2;Kr}9h-xz+dm79xKS-i9hhc=h~=Gg!bgA-{*v(|4#vw?+=~`i?5hDaeI|^JKYw1K>w8thUWZ_X5%ouAE$qx^WW~Y zRr^o7)pQ>D|KIWaFP6aF&U#XB>8XzU8242{jc`-8cYMFS!}qYaD-?a>`){g?{zoiY z9DrD~yW{&^UUbjhH7|F3KidJ(A{0(gBo5dkN;-~vyFfd5c}@}gd0*%{J^K4sJL=0l zzkjhK0LPaU_;9u(0WV7Z?E61Ukfo>MFwuAV=kcBnZr|N01BTueN1%e{VuJSYkS&@k zNNL}H_Zf!qjyIR=_*rtO{L9Ou|Nt!U-ovy7~a{OKc;wWO62>iXlV zISG_G8T$SZ8kzLfg@}#Nbp|Y(g4#X5pYK#m(7P*bBlNH$^~-If;%1>weQ#%3!{R@K z_vIt3lKwy7W&INW@1|Yy|8~9hqy69SPX9mu2GoB~r2fC``2H`H0wFCfb}1(#gnjb{ z0y#iN5_bqx0%$_lUi{(FJwq2Tk>@6VuH{asd?v6Ebs z1BfGq*(AGK*H87}xZEkui_0AlJg;`DM?fi5-&-((f~N)A03*oh2pFw6RVxEncy}gL zMj87l0K~eKqwgOI9VuuH!^6eS%7~B-x%mzU76B6a`9SH403+mb0*(No6(XEW>kt<0 zKtV|hQB1)vJ0ZP(HHuK$d5Vs3V#OpJ@;2fw2l|-20%0&Qbqg>abVG8NouQFJJ*b7iC@m8weBLqjG(LSSB8h zspt!zL2~?;vem>gIIN$c_gJQoIDyI(>wJI7w5VJV3YL`R83HCos%D@VQK6?`4R7pd z6(S30g(T$`3I+y{G1irvs?bwN6A|w&8Mn%p@o^vX#kX^xk>g^)()7&GtQ28Fg&{7( z6!3NwRsH8G8VYhhfGzfQ2S}k%QuOsk&5I?)rqAuKK7Rq#Qc-@N z&tE}I6|5jUT|Y!QMCilM^|Fb`d!Z@ccdUsR~F46ya<@X6c-gmj=%}vO`v$$!qiqN5^M1^;1m!(%tTI^AA0a*q_)OB zOmdvy`{pkL-~VOs$e4bU{V)3|viw?KeHFZf|8rWds{e00&By)! zJMRDLb+D8a!1k}Gzj(91;;i1_kTD?xe=y-!iUVY^xK#%5Qs+Cqf6jhru7#hbePj~@ zR7}lL4fP7){eqJ8I|>fYclU`PF)Q{-eWJAkgDYJb#^MD~=1N}%W$-?^uNZi`+tfK4 zXAKy`RTxGoSF!~|jEs}=wWzBa@oXLV=R2RDsF#C^wuGWoxnLIc9M^q!*K7}bzm1l3 zW2y%`@Q+WiGg}A#i?L`aMM0wam8hQ!z(irVb>P40iPx40r|-XtcOFUq?@s@}_9}QW z{cpG0CI4Tq<2}ZI`@_-y&%YV<7YulPzc0%Ch3c}nAV%R&cWF!s4cBV!X#tV@<-YGH zg#vUUl2y_0PjeaFzYuMW_({bIQ#(RdxF;4adX7a!%U>0)QdEXIuzAsgL)N`Le=pUZ zg8j6=sKdYXegBsN75@=YG2QX~=>k+pW>-J%`2LUj>wF4_bw7O~sHoMWIf3KgMUUSk z`d^;Ft-<7paJIeh{YyOSax$O{&#@f;9db21nZ);8pMJFiGCV=!6S!5dcU7a+SN{GJ zD1=&xFFS(K^DDnK@OF@$VCSRw@oKQKqna4YCcn_&f5bAy%}b#pdR3UF7i>e(7~>+) z0yY+PD$HX0J-_BWBB$svyMX0)E&J-lPqEfmA7VDaT=xbH1GSJvM2g_{oL&f^s- zbBenXb|?Hyy<_PEtOH~VNSy-BXmw1NneN8$XEd-VUMgLcZIeG!9;LDn*hbH&qDZ`U zEZV!=!JBuTp+Nza--(v{i}g!J;wvB%EB4jP&B~ipC@w84jZHolN_T`iVNIJJ87!ja zsK654MykblQSXW(34vD*vRDYb;znPns0^|oFN)Qta=Qn1c9%N{Zt_G$wgSCiL3KBa zmwn&Aq?mZ3t*W&DW8e3GBo)R__=WVl0&~nAM8G0B6|j!IqrImWPpJZ30AjLRSoxDy z3$FT^&@XaQ5`Tw&MHPW&^M5K}T!ZZVpFitZ*Q zw}ZZT!>=sug>#97m_Jr{FZ?VUMiqExm(xw|$irz=al653m@2qj>d}eT0T%NiqYw4r;M%sTl0L+_s_w0r2l!3x9~)ZcF8w`ZFj-S56+?9 zj(lN$D0Hys6P{Yo(1?#49l?BclAC>59L9p$Q&dA+p-j9}o+#-U?Cod|lY*CAu&n*Q zXm~CUe7wgV4_-*;11yd&WFA!$9qK$*v@Q3C`lS`CNnT;_*%j_(6jlYj$(TL`evI{H z7e2uhZ&Xh43;8r7r#n-qNPG>wVuQ!G%X+*79S=E%zTbcHU#E>&ApallK7AN3pe6cW zjs3URbROe>{ZZt9whrzg{6p0{T=28qIwS=9ddK!!mC@8VNXypr55JN_KoPsk}l z_(4_0Dcjzml)6h@il0)KVxmeeRL0(pM%6n+Ev|S6E}RXtX-Zk%eBKpx7F>kDLH#Is z=WZSN&n})|e_lX;4*dRsB$OylFop5jvBc`ak@H!&z@`V_R^LBxA9byd`d?-9K8P34 zlK2m9Isap;-EjOVySD|pTKV{U8V{7?tWd%7GiHx@ z6utrv{gPET*J=WLJyK6@(M+1gBA{x@0zb;7sjOr~roAtm?L}#PR|LN}E==K3A}zWo z&Kvt~Qzf2=d+sOH7c`OLVI1I!Qx*+Z5}<(kc_1lC$_meMUsX3LC$xfEofpun;$i@W zV7ew0y}-236%e94`AkyTpcBiJLg-%1P7H-1^9UbwNnm%1@#>82xyfT+5CJK-@v2Y} zpaflr=6b~mL&VjtAaN@$ys}{)Z=U%M{Z~qF4}AX9oC?$FJdTDzo}?Rn;m5s&!DaCu zT59|!yVLGG+W-8X=f5)RD;fX-3$SDj-9Z|xH2jvYO(CAcV!2Sm6znlqQ}I+q`gVX+ zyKtG)83Gryx(MxrooYYde_D8nmmKU4{#9z1`No!7RXnIPr;dP4cCoNm(eU|B{-o5j zYz1ZZ{Ws&CQXzUyzJlK9LuRyhJY0MG3s1ef(Es}igG=mxn&tTaotEQ0(*HjO{r~*U zsK4)53u?09v*-1z!~H1I*XNZDa0VCpctgtZQ}~|v{wt~@l<0XOS5cb&Lb|9ZqU9-q zj@0ZNxa9pAzIduJMgisHkUQ|>7bak|cUhrV|9P^t^$v&zMo9zl<{iJle994hE;!K8 zxPpo^u5#H|60&|q|NDaZFO;bTLW}Cf>8i*luMmu6tRfBIOP`$vd<2xLCw&@GgNAq?6ZZ>RO#MPF zp4h1WBSu(I&KzY&6*CU^>uFyNF~Cl-Ok5nvP7!fQaW^i)Q)=cIOaY{Wk{Ws?pei2- zJEj<;axa$s9-6Q#_;r4Zzi$j*WcU#tT~`b5i!U9FG2F05r?kf9eVo*X+^-$Rf0MhAeJ5k`fpe4#=OAFEMYm5gDE0^F?Sgdc z=$~w1iOgX zZ)xJvl1seOqz}pnd6=$BQ=$-iz6HiRx-$xi)R|U=#wmWfBdA_4(J)J9)R^5^rLhL3 z$(7bA)R3~Mzc5tr)-Sjyap+IvZ6#8$Xom-2QNjiTI$l@q0~m9O+0zo(Vu$RmveIQ@ z`%?PpJ@M79Dx95eC=3YD)ii^}kc%n!C}*+&%Y;_;DBczv;Eh z{-5pkqyNwEDgUcee^(WNei7YY{1;{J0TWO03=81PF$?^LRyiUsQk-)bp+g9_B*qm3 zPKAXGITfCG<^ixtq%JsnD8z|=m3|RSOYsCKSQ&2M_y?n`tM31=F$7r_|G_Tl|Jp74 zQUCWx+5exv!R~+LH~v8Pzj2laah^R`3V>z#zdG%b{g>BzJpX^c{Vy+pRf9k)t7qw9 zA94WFKrO#LD4xPuAKf?w6R)BGwd@5Wm#O5mTNFVKL2wPk7>gnds_PeEJQ5w<{tweM zNgtF7EV2J=I!?*{zukVc|NJxUe~|>J3uq}JKz^A<4&lM$6phU*=Gm-zU@6KL;asNIASMH;%Bohig zMNJ>mIz7?q_g)p=*(H3-9(;Z6qEIhNi!!2*h*awHZv#nOe?_UMg;^w6Xb`EiII6@o z^TyA1#$p~T`Pkfgi2wS2Hn@1qqWM36{_Df`eKjkvjQ=m?|8km-{(pbE^M7IJ$9std z)R0HEFreq`{O|YVGa@6Ss6v)3xtlqAdS$9A-x(Ph zkMAR|Vy014?jKub}r@xw!B-) z435~nP`~wV(K<53z3fV}Na)>ewP|6Mcj?tvwCpmJiFnzx%=R46+ykTw&|xuLdTO<= zIC`~lu^$8%lEALK&kn(|?}KFHMHB=twmTHui_xMipBS%JJqj|{>1kY2%7b+ z@1E>GcT@%Q?tdQtQ@K{Ht^GgWmHu~M)*qq{SZHH$Cv(xAXWj))8-pOV3R#56tB@A- zR0Fdf<^DHIJB#$*SwM33zr^|>`@gdG|32pa&sztDz<`#PvO*|m4!%$1;QN@A%6XUr z08qwAz#93)+&f0m*QNMNJ>)dRCMTcue9{OG%a6`%RDAyrA1eO4w&kDyWswuU-v3W= z{|}$k?sw6>a`3W_G*^w3 z(Ek5Q7f??8XL-BA@IS5dKc3$HA3o&ncTRl|C6joChmB&Go=11b^jrz3GY5O~aGbEt zEr*y%dT%0;jO}2BfxH3Lg@~MaBvqGcvMQuv^DdBzNhQjJ(@dt33+AEJCw!q&)I?;? zGN40;5l6O-phHc8Kg}T7Q=co84(O|c#nBI0KvA2e-b4A}-rdwmqaVkVWyQ%SABDEx)|aQ* zTGqz)KbrmjVjvK`rjv0xUd%VU^ZDC!o-XVkKX>Ojk)e6~rC$j&CPiyy^81a-s zF3EpxkN1OMd%RCD;nq^(;r4&Nbue%Lm#g0X-(K^7Jc0fH&CmXvo!<V#SEG3o4F+sHaMn9v;#~&z(fd6(p_NH$+BI ze#tflo#3Vn<&tvQ*hs&muS_}6xNbCq-7kE}uKFE`x0POf}G z#gJbC6ysFTPu%oSwt{kz3ZNLLg3b8hd*HaL*$QSwDu80#Ifz|O18FnbCX_d~5ru;X z3Kd{Gku?zV6LK*ml36l##E3r!J{%-LFd(cPvj+0J6PXV^!!#KpBpoV-rO(kOK)=Ys z&3xc?WRLHN;{PB41PvNMfaeVQ za6wKbqlD&{vz7GY0+rx`oJwZjs1lM5&sMToWVmoaP9@U^6=(;7Gg)%qE=!K*s+I9I zvE?dcxng+0I-jz^Y>om;T+60{)iUcG!0QrJDNfnXs&=n%wYW6D;^CjSw|UY>xRAJN#5NTL zhT5jydNFbGBf^@^H=D9p+vqt8haoW?0}=Kv4{%rra(-aBf06hKeJ^~HW7^|L!ptr7 z5)T)?tCFsGSAR11q?ZD?DY4y(RTE%^vz-~pz?yhz|H5}jGq1m!ztR{ko|DiqGKs7bdDOs~Jrd3tQ@6|j8^(pT za604Mh~Vg4E8s1yr^9Mhbo|?y!VV#?+ZxI-I!(BR1Z$EUBSbj2z?2Eq!rZZhfEneC zLprNMcp^%dFA{zQ>~4~G8X4M}7Cx%*RN@r8j42%Pqq-dj!FKEp)@H(vYJp=zm~2DZ zX*rCfg_1+O93hs`0@uOi|FO=-buiVRG5%w5Gfg*>ML(UT7w7M0o$Kn6Q*vY0!rUhj43IJ|C{Ik+pg@cAw~>-**3>Pr7IG z&6C0P;$oKGB_uEp|F7cnKh$b#{qOPizcbhOwBgArT7d>a>Ol%w)T(l2O#LR+l8Yn= zF2LkiZBTBw7jJ^-?8v^b_lB}Ww1PoY{*tiJzO4++YN|J~j$d;7n-v&R2=0{egX zSi7Hu@W9<`CklccM-Grz!6ZIOf?(oE1U@iGApC5<34-l6SU6+?hJyXf+SDlPv;t|c zcQaum{GA%qIbWB9k8WkaT<+Ya6T}CcJip+9V2igC^QE@e}G=TXc=Q(so`^Z4p2$A@P5% zZOe~-{>vCnc{3Y~d+GIk5kTkhzgBBr{O|7C{`-jMKg|BB0l;YSEI;ETP5Vkx;iUWo zVIlD~o6?`_`fly9`w5vq0isCa@gm0{WCCVZMSNqfzne=V0L3CUS;<@tPzG_Z>lif? z@0k6zi~NaR0muIVYG||<)1E`o&_WI_%Q*V3F@v7`_=O}Ev0WbG(m^?c(o^eI^-J$3 z^m2C=VX(C17MCukmy`~X#D3{}xb5=eLF53&UVi1s=(#3wD8zEEpC)~8E*`c&F1{OG z&-QFbnk-S@;AL=U+fvr2^B?>Czt>a0u>G&P>*4=z*Vg=x-^ckcPX2=DJ)Ge9ZX!jG z;_boQjPd}{@7Yrahy3QT0+f^0Dx@S(nOL3z=@FU%hXo)?dbOdZJv9-!RR6yx0@ytK zk8Otkb$8AG_}Ke@_;A{PD?lo_M9D`11}1iO5Q{BDXcXUrVq{Hw`(DZ)QR@;L)DZ;x z!#LZzXx;{)vw!QoPBgd#XDaR+ZA?CLbi|LMk7FFKNrH5ZVh>E#kV(E@ycMfS80P#R z-tXyOfd9+8|8MW?toh%+gZ*Fh^vBRWE?>{xRDu0r^bn`}pYVR;pZ`-$(y}=iFVfjb zr<*=3|3{^=0FO5q}dQ5e{GQ}bjNQi~tPCJ_yW3^x&!+mS)3U-SS1R*Z-J z5Q!#>t6u{R{y=4JA%Gi=XhSj+aUTc^j1TcPiV>{Aaqxqd%i+d$6a?EUoZGYQI;-^3^B8C{@@OoZ z*r^zmC`Ki4FG^Ve-H{KLZlu@Lvtf4kWmuQ_PEDQfv>ap#Q&qTBB+gvAsh3jd3dAo} z(~q5qH4J-S6O$6b*Y4C0#u@=Z0?cFocI1QzDJb+dR+1a`8aM>PY27aRyb#$m^dnQ z|9epWx2?*y&;PhpUHgBY!u}sVo!j44Si>Qnfw?`Qw7c>1q5=~F)c&(rx_{Bo%N|2^CS^7Q{L@BFV;x7YEXkGKEv)USH})8(_m z;ZJO&5Y8D$v>`5P595<0HEcDIWSPn`Koon&jB$c45&qLfm}8&)?nPPt{{MO{An*LI z`TP%+t@Zi;`1^nOpu2yq20XR>f3X;h>;>-r;y`ooe=6m&AOBTb^S?gc{&$u@(F=gP zc$Odgi9PnCR{#Yp(#>ovhk(zqc0utE&M-KOWUR+LM080@%!&@a{CT*SP`9qhH@QS8 z@kkG8S_*AY2oQ{Kzr)4kIMo=053Rcqw5rx8R0aVN&MJj$rIob3vO|h2ku^~Nlv*)&VGYNQ@h#~s3`^lkhkf! z2PY>A7s=cemCWrr#$M7xmqez(NI*)X8ylm8Hf$zZy=BXCA}3712xgHIu_F4}voOxVK1Pj#1=C8?m`)^#0p;^5Z4TvA!fsVtyL{^t^5nmmzZY(<`K zGK|fiY8@QfD&D9X9NWeidh-%>1_DZoC}iI;-D)5U&=e(K1$w&d4Zsh={I4H_iYfm}9WHt_r*mPd;aJTw~yNh_x8BI>fKY#Ad8Gyjt_z$Z8Z`aB@Yx~dR>His%`hZ;E z`KxN#m7*^16f*1Qd<|0Y|2*>k_v{9F`@cr>|F?H*<@NplN$vmP)7||BE;OY`CyHA} zg3FxI7|*qoc!>Sa`;7AP|93t7&)v%IdjCI_{r{+E|MSKCItNKWD$x2iZIWPaLu6=j zQeJvAX$aXv2;+j2^2Fq@b+zsA76TW6wr>7vG=o;p1w%M+ zvh}Qsr``;jx0J+H{5TEC-K!o2r{Rew_U?KAvp$2o{NF7P|9iJAFag&4|7q<1;gj9{ z%fiPTV{jEx3crLj8!jW{Y!PRB929$uE&euM21h_%uEwlA&Z9CHMrLq(vk<#U6#t&s*< zi!Aw^_c1|8#7WEQeNgxy3y~|seiFL0=8j2R_Sg}>TVhbHd6s0hk`AccBq&IGE}{?Y z$9`tg6h1z3YZ=I<@9{m8lD}=8H7)5DA@vZikvA;Kbx5FT+!DvO#OOCsSY+~kCn4Cq znnCmqncV^LSujBMDD;hEnm@6YzL>%*!*W#)pG5eZyskta>@fb8Nf9XXln*XLnutp_ zBs72{m;y3g#KQ`Cvjm8d$%Q5cQZe0S`|s$L8eT0+nl8P4OEVRYt z4^#X{`Ld)(F%kmN?x?^_?D`h>t?qvcyI=l&x0t{@`%lH=f7;q!+kYQX|AV={SNaE4 z>7whBrX6GSB0q`M)QlblrB8M@JxUp9x1!^yA z0JuwKWYP#Zh%3Z41bdEUuR#$UMikx~u3qq$EaX^Tad;ni6dS}X8HAQoJp_`K(a%x? ze2r9Wd1pCQcL(@b1s>Hql0oIziz~xTlGvdw5s{SBAaSwwel&jn&)F5|ur9@7o>PZj zNNqPB>i#=@59k}!>_QJWtwk9IdmZRrmD?@#~Ryltigta5WJAKn%l^lE}F){ z(%$^;5`yov|5v;PtepS1T`q60@BdF}{|_H!_dCV_qS5O#1Y-=?#I6v#kApp_Iw-$s zm+(1hgLc;i6ENoL9ecueM>ekh_m<_-8-*KJaS&X^;vd&Igt_ZhmH7aoRh;nATFitD z;}Xn^n;|ti6DR}XkLKvBT0wLhZJY{?My8zf6B?$@<(NPpeBVt4hp;=w{m*P!nQoL8 zc%WpsuS)LMh{W6S#49EU%=a3Bi? z2fhv zwsw8|*V;P%?-BREJN0)3fkMTsVCC6TRI_lJ;$SZU1c0vsnb*TE=Fu9(tAR}$TC$G{ zlEr8tqX>omIJwllEZUJ1+Ezf`M=f@=f}ux4VEM^(ayc}@!NBi_G`rUnd5dG0c^(Zz z!Zx-;6}?nfXJ{ryWH^vc4oPf4-h%AQ1KC>Bh&RhnZ%p;m7?tD<@hr@47_AbT_-v=Zncq z{Bqo#Ow-=0Nw+gPRzKZU4ao8Tlxw?w{KwYX|MPhJKV#}w6$DFG(sFHJKhOcWmijlT zgai*oF(z~PlBZ!1zd?sO#IorC;%G0V6z~RoA*eTl{o4?M2oUmaf*RrB6*tEb!Bb^F zh6p+vxL0om2P2FU!_`MXZ72>*=EnqU*?i(OmixrKSPOlOnf5fKF@a2l;%jHTW%7Cy zH2Z5}=I>4Z-%$>(EB zSc*BIg|CGh?I3zDB-D!#|XaU?PCd6K7T`WAJrPSFbO-7Uyu3wNye>0X$xz zg3XA<1|k#zT!C%?zYabH*r7zUQ;X%<~(5u;kU{+U{DL&U=X*#z7wA)6P*fSd7*+1-oLHg?v+N1bm1 z+mY-)GVdH(5c!Nu6;U~zbQZ{(xK1cwJ*Z_Zo27wCod}i@fo)PLB;H3bX52?;AFR_i zo{at{gLmiMtIgx+<3W0J$8_J7?f;c6-~YGf|9wpT&zt@gl)sEcv|Q)A3C)$iqgg?& zc~DjJ+m~3gHo;3K3UDjb;sqWVVWb}IMR)irxz-4WaE5t$(cx^#JA|*e85~q29HoFn zwKfMFZH5Me@8iBKxZVz0CkBV39o&Td&`>iSy|Fjz%N1_cMfU&jLHWO{)m`8JU)@^Y z|DMYJA3pf*cf5a=4%A}zi0uy8Ik!m`cc^716R;o}J1jaeJS_Wgi9)oR^&mLB4H2%8 zaV0KrG_~A&O{x965$AP)oD3{Ds?GD&am!GSL5wcra`d*1-qCVaY>!t?@(Ep+wOkF# z^74BwuQ5kRD0vDWAh0=Cj+vSv8Ib;k5S?ABT(~y(Y!ThzyJoPR^sPpHo8X&js&4oe zlN8iq96@HP*z@keZ5uSM@E$-Z)+|9y2`+W76}Exa4p#_ukn^Cc9mJ#%a+I{>EeGDQ z`2uiB(eIFU6YO3vR8utGy#6-j?T+h^x!}HI+voHF)8?(%&sEDwoO0lxhU*=qk^1at z<2dJI*fk8b+MPc}WKR+r*k75IkVHiyIpQqNO2iH$ROlcQRQLr5Z#(RFw^5O0##9AN zS#fp=0NTt{58Ig^Cjc<3hV(8iM**xQj>V(T4;N`9Or|e2E3sXAF|C=P(l|A5@@qM> zW>~g%I+oN-`n*EB_Pi8 zADaF<-u`q6E8P4@4y}7jOKziVD7Z-!1QUBjY>sf^C-B^A5ZEGFCi8Ht-4j|=qX<*D z9XaW@ix9Pn>iY1FB_MEA(#WBdHUvY*LZ-AuB|4JAaz$rQ4Rtk%F!zpWQi|bf$vZ~E zpN5)xd#MR7)UH7PrJv+Mw8=eEE?Xzi#Ypv*I6;$lK8$QLI1Brp4;9U0y&0Sfy@7~m z{6;%Cjc-FJv8(Uk^=5GVSt7{ni_G(^gD=f$&>%Xua^Ef^1r;hQLPec9>A5{8BJlr>f@0X01kTDTn z00$8~$C{YjCM@3oCTC}w6P2+MQa49&o9MqBTV$RE(#=jJtOq3dVH&$Ge~ca&7#esB zjw)XOc!WTDIOGdEp~N_pFOb$;>MAr@yL`p%f2W2cakRVQ{ZyZThtg%@u|Po_rt5Xa z6!w`nCSpNr$@B8AWrKZ0{?_pVCl=lXA#9s{kqK0@v?WT5$;xD*9$=7AVnoFILncGdY6$inV%vLJL8-qp=3}kxKumMR$ zXadP5QZ!F$)t<%rSzss22n39qOl&Q9^S7mZu-Gdy80Q_0hz8b4@pv3^@HjNIhoky} zl}UnL=(gyHZ9!r4WylYPGmU*{HTB8h2%1Sap6JI<3P~|(e}qZ@=QuehP{Me)r8HW6(oBxjb3BmU9k`b`;c5C zZJ)Cdaf!7gFB(LNF_BN22|#{>m_AS|#WFP3aqg@*04QM&*{H=HQqr3@beqz=G! zkc^qGf-G$L(w7(=$XVa&2t3j4w=}wqm<2gg;E@c0)wV!l(j*IvU|=FcY0J{MaT6k1 zc^TpxbX`yc&OE0WK26<7JXuCLlHXBKFM6$Y8aIsnh`%JxX>c3bt7$w$^(vn_uqE&|)DLu(@9fkMyJ`=N9)}Kr7vF0oxpJyzQ%d9VpkB%v- zsvql%x!%j98JyCi6!*bISGA4KuQfE|3aDHD9E^>ss|4fVH;+uB+6&ZNM-EDAYIjR`8xh4Djzus zd4-rvfNIcFR~O_b++#PrgPxCdMRCkY6+h~E7G~>P{@Z&Yt5P`cj6?2bC)WHY_NKxh!%ilHzz&}I-FpkX1RP%lt_4)Mv_TtLu$gKBNgUC6s~!hb{`AiOhhPZvY* z#BFN-I$w!U@g*d}iYPiFoY%*+1q@(hE z+bXjB+>YkDti4r_fWdKj%tBVC5$U1Qt;(L=Ds%Jrp#-&WOBZQ+tFg$|d5MfZaOF(m>

FmzbSAZP<%_JwL=Y@-uRFK*BC`xaf8P%5D;D*{I@-0C=@Pxk3xExZj^0p| zUAq~?jKE2N1R?G}KFE$Fxf~XLFkk%DKIxlbmuuLw84yO3HiYP9mz4+Hvuy_ z4VNJ8GY8$NS0;&$cfF>zm}!HA!m9JaiT-Hnqr%Z0jHD&KN0fm+Fi&<+5u4Y>El!d+ z24v_-_UrZ~g(59%S#OxD*l#)325rzMHCW|6W<`GH1&k}E9uirH}#zkJ9peQ*g!3m1;Bl{DHk_vbm!;%EcxRS+^hJWn4 z))fCz`rgbFjp-s(PR1no8eCkErJT?-T~Ifd)0Z$OJar}@wZu`Xjn2T(pipg>Y8cQf zD6vhnU2dwi>dB=8w~a!PVVeODAvQN;85yvFpXfU{7Cq|y@iG=&|9|i7=fU`7axYO| zh4cTmt2@;HU#V=Z`Triz|L?4W+yDUS`Zr(XhI^&-@Bi9f0-MUmILHPz%oErvb99G=lw5nd(zo#GTWS| zvq5JxxJ~at7s%cJRiFQ3XPy85i2L7}{8fRU=mJ_U6b=Ky-?$$%_r=bCDV6@y5E%+w z1Ybq>m;~MGdi#Hy{Xcx*{EzLOT`&H(x>H`~e>{c#KYZZb9|Rk_aS-fEc()qQ?8cG6 zRU;-~))*Ou$MY<JC57pQ#Nfa8Pc3m9ctUptCgyJ zZv?;G)OW&G=OodN!@JbSP^4(8T#`X-TC(7K?)VT-Xauj*oRcNZS*=ohj;b``JB&c~ z6F@9*o{Ukpa=qoc6EhiY4y?8j$&4GWJ2?1Mp*G)j7@tm`2+QE*ou(+8n2@W|S;)OR zk0Dp7+8Nv)ZMv$e)6U-782e|_|5mdJ<@$fOJpHdyUh}^`75#7cXxg7;0$2-|N8JAx zgU#;bd^#DY|8p z28yhwWpbe|1%nI@o9?eA!;{$mOBI5={qLXuJ3HmI{pX47|KZcx{U(SkrJ(8ZpD)Jy zLGWTsIZoD6;^FpxzA-ol|F2ft@%H~#ZGHYf{{H{wXaDoX{5ppi66_WLlF%Vg8}%SK zUf>ixozmY7T%b1J$T18l-x7y)y%{18Br(cJbDnf0qWUdLolTV4DiDD@*N&?(0Jl@q>FcyF!=%p z9&3nc(p4yYwuiNlP1JFbg#;X+!~Y2*jFB5{m+Q^o<8ADdV;)RH0ya^Pg7icU3j{f1 zpbw0~)s!d$Fz?R#8jF_>0t6Qc1>)t3Q?#tJWT!F1XW~7`|6F6xa`|7|u6Xyq%5G(? z|2+ZuKYUWspAtiowA;kT1(2aaVC()8Qn{b_I8B;pl5;x}Ic&Xn9zY>+L*T$6k%&wZ zeJR3UMB{m`L=xTA7I2_kmpufBtA)4_FKjXAVfg}QlWHM+G#1IIuLhyz#oTv^;syxv zDwg8pBL|Evj~@Bexl87;KjLxuU`Ws@3PgyGWHyYK1mMHPU_w4#k{qTWAUJdoIL$C- zq)HcsO9Yo5>4Cu|4$TBX6H<;8=$&(%oT^l_I2(o?Ad3-}K9{OVXrwv#ar!Z7X)8#2 zXg!*|>JK^iCO*&N<XXny~Mo`K8im`-XMnpmM zo5BD{Py%$*jc6lFU#UtQy(-sLHz7Pb^O&1#FY{O=NG1sTO?Z;zN5 zsmlD9um!LErW@iTm`#xwiBw;h9~&Bx+=kg1tJ0VF(FW6z@kDvEItEdc+Oh*Ase7lP zTYwEXYr4^2Mv5HC9*USVopY`9Dbjp^M%=Zz--3rq%e3f&1%rKKL`?JndZ*BTNSS2% zh-~u#BP$UF=5&KWXbG}yognyNgHk`(_|vA(t}9S^7&3Ro2F>s7JBIWdir{23}?5l8s}p_FoRj{^hX!cq}bEF;+10A0%q=8kU}cZI`D zYWg9+4b!^l)y795lDr)gz1!Fh1!RR-mK6+DbS6;PJv406xT2h_RdA1_8am`f7K+l=?suC{-lo3l`H59+Q zV`SyNnQrH|PquURAhst?g0^q;2^FZ(sdp0C%|C?qD8*7BP|5th*pl*nrw=$Xu7b!E{X zkz5)u=e!po=FY1aYML10F)>3jPMps$A`Pc4$?WBQtQAH+Uo!ixJ$GOcF3Jj}99}mHOb>KLTi9A;F_7Fm@{u02_OM{D zaRWP-?ngLVjD+&z)p|gdU7-e^hQsVN4tpA^<;v18zrRjaSRs0)9+LVwlNaGt;MS*B zUz3VkniM`3G}p25oQLHoQ;T<@~SJYQ^LK-r3$>^S?gw z{vSS=^)CoEF5)1#h&9=0Mo<@Fc_j?24p7rQm=Kd%!{RkvmsuN%gU3qUZxC2W5QbPySN5}}bfE~X264Ymu!@b(d{Vml==oF$<_ zVjOps7tCR)(4qST5QX5fb6p@IUV$8At~10E-NyX#xT74TSK@=&>-bBqCStsPkJmGl z4xPzdotEi1%B^Q#Z&?%H$#7Mnzj(VWLF+HPed#ihuo>Re%4y6B&11*F-)d8Sz#TiL ztbP_z>nDfsMgZuzS8}G>kx{bdA>vMAml5LSB26R`&eY zqUA*Csk1gpIm$Wb_U#GpOH)JNT%^Ny>=NQs&FhjAb~-CAu(RYDM`yvX51Q%9WKM$y zb27!F)D+T-Kjerk%$$}A7LbIK4VJfm$W6U*CBaG=V2GDkK66y$J~ZX6xB0l~;gpR6 z6BWQjEtmgt*X~8%auJijL~bzyagD1DiDkWr=xDjo>CBp)MR#4Z+BD0pTK~YC@oU!6 zQQA7wjcf)uQ8PsREj@r#;vICR@B|h(QrbX73GeV~h#!O7k110onOyF>7Nl+fPYzcC zajCn6bJ1#(t8ahBCbyatI3+~Y25_pj6giKfyQc(D5F13)}M!2AT_iR~l zC+O=IH`Il9LbjNLrPySs%(yMWEfWTTIC14fqVBx~u4zr+Z(VKM5V=H@3g#vdecR2M znN8IKX4O0F#yjjhna2=6=6-`4_jzd7y5oYXVB$G*US_faxxhQKH|AIQdu_A24xO;F=rxWreqpx@iooAZH zlY2`i3^|!b3q18C&k+`ZkLD0*V-=xq;_gH68+UAG-9F@vKBh(|a%zF)iQH|uS70%^ zn;*yS$?n1V2s_@EASXDcM+sLSxqEW25X%|&3V}1RQ{2cVuw33O<|3@q)PPQvfLyaz zWNy6RJI7{~VTUDgiC=&RLxH*UX&;dk;aKOn^MM3hW-_UAl&Aj2*W&8?2`kBn|GQTL zz?}S#>W;_%Q`xSr@t?j6|L-c%f6)>!f8yQU#L<5^I871!s7zG-^80DBjNnIS4I24! zn@~n^2c2W)F{NOtYI2XmjQ5roC?TF-=?)8#T9m;wo&vf@oMXOtFO+3z0*$kaBt$uA zWJ%#5&qy_gBEC^ngM;tEg%0C@CkTFZxz(kvnrsXr3o*hLMf}D@k2mEqmqbeyZ)R?8 zOyC@!xmAF*K^VlonrUsuGx^d{M87?djusm$5Di1Y%+#=5ZLp#HFeISqpomh2YRSZ_ zHbH+=m^RC=^@qVhHKbDqT0e|8HwXU2_4Q-_-Y^c)@#vG*e?kW|0EmhFWev$M|9*@A z6fLTEjKS1a^a@>wWo2$EKClhpyC4o_6{VN`N;?MWgVqEW;Q;-W#AvJ7#VoAy?I75a zp~9*X8$;X@4im9J4XY_M+>FSnhgJYAr(6I`vU-_wPf_IDmy-)oA?MkKQDL7al4?vyz(y5b7NN^@)l(sqsv!*paztZ~b^(0iU@UZnX_QHgr%p%t zu`zTFU2M4MB{fmYfpM?at|>m-!0{>DU`Y;acO_|K1!)(=4T5ARmfFHbd@zBvAZ~|q zl{&UEFrei2Ij4l>-Pdo*f=&f%YT_bxloQ4IXn53KtG|Su@ilVa$a&t15Q>%Us>`QI z?VlK?)l`&QoBUh^4exKf2!r4S4&oPf^`^TZH`lP=caHy81inH>&+jP>G$;SFT&sBe z&s*i4_4)s(=l}dGxZlS2#-ak_F@@d${?7uv* z8=npr$b|OJ=5!-AeF8jA!qpshw|>Y0X1KQ{lS|cu%hQ&U&~-tYDRc`F@MEv7=TS9W z%jWMu{tv$a{?l${%g_I+R@eC7k1hX)4=DW|AOHv`@Qn8^C_pky{2VQe3mbsH8eD(+ zaFH(~4>xndF!5jdkhu!=iK1njC3LVz)9@cIW-!C2I*wS=9Cur5NoHVD0gN2sqp&!r z5skBW@4EQWQP7f*!6fVmyEwQ`psNsuMreUgmjo2Kd2cd&92v7Sro%apov;@YERZ|m z%X1l$xbS?iIUi_n-LSxDnKM2qIMyu~>rAiy(#tuYp6Dnm-8xn>ptOv@sJ$h_d2Ide z1XGQP4vf%!ki_kf>z&6#0)yxVqsllOyR?q9Wx{Dn7pI^|EM2C<+EC*L0f--ab_2-> zhYLJ&@U@Myc3zTgaig6yWVd&NJ`I`7BdvdRiPm)%(r6|?8g5Df;w)`U&-3|UX=GSUKy|1YOukUx4I=GemZcfD(sQWoD^<( z!+(eat$HtG(!^t84hF0iA$Jv22L@cehg|bHnuV-{CTYuU&|~Jklpq#`2}dnROJfiu zpHvy-WRoZOHQs3?u!;-ia}G5p4^UP?2DXcjF({Ke&@!1AmMz?VLZt)8E#)VzIe9My zEa{GYc_*|&U7E2kJ&Q6dWr$4V5_0_HZYStO76VJEiSqZF!cBqdhGUaU4&c%W;6I>Y znMmbhmK;NG?P#+>j>okT;a>0m;^ww_*%=LbokjX)mY$@ublgq9)()J<|GHbH_y67M z_WJ(+c=!LTB~UaVFmoNPU=$!QelG5wKs9E}w)hMn7h;XCHweq|T4=1i|G&--nCJi5 z@%%r#+q-N3&(qrf!-wAeNswXuA-noQxj|x@yFls2WRyhH@_2zZ&4vAA9!_!{Ae2hW zaxShh7b@s}TKgrR`ie%GJvElRblQ$NTxDgvrP!4jM?7c zm;uw4X(KacaxHDYANk*z&(p#% ztYRu}{|_HL{%3n@d&iIe*qo)izL0_#7LgHyHYN%{Xb7={|_I3_Xj~1Pk?1?3KE2T zz@SPb)dWEVSScbbsbAtC_!4U%`L@9k?bcgCAgv5?8$&`;OJr$TY)=XNk7deBHj+SL z)vJ^+62QcSGFlU_A0}kY)`CJkLBDyZZx#qRp{N!G_y#yIz80jD8}iRC>I@%^8JP=> zB;CTGJ~(DV3=4rv0C}7M(m-M|^eMxG38K5S>T=Sc@c9t0=|tA=g7?x7do70nW*pu4?Ly1ASBUOyJh^pd9B7~kKa>jW3n5dmH~^bS~9DbTnx=RUVB znSQu@yB-iZ>AEf)WXP2U3#U-INwq<zDC8yG+{GofljH~M!$tO! zl`I-8HWWEd#G9jt#bx3}x-)L@w-dPP7XLXLJ606Zv*w_eS#Z2>82sB;Hs^0m2 zOMj#Qo2m<_En6LRHIef(JNEQ2Twe_o!nXljDs5Huy->+Q?7BFGZi&ro$`yR z#)x^3zzJr2GK$eV9Q6Z9g2*UlFQ%M-@Hi6ZzY0#5J%EJxQRL4s%ZBWD3dfix7~@Gw zFgGt-P8lARIYDAfhtzB+)MM$F#7{tVJitvQ;BOMXEn-cX<~LbuQsrNg0GBc;GG>&G z^HAfS`9W(6M6&OxLXl?GOKKr9YzWojm_=?Q>r?*6PS8&ck!5=%hO!w%O_KCcZw5z; zP*$-oUwCf<_s+s8{{1CGGJUM)7Gm_)xmK2nYpN7%@0F?R)RGI>l~->D%|8Cow!2xOd!ybA+C%&!+|MVmNGIzj z#=UzJev%EUH-oFNhQG0C-e1CzygxU54Atf=q))5`aKG$5v%7P@;yts8;>pmf%~}A& z{vgk6*P7R%kR>mlxGH@Q`d_XOV5$DMU6HyT(f_u}YyaO9)BlD~L;K721ArjYn;rxm zRttjQ@H$zBE{z!#0vTzZ$w`b%Lz*C!YmTR*BK%hInSrtAaIxJQl78&lVVwj*1BeRn z*7)%t+zUMr02MJ}4v_X{NSzs=RW3XCUkFR(C>+W`I;M5EBr@-o>W$BLQx4HrS^2p2 zR`64ED9*Q!;^=M#(Shjad%v!uO6a`RcJmYUTQ?%q^ou%Jy@y{Kw@T8VVH>m2Yj13e z&SQ;gy%W00$b-nWj5;)j28GzT0@^{c2qm1}mNeXyBPS--sa{<+gf^ygHj!oxH2}m0 zvMV_^Ab1zM$;8`xZiX{?8)K+w`yqkzhIjE^67N=(0Shm4?RpbG_rWxIOf8)x4TB^H zdl;SsOdN>32hxxyU;wT_QNN!XZch8ljhi?KZepFy@9W?Zy;Q*^N6xY6Uq7OVnjBjo z3`dBvD#kGP#egEC zC@4tx=BS}PNK0Rl*e`-lT))O~ zLTlVXZVIUJJ-{4Te^Q)LVwXu8@Re`{=pl=L95%@a7SnODPU>-9AK!+khYZtl4pG#s9w@)S3ruHx^Rk=O^|g6)-&1oolt`EXq$lemkHN)9Jt;Q24lo!CvsGQqU>_4Sykk}W`(+O z8p&?Rp%8!n&e|!nNI&Wm75d=5sS9FS_zK1j`M~7A8?+EH6~Duuv5g;0-qMM*PRnYz zaT5tOQ2y)It{eHUnED}!R_0Wl+(sLNI0y#n<6&&HK=H3~v@waLm1Lq6E%zCei?0~A zCzX)0M#`bQl1|smiJF8KH_HK*a(to5WoRsX6UD1R6f$kEa+k5wWPD`UiVZho-bBbm z4)KzXr4l>xgH`2Xt#^uFFTJJ#_7+{Dp}aqlH{C0VJd;9#t>lWHmuM-o!6M|4*$gS` z4ar|Ql@m6PB&Ut|$09;G5fdqK@|S{9CzE#?OhLsBgoI5+{yGYMa5C%(@6m7+()KKZ z7D^kQi8mzILd>2yWJkf(gXq_?+Yk&Ky@imCST9ebUCZXuOHf&l0oB5w^eR3S5ey}p zJPzH;YLl#u$raHqe{Y7l8?tT|t-yu?sNJD%a8khuvl+jc-EkRG?SseS;L%>LVoi}yB7(L*>W8jqJ_V+0>(jy8;5KvJ(UhJ zg3IIKCgVs>ucka!aZs7@YcxqrnYO_&ja5-$`kkZ_(miGfIHnwUzTHRa18{bAFd~AXQ9Y|Cr=+fmrKGX$CQ2~e<+&sul;I+UB zsY>gb?u5HZI1!2q6rpIN5d+$Cq4hK|jY{^V2Z&wCmBWDtJv_26HpSOlp=O8kqa2%@ zlB_Wm$>t#h@bWkbDbYK(vdtE#gw`r$#z++Mnw?3c4TpwWtWZUh(4{75IDDqWk7u&qTTh?XVebME59WxD~#@{;15xx2MkGff-{tS^u) zqTDQ#;?vMq`-vQFTLffw&c5b~$`Nq4TzDX*{gCD0-9B0noZZTT_yIygvI;b{dq&0t zVuOCkZW---p%U~o!!?m;6*AkJ2!CONKg!_9GI_Fb%0)C!p!|;A2zPKKVSU7nN$A)} zgh_iarheA=Ost90j9g{ za-I8l`m-?S*mS&1b14F5EciQJet`FbRP$!aO`A+I&B&L4?uU9jI##fdqSsk6m+lrj9T5Se0&8OlY5m z*uM;Xm&!KskVh5abR;iI|Msyp=~Amx)^P$lysMZwS8#A_wXKoJy5!_=JXFt*?Zwiz z>}8RLeFJL_+q6tdlPH+S>tv)yj{jWTOj8u8mt3afMci3*3S&d&;Qwxw%QXITdw09G zj{kfD@t^Kw-%|i+=7P!t2xd9Ma6F{te~q#ec?eSE5VOhXXZu1()tj!V8v^Q-Ih5q+ z5D2=&iN_F;;McO;m=pox0*tPs$S^gKr2F=0$ zl34FV{_kw9@!y}8{2xBD^tW;UYf<$S@_$~wd-tZO0+_S^Yvr1^|7&ahmnX6R?KD4R z?vJcw1!@?QNbF|QB)757*6k`5u;yjRX3ff5ILaR-k9FeWZ&m)Wxvd@x!^-|Anr56x zvl+?dNn|v<`)0iz9KF^tM)hXU*)u_$)GG$IbIu|d1s756E?9zJwf_q$06F*%8-@m-5b71jxl+MAwmLjh-3P(wiUSc3W%#0sb0@ZY zZL<{C#VnK{-^&}FP&XI}7J+ty46+hgnsH+awkpB8;T>Use#54!NgrZISlNYn(57Wc zQ?&UfLDF(#_p>=0HL?Rk#%PCr6Vq*akq{V352CsVfEqVo2$fPNAbrJ9I5u23gxmqp zCS}4TOHv&OzM$vTmSweo1jxk5F=-ATSRd+7p>%RF?hw~=nz*QA+7}<#D4y4ljB9Z> zqXru`%wVEr1QCf~)4Z*K9VQsC%%{Jre!xu8Ys; zH${w%r$51Q;8je{fX475`qH5^A~r zx3gRJ@Sn?D)wTWqDd>MN|Y)ae3 zWxGz;)Km!W`l9fz;!IP4MTMF!N9vLVx$zt3B?TRp@jXD4sMj1UFVg_ceaUAVzwo~U zU)Q-oSo19kr^0z;p;Vl^$$On%0#D4$D||4vFJ0|$g5|9-sj`YSA*Iu|6L3|TvoQaHlV!W5gq(vg# zAV5W6kKM)|_LiJl2ZPVT&25Jc%AV3#>&>8biGP-9$jzWN4KpIHF1lMmG%7jRS{5+be{e!uB_GJp z@Om@Yjb4HXjfP=%hl`FWMzGMw*NdqCh$Jv~(EnGagj}lsSIRZP_3G;XTf3Dt{@c^h z|A&vD{b%63MX!v`upcDGFy~$cBIhcwjc{EQKrq0Sh?i^eva5irsqa_f;`fH6&qa9~ zG7-1nXxSCOMIKHTOWT0KxdKr5IC31fT=!~0aPHj8O>()yEhM?cUDHaN2a8AQb9sB- z5BHJ%U&Di*hh=@QI+8dXt>8mVVLzRRC<}q)k&!zbXF1dWEv=wgX~@N*9RMC{%(hVF z&qAAUXmerRtkF@#CI%nk%!131qV{nCvf@}YvgLNW$gwmGP3 zA#mDmx>K47-Zc|TCQ33A2qApln%1jX$%b;vS_)sO0LCzCu>q$ui8*Z-JmDOq0yfcW zKa30n=%{2n$LB#3*E}c;F0qZVtWYCCmb*gER-8TSq8D8>^eJ$$Sd2+8L!DY?477>& z2DAlsrJJfA(XoXW@g0gJPLNTHH_nnEI8&~WQL^zO4uTi4NSWvyG$qcJ_X;QluT1wg0Z2)U(7$?Lp_C;DCf^VbdGlU|?XeXPY%=R05k zFyS*Y%PwNgBbCBy5=kJ$uaoq?jAX^l2Fq08!?ILEil-B5tKHl^K6WsuY3O3b|pd+f$D9k*Z)`_(?vguu=+BxM(TWmDMIHb{@4C)FS9<}66 zh^Wwa0pgy!_bRR%J|sQReoSa)Zca4@MUJWHEoaW;Q2g@dHM1*a&mRZ)Vp=VR(UjBJ zk+@+bn#sv5KBSHgwHq#ztlgjhTKAImcKBx7fdg~otH^|Xv{fv!wgXCl-^{NFANCRu zEB+3)gbCyt=WPk<*Si5PsZ71UO^TltfcH4|HwRWt@M>kL0@RMt_w7y)z0K(bARFC! z_;T3GXBk-KSGp&fVCdYKA~4!CLFCeR0HU_JVQ;RE=aX=otws$fSbfp~a2%DYg0kez z7aY(e35;;z>SNQ-P7w5Me1%XN`Z(I6i2=Haxxfdu`~ zrsgiQt=;Wt&@6aj3NQ;_#X)ctOZJB0J_leyEtFU<1v4M9OAtgD7xZJrNjMDw1QPD_ zL|Mf^$8sJrVNc-09M}_$9_w7CCj{uE&j5cokPuiM)}cWs9rFN?Fgmiw zkYw+mB#z>ZtvCp_V$JR#HwU?>we3_<$gYi_q9FK5*;lo+MbY^i=W!66D-&cb0ZX#{ z0UziP`7pDGYxJ5R8NJN zlj`2KXOYE^{lH=zlJoMth5{urKx-xxy+EVe8Qd6fh&0&EkLMJ&KiRwlTD>Wa(9m9k zOE|)~ghvu|E|FHJk6Mx?(`>|E)F#m8xd13@eZwgzBpwM^wiG;EIi^`45Ebcpp4!08 zxK@U`C2(v{ITQ7nwUi-r^So+F5Svr&Uc`tFV-?G z9VN-`U73#EV9~Y>5lwAiXlf%tRo1JD{p{Lc&r^9+^~2mPAO%qyVl>bOuy&5$kjr2a zS~yJgr@hO)R@{aYX?l@{D{*Igjs5hl-2egcukZE+@AjswRj%l#1+M6)>=pfVr7L=e z+|ca>MIG+GY}*aQxs3kQS=*^W-^FoV}KAUtm-H;fwnCe@JOTFG{s+@&2cR%)}q1=*SvtJC?`+Z6G7}p4FBUa zcEm^Y39VmZc(UY<4i5#v(YjKc3n(ii34-lJ#!1dxz!%4EDPAzK)%iki7Cod-<)_FC zV|sX@R}X^GNmp@=ay<0!H-aFT>I~+)WRVrf|GF5^)SdUul|UeJ@t?i?uX1gT|NM0F zzw~t969^c)oK`@7CUO@}43U^5qp*+AlO3_EPfzR{)zeVp1PoM|pacq#H;5+SMiXga z{`#1izkgg89CNoJ$rPzKgS1D{pT~dJcDYk;6Jp zC{#!y6({E1{b|FcFa;>O+i>GXDAhNRCM?elxLIm5Q!{8*CBkG&DCRAnsc-+1&wJtA zY)$EYf~&4^tpCO)9=d*1p3Y2VQ@P4!KcNtBa7Tp$55h1MEh5R=gck{;n_E@vvefF2 zG5!q<{g-Ril#LXDUv6ap?oP(OZs8&XP9A6#)3GRe^bU@tLn1RsO< zN0h}FcNpbc);|V^i7xt=u>YelJiQ%-+iRm;n?)DUkg=;7AU56 zq>uU$$-1sb!Tus#%jG|s{2$(v{kO7H_T|4k6V~$o$;kiVqe}k_EHKCQrhvc@CMX30 zBgiZWAxKyQhD*?|Tr{d=8atJ_z?Y)hYUB{p$QKCem?Gy^p3eYK^+`akM&EDFD3$Z#whz>on! z@Z13cP)tlBs!X+ySyT~t(K%AfIBAd=b4&@_A&vs(9P&&=vgeRr_O`(r^)N3u&<4U^ z;HM*0Vzy7tsHi?wy*_d9PB^QT1|&oOxG!-UkIlQf>z7F-rl}`>{?0I5btDNaw9n=~ zO)_tnh-cVUdldEwxr%~k#)Wd=)TOqLTIZIsZK4OwK|rQxQmoY9S}s(_k_jhq5B{?C z)kl67IVd!Dx5U|xd z)DK1O|GO2B|3Mf9*81O5(EniG3o3w|>gScW!eyU`d2}kstA51drs7mUjDW|$v`)hD zzBU(}sRHCPr#peO>ImzDtho3DP7w(Vr>MiDpw<$wUuV&bGg z;|=Nu;_GH`8ulA1t*I^p7=AOr`OOmq&!|yJld`rCz!MF>mCX1jE%HQBa+#>^_U{Ih zYbW}kr%C)H?uUS?J`Z)GrABKfwgu6J6M9&nX%{H@v4i}cf!A(xz;?trWa$GO?nvF* z=5NMP&<@T;^K|meJp3IV98W{YVr^Z9?i1bixl2ANk!_=(ef$#O7f}Gm_VT>Cf$p*=O z5ei}zdvD)df~Sqsfhn-~Qj3BOw|zM1?dTPRgo$gG#oiXuu5FVG;jh%j*4z7pxb-;S zSy)}0Hc0wa4YNlJhXEji2!=)`HWPD)$FI1hG>7rVRx=2;ni9~wi3}+AI5?^RZ1_Z+ zps%hIYvb5<F zzlZ@BM|dj)*1LUIRPVNoL@9v5?cz;j0I70O^_h6f9t1T5VUQ50U5ZOUhM_5AhTObe z@$p+~n#e4nWwA7}%^YrYksn>sB7%e~!!-9gWJymA^6O`cY3^0#!Y;%rK{++pWJ|Cy zi0#WEgu3-gRJv&kNT?)4!}9fugK8B}gHy>U;VOZY8*S1nR0o$c)3iu*%DjQMH^NAl zIBwET6c+*qz7V$qm0z=DKl`-AmN6} zUt(*3^)TwV{fmO!2pA1alw+mVCh&-&9TO3jg^I)(r?dZ~Uul(N7R`nrD6>(1a56wM z!JLkl8?vhVQcPd6JJuT@G!1YJfRXlq;%~LVLSCpXq*Hi*+7>ogIa{Qe=C8nQ;i6Cr zIqUc^`RcYrS*lQIt)kNVuWFkgx>GU2r7c;Z!5^BHmVv#?0ae zlxmGIp%AxpJ2k$9(r$Am2FJ`s(~xFzg6P8JCuYEKL~l~|qz>bFA{qe}J(zAm2_Kv= z3Ulhol8={Ovm;HI9niVjitHR8x+x=8m_&s(uwq?xw<^CqT<%303JV$<$Td#MQxxF^ zT86Vl_^Rfx3W!dKLRFtCiTZs5)kYqlV!P?J(RY{CSOPXDm8F! z(6~aoH31#eBt&Dd!{~P>pve5Xu+g>}XTg2^*~ZnM_|yo=??^Im;sHP>7I;Q*k}S$B zjou*P;9Pj2g?g&d5P3oXd~_K?0A2p{26Pyp4)q3OYgyMC1o(4n8`dQYo#|$^CedTk}GOtzrE^Snce9i%3NsxEpQv< zD8h+6Lr87-IwQnu(beT<{Yz*;Hy;H%ja~Lib4`I6mMf0@M$RXWnx_qVxwjrkK^aNR z<+z}q{g9~CvL9h?o`y|mC!T1R+aY8f)kN&8%u3iK-1UfH6}mU(BeWHdfx}KFi0Ul? zWpWn?!f8sCLz2eB*<&^%D&XNBcCXeD#Zy8?9%>*+m)t9y5x~WvO>$5m;Zh7?R%#Nn z?~6DAmJr!ex}YUCF!DJGc=EIMYYA&sapc)e$mzvR_kMX1(j%iKnIC0aIp7Y&Bq-~Z zhH?#qM7Z9vtTK8D@}G0U4)$kT9?u3jv*YA2WnE4(O$=J8;Y-8oHM3-c#?X&3+OM%7 zl2$QUT0##ZmJ5ZKEPq7cBbQ!juEd_zS^IM}Y&K~J$Z3B#%^YjbucY7b3Lv*N(veGDg!23t zHW5+;&j4asJEH>K;DRb)QE8xRj(ka)PsL;;MN~mAY)@j(G=O%M9wV8Oq=jvujtvfv zMn|q7b(#@2FY;Q)3tcn7O*YkmYsJa<~#5af8QP5h9v8f%fpCvQLRh&7)F0oKn6E?l;RnbuZ zQBhzNT;!63no@|mu+qpcrS8G@ETTX|3G%m<>Rifx1b(^(ab=4$6bjKluT(L$s%KR_ zY-BHP5Tr$GTe>;h78bOv5tf_c zuisR-Zhv7o-$dElb)_ z+@@nuqc}@W6I>EB?&2@I!^shDP%mX==BVf2ZI zs?bf(zd80BncA}sO}L9?Jb$6HrrYwqItpY zzBZ01KFO)XCxIC-EQ&s{Xv<=7K9F$s0c*g6YCjX^4tA=(VF)rKYUl%1L{XX zB7bh8U^rdrS$G?w51W(|C2`Mk{nh(1jUlefXzV}4Ve<9zKR+jYx%}TPm&;WCSE{u& z{@c@%|HCIC{c&=5a|XAA*Cqk6`KcZRzr{juI&xop)mGRSQt%HFZCKWl|EE|B;XtGg ze=8^I$~E3QX11spg^@aUOV0=}h4I+?(?6){XwomK#&QkY2CK zGXz&3S&Z=DNxexY^d3R6maL%VHFm3gCH`ca8MDpA_sU2{R`2(#q^b z7|}`i1nKu>NHZ_RuOA9FhtMGiCCdm863DgOfjd!V1THz2SdmE7miTbNBe@Zki;Gzz zsu`J>i83XSx|xN29U@-u%*lW)mbnNGoL}ZjB3yKy+f)l{IZXyHABI2%r+iUHTX+4v z!c2I!{MSfyTuIT9nG@=xFu=fRn~N-B5ie^pwJ1(PIA+9qkpj`MrM*#Inn>Y-Bpf#z zu4$Gd{-kPsT_w4}#svxQr;b#@rANVupMKzEg?Q;B$s)X)NT2|xSPuYee3wE*hmp%)xE@NLv{$R3-{JGZO8lTlYCWREH*r>nd+tp367{}+qFX!9!l zd`FzmyWRh{Dm#?_vs|fcukF8&cmFp_pvaA1T=ea_S$=uH2m_gUbQ;neMUbNec>>2M zoW%dV&uRmy8Q7Q+i?(V$M)4(BfHeoI0#Pdt4Y5>GqWHj zAdq)al4*h;C%5#mCLSVeZ%vo%%}^JArbKT|hUcxx(7ZJ{mbWHH@)p_Ksc7yehet#9 z1c9=MHw-YmNi~^ZdshHxBT|k#Cqhd!pdZm3C~_n~x**&a$R(bO9#H@nB)WwZ4KoN= zxMD@m5}jR}fjXb;>C>;R?@wbdF4(|^9A@LbsHkod&*QO0h--{KU!#`@BSqFPyC{3t zwjg+bVS!B=(QSfarc7S;EA^MySg)*&A@MJs$qBVZIG3SM%OFe~NNF>|CoX;;w!sik zxu)Q>+Bi*u;53mdD#>n2OEiVV`H|vU5IN&mfRA%5z$z1zVL8>N*E|AHlxn@_Fk8k! z@|$Ypfn}_K*2{Nxr1ds)gm#pf5rz?2&x8w{Lixc;-cjHH@^6vlc?e&LF*OBpnW9lRk)t+5v+cL^=Ir7RO>t4;TqR7bf=qsjvqx77>L%eQAtcOFXpz&Z7)x>` zVl6*}C3(gh#5p?|B0pYEINbu4TQYEr_s!bFj1LU_je%7Q))%cmV*H1qY)d~^-lktJ z()nU#>(KK1-%hRU@xPSIJGJ%w@A2Y4$YkFu_a7?zPLY0~!NBE)r0}}je#vzM9fb^- z6afm5Cq3plbN!mCG6K|0;4W<&>rEejTSb{f?imyW$w;Gn>-%5ySx8&_F-qQ%K-M^I zy5$DfJ1}wmkdhw~WB!5EK8!K{rKminm181=NU9gyTPTiO#xjQY)kNxOa=t!cId@wK zKbEPFMEsd2pQ$ks&i6Z1LXh5^$7B969MA_qG?zIoUoqe~0h6n~CBsy6dO$$D{350y zdoi*~Tu8VTkt>i?*tTIR{(}>0#E}nFADbZ8k{SK03OI`Rs}Z;AYPnJ-p8u71NV1{x2!V|eQYDk zaA-Q|LSTTSQEYIyWV|zS0pl{>Dto=~-`NY7EGTFPOy2>xr8B1nVMS_+1~N4`NzWO? z8sD4)xaDWdAV7)M0qlhrFgd~z*eADu4r^;lJ;*S zz1K#Cr*r?GPbcGfx~c(S`TpPDsd@XqT-jdde?0d7N0WX3B0v|uf(3xw5Anq(05(-( zELd(B*u=Mdg51a7@%rn!hitxS$Y=8-EBW$Jpb`0Ih2mK;~_%iJAPIClTBt z17V5R!7~t~3YsdoAOUPqH#n&#$|Q~(9Q9VdjzVQVQ@E3sUPM#8mkYA%{lNED?yh+N zYTDf|boXE7k}DY<=txF@uB1AnW=8Tpuwt*#ltpqfSM5TP@0VPC3Vpxi7K3(eWG`WV z487z|=l_ZqfV}um5$i?H|E=Bi`Ts=D|KVeu{y5h&HMyQrbUJ6(KqbD*^S>p2*uq?@ z^0^m0clu6W@r#JVW|>4qR_8@7kl=6C=$ zLljUbn;Zp)Cu@nhmj8Oo4(~DkW4q?#f0WBxYyI!($p7J^Nq;A4fCS(FBv6ksqW{4I zDPP6hK|zp=ar8e1?#84H=H(g&`p}3X0s^EJG+IK?w+JzNy%p?VdWZ$!|0C(d>U4r| zR1;bG8%@y#a$bokfMkwRu?G-B==oYi66W*aA!)jf#r|6o_;vhJSb18^aOw-xCq_Mn8i+(zom3p1&bY5CayiW&X@kZ%nG8#>;2IJGx zRp(~@%MU-4pO^k_-#tF>%oh5K|M{`MSWM@?Y;K;VH}mIR{m%35iJxhrL>Rdz4UVPFQO{is&lD_lujnI(%*w|Z#Eh9pp@yT zbMyRkGC3WoTIY+&EZr0x-0Y=`&R{hEuR-tE$?Wv`VlwX!{$rM&q_bH%`}JaR{=Z5! z`u{4is_B1Uz4=S2GwzlCJ~%ptDnwz=JJYGIp);Ls%76W=>KgRQ+qD;!7nPlA^}nWz zU(4kewHGh;cDDYbyZF@>{2%9wUtj2fh|~GmVlw@u^nNZUr!$5Lnv`xP7ix-1pKnU@ zZf86eGtnuv-j=$PUaE>vy4kW4^r*>#7X8`e;Ez^d zuXoxV49DmF@yYnCH|}(L|J5J;nvV5^gtN}2SFfoH*MDEt=FZgTn^Jc)=$?tm5hH1S zzZxw1XxJuGfuQ$X?9_iRHOKQsXEYL@;7u&Xy`Of^N}bEjVAT0MN=sVV7n`qCD*fXh z|CsmF(MbGVD*b!urZXF>zr|mr!T4lS`ft-^tD@15CVelTB-r|0U=@$|fOIY_T^ zzEhR|@Wb|V)A-V;vqC<{kItt0HD%@U#az5CTQix7n$*Hj4c!zCP@C|4+L@((7uDiY z6Oh~8$;G1AS)@frfBEZZ9lW24_k;i`*pLf7AnZ!}`Day%-=GUsPwp&)o%x_!dOz=+ zrgHR}Gvp`qt_jgD4_k1!-OZx4(TeVlwGoge`#+}js3UkA=jndy$&HvcC z{(t`&UYwkyv*#zX$@!1Zq-Z%$=VCUWZIqr}EKXiL`^)piu{Npn{uFp0~KMJY(m(s6)E9qgH zr;A8ERgdasWV}LpgE=ZEoy{gQQc!H)`0=0eRR5(UUwbb8-Y^4Te$@Xo)4JHpD;kE3-yZz2!j7paOZuaQtpttNR*@eO^|ET{Y&L>o$jg>9D7szrVv$N8oKbV(h z>2xC7-yKcHX=$*~FU%(AvMaO6WKrr3X0q&m=)+$g69345vzK1}A%oe3y z+8qhiP@V3}mcTEiAEi8fGn&;Q)nTA%;l^!#s*7q2hQKc_Q%1l#|UXR%xegK;mtc8*~2bIDmB zrC+tVMGN4UllkH}oeNX*Gihci4SK&ojq0bldZF3-#a3JzyGWBe{KcMxgZfr zdn=Xhm9n3jRz{QY$>8+sN<03V(zN}w)05I#+pbEb(%;Wu9RA1rQTo5q_+m6tU;T?| ziquc${X|$PS8j&1ZMr|HR^eZSDe7bTxj&hl{ZjfonT*oTxcVEry&1b zw}tT_eDzf@kN`3~S=Ns1TBn3xuK3FW$8T{HD zFVfjbr<-mVuTn5Oy*L-15I95B$zcrin*;L=dx`6gI`esnUxil3T_q_DiO?6U?MT`NyabJjt zh^w)#5&T#99ce%`-Oxijn7fOh^lND`yYMDLw&_?7_HjB=eoOZq;o3abv+=Kt!zf$m z{RvK`CG!6`KDZw%V2=H7Yun@h*x9bG?f>6a{=b@>PTmPk9z=I%K2H~O6CW{}oKA@0 zE|^Xatw4KY#TIi!6g?2sU4kw{E$vFbmfmz`B2?i&QO&|I@z=lpQ2ML?-47-CJC<_Z zJEeh$Xtd9Tlk{pJ!jT4N>F7pyY-j2DEGsy&bZf^_5Q8&f2Dux4rbj^D*s%h*9-f{$HAg6 zR=fS-)!?-6KUTkzx~~Sk#sA;ll|HqtZ29l=SEw>m4^!p%dN()=LyVI!frPOknK!8v zw=K18z1WhUB(qE&|NGSGO})voftY)5#D@f=?$e8UIm_>yGj+a@f5S1ch?9|&=p>@q zuBZ^ zc=}A&BwTlFE&a$8!>q@BA&UL7@*g>xWw!RWp7h7PnSs^!f1_42?*C4$THyb;d;c?S zOqu_3d?YIZxf#xG{LA12WCA%7AiMX|#g<9M2 z2hHNpnG(<=iRT)_QBbbG8m+`vE$?lfg8{3OP+v2#7effHaC`Vif&oV_($QM5AxJ0*FAj1Qx3o^2`J{N zgi*AJ#Fhq`+-qx)vaiTbVzLyFSPVu_xPl3SA59-0Ko+Q*_t) zo1~NmU9vbem=;6Y_CrH^s6ZbCjVnreul|XO0pVHtEE_!U23Pk8IwGGO#cZ z6KorVsMU2!mt7%CoW3TVWm@aJj`wCEz@9}f%T9#GYFOm7f#shsxx&>Kl&NaI|-48JssEeg*5Vd zh1x{p3<|#SufhNEtDah|?q~7cg#W9yYI^*iTDw*)^#4!7|4E7(h1X*@z2M#)WqIgl zExR0;>5vvB`g%z$Wh|d~<-Brsr1OZtb;#cr0UU7T@0e(LsX`aTWAcy*&wlWo*<0D& zroE*8MHkKlJ}Tyu28kIIo;%*}m9}Yk6i`@;IF@hbJff^UJ|mPo~!W?YC&*R+xvjOfriU zrE_xp@q^wg@b^wPY$c2)+1>eadHU(i@k#&ksNX-c5u1b+cl7+4x*Q9l&$6&@%2xSP zo&e_lC%$2idJ5#^|EjechW(%Dgo^#Yh5KJz=zaL^z0kukyS;_59W7iLgOplngDW)i zz2ji9OuEkVM!j0CzA%eLm~NbpVe%GyU0KoEilP^Ra9L-i>z2|Je6B1Z8H%n>mwSGSf+a1@{!E7B0?Ftz_oEoc3{%NR#|V#NrW_Aj>#&@!2Zk^g@% zU(K3zkjo(EbAQUv1Z8q5^%3W(`Dm0{k3p&VNb?Pc(4)|)KN6k&N261FBsvdWjdw3{jm&=m9{HEi z|JnUN9xMvv#s6>A4f}7sRpkGAI{BXo?H9xT;PT_)X&y!*S|bGIvVtc!~T#HIpncbvg#k6on3zJ4~EB|K8iYv1;e#GD~_3;DF0g^ zYLDOrkhA|gbp!w3Zr2L`ukGspGf?-bIUr+MY={I|%O8N62FPOM?dW)r`=LLw9BNlB z{1Oed7kBMF+U+v$5H1qSDsU-4n<070zp?Y&;eAL#b_}dVgrj>8 zt!2XzXw9q`sg-9AL<(Fm&ED!M+vS4WBs~Kp2!{^KzT4nPDS*I*{HG;taKrf`48W1> zH#d$4IL3+i<+&T@NQOE5U#)5Q|2IiYfa3iB`9G@Yb?Mwi-G2l+SN zhW~G~VZ{G|kPyZF|8)9a#qcf6*cuFkK_6JmfrGBoPo}iOVKjMpPC@m3@Q}gF`C#Fa zcOv=#@f*;<5f3NDQ4tTIqysS?)F}?ZcmRk;k3dX8{5*i36%+Ir%Rxd7J%F5sE4nA8JFe(7!8=yW&U(#=z$!+sRdCP4sTnAs zhmus`LJy^8!4*B?m>B@+!JS;jNjR6!g&uiAO0G?b+VCY1ASjzxvghv&SqH^QPwXw&Mv%53ysVmPWJqhq>55cSa z4t@UJnJ?o6!eO9*Tx=7FxH7^rm&9Gw$=(1+JYWwuu zOhWrxCEn#V_6gdy>x>|AKq5z|q$z;tlOQAp;dERwkqL^=BHzWw!58dvN=k`2x_OK7 z8IIneIIF-}+kLN59{@MZHyX?YPHpF zRuA2Ay|-U)G-~y?_0fJ7sEd$1{~t=st=CWuA>`s_742cX?|F^AdI#Ya+G{mybyRJ2 zS}oVDR-4WCJ|3fS!yS9xUfpf&qjsmdvXSBOyN~@N)>e1C*Fm+>UaQ(fd$o?cSFP^V zTlMPRe$#F3?IX9d-$3I=b>AE9xA&{wUTq(Z+x^n` z__%wx>S5%KFdkQ3G{z$|!qr;6(QLIld;7H!sy1A&-X2x=M)hWUTyKm!&9RF|b+_7X zRO_|fG^TY1y zv@FV|FLyP9BoEQJGYQ}%8HVXakcKAQRt(~LE%X1-2a)E4s(G1+uq#CavRzayUSl%1>$CG^mJpXM6jU1B*$ zpgHkYZB}J@)uxqqxy>u3tzFQVZ@C+9{K;{USbHJA%I$<)*xCoVfZBzWXII-7&v(j< zUtY0tMB!4foJ-*pr6Blnn*%)Q-z==dmS5!#TP|!Jwp>8N%%RzAgxv2`c?J1CnfoD= z7$EXcOu!oF>XF>k~ zAF4+0r`Rx~lzN;!(8YisXbCLOwX22xcPl@XOPPn>5)ALa<4;jMeH%s)84LIwk|FK{ zPY}uE%E9SBn1&Svw=C9Us%y0oxV&mSsCIMB+M>!u;?D$fB}S0p{{Jw|eOD6INo5q= zQc(t49uhkhG#2@D6y2VaXxy@Oic~C|{DS3{ZmU(^8nYnNRL@#gF$}z&9tDCN2jfs5pfK2oJa80! zpkygJMGN7$$Ur4s8*x2NPS+TzWF_iN!P2hHEn*3Jw3lDM+1wu~uE3g4Nld8p@a1=W z8;*^Ufo5pMH%ghHl?j}F$a#$NlNfE7SO}Kz%MYRl83QS?c$FVW8YbF@uX?GkAHIFt zm2%wCxWgL}=fQwk7-F*lA;<4_on-3Ax;jm%!qo)eM5oXB*Bu!7&Ns`>mAKawB?3=p z5YrblCg9`GAslG2_=x7(X3{H=Oc?$g;(uNYPF^@;bmhB%C6D2X^c;T-IH(17{jrZd zi8N%pxQJ%fe1@cvC_=Xoubl0+*trdtk>jDo!eO|oSR&VBrT9iCt6$ZvB}wFumZaBw zW1?jeYTp$mXSf`X{hI@(AC!|TLWT6XTE6T2UcLE`A9Or-zstLieL>+G{mKOCoKMLN zim=ZRc#+0_7NDFrw_NTjJHO`!X#8D#10cDGLT^d5VilV8ORoRi!&ezJq;xH?9~~TA z`B4~t?NczjCC_k( z$nRN{QTpAr{z@z2PP_`j1Uo}$hdXz|nJ->@ICdkSbc_b}r=28)U>(kU8meD-h{~iY z&KHQ*jU0l?B}>PN$=ZQ$1*>}IW3TM^3H*%~3z1C-Rs`fVgD7Mq>^Hu_?lQq|NQiXE z#0kX22eGye$+>CJa;MgIMz;xugxKu6RGed)+D7YC5GL00Wl~rnPf{rPlOT*R4O|{U zil5|`kcN!|^dO~MnRnApf@gELwwuO_M~g-5gc0B=ROp%X!4JCfwug=UH)nv|F!BuJ zfj!)@mV563fe6;n&dRL!&(zSG_>V_p``4BKo2LIqqf_{QY?=ShPT{$po4rOTBJostDoB(uC+E0ZNlXrgB@U?lIJdW-$Z?EiYIpPwE7x7w&0@xPj# zRuTVWyZis*Ldy8$Mz@P3)HL2{VyIW7v}Nn7;s1T_z(@?kHutgRl_`l^H*S$O{HN`I zqUv8fR@(1%@joQjhj#zB>xKS*+xEZg{NHP3`ra(nx4>nLapFz~XFWzZ%`~OAR0aoB zNlPFx0w}n(^6YPD5+imTCE=ngo-w@;gHa#Ai{pU0&81PesJ>1%1@=M76H{rzR^!gr z3%!`33DZ-Rr|GZXMB#OeqXSJb5#!`=u>h6fLDwk>WtC8$51XcCu{MY7v#t=l)+O{>uP+euUlR$VanqqWx)) z1(g^7rDgbkwHxgM|Fe~!$BqA#u^Ng);uqQfc9|g;|6}-nwc3ULZ#zE>>@0u8vnX7o zfp!x=nQ3;v(K1QG;2hs1>hmyoL*DdezWbeP<0u?C%lNFeoRuxuL(%us(9@Fvhhbtm z*t0~vC`phzP2*NEeSD0Aqy)wYVqP{ztrREeTXhP&XMxJ@XKL~-`{NIF8m{gCNq)bd zP9SIh*BfU3_hzTi|7}S1May_$FpVZO2Ncg`U+wwo`%;w@itBVk%rjwhhbV&8@(z$kw|U3nnbnYuwpxPog*sS{y#YDJrV>UC;m&*i2qz`HR`Qm|8MpF zAL7VIGl=l0$B~mo0U8__?8LE_`G>8QvIG-Ixd^_H)GDiNiCJbu>7WwpQ`pmV_<;d2 zh>6^;y95LYL1qhk8C84Cah#y}qU#)?#0Y564+unp`WgvciGS6lSYj5tpF$Wy^|49A{h{_dJ(&d9s%x?3kV8a(mx=Y052CA%$IOeXb&zscxjl?h#!dSU zmcHk7M(H>h`Icb5%U-nR7_#|0^`QH;JA@Z!ncWJ0B35&?Ul*b94t8~>sT{88FS$x;(xf=(TKjM|O9^Bsg)+7>oIIxfH+HXo8}`0@z_<4__iU{H zZJGCftzF>1pK$-npFazf!R`t56bP?_Gy3ZXd~3d1j%L1VyjfrzWxR@~D8k+lyAe*r z_WLAJk{$kg#B1dPzI`o<4yF3mqHM>$7DvIE+!?wDMPa+Yn%KmacYGY&kM#q-Jwtw^ zzJ&AY1HO%q#~(>v80%YYUf@V1PqVhXv4ib=M&|yfUVM+@1d`+bQ8)F!%|@%R|7@B6 zr(T;9udi!fQ%{lkd>KH{hfvQBKp03@djFeTcy+FLOGt~=?k0I2Cp3tr>9@T`3VC@5 zU1h+k?YWx~ii5KOS+F;;zaV$~4AY@0ezV4LJJ(#xwb!oEN2ADhaUQ(b;6&#`RiE-W zGg?`Yyi5*IWVANE#qJBuNjNv~i|Hqv?J;C{2q`Bh4!Co~d3Xk~H56y!jPqO$DZy=y zzr(lwojY@IcaUoYQ5;+s$MJYM6VVvfa5!l+>g|80Eb?W1?I-S(mm~A5SS$HxUrnC#+b##9UBf28Gn~mGanLDEpIV1&Fl9kVFs+>XT?%fN#qOwE z>xqxRb@TtxOq=%ugyqQp&8nIItJ5j=|90j7`zQP(a<;NQm;H%Wxt zQ>=b%`Vs^4SxW=+_;12eB_n8TDoA-bR|-d5=+)j4(=eG#{T3Uqr1kVX&8Rbcx)W_sTL?T7k?f5cqZy= z#^O6mx0OC$5b5_GbMzEFC#vpvO4L{Pm~0Z%cIDzHlsBIXgRppLUc}0ko2zUvF0x-* z2-(>Gdl(@1`v^ti7kkWy4fy|BQ;+`$EJ0!a-^$P9#(yx@L?Ph+<@bNSFpz`)Y1dn3 z{_g_+vt|DOEt8#l{8I}#U=d;DCe}!=YzZ6(aRRPRG;)NJe&ImpS%M`XVgOgiYoD@b z5T>2SRqx*{P~gd4Rd?CVa{?lI+Q8s$L35yCXs#w-d@q?APv2vIGS#?@1=0($bMUP{ zn+-_noE<-y;>b^E9P%q1gdS%BS=rvqU*wjxN6*NxBC_#s7&e2y2I!P#zyo(%m`MX~ zuuiNE@O0}_W2PXDo@xL1+*N+kZyRiRk_xx8zzgSZpxk?WQ=$~4?5zfys?}fm zL9$1@?#@FXz+jyh;_(_ZrhM?{VOp;=O>_DRjAr_J4Qg+ra86wTOQYqu%hHBHT4Hy$ z^e`k0AbCgFfwbGTBnmdD;{X)cWURDkDNYp4_Zl=t(x)e#B!8DieivT(oq9( ze60YPv`bTbBXz`@gLn0`SrhrLF|sL&t2cCF>AZ+9CrRcS(7l;g_Y6fb_P|od5%NM+PlM9F z*6E(FTBdLO37Z$aH+dT>f&^tHxO@}7i6NIZ#Ap^e2I+6kGmFxIV(9;4l-Imbq86f+qDqVFaGUL0@$X5c%4053QeU&wXxbK z@WoF?dDAh__Wrcjz{dLDdt48B@qZhJ{ijx~75*Pv`B}Z&{yVyeW+lT!Tjo|<>R2T| z2IHz^sV+Nye1;;}HBxLV#ygdrD;&k-2`{Y$g;+yWn&1Q+8{v02hWYQSnAX#9s=1}gU|iJ zWq&aEG`KwN4~K{E2;lodO5;oSJjE+jo(Y}bJDkwWE{va}d0m`|e}w~rvMf8~!I=9@ z@p8>@S$Ozz|n>?~>2z|Wd9D0(0viPM=$0mXp{7k(~*iuDdUr#QmIy=~!}6nA3k zrysL9g+#eCuy5T;KxIOPCA5`$!xGw#m$R8%oMhZ3xo1b1ny#WN>^Wfo1b`HE`+`TL zmpd`RAXRAgSu~>|Q$)U7d6Ff|Wp=QYACC@0&PPdWAGqxNfH0WLnRiU}cS9iQ+=-AX z=F3#Kr!ES@A+Lzzl6i|3@R29D|4IHop1LX(3ge#}|Ebw9?0>CJv$+4atN)QQ(yyx= zF%r3vki9&0xuju;E6({8GTFg7O_JHeIRvL~dQ~zTVOnYB^<-J3rL^jStkMvA6zf@& zwc3A`lSkSAkPt43xhKvnoP=A5|4?l-YX<+{Y8Lr_w#ok!7m1T_5;9kc9e}NPDDntI z$@L?5hRLr9zDdL{U;JbWmBfP+fKC~&>C+4}4P9(dtm~90W}Nq<>|9fX7Grk-7bKW* z+h*1mZoxi0hW;;&x-Mmc>5-_$>m3g{_Me7<|Ebs8)dK(XB=SE27V4ilGX#_rmq`iv zrlVm#JK%72|@M}0ik(u9&ZB>5UgZ`8Mu%pf8~%O$0yR76GkN3w;%Wk zkw9pvD-4} z?FCFI5gKV58f6%9MG5A?3Y5faOR8h~;C0TFrZLC=u(PF%oCOsr$+6P2hn^Ag%6d2z zSHMp?|HZ?H;{V&#M%BRoH`@jOw_W)!{j|i$N%9&lE}7Ix`S9%6@OquGuh?DVOOvaDDk*rHdsfToNvVWPJ%hmp zrD=(NXwk6ZBnoehn2jh-giASJ1g5LS0RQvY%L>LOPllk&26muD?IQP``s`YB?SSwb zMhr74BAdoRu;v~1O|-Y^$1x@rUU8ey#o)xK$o63V$J1(l{enkB$Ss-l;NyIAddoNo z=Z<)shSEb)hN#~R=JW?2TUi=LIqlh9cg5m0cv#gFPhfai9xiYiYJID#}H7DmY=M&)c=#Yj-A9{KY zEzW@v!uetEl4wb6bgX6Uk^TWkh=T;sGhj`_vlxR(Ef&mgv<%{Oj<2W0T*fItJmX~y z$6_!6hX6}}yGv1853HJ`gt$Xe8t+biNlZn%nFFHdzf(fagaq&d1KmGDFk?6)JPsqg zyJ9S?@;U>dMa@yr=e8lRHyQo!-(YtM@pa)#OP#T{4uxn4hXbRXPvYGROKid8zzyeq zFd;X;9;6q{L2m($b`iuF2c%5=DPU`jUwYX6F2BzSnLF0$9iANC67|4jXFwO!=@ z+Oqsl#8n!*ICTP$o~|XQXG`eB!emo2Xpy+S^xrft2mRsMr;o$F6pu)j0qsJzCHN2{ z_TLx%;dv%4hGUn8nnUTbclfc_Kj|M?Nai25>i&7^v-ZCFzxU_oXX_pSdHdgp|6i}y zTGe9zZ*~8x;qi3En;JFC<{G1`Okjaz*^N@Ud$sZ-Q#k_SrfGIERYqke8@v8NO0T1{ zmysf<9L7V8nI^`NN@OWU4T8u*pS}M2Z5^A1*ihR&5!TrMX&*^)>CGV_Ir{%v-O&G6 z8-@M%$@Kr3dh_&_&oc?BtOAF9o<}H%k*o?%DUwqrv*7wxhV_jMr#P90UO9vDk<1Mn za6cJF3Y*`e8D@1Q)-FA#&D?BuN-OgC~a*lkw3yO?qN>MvBX`iu)sZ)@ldt=X-NzH zNnkm=g_~~X!7edR^0E2ySq8;tJi#iwKMcI#ay0joM{YWcX4-gWtHcx8lb)n;eN5NJ z`!+wpiE+Wf_sFoMN|}ycip)N6_ld|K@^zS+w=;@3uN;L+TE%&#+>0+&QmSXN#Vq94&*?sb3?{|fh(5jY9lD%qt$d2c3^rc+}+=QE_bcim-vEPcr7 zDMYe;J8p+;ssS8z>*!oqIwm(>3+eO(1`alDZdAP4{5sTumeTCLFkZ(06l zA661(`KPvO`-tzxpnpF2`{nTSyUVk~^Y`Ewe%h+Q@b{c*Wxu`GY4zHbPNUXn@V}kC zO1;r(?K!o|ezVbOIs2@9qtfWKPHI*7v*y&{ug|SY>-~PE1@+%|p#EOteY>*PX;t@5 zI+eX@yU}o(l@@8IQ)$-fEkXyHX;&KL&pK4Ew;bLr_IIyQ>9pnd^-713YgFn`y$=HMcU~(I^x+8w; zH7fPC{H8``1-?lO{;xp?>#dWjvj_i^?@^_Fd0!_rTJIY$0Vmq{{`c97wIuC}V_DYb zkFuN%Sd?5%SS7KCZE~F&oLCiCrr|Z0=YvTq0j5{FO`bf^VoI}c&4gd2Wj^S@R%@;}vJ^A+d+R_#A) z=oL3qEoSX~uC)EZq!(4im90ulBbOUCT*VA&XNI zM1!&+0TEV?sQ?6EP&<}X#9*p`VsFtEUZE=xqAs9~;)KHia}Ofx1O(Xwjhde9J|81WCTKv!K0H9j%&5Z+YZWwdZxIJh`CB~6G`LV);AdY&% z(q!06F6~AZrb5BGokP*VSuF}FKe@sRCP$h)$P6_}*+X&oOIlxvY4t2xD9ep_r-ky& z0b;{lqnQYFlsXhi?G82!yYyDZv8za7KKA2a9BSSyLKUd7|C(}4YuMCjr8z}{CGn7OV(qq>ou?YFhDcdNtU{BFGyXol>i$9y3Q|@S%S22yTBG0x$sEF1G;5*dgBjQUQU_gJ^IG~LNrF$B=aZ|B`b2fo zRCGQ{fl}(rTDt7&lPB~*RzsoB+_9iHW`oC;w_0n;7qz#wmZRu0nn^yGnU0^2=DxX< zp*||ngDyd9gSR7pp6Rc7jYlzU*VP>&Gu^Nv@JG7BvF5&*<>I;8kMhWmSy{T(EbgM7 zD3a+hI>doTT+qPlR3X79p1y=gAf!Z~c9;8YmE=6S)&)n>uzg8)M(!P~-Vnt#{3p2o zN&LraJbK*pA9?uydZT0H|7f)e{O?wNvH~mufaWY*EEn{^y%?Ox$N@j_!s}JJ8fIaP zY4rvC+jVFaro&tvl94aK;>h@8@c#xBdehTk_5N?RTQw8^-zoAxY?uGvIR9g|d5A0+ zDGQ|H0Vv}LFQrxWb!Sc~xyehJcv&PRhEiSUl%{tj z4ant$Ga@gzlL3|6;dz1OG&IEAyjXm+!okpD0dXxQSgvBwxs!bkMeFX=pK3VwP|FVl-|<>mlk|T!Zn)z6{lNZ zjg6lHf6wecoWzGY{Y*l831fR-W1ocpQ`5YP1wdp)%S^Gon_dw* zn_7GcEOTz{p}h;3-yrnsLsk@`DEA(+JD`^+Sw@+A$GSJ{9h3mySzWPT8WxM2vU9VK zxP#Sa+=2P!$$6|m+KmHH`Yx7}>P3EJ7LD2diIUJ}{6BMQ+)x0>(f>DVb%XzJ75SgG z%>PRq^*Z4{G;u*}{rgJ=!WH2@Tt2O8W%HeXIhsEWX;OJ+@cl|g9n2FUX{P~seyZo? zxm%S=PHDB2ItHbwmH0CVmTc>{GGJ3)$>9GZ94}{y!v8Zd!pLp>;(^EhMqISnFF!t9 z05U}Kozz*~wV1z5Zu6%#xmr}@%^I`4&OOL0i{5R-?(*8whuWCsT$4r)ld~R`HTe|l zjBaqhN|)KMt7=@+|L24{YTw8ECl~)+wZ#8uwF>{A?cV Date: Wed, 26 Mar 2025 13:00:00 -0600 Subject: [PATCH 06/10] update release prod script (#1571) --- .github/workflows/release.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 429a22911d..76b780f1dc 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -9,6 +9,17 @@ on: default: "" jobs: + authorize: + name: Authorize + runs-on: ubuntu-latest + steps: + - name: ${{ github.actor }} permission check to update release version + uses: "lannonbr/repo-permission-check-action@2.0.2" + with: + permission: "write" + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + release: name: Release runs-on: ubuntu-latest From 726fe00d9804470385e786856ae523d1adfba513 Mon Sep 17 00:00:00 2001 From: Jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 26 Mar 2025 13:12:58 -0600 Subject: [PATCH 07/10] update version --- packages/wallet-sdk/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index bbe6c82d11..45b13ec8fd 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@coinbase/wallet-sdk", - "version": "4.3.1", + "version": "4.3.2", "description": "Coinbase Wallet JavaScript SDK", "keywords": [ "coinbase", From 61f6a8302320b9b6ab84332bd1404eb4c5dd2cd3 Mon Sep 17 00:00:00 2001 From: willnewman-cb <110487540+willnewman-cb@users.noreply.github.com> Date: Wed, 4 Jun 2025 10:21:11 -0700 Subject: [PATCH 08/10] WalletLink: Move heartbeat interval to a webworker (#1638) * Move heartbeat interval to a webworker * Add tests --- packages/wallet-sdk/package.json | 3 + .../relay/connection/HeartbeatWorker.test.ts | 234 ++++++++++++++++++ .../relay/connection/HeartbeatWorker.ts | 70 ++++++ .../connection/WalletLinkConnection.test.ts | 83 ++++++- .../relay/connection/WalletLinkConnection.ts | 63 ++++- yarn.lock | 23 ++ 6 files changed, 468 insertions(+), 8 deletions(-) create mode 100644 packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.test.ts create mode 100644 packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.ts diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index 45b13ec8fd..d28c1e77aa 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -48,6 +48,9 @@ "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unused-imports": "^3.0.0", + "@vitest/coverage-v8": "2.1.2", + "@vitest/web-worker": "3.2.1", + "fake-indexeddb": "^6.0.0", "glob": "^11.0.0", "jest-websocket-mock": "^2.4.0", "jsdom": "^25.0.1", diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.test.ts new file mode 100644 index 0000000000..0c800fcb6e --- /dev/null +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.test.ts @@ -0,0 +1,234 @@ +import '@vitest/web-worker'; +import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; + +describe('HeartbeatWorker', () => { + let worker: Worker; + + beforeEach(async () => { + // Create a new worker instance for each test + worker = new Worker(new URL('./HeartbeatWorker.ts', import.meta.url)); + }); + + afterEach(() => { + if (worker) { + worker.terminate(); + } + }); + + describe('Message Handling', () => { + it('should start heartbeat and send confirmation', async () => { + const messagePromise = new Promise((resolve) => { + worker.addEventListener('message', resolve, { once: true }); + }); + + worker.postMessage({ type: 'start' }); + + const event = await messagePromise; + expect(event.data).toEqual({ type: 'started' }); + }); + + it('should send heartbeat messages at regular intervals', async () => { + worker.postMessage({ type: 'start' }); + + await new Promise((resolve) => { + worker.addEventListener('message', (event) => { + if (event.data.type === 'started') { + resolve(); + } + }, { once: true }); + }); + + const heartbeats: MessageEvent[] = []; + const heartbeatPromise = new Promise((resolve) => { + let count = 0; + worker.addEventListener('message', (event) => { + if (event.data.type === 'heartbeat') { + heartbeats.push(event); + count++; + if (count >= 2) { + resolve(); + } + } + }); + }); + + // Wait for at least 2 heartbeat messages (this will take ~20 seconds in real time) + // For testing, we'll use a shorter timeout and verify the structure + await Promise.race([ + heartbeatPromise, + new Promise((_, reject) => setTimeout(() => reject(new Error('Timeout waiting for heartbeats')), 25000)) + ]); + + expect(heartbeats.length).toBeGreaterThanOrEqual(2); + heartbeats.forEach(event => { + expect(event.data).toEqual({ type: 'heartbeat' }); + }); + }, 30000); // 30 second timeout for this test + + it('should stop heartbeat and send confirmation', async () => { + worker.postMessage({ type: 'start' }); + + await new Promise((resolve) => { + worker.addEventListener('message', (event) => { + if (event.data.type === 'started') { + resolve(); + } + }, { once: true }); + }); + + const stopPromise = new Promise((resolve) => { + worker.addEventListener('message', (event) => { + if (event.data.type === 'stopped') { + resolve(event); + } + }, { once: true }); + }); + + worker.postMessage({ type: 'stop' }); + + const event = await stopPromise; + expect(event.data).toEqual({ type: 'stopped' }); + }); + + it('should handle unknown message types gracefully', async () => { + const consoleSpy = vi.spyOn(console, 'warn').mockImplementation(() => {}); + + worker.postMessage({ type: 'unknown' }); + + // Give the worker time to process the message + await new Promise(resolve => setTimeout(resolve, 100)); + + // Note: We can't directly verify console.warn was called in the worker context + // but we can verify the worker doesn't crash or send unexpected messages + + const messagePromise = new Promise((resolve) => { + worker.addEventListener('message', resolve, { once: true }); + }); + + worker.postMessage({ type: 'start' }); + const event = await messagePromise; + expect(event.data).toEqual({ type: 'started' }); + + consoleSpy.mockRestore(); + }); + }); + + describe('Heartbeat Interval Management', () => { + it('should handle restart without issues', async () => { + worker.postMessage({ type: 'start' }); + + await new Promise((resolve) => { + worker.addEventListener('message', (event) => { + if (event.data.type === 'started') { + resolve(); + } + }, { once: true }); + }); + + // Start again (should clear previous interval) + const secondStartPromise = new Promise((resolve) => { + worker.addEventListener('message', (event) => { + if (event.data.type === 'started') { + resolve(event); + } + }, { once: true }); + }); + + worker.postMessage({ type: 'start' }); + const event = await secondStartPromise; + expect(event.data).toEqual({ type: 'started' }); + }); + + it('should stop cleanly even when no heartbeat is running', async () => { + const stopPromise = new Promise((resolve) => { + worker.addEventListener('message', resolve, { once: true }); + }); + + // Stop without starting first + worker.postMessage({ type: 'stop' }); + + const event = await stopPromise; + expect(event.data).toEqual({ type: 'stopped' }); + }); + }); + + describe('Message Flow', () => { + it('should handle complete start-heartbeat-stop cycle', async () => { + const messages: any[] = []; + + worker.addEventListener('message', (event) => { + messages.push(event.data); + }); + + worker.postMessage({ type: 'start' }); + + await new Promise((resolve) => { + const checkMessages = () => { + if (messages.some(msg => msg.type === 'started')) { + resolve(); + } else { + setTimeout(checkMessages, 10); + } + }; + checkMessages(); + }); + + await new Promise((resolve) => { + const checkMessages = () => { + if (messages.some(msg => msg.type === 'heartbeat')) { + resolve(); + } else { + setTimeout(checkMessages, 100); + } + }; + checkMessages(); + }); + + worker.postMessage({ type: 'stop' }); + + await new Promise((resolve) => { + const checkMessages = () => { + if (messages.some(msg => msg.type === 'stopped')) { + resolve(); + } else { + setTimeout(checkMessages, 10); + } + }; + checkMessages(); + }); + + // Verify we got all expected message types + expect(messages.some(msg => msg.type === 'started')).toBe(true); + expect(messages.some(msg => msg.type === 'heartbeat')).toBe(true); + expect(messages.some(msg => msg.type === 'stopped')).toBe(true); + }, 15000); // 15 second timeout + + it('should use correct heartbeat interval timing', async () => { + const heartbeatTimes: number[] = []; + + worker.addEventListener('message', (event) => { + if (event.data.type === 'heartbeat') { + heartbeatTimes.push(Date.now()); + } + }); + + worker.postMessage({ type: 'start' }); + + await new Promise((resolve) => { + const checkHeartbeats = () => { + if (heartbeatTimes.length >= 2) { + resolve(); + } else { + setTimeout(checkHeartbeats, 100); + } + }; + checkHeartbeats(); + }); + + // Verify the interval is approximately 10 seconds (allow some tolerance) + const interval = heartbeatTimes[1] - heartbeatTimes[0]; + expect(interval).toBeGreaterThan(9500); // 9.5 seconds minimum + expect(interval).toBeLessThan(10500); // 10.5 seconds maximum + }, 25000); // 25 second timeout + }); +}); \ No newline at end of file diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.ts new file mode 100644 index 0000000000..7d707a9ef9 --- /dev/null +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/HeartbeatWorker.ts @@ -0,0 +1,70 @@ +// Copyright (c) 2018-2025 Coinbase, Inc. + + +/** + * This worker is used to send heartbeat messages to the main thread. + * It is used to keep the websocket connection alive when the webpage is backgrounded. + * + */ + +const HEARTBEAT_INTERVAL = 10000; // 10 seconds + +type WorkerMessage = { + type: 'start' | 'stop'; +} + +export type WorkerResponse = { + type: 'heartbeat' | 'started' | 'stopped'; +} + +let heartbeatInterval: NodeJS.Timeout | undefined; + +// Listen for messages from the main thread +self.addEventListener('message', (event: MessageEvent) => { + const { type } = event.data; + + switch (type) { + case 'start': + startHeartbeat(); + break; + case 'stop': + stopHeartbeat(); + break; + default: + console.warn('Unknown message type received by HeartbeatWorker:', type); + } +}); + +function startHeartbeat(): void { + // Clear any existing interval + if (heartbeatInterval) { + clearInterval(heartbeatInterval); + } + + // Start the heartbeat interval + heartbeatInterval = setInterval(() => { + // Send heartbeat message to main thread + const response: WorkerResponse = { type: 'heartbeat' }; + self.postMessage(response); + }, HEARTBEAT_INTERVAL); + + // Send confirmation that heartbeat started + const response: WorkerResponse = { type: 'started' }; + self.postMessage(response); +} + +function stopHeartbeat(): void { + if (heartbeatInterval) { + clearInterval(heartbeatInterval); + heartbeatInterval = undefined; + } + + // Send confirmation that heartbeat stopped + const response: WorkerResponse = { type: 'stopped' }; + self.postMessage(response); +} + +// Handle worker termination +self.addEventListener('beforeunload', () => { + stopHeartbeat(); +}); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts index d2e06f5beb..a4c9626814 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.test.ts @@ -1,5 +1,6 @@ import { vi } from 'vitest'; +import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants.js'; import { WalletLinkSession } from '../type/WalletLinkSession.js'; import { WalletLinkCipher } from './WalletLinkCipher.js'; @@ -7,7 +8,6 @@ import { WalletLinkConnection, WalletLinkConnectionUpdateListener, } from './WalletLinkConnection.js'; -import { ScopedLocalStorage } from ':core/storage/ScopedLocalStorage.js'; const decryptMock = vi.fn().mockImplementation((text) => Promise.resolve(`decrypted ${text}`)); @@ -18,10 +18,18 @@ describe('WalletLinkConnection', () => { let connection: WalletLinkConnection; let listener: WalletLinkConnectionUpdateListener; + let mockWorker: any; beforeEach(() => { vi.clearAllMocks(); + mockWorker = { + postMessage: vi.fn(), + terminate: vi.fn(), + addEventListener: vi.fn(), + }; + global.Worker = vi.fn().mockImplementation(() => mockWorker); + connection = new WalletLinkConnection({ session, linkAPIUrl: 'http://link-api-url', @@ -142,4 +150,77 @@ describe('WalletLinkConnection', () => { }); }); }); + + describe('Heartbeat Worker Management', () => { + it('should create a heartbeat worker when startHeartbeat is called', () => { + (connection as any).startHeartbeat(); + + expect(global.Worker).toHaveBeenCalledWith(expect.any(URL), { type: 'module' }); + + expect(mockWorker.postMessage).toHaveBeenCalledWith({ type: 'start' }); + }); + + it('should stop heartbeat worker when stopHeartbeat is called', () => { + (connection as any).startHeartbeat(); + + vi.clearAllMocks(); + + (connection as any).stopHeartbeat(); + + expect(mockWorker.postMessage).toHaveBeenCalledWith({ type: 'stop' }); + expect(mockWorker.terminate).toHaveBeenCalled(); + }); + + it('should terminate existing worker before creating new one', () => { + (connection as any).startHeartbeat(); + const firstWorker = mockWorker; + + const secondWorker = { + postMessage: vi.fn(), + terminate: vi.fn(), + addEventListener: vi.fn(), + }; + global.Worker = vi.fn().mockImplementation(() => secondWorker); + + (connection as any).startHeartbeat(); + + // First worker should be terminated + expect(firstWorker.terminate).toHaveBeenCalled(); + + // New worker should be created and started + expect(secondWorker.postMessage).toHaveBeenCalledWith({ type: 'start' }); + }); + + it('should handle heartbeat messages from worker', () => { + const heartbeatSpy = vi.spyOn(connection as any, 'heartbeat').mockImplementation(() => {}); + + (connection as any).startHeartbeat(); + + const messageListener = mockWorker.addEventListener.mock.calls.find( + (call: any[]) => call[0] === 'message' + )?.[1]; + + expect(messageListener).toBeDefined(); + + messageListener({ data: { type: 'heartbeat' } }); + + expect(heartbeatSpy).toHaveBeenCalled(); + }); + + it('should handle stop when no worker exists', () => { + expect(() => { + (connection as any).stopHeartbeat(); + }).not.toThrow(); + + expect(mockWorker.postMessage).not.toHaveBeenCalled(); + expect(mockWorker.terminate).not.toHaveBeenCalled(); + }); + + it('should setup worker listeners correctly', () => { + (connection as any).startHeartbeat(); + + expect(mockWorker.addEventListener).toHaveBeenCalledWith('message', expect.any(Function)); + expect(mockWorker.addEventListener).toHaveBeenCalledWith('error', expect.any(Function)); + }); + }); }); diff --git a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts index c3c1b6f193..f2522a6ebb 100644 --- a/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts +++ b/packages/wallet-sdk/src/sign/walletlink/relay/connection/WalletLinkConnection.ts @@ -1,15 +1,16 @@ // Copyright (c) 2018-2023 Coinbase, Inc. +import { IntNumber } from ':core/type/index.js'; import { APP_VERSION_KEY, WALLET_USER_NAME_KEY } from '../constants.js'; import { ClientMessage } from '../type/ClientMessage.js'; import { ServerMessage, ServerMessageType } from '../type/ServerMessage.js'; import { WalletLinkEventData } from '../type/WalletLinkEventData.js'; import { WalletLinkSession } from '../type/WalletLinkSession.js'; import { Web3Response } from '../type/Web3Response.js'; +import { WorkerResponse } from './HeartbeatWorker.js'; import { WalletLinkCipher } from './WalletLinkCipher.js'; import { WalletLinkHTTP } from './WalletLinkHTTP.js'; import { ConnectionState, WalletLinkWebSocket } from './WalletLinkWebSocket.js'; -import { IntNumber } from ':core/type/index.js'; const HEARTBEAT_INTERVAL = 10000; const REQUEST_TIMEOUT = 60000; @@ -43,6 +44,7 @@ export class WalletLinkConnection { private cipher: WalletLinkCipher; private ws: WalletLinkWebSocket; private http: WalletLinkHTTP; + private heartbeatWorker?: Worker; /** * Constructor @@ -62,6 +64,9 @@ export class WalletLinkConnection { let connected = false; switch (state) { case ConnectionState.DISCONNECTED: + // Stop heartbeat when disconnected + this.stopHeartbeat(); + // if DISCONNECTED and not destroyed if (!this.destroyed) { const connect = async () => { @@ -85,13 +90,9 @@ export class WalletLinkConnection { connected = await this.handleConnected(); // send heartbeat every n seconds while connected - // if CONNECTED, start the heartbeat timer - // first timer event updates lastHeartbeat timestamp - // subsequent calls send heartbeat message + // if CONNECTED, start the heartbeat timer using WebWorker this.updateLastHeartbeat(); - setInterval(() => { - this.heartbeat(); - }, HEARTBEAT_INTERVAL); + this.startHeartbeat(); // check for unseen events if (this.shouldFetchUnseenEventsOnConnect) { @@ -174,6 +175,7 @@ export class WalletLinkConnection { ); this.destroyed = true; + this.stopHeartbeat(); this.ws.disconnect(); this.listener = undefined; } @@ -307,6 +309,53 @@ export class WalletLinkConnection { this.lastHeartbeatResponse = Date.now(); } + private startHeartbeat(): void { + if (this.heartbeatWorker) { + this.heartbeatWorker.terminate(); + } + + try { + // We put the heartbeat interval on a worker to avoid dropping the websocket connection when the webpage is backgrounded. + const workerUrl = new URL('./HeartbeatWorker.js', import.meta.url); + this.heartbeatWorker = new Worker(workerUrl, { type: 'module' }); + this.setupWorkerListeners(); + + this.heartbeatWorker.postMessage({ type: 'start' }); + } catch (error) { + console.warn('Failed to create external heartbeat worker', error); + } + } + + private setupWorkerListeners(): void { + if (!this.heartbeatWorker) return; + + this.heartbeatWorker.addEventListener('message', (event: MessageEvent) => { + const { type } = event.data; + + switch (type) { + case 'heartbeat': + this.heartbeat(); + break; + case 'started': + case 'stopped': + // noop + break; + } + }); + + this.heartbeatWorker.addEventListener('error', (error) => { + console.error('Heartbeat worker error:', error); + }); + } + + private stopHeartbeat(): void { + if (this.heartbeatWorker) { + this.heartbeatWorker.postMessage({ type: 'stop' }); + this.heartbeatWorker.terminate(); + this.heartbeatWorker = undefined; + } + } + private heartbeat(): void { if (Date.now() - this.lastHeartbeatResponse > HEARTBEAT_INTERVAL * 2) { this.ws.disconnect(); diff --git a/yarn.lock b/yarn.lock index 4e97924e80..9ef83d0ec9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3192,6 +3192,17 @@ __metadata: languageName: node linkType: hard +"@vitest/web-worker@npm:3.2.1": + version: 3.2.1 + resolution: "@vitest/web-worker@npm:3.2.1" + dependencies: + debug: "npm:^4.4.1" + peerDependencies: + vitest: 3.2.1 + checksum: 10/a27a41fb588975b38d2fd592a8be60a11d363ec94c183a4cc1ad44b9fc768c0d4df46be3aa97d231bd8d54b1694f346d3cdb935f97462c714b7b44c06c2fe867 + languageName: node + linkType: hard + "@webassemblyjs/ast@npm:1.12.1, @webassemblyjs/ast@npm:^1.12.1": version: 1.12.1 resolution: "@webassemblyjs/ast@npm:1.12.1" @@ -4440,6 +4451,18 @@ __metadata: languageName: node linkType: hard +"debug@npm:^4.4.1": + version: 4.4.1 + resolution: "debug@npm:4.4.1" + dependencies: + ms: "npm:^2.1.3" + peerDependenciesMeta: + supports-color: + optional: true + checksum: 10/8e2709b2144f03c7950f8804d01ccb3786373df01e406a0f66928e47001cf2d336cbed9ee137261d4f90d68d8679468c755e3548ed83ddacdc82b194d2468afe + languageName: node + linkType: hard + "decimal.js@npm:^10.4.3": version: 10.4.3 resolution: "decimal.js@npm:10.4.3" From 22ff8ac4a31f7393ddf3ab8f7a8f84ea6b44830b Mon Sep 17 00:00:00 2001 From: Jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:26:47 -0600 Subject: [PATCH 09/10] merge --- packages/wallet-sdk/package.json | 4 +- yarn.lock | 174 +++++++++++++++++++++++++++++-- 2 files changed, 170 insertions(+), 8 deletions(-) diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index d28c1e77aa..7e3236eb41 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -42,14 +42,14 @@ "@types/node": "^14.18.54", "@typescript-eslint/eslint-plugin": "^6.2.0", "@typescript-eslint/parser": "^6.2.0", + "@vitest/coverage-v8": "2.1.2", + "@vitest/web-worker": "3.2.1", "eslint": "^8.45.0", "eslint-config-preact": "^1.3.0", "eslint-config-prettier": "^8.8.0", "eslint-plugin-prettier": "^5.0.0", "eslint-plugin-simple-import-sort": "^10.0.0", "eslint-plugin-unused-imports": "^3.0.0", - "@vitest/coverage-v8": "2.1.2", - "@vitest/web-worker": "3.2.1", "fake-indexeddb": "^6.0.0", "glob": "^11.0.0", "jest-websocket-mock": "^2.4.0", diff --git a/yarn.lock b/yarn.lock index 9ef83d0ec9..1b5d539188 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19,7 +19,7 @@ __metadata: languageName: node linkType: hard -"@ampproject/remapping@npm:^2.2.0": +"@ampproject/remapping@npm:^2.2.0, @ampproject/remapping@npm:^2.3.0": version: 2.3.0 resolution: "@ampproject/remapping@npm:2.3.0" dependencies: @@ -156,6 +156,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-string-parser@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-string-parser@npm:7.27.1" + checksum: 0a8464adc4b39b138aedcb443b09f4005d86207d7126e5e079177e05c3116107d856ec08282b365e9a79a9872f40f4092a6127f8d74c8a01c1ef789dacfc25d6 + languageName: node + linkType: hard + "@babel/helper-validator-identifier@npm:^7.24.7": version: 7.24.7 resolution: "@babel/helper-validator-identifier@npm:7.24.7" @@ -163,6 +170,13 @@ __metadata: languageName: node linkType: hard +"@babel/helper-validator-identifier@npm:^7.27.1": + version: 7.27.1 + resolution: "@babel/helper-validator-identifier@npm:7.27.1" + checksum: 3c7e8391e59d6c85baeefe9afb86432f2ab821c6232b00ea9082a51d3e7e95a2f3fb083d74dc1f49ac82cf238e1d2295dafcb001f7b0fab479f3f56af5eaaa47 + languageName: node + linkType: hard + "@babel/helper-validator-option@npm:^7.24.8": version: 7.24.8 resolution: "@babel/helper-validator-option@npm:7.24.8" @@ -203,6 +217,17 @@ __metadata: languageName: node linkType: hard +"@babel/parser@npm:^7.25.4": + version: 7.27.5 + resolution: "@babel/parser@npm:7.27.5" + dependencies: + "@babel/types": ^7.27.3 + bin: + parser: ./bin/babel-parser.js + checksum: 16f00a12895522c1682f1f047332010e129ba517add3a2db347a658e02f60434fc38f9105a9d6ec3fd6bfb5d1b0b70d88585c1f10e06e2b58fba29004a42d648 + languageName: node + linkType: hard + "@babel/plugin-syntax-class-properties@npm:^7.12.13": version: 7.12.13 resolution: "@babel/plugin-syntax-class-properties@npm:7.12.13" @@ -271,6 +296,23 @@ __metadata: languageName: node linkType: hard +"@babel/types@npm:^7.25.4, @babel/types@npm:^7.27.3": + version: 7.27.3 + resolution: "@babel/types@npm:7.27.3" + dependencies: + "@babel/helper-string-parser": ^7.27.1 + "@babel/helper-validator-identifier": ^7.27.1 + checksum: f0d43c0231f3ebc118480e149292dcd92ea128e2650285ced99ff2e5610db2171305f59aa07406ba0cb36af8e4331a53a69576d6b0c3f3176144dd3ad514b9ae + languageName: node + linkType: hard + +"@bcoe/v8-coverage@npm:^0.2.3": + version: 0.2.3 + resolution: "@bcoe/v8-coverage@npm:0.2.3" + checksum: 850f9305536d0f2bd13e9e0881cb5f02e4f93fad1189f7b2d4bebf694e3206924eadee1068130d43c11b750efcc9405f88a8e42ef098b6d75239c0f047de1a27 + languageName: node + linkType: hard + "@chakra-ui/accordion@npm:2.3.1": version: 2.3.1 resolution: "@chakra-ui/accordion@npm:2.3.1" @@ -1540,6 +1582,8 @@ __metadata: "@types/node": ^14.18.54 "@typescript-eslint/eslint-plugin": ^6.2.0 "@typescript-eslint/parser": ^6.2.0 + "@vitest/coverage-v8": 2.1.2 + "@vitest/web-worker": 3.2.1 clsx: ^1.2.1 eslint: ^8.45.0 eslint-config-preact: ^1.3.0 @@ -1548,6 +1592,7 @@ __metadata: eslint-plugin-simple-import-sort: ^10.0.0 eslint-plugin-unused-imports: ^3.0.0 eventemitter3: ^5.0.1 + fake-indexeddb: ^6.0.0 glob: ^11.0.0 jest-websocket-mock: ^2.4.0 jsdom: ^25.0.1 @@ -2009,6 +2054,13 @@ __metadata: languageName: node linkType: hard +"@istanbuljs/schema@npm:^0.1.2": + version: 0.1.3 + resolution: "@istanbuljs/schema@npm:0.1.3" + checksum: 5282759d961d61350f33d9118d16bcaed914ebf8061a52f4fa474b2cb08720c9c81d165e13b82f2e5a8a212cc5af482f0c6fc1ac27b9e067e5394c9a6ed186c9 + languageName: node + linkType: hard + "@jest/schemas@npm:^29.6.3": version: 29.6.3 resolution: "@jest/schemas@npm:29.6.3" @@ -2060,7 +2112,7 @@ __metadata: languageName: node linkType: hard -"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": +"@jridgewell/trace-mapping@npm:^0.3.20, @jridgewell/trace-mapping@npm:^0.3.23, @jridgewell/trace-mapping@npm:^0.3.24, @jridgewell/trace-mapping@npm:^0.3.25": version: 0.3.25 resolution: "@jridgewell/trace-mapping@npm:0.3.25" dependencies: @@ -3110,6 +3162,32 @@ __metadata: languageName: node linkType: hard +"@vitest/coverage-v8@npm:2.1.2": + version: 2.1.2 + resolution: "@vitest/coverage-v8@npm:2.1.2" + dependencies: + "@ampproject/remapping": ^2.3.0 + "@bcoe/v8-coverage": ^0.2.3 + debug: ^4.3.6 + istanbul-lib-coverage: ^3.2.2 + istanbul-lib-report: ^3.0.1 + istanbul-lib-source-maps: ^5.0.6 + istanbul-reports: ^3.1.7 + magic-string: ^0.30.11 + magicast: ^0.3.4 + std-env: ^3.7.0 + test-exclude: ^7.0.1 + tinyrainbow: ^1.2.0 + peerDependencies: + "@vitest/browser": 2.1.2 + vitest: 2.1.2 + peerDependenciesMeta: + "@vitest/browser": + optional: true + checksum: 510efabda04f765f427ff6d2df528cc3cd1534ec8c6f5cfc2c403e23e9969f148979d8363109aef1ba0dd0724d19e0e2140b893caa86218345872852cc51d591 + languageName: node + linkType: hard + "@vitest/expect@npm:2.1.2": version: 2.1.2 resolution: "@vitest/expect@npm:2.1.2" @@ -3199,7 +3277,7 @@ __metadata: debug: "npm:^4.4.1" peerDependencies: vitest: 3.2.1 - checksum: 10/a27a41fb588975b38d2fd592a8be60a11d363ec94c183a4cc1ad44b9fc768c0d4df46be3aa97d231bd8d54b1694f346d3cdb935f97462c714b7b44c06c2fe867 + checksum: c10731380041978a6a49aeb2866856c4067d178eb664b94ea96c9334f2d8ae54195d9fd8be0bc8f03bb3a3b9806b290cff34a775f731ecd23826cfc036217bff languageName: node linkType: hard @@ -4459,7 +4537,7 @@ __metadata: peerDependenciesMeta: supports-color: optional: true - checksum: 10/8e2709b2144f03c7950f8804d01ccb3786373df01e406a0f66928e47001cf2d336cbed9ee137261d4f90d68d8679468c755e3548ed83ddacdc82b194d2468afe + checksum: a43826a01cda685ee4cec00fb2d3322eaa90ccadbef60d9287debc2a886be3e835d9199c80070ede75a409ee57828c4c6cd80e4b154f2843f0dc95a570dc0729 languageName: node linkType: hard @@ -5449,6 +5527,13 @@ __metadata: languageName: node linkType: hard +"fake-indexeddb@npm:^6.0.0": + version: 6.0.1 + resolution: "fake-indexeddb@npm:6.0.1" + checksum: c4b8a0576cf3165238494b67641539d4ff36194e038b36e6992449eb882923dfaadba78a62cfc7d5ae9a5c0ac2fa1e70af5cb6c2228dc764ac79b65f0e68e942 + languageName: node + linkType: hard + "fast-deep-equal@npm:^3.1.1, fast-deep-equal@npm:^3.1.3": version: 3.1.3 resolution: "fast-deep-equal@npm:3.1.3" @@ -5858,7 +5943,7 @@ __metadata: languageName: node linkType: hard -"glob@npm:^10.2.2, glob@npm:^10.3.10": +"glob@npm:^10.2.2, glob@npm:^10.3.10, glob@npm:^10.4.1": version: 10.4.5 resolution: "glob@npm:10.4.5" dependencies: @@ -6047,6 +6132,13 @@ __metadata: languageName: node linkType: hard +"html-escaper@npm:^2.0.0": + version: 2.0.2 + resolution: "html-escaper@npm:2.0.2" + checksum: d2df2da3ad40ca9ee3a39c5cc6475ef67c8f83c234475f24d8e9ce0dc80a2c82df8e1d6fa78ddd1e9022a586ea1bd247a615e80a5cd9273d90111ddda7d9e974 + languageName: node + linkType: hard + "http-cache-semantics@npm:^4.1.1": version: 4.1.1 resolution: "http-cache-semantics@npm:4.1.1" @@ -6499,6 +6591,45 @@ __metadata: languageName: node linkType: hard +"istanbul-lib-coverage@npm:^3.0.0, istanbul-lib-coverage@npm:^3.2.2": + version: 3.2.2 + resolution: "istanbul-lib-coverage@npm:3.2.2" + checksum: 2367407a8d13982d8f7a859a35e7f8dd5d8f75aae4bb5484ede3a9ea1b426dc245aff28b976a2af48ee759fdd9be374ce2bd2669b644f31e76c5f46a2e29a831 + languageName: node + linkType: hard + +"istanbul-lib-report@npm:^3.0.0, istanbul-lib-report@npm:^3.0.1": + version: 3.0.1 + resolution: "istanbul-lib-report@npm:3.0.1" + dependencies: + istanbul-lib-coverage: ^3.0.0 + make-dir: ^4.0.0 + supports-color: ^7.1.0 + checksum: fd17a1b879e7faf9bb1dc8f80b2a16e9f5b7b8498fe6ed580a618c34df0bfe53d2abd35bf8a0a00e628fb7405462576427c7df20bbe4148d19c14b431c974b21 + languageName: node + linkType: hard + +"istanbul-lib-source-maps@npm:^5.0.6": + version: 5.0.6 + resolution: "istanbul-lib-source-maps@npm:5.0.6" + dependencies: + "@jridgewell/trace-mapping": ^0.3.23 + debug: ^4.1.1 + istanbul-lib-coverage: ^3.0.0 + checksum: 8dd6f2c1e2ecaacabeef8dc9ab52c4ed0a6036310002cf7f46ea6f3a5fb041da8076f5350e6a6be4c60cd4f231c51c73e042044afaf44820d857d92ecfb8ab6c + languageName: node + linkType: hard + +"istanbul-reports@npm:^3.1.7": + version: 3.1.7 + resolution: "istanbul-reports@npm:3.1.7" + dependencies: + html-escaper: ^2.0.0 + istanbul-lib-report: ^3.0.0 + checksum: 2072db6e07bfbb4d0eb30e2700250636182398c1af811aea5032acb219d2080f7586923c09fa194029efd6b92361afb3dcbe1ebcc3ee6651d13340f7c6c4ed95 + languageName: node + linkType: hard + "iterator.prototype@npm:^1.1.2": version: 1.1.2 resolution: "iterator.prototype@npm:1.1.2" @@ -6936,6 +7067,26 @@ __metadata: languageName: node linkType: hard +"magicast@npm:^0.3.4": + version: 0.3.5 + resolution: "magicast@npm:0.3.5" + dependencies: + "@babel/parser": ^7.25.4 + "@babel/types": ^7.25.4 + source-map-js: ^1.2.0 + checksum: 668f07ade907a44bccfc9a9321588473f6d5fa25329aa26b9ad9a3bf87cc2e6f9c482cbdd3e33c0b9ab9b79c065630c599cc055a12f881c8c924ee0d7282cdce + languageName: node + linkType: hard + +"make-dir@npm:^4.0.0": + version: 4.0.0 + resolution: "make-dir@npm:4.0.0" + dependencies: + semver: ^7.5.3 + checksum: bf0731a2dd3aab4db6f3de1585cea0b746bb73eb5a02e3d8d72757e376e64e6ada190b1eddcde5b2f24a81b688a9897efd5018737d05e02e2a671dda9cff8a8a + languageName: node + linkType: hard + "make-fetch-happen@npm:^13.0.0": version: 13.0.1 resolution: "make-fetch-happen@npm:13.0.1" @@ -8650,7 +8801,7 @@ __metadata: languageName: node linkType: hard -"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.1": +"source-map-js@npm:>=0.6.2 <2.0.0, source-map-js@npm:^1.0.2, source-map-js@npm:^1.2.0, source-map-js@npm:^1.2.1": version: 1.2.1 resolution: "source-map-js@npm:1.2.1" checksum: 4eb0cd997cdf228bc253bcaff9340afeb706176e64868ecd20efbe6efea931465f43955612346d6b7318789e5265bdc419bc7669c1cebe3db0eb255f57efa76b @@ -9071,6 +9222,17 @@ __metadata: languageName: node linkType: hard +"test-exclude@npm:^7.0.1": + version: 7.0.1 + resolution: "test-exclude@npm:7.0.1" + dependencies: + "@istanbuljs/schema": ^0.1.2 + glob: ^10.4.1 + minimatch: ^9.0.4 + checksum: e5a49a054bf2da74467dd8149b202166e36275c0dc2c9585f7d34de99c6d055d2287ac8d2a8e4c27c59b893acbc671af3fa869e8069a58ad117250e9c01c726b + languageName: node + linkType: hard + "text-decoder@npm:^1.1.0": version: 1.2.0 resolution: "text-decoder@npm:1.2.0" From 5cc075f71f2bacfb56e72570e79e6f2903c887d4 Mon Sep 17 00:00:00 2001 From: Jake <95890768+cb-jake@users.noreply.github.com> Date: Wed, 4 Jun 2025 11:51:53 -0600 Subject: [PATCH 10/10] version --- packages/wallet-sdk/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/wallet-sdk/package.json b/packages/wallet-sdk/package.json index 7e3236eb41..6e44eed6cb 100644 --- a/packages/wallet-sdk/package.json +++ b/packages/wallet-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@coinbase/wallet-sdk", - "version": "4.3.2", + "version": "4.3.3", "description": "Coinbase Wallet JavaScript SDK", "keywords": [ "coinbase",