From fb11f627d525c665654c1d17560afe9515210090 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Petr=20Ja=C5=A1ek?= Date: Mon, 22 Jul 2024 08:58:15 +0200 Subject: [PATCH] fix media metadata editor changes not being saved (#4572) * fix media metadata editor changes not being saved it was calling authoring editor instances to generate html which then overwrote any changes done in modal. SDESK-7304 * trigger actions * add test from authoring to modal * trigger autosave when opening modal * only trigger autosave if dirty * fix protractor * fix failing protractor tests * handle feedback * docs * create picture authoring object * tweak test --- .eslintrc.js | 2 + .github/workflows/tests.yml | 2 +- .../playwright/authoring.picture.spec.ts | 51 ++++++++++++++++++ .../page-object-models/authoring.ts | 35 ++++++++++++ .../page-object-models/media-editor.ts | 19 +++++++ .../page-object-models/monitoring.ts | 9 ++++ .../playwright/page-object-models/upload.ts | 21 ++++++++ e2e/client/specs/authoring_spec.ts | 9 +--- e2e/client/test-files/iptc-photo.jpg | Bin 0 -> 91525 bytes e2e/server/docker-compose.yml | 5 +- e2e/server/settings.py | 18 +++++++ scripts/apps/archive/views/upload.html | 7 +-- .../directives/ArticleEditDirective.ts | 7 ++- .../directives/AuthoringDirective.ts | 23 ++++---- .../apps/authoring/views/article-edit.html | 17 +++--- .../apps/authoring/views/change-image.html | 4 +- 16 files changed, 192 insertions(+), 37 deletions(-) create mode 100644 e2e/client/playwright/authoring.picture.spec.ts create mode 100644 e2e/client/playwright/page-object-models/authoring.ts create mode 100644 e2e/client/playwright/page-object-models/media-editor.ts create mode 100644 e2e/client/playwright/page-object-models/upload.ts create mode 100644 e2e/client/test-files/iptc-photo.jpg diff --git a/.eslintrc.js b/.eslintrc.js index 8ecb1541d9..fa65d5cef9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -44,6 +44,8 @@ module.exports = Object.assign({}, sharedConfigs, { '@typescript-eslint/ban-types': 'off', '@typescript-eslint/no-inferrable-types': 'off', '@typescript-eslint/no-this-alias': 'off', + '@typescript-eslint/no-explicit-any': 'off', + '@typescript-eslint/no-unused-vars': 'off', }), plugins: [...(sharedConfigs.plugins ?? []), '@typescript-eslint'], diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 314c2ea374..c496c79915 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -90,5 +90,5 @@ jobs: - name: Server Logs if: ${{ failure() }} - run: docker compose logs superdesk + run: docker compose logs server working-directory: e2e/server diff --git a/e2e/client/playwright/authoring.picture.spec.ts b/e2e/client/playwright/authoring.picture.spec.ts new file mode 100644 index 0000000000..6d9abcf46a --- /dev/null +++ b/e2e/client/playwright/authoring.picture.spec.ts @@ -0,0 +1,51 @@ +import {test, expect} from '@playwright/test'; +import {Monitoring} from './page-object-models/monitoring'; +import {restoreDatabaseSnapshot} from './utils'; +import {MediaEditor} from './page-object-models/media-editor'; +import {PictureAuthoring} from './page-object-models/authoring'; +import {MediaUpload} from './page-object-models/upload'; + +test.setTimeout(30000); + +/** + * upload a picture + * edit metadata + * test metadata changes from modal are visible in the editor + */ +test('media metadata editor', async ({page}) => { + await restoreDatabaseSnapshot(); + + const upload = new MediaUpload(page); + const monitoring = new Monitoring(page); + const mediaEditor = new MediaEditor(page); + const pictureAuthoring = new PictureAuthoring(page); + + await page.goto('/#/workspace/monitoring'); + + await monitoring.selectDeskOrWorkspace('Sports'); + await monitoring.openMediaUploadView(); + + await upload.selectFile('iptc-photo.jpg'); + + await expect(mediaEditor.field('field--headline')).toContainText('The Headline'); + + await mediaEditor.field('field--headline').clear(); + await mediaEditor.field('field--headline').fill('picture'); + + await upload.startUpload(); + + await monitoring.executeActionOnMonitoringItem(monitoring.getArticleLocator('picture'), 'Edit'); + + await pictureAuthoring.openMetadataEditor(); + + await mediaEditor.field('field--description_text').fill('test description'); + await mediaEditor.saveMetadata(); + + await expect(pictureAuthoring.field('field--description_text')).toContainText('test description'); + + await pictureAuthoring.field('field--description_text').fill('new description'); + + await pictureAuthoring.openMetadataEditor(); + + await expect(mediaEditor.field('field--description_text')).toContainText('new description'); +}); diff --git a/e2e/client/playwright/page-object-models/authoring.ts b/e2e/client/playwright/page-object-models/authoring.ts new file mode 100644 index 0000000000..970afdb649 --- /dev/null +++ b/e2e/client/playwright/page-object-models/authoring.ts @@ -0,0 +1,35 @@ +import {Locator, Page} from '@playwright/test'; +import {s} from '../utils'; + +export class Authoring { + protected page: Page; + + constructor(page: Page) { + this.page = page; + } + + async executeActionInEditor(...actionPath: Array): Promise { + await this.page.locator(s('authoring-topbar', 'actions-button')).click(); + + const actionsWithoutLast = actionPath.slice(0, actionPath.length - 1); + + for (const action of actionsWithoutLast) { + await this.page.locator(s('actions-list')).getByRole('button', {name: action}).hover(); + } + + await this.page.locator(s('actions-list')) + .getByRole('button', {name: actionPath[actionPath.length - 1]}) + .click(); + } + + field(field: string): Locator { + return this.page.locator(s('authoring', field)).getByRole('textbox'); + } +} + +export class PictureAuthoring extends Authoring { + async openMetadataEditor(): Promise { + await this.page.locator(s('authoring-field=media', 'image-overlay')).hover(); + await this.page.locator(s('authoring-field=media', 'edit-metadata')).click(); + } +} \ No newline at end of file diff --git a/e2e/client/playwright/page-object-models/media-editor.ts b/e2e/client/playwright/page-object-models/media-editor.ts new file mode 100644 index 0000000000..39880606d0 --- /dev/null +++ b/e2e/client/playwright/page-object-models/media-editor.ts @@ -0,0 +1,19 @@ +import {Locator, Page} from '@playwright/test'; +import {s} from '../utils'; + +export class MediaEditor { + private page: Page; + + constructor(page: Page) { + this.page = page; + } + + field(field: string): Locator { + return this.page.locator(s('media-metadata-editor', field)).getByRole('textbox'); + } + + async saveMetadata(): Promise { + await this.page.locator(s('media-editor', 'apply-metadata-button')).click(); + await this.page.locator(s('change-image', 'done')).click(); + } +} diff --git a/e2e/client/playwright/page-object-models/monitoring.ts b/e2e/client/playwright/page-object-models/monitoring.ts index 9ee47f36a1..4bddd19f9c 100644 --- a/e2e/client/playwright/page-object-models/monitoring.ts +++ b/e2e/client/playwright/page-object-models/monitoring.ts @@ -50,4 +50,13 @@ export class Monitoring { } } } + + async openMediaUploadView(): Promise { + await this.page.locator(s('content-create')).click(); + await this.page.locator(s('content-create-dropdown')).getByRole('button', {name: 'Upload media'}).click(); + } + + getArticleLocator(headline: string): Locator { + return this.page.locator(s('article-item=' + headline)); + } } diff --git a/e2e/client/playwright/page-object-models/upload.ts b/e2e/client/playwright/page-object-models/upload.ts new file mode 100644 index 0000000000..8893ec02dd --- /dev/null +++ b/e2e/client/playwright/page-object-models/upload.ts @@ -0,0 +1,21 @@ +import {Page} from '@playwright/test'; +import {s} from '../utils'; +import path from 'path'; + +export class MediaUpload { + private page: Page; + + constructor(page: Page) { + this.page = page; + } + + async selectFile(filename: string): Promise { + await this.page.locator(s('file-upload', 'select-file-button')).click(); + await this.page.locator(s('file-upload', 'image-upload-input')) + .setInputFiles(path.join('test-files', filename)); + } + + async startUpload(): Promise { + await this.page.locator(s('file-upload', 'multi-image-edit--start-upload')).click(); + } +} diff --git a/e2e/client/specs/authoring_spec.ts b/e2e/client/specs/authoring_spec.ts index 41e7b25176..c4640c52b8 100644 --- a/e2e/client/specs/authoring_spec.ts +++ b/e2e/client/specs/authoring_spec.ts @@ -29,14 +29,7 @@ function uploadMedia(imagePathAbsolute) { el(['media-metadata-editor', 'field--headline'], by.tagName('[contenteditable]')) .sendKeys('image headline'); el(['media-metadata-editor', 'field--slugline'], by.tagName('[contenteditable]')) - .sendKeys('image headline'); - el(['media-metadata-editor', 'field--alt_text'], by.tagName('[contenteditable]')) - .sendKeys('image alt text'); - - selectFromMetaTermsDropdown('anpa_category', ['Finance']); - - selectFromMetaTermsDropdown('subject', ['arts, culture and entertainment', 'archaeology']); - + .sendKeys('image slugline'); el(['media-metadata-editor', 'field--description_text'], by.tagName('[contenteditable]')) .sendKeys('image description'); diff --git a/e2e/client/test-files/iptc-photo.jpg b/e2e/client/test-files/iptc-photo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0fed9af53f6f9beb27a06233a9f47a8036a38212 GIT binary patch literal 91525 zcmeFZ2|U!@_W(TY^;EQL5mS^FyX?zUl2j8D{Ka+Eqj$3Ynr(_9gq4gzU+d zy|RxjF_vLw-tWv93`6yMp6B=e-}m$L`Cz{Hd(U#uJ?GqW&pmfYUr66T!*UL0mp~vz zMbIG-2(%isY6%l)De&n4@N2YWCujxme+lq=Z^^Fd&)!Q8fR<6(fu2hwDgCzs&jCv} zPqhOO*B?{bC4u%>;1_hk6b3eip`b`JD;qNe9BgQA2!?BzHXp z{E}%>{>vg^hBgSK0GO_mEW*kWX=Y+-13sXHurY(e4uYu&zzXLs$bxym_V)I?03|3d z0%-!Khb8qbEjwq5utA_q5msO!UVf0+aRtTY%gLmd#<4D44%&PSEDwVtVYA^_m#zS9 zB@g0)nT^GqH|s#mWU>+h)8k-WN^28j&?YpiZ3k%M8JMFz0%<%OdZu+Y{7ma?3#18 zr(STOz^4&LQ^Tg0h&G5t*38Bcd_Wd~1ZIGatS*R6)z-)Y0X3wu#Gs1-2z(BSurq^0 zVSK7KhBkmy=k{V?0&P-7*dn2GKx{w~|GDb1E_DEL{iYqTE_DL2otR}W8b~u6 z7?OT;fWCs3gGk>r@=a}QtR(pO;3!^0V}ucm7mBdtb1<~x6X50N14%&~tPG*%FdMKD z%)|^X%{7po%>_0ymgdqBR^(T-l7*R?opM6LRGpMAK%LB?;>KJMnZKkQBpfWQEMYc= zU4 zoH#j!0(g?N_7vvKZ-Rsf9s2*5B|gQjWFJOCfc#+Yw*4~k$Y!{P&IfWcC;UjkE1Q8ZbE zF-!(fJ}Ej-y0`N|sqRV^0Sp0ZqX55z0F&9ZGDML39iegdd&LwPi%os^F zDVZtb+s`2+E{OumDoB8-mNxA<4$kFj8WiA(AzHw67@?&Z)h{rUp%=g`=U`)KjAVfO zn6WVuhC*?JDYi%F!WnTtg=YaO=b+^2m@k)e2$T)^)ojyXgq;e%0CE+;Fc5GC*eQOA zkLIR+MPmvLBO-E^hGrHT2&6d!B9wPW1-QY~4}y!5nL)&e%mvs&M1Um^aDW_OfDG;9 z;)H0Z7?Dv!QpwD+<*AuL@yaUjX~2x8=ALg_t>(=M4F`aK?z?$LG~Y%Q;5IM|3mDYK z*3g2oSj#Y2wCCWR4@0I+XZmNS7A%>?7q2;pr=jNIQ-#9dFsk8@{lIZU6UqbCsacrG zkmCj(N+%w&yP0DnWDuYec?K4Om@|j7Af)(aQJll@G+Xqe2L^o^5Glp+k%>}V?>wGo z0u?HWxg5@fER5gJ1TS>&7v-0ZF>23QOTwQo6M(N-e3bw?@Cowsi}COa@(7C0StWp% z6356ZkgVMW7}9d#`CZ)k&r&`zMp-)rW0@(7f;kvkT3JvRa;P02Ww~QyOVe-^9hp&P zYCD;^-^IyCcB0~9vsODg91G%CGPI;BI89%US=dlDmeyclMqZ;OEDYf$(p(Na#;{9< zwiY&AGP3GCWCp=x4B$mH9}p8om1hvoX!8t@v-p@+>Y2AHuuDLUXH1#21!N3(Dxixc z3~qxGoDnreESdsGgc;GK!%DSM3a3*Rv4BRCxtgOrbQ}Y&(?SuL3=4AjAOk#^kwa)h z3oxY-i1dM=Vpgn8&lo*0z!N=cqz$muFjqz@Qw;qdQru(8vSvuA;Rzswr>p`nW0_;h zK)?dDfys>$K;UU(4}-zM0>Z-lU_-buSU`lIf004VN60|`0J1=s1W7W^oE_108dRFD3$dYWYgL^n<-$cEAYo7Ap`vr z7A4xHBi7b2&1n>$!qJHu6$;V5Yk6if`qH`~z*hzp4D z2=Ma=id+y7ln@Y-5I6$lmL&N3=UTvQAck1anL47(poSLn-3!$o{=^B=aQ$-*kcM$S zcXLdDnl>V9{8R#IPGmzb^Qqnp1wwtN0Jl>DqJU|1z%yWB2p|upgjn2iX2UN|KuzT= zLkd7Uz0+gFJirhco-qX*M+?|F7}5+u@7t#L6ttz9>Tp%b-NDBVkqB$sIUD+gy)+d_ z!N$`-aV!~iveoa z-v~J8M}BmpI$>r)N#eG>TBW>8w2;9A=Lq?@3U6#%3nu?kGy$%m(PrheBMku{T7*C@jw-JO}q& z>T;Gw#&U3|3iHid{n?040c;at(_k{sC`&dlJnB~s>d!GIqQrohn)X_gVvSs=ZF zO%tSJgPMaPkL~X((jtif6Y{y#LZYU?F_=qgmSX-Kl1~YM0Gk&V6InkS0?gV49{%J~W4DE?_08WGbojIbxQZX?Q_^dMw`tyuGp)wl@0~)}QmWA=uxfkU#l5&*xYl+U@ zO3X$=q4B%n0c{|&Y=%zQwD+o}2z&TUkT5-Sv><^zoeQ4P&hf|8^I3X}0!m5j;s5vS z>DO%iE7l}nIAc!?S)jKjs)^3ANCBfi!a-G->3N;Ar=zLC-?B)CBblwm|A0OIlE&Y* z#$Qrc+!kqb^+y|{1uaJK|J({h5znG*{VNtDIM-t4vhW)gBRJP$7RT}5vY5GC{2Lat z7>$3%Viu#YxW&-PnQ@??N?V=i)-FXuhhug?(a0$nIrx?ln6ufK^BPz-8A5BA8QYl3 z2+m2z(txRN=fRQ>ACH+VR<|GsoQKZV$*F}@Mi4kZX4EbOFfglq5us2HIj4xzjYt`3 zVhA@wQR)d5;FQeIFA5cALjdOvK#kBMSvT4U<^wHUVnOqUGV_6ievw+3TB_(3Vm6vN zL;RH}rUPPzTLyXtDN*;Iih=_4r=p+${Zpc#4UtY1K%N$bfKLf);RsKL+7C=Iwck+# zy8a6fdl5yR$JxSsYn%Y;Da|ZU3-kX+>n)YCtf?Uqs6hmh?r(AlngksOr`kRJvLI)T&)wI-Wh$7dy}=HpznU}Xv~Ii(8JsVt0t3JGForS;TdsEX%w)fp%qA)nVT6K+89#Goqa88+w?k#2O1W^rm+nC)Ka2Z=-&19v8VxqAG{IWj^zUxWTst*OlY zQ%Bgq?vy;%`D`&_UjBlDk_=5l8F}$3Y?OXfC&38K%)Bx1v5TwE)ZqWN{!sDEF!I|9 zL^H>B_b#L!n)X_>CQ}`+T%wd4c6ZLrQPuZENr2ErLkiXz?h8;3Aq4)Q8iIXzI!s<2##Dd<(+^ zj#z5utt|C!F7?`>%&gIY=ifw}jg=m54$hgg$hj9if$MCuXp{TR0i~v0Wfr~zN{3*o z_Z%FQ%bsL8F}m|f2T$!u4?eqqksK27@Qd;Y2we~mmEacu>K$oSk2AxV4M2~Ib{|z{ zq06bWnVIfPk7L$_UzE(k7l3DDq64AFMlHpXq5h*!UCj(=s?!`u^3C0O=a`Gm@AQG? zEPcCxG=!rp%_!ATz!nq+lo3N=GV|~B&K?hA7+?*f>`rIt?C;+Xva+y6%{E3`6pY+N zS>P;;FYy64OlKP-@M`8lFr}V(#`DZw<$k$|AQPH{4XDMN@$ysk(m)CKoC#tG2h0+A zqs{;+B^aKImQkR+5G(~XLm&Uojd9Kj&wv#`Hvh>Oe~oz2&BAnK!GI&G&mzwTH9I}) zf&wM3_|G(AHZEYy)UbUj4kBN8XQT~tU}no{_AAOr=@Bld2lL?mt`^Kj$Y@-QCTb4M zpN{KSDF0yQXLG`M-YGri4~$$#OWqsN1sW7(nvIeM42+O!!juM8TPrIIGuR@b^zRuU z9kOW_Y1rp{ivr+rr&XHP1%R0+d)m8MN=0j;W=0nnF|E^|3ZDiyNBXp8ngl8T!L(K| z^>JbO(>l_?rze1RErK%ezhTZaJd{Im+5`1=KO;+~^_X3dMVXK37gMng?HM@eqJB-r zqS$5vr0GS1hJbRxT!!{Uy_3$+$!J#`s;7E%WrFu8GYymO!# zQ2-Q?MvOtiflg3!be0B2Q9IfL!xTOpmKiObGE5pM`FjWqEhs0Fv?lQMcM~i&7qb8v zjgY)$2fmtM8YlI6QNc}tFv6y41LTlx=FJDS`PWlI56*}H@T~zbAYz2W1ZG%1M|ob9 zoJR%oBWs_JGQ?l-aohf#nAn}?JtJqKePSCF#cz@zZk~9XZwp`{#&-c7~=oj z_J0fOZ`%H1xER|$)e+Ed2xuld6O<^L!4XJWQOgN46x0HNvPDkccmfhWbN85bKq0sh z-!XZfW8^9u%IdQa62K`?!$S%I6~Olb$AeSKPKiihwqO@)zALjgN4a^=LVGMnGa4pR|;DG0!1 z3~&_v_HCX4Oy`LgA}=-b0{F5d^7K+pPG|-|{&KY0?aG&^JW%pbwDZ^nP%soR)h>Z= zVgtUDjc@v!-KL@N_uM*{wzxc(=uKa#*7b^f1r{ZCwfB!NHb z{6FpbpSb==0)N!`zoT6<-^mLkNTs>#fp6R;^@Es>k-xncWPBC)D(WSq2GC8=y49;! zuUWlr&6;%^*Z#G3<5uQ%>zKE0-@JM2=FQtTuA}@+{i8n2{kvrS+O_MM)^A{9+OUO* ziD?V@57QPZ$j0A6Kzaw-xO&O(vaV%I_JWpfT(WHA5>gZJt-}z~hb0hz%N0u~KLEqz zpJkvWOP8-$xoY*Azt%39`*I0r=`z~O4WK2VleCdi+D_5^rwoV9mxpCR@J(~np z96N8gd9U>~!IfJcK94)j!MRl>$4KZ1@_L2rs(s$7KfVn@QNr6o;&1Ff;d8-Q?tQ3@ z2+L=+@35Z=D?s9N@ru@8%VP*B)*mbC9D_@k5By=o|97x2)<` zDC)@IzLjJKR_zyl{~2H+l*L$1O~eNFeVT=ZIpCUMfm9D#w~Rt_BM1VjCV_Sa4QCTp zlR!R|pOG-BLjrxjLjrwsh8$*jbL&w#2_#KiZ7a^# zfqsAZh4<-D7{J?UfKzW@fWemlvj_iQY(SGf{dYvnd-wkRhmTOE`BAmnL+hc-z2CaV z5Om6WQgr^TZOG& zzvN4QX6{gw^IZ~1BtZw##p}VTZZjTP2@&_Y>B2LH{1S=>j}=#a)539K^X}JM?Q9WA z?Sl;K$EGEZCFDErHc|L!tG-@N)cNt1%wq#4#MS99e4r(l?#2mTAt?B*Q`vG+CfNTy z-c6~ryN)-%G*P-3R`qg^QCYoI-yP?}#J2X;Uq4{2h1Z;CgV9%v!Y9n zbPOt6hy*&x$FC!mq+p!CZ;!k=VW3A`DqpPiBXqMXds@5#XPDuy9gb7XAc6$C2e{T- zy_1ppuUP!(JX?G!3DlXL!xXk}vV2U=##`Zn#hd@Cr(In6l}VrfUCr@%rHxjPl|SE; z;t;*-anG_yHlB+(10qWE<_nI^9G|qiK7736`3iFq|L~K}XD28;G46@q3O}D>ZFFGR z1O!6@txh|UBk?|{qz%SXoUnTJi4zt}AM_`s9kNYI5lqWLHMfG63=} z)xEpsf|d|3@w_AQV?|o&1Z?=sXM3V%{UkO($E9mAE`%=p3lzWDK zG7234IH!a(gIaicWj|BGo;u(1tcXGzueL7(E^y5?Ja>M6x#=KwjE%z}u}J*q4r}WT zSJ*APGEJBxzlri~tl!OTh(BxJFKx=Vx$7xHG^8W>@RpAfI_L3xi2iiq7_R5(uE=k= zp#AON(~ed2LKHj+1(D4req#6UU$ot|k!u$4{5+apa68_l zNb>BJ3KA$2Iqs?ZUHZEn z4-EanHj;SX8_AD(n_}s_JAxJB*U}cg=9}_?yGvKcYA*LU1+G{lh(r`+j_=sEizl|< zx#`Wm^_&mGKY;_QBE5lFu0miirYI}J>99zXS$)2!ih|;OuZNFZ9L9QS4f;_yRqRV? zCNJ$SvJISZT*uxOer|~MgSEV#v8!gn#T@SVzKuf)L;aaJoi{cj)t63fQ#IXeE^KbV zhQ$!GUugc!tUbJ$U1;}Mov^#vTY%4;wM8C~1>E%bCX^$xYnTMO@j7-EE(YBiDk;o^ z5hRc!8o!YQO2fj{1^i6&kLP4Uatu2-q4!koh8!mP08Y~rQNujEJ-b7T1bSHo0PJY8 z5Zfg%7}WeNDlTlY)tm&vp3lzfJk|a5bWo=WR0v#y&0YK9-JYSfZ;J4baOQjC%i}~s z99&Ms<@QUW%hZv|k8YOiyVG5@ElX@j=<4Ib?Bg}~Ok8Ie&RxgdoN2#KmOHDxaObFb zLPI}M)~{2oD1rGEti5VU0$U)@MH@eV0nfPfY@a@T(HaStOpXYHTN(aPNZrLxIZKN$ zll~ScmRFw7`d{L)uC ziLLYr$bp^}k7SCyF&QJ5WGNe%o9ipj3OTX!&UZpPG8M7IPr>z(u6wL^Xk}XY8SH)D zoI==OL_j4Idree>#pR6f2ggDVj3pggt|=n5#rJ>~%$C0ndSiP9FUkW1iHwWJcjJuQ zdR?8@3_=Yql0Y)Aq~BEBeEIW3@kB_)!Fa6U{Y!iOQT!wnucX=h}PVkL7@OADD^7euFa$ME$x)DPUzPAG}^s=jm zzw3@zG<53_@0t%Yg*z3T4t7meURn+0 zb9B>{U7T0B1K4=R6pYT}%CY&fBSO+wpF&R6)RLjrXPpi2@+pfh~R`kSxa>1`~E+c7*~mygyY zu;Wj6?sI3&m*r<>W&$EnVet%~yH~Gq+#4Z*RtyikL2DzOeiUAU9*XWoey%uYwZgM0 zCbPyBrEx9;GilK2;?uL$HYHc^3s!HCh|I>@_UgxmbPTR@Jay;wgVo0E@jF`M;YT0n zOZK?cN)hi?nZM784qWqE%P=vTUsrc$O>cZm>E)tsOe=F#JC6ITj#>WJHUm9n9%$|j z{gIl!1oO=1_FFZUXdQet%3Nq9=%JkaI5>H?CkZ5+UJZ9kCR*7LFtUBVeHdo7d%cbp zvfJWT8nMc~;f3xgesRZb>#By$FK+ley6=8IeSeLrs-uhNdc=5{mUEhdil%%|a`jb$ zn{;4?tiJsC_e^)ywXY3LYO&u8^yQ$(v5mV|m2G~x=7VmC{9|pdH9I%0`j{lX_Rc%N z4R8rb?%F(JSN^t1Pmt zW`~B>yQI%M^c*h$A;yv@)3{q@D6a~0HBX&&Cakxuvo?s?6B7)c6dyRV-6Op4I|&pp zas70#s7AM=os(v&ud&wV_z2C>qmzA+sGumBd=0Jmf|UXxx}DoWXwC4q$3k|2Z@lLA z*7PUX;NxVIvZZeVJJ7@t=Ak#R`*QE`m7j!~59O6bjYyu1tJJys!yLXfwXk#BQSSF@ zEjOcf2>2Yg&Z_Bo;eDgI=!*f(7FPurjhtE5Vb|Y;jr!SfyPwnYZt$m!o=Icex^*pe1YSbx6P_1ZvTjQs%g$J&kUv=UuhE2>Ht`>g6500*3yIUEg^~7IKeZ3+owUwBx zKN|kX#U3AHo|G*8j08I9$B%vrv%I`)+i~vWC+wG47lKTSz$3|yoQDJt6uwD@erX7I zjf%S|9yXyUcUGUAw1SYT{+(d&ba-T1ezoeE-q_o5_ctj(0;bPcd&Y?2pHG7H4PZH>}v@Ax-`ea!=gj?&!H$Sa&pO^zq<1x77 zSr2tkC~a;m-%cjEqeLjgpZKsR{1j*0Ph&rY9jEGeU+md_;^f||4$RSL6=0i;%{-Lp z>Zc?mKVGZSGC8jO%`~gg;@;1Ll9n%XdS#f*8mkA^mZ0;Q6}lb7J+imu*FJp6o4z$O zyB{!o`P8COu97FN;ZDSE5-8Q@OhEeww9a~n1G+iuMn&4o-8x~aPmg`h89>-&pvAR_ z5s%v23@*4PK%RH>rubjfKbje;7v`mfsh-639BEO*31W4*!{4zMy!{9sy&O^URV<94 z`V%wZSI+ks=7n=B+4SOx#H}Z=yEq?gGoOB5ow3FvO_^JR5z77PqY=n@B@ftvhX(@o zY`XJ6;6bdxTEO@4g~96Fo=nG^>}AkLw!H>gu2J7{y#`7jWA?`?vgAiW(gvENiVK~* zl#09S5V<8lJPU}LV@Nl5yaZX>K7Oa&%gpOBx;fQx9Cc^(+LuH?B@Cm}_R9#@Y1H2L z%(bj}8VR-K^cC*Le4lt_6P{*OUf_@|QjyddY!2z#*-}c(9#h+PC3nlZa6B_)o9_0^ z!aGg2JOkkvwS!$Y_*%Kt5wFi$AA!YPPUEM>i3bW$C1jAt3k!ek4IXz%zC?I-t{?{HSGVRKj3 z>h?3zT3Y^6&TYto{aA56;#H$_WJrgfj;cFbgXllsyTQg-i`%YmB@S zUw0kI+a^|#L+H8b(6De4Xd4MM76KX5FE7f&8akScC6hpTK-Bnt#8sV7b?spc(Rp$M z7HLpI0^QV5;Cytl2tYJH@f-gYk{?EB2UcQvVox-|ioI2p2q-lrm0azqJU)g7{K3hy ztSv*E@#xPmA~#QzukHE)a~ST#14+$v?%+3-afd{W+tk!9DxiWO%+30epYf~Id)CJ_ zLD*|8IoC3c2(Ar748_EZs=LcPBbcF{eY?%vY?~-gSj*N9h49_ef*riHF)amW{;k|k ztabZ$!KfFV1Viju>{FA&GO=>@QckGnU*6R}0WwkU71jdmw}^a^1rGIt*PI(GKZ=Mn zgpxqZwX!v`^IGa+E*WUV`K86PmN?;zy@sQ$2wXUk=+GXP$!k^FKVG(s_jL#5o1SUN z^U{2GAKej?bK81{pt8cL-H=WhzWZ=F4dE|kC^$IorB8bEdL?r^;skq~%@~llZi&(H zo>x^s9ik>^WyUF{xOa~6>D(scF_%YH@QId`Z@Fox?YUPo zRbO9xFYNHAPt0y=h;v<;r=-*4h6LDGgne+?FF6{4CW!D|&ix2i-zToPp`pj}Dk`*| zodj~#KacBOf{TziLImP?sjAFnYz1n#z3Jw7+u?T|1$RQULpuss`OCsp*@vHqtL8|> zrh6cW<~c41e5p?j%HY1|cL^8X21QFCw{px&t0gnFrS$L@_U{ehZP27%k9&h`-}Z*A zZRAQIx@!*%)reLfx}4s_t_*v&%_;raAP-X<=@I-b)bK$>(6<S9TjNcAai5T{pp~2k2!j%^|Nng zzd_U9cql}4RCW7=79keCV`Vd(tH$-(#4_o}XwwPhH>c8F%a!)k2wiFdLctK7-D|PT zeV+dEDm$9pVzP(zJ;%O`Ru2;{lRy>3?*^@sL<2xW{sMA=GWux)uhC<^IV4atkhJSj zjqfaE(_#IPsUi`;UZdm1Bvhib+{tMDT4E1#RHnl)laG!mxWfQ{XwA;`p~HTC#N$KF zUZ3#EHBt?FI>{UC4ScLQmtN89M>V%65`}sld&CmipEX)_OzKYT9GD!*1NPDG;g?OS zlccXAk{Wg!_MegoG?`d;*_b)5c-_NgUVECZxMh}XKZOU2IC{P$@=CngFBDUd`2>Ek z5gYKi_5q}VAdSUTvq!NEU#TDLceGbd%}J_h-5akwR6;0?CfYhRyXVU!R;WX2c%Q3X zTw#p_+gpQUFUV?=^(dx zPz?9a0}sC>UyEh7UGW{G!M39oZ!J-#C_CAi7*YRzknQTxp3Eb`GPUx=D@N&sXi>~Z zbW@^uc_1@jjH#BmG=mD)xBBM0T+1Kuy|(V-H0DQtuFpIZVS9SeX`8(2o92pR@%|3} z$-|IN>0VvsvGRArLxV!~(#bWK9f@itD0CStdu(S^mD4~JZtW^&`))n6f&_z-0s;rR zD|@Sq)#&r$ViyM(aHs{?zOhMfxzrUgU@lQ4kU|WRFE*=k`?` zOLC+FtgpmOk|R;u z;!FKMA7e5b(bB4IY-zObkK(J(ZeGo_h+$#Q(eDLfXLmQZgbyDgrhc;_hAL^)X&plI)eVs&K}7vgnCZMH=+u#Kpac~<>I`PhUEOaz)05xlebamVg3 z%fO_%@$_a~M~emt)ZQFO0^RN+fyzB({d}*MgWzH$5YQBq{`ihe)yFr+<0Mc=)?FL| zd#p?EM5jw~pO8*OUAF~ZF3fH~y}VHq-MU%yO`C})<_yoo*7fF?#OV5o-2i-jJuLUaVOl0eOb(g>~|gK9SygO4vnNFaTW2dz4H z>c46wJL|UC<4-zQ_2R2>>2FfvBcg@IA4k^9kGw$uI;Lo1s}xvcU8iqwA-ab3x^{uS z(ohm>w|RMZOV~JeMBuS;#uE-8MXkQmN6h2U_IBvxa~BRQ^ZD%8HXtOc!6o77Q0K&b zQS0J-2U5 z?c%uawHKRoEWAgT4I3neeyQaSPN+!pI`L6VD?s?ii1^Kb=H%YJ5G*;){X{XzDF3; zWAMx*Q2Jj5WBKJ+orB$9ED|abZXL$m-B(tG@C%AWl! z;ze;yZWF$^kq{M=4nzzWB;1tnIU|UAX_fRm=Nl`YaQ5@s5Vq;M7?h|R2{~Ua=Y(!T z2eKFOII`+D9pB{ZHZBk3DYlK*whxz-tPR!`I3uTIm#$-q22?$~;6f@o%0NxIdLUuh zqmh_IC(KuZbQUIz1X=^{YYqn{Xsf~K8xjcE^GwA0j{!TFjB@JP{T5?r+3Ag+g=%Dp zVIPVQ+(kYNO7yh>PGp&H72xA=+_=fLLMu(`G9~XzO7p20Ce~%!M`+;H>THuchMB`3 zegEpO_ef{QeZ5Gtrh>E;blh<8 z(6DAT)0G52*QH{uJDe^SyRmY(c{r^L#Rj&wXb>YhaE(3YiTwqZvMwW;FH*c+J!>sT zqskJAyb(FwwH@DKsr~uTC}$qiC8Zae$DCc=lWt)GiTti{urE6IwC)saH$QaIITSxK zFp54O{xk)n;}m75<6RQ*CMr6vKO;5q_FIHqiv|oGNL;TiLjrB^4P!lDSurH+mhc|B z{S0@ub2}W+_^i-}UbW`$&F>bJnCCtjPk&sX-2jQgOS@OIJRqC^LS6M$1Rz+JYRq&v zlrgr9KRRwX2~=kB^F+`|{HbVfg+uqlNY(%NR`KPb@c5oxYKnYuZNeU=KtTm<*GN4b zn6*U&5uXh{YrDYQAvBKeW_w;9EEZ~_0;ICP<#NYAf5v{~5l$BC;<7g`FyIrdX9Brr z+KcOF*!L?KKlHutjXl2c<_V(%D>%I=d4SO8t$5qK)Ech}wYpFO59Z_P4Zdw08;!$J z9(!RNM-TUC)I_?vd3D!r>(qwGX4+ zYs;v!bwdUBD;(FJ%;sY~Kfp1hP+T6Y1*_+{__ESP1>b-;`PK;LW1>&!NC?d%s^lXWVhwx^z` ztBjQJR6Id+L4O47G7oE`N8VfNPwy?)?vhz!^k}z{tCmCxN}k)o^yJ`aZ)5C!wR?Hw zvkR6OBRu`t1&?o6zRKNAcSANFxVsGC;zw3!lfQMSo2Mnb?v?MzbelT*C}yi<=O-V14E^lf zIIt|vJc{XV&5+Z6b7b7vx80WVU76Ww0~4(^NL#58&UL3^o%m0lvHW*%K3%x#a#6w9 zQM4W=6ir}Pbh5s$K52e>-60VSK<{r5v9}0)cJ$CJ&>D&Q71y(meSZtOTt_@o2MGMfM;1nrk(( z;TUi|y9Mtg9b~<{=&suCR}2JSBm&foSJQ%;~N~Aasn- z-123gpW%f9X08i0sfM;KuYuADbG&~;<`UQP3Ma`{=njoa9Iyt;Pq>G5f58~N%g=4W zx&(w{TQ;UcWkvgH0acSRJ+tk=hsI~CSjHl(z6T-OecfK2s2wZ!G(I1QLr40t!%uE~ zUY&BEb*DWby0LWaOs-c1r>-53`{F0^_f-sp*KI(1kA1-*dRA2j2i9I*2HrVv@!roJ z!|w>St`iXNlt!;X!|M96f})UoS6tv1bSV_@xe+R?kA?DOy1xcFMQ$Iu_;93vm9wCy zpr!;KrRM?(OUd5hiQ`GR-qa83h3@Q&u5T*VnA92$G|T^pwM#ZFyw?@nYbFE4=ZPjn z=X2eV?`7dpmYFJp&e|rQA~#eLoOcfZp>g`Xp6FL1Y4zLlK{bgXpk=XVO9NT0oyBa~ zU+(*2ZS1FP&+9g9G#)cnVn)c64VAt3iTQE-z<{>F1({?UUd$)6oU)7xmla>{d)a;M z%=*+3@EAx|xQF0#anNNk>N(zedezEdC=RPt-ADRIQr!a)W04oHq`whM7?lIF4`m`I zzS|(b2Cr@{=^=Bq^gNAVDV9HtHF?u=H)}2dhu5sr|sx_{RNt*rcYdy$oMb zLDbX6(sD>gsxJvt9bJG0{<=Q>6fSdB#8`80am(->LJhGM;vFn_vAvZKu8Z={^%8NE zZ)Dxz9;3(|63`tfd&m?j?{l&ygws2uS<3+d9A`d?MgPb%z**|Io&F{O$qS5&e^a>o zjPtHOKqAR}H1MekScc7dC( z`6}5B>~9nuNFb%sk}emuCp?!LJv994RNn?`St{!{9`AIGC7kWfG%MJv#B0c29=mim zdpBU{s{@NVJ;a_1bOktiY{IPj>SC?4xo5OGy?dL^18dACY$UYUjgVBE*ixtY)MOH7 z`7!G0-sdoGnmsg5tWEZBOuNngw`zko)Ny=U_jCe(qVxnXxDbLf3IE3mfuv> zFYamf@XW~~5-9nNEoOL2kW`Sg?n#$t3GM-yu$!_O!S2s(t!pGK9Yg$E-8n51GF(x+ zfdyTAu>YyUd#pq1wj0}%YoYbx_nK?di7%aRY_B;Ya8)=8B>e0sh*udHgL^av<8w)! zS2niAjMsUYY+VY0OE^6OWslYq@+d%@3$vb-HB{BK?Wzm zR~nYD%A9cZ94Ik)6`2f})D2_E;oXU@KbrN3m-3SVjnW3(>%B>h^Qs5SP`vO~+vpgp zD}4>|aWGfE((Fv5E6j(zxY$#SZKGrijwlc85cuJ2#Bs8GERF$LWMFXFXI9iatz1`(ix;{6eiy&BgvH-}{CfoHzp1|ke zOu}&W+9g-b)3Q5aj1h>RXy5X-{jyIygvxYUF>00V?NS>&D{m-=670L`fQ{DSJ&&J& zmsqOr4z+5lY3*}n*@Nrs5#FtjkK27=Z)(a!*lO$KfmgDxY#G1%W8#(g;9Z|Du6c$5~`*5P%1~J*%{1W%K+B9QK zqH8pHk~+%jOi?;IdO)s0x$)+}pka-RCR|B8V)U+qJt4Wf58!1RP>Z~Ej0A$N+Y!A3 zmQ$8q>1Vm5B?KlD3UThn-_7lhEA9`veIhXY*u;mp3D+-omPWCU0fEib*7YWk(>x!B zIBR3N{wqeP3yrMD$KaG&B5L&qpNs_j-1!Mh;0f;795<1vgLdgT6K%uImV9?aH}Ri{bEqeKe89fzJ$Lq&7PSV8Z7(^WPA=A-!t`|h!hx84)6 zjeZ0 z6T-gOvIg9p96@ssI9LR|;Zys+D_jRoo!)=Pr6Vvr>y_S_TaPrCJsx?ooPD`m8<3Bh z*#P!ZHh|8Mhs1~O)d$leu$EOBT54Ctz04jQ`=MF)VBP>abD0iRx5Ku9Jekr+gJR+&yt>`$tW_TR5ht{+02)x#Y?> zlk;D^N}YEDCxy|O?mb-98Ty%b69@Gbohq(eW~LlW{tOQLEa7$f>=j9b}UW6WhjK7}{RCBi%VMx)5eJom>-MG97VuIVzJ%(_@w+y>%Eg0sD zXp)a=`)g2B=M>~6P@sPVtuurnfmUXsUJPfzeXgl*J8%!XGv#L|dl-}i@@;394%o}q z{1Y-{=Hrvc3qhH>19_ngZ{r@}3L}k2Xb-k$joFb*FK=tz&QTA7LtZ2hV~mE`BlRu? zyMOL0xw4DHavkKUA$}Qgvb|NL0alaMqiX>3v$jWL&9w3r9f&P(+dE{R8{%1LTZSyt_$mHnQo~pKNAe+9Ll0|tm z_vmrnS>%7QfmHjCS+r_&Af559e9Z@>Ygt^_UlROB0xjStE&NimyU-7lM;lvy+~Xd< zePG8%msNqhtn!>6jzzyr2humUT=ph)bi9SUmNFIJx@_EoXn;S%asfCqHZJ7$7JL}5 zXL_9fj)xrRMYq2+F04l#a=c);j>SY1BB$_`dDxEx;vhyHIIjA@L(cn68UJ11`=H^2 z+y)V7Edi$yt~a_GKALQq%dwRcr37r#M6ubL6CWObJio@{=2c(C>uEp{m8SUfJ|3$T zFOID`cTC?5sKbJ$Iik;ZNAl+Gw|sH=G9;sAjD2z>Q&_IVJV5*F+EdqolCJ%%pYsmy za`iv8LP)&j|)>wABq z!y!6RT{RxMAr{>uyXE(XprtX?_2{ke{dK0_o*iXJ0tIF-AH)kD%zruBJgBF3 zy)&~OwDeI@ts*?WcBT3|-O-eHAbaG`@@RG)Om&}_!_DL{b;qyu-^PK>)eS=a8>@>z z5yxka4*yHsb)i(heWpjb=CD)eIgvH+eS(db%iZwuXx_Yg-e)dt*g&3Q)+Zl}PM)X( zDn5Pu{uRsfQ{Zhj2Qs`mJ;Js@`0(<==(L}3^X(0h>&@l7%(ZJ0i8YC5+?JG_TK*SH z1d~PXhUM2SN4EIi^NhnixVt0u1sih&f~ashCK97LXwfM2)84Bzu^-sVBn>oIL+}tT zg*>-`xSlmKpS;^#U%Q~BfqNep%h$&oS*qF5)d0flx0J?3M5`g8e&X9dp0{W%+);3E z|NCxE@5?xEg;jie9;YN5*9{+ts!9L)PJaOJ8$PUJ{M=#0zLq&sS|02N(~{LUN)sqF zRv3xh2_ynXdDF4W@Z+wUz=riQ_jHOl%b!-Wp)gNk5GLO((2|A=$xwb_d!_$wkf3#; zd4OGmYM6Q8c=eYS+?VwJ=S2QATbDgg#0*}Prff^z(OC0s_$m75u5nEFR@TO#R(`Np zC`T9$oza+Adh*o(u`_?Y6X5|6<3{+jmU{cXO&X#e)sd(v&LW=9e_{j}`vj2nIFCddNC>$kYlu#P;+m`|0`x;qO4dtjAOXC#i%T8Ti~thAt>FdA*d2PJJWm|#cJ@bh zId2>P+L~BwDL~C$bw5Cap)_~Q!yv=oDR=DOWUbG2Fo3lHHU=eSU zRYvMm-=Wwl!PoC(IAaHDN{F|C)JAq#uC@QC)@OsZN(<-VBYLW59Xl*zZD^C1 zu}BWVtBm;mV|h{e#!1-E@$ zyJo#v_g;Gp*y*Ns2|JeS;B%{-nuxFT9;zyLb-_Il zBWUrKVyA=~zQMA{VcArm(7?Q-n! z3Y>}7t)5~(KAdB+_<0%$ti2b2FqRuwtr*`XWt9C+TC99Z(Dr;hovX=n@G>BQ{GBkw zUD-foiL|q|K1VJ2^cy(yyA9+y%e^#Q*@wyt!^*G34!O98di^}fLS%^`K7YL%{n7|H zJGK=+YsLe8s(15p0mv>hda}CcD+%Ngw9bP2iiweSr>g2lK9*E z9y?rMy`;UC-TY~4dzifNeRG#UAC98VQEqv+>LKlMl$gVTV4lObgUv(rE{UqY&q`o| z;T{sL8e95=ogMc?@mgOM=KR6pLr~}v#mPh|$p)Ov}7&TjC4OhDjx;Cw|76*W6OGWRl)!yf$#GTn|bNoo$@tKGBkwVx!E^qCNx%AdAUY z5=94idCft*-UV@i_Nn(rzO-Ydm-Q&EGH@yV09>*WGed{h+-(v_u8c2l(l@~=FJpP_ za`8iMNlbM?a#eF7%EVG#v&9zXg}2ZLZV<4a>^hsx@fRi`u{7{$=D&zbu28b z2{qa+gdN?{fyXm^dVoSweJ_929|mHnd-5WiQsPSQ_cjeDO%MWWt#P{|w5rl}N!!D- zx8}REI_`NU0i@aXNl_^qwkLZ&t6tTNQB$eK{`TE9)(7 znNT|VO{MlP>`HSQ?9uyVBhenbPbvpod4-iql0vk9e%_&JHCe904peZum!}PTW>($l z?6U{-w;-zj29Ym5&5y_Ni9f+F@Tl|lU1)M^6p8top_YP<(ZMR3UqN9M~C?X{)ASz8jx)2={LNaB5QX3ppNzVkcZz31F}|L~7- z_Kw**dq3}b*0a`nm2(^OyLeAFI~C(eOTdO$`GW-r0SsMfT{aP&0Uft34~q94W8)0Tn8DAagmWH8t0>_=Ja-EzGBl2AR6A%*=qq6GlH(;7H zapPmVS%~Xi@BI}8ry84Tq|fEvQX?UK@&ZdMH?(GbeXPSeT6vWX-MQx@T#lxqAlHCY zm3vcv6c!vrk6}|*uf4}XRckjbrLp47o`W4s*eGL(~XLNZW?jwq9;QxtE^=tfNyePkvIWheb!xdRN*9rg%DDnz z0t%``5{CU=-$z28>j<65AHrmSnefTCvsFGFx7=kScuL&4I}Tgza*ydY0XD7ZfL!)B zwG$3{SBxRIJ7MiwF>8@QL%=W;Ejw;stpH)5zFe^0P++ z-j`tFTFx}@zxjpv9Hr}S1}Dv{5n^ii>qg=aUs@mJF-Cj-d_vDN{777suID0IV^Z!M z=~X35j?PuUgZKd`BgI9C=)uK+l6ZKDMG42r-RsM267HFBxd3w6Sig(g_e%RJA-sLZYBy1s0>7fn&L_oGK{BAM|{n?sMTDKrto4m!2&!G zJ*~WlX+}udbjHv(n-)iaTh8fP0zwIlUj-l*}K8r4$Xkki5vppWGgsjbsd+F(Ytb%A_q-Cu zTI1XDkab1uv`Pi~LB$2vsaZGEGY@qk(!Z~{pCr2HAEQa6Qn3XS5*g-;#zu?dFFLMV z3MxtqfaiLV(Nv=>D|FZ*kK^IarT`IB_yB@&2b#ACzU*8sIom?Fh!%6q52NSa=duByBc?dam?yYlZpf`J)PN=Eui!p?1tnWX` zOoe$fjC-4Zu$)vrK|fSHK87gamFaE{ihVgRn>UcunctaTf?vL;$hBGXahuQE6SY2L z+%v6bYBV~d-ECLZ&7i)bwi9jm&ORQv#5;|tlp0O8F05HlE?{&{;@w`WzD{hGAC@yU z6D;h06Lx#{x?%fvfkjV1C1tWIZt?c5{QPDEr*l0YC*F11Z7PXw1VlPVojUj@%8W;c zN^Avy>G?(QXX_6z3HymFZ~cWU8-Kx-C$vrdr+=4~sir^tw9c+UGE3n5{{d6py~Ud= zwA3aQIoxS&)6sRsvXT9zceS1VCt_uT@Nd0N4;3%F>nzt{H6jfCB_Onf!8}5e-y;nt z1@Yg_8{P)<<$5z7G%fzdZpT`txc}RYri9qe<j?IbirGG>FJaIb5Bq1G?&k% zEWeBHcN>Wfu>xp2xCoNi0#1q!fX74_5z?AlHcM9NpBnuemmwY+_ra*SH56Bby7jI0 z%}1^t?L0u00^5;;^)0Co$(QftJmF_f3mvlr{P*b?c7%B!j>Y);5zoEH=Tc0W8A_S4 zKfC&~J6%0w5=rM^`kTLbKNnnD_VGj{u;cIhrKfLy@oP_inX<}E?>EvuD(xxo21Ax( z?g4t(eL=?Qp1(-xAx1;hirCbv7#R)gLVKZ>_23 z=`jK#;-r>m828|<{ENlbc<0l@&+94Ji0itM`9q*tRk;6e88f|6bm(Dq*uZKDNALT0 z7F`Wcs*Hq&X~AaIr){~b-0Vl_?R?fhScI_e0f|J6k&{yq?fVWUxi3hoJyT5(h~Z|N zcGRu?HiEyTHN}WD`hj=82Dm=H1F^@}3TX^jPC%0^PKDCt(9DN^HQ#|OH9$+ne>ON_ z>?=AnBIH$|nku=CqdLRrD$3>18^{u4_mpDHK8D1HiDy2Hb4uTC_BId<7}y%PGHIk* zjvfg-NzVXx_~F4Uv{_x1Yg#&|2j2&8kP>(WQ)xjDCC~Ue+nN)e&bmhC`DwnFUR_y# z`u2RIIpzix@!`HFI|dUVIWJ;LU`Z~hd2-kV4h=F^tkfK)|Yto?L;|(u+JR4yX;p5_hNiWWU`r4zX zZE!7{4=vUJ2J1T{0IqE43iGi)K4M=qEPa@qlmS)RIw9i$*0FFNzT0ri{if=D#hsn3 zw7mQ}(Ar2EwfPo72YVln&GrUDCc>1x1mz|&4L8ea4fHvpgW)2WZ+9jg12`TDd^DOu)?a4Fz{l7wns)=Kfspck6H*B(}%o9z!a88KPq z7lAJdURJ=Xd-YI3zX9&h50-vlKTfe@M#3OQG=7~wh&tK4=f&}%E^%V<$Qp(aI=O;o zx7ptQK4>uIg;eq<{t`%GH58QqSvFYHypqcOHEXvlVmji?1$CLmz#5AmEIi`a?t)Mz zDus5<6LOcCPvs9ZH}fsXZl0V|#A71cl!9sGdWk) z@)CfCkAi+#Q;>avN}^d-jc7EixW4Pv8K+~JvSw(8ip17Bny?Rr zpVpYfRAe^QpBu4eZmgNa$g&PeeUt>%58l1!40U*l|Xi>oEqFe5K6`YnhPs?P6 z3SWYnJ@RQ`z9Rj5&Q5g-D9Y)tesXpKbgL%;xf8sHM8r3pffYmCjt)~Pr{)G#KH8Y( zOLn1cNL(dOsMKfn7hiI`G&XF^_m!Lm1Uy#E*%=n9P7cbFQ<=BJ(8Uw+xPRMYw9(hN zHSpZ&2PRM5-Dt5J?FqWEe>y_cp(>AE=H~b*AFuATN;KUAwvJw4T{?P{$f5l( zAmRthqPWGWt_ocB_xj*UJ5$DFo^|QH-ld5u>>t&`slh@oS9nu$j`BpW&3%=>u56tY zIDigU!}b&MAy;_SDBbx3stk;u24l)r9>tQf63Ml!rw zl1-5)9-6i_kR7|=UgaNmrqi2_Kobh231)^LD76|oj>0(3-8T7@6;v2 z3NoY|2CbtH&4xdwhLQ|*NlzAeOzAmR^?~XOs;uN8RCrzrAs}V7H)Q^N{H;qY0Z|8L z9S?+PcQ4ex>(8nVJM1TM2B)w0=c8heX!rInUpBZyprX$CjcFAsYen%?E04*6zq}3$ zzH7Ft5HSx7WMIhn0?p7cm+pbiPR9RjQZnyMVXz7?FZ^Jk3i)({#WmK?j>(e>9(76c z8Eiu5?6zS49P^<$vO?m>!fgZ%uLFNtHgfODmGCh0$y(L7==M4};LHJDzm$`~LaVl` zkc|iPDvsuM%-MD74AcU>0!#W^A#850O5Fg}G9FJYps(G6a4@|r#-Wt=HOWkSv`@fY zlpJw}{c-=*qqKBZa$YEKaGb(!#QtD;2ieZA28;@Rl~oHEeqN*J%f(gc4}g2gg83A^ zTx}=9Bw!MOg}2pPk~ycM3pjHm(Cqzc8Y%_~5VuZ+a!OYMyolK1n!g=qMfRaNBAC%m zd6P{AOi`U*EJl@>JbA9Kp5tx#dk=|u4$3p#MP2=M7*w60Be62CUWA-#JR$lj(bw^z zqIuMrGNAA#2^+xOo>@hY?n!V~{aOj>8Y5RQpFoBrvT+{2Nv1^lJJkqv?~4vBd-pgc znURkM1zoK=OkyRrKR(z*sz{vsu)V`^M^QocF8|>)erIDqe7XULu}vJO+o zeXmwYDZd>zt75_Zyq+I}41c9@y*(?UriG4uotq%~@>W=tK zp@2~lF->6?QGF-~b0*U=&VwubwdEqHU_B01XX@A*h*W{>!t$Ca`xsAEL$yCk1r3HC*=!Yf4`McwS|M=9m{c4RRQx??ra$#MMo z3R|NrfM%>m!hhvsan9u$zO~YpdGy)l{1{MtQ{h=*jx6oZX$G*Ww?A0)%Wzow+y$v* zM;)q%rPr1Ryk!HkpPYd8@U!iiMQcA1tb%SUy<0QUS?^LK(te?%rr?!g8GLa11(O zVp3k0S)^+GcJf{4*>F+NUj%i7X(~$YLVO%jW&+l;F0dB20t8spf}b*$Wr-|{g;fN` z{E4RnV~z>F&|i(3)JS~L8W`7JIY6Jg65!68v&LKM)>8VfeOk+Z)2HzneYtt?`Y=e3 zy(tv<26y?d{_9XDsCBphR=fS|wL<8isC?WRViB^%E!{OucR3unHgF`Z0SF)A$UY2N za;||lG8OyBrsz4dU>r0npRkO+OUM;I5MLeHslEZA9%$8)as1`3HW4>Nt`oKt6eQbu z!>mD@rTp*Pte+8$)qdHiA*t-f`j-8rK2cs7fF9QM^B$`&>@hu83j;8IWXJBm&;6L& z?LRmp8AlN-EiZI2gRr?J6FNISyR``{ zoRyS>OdB5n0!!nYMvn}R14^|%&)UNF#<2f#*>Z7E+#P_L(p4sokZ-PdN_Hdr8pi(FML6NL{T8dU4NA^&Ra_|!zTmFNyH!buB zd*@pQEVAD|xnvoBjSC>U^q9>fEPS<|+OJbDbXi;u%h|wi4u6*1x-WpPzR*Za(W7zc z7fwWCiZ@Uq*-E_Vf{I}<(NjG7bXKg3DNgPwMumnHiE*ovLyLXeNZFWDMVSUpd z%q?qqa1}9SX=Qomd_(%{dr+AtGE77Ag_&vnXpF7Q(u978rXA}XSD zf>{4d-(jTr6OcinGiPz}!J&j1eI*FdXkonHq^{g(9mOj4I!f*C>+mn}5E9Ql_{kT~ zkMi#-h<_H6q*}B}uo+Z}xpLEV3I7dGq+-TfEN;dRw>*JB zMh4SKV}P>Hs#fCl zn>hGlZNaG~AaK(iodriN8TMV}WDC6RrNQ#zY)fb>dKy7R58|-`NSg8z;3|_r(hmZi z;SrG3=OANwXVf?#lGAj7u~FkbULcqvT6ON?T|wWx2vJwLlaKEGpYGu~U{tJ(;&7?f z4oVbf`s6XTZGDnduGQ^%ll&;0dK^z9rNNWO`KBi5~X4(@zQYbjKFJE0jT2 zvs-nP$LdU6*3HP#p_UW!31L@3q0!jOIK?MKhH4u^$a2IHn|1? zp2_fwcfxXBoE{ny)8tVi#tt&y#oF51O5{X3BEkK$L)>s$$HBQNr^@f%k^+9bxD?`> z+o{~Yz2xLSb3#_esFDi5Gf{T88E0Z0huGgNYqm_gm}0QNCz5*#Yu`(vDb-2%kMNX} znGRGYhz7ZN@QBajvu4di$-TNP5l!iRG<6+<{Bq03oZc+5tU?Wdwytc>OG8!5G*Mk* z-LVYM2RC4pL#p8C^tapK$GhuOBBx`yjwee@V((VMO)tx%y^^(3zTt@5j*}KqV6>Jh z;f$xrly}n*YUC`u!E#2f_t%R4RM%XYZmU?QNps>PZj3$#O)_y1<{i;8oy~mlDfmeB zQ_t`A9{Iujib{@l+G%}bHzk}mYB{0PDYk>Hj0dy{YT$cnsN_W_sGYlsty1!54F`UL zQcG{4vNu90*Fz;`$hApfaCy|W=9JZ<@CJWUsGyp*XzDntYQX!j${DMMuspt~B@F^mpHm zWb9UmSAEp1_(Hk@3TCInZmYD%4##DSRLzE~x|}d$3>~eM`GOnz-@g~RxQ>K}m^ftA zoofD`dvRoSyXr8pz_yt;V0^FhxONs5`p(mYZRF&(gm+(cYEcVq8--zx9sdp8gdHTN zRL!4VkuFPY16}_`lK)QzZM3H!1`v~3RLYyNU!2$fGzQCgm6jso`4M`-c%HA9+KnwasKA-!auWM| zU9*OeNQ(QiKUv(f%T<=E>lN+u%#eqzrxkfGm#0$V$P;cW`u=I2VO^1NYfrOJX6l?)A#Mj~wo-2~!O}I^%2SYKnw$tVCQ*pBb;$R+)>2n((D0%^9nnjA&`#sGJI zd>1@64`o6FV9<4kw9o#?{rj;T9kLwA8e3_y%k(^4pAc(q%NGPr@Bw;0f3!k`{#JyM z4aOlHvnWc(UUKDMQ3{^mG{PD%i*^FX?pA`pv3-<(X8!*PQC|8RQFf@*q6|~hjK>#+ zWhzJ5F(t2Z_$b)x_%2|LQwH*^e9sQ?&>*+sq^!Q|mOg*1XXqDNH>`ui9ns$I@haUD z^S+rmeY{JJTfXw~hk#h>=);+n@82Wc2@C^}@m0nj2E*Wtwe)K4C zH6PazLj{d3mNNZA>sN!KG+#tY2`06cEipqZvIY>#Cl6u1s59;o4LAndGRE>5J*QM` z(c~Oo5B&a?hPFLSx4W^77RKlPYA_t@|Ks0|CI0(J^Z)H87XR}IK^-%ugjBV%@{PrI z=W){Irm7i77RJSq?N}(l@<0;f2hrY%S{C|cZmXpM2=W`}m6cls;IL8c#fvCt-pF!OSq)ELE~4Ux4p0!{)6wpu)=BgsZT*TaOAMrT-jQq?MYg(TncV$PpzkjY&tBh^mTW<&$uWYTD z%_`KNYI#XRtC_ud*e%xN{s>1&-R^!Pm;~g`#$S!+;!ZDII~bFYNJN>DVkz41JF;6Z zR|d`KkAN9Os~r8*`hz^1GO5w7IisFAdGEc>4_4U0fUP>;$;c=#K}@lx#AIs-x+Q8p z5~?a$l-*pgaJPAAY>}%_Y14%Or=<7S+5h$X@96VVeZbntf?~c zh_xTEwo_F#Xfml+gGJ*Kt4NDVg{SLa^&oD@_Qm@*9HFqSA1q@58zK+G4z@S-ogOnu zdU>+a?@KT@s1y0de?LKg&IzkL=d5bMoKR=?FWO)0M$+&<%?W3xYeo2!KG;yk%WbWO zLHxtJMfG{fB_RGaoKvs|$%5gS6}#E3KoBfAt}=JR+XNI*F18Vv_5eX&m7t8TY{G<7 zx6?*?CsJHTUYW{lKHBbl3M`GAfB;N0_a5@=vNP)NGS@3pG&G`#B9|p~KecwbU$JbK zR0Q0d*!cJW9CGd3Yruo|ME^Xv)63i>v+S?x@cSzBe%}*+ftyofN5Fda+5f$= zKtwl@HMfx_+!BucPw;oT`BUpkfs7gaj(G)orsM(V=xw=o1{>uP9V&Inm!@d4;MO8i zjm9T++%E{&)6{#1W{bYx-;-OnvwgwUuHq(Ii-*3xz*>mwCL5I8ZZB? zu(lJ>eK0&%=hA8v#`LKwlc>Q{%BdaimXjR&R=oz{E5X@CC41jh1zZUNQ&tGr$F+@g%38KlfkV|>_^yOV!U9K9p z`%JyTtI3VJ82sk@hmuQ}@2?2J)PJv1rJH_`m4j|?W%PZ#R^+^cWEJK_OXG>Y4BmXd z`aRp|Cadjco_t9|mk&LdOBcXMO)wqT;VtruW}x z(CjV$=dF5R{{mRD^z~znMzbA?|B*wA+Q}i+06C_zK3v=u^av^Z zl8Du%6=)GW=c~o~+#XoIGGx9+(r$DW_?AQOaPk%b~BvVqvUhJH>Dxe(QsZp+_{p`Gpno?Hr%I6G+7A;@x+_sNfX(DuoS99zf4asC*>E zC#lQC8I^IFPw&grdW#ZE!YIYiVTn^wV|S}y zRCM^i;s6mCN)F1N?bMo1#l4&uRQS9LLfURCW(oWt8+G9F4Zy?wT`G2++n@G5Z{DMp znMfRqSIv?wRH$5j1>r;m~&Nq7u~*HNNp9uYe#7o8G-Bhf4h(gzAj!% zS&0OpuqJ*o;$j(Z$E2>(=W8ZR_~=0ul+fPTaE7Zm6jmLyjJmer1UlP`IDuWF<>>21 zYY*0k0SWdN588fl zlT%u1#a@-+Udm6GHuB%UGs=4MfzqJ%W!lmI-hkVjTl~t((R_R=Q$*1B;eFmKrwLfX z6|PO}C)%g})jVf4v1ku^P8=wvO!hw^!IVoe zsP9~$8Tds)?5TY9Xn#iSHPnVo%9V`!v%UTk@O|MZEh~q;F{|4Muel`?Bi!IC zjDeOKqAI*7cuSlI@J843)#7vX>06vzh!9V_)IJ|Wrh<-UTT_-q3UB?cXq zlCxL>heaaLeKO$yuYTIurr{7W&2ut#NJQdOt&s_Zq=KuU4c3fTjk9B@tUL!Rx47kf zrD@9kt~!8!w}ayWjRLH5HW51xR3Q zSTaE+y_3!yOoHcHV!bmXjM>sI#VCxOoG;27$5UQlHoJgm#T5+H`k`wRq&-CR0IhmL zytAulsRNmQBpLp{5c^ffWwEv$u?MbQ&=h$qKt#-rTx zE?M>XB2~_WO$@op=z8!O%#XPthFOJ0Pw0;hBl8}C;=doI10s#UY_6GIn&z!es61H{ zw9nb!;+&^F@-41r+aMdQzZ#G#x2u%;U{pFpB`>zD%KKZW@EjoR zb&H`thK7FKJn++B@B)Q7lMBBdrNd@6zd1Oc{%0Qa2QX7~bdFeanjNF1o;$h1BQlMG z)YZ@hey|ME;@q|$rrBK|Tw)LuMqIZOJ5oJ8fdn51qR&(rfwUVEK}^9 z>`(c*5_WubE~Y?52a~rm`M^5}P43?0pi@eHwVg@)ss#(}>l*Jm-3Hws^;1%Ru=uTH z?FJAe;x`SEC9dB343r1ARg!eJiqv)4&AKMO*3pK2s%5oyAyWp^1+<^E-suzz80a=Tbt0$-sKW1dg{evkX4M` zTJlXuoUg2#sp^v2!3WA24e;<1q6WU&+d0LHK%Z$x>_7P}oK0gZeY;EBv9DD`Dd0H_ z?0#36wX>LmfBzqSvo~5#B?H8+=@ZMgFMG*K2SaN-J3%4x%(l3r2+<;P8`#(kkBK&& z#y$53S-B(IOB0~Na%C=ja8K;zdT|QU7t0{|zn=Y+8#NH{+<~eR8$5VvXKywt6muey zV%`GGUclzVF}TH7@HaOWfHgX0&*<$AU*o9~Z+Y>e@2Ey6_1r8sx%${vb6 zANPv;w=*r>P`zEl3lFzzTq=Zhb&LdrKHWH0~w7SRci9wFSR_( zLb+Qdk31N|-({wU-Ra62MCa-Z`N=|H4PNI=toZ;=i6i6l zECv-@k{!ApTGN6CY2vw(e_Z;yN4tWi6GH6@iSKpS7QYjdo!c1*qVIQ^Pk_(h z`uQ0)nFd#OLcND;L-ReZOoqO3bpuUuzYCz*fXj5lhols*=y2! zK0fdyh{|_d4?bBrSx{;g-GZ-zX?<<&@@egv<$I@sQMn*uZMV zI(jm%&s|XsUbs5O?wsqhbMZxYjX#F4Tq`s!J|KAXI)I%w*n|Hd7JqFqy*gJUwA3rbHF}4c2;@!h+>Q5TTceHo|RlidHj)Gpofv2^@>`Cjq z+se!oMD#M)e2J2zt;e-r33{0d=GYYA#Emv+YZc7#JRBJsV$;98n}-2U)f1NgER|Rq zb}bT2Sap<#q?8}xKE)U=B6r%^dwQ*k$vPgfTmXd6Bx@iQxFuko$~=&skNF;+$r}%u z7{>9g`*+=>5NQGakDwe~W}#Q@*-q_xd&uIekuyyC=qkn;I^~xZBBdc1d$kO_hqrc$ z!Rx61BDX(%2b}&7j{epyNp($Z>)9j|w z(K8)xvHOvT(=pQy9K<5Krsa<<@Je4~wuLDTHT?UOC(jrrHlo)Em5DGP3eWY&i1WGDn1t`4y zC3s|-0vvp{z07Xgx!!bdg$xyyIqAi@Ma4oYuPVmrv7|@|eEN9slxqep5?5dBDW0+D z@5D8AiAMqz9`!LG@M58p*F1I&f*me&6$1&;SX1wr(xCe@$^}5Wz={KaZ_EH#P5lft zJ`?1_n?BpNHRlT(D&VnjtU^1`8x8XE*YY3|T~~)?%hy99w_~J%u0=h*Wm%`cA@uau z9(333LhJP@;o|Q6V^?9ca#TFS&(Zc7#0$DBix!k~MyJ&LDmT{evYW3{3(c++fBcU-^)9zQ<^hB%g_B{`#m^ z`llLIv4XWzKUlm8N0~Vuxyg~e#E)(65GQ9}@!Tl9dnjn+%WA40bwRz3U=1P1eWadi zlF#WAzUFA*q!eZ3Igl_++NvIFLPuU|Gdo+BP3-1@=BFO-}ldN`VIcmYIzn!`5KTIAYIH zK51UPx*L8+<8HQ_3JCfgK_Qjm4S*M}l33(+qhhMosl19MiLYoWg*H)EU~44~*L=#k zOW*bQ#lnP^L(PHY!xtawC*5JlC_e}Nli@0q$aS?=fJ;PxleX%b3~1IW z4Dxh=5iO6J`Hy4Gc8;|G#~v3)M9VW=hWON%Ww)HIb$XSB!T(vfd;3^+c=~J8J&zrB zfZrJ{!Po!5ht1mD8x~jRvOp%)NA!HbW?74bzYF``qkz$#@-6rWiaZl*aTOGNdO7+d z(Eg;Swz+#7t@5GOEH*mX5ivQ5`%}`n!f$dOj(B)i!@|CPho*W9XsRSYQz@5PEB#GV ztuZCN#tZiB@Ls&f7w~#2)raeTqDb`$$Qi(ed<9Hv5CB)$l~B2a*^8_2Qy^c5Y{qW# ze_*qacR(JjmZdY|`q-TwV^;JgnZ8*&*y+yuH!TllXFR}|g>Y~9^|)ZV9P^=Jl{PY{ zXhtQaH+H#nE7|15{H_9m`bNrS4W&18m1Q5xIxk)8d2&olSm9q*8I=>x+WWP9jml3g ze`q&_3SfQn%}b~jBsB@MrX>R#RSIZ-7uo=5u8@GJf9`Dk)LI~N0%U5$BZ6nV$uez! zC1h;b&|%;0f5;+hUaQ(}G%NkC*I(>q)B_@zs`24<`4 z6O3V(YDGrf4cvZC1N z6Bgg_6i@UJSQWIOZ#tLYGHaSQ!DvKsb-1oIbPJxFv@V%z31>kVvmn%2_Fev@*y8yU zx5cmy@#YPcaA&Idr>sELnJ>ob=X5of(Y=;}`6?s}&w?^gq-I{N!62vRd@hBZrWMoi zi_>5S_Lt#;QD8&BBuq}_SYC-xgBn}jW=dN1KEsS@Mgn_vcb|ZJy^yh4aKjcF9`p1- z*3lLyxtmFK0KK_E&;KV>;{US`)%&Lmqfg=+^at*Je{Beb+x;&C3$tUO(zCByPa7f1 zORDmbQct4_uPUB6g0RD>WHTPLkSez!$L;PxwRG-7`}9G`&$Awh15IsT8tdZahd=<& zGJNcd$ROy0z@c%!9BR08XmqC=STlA{;b;-DVjUqg;WV(WyEae1zf@(u|KNVLr!GIagKK|r2mbb7e&r52|K<)L+aIcVE2KRSCZW}I zT%s(Kbe(gfJfifPQEs%j$+tLQF8ny&b8Zxvd6Y0YP0UrPhry`dT`A>4V# zoK&yb^R@gJOM~&U%PA(vd0V^w3Wz>KO%Iv&@8vsiMyk*KUpkXlQ?@f-XK>M>R@ua` zvIb^4z7{6|1CG&DuKaK7Ia2Rv56~1Fbe%~oCiUyw%-30IurTQFEDQ`yu!`Jq=dA_e z-IjKVZ{2|kKTVci8dfMHT6Z|kwMIW4Km#B?ee&1J@W(%`46z~qu`F3>BA(=;z^Th|W(MaHH9pNMBl%8G~*8r3x`rDP)+pFZc!}1koVpLO=HYwd4pP z_HZ{h-I8Lr;(YpH+=go;ARo1p9+jM@YkuRe^e9N3309`v%EwNN2<9yzYtY#@i?d;F2a+rN^cz!?&6X0@f8_&~2*eWgN5ik7mZwOv2M&OTF9ra#3$#b=R>Xsj<_<7ED@800Z%* zdj2}tZXlTJyry>PIOyHC0o#KuLadH|X_L1}YoX7}#m#p8`7Kfj$|lljwiOab$4n>q z8^Cfy@sjb=tFQHF=z$Dg6u{XZKAEpF<;p+Wy$Xc_P@qeD)mzPsTboslf*B6 z-{;ewJ7|JnYio_j*^b0ut_k(|Czk;|IBsB5&kZFQyf2vxgdY#$5xAxKfkU=9J8KI(4h5zOQu>0k8%BhFTv9Ghra zOD4}Mw0&!uljbdvV(_Iha2ET|M6h^Hnm+)(({uV!8tmKgS~_KOr#=bozPk6-)d#l{ z(YXpPJkJ}ttGk2eWUSs>PtrqE+?lUB=vQ9iAYE(1aotx^Qdb+cBex8niA)G{Eh*&g z)fCyNnQdVR-SDX6IM&-lHC5j5$Chlp&hB@BDVxw#Cg-7yBq`6KyqyL= z84Y$I?N~6A{jYW)y`zjQdeyW5?CPXi>>G?aO*1u$=b z2=DezXNp2+crkP^n5S?2QMA;uT?z|b#t)3^MV>kFoP{5Z7Em2YLph*UP3D~8k zB5DQ6K<8%T=T<^;ICakX%sQ(=`di5kcV#);Hc5nTO$qzWRgxAiQ=E{5Ott;UQ>&2w z5R2>^A&5a%{N`*KX2)kF%fn0-v+KSpp1R>3;Juo6OSj<@?@Dk6(Pv3A#$3VbHACMu z=?a;tP={vhm)MFy6FjghouD24dw1YG>`HWaxQ^<(!Fz43ZI(iLY?1{0_B)9cM0mKj zYTeL4`++u}eVt$_f%ON#{dzcXpk-<=VB|k#ibx6eHS8*3#&ml%dFRdQ_RwU_J&zYx6us;j3Thum zDSA6GO>hY)!-Xzd!;q;|^0eNy8lkmikCb;c%%jV?(=C`Y$qwv?bs4)RUY)xg*C=^? zWj2<;rG=kX%HwL6ENVhms{(@sbO6ctV{!p9&3Y)ywBz<@eM_X(m`SFmvnzd~x4J@U zOY?2!dyg0Af7cIIeehhAGHOQ~3$AiS8!_L`j19!wT~E(_|5YnboXrNwx`u|@ql?x`4-nPWI+~wTx|D5uN#yx`P+~DIIzGSEP+m=oRR)Pu*TFkHA=?r}*y|W=a z<&O*5J0Et8n;y2CwHdyc@lL`&mTdstj7oloyxrvdsVRPM6q=;(1kjUnw#76+)RBWc z{U;Yv53?$#1|pgn_~AVK)`|!8Ucd)StFL#K9Bn4?oiw$i=f;+&J`piSqG*F;1PUGi%_ z-_{T?cUw7AU2u1o>9Kf^PO880skurNw|hV|`il|zu1X%ta$&0g zD{5#Uwg?3B8&H>_3MK{>fZy!y)=HUJg-bnJ&xG`1<2{r&t&c`-oRR1&h+gWur&s~| zxUiWiEZZ3thxj|4B&vk&&?EYy+C9aPtk{E7r}F5BgF)EuKHqJ=h#wX7wn=t$k-4Dj z-x$Mnl{V2=Jr;g1RxfJr8?i?>AxS0)OGTz6#ytx7YPysx}tDeT=(5WsD5E*gl(#bjB~bT1Q9(goB=l` zx_k(5unM%DG6VkoGuw{tAc3aZZnKpTFI%2F3VBxhvBaggh~e#&2i}45-tBy6e(^mP z?GyvXG~4%;P&%~PU+}f@T;03Q)1@JM9~`)N>zqwAf98-P^415~fP@p9M^KT99|5M1qu+`k}VuM9qWr(dNM6FtKRc{p=8 z=J)#OLdzd4;}5VM$PH0wE--$s`t2Ls^LRbc|M8ehg3|(wJt? zPa<5}z3nXLeAu3;^LC=k{WYBZR^(J4MD7W|M0|~|4}Y+Tyu&feJ(z(``ZhREOkH}X zj7-{9CDdekblz>z?6pe^?H`Vs-*7B@JSs1<#NoV*nw*`5n5Yy5OtfcB29MNt@R=g< zH4~KjXa0sdRCUt3_L@wJMA72doy;YEaAnfEUS!QaWIqK9%x(%A>W8fbNGIG7t4)EB z%R(`_Qj|AGdY3tkP-qhJ_JXU~EY7-8)0OmOfid4*UY`3Kn3+bO8?MMyE(=(5V*kH* zd+(?wyKdbZA5_EwVxt=s5S1n%O-fLtNmE+rD50qI-b|vRqEaG7Iz&Z!2kC@}^cv|M zl%9klkWd1NXYsVR?ESs_8~coL{&A?>q^^6dIj{Mf*Yu^85lOD}L+^vdV&HGC@=NL| zT{_FD@!RIZD~f`-_q;>zM!m4#(3S(Xhm)0XsFV%Dfl3TG7HwhY^j0R+u*){PV;5hRKP-1N`#+Snf)B8yI|2YTDpwH zZ zof{OIhF((!p+}g~`dwU(1cd2gb5CJM8QksiDZWl6>t=Hq>Zej;t|l>;tSvRtPY6T` z@}x08Rhgp=tn_!4?s%rlK)cB@iXG%lSL#Kjl#zk#2I`0Ski>3Nt^YVXO%yvOqpjZHNO7oy0yn2|wvLI*DvhX_CKy0O|*@d5(o4<1N zV)f0qcZ>?{v%F&a11zS)LO*0X+;0tmOj`%|{r;~UdPHA`yo(49lmN2k@5%1D5Bw1f z3;M^LsPp~Sc_uVZ2z)A+7);1oRHxql#Q0}P6};rh4= zstzTB`3c!3(M8iHC}%Lm+dTnv8C*!y4VFr~=ndcJuZza`I0PXz28xOqi~{W$oKt37{oc#i_K zJosn#bGxA?jcr!IJTB>74%La=(%3w^C+ntI}cs4-~w`=S4V> z+z;;Bgh)S_LZ8Cb@eaF9#c1B4#=at2vSxd=J*burHnLLjy_(WY12?G$e&))NvGt$g z0pS91mEIu_3sn;QA#JY9*qqkdVwzd|f~mQsw2g`0hsU0vPU)~b($6l^8Cn}3;L!Uy z-ap)Mnxbw3sI>SO$?t-qtgJ*{=449@vQlG_>lRoCV)MXbtLm_k+_q*yCT8~p4!9LH zcmFK$DD=o_YXlxi_GUk}d3QQJP~z>)!hzb4i|ImF_cU7Gf7fU;KB9htl^IYj(jOsv z`vh=1`m^UjL@BFR{CYm$sw4-*U<;bmyIlasNiA7vQi6#a4k{hj##i=={KwAzp`>Dy z^@+)1tl2+stm2786jSxTCF0X`N^sn4)7|takc;>K$6P!m>`QHM>&Ksp1%DO)O*p!w zuiSm>c_>;yZTeDeJH?Z9R?xD6^61T)BZKvg>z{!gazHuKG3M*fuEf4#std^SCmhRg z6~OZ87lVJeRXLb^c2>{|{08l;s@p#$3GHNxLt1;Je%`DLFW@SF9buitd5e1{JX<<~iLZG-smQ-7JqtTfmJSmGfX(G&O4Jj?j^%c;V2o_smQQq}ft1Kw`;a zz7LWEb!p*+iDR;-tI0?Cw1goTFp>ZUu>XXT?PcIiXmpYWCWsDf3O>V`iv2{bM4wF8 z&6N2=v1A`OI?TrwjP}MrIv@3Sw%LoyFZ<5X*rrfYIT6Lpqwrk+*qU~9yeWipZc99r zO{oS0rMQC}>*2mPn*5ceok>Rx-bJ?IuEqP)HK)eJ*Vf~uOa5Y*;X&<6<99a$tf%Vfd!8Hh zz={IzCGa19CWP8LLeB(3LmdiOM@(Ns#V!C+BNY5vYz{AU*OnH-$j!Rpo3-&MUKdR0 zl?iZm4&0!!j8;D?piAOrsnDM}(DhkT;ezFnkLKN1Mana#O`YTVDp$OvV&$63Ts)IY z)}te1#M`Gf&pBZ4{xId3kz3pG_`Z@>iyEL8dPDO#4X2Bf^X^|r3YcxEoJ`t8dXQ1s zfB7Mr`W<&y%<~aK42*OGKsY=_jDO~`05Ukw6_X5 zG`c*d<9jBcyAHn?T4aG=gEMA(nT-1vcM7fl^h15rcQI-zgbvEM2TJKzgV6nnA%15J zEq{&y6943`G4|Q=r+RYxLy^@dF2K{muyMpYJf$n6SHjK8C**eznly7Z zn~Roxgxr;~?eQ9`|Gu*Blt&n=*pz!57mR5*~WpEsPo3tRBUYkt;LBrNF3Ac=i^@ zzM4;*9-gw(-21hYQ%_K{wV)sR`yLYf7Kz4*CDNVw=MD*umke?5PJS~x%zT*NvU^OD z@g7&sf;A6yibtu$n_(HDj8x4N0abY{GNXthPN6YfJJWnzz0`kmt7Rcp=5n%qOsoOi z-0B7-VQ$AU5EnUz4C5wd4Av+-=Bh#&d*)nYXe(A0eR!`s%Cyumz zjbCK#*l=s)QgIEN&PYiG1^YTNWaLZ$eyfhaF;u`SjW3;*Rbg-p;?kSP;vJFbWhtflOp#z+ZZK)~5e1Q%(t8jhVvOG(I=d${A#DyAGhX8ozn|5aebbHrmy zI8_uiu$WlYJW&5^P{pw{E}G>_MJd{MBhO<+9GQi%YHD(U4rP_?zus;Fxevt>q2u&N z-|6LWTQ5{zc$Xt65Ow7Go@IXMI5D|6(m!z@;X=j5z8OQ8_20N)X@qw?+q>O4viJI4tpOjIY3%@9ZUkBFW-9gabB0;%kBVv+@dO2Y zUk5Hb?zHK<{-ygJo@IT_eLIXCOg%1biv`}{TBLOAekbaqR>B#{r7+~ENgKulVGHpr z?>Cn*Udn_T>Gkbo`9Li{NuHC9v6b5>4S%>>PcRt}Uo^wsL4`OSE;k65blDvtR87;p zQwq}iuVp$+{phg!QNJ`uBk?%>_)&9HNx^EK9=ePQ*`1%IS>?sZd#+j$ZP!0LBT#e2 zogwKa)`og2C~X<9+tz4R^u;FAn&j^)rKJNdpg9NYlDpgI(eVVH-|Vx@y)ngnqStNC zd$}^C`+8vU3U|k1cF~7G{9J)3(S>AfVi_?A3A@(AXhj`iH0vgt?`+B?;xx$s@+j>` zg>mKkh#u&~sFe?mD#$2E_F#5g8eNI577O7Er|(&M%WmioN>E)q&3Je$K=Aw6)j1JM z9DwxS=Y*e?Yw5$~oT+skn3GKtJ=9=A|D2?^>i@J`qM&#;9*Mj>X{pC|&w*-Rrih2* zPz$1|9}%8)B!u$!>AQ|vCi97qa+iU(lbt>*KC|<@HdWUhOt4tKOHdwsnw@Bz^OI6C zHH>O*wxUN30a@dj`A^gR@bM_?C7ui?Xa4$n&gGHuNj=nhN*~?fl(t>;s@5x(L-cv? zq}rPTJSs1*>2cCFYc=^}0uifLS;ne3(=}of=JRl}{~EMUpk$1r-W8 zil&7)(8=1w~d;KGdYKT7Gax2qNRs>ew`-Fd&MY9ro@*tD6wYewZ^< zxPUaJ@*dr#0kS<#0VkaB^C|HTclTz0)2YY#n-2GBsp%%0;?IU^-`b_OZA$K#!*URJ7LF}oMe+(+ zOJ`K$nZ7g^jdRGNc`rcjC>0{Rfs%f& z()& zMDa33vHI-$7UtQ)g$E~{hFW-z%gNE}D9=&KJ?zb4# zyu7q-uCQL zeU1%q!|H(wcedr(@CfC$h8(^N)RCRs(htjHKdK#NXvY$9;_j!WS>92mk}Nz_z3m6h z1(VT%=H>L!qJVrRG7oAi9o6?@PVN^2{m$qwhF}l`*~k2T+sQd8XNZ<&SP=z z@LLuTR&+JDl`ydo>wKi7p@U({o zTj{+I%!og~6pq-qC2{jHJ0a<0B-4asv+U|%_DS`gLVBvVQt{X#d&%H$=Fh)7+W$l) zJBvB`%G1Tj4=~g6^qYSdIPzID@1lbSEMe*`K3bQHaQ4_j3+pANX2}s+3^D-dBu!Q; z+qe*%IwC7EwYdkYWU}RXPeK1}Y@6V^>b=&+;Hy8_#K-DqBgJy$x(JhZ3OZeTKaDx2 z$V7qr!o>u7w~Ck7HOtmIA{c0LViyDAWZmbi98_XzJgh##jxvl`|a`)P|Ivngu`;WAk+ z{BLc|S-9OMlg1&6bw2M&CYJW>_Kb^589mtkxRKUj=<7ajf<*c@?>S(F%fMFSmdZf6%}hYw}6{tH47<7SQw;`n=v8 zG!}qOBAgKeX5Thl+{Q~2=`TAc<0@VMb&Xr0gJ?_;`eh8|{LzwV|HtP}h%VQhe#0iW zeqvw#%DcOv*I|QiK&40`cZ6iSUbN!q13*k4XRE534CpV0Hg42U8ie94W~?)RZ0FYU zJ$8?e*l*W$ydpJ?oT2|~4=$~bHnY}$$toglGpG0?&+#6H|Zd#jL3ecb+p(ayl6+LC-_A19+S2_9p3$VU_~ zwfd+DCc1nsb^w~nEg+QCfj-XdjK9FKCf)M`MD9-O_CMMW9&LX7qf5c>#oQz?0On!e zYq$QF76mhf3>k0q`9ZSX4*$2gO0&u@52<(k`ktO^xvKX5c_eH^EES9y^i_mgQ`c(Pi{5#P`WCEyRVMFi?&_0{G-u$>d9N%2kHk*yNIUaHx`k0%h>)x z@fY(i(G>bfhLReXw|h)^7i?Tu7nP)F_n#3S5MkU(ly^!={D35HY&1deHVL8{Mr*oq z`J(YO+g?|(zP<#1lx-H^uMYzyc?~XN>zr9Iu%|@9KNYMc@s-_gyp26Yos24fg(3-|X{Cy021#>iN z0fY#_f(fUWzJ=ll*b_OJry+gr)~{ntiWB#r!L&iWJB^>+e#Ottb$t9Bo9Ze)7iU~t zb;fv5CobkB$OrZe$#%+0;bI;{4i2pP>8*J0kjp?!2}E7SwLMyM-MgIn_vKuW8B=ie zqqUlEEwT=v&b=uaKO4$=3aLjGwf~!UTgnBz+j&UR9@J1o!GLqcCr9GFVt^nR$5626 zAwhmDJeG7cd#%VxYW!|Y1yUWTE}!P){6J4QI>x%u{^&g0%E@)6@kkSEW2KU5?=hEt zdqbvzTY&a_2VBj}b1t|=^Z#QUlo`Sx-Nsw{kN$_1@r?Doeu;#?`Xyri?3egkN{Kfl zBK`*{vNQh|*8tyBJgWXyJpL!H;V&sA1=Yl^Lwn_E#x#n2QZHz2us1>U2YaI3 z?2P@a>AT3aojjlUieC%`-H#3~@N&#E3haO99>;Jc_>%&WS` z%-cqqCObkG`=~~kUbA!lGV4hn@d+I6?fm%k3jj_!Er)QBU*bF)b+rHP)47!{Avyk7 z2P^kaT0xM8fk>gYy5)Ujf0 zqHjO_oftTMVR+@bl9PiwdRY&vk$7E!(!mm!9aOhSbQHGrXQ1ywby~`p>=vot$W?@b zA>JizFLrQZ?1wcn9MXu|ax0V7{W-KN3)g)FhYH0DHv=&C*;VBYE<@iscf6_QMnK2V zY!iPf!?F9}Zu6m*7FNUZJzJ=pG3z`C3~yam0G?SU;{kYP{rhFG5|BUkq*1Ji+Y21h zHUYmF9#TYPT!#q_WmOx_lde>O;z-|0B~}+2yI09*FoZWCJ5LLek1!!vIx)tYI(HuL zctb1Ow^Lo}m`L+3jAV=c=)(UDw7tK2n{|Zs;L570b(RQG_cWdGiCvvSv)-8+UqBgD zLDf)s=9Wl}DbhWVL^evLIy)i+__vdKc_iWsW_NPk>)u?PW^?>hJW9cQz-1xZT<-X| ztXqHLSYLr?)~4gN=m~vysyb|!+h$vQQjHjpDIIOk|i`@E?+$p z6`~u9c-bK|8C-3xjW!CRe(18pY+YE47OhPRNcP^4&W;mU@jvze(&iaeG?OB^5b;YX@9a83f7Wj`>fh_q$o^P(EQOWuJnV|4N>m%?V*PJ%Gy7t z<15whzD(~CdIZbU6WAMrGYtV74WK>jVE0mni5ik5@0z`itjE z|DGMHuX$NlKO#CTstV4=@v7kt>v^EXHR3eeiU#kG?FwGkgexQNVaD@Dc_w$6qItymm>rN};Ev!lb>(Wl-$|KZyQh$U!l@a> zslY^+0_UXgFNO{4Uku38Agf#rM7lLQQj;Xl#26STGBaEYOx^|Ix_V&jgP1JDiegZ6 z*+d-J>2j7U9)$Dm+V*@Un8YEZYZJ})HQ6B(6Mm4NLOuaqk8_)p2;y94Lb6e^3R7mn zsClciXolAS>Wd=1+BXmiwOQ1^+bpfIYFLX(pjlW?OK6=EsE5yNqq3)HaB5NTATh5T z+c&PM^e*?AvX_fv!pf(~M{NtxJLaIosCa8Gv6H)Okl@4=2!Zubz~`V*MUD)2ig@}Y z_We-7H6GcHh7N>^xqHA$zwWz%FG#Ip{>P4wy&*qF0xCzk37BkqE&^Ae&qtV1cl--V zRF&ny+q^ruz2vLO#{w5-I%=!(e8<*gHQUe-C|k{|m_Ul=N`5-rxNn$=gJbZURp zADbU#?kK**>61Z859K1y=E^t`?4sV6&+`oPDT#~0Rv<8%Ku;sH`jh6~p$pA9-5;wm zd;z888{S>&$xc(1LEPtcT&h-Xu~+{<(EH|TUD8iM$vaS``X;?i$hA93oJKmo3jkqV z9;rRGg=A#@4rgz%qOT!iinJoI4%i+L=g{K!OFNRC#npW>T+Xe@+t-~vd)xs`iYd`3 zkj?{hwS3A);lO3C(h=Mgb}WylDeMDyroOYNF6Zd{CH|s6Zrvr|F?Yq!y<_Yn^YXeS zD^cb)L8kn2myfZE6nyas7s~%#`T9G2?%wfW{iT5Q-!^Gb=F5AR+^+;);9Kf&pNFd0 zXLj*wt2O0bFT-|eux&#;h1ZxZ(v;q1SBN(qu~x}W~QqVGS`&KZ=4uB)+ujU+LD#Z zKP@SKL9kzt=jg3RQ__AGs8!2wVJ5*$rIB9@K2ueg z2Vl8`(tQJ*9A(_))%pz6q)i1cHSv$#U&{}dZPI_s)jsDhPyd)$TNqxtG5+3GlJ6Ti zV?nNfOtXfqm!VQEZ8QZGqLSUYfAEN}8HzWte-(N){8ugaf9)5yccw4IRld#XtcsOqKA$>i*bNaa;;d=7aYk-xH{2jUc z3ktpvH_SdYBY7b>AwP2u!amQ;pS`IeRYI~hQY!5oyhL_+Q$mD%Dk%8^nk->!DF2XD zt7BnNNRh?XCjV?=_?%+RGxi*s0d-j2BDK5f3O*AVS&L`f6|rswoe)BGq$gx=NF@lp zsw~PSo9|%olbb28jqrr6zk~W450`e+>7<0b-y+kQ4>moQ1|R#@{D5_iDdLEjV|s@c zGg&Mg6|q+<4aK%Y!NkNV+)2?QJLyB7dakoF+d5V{lvv_`_09GXLdl7*h$FjyT%6Ok zu5#{23h1>R>vD+su5fo7x=}p9D3QUVr8;KE>3F{Y)=Gw$RYNOMbFNpAaBU{!U}v zavit2wlLA`eiBXRIwdD9$nP!p2jKsp_w3B;Fm;c}I^5mP>}=#e>0Qn>kOp zmzq?yAT8SLp~CU-S_4FrYQhS5AoSLglnOT1Hs-$ z)WYU_9`1roTx9ac$&x(->po13klPP1_4*r_;e;@xmcVY-C!XIfXK*b9A^)?2?W5*| z{V@vjm%)_lR`2`!4uL4)$X?h9N{_FXBO`2QU}0K$h4m&%Yn41ni4v~f10K`OPiXy~ zITT3gIAH*F!?d@9PVKU2ZuDP436?Wba~(1W_{~@b@F;d^*zN^;HAi#%ynABk6YPe2 zI7csj*BmDVyItk_tbxU(<(Qo$N;Si~M^hmCzjwt-?F*Q^O>lt+yi{@Te4nt%BV4o(b74(-U*I?!h-FYJ1drP*^gJr`0iF0>JRqj-+F`Ve(-b>tcrw=qe8k{kth zO}urswiT~52WBf_&(TTPn5VljPzPF728WFsPlVu`i=PxYboC{V+OlvSc^xp3IzWYK zd2(YSM|d9yJngY%LB8@RdL4^S4DZMV+o72Nn&FAEJnFgvdkn&%b}|=g9)3|SCWQO7 z=Av|R8IC?CjiZM2i@RqxH07L$D9h#;8B$1)eqM4vTvmB_I&O*&0Ks;0g5oOAn4X`V zz4D{BlonXdMXJ)fo!8k44>Puvk4fRm4)zuZ`Y2h<+9qZ6f?&aN@#`n@7lAj#Tk%@%#h-qYQ|)KEVwy*z9IpqF#u;5d4MtSM z<4lQxNc4ILA83vg4n@|C9iMv8;aDF(>d8e)bfAtBzdWJY?jyjXKjn^QEgx|>>sL{A9?Eg~Bo(MbkTpoImjFPA%DaKJM;Ql>0e zUUYhBNV^ZZG#G%PeBOOrk(+V;oK3H8vAM$B>MI6aUD^d|@fl+slels_%L};yN);-eN``I zbiS6$UmkswR*ilQP1xI#mN!cMa3;ifMRP#(NFd*3j7+GQDZS99rveJGBzuNtNAmU( zjq&ZaOuPY6-C&&;bq9|1D!!=iXro%JSFTHhwN_m-hyZE$@7USSNjNU|bEU>nwF}l= zcKbouhmpShp;Ke#ggD(5vbzoN2eJ1E(_ah?n>v6w=m!FPdWjMU)20H`e=+=cgd^VU zHQiS7NBNcCUsG=Zt47BH>{x#rJ{kP#12+g)5*bH3^owEK`%C`Le{Poo1XAwRe_4E0 zqM}Ay{zt)~nm^J}TL1QrzQz-;%LmI4obA9Ez(}I zuD64y)x-^}A_|P83$-OZh zWrrst$A?_}?&OM4uJ`X3)?_^L$}b|DOpe*SkMzzveu3e)CmypGH2H^x_#-twX#RK3 z2$m-oD+RfitfFeWcnQ=(pXIPo84)zdT#eQOmbI%M)n(EXRv=qfaIt#^{8{Cn$Q$I9 zVVjq<5PQ7ZHS})GibozMG5qqOrwu4AYF-jgZt<;_6gH|@@W*M}$&j}lp}v0xI6{sj zSiePha0C%1{e1+b>MD>yTRD!AwdVhbfHv@_ zkSd@lwX3eP^$Td~Jpp>RIR9+wowuOYV+Pg^RJt64?}usei{olgxwCOeLJDjWCq6VB zV7}_!a;pi?JP@PHHGh2InS~b^@UG*S^nKvjyzCc7eN8Y{Q<8Y^%Tc1G&XYObho6X7 znASm6jTL-bQIhr`wwNT_;C`P%7~BD)g4x82`>=YM#hw-yv%^2W55#Ptb~mc|pJ{Pl z)U=I=4#`6ExHqWrsrG2{_Y=W_(QmZzu1ziExs9$s_f+^WtsB+m^_joc9pJ=H4=F&S zVOK5YWhc4RX2A3?>x1Q=+* zOjkndBma{-ZArr5=b|ri`NzNeohyKpZd)7H7S9~smw-?kU}ec~!rW-4R+CT^lGWGB zf;@;mky`i8*uVqX>g+_GKtK)rk~=`|U_73flIu|kXTB}DeesGmPnVpo_|@(2E@D!2 zVd~u$q723SR{81bD}vY^3DhSz{jn!+X&>^k~xs-wEppkWoYn7yRq#Z4u7Y2PvX7QBdV8qn`O>1P9d| zo05^cGD&M36jB(_u#MI})~BrG#8W1BQ{u#F4}O0+Ka^?J86PcicS%m?4c)dcUdivV zlbX1y{#eQ+Nvld!(%t>g4pKuPe;&AEQsA58bY|EBbPC8JP~+4r1a6QlLkE8K@*V8-Y-IAB`Ur3b2NpeRy&$~8?UC>BYklTsT^zFZHo3LUvPJz(B<9C zh&dL%g&!?C57gUt@Vpf3BdN1<@-q2zgO*0szNv8RM$Jw+*t!qwfPx--`gh85P?WQu ziJVvM*9+N>d@sXBO}ck-AI;!aL8D-22EF|k!^&42u$llPwUBx0`a7tC1y>q-YO!w- z1pzg~lQ9*a<^+QT+Q+4tKA!SJEfjqZck+fjxT}<9GPOHV#~*2E{$_7UM*dH(pTA#` z7Eg&vW6A6GaQl*IF%CG5CdoRu;Y@8uXLUDLSV zkzGN%xq^>_^7h1(qwUO>ryCuiRktF(&Y(h;F_f2~Pv3#5sU79)6z759VhdujaoYj3 zH|ir$km~XYMua%)dxW7ObDCa>;Rse^wEDqlwNth0c3V$YqF|-u6~@+*5Xk=hP8cb0 zU`qd9{`l+Y#QbMJ+5g&}{a@paz3^p^V@IA<^_Rti-q^80mYXLudG}%tS8tc1mA zUHGPwbZJ<37^K?V=v35uhF1)S_o>~A)GRjE^1P*OOx@B8k4$Dx z%%M9nwjD3uPR#o_V5!yVGoTW;5qIwS@H3lRIw!6Py;puKab{ni((H@iu%Iw2QK18d zebPlwO)PNzta%j5o0k_&Pg4#zr9Qm}`5{DyQEw04DO|gGCq9(!0Oy&$6vX>>c4~SK zj^n;qUmdWDL(>+&+EZi>DF|4ya_({|nus|~1-sW@<3Ym=3w zKi|PzL(OAl23+%oEKigeT-cpwwPRQq-rd1@=d^=Hln$b)9%w`vb=*l|pf$;?bM$dL z7n69M^QBGJEAj4;nzZ@Tr(K!EcvN(3eWT1}#Dy~~`Feyd8yS`Vv#0Q;8JpYB;*w(1 zun^NS(ow0f-Hc5$tU9s0|ENodNlUF59yCvF=VCfCelc7ON7~4~tZLaUGCq2u&8tVz zb^y2$iX>l^foATr_dn6(F_J;go}A6EJQvy08fnUJ$7fsRx7xHfB;gZ*KMuRMmQ9WD zojEK)aEg0(=;{@Je-&!El)5uS5=MSKhE-? z@^MCM!lwsQzD&QTa8aALHzmphcTBHr37AhZn=VgRO^0n1E`7>z@II=9dAYk-t*G#5 zBi3Y}Z;uFEu{5}HG-)H%$l2GhJx4yL=)kcC`}tdpu43S=Pe-l$9ZFKPqSU9;OzX;-byaUlsgBWMaGZd138G`k;Yk<1Wn=Pv_Y!6R#mp-nj*I={b98gVbFE!BGk2dGm=f>+CIU;yXTJZ@0(iq z{Yfuj7xP}MxWTyuy4;^IENkixN_Db4jH%GztGIj_U>zXSd8cqTub28F{`8MgB94vz zZrU-ibV_ZqN2aZ5vPnp z3DHk#XBQ&x=C>`uo$~4^HB3@V5{DGz@|okEjoIH!3?_^hf9YWvRQ72`lFG1IIp8$= z>pQ)YtdjlRYf^owjB5SBFT21oxpMv`J*;4q_DPxl+nLA5HGXSNAJOE0X86Zi$av9D zMIzOVr3Gr!hV;m5=B1q@gh1)#K(oP}?2_%z%KRq|26>t6|IK%}B2r5xiw0jvzEWq5 zG=Et5n*7CcoT)nAz$s8aR6Fd}iNIrqwikroGJ#&bWH?EiK)fIK8JkwVCWkvms$Z49{5HB3psr3?8uO71L*uNq4Mye4Wj8h}tj@2e9 ziscxSt|L`k9k2PF;1LY#AL4|gI$`?ff^OYiGz4w|Mc+TYGrJyhM$KOBv~=){jWcCv z-^R)b{9`BI4W19l1645HqSARgSomgGr(?&7ivpsYmUnCW^3TI;s>}6Fq3b2YNxDfl z-J`pyHC6PbEnLA|=b6a{@zC@wZGM^8XYb#-GpiDHUI_e9NVJ7r6T`y>7DsHo}$!G!R;5FIMd!3 zOQ8v>o9`oM>6tW_f?Q*9iI##)V=0~^3?PEHUc>bmSG_<-o_HQ=dnwrXWat!_6aJyS zvALreDXn8O;>>N;>~?d_6&xJP3#K979Eet~Fp-wF@vxw-HN_3q zt&5mWz&KhZKkY4~`hcii=(J%M!whD^6DMalC)YAfuJ4C#7dd~Q)u!o_>*-zzP#8V$ zJ6XY1kH-}|O&(@ByNLm0`P;I?n!=U0^)G^{H>n)2o-n*WmCXP4_Fgz#%%ZDf($DRD zb$~WQC+WAf<(x@%PUiv}I{o(Sx@Uezc_8^7_2}YnAMooxXH##c#i;Z`#_6AXejBbV zn=>au)zI&|zFcYLul#+ij^{=Fh~nF`;GmGY47TapU^y9NPy(s`K!Wm}eMEps{qsNW z{K2O#44-FxwqoWI|e$$*`0b??WRSd*=b40J8Vq$1S(NYWynzOHmZA#8Z6d{8A&$elbK1hwy(o z^dp*&wh2#1I4mH{&rN&nV$8nxtWD}R?c88U9vEn%d-R)Fp5!CGsCf2Z;*?Wtk;?A zyUEoZ?RZYMqcv$Gj6$0$^@rJ_-t0boD0)rt-PIJIGO9%#Eo|pZJrYZ1Nep}a8lGD< zU|`^M?Xz62Jhyz(yyOBMm4Q_$Aitr?Y~fl6lxqJ>Lu&`_6cW*M95O%^G6%<$T3sq} zS(+~ko*1EG8F`2)F!zCXA})|{QP(8&=&Or@!dtfx@~?m6rA-8W&9fk=p^p*9l00KSJD_0wuGxYS`=W5ZI@xWL6YlajxP!zMJ z*Ts!!2-~|BX1806^)$x_OP(mqp|D$Vt1S_YG)wMi%0xU$3uW|i#o$DG<%Zn*WtZ;C zC2y2gAj;bVrw_myJwOG&vGkZ=xss-}O_(_<2Wz%~F{!e)$ivqa#t!bzig8;FFPj&X zZ)=-Cr&dl>uXotv(}=n_LPWoU7@8`<-U|ro+k5b z%4}Pu@&bNXd8*l?Ni6(aiV(T&E{{I?u$uNeo|hH;%0CJW;e7R+?uwD?kb;V`8Jc~C z;r+g;Beh1siePh9Z10Wbj5Pqb1V>(aop3pGhu?D!LU!XAkTKI7#Z2V<%8V!m>9ga2KDa})e)M^3<%|?=UOcgH$VPk?gW3N$ z1Mmv(n`12eKFl_Y$x=~-+Sh#nG3?rnK32{jvrRuGYYM&;PaWILRe-DpQ353|!ClIE zDwgbGuSq@M*eu!rIdHy{Db#9xm75ZrHbpr;??pA;2pQ^@FPB?%^lA4+iI>wWf+=W{ zL%&sCcivY!pCe|&jY@C#pqJ5wGg%yV;Af?iI$lanEzHZ4BvwMaHqHR8DL4C=!KR7x?`$9ZdV zs#m1HikDawgE=@v9d)2_3*WY=ILF2ezj!yefDFh&O-AwkL6>GS+mPt)?=<%JsI9Nm zvJQMPHAe3JlH4)deo2UyZzkB{L`tvV?o6~xP?tj8JRxxwgN)~%ku*GS4^na6Ki%p1 z)Atihs4HptE&Db0Hj{AFibs*shaaJi*O!mEh@6^9Fk2-*am_Keq&c5Znku8Z_@H$;j*ak^BX;YanEY{?i*IHashQINlE+3*EmnF-(IX;# zq#XuD(|mYE!4T+Xin+lE7a6UV^uxm zrFmo2(T;}P*KR3iFD(g%P#3SXk;b_*9H0)mMU5MP-0e!Pwpi(;bx!`w@#Q0C^pAzY z;IwCNM&`a0mq`_zWpU2q?!LaMTt})v*|)`127AL~2;!5ibS<1>NVIQ1E+2cymB2YK z`lc!RWG-tb$L2}~=%>(RX8y_+uJ`B;mNi{sV5=fVgQH7dme$gqIdHe9!q3t=$7mj5 zz96TP_pIZwmIcw`kUu%O+_WHvL4hGVQ!CN&X6M;(JYn9DHf>*}gG;jzD7mUr* zHy6grYO@hGH0+B9t(ivgZ@zaVOpoR+2AZvS`Z}SC?t+Hh(1!&71_s^@(i1P{vu*mZ z?U=DJ-RZ}Iz29H$4*3bVWf?7x5GSputXi!;BH<+$h+U)HDk?!5v-t>g7G_QeeD>_x zq|db-?A6}xM5B8n8~E=oeQmDFJHJ|tf``FK~JA!)MN=-7o8$cD* zrxsy?lPS|;Vh3a4(=%{(C%0pwlDZ`6Yn8Z9ZW9spCz;te!#P%uMs7RM55F{JZs5GN zdiG>E^cwVQz)^gDG86N*(WK*x3iRpP_dOQ#ydy?Clby6{y1|r^R7!JIuDW9EXP0Xu z_oQek*Eo;ZO#*NurvXfDcxYHd-FCV#NLwq_vUoq}_qL+v;M*9W88Nl~B$$$CQk z0jU{MrPH5ZJL+|h)0{;Cw0WFf>ow*x@0IeY>E+mBx`E@9XWumtfw-)qg{g2^T{f8} zcw-|nG1{-f&v+(!mRSRK;O9?zY`TSlg`Q47bx?O)g2HGc~)SB?A)J>xHwW)3Pq`@tpF*Ak&{; zCXWNu)M9WDnx}Xq*K4xmKFn^=c%w4@K%!Y4*>c&J0M(@3y80uuLH+1#$czHVfSQs9j9APw@;Uj7HtdF25DlyosNa*}jd@ppJG|HQ818x%wBU z$F|3r4PJ9*DGH}eqPFyO?js&&&XDuNG=0h~n%E(;k}fNa4`>bzbqg3{NnyeeWqOn# z!(r0&vZiRo&UF%wSf=XwQhMQUc#a?3T063B}wQ>qyEX+@9z zxoQ?OK%HP${R$?n)nxx(*W?7K=AG&2#;@F6FENtWrcdg}d@CtvTfa8d-HmHH&4HDx zjZs2MVh|$KbB*|o@^!?}qVGmup}Tl(AzuFY zxNk%;chlS)#JfV~Bt2tdg>&;)0!P#CB8Y;FS2J@Z?Mb}bxF4vm$gn%qb(;Kp)QfK#XH4NUtu%iSv zP~ZjrVD}Dsp>~j0)^FPR+BNYf#CyKbHji0kn$);KHbpPjr}fOxgQk>@<14$H8$S7s zqBi)&=M3*qz@1Ij(Pz3x3b zGig9w8oVAOByN50W8t?^9Tmr1fM=qFHaQAUrnmF(--x~;J~G(k@#+HqQxSqKA!Z)D z;A};Myb6;hDu?HCOCe~&PNcKbKV0s*%AYuIpQyK9|BPU`U9ZPfKRvd0?_Nc_CoYxL%y?Hh#0cKcLOJdYq9A! zt!b9OJmyY?gVBGMM|nQM^)cC&I92;63=GO#45y+54M!jCy{$-1iQD=G@rk;;R%sd3 zJf6rGeF5)ewS!hZ)3};xJKI9>z-{tEuXFy`^ya?Zck%e$+dLJrt9|Q`Rq%xc{-5@~ zGpea>T^B?J1wpV-1fmp?A{dHvf}%hKK`GKfjMNwqX;MN|6p$7H=^X^5O9>qUB81)v zNGQ^KC$tpL`o6o*clNnw-#hl*p+QXMG39PC(ubepydooPexDFrh<^Q1Wn z2w=av%%d{vcUjQQ)YR0niQZwTk{a9)sR`6|gzi3~u|MUdWCt+EcOrmaVylw6Bi>CL zXY4+Qz4`e`SK?`c1e{Ck<=_}eb#gQ9hZ{NS0{E(-IvC(vJITHL$XNS1iz?MiK?0_zn?0}Cy9g;e1B$4K3-dXQkAcCmcIk*L-R&Jsk9=P81z58@4-X$EAAT$r-$l|@g zCiiAqwge>ALwPhc?Dq|r_K7@}%8jtuScY->Y$1{uE}y(7k%u&5yi(xq7xj78Qs)UG zAm(z_MkJ-#)eMv5=e;hHmj_1}lwj~pOfXfr>K5EIADiXYDM?5mnUd^lw?}gwDs$KHycAU`Y7Xl zjC;)V^c2E#;=acOG~tC0*WxVzrL1pug_OqV@Lo4F9nTZ3FYwrBG#+^~eY8HwgXwtO z1xM>fEl?|x=%{ecCh`JSWonorajYvu?5=Q|tQ=G+IaXiu^~$_16A-zMZ9lk80y1hh zK?Q(D{WV3JFesKUD%p4H(&-B)aW(j6^9gKKO`>QKUZK`htZ;@KM{|e1EWwb;Ie&uX z@^l2+|DmUJrzM8~XwGkiwKKF;$wi>~js{d?VLDPr-e3F-jZkh$fz8hL{qM(PQbosM zE4EL@cCczTL_7l=>S|L9EXo?FdRvO)%AUJb9>>1hVoisAP2R34ty$Vds(?Kxmra;&S}n$hJAb}UN7Cg&E=7Ex>Y;SsnLFl*H+ zXMFGx((HpS)0c-@P_;Kx-OHnO>#4>K`EDDZ>D3WWo=;eIy>R5bUA=L|l;Bb6w>d>b zt^yN*1Q-)ydzvyQK8gDzH1+Iz8v!iPg^B#q<|T_Or#G!GFee~>8ROslV%ezOHB9nV z(tflZa^H=Sr+TJBCNT-6OrrCYm+%IkRDE!msUn<+XV}l;U*W5=Vde;r^a>9o5;BeY z@;FDlm`n+3pf~amrVQd)#I0N;YL{S~tp9Wsdzu zOezNnGuKUaBfs$bn21pfwJ)whSTot0R!7i8v_v(`~5~ZXE=@aYnM-M zAlZWy#T<8S@p$5FzG1?yei@J1js2=Xx%DvsvX~$YtGtcqFQI-T22!5x5#k6*4rKzG zH1Z^h@~qQ(Lo5Jy(vt@^UMUzo?5L0Dl*3pcT}nqvvcAhW*M&_EDNP0rNUgKmS`Q=B z)DOzpRoAN}{4T!Gbh&#g;v=PZ!l+E~;-gVE-`6C zF9*1oPdO^9))^CCnq7Ry5Usu3@)_^qAl53S_7K5W3Qr9 ze2zP#5!B}Y<8}F9W(yKgCY4Tk)_jb!aH_pvm;R}#G5I?rs=mk>_~d8w`XRIQD^;1p zB(=^NBj=j~A@#U`7RUzkJFAZ)00fSMmdWaK3ktRP>FQMiti315rR_U>p` zY)_@#{v}ZE#FJofO{_YL3{mTqq*!Y{{7Zz@CSr6%s?T%KVw5&bCWEGrw()G`T2Y*o z$~f4O^O^1#9T!Ldk-S~I^u_fIchcjd)c~vp;pifmwduQ`*$j4I_9z9kqVedsrSl;5e#=Ck5HaZIV~RDi7%o$3Gn73XJ{75PiDHlCMdeaya&cJljN+4OcR zYmD#6YWc*PI{=z6I8VVPXveGV6rB%mXVdifrSUgWoKWL+UDK zKXW@c-g_Knwo#w9HaUCg$q047*U(cwPR?uSnDcWPUv6@Yw483xXRaCv&Aga?%S$J+ zm5lM;h^tC2PK7|ZURDM9G$y+nQF7rt6iAIgg>jBv(5LeeGlXGMtHd>8^5~1>%{SC? zS+`z|pIFlazo_NPU948w5EbC+J_C(7)elH4>ntOA3ajXEcZJ+=Udo5*;I&3?`>eTg z)cQ^)`wxj;vhBB230?Mmw^eOQvKa;neu)*tVNQ*dZ766 z6YOYnuMrf;*tW+~l+2Y9_|WUXo731Z7?IVu=~Cd080DYB0{&tWl2)-p-us4OV#os{ zSlouG`C9A?Dz4u`xt=l8B6`2}+t)H6Qp$%3L>%=Dj?deMDk=HgtmF+|F5RtJ#J6I4 z-J)tnr2Qf$4=B>hHn`?b>H^%+)dMO;H!p{J$)(v`RaYGKolN1;Q|^XojawIjV|M0ag?5dh&_yX2xH*a>)5`@BbiK*tS+Yr+qnW!cydRpy;y&LFqZ@=bq9GfcJucX({&k#Ll zfD(Ww@Ysy0&#c%)8kAATE%FLK41QBU z+7^g;Z;#H3Un;+?8J)^=_ruVJor$1qL|P*v(@Q zNSk&K3Dp&L>2+88*A83ayotI;Jw}erKe7qp*}t!pCndxqbpQmvZ$C~_5FL~DT<}wenwmJD5*r_kmScne&I_f#_vh{7=GqUr zQo~q3Ip0BX|4kE1EkI3|0fseTb_)ylVKc|vjG9&20+{MKxM~2V5Olv#4a>s9*HPG( zQCpC>v;v0PbUzY20Z3z*0E-EKYa1dP3_e?AO5Rno__P{U!h`-4CFy6y3DdP|i6yLimGKa+Ik3WhWRX(>^P1m*5p0=^`@khakN&FMFQ zBB`f6#_L=c0mUl^yTtlHClVSm^an{K5_*>)nj6r`&DFXBoj##@*^O2kudBBzmf_GE zIML*J4SOW0^_7@2Ap`3a{e=xw{7u6*9P{l6I4d}#V^r7x0xGb`ZjR8@qmgKdl9nEi zFDVa#p<;Z{+wOuQP=QbXi{h~ScgmE1na=cI_)Y&)Z{++-#=3uEdmcY|-4+@Z+nleJdLLy?}_PE>;)6I<56SKfD^0W{l zo0KCe^R23Om-^GF6FJnw;h%2Q*ui6jW%wng^yK|8UE{S zQ>FxX%{J{>Z6o6S2;P`f+v3!_r99TuGRiPeY44r*V%DBz;(+7cH+zICMQG;$Wr_0{ zFAjn}>g;;nxyu7_^DP{I4W2zx$JY7ToLmO9=YQoQA|I8Gtym+&ne6A1FY|g@x@Oni z!PH&Rh5U3Z?AndFyd|{gcyq!XW^i(X@BB zXi>gL+(i(lr;{bQDBt_hc0re=J>-C%GLD5_1s<;f+yC*g>ZA^DE-zAVPDSTunUDNO z-$J7aHJ&=%?l1urIf~bA!MPXXrQyEN>3ptA_mr&LU~05#$!&$%V3;lUX_&I?Hs+2+skaQmC^`x2xJ)fMup~UomDO zGd1XCC--(jiagr#sr2<@k?)UUFTzB?GbhX?xh2u;OP$9ZdQdTE z)6JunWoOSED%yoW#&4$Y`9-2tTmlK-bZaB!?t8W$Kk(3l(t|gOFRyZ0ufdWAf2oR? zXsTb=uzzO|FPPf@s<^!s8C&b)-+AYabO3dwPrErrz62+5hc&LGWmgzFU}9mE`&{1# z3_dx&bp|YCm4Sa3U-c8lb}M>{!{k&h0t-p~5{F`U!KjupLH-+asss!MQB7mOaL ziFsIwy>RP(cO=uD!ILG6o}xp_lT?p(#U9wl+DPso{spXSGB{>Uz>2vQHD1 zrORW_Z8+r|r`D8l_k0$GyA<@(SjMZ{Eakl760<{;q5y z0?E$vz8I@QQmE8+wL+v6>VR{_={sHP*Udg#b}ri#980iWOv1`?55!2FdDh92$g7(e zc#uizHw4I?(O>>cj1!A|5FoJ*sUYm5ml`&8m;4UOmVBszn>TWz-aSGyWwpL`q6@x7 ztS>T?R>ZMqTs+rDVeJXLn!cAzD3XMijujriJRKL zu}$(LQqlD6ClWsjL?-_=pZ-1u=>N-pUH|ZMfARCgBW=<@5K)D8xSuZzOL79&$9hSx zx}yP)1JyPSJ=NWQK7l1#6&-J_65z~p8Tn+%12H@+y@T&Y14W*ss0qsosKbUOj!&y` zgd$&u-9%JY$OQKg{5$3o48F=cjpgBz2rT-jmsNIEDQL7KLWhlgcP76 zt^4X{VtdZ+(`-F(xSOy8$_ms=f!Kj6$xmdoGfJ98?E$%r%-4=0-5_mp1nag+#?L@O z+TAFLqhgr>YT6z*0}_)&2wb$vx1$OGHfw;fg`0L^^fz!A6YQQ$;dvT8ojhHE1t&ep zU4%Mo(APIgpOXcmjQ;w0+XbF@*qOB8V!j<$uyi|v#$JVpzjzI6iG0Sot)HfOLYG%m zO120#D3-a0e~r$7V2(OL61np>nm!dH)UX zjfGe?zpM7edw5J0$8?=H0wO6Zua;+>RHxTUxt-i~7(O*-BByNGbsd?=m&0oQ_Gj~v z%A8Q7Ql+v|e7)Q*EYv!(9{d?{$AX6>lGjG$7+D{#eRHc!p$9>%DNu5)==9=OJGpM} zOpMmr-8qi#&OcXFSSWS1DRt5(anCetc-y&f$fg1zeLApecU^Jp0Oi1Jmw52aR;kXW z=>n_RHb@E5v4wgil2x!|Wc0YAcKj8W5R^@00W(;AfnEN{LR7%mwqy0R`1YxyvAKPu zHEvHUA6~B~?Z8Dxc`n9ec4OJZWAt{-%D9@YqUi|0TgiKj8x4OdFK;RTtj+7~1!1*$ zib1{Ayxiadez{&{ZH)I^YYo?C#>vjinW?#a4s_e{#GNV+Eb@u^)H%P8&KsoquRKC| zMjy=bF-2lNl``EI3eL5CuBYhcOKyD^&SOexY5b1H zvsCz7?c*R4=t+*4eJ8^>YRLqU3ThRyKewHoF5k_^mcytariH{hXR9+kbQ6y!Rp>w`D*%?FGX}{4JNF$&9GH%Kcb;a?)eAfinmDRPQ?3_Za{sol2n*JzFLchP z5Awul@#hdi21^TSdi6T#gp#kVlb7{ZusaQ)mQ7UiBo$iW~?b356r1*w#GjW zPaVTr{1>J*Y#XlMXoK+V%rmqFz*>}%c$VO_T2Qgz?d%)bJnC&{M>+Kr z5a-5HQ2jU3_{CV?Yrhxl4f3zhIio>M!1`N3PE(UOBP=#tTq~-_IsGY!P7Q^;U4^Ih zzXES(!c{3V?T?OIC}&c){i#_?-434j&)G-1{9;iK9=~;$v$}v4lqZ)7d65FKI@Db2 zTQW8#4(6XX<^Yd=TS)!zznYF*%3j zsCV_oMh)Y3N&Vx<1=%5|hV;H5-W#1PtEYY5a=6Du+)hRJKTA#OMW4P9b(L+JKR~ER zw@+0AyPs+XTfrw>-Pp07fDpV>;+kOi+xJU>Q)nXJ#$8l{d_DF5>gfO#7CvH9NqKrsLWAT zZ~1e;ylq`&$(HZs zL7B}Dl=`6@vMs;NDh<`%O)bNU_*Da@gCShj2R#1MN6R(z!j6chYAoeD2$X|o!{yXj zFLBVa?x`8&qErEubBO1h0ksIFRz?Njh@lem6{|i;2q5dY1j$eBTLVs15TcktDT*Kl zS<6ld_c(1KSFcVI7myAtS54MR1WIqHuO#agbeM&OkH}RwMrs5uU^KD}4eKB5kF}2W zjeO#!y-?pE>QVQ?J9Jo|!`HO$l8P=pI59d#ZZ2F&Drr_i_wqvu^v1FK^-z&qk8t}~ zmJ_pBD!CLGlr0?8GRO*7CH~aZVI~M~M^Q6O@jJm$t*J2|;0xw`9GdZVxOU_t$4O?! zF_tE+bWCQ>6SK~ckOsvN)Vq?zP)V0mXkV3&?px4(>*>X*LGCr*g!boMFYi!wH)Yyf zFK}a(xsRO3+C#=>ix(DKeiWha9rs>hr4*O%!GiwRA(?Tu*+w<2g|y>OcThyaBAnKz&xBTD6Sl$du5UwZ8t_ z8jT3Rb%;f+x~ms}HOB&K&TQNPs58FaAVc_e*(O{Xv7Q>_0+bE9Evl@=GwNnN*$vW` z!Sybq=7v~fG~+g#x0ZP&Rzu@oqxOQaj)zZeh_%HErMVwxb^B!?8Wf|ib2Cxr@Q_j@ zc8?oP^b3m%uiAC3-f^y^=6mPj$H>0>b4KZy_qs{mIshkNA-770*NR?Fqj)05H+AhO zRhI%nSTelaNhX<83#psI5`}_1sT!`A@^NFwyPTajK2m#^AuE)xUK}5i*+Nu9IHny` zbOB~_a>+oJAc#`&+${4uVbTV(8lSO1{=z)a$@h(N*4)a*f2A&;9OEn7bmeu zp0i9(CP9Z`&q{C;RXvd~DoOMfulcj~Yr@P<@-}M#MoXrqFpzT*!~|h1#S< zbY{I307Be1>*c^DOM-*C#mz!M#OfXi4Hja5zprH~O0Qu4x#e_Ks`k0pgCv!CpX|p& z;PK<)mq@y!$_wH^9>-8TdDyWTM-taJA2HBY-BtwPMYC7cgEavEC-T4nT3e@ zjK1!r)pVoBEj-Fz*MxZXxNta3&hs_AB04Y+K90UB)o z6O~ewtVYXJL|(;RmE|6$=bbU3C8U$9$Bz$S%o2Swx{rDTa~GzE~BVWx7GOC>*L|M zXapwVE%I4KipS<6d45pXkG-j-i{!aZ^7jupc#SH^0POQH=YbkZgGBaW!-y4dakwlE zZ1XWmT=w`nDgjc>DNvBh^3w&?FGcQ){aYIx`NSvhokS_156`eWO8={KNuc1s@T8SZ z3sCo|clYjJ9TBL>Mjk^$X9)FU>cabfZw(^LCJb1SvFwx!knS^oYZ-C{?P|XAk;Enb zxINq7T2{RWz3z|h@0(lgY5%5?7X0@P->C<@$|g4l(F4Cy{X-@*(v4A8wD{TJ&78g7oqp`17n4;9opIXqD(SIfooXE?FKsW&*wU$1gc6kdo1PCILNI;8I4FFiSVTAH?zM)*tR%U4w|H3GS5 zHc$_&CL;;3<+1~fakjmmq|A-8P~j?#r`alr5I1C##KY7Ym0w>X&H2CSgZ}KtX7^5j zUg|-`Sx1G@fA+No?KaR=!UC}jYZq~U_67gE+{H+(_a0~e^Q8s9E1m-Xd7CrdFDU&7 zrvxIWdEUhZNOPV8p0hxt`sXi-H!`Lc;fM%QBk1^xK^w=r8*en8WnUVxfFTe}&i<-& zTl!E1Rhk=T&)x;QB&^S5(^I$XKmQDMkE?vrB;mu|rvyF4DKHqWBpJlbr|REKv5`*} zr6oR7D5yykoNp=$WVn`jWK~mcV&Ps1=i-<;9ds6Y-MWeCQ7C^g%`_W8LX%A3d02nH z8-A-%>@{EWI=$6u&ayE*3pZv9;T4MmwV&OAX2t{pX3fGnRnG*F8~}Cc9RzQfiM&|9 zUP8q5I`_NKL{RjyY+jUP#YijX07){4cjN;nj@2}x@0jnT<6W|cH**HIU;5pZGD3w< zrDLZJ(ud2qt<6D_dyx((Ex1sP5J>Otz+DS{zZm?8`|3kkJ66QOpQ7kczr%du!>!qDH9_gZt9 z$^)p7`uR{f{`1!i8|kyLHD6vI?#(_C$*SdG`VrMj%(_2n+|%x)A1^DbdIVv~RD3+3 zMF?bqHSuyh4uuaggJR$Nq0fGfd>%DaHahZdgk~X`f$z>)8AHQ|1pO;!&`2(t3zTT- zPt)vf5;YM z zatj0cn>*DvcN-!_G&%gM=({!7GZNoi#uI3M$w!)x!PTSi%V+tc*Ynd#uDBah zOeI?HOmlIWId)cY<8?FmgkPAj5p*Uw^-BdCl$*Qm)<=eT&93bpS0()NN(@0 z%Q?^i@xcZ*i6TmPw8Ms47V%QK*`ekTpV9|9uoAJa7Z%B)=$`&K1&0E*-2iVgqdKH? z$C>Ie0%=P=Z^(q@QGE7;o>&SZ#pQgMz^-0!zi6PllLDg#nf&C@zkS5=4U@BLvVJx} z3nKeNz5p-uDTum;1bBl92>_yzn+p{vg6-9f2Z`SbN-$r&!<^9*3Ev392JvgXr%A)q^~u+`#eS-_0A@mdw>JCfg6F4 z+A_wqt@3+rt>rXQS{+fnW*mp*Fj*U!02XoGZcaf==Z>+w3t-ue^|J(gUP3E|k_Dop z|L^&*zt4jHmA3pJ`j@+_`PpTN9QYNsrzzSV`j3%+#(DXinB==`Gt){kEgFF#^E1mo zvWwT9QmL`j5bVy4KtY9vhprkbJG@glsToJOE<&@zD-{T@uhWAw3=K4SE+wf$*`=L&E%kY>lQqt4Fd@>af6!dr z@q5tG*4mOW`Q^Z%am*!+A=wghlc+3oY}JEMgcR})dA+E%JJWd;ovjy&tR-&w4!2Nj z&i|Oxli--2%Hn_NRL58F!t`cl-Zyi~zWj$?&v<6D8#~oGF;Y@!+R!dJ@4n*1;|{*h zkx)?v)bHW{*E!i4+EzT!R*D^W0l8Qt%-0NCramfb+M3=49SMeQk9!7k0}i^rkXbZ^ z7HlsN`SQ#y8KEZE{1~W7e$K+gp1m*c9KaaL!kFi*?3-aqx(Z$+`GLg66PF$H9^I&m zyRUy5c9L12kRL2lS@8m3tC z6lu?_>+zs#@o@C{LBMPXeXOMcT3Mv$n+gGl!tJ#HB3-FxYV3EeQ_W;jpW+-#HqIEU zq9_8}*P4LMNrlwBU(-vQwN{8ZI}Vdnu-lK$Z( z=E|6b^;U;B(>33fgwzY4M?-faw&sfJX3Yx^*XCgs=%|lQyi(i)q5|yd zIX#ykCO_qd-1fhP02&n_GAaU90%|T2Oqm*^+O<>pg3|?-H-ft-~u|1C{4diXbuEhRS - + upload-in-progress="saving", + data-test-id="file-upload" +> diff --git a/scripts/apps/authoring/authoring/directives/ArticleEditDirective.ts b/scripts/apps/authoring/authoring/directives/ArticleEditDirective.ts index b2f1f8c5a5..68dcf053b0 100644 --- a/scripts/apps/authoring/authoring/directives/ArticleEditDirective.ts +++ b/scripts/apps/authoring/authoring/directives/ArticleEditDirective.ts @@ -37,6 +37,7 @@ interface IScope extends ng.IScope { extra: any; refreshTrigger: number; autosave(item: any): any; + generateHtml(): void; modifySignOff(item: any): void; updateDateline(item: any, city: any): void; resetNumberOfDays(dateline: any, datelineMonth?: any): void; @@ -342,6 +343,10 @@ export function ArticleEditDirective( * @description Opens the Change Image Controller to modify the image metadata. */ scope.editMedia = (defaultTab = 'view') => { + // generate html before opening the modal to make + // any changes done in the authoring visible there + scope.generateHtml(); + let showTabs = []; scope.mediaLoading = true; @@ -388,7 +393,7 @@ export function ArticleEditDirective( scope.articleEdit.$setDirty(); } } else { - scope.save(); + scope.save({generateHtml: false}); } }) .finally(() => { diff --git a/scripts/apps/authoring/authoring/directives/AuthoringDirective.ts b/scripts/apps/authoring/authoring/directives/AuthoringDirective.ts index 2cc6f5bf5a..0427c51ea3 100644 --- a/scripts/apps/authoring/authoring/directives/AuthoringDirective.ts +++ b/scripts/apps/authoring/authoring/directives/AuthoringDirective.ts @@ -95,12 +95,9 @@ export function AuthoringDirective( $scope.tabsPinned = false; var _closing; - var mediaFields = {}; var userDesks; const UNIQUE_NAME_ERROR = gettext('Error: Unique Name is not unique.'); - const MEDIA_TYPES = ['video', 'picture', 'audio']; - const isPersonalSpace = $location.path() === '/workspace/personal'; $scope.toDeskEnabled = false; // Send an Item to a desk $scope.closeAndContinueEnabled = false; // Create an update of an item and Close the item. @@ -186,7 +183,7 @@ export function AuthoringDirective( function getCurrentTemplate() { const item: IArticle | null = $scope.item; - if (item.type === 'composite') { + if (item.type !== 'text') { $scope.currentTemplate = {}; } else { if (typeof item?.template !== 'string') { @@ -269,11 +266,11 @@ export function AuthoringDirective( /** * Create a new version */ - $scope.save = function() { + $scope.save = function({generateHtml = true} = {}) { return authoring.save( $scope.origItem, $scope.item, - $scope.requestEditor3DirectivesToGenerateHtml, + generateHtml ? $scope.requestEditor3DirectivesToGenerateHtml : [], ).then((res) => { $scope.dirty = false; _.merge($scope.item, res); @@ -556,9 +553,7 @@ export function AuthoringDirective( // delay required for loading state to render // before possibly long operation (with huge articles) setTimeout(() => { - for (const fn of $scope.requestEditor3DirectivesToGenerateHtml) { - fn(); - } + $scope.generateHtml(); resolve(); }); @@ -675,9 +670,7 @@ export function AuthoringDirective( _closing = true; // Request to generate html before we pass scope variables - for (const fn of ($scope.requestEditor3DirectivesToGenerateHtml ?? [])) { - fn(); - } + $scope.generateHtml(); // returned promise used by superdesk-fi return authoringApiCommon.closeAuthoringStep2($scope, $rootScope); @@ -858,7 +851,7 @@ export function AuthoringDirective( $scope.firstLineConfig.wordCount = $scope.firstLineConfig.wordCount ?? true; const _autosave = debounce((timeout) => { - $scope.requestEditor3DirectivesToGenerateHtml.forEach((fn) => fn()); + $scope.generateHtml(); return authoring.autosave( $scope.item, @@ -881,6 +874,10 @@ export function AuthoringDirective( _autosave(timeout); }; + $scope.generateHtml = () => { + $scope.requestEditor3DirectivesToGenerateHtml.forEach((fn) => fn()); + }; + $scope.sendToNextStage = function() { sdApi.article.sendItemToNextStage($scope.item).then(() => { $scope.$applyAsync(); diff --git a/scripts/apps/authoring/views/article-edit.html b/scripts/apps/authoring/views/article-edit.html index 9fa91f352f..7b6dbc681f 100644 --- a/scripts/apps/authoring/views/article-edit.html +++ b/scripts/apps/authoring/views/article-edit.html @@ -279,18 +279,20 @@ sd-validation-error="error.media" data-required="schema.media.required" tabindex="{{editor.media.order}}" - sd-width="{{editor.media.sdWidth|| 'full'}}"> - + sd-width="{{editor.media.sdWidth|| 'full'}}" + data-test-id="authoring-field" + data-test-value="media" +>
-
-
- - - +
+
+ + +
@@ -371,6 +373,7 @@ data-required="schema.description_text.required" data-validation-error="error.description_text" data-validate-characters="schema.description_text.validate_characters" + data-test-id="field--description_text" >
diff --git a/scripts/apps/authoring/views/change-image.html b/scripts/apps/authoring/views/change-image.html index 75357398ae..dcf6484569 100644 --- a/scripts/apps/authoring/views/change-image.html +++ b/scripts/apps/authoring/views/change-image.html @@ -19,7 +19,7 @@
-