From 6e6062eb35a81c2546f70734c064bf19fe14054b Mon Sep 17 00:00:00 2001 From: Timothy Patterson Date: Wed, 21 Jun 2023 14:46:56 +0100 Subject: [PATCH 01/14] update PR template with internal dependencies --- pull_request_template.md | 1 + 1 file changed, 1 insertion(+) diff --git a/pull_request_template.md b/pull_request_template.md index fb10d909..bbfa39d4 100644 --- a/pull_request_template.md +++ b/pull_request_template.md @@ -21,6 +21,7 @@ _Tick or delete as appropriate:_ - [ ] Upgraded any vulnerable dependencies. - [ ] I have updated security dependencies - [ ] Python requirements have been re-compiled. +- [ ] I have checked that my PR is using the latest package versions of: sigauth, directory-healthcheck, directory-components,directory-constants, django-staff-sso-client ### Merging From 3d57fdddd89be3c8ff2e3d3605a834d74085a53b Mon Sep 17 00:00:00 2001 From: LuptonM Date: Thu, 22 Jun 2023 16:30:43 +0100 Subject: [PATCH 02/14] changed logo --- core/static/core/logo.png | Bin 75384 -> 0 bytes core/static/core/logo.svg | 174 ++++++++++++++++++++++++++ core/templates/wagtailadmin/base.html | 2 +- 3 files changed, 175 insertions(+), 1 deletion(-) delete mode 100644 core/static/core/logo.png create mode 100644 core/static/core/logo.svg diff --git a/core/static/core/logo.png b/core/static/core/logo.png deleted file mode 100644 index 8983582588aa36d17fedc3639e2028f4b89feaaa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 75384 zcmXtgbzGC(`#&%Nl~QRYprAC;qe}&(MOsq2CrC3!sXVlFw{&-xI$$)68lxmPdUW&K z^L)O)fA+`j^E&rA=en-<`>Jz?z1L78d&uw*4-bz_`Q6(Ocz6IEJUsmP`$V{311ifs z+yneCACz9>RgOHx;Ni*PDZiE1@y6fDB)+~`Kfh}@n@IZZsl}l4GqW)6J^jnv{^I*& zENfjT@{h0foyJ#i_EtUcb8Rls&wA%pS#=)ncnsiGa^aV7Qp8vg=t$K zXimw(0XIrr*k4@|0DoQ{nvvtLo!Nwq5QmkOt-{v`Fj3(yRUlz4Kd7o&Zttkk{_G;H zq$tam%ZX}J$Ek71`G-1*DfV#LZ&0p}H{$J*I=aH}+4d#d4?Z#%`CI0-JR|Q8?_+(I z0Q#Mj?YzY|L=rbW&&EaB(}@oc&>94Ofva+e;3iq7yxz@Qt$jg&y}ZsX(CT@+0MhuL zEO*KXA70n9u@1m|>`rv3X*R@Cbavg1Q)pkz_HVsFTb;P__3GF~@f~Pb5> zRUTCMm~-lH6H#clOulczt>9Sw_Q0Fi^!@o}Wsic15CMB&#@4@-yQA# zs(zG|By+LgvQM3g~Bg zJHJ-t;m@UZ8|5vswQ^ZRBrILbYGik&=r?0vi@UZVnbME}xgy@Oa>fg9aS}{2r$&a! zSr|S4lItLsBcBPQOvbl*rdjHA?b$r{#~=F4_qmTAAn^pp29rbrZCKw@(4*}Kw{kN- z)5{TAd?I@m_WR*u5=VnnCOOHPYN8*1K7F%mt3KXjCB8cyVba?yXPlcyoPQeA*frGn zKAv0%n!5oeRKimR?A+_inSHv548b#5?g>p~wH>WBb1sI~^6rs|gBXZw2T5rigF?`f z8R_H*u+jK?4Pngi1MT*Qen;stFMGGHEYHMgy{3QOIXT#l>&OmR&^LINXYE8Zw~WB} zj;&?-J%uGPM|5%PzVORe_JO=%I_8)GhJ(YkJMucwOuGr{Gb@9Il~j{dX262T#qC3A z!=EamE{hfB(4`T`--gzJ?kyT1aw<9?1pCrcHJv2Ox z^V?enMpnWZvir~trsa=2#J>1q_}mrK{c6SrEE0AFMera+zo4O|JqZ^V=gs?TTglzv z)h+dMa7ZTzquBadR`aP9P@0ct`)$#mv`j6coTE^_KukxKW+{?9_!30)xN4A2y-Cg; zgR)pWVJ6Mic_N!$#ob!vxA?Jl)8isI51NEgikleevG(68Qny${#sr9VGB%ah_8{j} zRH~jZk}!GQw0G!o7pjY^x@H(zJ}HFP+(upJ^nAg%04%6MeS&CWHQV+}?MQ}K z#aF=2oZSzx&hEoy&s8wYk(D9h#IktoZIUz7csN9WWEsK?y-A2;}9@kJ-0nc4tJJ% zKfCl#p|_Vq)oDh7ocQEd5%Wo_MNbud26kyJb#eI}=g6~0Hp&7X!p`T5a|e^&`<68a z+#_RtjI~E<`|C7I?hEga8oUoh7K>r|H}>jm4sQ9TGh-3C2~4&kkstDD-qovYu3LN7 zpYTN>;5aN1?Z&JrlOUu<91sQ*aA?i2K-F8r7q7e*=l&GU$_=>V z-m7N0TX1RbyvZZ97dofac_V3c*ZCpS+lJ3b0xDp){T)iNZ`s>F6LQx!^(F1fd}-#J z0`urmKZM~GgSxD)2b?pz zxb_6v%bqPh0QqOiQxxrAeG?ah@eq%39&{N)89a?IkQu4)tz?~k$R^|f%|ma}*YFN9 zeE3~nao6B$qO!@5yg4Y5-8WuIklm+F9*~O75vL0eaBBQ%{ zy|rXF{_IQr5Rdq#WqhIg>%&A=b+67@X7TSqrCXWr-UB}M1>(hYYD}o>pM8zf^qxo0 zJF`+aUqyaw3rA?y%yRYyRhq6T?;03s*n-op+A-)EiRIU1TgOm|uXi>#=b_+X(%HB& z`$dcCssPpQM+r7LMJ)p~+lEUUUoWx&bV}6WzLDm5XQ{k=oB>gYNE&$w@@0 z-+;~cK@0bFi%1OwzeqmuqdJdT82sc&>dXv}JxAFR31@z+p-_29S7(pm{>FLM1|cs5I+beE1d8 z*wI6)jxuV(l87g^MUvzvb_Jr^icFyZsfHDyRW^i{3v~EK0<{BPPQ?f@M?9_{B-MHO z-Yw)c7e+?-gd&~k_CXF{=`0u=w9Z?pwGV_)(Ay=yGkWw;^>7zEiqaL8U5hHB{d*Fw zEB(DiU@XMp5OIYx!?^)5qz1nRU%yk*S`pQ}?mU34yV<#dU#E6ivGwhNRtM+q8xE7! ztLC{Uzy@ExT;M^E0_NftO>EfdTMHL#5>5JXB3lS%=_$hVuP)#?Fna{JVK88xe;EKc z84X@(b_nmg^NiJ_!1*L|yd2+NU^NZx&iNR?P{nb~^`d%Cb5+kyFgXVx3EleF;L)Z2 zjJJdFZ2~56UJh=F0=_Nwa=1>K8pEnZ&dXRC|5e_!}e-iu0H7t0Xle! z>)(^x33SiMY<$u6bSf*5Zh_J4rgZsaYK& zHF25F}*kkpvuDUBxP1w>M zKa7!X`I8ITSZXtBzHu_+$*JrI(|H!TIxq2VvUHV|L?@H2YM6wFQwNN7mwe$|*rt)2 ziHBk=6lWgudDqMDJP~h(Zl8bhkeF#YI+3_2HEkf693SkZec~f4kWNEho9&w}$dul@ z`g-@0)yyd%GX{W+vv$2oS|>YU&>DdvO+DR@(@X-1YQt1@Ct( zHb>6TC|~HNy1cMLGMRsw^WJ<{pPxd#+C`!p^bexz`s&DZ*Z*PTUYi*66VmPAhKfgNGl|P%{JF%^W1j0*J=?ov+m(IImjDbRPRGE zwoO?H-n4YK)Xxa5Z{7&G4#m+%t4qm6#K$&MMWd)>8Q&J9k>6~^?#VYPQMcYG-hqsa zy`l|v6;4n8F?%(aMm<^))7JKAFqS_9GbCGeMRzVtlaQPq1AogIV>qP4$3!3stm0l( z->^^R+s&{7S^HvMR86EVS_p5ogwT(fBZ386w2mkXs7MB^Y*-y?twiH7YAzn&ZR?i# zt8th0;6v!5lH2tNaaH(eMAHexrO3B(bbB%MluOoN!;+I|{bo_Wb|Aoiu^QNEVtb)~ zY@BJ}u0zo~{K^P&8d$YD9UryN=R7Rb-&i~A`>;-r8S`7YWw)DF2MUc;+$@=rwEa4| zBSW6a)UUc?LaFXFtruT86VCgBxlMydFNwR_kJ6o{PM_TICY3)_P({wU43=&<$+?~5 z6uW&xMUi|lmH5}}VqTZ&cN1?`r^iW>(0+E`UZVy|)0deUxWLl6=i^=`w2|6TOls3|M)r-RZIZmEjdUq4z1F<^0q;p6<&8m|x+dI*fa!oU>;0kao z8z_pN?_IvKtQjw<(oT;q)kBx@R*vRc!3>7ze@`@l(vRM0%}E2F%6!1Gx>%W`>FG`t zVMO)!&+)|wsQmCyBz6aJL7isFD3lqp!NmL{qISeUdQRMS^GdBD%XCYBbQH zM}zOEYLoxY;4OV_U5}z*pr=F7)BRC{4ak~h%3GX0Ns(_v?g;a``7;$_mw?dd+LZni z=CkLRoNT_j2ZmPW!a`$bOFVi`!)&cJW}>|TF@_s_x`5aE?H!~>3t#Q4gge-fT}-~R ztz|vovq?<^?`MT-pNSpfOTK~NhmJ-d!4n1)xqHj|=`q727i zKo{UBWVJhU`PJtq1~h1}+3MCirop)ZPMI!Z;QFan3@NEJpwX@N^{M+QMOREnQ}EQ3 z4=lgk3J_%WLCSsmXPHMT8&W3P4AHVq%zp^qNwmhU+Dwi_YhsYOZQURzPASm?oJ}YJC^4A=qT$!fHTz{fvDt-Z1EkC zC&9|7hgP7xN-?EUQ94*XBbQsci4%$`Z70x>f$4p0mQXrcqGD=iTz`w+m6%@_;sFm5av_=1yB!Nb2np){+9z{Q+W%nZYI~3S zTJRvs50{ado%=RZ@nJhhmibmMC*2_;c!w$F0@3S3->v~4CH9OXy`jwU2Hh`39Alfn zDqAaF!a_NTLc5r@v=W1$DrKl+@!h1y)p)S7p17mA5J2oPIv7jaowodO5WoG^IZe^5 zx}HJ}_a5-;E%n&(olP%S_75c@MJd3?$B6G^Q;G%Aso<%Bq3})(89b}(d%zG9T%;p9 z=23nY(v;r*3RcuSm{-c|vHI1-%KRC9HCYIC-FDP~L=Ig-66)&@{|}%s%rIywAX-gy zVr$P$^2)aH()cJGzUQVzZ55?`uKnWfN`1GBHa+`Jlfl@^JVB8EpQzH(?eaBPdU4L} z{sR7F7rBfb)INXq2~x9%AZPY|ZYcXg#QiaY0s4HC!>`sAdObPx1I`fpj=^V54*1j8zR zAwEGGrtJ!iW5hut8zzaM&NIVEoOu5o?4si%IBO?k%;Go?#3kOC=;>(b>4u{mj9+j_ z(9@#@0sbb}yR{YkF{EnYq<<7eIBC9+x~0(n6XlSCjBaF8AaY+anfXRZnq2SN3S1a% zq1}&hc6u!W7wneE*Nh#l`ZVM3b?L3HRRx?vIdwZpnF-5iz1*|X2o&zHamr)=zzz|< z4HMGNJO%0u*efm2*H@KB;fb?t?3Qw#U91|e>KasHefd+tpsSsSM^(b&aB z@7_FcNh9QOXJ!lp)u1GsO&CR=avu7A2Iyw=ur96%Uv>_9f20`nDJmF{nYYS#;JivwsFwYq-tg+Sk zYN*GImKO@8augiDjc5{(b=m~Az}-F;isJskglI1=?X;`4!xg@mFiJb`IS8}|q?W72 z1g!FPUg(?4c1V`~TB)bvn-Q@^!jW=^HZCvS)8BE3O?oGvddK)% zFn+1p<>iL6?wEYPl2swgV@DJd`ju8HO-?V)?{n%YOPfx#Xa)z4-^t6TX%gj>i zORj4@A#tc}aN*kO%wh6lB;f|a&YV=}l^1Lqbyz8w<%3#()l{X`)$v_jpN%Kk!Z!8N zM{6%*tw_~nb=bMrp<_R_)XCZ^*FkZX?7DiPo7Zsmjw>dgu8=R{Q>&otoC*0n`o>Cg z2-dyZLeY52GD0#|#VeiHAV2u)R6x4w{IG8JoW}O9efXIVQ1(W8VXpqXe{N%BXX`_6 zEs4M=LD5H}Y3Kr73!}ivvO}y_wrJg(07--St<~_kz;_0_bpiR}a@+fMr_bl2N$Ur@ z|GB<#oH0kU04Sva{&zP(&)~}&l)%odqF+28KtNl))0&Bu=`ZQAu(s>92cdV_CFq~j z5Q9^j0!eYP8`S+6AM{^mNMr?OQEAPWwhz(|#sfd~?Yp$A-g`h&w_Q*oUvAV<@94kR z;xBn%`*&JKD`=N`V@9>;3v-0RyxDqd*!w1|`q!FSx=TjN!OI+|rGXid`ql1?+}&*~ zN2agyd^Dgd-Q#^iZIEW56Ct}%?c3@1`EAIR9@?2M29>@wf#Ojss37-v)u+qJ(GHVl z8k##KexbHTE_-%e`}51DgnI2rS|98$AetO*1Ki*CIgYW}ZSUER>eB#cI}EU&Y!A_P zu3u(cFu*pHY`|2=4~5KZ1q%?KBg5=NsJUMg<}K&h8pww+9kMXb(Nt2pdeu?hF_q?| z9`FwHURmt52f-i5hOlgFz680^>z5d?R+^}L) zQOKV)CKbX^$9^j-xImk+$6qDXlI-ytp@&KxSh1X$6?mt3Q85?Px#q+mYR_(hF(?pX z)|#q#1lFv=or|5XQ^4QrLJ^bDx~>D>7nWYcNvg3;C&y+$Gseo ztQOd@9fNiL7^cSO0Al;?Sz>G>k*|BnB`#nD;;K_PQ;jfE93F9>6$Np{uT!O`uPNEj zTgUZrVv#?G3e}RX8p{x&AAyN;oDql;e*|J=egiC6maMfiI=K5|H*0VJGF(_hNo|ea z5gD>q2I(-%lD|nMPyQ~i&y`$_2x7b8F6?M1J;#vP3U6j;BTOL}R!75UA$vMB0z z)3>Euy-^RgvwCNx_P=(AD&~xlR?Nyfj~m%putfPK#7 z+S*+SBKlf<|C6S#yeiB^@GFyvf)$xxPkfvo@0Q0mX@9I@bfqGte~YCpURVsexAeS2 zFFbaK1uI){eq2(Me72iw_G{*9T{7|lKSDF$RH)NPC7V{1c_rc2v8V9ZknIRarji}r z#d~acrf+IcL@|3avU3nHbe@s4ZUT(nIcR&yQ~y8A}Z{Z34WC$u}%|_y|rn$P<-*pF9z;bik&kUk|{bLjTz47 z74?a1^{|+?Y4ic=ojJd=In7tD&|J%P&2YRCak%-t(KWrFfExTUZ0{-ll3gjis%YBA zWq-StZ^v%gy@!~NO%oLrvhk@A=&V4b$OC9Bh%x{$64Yt=1Ip)mcqU_mu<=3Ti^U0? zpi=Q(&ECAC*q~E-x-9`};OJ|)v$h2ikoHWy)*G9`#pYjR0p?dOp&&tiPa*!vsBq!y zEPyai-- z`!`~$_mIkadVnS3(Ll{0=D;cr&iDS$^SmnzvtF#B(n+Cwt09U+y=p|4$YO&M z(HXg%CHy%%aywD}<4e27uG)^qxgs7r=m9eUv0+DKo|)`LCW%?b0Y@DPE-=#(92-?E zAg}wdPkKwXM{wlDa1Ugr3jBjT*uMvSam^10da>!iYGqcNthYiye;S3Xb<1%MB~cc> zk-Q(-&;TS$&+ee5UTc2-6^$p%qpO*e8Oh0#Ro?Ro*_OlB^Bzxn3Y2%1EPSbmUfQ0! z`1VSWznqk+X{@Zq-M@I-v*E*+1$*(QwAL^g64RNyMhDvaZ587IPmBrN6~Xw`H0Ok! z>~g9kP_MjZ!q(2qvc`^2Rh9<=!7-%AnfNHg*^_?~{eTAmSkCNKTRKzFyH?AwE>hEb zSAlHl?as${Dp1J;v`sQ;x}}w64%FBMc+%fpY}KtdV9H>tu=vEdnC_6a0DZot7eRdY zLFV$GAFN&gQD#5K9aXt~^&kG& z1kQRfX>t?1>!u)Eq=#_8vuG0i$(`J36d$8!`ia718Zm(ze{XOnmE!@l{&pichI*eZlwJQifC70+gUh_zgV0Pw z63(UxKLa|7@1et!sb9ws)&))Zmvcc?>IZwFl(oCQ*j>Ps}<>q%{k|`cP*ja z-_w@9*m@O3(g8k*4a&9Y)*ES!s{Qo}+<34Z)VnP!JFvr0Jb@JGnN0ANRb!N80?9{*INuoi-8?Xy64R)b2IqA`91mZpA!0}m~Dp!59& z(8vI!0g^NNku+Z>$tr<05R`P$z0{uNTQe>P6iSB4durKSNm}_5shWLleq2rvembnt z+52yps)CEL_X=IRR?@n(V2?GCk01hA@V6PYf{6Mk%BQsjw_eDUY?v~%DQ8JbB2n#Z zuKbn=X)X&$(S#)Y&k}}Oqw0Q*5Qc9S4(TVjJ-53ozkhNyOay&UP0X>kP7`euqBxbtww@Sv8!}mro#xBs;yu?I$U$yV1dJJ;e_d>Aio5CHFb^4c5QOSg|1da z-^0p?Ux-rj4vo`<{W6!%Ue+ebv8o@Dmp}!7W3JA!xoR;J%VZ>F$Suc{G29thNqyxej?wf zrUKKalJX~eCraHb=DMGG$5>hYg6Y@uJKu-5aYG`Pab`6dxWwP;Y}|SH$@akrj=z{->g*sail4|xs`F!Ct9lW zoMiu(p>XQ&@1g^PnR;X;`Xx$)bh~`7m#_SBJ)+?0u(G7X{=KQE$-C@B_yv6xiHsmW z7d_e|-@F^Rshq4wq*2Ll#giukI+xVaUsn-UW=0 zTb>L~Imq%+(}rQRgc6dUZBqFTS1`*D7c$U%_%Qzf`_;>ilb2HwXJwW`v}25P&N0bj zniS!d4Yi;*xNO}=A}58tM)``h<+EjKnB8W~u-DJfx$;`Tbyb`iaL6WX#;KrBJT1Dc zcw2e(i*-D$Bk(4~{L+{iM-gK}W7~?>j17r%TUoVn0l#KotZkI@mTu>x!BO3!J&nse zh>O|&0EfejymZlI1!+Nk2YR$u{???c-uX(28Cue+OhRn@dU+-6Q-ih}>@-x?% zBt9*HesOlf?hqeN35IOUe~NMez2`V8-)Ba>$zDWKQ|-6%1GoG_VuFk+%nrKnUG+xe zsN8pKyY&`hcQ}Et0`tcW_zTaS%}0L)(DL9512NxtXV@|qXX_Pevx#rt!j)=c9!m=H zSCiUVGh(QdqF%EzjA$3-UcLO-zLna#sEXwnQ*Sm?ZjJfX#psm1C1GSBC6niiLxPl% zZhjEg%fP4=m(OojJZe`Omg{w9%-We>KuONcLiq4Hp4&smyh$qlvl};}@V3X3J)ith z%0PjooC(4O*`TYyPW)@UF+kWI1q9emFk)rd>S}P4*MS4M9xHPLA>BnIPzpF?1^;ao zcf5~3PWx~fobkEhUWi3rNNf<3(3tz?>llGwyn>JDKjTs~120);`@5eBJ_1fXtECfQ z0lWg#Xth|~1JcvIC9=q8cuT{oXw_}~48)ZjY0e4=>6dfT3F)`^^ABk=F4eOh_t?qG z{1H7G!=}6E+x#=nwL@2L|LTgUi3Mh|POY5gWHFsA(p|vNG)=;v>$M@ha8=aCzg0;W z|94SZFGX5g2KxKq7q5l+NLooCvn6-u)Vz8Zb_!7dqkOO-IzAKD3F3;oR#4T+L&(pt zg{6Codlm(r`5@n}IJ5tzn*nTU{;aX*0d<;!h>l+JMFh98eRNUj%a=!WtCFdF_3$6k zNT`J>7e9Dj>nhmm!Tu+(R(|$e(6z!rwzGkOE<};_a%p-WY4G<}f~b$#B%G8~3Lu?X zj4q^|tFCW~qX15$E=b1Q;s6)nIap3cr&oB}8@uNDO>ETrWpZ~Sm{@7z@EEG%XvoK$ z%^EI})0vR<4tyD*pv?}_bmx-6y(jLrs-Zhn)gm4pGoROAP-=}+4sM6ZgKto>Wp{+> zWN|yXJB5$IgbN-y*c!<$OF^J!jR~2ti{MHo0Myv3<)rs*hD4cJF`#*^-}K()VCAh0 zML2D8X=QLFTC%>R@?j(F{Gq~WNXKnrIjd{fzS%)Xf1CLiZi9I%bl1a9YY)wu!J`sU zSL(q+?Mg_-<8{B(thN&YKUDK|VEe00m zpsf=AVU`%RM$;7ezpKiwV8cO}Qm*ZGA6x z2s^prbr~i$qiN@GbXF>6*uD1e*A35+Rf0T1<|O{ zJ_}r_z9dH}tpa0mBL<%gP!UkgZ_CT$qcGPV`bpEraoF4S_?nqeDa~cFglLoYeI~ib z_8Wq5=}vH;MUEq6Xt*irTFJ)J%_=H&pii(v>*zPM=Sk}A>qe^0BUSB{CA8P@>9mMh zK26g=S7lb`P*&et&t$li!mUw+qni~>?WOp-TD+fw40@9%-p|lv(PHD2t*D~c%nNMk zJI*EEDe1Rh@K^P0fOV{eyUe0CG__4F^crF97H>al1JS_p+7QM;&BFHn8W&2)jIv$C zQC}Jku6bDRUY5~i9;dX6gCk^UtNgiRyJV9uB%tY6z7Ou!pCG&6Lf_=_srS`P|1(NF zSc5Up1RVmDQg00Me$N%toQ1F{7jRcLVWm!G4^K3t;4a83`{x&g>z0qq_8BvfgKk+V zqieO}#fVXnHhbEumBh~r=jKMOHJ@8OPXMdaJ53Hc;HY<(wMq+0&5~YkZ*tm>DhY{F%3pw@o?=r~ z>Owr?s9VK!$(>uzZ7(z8bWEsdHikWRw`Kzdw@davdCa})AbyiRi4d);KO>IOMMfrN$T(LuVwO~N{pHTY5uXCSV^@Qs`xO;lSHeNX ze(%%}J8wJ06ry&Om$iLr+XE`K8M70+#al+M#(O1{mr_a&IA4kR%I=3i6sor4WGhs! zvWDnqAZ}JXn?V$t^0nBtt*q^OksrSaF9U)-^2)2~^Uu(Ca-i8PtH#xDrwv-1&#j+5 zhb3=nf0%wQK(hHj{*;vCN$AaEpQm+Tulc|w$?fxT4eY0Tus=oX({%6}&Rd$iY%PJ8 zWkv@#ole+H#HIF36RqSN;>HgauAJUyl&;8Y(>9-~E}GD2I)Fm=E}CMC-1Y>p+u(+jeAEK_3@}HsO@+OU>MCMUNeWt(bdd;;yMb{| zbNZCGdd$rOj(5zO7{N+@s3v-Zy{-gv{;TZ6BR7+)R!`2o(ZL=1CE*;`q{bnep#i6T zej7=&L@!ghYkC|dF^;~p>FHuq9n_-uB`E3X-2UYr4OnfS>Ctg#yyX!SbyA+iiab(M#@TBYEch2*UICK z$p=4@b4i1wXlNthtA3#q%Yh6v>zd6Sn5*I4UlJ%!8|zlbe{P}#VebZv1MU>AmbOYN zOruMDvGz0KM2GUZnZw>w$l08#!9ISp)CN|m)aAxT&C%WAw^LieAD5P@I&GtnF(X;~ zyK>Xj6JhO>IfF!IKy`9OhJm$^={g8>>bq}2${X`7X2x}DS9DdTekiG(N>n_5hOF)^ zY4*D4ElB2VqqQdjWeS;tF}t^WI+GdMT3Wu`I<8IprY!Qey+uJFSs}mte$(uee0wJ}h}T}U3H$t* z18&RP$x(19mjB{3JQa)zfnJ}y&M54&D9)al%zduw#50DeP(D``VJZVEbk;H34j`fn ztMbmJouLO_I>$Yhv8Q&fzC39eC{b^2m4)OS_He0JxhtkuOVdB3$xC-$6=w6e~3 zTBAlF*9=d}8I(1bV!wT}LDKaDnbKJvy}+}<>HwHQ0+N$7DiVn0;ln7ZSI1n^I;$ARhKB3rx`-=`M zsG>c1sB?Yl(x8zPb0+!IR*hLmQghI4`OCLkT`*Yca3TY-SXj%s9kF&U%~Be?tH@fb zrT$>)wCVT;vlueMxWAq0y<;{5FC^*6)UiKC6keCo)i0fEnph*0H6jPRM*PfZRwn*! zO-T&+)Sl_>1PmzolDTzUbna(d2vkqyCAkbxGnBn1O4!EQU-bPz9e-eVsR6Lr+EPIB zS-e+eKl5b@F-y#xlh|uJ(u??^DV{Dx^Je}+iLXgqdKxY!&lhG(h�f<#n}WpIdiE zVoWYleo(Xf4eW$Ix6IJ=a0r!QN_eMlUoCgO`DcgiM5U zVsg5u7ge0%A?TQwvG+hD-^WLmx}Tbl%GbwQNJ(`YIKL4{A{Kr%K)?6{3n|&!k8T2f z>TK?-FDGl_@f4Q!?<6Uow(VlB_73yxh>8qDCDh7O>BfC|PU7pV>#H^)WbNvgX#ad5 z8QK8p)pon&5-iR;d$uQ8Y_98yK9VtqV(60>O?7dAd$tD{?U5XVN^ zOW+D1ChHG!*8J4>EIlCE_#Y`~fpx${300QxZEck&)_TCe@!GXimmdjGV>>LmFRm9@ zfs9$D{JILwns&mV(f4vlrrLF3s%M!R~qZ`8>)o*bN+Exm|4}do2)OHuz4ibAC9teYnd7kcxdc$A|c#x@?Fr# zB2%hZfO4B~Y_=NW*RQX6W3V*XN1(anUYmRTo3LcmR{ul@qv}Pzd#K`(i%#@DA(2B46(>9ay5a}`U-9$qbiC6%!LGZXB0qj0lIDWYNmUu3J9G(5%^*7e; zlpR;#eEZ*s4bn*D6=zzTc&!LqaZ^%5_v55J0dJUHs(Syw6ZFejnOh0*=f)JLn0FGn z5G9A)P)a|!d|~hq{iK;`MvD0<{vNS!>>plpvkw9E?vl9MIZFhLJ_=#~H~lA@?n-rf zYg?(kDlLKU1w9E~gzoRyJk!1wPMk}o&^S2Vk=X#EY@N2wzo}c{f@=DINRLzS({mzg z0ZeC+) zy2gjjzRq|{h9YbO_2y}RwtN3+>ls}3TV{?cBZJ39na&=l=WJ{H3It*F-(8aVVkm2l zGa4l7fwR;+B%LH6yoj?WLXiK?x%+2-pl2u3j&LYQYkXR7S>2rBrIB-pNRPU?Lk^I^ z_tiNwflVFW0jz<;4(lR^CS4vE#+TmOaZ#yN$lL+U-p+1yyuW^cI#>AvpY*zS6(q{V zB)s=)=Vi@bO5BmC?U2q!BRC`nbJcYQcy>D|+W}8Wpadht5~bsq=9!at|LY=xR+@&# z=h9=3hrgSD5nWW(mi2V6t@@PDDuFa35YB}@(dkGmw-m+dmJ3yoX@&1e9Gf|7ncWc* z9Wo_HXFkMbI&c!?XA)fY%CO%QuMZ1nJhYdS+%DWdy^zU88Gt%Ao-BC*)O~N;qKU7( z(YJu`dwoF zJ}n>14BU%$L6P7tNd3FS=R!aBIgs+?U-ITScI%ygT@vnYe;lhfm?=N z^BzP@dakb0^heiq_L$vs-`#-Mer4rj!$V(ij&vUEdUL8@fF$>{G+SQs6qjl9ogH(t6wAb_lvj^E# z{(JpDq(AVx;?*SQK56LqPCXu`iT@ED7~Zy(!~P<*a&?GxQLY2)@WOlddQ&u$hT}xN z`$^c$7elZ{jm@`!=kO-=+7(Ovur8z4_T_xgWY1_wgPeft>m}mw&AOq!%b<4bL3O;z zKalLnq{}>gQOw*7mpR{O0dLZs`!SXXc>`B_rz*BWQx8X`>8h;~~YO-^(c z2&!Jyf)4BBC>AK}ezg#yIkumFe&WrS0;Doa`>H{vN7(viPqo{nUu>F& zMbHoR$MxV0U!>l^VP6;d@)m?l%Z4k&2HZy%D|L1eA_7tI8hk|y3>l;{nO0|;;uWQ< zM=!+gKV>!Jo&;tCz6U&RXFPWIYlo3C{0D8l&P0cq9Fl*6G<5!Od$x{&gL{uY9H?^J zk5L30PJGQ}&EUf`DH?AmO6$uH@k%ICX)k$d0| zPIiMr2K`A|QUk4FAg3RgIYhy-!%UN9@g1cxK=@)9k4dF7E#;KBsA1bOk-W>WJacl1 z(8^KpST&HO`->cE=gfJ1Mwto zrPM6Kxa-sljztkiZT_SRx%}eORS~VxnN5r^@;hh>rj^IW8QQifhZh0)vqW$qSNOL6 znD!7(+mF(m=@n!ty+6oMWwu^7pNTSE@R$=v;8%s6>FD#B)_vXi98VbazawA+G}Z|Z zjC?kyq^?O54B&>P?jejfh*Z&z-VxWZ;+ghkMuaE+hkh|nsKC(r=kxjU`Av1Jku_S5Tu>|( zC<}7=ys#M#PCw^0qdGP3bd$0ZCLph4Fg9&N9Jh(XRy{5$0b|!`l?o@YT(g4BA zVv50OTM@s^NHo+=6sSUcvBt?Uu}8Dz$%7Ean;Ua{{=~Hei{M5XqW@DR767y_#q&EL zvv{^;uc}!lwLeYf8T#s(q#55T_O3C;w%v)-cl)>0vR!<#)-hj@nX0Yx`+zaj2QyM9 zLJ&SIIXD+Vu#loPpMXF0csh4+^oU0CL|xR3YSchJ0zSSiy>EGs`9JJn^B}q&5!h8D zmexX&SjJdwwi7msf)O+0`()wD@+52s5fj-sCRBs`s^SBjzhS~$+RAkDj$sq*@3e}o zV`WkQz)aj4yW;FH`0(VYr?B*m8HtOq3B5;6K-6xmjpbp6#gT6vuE+LY7mUrHNX0V_ zx2b_A8BM7(!=a3xu1DXF6MFlo3yNeq)<&k625xfKj#PK10lrMzs>}3_B)8lnXJ00F z)wfT%3PsZwIY2^%%_Pc-Ch==tPr6tk*zaVHzd77Gob;4F!HfiRWN{Y{r4_uw-EoZu z|AF)~>+by*Fl|LhUS8DTk!MBp-a{iXwz9n0ImUo5{h_Uu-#VtRC2^hi++|{<|NmP6 zc)r&0*J(1$6L5WhLEvhb03*kuFun=Z4q-GPCeVWAn+v%oVOp~%9y7czv|Q|C-TD8g zqY*i{hT9)@u9s3^eUIH{KSR26%=eJ^K}c*DF`5j0$AeJ)?jl?L&;WsYzeJmXvCdLD z`*NTN|8VDFyXbBM=wg|rLrWy@(OtK>zhB5bXTM0P&|34{-IhGSw!TnR``5)VKeTz4 z%|9znj`L$P!A7WqWV;7)n*^Fc(My)UHe3$a`SsIYEH1ckS`_IEQ7f4)lBX`>)kr-X zN-!GuYs(Kje-k;%*(wU?$bLVQ1roiRe^q7K2HiTkJV4+vj*DoB{0d;Uvp_vNi}L-S zm*Gxdomr;k8OmWz1;}h z2Ys6UsQNu`DQcG;sOapXVGVtEPP{jN|JrUXu((!-;8G;GRSoad zGzp?cl8sc~;c2Gzj58|d8$_Kj;J;lPUJ=MR8WMWaiC<@G^HYFT>5^Fh##JD+c{l}XM@woB&j)D zIKSqR%HKCd>rPk3l&$XejSYJcy{y{jvKxL<;kCtq?d+8Vz|9XjCl+*nPZL7)bQ4U3 zHeJR8A{Oss((a!l6pn2zj!)h4S*%@84BO733n>e=B}9G+@QLpyb3BF{gdtlGm&dHz zwz|j~{sC6(9V7^AllFvsiX5i-*G_d`6F7n+99fS^y4^)V*mDY-kJp_RF7<>)Bn;u# zgPUem zx!JU`ME3Ibv8l_?I11_FjDDTbj;QGK`!&(Usz_Oq;>|`TFkTTXOUhnZGsNfhFi??P zWTB(e%qVwN*y#={+oTo`7I_yR^=dD=-mi8*k23|yv-?_|EOmu*eM|N8L1=vGdi)Cx z;JL96!SK!gDU|q*npq#P#AXwK_7D#yCSj&<_4H{>)`T@qH|~5+nO&|S34FgVu(yDP zOz8Ip?t*Nq2v@|GBaZm12HN|MFn<$b3cT4srdIh@`8Jh|gj>9BH|QLjXBEUZf0wmY z(NF%71KPDcy9Y_ze3=n!?=HmV(G<2zwb-;Mv3IvD1Ebc&WJbR)qON`|J7%i^U>v}& zAvh20{OaJ?&rq=)gW})&xg+gP`5w7X1~qZT&}?4Jgv+~Y zq79V<`>qOn?_DHH=Mk31y(PRd%79sT-?{Hjr83&#_z$@MsYrXlU?~r9;C!k?WPU<3 zQcy1%z|g88op)OEj6r?NE&#;gOX<-RxJ$by{7m_)gVw*KMTU-t7bhXKc07jU)I!|9i!*r83KUszhZzzT$GfmiU68 zk%5N<)#UZDb(q+N={-Y6GS?11gjG*o%`mXLHIr3kKaTx{#SJ)brAttxij90Rsim2U z6AFMgdOt$H6;XOtatLL@$Ub zl0;zZ4{m%5MD*#1KI4L%_R=L8CfE4oI&FjnL&fR+XA&XNxF%YAj}l7W3u&rKy6#Wz zJoV}6b|dOqy-Ur#Qnh$~Btov<*U;@&nC+e_xEOD3kc)IflU&a9;LIXkoT3@zhHZ{3 zZH)_3az2el+L&V*oncCbK`AZ9Mms$v4vNJ#n&TBk*w7lVyv>t7*RnhKH!GSKsAk zPCj^ReIM@EnA#f-VX8S!YNYCP>m6_xw-|OsKbNfG^tu+8km64AV+y^D5nlHF+1*}R zzSHWs;)-Rg5uhono#1)E$A&q%!@1mKaj^IE$i#E=gVH%7xKv&0sA- zeW16HCiZ+4QsmXJ2s%h25m2{%DX8uv1_)pgh~*xi$!s<3JW3uthb@=;IHG5(Qd3=Kq>}7Q`6_>Gar#!)l@IE#8M3#- zW**86msD`YnEPpLAqOna_Me!)?Q}mGtM#4Srrkqy@di_S?WK!UU)sZ(W2P4FIm8A% zdxXfYI7y=r-^5&gU;#;3{%&NlK*r8o0$|)l%d;OI`=c^%&wgWjis19@j1TJfZX#=l zZvxRzUoLbV)cx2pK}6*JxcuN}(GY*i>i8n->HeilqGMulhx@!BfWP0TSOsB%cC(Za zX-M)>8J+wUvf^79U(HS@5Y{_z&f1XGx6oe>m^u&16Jjz>l0@gSJ>3o7ajLYFZ;IUC zMuh;Lx?k!ezKlhRx^Ju}S|Pc752_EIGr5&|0QbKpO69TF06gfLhy6>gTvotuL+e$O zJo-G+@+r9KhB;cR8m@CS9zZ;Cp4z_OVK3R~n5g2L+kNz4mpctjJwBbuer31f z+c75q>j!U59ME<&aUIL(h^w!Ej&O_zwC#sg999gT3;vU8}MyZyb@CRQTAy2m&AqH zYJKSzNR`u*IqVFiXrcV*tkN(hBkXpw-xGnBs@GHMulcM9X8l3_oELfkahO0x!V!$_%fH0s+EvjV`)2oX zC8vnZ8bRNjRGbu%rI$cRyygSt{?%mQaE^Q8oxCeOTuK6E zQDvLniVr);_-BW?(?2}s%RJ8D{e8wRl!#oU**(ErM+3xn;?BpGf|%)QIF?1M69;wZUI&gD&>Q)IlB?A#c_oMLk_PRy)i)PbN zcS(V`@y_wjp0=m(ou5GjGi-eFL$;kcHjC6mPt1Hktl&U#s9VzQ}yNHj1fGjq(bk35TV3mhU~KRh^%Nr@l!=t%0eIwMN{& zR@4?WHT_r!8G|jo9G;6fvg)&-v~W$mvZHf!Fn6^FCPZ>?S_vmV9IyK{xA0lGyTYJ{ zm~(nO=P=`lcAty+{-N{dbMt2pI0|TdTDl&AYCv!L7o+MgE$Qw@rmP(C1j0Y+PY}mL z)l>7UzGConzDXY3FUvA2rjD*~E9pn}?y&N6TJ3)ety*H1X|i3)YGywvJ)AxtTkCG~ zYAO!xE)l!UHU;B-a6xCPZ~#pwv?mP>Ce7rfGNli6@V2>c=2xe#K-R3ACy+|s!tumG z^V1M<4Y7NJ?}dg#hi$!F&>-4W{TWq$llkEJ7&x^?rMj6;_9)$9`3v=V)j-6-40{X99|2azzL$-3_kq*y zffH%H{YGFCd)$)fF75;#9i~vkwv;b*F88>O;mROTv}U>d?%aToGM- zZYT}Zt;c#~VK>uq_jqn)c4G~pcmUp zPP!xIfE;GY#V6n8wWyqn1#)j-j0PR;q@5O7)+~{YxEUKbMqr5_A3ptYG`Sglw^WDXRGTfB7=z=Xd0_Bsuuz{xKS+Vt>G=m}i8} zzh7i@{{f%oOMmN8{~*~zLWy{gw3f*!^^2)D4| zerV~>G=3rT{%O*mC7lgOr<@_5Lx2A-o5q$56?mcUY~!2RvLo%ouY`Y**H}UodFj1o zcOO1hm%jPMO!MrNay(w$TPnUAtlNEssSv9pYv}f2+)DOj*b?=?V!bd*=2!7pVVMJY z(e&OeHI$*$Cb+!s$&u1jh@n;Bu7u}X3q%iC$^I&8cF{c&mVFfk%QQK+x@|vv-0bS% zjUhUZAZ*Y-@L2oL;mByZB;rzZ5Ju7I`%=vt|A+CMAd_#{gsr*6?8>s$z{j(FHNVF& z_4!#3=JTRH6rgu+7SUbMzWmWUuht~eXI8a$!d6qHqi(W$yTiQ2NFRk=UYu(zE@R$H zjff}Xy1ixmJ3EDAl&>6m^M0_nP*I-q4!{_Im7Ui?u`y#oc5asU5kWD#ftF`a>3k8Y zzTg(dFZ1tuch(B^Qdc@W^aRA=(T>>u;M?C!RSb zEFQ44X+cyeC@EJ?c$u& zW=GZG^N9kLbjqij^4*liPaQ%Kg6tK-MQ75pVevE9C4Exy%hw-v(r5LUX2(AmPI8?s zm~;miFZYjoGP=aU^44n#2FF~7-2)QB;!cy4Rj<eQH$}Q2KGSM?Kr-b8RV(?lrRgj#^a#jRwxdWvaEtVR;%H?K*=F3+M4f6-F87hYqFB5-tdWk)VNn(;!r zpOZJcMLV3~JhyQPt3q0cU9$P?hXV$I^`Y%3CZeRJrSr~-76X>Wj;rbn%jDr%^r5$5 z+jVxqV2z&;HU2E%>vpE4K*QE&%4hazP?wZAJ50fpN}VR7PJnh>--3$5(P6#B@_TXP zjJVSd&cH@fuv+nQ$GUOoc?zP)*(Zm$1eeKq{JJO%jnYUptP zb4zfk?*0i_{d>{Z<&Q6Oi>izFyhIL=TJsGtZLg( zut0kH`X`HpCbazhlge5x5_6VZV=!_7JSs(+Ug-`2`n(L{a}M%DUoU2nZ>4X_O{XT`Uslh)VeF zwb9q%{0`12u`wE@$;7@{zm#igxHVoBE?(EQ_OXu1$4L3A>ArWmdFu9tV)ALT=?jad z9jfG^TX(EGodwjRi*?1V-hU=~>@d~%!lJa_(r3cG74{)(tZ!T%m09;S#yy~KdN6}~ zn{*jKY&^?=qsSz0GUE+(f3|IFJ>ix`|MvNIcGT`@bJ^hxf)n9}e!}XQ*y#(-z#axbeEOBFgsy-dbJS7cpzd_vqD&RM< z-xMTLW76Z}VB3!;!CviE)<(a$utu65)ijZcC;gDLw^_k+lIo&vG8z!MTu_=2VS zeX$y_pIkpdezii}^}@iRyJT7P0hqR5(X*vzlCiE>&S!D`(yj___6lL$AM|BE!bk@e zvCGoLyAL8XzT`f>y4=H9F3hDjZ-{HbzFQh@h_qUiaUyp2mmg1yx-_6dM)xU{%-*Ng zcVnBckK0^KbmF^r_r+_fPDLDp5xU+@49tjb3}>J8Wko`M;d3#s>Mh~YUe&|s0absR z+0zwqR6L^4-w+h5^9Z@&?~v7A*9 zS*@D9tSKR}x%`>aZ9Lk#gylB`-f}EcZ~J`p-8TpCpKgjodYtuVn*L2Cs;OFETfUKe zK79Xsjsii`mRZ+W7_mKJdpdQNt&kiKZTD$hxu)Ysc8u>xnyNU;&k37lDbhWpqd8lN zDjtm8h(&eh19?1>UBru=&G8}Ek5AYpV0%YP(O^OsPV$xOtL;O~J7=f*_;Aj&W+YvH zZf}x+@1yX;_a~y~`)VMvi=Nd}_RWw{@1G2GZrqB*+aA#mlBqP4>%Zl%W>~t1Uo`My zzI(`V9J4Jb6_9V^)Eq#zK0>o7d#$WXIoCo?S(r*$h*Vijh$2sFHV$$NT14AhgvWXR zL*3aVH`(<>O{p`9x5TSjr5QPXjYOc|q`47=`v_dPn9A?vR2C%73~3nICtrzu_Zi>E z=JDLz_bI+hY371R_4hegHn>f6gRQ@$6OwuuF5P#`S8s>~`5RpuSah<~S&VzEeA43= zt)W8Js;49otut%~b2({&M-U#3pZ%m6BE2w*Ra&_PC?FVhCnK{&X z;%p|U9U0sY-|=o3B+jkc8b_L63!Vo_hIVgy1q zG!Yq16JxIJ_0{~j<6n&5KkD0(r}yj7RRj5^<|=wCrDAA)2)`=37C(j3x2q*cJ~JjO zDvXzI!wVXb?_$@ob9GKEmMD=z$;*4PdB1g3+Lsa!?#Ci-b=$`%X2_mghxh=G>75-O zkjCZ(a;MH&lQ!~dz_!VlZh%7Q;b!Eh?Uz+X8{0P3Je=y{1-vS6%WEc^*if>l%I|91 zw-#_++J9Cq>g>@t37v8eJ!^&C_db?6Y0jx7JJUv0hr95clzbYkkw&5}7D=3#!~$va zq=`*zH08el0?1p(O!+e0N(mvJZMGwQg4DQ4D#E`rQu}hazFcz<6-@`(a8j}V<953Y zh|uljs_)_#Z~;hp5FW5QO5Zj(rk z(Hh+(iSp=d=4=I3&Jnt>7xS=3xGwR%B74t|sd-ZVvB{pA{P}@H?8H>uXl1G`Um(H{endj!}jJ(11-m$x6lmVo`*cs9$tS(BiL5yQY29T$rham&O6qf8U zn#4s3se_3z|GCWugh$k1<|fa;j-6&wz6&{$Xpf~Vvjaez|K)O`{=CVfJ7%nWs1ZtH$Yn#shugpGOfNt> zWKOw}(Hw=;(KLuQ=ny#uS71K3#7?u`)mUDyQxw|BFW6M8GyMa@5oXy~!W6kZ+s0&S zSQ$8-mw8wh_CGHf;rhE&3!sf807c%`&jPiNBFWz+g*}gSB#@_IRC2(ncpa~=2EDbvH>06R^owu{TlTNeAUT{;2 zm_}w}jS?7$u8fhI_!T%EJyhEE%hdQ8aHRVP^7O=)$tb^^3#ZZS3f~@wK5u6+5=ZxO zGW%~=(zCWj4LdPqJ;bXim-#-7E7w(erBOTbU?b^^BUZM;64^!aFJD?9XbMotZfBGL ztSkGgg#Wmmi|2<^|L&bnMu=6j$$8)|ahvc$`WbLMCtEbv4*d(>MGo@jrK-2B@Dw7vf zi0Tb@cTM|!0n%jiPcpMBoBSOTYVYunF;_ab)5KIy%5v4;UG|cO)fM?6{o5hil+84O z;XVunsXz}pkt8+OaGnyw!z9#R81|CRVMHW%`J4q6JIz_d0BwPCwk=7!cWe$d4z|s< z?l2At%}YfTn?F3NIGNAymG0Ube&wQtG01@FN)QXFH<7s%Iud1+UN+-cb@=&i*kLxQ zPPF&0^S0(6RHvKq$T2eUetWQl{0^&M-XGo*fAr;l3AihkrtOj7Xll2adMpKUw=wFt zZENF-FRkKLsn5@2Pp6#YJQMG$c8dvq_ePE!$PhJ4rkz+tXMa&0~gn7g!H z$H#|yqgv&;m+?)O&UDO*^*SC{{JM;7q4(FPY4ZC?uT_YE$`_nDc^k2&!-UtQtreyq z(-_qs9y5Lf#Y8Una?^w@lP~urzJ&{iD@-qju2(clYzjfsaCNro+njEKCDk+hY)E)$ z>b}vUdIXQlk2ljf%_^6Y6RtVc^{dHeMvKlx$FD;2>_GJm4&V$sHJHB_v>8>DO>0bJ zc!!73MJOAo&N<>R&b!m|o<>FE=CZe?8+*fG)jf~8 z&StR^LD#@Nk!K?!i}@}t0>)X8Hv3Im#g(MRP&^=P-#lcj6d-Lr1_g?+G)#^*-E!&9 zRKb_~M_b{}zNBZelAEEs*4Qpo_LzUOC%xpVY@@sR`il%4Mv7dSfdd zSDz6N40$|s`hF&jEm+QK9k#s;xR%f(^`>Vu6-j#pqP(9T5`4vAPb@{WgKy}se}DMg zgSm-APSW1UU<50fU63`ifw9b1OD|P-CPV8Mn!Qn}d$93i$NBXt`hoo)ZYu;^6)Y5- zc-yTDL}=%4R-p*k+AeTRK51BF!AZ`8^bfJ5x}narx*Ibr?@8yvQiruf_*Oda(r8_U zmtH{(PYog#Y4FDrnXkrkl`h8zS;fc3@CP6xddug8C%h*lC#)XCC(*|T65^*RW?+JU zwO>;BzMNdX2_)r5GXh9@E$7#d=?Dc^E$j9iiLf#}P|CGS8Mg#@5(T_|DU&oXJzy2e z%)xiN(ZOnl%qacWxN9bV@`C2daBK&V%5yoWK3D!oW33@(s|QBJjjLQg93a`Iy|&JU zo`#OG$+G}XZY-`Zs0IoA`HX0I=)`Ak((Qp3z&-WIE9#8=J%j$f+s7@IOb8%>C51H9 zIx|DIZD;*i=O}T_x?0OifX~T+>}ZoeYIzZIGJZRc3wV}Q+N>?iTjSM+d{VG#qnx{8 zjXRF?bRr(6Thf3c-kYhzDC^g^| zSW2@;@fkL}{;Bc37EO2Ck?AD?IHeYj+mi?SfD!Te$O*TcpnQ7)_C@vR;)eqc7ZLa(gvgvDAlFlb7HDKC*TeDP z@bP$cS>$I`DMX&HL;{0Ng%RlhpYhFBy@M6c?Qzd-S0n?hPzHqgm#7LieTSY^P4Rm$ zIeU{_PlVJJ_^8}uU0 zOBIT0shJ>_XhW&d?5OQ0CQ`k-;@HM^Gxi3~-$24plDm+QrTwcpUx{EbGVX0Ueq%25W6(Jp-Q?4MQV-6z7+WV zl9B+4!_>5inLWq~HDAsvLCVNNr@;s5>g#EOERTg0Sfj zvj(fsA8h?de~#@XalOz(hb_(kUTv%v(BH6tEre#;D!bQ4p(iiN4`qYy1Q_CMBtj%ej0>J^om(9I zDt~hn#5~1zYPd!PT6drEl`+4(7u3qi&4u?E!klc(6Y9X@GXq>|;PN4$d=8+96RGmaUyy(oR1>8B4 zK`NET()t~5hpPH`>27rs&1}RjCz+a*xjJAaQvNo0{KkfI3*r~1ZpAz}0&R@CvV+}Dxk8Aak9(tD_m^}VsfxPfc+c%DjnHXY=UZgZL* zWB_<)HbRS}-fL+m>OOsMUDz#u`J+DJQ*DDB*nlQE?o|^UV5qY;M(0G70+ni$hM-Xc zDjx$T141HOzZ7ytq^^}G;@I%nu+A_SQ-~07L#f&(Og(-rWJ%P(@}=S`ZTS=gKm>5g zdyj(kz1~>wN5QVAy%^$eh}+N zGIfg+Bdjgw3sIvpCYUGN7$QiR8Y0YWA>(;hu3$~0uwqxx1piOmx~5UV+u<9_$&*9b z<4icUg8dOmd8M}3N=r{jCFxla578zGRwZ1)B@EvH+EVm6$-4%mOle}x+* zxa1t_X^Oy~jG~Oh@v&>soD&K7`1&lsmqOJS%2pUcbzzp;Y`@;#Ah zYkvuM*_{F0 z3VG+AzAWtjic(0FqC31l0#K8O{>Tz+;?K3*)6(^cxwEC(axUsVV$CKPw)}6)wo5~> z6&Mj8%}Tr*C%2?^^`Y@K?dXb52mL*tV$w6pxAJx0eyEm8%=)~%O2ItM*y^X!@%wz& zPp$y{idPDzZy&Sq=4yB8)zup(+Jq+|b+7Gd^2#S~cOIAfd8#GMa86hPw*>Ah@+i-hUJ>U zlJ86PmM2Bt`w|^S6!QSw_($%yAd>gAd;kG4UyroHOP;hmo`tCXJpu5P{A!e6mn#&cDNCKL2Wz#`*9OEDhXe_zEzIDHv)g@xJWJv zNb}aw=a#c?nRj%R_?}O@{iD=o!F}o(s*Sr@Yi(z^#L~(>3XmAJ|=xq8QMTTtugRbBUdA z*hNHh>xCi*9Uhv9pdSI<=H&hj_h-jPq|V!_l$;5T5jz{9^B*bT_7aVPkel;?cXftT(_yS2j`w9VJ_N(mg=h z(;whXEi?BI^!+zpg3%`$!}hsQWuDlF=^2f+C?LNa#5&Tij|;8J@O)Enfdv3%Pf<$L z8&aZvW0d~YkCLBjcYWiHl;7H4#FGXkj%0<@4pK!8FSx(rW9%FW>pU=&Qq{N$uWsub zwT*r=DLY{QD!K51bwaw*jfXtO-zU-79O7tO`e?R*V>=1e4BF#)d?!%kBc340DtZuiF^l9K)VMty)sDWC>)@U_NDj6aei za2C{7|8R)b%6zrFV~0oWbl~o0w8AOX8jBK&4+n-n=*8tDrYBfa?!q{Ha~S^}>CNAf zHeTxJrsa4`*~u71Tyd8@N+34MZbU_$k$l0IG2ll=5X8y5J}7!)24K(k)=$N#l_@iw z%X0a_`xLBM`ehvmrL>aaJGjr2lzB!YNh=UZugtDm_>Bn=y=GqjHp4pI8`aqPmv0QL zQ($K=LL8Zp2V*lEc6S~7h)=nn4P5jqc3KvlZ63=t&s>&t3(LYXD>VZI48v%f3EdKpZf#x zdEcMl*NT=;D>mVpKH7tz81lFn2%mzA%LHBUzY{w`ZIwZCX4gCk3N`Oz9-q3#Spgns zHDAj^7%K%rRM;wCw()zt(6=P&o6<~l{A(PHClRW{rUG#5_hX5Ut>+;--4Rpaj)TEQ zybmnv-+*twe_-B2bZN0DYD#rL0x`y^Q6T3i+sm~ zXY3z~u^a*Ysmi8<)Pc^WoixMuK-oN(B~#(j{qSl7b$&6H-~kc)G+ev?Q0*`4v7ix) znjD{-veC!PcYd0rk)vGBH&OXT6W~K%jhj3ffI#I`rYDuI2M$WB>A!NQ*{CXe3CbI} z{nNhWmS=68(%0cjqnN%|3~r=j&2Ht@eOus;MmmcFvmT$9BEwcv4;Lc7x&Pa1R??iE zwDT{CIM>>XRmR}fVNno%E`}!7ZUSMDgY@y;9y!J}#|o2%{ZT?ErLqio^b|ljJqfsp zJ&Q%JEW&ok4;0uf8v+`jO-?D7jPmz2L56-*Huq2XKFbHd8>#C_T8lH#++8`?PLe9A z;hU3ylddeLu(yN*8sl`d`Dn7cCT2?};`Rr!v3gU>$VK!ov+WM6`bM+_Qw@IWj;Sp- zrzBefQ3}2T0YX1f!G#!4awxe2OR_EHGhGux<`Td;vj6!icxdc3#`f5&AUR2|k$>X| zi*>8Y1xG^?MNx3f{&6Ac3&EaFg;}FW41AjP(RueMIZ=1ucwY_GtbGZw=YtV|W-0U} z-utkUH8^0rO~ct}akskGqxnZFM?cO{*>cK zG82A-dE`{ntI>2Sw{_(1@+iFhar;7gKT0#-STXp>_`ZcDLB1dY>kC+*7elu3A8j_b z!s374|4quCNlsF$^uXikV_`9{vDE6j2hWRi1$u$ZE1+!W#3T@y}vbqi^GFf?^ zY77*p_BK9vWiS%uL;h&uJNvFYUR)`a3tXvYrIN-o8p6n#%+!XLI$xuoQ=Pn88ZB4Z%+&bx85qlO<=8(QJTFb6DsUw zW`D#&V6dmA-=`vezU8@h>TbZl%IlXr?7=w&YIT=Buw?k|>bY>89vyHQTUCWry!wW-OJ-*UUUXg)BvU1b(Tbb4UxOpqx{;4U-Zt}$1G_&@Lw3B(> zaLB&rEeo3TM=X7=cgtVo^%qmPT;muNm*b4Q3MmYFu;My8=A|C@f_Is{Ne9#b@ltJe8I;5?3Djlv?YJ%*waLtkHn|ujmaBVlBYjpWq6UO zaxaxnnx)%^^w7t@89n)7%rJ1;pEtjDY$@YhdvCPwwU2N%8jsIb@|8DxEaK&vrqid> zZ*eE6d|D!OY5bup;0BQp;JXC~!BbP$avHx*DnaHdT+NG0MK@kKo6xbKDo7uoJ0-j@ z^xtL@-&?0I$=7(4L`m~alR{@@8s#d$mBWD0CjRxoF5<(&s!}u{L zySq=NhX@>SP+VF7)3w_ZO{9Ni)Jyj*YTS!yu5P|{bRph#qkDruL-IhYBE1uyMw9MOT(MOp@J&& zeER=AyMdbq-#Fu{I5b-R2@4+&C}t|(TCt3Bgfq${g5iyC=%Og)CbX4#8~h3)Mw|1Y zlhnwc)kK~B=_`5#Clsm@+7-WE*Hdfs`@oT2H zH5%^qZtQgJPvFPi8A-6=$Lu@c;ff8(JFsYhoYQCmiA}R@Wo`OO3*MPek#4J?DU&Jx zL*#scz3?M6#{t_9SsDYnd}@Eu0P9JlZIe8A1ggMIkBj8r+TC1_aCLdY*ddkPa=dJQ*FHV$$e;lM_#e`ihTsy*oeNE$s$@%bg$UM@4LKN@CdlYk>Y<#3|$Upr5;q z$=|`>dze7>mc)txlIS6jfv6mFeCtDk`MmcogMBj+s@v)5BiOVzD1s-7`~MCJ)H>7%tMNC{uS1SFa1&dOb4NtQ$1nC5H!wd3wqG)%-Y!%$Ak_WO^u7kl3xbp{!%$?G}`H&9YEkui7ix`5=mLi9+tv&TF zH$Tz!o!tQ2gFd5a0PW(*3?(BitcE+HQ>-};5DCRd{JdUHkdEAKa8W`I7JYG(pjhkY z{%E{wYFZVZFXprZ%_?FT5xToN?*CmZWYE|`2`(gV8uEhqB)4bi@K2bOBHQx=lH_mQ zxxSWZLu)GzV<1Fwvq87lm{WR|~z3C_6!{w&O5&*1F zQaF%Rb%=X-JV>NNmU782kn2f$D8{nKQkh1{{!lxDDLPz7zRN+_b_p4W-(*+8u=&$R zMY8l=B@m5g(H^d+-QT-E3v~TyW$v=h+FdO;D3IG6%WJ;M@zLJJT%#Zm4KiyefwKWK z8@I~&MF81A+!t0B@$BVI@g03V{NsZC%kIx+rqSgcyZC4%Yjr?%JHx&zQAr2QbeI{Ic8JmCW7=+}Du01(6HC@om0%j@eto9959IH& zRzM9A874C)2THGsiTb2}Gnit^=I$}&obXP>n-59V*PSC)iVs&cED=r@ymxNg-=Sju z+dcFmYB_*q3=Q!_#Xr%swhtWETg-+yhxP3laz@0(tN55RT;wVD^YR0fM7d+cMItW? z4lKDjn@o&!_`|oC*R1c&gOH~=mNQ7<&|DGkPr1%ptL4|=#M@)E<&**@s{LW;nXOkw zm67py5D_Z`RM&2|j+Lha&~ ze%}v8&+y^P1@wm6Z*A_Mi=KE%CT9s=Xu0pqdqk@e9}2_vLuKYg{ki+PI^0b50^l*e z)Qo1Q*cam7I>8RMzSTWnVTl_2bV39D{moHsDZXhglE?L{w!M9x8X&nK4>mIf1OJpt zD2IzIpNo4`>9@=R;PWrED~u zT0re_NkBiA|M1dib!YV$G{YuVtO%LJGdl%B_Px{&KXdX8E13f=ttV1x8oor-tKt>K zm4}1(5}5{WG2;g=2`a_U0LdeX&G<6^4ps!Nle!b3uW-c~>n9X;wSt;JZqTT1S4&wf zrdsr-piI=O-{0qB^1SG5eZD@` zDd8`o2IW?p0#-ViPCFhx#MLC9bx1fKzkrTN-3#jcW;p@i;Ibdr!%W9%}5vV+E7dR9JEE$Z?{Ini7g&|@`yj=q#P zsDFx4a=hsxc3^RAka63(itD|(4JL*3p3@ZS-2Tp7w)MGF0Q>$>hCBQ~+al0P=;&pZ z*HSl@fEcbr^YWm<^VyMQ+nee62Qy>5gH$$C589-pk1sl}{ux8Dy!Kj5zzM4CQPdp# zcciC_<}CLdHH0jRI_S6zNlbex`Yh8alVZj(y2qbw%CxsS%4x|x(B57P%F88I=Xs)N%12JK%49zsT&K0q8z99c$z4}B_g>q}p}#4#7JWVFP`p+< z>^G*NEfgQA6%t~2F`A2A4zlxIV$32&imgx%jf@xWnUu*JsA`OQ&Xzs;>1#=nhI)AN zi(jNLIX|!*7Pd9zZed_*lp1viCWh@+f z*thIw==`MeAa&`>ydHttMZwp1@lKj1J(mpPo}q^`MLb7qX9d=oF|-?6G>^}r`eR;m z<0}~(7V+P}tvWGbsbVk5xX26(g3e`BB5*Rk+6BpWmWwCW_Mkh7(sY zUfvP=e74Bzo;$}nq5?Jh+jnFd*iTKxq4Q&GGynZ9)<7hGgGfiN|MXk zz>qO52U`VEjN+VYq4Xw=y%*YSAoU|fks)H$QH_hX1N8H);%G^WWS0Eh7};lsWGkH6Q& zDVd(F`t-89r^*__NiP1ka|CT|7F0EK3lxC1w~;E2N{1}`Je z+)RpJtZgCXY)!7=0blLP)@*BtAF?UOyMVvQitq0`k^t%F@e|&Uu)a7Y9yEI5VdfL=J5c4{x09uPMo1{ z()8B1I5FB)OZRAluOqcZYB++i!>Fn8vrgt#;E|bZzY2`1k(dz@utGqid zmCEFN+B`pYtAFjde?B)FG;IbeOePi=uP=(s*AqU3QHTVirs*$`f&D zoB-zZXGPt7aW_Exth`bsezPvM#_MqKW%h{MqTBIsL+Dz6&KZ+9SVH? zvUty*2Y?QlgN*y>)asUPS^!^XJ+09%7$Slzn#cJWMHY$)>?V4~QX#sEcsXP}qRY5+ zw&Aq?8Dm)ix|xaJzo!$?6meF9nB7;OJ$6c6kD%N5wOm%u2CaLQr`tGqJ;nFtGR;IF zmFk<053XBi=vH_7pi{z@n1*cJM$OjO84-$KXGW!t)xfK|f>n$U-d>#Q^B1CPKV`AS z=hJigEqaOH@vb8r)(X=!#-$$E$jVNVp=tey8QWRJbbW?f z_06Wy<9Bw+PRFwM{Bt{Bp`K3)zewZ52GSM9ABOCL}w62Ex!Lt9U< zJS#RPrb&KxCxL9{*t#iC`fb;?rpYI%0O57AE1IyReUG$gfnf(eZ3b?Ipj6Tr+r@10 z*7p>>GBJJcM?U|Q2xyC1j+GJXS-0Mw!2=IS%1jpEZ}w$rntWvD>JjbNRI8Jra6)B^ z@SDp<-T7G7oVlWGH6_c%{w`4UAamd)-qo(sxN8G2MQmKOcRAi`Q1L`Lhu?Ib5TKI9 zpZ0!^EuZ0GeDH4jyw5#XNc5+I825;0o7_sJ`KDLjucpDkBc_C{4+p2$>e@*KT~|HY zYEW{sr4ByqD{cDx$1zZ?7?P57qoEa^`_9t#L*eQk4??yB7U!)~!=M8_Nz02EYYX=r zr<~;2rbvO6XFnu0kb(M=VYru=05Dfj-n)szXH&{pjM&Q)>s$rAI- znn;O)=N>*j{zKiPT@sGKu;Z1h@0#ZAO>7p7`@9i{(%euvN{5)t8it$l`8&aSScvvqgG}#H$*>tLRRP|S{xE9uY|tuO zQWes`V;#0jABZe4r8k;8x?~eoSASjcg1DF$^6VHjkd$;gP>}zoKi&j^WeT|+boFP4 ztKg84N`3m&M7$j?6$W_9pT3 zt`zfTX+2beKI)MRWk6d3`peD)n0LodNSaqOZ9c)~dW>7SAVvc2{$-5F!AiZs;DPk5 zbh_h_UOTh!I=A9&PM_%(*T&u9j5)w`^2Hq~r_tuDt7|X(M9@oQA7Cdf&b+w>iw;@U z%2=1grTp~NAIf>DJ*7zCcrw@YxjAWZGz(B}T_5dy6I~uhd2RcNtMSDe_WmHs=bT`U z2Q{S7+?yd_w-bUUrDxloiJ-Mv?NkV45ui})E0hy`Sn#}Df*zv~qbnP38EZx%`}Bw0 z_oi!9ontDz%>~Q1Jqp^{SWnqIg-(0AkACi>Zlk4y?T&%_s0v;`=@Z_tX4~;eIp!T3 z7#A^N+{yhkwXxAOM%N-X{w+EF`LB@G_oCcU%V&c&zx{8+otwnnLgoy^m}k#DmQMnI z#y@fK%H=r?1e}MY0$NR_(8+`i5sW{cMfnG};iQstilunIEB^1#Z$~%1^pHe`+_bB{Ie!L4v&Nq+tU`Rxw3=tombX6O{=FEl#gkzL8r-X4w-=)6< z=~z%>Dchpv0lYf0H*H1+~JFu&;s}SAXz>NiPnhH71x+{`$k5ALGcG zed3c7uRp9#^EY_Q!}z-X;hws5IMP-^*4Xw3Z6pigKpk)1WXRufAY69d?+Y4Q4P*Z% zZLYw^1eocy#x$>0LFXbA%f-xtT>tg=yL|=K$@Lg_&0W5TnAJ+)Q zGR0gC8ci}$rSDMy0>d5b65lLEk+()!dMY%IdwMB=Bugkx8A&4}m!qPuE<%H)+oNfT z>Z#v#XBl zw^bo=pQhfmN_!oZb{R*t9Je1n6_wyP;8rOUjoPcCtt`C!=N3H^#PGbVb zQyYHc0(k`JV+ccNKM)@!MY8r)jEw}HuW;n`YK|}G*0LGODeO{;L_8C!x5hM9=G04niqpQ$i_OF-5VMs^A%J`-{xb<5#**zaa z(*#`U*;!{%}qA;~al%jj<1$ z!$MLyhxwz;f@0W$B7c4-Cu?OE{;kGyV>8^(mWxpKEgc)|rC0J7eGc7Tt!!(1WL@rq zQQ%+)OdnEFd$5mNmLxw}P(I4YD2R?iP@4BzTUcI;pbF@+P}B<!!~4dYsu~BSg0yj!y$_!0Y^3 z!*^0}ffqf!EoaoLEKRv9c-hM*_XA3T`A9#^n5rxc5ho|_Jc7r-URv!~N?u}=Sm)lp zxV0UDMAyD2m(TO598hvKu>tL|MBLfGwXZPM zxR-X5!EB<{K+laa+Rph zLZf!l;9N|Otm8ryw&$9&+-ai=pSc5`6unbvAc;t_wh`nMz2N*PR+0wg-j}|QlMg@N zZ&$`y?j!3mZHeVmDgC1cbZ#=lbwLrOrd&cwQ@@guUNr$$WZ3@-G<9^a!z3zb>c%Mb z&V!ruzwj}bXov`(K7iNNbS8HEI1cSeJzhnXGIps?Tco|{Tb9~?&Aj>L`o@Y(>$A4B zPE|ImkmXZ1i7w9={jgm*^HNk7azpLC6Hiota5XOFCMFF>#b~ao@U7y5C@uYz3-)<% z+BVYXIcmZ&osq=7GI*jva;y{qFLC*3YY)`LmOi6PQS-=+FnzSPCOmPf^G*vBT%MymPe*IPU@zXE2tmB{i)6YM9 z#O^t?ep;rj&3vp?aQqBjDRZQe`E@Ty$jp(t|FHHzJ0E^3OTXPMOZJ)%{NdhAzTG7l zVd(YUdWWHH@*sUInqg-B!12)iRBtZfQIf^l)N=)c@o?k6ujFKDOkEIueK96dQ?&Ob z?R4FA#Uf2CLoa#Lwyz&Y%jnZm#lh~OF{|8gCC7!Hh_r(5$Kr=V;m%tGGoH=rIvEL@ z7vnxqQN~qSS~d2O#8j7WW!9>sa~afd!&c!xw!Z4TMo$SkM_cho2HXo~9@ zlkx{UKTKy8bhW;dbXVb_M#!A-)@Qfsef`Q#ioP;mWj{o3ZT1g6+?iz=VuH??6qXKs zbR=ia={iQ(L`ao=a36!sTvI=Nlw}if1xN9Y34@2=iVBgPNZKU6gUZ+O9rZ=sB5EDAk^ldg=Lcy3SHbCTOA@8fUJ#C+RtO+Mgp*NNuv*fW;s zh~37&hnNPMDoj6COGn`}$^BH4S{XixP%{N2ZuPG0mlzDoUF!6nT4;%V=|3ze<2b|= zMV|*|Zrse0c<7l)PS$=@mfi2CK~QI+Iv#6!=@_v) z=+^2;-&XvF%gt-R-zmkq%CX&ghr3mYUfuh|8V9PSYjK zsVx1lw$|v8Ws!3k*;67rP!+zR|*#$Mbhi*aQzu7Zgm5;6AVUnc}9xgj;4Zy&TG)LUxB~aubF%- zqRs`zaJH6m z!F_WsZlyttaiqO+Eim+0L{dkq=s`g_2=jsT-mALH1KZG0YN}W|+Zva^3f7B9epA&n z=n{6$9fmi9%6V%}+vC7GBaK$#ssm>ejzg$d%Q+}0rXH2Xwvi2#FMeYW0&&e|Cx+=W*mBbgNi%eS?WtUGmTS_a?*?9U< zs+n)Hqp7LJRv=^{w9yi<9=wXF^@11CpSf$DotUVr#WV@LV#YP4)%h8GZy5$X6sW&Z zdiQwzsqR`817Po~ORzOfkuQ_$CF?0AiYbyYfaGVMuMCmZ>h2v<0u0`fxAZUO0^(R? zAqihTkUmBr(OiBTMzRUh`JK6((n#f04<>mGV14Bv;S%RH_Ps@c{D0mia@vcGZn1c3d zLofFfr;pdPwAJ0=S1u9@>40NdJ8iKUky+U8i$+o7+_BILWPtl$0jsL-N9^vS^n^); zQL=#)7xv1?fVi!P@So>#;Djq0g30RmUmqe8ijD7ot@|XkbM=hm;xn70q2NBLjxt6k zowSWrzj6aWLa`-1>U=OWaIwiAfiD$9C-x`2IJrMq=)>>>DVb( zYIRQnDD_npyw{j+Sf{(gaA(PeS=`SQSo$yrs+?W*D8B+0(C5!uV-iJtg0Ud_~w0< z1GVa`%N<~`e~sUN90>PA1LNLwoLM7Jw`{~~kUW6aF45(Mc*jk-KCbrn8f#gVMvViq z=DuDMygS<)j9UQlDBd@9sml|M9|CHm8d>EP=J6d{_FMSAA?@PD;i*@>B>sHqKYDtY zKjxJ9pi?Zha=x^tx@b?(-s4I=XZafXc~Ahd>R$*p#%|C&wk#weaihsyyEToO6Oi%Y zXpzmYywJaDU>aM{c|DE96ssLq2W0qOfvLMR!puIru#C!Y9(tL`ifeNi#~{0%SoFbi z>-sIuB>se`sVsYSKKIenx7Quws0@{Z%%9;JFLr<^q9|3 zj-j1Mo#%eUg_dG9-b!Cnz@CmDQh8_=;4wReFHPyqC^TV zMJ8`aq!y?N<+gU1;n1^t$Uu7b+F#H6cM-Cq^>gXvMOpA9dLD}t22@dY%h9n8OnIiH z{JGzaK${Q}Eof?&wdkH{ae4AO3aRGqA2WNJJ~?%Zupv|jGcr_GN7ai>_pL9VEsLB#G|q|T6cj~X#A$*Rzg z){gVL#!TD3FB`4d=&%`_7%vxOq9hoJMVzx-Y&xu9CKl4Mm05|a-9L+>_02*hxDEr0 zRHmeyd`QRoL7H8Q>RmdyC0A!X+kYLCcS9qUnlt&gQ1@4Zj#cT;-SIYiJ2PwKLmgmx zf1RbTDVrhVrpk2J4mf~|8(~tsi&|alU(Mn5>6hl_>*33#++hwGE>#*lRa?rBQEM{J z9lxaa?iU)uRRb7eu^XJPKNSw@anC7gt}88Oj759z;$-USb1u!Ach(RG;3Pg8*$n`c+#bO-5>TX-(zhxyuopr&>gfoC6dD`KM*Qd#u0Td zIZ>(LYOH|9C2bxl=7aw}!^B&2rpo8?njn+AYN({TTV$dj09V#x=aX8XlAJHY*h9s! zJ7S&J2xdQ?)VZ0anCo_69FEntpM1e|9gi4zCgYZYs+}A1@4z}F}$)%T-TWg zKQQX0P@4&IUV3m**L?52u&TJTJ9Drizy@k8Mn|xgmb3-*cIegFt`|_ zSP+HGpoz}~rERySYTSYsUPG>33sTD>I|^P;8vJNw6&b4((644~JwTkq@4a3ZWsDk` z3aGJTQa^lO_(J;hE2Sp_K9=)KP+(>XSjI#kOcO5%rD$DdY2&tZ5kUn4G27omLkOw| z;!jnQ3S4r(yZq$}Wo`QM+Fz8=uWQxmO>m^-cpSJx3eOtH{uTFp1k&G9a2bip$l|1@ zKlPqts3p(ABHfuh$#z0;8sOEto=kr&RvGjOo{4BPOVnt^9F{rv6g&37Fryh1CWUj|D%oHIW{J6at&ut=a zQNHZ*qQZyHZ_3=E%V)r%oZX^SDSaOz#6|2v-laQmSFx??UXzIrkQQ!luqI+Ip1nRq z1=zt{2bZ9HL?2vq0BKSc=P1bVQ~^{|e0-k&ANcr(LE^Yt82=)mn5l|YUQ38#f*!OrANypiq+5wje^bGe z<^gu!);?bE?{vfe+-8vsLl5+aj5~PhB!jgVu15M)PeNgdGVp?<4l{v5BwpX2gzEp? zq@Awtdk|&eR_y5DGqQ9H!H%*ympR{TfU+Uq%DnQK^`Df#zjGx2W}~>@MFEh>E|ybu zd2E5_e#`qdnMPCGMcCy55q7v>iWj&ZiLpj)2H2mMx~eL+OP!{?eHL-*IL;(N%y} zAM~hH1&XwUp`pi}_K-FMEEoU%dXi>J>H&ubzR)XU=JetAEr$w`VVAaYDxg%3;sTxw z&>=`DIKUd26^i+hYeTGnhb=o7H{WVL&&_ev$zG_Rh)g~x3E@Cc^j`eQN&S;!ibK=) z0M7uNqiD#jM*xTyWG;r229xb1uhIwa#8WL*I16&wl@CQ0*Y zZ#3uS&+g8w;zEp?(^r_`D)oRLUXyxmqsCQjd#BBdbI(!Xy0C7{OFA_I$1cm(q51Q~Uar zig;t?|1ObnvN6z$&@=~Tb&n%e+gn+%j)O&VelmaCwcH_sYl3qLGk9E?e?y%6&&ANH zeVBEcGa)^{3Z*L9g+Dve(xBh^VL%AtyE)+Oz8-<0ZlOdg5#tquWNS$XU(mF%aJ@r* zl=J_t7I*sJQ#tQrn#Vx@3vDAoUvQ0;ysO}F&{7OeGLB_$<_ookh!|OP^rNacrY5eC zxxU=M8=JFifrtQSG{$tShkR*1I4TKb&!1OLGDwMW)-51=`#vYe)}NRc7(d|vi84m(7E5H707nP;u3 z9=;6zl;GF~(G?pCfdZ1(;fvP{tLH(X^I56-RwlK#uj^Pq=+MU6a_g#dZCUleBf7H; z*!dT)z8_%Fza^x9c>f?|lngcSI&S4%wG**6Mx}2Zv$-c5;)EE%HOjn)0?h)e7QFw` zm3a^Gz3D2EQegK@5&`oSr3eA?_%(^;9+e?i7KvR&hnsYsJE*_mNg=!hUaF`-WXQom zNXT=no|&+1y2y&`UxR=E@+(^ZD^)|~Q?ML+R@>V~ng`PCr+BuTi#HcRu67*mbw#(v z8ic(;&BTr*%OSa0g!WCq-c(+#1#lq)8Mtul$~32_cNX*zV<#fV@w0#0e79Pd0v$2sq;x~ui_Ph? z=~xE{Rc=_5tlEU)4{bhkYS)EgC8ifj)~76l?s-dgfasUDg|?>psWj93$-t8NBDQ#S zE~cfwhBZz~CJMAQJ-JS;HbSf)j@R8^eCkTCUnM!c;qjmO_xCfd!3S&(Sf{S9RhbZL zH;sxyAKt%E;mA#T3k3pUJ}@9x48cI}EPl;Xv_LlOJ7@OR=t|DAdN%nGpru6ntSW2z zvy>S3Tyk%93&o14VEL?jg2TJ@`+J`^Ey7K!r4Ku??B!49)*;ne%NC7A$H+4Xmh)26!t1DK`%gUR&r!3{K!zC|ux?p9+Me8f zF#J=^WHLg!v9I1>!cSc-qziG+{PrHL_uWep+X@en6v7Ql;;ay6BC(z%L>!Y7XvggK zY(8)}Gww$1h0NYVTKpQ90>GPKx}f=5LE9+{kz3zS$T5@z(2AG%n5kW*&)1okO^b|s zp6w;wHV8e4*{8={m&ib|Mht)f73~A9a(McJnsT!pc{`-L zdz;LWT32jKEPFSG*O6X7tT|teznj}tPk)yyR&t?}3pAgiUTRiY6JnV^epUces&lM) zhSkK@Y3^>V=&?ZQs=hN*-j4<*(1a)l9b-i|!1b7c|Cz+yw0rpXz^e>mD3AtSJt+%ZGfsKzxS? zDZ6M~F;-cB*Q*v^&@7wED2@{BoHTd1l>*=fg8d4n%J(_5ZncFemh8F&hjvrSdG^U; z&zrGO2vml0qYqjaqyY)}9#XLxh8~tT1G5%P$-3o0{T;#x8sh)!^nhFl+-fuXn7k&B z`R2JT3~glEkS?r56#HPEz;oyM9Cd zEh66mR~`!Rwr=g`(JtOW;&b}>bhrCwN>6n8UVFL%^m*W$#o!~`Yiz+M=)IXGzt`z} z@juoJ%eG>={;uEn&&uC`lD*pP#k5*`HFwV5Dj8B{)w9We2}NG(f{}bIs=(Adq~kc_ zA|ZMr-;vUl;mlD^lzF&G_n?WS5_r&6TH$xy|Cfhv*QU(YWa*f2jRQsYlhFh7C)sT8 zhX~2!wzRemS!$(JWl|H7k}s>M!1c(3F1Pl(5FxG9qR}RKLyq{c zA*nsTY*-HPSqA*Jn%TF}FfKTd127P4LLmaM^fG)#PM|TV0AbFor)_q;xSyDifuDp& z#g+T8UaT*48pCSn8@Sry8w3d=3KoQnh!-L z75&RG_uoRNKZg}G1Lmu?rt@Q>Oh|hMDT*~k?*1h!eCS@V|K!}SB9xIi_b3_}wrIM? zTTdm$?7zUmvjHGKfj#RlkL&Opxh1E(238#A{xEOld*8l~ctt16I-3IM7qru!Zw{?^ zn&T^vi|D1^b|j*}zkuC?{E{^N3XiF$lJ_6y?#nTjoxcd50<-R4kn0mN;G5#gj6v{e z=YKOP{@qAd$-s@3D{Gawz25NP#HJ#~4Pq#ydrd&kzlqJAjjEFS{TgM1R}ox`j1}%> zZ=&zal-vtb*?njS$wS1;99IybZeWNFo#8i!@ty;CTh<>Mk>7PDGQ;P=O0srHJXvL& zdM^MRc5xAI`B~sOi5)Rt?tgf^3mD*^BfPpP;i1I153g%XO+2;l+Q?{tB4*6D^Of9) z|I6Ef9b09Okh6=%?nq>(Mz(H3v!xNo=4~mY2QDx!*!+lrrUKsUb<_`B8ar|7eyWLt z2)U~@AXUR&EDbg=1`!f>2&!!V5~MD>rDkG&LRJqj24Dh)MHe;rO>%Om(^iAA0g40u z(A(2yzWlZxizP7aUox|L=Sk4KS<=K;6eF7 zw&|cdw0$?ox=WV?OZUw1;!BZNL2&uj*#18IFtPX#JQKk_YpmPfvH<_t@rNU53%#^J z&W~n1ARc6*KUmv?T;ogAeyOxaEjsbf*5Ch{<~OH!jc|v7cskPT?*RygAcuBhXXW9SHH^quZ`9| zL_eqf8ZhMvczg~nI7+KY>b2vXJH-iBm}RHAJrVtxmgdBbtH=FC6f^Vksl=7VBG<}f zZIzVLnR(}{QSPZ}rOVZk0kU@h@?#2JvK9NqN3jEt`!vdzy3f3r#2$R5n(Gb!YF!6b z_ohTUTjeVAHGJ0vFbs%&C20kuGL8~U6^ppjr`Y}&nl~8D*2%IgcUts<< z7m>atTOCZ-UJW^Nh?Tmp-f%FjcAX^o`cC$z<{bR-yF+-I0Yt+=$87whVw`rtHvjFE zo=X6ZoFCzqbTputd}Fd_vA+I#<(k~R8hSegv;m+JB4!FubQH~Vl+KQkbEI>e=iphG zYcCH9=;QRtag@oX)R-kY4^iNj*<64Xwb$MMm6uy>K)+&!x0MC7xT$*889NyyU-=7P zE&pCl-+cK;r;16)OL2Zmh|Y*jNX%H9DN`U+xYAm#{8I}Rq8<{G`7Fpf(ix9Ac(Ofr zP0{zZLzt2~E5gDWS2^GibcmpXgbbL4BtI}4;0=%8YzHg~>=6vN`v|COW%*Ct-G%J& zo{EdzdsXe{hW$sSENOI7R;`s!110O3{7I=JDTNL`l-llT)0M`}->`jWH5B_RY*wLi zsue&FQRLWYVf$%Nl7`V_N!xrBx%hdpum_q7VR zkar~=kt!kmjk#OrrHB$t77PIaK*(djr>e6Xw>QuW`1rB3kWVs3mg|Bq`U- z7<}bao#RN!Pm*%S(cCwFgT0jDp#}j|HXG5MaR0bC*M%r8xHbsLOP{d8SkMNuY{y4< z-m+WvlR<{zllxzhngXWGIZ@WK#g01y;ZeZIa)Z{$4%6y)(_U)5nNETH__WN0U*!<& z#d;t+a&I$&Gyu6EsSSPL!Cu?HKGi>46Eq1XFPc010=^tnENJ^BP$*a~2#9AHBK}R~ zr0Pik(@Kbh;-hNA4q|Mf=K( z=;0&_YcMs=LkTFx*e z1N|MeB;jiKp4X{Q3Bi8Y|u_%2uZu$W4`G}vh-4f;721Y&YG@L*_?@=KE?E? zWz%+}p~bj%y@4z#Wc{R>zye^?nIc#IxoAx1&439Skh-m>t-+q@qoMix$}=w-rcdq; zw>x}RANrZAhK~&brbob@wLe_+YDbTCT?c(Z^y2k86Vr4YeH@ymt!t}Bc3j=Hedp9r zKL}Q7I8VALORo(*u*B(Yf-2RI@VgB9AVPuD&g<=BES22= z=eTpA$jB<@6n%~J;x77L zYLqLL&FN!&s&5qB=08Lv8#IYXfK;=8vt+sGWjsLKI-y2t1&Oxbh#fHQ6p)*h3~m8h zt>ck@YrSDbUr!Fy>-zzbxp@DSp6k@M;peACD_5dIOjHe!Lm8hOB3v&Ry-wj&NM~!# zN--Yu39;hiksAG)T!aho+`&bGtx^V#I(q0?7kVtKJT3D*x zb6E+^Xy3mx`X6LF{T8=^b7pCeQTX?qM*9&VIDxWJ!4?lh34}FQuRVTov_57<7$n@X zBZG_wkQ3ySiVm}z>JN>rgr>RjsN7Vk$? zBt8Y+0zs_}RRw`Jvn`94tT)g$TUbYfVUu$b&o;L<98=OB@O?{aRJm$%sQ73pG(|Fv z`ItG#k<)A|%v8ud6`?8X8Q#~!Y%3t2oJ&5XAi3n3XXm(N6)pK=H33WHPu#K3xTv;x zD|`7hyX$Mm-G4Oo{v9Grm1?k1UK7<^CIk=^8cBnU05T7(_1{Ilzl3QC`7X5p$DCV+v_47q*-h3bIIwSV z?H$%Mn=<)9X_uMyT56+etTn+m^l$h-kWK>v>B%B9XehB0acw}KnH~yp0dKJmb!j=o z6Z5CT(uxunQIB(vhlr?c+?A&fUYMF$GK!GuODehCP3DaHwP3F03L3uf-X+GWBU8WH zpOTz|^Z(I&{0}nsy$$fJ)_>S=AKe2ezF*@)KUWj1hls*8?}LRUS?WN`jGKt&EVsC3 zbdEf!Rwsi4iLz#t)JQz>4JA%M*BSw(R2- zitb?-Lg2fANVW4eUD3_ki%(;ry;2_<@ES=W$D!YcMaehdz=or@r&H~mxm}SaQxOU~Ddgu!jCH>CDpI8i@*uw0E`p+D1nZ^T15 zWso027BOZgnV^t0@cKdZ$*3l7|0p}XG0a_b90QE@3cg+R^?yb`9SQpaQW<@tg|Z~p zp1xPJ%UheMB0A;EtXQpfji2b{w`B6}>cBiut~6#8#ZWBu8V_~PcKCB1Y&19r=h{|F zHM&iZpV>h|VoRQktN0AdI{CvNhZj(CqMdfwz9ODm#U{{X;g-}p{QU!sjq6v`tQZ|- z`ZiK4R>h%vm_Sw&Oq#Z(7F@d9;(ljb%kt4fJ95opVDgGE%U3e^l1PHmatU3XQ+pZ? z84?YXjmWTo%Br%wVglJdt9)TsB>_Xq-0v7?dW4nFYT zh5i3eD8-f)h?cL!9Xh|qTI1xBjX!n=!VDAx-kmSi%Ew32{LJ^NYo1d)Yk$BSoCPEi zqB*s1_{jhXi9AGfnv+aD;3G05$Un)PAW9warq#CAQgjG1H=7>y(^Os^k1zPHD`ZOp zLu2`Kfrf4PskNZQW0DM@)aYBd9iFSg#=?ltzDig|(y5*L8$0^Zg9IprX`O#&?&T|- zSy%e8p8lq8l`p-LBMlM#qACF#xQ$oq@YvPKG~<~Bno(U9zxX7(nfRu+ zmX8KVzsCz0YhBlp{6~T8KXHN@I)G<9Zc1~a;{cDR6Uo1%PBES`d=99x(|vG3=Cg(C zZ}Wgx;tNM6P-!{uC}CiEhWQ00CUboGGxo#T&EafCMnh>nrgJ*P`QkT0r>U+qdP7RnNTLolpC8;pE8R_q&=9pH4`O^$hHKbdj)vS|4Z&v|`IlCTzO7OQ>Yn$gM@(q z$shpivWD9g+w8frSusaB*8i<@XFz#5M=isF-9;eVb1sWUcH*Uw;V~{{NWnwgBLPGuV<*G_)lE@{D-`E)zH3U|XkgTs&3#I9!-u3~Q2C z!-#T;n~3=3=gL=4VT>1zml&fMJ8`G3q(273!{Vim%h7Bb7<$;Mm+#q|Q_h{k+G5}+ z7vQ$X3`x0$Vq=?=M9Xdlkhc<=!Pa3(XFE5FflpRWB9}eED(N^2#$OJxy{O|#q@Ga? z3vVZY>;`3!F##V>MrO*)3NZAWln3;dSG0bdukB8%;{4ESy!&5KtYIJ-O64UE@mJ_k z7TN}0K7lz!c+z=h9EiIt*$!8@Ye@U}qG<>d@gt6jW+oxK7&J)|fiUwsh?i>2oxg%~m^&4in~Ft7PK0J3jLYDB?1GP; zU)9TbP!24gpzeU8CkDqkZAbpi{r`nZvj=c)1PjiMcz8UGJCkJ*=TChA0-h1N;pe3Fq@gzEiMX@QBJGd#DnT<_8Xz_n=9k)VE z!1H|+Z}Uwo4?-@QWP&h|*rhv6MM#3aIdGf zdHn+&zjweY%{Kh;M>sddrX8XjvPyN1Qx&2oV+2&i1nDnmDfx^$rgsV}o#D9#Zk$l& zCf5r7k5|7lgcDS`F|loplW*iD@Njv&eHIff=xl$~<4!J-^kv5^Hk0a1)zqj${1!S{ zPgh=Hw!G4a;w*cL%0&Wc6dc;_wdmOEBBv|jxW@8^Mlg--i*ZOcNBhO%?E^1XVZ~v` zcndW$5yDghy08O2C0RUA!t<)1o8}CA;8QMd;avl1npKRj}qHIQ>y zfnks+HN)_GuhI;6cc9V&A@0ww5_i$mQ%>m=Xvw3CU9m>L&4qFWfma!WZlP)70s&+(W5Wu&GtoZMS^9Kd9vrQuRvQ5QAd#& z3oq|j)4Dr+I9;9p=jhomAVZOx<9zwbNwPxQ?ROKDNSeC>DpO-D7cir07u}^c@nIK1 zD_M4MCXcf<1BA4-;1%IB|lkZrOCC?5KjX>_O;pYqHbcna}9HY z-aiIy==A6;f?e;NN+q=1JD9pK%sqmIZ6feWvTA^JQf;8PqDp<_4P8C_K8Tol1;DQEG9oa9OJvRx1>QAcYtX ztRw|H3_sP#uDE>+tFC@B90GPM&K`Qxp?z)$tMfz1Dg4B1)C03Lm7|cmAsemCL7_s=^#NjE?J7!{-1%JN{DM zMb~}IY)U=fDj-z{89DL>SCz7;6w;i5STpBPr&~1OcDG-V zOQNhCdU8^@sn|w>(TGBq1St-{JE72+ON@r!vFJkd^CdfeqphxJ(D)OE{r$(@l5n=b zxZ0__|6UINhpn#+h_c(-W*8WxQABAFl#mYT7(_%GrKE>u=m=o-4d@x1Rj=Y5{%`!zq{zVB;ad#}CMUf0@d(+H3);;iM>^KB1f7W&%!>NGT! zT;qptQ9sMRcE~flKchOF`z9sl@d1}$ab0mXYA5jiM-}7mqbiO3HFLYNBd+;Ua^7~w ziHL3Cg4o3nSp?QJbM+OUe!%A%y6akqG%xh^wr0%E72_o_>k8Ta3usZAW-ea+wi{! z=V7oWn(nvVKTXsa)H6(W@=6I;b_CEsM7O1m_V1iLXoL4+?N_x-x*MNcXj4;7r|uRfs&!x#007~&di z-Nv|*pyoqAOie}oqKLKnqQ5e441ss3m}78j1$0NyENs)|d9`MzfyS<}jU`F;$CWz< z5J|`lTjz&C*~eF!T_;c83OJ}?&UtM6)8~SiwDyR5r4q6tG$nqnURVWkU1AP?%PWIrGF;s*ykesDaa_~T^K_I!t&8RZr#I38U~A%WNbav6QLnTTEI6d$YRr{?MY4L307XbX|^_V1L8}y!&jk z9EPy06GRlJK4EHoj9l7cA|w4ONb~j_U^zl{mRZY76b`G;>@8ovD+9+{h_ zjntYT{G|!tmZ6?co+I4lJNs&oKLbM?96~WNJy*R(JzI7o{~6 zQ)i3qTy)yO!mB?LkL?fOOT&Mziit;3V>vvmtN(~TT#ILApKNsb(EQp!HGp#;@;(PP zZw2w4X7t3qe_bdYim*Ht$uIb;1dt9Rz-R!EF&e-Yp5`X!b)nwOMB$=#^dbX?c_>c9 z_}3wb~VQxDo}@m?Ex!EJ+~u1=gpC06H*7Skf~ak9A!quh&j><*uR}UtXDHz=$}-LWe2^>_9gWtATckoY z3lLZEUM?~gu+iDo%10Ah0%p{PV0$a=`KJw=B&qCKSQ1e8SSeCkto+K8`oFnW?HHNF zG;XD;%*757myEhaKy{mm9&zY9f2Igg2VUEQ_ z3iPr+%;XMYs@*#Nx{bXXh<8Ik5Y2SJw6u!of{c{jsA(5|ym~&1U0*A*0Q^dsq;E$= z3G52ugZ$4A(u2ynK;cWt<<3lXBUP0Pmcik%LD%Ct=ABW3?xtankyaDh@|RaphwOW5 zkL3?#D;Un1-xm<}K>I)6+}*ne=6I2cz6HGu&W4b=vy#{1Y<>l15(}_p{Wu_sTW0P# z@_7Hl=fkio^>F?YlrCreZKpFpw>it5594RQbZRn4rxoMImhVhtkMU6>i;}UNe4J9} zw;3UB9};sE!B3YueRADRUE{&^15?T@>LDnr6<6`s7qac_ECc*%4pG*EgZ=iFymjiw}8;i_03{QYMGE_urQPA;3N!AgamD z8)0`w@$>>-er2dXr*L%fp3bzqFlg-wR4GV$%c0ng zP=k~)sztZqz#}~S!|`4zX~!QrgKzs$4*OOW52t{%gey%%5i=`Zk15L~eq?>8euGM- zvm^cC`MrhZ+I!5yIrXr2$&^=iie$tE@c>&mn7NI3=@DG3)))NI?k(%m219}*ewCum z+hJxY+HH!&l3Kx?OGz($>&}wZTi>`$z?wsI~2Dffa6&MxqqcX^^ShLIZ5=HSNL0d1~U7K*&zFOYx7oEZHNzr>q%cA>R z2^{mq$Avx_xE>VM1~3ub;Ap$}<=os=^?LorexLobfF0{b0M=7Nk_zobkEp{wXA>IM z$}W}3ip*E+V(FtvYql}#K0^!aI zRml#-psJj9YZ;#lw!DL=HUVt_;?M%Lw}7T%iQls_zg+h^^zdgN^+>;~qOGKB`v4x) zF=;eW51{L2fF*g3CK#8)JRATklGp5Z%+O|IA+bJ-&n(7!=B2cKdViasx~T53eo)|x z?+$Y>bhClBro$?OxErJq*)G8>1F7b={ra+B!N|eZp!2rXCG35G2yr^e;71bY=vi1J z0#ad#h^ryBp-@p>WtA~<9N{vqWG;gqgQ3ack7!9} z>KT!kx@$MH7tb%PR=m6pK0k82hq~9N`wv`fnY<4e1ibC6!xamXr3Q#hYda`Tb-Ldf z%ls;F)FmQya|d30Sv*}Tr`kv`dn{jEAsP3!#CgVailJwa39NtQfhYgM-ld6jiUMW$ zNL04imFg{n-xFQa4V`ngeS1W|luU}YlPbxG-uQ^PMX6LxTjgde>4RhgXGY`ol{@NQ z>ycheQ$=sNCGx*6Aws)#yHQzq)-=X$tKY=CHG-t%jql{*1%Ou*3NG7C4kq(mbw+cg9uuCWXF9S$Ff&?s9EAdFU^S*-^DjF*ks=6rL$ ze`O2!usc{fgdC=QxssiUlSE{9!g$R!W!!DDbhZRuw=~H#JsgiYY8xHCk{Fp15wMp1 z1$+X#ZtsaHGw4l8$JT2}|17VsT<}-Z3gIPFeIIYi60LF|m>IBrPdRCFr0AEI$Q|h> zI8UAb!-U1e$)fhK^pN)cVKvFpr`0acg9GLiZsx%yT9R#HGSWgMhvK*{zOE8?{qBbJ z%FumzfTs|hq+MyQ6Fu3t#K|j|pztA%>dpzy=yf^UVHv1$FBem<#EU2r&>nQ5Jtg$Y z&qlN<@eLl$^%(1q029fPR?gtPWWi|M7Isyis|ZTn zE=Hm>!CJ|vY?4T`00w zAIn;4Q3-swhh2S+Tj9i}LyNb%^Wi8yIxhM9Ecr^!D(Sq78xJ7c>|A|{{%|ciI*L~% zpu|2QyXo(9LnO>8`15@MXAE>3tBZT?g*UyGHMta0ykLVfT8{+0Lv)__UT@$GGLEal zF+F`7tCXO~kfWoQjVE?C?o1R(fm+7D2ztrDXtfq>&F}@_1!t#`1#g=A4XlW2WxS4xPpOEqVqUX1m%(S?P6u%2^HMR#EilTS22C;u@ z8^z*JXg%%mu+M@b=W%+&g!b3~KRW_Sll($lq+U2VWnQPO~E` zs4^YT=$sh!4G8vx?|66?ahu>dJ-t&)NUzke`q4kPbD0=iVwHyDUM1X#!zNigrA^hU=P1#I|p(mD^W4#m^2B%|M#;;IM zI#Evk>qsZ(BU81(jP!VwW%bSsp^JjVjP783G}{PGcW+{9IK4e{BVmtjEcqipoJ_zF zwtt6=Y6l}D>#ms-^OFo4?DjUJCY{nJ^@5DHT{z5u0sCY1lrIwr5#NH;nSnpl?@;8_OQh1QX z!sS(1P+8~d3LPF5^7(H~PA-JCfPW0~;PGKAIq@+T$OqrJNa@*v%M$LBrsNe8L$ zRV$kcVG6t6&nV_zF{CYW<>{7nQ}&bkjC)^d2Hf;$3iy>gAxlAQCftEm4J7@to3?wo zjXygIz8kz^PecOL!Q5xg1|Cl;C)=egHG}>gCJWI!^0C~{3SUJvMboLg4DVRW*_0Rh zL}vl1Ic`IoOU-%o(*8=I`YKVzyef(u_gH`S?*tB{Qilqa*j{6z{LM3S0Ff8jglQLGV( zl_rl}E*h%Y3e=axmcoli_%7A`7W4S)0s|o$dj~_|2y_2j8K*6#9U{8w1AJkdiw!#QcSH{EDyGD5JZKZH&HW8H$W`xy<%oQu#Gmk)3Beqt&`v|mwYJ4q;-RxPS z45;@;RDZ$)21_(=-7j-+C)xA^FI+m?Ke;7l>@H(?OGJycQs_>A&Uo3duj}@k<2hX} z;hxdmk2!oxD#*jvq~q29yW9EC&)6rJwlSo{LUyKj$75&ann(y2gT>gHau>@s*dJS! zUQ7A>aA&rb)kgT?6oZ6P%>wJD!WDBYd4BnFGcj6A%>VVi)9+~n_Yz<9DUM6-1NcpH z?kUSP;7pq_;dUX_cW*jL#LVX}Gdsf=avpc=*&U=@G<&4$^7Q2TeARaU-!6@b=+zg_{}x=;!{rdsHKFS6emUE95C`5FmKS({>vL+u>2;^a z`;)+gs2;0we0gao4Pc{=M1n9HBoM~`w;ck8j&`sJyXuFOo>W<_obR}&&237*>K`== zBk@?Oxb{7e3_YU54=>S~@#*ZPkL~s5%n#SFtb(i%Uc8j)_&)Ex<>qa9Of%163*ln& zkJ}zVl+>Nxy+76h`#U`+dGqUmT~R-rNC1zd?BQ=!xouJxCybJ4 zg%^_y(yq%4#z;NpBjd!aO0DAaBD=y_fm@dt)Mcm*_HQn+IgzRxiYmC|qYpmP$wl13gM+BK#RI1ase(vY>RveDslf}K$sQBgbIl>^E^Z# z$c$-yy$CC!x$Ph&^tq_QVn|jSCXs~~+b<#$+M&0a8e#1WzrB3ib1)(#;lF7x3tY## z81U9HKMwrL0uZ$|23E^5q^qYrUZiNQCCB9S{;$vZZ`U*56hT{@FP2f1p^Jxq?Ycnh z{ElEx@7K2VGsRoTsny|qTMMP=wUlwd4ORm0?OJ&t)9I1PdUBIKM}8vi$Y3F3>z1FosBwiRy( z{>_1igbB3;iE7&a7Sv~r`fI}gW{jkuf$Y8ztx@PdzGff%2W$tlMwR+6;gCN#=!rhd zCgPRkkNzJA{eNCPgM)!l9WiQ`@lPBQl)T|jNwrn}x)J#kORK`iz_1}Nm=^md4sTuv zi5C6WRMo%rKE@*@$G{k8QT^^d@(&z`f0&YZ`z+%hL?Kx)Fp5>uEw^(2HmV^+D}R{s zuCNjN2T^d9KQPineoiR-14mB?hN(lyIOY`X-@bYMcjp`f{s4;(#sKY z-nI>}WW13=ba#~3*iJfd{%epI-UX_xsyi?1-fc2s=GISHT{{t=+6xwL)4=wYzNi1+ zO%cWhD1ZaTNvz8Z9UP&!x$U_EFL&+NDEmc2zalZ5xR@bou2x@g3D-^|HkTNk9-f(O zjunmK{3wTDz2#s%%AfczanwP8HSBJXYe-wJetHqey5ZR{=8xEzjwxZ2)5YrO`C@blXFRSNeNXehpl{K~mF}I0Q zA+4TbYziJmB=|F`D2&$9G?ix4fo&#=A!@PGF7Uxd{QK*P3jrvM{l8ld*i-&}iPmev z{An|8Ufh&M%!y_QqRA@iQGhV!kKQrMoQ@Dzl=3F{AUieCzsIa_q0}+zg!3@@v z644AiWM%ZjKFI0NAD&QHNL2Yl$N$>(W-1_Hu@>uM>V@f2?JW(#CE0BP8+tL=_f22v z)F0L?F|1iA^9r~0LU`*4?1;r`92YYS4OyKCkljz4u!Uz;5RQl%pckLz^M7|ZSe6%# zR}M7^TqA-GYNnEK2!kSFPydV=idRYa4j)>BMrGC!ZDQk-f+XXWORkW;x96WMUHd@v4}-XDh|a+}6jthB+*0y8jr0Y=34b zrsu`}?*-f`gw~lRj4&CcDVsqEd6?^JLiO{1JkXN`6FPtW;R?$26MJy%bnG*p{DwkB zONr2`0MqT$gXbL@hTn7(O-jTY(5-wAfP_GQ-9iE6+3?LSCQev&CJPU=lz3P3Y^=rc zqL4Hkg==!`d>2m9hPl8J9uth37e0nQKD*O|Ck4+cD*4zm{us$By7V#R3G5>8=)@Q9 z%38QXj^F`bUt&jsvVa+~oy6p*^1;NL%DfAX0iYO2B;=;)MFSLgJy}2QPMzs!e|N%r zLIgQA{_FxDIpt3!)$(MJ6Vm#yPaDfe_=Pd|7PgzJV2io_8K{YPp`)csZyxs|yQYNU zW3UwXnk+^DYkuop>^SAp<7D;jJ%ntW$rv)#|o2~lp8{#m;2SiJ48kuBA z@ggWUWOR~27m{P{aK0~#9lCAi@Wsdja4WeiY?rH{jK(7!Y4sDDgxe5)g8Q5Cinug~k1bC|W`YM2orQY$2zPPfN8HYma%}I5P+LELGamGFx=k07 z;OMKAD0@oj1d4SvbOsL@mIXg*phRq3$$orXm)`_C@O^xgV^_@6X z!w%KVI6f)pS~+o3ZjJoX2#aPwL_qQ%`*xo9a1%LzQVe8K!+n?9ogRl$U26;oGKNe) zbL2DnbkeoHZ#$^jA&V>*(cVfJe-wpb<6{3R4c;Fa8%| zDD>iMlf3{$|7H_)b%d7XP&JAt;CArW_8(MCi;32Sv0$}scFA}VeKjarsE}%~#KsH$ z@iX=8C9l$3qf*MWW`w>B!yqR z&nGoW34A&SmToWx36(QuPzAO`b*<^y0Li*jk*DZV{cx8jr4A#LREQ^l+vQgbz^cu+ zufg&U;rO-m0g)iWZuZB@$OotoL^D$7 zb}BZ)6ZR=y?ACA)<8xplgpsy+!STUb+S(Q0#gW8U;uRNe#Qh>bnhP~_NEpqAeqs;OYc@ z({tVqEgdaNQv%*vk!YH5+a5mdk z=J#08++7G$FkPaD7NVsrnH5$u)r9LdZ=HS(60C76*CnvSM-M4CYb(ai5?K#$!=gTE z9~Elc88c4r*y{NGg9D>SS*sxfR)92%Scx|^GRk^CGOdv=YMy0_cvDs z-?QpB5!fj0#syZ7GCk8v!xehaP;fay7{Efl6;R-tLAxFmG^pciY6X62=FNC8jgoF- zw+q#>3OZsc&>?M8{PwectZuRze!zdv41@Ju&3yy+ znL2-U?v1;h4p1FXYTbASA|OIRLkWp~q)~@HotZ)Ismpoi^Augq#|?XYq{=xqfSRj0 zXKYmviAqLH5P#bSUx&7tWe-+SPWvnIh52oYYjUTJ1p+zsKKwM*-5kQBcbR7Amc1eE z^cjgR8U^_2e=Rwqq>_9x(Masl@{|NMOv-CHcX}t0T!^!i@vvx5{gD9cD}VVrDUJxN z3Tc#~qWEv~VP_Y;EQ}+gQ=1^+ww-CoT9n?PgRNqtNHR8i|0*e0oGYtA>=!GryjQ~j zSkx%+`IDv6>bue3Zn>+k_nxX9UQJX4C%z@fP=^CuZbWe|gL?;!u0xk`z(K!9V-!6@9q?KDDDEBF?|AZ3! zTxAMwDo}HGlN4;}`Dgewy%xLNTjGW%MAk=t3hFzrqOLynJ7Cs{VdvxJ!&t8V>@N#X zoG+gKl--juksdKMzkU5daz!IU$lQTbuArRL=QspiBcH{+Kh7@dmM^NQ#zZc@!5WB- z6sKJ%A$d}>V;*yJ!Xsyu&bhB^!x>{3T;Se=)naJSl zRGP@Y7c{6V^NWrp*}*&$R8%s#5C)WS%iQ=zlk}*zpxnV+$)m6^{=Aq^jDch}>pt^Q zieu}C)xxxk#_&i{&CZTa+V;^*h4n%ahG{FAwY{q^8XVi9r{6!?KVV=!W#5;o?ZIH& zV?5HW%-H|@tpui>j)?)K@WwV^vcM=b-jD$G^iJ`mX058IzgH+xDeb1gD1wrf1c*^h zv;#Os9_;y1>#$`5{?#OtOLATgktPGWG9Oek_nG`p(z+GRmkg&sqgm2eeV}!twkhJI z9TM{bMnHfpkz`W6gk20snKSvLz5RJL;EiO%NseuOkO%Nmx#gVIpXvGKJjhm(4&XNw zt54OctG{V^sZ~!Dt|5X;cPg30O@(QOQH5a{yeD&_5U=6QYl(KS{+(pGtqLd!ItH(0 zdA(eZfRiIVIy=BL<#?Bm2@-UJ3^BDqgX8-()Go%!Sgr$!`=@+QyC;{C!d_WT&oupU35Wn5kGj}HyW(~DOjq#0FTVH zShrF3yu<8g__O&QK4~Etx8vTLQ_loO%!2B&m4Pm~RkhN!K{vhNJ+k>7{^$Bbpld_^ zyd)EiTUm?OvF9sAbzDM#H90$EOpWAu8-tQ*3>R?PAUTV zKGQVO|8yjTUigu|rSTG#Zb^sl*_s=p6O5_PC0Gn{km6H0#6CLhRCSqED)MT1zK`)u zw}ksH$Xb&g$ID4w1Oj|cIewm>J=`&5B1{{BNlKE9-m(q2e(}ne_nkb6<%^@Ggh*`s zYF~yHQ!(#hOPXIXs??0Q*j+Ka@{bCtDJO9#8#6NS-zLRLkxcmT-Nf5I4b$w+)2mxd zCA$s<65)J9@C@m!%$)fGx+*brilI{Ysod~5`|3jH)F-o<#m48L;Hfe4O>s%hjSv#3 zZ#55il9t_TqFsBMsj5;KsdW4dAMG#fWUdl9ImLE8q4Xa!%NQuBkgkDY0zvZ$k-FTxT;_1&2D+Rr7~$o3beDo|WpJ31+`^igX>)bv|6@N2zj-~X~)*REN>QT7Jk z+oIK#dZ-@b(K#H9fCB+2u-lej}zSUqaf|Cw9-fz_^(Gz81h+ zRL4+IMOqkNly$GW*I8qpo|97NL9Z{{r!vdKM>Cm13Um1*Ad_YP{pWc;eMK?zyAJPLud3^3}-7@5rez6z{GkxMzxTA}Af4#PH`L#Q8(Qy+_ z3{^qiCb>8SzLY85^(4)GmU;ML&lBa<)gB!oC=8U(b&t6$rsrH~D0!4eY?YU=W%$ZJ zLeRciR7K@&i|6NxDaxLBfaLgh^(>;VyThEKM5%S%p=18%a}^}3ABBsQ_MQ7UdfUs? z+?zE^l6C!SrMfm~$&z(Dn`SE$Pt287m3=Q#)*wk^b{n}rK0zqpm5eC7Vk`BRhk>xB zTe>l|O(CxXZ)ziHu9~E=4}h%8`RTd6!7>k^WO?aNe(T8sDikk8)K9Q+%-Z7WqxiHt zr)Zb~`NeH4wB+;V$D?*`XjI1p*}isadLj)__s>rC0jK5H5SpJe5LMFZGS;#paw5{} zXXM$pF8oP3fO2i*`@0llKfi2N2tJXK_I;#tX#T!o=0OAV6dfw->EH{4JGt%V%-x>C zF3Y7mT9`5xd!B~%mcA}SG_L`+3Z#=y)uCE6kuW)l8U62Eb8(mpHlce?=jbP2_=TXY zk1DI)TK;cTDRB!uFTL$EBIvvNv#>s_ic11YOq<3M>w5k|?fN2Ew^+9GT?x=-hRKU* zWBSk~_463C+K#M_VQ%2SYKofFaSa(X9Cv z-wwN`Tm#$07mr;JVpfES;}&Qq1EMFcwO4dgXk29wYgwPPxdrDa-%Tq^tK58D{)11s zY4sy6zfUYnuN_(+(LYXkCG;oGMjVr3jn6VD?Df<&V3>d|6nlVHcD%45ci6hlLOr<_2-a51_MIu3NHCwFU;$57-||;WD+9ANdE+7&J3JF zhM#t@A^A$#=OE}?ND_;xzBhqZ1_KN20ax@lgAb^!LBAHSRKgy+j8JDZ3P=JqChz;9 zSsA_cQQ$+2XiPgow)4F0U=9DAYkJI|c5e1loUy5|h_a#R&!Hx$5U7dLXrpY=fjoJ4;G2i$%~Pu-VhkTkn+8F*(G2bj5`&kf3qi&}Sn=>a}l~ zQdeIj%*PxP4x-MWaCqt)vIyRM`YyFc#q!RuUkABgTIBXCC%6**Wl1oAJB72qB9G_P zaCJl>?KlQ+&$Tzs-+LqR8HdL3E|XB_ULfCOksI^un3)jO;9Ow5BF_)eny`=Ey{BlxitejCk(XCv%Bg zTq3*-Lzl#)>_8bezvo{|yDMQen*iO-2fI^!_QKyw=WY8$M{Rj)THLhE4K{x*x-Mxa z8{}D_CZ)@>u!Iyw<82V||sD#Nx)pbG+VC2VA8^?YsE@o83Yq;`f z6A|$_H^zu(|7uk#IV!%S9h}80{gKkY!Pyvlr7G{*G2$6?3(2|tU<+~btIfOc{SamI z_nb>U#@)52+&ohGfsMgcrAZ+lwx9B72 zMNCRXUIYLd=!*yW8st;WO16pYlk}iv?p;{o2nWZ3ISwmfLYu#aF*PukxwPfUEiar* zCXMk>8H$rWr*hxUCDg@%Ixf~rk^QdHC+?t6XgZmx|t_vSREWCILM{ezg|gUW!= zAr&^?Op)QZeB}~O+4?q{v|o+6F(9>A?u{Hg)Ud|1VVh{~Xgb^U$im+0dspXtBVF8sA z>T?-9s=!)?&@j4#B3%r>7903phX@*~J{6>ujzTZOc0GT;;qY%b`Lb^RR3aJOD0iKY zkG|Fs`z~leNAkwgiZSOh<%TqW*LX5mWBAv14eZzNZ}%L#lOFRtZob2|QgGcC7C?Fo zF|kYiidnFa2f%4=g>^`srQAF26m{9Cd`}{0ZgO69%Zo)TmX>I*)2cz{oZc?xPowXc ziN+=~4t+7_!H)6`5wtxV+&Cj9{Lfx4W+6K@=%H}C5`{PH*Eucd46H%zhIjDs2GWYe3mm!>_u)%bW$7QTc?D}+>#Q?jRV~P{ zhjFdIdZnD>52Fczl*-Dhg*TaI#WnhP62_eRL)}%UuV<)1xzf6a!TIg}Hym=leO0vnt-AKp~@VqvjhE4+}=9D5IN zcx;Av1nD~2nI*3lzqj&RIn*#Aph6z9m&@Cl@R_EdW*_+@ojfRN&JQw zeH+j3ng6^IB}MH97z*>2;=7KMtq?&G>WOMd9m`T})6+W{77ILK-Nu7+Wle@(C`Lhj zy~_GTrBBTo1>O=il3vbqSw5UTPAu0D6%DR8`shBhmv8f6-3faN8wK+97R@l@ti^K$ zHWPj$dV8lzM59HlGEl~ehu7*UOi+Xx*F%x5W}BZXXf&(sC3v#UVztm@V5`=g9&QUK zwRX-|91g!OZ##rD^I8?(KUA(MqrzxmiUr{`;Q?&ixT%E)jm4LGjSfpL>hbpYQ<4JK z-FBFwv*btlm;hpUyFYg0W$a+{-V`O?1)fkX^Gc1sI6DLNqtgH9uh2tzY zaBTF0cS!_IEN%P+8IY$s7ipoM{Lko)oj|($Y8v z?+e$7Z`3Mkn^Hu=#H`@cHCNX?p%-8Zk*s&bJJTcw?uA zSU13^#*i_5{ENURi+_lBE{C{YGU$%jNwz#q)hc&Pz~q;sWemf z;;TEjAb{MB2iYvgvFB63-Oqb318TN<#7QjXrh>Nahsa-#F`;cgwaT$!QaPHvpCM^b zGozJd;)a-_M|JR{*F(P~N$IPPC6a^euXnTVfhS=i^LMWRU)w5cjuUB-;^~TN!D($r zw8=FOk&9pG5AzJkpET3#ILDB|nA1*3wT~YG3A@0Ce2AX`_%W5f7KYDesLlQ& zC?nm7rjlCo#q%Z}{X>c>e1P$*v_3+=|MihS0-s7ZMvqnTR4kSKw@~({{FrLk`SCdfvL&mNC zBN^){r_ucbytNqU(@neAsQZ}Mm>ZGua%=8w>PSg1`>OWeQ@S)eFm0h2wo0_^#2Oq6 zpW1!PacMdEH}GV@n$@8$*gu46N}vTlW`~y2q5JF~5O^^}eEa`A(FIQV(^wW~?Vo@9 z${!`vwear%|COzv&hkfDP)OGj__td6Uk>3LQfX55GgUGWi^-zZ_*o6`=<)ox6~@iO z{7;bY@+2hlF-sj!3u%(_(^`yAus{Xz%OZ|;t&Znw5%cPN67NZ6pH8JbFsmww3g2Qy zygWueu$8SL;tdnWTEE3vos$L$^-j24L%&lLUx>3#F#V&c)?}Er+QgD;MOhvuWY3Nj zX%y544U~>sf1Kt8%@6<$G~^q~L=*1{Idb^DmHxMg4}1B?AA2coHevLSHx|->wk5wb zh*C_D{r7LyghczQ5ewqbWGiFcY0PP;49k!j%*h=5^){UpxNL3bQnW z09aJZ6y~Zdwq_*ARhH^djn@h5e1N<1KM%+1t^JM2G>p% z3w)TuCPK_#z4-0G2d}ETkN&i$2BAH}ZX#R=X*}p4eu!Eh5cJU{i;k;*Rgy)`d^uch zaLfMq#v0jhG0DSW!A;r z-})mBYf^a38!;mfT+D-xa>9MYgda7;Pf!we*OwXoqT#)7{nfvt9y(R}5nWH?k9=0T zrFcC~sTIfyjOt_vDl7T5M0`=a+(3Xfc|d*NNJsM3RzoTsD)SjLvYEZ9%qD%^yPW?h9S3XZeM!F}qV>r00~~O0gJ1 z7)nwoojLkZ;2p2z8%x)i=z`5sQ7?7MFN!nU|#Z}S^WJs6F>t%fb+&a zm+a6iWcIPI^LY=?W{EV1sNG47?MFxYV{w=n;yuxz_1D_xKD{caI__RFqNl!X^2BzO+v&l^7FNNkd~3BOIb! zR{8tpizk5>*;gY))>!H0w>p{KQ?55;Z+2;o6Iyi?Zx!R@PJNc7c-c8fka>Y4&&aL- z<~QxpgVQ53A0p{}IzW9BI5D{!`|R>D7e1u1%-V@TrJaaH*wM|}=*?p)H)){IV6iMp zOuSe7bIgE^?sSQjB>JeSVyKL=zWVznUPF@G^cyOfK~Gb-pQ@AS=cVkej2CkFxF~zP z8tfPtJ5;ETU4D;ei2<(jT)?HbYvFK7Xx~`MM;Pq4|T&i5EGVfRRd*0G{%0JcgAc zVz0riNjT*o|H~9~Jy?yBA0M?znn{WdRPsqvzMou#bJ-Xau_WvSK*lc=N#)o3uy7f@@hqD&x}?x3e`ScVl2tqzZeaRbsJ9U{C3NYsenWNQ(4+U*4~LK@E_| zUPHGLStRgU=$6WDpzltDC14VC;VwJUo)HD+K7ye876Kq|AsVD4RmDl(;PQY=0#eEM zcp-E!?L3UEwLyYDzs?E{kWlb}eV|A#!kRq_!3(ZYX7cAk+Gw%>3{#C4X;8@;eih}v z4M3mD4=fWxu1J&u!WX+yN4wq9 z8rax~>#=J0P9OirZx@WPDmbN2p^Q}?JVz&D*8@#x_c9fw`#2#Ju6_6;Z9^_s;Ib`h zMnTD}mKFJS{M~nx^2VxwBn=V<7m03IRuGF^N;z%)OlWfkjAhM7y|PhBsGr}C3ma1; zle}I!u`7%vq6@XyS`=EH9@6m3_8kg#f~PqJ~Zn_ISE-RwgbF7ME5G zmKp41c@vsbV*y=UZ-5A(-Tx@4T-pBc4yAj6pY*a-ajeU0&`^rL5;?R=Fi&s+0s@z8 zmBwz?7{*8SDi|Y4-%Iags1Wzib;!ArU4$yLusOf1%qb;t3G(eo)QMdefR2+pNRBV` zScKo$8lRCbS->lEo5z=7U1gaS&@bQl-;&zBZ=rgx0d%p#x&|r~TtAi@n}0Bup-G<{ z!?lwfaIXolfX56w#F140B#?V!J!hTgNn9c1(UiISsFqR)%{-lUrnFfzjfK}>CHZ{& zYM7nn&O(0dDJ}BZwa}e%sNq)X)G1Cs)`l_Zb<6t8omf{V$%E*r`goD#pr|dx0{80F zq?Es*4i78_!3K9O^t|V8j4YlZ08fsyppJgut(S&X7kw8Lx^l?96Ao*bxjA8~EW;}g z%80llMGS(G1`SS&z;D=44VYL*gC6!*{0kG=^CCdK!_---m#FErs-E?8kVq@XNNMu> z=CX}9?BKogrSiNnvnK!0D>Lx2YAaPkxvfDAo=rhl#hL{nwqd!giP;m=@}RG45hIQF zYw~@xp5FU%a|{{!Vz>UN#?2AAx0JJFxX*{2Q*c$=*+w?k2%`wy$_?>oBGyCs4HspR z`Xi3~?urCc=Rk^GMu&C%IH3*C7wh}ac<=j>2H=W$9tC%{>48aa*B)Vd+dev$e#G#@ zO}iOK&yfqP?}UV6piOp0ToWlGnLIYC@laA>(!BL6cpkTn#`)soQS9a2$3{41AoX(n z%9h_|<__-vS|PFL;--AxMq&AUmxOpAD|Uzbfi{M!$5|014cVSmxt%5$UgOghi9T=aSxcq?{HF$zqU!e z_zw7KVz%cBwO1FFQ8iG2i8XWwZWrCEn6J(yQ52Sh|MUeeif&Mv7kGAzP%AxgEfkU4 zUvew_;Qhj=zke&i-GlsTb~(>k>6G>XAHNlAp_8RX`BM@Kj~n&5HB2uYzP(9y6_Xe= z5+tP(&DX2nC+HD#{F1QvV4OikBR|j8a9}|V@_|NfUNiiujRy3`5!_C`wT@Wq<>Gm# z$M5L4BahfPLsnIJ%;WaBg{W}mGHIDCkM}c*ie`bo9@CZiZ9e-dD>qx6VQFxW6_W$j zg4f?z$5ud;;g3KSmSS?is9Al)HYj3M+zUV0zh0MIk~}#2e*v5oW9n%L`VJ|!6L*Z9 zp1OJkWP8WyD9%G}T`z?t3ZZw6Vq0;?$n`HpHS*?A1%$yxy*gB`-^2H5cSUn2>K`39 zmZEvci~!mdlzBk!#Zg;vX=J`F#W3>g#_5U6Lsk!D%brgpwF{lg0_Q`yg!Yu=P+?;^ zkm|r8^LLPGKhf6(yb{-sXdW_JELkSXmG=^Vw34OW46qz{JD3$b=aww36n$DIUe=>l zNlU>V`Z5z?0PY2xTW{#+JD?-DFf+q}B6N-dy}%AG-Lz3p&p#pV?2_{>L(h)Iva~^; z8t($;0{;eDlCMg@)<$4$pluA91@s*aF7Z%U%9HyuJoK%G-S<4?N)|z{uIGPvRMd8f zHWL`rdP4W9&ou&n2Y{~N&8!JR=cix+kotic+NzJE$l+Nu>vl*VZP*)V+jU8krL?x7 z?=s-?fT@&wf9iFG&8@+}wDy%#j^3BR$sTpv)OF>-N5hM7{l)zr-oSWh5Bh?#=T7LJ z0fJ6-k%WG2;nQ~QpIvh0mZA3upe=)mfp+R0Zm;MTU`FsMM z`lR|i;4f)yDYu+{t^u^-)ILcE_P-9=q2HBE`-#3Ef#wq{gULy42->H1>NE6(kl5f* zz~a&v-~?O)rn^~`rX^V#-5-Df$r6QCg84Yf-YWnuU0IgVrq#i}T{`L8!(dsU{jRwM z^xqNKNxT?oYZn@zcOEhg*qsK}2P=YcnJV{C7TC?aUlG%%MAAt~z4MV8bPj;?X(j!6 z91KoXR+)g_+e-_Ythc4`4CluAP7LQ|D$x6#J`QO`++pKBFfW+kQbe2eyQkIJOy42K z?pEM>m+cD6E=IrJd2j{q6)Kc$_5z8&$0hV} z1Fmho6XXiImU5kAVBBXLcn4P_RYqUrAf~SH(4R5L>D|N6RWHwgjVplOi_A38SH0i# zj7uqYKcaj-;%{7Xm6oCZb#!zmPJHN0d-YqQ_fK_>3jcslv4sp6fcT-{zzkHSsThJl zn$xx*GQ-mpRjZr7`s>#QQU{S0u@ll8>IL z$S*=Xtdx3L$zt~ykgM~7etmgt6wnw<3a+wfonO(Hww3R@XoZ~8%jBfDA=Pqj^-kgv z9*tjv^Y@{LTqYve(%0d%LZp?m#H}Ed=_#vLzz@s9FuJsY^gtH6l60V-W*1&&Up+~N ze6Q;YJ(>WlicW{B!VBxJ@+`{iy2^sZ2Gzm%8$r|cdziQqP)64Vp)c(>nLmyGni4SE15E+7p_z`dOFj^U3q4C_S!P7fRR;?A=1U zjs&iEJ5EAA6Nd^t+hKE9Xg|X^^~oM~b+f%VLz^yDX=BuDd9QDSOwU2ZCx}-pOF^U(I|YM_new!-SDHXt zIdUkFQ*KM(PA!E+o;SFa6b_`Ij{827_pYRt_&*xx&)4eHA!DKcrrZSA_!s_ha$ ztNP(}rThE5Ttm}6*s<#hW-P=pQ0w2r>Dt6tosCS5>t#VWwwECP_tOcJQH8O+YMk9@ z9{1TdYdQDC_A~IHZT_93?J6UkwmK!gU#;gkqB&G$ob`k%)%OGv8d8VZJ?pSdr8a4W zQY*yBKNgdhRhExes8xfe3fy4((jmQ1sCV!5C8U-K9qFd(YaMl_k4IaEc*x`};?oA7 zzNEFY>F)hpJH6<%uB)xVN*uS$73{i78xB^U#sHJ>cfeO^a(R?9e%C>-wr_1px_8t@ z9ggjVqU}pazmt$(&1~IkUGH`}+XC;M!JJN^`Y&AGw*1xqNos}`mh{gw>$Jn&D`^)$ z9;3m}mFTd#g(reNx$!<4{yzxP`UJMNTPzP+oT*B=;#^GuuYf~9XK+-dI-97z&y&b{ z80$ZIaPHF=4>gS~!nHFuxHWQJ4deJ6uo`G_rYh|v*O7K|Xp5xYmz@*rRH;s@-;fM^ zP_0%oezhgb415Awek(|8oDZY?S7K)<$8L;5 zpZnA7G4-mQHFqTjbsvGR@t~7S4{{$c2R1$+?&f2Q@$({b=YmH`8|OZxl`b=cDqEyfTREk?8pSJl z7^&xnI3CR}PlW494%A!3i~DHcTGFK>CSwdZ7|8A3%$QykyDk44$k7IU z5m1iP0B{NE#7|?pbmUz2mWTeD-fQ7oJCK&~XlI(p%Lr_cBBZY*zn3CYv*NOz_SUSm zX1I|Vc+jKqdJ)uuF;HND8?~G${a+!cGsO+|7qC|Q_U(ztu676AIu*csHLGo|)FoY;w=fWGzxS-j(&W-6(CN9ZzyGZ7o~_H_q*l!TIe-d~eR=*madN!EHr7V_G||ZcFPgWBMYn zF!(%8w!-p?cYx7GZApLDqa9j3u2ncWBg6lquTxWW)%6_F9IBMFXT{ktz=fh0k#Bct z@^%t4>gS=0xx=Uzq3b+4}zO19&(k6*mYGYgH}IeU@OM= z@56(*m@z$${J+MPWtm4iW<}q|8Rm*L~?K`;ia>B*PZ*yf&fG`K%aCwBD! z>rs%~?*+Q`yZ9P7A+0@Smajoyo#ztU`t-f;{iDog6#h-idf0iyrGU16LitIO$&GYZ z1FWoW8Sr`Gc!f$@&)|Cl=xcscU3wVASAvPaXM2iE)pTX(oFC}RaaT`Q7|EcGA8@#3 zB+HW3V_-1+r>$nHHIH!~SIe?l=$ivbug2f1CFq{L1lg!)?$=$^Se9wd(c0kNG@bCc za=@o1(zB(>`6F3u1dMDmU~^5*g_L;a0Z@FYd_;o?=^i$Ja?LGDdp%}9DEE$mZ;l%Y;)ai4N~6` z!@jov=^E2^yv*kK=$Z-q8|Zh@=L@Q(P}m|%AIEUen|NGHW=w)MXoY(!I5wuZqAYak z9}N!#Pq`G)#vdqOnYgg(nHkwGqgK`!3@|8u1YfyY%K%##j0Hym-9$=$>Wq!S*qDRZ z`NJ;V;6K`@N*E0e1SQ*3f2gNPvTiVwfOIYH>L+b`0<_tQmy4Tfl)=4jP$#F^;ymgm z|1!}3vDg84J@Jd`rH-DMYybTV!C3pA^hQw`&vbuJxni-8iZhCjY0s%Zt32C+?x1e& z-JGj!f!Bi%+Px+C2}}l8fdz{Dns!W`xxo2AKkUDPJ=5x_oHiZ?)&$kq^5fH_TFDfi zrluK(*L#8fH_QQ`tQYL5rzgA*2iMgvq<2ZP8&lpdCeN~rfmRG~UB3fT|Cugha6X__ zq<2AC596peE7%_l4aT+}&@R%dL4F4%jcxj;FA{p)?`Y3qK#rB>YjQq({z-7FR;x}> z_eWyAC$v{9ft(KLqvoMqiJx(qpgrxtIl(#jf%J*M`5s-8KI(M@$AO>0IM6>yR{69| z{}Zb_@sFWgSvSeBvc*lwz>W0kXjjh|XnLx0VSwK;m}A8mXzPM!;tI*v(}zXTwGHtd z#Llru`TWRTB}DC^=WFst0Bt9n06GD+PdCl(#DzdQOgdxqsWV#<`+UOFsmls0V}Ns@ zJ>l9yaY&jbWc1ZCeX&h1j~2wKKZV2>KsUT!K}VqN9`hpK@*W9kvfKe(+JbrlvKoi6 zfwKPt`%tJG?Qft5(8pNTB~A>KKS{kWzP{rmJxKEj{p$@m zA#;Fk$hSPKBTZIvK#z7;==b2(WU0bE{h!EOiOk19zex*$zfu1<;@Ci$R*&^t_b74y zSfNNJGMW!vDujJShkhhSfX{*Ys-WLS&6#>rNB3v_<|s-G=#hY~-=`CW$}B*)e!tg6 zw^qZRB6d1Tly^by3?b|%X`R!tM7nqU0CZk-P9>{zx*%~OkPefnF*@~d?r+6{Πs zupKu)0}PU57+4#CinjLoGKIZ+k<}{0hQzlM>*Dtg$ah0ns3_2m-%xM>@%0rcvdWn< z!1>UVwR=$d7;%SElq0Vn1vxcB$pPDwsHCr*{Zp0E*NPb*eQ4zo zvR)*1PE;b*3d!J{>cK+d!-e8H(PM0D=5iA8S;|M>%tWgy?Fz{C4$G;l$&m$PpcMnb z*jkOTas;@jRiVcLb@b4!mxpMq2=>3BKr8kyN&tQ5ftE>oTqVji{+ABRs2e5|V`TJj zNX~{Hc<5o)mWjeK1<31nM%PozH5DV~%%Tm?A+Qnf_e7i;;|sC#Iwf6b^D@NRGQLo} zWPC32a)?)qFD)&Xwwwk|O{yhQEf@o>7+}EY9Vh)q>hY}#ay-D6w%BPK;Edo%;M_l( zMN_ab1^ffd4rT_|XQ9`0WXk~O<(c68=zX2fven*N8~XJm{O_O(=l}}NR3Nn<$GMD4 z^bWy>>|NiwMU8hvAH?A)K>svTJYEUpoaP#^A-lJN?!iB!J(#pPQwglY%@CmTvo!c1 zK`gUuY}^5~MMmSI;7kR|_4)b{nHe%gZJq(f)5XC(KwlQlbsmF${bTu~faWgqfPym> zoP-_nJQ>)M?X7~ou1fliobBlzdkL5c^aFD2suHlJEuB4szV1R=+X8bB*tr+<2<)Ef zGN=LYolAhSa5*qVtZs@wpigOzqMoFd8uYnMJq<_-<>*Y(m6rb%ZArUuv}LC3fPSqC zXd8!~vS=IK8emzVCmMQ!tR+(|oz4i79;uW(cCafRFAgBvvat==4fN;Obq)}T59rlX zlsCcc;6EH^Ju!a^odv$)TkyM&67sXko{0UlF)=bLV;*`mS#yoSuRV0M5<%Y!WE7tE zF%IS-y*Jp2^m45PJrB^QvGxiW05sWi-k>Shc-E6Lt-xGO+?hBn$WihNL3`9EL1VuM z(VCzyP`~E}T20VOomSuC!kDXYspnq=$(R_9nx zXG;zNSA(gj>-lDmo#(D(1OKa_hc0Q?)hGWG&poBzA=iDT#!HLHYV0~CSBWU;a!J-w!NmEv!5OHo2h8D z2N&vZ$-mVOk|ucA9ObB=SrP5{7s>>U?Zt`q1KW}ANnCP3-!D{p66iPMevX~vi1Jsl zr8&|W;AqlG_ic&`+tajDrmVRFwgypmCF#LVJE9H2zKS_6Y3C1h3IUyJi~6d2Y|?#B zPFC9W_VIr;X7d+&x1vc + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/core/templates/wagtailadmin/base.html b/core/templates/wagtailadmin/base.html index 2de1e835..eabf83a3 100644 --- a/core/templates/wagtailadmin/base.html +++ b/core/templates/wagtailadmin/base.html @@ -3,5 +3,5 @@ {% load static %} {% block branding_logo %} - + {% endblock %} From 22c8a95911f13ad7ea679dee83abb90f8b63149f Mon Sep 17 00:00:00 2001 From: LuptonM Date: Thu, 22 Jun 2023 17:06:58 +0100 Subject: [PATCH 03/14] update tests --- tests/conftest.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/conftest.py b/tests/conftest.py index 0e6bd68c..f0996bdf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -151,9 +151,9 @@ def enable_signature_check(mock_signature_check): @pytest.fixture def uploaded_file(): return SimpleUploadedFile( - name='test_image.png', - content=open('core/static/core/logo.png', 'rb').read(), - content_type='image/png' + name='test_image.svg', + content=open('core/static/core/logo.svg', 'rb').read(), + content_type='image/svg' ) From 2ed2db87671b2298a59b93527874d69b951728b8 Mon Sep 17 00:00:00 2001 From: LuptonM Date: Thu, 22 Jun 2023 18:11:24 +0100 Subject: [PATCH 04/14] update tests --- core/static/core/logo.png | Bin 0 -> 4926 bytes core/static/core/logo.svg | 174 -------------------------------------- tests/conftest.py | 6 +- 3 files changed, 3 insertions(+), 177 deletions(-) create mode 100644 core/static/core/logo.png delete mode 100644 core/static/core/logo.svg diff --git a/core/static/core/logo.png b/core/static/core/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..93f4c2fea109c89ecd8c62736309bcf2f43958f2 GIT binary patch literal 4926 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 xy;#@|K9g*lj?@HQ{j31$mv;X;ApiBQ;0 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/tests/conftest.py b/tests/conftest.py index f0996bdf..0e6bd68c 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -151,9 +151,9 @@ def enable_signature_check(mock_signature_check): @pytest.fixture def uploaded_file(): return SimpleUploadedFile( - name='test_image.svg', - content=open('core/static/core/logo.svg', 'rb').read(), - content_type='image/svg' + name='test_image.png', + content=open('core/static/core/logo.png', 'rb').read(), + content_type='image/png' ) From 0ae5eb5f83535c200bab9cfe9cf0de5e71036b0c Mon Sep 17 00:00:00 2001 From: LuptonM Date: Fri, 23 Jun 2023 09:12:39 +0100 Subject: [PATCH 05/14] change back to png --- core/templates/wagtailadmin/base.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/templates/wagtailadmin/base.html b/core/templates/wagtailadmin/base.html index eabf83a3..2de1e835 100644 --- a/core/templates/wagtailadmin/base.html +++ b/core/templates/wagtailadmin/base.html @@ -3,5 +3,5 @@ {% load static %} {% block branding_logo %} - + {% endblock %} From f4ca475a955ee22b5b242781e84f3e4c211316ab Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 10:51:42 +0100 Subject: [PATCH 06/14] ADDED OpenAPI Skeleton --- conf/env/dev | 1 + conf/preprocessors.py | 12 ++++++++++++ conf/settings.py | 21 ++++++++++++++++++++- conf/urls.py | 21 +++++++++++++++++++++ core/cache.py | 1 + core/models.py | 3 ++- requirements.in | 1 + requirements_test.in | 1 + 8 files changed, 59 insertions(+), 2 deletions(-) create mode 100644 conf/preprocessors.py diff --git a/conf/env/dev b/conf/env/dev index 89e1c0c7..f3432255 100644 --- a/conf/env/dev +++ b/conf/env/dev @@ -30,3 +30,4 @@ ACTIVITY_STREAM_SECRET_ACCESS_KEY=123-secret-key FEATURE_ENFORCE_STAFF_SSO_ENABLED=false USERS_REQUEST_ACCESS_PREVENT_RESUBMISSION=false STATICFILES_STORAGE=django.contrib.staticfiles.storage.StaticFilesStorage +FEATURE_GREAT_CMS_OPENAPI_ENABLED=true \ No newline at end of file diff --git a/conf/preprocessors.py b/conf/preprocessors.py new file mode 100644 index 00000000..f77a25f5 --- /dev/null +++ b/conf/preprocessors.py @@ -0,0 +1,12 @@ +def preprocessing_filter_admin_spec(endpoints): + """ + Filters all Wagtail Admin API endpoints from the Open API schema generated by drf-spectacular. Spec generated at + /openui/ui/. + """ + + filtered = [] + for path, path_regex, method, callback in endpoints: + # Remove all Wagtail admin endpoints + if not path.startswith('/admin/'): + filtered.append((path, path_regex, method, callback)) + return filtered \ No newline at end of file diff --git a/conf/settings.py b/conf/settings.py index a519b0b9..30258b59 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -90,6 +90,7 @@ 'django_filters', 'authbroker_client', 'django_celery_beat', + 'drf_spectacular', ] MIDDLEWARE = [ @@ -429,7 +430,10 @@ else: LOGIN_URL = '/admin/login/' -REST_FRAMEWORK = {'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)} +REST_FRAMEWORK = { + 'DEFAULT_SCHEMA_CLASS': 'drf_spectacular.openapi.AutoSchema', + 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) +} if FEATURE_FLAGS['DEBUG_TOOLBAR_ON']: INSTALLED_APPS += ['debug_toolbar'] @@ -475,3 +479,18 @@ FOREIGN_DIRECT_INVESTMENT_SNIPPET_LABEL = env.str( 'FOREIGN_DIRECT_INVESTMENT_SNIPPET_LABEL', FOREIGN_DIRECT_INVESTMENT_SNIPPET_LABEL_DEFAULT ) + + +# Resolves DEFAULT_AUTO_FIELD warnings on Django 3.2 and above +DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' + +# OpenAPI +FEATURE_GREAT_CMS_OPENAPI_ENABLED = env.bool('FEATURE_GREAT_CMS_OPENAPI_ENABLED', False) + +SPECTACULAR_SETTINGS = { + 'TITLE': 'Directory CMS API', + 'DESCRIPTION': 'Directory CMS API - the Department for Business and Trade (DBT)', + 'VERSION': os.environ.get('GIT_TAG', 'dev'), + 'SERVE_INCLUDE_SCHEMA': False, + 'PREPROCESSING_HOOKS': ['conf.preprocessors.preprocessing_filter_admin_spec'], +} diff --git a/conf/urls.py b/conf/urls.py index eab87460..c6cd409e 100644 --- a/conf/urls.py +++ b/conf/urls.py @@ -14,6 +14,11 @@ from django.views.decorators.csrf import csrf_exempt from django.views.generic import RedirectView from django.urls import path, re_path +from drf_spectacular.views import ( + SpectacularAPIView, + SpectacularRedocView, + SpectacularSwaggerView, +) import core.views from groups.views import GroupInfoModalView @@ -100,3 +105,19 @@ urlpatterns = [ re_path(r'^__debug__/', include(debug_toolbar.urls)), ] + urlpatterns + + +if settings.FEATURE_GREAT_CMS_OPENAPI_ENABLED: + urlpatterns = [ + path('openapi/', SpectacularAPIView.as_view(), name='schema'), + path( + 'openapi/ui/', + login_required(SpectacularSwaggerView.as_view(url_name='schema'), login_url='admin:login'), + name='swagger-ui', + ), + path( + 'openapi/ui/redoc/', + login_required(SpectacularRedocView.as_view(url_name='schema'), login_url='admin:login'), + name='redoc', + ), + ] + urlpatterns diff --git a/core/cache.py b/core/cache.py index fa9d3a69..ff22d120 100644 --- a/core/cache.py +++ b/core/cache.py @@ -345,3 +345,4 @@ def delete(cls, sender, instance, *args, **kwargs): def rebuild_all_cache(): for page in Page.objects.live().specific(): CachePopulator.populate_async(page) + diff --git a/core/models.py b/core/models.py index 4910e520..02efea0f 100644 --- a/core/models.py +++ b/core/models.py @@ -209,7 +209,8 @@ def get_site(self): if url_parts is None: # page is not routable - return + # return TODO: Remove this before commit + url_parts = (1, '/', '/hello') site_id, root_url, page_path = url_parts diff --git a/requirements.in b/requirements.in index 2af0612c..b29d8a5a 100644 --- a/requirements.in +++ b/requirements.in @@ -39,3 +39,4 @@ psycogreen==1.0.2 wagtailmedia==0.14.* cryptography==41.* oauthlib==3.2.* +drf-spectacular diff --git a/requirements_test.in b/requirements_test.in index e0fb70a9..e967fe32 100644 --- a/requirements_test.in +++ b/requirements_test.in @@ -14,3 +14,4 @@ django-debug-toolbar==3.2.* pip-tools pytest-codecov GitPython +drf-spectacular \ No newline at end of file From 8653308e120af9f668b31bb257a179d4507ac122 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 10:57:56 +0100 Subject: [PATCH 07/14] ADDED drf-spectacular package UPDATED requirements --- requirements.in | 2 +- requirements.txt | 36 ++++++++++++++++++++++++------------ requirements_test.in | 3 +-- requirements_test.txt | 42 +++++++++++++++++++++++++++--------------- 4 files changed, 53 insertions(+), 30 deletions(-) diff --git a/requirements.in b/requirements.in index b29d8a5a..6a1de019 100644 --- a/requirements.in +++ b/requirements.in @@ -20,7 +20,7 @@ django-filter>=2.4.0 django-redis celery[redis] django-celery-beat==2.5.0 -kombu==5.3.0 +kombu==5.3.1 requests[security]>=2.31.0 markdown==2.* bleach==3.* diff --git a/requirements.txt b/requirements.txt index f7378989..1fa258fd 100644 --- a/requirements.txt +++ b/requirements.txt @@ -32,7 +32,7 @@ botocore==1.27.96 # via # boto3 # s3transfer -celery[redis]==5.3.0 +celery[redis]==5.3.1 # via # -r requirements.in # django-celery-beat @@ -55,11 +55,11 @@ click-didyoumean==0.3.0 # via celery click-plugins==1.1.1 # via celery -click-repl==0.2.0 +click-repl==0.3.0 # via celery cron-descriptor==1.4.0 # via django-celery-beat -cryptography==41.0.0 +cryptography==41.0.1 # via -r requirements.in directory-components==39.1.2 # via -r requirements.in @@ -88,8 +88,10 @@ django==4.1.9 # django-staff-sso-client # django-storages # django-taggit + # django-timezone-field # django-treebeard # djangorestframework + # drf-spectacular # sigauth # wagtail # wagtail-modeltranslation @@ -114,7 +116,7 @@ django-permissionedforms==0.1 # via wagtail django-pglocks==1.0.4 # via -r requirements.in -django-redis==5.2.0 +django-redis==5.3.0 # via -r requirements.in django-staff-sso-client==4.2.0 # via -r requirements.in @@ -122,13 +124,14 @@ django-storages==1.13.2 # via -r requirements.in django-taggit==3.1.0 # via wagtail -django-timezone-field==5.0 +django-timezone-field==5.1 # via django-celery-beat django-treebeard==4.7 # via wagtail djangorestframework==3.14.0 # via # -r requirements.in + # drf-spectacular # sigauth # wagtail docopt==0.6.2 @@ -137,6 +140,8 @@ docopt==0.6.2 # num2words draftjs-exporter==2.1.7 # via wagtail +drf-spectacular==0.26.3 + # via -r requirements.in ecs-logging==2.0.2 # via elastic-apm elastic-apm==6.16.2 @@ -155,13 +160,17 @@ html5lib==1.1 # via wagtail idna==3.4 # via requests +inflection==0.5.1 + # via drf-spectacular jmespath==1.0.1 # via # boto3 # botocore jsonschema==3.2.0 - # via directory-components -kombu==5.3.0 + # via + # directory-components + # drf-spectacular +kombu==5.3.1 # via # -r requirements.in # celery @@ -214,7 +223,9 @@ pytz==2023.3 # django-timezone-field # djangorestframework # l18n -redis==4.5.5 +pyyaml==6.0 + # via drf-spectacular +redis==4.6.0 # via # celery # django-redis @@ -228,14 +239,13 @@ requests-oauthlib==1.3.1 # via django-staff-sso-client s3transfer==0.6.1 # via boto3 -sentry-sdk==1.25.1 +sentry-sdk==1.26.0 # via -r requirements.in sigauth==5.2.0 # via -r requirements.in six==1.16.0 # via # bleach - # click-repl # django-pglocks # html5lib # jsonschema @@ -249,7 +259,7 @@ sqlparse==0.4.4 # via django telepath==0.3.1 # via wagtail -typing-extensions==4.6.3 +typing-extensions==4.7.0 # via # asgiref # dj-database-url @@ -259,6 +269,8 @@ tzdata==2023.3 # via # celery # django-celery-beat +uritemplate==4.1.1 + # via drf-spectacular urllib3==1.26.16 # via # -r requirements.in @@ -294,7 +306,7 @@ willow==1.4.1 # via wagtail wrapt==1.15.0 # via elastic-apm -zope-event==4.6 +zope-event==5.0 # via gevent zope-interface==6.0 # via gevent diff --git a/requirements_test.in b/requirements_test.in index e967fe32..9abf810c 100644 --- a/requirements_test.in +++ b/requirements_test.in @@ -13,5 +13,4 @@ wagtail-factories==2.0.1 django-debug-toolbar==3.2.* pip-tools pytest-codecov -GitPython -drf-spectacular \ No newline at end of file +GitPython \ No newline at end of file diff --git a/requirements_test.txt b/requirements_test.txt index 6b1f9f07..6039b6cd 100644 --- a/requirements_test.txt +++ b/requirements_test.txt @@ -34,7 +34,7 @@ botocore==1.27.96 # s3transfer build==0.10.0 # via pip-tools -celery[redis]==5.3.0 +celery[redis]==5.3.1 # via # -r requirements.in # django-celery-beat @@ -58,7 +58,7 @@ click-didyoumean==0.3.0 # via celery click-plugins==1.1.1 # via celery -click-repl==0.2.0 +click-repl==0.3.0 # via celery coverage[toml]==6.5.0 # via @@ -69,7 +69,7 @@ coveralls==3.3.1 # via -r requirements_test.in cron-descriptor==1.4.0 # via django-celery-beat -cryptography==41.0.0 +cryptography==41.0.1 # via -r requirements.in directory-components==39.1.2 # via -r requirements.in @@ -99,8 +99,10 @@ django==4.1.9 # django-staff-sso-client # django-storages # django-taggit + # django-timezone-field # django-treebeard # djangorestframework + # drf-spectacular # sigauth # wagtail # wagtail-modeltranslation @@ -127,7 +129,7 @@ django-permissionedforms==0.1 # via wagtail django-pglocks==1.0.4 # via -r requirements.in -django-redis==5.2.0 +django-redis==5.3.0 # via -r requirements.in django-staff-sso-client==4.2.0 # via -r requirements.in @@ -135,13 +137,14 @@ django-storages==1.13.2 # via -r requirements.in django-taggit==3.1.0 # via wagtail -django-timezone-field==5.0 +django-timezone-field==5.1 # via django-celery-beat django-treebeard==4.7 # via wagtail djangorestframework==3.14.0 # via # -r requirements.in + # drf-spectacular # sigauth # wagtail docopt==0.6.2 @@ -151,6 +154,8 @@ docopt==0.6.2 # num2words draftjs-exporter==2.1.7 # via wagtail +drf-spectacular==0.26.3 + # via -r requirements.in ecs-logging==2.0.2 # via elastic-apm elastic-apm==6.16.2 @@ -163,7 +168,7 @@ factory-boy==2.12.0 # via # -r requirements_test.in # wagtail-factories -faker==18.10.1 +faker==18.11.2 # via factory-boy flake8==6.0.0 # via -r requirements_test.in @@ -185,6 +190,8 @@ html5lib==1.1 # via wagtail idna==3.4 # via requests +inflection==0.5.1 + # via drf-spectacular iniconfig==2.0.0 # via pytest jmespath==1.0.1 @@ -192,8 +199,10 @@ jmespath==1.0.1 # boto3 # botocore jsonschema==3.2.0 - # via directory-components -kombu==5.3.0 + # via + # directory-components + # drf-spectacular +kombu==5.3.1 # via # -r requirements.in # celery @@ -225,7 +234,7 @@ pillow==9.5.0 # via wagtail pip-tools==6.13.0 # via -r requirements_test.in -pluggy==1.0.0 +pluggy==1.2.0 # via pytest prompt-toolkit==3.0.38 # via click-repl @@ -247,7 +256,7 @@ pyproject-hooks==1.0.0 # via build pyrsistent==0.19.3 # via jsonschema -pytest==7.3.2 +pytest==7.4.0 # via # -r requirements_test.in # pytest-codecov @@ -281,7 +290,9 @@ pytz==2023.3 # django-timezone-field # djangorestframework # l18n -redis==4.5.5 +pyyaml==6.0 + # via drf-spectacular +redis==4.6.0 # via # celery # django-redis @@ -300,14 +311,13 @@ requests-oauthlib==1.3.1 # via django-staff-sso-client s3transfer==0.6.1 # via boto3 -sentry-sdk==1.25.1 +sentry-sdk==1.26.0 # via -r requirements.in sigauth==5.2.0 # via -r requirements.in six==1.16.0 # via # bleach - # click-repl # django-pglocks # freezegun # html5lib @@ -335,7 +345,7 @@ tomli==2.0.1 # coverage # pyproject-hooks # pytest -typing-extensions==4.6.3 +typing-extensions==4.7.0 # via # asgiref # dj-database-url @@ -345,6 +355,8 @@ tzdata==2023.3 # via # celery # django-celery-beat +uritemplate==4.1.1 + # via drf-spectacular urllib3==1.26.16 # via # -r requirements.in @@ -385,7 +397,7 @@ willow==1.4.1 # via wagtail wrapt==1.15.0 # via elastic-apm -zope-event==4.6 +zope-event==5.0 # via gevent zope-interface==6.0 # via gevent From 86b609ea54b97566127ea39ba5d10de33bd0c31e Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 11:03:55 +0100 Subject: [PATCH 08/14] REMOVED Local model override (Bug) --- core/models.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/core/models.py b/core/models.py index 02efea0f..4910e520 100644 --- a/core/models.py +++ b/core/models.py @@ -209,8 +209,7 @@ def get_site(self): if url_parts is None: # page is not routable - # return TODO: Remove this before commit - url_parts = (1, '/', '/hello') + return site_id, root_url, page_path = url_parts From 98eea40fe58ab4f98b1707aacdda0e2f6be37996 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 11:10:07 +0100 Subject: [PATCH 09/14] RENAMED OpenAPI Flag. --- conf/env/dev | 2 +- conf/settings.py | 2 +- conf/urls.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/conf/env/dev b/conf/env/dev index f3432255..bf41e053 100644 --- a/conf/env/dev +++ b/conf/env/dev @@ -30,4 +30,4 @@ ACTIVITY_STREAM_SECRET_ACCESS_KEY=123-secret-key FEATURE_ENFORCE_STAFF_SSO_ENABLED=false USERS_REQUEST_ACCESS_PREVENT_RESUBMISSION=false STATICFILES_STORAGE=django.contrib.staticfiles.storage.StaticFilesStorage -FEATURE_GREAT_CMS_OPENAPI_ENABLED=true \ No newline at end of file +FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED=true \ No newline at end of file diff --git a/conf/settings.py b/conf/settings.py index 30258b59..9eb575d5 100644 --- a/conf/settings.py +++ b/conf/settings.py @@ -485,7 +485,7 @@ DEFAULT_AUTO_FIELD = 'django.db.models.AutoField' # OpenAPI -FEATURE_GREAT_CMS_OPENAPI_ENABLED = env.bool('FEATURE_GREAT_CMS_OPENAPI_ENABLED', False) +FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = env.bool('FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED', False) SPECTACULAR_SETTINGS = { 'TITLE': 'Directory CMS API', diff --git a/conf/urls.py b/conf/urls.py index c6cd409e..b6aa7802 100644 --- a/conf/urls.py +++ b/conf/urls.py @@ -107,7 +107,7 @@ ] + urlpatterns -if settings.FEATURE_GREAT_CMS_OPENAPI_ENABLED: +if settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED: urlpatterns = [ path('openapi/', SpectacularAPIView.as_view(), name='schema'), path( From 43c2aa65b53d7a3b7effb60d5d904beadb71edda Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 11:26:57 +0100 Subject: [PATCH 10/14] RESOLVED Flake8 failures. --- conf/preprocessors.py | 2 +- core/cache.py | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/conf/preprocessors.py b/conf/preprocessors.py index f77a25f5..82f0a7d9 100644 --- a/conf/preprocessors.py +++ b/conf/preprocessors.py @@ -9,4 +9,4 @@ def preprocessing_filter_admin_spec(endpoints): # Remove all Wagtail admin endpoints if not path.startswith('/admin/'): filtered.append((path, path_regex, method, callback)) - return filtered \ No newline at end of file + return filtered diff --git a/core/cache.py b/core/cache.py index ff22d120..fa9d3a69 100644 --- a/core/cache.py +++ b/core/cache.py @@ -345,4 +345,3 @@ def delete(cls, sender, instance, *args, **kwargs): def rebuild_all_cache(): for page in Page.objects.live().specific(): CachePopulator.populate_async(page) - From eb29cdeabb547b401b258f065049e913dacc3b70 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 13:56:19 +0100 Subject: [PATCH 11/14] ADDED tests --- tests/core/test_preprocessors.py | 46 ++++++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) create mode 100644 tests/core/test_preprocessors.py diff --git a/tests/core/test_preprocessors.py b/tests/core/test_preprocessors.py new file mode 100644 index 00000000..da76d2c8 --- /dev/null +++ b/tests/core/test_preprocessors.py @@ -0,0 +1,46 @@ +import pytest + + +@pytest.mark.django_db +def test_openapi_root_path_open_to_all(client, settings): + settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = True + response = client.get( + '/openapi/' + ) + assert response.status_code == 200 + + +@pytest.mark.django_db +def test_openapi_ui_path_closed_to_user(client, settings): + settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = True + response = client.get( + '/openapi/ui/' + ) + assert response.status_code == 302 + + +@pytest.mark.django_db +def test_openapi_ui_path_open_to_admin(admin_client, settings): + settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = True + response = admin_client.get( + '/openapi/ui/' + ) + assert response.status_code == 200 + + +@pytest.mark.django_db +def test_openapi_redoc_path_closed_to_user(client, settings): + settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = True + response = client.get( + '/openapi/ui/redoc/' + ) + assert response.status_code == 302 + + +@pytest.mark.django_db +def test_openapi_redoc_path_open_to_admin(admin_client, settings): + settings.FEATURE_DIRECTORY_CMS_OPENAPI_ENABLED = True + response = admin_client.get( + '/openapi/ui/redoc/' + ) + assert response.status_code == 200 From 50ffcd7e749966ffe1c5694c77af97cd0991df41 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 15:56:52 +0100 Subject: [PATCH 12/14] FIXED tests --- tests/core/test_wagtail_hooks.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/core/test_wagtail_hooks.py b/tests/core/test_wagtail_hooks.py index 62900a5e..818de242 100644 --- a/tests/core/test_wagtail_hooks.py +++ b/tests/core/test_wagtail_hooks.py @@ -15,7 +15,7 @@ def test_update_default_listing_buttons_from_base_page(page_with_reversion): page=page_with_reversion, page_perms=Mock() ) - expected_url = 'http://great.gov.uk/international/content/123-555-207/' + expected_url = 'http://great.gov.uk/international/content/123-555-212/' assert len(buttons) == 4 assert buttons[1].url == expected_url @@ -29,7 +29,7 @@ def test_update_default_listing_buttons_from_base_page_button_url_name_view_draf page=page_with_reversion, page_perms=Mock(), button_url_name=button_url_name, ) - expected_url = r'http://great[.]gov[.]uk/international/content/123-555-209/[?]draft_token=\w+' + expected_url = r'http://great[.]gov[.]uk/international/content/123-555-214/[?]draft_token=\w+' assert len(buttons) == 4 assert re.match(expected_url, buttons[1].url) From 6e4701748b66c4b410737efdcb0838f3c912a255 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 16:35:37 +0100 Subject: [PATCH 13/14] FIXED tests --- tests/core/test_wagtail_hooks.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/core/test_wagtail_hooks.py b/tests/core/test_wagtail_hooks.py index 818de242..d9606fd1 100644 --- a/tests/core/test_wagtail_hooks.py +++ b/tests/core/test_wagtail_hooks.py @@ -15,10 +15,9 @@ def test_update_default_listing_buttons_from_base_page(page_with_reversion): page=page_with_reversion, page_perms=Mock() ) - expected_url = 'http://great.gov.uk/international/content/123-555-212/' + expected_url = r'http://great.gov.uk/international/content/123-555-[0-9][0-9][0-9]/' assert len(buttons) == 4 - assert buttons[1].url == expected_url - + assert re.match(expected_url, buttons[1].url) @pytest.mark.django_db def test_update_default_listing_buttons_from_base_page_button_url_name_view_draft( @@ -29,7 +28,7 @@ def test_update_default_listing_buttons_from_base_page_button_url_name_view_draf page=page_with_reversion, page_perms=Mock(), button_url_name=button_url_name, ) - expected_url = r'http://great[.]gov[.]uk/international/content/123-555-214/[?]draft_token=\w+' + expected_url = r'http://great[.]gov[.]uk/international/content/123-555-[0-9][0-9][0-9]/[?]draft_token=\w+' assert len(buttons) == 4 assert re.match(expected_url, buttons[1].url) From 8ee73f95c99700c8013f5392cd36bd5385d62044 Mon Sep 17 00:00:00 2001 From: Sebastian Lees Date: Thu, 29 Jun 2023 16:36:12 +0100 Subject: [PATCH 14/14] FIXED tests --- tests/core/test_wagtail_hooks.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/core/test_wagtail_hooks.py b/tests/core/test_wagtail_hooks.py index d9606fd1..6e05a94b 100644 --- a/tests/core/test_wagtail_hooks.py +++ b/tests/core/test_wagtail_hooks.py @@ -19,6 +19,7 @@ def test_update_default_listing_buttons_from_base_page(page_with_reversion): assert len(buttons) == 4 assert re.match(expected_url, buttons[1].url) + @pytest.mark.django_db def test_update_default_listing_buttons_from_base_page_button_url_name_view_draft( page_with_reversion