From f50dd56fffed364368d8ddfa88a03669649d982f Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Thu, 31 Aug 2017 22:31:56 +0200 Subject: [PATCH] thesis/context: work on introduction * Explain some of Memory-Management * Explain CWE with relevant examples * Add CWE-119 Statistics --- .gitignore | 10 +- ...lnerability-Type-Totals-By-Year-Legend.png | Bin 0 -> 23656 bytes ...tive-Vulnerability-Type-Totals-By-Year.png | Bin 0 -> 52070 bytes ...Physical-Address-Translation-Long-Mode.png | Bin 0 -> 69508 bytes ...lnerability-Type-Change-by-Year-Legend.png | Bin 0 -> 11845 bytes .../gfx/Vulnerability-Type-Change-by-Year.png | Bin 0 -> 71609 bytes .../amd64-4kb-page-translation-long-mode.png | Bin 0 -> 80668 bytes src/docs/gfx/qemu-stack-overflow.png | Bin 0 -> 18657 bytes src/docs/glossary.tex | 76 ++- src/docs/parts/context/context.tex | 473 ++++++++++++------ .../research_and_development.tex | 62 +-- src/docs/thesis.bib | 406 ++++++++------- src/docs/thesis.tex | 6 +- 13 files changed, 638 insertions(+), 395 deletions(-) create mode 100644 src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year-Legend.png create mode 100644 src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year.png create mode 100644 src/docs/gfx/Virtual-to-Physical-Address-Translation-Long-Mode.png create mode 100644 src/docs/gfx/Vulnerability-Type-Change-by-Year-Legend.png create mode 100644 src/docs/gfx/Vulnerability-Type-Change-by-Year.png create mode 100644 src/docs/gfx/amd64-4kb-page-translation-long-mode.png create mode 100644 src/docs/gfx/qemu-stack-overflow.png diff --git a/.gitignore b/.gitignore index 2b671be..51873ad 100644 --- a/.gitignore +++ b/.gitignore @@ -5,10 +5,10 @@ *.fls *.lof *.log +*.lol *.lot *.synctex.gz *.toc -src/docs/*.pdf *.dvi *.glo *.ist @@ -16,6 +16,12 @@ src/docs/*.pdf .dot/* *.out *.bbl +*-blx.bib +*.bcf *.blg +*.run.xml -docs/ +.vscode/ + +/src/docs/thesis.pdf +/docs/ diff --git a/src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year-Legend.png b/src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year-Legend.png new file mode 100644 index 0000000000000000000000000000000000000000..761fcaee8f6327062d3bb1f87f0d28fd0cb70726 GIT binary patch literal 23656 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 DgCx7< literal 0 HcmV?d00001 diff --git a/src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year.png b/src/docs/gfx/Relative-Vulnerability-Type-Totals-By-Year.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d9536c06ab3d93f921a2b7797b55bce9e34b9a GIT binary patch literal 52070 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

xPp;Q+$d*5`Kl}O4 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 Z|FiQqi0tm0H7gfnw5O||%Q~loCIJ6#ZuI~F literal 0 HcmV?d00001 diff --git a/src/docs/gfx/Virtual-to-Physical-Address-Translation-Long-Mode.png b/src/docs/gfx/Virtual-to-Physical-Address-Translation-Long-Mode.png new file mode 100644 index 0000000000000000000000000000000000000000..4d62b79d30350df2fcbfd3b1497e0bf65821a9e5 GIT binary patch literal 69508 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%0A@+}zCC`!v4(Z)@!C zvXyhc|9n25Tk7=Z=jXF)&ac09e4c=l$--lk1cLM>BqSDOUthQW?)IqoczOT%c55$X z+f{s6;PpIqSIJ7R=dzYXOT3=Hy|Z((*YmZ}+t+zjC)NLcyFKfycEHy=EdoJ~pC*@s z;?&9G?Sf;Iu1Ght^SeDiHy3ocTY-%F3RZUZ&s%SA&*#p%y*>YVcJ=pnqE|qBxc6;K zIVt3*tFPa`zE{pR>PjVtV#|b83;GXv?tS>;1&6Y-a<6H0bab82qMU6N%Yr}m7xwn@#s{wq@$m3q2-p|5Ve#U{4`y|Cb_Qroy>RiO@ts>eR~@FA5ke7-GuG%wBu6H2(Qh^X|&Z;5#dWm+xq4 zY0#aQ^*fV0icaeto*Er#5Jz-Tvj-*Vl1o z-LLt~8xLBdwqRTR|GIr*0s;yvmM&fT5tLT9X5YGbvyj0eHa0f!`AV&&K_^e9Y|64# z*U;#Q-c|BaI(EI)v$M00M@B_m`%$`N$&MW}{#z?fKOJAGcXy*oOU9Opk4Z0Hy;>Bz zyDZDvR!}JoWET??69dE9+2-O`{`~m^T1LTe0Cb$yipq+L2M-Q5Gc=@~oyD2OD{b~9 zTTDzW>pBlVKWGhpiqTiWjHDC6K|xFl{!He#wYA;)Tp*}X%3G;2{oEYKloXY)wNa`! z&Q02L>sYV!#r5&_Q5N$(&YhNa-E-pRP04fT&Pjo`_kQ^H?OKGffx(I`Yz&}#gmUL? z+GGT};G5x;`Gbn9#heRITDyD#H3myxUvpd;vZ>FBLvfLD&5wfK*K>pxaYFo6^)<_; z`dd#akJFZChg!KmeESAk3-H3P#xx}@?UQ_~H|z1jice2CUrQ_socsSjs5STb+c&q8 z5|du;Rm&Wk*%Z~(+CaM976vG&tGC=D0bg)s^2L4(iDm5pkN51~g#8RG%0U9D%(YM0dq(DXW zSEuXiVkb_Ye%y*}CG(drUmiSve%z`pW6G2%Av-rNIceP@(90)lbwq!k4~Jq)2rI~{ zclY*ozrDSE@tQR~r6Pfx92^IB7C#3!m6Vh~e(3J)ZQZ|r{}ZaOhGBli6%A+I%G6&RE zdvJu+@E{PI2Bt$ z&QH^g2CbXCX4v6z0bCh3pZ?-01D`1 z7cL0s>FF657$nHH3Y=VYY?4P@S(zDVL37_@kQ3+GRzEt>$P8(?O{_9JW~8ppe)8nW z4I4Hzw6?O=$E*zb#O)w0DY^2k^so2(|1VmzhNoz!jPGnS(JONHbv=(BB{4KKH#a9F zd6boz6%`jVGMJf}8JL+p%WiFLJ#pp?OM}&XcdfFww^}_Xt1aBIW5&A>0VfaB-23}v zL0d|%uZxXzS5#8?X+4drl?gPKJ9)D3G~H;m6{>1#pMHDv%h^V~-I;r9OXK9plaI~Z zsO;YNWd7_)layA}e!p8@^Y+2P=B8WwYJdL#)oib}>&5Q6utQ5p^W@2s99&#ZSy@`I zH5LhpiGc>OHuWh+L5^apTl~C8rhUtnEn4%}2d$i;&#U^=dfKjCyFh(Pw_d5G+tlXo z-D~^p-Cb^mtaA3oPu8(sOND;@`jxfy{l4FQ`!9e0RD8Towp-4&ih;q##)btnL;r79 zscnA<=-i-t_wG$N{dCRZj#KMmcMAv$AGTssjG8=YQWK>0B=hatw>6IiIHR`b$r>3M zEm*$1z3%TX@TqCP-|znj+68|-zJBeu*GrczOZxTYWk*NHic3HJ=h-yQpD(W$vm@Yb zc4qezX>VCs*)4f@rJUP%0$0zRH7m;|F7d&E#;Mn|q)dHpZOiT6mU}yEjirUffrAGf zlh>|$I+06WUjE0A9~=4{C4x0XcGUm3Q}dgnVR3I~aXRRBx%xFBT85dIRJK0fy=xa} zHC4OIsp7K>?m@#{{@%~Pw zpPm(>Izus`M*HR&yebwLB9s8_xEIHi6%j;6bz3TUSmzVjR ziHVH`E$G{laj~gXB=F_^{rhj}2e=s9+S=~x8DjR=$x55&wd~$)os^XH;K73i(2|n$^Ydod zRB9Z~{SI3TVD#<%{r)FUQa~rno;!DL!s(}=&9V=kKWFFW=8oA{BPl2-SWr}yw2z4k z+)uxA_wL2L)#W_0R#QqvoHztoZEbBerh2`2^(yJ}v$LR#cIworgxuWT6DK?v9Img6 zT^O|T!ZKg!nB8T(Z*OmR_wnHY?PobN+nj&8UhJdyR?C(yT?kqxW{`W!1a$44!I#|Y z>tY!iK-=aY9BiIpk}350SkR}nXI7q0gRG<|-4URhJK zvy>-r!pRiSTA`YnnuN5pwu_717q404v%zJ-+O@j#?Cbji7rTKL;WL2GWy!z4F9USy z?%JrM{Cg*!ep)lR^835ktv^Msua7_e|KE4}miG3~ys56rr?@~h$rLYDFE6hd|HahJ zmMvS>^fiD}aQAZm`AU$JE!QmW@G2-U*k9EV;o{=5qStaAuhC2%P`{{=nSDdbNud)d zMpLFv_q{rYWH3#e7{@87=@Cr(_j*gZ|a>BMSY zIU9+$x3{OuF242X@#BY2pSB)sX1{(*Us&e&N?yevt*HSTB7c&ndL6BAGOPHIpcA!) zDGUrx~B%D@mA8Cg(J0J_kgamxCOQ5QGt+w;mf zck%h1ps^foK0dw~cC}Vg=6PqVx>oqiwGs^s4BT3@*8cw=;eL7hf9FBVmJa`~yuYv3 zqU41DsLxvY`Ptv+*Xu<6{r$I=sz{q=wUpnhY_Gqw)LZ<;%a@D{p#5CyVy#UwE-)}` z$hiqRtHIgdpMT-Pg`kYRJ?}09!|Cbz$N&8N3|ip?+B7U}mU95KQZ;a~+rfMH=Gm{$ zzrWA)mt1^1q=C{jd9tvRvvcHeg{cx21q-gt`ZxW!@~jy%4&1vJx1rI&_rjJv(`V0? zzH{f!kK>=8pMUkhuf@fhA=(de_(so)h>{3>uD~ZKpSh{-LZV;Z6M%uLrYK3Eh|e)Mn>jd#rtQ! zGG1I*sG+HOut(B3!hPi?S?jWnB=1Y0i(g7v)-JXN4O{lf+w4Ug%S%fw3LmlTxAre8GODSm5s;GVGEP6|5FReh%F6oU&Q4>{3UO|6 zJq2@farwF*ilD+`WAgDwhg!Kiy1NfApI_J2&M%*IcUP%~o?hGb?dFdjKi*jWKJL!$ z^8TyS8|=8$FO@$&#=9nZJKyQ)`r)^;y206B-cH8S(h_u{aD@BH&wTQBJo@_jJ9h3= zw6l{-O-%(=qc)XB&(6>9?~}ED^y1=Ti~4^y3=ck^w?E#-EB)ZnqoxxlJZ$RzNE|zM ztm4-fP0;=UP#yB{P%Eg!Z{v|{+E@Gg(d+g5-F|<23mT70y0E~J;Z*%OOACt!r}g)z z{QSlUYBqa-?)2={i`})M&#~hgXd~FPY11ansEnQsn&k`#IAGPLapcI611C;!gs+Qn ze0;38@Z}{{5m8Y^TU%LK>#`^3FJHWPaC7>31_nJny{5-TGkNs%^!{v{0@_SDQQ2KU zLZajA>+6r--QE4+<44exJLoD{@VezmlO}-si?Csm$ z7cVkiynMN_Pf4qpjkjs>V&&HoEg8K|3qdz_Oz~2Et+8m)>ebvceT3dR^=fHp9h$7} zU-0aVq>OEq26)jitINA>+qOR+#mzrf6t4d~X_62NJG-)m z28W}gBWQsV=#X5{Jc9k756o)5vsjdsl|g5wSz20t`0~XiEiFxVPx4unkAW2-AtIoq zct^X%v*$FrzA{%=SGTaV+}P*Hk?0d1E}oW_W}>oeR#H-ufT-wEE4R7judZnF$k|A2 zPCLsKP`CX1;(j~Ok-`(^%sDeZ{9?qd8#fdb6&>GNDC8K$#>RrSEX&zeajbj(4+a5efc=7Tj==7W5<$h~BxBrZq^h4BTY0$&v^XrkqvM{E%J|y`nreB{C1$u7em7Jb+Hi}lUPA}Z4(c-Ed(vxIHmqIq~iPC@{Kh= zi$G(6UQ2~QH@Sa)ejaq_xP*j6!s}~m4UCPQJv=x*ef|vEIpf$IeLHKCxpny!J4Rub2XIq>4*;>no`w!+6vkEhRJOY3b*Ioy|6ag{GcIdLC51; z@3v|MYbWbW*NHsTZ@Gd~P*709vPk9sj?~lBK;E0xka(Eoc=fk8niAbhLbO0jyth8z|M{GC z#D;{%2RB|^T+AvT$@ui~JSS&o*5gb}Og~(Ev`w<2d{sd^Xu{FJ)22ec@$r>Ez~@z>YaU*B>0%&}hS#N_0|_V+d>w;x;kBtzPsi2<~s z2aQKYg65tAZ*5BD?vu4X2HIWhc_wATB^O~Q4n@<)cgyb| z-CO;AhTc&nH{GZ$3rrVzPW4;_8cn;u*u6jF2ggJaXJ_XfJ9c3=ytdWfjx;i}gKJyJsLk!I+2Wu~cIi^kHP8)dC7{;x=jZ1)_c^*WNqIYU zxW(=&Sy&kA5;SS@WI+*;mMd36t_8ZN>ge#KpP!d1+uXqdvSgNNHd}sv{)wkW*8*Kq zudj=Jad)>lsFe2g^5SxGa?04u`gZld|9hcx8+pv`(T63&Q zyGnU3t~eK9l%>O|*m8w?-MV!*wq}b*ZOJ%j)wSZw`}^{)uC8m6GeR958Q12=I6H6<&HD>n95K(oj3%gg-*AqVk-g2uu^qWb$gc+m9p_9iAL zJ6E3yzkGJK`OD-2B~8%TUmb$V6K2dfVa265$#uK37U-yzmX;QWg#ixk?(A=GZ9NRy zM9Ic0b>)Vse(bIm-`QpdFI^H+R8;))QQd!D!nZd!16GFI*j1`+>T&hS`}h3y_4U^b zITT%{fOZ+~E`PrX6oKy|!jz1Sg>P@mZJsz$aL$}Lp#D>jr13Jh^_9=h$+on%Dw>#t zdSe4`ZeQ_jpVY}()6BH(o5 zbwF|?=gc*KycY+pWMDYnFW>H?*1Q>fByHjIbFx#WOj(e8yl;kmy&Xfs%S%fwDn2Oa z#qaB>{QS%@K3*QwnFSS>X=fxr`;s#=Gf$j2ap2L>?yKu&PM^-MtgQUy#l`0PSz3yU zjFpv@poS;Ihu!iu-)^RZ*4OX<|F3(=5|uwc9`{c;nNsoPg&-FfSHYJTfiAADiQnJd zy|K5tytjVut4%LnWPn-?T&TTKSxwMOhH|p{q61T$5#X{2IW=I7W-eneialJI>yDx{lEY9_4TXkX3n3_ z@9Yd(T7Br~QC861F`dHd7nb|W?@QFt(E+XQ-j;j2O*?#D!qZbzH*DPaFn;l(lWQkT zoyr;=eS6jqq0VEVj>?oNA`%i38~T*A{QUe3jE$3J7oYm{>C=bj^XoVDId(kRv1`|% zbLaXX!}4K^k`A3dEkEC`=7+%f`S#a$9M1r)l8%b%y16-BSy7Sk;K73o4d>=sKmPak z_m2Ai|FqXf1_T^1x1Tp}9tSr!GiW>4w0s?IF0O*t*K|SSzhPlvS?d+2pZ@uVlamwF zpRxbAe4mk_VPkVMvj`XKq)C%NYfr1It1GIjxo7>|v&RN>obtDC-wH}fLRR-m8n@NI zJK8PIy7m43|MS+jwzhI+{r>*`dG_Vy{^D0&70JcN$6x#ZdezbuD>#_h`C7JbH-C3$ z=V2?pmCZUjI-tXMuD+-`611i8vD=TIKR1F3OEHi2F0RGjKJA*Qr>6%RJ!#<-HpsZ3 zkaK%m?|hL@Z*Ce-nKI?UWPiKH-Mg*R&dg}^xBJP$%+BWm+A8<>adSfh!;2R$K*cwx z&BL;O?$oJA?-#zgxR`xg&dsKU&h1X_?(O#TX3y>ho!J5!4GE90Wfc|{K63mxsAgvk zs5}1Y)6>&4tjqO4h4H%B-PeBnnw|9V$H(M3mc?!VmmWBEiVJk}&K%H%lol2i4({&m zYtz!wj@f?)ZSMK;K{3AiUvz=-9?KQSEvsT8z7BcbN^OyhLWS)@B-`r`Ihah}^-_ty&4VPbf3X(@M4Z|_gg3h+sj zCo?jDR&6{8Ubx(UKIn#5hEw6fg@uI=vsG19L5;13Piotp+xeQZuU)m-qRGCJFH1-J z;)XHG$ehIYx`fwZX$D`u$D`GDnKh6%iD45~E>C@c7%X|(VXk-S@r+^0b zK)s`LbFGziba>qRWE>}}`EE!!$W#|=*7tbA+_}BW{pTmWytEWlbl87vpW>hQ>&s<- z?bxQ5kNfS{ec8FU`un;q-_BXT|M35P+_MJ{0y2y9b8`NiI<{Z$N#*3HtKQw;-@ktU zzg@S^|JIL-Q4U)fl5}>KDF;9Q@k6cLhJ}w@7@qQ0OxKIePzo2_n{_wVP+L#$*xu^z zA1=DfD_UDiv$3)5sQ9?(!5q)YY9D>C-`iUay5@b~w?{L6AMF0Q;n{ztt@Dqf#Ja2yRx^p+6%Xe)N2P{kp9@eSLi(ABU}vi_N|+(!FMl&MoC1yf<&%I&|^k zMz80~mMlp)KhM^5jz?@=ot>CYgo4GjMXubSBkw*uILN`vd-Q0xIH;pmsn4W zy0W`GAGC)0+qZ8!N?(f!2@7wm`S~g8?1BJ|A6xZ00}i+GvfdBzJezTAOXk}9Ygrn4 zdU*D2G%+)m3!`JKapC3<4KQn`o0d%_Ot+|px_Ir0QpFjOQV$IsMto`w8X3w5| z_|Bb}pa(TqAlFX&Q9k*v*W_!Q)d)!;L$sN;YOK&tXGz^qJ z?6In?Eo|cTg~x)rQ;Z~+`OQ6La(Izz_l&st0%1PBzMv~YOI}@hIrX{kd^_38%l+3c z4OyZ$>Gad4)LR^ix13M&3OcDAJaXj8R$tJvo>{KFsj^`kx3GZL-E>F!v!Eo*Rb zb-jAyb^W)S=^6L;)%NbS150lUO#ayhI+)Yn{_mD!aq;2d;kozUPhT6qU(S2F-qO@y z&;p7e^$SntnlD+t{QIqA@An&+nAAMYV+UN@ZGqpXO40DA%jJ5aPZb$)2EBGH!vT#ySF+#fSZf!QTD@!51VeiySw}6 ztu2|CS+*`&qO$MW>Tvz7*-=qZ*IwEjJ$m%d&!U|%Z~us2ls#=8ax*GUJ8aE?RiUdl za&5*B2i9#CtNusMlH$ zl)sGA&w*~5?gyR4dh@1aW@hGx4<8PIwk~I0Qh_e#b6*{{7StdC?K}dVlsI{^a7;{$ zfV@1vtn6H`a;u0935?Iq%nVlFeo6^6U~B~v-oCQ-svCp;`=T#O%F2tq;)C_3?=Omu zsjmL*m0hZP{xvA=nwZvQW@dW$`yZdC8~x$9eEo;&Of?mi2hIF;pb%UTv=Y=xJ$U=} zZ2SMu=hq*5zyH6Ug?z)YV;?UpbOu!_3mlt4Eu3o~cB_CEWv#Tz(z!ojS*NLJFX*7r zi(9k9|5d!cw)WwR7agqJVxWO6(1`H9-|wss{*2vKA~;80T)chKB%!U@YvT8V24_J7 zHlPbA7?O|m96Z#@4cbn=cAq z{r2`Y=thM_9`un4AZ*Ma+6h1z7@Z7n+^>eMu`PBX9Fff3+%J1I2t9g5{ znf=DjVs&s0^7r@m=h?2VuAs3c@M#O6qAugJhig)jQr+*j<_r$)e6kPTzC8;rrbAbU zF>1&kHz|7)aj^LM+UWK@du(33cme8qHr<+MTm56^%*V(3#oq+ieR~u6=j-)&hEvCF z_U^D-JL8jwXG)67yZih38D|dwcn!oidx#&I;wqImNx68eF}_Vb$hC z>i+Z2ynOw-_~ONjcjnnv?~t`FD_FU5<(>5TwZ}|zZcMnnyIgAGfrcFkUZzucPJwRaLcm`B|dm|bD`qtLfD?WQ1 zov7^ohSekS@-Mz+s5DC zRk}Lkv&Tu$GTHBykB{*>=6-y1v?llWx3^8V4mPv@yme(|FzePYUrP2Z%bb?``Po@Z zWo6}cj?HX~&IN~-)`sm^x>WVG#G;_Nkq@n8!cX!D>drLH7Sqwuxl*Srv^#&_&$j)> zA&N>$OlzaI9-5*VydnL(oQRkh=p+PCYptZTR8Um36?8%H>h=2$Jvlj%Az~Jzc=h5_Zwd_SfD;KO^AFr-H^W1!U`PbLiyN88|z1CP17!-8qyxjED zPyYni`GUr8GD`mZD7>?~oFBCFrdv!GbfMI>i5|M3;QjaGF~5YQBzSP=v4Gp7$BzsD z{3rzN4Lo&rOFfcT)7f*+9Dg2`jq%&Iq$mbXnZU%)YNEF;1zrudnaJ zr@q6tX28}0d|Fkq+%U)moDoXa&2Ag>TNvJX7EZH zvDj99Nsx68*;V?wP1Sqafg3kwl!~kc^~3-C{d;xWKIQe>5)Lx)$XHAO^~Xw%Px6R+ ze{b(j0C9PQ`8a^6nt@Qt@Qq@%Wtd<(R%Xi*|n2fMPF~)SNr?Z?Sn#}tgb|4 zc}`aIO-N5?=jP^SXjr;bbet~ZtU_LfZHMT-|toHwuU!GnY!zkV@kzy|r%D%BB^YV}UQ)g$JyC)hjhI|9`jp{e?Z1#Vzgai??hM2@4CeD0sl&)+=@N$={BNQ>TjFxpPNlbF)vb zW#J>1q@<*X;}>Ryt&Likd3o8IjIJ^c|mKV=OzW!U*vbYw9vWTOWjw02Tz^iYHe+0XaJpqc6WFA`jSnI=$G&MOHSd4eY=jeb&UpH(psQLAB z`GxD(*^d|gkv$FC$_lzax%9PI!>6sR^X+P*vfsB~iNAO6Uei@BkH5t~J|xzBI;no* z{P}d*Rs+ygD>?V~&4q+vR^-uN8CFMeFBGp4dw`F;*{eN?Ref^nvwzErl0#BYi>FDItlya?hPsvN6IdkW}tj;i1RaLzh zRKDcYi^T=H(uPSa_v-)G-nf06nE`bANql_#j2SZyT)QUbKi>|tqK1iy>BC9&`Jj35 zZ{NN(&3w=;rhDkl&SFM}Wy_X%%v1&OBKyyc%@3s+!s*J)^I8 z_W%FK4PJJ@;q2<_3Ocr?u+Z?eM$5)amx6L`ZQ=a&>z9Oe*_s7q4-PQeRDI!KFerNB zF=O`Z&s)32^*_B{@a^sG@DHDV9BgK{sQRM80BSyf1}5T9pFe;6++1tMDg1@f76l6) z%(}fj-@UMKqsFH_V&R9InwoYj^`3t1ODf08D{Z{e77Q_9YZra`@X%S$#%9j#&FTE* zKR=~jEBv>4`~AAvpuOjy>NG0ql&pQ-obHZ}1X)*YzqwXN86P})^a!*Jbk81}chlqR z9x5p-?|gi`Km4U7q*Guz=grwOv(5V_pG=WqICter$l7;LpB`m=z)(>B{+{TSrlzJJ zQ56+C7Hq5jp102|_m+vHuBK+^`me99dcU1DZQ8U_EC0em!}@(Odg0dpU9DuoH*YUY zJ3EV&o16R0EYsC$`pzCpPn|loAZX=}yL}#4LGwv!YHUU`dHnqRUR+qn{MzGxXVA)) zzCJ$PZ?V3Gg@qn|e#bsMJRIr%^Zbtg`@ip8w=QpK^eds#)YQ~JMX{ip!td_>o;`mt zw2E#IJOinsk1uxbU$A&Fv$C?X0(#nZgEx}OwPE?vKJ@#4>?T7Smpsl6_mcYWdf zZQz{k0@_H{l3`N(%;(6_qZ|7iB|z5&i|NIjs84ZwwLJCow1*!a9$u3yFmVBByVSP%n6<>jFgJ$QK+t9brw6U@A#+FRs*Aj~+O_|bS|NqZq`Q@r*pu<->1eJem zZS}k=V^z{IEkh~P4YW(|_xJb8Mn;?b_>|PQKEJTgc}K-ZrPmTI3(uVKadC4~($?-S z6>(DOcH1oMWO8d~@$x0_A|}0heR(-QX!3E!tXZ4-oFt-l7ODEpvpESFobG%AI(r$k z(QDs6yVn|vE^W;Y2d@=cXlh;lZVB7US)k)GRtBr9sH<=8TOgRLIK^6bZnKL=dogV^dSpgh`VQfon|A<_oE_vrM~ZeXLqn`}^ArqtsLNx6EgB z+!v3p0Zr$FhhRZ#kmk*s7qLB0_RE(qpe)xZtgZxJ4!?G$aXQ~xz5w5~(c6!`xVTt# z^PLHsHydAD8{M9EcGku|B`sz5z9sMHFFCbhqspY~+j66~9R#NlVa6+C zA#m;5HBcnV$jUx^`joY{w)R>ehx6X*@5h?i`6ECp>_IylckbGC=>C2AqMdU0iGd-$?x(7h zS;ese4ui=UrkWB|=ug396bpi86z0|OZv^kR1{$iKg@M%Ub2{Pp$q>+0;j|M^*b%@90GEyIxa`Ptbui!)k-Rz4{zDzaD_bP_br{O0E5 z*LQXri%UwLl(nzh<8?kzYw8>ywbc((^3(3^shs1Z_88Qyla`j=`m2GF*+N-a`P_*U z9lPuQ@4Hp3oh2wJ*c4S#ViG^wG<({DX>;bBxo-F40rS@ETeojt2af>BFz_*`Pd|P2 zT)iMDu)lvkZ=ZZ=i6>~)SYspOYm1hNda=6>96rn(y)7qEw$-5M-5tw{swyQtJ-)eC zrAe~w1}S-YeQVa}^ltt8`+NAWJ+0j0Ne>UTN@X{*^B?>C{JiP4S*F=xnY;{gwpAgS zYu7!klzn;Ux>`%dRh(_kh=_;{eU2_o?;?awZr-%1Y4+^dOOCN$Z4*}aQ-EZ_%&V(J zXPM=mvT9rLvT*~95(wp}X)aPh{Y_0{3mO%63p1pfP>;FLcp`Bm;7-*vL&z~Al zf`5Fh_wcv3x8eEd!-oP3YwN{ZwoEA%2?X73S5#aK>OcJZ`#bsDo11HrJG}h-_=JRn z76h$~aKG5)JzekM&6|=RKYj!)F%Ak6GBP%X8;06m>F(*_0l5IBz2YHumP@@QqvY{1 zUeI(*DbJw`8xjwLu8Z0g9eQ5YqJZJ|x3|fl`~xam_x*Up?K8uGv8t+S&Ek%(nKNfD z*_U>GU2Jn-AKz<d^smP%Vn^I2~{P>Uv>5qA;ya#oD4UCO)J&9h)drnkEvW3K09p|)5@=cSLO}PT%c>qwDgFKZefN}oZv}Ts-$lF%6Oqd{$l9B?NRs|hTk&~kXt3Jx# z-LYh0WxZ%M?dzQ`QSA-Y-}698j9<>iAs|2?C@3hxUD5Q-wYAY}l&?gC){>dbGR+nP ztv<41O9Y>}ZKVtErnNkm+Hb6-gQg(7E{PoPCZ+j4I+F@ToO zWna@_I1rt`xAnjQhl4wdpPzFrD>M5SUtKOIfBCC@-5*oqnL0{>lN5x66gM7|QcUVp z-4-SM+b=rw%JHD=XxGryzgCKcMul|0V&58~8|v!ay~1|em1!NZVJY)1_uGG({o8cW ze1Ai!)4zXKd!|5xUVE5*Xe4OvHy*(YYzxp(21=gRRpBXv$`Imc7*Sodp%9Ri`zd0NY`}f-~cJJSI>sSk? zu!pzz;dAHu{Ox`o$-4RH=V!~ZHxd)XpG?yVeYNt0e?h?qW8?qJr%x9@+{SzPpPYT2 z&Gx*zhwj~*7r8kta;ucGt!x}Kb*x-}KFv2;~OiZ-VSSsQ@U9a}R`@jPP7|B9p!)BxuM8r(QCD7x*0=M^ zU;E}56*Vg~VCtMXYjm~a_t{L<4&UZgeRo&sl4Z-1Or$ceu9|vv)7RJ6i=UhjWXQU< zCiAQF1J85)-QC<Wc?#$e);3P7oTU>ur`TMvMt60bMrz;m-eyI_?O=oM?Rjn6mZnW4O z_+0Sroo4N=rAwE7eB5u(BVMy_d9#b;>F7A)~yTTm%H%)m!X>NG*DezvFyxD<95(( zaBtqkT!^fEXJdUAQXL=2UcWc&LS#kW$r5LfN`XUaDjP(=EHlN%rC>!HI5~A%!7N{o z1Wj;1Eysz;8(b+R3JXPWfmyRB90&r<7dqW&VF6o8*r+4-4QhXt*!_O9x#`@o#wnxISsr-KJ_lcKh+SUGY-nv#(QxnuyHO;JI_4m5u<-JS3eQ#&+^EIzRKR!B|d3&2K z=+ujAH@D}@uUxs(>}Fh2lG5t%_1iq79$i#XQHhw_%*e=Clrt{?G!uC5p4?o&_PKLq z6B83z~tjWh?@+&x3|^E-r3AyDqTb zi^==rk&7=&K;v%S)Ac@rLNNQ9PT0DbpEtIp=jZ!ZRaxcl|7*t1FPCz0k?S1m^1fN7 z*;$R(j`d1c{{4DAchlbT`?b>zlaJj{S^L{is`ts0C!i=fH{afWZPZrKVS48I_x`NE ze|tkB^W$T^zvsW)o_~K{=<2YWTD$*C%=L4BdTQ#)w7 zTe5ul=Udt93qL$?-1qaD^rcIeRzz-A3ttz*nDFz{Q?r+XjG((cDt|tmo;zt;g~_*X z-#}L9-ZIgP+2JtPs#L6k($L+_4Z2}# zPcP`YtdQC7U%cRWvNiVmrI#gBGyI1Vs{rkI>HH>n)6!@I+|{ZR;br+P)ve026$Z{$iah+ zR;8~Bo}Lojv}x0goyF>3Utd3d@7_FNbw5z!p{BMr^V%B8va+(2w6vlJ2N-K=Ye5Mt zE-o%5EiGtekm{a2dl));d!Jrg8+~P6Z1nAUOBHpZwrJGV)%nae>;3=dxqZ&vT~p`T zRu_GK=DRKLE|F=3RR))vL#YOF16|z!j-@bjIGVJB$<-*d^-bqPH3l}b& zV^=$C$r6>An3#^0;~WcXw(8kR3t2kl_Fc~f%p z&7S@H?f325#}Kol0Cdo&fRxm)AN*&GPb3&HR6bv@e!c$XWxmNryF@`@D`#7^q4>Gq zxp}tUpmN~iBGy(eQKnB-EBNH?e1d`|P4m0F%$E_g!dcya-jcYzRUxax)+TU$Ey z#@RGbV|G=@%BIDOm1mphtLf_YZrEU;6}~R#>Nch&%a?Di`&+eX)257TYb2L?Pk;93 z=jT7aUatpj{#@cId}^xp@~w*BlMN&cBzQoVd%u0_3)*_Wx5_klnUA8PVxz2e*@T%h zJr}$6t_WDz^lfkU^>u>6!p%2xj^&sIFZB|wsj1mf`B@E=cu$_}%OH0cuc27m%RQ>okS2wp+t3p?6g@=ci z{`{1>bV^X|?{A_1{{36!JKKyaz;~8O;Bx=@VHYo6JazJ<=hv5)-KXkA27P^fUH|?! zzj-z*8Mfx!G+KRrb;!y^Qf4_TrUacje%$?c-p5BrLn9()6crT($y${Jq-~BYeRah% zbY+n1-VcYkR~0-w^y$lYC~SATqb9NH zZ}al@4&I!0Hpp#pAZY0J=g*%j!`4P=PCmKh+uPgA8AJsI7czj3WnOyyHK>=p^y$XH z#co+gIt0Uh?yLN~jOogspP#1&c^y4+M8iQhc2|h3Ws%FyojX^iot?F^jaPcrqoduc zi=Us_tG{16B`qMZz-zkR+M1f0Db3BzR%LHyNSS6$DJm%mQT3h{^7r@m z?ON5hx8;UDJk%QM3rBhZ#ZC%C1#~0?> zEf)Iq_4RNs&99$M>ucB7*NcjZE|rmyx$=Jh|8-M>vd+)5J$3Y`Yv{U|$kx`@m4?a3 zH00&wQ`6IzH#Ik3ZRHlfa%rje)VXu#zPh${_Nst|O{=1}uLF7D`MJ59t;{B?`-l1Y z`MsJN9(VE6jh)5mS67GYOUpMtcP}d1#B^m(<>x6uUUMx9ofu!OUcWDBe%-H?tK#?X zdv$4P_oojZ0?y7d4ffJ3eS6DPR6=5flzHBoRbgva#l*yHN&fI|_j@gWfB&n?{pC~h z^Vfq8!AnT3zP2WIcNk;TY}@>MHmoal?63&kTU83ud}@m3Vy~%MOL^G9(Np#J>-DK| z>%-0S?}d12mOePZxb*VND;F2LPn|!1{;I&mZBoT_ z(YCz1tMp=bE%BPBv+~x~?B!aatCl!9JBOB)eRF;v%&Bu!Slz}Z#x(z4jONlS=jK|A zE_ils?&?jOHihKntqbzXY&`wx>FKKro!dng@X1&#m=d(A?(eUxD=PxMG?%`*vT|`7 zuk^AhL0RA5-Q@}hUl+6S*1eaPm%o>eFw4Ca!ph33x%5-hZSnY;K+UBgN4rF)PMAEjYoIM)~y3;u1>8Ytx zgS?h5Tc)-6;)-Q{b5~6{#Vx_GHSsXp*XQ%=wH!d%dg=1ztFK%M5tWl$$Le1G?oJ>d zA0Nm~VL!LUTmgA#N)RYZdM&@a^2d*gtD922LpP`Srkc$T&C6T&>Ep*hW;UJxucxMN ze}8|!{_pOd%HpZBXRlrtyL(xW+u}00>H6_;d;k4<4Js{iZY+?Ik=e4zJoi=z=sen2 z=jK{-1tcaWYU%3wF5TTVYc*^wz>+044!jjMyGmXzS{1&2-ISnLH#R1NoB%q$f2NPx z)R{9^PB~>Q*Votg>T$n)*vF3_z1Ck}tsA{fW9cWUcXqYEG?q@uy1cCS)vc|ogI@iA zb^hXF_qE%mPnlA3|G=i`?Rl$GPEPV#x#z*Q+TY*2R_>7xS+{Q8t1mAvYiVkFzP-8G z{pHsx-4kzbZCzcq5R_%JE-mRSvwQOF*{aOT%QX4<`QPS;hlhW?mAzhb=_kFkhNvwW z6TLh=0~@&b`NOy8-3`*z)Li8~U2m1oOd~JNr9NttL76D~`ns(r>+0o}E?uhWaCV+; zwC2()D*_i!@mn4&t``$f{_f7jYnxdNLHdK2`2?n(o)&uZ=FL}^mU^GcFj+O%x_nhj z3k#^QytX!aYLHj2taaGcmBGs$PJPw+_3!t4(FJ`nmWzyxjYI$b`Z{(0{{2B-E3>Yy zS}CR*1xg>Ke}9#N^5?z!|Fxwb9yqSfK6YlNaj1t!N7VMbxlAE7HG6`*GM}eAI5bFE z6f6kxS~*QOdR3RG_Np&mN^)g4-&|v4WHcqH^6jqf?(S>%m|kr@Z+Ck7`-RT!TKf9> zOQ!^V{P^+I#fyQUn2nP1(wsVV>QWn9+p9-9g|}{d`+EKUFt4Y7GjeZkS{mfF^55Uz zt3P}wSQ>JVKdJfPf^E6Czg_qpax9`t{nEbL-z&n_g62LJM{Z8r^W#zXjoY`2-`+BH z>zDI=er|5#o&_d^Sh8z3q_g~$n zvwiKmRI}Mz>tBDZT3z4X-v0RUW9N&DTz|e?J|A?L=5hJ@l#`QGZ<#Gxym)8bUn}P} zo{M?=@9$pA%+5Dq@?_`PX1SnC*yP^5d-vwO z{_bqJ8#_BY6BCnx1doV*+?++O-IFFxoR}|vcm13CKOfttg&pscEi5ct=rK|0``zRJ zRp$D+=j7;^W?fkjwl<1|o!vO=ipG~J+wJ-HpY@vGd(bK#r(kU@J=gE})6>%pXP^D~ zYU<6LwBO&}T3A_aN;xT1_y2GC0kf~G{N`G*u(4%*J$3Xb=y+?86sWblzurFm+?I)k5;}=O-$= z|9ISQ588j4dU{&_rrq`_`}5Z{-qwwEceFV*mMeXXaQ2 zN82kZGUn&!_qc)j6Nio-ZC&i%zp3_j*_kxs!ootG$W1M?&GU;sJaF_;3w9LyI5W{Q z?C$RJY9kL2NAY4a_gFBP4;yR*3c?d|Qx2?s!@wKHsC4>dM20&VwR8@*l4*7k1JiLkhu znfCY1^X`Cyn2qhx^XJExcurwdpA*9u?PvwQdMtDW*P zGCl3>?8fQmp1ioYIOpD;na|G7o;+z%Q&1PEqm+N&u20_n+=GM7n!(F@u5Qy&|8Q5l zW~qpKzueVh%OrT%-afhZ`fFHYP*IW5&6_vh+}_?_`}Gy3`nY@oH+y3N9N>NeKmQCzzY?n4ByRTI& zEiV3jdXqQ{KR^Gys@J-Gveuwuxz?>)Cu3hX=hM^Ei>D<0`}6bGzm*{?g;GyVdAPXW z?$MQ%!JyOWP4e%7jv_EJHum)JxNyq0;zI%xGxOSQsW;odzuT_t-uEYU@2={4Rdsdd zjN2bReOi=$e%`H*RTrvKEw4>WE-v4jb$J=DYnMpkDgpIloToh@$n@xv_B>|@L4 z*Lfu+DLp>k&z^8^#)CY@JgGhSXxT% zjXU4S%nmvt|J%23JW?hv^v_p+EC8MDHp?{I!^h{!v90&kpWPgzUiIb0!E0-yJv}`W zudj=BadQjWTUEO6@3-h}`S<;H7Cqgv@eNxu{YzCqP{8p{Q?*UTv?DFJ&bKK^D?bL|#WwXvDwJKGF2ezBV2_MuOEv#zeX zxT`e#ZLzw#`kgy>wluJQVw)(gANQwzTHx}_nZKXE`%_(26|}@-VomCHnfbp>&#<~K zzx?pgBd3s%DOaD%*Zoj5&AyiM>&wfq`MY=R0tLja?fK__et!P)`g-u~hzSM(I|>p( z69658%KwV0r&X1HpW+t2E=JMJY?@x|u8jGAw^yZ_NX<0QpBE|sS{JGCK5^@Y4I64+ z9{Bru>eGn(>*H?TzWwlyOl<7`kDF{> z>l_EQ9m4n>nf{krZ8~wnL(O;A5$pGRoLjj>HRAW#fG(7AadEk@GFW}lqD5O?9+?s( zq8lZ$H|{)WT~#xU8|CWZ!Lf4X$}KrJCvCr1#eE_>`_SRTpSL#hdspck6?Xsoe|i3UQ0@HH>7Mod zN2@|tYea5R(ck+;2sGy2)G=X#0I1zJcgD+?FMmpLpJu(b$uB2Ir}p=^qsNc8i^ta( z#?PA)6y}%#T4G!K%S75d?~0wbudk|!i3mSGKS(cY)U?|tH8nLEuB?d^uCA^IE%Z=W zU;gUZ+1V|vt(iY}eV-N{5+WjPmZM;5I`zYc55M2--~GRS`>xX0pC0$yPntWo_hd@a z>1n!A1x4kOzG}iVXU@F!{Y={C(EMep|If}gS2r^=i@&M++U{JXlKhqW)u2WfXl3M? zGd`2^gs zyLowccLi?A2yEk*pQrEdrMWuSJpbOD+2;A5u7<~F&R@E0S?6GUtu1i}ogEwv3v}N1n6r+c)UU@Bc>jfP| z-PzgcaBt`AsZ)>6wJtw#?%cJ1yKn!k()k};8$M2`f`c@{f&?)+{$@m|Ga-m*709KXK0x-xvd zTtiu+Zs;nJmoHy_d3~KRSEw><1Z~mSTm5}m?(J(%nH#a{uRU5Q+8+0w# zHSd~ohpPO&tAdyFfo^a((7+8-wJly{C%Vqz_Jr#y)qqi^1yu1uFOueu6_rIqbK`RUR`1nk+u6R@(lbiT7 zX6N>OmX?-=Wp5(f`eZykJUE2a{a8NTGHgER&?%&9QTNAU;lhPiRtC4Xw6N^ivj=qZ zPVh3Hg+)(KnPgmO02%r?wJPlI_HUo=9Wc_?KK&{WRIXWCT9&-Hzz8}HO;|?8XMNn> zisy67LFcTMm6e4(|0y0{42Z+?7y+|$EjLD}0| ze||on|Ks=X;zvg~ca^_ixA)?b`2BS`x3+X{*gP`8j&;MuXto8KtK&Ntnc9f=X0$s||>vnFg_3`)n|NFIaiLMA<&Ntz^_qP`p7qhUi z1gwcL%(YgV%*oHsFQyX#I+*VBTjkR>t*NJ`Y@GG{GH6dq&dp7%?(XhNN=jRPp5l|W za(Q^Dm6L-5bo~8}UAuzT#aJr5f9s;^HRZtd>(lSti2WksO!{Y{`He4EqH2Q7BveVbJG_!#e@!-p;F{#fMY zz=)PPo6oG^84Fc6?JuC5s@kRd5)7$9=W%-8Z=$A{(A7XoSQYt z%ll-l+vd)dovIb8q^8EU_+p0XbD1Y!7rei{y?>Ew_oW?$$+>r)^h%q9hH3ly`aq$S zo}SJpZ|74}V%%>b%;P1$fOY-iC^ z3DYbQ=XSoWNA>FSo<4iFss4Z6sVSP1^L5q)b%Cz!$y*)N_wTW0$~NLIFY`gHN7-qYC<9v*7-nP(GO-C$yFK7FordC}Kbp}GZImOOs+ zXwh9ge{b*P=jY~XEX}yFVWHXm{G1$}tEc5pe9FCQ zuB>qM^Xr@Ty-QU4p84JVZx_y2|35orm*U4AzVq#3LBp^!ebkmt3E~#l3t?+Mm=)EZ zeiAeya4{of<;s<;bEl@?5|6K0xM$CvEkEyETOXfqI`zcnV@A2*F)=ZY=}&ittdFxb z&AVgq_WifFw^xhlMu{Z!9r=H0S829s#fJw?=Z@XqRQI>)>60f*V#RfXZ$~bBxmmTc z!rkWUukY{Af4^Vv|M}V3l`%VwPEXT){Q127^?PX_*F+b)KNhC6ob$XI`0xWE5oijtMptSeVSKqE=u>*DvH+n9XZK&rQ;t?l3S@L!!xQ)kUOHPbkK%XJGo-EZ&j zukZa>6LVdFQwKVOdm{KDcy<>&&-+Mz+Prz^%hToH=2FK#!a9WHnzU6_pk~S*t%!4^*GN z{AyZw?%%tqk4`>&{knVZTvYmT% ztVOg!I_}(w`Sa%wmsRwC3r?NZ3YV$c;meAio^rVN`%E@yEyTK~+1J-ioIQKB@01)) zi?3C-FJHb)NlVKTUT|Mu;_RtYk8W+vuBfg~Hjt1jFFfMBX-|LM*;%F_mx2!H`+BH| z=kA?5TQV2*xGnzX_W*RA`m0x~e8cMZS525PqvK}IvCEe~&)4Xy;Bf60dkR`-@?iP= zx>MipeSPvI<e0SY_4&32v(LutD&h3^KfnBy=ac8H zPb>C*I;H*d+~qZEbiP#CYHDiU+N2%6Zo%c3pT4F%fAVC(<(HsNT3%kB!@VW1s`lF5 z=bs{Np10uo>%#K#`k13t37>*JI*uR7F$-Sk#CmF)Zuk88@>f@dDjOOGR`WhipI_Uy zdbRevdGl`VUi^OVgg<{ipRcH{4&I&@`{(ap%gRqr?Bn=8W`H(IE?=%5x;pIW;ls|= zz4PbJmGuH$Z=w;m$0GIAl*HqGvJU^M3@Sb(fO@hwH>JM3yZd|X{cN3iIkCITmZqGX z6tW@!G^_(UkMGIVW?Ad92k+kbot&had2`d!Z@bR!ehpgc#KFO_AZ~9JsH@v6Z7$|v zc_e=Gmbc&M%}-2BEO~XM^TC4zP~q+6#Z^~V$HKz$;PGSUzrVhE`ujis^768XZq$^- z!)*^=zxKYk$hGqK+wGt!aLuSK8gg=Spxw47cJC{BeXX}kR6A%_N#xP=W_^+}8~J9mO6_NT|!&CI;KY~l6SH#enngVy_;pJ)5#=H~XZv(1xDq&z)6A0F$K1__*- zYYp1fy((<2S4@n|)6>(_udRt>I5W$%`|j@Y?DaKst;_Xxm%rCL@hDqmgUBO8L#f^? zYa%Cu)~FXf_2OY;e);m{t+(eFEKuMQ)jD!vq4UQtUqC}ix5}pmfi~Hb?f&0`}I0zPsPN? z$NQQ8Uw^$Z>#7#$F3W=n2kzaQ$0e%u;r06cViA=`4s-JHJ-f0p_{@BJ`R0QM=319G z>`^pqY-|Lj2sPhX7j_gruE}+Da$>6f_C`@ls|&P&YJHq7Xno4d%geb}Sv<1SX-qxd zC(Fst584OuE8E%}-0ro-##bwaKGLj~Fs8E^7T&`SHSjj$Z z`R>_fxvP5D?uxhFu;=RWAby?u{oUQldU|~uHW=i_R#*Q%KC3)YdRp>|DM=q59Q^a; zvj3O2x5dT9r~kgjcw#ksxxZ^!d9*>zkAk(!cjw&Pl#-fi`%I{VJ<)QRy8pZ_Ro>J6 zmR~-0!};EgQ|IPdFTVbI>x01Mm!D=|pF3v`!@ASAl6@Kj=sb)5r+3dC zGSfN!>E3Rys=fDKZ3Z0xKPBnCRuIiu@ zYYP-}JT#Za`kb3Stf^q)Zu|{WjOvM!P2^Db@b^vXM*2+1c4}rq7!A{r}{3 z8Y@DkCC`{V*}1C9Dtvw1(wd*2>UYjdU3d6sx45vFSlj;n`$H2XrKC3^V zT#9lx_vSiIRC0ay+hu?1zTgH>t2@5#XRBT9uZ+{1Hf`eI;yQHm=1kM)6{04>*95x96o$V#E~^Yd6gNljZ7x>`t5@?^LE zz7y~6?$!)jBhlH}dFw&$$CO>x8%hcb6>V(h2r9dQuEqteWlRX=2Mq|Gn`>=Z|8LK? zCF@V7T+-7!+|Hl=^3u|l*4B$_qs`aF?e(gtu#mMX(P+5Tx&L&IS$3|YiwnzSb^m3> z&(BTK3hj#BU3PI_ZMDMti1&AQPj_r)17+x_Z8@IL&&}PM8W|ZW(d(w>GvmM%&0x?j zq0rS~ssI1|{a(x1tN|KxVE9?b64kfZ_4l{8lD1VQ^XAP9%iX8yvE>X`!q3~6#6ZKC zr;qhWIybZNW?Wez2s%Oa&(F^#@9)iZ>y@%SCiKs??c`*2|GGKSH@4+UgE}7>7akPm zxpk;F1$DLYN`qzznwpwG=S}|l`Wkc!`>xX0LPA1K>(}cuq@J3xFzINQ&n%NpMrO8* zOi%;kSg-Wsr%zpv_sMETZcR1_2%+$Iy8JKK1rvq}{;G&(k?pU=wm>XkC(+R*YSE^V`9 zety1`X;w;U-7Fuqtn2H10|EpXzP`G;IAUXximK|xoyF-|AuAl3*?2WVSBbbSp7`NI z!Ja*P0=z)EP|75uVe@8VwaJ|g4Gf149s2O;)1_O}Zrq5dsjYo^Vc}t6!~HA$Y@fON z9PgL!pFLap@$vrpIkN@9tz=f8W8^Pyq~c1+p>Nb1E-Pl%%p)CwF7EE)C1x!Z8IOf8 zj9J&#oLm*Un#)Ss$!3Ce`8&|4x!vC{!Dcx(9RC0N+u7Bn^&*E;v8Cdi?f1r|0{)w4 z%#Z-h>_kLFIHtRT?(+e4Q)bOPn+9IG3%dD<0lwx{iQ+Y{PtIC9buao*#K6F}&C|s( zgo6PzSM&1n^1`B`MU|hQfsP-`zi%fbEPV3h$%6+EHm04Om1rWxZME8oLvdb!P=uW$ zpNz$UUTO0SufMjmv^;qBEbVjdpKrJGS=iVfy?nW{R!m+VbYS(>)#3FoN`ixeKxek! zym?bZFJ=a4jb46!ezy+uglW@`{rmg-TujcKZ5e z1wFk!zqwY0PfiGCU0dUsl%&)xrkiwrp6#A*x3WR!d3#OO`uKc)eb9;k#cjE_L49A) zReEbL6&4pS2Ccmh0j>P?XWA+Hj|H@eApP7N(5kU(YokA(*57}lMmlzP*;#P`pLsSj zHzpsq3)o9*zNrCpeu1w($nn& zq}K2G#P#?0_x+UE0>6`D*PftP9I1HYio}hJr+j4LJdkY%0`&V=`JigX- zd){3+%lZDZWv$CL*7J<`{&M` z1GSSuE%m9pygO*d~ z<>{4`m4Oy{-rAbIIq$9&!@8KAhh`WipEz~u(Cyo^BR8iNzPO;c@7F8spr9bo08sw@ zeI+k19o2gO{ob^5XU;6~n5g6s_W*QdVTqOO=VxaRU%fiD@bNLwq1HiN`uqP(nlnd6 z_x-zf@Amxv_gjLeZNJa`ix&f5C&p~ck+d#*qhM`4`{m{3!MjQ_lai7^=V*%S$AKDH zD^_T1+PoQ5c^y1>5Y*V#So-117tm-k=8Ytde*XpqQBZI& zDA9u^_CVN6Q%Ol_hG8-rBO{|u)E18X{QR&r5s6dlva+=L`ualF$IW$a=VScv`Mmw* zHIc?|w{7a~=8muZD!Mvst&*Nz-(vUvNs}fy`S|c~i|akPoxlI-WPdwFJ3G7hfBE7UPDulBEbQ!}`?QqZ?V4%^PRiUd3ii?v!K0114o~?8PC?t0lrGoB3 zZf|E_9kzCp*X?`v>c*qRgB>-W0tulpOZ zEl2X=#fwLd91)P0KmUIJ|8w(ftK~9vUQJfh)9Xt*+V$|^!@~PdtM<+_PCsW*^(6ze zoM7={<>X^M7pM8pFkqbPcYIao>L+141e`cHb>^#-m6d^}jUOIv|NL}%{HJTt`I&pm zw8PdsI5ANw%AtkFN|`%C&RnP6kj}`TF|$%@rS$^y2sVq@}5WmSPwf2rRzXv3av` z?C!GE-{0PbWxg)4N=i-!UE&QoMMF|j@|J`*J3D*W+Nh)ZYJY>)jd)B{I&$O)=&Zr+ zZf=Ix*ViwP+go+y*fAjqi5dFu-4;)@t^Ot;C+C-vqH=n={_(SCd#|nzzr3q7J1IHY zP=d$B-M#qjEz>=F_kR5H<;dyN+;javXVQNA_U*;jsxA>t&}yInufQDzi41GE>)P7R zHBLYG;Mp^f7eiNtBtAaY3-SsZuhfFeFE6|-F|&Tg>bv}M=J9{)r)e(*6({0)F$tHK z`A*Re=VMqZBCO_k>039Z z_%rQ|^PjBdyCP<%QR?YwtO{mk(;S=GK&QUWGRx(1xVb46bpP`9yt|K{ot=G4_xY45 zBB1kamZnR-&zLxCR@dgu#$R7we;)t;mpEuy(lObnrtbN5zdHNvesx@2>>j+_PnKbI z^d*LM>(<@bRjM6-FZlT$Q<86x&n7#gRYSy2D~A86sj!De>Q>6f5^PHz1@pc_s= zQ){g&q5-Uiw}pLSMCckjB`-BC-|Uw*kFcDLE-X}XK+{{EVx5y;fwJza0&#EGEG zIU4q`m)yB~cW2dCt?>16N6($>yS+U>`!`3zj}H%h=2}gy`uYlVrHhl3)0TOUW}D|v znmF-b`Tg4EYvtwSKtrrs6n;d4<{!e=#hiS3dHKqKg--jPTFvb~D z-Mf<3WjXsCE`YB5IMfO{5>xWgqenOPR+}d#CNkVw`yq03+Q+BUmleO?Zhv`yzrCQKpp0Ej#O|~2o;`Ex6jBA96Bb%^ zyiay_{=Ru-)8w^5D|XFv9>#fT%E-uorcOYm(wP~CKYss?UORc_%+9#=+odjRw+KA? z`T53rril|Ly12R7y*q0&rK6*x>70|@cfX6tX0uP8Im7a)$=;ixmn_M!og%6o_T;j^ed@I}kztv$&!)XyC~-QyYH!@_ zcRxQrzqz|y-#G2ehEvPq)~jo4d;hLJ+9e8_gS>L(O3hF6*=IpnR7}_F=clKh-rk@z zrxUv?r25tGI@|bZUw(gm?e5{hvD|Mi=*q)0vrN6Yb#(7rm%o!)>ODQ}!GXr8^;?3v z=FE}F{k?DBKG34Ho*o_^w&rgIll_)I?zjJ^U||vA9jy8Fz-4J$-dESwo^D`d23@mf zHMg&knSIifDMvtMtaSdK#L)k2{Bmc$yu3WqBvUB)SkJ>Fox&~c?Vy>&wDa@MHZU^J zTban@#GxoRr$pbzF(xMFlkZ>Sx<3_GBSv|$@~8QtG>2AzJKmqSvxyB7It=F0Re~m`)Y4)NMvSfZnUfY z72&J8WXh#&E3dx>jiJu8sWbxJ6uke>CvHJOK~R5nkqaki^z6?f3ovdMA=N6k95oUQAi4{mN2AP_Xf025A2&>)fgApb0C`$um0& zA2U>ZK5Nd&&Aqtv^)-ikxt`tvsod;*G70zgRO&=+IidE_@!p@AUMp+1`^lTV-??+= z3?DTa8JQdV>+M1FS(E+k7(q%ctgMU*9yqN2`W3X1P)Xg^R#shox%wvYcjx9>hw;np z{rzrtkG%cAiI+@fpIx$S8K{XbBO~+gTDg&t(S?^KKkG6;j@&}VpHsNFxi8OqQFrIhpFeBzlu;DR#|kx?b$0?yaC5 zlt+{+*5$YE|M_h8ny9T^zrMcq?q6Dw<#|`siR0svigndGx}cRcTeGi&d$%U>@%Nj~ zH3>L%r1zXmIh0^vbD_M%YnL_HB`v%**S8;n%<8?R;=as3_6OTme48U0IhBEdfx*+& K&t;ucLK6U0%prOJ literal 0 HcmV?d00001 diff --git a/src/docs/gfx/Vulnerability-Type-Change-by-Year-Legend.png b/src/docs/gfx/Vulnerability-Type-Change-by-Year-Legend.png new file mode 100644 index 0000000000000000000000000000000000000000..421bfb9b46e41b9a8e794d41584133cf4d79610e GIT binary patch literal 11845 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 Yz5M?1Q?ouXFfcH9y85}Sb4q9e0AyEsqW}N^ literal 0 HcmV?d00001 diff --git a/src/docs/gfx/Vulnerability-Type-Change-by-Year.png b/src/docs/gfx/Vulnerability-Type-Change-by-Year.png new file mode 100644 index 0000000000000000000000000000000000000000..c4e0a3370122df5f79c700015d9115d1df831b78 GIT binary patch literal 71609 zcmeAS@N?(olHy`uVBq!ia0y~yVAWz^U}EK9V_;yo`tk5(1_lPUByV>YhW{YAVDIwD z3=9mM1s;*b3=G`DAk4@xYmNj10|R@Br>`sfLkF!Z|>Hw zdHSOE{`d1-O+Gh6eL|i7hK>eLSc5`9G`g^Qxc!oA;etBH@|h{P|DzGS_^p`Dyd@!^6YvOblSqp#8;c z8kohva3EAUfD^)ga7u6m3xrwllp_SHct;V779&J7#*%3&gvGG#&h1F30*2X7{(mVy zzjW@4^Z#}qkE?(6@NheSWFAzZd*#F5_3vVC?fiYd{@;z)OX`>*5;%;NY4n1~%d9@1 zEP4C#8aX-9ZQQMKi;D6u+D!N^yz<|o^pu{78+C0{Z=T+7-I%t1@0t_6Q@;1VDydX4 z*Sn%`9h9PTGcEMKMCD^I=XedHX>%^Vvh%E!JNdhK|AP5;3)d%YcUo%l?TLi)af_nA zF5PJsReiN9pP0OLn&BLO(!X~^!Gfir$1nBTi5)@nOsx#(eC6}sA5;Enm)}>L3+|6%e6O#}_V%^= z(>HndX6Mwio9eEYt_qHyrgD1IQlrpoZ{EKC{iQql>(vao{wdYPS7VoN%MM+(uWg%s zRbSbHpPILHn_6FO3%wmSD=N5kam?LUeagpcdlt^hifM~7S$k_+X!Lp0BD3l9Q*BGH zZPSy01zpay&{I+VmrGPu-`O1fVbjfh$2OYy^S^Psb12}f>3ij+$?@M-o%x}xy0CJM z<+|H*Rqw5eU0g8j)cWA3Z*Ly6{W6#B^t6rFzQ*o6b}OPz?D@@Wl}gYQ($KrBXyLV9 z(TashyF4^G_JhYsy&TdNtExS)mdDFAcYN3Gn^tV| zAms5j=B1^}mwA}-Rh?D#Pu%6>ZojFf`>WlSdFi=GreD0})V(T9Znx2~6Z1o|x_rJW zoZOVcySMG`i)#xO%BS2EpY8PK$m_eEx7)AwygrrXEgSiChvmGbclQO}l>FKESK{%u zlsyg?D;6dRt~h<2@tpFh^M7Q_z803k^2`H|+?gx6xwqb}a*tbkW#yI?Y$q$YeAc>N z)XSHXdU{mByrgvDLNDtpDOa-RU5l%wQO?F#H|bO*c~puaizWX=zD2c)XOXkoml!Q zDc_&rbf7@wDzT|mJH4I-M`mvL^KYT>>JPzZ4;|+zfBSpcqKVS-b}h$xkAG_aC$jR? zx=A?;SNJ_ye~VXbYR+?h{~3=tb;3Q(rcXcqsb`|$zGa79jw(&F%o4fXQ=MVbzxV1N zS=X7XZ|Y3iyYkPH=LJ`)@^W5h*@8=$KM$Z~g~ciE`~QodUpjZU{@>^0ap~@=kbK>s z?Y=+=!aOh)d(m_698>|rjVJE^&g?JN{9EwK9HOT|`*j4a4zn)?0S zUF%$Ny~qzt-;WO#fH^(&L}@Lew*?JMi{?pk>LbRepyX zH|<(=bv;-7ou4f#FVEhuo@)*%6d$O)EOtFMDObkw*ohsD$Bt&5j@ljYLRITKOWUnV zh5V4L8*4$uSRvEWuN#){6+YEF(R|&vEssw~C?EHqQhvPmv&dKftljIUAPS{fiL-Zs z%c9Wpg-pJy9-fkas>>I`m-TF-jeg)fe~~wOdz6oNPMIArZ||PZ=RWIuPI_lw(JK!r zh8t!dl^dJ4>A$zSx>7&e|9|ZDjEAAKe7t$p zzi!X{+k0K=?Bj`D2@7}SUfniz*|m^|8ue2m_bhxD;A^VqtUD_#_x7r_&!sHG|4ZZ- zF1R$w`cz0Lx2or=O?g*LR@=ueSL;pQJ6=W+G_w=SHOeb0TC>bz;yAA1f(YVG%%x?TOsTWj8Fx|`#aZ%@r$ zqg`LN-TLe8O(`=2Hb*X47n3n>nb+lzmpRKKXRW^b`N;K`_rJ^UIpl8wj;8~@m&Bzi z`(%<&OPX@2Z=9q1`sh0&-rJmMtJ>e5?kyD6y~WI1wyG;GZV#Va-n;i-zJ8B?Jy6If44oS8ton*|cYUIrGw2*1Y$8QeWlV zzwh~Vd+u+I*{^OjUfOke$-0oK+-H^iyFFJXy?LeeJ@nqc!zI7mw$9X=?LS3Dxz}yA z{l|YDpN;+PSAW0Zc3*1WLi7D67FvOQ%3wb6E!(FyuTXQH&AIJ$Gx_v9rA)pw>-?T` zxUg)6>)lnav(BywS)5tBOSbFy)%yi!cdT2p?ap+=HIVXb@6jDPlKKHAaVsKNUVRF> zD{8;{w)~1MwykALSK0o&=HCA5!(2#~YnYvpp?$S^VsiAPk0LXox);U9=1dW9zVo4} zj4x`P+slYDyWop+i~llT*U=A5dOAxdOILWWwdmxHTKa)cWa7&+yr-VEvaJcYT{6kg zefjG6Me0fJseyVTySK?4pZa>;zaO2am|y7XYd2O;O*^~u`u*~=MN?CXD=T%*OGrM> zw(<$lk&{)}yYbzH47uvng%({#;hQ5%o;IFZE@xNsOUqC{-V$t6h{ePQ_GoPFPdpO_z+po9wKIs{u zX-5~=)SjO9*lN=+N56sxDJr^`_uJQgPrbYMyQb~u!?2b@!|4y()DtHiHhA;ze9Ra_I_ZdW!I#S|2AbVHaXeP6Jq!MU;nGQ_rJ-4T;rWz+xI0O z;*tkKd)}U$^G)IF+FiWQkKF%xp(y<6?D#$Br6C0nLrjzU1L>(#)e;vaedk!}SZjZx z)A*@$pV6+*e~y=Y|9bz@-Rt&Ce0E)U?UTr{jgJmo zEZlg?TE5D&JpRA#-TDt&yP@sJ4@a`@{rRyp>oGd7-zdunlEMTzOWUeRw$ zpFMWS+z>F6?bd|9zRzfp$C7)G3!gn5b@awn&O)!dKQDMsTJo#+`j@j0U+>X{Xt*94 zui0yBdF+H?UyS|5MUrx{-8Pne%Et?z^c$_!UwK|s(tBHETyac%VbsdY2Vc9TeLXH6 z{(E!z@0f|wD_^L7ZBDJlA@T;KiEBd5Rne)na5U$OJgyL|1BVc%~}o44uB)BAHB zHeZjcyYjB{vu#>U_#ck^(gj5s+M=ne9Vfm0#l;j~_u%xFsjKoVHvYT!<^AvZwNvFQ zz;0{EUU|_*PV@V-RlEIiudni{<;~q+y_Q34)$Op{=*%o%(Y{aa2R*Dqu5HP>9hPf3 zdHQj#?`+C%10pZ4d_ArH)fM|P<~gZ1gJx=F`$>G8_%?6G>HoiLXI)?Y`&px%(DSTa zezDP6pB|RWM0G!Yw)^W3y_>pxA={!&uUh)7Y+mHRq$syz2k%suTb5 zf<0dlTk5;`Am@{a=(x?`;y#aqPcppkmixxV`vTsq3*Hjz+WoCXFtW%kx$=`{`<>*SG?r^!PUDP zp@mHhJE+O2==o%}U$e^XUX!`UC#6nFDc-s`;@+0)3f_Jep&L8obCaTLwJ%LlIUQ&a zw?g8*<<08%rJiLQ0;aa!QtNwpEcxf=h^Kic=dHNXR%U)KReDT_;R;XYoq?M9M*9LCPo4f!HZ8&W zyv^S=_mZV+x4!@KOg#R2@%#T8-H<}KK{ul4_|jX3+J!P@A@dF`b}o%eg*7^hT^4*2 ziM#Q0hYGAueV|hL>u-^7%j)Z2u08*9=JNTefe=dzR@;7mvs-VeJk!+WCC`6O|MGIT z{_A&p{a?2&EcZ|4dNYG!R8!z`)%s~^_J7i z?)^S~Cwcw+`URWxP5InU-Ey3ys_r#)>BKpEkFVojDr6pFc4L#u$s?y$g*2*ued=;i zBY1bT`IL*#KAkQD*?unnHy_BeQ`hfZ`hDN;%zI&A;~DNm#s9lL-*S4HA6Lk{|A|)H z)@NQ^@!G01cj1ni8A0FL-y2Wdv@H5wxPJ4LSKhwIrY>3(c>77$?9OGW`*;57y7N`b2h3OWDblyx1!HO1_5tx{QnOZ2lX1f-142 z($Ly-PV@FykJYs+H@-h{qw(20pUe#TLjQ#mvr}aJKkfk~NiY>$8s$n~egb-f)IR?Mn+? zzB4!T1y}Fkh~(`-za(P!eLN;TeOJN%Z`Sq;>OcN2|N6=Pr|I8n`JayWR6u4OSi52K z=Fcg9d)7};>%6pSa>~gfCttCZZp#9m9Meio$(-=i#q0AVnD?>J4|AMj~^|J46CBP!K1UwmE9=6yd^ ze{dLDc0Z+Aap-cb0+kf@>?C0C6-*)_Je`a$v$u8>L&RC5eE#Fl? zKN;6gx>dPg#jI6c)kod8yLfbLRwk#$;`I_nGVN?(+9d{(raGurAzkLYnvBJb9ML zP2v29j2b6hxVGb6%Fn(x`$E-EPPS6=>q_rLYu z{QA#rWo2rA{6S-N3taoTHzVrwI(~9+!A8JpR)Fq zXyP)f?}y*7P8<=srZm8YFrkGecn znxL!89K8FnUD_+@=i9#Ddbrif{-`ax9&{M{IECtL0(y#T7Ox@ zvhtYkpX_XZ`%m1QUzKcLdqOfVp6ov}^`FSQH*aDbUX|Zp@iJ_+@fEF4e%sPhRtDS6 z)W}!;I``JsNQ>IFi{3ol;WkbB?D|Ciy^)XBzLIR+98xz|D}U+2 z_a+hB&R8`h?k?)xy7AA29ozQ2uX!{7wr6%}#<{aGk;TWp?r*4^_a$dr<+_(Q?(^=6 z@>`H1b81eit?!x=n+&s)p{c@W&$?W0zW8`yU?2}y?ein$MZ3S=dROT+?aqnN-5OV8 zo97=b<`3bEUFrGYgoN^Ams4|QKHI3wyY|$kF!jtAMymTJ8oF(hUd<77)+u@uvv2ym zPZuUWZj0Kn`SI!X7q&;gpY;8p`~;P||8<~+MnN#7HlHIQ{W?T+@16?DKUSOOz11?9 zyK39?x9VKKJ8d3ob{vZeIsMtpY^wa0x3$t=Ta(Hq>kW^EZpqj_@Ak4^$ItG3_sh8V zrOoq~EXG$4pFIEU%K5KXvUl(IRrfQ^5^fFlo*Y?X@!;llt!npm#h% zisv-x6M5ar7^c(;eGA z|Jvo{xnIc_pDndXF4^Z?+3UhCv)jeh>-L^fxw0a|^v1?dT2uFD%GK`O>3ceKPDPZ6 za;tmp={MG2rz!s~ytn$|%lXfXa<=7seO2WdKKpO2ta@4ugo7VkH|Csy7%F6oEesI%e z$4?#mz@+C=%dh4YtXVBKOPt*)b=vAct7&u3hm=fus_L~SX0q$r)Q*+GhLWp43Avv8 z#4v4BB>Q}}t-k7#%CAp+dVlTQj)2SCvS!CDPJR`C;`j%?Gr5m*S6ljvzh;P7o@5mG z)?dVOQqS@OSE5ATX5Hxhlr%v)@1AU>;AfkcH|P9_;orkA_3QG|#rZqu?am4ByLI=# zlfw5;!d{oo`u96*@7w&3FPppF7ko0b{r<1tYtlP=1xRIm;OrBvlVV-3T=qrQ9oC-_ zvT5$&g+`})O}}L=jZ}_YHz`L?zyGPEa&nDtduP|tS6^N)ylC?+?7m@%Nb0(@%^u&D zeQKVYTYX>c_rAp$PmZ9my0*M^<{l7d|vq_rLW#h-R`>W`{u_dIE^hQe|+Wg?(Ma27pmlre-qg`w`-UE z&$)Ms_HKK-f3-Jnox*o17OnYJKR!G>eEWm;(|dcXZ{57P^Gn_SPg}Q}{EW8O^88h8 zUqAi+TTnV?c+hEhrP%eO)4M$ZQa5x?JYJJ(88)T$)U$~vem=fm50+fd{_V@=s{Y(BSNC0>e(%?u zd6mB+#UKqY2J?IWzs|gGF}-Zx`=j!<->e!>72|5h&3<2Q_tX6R(z%nFrphcU?gO_F z3m5P~EG+P1(K>(eAZ!eP;kIHx<+*v)|7ATd-L0OV1Z!LB3a+q8FQ4~+253xj_xU8S z=7!T(!@ZLI`wWYEl&|}5$zX$YJquHMCO%d_wVU~?l7HXh6NNHA7yF#uP#ySGWy0=V z&nz0%t`_+GT<9oU8$VyWNLh4$yw=B_9z&yTOPA|Z|14L(@Mi1u@W*kn=5F_PT-xCK zJ3Y4l>y9efefkosD?Yb;e0NP(MAG}*ih%vMOH}mZ{#L)gA>-aBt#MLHc5BnCqTWND zs~m%@!(SZjKX&_R*WQ57-+0ci(x0;C_FguQka?S}&+lJSUU$3v#p(RoxcHy9qIEdH ze%YbY`|P8~PV?})rCGbfQeS0fgeMw-`l+vWxpA+*loGYBDd}{T>xO{4+p=zZ1!u1+ zn6i4ZNl0+->45HKp|`hXz250|?%Ahizdi4*na{rVi@m;b9{VqkIjdhVQ=S`+Vb7lyZ+i8U6Y@?r(Jq{Y5Z`S91LkuUbGQLUSJ-&yr3>X!I?-vevRfe2GZ`___sXAD=1bj| zyq;{VY+qu!W$w0n4H>_sj$g9T{l=>By)V~R>NMw+9_N|P!Z{%#%})0t?`xKugkJD5 znb%{wlG#@{eA>BBYjk!_TwNCU%Bn?+GbFB|^w;;h*MIs!^1u$6*vlCOOqS}$7_38G z_4VV})cV(?@8)M4ApP#tV_ekxMO3}8}>Fi#w{d^~8$$XjRKJU<$ ziyKzf-2QdDuR8u!`QkqbbwAs_{eQ9NTC%K0DbrFfllc`^XX^q^x6D!tvbwz`dt>;_ zA4M|Ck9+y+^*6o05`C^wA#44v6{a_uZ!N3elb(8W)790l*Z&h$4XAXShdgqi*AA%^ zgIO-{ZCx?_e$<@Em2Q`#4lk>!UA)Qo)7;XEGm}0txjt^~a$TSo&wiJ0+W$Vg$!({d zqwje1o7v~Bs*mH_zTSA<@xbr8%uCm<%F(%R_xHt|ioL6gZXTAuZ*CTSa8FS5(od!` za?PnHrM|ffPQO2gXUbIL$j=)$z5B8CMW43(wA!d^SN9)g(b7LL_xbhvD{EShf^!Cg z_&NAw665Zy!XFDnPG8lKJ$)`+%j)DO@RZV`xLWs(&^octWXsZ1cVnv|Q%a>NKg+Yz zV^(BFZ}r`0b0XEb_V=7;dsqH_Z}qq;h6B>=*Smh>6JNjY;kNvgTkB-D_A{+>UVL=R z6#Lm)1<6ZKF1VTUllRPJ+tpW%LEWwWu~NTSl>;grud%7W@H)FL* zw8kpopJ_jRk0%73EaPiufezyKrtI|Ev~!QmwDg{ykEXI}T4EnRB}|9Zf*qK(U|{Bx zW54;A-MsTp^7`XN^Zab4?dNlgVn6oGqUey%xs*M>_nwU1w*17~kSnJnx8IB?u3nY7 zV@|uVmuZ&ztSNtI&I=8nF7?OZohe6%9e4_B`$PAS_aN0=Sn@CH{r|#4_J5pJ_saeM zs<=BpS@!FLTOSMsSko3)B&^ER`1-uosQmuvzI3Y!yNjWU0hNu{Uf%yIy&g7F z)nL5osr$p9_3oFxiMXy?lWpY9G*$e??X~4EZ@&Mi;`!bF^g77+JVSyo(^T;{=RV6% zc7ZnF7z*ZW-^?QZ`rK#zmy`GZ^j>wpq8FM{4)lJ0SpVOC-;_Fzkhl$?p8VePH4gO` zY8}7J@7Yy-09NM+|G7~A?K*h)VfurkbNyd{%-Qw-fhZGnF~E+%e@|!s+_~km`n>MG zy?zTm39Y%j|Ghmd(=wQQ7k?K&2dmOJuf4o~Uuxe$*yP0lL5`5PN#f;pik=`t;T3g* z!&BADcYn)OI$_n_0}d7~{gWtDAn@drH*H^#RCQ6$#AKPBb&Fh$J!;pTh}hJtoZKU0 zA9%0yRI>lWMR(WQg$Vz=7xDDH{0@7G)fJmV9!W|jr{sA1M}GVC-fuyqtL3 zm-$BU@^DMeC+nWQ0#%$FcJ7JQ_#!m5dRET!#yx>66U+HlZ#4y1lpFh3yDs=7wATO6 zGiyjFK1j32W1cjv2h!MC?+1;;z@?mBjJ;ihGw*G;1;rm9_bOSGCewQp+aq&9F5 z(k%4D-0Ju1P0P7`|E*iP<=vIixvwf0^dH$dYhCd5X|pQUKKtl_S^-)cY(vymTcy2i zO!fu!A1a!AYR$yLr8Tm5Y(nx)&qXeMXmkB7hqLL`9XwkzqPFI)-Zn4$NsgZVL|Luu zY1y|+=f1i!{oJiM2|2Eqmz^R++H;ndY&d6|c7~ z_q(6DAxARXHYI%BMzd-2Usldbj(*#bhE(;r^7iLTG`YAj= z5)rn1)r+S`PcK*`yj*H)=b@ELPwH67Sja?)Mk=2!O_{qa|8{7CRcLN~*G5^n`6{JP zoz_Zge{eclwsMV~l1OF2oZ5vGcdO5>3RzLVru4S4seRxL|0k0EjwaU@MX|Y?Po2L) zU*vt?)zB>&=kI}o=H#`P_siecc0se+cIWtvCzeLr7VqdZ>70|g^Qo4fjpad)-)4gA zn$!IjgmgX=_J6*4{(4xAwDtGRqrQ)Wmm9r)(pPhH+G>Msp=ndPy| z7ryx%T7}N`|eo zl_JYlxbFQk?eQ5e(^=Qpo8qo5{5}2P=CDw+Y5DUvy@yN*);`z;>yOFxCSLx5wq9cQ zY%PDobH;0LyG`p6*O1Z=(P1jB-1$rHx!}`js@X40-+VL7c)=dIt@N1PI=;qJ-rvq# zKL2X&{cp0+7I%a6VR$9Ac~{oL%0h)LsXL{XCg1$&bJWsxFLd_sRcKY|@+70Mr>b3Z zu6|`szI;J`ul0umKW-TXi;HFL{@QmqYGrU{p`Us}{@%Q5p4^q2BGo7HXU+CAa=X@6 zbQ`kdVx6Apscy%-7kPJ=i0-T*Vj*rh2}lAf~hIouBA%#Ut^C! z>Y{Br&-TP~O{j=*oV%Z@nJNxzgzpuETUpiO+A-Eh|v1k{- z$7X-7J^xxezPg(gQc)cc?ss@9deis+vjFg50|P^Y!_&~6pZ^?J0Zq|~bVHOisLM5; z(sqK?8y`;Gj%-?8{M=dp<-6DWm;UCDyUM@s$75&%oMGKu`;Tw>W4!F2%ddFj-FtZA zrm_hsCp&{uGgXdTRon&-8dv*k6t{hv{buL;pDW(&`xm|I_pjv~u&OVrD1J_im%YDj z&5sWcf0|jYc&~bU+meNWQf{l%rf#}WSK=M7#ks6#vs3c&t2SMs{$6MI{wjHTaIx9@ zyStaqojX_h>xBK5HL>+S^Z&R{T5|LJzcx@Gvhp*;GX-n!{Ez=!oca7*zsvEs{S8<0 zy}#xCDX{p|xA0`>?TN?Msh$j#kk;MgwzqWGC&dq`cOSI>d3$a5liCmLA^Sf{!8>@< z?7nWVdl+-eQZt~^u>IwirN{OuC$rDmZM?L)JlIR>SJ>XSZ(iymSEi+&_sTDL?tI!I_3yFlU(Y_2 zia|%P{g-sxe!cxkq~(&*{rSssZ=w!`F4ws~``h1R()o98w11daUbp_8?}E=d0NdpRsPQd_WU>cmmUAFtov$iw?5zQ&-6d-5FhxhKQH=|TQziD zK&#Ss|J9%VcfPWTs`JX%m|C&WX!0sOVawWeCwfCqow%fMy4Uo4Q0ukEBK4qI=SA1< zKYl&j%f0hb)lA!L$nf@7slyv{Z|&YFBm8{Tvbm2Q|FSYU8u4z$#T{!*K7Mm){pFQ8 zNkiA#bDEC&m6VBDPoie8pZVy8;nH=hz+>X`WlBWSThsn6_;lhE^YZ0$Os4f_hieom zUrk(BC8%fq>gmL$|36u4zjW_k;a@tbE$)BThA*+(R3q0NgN~8U`y09TzWDE|J%_BV zt)I{TWm~dTtx-9-r$<<`IBnMPK9en4r=#Yo+-zKC>|gofM4_|potbG1Ykz%;Zi2Q$ z3g+qj_CK{{=Bd1&?-!m5jqdyA8vG_8@-k?d#a*Y#kz08Vy`5$buCt3o=VY7oyKA8? z;|t3zd$sH7e5=^hdwFkOFMzEctbP~ShcXvie`xFC<4dwu6-s7Z+ya_`wY`2~VjJ(% z-*auIJ-&8sQ_f1CsixJlYL0(@DgOHE57bFln|qsgwVksK$lTfa>2CX-RkPfSbUbs{ zp7R!2E4PRm(r436;+6*~S4?`!H?d+uGe zW}@_OqiccY(mxljUT9lUuo2QTRmfcNY}WUQX`S1-Dx{zl`1ai5$$x8QFTvIyp1HCn zFREWt_V;ebh{yd?TAtm=p3PIc{NN_}wUghTGQD=}Q*G&XiPIai(;*$!l3$nOy z%IELiGVhMdO`BbzjK@B2vHSb`A2Y0-Q5gBjePY|5kn7h^MTKwNu4rAF5t`DgbN%AK z3(=5TJ|X!Vnkf&w1h{= zHmkFrlahlQ*F(Uc8lYBc$%$`7_||s`hs8i*<9-OL+xX z>`~iyw`%&lzjFRU&|>O=OvJiF8?KfFo$Tzpv2us>itNzT(X0$FYbia@HMk%=e)?CzwN@JRa1|z>oNSKK6RE-ux*aS%{UR(R;VXhl zFBAm-Joz_wYnis+o_nD?j~FJitzgZZ$f;It@<{{vnY-I*R9pM#-)i1w?)6NTQk*as@PQp$Sic` zR%w$rplRsxH(Pz%wuRhW6TFxmJYJja{PW&~`x}!j&)&MZP;GJC=PmdCMNggnbB&%r zu4ZixNaSpLk|8Cr#7=}w+}`~J7w63`k*gS7bg-BF^EhJF|)6<_HJD>b(dwme7Z}tD@ z{P}O$^dQw#!|G4w^$%K$GoP>DSN8qJ>o+U*q{V^P68>urkKh4kMFtx~j*vLx*RfN+ z%kMb`8OvjM(CN6~)2zz(yXRl~eTMzZ+K1Axp`-?Nw#HN09ni9h!6x(GIiVQ)@_F^1 z^Z%TUhfidOpZjfWUj!Pt+|zdL<$aLLzRT}91x-;5JB;T4Sg$ty5`W{VY|!eLHD#gu zoS^G77{Zs;KQ(@SsqgPb@qSQuZx-Ct>j$Ivf7?ID+ghDf%hKohtVeKXcyffqCC`B_ zy=YKpZ9J8o^EVe3XAA|m1y}4j=J6jqq4%Keb+K#Sl10<6hDY=9l(J_ElMEO%8aRWwGe|(;AuU;d8?JujR-81~0}mEkDj_vhthF z<{Oifdt@G;_$sVBEAexTf7EH;+O6Pa>*qxv3qCEr-Lv7rOWZzJEK!PBkr%x+cj-#gP>Wl_HCvoheOIr`-ts}qciGdt11C5A zU*a=+Wz1chkeyklC+=PU7*>f$y>a+lW!YCH_d>aFU7G1K&{*d3dnc2v%l6&Av0E*6 zxz*QHS<`3AtG+#rxVYo8#rY{au051)b8~&IVN;R2bzbi6Rl4b)K1Dnfbld}3Xujq> zXq9LGHP!D(%Y^FBxb(-LK3ki+xz2sR^z7^3UJ0z&^9&Y$VjF9FlQZYZ-3Z-r5InGX zRw!RI#)K<<#YF1qOt*IzA8uc$89F;)UagP4+JzLmX|ZQQWoH}!jf(!h z7caP081y3gW%N56Kbc%lxmo5uhwwPr$bmyL2=2+wr&~M+L zw{ZQ6iQLBX?rnc?nbu~%cPFOj?&M02P7Ry?dfo2c&v%dQ`|<>|_NemAwABaXLv&Up z|H=*(4SFzpZCl}!svC`$b_EA7kz(KbY~pf*+%N9pA1~#+$gY@E{`kb!y-~=niJeoi z_w&tdkoNexZv~+NWEb9?RM|9 z=^7i0e8pb>wgRs{z1Y}0dD7FYDSfHWjYZkF3GIT^R5$kfZidxEYgU8np_32S1o!5i z{+XA&+Aw@a+`B^e`0>`FgMKgn(U8dOToR&Rg;;! zmdo7U`1$Vly)NztbGClYkKZ{_`v0tdAGalMV_tgHCrm19%GPQkppc`syZPkp_Y z-}+1V>P4rcf$B;8z0Wpow|)kx(VjwPB>!dIIk;rf-g}ajS3qUh<6pCoI;>8=pOino zaBJS@M)&j&&>Bwu9khnK_U{vDZT;o@Kb}s!m-#pP*VFy~ZvQcZbXP697hY5G5>4T5 zH9Nhr*Szl6ev9d4c0aW1pM$GBMbKQ?-s5J_0AaA;4QF285fY%b^^W{k-1rQ+Zr zO!G6`*7EVJTAq-)hT*``>Z&io;F?Z4ZSKFnSNDNdd~R9|-GU(gihKXxo5h*WneD$U z1nn`{)A;X7xBWW*f6w&c^0n2~&kpjP#ip^#*Xf#mTyxd8@6e4E=T_M=?s2QUc3S@D zrmHK@NJ)mD+MHG#KYPuw+uPRODpJ$$7w!Ar_tW8b*@BAw~0jkno{6rcU=vH8g4y;1!IkZn+z*FJs{T(RdMEb;k^f$NJ~!X?%j zklx0`uRHEqE_Cx->w48&>WawDHic>Fp0PUvULWJy6RYqh+wPF9R%*3~si?diGu z!Q+tW@1Nv`H@*zn`uE%G3RaGgdkN4K-=N+LT^Ra%|4UGf^weBBSap{Fp5y!>r!+cb zO}m5sUeG$v&bm?E8@1=qzqh%#{?_-O+xK6Egoz9+OgtYSd40E`+Nr#3#hRB_O2M;C z(^4WgwZ$ENm)qP{Hz74&{*cK*55LJPR}_glFSxOJ32I;9a&qpfH&UfVPi|GM`PTdT zRF?PKSgEhzLjTR=>mRuUSL}HR37>}l^Y`xVpZIv+dz=3YeZ5ufZn%CtXs@*`B;-qg z(&HT`4#rx^%w8EC+&)d@#NIN2Ypm^i`_?j7O}rELf3ol6qR2CfvkxC(Y%05E`Q>5G z^2WQT%~~yPzqSqPjo`bLUcTes+f0eRD%K=dTFLJHPMPqK{8zZ(G%y@#lT!iYn!)vrC`b z-@24CrTn&(R@l^EjWOO`vrLcPY+F=OQ#{)uZ}pokA-TGGAG{wgYvWE;z1d{+ZSURt zpSZLlN~f;6d+SKnl&-8w)~9n^uNAfmgsdy}ffgdOCrXP<^_*zRijOEijSLfre|-K!sZuN>w0vPlarIBA3l|l zl)QN0z=36dj{Z4!bFx+CtJPLjPb6z!hSyE6UkT|uY)JX{hP!@~%J-jJ_y6dPJa4?H zh&cgPI9;=DI>npt=*#=f%F8t%6YC7uWSdU$K6>}={+eL$fD%K)*Y*WP%`g1^=f&GC zF258l0v)S*ed?O({^XEw#rP0gAJv)%`rKLS5p*l$;MrBvZat1ZINM=sSmZuc z)w7d|e$G;gEGkO9dMZ-#t9@VL-Iw?6d+uLo?Oy-IEdnwh$ngD9`h2?`N^f;)12QF9 zpH4e9Z=$IAl=II_=VWHy*sNB6?ny}Y6_ZT!A4^sSZCo0o9CEQUb8UJh^s$*~|0mUVpE?ynlP7wI*nrFara_yOUox z|KFhU{igAc3u~Tl*L&`~Br*1?#o{LO!zYd}S-2-#<@5>t&``~aAR*0-fA3AnyM4p! zQN;fn&wu=RbpCAe?5)A~g6D_+{v^4q9y0Nt;JK&NC}z^{HE{tmO+tCJj1KcYU8bj& znQC&UD|Dmo(n9B>ISUru4*DrKYj@30qx{|_xzTc$zW(UjSNqE~a?K-f97QZ>Y-H?W zNI2Tt)1wm{FmqcdUsqRm>D5ift*O)AoKx^V{X;7ySM>JAH9gAKog&_wR8VmLU`O78u>b{rSmcHPGJMpZvgv5pRX@AybE{U>R@3w7K z)V-MkYR6Vh_gdvXX;MVsCCfQmu4bqe#VDUXd(!(=R?EsMZCO{6c3Os)&429kd)_+h zztNM<_03tP07;V(;?rza_(VHvU3K2twyCIRqT#wGH>IT$XPw=a0teBkAGx053 z){j))^xTu*OikXboLBl}M`Y;Thd29^-P-x(CacV~_J=N}S~l&<)Z*eSl}VG@ijGa1 zoWH`nZq2;O;wDox0yjT7T?*jzh&QlbDcD4+NnnM;}Vv~CeGGeA?5e;&XsCO<@Gm$ZoQA(_d&GwuzVVSo zh;FubVD!fDfO8Xdwy$ursI%)-Hf`U$_o|5Rwl!%Y+FeRpPZi4_FKOrRWuKbgyKmiV zb9YTh7M`FIIZfB}^eW$*(yF<}{YZOyI3m8Z|P>I({(Ott5!;uzm5;T zU1U-j5w|8ycS_;XD&3H*->be<72KHX>YGw zR6g%9NiU|V6*`AkSmt)rVbv7%{(05`Iw*H9J@2^r`TQZXwlF~b50%g(Vt^H za}QT!@%i(crj*WH{r@oQ`pfl;-xNg7EUT=!dHAIH^y#HbEMBrs-DHz$yz$l9h@eGb zx>KZ6OjbTA^xk^na)71&YRg2ICqZ9wHM6(3*d57#ajfLW1AWgVXh}Ka#H7jkr?P$d zuGme})R;ZxiKKtsx)oX4*Y*@`T(a#!Rdt6!+EdSa7$`r)0#r!AQm12-?Z_vTgIaq;9!SKbGF#(eUmW$KzV-D$JWpV$_Y${c+*D*9#7e)iQp z3yPRuuM0g1ZE+h+6fSYU?Ax5=!U&))d25@Kw2%3|)3i|1C|>JvGh%Nw2gw0#*%@3hr9W|sn1s;WQt zjhkgjtM|ve z`Kg+(FKz!H=g7KxUC`FwJ0p670@t2%yENJUjaIzgsdfC>uO9FGxk~EmthPTVulCFW zHxzbQPuj9})8(M8rsWHEEZC=;`gR(F<5M=X!e8HKFJ2!g050P$JZ5uEy>yOEKXZlG zgVJk_B~w=Kl#)Ala@uOARFANm^7hYJvQkb-oxAn@)-JBCtBT$>8Ku?yb>Dww(%Uly z_dT;iq;?+s!keIGdphXaQu))N3&SRc^FNVPPBxPA^3DormNcKV?T&-%`n8{~TW4clFlPoSd8-8`{2XDk9YT<@7=Hx+T*&W1`>U7VDqFIuu;FQ+1jc% ze#qVX?~?!Pd#g86-Cun3Z#Vy14{MgGvyWULEUp#!ADUpNMohJw0S|%WJwz%yT8BTZH*0nD!fm7RMqbXT(S*0f0A3uYtgDr zagJxdygRP^ zukO`;{_M(&(q&7F9-K6E>nnVc#<-g6FIFyG{Sc_}P5_w+>DkIrRb zTMfcw`u}H6H{MirT={6>idENxGFPm8Ss1s%YeM+l)hlF=cRlhrTjZ8G#pnH*q+2hm z^Y+|rix0K#5^>e#jdVWsOuc1O?KCZXU5z1{_hmyZ^`|Y*Q48BE>Fsr8RcldmPtVo`$DXFjYWgi>otn9N zk=LZ)oikpx&R3fpu9z+Mc|z^&nN{m=UuC|B`wWd>g zsXi3od^*%jI&;O9Nt0)1Zb_0a3%gpj#3C>IhL*Pdm3d;%B(F~uH5I+AiP zU8WXQ*R1t=e9}BORQlqNpC%!DC!RXHYnFxft+U}*S6nxFqMxMeb~L9uw<`U z>8V^=H%diMuZ_DPzJ1jylSit#>8~tLYp+PS8oH|N)dEn_tGj+dX0zV%nAvW=rib5s z`4AE);eG6k{ef6DmZ`I^JZye^dH;RCq`j8Eq@W8MUbjh$O!eF?eQpQ1)Aje`R{6Q$ zPS;J%jkDisJ+7Wr*ge}b+Z|k(R_mAtT+Ci=lY6@`yfrFxXPM*7b6@LLs@~o>eaBqQ z=Q`o7QLb^e6ViKnPG)H6t_*--}fi-1lPG zzmhxP_y1E>Kksx~)qM#U{Zlj%(r#f$n05b8{B7@|`Ri-1&i-nntYyA&G4pw^N#{2G zh8%*x5GLvPRPEb`f9hLqn^l?bJqwLjhKNv>sk85VJSaSA3HS7U?uOtRg<(S$hnD%y z!|eT@lk{S&kb7dQleATD-1+wA)_VUL$G;r@!5h2dM;9CWyu}(2oi8kZb?**eBHQHk z;^jf%UzhX$?$e7=f*zJ}AZ5Q;O_A#@#TDRG4C+0tuC1*3_1!F6-4!}XrSh`6J~)2T z??0F7XV3m>@CgrE6=a0{n>M_Z_c&Lb9u`kRyEYe|35Y9PWrk9lg^eXynMIJ z>iN0(%OoI@5rr&MC#dl9*(}G*D-7CQ3xsUj`Fs0U)%<+p*#)&()HR@U-a+NZ)^+ha zzHmVoQ$=WcdOw|`e!TFBMW4~nS%*S`E`=O4Had3V#56^Ya%$gW|MKZfJ;S zk(6G=CRIN3qt^ zIi?>iSfVP)fG>H<^~<%(~!Kr&HD1TWK%EKt$UiL)h<~46w=UIy^*c#pW2Ee zCb!qj1&v{N_N;;oGem?R5U!J_M7 zJH^&jX>RN3?d{ENd0&!};=;_#yyuShlS50xzo`FTxa97(i}HV7?_U57$=O%9|KGl- zy7TbY5nj^f46&e%u?Ijce_ndz^K?%D9ZUUf`T)Ta8=N0p$Y z-+OhhmD$ryzGIiWzB>HYs(&}(tEXrwdl>hzQrUwq3d<$GuEQb6SeG*CUs0hQDqw_4~{C{=5?G z|FQq2(a#Ia@z>`6X`i(2?#?xhjY43P85nN3{QI`{{|=S!Gj&(UNJvDqoh`ZKv9%_y zHz#!K9%DtHo>2X%A^j@o0~Ftw`i`0(G^9}DV8o4dy^hNhB;B5%2nWos3u zzFHXN9BFy%ghaTb^2AFXXVaoLs@&Yy)@FNkbDxa)>Q&Zj9)vJHH8 zkp3#ca(`B%ZOb2)X{q{(+JM$Ih;vsSoP!6CtuaQ&tGjx@7a^&{qoB5xmWxarJbDq+5+6{ zTz$ps_ZItwb$NclyEeYEJ2JcXXI0gQ7L}KGeqM$)sn_U11_f@f+QB=uE!s&pe}4EjXfeW%)$-nY3u^Re9Cx|UT{x>MU`?ULs7d)Y6O z%DlL2t*IgpZ|Hi}Q%{UHRi8J#7bkN(Yr65{-&?+9s-ul>TwecoYwrS~&t*R@7 z9j^D{*V#a5PQJ#l*ymcP)KRa;)3PQmUsx0uws~2B>txI5xN8$1J;_tBaITlJpOAU| z$}6?0iOye-gxe+Su9|BC9&-3zbbIRUzo%DSOMb|qWta~uq+r7X5z?1DdZRQ>mrgNR z-F3%d-}KM~^U&<`6VIsfKE2C%dClkGWwrVqYr>Q#idVeKW0XCAMP7aNp37ldr+Rpa zn!WP+>oBi$yT9XlfAEk&*&83nn@d#AS9~gV4UI0;*XR|G>JN1b=wy|&G1~Xr{4!+s zw8}?5yRIXRE`$D*X=3y*hQPQ)p4-)ApLJZMKnt&R6UHe*9e2 zmYuc5#xy8C^?X!~^&}PVW1pvfuKAg_;7mbq;kj4$|4IGzk__x*wXS*+>3ONu`~G4` z1)AX70qc!RZ3Oqmw>l+r=!X9+3M{LQ=&k7cH>2lMUbOSkRYCR>vUT^(HOX2fS*E^b zdDo!`BRBiFw^ce!j;dlg1q-bI{#Hd)u?bUMv#vbyeC_Pj_h-)1u&t&1ul@9Tp0a6G zp@uD`Rri{_{A zU4OP}p5WAoDerDg(Vt&E5n7l$m?s#L6v)Ot?=tiE{Oi$+*S|h{@jA3vXL!fys4BL0 zd)U(xnXtxFwNpT+tF@KEzTe*wwa^apXiY}3*AM^tzYu$CeTm0JGeQWyl zI#}h<81uhyhsyVxp99OUeP)@uLmir7=34&;jRRkL-oM`gl5iNzCTw3fFLu)JGom4z zX7ate`LKDvil^0acvD!V$?MMM!|eT;+jGB^3B5kFG#ut(v7QA&-j7~POjq?xclQf~ zjt1yRII2!_DL?-H9mI$RUWJv~>ClBi@gd6dD(;*p`B!mt+NG8A&x?fg@BW^pk-qK3 zlUJ|gKob{RQ+|uO-u-rGj#Q_LDyUBlKBvcGpV!(g|37+O_wtI;dcNmex=iXP)7F){K<%Fcb=o!5B&{%bddx%b;BcLsvn9vc?kh`f5pqwr4H(cBd#cQ_BeS(BBx#zOA@Wxezi-(NM*E`Od` z(#`%8E~ci|iC(u>t-S%4pPlR#(PJAQtypnZCXiP4h>bCJxW$nFbpfTZ{zbj7%n+dPJ*Q2VMb=7I7qua4rb)~b8cU{5^c1hJOvtx;Ht+U-kUAUC&3BwX z<(BEzU2{34SE=v&B>8&YzO{M0r;hgcZ2!}@-pTOx@83Pwb)Wr&*FeRGR_u*@WwWgeRerjt zoCDcADjh1dGLSoU=eZvzPA*w^;H}^6(y6Q6g7rGCW~qE)%0G0%!5ewdW6#XvyeNYh z#}4nWJFdP}20Z3*MCK&8XYnq>DzfO4YvtOL2hSdVR`|d2dd9V=5{t;EbGNNp>k_nT zLtywT_D^Dyg3o=3JrmJf8I!L6=;!0K(23F~zHj1svn*@!vb6It&m|?p`;=Nw{<%Hl zt>yDI2bt#8UwnU8XwT%&#y@3e$5&_bJE~5*0_x~OhX|$J%+D0oObrcK`owp}qq}p> zq*vXW%Rbv=3Ze#^oR@AH`O`CY>#d3pPrlB+pYvO5dva^et82EZ`~RP}@?7nb?wsU6u}^=zf85jkF?Y`6yR(1G zM%!~}ZCt{}eysd|S}=HT#SMk3M873rYghExet*9D?Z>ZD?Vx^9Fq0~LQ0DWqi1v$< zKGr<#3N>A|?@^Wco|ok{a|&Z41A{LfX`38y_J+n|pS+8lyOeKSs@$^sfYjO0?!5ZH zd**Cd=C*pB+biu4YpVa) z*Zs3+O6Mu@iJqRAeSUwh9e?g^;wp&ek|~`-12FS5_Pi zzILzV$#b2ptJY?|KfJ`sKlA>{DOb*gUVZUS&i=jGGMnXwpS*Q%_UWFj%3FBezW;mP zwr}sA&W$-^Z8rbguf6`OGfv;QapQ*DkMD($9_^p@q~0HI*Vj1at8c7(TrYDC-mgoj z<<{mp<@VGo?_0yv=f~Mf9`@$zoUG-u|MnC#=`VD;2^z)HUC{x##_c7u|Nh*l#G$oO z=SB!*jTQs9V?bx>K}fa9z!1UFWr@)9x2tm5ox6DZstP7n{@Aa(Wj=)`uPuct^8XiW4Ug3+qOvSQgAP5`~KghkS@>-8Bo0s zADMd3R*N+FAC&EJG%f6^L6C@R*DcYfvYuR_oS(9Ogl=8z5qRa&1k)usbxseqt*Gm{ zzx`e4mA+)x!X;^zi%qt{2d-J6Sq}`xis};6c?9`5+z0zuB>$m5uj11GA zv-0uZb-QoB50laEQflp0tSr33E%^IuZQS3t z^1u6c*SvR`pM81X`BE2P_Iet%Q!&SOEh zVD)$7ELi=$9J=`g~Vj(*E7HTV>)~lfu$8f8E|*v-wNu&HIyQ?%(}$ zuW<0Xx1Z;&HEZ%(GsAZGx7VG_ap}Rb*C69rIckt8-@CFqr<;iExSM%kUC~vKvSkZ$ zf+nTg{M@-{)!K-aODuS%TJ4+D89C|gDf5j{fty~`ovFCrnfBsw$uy&%b1qc{7hVd} zEfTE=J{D|-=y1+9>Aek^rslu#E7m-HfBM_scmB?Od#kQ??sUu7mWQi1O?bcVy|v-b zTXpYmW+|^Y(p6PuFhON+%{P^!;Nm~0#?!g-{KSp2tciY0=M;axvn2Dt!dI2Tu#N3^y*tX5u`t8Zf z`)aEfHigLL`OP?G_q}v(d+_E76CX=Ru3vF4sC)C5+He2P6~67My}I{m@wWHr8}HxE zx&E#4e3^|&?dK4v3U7|N{oZzS_|NMt3xu@u3LZpy2L1jd8N1)o3o;Njy9rW(?v8fzk6M4>1h16W zrGTjiUdt3iC$qQ3h-Qgaes!2NQ=?Sg^tYD3 z9QnKwsH@kuRPS^Q zoM{rcO8({3o9i|&`*OSRNlJE+muu>-osVN`=WpCU>wEG2x38JbJl=Qt-sHOH&uY}u zc5b_0z3tR~<>+I_jvX^Qr2iY*(+q$Hkb@gj$}c597QOnWMlW;P6YD;i<5S~vzO=pnX5II7rTO3Ae=-r{ z1`MuZ2)0Qk*30bWsa!s^FmDhCgzvCP8Z1?=< zv@JYvdH2iQ*c~Te_2}%on^>myJwLfoe4jw3)U~VIicjsj_T!y*W8iKvt(V0%Pk%>W zXY037_x$y(e7_@fDB5i2)!RPmnHuk{T{@2{T+88~FfNs10%8mhhcVc43kT+Lo-tu$uQyVFj6FF1XAy8h?f zbsdb{82A${*PMrNy64X!%-+w6an+tbstCMZDDyDa^$7rtd? zC!hL*mzk||_Lr@4ntt!sI`BHPPcNKrZO*ob&NM|h-#K_`({@7xgAJ1$Q`c0j)Ddl) zx;fd^s3^zNGrBiTDgDHWqT)}J6ip8`#i$1@7CWuGYtwI;?G^sl_U2ymlePWS16tOQ z?(X;U^YQov(D|?I6V~>BPOI)bzs>*8_s#R-+ZGrF+MZZ(p=0Wjm7DxxX9hWcby}3R zS$Dg_(n89gb0|G!t=c|OMR>9ma-H*OTIT(n`)f}D_bPpW1=(pfrjqTsT+^~uilfAm4K zbANw{*Sj|}pNB3LX)sm#cTRlz6T4?G^Uqe*JuUlN1{v=C`u-(o3UK=Qy&kZ*UdSKF zw1%~r`8;R=(Cf7quYY~@{d_QF^+tnl+XA8NV;|40IQ4#xttUjw0U_@zIzNkK-9aZi z)l7}bd>-Qcbk23lcN&w|Yx(S+eigiQZu8x$L+O(s%jYy+&OHZOx}a9OZrz-XDbmW9 ze?AtC_S*fI)5a2Xgz+68$E*8)dW-Hkm!9h#tyBFc{rL3{GsV@v7vB1OMa|~C&fn;# z`5hpaT%Iq%Vix z%P;OmpjBp@7rb6>>%V(VRmuCm(S9sbBZBAszrzihsy+8&?iVrWe1!L*b0SlGy*~A* z+lPm271f?9(!Mb0`1EAoKO3~~AIUo2-TP6;^5>#G*IEh+)I6OVZ_oYpRx7+W?cI5% zGv931YD7l-50h|Iy*9;m_qWs4uQpei?_K-;k7;%&6R4(cP)$PX_P*M?PdwuLl{u-K zq_jMqK1}3|Ss^*P1wM}*L-sS-c? zYW>$*I+kBavU;C=#^-M&!{z6dvo;2%o%*b^tp0T80-@}4ll$c^s-H;)IStX?-jSYp zCB*oRU#*{L>&BEGyLX}?8(vAR+IGDBPS_f^l}pN&Etyl?-+L=^>ZeYvr{DHmZ`xwS zD*9$u*VC~4CCPVIt-3Vh{toxmpKX?AZ9faC7Y+Vaie23Q)Fq(PbfxvGPq**?WrNhT z4Bz#@J-Vt1eMP3>hYwrc1Wy)jmpf4k8u3TMd!{W>uHPY@b?z*0*Qq5Z zTh9B>2(o**&n@plfD(KyK;ix?lWgx_oICgVN0b%U#_RvBou>;~aUClSo%Jt~K9OJl zl)K8h^J}zzjjz95RSTq0ZAhKIP5TsU=+3Ear}pjL@;y&?A@^Sh+^uh4R21LHGMj@>$TRB7*Cd|5u1^F zDTo2zh~+vvk1kuZV{O*CfId48t&M59o6EAm>zYod`$JcBHSqQ<5Xz1!|Mh+6XZ@Fm zxsVNxpzhph(2{}0?(;5!B%f|p2Q6M$1WH~E3~Ls!*FF0IT5r{9`u@iQPVmU>Jo~lJ z`|BfbubC?XIoB?swdT!({V@~EX8h_kegE*U|BFuMdG~ztU%xq#3F&e$Y+w`&Ns6tg zGMI1#R?SI^I;vi4MU3gbIiU$td{7`H>2Afp;`nJQwZC`YUjP~GXOQM`RK3=FucPLaRbNlBx4&AQ6dB@S19d4Ie?K&$3wc2@&WAtlR@SOEVv>I5qwJyd}_C z!q+m6s@K*ow>OpxnP>ff(z^RHOJOpg9K04+9~${J6RN-JbPtZ@-T&kY<@0 z@g43@lXWGBPH5~}39>8e`SUtHxjV~itIIR)?~}DEdGYwx_VVM4oV+?02uU9}5;#?V zzU|5f)4O3-iG{DfcX8|M?WG%ytv&^7zfAeYMsl z2X1a%QmeG$NZSS3(8_OrGHvVsoW7Ozb_t}8PPn|g_<60X{SM1a*^}Dgc`xRc*BL#2 z{{7v}b$fqrd;OeG^6l;2vDM$-UN|rN>qpm@sSAXp56z4H{nYkropseVeihi$hGdu)2Wa> z`7Yz+*QC>sftp8dZf+(91_z|~oQ&OXx$2U9UEm~>KhgJ-*bBfJYlB|Qo-d0(PMmbH z*K}{+lcFRSRkJCb)(!Q)cgJ6!UiY*dIwTTdysqThgg1V-_X*v7vAb`HiCu2>BdbZ- zrMJEXDXciscKI&jpF2ONfBEw~E&-bUBMRYBv3aF$`Qq7ia+N95`7Cxdvd|Q!s zzarM$UH`?k-s>g5kG=l&;O}kjUB|zg$Itw@W9#7)w>HLG%hxzrm)Wn2eYRnZ?4Nqw z9KE}xD(ho+uigK)XUZG%-0Iug`oEZMv3&66mceTeJ@qE991qBnkPVVcw!4=a?^}>< zU*Wnvf6uZnWj2qWm%XX-iGF{7VeGRLcO4$=n|sSJ@yimGrQ6-6-jjR#_wTjd>r?MZ zU41({Ut_PV_Fh@-PW>ubH&ON+nksrxngr1Hr!n;$#A z+5cPf&90{Bg3xQH@>^x)vL{zxe|N?z_xD8ivdsJY-tNu3eb+Z{g9(S$#)W^MPv5`p z|EKW#S0=Obz25%sx&1O z{48NtbMY;p#C3b-w!Nn~v^G98Tm{;Ud7!Gu*lzugua~82AD6tp(Qdyfwp!kDSv&vS zh>wAjyG?^Lc7EL_d+Yy=;+{=MChe&D+P5xt|J~W!YE^exzP6gwZ?nmp-D-D^yw#V& zx3_mUXWq^}W5hCbV%ATGrB%@zHCNo!(@ysNA96`YbNYJCNvi7MVQc41jXd&EugUAn z;T7OzQ?C!ckX~;3>(@%p*;n6G{@8r$_Xoqb^?!Dj{*IB~Q}2Df?!&1cCoas+|I&B+ z*#$I=l@E7G1x0!{dE-cdI(8ra_&OeUbhB{Yx*T zmw&x>bn@P<>Yxa(`f-61C61g(;sa#v%ddz0rxz$c1=?Wzjy_vKz37DR!`By%dfU(1()T3i@-}FG{Jt#Lnq4kM)^m+tK<3T9H!49oC#Ow0(wUR|Wh1NH ze2ZD1K0Q5MGkeD6LvCroo#;qqWz!4{a?%P z?_VfwelM`dc<#r|)3%2GmcO-fe&vhgTU$?Ga^|n~vH$&|S=jEQuxDr9p1CiM-M&(` zIr`uNqp-ap)3^?w+G$yNa)MN%<2vD$f!$BVVsCQW*cq;`$dn-HtS)=BEZBO~_zwiCt z7t8*8-tA4LyX`i8Zus}I+4|RmYf~+M|GZqj{^jzQTRGkH&iwft@qEAS-T!QNUvAs( zD}S@nLB1~G{*U?RIL`LJDcO>$?fjdOfnmeGyZb)Qiu=7j{%ZTW*bB)Bl{w(F)UH3eyvrnr%xnwKmEN*nHz)L4 z+U~x~dBxSb+i%`hE1a{e?8z-pDa)$WI;YeeIYl`4aVRhdy_aBk^3U+IG!GlI00X0t z!v6WiB^~8KGY%#^oB8~w-T8V(h7WIq?>ld=eIE5?Q=q=l#mFZ?j2{-RZqkTU_%rp# zgI8xR+-75BnDf_wp(APj<_Fu}w(-ZGjpuvnde!Gjckh}7eq!CTmtMTdw(w%)0ZYE_ z|LZw3O445BIB!uBW^oi?aTM_Np4NY;`X%d`cx&Z1t6%F%*nYI&oMJkmOZVZirO!9o zeC{gfIS^U+n|0MVoJ&P&<{sMC{JyB5lFO0&9f8jkU*tAlm=*IxY|25ISv46!U5nSJ zKRR(NZ`!>TolI)aEqK;mQTugW%2A+1i^)AoCQ+0=cw zEN);{BH~~3ZgzCl+OsX5iQg6p&-uGS*^k+);zC{cMebI|M#T-A6MGqU*b`EFWs#^h;dHV<&obPHSzZ*-*mQgd!E|g z6E^s~75?%}5R%SWHBJ|;`Igvo|Fg-OzQC&DGKTj{pFiCDhpFN2<8^cPlzDgLg&VjF z2_)TiZsyw&BgWJ9Sw(Z3?-nJHf9I{Qc^v#f_xuBMyB{2Nubt*4KU6pHTZ$ zcgf%96TDfuf+?>x_v#XxFDx)-mjYPCt_#YExUWMyUacQ@$`vjVlzv768=1y zJ}XHwRNLd!bB{?1o^Mn=R;YZlxw%4of5lr#3sdb4vrAaN8x~%Av1@i$_&0-^AFr0J z^FC)cQC$Bd%+A#TW>w~!yN%}dC~Yv{W%%%W*#tkgiC%7kAACLgBefNM^3>1$3zYCZ z^g_4!B-`}^GfLujFXoqxt$p(X)9|Mb?rSHon4wla3%DXI8YQP)u{mrK{p8{j5KW9hGtY&7oVEjk0XI@23 zwA9jCV{sMnCs7%K6CWgnIz2hCAwWf0TIqER3OgMB8XaF=?^w{p)NtRN z*G_cx3)7i1PX4QZ+h>=tu_^lUf8L!rOjhT*tl!mdd$dS)zkS~UFP_Phw+r-tp1m!H zxz$+3bAn38E5(JAZv3^D2-JU6tgrmkK3qXgGx=_3h)Dgf-uvzarIP%$Zw&wZ`Ypf6 zy#L0fs_9~}(_bD~-}Ns2kZN&^5GZqQEdH=Cq_Ja#nwFdG!%gRJdPlTdbFaJY_DQMd z+LGo>1^p*mSKW||+t;x@zM3o2j&1F|rjL{3+ddz#E&VI2v*_$IhjZ2E!d2XizAFnq znZa=L;??cC#tP+K9vOn!2ahrZPPVi(7dGA+^eu%b#VviA&0ZXl{8-djy!@zdWujmD`MDDIKT{>v?v1YUy?=)FhiiGt0drL= zHt+r0nGYXl2~YSh!ISpzd7ik^Yer$?oBq$vd^sD#!tmuw#>LyK#ka9vl-YBSr^r%a z>gLAtWeU?umFB*7PGAc}zy9WxdkVdhe}~dwkQUNj+PcIuDeTT@DsH z3Y1RTw?f6h=wadNcW%9b+?(&Pu29m_Vs%+}nq{5Ol&Wxj?wLPkd#6qOa8%^9R=vHv zPb2^JeK{?uiBt79KUL{pRm_(hJI!@k|D#jc{)weOg&J;g70>W4x>szc@6&bEEQ^On ze)6N6?k8FTiq&Q;^>KG*;E-0L6a!tb5dN4uMGSEN@SS@e3< z`s?prxVG=exg}d$@U8z{Man#dGHaC(q1{bS9^G7Yb8^&T;b+YJ2kw-|hkj-VKji)6 za()fh$r2g=nr|k@_~aIw&&be_zG?Aef<{c6`b2M5u6N64SU3u>Y>b}BJ;5-rWXk!> zp0jJh{>~~2UmR3m!XL3vRJNu%G~-TYl2Leel44tolfc}kedpF%So;1wWTdB>wdwa% zmb`t9<#peBM84X6TDU&n>Ue;j*SYF*(@QuryM91|t!<@ebXV?Grx3_OL*0*n8cTVolN%_B` zt_M1E?J_cnA4A67bR{EyRO!~aQU^p9jdJ2OP`ua^U3_Qoe|T=q!|5j z$`^f~mFFfs=?UAx=BCPcTJ!2DnavCg3Jjhujv@b4Ryn`y`SLsY1N)=dVmBF%rkaUy zw;vY%9U}jF?-!dr)8iQy+~bnt)a5!I9rKLwe#yyaMbEaWe4M1Pjg51v%jt>UzXW%G z6q?kX{#kp|IiA!1*b`puUY~d9Z1}#9nm?wce~^~1VcGw6;rUC_{%`K^Rn45SEQ{EdPck@{Sxt`sa z;(qDrqO?QeN2|2LuV%ZIem;?QsbiaNlB{OR1Q(v}3x#Sk*w?&}wpHQ?Njhy3D0%Ou zfe@!$-1-lnSKU~%H?osgp<|*LxB8jBlBfqFv$yJst$Vd!c~6aCcwDW}P9GV!Z2rDG z|8>^%U7XaPo@&=rV9B~aU#ijdYlXeA{@ugnfjM&&v|3uc7NtHo94@%~Uy$RT*;60S z`1Nk}@AtEJ6$;k>`yzGAzyrN`7vcD9U;= ztHmRDzG&3ubsjA$>?#{Cv*gDexYGYmyXdCMmzjwYKJEhistpCw6?UAj-Q>UIF6)Z- zw^N_Ib%F81y>Z4S(Y$IdTCo%B>UkO+_Pi;M^w}Mk^dxOblJ|~JuO@f2rZX^XuYchE zLiT4w==y_?{?G25{_f%9g06Gk-%k_@ZRd1ie%6P1eWZxW7l_c6K z)s$hTw9vKU-2d=3x_j6dI*t{6xF;}c{!@$JZV%-w`L6GCesMv@Vfkg+C9mY}-rV_$O$r=~B=^a)u&W3wFP>L$be+eujxBuLhm>b?dOE3G)cTR8ci{c( zLwlavgiX8WSf0*dHd~Bg!w{fXZ8-K+lD?#cPW*gZ#Gyybk%R%4UM zhy2%5n+_(5__1{uN6ox&)8o%S3nuMD{~JZG7zl2k7r#X>&)Npdok&G zs?U7u))+Ou)yXXG@9M?evh!o(W*DIkZ$BCz;dx- z#)lJKSz4uTM&T;jD-ze>y9gO*|ef;Gxx-)0^GijPp$S>6pe4|+x)2S_x!tCSnIT3uZ`Igk}YjMW6h)v zzjfY8+nt?MFN$nnd;jCCyoa8_+KZg8bNNkE{-tdFbMyb__8H&ej$Qm%{o#fB{JX`c zkDC`e?wSK``cAERllEQQwk&bis{Kb}U901&!{x0`ovA70>p7_LyXpSf_#dCtK9)QP zXZ;?i$nPlN@_NFTqX*i9S)ZD2?V9+cOC?IOlG|Lk;*zImdenW5JI!}*cyK-HziQW$ zEdTe}v`2e-+eDeJDreOh&t+rKNjLUbpRcfWV_)=49fk*CX3bZARb4E;QRBg2VRMn0 zVUl#v49T75+hil{y0Y`_ny2nGXJk-Tmus&6voQDP-Kj3ePL_JU2?Mo(rlg5$NFsHK z-R*zs^!44pyve$lXMaA|%akn-PEXh<7UiO{Wy|yH{^|cS7EV|xViq0p;?9X<2iuR_ zoc8b})ArQa=XB0)UD9FUC~$<2OVoJvBzZ9tPH%Ky-X3_Ft=X-)*23OMZj~9KO_qpkF(X$%Q>q~2{Jw0IXQrRWj$w_r%vXiGa$CRRf zFQ2CuJbU_lmL8LyxWddEC+enIZI01Bw=YoQOxQ>63vA)_FE^L6761Irz27G{bpFrD z+^c2_a_T1O?ue*rFI*U~=Iifeq3K7iIPG2>UQ~RF)z|Fvin|wYoAB1(ToIln6t4Yb zAt-2Ek^^STo;;Q7^@up;jPB5>%*K|?1KmXRFHEL>18rIW4uIic)kvY@H_xICBcih>EZI~*r zD?k3$9P1ibywlqFVRw@4)YZT8C!9aI<)mNR3ICp)<2q;GsuXCXi}_)ag0-LzxJ>iQ{C$2w&&X3+*3^Ch_yWfAMOuzM)9>BG>Eb zTO`M4kssUZ?ONe@%V?=@9+QW5!#>6RimZmx^e0J&>f2GZLRtq-!~|jZCd!? zwx!G*jktAZ)}CbX+ZMy9AQTg1`#O@#Z1!Z%Q*Y82E6Zm7w>+3DS>yyDh9Z*r`;!o0U`DsSCd%9ZDpD(=o(@#4Fz} zF3b|0@9O?<^NAq2OQn)NbRX1zI=bI!`(C5d z_Qh_SHpgTyJlZ8Q@$I*`E#+UmCT5GRU8id1Ya;J6C(T;O!EVw#zat^%TUNb`=>BXn zQ+u7q{!~8${;^VU29XF=j_P)4tD!9*+ay#(jH(id|UQ-UKUQcauEQ@{jM5NC* zySTXO+}uNdwoYf@DAvxm|5@U#!*BL@Q%uYq+nPDIj%K^~Dx^G)s++>W{Vwae-M_hF;5jl0WP zK;fpf!(Y#1U8|TNr{1(VtC^p)dhGm>VQ^EU&iBdw6Hol2)v~%ae)f9wOegN#HGMJN z`={pkTvM9&Z9cR7zOagfB!A%0!tPc^zkv&7_i#K*cZCXg-%~wQpV(<^ThGOcYTl9%Ma7hJSt(uYs3d;Z=EKJm#g;_YFH{m(NaWEXEqyuJGPBCds# z`Ik=MTb6R2o7>^l%V%raigaIX)9vty)(t-5u!pU!&K-H7qFv(fCWNx03j_%%z)(>3~Lup)z8<@9VmWh z$>8w)-((5-<-6BzdJTpY!4i*CIv!Ynwe6_;MFl+gk*O-@QBU$Tf}Y zF6-6Qm>Mb_Vgu9yH*TB|;F&YCH%I2;Ykft-?}z`e@BJPZkzc(+HT~++$$@9i$ElYabM{%3RBU;$B)_9T zujPdtBgdfJZHX&yY`QPsY#(r^>WH<)sv5f*ziD*VH-j z)6DB{p44bw33AGr_RG)dvqooHTHPlen|w~a`}ZF9Cp|fmy!+l$X--|Q_2th=fhpKRd==@O!PaH=<7WBgNTh=x-?6=Jx}rdy&x~PY`Cw;x3<6X zP*Cu*w5F6>=M>lGJ0Dx%dTO2fu@y&`&UCo=c-v|hS4e_5o!J=tv`mP-VB@t&l;chf^Ywdww2Ee0tmzY!`F-N0t?8tOxjZw!&pH0* zOy$*2{>>+&3ij9<_(b__-Z;-g$@D!l!xJITCC@)i4}O%o(_-bZxB7F|y)2&`;2Gko z_wx9yCoiXIp6YB7dnlg%dWw+R+}gzj{WAA2+03o~^;2?Af z$UQe9{pRjRjzL>eoGq7MPl%r`c-Yyt!1C6D%WJ&92TJlgzNvfi?r85+le}1d=7lOd zGT3I_VLOw(^yrBzzpV07jU&#cZJZW;TxR~USHG;nHb-~wUD?^yu3puZ7hJ3or6beE z_I67`=d20ceQ$nGIrz-QYr3s(Su(#q;!dW{1xjozK+8 zW*ysVKF?9dhFLcK=*Ipz_bxBmb>F=8r{u>Ocg)w$I#CzUaWukNsD_M5%-bi7uSud~=Pf z<-`k0&uqn)^e(u?cjv$d!yWDKh1NVTy<=(p_qzY1PuBT|?pimg+m%bDDZjN4Y`K*_ zrE|LA%k;!4ckU*)tv=0B-p?vlTvt(==iI%ejKS@B^##*U3}>5FJJb~9o*Pyh%NK{8 ziwQXw)pNX3=lt5l`F{PiRkA&~QZf%LN?vSvab;SbW@^(DUAyk9UuFJC%ALNc6ZHB} zC-3ISe#cge6=IcP!eT33T33Aiy=F?li90=0@5Jd<#cD#k9}e+1wx>ERsfh{H{(Nrs zd5_N;cOUa7Jz?pMo-{f7`9z;~v)UM)om-yXPc^bwa8*L9f@kOc%{3z7an(YrPfuU? zc#Xu)--ciMYI?#VUheq2=fxf!dGYeE{fP-bERG)ao-iXxDf!;l6YE(fMhb4@EGpb2 zWum6s^P9cpbeeEa-os7Ta`g7Z?uqgDSfOGT|53D9WA;i7^|?Js&rZEoZS}0|*?sR& z%EjMPx*nbX_bBkkwDf|KKXNv|PNru*RqW83@GPOr`H%8J)hCZOOGs@ zN38Wy8`m&P=Gp7a&D-JrPD|^vB1cm3AJC{oWnth=q1sTf-gRmJ9x`Ml``hL#mo!qZFBej}yKT+s z(jRwMO8q$Osb82_( z*><dM@h)8&}JHGr2#+Sgw|O`m85xhkKuQbJh0WYr1RV zo;u4{^X&ikuRX(6sYCZr%na{&<_mq#FK~X|esxFOhZz^5q~hXv_AO;eI;nH#@bQcH zuD0{J%g

&e;C_Qe;HZb!BmxsZEP6-Hcejv!^-C_}llJ56*0H+|F2%n~{)x*{CYZqK-n`M>luBo=^TAJmj6C38t6?+;bDYi81@YVHp_XBg^C2PB`-#!~W zfmhA7@`lltD(=4eFSD)X=K3ycKCw1k@5*I(qO z{I@?k>GbVQHa>HhqjKZUm`KW8$mCj|-M#Mp8Be{RFPioSZQA_wuau#loIvdKtiq3B zS}!M_ukktibAw)2pHA7{n|qE2%{boH`nKWB*Au1Xj`wwQgumS7ds(#F!AUjnh?`m8 zi7Vw3Vr;k_W(Z!l`z9$7qh6N7{B-uthMC&wp^pu>-~E_vt>&|;@Z~M(AJ59?GcnkF zym?u|x}qmct7(Pt&L#4k|5;t0|CgMVk|^n)q1zjMP$aF^u;m(8`I5PR7rzilFP_-o zX<~fu=APAolFO%A%j~@;Ak=wgTHW-`x0#k}+aGh4oGEwzI%i7JjffuS-TN5zCQZDx z?X;Z3x5$O2uM=dq9lnst^4#E%Nka3rC5u`2aM~5tr|a(M@W=?fC7+acFzdPSH7@UE zA2dGxBt{Tc4lwJhkFpm7msG%WoI+uZ3Qj$emeZ7WJTLN_TIK8ke2)>f7%_ zg++YZ)+v2Fv!*Co(>%%h?f$i&J(e}QZg&rjS?c9zGX3%EcN$Z8m#g`Ku*N(|TF>wcj(-EB*hAZ8hqK>?*(Nd zHt1T)1Q{L({H+ie{-o8g$UNEB)qUp!4Ut_IpP2dU|_+Ar>rhZPps%MSlv0n zMYcayG-;WU(fYFgzpBzs?+@22D6-P#sdD59?mC&p2cOpdVbpU?PG;x-$gFkunWj$p zVz4|_cb)gMqABhhwm)h}dFQ_MMya-y{O9?b|2+4q`?UOc;g)6BRTfSX;Cr?>&Slv? z<*k*)-wI27Y6@>Z3z*hjy#01HcgxAJna+++tynf1gH{Oe`76Dx=iV8j@V|ArvGVfw z?o4_ti)E(OTo>fjTgmr++BSQ>g^E*Id=|ZMhj(c&2H2Df2}JQ39o-DAt822qUd6w{yBA(Z#O=2 z$RFJr|5tp?ygL&Y z@p6~1%_=qc9_`r^a&aouV;+cH`*_H5PV2`~+qKV?a^zCylUOahsxj0O6Tkr zTM^T)Fzdwv&6n<4AH;rK2wlRwUu%ayylu?dnwX<@XV3FJ0k4FkLTrt--Q%7(`#!OD zw>g*mEzP37(yacbcHFn$$s8xR(pD`LdKf6VeqCmIh}izHt_f4mbWSOgat&9}-eAZd zvC#BoM%of4GwGmr9c$b=Qv5uwT{+`&qUx-lO2=F~1-)>&;QorQZboe0$Llh-$aMA{ z(fgzGl=WCoJte8x&2GmVjV%*4e7olB6I2&ArP!kJ(ILeJrZRJN%Fd=aebRPJ z33CcPy0KVIcG4}Aq?MsAw_5%l+~61CmdTwUFR`xj+R{raXT`vF?z*~+}Ir}XO#Z(wF^_GK=<;x`%ZdD9JR--#5>w6Ln~dvxOOd9V4*I}dP* z%##VQvXBn6I1*rGJ@tlG#+3EXRGiCnn_^U&-b9Jq+-jO~{mALn*(cl<&9;kAey~9H zZaeQf-d}nT%U@aDy149mw|%MW?{6PH1hN;hX81^@7{6R}{fhLN2Rvync-0ErgpH&> z%0|Xdd9FerXndM3uQ zd*=3d{T=>x*+oB2)K5fiK}eY-s|;`op`F}vrs0vTs-E);%iG~`lAKq&ZgP2vA<>DO1Fv9sp9dP zZpqWxzmmn2F;LHpskKSDp^Gc?)VmDntp@xY>}=N(ALgg>-eO3Q-FTTjf>C?TMC(P` zrLI=L-4YF=RozvD6+AmsUb*hn$XM61*v)r=#t**L#m1#OnI9EBHN1MJ_{^ukigUK@ zOJ~Y6GPJ#`VR3f1_txgvSiYTiVP?#ai;IJlfBZP9pSv?EZy z>e1RiW>>>hjF?{Kg_r$~E157kV5j>Dx4jW_ZF+M`!fZa&@mulNZ`3nXc?BdDq14+^L!;n+;|gdc~c48?j!ppTWRxo_H6(|C6~^!peR*EUbnBz7-)| zokf=xiu_2}^y5H%H&gP-<~qYBUWbmj@7=x&AH{e)EStp}d2*k-Zjws&iL`YdX5y0; z-P|p|b!Oab*)`%h+FAn4=GDDv76D;gy{DQVuX4-xpXacacT>0Gt7n|^_rtWf%kO6&dJ=6P zko$7q+rIe29WQ1rnfuQvLU_l?jHB28|ERvg;wRwC*WI!F&+`NA>fUZg8WU5lnVA0V zb1~_-af>S~{MkfL)d%r2nCAN><)-d?^Vw=nUcnsBb&bvpEs+&f=UV)hS9|||esgwW zj!T8YEJvGj-b%^}I}{`z76{GsS-0xC-GQg&VqdFtzszy7F}QXhLqy3UD)-^j-h@?) zjAp!bc$YVY?^SA&a)5>f*Z0XUc1*41wG%zvJwa6Lx`E-Q!+{!3le9PO44nNu^i<*u z4Mh&KOOX-!UORInt{Hti8N_~m?G+zcZr{g`wBsG7^&iZ5d2k}X?e5g;5{_@wHr0q+ zzgNSiU7XLvkoW(<^jT3S(wCa%*rjCoX>3@z#B{c4>g?lg3ruGx-mz!sy~*AsB zoQqw8k%D}klT%qZBZYVDE@$ztd1ul&)#Y_wvRUDrsl^*Zov#S5dwoCl^dI||44a>` zmBexze63h$D*o^OkEwP`@?~9$GC6jpSg%#M-7%{{!(CJD)WqW}xaT`FJuZ7NduPCv zMSInDsh&P~Yjf=1Rwb3riPp_FYAe+A^1?r7SYAo163w}9UU+Xx*Hh6yePTj9O0ZZnF9_f?JCtS44yN*0Q%D2#E(Fe16=M^VM zy5DY-n0?bjarQ}v+tVDSuPwZoBeyp0{)OaZ=jJzUj(g4}CNJjQ$!mKiP5IF*UKNvu zn`cC)9N#hLr*Q1txoQP-wypYp#_Uq$-W?992D-f68QQ0_pB*iGTePBc;u^=<89YVd zi}%b7x#@PRqhs@|%Ns&?ZU&?s6W{7+uKs?{&mNQhOSbZ2JiAJ^QqooR#PefUzx_`7!2YPZ?&r=qVk-r2Y+0uFWajl#@&^hp@|f&= zbawqw9l0e(jc#Y zZw2Am$KCQi?{vs9Q`7#D_~=5M#!tmn&YCXkz!NrMPr6uI#Bv!5`0uN3&6q3^8UJLn z$|8kd4;x6-pUAq^&e|PKZxf5>htv8<7QJ=UfC*_W9(R2xE`Mbdr3x%}GIi+t} zgsq?FX7yp3hCQbdnZW2NlE{WF6Xn z?ptEoNzU^@=0Y$3I22Sy@;JvyF>^TWyqp?plNKLZe}B*Onuq5lA1=RdzP4)G_ABRv z87$b3C5SxM(kZ*$(`xUMyTNke8P3SH0w-f8o~oP}5*K{DIl{0^R`~JNoVsM)b?%im zQF>}x$>+C^mKud~<)j zefyOEfl-)j(Jr&8UxNyEsF*m!Z2o$-_<+27LMzMrq7|LZUw`QMc05{WCf+jdyTkNZ zOw)HUoppQo>(s0xz2MoKS&wWJ7lo*7>Dc;UkwA3h3@0nW;JI6a`P4Fu%GD-_o19#@ z^YiJM{zp~JRb~rvE?AUNRwwx^ddp1hNn108qum8$ohN-b(Q+c9Xyu~k*(OzH{(%d6cmM1w*I@@Qmi`9L} z(+e73?()6Zee&f!6RG}1E0#~0nV_!p_@8IuldEf2b3b^T*|Jyr#F5J!=hunYek=dC z-#z=6tV+l>gDkyMeVzJF*+o-hZkA8BSlMH%y?91k{*DD}x6NZpHcfKZbZp+a=ue{l zzi00McYkOt{$TfKcl~GgM}Nb1#7vtO@1JbE`e(E5(K|=hoRV?<`S^9`%JW=ncLs!P z;S=xPv$V_9huJK{*Xq|bm2LYLOMV3na@73L`tf1wqTiOkSuBnxK1`p?F?|*L!bQ@- z0tSmG&EO1qerC$!X>%o~O<#0E|MG#4XFql-DGMvKrYd!upSmSY`#V2R+Uh4ADNHIy zH%ou0of$K&D`S-nAHOE#w#TFW22aPj;lX=j1bN5B04 z`LpQ#W4UF*p8bpAi)8jq$w_AvGfVh69;qDN8Z8!fMfuF0Jpq?&He5Zi>dNaMe-`pTJ{qFl!*JoVLEN9G zns>5U!s6?>b`8gf66T=w05?j);=-3%R#qKVTt<%E3-(!KW3 z@90;j!a(1MC7*Z~UETKlFA6k0x=e(|Cl_ppJ`^qTrt>B)u)xu<| z#c%heFDwII++k7Z%=VgPJ8xc?pvX)Mo&^W~a)i8V2zkeT!qr1TpDWm8x1q+}i5H(- zT4t;?Q+bjwcghR_&yU%QUVamG25;e6QaR;^Gb5bB;FD3Ln~bv~-93oTCiC1Iq9Ii?>z}x%XSQ=Ff5cM~91elfIVL z{JXdQ!G&)7V~?9R|G0Ks{@ByyamTm6+q0(b_uilC??o4G3KCD<=`_c!YjV-WK*^>1 zw1g#JKgeFewa6fyZ2O) z=-Np3;`)UGIkFp@6~1Xn-?aE~;p(JAsk6`VoU4;yYk#mU$MoSQnWDhSZ!0{fr+=EB zU78)%9P}qgGjI8JoBm1t%Qsp{>+I;YteMi!T^;U~pRO*R z!5G?EyFt3Dd*O#|3-by#-PX~QUbF7opVH;LV&ZcjtPX}sz@yL94X^99d$FNl1;;C!B5+~)H}#ja5?Z#V47 zalPH(b}7X2*p=P&{io;3AAj85!@&3OF#q=l`tdd5tKGid4*tGRy!xc^)|uU#1RpK2 ziF^C~xFE-d)0NAUcOIJI6~NV36u$V<#faQQ7wwP#9?LiH&S$CrC*J=^T)cIMk7?4< zJ11v+ah>R$#@*t+(;||)=-|X+iG!A(CNfrP8}F3lTvT?eL`)(^J)vMO!vt}?))hZg zidHgQYTUkLa_DZ)9VRn!R3G0<-M{>ZhjH`St2#U6qI9a_RCX+>x+dumdhvzZ!8H3* ziM={JuU1nz_E+$TNK>-v#zR$`XYM#A;~af-D{J_Y`tEh-qElO<%(DGDZ>`yx z#Tx%`?^*7dMH8Dh7i{3ST>5*4bN2Shvpy>d^C;Rrcm5OG|72E3^Vx|e{kO+yD8)xmDJRt8aanA}ITm@AzG# z`i=MAyq7&H{Qu$XNfDO&pB$9G_uq7eMYiJ|D@Cq}4!P^xLGvUIb<2I^mQU;Mdy=Qp zG1pZy=GmmW4~uRG`R=$PHJA0XuJ>7;d%h+~ev9s$y_vD1WLYa8&nCkUGbNHvs;XRa z{4i5vQq9Yq30{tq(%gjBy4~2V#M$n((eMqgf~>ES)F*}6XOyIW#xfi*YB>EP?(epb zT^UB{h6n5-B=oQ33t8Ur6Aw_nk@e+wpVV|)d4KWs{F`nk{nL2V*ijNIxwxO5Ykjy@ z$thO9r3*CUr=8WwGn$_AD3<@nRE418eO*bnr=FYWvt-eX_*sk$OTO7Myf2d3IDtLC z{(pAF;rIhr>=f+u+J36~U*2m!ecj%`uf;xY+TTvIoZHy^^ICEFdyX@YI`6DICs%Si z+Pe3EpTdTl6W$#0TX|?!(QUsHpkYE4c_B|~3we2UzIZI03KWF*T zI%L`8L$9z`gy$K&*6UM(pS?hrv5Uy_j|4X!2S-G4vh%EImb5t6=Yw!f-d^?4V2 zw(r}=_ww7mxJ^I9|FTXyr}$P}YOV0+L(?txPjf5N?Vb8W=%3*?C8Jq9R>iS9rvKM1 zkbb(qSDte2?ZA)q%_@#y*<&uXyWS=F6)~4{gaf# zE#$)vmpa`y!uq^RonUo-7fV8N;MmC;HNdMYE3g_3Ky4**w3>UX-Ru z?BJ95Dr- zw=};lY`p!vX<@qj4mt6Xxw5SNJ9ldI9E|Kff5%MRhuldmZcRS85 z{qb_m+k9_zflv33tlgQt!?d1P@xP4GOP7m}->hRU*ui(;omE5ayW5H7vKc3;w>tNE zDO(-QZQ1xduIAt2xfOpt8TGuEb$R|uXBwm9gqS$jbbo#;tE>6bcWdT@(wXVvB4z3J z_m}>2|2?+)fTMEQ&*mK_x0|E$|A_2d@}Y67G{fe_>6klCxL&!Rs)^vp>SW=LzP zFLan)%*E$xsC93da=P`#?TMRJrs|zMX=Ot`|oUxI<+*@ca~Vl#NecKl{3Pu#v& zJa+D(a>4mLNy#7OH_r2JG`2MOx9@mC#+&QqM_*0xa5daNqrU&%)T5V{@A-N9bGMwz z<-$NgPQ`6@xluHSC061!epDEZEJIA_h72}ffle6rl7(-*sL zi5v3*=a6kyR(Dxn&nWp#A?x&##cUMFGs8<|$Y-3R;HUH06?iZU>Cq6RWVKKF(+|1ryWp|!~MyWvKlf*S2 z51m@0W(OK(=Cfijsh{Yhy+}kU@^h(aV2;`Mi{RZxlcm;dRkQVB4pRvV{BtwjhU@+( zo;!P$E51xVzirRdxe6U`onv>LS-hFIX|sIWJu{BIxdq`O0nXwlXfzKb=KUQ@kb%t?s%d0XX&R+i;b*u5W_lD;pAua3DoHpI-C#&XI_;)P_}%@kb$1^!OM=X%xemmP14wCn1&uM*j~ zL4fyuPTteJwzD^4IQ0`<=XjrU@!h##r=;F&={vg^?>?)`2#T8VSoT2z%d=Yz5z(Rb z!rdvxfl2#|nZDSUb$Ox29M79*K_OJ{Z9PC5b^Kh znkOdDH*U1O!JdF3|S$x_cPDr+97P2}_H^E92|eJSNd)6CaRCm$?Gl3t`Y zrO4K(-Pd&Uu_-5FRPp4GH4rp-CNC+pAw)Y7d0)ZVI~AnPDQsUTxX-)D?TOiz*55% zE-+cbGI!aV_gfdp&J|O?WyzjX#r{jy`Gwqz)<)yS=j~Yb&Rjh^`Q5GA@kc+M(Pn6X zjcvYssw=+o>Fp;OC8C=*zh__w`=RP`$ni+e>JwR)BTU1^j=t;JeISyjVC!4=@ZWYN z<=+oyzH0s5@!-mquD%m@J**^K@0+X6uB>FN(Xzkx(7tZ*Hm7B>vjQXQrBp*sv3jfz z*H}1F{Cve;MHQi$tKuf_lyB|W`k>;@{fCa_&)z2(bI8xo4o=)-ySMB1yC0@KGCTQ& z)$1nj3zRBUc-*Zx{gl!(PH*0uQ@14>o2zIqN>nvj#yDH#^g8j*5E0ORR-bBpW(K>@ zx8o1}?yv6=Q*acBzFo*2&niF5MeUWVnN@eps*3g=(JuzaRnzA$Fz?IIN;;XUa@jF( z3ePm19S=*wJUdbzsZ6~sa8*HEe&z!W{h6BL@3q@w<|ODzGX&kqU(R2$clv(b_e=A+ z*`L^!KRWR@zP)ep&o3_72N&I%IaT4&`>F}EJ}26)w0j?T|Ea^K{mh+u#?Njaif|Ru z&Sw1a$JirPD7D`Ica^!xO0$w?fLfWTX$cWdi&{yM9FRQ_|6=)d7#7g?#*SeV$b z@TVk?+dYe1-aYX-Azoj>wf^5DRfYq<`)Wn_?LR~uEjH$8QZTz8_iJKr)x^$o z(@J8wZXf4-k>h;fHrscf-4+*FUZ;0fPRg2L!EUivRLxo3b$e$QU&GX<$6?CXKke9h z=j#irJMm#L8EP7@e77ip*N6rj?Y%v5qMphdwI8O1cTTkmo^vywD{g63vRvfsJF&+% z-t7~-`q(J7c~`vJijQ3BU&9{1oO)Uq0&0?!3|Qc5ThQjE}#!m?mzN@mjvB zX7-x!o;@p4cb`f6SKNJ>V;z^_=d+8R=9sB_@dCU)7=-k4$;cb7oD;gjt`bmU^nO zzv(D{u`$6%At~l~R+Z@GeXCXDcdy>e9{WwMhgY`wX3F7z_a;tCN>SD<<65U6te+#g zf9WP)Z4K$H#4C?J6g{_ew)@o-yZ-r)?pfFTH!^gbJuxT#lfuLkw zsq4J8UMYGloTDDO?#Z#NR|_jARrgex#jHNq#rs6n_^i;*dzzqqYJavGGibc>HDOsr?p<8)z3)wy<0hGhPrE@Ih)<+GGKi`! zc=9hju{0nsd-H*q8CSVxyxSL8QvU70UGrNe#s>M7%QogO*;d-!a>`1WQ`hU_I}Z(g zGt1v@h1c&Me|R8OVY<`ob3Nxe^$$F-a|ERGjog@A_LOfo9$=S$*~rDd&s30#91G2=LyHYg?}*JlEAsX@{P-=+_rH z&LWccTU9PQ8t#jYEQz-BpLF@Q$CMn#NB=S$3w<;%ZoJkc*;aEc*;wrC8?k5W=Qe)7 zw0+{!WP_-xf+x-@aRR-`wi8{l?x`Q$YOJlOvdrsz>y>iL4ObRBpO|!bmSX$T8%8$X z*S+lKot;qfz3*K_%I=w-pqcZl>Vn+o85rFBY}meA%$<^vwo24sro{VqvNy%Pr)o(Z zz4O$2hw0;kXT8M>KVMRnSQGYVd3asW<<}DfBGuK-gNI4HF6J?0Z2zA073cT2 z8deH+?v!U@u=s6ZrM7R!^EoP>@jNG6GmcKo-KhXybZ7RaL2LUwO#%6t9b2zfm@MDi zbeWqyChO3G$kYS%TR(5ri>+qX|MNC{qR;V*S8q1E+kN~p&&K(N&x)N%#jkCIv<|7y z?`)j4)~gP-7T~;FXx!qBPAfL#iM`vRc{F!x=`~eN=0kdtmhu)sx%g&&YayR+-KG|4C9^rPe9FCrgbSYESV+T#-6)zLJGYw!d1J zX~$#@?qbm3*hS&~;48CNa2Gjlnq)aiYO>%;M(ZGEzB8$RBfMBQ2*kP+gx1cFkh^{F zzIm5kHUGEolMcjb&MRJSQ17de_4Zyp|1tl%PP^Z_Y{CZj_ZA8sysCOex9UOkyuex= z?GKXH8al#ocb9E`dt}W}W`XJKKGgh|N|hzGq5>n?G=$N+}3n)^Cit#BZl_W|xk*BsJwyF?Z! zh|50BbN9Qr!pnread!TLx$|w6MW6M||6??V{oO+IwiUCYSUey9V{Dl#!?a69sjW1I z|NenJ|E(rzetqm#yGsoC||GOyT`^VpP z?1$aoH6K*bnQ)_by1;Hdo<-Lp`4@ctAYOjgF*GM_YeHYj&S|+nc}`ZjZJQ}QiPQKD zXQc0+C_M)w$D<22i{8D)_2=;F^N+92pYLcS+kP?ww2Dy5{dnf`$pMxZ&K^6E&NX+A z*TvwoZ*Ouef1Z}4ZfX6UZ|4&Eom1p%GK6+6*`IQG$Ch_DK!;_iJXbw>eEW}o;hG+s zA}6hR&~`cc`xNh>cWyd6*FWi3c&9I08zw9)IkQ6Q;mxUS|Ky+Wxi8rAfMdet!tE2D zE(V<}w!!E-8^eO?|DHYbYi7*}IkHS6-6K!zCL6=&8wOwQ#?E-2#1UB>k?Va}d`F{Z zVM*vk!^IZflcwI@uyc~j;{_T&?lp-1*i-#j>DhD^!Oc^mZ>GL(bo{6cHo&0=X|IeA+m)`2!s{OO?zU%JA z>mMj+|5+dJZf2z|<0D@qaP4-~@8)$So@(Mrs>!$4q~5m5X?GM++pgrHB|9;*@LcFp zClz7EnHLnr9m-xGyy8{CssHD0xZ&HqJPa0Ab^LapJM}L{x-U}Hu!>{EgRv!cTs^Qw_T0s&J>5zcd7vr^4DjwfP(ev{^;bBs+yS_Zhl{N z^$N3Jy0hLI=Is~x?z&l4s? zu=m$Z<0|e@5(<_}33EEp(Q5X`YeUXT-eM1_yUZ8L%MYe^BwFreicfJAa=G&2)tiZT zV%quSCQJ2p&UKVyegDR?OZmIKx4OYMhW$04f6th=i{t$r6{d~R9+FpoJDrg-u6n~P zA!*m8?EWtE#T{=Utob}YT;ox1aEnx5z67kyiLORnA7be3<%6TUvL#W&YvM(H_anac1!X8!;> z*ya8HUp70nJD0g@PWUiW;*yd2@=Z5Z2nLqzoUn7|;^5U6-=9)i71nZgcgoqvOVi?+ zoN8jSiyDh%?p^$`V^hnL7u6NQ>~hJ*j_Z1FH=LW-d~I6uu}yrv%H3Z}<(3`vJCQ-0PKesyRlfbBl({rW0i=cbF+mx%FbV>?DPq7qi_R<{$cUXo-Mf>>Rz9 z7o=WD9{aaXuq)5p@{`7nzRi!m@!R++E0#$XKgv0o+P^%d=XPO@$gzX9C$?k@K5CvZ zvpPDqd*a!>DeAJX6yqiZtW*$+I?{UmKbvv*xqtuP?9J_wDX)9}eeLsA?_SNEmsfPd zm+$046X%PoYZX$TEZO`x_UOmNmv@gWm*Jb%!1D3ewT7w9y;o;H5Ni~C!>z8atiMLa z>?70m*P=o!7v;{iHQdmCSkw6=_QtZe#wVlo!$sP)`P!Y!&hz|ET()}myw#r;?b@|^ z)#_h6pMU(%$l(`mAO8RK{||rb>-WcNY^lzC%3Aa5Xgp_Y8GGScwO984)V|E!&&a^B z{J(ID{omW|R)5ZftzGAB6i{g0m$^fwIcdpTiHsFX7asAjUvoyB>(7K7B^N&TE3rTC zEY1G$wf>iN%JxYGYhDN%wHK878MoL3oxVjS=kjW}+xu_dD!cz@ zdQO^T%rha0Ou@BxnGWbM_=I=76Q3o0mh**i=F-QB4~tB8=&;(c7jT=jC^>kG9N8=) z(dlL9K8yQrC-d7*?#<7f>K{2(KROh~?$6yW_}ncuv9e0>=)pxgk8P&6mx*mh7Ir+3|D*r$ z<@7pLkz2AySNxUOdV4?n^{mFE;1hQLqXop`Z9<+OU%z4PnyYMWdF;iWeUB%FTq#ob z*}XJ8VMcFb(h~W3Z+9yh2N{~F->oy&_y6Jz_@)nkUp3MJ2z5aLm1)cn)qPH`r zfApUJH&kbdxUlmHj+V(T0VjI6<_0QW@pfP6^LDRodPT&ElF2Yg7YZBVFX9K(8V%2^9+ti(MJ2Gs}9x$`KBA3p{@Kyb0r(ON8616Gc*DvSi z?<&(2)qBj;#P>l>CXSs&STC13GxtID$8$^>(^+4ib1Zm1Fm^t5wFg5y!_Ymi*w}qk4zRe~!;@1byY2x3Y$9jcvr24`SDgYvnKNe;1wqY-7R8k~g(3 zI;t|Mi&{GuEqs0P!ne%lFJzW|stS2?XZ?q-fi6dP1U&ouVzKzSs|sl)Cw|&K(UW@6 zs%EkA=6B0J^T>$%6IZUN)ToO5*am5rTLFXlXy zdKtsfV%X7E+5M8K?%8LT1dFaCoD&(^id>mKCM~H*!oucB0 zZ&II#bGb~hVbr)<{o^Em-S*&&=YN*R9bKCJzbB_crfuK8iwC~>zkmF2?d-Spd-FUM z=ko1P-CJ+`e)|?SIors?ZkfFQUpzlv{9btBrnBtzU-l;yzO=OY|7bmr`VSMi1$ED7 zv&R{vM+6q#x$rh&Q|m_7Wy_byZ?f&GR(_GxV==^Nrp6%l|RGekYs%@x>>L_?=Ckw?1zZ()m7HrE$yr4>MI}oKs4f z=rH5QtllrHd*>N^y(zBD#2_Y=;oiklVe-an{pz@#>4$oH%%k>pp7Kq7_FOwNSy`{f zVy=P&pYWq>Q@H~hXT{y~-psl9Te3yk=6um2`K#X!tut+Jd%P<^S3GJnm-BUx=J`rR zd7?V=ZRSg=Z0ITy407tT3)GwNr?y4e-Q>*gL!Z|_y0rDag8DOqE}qfe0eUx5WeM9H&akos~{&{z#SAF`{x_SEY zY2|$dEx)Hl-#^xTyZ(lxeCO_>|2Ly{x3B#@&tT`)ZEb6R@BMq^&rBx0xZQ2t*W(V% zyn1zI_~U!}9RZeXYkTbv-aCH(t61qLS5S5Eds0vQ-H-)#c|1Br!Xm1{-bPE7^8A={ z3QI*B-PV|KIoRyR;v1BW*as6DId%x1={P!fcoo0&Zm3+0^dbi9REAuPK;?o`%&pO$CQtwjTyFjH5p)|)JK{4Ok zN8eowd%o@Tt%4(BIhWhQzH^=4z%8b6@NLZLgq)7_m$kp&taCiLYE$FB?d8EOqLv@7 z*hqX>XgAB-znuAKPUwO+>kgOMZoHn6b8zb}rbS_q?XPzg-1;89dvBsKkFVns%K{$m zzGaFZWFlrcc}dKc%-MXx0l;9cRbIRrxQDUq8K_|LxWpDib!zr)Cw<*tHo@Ec9hn^y95x9^mb!jh6TX#AZtAZbTr7NFi}&??UcY8Weo++Mo>G~syY0o<*45#KX-|vP_b-`YDfgLEDWq@HiA}Rs z-2G=OVS2uG+O7|&Df4Pe)mV$$L{)#X3SOFY=cM|{=S%l3da|Nv$$aaeyyrbWoRtP; zY`yLCqV-=?d~yD!R%*q@I&Vd?;S2?P&x8;W?ye-?uisaM@Jh6Wf4tJlCj78CZ6OQ$ zUDtKIykb@7S9c1<2$-KuJQCyob?<$>?uL0f6Rf`eTeRZqhVNh7IhVeFF2$?c&|c8a zd#c<0MQXsjTMC}8p>DNr>UJERe4^fr{bR`uTg@jK9nX_oj$XFXP}3x|?m?+7B-|>&Cj_>$lot2LxUPCIne-a4LV3zCpRz)wC9DT#-4dCm*wrVp3bf)cx}C6x^4QLJsX;?PQRz%w>+|wJ(uy4e!ye- z&C&PLerqT#iFdrse>N>hvqOB(MwOF-lI{lcpBPNt?yoCSxNk?7_W3;yTKV%E3@;hY zQnt^(z;>%S`u?$FbKjS0HP5gA7dq$vmGzT+w{uEd(|y@q`1`+nct?Px%CB$ni|d}x zHrAYx9AY}<-IauCqA&Q%6LXHVzcDIix?!wYke7^B!;Ef(wPVp+WIz?$m0(XSs~d%@e2e(=fWxBD#(cK&>q z^6QS0&*g)0hnps!m-W~!_{9D0dF8haX}9wnqL`=O>a4x9#vpq6LyMD6le4)EqL;hp z$Di$Xw%@kY{>Zg^^A|78FX>y_+I?b~U3<>2&BFEWez(|MS5MySmc=fznEz|UwA;+e zZ)AV{TRq<+%f9D6ho_KR?A&iISD8~j{w!wycJH|D^PEXH&Maru(K&8?SUh>oe)fkd z{bDMw1bepa^>w&=$9eNVhQ5{CesAD9Gwr+0?U04ds*1g}N@yaDp z4bF8Jqkg8<++M%tpxJEpe{&<^+U^`bc>BEWt(|2>tC_`DsVu3pa$)r{j6JY4JKnYM z>**&?dK&c&j&V*nEVi7p*H}RoVuOuXOFbMSbB-~!=kn+cU-FWu{j1D?2d9e?&-Mx zQ^0AFGhNKJv)c;G#kX127#Bo}o!hg$qF9x4-4os|d1Z2X&pFlERc)9K)U4~8l5=Qj zX+TVL%+l5iRmH2PIv~x>N>Qd>J%wC}@-|kOa=&*8~?-#pIhrHB}SW2nM^3*@8_<6#oF1J*A z+cw_lyNzq}4(Hf3WSj22ee1(t505=(YIl8?5H#Wc@8tF}PCxJ!XZIb)hhN(*=h*E@ zc&k5)FN)!~;hVO@iQ++~OIzmu`A}}nv~+&^r$3+93z-Kqe9mM|TYBr?ZSMVS$I9)? zo_)$?6k-TEUzvMeKZv>KS<9Q_m!mkRR!Pd&7YX-!Wy@YqkvUj1X}MUJ`o2%w>T_K@ zZ|Qgm@tQ8Z;<>aSg!9~Fw}%^Y7Pwws!?KujkswQZ{` zK`lmx`#;|`-#d25_SpGn_uGzKOR!S9CKZ3A`ItV>evb{ZDI&QGG%_!W^u%yo+r#oX zMC#cbj`p{rQ!{_{O!P}-3b-EO;g_Z1)4L|-foL4T3}ze(6;b5*Q7f&QaRUz zbuNkTY312If$_TCv{+q*`Qpod?fz)fTa&lrPV%b2#;g$Mol@Vg_|DjNYiE9l(Id-( zHR@ZuYUDKU&92zs!&Mw)-lMO-e%=YbMN3UTh}VCw{d4sGUrn>q->r|&-(A9M|9^A* zvGaRBEET@n$hSK(P)l{U2k&9WrIq$O??!)5yuJ5&?j(aMfkhh4Ix72iS7&YI+2F@! zG@scw`0neuv)UVeUMLQ}B6(p(-2O}JFBv7;=qzSjT4i6hNPf;8|6Q-=>&CqOc6R6K zxt%K|G~0?U9hQt;&AIvE*~l9AW%_A-k52LQ9?iWtDe3ZqXL~+;TCn0|>a_Gp&)N!p ztovH0x1cWX;<-oL{5Ae2Ml<*~C$e4*xNp{!A@Jrs&(@|(x4s8f)*RmL7Ae?$dVj}J z@Bfk#W>??2_vdHS2ZUTPGkdt@sN3UA)@Q-_yas)rHyX=V=Ba-8{)Xj*gB(iucfHm+iRnO`bWr{)sME%jX4pf65Dv7I5U+ z9dCYa>v%CtcSXObMz-k|GwA?%ZG%;N*BwjbzPqA|wQcExm(QFtLRi~&a~pgN)8G8; z&>G8(e^(mgn9i(Xe(U)?oj1(=tM($c?o&LIZ|7b6;go!Og_Eh4qT!}hJ=<{GL@+vWtkW@y-JE4=LKS3!}bhf+@)@TjZoQsZ3Mw8!%EdzH`Ux7kY{C^UJtM76-j z+@&jd$ptqih9`b6(hgZTxlDR-V?_yTn`bOb(k=$W;1B=!LPFDi@;ur0`=!QCnf@pF zclq?$cQq}0e~pD<@wdqzTV|dyda*6z<@1XyhYqEE$Y)Btvu~AQ%i}7Ek0$H(zt&zP zQ;>J*Z%RmFu?Ty1h7U&%^R;(!Z}z_XbLhsc#>KDa{$3NCFH>Z~d#ubn-gv+DEbX3Y zNBs7=zYCFzvA*TK=fTsaFaPDtS*q{sELj>Rr!{@a`$>BO-iU3VS@xo=#BYMj;wt?> z0Usej+mEjjT8^j)8fGpw_B5IDM9DMQ&~0{A$@A*DuO8I>JLMg|-|E_HX!(%zd`WHj zg}pDiXFFa`o3lca=b_&AyORnP?{uGEx8TCM1GOJ-ZB>r$thQHlN@a<@>-N_EpWK?Z z?F**Q{~3DX{JvY&7w@chzMHdPW0-XG6q8w2uU?Cq^y-?tN}W-{ZFZR@+(6hq{kA17pDJ+foZw-ouG^Rz zIF9o7HTVQWpCTM?B7jaUEa2ZOvcL{;$K`Sc=mp{rTy? zKMt;4S#zvr+k_pFGbR~X#J>@pzG%_$pO3gSR~a5#w8zkitNYi4%9nrYYSSOHZ(!~& z@jK->se6H>U1H1*-?}NBM>;bXO6o=|V>}zMP+H69bi+FJ?+cmq9R-3OM966dvK{Aq z5K;G|EOcM#l5>>>#>O6#gbk%4A38siZ5Q{|e0VQ@f9rB-`<(x6tZV)?n-~0g^qhZ5 zKHs;!7kz&f%KY0luX*9BjJK--ZadCB+r@o*!2>Hz5xxI8<~`M^UvGpwy64{!AUQ|C z<|jk7{C~xm)vRtdy+8f`i~VTzFL&|W&$RuQMO}~L@rk!p5c7!o`>BA7qC6|{UyqLM<_M^v%rxV3Qm9$Su>FjQ` zE#2{fJHF-1;q}dYCn_^Jb(CdSeG{ARPu^oMX7kpmGGkgBYEj(MUuuZw97nQ}_ zm%KQW$#*u>=}#xpicaXyIl5<#bKOFTStY!yd~VHkSU17*M9YuLz9jLJ^Y8f7`K>ki z_PUSzyy1*!j^_u@q^TCfY+vuQly%9ahn#<2UcQ{Iy!)#d&*9~aJ#&m1enVABjvXh%u?RH0^?$30sv-Lw&nGp7 zqM94EAF#BZec;xovdq84Zck?LuK%?*yFTyrXXt9ig#7n;w~y|) z{&|MNv2T1avF(Q~3@$I$f2Dh|LAh%79FgOVNjKl!P~%$g;+w>Ig9WX5Q^bV}tc3*2 zez`nn@nm_c$*iUiYw^FLn2ayR-KN$FB_8@cql= zZ?|F?)mJ7|W-Yn?CH8gDZ!5_s7gS0Vom6ei9seG`-?Hzs`904>d*;>u{4Z3cIPQ$^ ze_wI_RD!r`0k=#@XzR%vD{OBxUNi})-oV@;c0@^GUaEqvb7TC115Y1GZ;MSo7$te& z!36uQJm=;*Km6I<{_4-KbH^757m2v1_~qAbn3wF47Bu6P?VPvuvu zE-zQ$tLd-bDX{hLI9j?i?9k(tjaHY7WZP?rrBn#v+l{Bo4u|j=G~t1c`{D4Ldg^9=@ypCJ7K^gD%)A~>cdd_4+!pw~FO?b$b^{Yi(QIzwz%E!4l`Ai!Vu)NsGSGI=S=X^QSV;j4bEquSv3- ze7r_Y{&m(ovB%Hy%(BXVZ9jdC*&=z@%jJw`mmOe}`B{5g<>bTh z-uMQ5+s)w{P{U&-^Vi@+X2?v|N5%7dcHh2HtjF&tad^c-pM}r2l`o9SV&3f~y1SQ4 zYpc+=DOx_OtM7g=X7(}8>6bR%*DFK@fscOWxbFXFrKg>~EPdo?#RaLH(#`t93Vx&Hl~ zyQ>eEO5RBN{%4h0FMIS}y|0;_+=sdNJ@?lJw0KnA3p|jy@`7CMH&NC_O%8K3Dlgqk z<#}Ux*KYs87dLqC+)InTu=1VhPY(`mR@a%WH_C#%d0Ly!l!`x9YF=|i)J8vb`Hb}2 zCmV}wkDDDWOt>WOU>rNKBW=@yo2>7vZ1wg+X4=^&z!N}UhpsG#7d9l zDjm-cJ0%5Vuza(h{@C%u$L8pamA!tgZ@t!<6fj#v+&DJh+}FB4C4)~wQ0#Gw%i>>; z8_!#3emOl`rsOq$)t^LP|Duo$J#2D!e(}lueR99#_%CJwoyChlqgiI_pO~yF`2A?< zrE|>kXI5KwdEfC56f8}Xd*=0gvQx_`v+wtQ)n+X9HZYacjcr}EZGn`oiSkdEBb!Bz zY&Q9!)cVDU{bS9amy0v`G!^+HwUkt!9NcWA^6){iMwqfv%IOt+PrG{B(th`y_{($p zTWs$>hRl}-xob<*BTekR3d|>k%$$37(esOw%a}f1vb|Gn5W_CZW8b~&P}e5)oMR7X zY4sd)d-QtM)&44%V}8#wLL7Eq>-^p8wl+cPc%nzV!S0jqRBwc=($2Z1XY!jVW)|bo zSGkJL?aC<+3~Vyiv9^76aq(K_;Jw&7`j3;NBm1uXoGPk2Ex+Zb>y4!D+@0nmPsv*Hwv@mk2bwvvX!!mjr%VV z`ZP14Zew%SW}~g&AqJysu! zUEYQ4TQ2)GSNS=ATmVxh z>VKvD_?VR}T&BG<-tL8OM}p%Fg~GmP2@_{DzcB7QBolIV*4%w(`u$#pC*FSkY3b^? zUClXy;^*Sr>J}P=?P^}JK|(}8b~ESdx%v_eGOKT{oN1u_qt*ZGeBm^`)}Vqn=JzZs z46Y=rpImCQZGzCrgLf>`W4_NhnwvJaIb~M==T&*aEw!BGyLZp8cWnF9 z!?4ez@${|&Ls<;1HKNhudZUq0{XS-sAh`_G*IeH<^_ z;lqZR#woas* zY3~JPE*I9uW}aN1Q=+e}n-?8f+9#2=&`zuF=&gkM>F3ML85S?RxVcEt)%BG^+3Ks4 zyZK947wpNteB)-LcR1rJ?VO-JY+e^0SnzcJ6DiW_+9C-EYRjG(n znel}(-&56R1XCt|zqQ!S`bN^8o!{iL6Z$_MyC56Z>eoNbs<~WZj^SQA{p8Olteno9 z*58|vvu>V>QrWMT6U$l_hHcng%f9xSRmn+jT~}izKi$18mrw8S`0`V>a$^>B-AHTPE6Ow&I*WCSG5x4s6GnbQhr{wD?H+Zq% zY5ilfBZM*M_Dz3o%YY=gNfVfzKfC{$b#;o6+})pY^Va;$RIli`3CCC3;`bvxd*+`A%iyAi+r!>?img;y-yW*xcIbi9zD6x^*WONbHoaR9ftmvbc7l z=GCo7m`wJHPoMtSZ%X%sTa_|TJmlC9eN@qy^rI=wzAz=?4`=3^+8{RZq<7x4w#bRA zasHkk^1?bZWEERa*}1bpCxwHW7Nsp+bl4>JgQUMl;?LL%bGGkzD@6HwO*~uJ8t_WTmi#Wzt7?AtqfF_S$wajJgXow7ep=5J;^y7a*4 z^xWGfv*%StafYrxP5~niZ`Il{4D3whzGrQ zFC;Hht*|oT?w-)}` zZ-39d)3+$*1;@0)?5@W;UVfYEJ_m33x$aD1>zTs>QGP966;4n4?S9%n7B6Yqp8T-A z@V$9xDzENhuB$6}Vm+ zkX84VY!AAaDB<@aV&|Kum%kkK_5%&vE4D9F$nX0yZ>OB#W$)hy*G36eFRoMpE0aMpsBxP__83x9;9FSJfroV-6~ z;bWsLzFRw#^pDpvKl6zDzO`VU<>rli<`dRiMx@GSwD)T9FaIUE=wau@3CA)%cGXor z_%?gmwF8UQ=PeK|Y54u{`Q=lqIlqKCpHF)hc>kAR*)@BIV{g9g<(Yo$=2iX2e?G6D z-0S zqu|2L6CK?P%j8Q;+}_VN3tVWZW#o3$HMJ}6XySyWKQ?xz8$a0jgLm&4k?XfNN9^ve z=F2_q;QhWdKWH1&cOYdgJp%eUpA$t2l>lb)uY_`ILxx>f(HV`kgl z-M9X@=*f<#vno!@!N@a+vXcz zig$VTlD*1L8F6Q%fE)Q5MIZrz{ zqan>?!y&#!0mF2OR%rX(p4WK1te3B=B?^WYHK}V zH23U`&69W=zaQ&0Np9LGEnLg4fBZqw0^Ks%zL+%0kmwonmp;gd@Y3M9B`j~Nc&eym zMU{C}-mQ18^QKm_9A08tFsb20@l0mlO1ED>^X%8<+$l?jGlSp+vDvUE!3YMdmF8>{_f#xf8`TD zpS!={mx0~adw*s!J?myw^78BSZ1suX@TL22$=USB+%sKP+;M+YubH)+kPDX%OOIIrMMRlMZA#i4I{tsIUY6*uGE%C&S?+y4JA&R@Ls)#ctS$Acv?8xGl26w1AR z>TYZ)U+8*rkxT0Zg+kWrzYIMRzG$A(aoIN8JM@W$$kTO)y%IF$Ox-K9Q0BCqB6#!ic>ZrM z!?L;i?BW{tEZC6wq1a(}@2na&zuPBwuKsZ2_KF1`S9JY4%q7*Y6)^u;_lHY+I11yO zt)3_S(`kJ)_56cR_J4dQ{mQk!?Gt_C3-`a0#Tln%zh?{W|M9xs^4<>rmQyc{vv!zy zchB(FP4tUuI`aIxYJSSz8tp3&LYA6bkUUwCneu71Y-`N9ST^kwOC~D_aI|O&uQicY zw_HbN%7_e5-cHy(04eV|AnSEbB z2s+#?T71cJgOAp>RX^|aT%IPt(Q;Er)H=76z3j+M;o386?#%7{{NYSdQtIQ39lIBX z-ID(0pRgj-WNY5VJt5Cz{Ph1TZE8K=l*oK^+bzC}D=Z{*y_SJG`QM%1+pj*J3*DvBmKa$A`jiP2j`w9&a{ep zUC+MxlfZ_($Bi%97`2{P-2bQ8BX$1U9mbV@YS&NN39pU0x1ws|_TE!c`##+NbF<pGN=ORJp-P#($6H!YdJ3GI z&wQD0bY4p8|@17oSfc#cBlJ~ajr96D$8?lS)?1yIymSrA%cIm;V=MSERGZ?;pDb;w$anb~4Z|+<{Fb_(-Vi>)_w zdSq}t_x0ngGi&prgq$m-7B@W(JoWO1ez_V$NSV3AMz`gwDmQQlsOL4OwU@8<$Pr|k z-=_1d`p(SXfmi1^D9G40B~IA3)M@29$CYaq2F5lo&TVuopLgJsQP5{`#Z#_JHj7su zx}SV}VQpClpR<9_uJ8Nq75rLpfa8sSXx97;x#J5~NSu9a!8<+KV2M?fs->`&+@$$C zDo(7C+>-b9Oy;eN4egzUuk|Nn^xWLEwT!=N^Uamp-iAN$OZs?osvn=H{_-bUM|zf9 zvY0QNbZ6G%JfoL?Y&2$Zit=!^&6iHnE7;4e$i8|1OoLt~$Ci%@PD|}qY`r^SpK;NZ zKNBr~emZj)wEU>Hd`bKPwdk6M5hCk7h2)~juk-buaIlbk6QHE!TfA!hPmlBkd;?y~|63;b%0_z;lkx>Iq4VwiAD4f6;P>=! z|IUIMtUUizH-qwzIq4kbb#0%G}_nU`8=j{8yI%nUH${>a!reC7HjE5AjZd?1kH%Pk5$FIOr zs*U-$Pvb)7#HVLwPK>|buO;y_X2EsYHxA9ML5CiD7YP23OPl|jz6ecuU>s`|J2hb#JDXsTispZV;}0V z!C}tYJm=N-n-{)s+9qmnB|}Z5JuUHL@x9mVMOm+M6)!K1-0;ar!tF(f9e-YeK>D*B z1t(RT>reLo{{7$X+rET<9{YEFtK**3`zq>wl9{7p(3I{8pI5hEl9epgJhpSjqDMy^ zIfV{hIC-N{^HH8uo2}QezqWcMIpynH_wN0m_dM>*#<_E2U+lUn<|O8D@lFnVo@ax~ z#|tZS&ev*cR)%+`WpFS_zx*qE;7wO0k8^YCi%$E+cZ1aHc+#}m)XuHSa^ z`a;c|g#7Ca66fb~E|~3I>{71A@F9e;#=6H)e|^*Qm*?1?2FAAtaH#Xzs|KyD5$-)D zHRaV_xx`5iFGXnVYw*bvz4?e+g@3m`pNor|^`j(~hG}t)t4djoFRwdvw8X49H@GRc z^mml={O0WH$J;VDt$0(STprcMb31AIr+ss_@Xoq;xHxtnW7v&epN6eB?wlz+e?Pw@ zb%$@j?HSE$+n-xY?)+|J#KWp7YIp9l35%W0_UTVg)-!LGy=kFUz1BD4+(Xg)-%Hnc z3b{2G_rG|oKC_+W?!k#W(@>r~FaZ5G|Wxi#syW@W^U${)-*cmLO4xbrXiy;Vv? zfl2R`KdwuHj4J$?T#XH~>?Qa5ev;g=PkHm)Nhi`=BXYQyrZWbyb_6l%=x(_?gX!c< zOEs4jIiC;C{Vy0~9dn!i>b&_MnN;-JQ|#N9%+PZCGw&2mShR}MW^5{s1{ zuaW64>|5&YCU)rOJ-+#ZEFaSS7GEm}%-zA5*z{IV{>rr8v&TOk3N=~sGxI1{Rz3?; zV?mB(xu28QES;-PddHRL&!3mDYnM^Qq4Y?-vhQd7{;yj#Z^z9Hvxl4JSuB(i{cuSx zV%jT?S&uDD7#of+J=dgrxh&`0Nh7f*pYMKl(3&f+X(qoq;I`}1zQ@01({-F1Q#CG3 z5h~fr#@ZIV{GTnaZ_B#wyOrg^ZK-8Pb=I1S3rR?See)ul z#f@FP_4DLooZXl1_`N?S8qMbVzJJAuM9XhG9vqW@zGCx&2@hTsb1zV6D{|rY2KAA@ zyK`xX9r^G!>HF^wHnO|eQfAKWx?ss+-?d3T?nO<_jgJb7TUXt&pYTs#tHo*?uXAXl z7;p7?$Gu-zrsXY&Tze=?cg5_z*Q+1zYvK-HU)FLW(o!Yen$Kjz=MU^RZvJ4Lm-ok@ z~p(THBX*!nLjk zYF)M3o`1jYLi`-TO9DGe=CjVY!|6O-Mb6v%ZsU(nuWp{ZudUs#o%874-{$hpRjYc> zo;@kneRWk|R_~itJ-P}a-fvx}^!c3YW|)w|I_VAr!x`O>1DucN-rsx5^2bHbSNAk` zY~z^4mJ{5tYz`Z1L#n2ZsNTWSmYFsCy^czFu~_N|DE2!@Ec|bEwMpT|WZU>JNBnLl zCEk3vbLGO;R`t^&3LG+*G#$JG3v?K_UEM7=WA@_%8yhe9+&g{$WTDA3qkGjau2l8U zUZ42Kq~vy4RKVJsVliL17q;~swYVLjCi;59Z2Lp&eycn*o-uE!@w6?Mx3FkVU;aFU zr)$opGfI;m-byZxc%b8Qu)YUh91uRyd+WVt4#fk6Y-;(}gx!aCeI((jZT()gd z`@W3GUH_M_n4aJMZgTPJ2#q}rt&dDoxUc`3b>PpOV;3(JN8fIHE3u*6U3_`%^kvT6 z3!W-zbTQ74WILLs;FYeBwtkL>yPBZZ@}6Z=7KH3&x#O9r>bR+OwZPLw>Rx>hCiH}L z@N)ItI+mucVz;mHV zmgQkBDo1x$$sBJ@?X_=xSG%wEjwY9l{K>VhHy3E=ZaPt#c>7*)rW?DfWwZL9DZI0; z_TR~WAf**^ye(V0K$p319n(72;{lAz`#Ic=7gTa?QD}Y^yr6EXZDr=@3{{%&U$KV$8NjA)xL&t4YnUw-!Br9*)s z)9m<-g`VYTEH|{DKJ&)k`R6~L@SRcQYSot3m|^E{U)sIhkGp%(<$|hbMK$U&wiymKb?&tKd&*Hvi#exvCWkNZnDG9R$(Q9Drt(_!@rJKwI`+!jR-LY+te=_%(#}0g7R_26?yyluyt?{sp^u?`W8N0| z<9P?S%r@}7t}URFcd(G*cA?^uvI7O1%WYqs(!9YbJz?6k#--=^Yk0THmHC`GtNJ{6 z+g4YLZyA0UcUp?+SX+4RvrF0W#v*M%x3A9Q|2lKVmCOdw17~9ybkiKWKPO!3 zUNEC9dfRix@-2JrO*+z)xN_y3%~K}0m+6^aD_(qcnf3L^-3%`jcO*s)`yYa7qo=V}5eQJ|m>i4jn zl{oMvc-I%_z+LwjFTFLlSL$||v)=CqkKOF!L)5Lh5?A=0n*HKqq+7t+btf{yv@))( z3eXbO2z~!QZR@3f`~R2DKlgOPxu*dUdwJr#5)(5yxu2hV`18D;-_y^bNnE_gEgcs3 z8|#Yl=9ZbNKa!bU*xL8#&V}MjLQ>Z9rCh6ya!z0LX6e1ppTy#4R|T5dAGwo}cPPLt z(V9&sm3iIOmh6=YUv7D_NKsC z=d~r9gWsrqYuVIo@V4^C7114EG$nQyZ+NpgV*RIr64|`lAD_=sE6Ww+t*Ym~x5h>~ zUpg+f*M6VKN#C;n`@ZkJY}DH0^Z40Xf2V%_dtp*i*WUT(FABDp?5e0>5)-G}#&&ka z;=>ekYJGPb5I zs!{lc$F(W%_MA78GU#=CuHK( zGoQJ~;?{d$^N6N%F@}QTaNAvT`!h6{c zZ}3=p;+fXN1W7gZ^(uxDQIme%mw(K+?T(a7 zB6+{p?hiIFPrTP~BuB+A-96Ir^oitf+x}hKTJByG^07AkSiaNZer(NeOX=cb5kLL2 z&5sT>KM!)6*sSt!W5}w7G4FOUdOeNOke{p0vSQ)wg95KSJ(jbsVRLEd(J5nLI&k}B zbnMG}dSc=o%v}Ww{T;$XIWdGZQ6pZRd?6V>WY|HILqZa%VGgjEgvU?S+90{-2VR|V@TwNn8!OCp<>4xVwKO`3=Za%*x+wFGQ#jM@N zxu@Ue{A2BxZo53W+qf%xcEQ!y9orb)Z?`7TEVvSTAm^amgtjvi^qZGSe$eDJIovRL z&;Ot2{y(1k{HE3e; z=98~iz7oCB*Ldxo|HBv70bjW?ma-fUIxs`)#x@R{RSP^fY8K>vEV5_yRSG$D`{UpG z|NY?y3_l8gnKtipi$^Kv?pKv>R(WSgRX%yk#bPcKHKkDWiP)|rC2M>3uH=tC*BI)b znPfQT$e(}k#dx{fx$cV@84DX1EnE>1{rcWJ%^pEPHTBfgr3{hNn3(@8-N*coTVLir z=K;?{8$=|Y6*SLz`y$}$#ZMbvrZKmf{!>`BLiLlfqNPvHi<64l&JWy*D?iWSnJ4?t z5;UhKpJTURNkPf`_j%E?RAgj7xSV;A=5yt%>|6cL6P_099=mSo-S+w?4SF z_TT#CH*a3QUprGMXF6xkbD@yCt%(sEa-_O$y?rmOD>uzo{$$zTg5KFDU+3jsx^N}V z&``?Ngzqs|)y0ij0!JbWHgV>OsjqdfZPKh?W_sOAX~#jH7W0|bZ?|38Yn#)huok=_ zZt=d&-N(!A+tz8^_?g0+)zT46+$h21R zs8h02Af6t3u{ZRT;vouIN3m|@KDkn3t{thXNq_hX7a5(QL4fD^MV_@^XHBIhS5_O9_q<{ zI@|X6qS?FCie(E9JxWmCq#?e-C?li&-}ZIpE>~vl{kvq@W{uD)@%*J(Y*9;2oNf*( zdp6&Am!=)p%o%mXA!?;JC)zw`IrPIsO6r=DQo2EuTHZTWAH9lA>pCk>72BjOP?(-L zQ84qvEc17TWx`W#N&K*Kvg$Qny;|U@&x?B3=M$sjI75B;#RP+-#HKu}ur#Y>ocuiV z$!DkU@3$$w(h%eI67qb1_r2{rm9}%YJYRLs>&rc`vD71mRVch^skXrutxGYiMeEo$ z%sX)MqSd8Cd~-^6O@2OUdQm~7nAq#4MUe(;Sh~`_*{)yy_?Ey76N#vX*SF^GoSS_6 zL9Xzcw`U7kw(_+-b8b>g*I4i?L%g;Ai+ggdn^MRx-aqW}4l!TqbgWbz_guK2B`w0g zc-^s}m2E+mGJdveKV&Mzh@=JlFqx_2n||?H{ztP6Me(YAYx$=#{M{h9J;6t;(yja} zXAYZ-jSrWcJMe7R zw+rXLy8L+9E*o{CVdApcr>7@b8oUe^-p_a3!(;xwNq448h?U%BkrAAty)Y_tfppsQ zeO{_}&WC96-uZd)!`t;yTLW%N?h)4g9=StZ_rznC3+p-@S}y!OQr2^%@aP7qjgLbw zMVPG0HtbrgU0{;>p!DD-p&0MhiyuBEe#+TVzg&YYtGg++vbKG(ZR^_iOfO2OZH=;e zQ&yKRCB^b8Bkz}u2EU%$mj|AkI3hGsE*cqSNd5hNcy8PFiDsS^IVF0QpBBxuc*DVR zi1Bg0!R)naQ!XjzJuz3Yc?$2e4Qu6MQwwk@SNz-Rc`7>_5@wDu4mU?KK=CLOzs+&EjnVm=PSOr zapvidgbC(Z7UzF?C6YX0*nGJ0+$R*%;z?~OTQ)WxmpQT+U1 zfl!Rw;hWqg>gs9?7L#sFzHYql#l<(Ds)9tA`=%Y(!RK;1d%EUnw$}_juOFSV|8xI% zb*xfI)t?9L_BYKp8tw{~nd>v@!^;VoV$Nxm zvJH=nY`IS;czu=AQMR1lm1=T9!fD3pschVBUZrO@pBLs(7b&azRq3HWQRte0i- zZ`{AVHSueu-r)-qmTZXjUR?ECOY^9*>eu&=OQyEwUKXg}TQ2_G?cbVWNzP*BkXy2< zE#(iCjs+#Usr6R9O?>pY-FNlGA9Y{VlkKnHvYqGmUgdehlobXiKI;_i{4gUT-2dQ~ z!*5GVO>5RlIQgYp zJWH#e=aRy##O=k_%33q#Z&o~8$+qWc3^&vLdkSs5X5xBYD{k|?_!d`Dcld^|xbd$` zSM&S6-t7pu`Rw_>%l{LX9RFTy>Q)>lGyTKMx`nGJceJ(Z?q49DH%sRpuMnqk?K}CS zxe@x`BR*-b?yJw*Z9MB%?lmWM0r|kscbWg(~~{(|F{0nU31>O<&@d~KimJ6t}r;0 zxZdHezsZ~DVsFB?JTYif{a!5oiTP0LZ_c)ZHsQ@I2Q`{moDw!Pe^}Aca`VvDecw0N zu+6;l>cH_6KMz{Q81D?-P{YP@$TRgy2{x9y!u1aZ!*mq>EF8F10{erKAo5lV~ z*{?T5B_5xjdb428zhM5hLdH|AuXjkK&w8}uUUB={+WzjR zJw;3ZzSUS9dM-BVlw+24lY+ zr2qc|ntHzHcI{~PJi|nLmJ@%Kv`W}MFJ|6+^72dKAn9pimLsX;G3TKr^k7nS8VZgx53^Uf&3 zE^>wFQ>7z5pPD`{+3}x)1+*qXfP>{w1`BAn#)$~f$ackRleG&IUjIvB>sjzw@Wn3q zy{3VJpI!5PA9qh`IXJ~Du~7I$X<60rwBX*k&nusNzB}iGq-FD#JEE4XjqZB#=Op8G z&XjGwyiIq-TDJ$rn;uk(>6KjAo4M)XA(p4d@-=n`e1C4Pb3N_TEs3n-dztRpla?x|PWx4| zvhZAJ(Z3H~OPMbF=(R;wU9$haBTs5Ym{xGU{_d|2SM?b4v`@KW+rDSQv6+XG)aUZI zI^%7o4PAir9@O^UVT8`*)0Y&!>N}dp7Rr%isG+YTw6)-aoFLzPWPm zQ624gqZp}~ibY>q>t-kx{dbiVc_rPhBCdEUMZMcW0U8xD^}jk>E*|F{fU)=C=#o~z^eJzU*B(9bfQjI9I?elVNPgHsCra$#}I9oWV3HRX7vxAR3 zPWBsa*qeOjOHIw!>-xQ4_b4ldWR>4P`u2@>#p5oH2VCp+haI^6{!Z(+Pu?@aVpnAE zmx(u<+wuaG!5cyDXjy!21Jhj6Oj;euVQQu9`~AVkrkbxyn5B00{Qu4O6~v_)9d2

j}38%@y@Nj`9B>_Gur4V?mLQQI6ZZC?xuDTo?(@-%mC8KgA z&=YJJk`$keQiz=Swfje3>+3HL&{z<#qbYn}sr1)xv0wT3_f4NZedC@QR{i}S?M~J9 zWtZPSbozAbx7R5XMK@QxT)X?ppGjpxmT|}1zBFe z+xLI<+C4Ys;8*kflDPH)q1z{|?)^OF9dWKpVEvv(=|(%{m9c^z)-ShBe)7#(;q8*k za=-TQHEx;gXT7q%!#wU&e7dCm-hX=6Jm)*z@_h7TQ{VRW;tFxK!rMKq72m4d^4r4y z@zOU99 z7u5e(zFK;<|Bn5SN6+uv|Fd9PjZMd|@ORhkzAyT%Zy$8>r|Mgknm>#0m+$|u^M1)* zwa*9sz7wBc9ACTM?VNt5`ohPr;{S4gFP{H<)^)!tU}L)9UH{khMO}T{+#ROh53Y@V z*Bo8{pzh<*^*iS-GdNS>qVQJbqebJE$qv;XRkBQ(>I>_fOS89r+hOh{V{&m5^Ke`OP0@FA-`k)&qu5EUOFvfE)0<~=hA=pbTw-S zL%@!%*Q~s+Q+aRQEibhG&9yFGkntlp-@h$?w`g90jmE!h^LxkIZ(jd!N_66!_)C6C zw>sH;nHOZPQ0{)Jlc~OBu1nwa_fETuWWzTz97)|%BD&*a-j4Z-bLNySQtW=ZI=uQ9 zS8m704u@NuLjA%X){=j$ST6Y;>Nru>H}RX}EzkKMm;SNa_pwYYf6qsw6Ca#!an5W% zBc~K1m%L^7`$um-c~`v65{s&p{rbj;>z~Q~39fr%j^!Qt_%0y!cyD>0!tYz9F^bEl zY?+*4z4MdRy{f%E*Vm^6YV2v*zJ5>V`u#3extIJ79p6~PdUN;tM{bf1f6eaw|Dbp6 z`sozU0;k)am)_gGdd#W58I*A)x6WmWZ+E!m$zS)Q{99_x>r=BUUR!~D_{Bu1=Et+> z1Jd!wPcNyQPC+tdY**hrSLN@!#dh-wjBax_ zZkfFBw&$7G0v^_$Vv_3~J$KV|V%QAGqqoc>4PNBfZl3kEXuPpV(xz zWUh<#L_aOgjUSBS_Rl-|D>q22D5fKz@{Qi6(mkK2u7B|Nb^hbI>q}Z0KAzIv5mhh# z{{B^lw|e*Lm-lF|k8w16xa0dCtGqq6(yiCyju}~QUNZNH?0K<<-R~cl$u@)?>-~QE zgx+LUwM_Mk|6H7R&XxAr{hRMz&Hje#R)2XOF4;QSWns~g zJKqatTC!VLzIpOTboSG~Jwo~N&EF%eXV&iXSzdeP)$03YpKkwM(*O1R-z9IouK2&- zSiiBOV?s6~0|P^Y&%a;13=9kmON6z+{1PWs5O;##3KkH3iE}E5a0LwVEoF##=yXk{V`(^0|Ns~v6E*A2L}g74M$1` z0|SF(iEBhjaDG}zd16s2Lwa6*ZmMo^a#3n(UU5c#$$RGgb_@&(44y8IAr*7p+%1m~ z3IA>W;r*r(mX|>yN18gE99$0ev5GJX>)0&PNVq;D!^D40pm5Jcm&g9X)$dtd1-RW< zxuv+7%HAyCSmYs^nE1W!|ASPyYfCk?)OOlmKU%sm{he)b+PQac=FBWU*U`~&Kq9%v z@R&sM)&(KgSrfp_p1*$!4>y4Xdkn*}?`(jIUX?P}fhj)5%Y6*Yj#xV|N|(ieT)S~U zvyxL)l@)_SY^-cmRTY<^P$$dGnKKy}WMySfq!>MU{@htd?C^~nKNe5hZglkM(Tb0c zSQ!o+IKZ%K)hg4f_^2o;1_xhX-e13dna0KctW8QuVM%>@s=jQ~rcD765kIcIPUtcG zmifS1tj93S`R?xW_L(y!Z*9-#R|<;QSN1k)#>|-q&z#{g&%bx%P%C$0T3Xw=xz^V; z>Xn>QQdGXZx%qitx89EO_wxddtqxy*?S<{fj~@?JM{UpRee~#&)cW_AmU;KD_E(u6VMz$|a>@obd@=+UWa?jNX z`}gnv@c-T2-A|`2UB3MBmzS3r8WuXYJE;gI-rADs;qULBlatf?$-esAo8Q`Rsz3eu znw@id8!v-`ST`d>_O&%DPb(Q7llbidj_s@!o|DyHTv*85aH-Ap=evN!#Kc3dH?es{ zL`b;xNHoqgPUk92KGxGXeY&`kva(^u1%-%+h=eaME`Ip<(J?Gcj3MFivEC1#J~{dM z@%hcMVAR*wuc)j%IW_g>rqmCgJ{|h<@^b5zMT?aF{CM1-aebZanX_jTQ&U;_`T1q6 z%ihf0UU`3C?TM2o8zXd%&9N+IUTsZ8>S_?sIdk51%^4b$XgEbAXjv^1C}b zGcGP-l`_p@k(ZaBV^Qd&*S}_sPR;MP+kd>-d_Ey9jV(Jn`^WF!+9k}^_5W=CeV+gS zz^PMQ&z?OiC@VX5W~TASS65e;-^}eX{Py0Z$M9HI&e1MWmIj6kKR-WjEipGYXL4A# zZk^MuGc%1j86u;jxiha_yT;OR=FFLvnqxhZ&R$+#hhA^m|NQ*?%g@fvZoU4rSHiG~ zA>jJD*w!r*mEE~Evazu(S+vNB!Nb$Db6xCiHy0Q4{Cgrvda=7g-hL~4eXW-v;Qqc^ zO>OP&D_5>?Fr1xZ8La20HhJRu_3I~WpEgab^JvngYuCgsy}Q5P-^C?-ecaNjudf6d zggRZ8EMDx)&~oFv{r@=~9Yw{(t>0(Op3VJ#eeCXOpFVv$aqytyjeVPJ7%nXHo!w$o z`sT(&h6(fL$yr)hOxU;2j&Z@Sudjo>yto7f@9rw?4haqAWH8OV)bi%-TTdM^VTMm1 zKdvm3H#{bxeY9LhBKeIjkBmjYjGHUoXjQwpvH8ulVqLIBI>gte`WsL7^>s%NHnSTh z9%4Ci{5ZFplJT*VpVj`|IVas;W5n`Hy#t>woz1G5N~+czL6l zJjeUx>t~;339y=`qNc{iARr*X5E~o&<@I%bhnG9LKQ-?V78c%E|G$pmK#!#Hgz3}U zzkDe%$+;1rc;B^KOwrz6o{f!dN9k*^qN1V=rLV)DJbfA(CD!TE^x;E6&dp7%e}8{J zers#?#0e8X#@^XeDQszJ8L=fpu;J3*@Svck-R1AO?p|0IySwejj|!Wb9|C);zB=9C zSNrkD$7F^BeX`aH6Fn}hjW)ltyPUtXv(uvLi-uL%n+~^Lsf7y`JXrf(Ho51obRnql zz1OsGq2jMEFPRx`Y)@A%Cl{<))8p98c2#5kySuxSpPZQZ;nSz4xpQUT zynVZH(IO@W15?x1y?bk?25;Wy>Fms`?my2ZElq9Do;?$$OldiB!lT1QiD4;k|Msnk zhuIjG20#Dx;|Bvn8^1i?f)XFkpN@Ch`DB?GUc7vncyCXoK&Oj=iOG>Qk(-}`{%hl37ePW{W!^e-C8yY}56irM-7z`2)FhoR0H+OtEYkuD$G*r~m z(sD<|N2M)Wx3(54o;!C=!Zb@nNl9r#>S?i@`}<;FTnoFlpu4lPvAetbLh0KdA0Pkt z`~CjHl`DT<``u@F>|gJW#Dfya`73kER&3c~GRL+$YzFVD^7r=)Oib1U%5B@WZL3yu zh*qeFw~x<}1C7iJ*RSW7mX_|3u@t&_^Cp9Wi9yz?B}-Ulo8>YE{JPWk;6Vb9oQ;IE zd7em8*!no#Kk?ss`pxHuCg$boP0ueZ+-NZE$dxN0c{gWoe7bk%{!_;))C6jwJAF)3%Ja!}c)3!<^Q54cUl(i=eqr?T<;xeBmU0&r7e9RXu(6?mq2$#S&Uf$L z?I?cU_hH{GtC}AhE<~I-abiV5!Pkw+$3J{{=o}Fl>FDdr%McI|p&|bHS$1k_s)nYf zquS(9>F9g2f3JS?&To6(-Im>&Pj~Lx#l(}XiDNXf;; zCE?YTl{fZO8o#=_x}95GPr=AYsGU#t(96rq3x9vh6%i46a65m0YjZPm)weg1nKvbp zd!{}D)s^3-nV6bBeEpi6frFQ~)km#)+cvX3d-rC~ad%b!m0B)(>VB`r|CBeIglmg(3R$MZzcHf6bFy0E zrza;reE#h0=Em03)02>y+4=hV`s9Cqen#vn(R_AhW^?dzKSgbAZwd9Hx3^3gmX=!7 z{wi6re0lQMS64x0ft+29hDlo1F9pYA62G@U278dNjZe1g>}+%H^|iIN_gCrHxyDZ3 zvUTgkdGq>mZ*P0}@NoMK`+B>mZ8@4c{5(8I8W@=iK0I)|v!^on-Ci{{wL||mr=4}` zm$TiFbd+o1?Tfd09Q=HJMUOeMu(2gQI?~ByIC0`ci|TJWW;r(+b{0QBboel{o10t3 zzdx2XHZ}%%cPwlwKe@bnSe44e#3Udst?je)_Cja&H#asqXGnxTIr~>sM5HBlciF=u zox&V^d~VzG?rzAtYch2Xg7S5h6 z&G6vVRBce1cIC>I3A1N+i|IyzL=Nqkl6QC4)r$Lu$8PM8iuLn6Dv?|tuBxh}W@RMb;r+O{D zvb#Kgr-in*_NOmjM3!}{uDV&W`SbJh;z^SxP15SQxgoJxU~~R`J0+#A-dl`rKtRCK%V*^*3LF;l?Em*`wLxy~&G{QQ8qT$?4(qtN zr_wkxGgH&&>Fa0D+#(|*U0gyUB0TEq>bMM(HqH>!jS6}A&G?u^u!_>7z|0=QZ+dz6 z_vzjd%(%X8u2cEkDN{t2EL-Lj8!Ow_*T>NC<41*vnAo8^cVxuG#EL!|&Ex^KJAQmn zJagvEgNF|pd3kvS1pVgQ^+s>c1GNfke|R{C=@rHZy0;IB@C|m&41s6Pelh9$Z}={^IItaVfK$4)5uDj0`fevJ2O((|c0* z_g5(>vX?De_Tut#{!5oHPn&Dgtg&zw0jE^cm0 z>gw!bVqyiw#m&>EO^fl#%hLmSX37+i6)RURbZ+O{uyJGH4(?A64l*A(c1+3KT>RLv zV=pc)c5i*1(qkBAm=|FH=@Ml1vgaGan9^d9F2%;E$Dnp7s8g}#8n{pgiLW+A(nV{f z!RtH&!otMD*2ndpp00oR#0idr2M-pMm5ELBRuRg%v4K(De_qS3T~=(oQZ4&xe>P;l_V)vLSX_EsexXkZKo46I!J zbx+Mtp~>q0$Ljz8jt50K!-nGLes^{jFF*7{FLu{~vuEGlHS4+>QB`FHa>wfM^@ole zVM#vT*E)CZ+!!AxC#Gv_qubNZ&s!L}I_$@<*XtK9U%q_8_0!Y!Ti@?mxKPopPe${5 zEPKQ6@9&e(&NAIm{$5VXJg+BkvD?98$DTFkJ>DOgmZkG}Ejhi~1Inyl{Mws2u$@AbkjF9P4(-p;Qdzt83LG+jXvk(On?v$;-x z{`6@>;$gNqmc?veUtd4oA*g&|p>zB9ZM|!fe*XLksuTR?+wo5HXnA*cx3Yo)gOrpM z*T$VYcS;y0v24q^8T7D-q2lW+(QP?5n}V17F*4k_a|hHG^Y!&rR8v=H-~ZirH^!NV}+O}<*d>Zr2IX5?_AHI86cCK~#H1GWd51F>*-|tiRpLgKWC85J@yv>Uj zKaPG{`}~~jpI@)nM{G{>Z9ScSZce9N?XLyF%l+QR)P4JBTk}JpTU`Ix=JfLy)>91m>f?`IUS7Uo^JeFa42?N+=T4kBkuf|x{K%0b3>vnDZ?CVHe|Bze z_qDarhmRa#VP@kwaA#++eZfV^fL;HO_eeIUo}Tvb$;ruFr;qo`^Yiob+tmINd3$?% z`>tJ9ZT#|m>tc5=+OXln+UuKBPm9@9fAjIMum5NB?frfI@7oI>yPcV9Egrr;u2%o{ z39ac9CpK=&y{%+qBy{fFxfAEkwJlz(+$V3ZcSOdbfFbwxwxhk$<`07}z*@vT#yT(t{T-I*uH1S;#Zjy4=mfgJaFw zwF{RoZC3>N<1A$HLnB@xQ;nLA|eq&h1%q z%B!lZYHDi>-`p^4O?7E$Z%$&;Mze6mir zx8;8P^z`&Dy{M}zq@3INRN2|ttN#8n6%;&~V)W|bV)n0ZZcgs#=##VcV$iU&i>o+) zX{onoXz0|U;^Nh(=Uu(jZ~xE3%F1fVnl(OqtG-T(o;G2E14G7_7Z;0O&Nj9}wjg$FY%G(5y5F1?ChJzL=&&kz;ZXbQ%fd;MCT+hh@$K5a-|wumZfsC|`t&Jh zrk$PLm5s^nN?L#SndRP^vS-g853Q*}f`Oi%oS@DZ6EpMEPfMw-*`e3#_xz-p~2>=VwYnf`fkiK9NgIOiU|E zUtc?v9UmY6>dMN=0sAd2EmQLH{EDBQS!wqF%o(3c7cMMFJw1&xQ>e2=MpicS!U9K^ zkSd$-u&`yfx94*kT9>_1C@n1owf%Cn#{d04zTT_EpPSMfT&3tsE(`lBEnsR)6d{IHc3bXu~K5p)P zGK$5;#UN|Ey}frnJwMNO@qq&liFbFGzpu-`eKafo!-IoY_SIHDyfJV7eE(_FrkUj4 z+G3>_d3DvEWW~uR3!a=11QivpUcF*qnCQ{+_V)JV%gcNj7^0)2-`v?L%*V%f==Yg3 zXA~xSOqf6a|2=7^H}z$2ZZuYYex_(*vgJ_peMw1428HWO85=I-K0P^E-8AZaGdur> zuh-)r_uKzlVfJnL{JKM1v#)Qc`&-p<^pVul^Y`Y?pDzz;-Bo>k#hICwmUiOI8J2)s zxiA0y{SE3QO_}1g|6S5XiMqPF8{6~cRfIY}?AurSJL&ee+zZ#QuQ$+NuqC>0<3__P zSFW_|(b3U)@-AuP_v6Qpvqx{woBDcN*gn6muC9U~9}<83`o;Bi_2R|NcD270Y;5-2 z`cqt7{P6vIetCI$MPFA})^Fdw?Wq2)$Dp94#TC1|%(Yugw`In^zrUTere4dCeRDS> zJNxnK_4`1hCoLw`)zvFjtl%h}Jbilmw%pr?u3g)9%i81XtE-2@<7-=w^-6PRZripk zAUs_BlXbxZP_f^V+~A>dXn|w1fUIoqojZ5F?`h>>VB?eN*s;UH#ob+7M_WU~;r+e6 zhAAfm6n#~M4xT*exnlFGm>mU-c6N3jzJEV{Wo5AFG=2#K22M^+(Qjo5rK^`LVPWT& zJMw&fy`IeNty{J{c>46~OZoEES*0<%%X%3uY|Xy@VtRa?qQAetlv$2M?2dwkhbm_J zxLsc#uU=hU{prI8g_%Cz9HX3jUVM3ZdC96(UaP~_Dk&-D=H|9qi?z14URf7wed+r3 zv*8M~{b^VXJ3=U=~mO_?$!Bj7s(9w~1f1fXdhL)C>UfIu2Pgxo+UAm-o##?J@ zP)Ui2q_p(q^82;wOWa*uCr0Qjo2nfil$E9R_TJvvAt50dpP!wT&pRw3IQ81ePGR*E z7cNXlJ2S)4#l<}Djsio;pC5%gZ``l@-8*IK)cY?b{=B-Xy=lvqB?}fPC@B?{moMK} z`}@?1JVxNOP4zfbFZM2L!&Rn)s5 z3zjc;FMfV*YWL2PmqLsSK0iOdfBD*kr?Gn~CVF{!tyrAO3TJG5h` ze)&>T_2B`dpy1ir=Kc@+TyO4*-(PpOT*uDv`@6f!3?(lvDDM0ssvS1LLuJvTMT@Mo zBEPPZ*)wBZ~Uk5B9GU-R?WhVM$s%FN4_Et_yMrJ$t5 z#leArVL{~PGy_x9qkXd07gmSscep4`nKFgru^JZ_m&hkAEiI?LRbN440b;sQpyA9z zn?Uv7nHh!>=6N#5dZpPHd|7w0{@>^M{TrtKk6RzVAJo5J5~LZmEvGYZu^Z!$_`fe- zy*hRD^{ZElmMmcr>U7z$J4E=)|KmY>Ykmq{UhdBxV8wY@fB&B*_kKCf@ZI0v-{)T$ z67}$Td#%LEl`A=TcwElUvu*V>3<(XrUnP(~bITSJ9%(b4yu3V6FQDPl`C!-istZaU zm{V6^8w--1zORe3#W5*7+*J<+pp~uUVoDvfiLqbDe zFUq*OYLj-zP4>HY?#KiN2L5>1E?@BGhT)FgyOY1Yxykhrl-~}w^FMt0v~`|swUVOZ z!^2a4#lJb)E&k!l7nkFGvL8?D?+=lbmX_uY4-a3ldiCS=`~NwmrKwGtGzru@l9!iX z6Tg4osqgW7Dg^ES|1sW{cQ@+o$&=mU`k+G5XQt88OOl>9+83`~+dE~7NaBRl>+51a zzPhU2aWtu=r6u9>v$G$*d^z&v<>iOZp0!;CxSqH@gsI?!yvi#t1wH*MOq zs`mcvm^+$UT8BP7JiM{|eOyax>%z*<&lnmmE_QeJ_ve?jDmk$IeqDFr<70`Zrf6>1 zvgJ=o{f&Q_lO|2Nu+&=|)XY9V&vxs+jPmdAVoToM5(SM+^72kSy?)c4)4P&4>~eJZ z@$dJ0!}N19Yhrhc-Q88X`nA%={so)fKVDw*aNj9q*P9|GjEszj99=yk=X&A{G=rJ{GaR&X$LVC+mv({JnD%54R~=T1u{4w=QC166-Ym_`av7r#mZ6R8UoA zJw09j_{+=785xS7pK~oNG*nVnzPPWp`o-(lpeDa{*&B!1X1NB5hg!7K+qn4n+V<|X z^_y$e`tAWB-V`JfW@7`I|{4nsFXVWQXTg7p@r>Ez`_4s;43k!+u z`S->2LNv6s!+-otd>`)P!xIx5o0yu~I%CERuH~I|(#!qlw{>@OpE-LLlpM^LdAYkU zKXhJ*VP8T>I~O-MsQ%H3+QPBB{JmR2K|!o|XKg~L?CnPX-@hYL!!_L9-8Hnewdd3b z2{v4k-+j29|M91%rw?^Qy@?(lo}3h36Sc+uL%T&b+y~xpk%UY0$tWgF(>~55=L}27Vdw(r*~?ZnEkFtM34XKM0Xnq!hFG;_v` z6TZ2-il6&2ITRKas!a7-nR$8HllSlS%{3~%y}7w$`EvL5aeIFS%>KFFwD6IOk+JdO zHEVPfb6;Ou%hDhuEZn)GWY+AjJT9+@IU-zrC>iaw2sHmutmzPwP zwEiZ(y0DNL)To(bS)B3f%gd1cb+w>=)c+SXE~2J7arEXb4$<3kR(>tpu)X;GJzFC)Gc|Q}^;!1ycD*u| zlU$T0-ZAFcmVe*R%gf6o?~Vl*C+EUvXJ-fB-j@5+FRZiU(xpo$4jpRB$<5VNQE5^0 znc;Bi)Tu8|r^j;{3JMB>=FmW0FIH}`3l|nTd#VUs+*SJ8?wZ>F)k~Hw3p(7!yR!84 zHIw>(HB$CY{9kuw&YU?J2b)+;Dn29x1qUzQuweuLw!3S-RGKiHICji! zVcxYhk&6Z5V-Fv?etkMaK)0B#$fxL?MXG`ia_($^tp%8RZgPHhw)fdtri*`me$KuB z`_!{6C-2Sgk`hZjuY2+G<=_>YXW1NIWRn;1=kJ}J#qJjW<2EEP-n@A;aI%`OhOO=1 zb=_f0v)(Vgar^e;Yipw;wq}Vwdi*#sH@EkG{r}hsv!<>tu0DBt@YwZ_kBPeZAa`?}BG%7&7xpn@#b)eEG7oj}OnHMTHfqoduRxsTSHY^xS8 zUff*y`Pso!r@ZuHRfH1n?Ww$@yNJ&u_m;@Vj~^qp=gB^L^awQS^WsIu!fbAaAHRPu zc5G(5u`!uF@6L`!!{lQLe|~)Asx|TT@evRgZ|9XZd+_LJ_l2uhT~kt2?%ciGDv_U` zucD%oaCw<;M|XGg%$bsUaeF$p<=(E_lKaox(AfC!RPAt3ivr}js;VlBnjaesy7>cs z=``+J0H&aY;Iz5WKZR1tys1xeTR1zJY)h5pJ|7$J87TPSB+b>QU5m4{MO&ns!IPdzS z@%!sqPfwXT)iD2_&AR9QKA)eRE&Tc_^x=(vN5$hop>g%xx6tb@F8}Kfut1h-^z2oh zXWs`JN(HUY;EG+iBuEo97P)R+ocPnkQUzsY=3l>l&Htvu{ARDFrlwm$PYT zYh$ZF{@?Z7Jlk%+xmH(84R5$lnm4a6a&y{AU(^39S9}oKI(M$@x3{;yZ#;eImB;yc zwi|PAo9(;xQGa9NVYVa3j)nbxQu^)u!zWK#R;StZRk%qHAU0Fz+lDeq>v8%cu1HW%j&hhY78EM{$^hE>51o_ijPbV zFJ-mk*o0>Zml4W4)`ApoyvJ#XXh9 zt?WClPId2>1I_hSRaJ@F&ER6ti`l_2(}yiRJ$+tmH^@%;DZ6&(}cC1qF#*x_afxhri$NCm-vPEDg}A1hs_n_y1)xHa51Y`xB9vHdop_kHcTK z{^uvvFJHdAS~LSRFrHl6#h$;}N?bsoVapbiB}T7xrwQ1Vp0;5u(0rqS+f?oc8f*q zEK)TwF)4U(fKhSXjvW%|=jJ$OWN7rsST^0c6Vtlq(&fv7f`X00>V6JtlND7}T_x^> z*s1C0fMz<1?rvChX@Mj2jvYG^&d;+gdg%h1U^;mDa_~c2RaI4s>Tfzu&d!BDJ|sSQ z@`U5GiV)|dNs|I%VtS4oad~rpzx?%ev8w|k!Hb6MT)lLct4Sl*xCU#$qCJC@jixzwb9#?&de}0FfnQIQEP5&WKZ5iTG%EP)Sy=AOKY#vg$hfGa6T2%!Bf6%>=F+80AMXGE z7rst#%8VHt`uh4FDnc`6%y{te@$m^BDxlH)J9qAY+G{s%+(WlO5@7q!Pd)tKf=jK{(toWD&8u>NPzvtrR z#l^-i*Q3Ah2h-1=Kd(;9esG`>vN~tYgl*Z^^}f8m?w|PJ%8QGO6SK3mrO8U+= zJ32|#`^lrcdwV*6e}AuRW+t}WZ|#uN;!1TBXI-oXfqlL-5zHUl*=l zcmMnA>%w*G`i^#sCqFvUSx{ciE|~cB)zu%5`|TGjTEw)Vx&ObXl8?*%A-rj0v22deZ|F7oBvu8?1Mw@OG&6+)X zaqx0Kr*e&%K5ch*mnVOCaFA=`{{R21L6h%2djrD5-9JA&J8|YrO>y(=YdSApy<%dp zDt*-g>Q$efrklT;8*4F;T=Vku zKyBb_{w_O8UyJd{*>qSIKjU}_3dehUtDh$Q{qx75{$Gtw>@E>;y%>kOI=iZ`uUao$ z2-vw})2Cy{j&VKJ)zoa9Jb7|V%xtsVCvmrL-c(dlT67GwVnHJLP4Gcb-UIdd1(n@G zcI{cRge7)Y$-!=MeNcOxN7hP&kB<)&mO;V6j8pnfu2^Axd3E^umj6?yO!@Hh`TXQV zEu371ywYYaQBhJ>rLR<$%$zk#>&Vyl_vPbjzltU$CkskRbulutX`JCuo$7UQZ*}>? z>S_D;+uQwqWBljKW&a(euctZXRJOLZ+8h=ERT=-L?MOUmS6NtC=;7gU;NoKUhYuez zF8HE%c&>GM%SPV2yUUON|9k)c!-LK28JCuDGJq2Cj>^x=CiJgftqtnGzk0POP;}zGBbE&AX zsHv%G`C?uEuA$>eQgU+g#Vwh^iL*hy&TYB3_r29i0wvAW#Wu&9YCrk-`YH-_et15= ze$kE{5|);hGYpg2^y2sRG&M0XfJO)(K6ubj_xG2gjt&nypG?E{?b|OjFf`)!NCW!5W!`x_HV zPhGemaO>8s&|{zlZ6_zG&M?oH6Vs35@%8m(VPQ$QxhWO2rXX&A9WO60FK7V5{?7+y zQ0L&qt5->{uB@D4SG&vL-6HpXInb(}x*reO6U{W!)6-=vi&%K2OjeZq{rc)^b7N!U zhh6pm|IM&2*JEO4Zp}=*di82zP7cpR50>EIU{DuubNcyXpPrsxxNsq3eSQ6!n4Lo0 zVmcFEZ@RiZ-oB!`T3K70J1i`$qo?Oc`uy5&=YD^#{q=VH{Rz{isZC$Da%E@O+Ngua zkGtpDc*lDB_#FB6_V&|DSFT*Su*j9WqN>U%K0e-Kf9-EG(D*cHsf)Mw>*lGRT2qzu z_5CHL{4f9FzxsFd_PoT$$9iMFzrVQ1wOeGK;F6_FS*@+DE2^uxg>$b=ZE0b7b7SM; zQxg3A{9j&NTzu)N|2&(6n^I4MmIfU-a%9P&85b@Dq@<*P+BjRa-rIv_y+q`4K!dx* z#lC3jOfyn^=|M70@)_hV1KlEG#T1 zWTPWkU+`|vzpoY_f8TuaP5X#`Ia>`~-L>nw19dxHoFpYBLqbB9YpPNUC@CRv;pOG!tv8(8`2-oN{{8vMuI(QfC}?SIefi(t-}X1G?zzr3%U!Wy z!-iuYuU@Uq%X`PJlY2HK{CoPjIf6;b%F3J!dn-OZYM%N$c-8L(3lyUERD5KQ1(lvB zFI)(CXPlIs?agrFB^NU-nVxYCQq%5*;g}@ z;lkI~*R^{kEsIo2UtM`=JN@6=m8(}@FBR-q@#Q-!!_3*UC%3k;Mn*(T*tydZv{>-s z#f8G^egcAlNl8kK3x53g!5`GOW{nP$!^4LU->dHL7S|VI*j4%YS@p^F+xGo@CJpMx z85u%$#D@L6qM}p1*5^EV{`~OqCAA4GJb&G9{sX5^b4#1&P4VvT=y2Fy_jg0u*;!U^uiac7 zuK(rLRqu+s`|Im%s=jbMKROfzN?tY@CLdGK)O^{zK0Z2H z`un@PtH1aO|1Q{(c<>)+kVjBRsHsy}J?YDfi=ZV~hue5Jrk|H$HGjUfuWaL$PI`T9?S_pT5AG^`ZBYBG1myJU@9&O= z$Jes@`uc(ji*@VPf!2OcR`&Z=^5|$cMGGKTec*mrncJE{^EG8qp5lD(b4XQZ{PApN8jFl zPyK!K?%mc>=6Qe4m9Ag3s3~x<8)&36Dk{q9?(`{BK%hSds9zAMWuwa4I)!MW) zwK;R<7}WeIcn-HU5$XWy~dwcXXFqpJ(FAbiuNO$%19?*8}p_u}gB?}`d<-n;{Fx2NuJ)QxNWH&^_%&bY9E(XC&ucV+PMM?XJ5ciI)Ab#!0t z?}CqyTxZOhmGtAo!wZ)$JG;5H86VBNnBJ9PNCvhkky3zHrHs z7QeYx2k+jM_44wX;I*`)x3_in?AaIoZd|Z{VRzZvLvyXm6LNBT8kyM_1uk}Ty65TX z2}&ZLpPyg2b}g^IzP^Q(Ro$MsU-%C;Z@*~|TIf7+=FH9?KPv9*EN17Ivk{ng=kLnQ zOG`LAJo2h;@9%DEV%k&lGsxnGyQ}NN&FAevjSbL}42GrtUh|DoyFSd*3|HOf)XIHvbGkpMHEU@p$?)ON&tlNRV+K&WujJhwNl8h`j5|9FudRt>wzjqg ztu|&5keBa&zyH5nTwL6a%Fk*^Nl67?Uxn8Ed^){obBC;T8IN)Lxhc}`KX06Rb??TF zh71p0TwKgmYM*qZ!|QdNvorI%ckgCc6e=A$e3)^{wZEYGPzec++S*zP2?@|#(udEV ztDo=6zqp7MG!^#bgdjs#>HdO;PM~OfeSQ7$mBGs=%$ymSd3Sn!MOx(D{dIq(!otEL zHY6}seSOvX=uy(nUFT1nU{Hwv4ies5Wg4|TFE;nC{|p1ih40eO&QkrJGv7ZnE=~?K zUikR%zS`fQ6(%-yeL<^c zBcq|M&Ar)@sbT+qdnYF+P;Uvm3E=WFUM?=Kfc0^+IRmM~@r{@bTf9Yg0Mt+uPgjbFE61R8>{Gy1SK?7BMojT{zIl{Pf=Mr_gw`;_3zx<+c-}@e)Ncgp;y|xuj60%_ou(3_V@34 ze|`P@fbaQz8#ip(60+iV+}^6tsP9HIdnQeu?CI&*8MZD)Q)j*BUH#ZyAszMCcgdS% z2>krDaMjMf-!<`Q_GZ`gi}y>(}17x3&nz ziHnF#=nx*AT6BCn`_a#3K#W*=RSsdOK z&z?BZk&TUQOU}(rQd2+2)@CK^oSSd&U;h5yQtR?}0ZB@Z<;#9U zvBt*6Lq85}N_M`vqvPUY_sPAzyeCtPl$1bAiLS1XpMPy#tT!twtBO#khKWf?#P>c~ z>k~I`&g|;y5;+#Z!pFYpC)-Nee&Xk zhRpqn9@n#l;Tp#xmM&VnSWs40cTZSQP}Azw+TY&Y)wVIMd4F%Og3^f;qb19hJvukn z8njH1i<_H~VdBJz0l~qC4>U5j*2u`pKAmS(_uv3yL{t>0$0e>GCvr*JJg?`&hk`F} zZVJDA`LZZ=^Oh}Zw*9$UIvKQ#)WpPufnn#)ofd_USeE(BREjyu#2_s#4Jt%9IXQRK z{50y|`1kMMp`z^UY|z%L;NakQjXkNiSs5H19i5_Xu1Wj+?5wk=XXgaa*d~L<-Q#a> zZFN39O&2r@xMSBYC2MPGc0L(_w4I)wo)dR3y1T%!`TM=Ak7}>{J=n|+8mwSsX5;v| zCG)b|x@yOW2ni|kJf2P$rSR|5rcIMy`>wdCsNmBRPoKF~TQBX>m$nbQyo;Zko0)-y zjg2dF>eapL*XuW&dTnQ8v*%FyvnyK{yZ3XIvov1%RQ~3MU}9oo#?@6*1)N(jeXVBB`lFGV{lm@l`HHHlteTpd3|{FXA%TI8E-oyf z0iZKyd=%qcU0Ku8(n6=jIy*CGW@aiVd8i11nqZ*yc8Q6KU0q#Il1{H{VqUsgr0nG- z*1*6(u4IoxhYl@Rxsub_*?H&rqSx2f3d+g#bqcG8MJ}rs3J(w8dHvO^SD^XtRiUe& zTw-QsUbrOWR^_pS2N^-zg>sS|9UUV!r}3_f*~z4?t}bI!At2Pr!pzRsvTBu9PjBzX z$Nl!86}xhBauPNb25kItJPcgr9iR?7r?A?By1%~|7&b=q+}&LcYJGZnc~yLR(pk{{ z(!@jGr5Zj|>b;NMmHRLFZrWuyDQ>L*Dqflo_kkaT|GSNJ0~Y+L1Cfbr6Wlj?|4?Gg4`n$A6i#G z{p#OUp{qsMl&4><4GR-{b#*nntgP(Lr=eH(u3NXx>8^R!6^_={){4KswoVB9SNtRG z?)$sD#lOC~D*WnSuu;W_1W?15!Rz$erAt{uLqm7YSRKCp(d_(v2WJ|m2LuH%WoKt6 z=CCp>%#OWzGBq+Tzs@c1-ky~oBrjgR?Cj{sc<9g}gPa=%ihEN}Pb=bgU+d%I!UEc_ zaO8-~idCx)9X!Y=)ajzQF7a?%(fYGz&S;(a|MK#34K1xn)dpEJ{cCg1{1%gy)h)TJ z{aP&SV)@cP-#tA&Ig>UubU%FkD!MN?F)?w5O{Gy& zb2Hi+XUqY`Ys zzP>g8|9%H0+=ff5U(TF4^U!CvQ%jaD_F^=_cf;d1RKA0Ol%yJ3C$ z)Tu*vcb6L$J@MGFYnM}Su&_&u{r^9~77EqX)r)uRh*+oXUQ@H@&Kkpc^X6HUzms`) zZ?E=})b#YjSFVV3i|e=b_3_=gbLYvwRg-4U>`Xk|<`^CxzD_zQ6tw4B)1lk*HV`CE#6r{w%r57E3e_w6kt1Frh-8a2ia{uyW;iE^7-q>HiUqFAV z*T(eoawTtXZ9OHgA}lQY<>h7e>}zX4`Si)IDf4_M)l}%T!g!IT- zi=8`nE+9O-Jw)qhr?7gT;_d_Mo-yLWuX#>OII zVoG{?>khSnW_b)!P6#|afByV?=G?#ch0QnLsGdA)Ru^btNA~q~rN2_{6+b_B5VU}I z)`?RdOM~XvR0_SlwKe#~wt$I`9wmXsRlmQx+uYT~6%!l#@W~UEa&38yxlV>QHZtGe z-*2BgSGMZgo6g$b-$1prpP%2=c{0~SV&iy?4GbFQ&XukE`BXe3Gt<%2lT+F(=fGrj z{|S>PGp`Kc;^yW)GtX9fv3viqjmgIstX!R+JoM$J*A` zX1eY-Xb?q9Yt^A$@-`I)pq@ea_tVpKn>TGTYU7uW%e7p!>i4Hu*;T<|-{a!qBrFOR z1blydykGp4orVU7qoX5eU7e4w@9MR`K{NATUR(rQY?}SeuQWeB{rmR0pDtaxB;-5G z#L>fp!$oQ0g{ubI+T82o_A&_`Ja>*ySlzE>{(N~hUMZH;)KpNkMMXs&N>918#Pi0^ zVs+5Y*N=~nFJ7{Qg-H>@%O+{V(^W>fP zC(fKHS@r#0FK90D*O!-0&3h_8KLd?oJvi8GSpF_1BRf0!^fcWI*RHkg-o4w&?ta~G zU6A^X$;TJf|NjS?&fAoFdPCu3w;Q)_JG;8Fa*OF4xUw>M;@r8tt=!^^7A$ahsK>rq z?*7Jv_r4(^A~rTQ6Q)iLUH(+Ux@^q_(Zy<@8G`ci^48TdqBnOItLy0Mf>u`K+}gr< zdb+;*?y|QR*2P-4w*PBsX*qEHx_I=qoP$3yGR{QlhIg>nD?f3%l~ z-X@^r6}0Hh5@9FTZrdfkv&G)N-t9X7T;}zC7P;Jx{bb&{ z`||tZ_Nz_lOI`8&Z&~qf)AhOY)>oeODc-y8b(LN8!Ta~;&wgT)aY13m?AhEh>%-T_ z?I?Q66}2_1_3iEL%9fUr2M->M*j=W({p_{1(V%@xOO~ko`TPBTL20RLQj*eq?rMoV&~3I(c|-Se3ouI3_V=>ePqt-}nFcQ2|;h zk(ihWI;SBiNhu{Ym2t{fxm~+=7eAMll zO?T(}wfUOsg+G3sqne(co;M?9r(-i)qoG>C;>P2TLDO@f5$!#dpAG8%R6Ke5^x>JA z#uu(!X_+xYA|@tghqN~zAD>0#CzZH;HJtVJ^`MesclrCa_3QPoT)hffQn07`J0Gb0 z+?0CSAnS?-XslUEN=idd&+YOu--nML9f~dg#2df7bJgpT&HZw=NsWz-Ie&h9%z1TX z<(mVI%xgAm2uPUy_V)J8(cAN`M)LF+mc6-QxGnYcG_C)aE?rtxyJr34_1s5~9?dyD zP4~^i!|hw^-rVvskDiz2cVlHXFE8)S9!cX>Ti^Cdo6p#>!-Dz1y12c+&gLpBDM>Iq zd;a`*+@6Yqy8G+?TD`upQTg(fD=GT%`<_g@ed7kll0;J@qg4~iHmc>_-*=XQW68@k zeXo|yUaPxu<;t8F7Z$!bJKOxurt|adjU^=|w-r7pu<} z1vqj-YI@tGylr}CW|?+-zw|y8u%e-qF#~VAz&@eci&;)6?!$GipdzO_?*N zXIt*=qU4jtMn)56%;-?_owcC+{k_mI$G_A5{HfuQvzg(Y`CYfi@XQ=b;dAHC-Po2p z`+%&Av9Ym=ipql6-DMG*QaH_WZ?&urUk@5EI6K??_)_obpk?{~^X(Sy*dYwycpp7_1X|VMGsA#!>C&YfTwG3*)qD*S4lpFPUst%hqmbFXUkaVXvXPf0p zO`b9(<=VAtXKvh>@v*{YTj}etcNOY>a}v(ZGEKI!vO06>R99zb=f;PJ+d)1rdw;?|CDy(^D5ZQK-hpOKl(AT~BOEg|6msNZ+* z^W7VNdThmlm-!@a+O#R>)|Skei8euPRXPFFWTB%bOg9a_eEn*ec}bmvV_HMem`hNpL}h`#PDmQCpi@T3EtAoVt5gmW_?=j#&>VsXw^1)El&2v%lZJ_uSHj zAHIGCE$P;a-^Wu~S-GeFznqzw8E8QTXxo~gvRlHXC7vfvo_u&L?%ln;(zey#TH4y! z4jnoKYBqr;TWzbpFeLMIi|Zdd(8&Dp&CSjEeJB3~#l*-QI&^5lq)9<*PeyurdNMSu zi`^Zz(-*W~GxxUHp1QwM-{0MJo~{?0ke1fwJKKy=W3}yrXV2O|n`fV%o(^3Ay5nT~ zEyKRrEdm~};?=HDO5xVX3vA3q+PrW<|W@yCMS-*QV{USb7p5xuc7Sx{V@-PzgM z#ohhzkt0i@p6lxT`t|F^*6isU4riF?=;}_KHcjn~K^AN5Z~4#0vA;6b^i|e)Y_VTjvNE~>&laGS~G$pZS?b^bhpHe~9Pg`4CM}PnNz%!RF zUApt+$eA-f3@N1ox{IK>G|&`EAk&%%deSOa^xwW;n9z1!n zbM_2PC8ef@28Jn9rWCAvw(t4d+uJ{U{(SgYue7#^-72rjsWvaKh6BC#Hb$?&jCpd8^ zwwQQ)y_T$~t=-Mc&X@4w!om%kHZ_52mzV_$h>*;c9g!JcAyLtR$g9QQCl(^A3aK%F=K{;iVDl#s;{ezma+58Ey%yWPjs5M zr)Q!4J+r(!9h=k7C;j>H5wtPpSg&+@)hbE*VWt&6s11#>U1ucXx@_{`vxHYHzIlT_$5))>A$2=jZ3i z7Z*(Ej+?eO*#oUY?#^{XZT_ z$(dZoHTUP`-`lft!qG)Bm11-Bxiv#wBO@iH&GU}Dxw%Rq5Cw;KZSLC}jQQ?Xog5pj81!jvfV__5tdxe0g~pw3;~Q_O`W` zPS!kp`0&HGZ_m`WeyXtXnQ7#@UAAvTO-`!Q(`t@n=X+dST1=Zi*fsSDd zFWqM2s?mSkd4Jts0Re%4#Q&%23aqWIxtHv}dgaQIhlkq_N~{hDSrffI?~cLl^_Esv zObm+_E&8zk|KIhOK3muPFt93n6Y=)W&*bBMM>ixMF8KB)Qbk4O!GT6*P$_!p(xn}9 zeu(SEteB8BX;qDo6Nlmw#Z}*}#Dao?K!d`d7Q~e+A)rMg)22-W?YRB!{KtFd%$XN1 zT@s48208@ccCGEUI3FLM1x;D0Tefc9Sp57PSAG58uhS2dZQHi(!-o%`p@R(x2b=Pr zo%QqgKmPCU?}e*Yo%%cV`2R02FJ~S7{p)LXMs_y$p9MMh_UsH;_4=Bcx3_mkXQ!gA zt!!Ic+nxBLBBN{TVo#gezP5EtXU~ph-_Vt3lze?Y|e{isw;ncGt7FO0!somSQnc3Ld zZp^x>wPgA7@CbP^v9={kRD5Qet&OsLo_}u-CqF;`lqpjdgs+bS4Zix#v1mL$-(Fc& zmDSA5?8Mo#u61?$4rG^pc;M*b;=&>Gy88X+U7)t!jT<*O{#aUAfGQ8sSCuv1nVFh7 zIXPM(E`P=B=J%hTuK$1fhSjRZ#=_iUIu5tD(MQW#>fB%!E7q^EaK0bcMiWLrFVPa}(YBTKX>sl=X zmo8oU;rsXYMT?X|LP9<~Jj@O%`#?uCg@rw<63Sjw^Fn*2_4|8!4{u66yE<$pIWglet+MgLx-X) zubo#iFc7e_vtz1vZs$9CX{k4>8yiP-U7ekiv-8EZ(dM8PFmtU+4}ng31DyqNd!Ah_ zXc`{0oVKFELN8_qs6qtIcO-CB`|hdvDKy`{e%;h$Q?{>VuZs^hv37KHICyz=9pGQT zE%$cP&reT5Em6>kO)FNc;CQoq#fpf92S2{MyPNCy`qNBKpc$i*5|b@kw+adfH00gg z6&e{C<>ke7dAa}kE#(hSvz^@jXzHX%hmQBlvrd~jZCcUeKhnF-&NdI1&`Zh6>XNgq z0+q#}HHuTFOu4W&+8k6ZO;+=Lq;;LCVZ{m!(76?@+~Q#?ENt@bShTdZCO$baafWd^ z-;WwQ(Aw(N;p@XP1j3%a<~sItuVPhIRmSaYxl@1V-rXg-ZQC}`_DMCrIUVor?tc9F z`S}~W%k|AmUY~ZmupP9MZ@K^cV>1ksH&lE~^6>CT`26hbglW^-R<6_x2@Oq5NdcW| zm~eWUE@*2TXa%mS_q2rLeXiDVCr=2}LJ-5!U{`BOehrj>&E$J(l1qBC#R>gL7cPD>& zaS?Qe+3xc9pd-g-%$x~2=i-hf^MNCs!V4EKZZ3U&?cj|Y5`KPu0imHsUtL|zI?3=) zIB3z#g@w)&r%w-moNTJ*=;%1Zs#FU!VN&ukNJC3Y$<$QT(b18EoBQz2;^zz2t>a?= zjkavdyW4fNTYPcy@xC3!&-p;hsVYA|J9y0v+AmmsP%4efse+`Nr+r zpf%jM`yq zRuo$F=^i|1Ub%x}5L&y4c5E=|;yUOrG3qntct_qy{x}suT~L zIpg!?#YJZSc{Yvx{ronzwiBmL1ubXJxwVCJ;>3weS8uiRNHX#A@`Bb@xVgC%l$W<} z*SOV zy#cM&W@TmFR`<8+m_+j96)zWFJ`f9{(Sk( zTeq$?n)hni?6YUjrtaFc>&)4+y|&fgdO$sh$jxb-M=otlc7L~V{d)b&moFzDJ$m%c zrr+P+8!Ia-Pn$90ghcY0Lx-At=U4cW0+hXy{Z%Q1~Q+n*2Y1{$x6S>coizD=RBd_g{3L zx}Dv;$mnQehMwb(4Xv%M%N`%&&D%S9vM@If&ziD3-{0Q{nW>|y`gHg0x<5ZAo}Fpj z{_@2O0|uXvkSUT2*|_f~yP(hgtuL~g!a?X1X%2m?Vu zLAHjOvu16YtnOd*I(~1}(Kdehb4!*km1J19cJ0}wrluWRs%z}#^GX`EoIG`kYf1LM zdAB^wvr|)#&Y3$`Tc`fp8_CJjrllnx?^}EEj+RzZGdq9Uq)C(BTwLsar-+l2Q%pwYjBQv*NJ{qgb!)fIXlibboUG=XRU?zQ zZ1&&4=jZ3AGu!~}hgveD=F<~S&}hcCZQJhby1TpFm?1{$^CzcimX?-V#U?LatSoJm z;;~kC{W{ZSC7WyP=Fgll!@$;dFV|59Z!fPKKR!N|>_47-^5n@oMU|D6Vj?0(Y{Pn5gX5v*NSFzSi^4jkUG4 zudNEzZhW74OyczE)5-JZ&GU(hnq^z}XNKXih|Ek)<^%u!{m#$Zt>!yx!`a#9*Q0!v z`^`;axbgY<`RunddQ9JxZ2o#}gNCkd>fY+_X$&*EySbw`r}0Mbue1I9@nhnmMT>Ht zotb%OTfCXhJiFRcQ>IRhT<$mb#;(%WGv?2ipFDl~`l)TLn>HCqTbJc5tzWosVUOXl zV|}uxMMOn+cAZjGRP=FiX_;$RJInA`L_&hXJu9~cjbx|2IAu4)8@`SE0O%>(b4WRmoHD=nt8b`GAe4*g9izX zZE^qq{k>`b|Igt!Z{EyUxKMF-$;+VD9sYAH4l;0cPEJk|3}sJGiGmWjkB`re|KV-C(#Ou6JuAs@ZFhM-C=qsbcSj~9C>R?WCf>Sr z3pAvmV`UZfV1}os=bhingO~fgS-=0^qj~lB_Eh>rM$XL4$S@EWpRV;d%R?&o@S|T} zU*F%8Ic@fAPy)F5;o;$%pP!$f+1<_k_+!PI`McAn?%lk3^Ue4B_35%!B?-B=x1~Nl)|)ITDcQ4e)Ay#`RXqbbG!0Z1WoKu<`#94${l9=V$qK{i^Ef#tb?C|NWi1uKx2g z-t0?DIA>dxYE}RFVJK~!#>0GISNZ#M$9g0W|M~lO=86>>uWxPD{x1FY;o$s&$fC~>FaBpM*;!@4s6T0c}PY^X2#mJy3xBzG|Q88ZeH7+4J)==iY;2S2(*3QEdO55nl(D0lRH+2tv$3leEo*>^Ky-a6YuUSeZ1-6 zmYkbH=6QDEF#&hiJ<%)`m zBrJEh~|{U_?`^fPCC zY$`vsRM)$^xgENA5p+Px@%Z|`t#yBYC0<(-2^y;3?(gHnGu`SJXkYG@48f-6X2axT zJfKyQ4IScSot~a$FE;W-`?B= zHQT<+eEj$kG`LFh{=bCjuBDtfdr=`1_+r?G;|NE8o z|Nk*G+_(_|+J;#C{2T*=yu5tL`+IY}&%S;7l$D#CdrjP4DbVmhkEAi^*j-RNJ1;NK z!_SW`!0gS@YuCiQyu5DgsWb+iy4ldcaAuY%H~6T;XJ==;}A{e7U*krHxqc^N=` zNYErs{(9HsuRlMhgJRkHl#sA+bKc!uj&X5v%ItKYyP8^Yind z+3A?rSkMkS(E5|~b8{FOo;-Q70JMi{YqmHWj|4+{dO8am+o98^y%)qBoX#g_1KNiC z<>lq&m%eIgX%!R|ffkdisH*P#xn4_4E92%S)u`=xyn=#)8rs^R(3o#m+cb5mXx!ea zR?slg!GnzTe?GE*myHVwV&doL2aWK9PU1Dm5cu}~KEJiKbW&aLhF=b4z9 zLB(nGrWDTK_y7Mp9DZJW2z@Zrb1*!dS1yBnvbroP+Q(!z3kTdwr?h`_*!(u)Me#g8*=`0}MBuhz$h zr`$d7`nuRPo|DyL_*s*Co<4bEpsK2xS8;W{nTVFYem~=nJk`p`$VjuyODe~1{I?fb z74tJ-#ix0S=H}+0s-jV`rCUt*QJbBWg@u8+xq0LF^ZROlgQkD3E4w)_e08ovPeyYVV}p3A4@Xi?ch#Moxl52AjkhdpZOnu ztYDgdde0u4Yl~dDw^e=3Iwrx}y2|VQy}gmU%icz0WN2{n@}^psy-9d|eSLabS{kTH z8M~vP(eT)fHIbWdytufS^-$7N3)otKZ@fG_DMdv^J%-2L-P?PbVZ(_N9(jK^r=OqE z(!ydsC+qF4t)Mz=Z{_E<+t1$J-3>DC^}~O&*00ykzPjqF`T4|GS61FB&-xj#V#5Z5 zyuDMVh}_;)s-4`kadY~4BL=3!tN3Ir4)AWZtNNlLEGnA1a^=c9zd-d$+Syr!hj-K; zT^PV?m!Asisr$}iIVQow%lq-eLub&kw-@*K*SAKowM_W+`OnYd#*=G|jEp1<5*R@1 zB)8?>esp(t`Hr%;Qp^12YHgUme7QR4 z&!8<07S`6>AsMyb-^qf`Hv9G_a>tGx3=HMso3tK1di3D)&--_lZP~Kr)?`avUEPIi z*6;`m3tL!QFD`$7543u9y4cSf8*ETFiysT^J96ZRgQq9w|9`*r|NZ?Q zpSNF3H%h_GObpbcxc2!^j#SOzq(d#76`!B+rk$D5`276*#gUuSB+POoo}Hhs|K zKx2#VK5k#Nj5#%P&Htaz<@eP8-{)lYqDWjnZcV_J4O(7aUZ6E6puxEtHzMBL-7Ws; z(Ie0{NHLv=hBPmZWa_5cV8X0w&3Zhsao4XCp&)n{CRb) ztXsbvudlCfOIw?giVBN%*qVlE)5MgNl^3pE+k5HKrL4X69(OY?FXN5dU)S5y)5Ep$ z>FK{Gp8Ev`3SM6yzy8C{*~aO7V!BZ+bLPl&baaI5xK~wGb@g1zckRvFwypbctM=`) zv$H`bN*5Iwg@lA8BqT6!a&qSVUG6_$L0MUO1CM~u;s5{sR;Q$;C7qpR%5-~6?(J=- zuKd=G-ge~lbp4Ot-rnYtbUPipzi#g8%5Sz_US1aU|7^n6$Mu4CNx!|d71Xf$^YgP| z>8lXX%r`45t7uZrr6ru^HUGk|JdhT9^ym@jFtCJ#1sj|dTmCepot@?A&xn0BmT~)PIzeOO4-d71#!92M zWH7R_vbwmraUB5-1!(;b{v+BWVaU|j*ckfn!kvxD>?$fM1_=imvSi=?{QTU&(9p4> z!othjyYS^DRUXhBZ=;^JHa9;%|C!n5{kPTa?dARF*{s}>CbTkk-@bh@6Ym`D77vf8 ze|}C@MO8I)x82d}^LKyRWdfR!dU0{_#YL{%9^T%{N=i--mK|+o=g)d-{WAQxg!BJ@ ze?g}<*wp@-GFuu{z^bUJF)?h}vIVpv=b_rU#qRwHNl8o#);w6dY*||CmPhh-H7hnH z8diKr(23l{0@@}wMKf4yjlaMD@t>ccZ!CCtC~JQAtXWcJ@9uEg&F`NwMPyCHMyAWl ze4E?b*{4jMx^UI1F7N4joHgy~si}W2nXA6q>maB2(LZR%m?s{F!me-HL+ZVrLHz4!fEk2XZ%8ea(`PlvFe}-hAu$)$7-f zAL$ep6cA{L-Cb5F%p#e*qu?Rap1pe$b8=!{epq`7H1)o0*|HNSPA~*qv%R;sy8NBY zo;`a$JUGbg;_6!X`_BG)`L?#U7+MGGWbLLE#HS3hF zzK+h3S65f>loGv~TT@wCnRuv$Goh#P_~V18PH{y=MG1(Cw(i(rap&$`&?5ak_5bJH zPCq-#)WFQ_S=Z~@pYxQrdOJHaGcq!A@bDaYc6Rp8hei%J@1}-_gBF8^DLg#99kh^T z*|KFZh9;$@U%BS*7T1qc(9!9+t*#6{elI5Q^d~m<*w6CeQBhr>$)57}_hJ@<&c_oJ z6ueWuYV&5}B}Yiddg=m6SRuU^ftC`{UVPE|*TCo3!K#F;ao^F@4od>%Z1&c5Ky z-iPnr^&Rh*e|%$O@*TVP_x3jT_3@>ho5T6wf4zR~&wc-Hn*NaEcJg?;=_SGdq7+b z2b(u09%hS(h&XWeEU&ApD`-RBkxpSy>IV&OpP6C!;`(~|IdkV;ToY;R;^qcAoc!`K z-^b^+E?L5|YuB!bZ8?(D1z)BwTd<&^rG@3o>+Ae&ZEYJiYyh=!CrzFV8VCd(0JNa| zVKoyo^TQ`kKDGCMGUPNlJHbu1f{2;VUczFIha=EneKJnSXCjr{7$whZhz)U!50hnQ=h@baM8K zD=UTX+_?if8Kk3w1GLIQN=oX&g$oBjvsO7b3_xdvyn6MjqpQnlciCIeq0tO6Y8s%W znKO---|CeLGOIs$_%QS8u(eK}o}9BxGMoPX{_gDJ!lJ6G`s2ex<|$LAfQEW|q)fRs zZrm6U6m;n8>+1{Gtvh%3r@U#F$hWt**|oK`K~oY!LP9sTn#DnGM*{P+=c%1WoO`l>e{f6Usx-F%u(WE1Ex@9WpaYwYB$%in=II$yqg z0Ue3}+73H!-aOEr#4A^>fV#CNxwodgcD#P&3QK_5mZC!~oD#NGC1>LvxH+`cnqGc- zZ*MiIep6CXY7rG)na;<@cVlz9|Jslhs=W96WUUJx9%9Y8zwfWTyt1AipOBEyi;Iho zmv29N`t;$2&g})y&&h(Ov=1~e-l@p6o8NC+{q4Z9V{Ey%wj4a#E&lQ4W%Vzwu6ExB zUHs$W=Lee0XPmOM`_Ari{d@arxk2+Rt5<_Yp+Rlayt}(tD=RB4tgR27;YiaAlkm_%59G{@$rc4njd4KQk zY|SnEkKVZ>Bd#Bp6B63;v&K$HSh(=po5&|mpMvhOu(Puh4Pv#g`y=uE{QT!Zk!dL@ zpu_T;*?1qRW!hDI0OhrczrRdDCm8InuWu~8#>&bHNEZn8@y5QhOjdrDoA%*Dfrz*`=uDLRciw$| zex8Gq^WfI(>!2o5MO76jC)fY|Dh^uur`YB{-_A88MC8cPqo9SOpv_sayGkBb8J*gH zU06uyfJF1!wYqHlaxrV)Z(OoO#l_wI@yW^RpxbSFdwHh|?U6|a)$!F%`QK;gM>vA4IkpuBwl;dXvyeSLm0F)<0Nk`)Ka zK@+ltzrJKfL`N@<-(P3{p({N1SdZk7-|zSDyzb=a=$OE?(;)D0lgX+!*QzQj(46AM z#qN(E9&QKE@K?$8v-|q`N=Qo=%m4ZFr$)xMO2pyj&M>oYAMe-yca4gYy0tx@pP88% z)EDLC)|%*KoxZ!f{Nele{TD6-teZG-?p$78US811!sBDT!bL5-@y>Y>7i73EWlWhi zE$POF#F&Yo74j9;)gTXj`1lbtJM!z>ThP%}j{g4r((~s|oywY@pI=d3{rJJb=BaYk zkB)SH`1bACy}i|p44}R4+qawR#qWz*djr&v1RY4}V*ol@A~Q2{>Esg}iY*i3C$3wk z2g+*Z=H@J{tcibreSL9jt9D3e=>FT%PEvMR5fj{!e}8*>;^fK3?c28>_%vsZ%#>-< zit5AH#~oenKmWn|_xc;=PMRci=})*#xbU=$jEsW5e*D5mum1i0y|eS6y_T*nFKD0cJlkpo zW#!*(!$8Wawi!EgD~vm((^s&&Q;i5D+kIE037J+!N-iAh961a$u7`}_Nk zKRn#NG4rz8jvYHVLO{o`H!NSi{D4jOmoFtT`|D)m;^OROf&&8uL1!#wUS77a`1!fe zy!5<0K0`ypBS(+^{ZI^AR?%W2W+KvM!nJbc%Ftz8Yu5x!>+R(=%e@tnSP5!hF87zu zvk0lEu#l0FVQF&+ky*4V~$m^C8TM~HT>Q&dMsHn9vtLy*&D<~*9Fiki5!J|h^mXjEwB)>|B_8dmGc~ z_jh-IqT{wuj%ftu8EJ1bP9-z|6ll65WHGS z?aBs)-eYSbHz%a0hc7HDb1r*+PWI03a{h}KFCOA+1$lLeU*IgMOBtZk0e*dX8L=Uu zaf93te$rC3| zT!<(P%8iVS%(%5Bb8+UD3A=(rLRy-dn6fVXSyWV93|a#2>FJr+?$q++?d|OWfq{Z$ z5-op9q=F7N)xDi)^_BT;*eC7<-w&_vHgvl_U%;uZ=*k8K@EWIwL4Ta$VgE?Kf< zU6P``qTT%dM~{-ExLiSPyS?%!*0-O3zIe-)DeM00_kc8qtlF?aKuAbPKu}PyOrtl* z`B&~gXWnkmJrLjC-WCvEth04Vm5`87LUQuu2Wo;zU6aQPEaeuf7j(5;NN8xQET7<_FJDS*YJLdp+O-R`@TtsViQL}$|8k&9 zM0V}6;^EwL)Iwk>HBjZ2c4s@@P?`$*CGLI$mK+`uia{QCkd{>qH?US`m$jRX; zE-ucC3=9-JbolVZDN|S~D=R^Ljmen`|I`|*kqo64|IhL z^Z+5yvBo!UL@2s?yt@46=H`#bGUt3XO@#pW~iSy>2(@pLzTdD*=~aPqA!DJO+o+})LRba>SL=dmz=&dNH}!UCYyY{{57L0N6<+q=8V3(CscX3PL@>39vge~p8KA(^NA{k_&Xb7VkMAQ=}FZ0i0< zbaiz(_077%dQ3u0FQ%iTg9CIx+3jt)6Q)jmdM!OYJ^5f0D`=0_k)uahzwIq}$OJlH zFa7*H$H+)Y1_fnh&~-QmFJImqcfL8GpLL~s__~aA3+v6Fv%tQWLW>%+Ud)}S4m37`>s8ylO1j0_G2(2mFH z)5Xi)-cs!;@YGH2Ndz@C|9-y@st{S&*^6I4dh`giJFk(Moryt3Rn@TSOUABm_6tG1 zlkDs3K>LKO%HDK1HnSDJhVF1Waq=W1!>=zdnL!)TEQ?$s9!|0f2?=RgvP8wj#RW7} z`~2Ko=hb0rS+-eLf73BCG6F5XGs(W@lQ4JNHnT&A5ASqiWmvIdg@U#9?zl(lO)HK! zUFi;9?sxF+U0KkLNc(E7|NQyGa_#faKV0RC63I+==Pvp9`14QDetXa~OLB7Zk>ke~ zSAKrRbbHFQX<-%m3=6&=@^3i*Jo(9qi8po@tAF|W6*S%H>+9S2H7QB-fApynCm80R zZ(pHtm;1LQXrUq>A790pbZv=hJrtT{`@Mdw^F&awbi2Piw4Lu+1c4DYHDE_ zAq=VSTUV^mxU;ufoB_1atfjqu@qz^l_BpF&v4pDfT~$ef%UkSRK`yS6wjX43f0cVj~$v-vSQ zEiEp7dAlX=8|M3zm6?GycmDWMu_fao6Xgnm}62@sfOO`AV5EW%*XK(k~KHIWbO-NW6bbHq{-DoEl7ZyD|JX zeok*`Z&$XpmHqbZ8|dUv^D|Gq-`?7KxJy*qAmf4pXlL%_<^G_nZCkm;6*M(9TTXc9 zo;rQHdGB6ZyV_qZXJ?xy-`P<(HE(;;QLZnqu5z!9-tPAK*;z$>eg5j|>R*$&)GG#@p~#jS6G>3USj$9@#BPv6IU+HIN85Ijyov*-=EK*UA>?y zcGdmntk@LD$nfdYC(!EPmzS4sOg$}jXGbA(kKvY#i;Lux)k+_poo)W&+FI$Lpr8xe za-(JJYIdA*V`b>*>`Z)rZ|{!E&uXC6Y|-2E9DRLz?{W8rgoTO8$jD5XH?Plcu9c#m z-nvU}t~+NMrz_do%1WE%9GI#d4q9=zV&%$<1}oh3^z`^Z4TaOE56`o$UX>HV(6DS7 zXiHQtXhQjTpDbu-bJOO{FRdS_Pn(5U=Z*S-4=jMW9 z43xZQv^%~MR9?b&X1@J=#stvnrXL?4-@p5B{r-PRr>E&YmP=1h-@MFs_NF68j_l%@ zd}U)#56`mIt4}k47M+;Y{rU0!ov^U*VKtu_2W<5;H4{NAF%%UQOC_~dGV90hOJQSU z<6$s1Fh~#-6uf`u-@#_~HU9JM)~s035e?dG^6dHZ@aqdFS#7ERUkBRd;^OKWnUnLT ze0%(k0>#@qi`BpXxVYH8=lJ7|>i+YtBu-gkcV}mDJ7^^dgN}kiL$qDO0fuRyT@=X~ zSy`K!+4+n5?Q4D<*s^8IjT;-2BQrBI*Bq=|&_jd;`UKBh(&-U<}o0~7L z4%g3n^Jlw+gv5gQ{dF0am+|W8>I%xp^jx|W#3N_3LvE4UR#jVD*}lHMiZ3q&)%@mg zfJ&5#J^Al0?<&m(wGV{Vd_dbG3x0jcba8ck_~>Z&R}s^dxuCP6?CWe&Qd2=AkQSDf zwdL}cJ-s{{R2F=h;?2dU|>~=}rwXz1$Vdi40QVakaKS#QltUIaXO{`~QI`~NKS z&maHr@bKz2hkT^kjnmJ8hHvNF*MlxjbL*A*I=^33Na)Z~W%g5Qzqf-<(JC|1_qJG( z=$Pf2n5g*c`+Lyn%i&9xgbE7_1A>BnEldXOAFuuWZS7(X&stFZ6cZaearW%)2M-c@ zB#oc7_a~;Nx=t;VUJ1I`@Z?F($jC_0R-0vhbALJi&d$tK)X`bfw@CSG>bEyHL1#dN zx_*z3_lN&Fyk1L5NePtAj`hh#w+l}CRrKV9AZQS?#!j9ce8_5fZ{PLZ<@t@r)6&um zjEz@cH1vGCu#I))#yfXncI@2w@XO1~FD@=-U$kfui&omCc=wzfonK#Hw@;cR^yc<< zemgt6LwucA7Ef09KXmwT^XhQpq$3=O?Jln*=bt|g+T0@~)b#D`?Z-bpKF+wgY3YW; zN=`-J-^H@9u{lLWNr5(3fo{B!6+9=db`&ty{{99!1aHOfkK(0I zP6&cDxVW&m_sOg*2=DxJ2Xw%zYq!|K9Xll0`Q?_}J02hKQ)V|P`e)93cw=KSxCav9 z((&c%SI_|k*4EY$k&&F%GC};HXaF6<92FHc!z5EEY)!<+yC-Kpd7he*(sJoikc@rZ zoPW$eSxevC5M*U#1=WbV%HQj~Dd-RYjm}@XB(y$$KPaNXoh+eD1|}w^7Fnj1?jZLo zDJeBA^`72j=vMixzHn{y_G3>^Pk&kap*!p1BG%Y?rug`H9x0QKd+aTL7J=LWT3Wct zT##XbyzqXDUH@1Xd}mbLZ}jVnFsK&^>L55xo%;*6767fY5V9zKf1QA+=+l2kjvQIA zaABk8WHm*5`}i9VL48nOzOx$@S|)fI90T2me&B!uL+a0;pw2ev&YQ3>vD4FZg^OBR z1e`n$JMnTmaja}wv`C4Emv`s!W5=ZazN)Xdbfa%ZtYB>+2G4Zc5#- zZQHR0j?D~HzBc^$_3O~-)7;zh?;q4V&CfJUu;q;i^?! z)z#GusbAwjixy3F7A*!(bb?ksR@+rpR)PjiLGvCpH8$J#xOR&fn47Qf4_0dtaQbHq z>I!;@g0_8RUtgzny}h+H@y?Dy&?f7J3l)2MdUlk~x36zovSi7DZ@#lk9{!sW zKQ%Es3L2x;G&MQJ#l@dIeOlNn&Hy?<)x*OhcaD%^i$G91xV!nEasK(^I|?6zj$&9B z4!XGqw5vcO8Fa=QIUeaKL3K86(Kv#a&IYETT9>Gp8tH>-944U`S1-2%S%)LJI|2ekp0E?s)!>{(WZl+@J3XJ=+IoN9B5jEZuKkC#8(#_ODw z1zOm#W2XeegV(RSjnmI1yuP+pLsu6xzzixSZ`_DjI0rNi78DE`Etue?p{)%X7zte` zE+_~(*gkA+6sxPNE9gYWz182_dV6{2*;FzG1_px8Tkh)WDkv{M-o`6!kakAG!^4At zfrl5gjH=OhwwYs4kWf`s6{utjTNe`W|m!_wU>7yT9)5gST&c7cElq z@bCcnCiz$oBLis82z04rL4iT|?4+lsrUrzDKK)i+T--c+wlo(v_s+kZiY*h4b%C;L z5VMk!lBilHbE@P#Q1x`YUmkQaJZJ}X*xIP0p`ZQ*rTzwG_Fi7zR;88+Rtl=Btw)Zy zfcA5Kes=coy}i|-C4fCrrd~G|g0gjKQ^5$l+hGZG2x7X6b0-CMK%gYnJwmxbr7igjUR~`;U z-oumC{Sz`XH8=PK1qrdSv4IYuv?_n6v*ZMa;*!DzZLFDFKu6f9dQUrW`ZPD_!jGPZ zpuYHy0&v~7|Np<;_mV;9mQ7Oi25r>|4-aoV<{K3ym3DR(Yi4F|x98sn zbzm-ByT+Ex!^+Ca!N=Fu+{_G`+7T5MO>Fn%P~;T@jmwHlNpXP|85O3asO;IZ2Xv~u;>DGdB_Ov=IrDb2ox5}i6j*nXqoboWG&B_K?Bw?C z+sAN9YSqb;Cj~@BkAiN60G%!I`_iSLIaZ}y^7eJ0!*uWMujh}9j9k|SI=stou2t)s zH#s+M-dtGu`PtX%rWS!9_l!Q)pD(BIhl6(2F(h1H7YjO^=khY&h0B())z{aHh>0<2 z>~`K+^YhdH{=L8ZRz1pKw)nH#H9gmfUG-Shjf4 zjoxD`Zfq!DEXd83rC=7qqov_-|2;on^&X}y9g)iU#TM;%=iZ&WH|E{l^7Lo2T;h5@ z|Ni{^dH?@E_w(~?KYskk_~7hp^B!62X-=(N6V?4eld6^9-rTG{pP!P_GIy@*?d|#D z*EPEiP1B7A9h4h(Q&`;(H23A>>kGQX<>JMO4;~~iY|FiUY(wH<&|=H9w6rOj!EE~a z>-9e?r6$JiE?eq9-|ox%`}0puRxkedr;>?@2{hk5p(5C_>`eq{1psJH@ZrOUF*}Pu zOBlXdl)t<4@X}K6BS(&?Si7gBsDLKeK(ls%A`FKPAMWhze0X(rxQnan%2d!fd=(#+ z{O8$Rv^w_s`ufhkJ~a)Ejs*)8;`Z11rlc$hoB85J#-YQ9_n+Zb4qCc;wYQT~(=8*b zf(H&#rdda}<=&3iQ(>s;HRVCS{Xd2WPft(3vO1io(*4!^w2cV*aGsjI8Qk6*q#S>1o$g%yFyvrMzwR*EKT*)#9&vsF`5yK(bo;q!B{pmpmKm zQ?){GY)a+!^Ye>J)+;G3{rUBJ{L4#Axuts9f`fyl%yLdNv-4ju5)%^x#dU0KEa;G( z?r!eYVQUw8PF9Qm=6dGQsVSO=UtL`te5dT^r&Q2ErmwH9H8e3Ple4p@gL?4^ z2?zRQtwGb9{c^UTRp#R2;-E^cyPJFB#EB*u7eI$M6+Ak^$-~PF3ie)U^JAw^gNAHC zV-+9^7Q6Sah~ID5Ev6e3?Q?FfwY!4@0~;ILk)uaHKJK?K`u#0eM_0GAuP+UBO3SUS z+Pd+pbPk?9%NrXTt6-?;ve>QHqU42uo12@2q~ym(N4b@hlt9g^@^^O>4GaX5lam?# z{dmkD6BA=#V!|S1KYtQi%l?|5lR&FZlam+Monw%Ymfl?dziyU!{<>`uOd;!HB3I8| zF7W8}EUQv2>#{c(+*KR+8A+mGMB)w2`-Md(It zNw~A4aEf;LyUE}D^MxWheDdGi*qCyDo~*~4wksPFoqKwE7&HPGv811yvoLr$=z93} z-{0R0i;K7S_VP}c5xFYmV|ExYY|p!^q^HLh9Uc8ujaew#HSgY@&gs*q zUz_}Dd$dr|(^IX@&CIvA=PxgMdMfAUrq;dH--RS3R!lQAHde0x_h-kB9S`2WKYzde zfA1oVSC@+zyuH2G7Ejj*bb3AK(di49FJFH3?2DPQvNGrx>ApU`^>KR--M&40s&+Ui zycG(CY@D5)zrDZjpOd3wS^NwX;SP^{U+$~@eWmeX{_QQ9!gqI-F7}ye#2}&4t)ml927pCYhI7dZo>cN?(P5&XDiy&;d;omEA4s z|Lxhex9;z+8M9_>s`*)zc7ER4b^B|68eLr-{(sVRwHA+~D}$GV(tRtJ=&u*GlbS$# z0s3UE-R9X;ZrSGU;sRPc<26lZrCp83E3Vlk_nA5$uS-fwx{zVAr}A^#iWM4*7B9Yf zewumyJplm$hkZ3auT)Rz@nYhh__FlX70s*5t3cbl9v$gCGtX9HgUh@-GRWQi3=C`uU4oyX&4@?f##1 zxQ$oFqM%{_|9{c7=XoTJS{5u&U^q2R_q6^0KZ~dNdw4v!x3}6M=|Fly0%$w!)+kwi zS*w<*Q$^q2+M0ZAO=M=dp%Vwgp+kpW+}&*sI!*EH*|&?od2(r)Nb%a)+0B?SBO}+o z{GH5H?eJq4E=*|Wmp4j3C&R`kbK<=H|1-NvUw`=gIk?&ov@5l~zW&SCubezQDQ9LF zvaqok6+iOe1uJj2}LJ49x$xI&7`iy*-tdm7i3eJ$p7|_H1D(DX+Cr zTPyzjFg!cUbaDOvf3ME({{Lic^ma81iy0>;tE)?I;Vt;|#1j-0Eu6xjBFoLq4YVF{ zt@MGT-QtzMzGyOR+_>@0&CTs$YoltXUe{XP)!UnTyifMV&6`Vi{C)c_+taaa`gHN@ z>*K@g>wdpAw<>+*a&J%N)sL2*pp(1K&9$B^yWOFY>CXQ8`0TrXe}CV)Z_d5B-AjX) z`?a*RJb3%|Y$G%Kl`lJspPdP0uViOs4cw4$@c%cZj{a}IzGj1xLRjbO@b#N2Kc{_F zbol@8@6Vsl=UdkNFaYgWoM#i6d-v2-ZE;XM-Puw2>i3b;r$H5tle6>X=S?jFJ9h8B zywJJ5|6SS~k&rp|_45iJA5-PlV#vF<=j1}?_79&wCtqF$+SNbBy8PXR&FTJ3OiUlX zeq|Nfe4?_l^5X9D{B60n-DVo4{&+e){tA0Eib`&;Oe}7l_|6gs|nHe8l z*Z=pPbik?RGHAz0pRDx^gG46#KOdNTrA!aqxf65tjY;jV5+-Kmm64m(`uh5I?A|@u zINh(Lq~yZo%gGN9werZ@&0%C_d+_k#LcU|QyMKpd@$m9y-rlCm&M$Z5=>J@tSlR^)R(7m3v^x_?G|ro zYZC&E&UsHSC@NA?QE4$uK2}o@9~>M!%RK+wmdwjnq)#Rv?+e_P6Pb5+SL@ulvi|dI zKy#N4Nt3^W4rf>wx0g$$Z?)&CM^`o`yKl?6xybHr-M2TA+1J*9)|;%HXPqOTN07HcwS~OA|L(H4pl&!bJKvI+oke?Ueoo>N)mot&b9$QY;*5)nM0BG>ii?Zg zdL#~BTN|wzzpo}LcA3B({^A-(9mlW~Y#{vhuI*@6R_dG6(tWyRbb!eyjHC zy?brL!ooo5w~3WIDLZ?0TBS|hAB&3@FK)@ZYjx8Q6un2gL^Xq!a4<45vaqvX-j*Bv z)mlw?Qoj7e%+M79jl9xk8DI13t~W3;Yea3)sQ>p<-LmM(f!nudhp&%YXJ} z&x7uuU$kh^hOJwd1}t>SdhOgVXS*VNy_|LVI~6UhuB)rVlk@ZEzv^w@yLWHc{Wm8k zt6$!j>~1QsGHmTED~}y@e}B!fF7IPz=MxYYKYnSc_sRM8_U`?1q0zdaym@J<_s4JF zmW8j6v#_?#{(4&E|JzfO&YbCywJsBolk;%FAWapOyRf96JvRkjEKUu;DYOJhI zIN0@3r*=U73<|Ezr)wKXeq=}OW0%aV?EMfp!Pk>Wje z?AS@B%XxQqt(0`UwKaP=-xvR&MJ}BGe!bSuySK+PB0^%R*Hln3aQEGlCoZ?Q3;ivCw_csjbK+w8}W9}|qz{Xk{vBvtQ8wwVGm=kMG1&;4vcPDaLxZ4s&G=h+?=Q|fhFEb6dN z+r3XFi|g_BmoHzc-d>+@ut~G8)42|lbx6iu!-g#B{`g31iUY==? z$OKxJWo%tlSqVCx`O~wrrw=x>fBgFO>Gu0|%nH%laxAQ^jmzFdcum)vyGHfz)z#q+ zNz-q-c8e8$dg3W%p63%2BcrFMcjU;CJ>~0qzo;~}p172CWyQg{*5w~Qe^ypgYwHr# zR@=SMTYufUb((!=1tKq>p01yHYm4So?eMgxr>4G)m7T~{TU)E5*N_(=e>#Z$$JmJPEP|e#du76^h zt~BT(&jSYXv&}-U$L}a;to{AXF!$CL{kZmy4vs~O7ELPc6mUwB1!XNQtygL zS!-+S!xt}BoU54~R#RI$d1reDbn_sE)vimkiDc7dzONXd-*n*201_lNWi!T;@eH98iX|256Jy3+f$=P{l z-QQo~E1RcIy&7)4O+e}MkFaL031Zxem#*%u{%%**$MdnYwY~lG-SYbv7dSHe`1k~f zfL0~g*w|!TSit!E`+N8B@b7y;*f@2``$xqoi1^~Wz?Qog^t8~;k^i2Drl z{CQzPEr;9rFRu#Kj@p*vIom8ZXwG-HK#@m}A8$=F2^VSIv13OFd*HF-#}_YNyttHE zP)26XnmLO!jvPC-X#M*6kIuSXN|~AOzelx2KyqqLP^XT*fmX?JdA06$tI)8Syd1qhWzdNtG&R<#N$}J-! z1Dg7qFyrIW%FoXja_;YwO;1msWtQu;E$1d^naReD8$oM)gM))X&7~U~7Ful-Q~4J= z+cev4Th2{T_Q=c21FfUX&Gk)5QStNh1Kl_1F^A>irAw1?Zf*)(;vp!e7qep99G^KB z6E7}y58hRhS@iVO(Hk3+U*6fdIqdH9v$NZ0&yJSb<8^i^XgJv*am&L$btD`k3Os{Cj&A#_le= zaqE_lm>6i>E%(-zg*i7jxwyCph=?3HIaz(CX|~w@zu% z(_Odt=cm+dd3S#uJ^%N#{{Djh|Nfr0I<_`?d&KUtx8kcViZ9{#D7rQ4s#oQQ2adbu z{y#Zcoom4y>vFxLZ<*QoLUxtBT(osv>gj2xrf3F>xCV+uM@Jt$eAqcq#I>`lE6B&! zck1DGer-iX#jd`-zDKWLuYOnl@{+1*^tK$Yh=>_QA09X!y>Y|hY8B`{B2Y&blnS&t zIXSr&#Ox?|SgddEY+dzbg;C0h318N^t&+2=S;25>srU3P*WTaXAOH8ai@UqFs@If& zIdkTS)YsQPJu}nT>*b}TS6_en@+IWdG~Lx2U5nO4Z}&4aFbMed_4V=}zkX@Wn>Vk^ zZE;{tP0f__^Yb)8-gtFw?dq7FMXrG&t}kzHULLeI%Jk{_{r`gg{P{EG+S+LCwNYDx zL|g;qY^#j{mnueX7UFMHdHIj02a;M(!|35G9`S*_>0~wxveSQ7pwzKnW zqcww;bS%>7+LU;h?dYLHPJtq>k(<+clX7y_965SavulyY$B!Sq8ktz9=BWdmv{B|_vhs258ocYtHiU`|LKW|&X#3wW-QX^y0qAxe`)picTrzI zeE1OX>iYWi8eNNcq)a?A@9o)n?OWE>Rhpo_qKIpt-+a5ZGiJ=t$iKJe=acIyYeUyW z817v?0d#+rMp;?e$!p(VUUpv@u(0Xcu9g-SRW&s?PY(}|j}e81g)8%dMO-_3du!i+ zTXX8C=g!a1&%^Dx?XKRQA1c||vr!=O*2~MwJ3GP4y+NWSl#c)&6_ii zc8e$H<*h5L6_9kEZ&wQ{6}lFI*1^x8FaP(~*TrFLqd*I_TiV(-<=wT~lzN&?#jY~z z{yy8yX=lC4beNf$LEF0;8yQ1ahov5DV!gAcQaC$18#KWY5Fij176#Ipd09;_exJ|P zRiTWaBgk2~L=+4RCcL@1nb{!u7|+((eLsqvoScHrUJ2Qd;8>b-_Vjdp(4c^ypI^!A zYreX|^77~BT9 zY;5G#EK$%IF@Jx3wXn2Y`JVUV)6i8Rp0doMl9DGo1eI^>D%F1Y@MGhC1K3)Chcjl( zFi1MWq2@o2#~~p>VQ=;KXJ=*_g9h*yI=6$i9{&0Jml1Tm#$xyWXNOw3LFy|$BrNlp z`RQO`^rP2W;p=4B`Q@%eJ%9D;6sTmsvhs4c_4~`q{rBJ6czJe7t59T=lM@rKl*xj6 z&;ZGK`~Pd|A}y?}KE1lCeQu8B;a^{07Zw&ey1Tc7HXeTYQczqR{9W24LjW|-{`B

sIYh=H+F)pd~$5uTK5= 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�IvX-n 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 literal 0 HcmV?d00001 diff --git a/src/docs/glossary.tex b/src/docs/glossary.tex index 6de8da6..34c3e43 100644 --- a/src/docs/glossary.tex +++ b/src/docs/glossary.tex @@ -97,7 +97,7 @@ }, } -\newglossaryentry{Linux}{ +\newglossaryentry{LX}{ name = Linux, description = { is a generic term referring to the family of Unix-like @@ -159,7 +159,7 @@ \newglossaryentry{lxvfs}{ name = Linux VFS, description = { - Virtual Filesystem Switch, a filesystem abstraction layer in \gls{Linux}. + Virtual Filesystem Switch, a filesystem abstraction layer in \gls{LX}. }, } @@ -186,6 +186,13 @@ } } +\newglossaryentry{program} { + name = {program}, + description = { + A set of logically grouped instructions. + }, +} + \newglossaryentry{pm}{ name=package manager, description={ @@ -255,15 +262,35 @@ \newglossaryentry{appc}{ name=App Container, description={ - Specific variant of an \gls{sac} defined by the \gls{appcorg}. + Specific variant of an \glsentrytext{sac} defined by the \glsentrytext{appcorg}. } } +\newglossaryentry{NVD}{ + name = {NVD}, + description = {https://nvd.nist.gov/}, + long = {National Vulnerability Database}, + first = {\glsentrylong{NVD}} +} + \newglossaryentry{CWE}{ - name=Common Weakness Enumeration, - description={ - A formal list of software weakness types. - } + name = {CWE™}, + long = Common Weakness Enumeration, + description = {a community-developed list of common software security weaknesses. It serves as a common language, a measuring stick for software security tools, and as a baseline for weakness identification, mitigation, and prevention efforts}, + first = {\glsentrylong{CWE}, "\glsentrydesc{CWE}"\cite{MITRE-CWE}} +} + +\newglossaryentry{CWE-633}{ + name = CWE-633, + description = {Weaknesses in this category affect memory resources}, + first = {CWE-633: \glsentrydesc{CWE-633}\cite{MITRE-CWE-633}} +} + +\newglossaryentry{CWE-119}{ + name = CWE-119, + description = {Improper Restriction of Operations within the Bounds of a Memory Buffer}, + short = {buffer error}, + first = {CWE-119: \glsentrydesc{CWE-119}\cite{MITRE-CWE-119}} } \newglossaryentry{C}{ @@ -273,25 +300,45 @@ } } +\newglossaryentry{C++}{ + name=C++, + , description={ + A \glsentrytext {proglag} based on \glsentrytext{C}, enahnced by features like object-orientation, lambdas, and much more. + } +} + \newglossaryentry{asm}{ name=Assembly programming language, - , description={ + description={ TODO ASM } } +\newglossaryentry{amd64}{ + name = AMD64, + long = AMD64, + description={ + TODO AMD64 + }, + first = {\glsentrylong{amd64}}, +} + \newglossaryentry{CPU}{ - name=Central Processing Unit - , description={ + name = CPU, + long = Central Processing Unit, + description={ TODO CPU - } + }, + first = {\glsentrylong{CPU}}, } \newglossaryentry{MMU}{ - name=Memory Management Unit - , description={ + name = MMU, + long = Memory Management Unit, + description={ TODO MMU - } + }, + first = {\glsentrylong{MMU}}, } \newglossaryentry{sysadmin}{ @@ -307,3 +354,4 @@ TODO realtime } } + diff --git a/src/docs/parts/context/context.tex b/src/docs/parts/context/context.tex index d1ab100..29425a7 100644 --- a/src/docs/parts/context/context.tex +++ b/src/docs/parts/context/context.tex @@ -6,195 +6,267 @@ This thesis studies the feasibility of using compile-time code analysis, as foun Because an \gls{OS} is nothing but a \gls{app}, this study could be applied to all \glspl{app}, but the focus is on the implementation of \glspl{OS} which is the \gls{app} that is responsible for managing the system's resources and provide abstractions for higher level applications. The \gls{OS} is the only \gls{app} that required unrestricted access to these resources, with the task of managing them safely according to the rules that are either hard-coded or set up by the \gls{sysadmin}. -\section{Memory And Safety} -\label{context::introduction::memory-safety} -% In Chapter 1 this is a summary of the methodology and contains a brief outline of three things: (a) the participants in a qualitative study or the subjects of a quantitative study (human participants are referred tyo as participants, non-human subjects are referred to as subjects), (b) the instrumentation used to collect data, and (c) the procedure that will be followed. All of these elements will be reported in detail in Chapter 3. In a quantitative study, the instrumentation will be validated in Chapter 3 in detail. In a qualitative study, if it is a researcher-created questionnaire, validating the correctness of the interview protocol is usually accomplished with a pilot study. For either a quantitative or a qualitative study, using an already validated survey instrument is easier to defend and does not require a pilot study; however, Chapter 3 must contain a careful review of the instrument and how it was validated by the creator. -% In a qualitative study, which usually involves interviews, the instrumentation is an interview protocol – a pre-determined set of questions that every participant is asked that are based on the primary research questions. A qualitative interview should contain no less than 10 open-ended questions and take no less than 1 hour to administer to qualify as “robust” research. -% In the humanities, a demographic survey should be circulated with most quantitative and qualitative studies to establish the parameters of the participant pool. Demographic surveys are nearly identical in most dissertations. In the sciences, a demographic survey is rarely needed. -Memory-safety is a term that is only vaguely defined in general, thus a definition is given for the context of this thesis. -For a thorough understanding of the issues discussed further in this document, it might be helpful to review the basics of how memory is used in current computer systems. - -For decades computer systems or more specifically their \glspl{CPU} were designed to execute instructions that were previously loaded into volatile main memory, typically from a secondary, persistent memory. -These instructions are themselves able to alter the very main memory they are stored at, which allows for great flexibility but also involves the risk of corrupting a consistent chain of instructions or other memory content like data. - -As any other \gls{app}, the \gls{OS} is executed in form of a set of logically grouped instructions, called a program. -Loading the \gls{OS}'s program into memory is not the responsibility of the \gls{OS}, it belongs to the components earlier in the boot process, namely the boot loader and system firmware. -The \gls{OS} takes over the responsibility to protect the main and secondary memory from the point where it is being handed control over by the bootloader. -Loading further programs into main memory is done by the \gls{OS}, either according to scheduled jobs set up by the \gls{sysadmin}, or based on well-defined events which can be triggered by any form of input via the system's interfaces. -For example, the \gls{OS} can load and execute a program stored on the hard-disk, after the user has gave the appropriate instructions via a terminal. - -The execution of other programs is potentially dangerous, because the program might the memory content of other programs and their data. -It is the responsibility of the \gls{OS} to prevent programs from being able to interfere with each other under any circumstances, keeping the memory content in a consistent state at all times. -This requires an extensive amount of care and foresight from the developers of the \gls{OS}, to ensure memory consistency in any of the various events and combinations thereof that might possibly occur at runtime. - -\subsection{A Definition Of Memory-Safety in the \glsentrytext{OS}} -\label{context::introduction::memory-safety::def} -If the \gls{OS} is memory-safe, any program, whether it is part of the \gls{OS} or any other \gls{app}, memory access is restricted to memory regions that have been allocated for this specific program, preventing it from reading and writing to memory regions of other programs. - -\subsection{The Human Aspect} -\label{context::introduction::memory-safety::human-aspect} -Programs are written by humans which is an important aspect against memory-safety. -No human is born as a flawless software engineer. -Beginners will start writing programs before he or she masters this skill in perfection. -Also, with each generation of humans there will always be new beginners that will start learning from scratch. -This requires a sustainable method to prevent mistakes, especially such that have an impact on memory-safety. -Advanced programmers can profit too, as they also make mistakes on a regular basis, depending on their level of focus which can vary momentarily. - -\subsection{Detecting Memory-Safety Violations - Before They Occur} -\label{context::introduction::memory-safety::detection} -The human aspect suggests that systems needs to be designed to be testable at first, and then tested thoroughly in order to mitigate the risks of erroneous software being executed by the end-user. - -Besides the presence and quality of tests, their point in the software life cycle plays an important role. -The earliest tests can be as soon as the process of software development itself, and the latest ones can be at the time of execution on the production system of the end-user. -It is desirable to place tests as early as possible in the software life cycle, to prevent them from compromising running systems that hold sensitive data and offer important services. - -The dimension of time can also be translated to hierarchically lower system components at run-time. -This suggests that the \gls{OS} must be tested before the other executed \glspl{app}, etc. -This can be easily explained. -From a \gls{app} perspective, testing every permutation of \gls{OS} runtime states can be impossible, because the \gls{app} can not freely mutate the system's state. -Even if it could, testing all possible permutations of system state is limited by time and resource restrictions. -That's why even disciplined software engineers write tests that only target common error cases, like system memory exhaustion, and ensure syntactic and semantic correctness for the \gls{app} being developed. -Edge cases that happen only under specific system circumstances, possibly influenced by other components on the system as described in the beginning of \autoref{context::introduction::memory-safety}, are at high risk of remaining untested, and the \gls{app} developer is forced to trust the underlying \gls{OS}. -This puts high importance on the safety of the \gls{OS} design and implementation. - -\subsection{Abstraction: Safety vs. Functionality} -\label{context::introduction::memory-safety::abstr-safety-function} -In computer systems, safety and functionality are counter-proportional towards each other, because with increased functionality also grows complexity, and error cases become more difficult to find. -Applying this analogy to software development, during which the errors are created in the first place, might be misleading. -It might seem that the more abstraction is provided by a language, the higher the functionality is. -In fact, the opposite is the case. -Abstraction can be used to impose limits on what the programmer can instruct the system to do. -By defining an abstraction layer in form of a programming language, the language defines which of the underlying functionality will be exposed through it. -In addition, the language can introduce obligated rules that make the written program easier to analyze in an automated fashion, before it gets compiled into the underlying representation. - -\section{Safety In Language Compilers And Static Analyzers} -\label{context::introduction::language-compilers-analyzers} -% The theoretical framework is the foundational theory that is used to provide a perspective upon which the study is based. There are hundreds of theories in the literature. For instance, if a study in the social sciences is about stress that may be causing teachers to quit, Apple’s Intensification Theory could be cited as the theory was that stress is cumulative and the result of continuing overlapping, progressively stringent responsibilities for teachers that eventually leads to the desire to quit. In the sciences, research about new species that may have evolved from older, extinct species would be based on the theory of evolution pioneered by Darwin. -% Some departments put the theoretical framework explanation in Chapter 1; some put it in Chapter 2. -In \autoref{context::introduction::memory-safety}, specifically in \autoref{context::introduction::memory-safety::detection}, it was explained that programming languages have direct impact on the memory-safety. -This section gives an example of how severe this impact is and explains the requirements on a \gls{OS} language. - -\subsection{\glsentrytext{Linux} and \glsentrytext{C}: Zero Memory-Safety A Day} -% Significance of the Study -% The significance is a statement of why it is important to determine the answer to the gap in the knowledge, and is related to improving the human condition. The contribution to the body of knowledge is described, and summarizes who will be able to use the knowledge to make better decisions, improve policy, advance science, or other uses of the new information. The “new” data is the information used to fill the gap in the knowledge. -A very popular and widespread \gls{OS} is \gls{Linux} which is written in \gls{C} and some hardware specific \gls{asm} code. -Recent years have shown how prone it is to vulnerabilities that result from programming errors related to memory management. -A very recent and high impact vulnerability is known as CVE-2017-1000364\footnote{http://www.cvedetails.com/cve/CVE-2017-1000364/}, where \textit{"an issue was discovered in the size of the stack guard page on Linux, specifically a 4k stack guard page is not sufficiently large and can be "jumped" over (the stack guard page is bypassed)"}. - -With the growing number of vulnerabilities, various solutions have been proposed to increase the safety of C, either with static code analysis or via generated checks imposed at runtime. (TODO: reference). - -Static analysis are not very effective on a language that has not been designed to be safety-analyzed. TODO? reference? -For this reason there have been attempts to define subsets of the \gls{C} language that can be safety checked, TODO: refernces of Cyclone, CCured, etc.. - -Safety checks that are performed at runtime introduce a high degree of overhead, which makes it an nonviable option in the domain of \gls{OS} development, where many code paths must be very fast to ensure the operation of high speed I/O devices\cite{Balasubramanian2017} or tasks with \gls{realtime} requirements. (TODO: explain realtime requirements) -This has been forcing \gls{OS} developers to prioritize performance over safety. (TODO: reference) - -Details about the challenge of writing code that does memory management safely, and related vulnerabilities are given further along in \autoref{chap:mmt}. - -\subsection{\glsentrytext{OS} Programming Language Choice} -Criteria for the choice of programming language are much different from choosing a language for other types of \glspl{app}. - -This is a list of what is required for implementing an \glspl{OS} - -\begin{itemize} - \item{Raw access to \gls{CPU} instructions} - \item{Deterministic temporal behavior} -\end{itemize} - -* TODO: put in some scientific background about static checks - * affine types - - -\section{Academic And Industrial Activities} +\section{Motivational Hypothesis} % Primary Research Questions % The primary research question is the basis for data collection and arises from the Purpose of the Study. There may be one, or there may be several. When the research is finished, the contribution to the knowledge will be the answer to these questions. Do not confuse the primary research questions with interview questions in a qualitative study, or survey questions in a quantitative study. The research questions in a qualitative study are followed by both a null and an alternate hypothesis. % Hypotheses % A hypothesis is a testable prediction for an observed phenomenon, namely, the gap in the knowledge. Each research question will have both a null and an alternative hypothesis in a quantitative study. Qualitative studies do not have hypotheses. The two hypotheses should follow the research question upon which they are based. Hypotheses are testable predictions to the gap in the knowledge. In a qualitative study the hypotheses are replaced with the primary research questions. -* TODO: mention paper's by tockos team -* TODO: mention electrolyte, formal verification for Rust + +%TODO: mention paper's by tockos team +%TODO: mention electrolyte, formal verification for Rust According to my best-effort literature research in Q1/2017, the hypothesis that \textit{Rust's static code analysis can guarantee memory safety in the \gls{OS}} has not been studied explicitly. -This is to my surprise, because as explained in more details in this chapter the situation in -\gls{OS} is critical and \gls{Rust} offers attractive features to help improve this situation. -However, the hypothesis cannot be trivially approved or denied, which drives the research efforts for my final thesis project. +This is to my surprise, because as explained in \autoref{context::introduction::memory-safety}, memory-safety in \gls{OS} development is critical, and \gls{Rust} offers attractive features that might bring improvements, which is covered in \autoref{context::rust}. +The hypothesis cannot be trivially approved or denied, which drives the research efforts for my final thesis project. Besides this specific hypothesis, many implementations of \glspl{OS} with \gls{Rust} have appeared in public. -These range from proof-of-concept and educational work like \gls{imezzos} and \gls{blogos}, to implementations that aim to be production grade software like \gls{redoxos} and \gls{tockos}. +Their purposes range from proof-of-concept and educational work like \gls{imezzos} and \gls{blogos}, to implementations that aim to be production grade software like \gls{redoxos} and \gls{tockos}. +These implementations are subject to evaluation in \ref{part:rnd}. -% Purpose of the Study -%The Purpose of the Study is a statement contained within one or two paragraphs that identifies the research design, such as qualitative, quantitative, mixed methods, ethnographic, or another design. The research variables, if a quantitative study, are identified, for instance, independent, dependent, comparisons, relationships, or other variables. The population that will be used is identified, whether it will be randomly or purposively chosen, and the location of the study is summarized. Most of these factors will be discussed in detail in Chapter 3. -The results will be of qualitative nature, captured by analyzing existing and a self-developed \gls{Rust}-implementations of popular memory management techniques. +The final results presented will be of qualitative nature, captured by analyzing the existing and a self-developed \gls{Rust}-implementations of popular memory management techniques. In addition to the sole analysis of \gls{Rust}-implementations, comparisons will be made, discerning the level of memory safety guarantees gained over similarly intending implementations in \gls{C}. -\section{Assumptions, Limitations, and Scope (Delimitations)} -% Assumptions are self-evident truths. In a qualitative study, it may be assumed that participants be highly qualified in the study is about administrators. It can be assumed that participants will answer truthfully and accurately to the interview questions based on their personal experience, and that participants will respond honestly and to the best of their individual abilities. -% Limitations of a study are those things over which the research has no control. Evident limitations are potential weaknesses of a study. Researcher biases and perceptual misrepresentations are potential limitations in a qualitative study; in a quantitative study, a limitation may be the capability of an instrument to accurately record data. +\section{Assessing Memory-Safety} +\label{context::introduction::memory-safety} +Memory-safety is a term that is only vaguely defined in general, thus a definition is given for the context of this thesis. +For a thorough understanding of the issues discussed further in this document, it might be helpful to review the basics of how memory is used in current computer systems. -% Scope is the extent of the study and contains measurements. In a qualitative study this would include the number of participants, the geographical location, and other pertinent numerical data. In a quantitative study the size of the elements of the experiment are cited. The generalizability of the study may be cited. The word generalizability, which is not in the Word 2007 dictionary, means the extent to which the data are applicable in places other than where the study took place, or under what conditions the study took place. -% Delimitations are limitations on the research design imposed deliberately by the researcher. Delimitations in a social sciences study would be such things as the specific school district where a study took place, or in a scientific study, the number of repetitions. +For decades computer systems, more specifically their \glspl{CPU}, were designed to execute instructions that were previously loaded into volatile main memory, typically from a secondary, persistent memory. +These instructions are themselves able to alter the very main memory they are stored at, which allows for great flexibility but also involves the risk of corrupting a consistent chain of instructions or other memory content like data. -\section{Premised Trust In Hardware} -* TODO: is it worth to explain ECC? -* TODO: explain that the hardware might be unsafe but this is not in scope of the thesis +As any other \gls{app}, the \gls{OS} is loaded and executed in form of one or multiple sets of logically grouped instructions, called \glspl{program}. +Loading the \gls{OS}'s program into memory is not the responsibility of the \gls{OS}, it belongs to the components earlier in the boot process, namely the boot loader and system firmware. +The \gls{OS} takes over the responsibility to protect the main and secondary memory from the point where it is being handed control over by the bootloader. +Loading further programs into main memory is done by the \gls{OS}, either according to scheduled jobs set up by the \gls{sysadmin}, or based on well-defined events which can be triggered by any form of input via the system's interfaces. +For example, the \gls{OS} can load and execute a program stored on the hard-disk, after the user has gave the appropriate instructions via a terminal. +The execution of other programs is potentially dangerous, because they might attempt to access the memory content of other programs and their data. -\section{Recap} -% Summarize the content of Chapter 1 and preview of content of Chapter 2. -\label{chap:mmt} -The \autoref{chap:mmt} gives a detailed introduction to memory management in contemporary architectures and \glspl{OS}. +It is the responsibility of the \gls{OS} to prevent executed programs from being able to mutually interfere with memory content that is not theirs, keeping the memory in a safe state at all times \footnote{This does not include memory-safety \textit{within} each of these executed programs, as the \gls{OS} has no pertinent knowledge of the program's intentions.}. +This requires an extensive amount of care and foresight from the developers of the \gls{OS}, to ensure memory consistency in any of the various events and combinations thereof that might possibly occur at runtime. -\chapter{Sophisticated Memory Management Techniques} -* TODO: in the beginnings application software had full control over memory -* TODO: from single-job via batch systems to multiprocessing +\subsection{A Definition Of Memory-Safety For \glsentryplural{OS}} +\label{context::introduction::memory-safety::def} +If the \gls{OS} is memory-safe, any program, whether it is part of the \gls{OS} or any installed \gls{app}, is only able to access its allocated memory regions. +Additionally, if the \gls{OS} supports shared memory regions, each shared memory region may only be accessible by programs that have been granted access to it. -As the result of collaborations between hard- and software developers, the memory management task in the \gls{OS} can be partially delegated to the \gls{CPU}'s \gls{MMU}. -A complete understanding of this task is necessary in order to reason about it's safety. -This chapter provides an introduction to hardware-supported memory-management and protection techniques for the x86\_64 architecture. +\section{Memory-Safety Violation in Software} +\label{context::introduction::memory-safety-violation-in-sw} +Software that has memory-safety violations is vulnerable to random crashes and intentional attacks. +This is why information on safety related mistakes in software shouldn't be publicly available immediately. +Ideally, before the vulnerability is publicly known, all systems that run the erroneous software in question should have the chance to update the software is question, so that any potential attackers can't leverage the known vulnerability. +This introduces a dilemma, because software updates usually contain publicly known information, at least in the open-source sector. -\section{Resource Abstraction: Protection And Efficiency} -* TODO: recap that management has been motivated by multiprocessing without side-effects -* TODO: brief history and market share of x86\_64 processors and ARM +Any existing or hypothetical solution to this dilemma is not in scope of this thesis, but two conclusions can be made. +First, public statistics in the area of software vulnerabilities are questionable with regard to their completeness. +Second, and more importantly, memory-safety related software mistakes should be detected as early as possible, ideally before the software is released and installed anywhere. -\section{Virtual Addresses} -* TODO: describe dynamic (relocatable) addresses -* TODO: describe swapping -* TODO: describe virtual address +\subsection{Human Aspects} +\label{context::introduction::human-aspect} +To detect software mistakes early, it is helpful to analyze where they originate. +This section emphasizes the fact that software - even if software-generators are interleaved - is ultimately produced by humans. +This aspect is relevant to assessing the origins of memory-safety related errors, as only errors made by humans during any stage of the development process can lead to unsafe memory access at runtime. +The following assumptions are made based on common sense +\begin{itemize} +\item{No human is born as a flawless software engineer.} +\item{Beginners will start writing programs before they master this skill in perfection.} +\item{With each generation of humans there will always be new beginners that will start learning from scratch.} +\item{Capabilities and motivation vary significantly between individuals.} +\item{Less capable or motivated individuals will eventually write software for production use.} +\item{Education is not ideal.} +\end{itemize} +Combining these assumptions, it cannot generally be assumed that every beginner that writes software has learned about the involved risks, and is determined and capable to ensure memory-safety and other high quality standards in their software. -% * TODO: parse http://wiki.osdev.org/Memory_Management_Unit +From my personal experience with software developers and students of software engineering, I have received the impression that many do not prioritize safety in their software. -\section{Paging} -* TODO: describe +The most severe example for this in my personal career is a former team partner in one of our \gls{C}/\gls{C++} programming courses. +Despite the fact that the professor instructed us to use valgrind\footnote{a runtime memory analyzer and debugger} to verify our programs, my partner was satisfied with the result after writing the algorithms to his best understanding and correcting all errors detected by the \gls{compiler}. +Discussing the topic with him did not lead to any understanding on his side, and even after verifying that his program had easily detectable memory issues, he insisted on the correct result of the algorithm and pointed out the lack of time. +I realized similar mindset in some of the other teams. -\subsection{Multi-Level Paging} +This personal experience is no scientific proof nor is it statistically significant. +It does create a feeling of insecurity, because if their software is distributed widely a few of these people are enough to risk the security of thousands of systems. -\subsection{Top-Level Page Table Self-Reference} +Plenty of educational, economical or methodological solutions are imaginable for this problem. +Higher focus on safety and testing in education, enforced internal company guidelines, or industry wide third party software certification requirements can be attempted. +For this thesis such constraints are out of scope, and the focus is on examining technical methods that detect and indicate mistakes as early as possible. -\subsection{Caching Lookups} +\subsection{Technical Aspect} +The problem on the technical side is that the \gls{compiler} was not able to detect all errors that are in the source code and the human was able to produce an executable program. +The resulting executable program might merely serve its purpose, and can contain severe technical mistakes that are not considered an error by the \gls{compiler}. +This is especially likely in low-abstraction languages like \gls{C}, where technical mistakes and intended behavior are difficult to distinguish. -\subsection{Full Example} +\section{Hardware-supported Memory-Management} +This section provides an overview of hardware-supported memory-management and protection techniques, which are necessary to understand in order to reason about memory-safety in the \gls{OS}. +To keep this section as short as possible, 64-Bit mode as described in \cite{AMD64Vol2} is assumed. +To effects of this are, in short, that the system relies primarily on paging memory management, thus memory segmentation can be neglected in this context. +To improve the efficiency and safety of memory-management, developers of hardware and software have been collaborating to offload some memory-management operations from the \gls{OS} to the \gls{CPU}'s \gls{MMU}. +This improves speed and adds runtime memory permission checks\cite[p. 117]{AMD64Vol2}. + + +\subsection{Virtualization - Challenges Of Multitasking} +In order to concurrently run multiple programs easily and presumably safely, the \gls{OS} conducts virtualization of the \gls{CPU}, memory and other resources\cite{Arpaci-Dusseau2015}. +This allows to perform preemptive multitasking transparently to the programs at runtime, which means that it has no side-effects on the running programs and it needs not be considered during \gls{app} development. + +\subsubsection{Task Switching} +When the \gls{OS} preempts a task it needs to store and preserve the current task's context in a well-known and protected memory location, so that it can be restored when this task is resumed. +The context consists of all volatile resources that can possibly be overwritten by another task. +This is at minimum a set of \gls{CPU} registers depending on the specific architecture. +For \gls{amd64}, see \autoref{tab:task-minimum-context-registers}. + +\begin{table} + \begin{tabularx}{\textwidth}{| c | X | X |} + \hline + \textbf{descriptive name} & + \textbf{register names on amd64} & + \textbf{description} \\ + \hline + the instruction pointer register & RIP & address of the next instruction to be fetched \\ + \hline + the instruction pointer register & RIP & address of the next instruction to be fetched \\ + \hline + all general-purpose registers & RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, R8–R15 & any data \\ + \hline + the instruction pointer register & RIP & address of the next instruction to be fetched \\ + \hline + the stack pointer register & RSP & address of current position in stack \\ + \hline + the flags register & RFLAGS & various attributes, e.g. the interrupt flag \\ + \hline + the instruction pointer register & RIP & address of the next instruction to be fetched \\ + \hline + \end{tabularx} + \caption{Minimum Context Registers on amd64\cite[p. 28]{AMD64Vol2}} + \label{tab:task-minimum-context-registers} +\end{table} + +\subsection{Virtual Address Translation and Paging} +% TODO: why virtual addressing? +On \gls{amd64}, the software's instructions use virtual memory addresses, which are translated to physical memory addresses by the \gls{MMU} of the \gls{CPU} at the time the instructions are executed. +The responsibility falls onto the \gls{OS}, thus \gls{app} developers don't have to consider paging in the logic of their programs. + + +To avoid the need for storing a translation mapping for every possible address, mappings are grouped into fixed-size pieces, called \textit{page}s. +This works by encoding the offset within the page into virtual address, together with the index into the translation array, which is an array commonly called the \textit{page table}. + +The translation itself is performed by the \gls{MMU} according to a map that is called page table, which is a structure maintained in memory by the \gls{OS}. +This memory structure can be stored anywhere in memory, and the address is handed to the \gls{MMU} via a specific \gls{CPU} register, which is \textit{CR3} on \gls{amd64}. + +\begin{figure} +\centering +\includegraphics[width=\textwidth]{gfx/Virtual-to-Physical-Address-Translation-Long-Mode.png} +\caption{Virtual to Physical Address in Long Mode\cite{AMD64Vol2}} +\label{fig:virtual-addr-transl} +\end{figure} + +\subsubsection{Multi-Level Paging} +\begin{figure} +\centering +\includegraphics[width=\textwidth]{gfx/amd64-4kb-page-translation-long-mode} +\caption{4-Kbyte Page Translation—Long Mode\cite{AMD64Vol2}} +\label{fig:4kb-page-transl} +\end{figure} + +\subsubsection{Top-Level Page Table Self-Reference} +\subsubsection{Caching Lookups} +\subsubsection{Full Example} * http://taptipalit.blogspot.de/2013/10/theory-recursive-mapping-page.html * https://www.coresecurity.com/blog/getting-physical-extreme-abuse-of-intel-based-paging-systems-part-2-windows +\subsubsection{Swapping} +The physical memory can only hold a limited number of pages, and the \gls{OS} is responsible to swap the pages into and from physical memory from and to a persistent memory. +Swapping is only mentioned for the sake of completeness, and is not further pursued in this thesis. -\section{Stack And Heap Concept} -\section{Memory Allocation} +\subsection{Premised Trust In Hardware} -\chapter{Memory-Related Software-Programming Weaknesses} -\label{chap:context.mem-weaknesses} -Software vulnerabilities can be categorized by their underlying weaknesses. -This chapter explains the weaknesses of interest for this project and gives concrete examples for their manifestation. +\subsection{Stack And Heap Concept} -\section{Weakness Categories} -This work focuses on the following weaknesses defined in the \gls{CWE} +\subsection{Memory Allocation} + +\chapter{Common Memory-Safety Mistakes} +\label{chap:context:common-mem-safety-mistakes} +Building upon \autoref{context::introduction}, which describes the basic mechanics of memory usage and how mistakes come to existence, this chapter explains some of the most common software vulnerabilities that are related to memory-safety. +The relevant vulnerability classes are explained alongside exemplary manifestations in \gls{C}/\gls{C++}. +In \autoref{rnd::porting-c-vulns}, these are ported and compared to functionally equivalent versions written in \gls{Rust}. + +\section{\glsentrylong{CWE}} +Ongoing effort of collecting, analyzing and classifying vulnerabilities and their underlying weaknesses has been expended by the \textit{The MITRE Corporation} in form of the \gls{CWE}. +It has grown to a large relational database of typed weaknesses. +The following information is provided for enumerations of the type weakness class: \begin{itemize} - \item{Improper Restriction of Operations within the Bounds of a Memory Buffer} - https://cwe.mitre.org/data/definitions/119.html - - % TODO: find more + \item Description + \item Applicable Platforms + \item Common Consequences + \item Likelihood of Exploit + \item Demonstrative Examples + \item Potential Mitigations + \item Relationships \end{itemize} -\section{Manifestation Examples} +\subsection{Relevant Weaknesses} +The relevant weakness for this thesis are \gls{CWE-633} and respectively all of its children, as it serves as an umbrella weakness. + +% TODO test the autocite command with footnotes +One of its children, \citep{MITRE-CWE-119}, is particularly interesting. +If this weakness is manifested, a direct violation of the memory-safety defined in \autoref{context::introduction::memory-safety::def} must have occurred, which "can cause read or write operations to be performed on memory locations that may be associated with other variables, data structures, or internal program data. +As a result, an attacker may be able to execute arbitrary code, alter the intended control flow, read sensitive information, or cause the system to crash"\cite{MITRE-CWE-119}. +This can happen on certain languages, which "allow direct addressing of memory locations and do not automatically ensure that these locations are valid for the memory buffer that is being referenced. +\gls{C}, \gls{C++}, \gls{asm} and languages without memory management support"\cite{MITRE-CWE-119}. +The documented formulation of languages prone to this weakness is incorrect, as it doesn't conform with the earlier statement of languages that "allow direct addressing of memory locations". +Direct memory addressing support doesn't imply a lack of memory management support. + +Interestingly there are languages - like \gls{Rust} - that provide memory management support and still allow direct memory addressing. +This will be explained in \autoref{context::rust} in more detail. + +\subsection{Statistics} +This section presents data with the intention of expressing the weakness's severity in real-world software. +The data is based on publicly available sources, thus the completeness of is questionable, because many organizations might choose to not disclose their vulnerabilities, either to protect their reputation or for security reasons as already explained in \autoref{context::introduction::memory-safety-violation-in-sw}. + +\subsubsection{NVD's CWE-119 Statistics} +The data and visualizations are supplied by the \gls{NVD}, which collects the data based on the umbrella weakness CWE-635\footnote{http://cwe.mitre.org/data/definitions/635.html} that was specifically created for the \gls{NVD}. + +\autoref{fig:vulnerability-ratio-history} and \autoref{fig:vulnerability-counts-history} display statistics on vulnerabilities grouped by their \gls{CWE} category. +Only the most significant categories are labeled in these figures, the rest is grouped as \textit{other}. +The category \textit{buffer\footnote{A limited chunk of memory used by programs to store various data} errors} represents \autocite{MITRE-CWE-119}. + +\begin{table} + \centering + \begin{spreadtab}{{tabular}{ c | c | c }} + @ Year & @ \% & @ count \\ + \hline + @ 2007 & 6.75 & 490 \\ + @ 2008 & 10.01 & 550 \\ + @ 2009 & 9.84 & 530 \\ + @ 2010 & 11.58 & 530 \\ + @ 2011 & 15.95 & 600 \\ + @ 2012 & 13.67 & 650 \\ + @ 2013 & 14.63 & 670 \\ + @ 2014 & 9.69 & 800 \\ + @ 2015 & 15.18 & 1050 \\ + @ 2016 & 18.46 & 1150 \\ + @ 2017 & 16.34 & @ - \\ + \hline + @ Average & :={round(sum([0,-11]:[0,-1])/11, 2)} & @- \\ + \end{spreadtab} + \caption{Vulnerability \textit{"buffer error"} Counts History} + \label{tab:vulnerability-buffer-error-by-history} +\end{table} + +\begin{figure} +\centering +\includegraphics[width=\textwidth]{gfx/Relative-Vulnerability-Type-Totals-By-Year} +\caption{Vulnerability Relative Counts History} +\label{fig:vulnerability-ratio-history} +\includegraphics[width=\textwidth]{gfx/Vulnerability-Type-Change-by-Year} +\caption{Vulnerability Absolute Counts History} +\label{fig:vulnerability-counts-history} +\end{figure} + +In \autoref{tab:vulnerability-buffer-error-by-history}, the column \textit{relative count} represents \autoref{fig:vulnerability-ratio-history}, and the column \textit{absolute count} represents \autoref{fig:vulnerability-counts-history}. +With 16.34 percent of all vulnerabilities known by 2017, and an average of 12.92 percent over the last 10 years, \gls{CWE-119} is to be taken seriously. + +\section{Example Manifestations} \subsection{Uninitialized Pointers} @@ -228,14 +300,101 @@ if (ptr == NULL) { } \end{lstlisting} -\subsection{TODO: more} +\section{The Stack Clash} +A recent and high impact vulnerability named \textit{Stack Clash}\footnote{https://blog.qualys.com/securitylabs/2017/06/19/the-stack-clash}, is briefly described as \textit{"a vulnerability in the memory management of several operating systems. It affects Linux, OpenBSD, NetBSD, FreeBSD and Solaris, on i386 and amd64. It can be exploited by attackers to corrupt memory and execute arbitrary code."} +The \gls{LX} specific vulnerability is listed as CVE-2017-1000364\footnote{http://www.cvedetails.com/cve/CVE-2017-1000364/}, where \textit{"an issue was discovered in the size of the stack guard page on Linux, specifically a 4k stack guard page is not sufficiently large and can be "jumped" over (the stack guard page is bypassed)"}. + +% TODO: more references and deeper explanation of what happens: see introduction in https://www.qualys.com/2017/06/19/stack-clash/stack-clash.txt + +\chapter{Safe \gls{OS} Development} +\label{context::introduciton::safe-os-dev} +This section gives a brief summary of relevant concepts of \gls{OS} development on common hardware platforms, focusing on memory management and its risks. + +In order to protect the memory of each executed program according to \autoref{context::introduction::memory-safety::def}, the \gls{OS} must be designed, developed, and tested carefully. + +\subsection{Detecting Memory-Safety Violations ASAP} +\label{context::safe-os-dev::detecting-safety-violations-asap} + +Given that it can not be prevented for individuals to type erroneous code into their code editors. + +Ideally, the \gls{compiler} should be able to detect the programmers technical mistakes, especially the ones that have a negative impact on memory-safety. + +Not only beginners or sloppy programmers, but advanced programmers can profit too. +Everybody makes mistakes from time to time, depending on the level of focus which is not a constant. + +The human aspect suggests that systems needs to be designed to be testable, and then tested thoroughly in order to mitigate the risks of erroneous software being executed by the end-user. + +In addition to the presence and quality of tests, their timing in the software life cycle plays an important role. +The earliest tests can be as soon as the process of software development itself, and the latest ones can be at the time of execution on the production system of the end-user. +It is desirable to place tests as early as possible in the software life cycle, to prevent them from compromising running systems that hold sensitive data and offer important services. + +The dimension of time can also be translated to hierarchically lower system components at run-time. +This suggests that the \gls{OS} must be tested before the other executed \glspl{app}, etc. +This can be easily explained. +From a \gls{app} perspective, testing every permutation of \gls{OS} runtime states can be impossible, because the \gls{app} can not freely mutate the system's state. +Even if it could, testing all possible permutations of system state is limited by time and resource restrictions. +That's why even disciplined software engineers write tests that only target common error cases, like system memory exhaustion, and ensure syntactic and semantic correctness for the \gls{app} being developed. +Edge cases that happen only under specific system circumstances, possibly influenced by other components on the system as described in the beginning of \autoref{context::introduction::memory-safety}, are at high risk of remaining untested, and the \gls{app} developer is forced to trust the underlying \gls{OS}. +This puts high importance on the safety of the \gls{OS} design and implementation. + +\subsection{The Effects Of \Glspl{proglang} on Memory-Safety} +There are dozens of \glspl{proglang} used by humans to write \glspl{app}, but only a few are used to write \glspl{OS}. + +\subsubsection{Abstraction: Safety vs. Functionality} +\label{context::introduction::memory-safety::abstr-safety-function} +In computer systems, safety and functionality are counter-proportional towards each other, because with increased functionality also grows complexity, and error cases become more difficult to find. +Applying this analogy to software development, during which the errors are created in the first place, might be misleading. +It might seem that the more abstraction is provided by a language, the higher the available functionality is. +In fact, the opposite is the case. +Abstraction can be used to impose limits on what the programmer can instruct the system to do. +By defining an abstraction layer in form of a programming language, the language defines which of the underlying functionality will be exposed through it. +, the language can introduce obligated rules that make the written program easier to analyze in an automated fashion, before it gets compiled into the underlying representation. + +\section{Safety In Language Compilers And Static Analyzers} +\label{context::introduction::language-compilers-analyzers} + +In \autoref{context::introduction::memory-safety}, specifically in \autoref{context::introduction::memory-safety::detection}, it was explained that programming languages have direct impact on the memory-safety. +This section gives an example of how severe this impact is and explains the requirements on a \gls{OS} language. + +\chapter{CWE Examples} % TODO is this chapter required? +% Significance of the Study +% The significance is a statement of why it is important to determine the answer to the gap in the knowledge, and is related to improving the human condition. The contribution to the body of knowledge is described, and summarizes who will be able to use the knowledge to make better decisions, improve policy, advance science, or other uses of the new information. The “new” data is the information used to fill the gap in the knowledge. +One of the main reasons for me to work on this topic is the increasing number of vulnerabilities based on memory-safety issues, represented by the statistics shown in \autoref{TODO} + +\section{Linux and C} +A very popular and widespread \gls{OS} is \gls{LX} which is written in \gls{C} and some hardware specific \gls{asm} code. +Recent years have shown how prone it is to vulnerabilities that result from programming errors related to memory management. + +With the growing number of vulnerabilities, various solutions have been proposed to increase the safety of C, either with static code analysis or via \gls{compiler}-generated checks imposed at runtime. (TODO: reference). + +Static analysis are not very effective on a language that has not been designed to be safety-analyzed. TODO? reference? +For this reason there have been attempts to define subsets of the \gls{C} language that can be safety checked, TODO: refernces of Cyclone, CCured, etc.. + +Safety checks that are performed at runtime introduce a high degree of overhead, which makes it a nonviable option in the domain of \gls{OS} development, where many code paths must be very fast to ensure the operation of high speed I/O devices\cite{Balasubramanian2017} or tasks with \gls{realtime} requirements. (TODO: explain realtime requirements) +This has been forcing \gls{OS} developers to prioritize performance over safety. (TODO: reference) + +Details about the challenge of writing code that does memory management safely, and related vulnerabilities are given further along in \autoref{chap:mmt}. + +\section{Choice of \Glsentrytext{proglang} Choice} +Criteria for the choice of programming language are much different from choosing a language for other types of \glspl{app}. + +This is a list of what is required for implementing an \glspl{OS} + +\begin{itemize} + \item{Raw access to \gls{CPU} instructions} + \item{Deterministic temporal behavior} +\end{itemize} + +% TODO: put in some scientific background about static checks +% * affine types + \chapter{Memory-Safety Analysis Techniques} As per the previous \autoref{chap:context.mem-weaknesses} there is general awareness of the problems, and there has been ongoing effort to develop and improve techniques that assist the programmer to detect and avoid such mistakes first- or secondhand. \section{Static vs. Dynamic Analysis} -* TODO: explain first-/secondhand -> static/dynamic -> compile-time/runtime -> offline/online -* TODO: Explain static and dynamic checks +% TODO: explain first-/secondhand -> static/dynamic -> compile-time/runtime -> offline/online +% TODO: Explain static and dynamic checks \section{Requirements} diff --git a/src/docs/parts/research_and_development/research_and_development.tex b/src/docs/parts/research_and_development/research_and_development.tex index 6ff51a3..ab367fd 100644 --- a/src/docs/parts/research_and_development/research_and_development.tex +++ b/src/docs/parts/research_and_development/research_and_development.tex @@ -1,74 +1,80 @@ % // vim: set ft=tex: \chapter{Topic Refinement} -- TODO: is this chapter required? +% TODO: is this chapter required? \chapter{Derived Research Questions} \subsection{Definition Of Additional Analysis Rules To Extend Safety Checks} -* TODO: How can Business Logical -Examples: -* TLB needs to be reset on Task Change -* Registers need to be +% TODO: How can Business Logical +% Examples: +% TLB needs to be reset on Task Change +% Registers need to be \subsubsection{Software Fault Isolation} -* TODO: content from \cite{Balasubramanian2017} +% TODO: content from \cite{Balasubramanian2017} \subsection{More Detailed Research Questions} -* Which language items help with managing memory? -* How generic can the memory allocators be written? +% TODO Which language items help with managing memory? +% TODO How generic can the memory allocators be written? -Guarantees to be statically checked: -* Control access to duplicates in page tables -* Tasks can't access unallocated (physical) memory -* Tasks can't access other tasks memory +% TODO Guarantees to be statically checked: +% TODO * Control access to duplicates in page tables +% TODO * Tasks can't access unallocated (physical) memory +% TODO * Tasks can't access other tasks memory \subsection{Interrupts} -* https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf p. 2848 +% TODO https://software.intel.com/sites/default/files/managed/39/c5/325462-sdm-vol-1-2abcd-3abcd.pdf p. 2848 \section{Software Tests} -* TODO: describe that tests are mostly semantics as opposed to static checks being mostly syntactical and technical -* TODO: They necessary in addition to static checks to cover the well-known use-cases and edge-cases. TODO: example? +% TODO: describe that tests are mostly semantics as opposed to static checks being mostly syntactical and technical +% TODO: They necessary in addition to static checks to cover the well-known use-cases and edge-cases. +% TODO: example? -\chapter{\glsentrytext{Linux} Modules Written In \glsentrytext{Rust}} -* TODO: describe Difficulties with the GPL Macros used Within Kernel Modules + +\chapter{Porting \glsentrytext{C} Vulnerabilities} +\label{rnd:porting-c-vulns} +In this chapter, the examples from \autoref{TODO} ported to \gls{Rust} for evaluation. + +\chapter{\glsentrytext{LX} Modules Written In \glsentrytext{Rust}} +% TODO: describe Difficulties with the GPL Macros used Within Kernel Modules \chapter{Existing \glsentrytext{OS}-Development Projects Based On Rust} \section{Libraries} \subsection{Libfringe} -* https://github.com/edef1c/libfringe +% TODO: https://github.com/edef1c/libfringe \section{Systems} \subsection{intermezzOS} \subsection{Blog OS} \subsection{Redox} \subsection{Tock} - + \chapter{\glsentrytext{imezzos}: Adding Preemptive \glsentrytext{OS}-Level Multitasking} \section{Timed Interrupts For Scheduling and Dispatching} \section{Simple Stack Allocation Scheme} \section{Risk Of Stack-Overflow} -* TODO: The compiler doesn't check for stack overflows. -* TODO: Describe possible implementation. - Parameters: - Stack limit for each function: user defined constant, - Stack size for each function: calculated, - Call-Tree: calculated, +% TODO: The compiler doesn't check for stack overflows. +% TODO: Describe possible implementation. +% Parameters: +% Stack limit for each function: user defined constant, +% Stack size for each function: calculated, +% Call-Tree: calculated, \chapter{Result Generalization} \section{Low-Level Safe Abstractions in Rust} -* TODO: Is the static analysis of hardware specific assembly code possible and useful at all? - * LLVM knows about the target and can potentially give hints about hardware specific instructions +% TODO: Is the static analysis of hardware specific assembly code possible and useful at all? +% TODO: LLVM knows about the target and can potentially give hints about hardware specific instructions \section{Tracking \textit{'static}ally allocated Resources} \section{The Necessary Evils of \textit{unsafe}} \chapter{Result Evaluation} -* TODO: repeat that rust *can* be used to increase safety in the OS, but it doesn't guarantee it per-se +% TODO: repeat that rust *can* be used to increase safety in the OS, but it doesn't guarantee it per-se \chapter{Summary} diff --git a/src/docs/thesis.bib b/src/docs/thesis.bib index 8c652c8..5164367 100644 --- a/src/docs/thesis.bib +++ b/src/docs/thesis.bib @@ -3,190 +3,14 @@ Any changes to this file will be lost if it is regenerated by Mendeley. BibTeX export options can be customized via Options -> BibTeX in Mendeley Desktop -@article{Reed2015, -abstract = {Rust is a new systems language that uses some advanced type system features, specifically affine types and regions, to statically guarantee memory safety and eliminate the need for a garbage collector. While each individual addition to the type system is well understood in isolation and are known to be sound, the combined system is not known to be sound. Furthermore, Rust uses a novel checking scheme for its regions, known as the Borrow Checker, that is not known to be correct. Since Rust's goal is to be a safer alternative to C/C++, we should ensure that this safety scheme actually works. We present a formal semantics that captures the key features relevant to memory safety, unique pointers and borrowed references, specifies how they guarantee memory safety, and describes the operation of the Borrow Checker. We use this model to prove the soudness of some core operations and justify the conjecture that the model, as a whole, is sound. Additionally, our model provides a syntactic version of the Borrow Checker, which may be more understandable than the non-syntactic version in Rust.}, -author = {Reed, Eric}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/Patina$\backslash$: A Formalization of the Rust Programming Language.pdf:pdf}, -number = {February}, -pages = {1--37}, -title = {{Patina: A Formalization of the Rust Programming Language}}, -year = {2015} -} -@article{Dhurjati2003, -abstract = {Traditional approaches to enforcing memory safety of programs rely heavily on runtime checks of memory accesses and on garbage collection, both of which are unattractive for embedded applications. The long-term goal of our work is to enable 100{\%} static enforcement of memory safety for embedded programs through advanced compiler techniques and minimal semantic restrictions on programs. The key result of this paper is a compiler technique that ensures memory safety of dynamically allocated memory without programmer annotations, runtime checks, or garbage collection, and works for a large subclass of type-safe C programs. The technique is based on a fully automatic pool allocation (i.e., region-inference) algorithm for C programs we developed previously, and it ensures safety of dynamically allocated memory while retaining explicit deallocation of individual objects within regions (to avoid garbage collection). For a diverse set of embedded C programs (and using a previous technique to avoid null pointer checks), we show that we are able to statically ensure the safety of pointer and dynamic memory usage in all these programs. We also describe some improvements over our previous work in static checking of array accesses. Overall, we achieve 100{\%} static enforcement of memory safety without new language syntax for a significant subclass of embedded C programs, and the subclass is much broader if array bounds checks are ignored.}, -author = {Dhurjati, D and Kowshik, S and Adve, V and Lattner, C}, -doi = {10.1145/780742.780743}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/Memory Safety Without Runtime Checks or Garbage.pdf:pdf}, -isbn = {0362-1340}, -issn = {03621340}, -journal = {Acm Sigplan Notices}, -keywords = {automatic pool allocation,compilers,embedded systems,languages,programming languages,region management,security,static analysis}, -number = {7}, -pages = {69--80}, -title = {{Memory safety without runtime checks or garbage collection}}, -volume = {38}, -year = {2003} -} -@inproceedings{Kuznetsov2014, -abstract = {Systems code is often written in low-level languages like C/C++, which offer many benefits but also dele- gate memory management to programmers. This invites memory safety bugs that attackers can exploit to divert control flow and compromise the system. Deployed de- fense mechanisms (e.g., ASLR, DEP) are incomplete, and stronger defense mechanisms (e.g., CFI) often have high overhead and limited guarantees [19, 15, 9]. We introduce code-pointer integrity (CPI), a new de- sign point that guarantees the integrity of all code point- ers in a program (e.g., function pointers, saved return ad- dresses) and thereby prevents all control-flow hijack at- tacks, including return-oriented programming. We also introduce code-pointer separation (CPS), a relaxation of CPI with better performance properties. CPI and CPS offer substantially better security-to-overhead ratios than the state of the art, they are practical (we protect a complete FreeBSD system and over 100 packages like apache and postgresql), effective (prevent all attacks in the RIPE benchmark), and efficient: on SPEC CPU2006, CPS averages 1.2{\%} overhead for C and 1.9{\%} for C/C++, while CPI's overhead is 2.9{\%} for C and 8.4{\%} for C/C++. A prototype implementation of CPI and CPS can be obtained from http://levee.epfl.ch. 1}, -author = {Kuznetsov, Volodymyr and Szekeres, L{\'{a}}szl{\'{o}} and Payer, Mathias}, -booktitle = {Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation}, -isbn = {9781931971164}, -pages = {147--163}, -title = {{Code-pointer integrity}}, -url = {https://www.usenix.org/conference/osdi14/technical-sessions/presentation/kuznetsov{\%}5Cnhttps://www.usenix.org/system/files/conference/osdi14/osdi14-paper-kuznetsov.pdf?utm{\_}source=dlvr.it{\&}utm{\_}medium=tumblr}, -year = {2014} -} -@article{Merity2016, -abstract = {Recent neural network sequence models with softmax classifiers have achieved their best language modeling performance only with very large hidden states and large vocabularies. Even then they struggle to predict rare or unseen words even if the context makes the prediction unambiguous. We introduce the pointer sentinel mixture architecture for neural sequence models which has the ability to either reproduce a word from the recent context or produce a word from a standard softmax classifier. Our pointer sentinel-LSTM model achieves state of the art language modeling performance on the Penn Treebank (70.9 perplexity) while using far fewer parameters than a standard softmax LSTM. In order to evaluate how well language models can exploit longer contexts and deal with more realistic vocabularies and larger corpora we also introduce the freely available WikiText corpus.}, -archivePrefix = {arXiv}, -arxivId = {1609.07843}, -author = {Merity, Stephen and Xiong, Caiming and Bradbury, James and Socher, Richard}, -eprint = {1609.07843}, -journal = {Arxiv}, -title = {{Pointer Sentinel Mixture Models}}, -url = {http://arxiv.org/abs/1609.07843}, -year = {2016} -} -@article{Chisnall2015, -abstract = {We propose a new memory-safe interpretation of the C ab-stract machine that provides stronger protection to benefit security and debugging. Despite ambiguities in the specifi-cation intended to provide implementation flexibility, con-temporary implementations of C have converged on a mem-ory model similar to the PDP-11, the original target for C. This model lacks support for memory safety despite well-documented impacts on security and reliability. Attempts to change this model are often hampered by as-sumptions embedded in a large body of existing C code, dat-ing back to the memory model exposed by the original C compiler for the PDP-11. Our experience with attempting to implement a memory-safe variant of C on the CHERI ex-perimental microprocessor led us to identify a number of problematic idioms. We describe these as well as their in-teraction with existing memory safety schemes and the as-sumptions that they make beyond the requirements of the C specification. Finally, we refine the CHERI ISA and abstract model for C, by combining elements of the CHERI capabil-ity model and fat pointers, and present a softcore CPU that implements a C abstract machine that can run legacy C code with strong memory protection guarantees.}, -author = {Chisnall, David and Rothwell, Colin and Watson, Robert N M and Woodruff, Jonathan and Vadera, Munraj and Moore, Simon W and Roe, Michael and Davis, Brooks and Neumann, Peter G}, -doi = {10.1145/2694344.2694367}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/Beyond the PDP-11$\backslash$: Architectural support for a memory-safe C abstract machine.pdf:pdf}, -isbn = {9781450328357}, -issn = {01635964}, -journal = {Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems}, -pages = {117--130}, -title = {{Beyond the PDP-11 : Architectural support for a memory-safe C abstract machine}}, -url = {http://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/201503-asplos2015-cheri-cmachine.pdf}, -year = {2015} -} -@article{Arpaci-Dusseau2015, -abstract = {A book covering the fundamentals of operating systems, including virtualization of the CPU and memory, threads and concurrency, and file and storage systems. Written by professors active in the field for 20 years, this text has been developed in the classrooms of the University of Wisconsin-Madison, and has been used in the instruction of thousands of students.}, -author = {{Arpaci-Dusseau Remzi}, Arpaci-Dusseau Andrea}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/operating{\_}systems{\_}{\_}three{\_}easy{\_}pieces{\_}{\_}electronic{\_}version{\_}0{\_}91{\_}.pdf:pdf}, -journal = {Arpaci-Dusseau}, -number = {0.91}, -pages = {665}, -title = {{Operating Systems: Three Easy Pieces}}, -volume = {Electronic}, -year = {2015} -} -@article{Szekeres2013, -abstract = {Memory corruption bugs in software written in low-level languages like C or C++ are one of the oldest problems in computer security. The lack of safety in these languages allows attackers to alter the program's behavior or take full control over it by hijacking its control flow. This problem has existed for more than 30 years and a vast number of potential solutions have been proposed, yet memory corruption attacks continue to pose a serious threat. Real world exploits show that all currently deployed protections can be defeated. This paper sheds light on the primary reasons for this by describing attacks that succeed on today's systems. We systematize the current knowledge about various protection techniques by setting up a general model for memory corrup- tion attacks. Using this model we show what policies can stop which attacks. The model identifies weaknesses of currently deployed techniques, as well as other proposed protections enforcing stricter policies. We analyze the reasons why protection mechanisms imple- menting stricter polices are not deployed. To achieve wide adoption, protection mechanisms must support a multitude of features and must satisfy a host of requirements. Especially important is performance, as experience shows that only solutions whose overhead is in reasonable bounds get deployed. A comparison of different enforceable policies helps de- signers of new protection mechanisms in finding the balance between effectiveness (security) and efficiency.We identify some open research problems, and provide suggestions on improving the adoption of newer techniques.}, -author = {Szekeres, L??szl?? and Payer, Mathias and Wei, Tao and Song, Dawn}, -doi = {10.1109/SP.2013.13}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/SoK$\backslash$: Eternal War in Memory.pdf:pdf}, -isbn = {9780769549774}, -issn = {10816011}, -journal = {Proceedings - IEEE Symposium on Security and Privacy}, -pages = {48--62}, -title = {{SoK: Eternal war in memory}}, -year = {2013} -} -@article{Corporation2011, -abstract = {The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 1, describes the basic architecture and programming environment of Intel 64 and IA-32 processors. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 2A {\&} 2B, describe the instruction set of the processor and the opcode struc- ture. These volumes apply to application programmers and to programmers who write operating systems or executives. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 3A {\&} 3B, describe the operating-system support environment of Intel 64 and IA-32 processors. These volumes target operating- system and BIOS designers. In addition, the Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 3B, addresses the programming environment for classes of software that host operating systems.}, -author = {Corporation, Intel}, -doi = {10.1109/MAHC.2010.22}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf:pdf}, -isbn = {253665-057US}, -issn = {15222594}, -journal = {System}, -keywords = {253665,IA-32 architecture,Intel 64}, -number = {253665}, -title = {{Intel {\textregistered} 64 and IA-32 Architectures Software Developer ' s Manual Volume 3}}, -volume = {3}, -year = {2011} -} -@article{Caballero2012, -abstract = {Use-after-free vulnerabilities are rapidly growing in popularity, especially for exploiting web browsers. Use-after-free (and double-free) vulnerabilities are caused by a program operating on a dangling pointer. In this work we propose early detection, a novel runtime approach for finding and diagnosing use-after-free and double-free vulnerabilities. While previous work focuses on the creation of the vulnerability (i.e., the use of a dangling pointer), early detection shifts the focus to the creation of the dangling pointer(s) at the root of the vulnerability. Early detection increases the effectiveness of testing by identifying unsafe dangling pointers in executions where they are created but not used. It also accelerates vulnerability analysis and minimizes the risk of incomplete fixes, by automatically collecting information about all dangling pointers involved in the vulnerability. We implement our early detection technique in a tool called Undangle. We evaluate Undangle for vulnerability analysis on 8 real-world vulnerabilities. The analysis uncovers that two separate vulnerabilities in Firefox had a common root cause and that their patches did not completely fix the underlying bug. We also evaluate Undangle for testing on the Firefox web browser identifying a potential vulnerability.}, -author = {Caballero, Juan and Grieco, Gustavo and Marron, Mark and Nappa, Antonio}, -doi = {10.1145/2338965.2336769}, -isbn = {9781450314541}, -issn = {1450314546}, -journal = {ISSTA}, -keywords = {automated testing,binary analysis,debugging,dynamic analysis}, -pages = {133}, -title = {{Undangle: early detection of dangling pointers in use-after-free and double-free vulnerabilities}}, -url = {http://dl.acm.org/citation.cfm?doid=2338965.2336769}, -year = {2012} -} -@book{AMD64Vol2, -author = {AMD}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 2$\backslash$: System Programming.pdf:pdf}, -keywords = {24593,AMD64 Architecture Programmer's Manual Volume 2: S}, -number = {24592}, -title = {{AMD64 Architecture Programmer's Manual Volume 2: System Programming}}, -volume = {1}, -year = {2012} -} -@article{Levy2015a, -abstract = {Rust, a new systems programming language, provides compile-time memory safety checks to help eliminate runtime bugs that manifest from improper memory management. This feature is advantageous for operating system development, and especially for embedded OS development, where recovery and debugging are particularly challenging. However, embedded platforms are highly event-based, and Rust's memory safety mechanisms largely presume threads. In our experience developing an operating system for embedded systems in Rust, we have found that Rust's ownership model prevents otherwise safe resource sharing common in the embedded domain, conflicts with the reality of hardware resources, and hinders using closures for programming asynchronously. We describe these experiences and how they relate to memory safety as well as illustrate our workarounds that preserve the safety guarantees to the largest extent possible. In addition, we draw from our experience to propose a new language extension to Rust that would enable it to provide better memory safety tools for event-driven platforms.}, -author = {Levy, Amit and Andersen, Michael P. and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat}, -doi = {10.1145/2818302.2818306}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/tock-plos2015.pdf:pdf}, -isbn = {9781450339421}, -journal = {PLOS: Workshop on Programming Languages and Operating Systems}, -keywords = {embedded operating systems,linear types,ownership,rust}, -pages = {21--26}, -title = {{Ownership is Theft: Experiences Building an Embedded OS in Rust}}, -url = {http://dl.acm.org/citation.cfm?id=2818302.2818306}, -year = {2015} -} -@inproceedings{Ma2013, -abstract = {—Aiming at the problem of higher memory consumption and lower execution efficiency during the dynamic detecting to C/C++ programs memory vulnerabilities, this paper presents a dynamic detection method called ISC. The ISC improves the Safe-C using pointer analysis technology. Firstly, the ISC defines a simple and efficient fat pointer representation instead of the safe pointer in the Safe-C. Furthermore, the ISC uses the unification-based analysis algorithm with one level flow static pointer. This identification reduces the number of pointers that need to be converted to fat pointers. Then in the process of program running, the ISC detects memory vulnerabilities through constantly inspecting the attributes of fat pointers. Experimental results indicate that the ISC could detect memory vulnerabilities such as buffer overflows and dangling pointers. Comparing with the Safe-C, the ISC dramatically reduces the memory consumption and lightly improves the execution efficiency.}, -author = {Ma, Rui and Chen, Lingkui and Hu, Changzhen and Xue, Jingfeng and Zhao, Xiaolin}, -booktitle = {Proceedings - 2013 IEEE 11th International Conference on Dependable, Autonomic and Secure Computing, DASC 2013}, -doi = {10.1109/DASC.2013.37}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/A Dynamic Detection Method to C-C++ Programs Memory Vulnerabilities Based on Pointer Analysis.pdf:pdf}, -isbn = {9781479933815}, -keywords = {dynamic detecting,fat pointer,improved Safe-C,memory vulnerability,pointer analysis}, -pages = {52--57}, -title = {{A dynamic detection method to C/C++ programs memory vulnerabilities based on pointer analysis}}, -year = {2013} -} -@book{AMD64Vol1, -author = {AMD}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 1$\backslash$: Application Programming.pdf:pdf}, -keywords = {AMD64,SIMD,extended media instructions,legacy m}, -number = {26568}, -title = {{AMD64 Architecture Programmer's Manual Volume 1: Application Programming}}, -volume = {4}, -year = {2012} -} -@article{Getreu2016, -author = {Getreu, Jens}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/Embedded System Security with Rust - Case Study of Heartbleed.pdf:pdf}, -pages = {1--24}, -title = {{Embedded System Security with Rust}}, -year = {2016} -} -@article{Corporation2011a, -abstract = {The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 1, describes the basic architecture and programming environment of Intel 64 and IA-32 processors. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 2A {\&} 2B, describe the instruction set of the processor and the opcode struc- ture. These volumes apply to application programmers and to programmers who write operating systems or executives. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 3A {\&} 3B, describe the operating-system support environment of Intel 64 and IA-32 processors. These volumes target operating- system and BIOS designers. In addition, the Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 3B, addresses the programming environment for classes of software that host operating systems.}, -author = {Corporation, Intel}, -doi = {10.1109/MAHC.2010.22}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/64-ia-32-architectures-software-developer-vol-1-manual.pdf:pdf}, -isbn = {253665-057US}, -issn = {15222594}, -journal = {System}, -keywords = {253665,64,ia 32 architecture}, -number = {253665}, -title = {{Intel {\textregistered} 64 and IA-32 Architectures Software Developer ' s Manual Volume 1}}, -volume = {1}, -year = {2011} -} -@article{Nilsson2017, -author = {Nilsson, Fredrik}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/A Rust-based Runtime for the Internet of Things.pdf:pdf}, -title = {{A Rust-based Runtime for the Internet of Things}}, +@misc{MITRE-CWE-119, +author = {MITRE}, +booktitle = {2.11}, +title = {{CWE-119: Improper Restriction of Operations within the Bounds of a Memory Buffer}}, +url = {http://cwe.mitre.org/data/definitions/119.html}, +urldate = {2017-08-31}, year = {2017} } -@article{Affairs2015, -author = {Affairs, Post Doctoral}, -file = {:home/steveej/src/steveej/msc-thesis/docs/You can't spell trust without Rust.pdf:pdf}, -title = {{YOU CAN ' T SPELL TRUST WITHOUT RUST alexis beingessner Master ' s in Computer Science Carleton University}}, -year = {2015} -} @article{Xu2015, abstract = {Since vulnerabilities in Linux kernel are on the increase, attackers have turned their interests into related exploitation techniques. However, compared with numerous researches on exploiting use-after-free vulnerabilities in the user applications, few efforts studied how to exploit use-after-free vulnerabilities in Linux kernel due to the difficulties that mainly come from the uncertainty of the kernel memory layout. Without specific information leakage, attackers could only conduct a blind memory overwriting strategy trying to corrupt the critical part of the kernel, for which the success rate is negligible. In this work, we present a novel memory collision strategy to exploit the use-after-free vulnerabilities in Linux kernel reliably. The insight of our exploit strategy is that a probabilistic memory collision can be constructed according to the widely deployed kernel memory reuse mechanisms, which significantly increases the success rate of the attack. Based on this insight, we present two practical memory collision attacks: An object-based attack that leverages the memory recycling mechanism of the kernel allocator to achieve freed vulnerable object covering, and a physmap-based attack that takes advantage of the overlap between the physmap and the SLAB caches to achieve a more flexible memory manipulation. Our proposed attacks are universal for various Linux kernels of different architectures and could successfully exploit systems with use-after-free vulnerabilities in kernel. Particularly, we achieve privilege escalation on various popular Android devices (kernel version{\textgreater}=4.3) including those with 64-bit processors by exploiting the CVE-2015-3636 use-after-free vulnerability in Linux kernel. To our knowledge, this is the first generic kernel exploit for the latest version of Android. Finally, to defend this kind of memory collision, we propose two corresponding mitigation schemes.}, author = {Xu, Wen and Li, Juanru and Shu, Junliang and Yang, Wenbo and Xie, Tianyi and Zhang, Yuanyuan and Gu, Dawu}, @@ -201,17 +25,30 @@ title = {{From Collision To Exploitation: Unleashing Use-After-Free Vulnerabilit url = {http://dl.acm.org/citation.cfm?doid=2810103.2813637}, year = {2015} } -@misc{Endler, -author = {Endler, Matthias}, -title = {{A curated list of static analysis tools, linters and code quality checkers for various programming languages}}, -url = {https://github.com/mre/awesome-static-analysis} +@article{Szekeres2013, +abstract = {Memory corruption bugs in software written in low-level languages like C or C++ are one of the oldest problems in computer security. The lack of safety in these languages allows attackers to alter the program's behavior or take full control over it by hijacking its control flow. This problem has existed for more than 30 years and a vast number of potential solutions have been proposed, yet memory corruption attacks continue to pose a serious threat. Real world exploits show that all currently deployed protections can be defeated. This paper sheds light on the primary reasons for this by describing attacks that succeed on today's systems. We systematize the current knowledge about various protection techniques by setting up a general model for memory corrup- tion attacks. Using this model we show what policies can stop which attacks. The model identifies weaknesses of currently deployed techniques, as well as other proposed protections enforcing stricter policies. We analyze the reasons why protection mechanisms imple- menting stricter polices are not deployed. To achieve wide adoption, protection mechanisms must support a multitude of features and must satisfy a host of requirements. Especially important is performance, as experience shows that only solutions whose overhead is in reasonable bounds get deployed. A comparison of different enforceable policies helps de- signers of new protection mechanisms in finding the balance between effectiveness (security) and efficiency.We identify some open research problems, and provide suggestions on improving the adoption of newer techniques.}, +author = {Szekeres, L??szl?? and Payer, Mathias and Wei, Tao and Song, Dawn}, +doi = {10.1109/SP.2013.13}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/SoK$\backslash$: Eternal War in Memory.pdf:pdf}, +isbn = {9780769549774}, +issn = {10816011}, +journal = {Proceedings - IEEE Symposium on Security and Privacy}, +pages = {48--62}, +title = {{SoK: Eternal war in memory}}, +year = {2013} } -@article{Balasubramanian2017, -abstract = {Rust is a new system programming language that offers a practical and safe alternative to C. Rust is unique in that it enforces safety without runtime overhead, most importantly, without the overhead of garbage collection. While zero-cost safety is remarkable on its own, we argue that the super-powers of Rust go beyond safety. In particular, Rust's linear type system enables capabilities that cannot be implemented efficiently in traditional languages, both safe and unsafe, and that dramatically improve security and reliability of system software. We show three examples of such capabilities: zero-copy software fault isolation, efficient static information flow analysis, and automatic checkpointing. While these capabilities have been in the spotlight of systems research for a long time, their practical use is hindered by high cost and complexity. We argue that with the adoption of Rust these mechanisms will become commoditized.}, -author = {Balasubramanian, Abhiram and Baranowski, Marek S and Burtsev, Anton and Irvine, Uc and Rakamari, Zvonimir and Ryzhyk, Leonid and Research, Vmware}, -file = {:home/steveej/src/github/steveej/msc-thesis/docs/DRAFT$\backslash$: System Programming in Rust$\backslash$: Beyond Safety.pdf:pdf}, -title = {{DRAFT: System Programming in Rust: Beyond Safety}}, -year = {2017} +@article{Chisnall2015, +abstract = {We propose a new memory-safe interpretation of the C ab-stract machine that provides stronger protection to benefit security and debugging. Despite ambiguities in the specifi-cation intended to provide implementation flexibility, con-temporary implementations of C have converged on a mem-ory model similar to the PDP-11, the original target for C. This model lacks support for memory safety despite well-documented impacts on security and reliability. Attempts to change this model are often hampered by as-sumptions embedded in a large body of existing C code, dat-ing back to the memory model exposed by the original C compiler for the PDP-11. Our experience with attempting to implement a memory-safe variant of C on the CHERI ex-perimental microprocessor led us to identify a number of problematic idioms. We describe these as well as their in-teraction with existing memory safety schemes and the as-sumptions that they make beyond the requirements of the C specification. Finally, we refine the CHERI ISA and abstract model for C, by combining elements of the CHERI capabil-ity model and fat pointers, and present a softcore CPU that implements a C abstract machine that can run legacy C code with strong memory protection guarantees.}, +author = {Chisnall, David and Rothwell, Colin and Watson, Robert N M and Woodruff, Jonathan and Vadera, Munraj and Moore, Simon W and Roe, Michael and Davis, Brooks and Neumann, Peter G}, +doi = {10.1145/2694344.2694367}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/Beyond the PDP-11$\backslash$: Architectural support for a memory-safe C abstract machine.pdf:pdf}, +isbn = {9781450328357}, +issn = {01635964}, +journal = {Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems}, +pages = {117--130}, +title = {{Beyond the PDP-11 : Architectural support for a memory-safe C abstract machine}}, +url = {http://www.cl.cam.ac.uk/research/security/ctsrd/pdfs/201503-asplos2015-cheri-cmachine.pdf}, +year = {2015} } @article{Lattner2005, abstract = {The LLVM Compiler Infrastructure (http://llvm.cs. uiuc.edu) is a$\backslash$nrobust system that is well suited for a wide variety of research$\backslash$nand development work. This brief paper introduces the LLVM system$\backslash$nand provides pointers to more extensive documentation, complementing$\backslash$nthe tutorial presented at LCPC.}, @@ -231,3 +68,188 @@ title = {{The LLVM Compiler Framework and Infrastructure Tutorial}}, url = {http://dx.doi.org/10.1007/11532378{\_}2}, year = {2005} } +@article{Caballero2012, +abstract = {Use-after-free vulnerabilities are rapidly growing in popularity, especially for exploiting web browsers. Use-after-free (and double-free) vulnerabilities are caused by a program operating on a dangling pointer. In this work we propose early detection, a novel runtime approach for finding and diagnosing use-after-free and double-free vulnerabilities. While previous work focuses on the creation of the vulnerability (i.e., the use of a dangling pointer), early detection shifts the focus to the creation of the dangling pointer(s) at the root of the vulnerability. Early detection increases the effectiveness of testing by identifying unsafe dangling pointers in executions where they are created but not used. It also accelerates vulnerability analysis and minimizes the risk of incomplete fixes, by automatically collecting information about all dangling pointers involved in the vulnerability. We implement our early detection technique in a tool called Undangle. We evaluate Undangle for vulnerability analysis on 8 real-world vulnerabilities. The analysis uncovers that two separate vulnerabilities in Firefox had a common root cause and that their patches did not completely fix the underlying bug. We also evaluate Undangle for testing on the Firefox web browser identifying a potential vulnerability.}, +author = {Caballero, Juan and Grieco, Gustavo and Marron, Mark and Nappa, Antonio}, +doi = {10.1145/2338965.2336769}, +isbn = {9781450314541}, +issn = {1450314546}, +journal = {ISSTA}, +keywords = {automated testing,binary analysis,debugging,dynamic analysis}, +pages = {133}, +title = {{Undangle: early detection of dangling pointers in use-after-free and double-free vulnerabilities}}, +url = {http://dl.acm.org/citation.cfm?doid=2338965.2336769}, +year = {2012} +} +@article{Dhurjati2003, +abstract = {Traditional approaches to enforcing memory safety of programs rely heavily on runtime checks of memory accesses and on garbage collection, both of which are unattractive for embedded applications. The long-term goal of our work is to enable 100{\%} static enforcement of memory safety for embedded programs through advanced compiler techniques and minimal semantic restrictions on programs. The key result of this paper is a compiler technique that ensures memory safety of dynamically allocated memory without programmer annotations, runtime checks, or garbage collection, and works for a large subclass of type-safe C programs. The technique is based on a fully automatic pool allocation (i.e., region-inference) algorithm for C programs we developed previously, and it ensures safety of dynamically allocated memory while retaining explicit deallocation of individual objects within regions (to avoid garbage collection). For a diverse set of embedded C programs (and using a previous technique to avoid null pointer checks), we show that we are able to statically ensure the safety of pointer and dynamic memory usage in all these programs. We also describe some improvements over our previous work in static checking of array accesses. Overall, we achieve 100{\%} static enforcement of memory safety without new language syntax for a significant subclass of embedded C programs, and the subclass is much broader if array bounds checks are ignored.}, +author = {Dhurjati, D and Kowshik, S and Adve, V and Lattner, C}, +doi = {10.1145/780742.780743}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/Memory Safety Without Runtime Checks or Garbage.pdf:pdf}, +isbn = {0362-1340}, +issn = {03621340}, +journal = {Acm Sigplan Notices}, +keywords = {automatic pool allocation,compilers,embedded systems,languages,programming languages,region management,security,static analysis}, +number = {7}, +pages = {69--80}, +title = {{Memory safety without runtime checks or garbage collection}}, +volume = {38}, +year = {2003} +} +@book{AMD64Vol1, +author = {AMD}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 1$\backslash$: Application Programming.pdf:pdf}, +keywords = {AMD64,SIMD,extended media instructions,legacy m}, +number = {26568}, +title = {{AMD64 Architecture Programmer's Manual Volume 1: Application Programming}}, +volume = {4}, +year = {2012} +} +@article{Corporation2011a, +abstract = {The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 1, describes the basic architecture and programming environment of Intel 64 and IA-32 processors. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 2A {\&} 2B, describe the instruction set of the processor and the opcode struc- ture. These volumes apply to application programmers and to programmers who write operating systems or executives. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 3A {\&} 3B, describe the operating-system support environment of Intel 64 and IA-32 processors. These volumes target operating- system and BIOS designers. In addition, the Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 3B, addresses the programming environment for classes of software that host operating systems.}, +author = {Corporation, Intel}, +doi = {10.1109/MAHC.2010.22}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/64-ia-32-architectures-software-developer-vol-1-manual.pdf:pdf}, +isbn = {253665-057US}, +issn = {15222594}, +journal = {System}, +keywords = {253665,64,ia 32 architecture}, +number = {253665}, +title = {{Intel {\textregistered} 64 and IA-32 Architectures Software Developer ' s Manual Volume 1}}, +volume = {1}, +year = {2011} +} +@inproceedings{Kuznetsov2014, +abstract = {Systems code is often written in low-level languages like C/C++, which offer many benefits but also dele- gate memory management to programmers. This invites memory safety bugs that attackers can exploit to divert control flow and compromise the system. Deployed de- fense mechanisms (e.g., ASLR, DEP) are incomplete, and stronger defense mechanisms (e.g., CFI) often have high overhead and limited guarantees [19, 15, 9]. We introduce code-pointer integrity (CPI), a new de- sign point that guarantees the integrity of all code point- ers in a program (e.g., function pointers, saved return ad- dresses) and thereby prevents all control-flow hijack at- tacks, including return-oriented programming. We also introduce code-pointer separation (CPS), a relaxation of CPI with better performance properties. CPI and CPS offer substantially better security-to-overhead ratios than the state of the art, they are practical (we protect a complete FreeBSD system and over 100 packages like apache and postgresql), effective (prevent all attacks in the RIPE benchmark), and efficient: on SPEC CPU2006, CPS averages 1.2{\%} overhead for C and 1.9{\%} for C/C++, while CPI's overhead is 2.9{\%} for C and 8.4{\%} for C/C++. A prototype implementation of CPI and CPS can be obtained from http://levee.epfl.ch. 1}, +author = {Kuznetsov, Volodymyr and Szekeres, L{\'{a}}szl{\'{o}} and Payer, Mathias}, +booktitle = {Proceedings of the 11th USENIX Symposium on Operating Systems Design and Implementation}, +isbn = {9781931971164}, +pages = {147--163}, +title = {{Code-pointer integrity}}, +url = {https://www.usenix.org/conference/osdi14/technical-sessions/presentation/kuznetsov{\%}5Cnhttps://www.usenix.org/system/files/conference/osdi14/osdi14-paper-kuznetsov.pdf?utm{\_}source=dlvr.it{\&}utm{\_}medium=tumblr}, +year = {2014} +} +@article{Getreu2016, +author = {Getreu, Jens}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/Embedded System Security with Rust - Case Study of Heartbleed.pdf:pdf}, +pages = {1--24}, +title = {{Embedded System Security with Rust}}, +year = {2016} +} +@article{Affairs2015, +author = {Affairs, Post Doctoral}, +file = {:home/steveej/src/steveej/msc-thesis/docs/You can't spell trust without Rust.pdf:pdf}, +title = {{YOU CAN ' T SPELL TRUST WITHOUT RUST alexis beingessner Master ' s in Computer Science Carleton University}}, +year = {2015} +} +@book{AMD64Vol2, +author = {AMD}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/AMD64 Architecture Programmer's Manual Volume 2$\backslash$: System Programming.pdf:pdf}, +keywords = {24593,AMD64 Architecture Programmer's Manual Volume 2: S}, +number = {24592}, +title = {{AMD64 Architecture Programmer's Manual Volume 2: System Programming}}, +volume = {1}, +year = {2012} +} +@misc{MITRE-CWE-633, +author = {MITRE}, +title = {{CWE-633: Weaknesses that Affect Memory}}, +url = {http://cwe.mitre.org/data/definitions/633.html}, +urldate = {2017-08-31}, +year = {2017} +} +@inproceedings{Ma2013, +abstract = {—Aiming at the problem of higher memory consumption and lower execution efficiency during the dynamic detecting to C/C++ programs memory vulnerabilities, this paper presents a dynamic detection method called ISC. The ISC improves the Safe-C using pointer analysis technology. Firstly, the ISC defines a simple and efficient fat pointer representation instead of the safe pointer in the Safe-C. Furthermore, the ISC uses the unification-based analysis algorithm with one level flow static pointer. This identification reduces the number of pointers that need to be converted to fat pointers. Then in the process of program running, the ISC detects memory vulnerabilities through constantly inspecting the attributes of fat pointers. Experimental results indicate that the ISC could detect memory vulnerabilities such as buffer overflows and dangling pointers. Comparing with the Safe-C, the ISC dramatically reduces the memory consumption and lightly improves the execution efficiency.}, +author = {Ma, Rui and Chen, Lingkui and Hu, Changzhen and Xue, Jingfeng and Zhao, Xiaolin}, +booktitle = {Proceedings - 2013 IEEE 11th International Conference on Dependable, Autonomic and Secure Computing, DASC 2013}, +doi = {10.1109/DASC.2013.37}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/A Dynamic Detection Method to C-C++ Programs Memory Vulnerabilities Based on Pointer Analysis.pdf:pdf}, +isbn = {9781479933815}, +keywords = {dynamic detecting,fat pointer,improved Safe-C,memory vulnerability,pointer analysis}, +pages = {52--57}, +title = {{A dynamic detection method to C/C++ programs memory vulnerabilities based on pointer analysis}}, +year = {2013} +} +@misc{MITRE-CWE, +author = {MITRE}, +title = {{CWE - Common Weakness Enumeration}}, +url = {http://cwe.mitre.org}, +urldate = {2017-08-31}, +year = {2017} +} +@article{Levy2015a, +abstract = {Rust, a new systems programming language, provides compile-time memory safety checks to help eliminate runtime bugs that manifest from improper memory management. This feature is advantageous for operating system development, and especially for embedded OS development, where recovery and debugging are particularly challenging. However, embedded platforms are highly event-based, and Rust's memory safety mechanisms largely presume threads. In our experience developing an operating system for embedded systems in Rust, we have found that Rust's ownership model prevents otherwise safe resource sharing common in the embedded domain, conflicts with the reality of hardware resources, and hinders using closures for programming asynchronously. We describe these experiences and how they relate to memory safety as well as illustrate our workarounds that preserve the safety guarantees to the largest extent possible. In addition, we draw from our experience to propose a new language extension to Rust that would enable it to provide better memory safety tools for event-driven platforms.}, +author = {Levy, Amit and Andersen, Michael P. and Campbell, Bradford and Culler, David and Dutta, Prabal and Ghena, Branden and Levis, Philip and Pannuto, Pat}, +doi = {10.1145/2818302.2818306}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/tock-plos2015.pdf:pdf}, +isbn = {9781450339421}, +journal = {PLOS: Workshop on Programming Languages and Operating Systems}, +keywords = {embedded operating systems,linear types,ownership,rust}, +pages = {21--26}, +title = {{Ownership is Theft: Experiences Building an Embedded OS in Rust}}, +url = {http://dl.acm.org/citation.cfm?id=2818302.2818306}, +year = {2015} +} +@article{Corporation2011, +abstract = {The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 1, describes the basic architecture and programming environment of Intel 64 and IA-32 processors. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 2A {\&} 2B, describe the instruction set of the processor and the opcode struc- ture. These volumes apply to application programmers and to programmers who write operating systems or executives. The Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volumes 3A {\&} 3B, describe the operating-system support environment of Intel 64 and IA-32 processors. These volumes target operating- system and BIOS designers. In addition, the Intel{\{}$\backslash$textregistered{\}} 64 and IA-32 Architectures Software Developer's Manual, Volume 3B, addresses the programming environment for classes of software that host operating systems.}, +author = {Corporation, Intel}, +doi = {10.1109/MAHC.2010.22}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/64-ia-32-architectures-software-developer-system-programming-manual-325384.pdf:pdf}, +isbn = {253665-057US}, +issn = {15222594}, +journal = {System}, +keywords = {253665,IA-32 architecture,Intel 64}, +number = {253665}, +title = {{Intel {\textregistered} 64 and IA-32 Architectures Software Developer ' s Manual Volume 3}}, +volume = {3}, +year = {2011} +} +@article{Nilsson2017, +author = {Nilsson, Fredrik}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/A Rust-based Runtime for the Internet of Things.pdf:pdf}, +title = {{A Rust-based Runtime for the Internet of Things}}, +year = {2017} +} +@article{Arpaci-Dusseau2015, +abstract = {A book covering the fundamentals of operating systems, including virtualization of the CPU and memory, threads and concurrency, and file and storage systems. Written by professors active in the field for 20 years, this text has been developed in the classrooms of the University of Wisconsin-Madison, and has been used in the instruction of thousands of students.}, +author = {{Arpaci-Dusseau Remzi}, Arpaci-Dusseau Andrea}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/operating{\_}systems{\_}{\_}three{\_}easy{\_}pieces{\_}{\_}electronic{\_}version{\_}0{\_}91{\_}.pdf:pdf}, +journal = {Arpaci-Dusseau}, +number = {0.91}, +pages = {665}, +title = {{Operating Systems: Three Easy Pieces}}, +volume = {Electronic}, +year = {2015} +} +@article{Reed2015, +abstract = {Rust is a new systems language that uses some advanced type system features, specifically affine types and regions, to statically guarantee memory safety and eliminate the need for a garbage collector. While each individual addition to the type system is well understood in isolation and are known to be sound, the combined system is not known to be sound. Furthermore, Rust uses a novel checking scheme for its regions, known as the Borrow Checker, that is not known to be correct. Since Rust's goal is to be a safer alternative to C/C++, we should ensure that this safety scheme actually works. We present a formal semantics that captures the key features relevant to memory safety, unique pointers and borrowed references, specifies how they guarantee memory safety, and describes the operation of the Borrow Checker. We use this model to prove the soudness of some core operations and justify the conjecture that the model, as a whole, is sound. Additionally, our model provides a syntactic version of the Borrow Checker, which may be more understandable than the non-syntactic version in Rust.}, +author = {Reed, Eric}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/Patina$\backslash$: A Formalization of the Rust Programming Language.pdf:pdf}, +number = {February}, +pages = {1--37}, +title = {{Patina: A Formalization of the Rust Programming Language}}, +year = {2015} +} +@misc{Endler, +author = {Endler, Matthias}, +title = {{A curated list of static analysis tools, linters and code quality checkers for various programming languages}}, +url = {https://github.com/mre/awesome-static-analysis} +} +@article{Merity2016, +abstract = {Recent neural network sequence models with softmax classifiers have achieved their best language modeling performance only with very large hidden states and large vocabularies. Even then they struggle to predict rare or unseen words even if the context makes the prediction unambiguous. We introduce the pointer sentinel mixture architecture for neural sequence models which has the ability to either reproduce a word from the recent context or produce a word from a standard softmax classifier. Our pointer sentinel-LSTM model achieves state of the art language modeling performance on the Penn Treebank (70.9 perplexity) while using far fewer parameters than a standard softmax LSTM. In order to evaluate how well language models can exploit longer contexts and deal with more realistic vocabularies and larger corpora we also introduce the freely available WikiText corpus.}, +archivePrefix = {arXiv}, +arxivId = {1609.07843}, +author = {Merity, Stephen and Xiong, Caiming and Bradbury, James and Socher, Richard}, +eprint = {1609.07843}, +journal = {Arxiv}, +title = {{Pointer Sentinel Mixture Models}}, +url = {http://arxiv.org/abs/1609.07843}, +year = {2016} +} +@article{Balasubramanian2017, +abstract = {Rust is a new system programming language that offers a practical and safe alternative to C. Rust is unique in that it enforces safety without runtime overhead, most importantly, without the overhead of garbage collection. While zero-cost safety is remarkable on its own, we argue that the super-powers of Rust go beyond safety. In particular, Rust's linear type system enables capabilities that cannot be implemented efficiently in traditional languages, both safe and unsafe, and that dramatically improve security and reliability of system software. We show three examples of such capabilities: zero-copy software fault isolation, efficient static information flow analysis, and automatic checkpointing. While these capabilities have been in the spotlight of systems research for a long time, their practical use is hindered by high cost and complexity. We argue that with the adoption of Rust these mechanisms will become commoditized.}, +author = {Balasubramanian, Abhiram and Baranowski, Marek S and Burtsev, Anton and Irvine, Uc and Rakamari, Zvonimir and Ryzhyk, Leonid and Research, Vmware}, +file = {:home/steveej/src/github/steveej/msc-thesis/docs/DRAFT$\backslash$: System Programming in Rust$\backslash$: Beyond Safety.pdf:pdf}, +title = {{DRAFT: System Programming in Rust: Beyond Safety}}, +year = {2017} +} diff --git a/src/docs/thesis.tex b/src/docs/thesis.tex index 6822369..8a318d5 100644 --- a/src/docs/thesis.tex +++ b/src/docs/thesis.tex @@ -10,8 +10,8 @@ \usepackage{geometry} \geometry{a4paper, top=25mm, left=30mm, right=35mm, bottom=35mm, headsep=10mm, footskip=12mm} -%\usepackage{multirow,tabularx,tabu} -\usepackage{ctable,multirow} +\usepackage{multirow,tabularx,tabu} +\usepackage{ctable,multirow,spreadtab} \usepackage[backend=biber,style=numeric,url=true]{biblatex} \addbibresource{thesis.bib} @@ -26,6 +26,8 @@ \makenoidxglossaries \usepackage{listings} +\usepackage{graphicx} +\usepackage{color} \newcommand{\topic}{Guarantees On In-Kernel Memory-Safety Using Rust's Static Code Analysis}