From b8c484266358588b1bf4c49e282e4b0c2d14daf7 Mon Sep 17 00:00:00 2001 From: Nick Feamster Date: Mon, 24 Jun 2024 16:45:12 -0500 Subject: [PATCH] syllabus rework --- docs/index.md | 15 ++++++++------- docs/slides/14-Dimensionality-Reduction.pptx | Bin 264963 -> 264970 bytes 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index edc41b3..9f16fb0 100644 --- a/docs/index.md +++ b/docs/index.md @@ -43,8 +43,8 @@ More details are in the [course syllabus](syllabus.md). | **Machine Learning Pipeline** | | | | | 7 | Data Preparation and Representation
([Data Preparation](notebooks/07-Data-Preparation-Clean.html)) | [Ch. 4.1 ](https://noise-lab.github.io/ml-systems/book/text/pipelines.html#data-preparation) | | | 8 | Model Training and Evaluation
([Model Evaluation](notebooks/08-ML-Pipeline-Clean.html)) | [Ch. 4.2-4.3](https://noise-lab.github.io/ml-systems/book/text/pipelines.html#model-training) | | -| **Supervised Learning** | | | | -| 9 | Non-Parametric and Probabilistic Models
([Naive Bayes](notebooks/09-Naive-Bayes-Clean.html)) | [Ch. 5](book/text/supervised.html) | | +| **Supervised Learning** | | [Ch. 5](book/text/supervised.html) | | +| 9 | Non-Parametric and Probabilistic Models
([Naive Bayes](notebooks/09-Naive-Bayes-Clean.html)) | | | | 10 | Linear and Polynomial Regression
([Linear Regression](notebooks/10-Linear-Regression-Clean.html)) | | | | 11 | Logistic Regression and Support Vector Machines
([Logistic Regression](notebooks/11-Logistic-Regression-Clean.html)) | | | | 12 | Trees and Ensembles
([Trees and Ensembles](notebooks/12-Trees-Ensembles-Clean.html)) | | [Midterm/Take-Home](assignments/midterm.html) | @@ -53,12 +53,13 @@ More details are in the [course syllabus](syllabus.md). | 14 | Dimensionality Reduction
([Dimensionality Reduction](notebooks/14-Dimensionality-Reduction-Clean.html)) | | | | 15 | Clustering
([Clustering](notebooks/15-Clustering-Clean.html)) | | Anomaly Detection | | 16 | Autoencoders and Reinforcement Learning
([Autoencoders](notebooks/16-Autoencoders-Clean.html)) | -| **Cutting Edge Techniques** | | | | -| 17 | Large-Language Models
([Large Language Models](notebooks/18-LLM-Clean.html)) | [Ch. 7.](book/text/llm.html) | | -| 18 | Reinforcement Learning
([Automation](notebooks/19-Reinforcement-Clean.html)) | [Ch. 8](book/text/reinforcement.html) | | +| **Generative Models** | | [Ch. 7](book/text/llm.html) | | +| 17 | Transformers
([Large Language Models](notebooks/18-LLM-Clean.html)) | | | +| 18 | Diffusion Denoising | | Performance Monitoring | | **Bonus Topics** | | | | -| 19 | Automation
([Automation](notebooks/16-Automation-Clean.html)) | | | [Ch. 9](book/text/deployment.html) -| 20 | Timeseries Analysis
([Timeseries](notebooks/17-Timeseries-Clean.html)) | | Performance Monitoring | +| 19 | Reinforcement Learning
([Automation](notebooks/19-Reinforcement-Clean.html)) | [Ch. 8](book/text/reinforcement.html) | | +| 20 | Automation
([Automation](notebooks/16-Automation-Clean.html)) | [Ch. 9](book/text/deployment.html) | +| 21 | Timeseries Analysis
([Timeseries](notebooks/17-Timeseries-Clean.html)) | | | Please come to class having done the reading. diff --git a/docs/slides/14-Dimensionality-Reduction.pptx b/docs/slides/14-Dimensionality-Reduction.pptx index 80d4ca62fc7b3e5cf90a93d17bdb165f1b4ef348..8b34b49486465671446c4c785f881a96b4ab8d12 100644 GIT binary patch delta 11540 zcmZ8{1yozx)^#Ak-Cc{fxI=M@Ybj8i;_hz2-KBv7#id9o?(QuR+`YKF%TMop-@EU> z86z24XU)B{Gsiw_uQS&Q`ivR*8S_WEEV7?oHBS%_0JuO(qDrE!o|Dyt1&eL0sqk7` z5t$f%I4*h3a(j% z5dM_ODC>T!W6tI2yId!y)bUumjje5-R$a;3vG_|)v1~HE@O$vN-HN^l=GzBZxPCt4 zCngLmMPouX;eZ+QcoPQb1eojfdl6mJ-hCAGW7D0vq%XfUQ#n6EN7YlQSBeNjUI%`f z4F=)KDj_PJ$M5AHI{{?{2aXzlZ!XM${qC#b*>!+T_d;!Jeg(u?fdz<~+aI7@gVrO?zVQgWeKA6voVnO@|aa@MfZC zz_(8OCgwZEwA9mJ*sq`f5IH>cb|04o8~uzofnM{Yw%{{*QUWh7a^~Abs!BKjK#1Tk z7QZNlg1|P)5w4~5sR1QknOOyTOx$g>(4ykuF)R5mQcRv|_E#uVBR6pXjh_&oethu`rc9zjj#JI5`D4?Q)#qPP5PzUk@hX=!aNdeoP()FB_W zOhUQPqdsK?CCImcLRNVOsw?A2q1T3*2*;39F!&^`kk$EPbtd;pb%=K&6ccLJQ%}e- z>`(bCjI7jN2iL8PsvtN-W3`u8c;Z*$G+VR8;pRT19ejJYnMJY6vX|X%x2LW-R-8$B zLW*4lfFl$D#=IrCjWEswRpor@co>Z=aMM;ewnktfFU+jF?P;!KoHRGIi9ORQ7@e|3 zenVn3(dfy65V5GFG3`q?5oSEss2DGv)bv2$>}|@HsU*_QQ+FqUZ_Ktj1si&;p30Xlzu5zg4V3&gq$oo`FrOO; zd(PH!FeCyW41PeM??jM~vP`FceM{%Mj;S8Gwm53|aE~(uQP*BmdlXMV1^Y= zDGQSZCyc1J7w|ztVm&;BT`Ad3K<3Cw+U$WkP<)7@;ivuwO7Hr_xnpi(|VcMTZBz$sGa)K*>2JKd`gG6KC5F$FKxValNB{2Zp~H{ zE3NzF>`ivA8431gBe5HKmze-hP>?0gt(rB|tTpE560o zKm26kd!($~|0!N~sKw1p;=Bk|o?H2@VLCF-vocwR1w=H*!yAA0({p-*W9?7Z28eB`_Rh_{(45jGJ=iDK4)PeBZ-@DQ3Z`cY& znv8$R$6HU(*xaPY76TzUiS6VQN+QLIDLB9eCetKPn9SCnUZw(e&$;#(%Gj6LPa?wG z1ntkSTgPe=8G83S7Giou3yGUAiX>U;Ic&Xi)k5=Kh&!Ebun zjP4562oB*Pk{>>#uvm92^ooAxlP}=_+lNmZzGIA@sUe6ax%1IlzOIw1k4c4!~>5;x?iC7eoljzd3Ehh71iqY;(BNMh*2Q+ zIIGIg^Ywy7Z(W%H4Avu|VQ!SkxVz$Q`@GtAl~Bs5q-s^pWBw&9Y`9zNdIqvv+YE*xKcVRV4cUap3VZ%`+V_ z>HRz!F}{utrEnlMK{I9SD_E68vjLRxS*4);-HE(-(#R^a{FZqKw@Ot5+2?tSeqFn)m38>uV;y%1h5>3`L)yc6{EOCbCn%<1}9j< z1$J1a-~<~UbojI^!|1@Ci0*?z=tbnXl$X1e_wCtj)=Hbt(=}F8lr?#wNIv7f7mpQv ztON#az{A_HR6s_kaCrDOEOlO|EU9Ef662u@CWW;$%h#6x^w{As^ZCvldp^&n?n7%w z&USMfNfVA@kQDkd(>ei@AHT)}_aRH2Hcjo5l-$MpqG0}1a)l2E6VK;!;G~=|JY-`G zQvZyX=wpJJM5Xnr`dH5m2sVULxj^YpIx6_9F+6Q}{yLjx4bmr@tD13hLUMbve zVP&jSUX4aO#Zvc~F`yzzWrRcrPsZT0czd;#CzB#xZ__2kH$^yKlTu@>E&diiR90av zt-_p6SA2W|I2@I>J86%$bF}MUxro*ZJ+|@9L$gVuo%1NLwP1N zVSiRq{6M1r9YE!6zHfst77vte*DjtW81k~GLkknIJj!2}2JQR<`)ud`j9FZ_rQ>*N^fWz)CU zM=dM0Sw}Fj`i!drF4(=duprgKy#A(olL%p-_^n%NakvZ1yEFfN2smxITADqKb=2ID zn3fF%XZ4;ikZnSbJ4zfB2`7d~N7G~JxL^(sv@ELje%XDej}Z!z zZaj_%zqvy1A_07&xY=*@{GNA#a{2G-sg!h)K75&J25T{HV0*ay>yOiJ-rAG zG=70c-V>TO6C5k!>uDY<7TH$CzgukkW~EhPeqO@3uC&BsK2Z|^#dAwgPOz=E#4_JB zNnJVMX#WDOmV{TYdSfzoNf|TrTWM~ErK*W+Y)@}=PpS^NZ>Y`gy}Q`A$upKxv}ZsvU0ie{BmVtM%Pl^$N9pgcxOMxUy;KG@~ zh?rE4V!><}2{^Zi)le@U6K~m9Xsqo8d2N)kXXe%^Db#Z3 z^XG2dx%6rV`@O}CtjXfA9f4A`jvc_vOd*ccB?+(fNT{`i}XcHsb=&G5Dj4aWL%cIA^3fz1#9b>4sz|6 zT{|ue_HlguW|O0G(ewy!^^Cge()y!v(@%EowX7vU+&N!D6qE84(@sdquPYB+omoQI zbq5$sYE+N!n4*q&Oev1!@f6uC!^J!@*6WPaLD3Sk@)qSB1?>H6N~|2QKTyWL6IZWu zXnkPn&AN)uTU78)k>DO?THhKq$t_b**O*oW{&>iaCFgvdk`w`kfDKYIoi4QB_px#@ zqFA7WrU8UeCH(nL15Vgrqm75Mx5bXSw-tVVIe(V{4NG1u`XyaxB57+S$cz4D%}B(l zR80I>v!8aP}BZA5}I-=D-Jk42&)@onUs8q7kGt zJNE`q;5T24SVgu>g0(Z(2HZl>f@Aayoz+Xv{qH;a?KW_FeAf~v)D?FrpR9>^Fk0(l`%~<|B=ZUp>~=d6k#zTbDj-+V&ommhYe_j-g5rQuV{2*E5PnJ5W-O z_%rKnpePiFWnG3`yJ_5f!nB%4GPs*r*=i zWd7n(jMZ4wvF8t7>F&dIPUL>S)pjMgu6@6`Ntc*=ewN$suHtJI;{)deOU#6QCy)YE zF#vc}SsemBVN^Ur*p5_Y&=)1frs@Z{s^$ z{R!BSsW;J1;jVp1tqv#S7pG(Q78M0uU0KqbehyJIj*@RwN4my{5w3#-TzsaExU1?k za6~4a$V#o3TjKWfQm|w{S<$SxOlhY+j$UFO-rqnkJO9oOWU9RU%U-erTbw^pS&oav z!`9~DqmJDo5AGxDs1V{F@2gW>Q!5x^(k=rPbs& zpUaCO4T1_{&xAT151LS6QpYew#W4{v(ZwPyP_;gL3M*C=!l|%B3kJK=&N8vH0toMZ zfAS?$?VZe*qI{jsE23IJg3!CmVe1XK|}C4&0tr{a||iga*rWe!ko8~ zQ{u^V^%V7?$8W!81f^|n@4aI1R|Yg{;&-D^amnw42A=_*`MYa&a>hvaZz2o63eH$6KO{Fa^h@siun8E+5CYwx!@>PFzO8^18EdVHtadg-dL zeydx&FpLS7+b?dXI8!W&4n0OaqKJ=(GzyBOp3z``wjmY5_pE{8Pojs!8bUJ7^$2+!Y7~}{9U2!%;c7=c~Q7k(#B>a*&qo>%;QHrd#x80qjlLF9?h~ecfsBJ_GT?>McD7=8q1A9 zZHVICmO5{3grF*}$6qqWAV3zDSu-wB!SrtxgWKIp#?D!q`=~#&t$8)~n4jr<3b6^t zm#0w}n{7rj+K4aJkeI(JN(0zFdRtnB&wBo3Vk|SB%K6^ri(Q!l`Jx7#Rf1>$@T4DGfH(nHV%d`EtNGsTO_r= za~An*1updZb|quiI?H8$gsG%-$sp+y3ETUFA`ehpTNEp9Cl?_9p0qdl&QFvA{PiS< zMSb{alT@ffI0&{&WruyW2@6)gI1xP}Oia!=8Y`-mLB{=lD4Wq1ugSO`qD=Apv^mia z_Ukw@VmSxvI!_H-j4R>72}f$>Yg!dP8|F|B`M`3dpvAtz@6#`-osf8Fber68oZoGB z*S*j)eL@UAqM?{z5fzVD79xOSz){STy0YLtmCtN%nqK!@ZeJu$;M&?JPyeQm;>@*_ zzO%Ru7KT2<{iUJRAu`J-yo6h2jK2tMh@}I9V+r_1SI%WU4ONaygmF&(D*T>$={BJ+0(k3@<4=$l_ljUEo01taV$$kGVZ= zcImO!@L1m`Ea7{CzofJ{d8%>1%LbIJrcAm6g0D!$uf1R~Q1@*;zx>kubr&k$E^WJ9 z_Hqx`q+(q5eYJMRY-A_R%C<=p4HG4jpo03ti$p!LIpJWRQ&iM*e;|3)AX3*DJURU3 zK8|IL>WjB_$z$n}GPpp?zHWF9t*g~st^v|Sr1&k0ZA2Hh>5bUi7^4~m307G1@NL>> z2{7+RNPM**KZSQ)Q8_2g1z!Y%Gz%!)q6ZO|dX(?|gfQ`e_OWOF6;b3`ir0BC5@ugm73D40HERp9yAJF2-qjlOX&w9XORJFzul zBjSyG;Ww7Zy}K#R`p2iRX7x`?PGcMD{B>i3Gj$$m8e01Lafb#KM)W_*rRYpQej?L9Q>08NpRqiBe9V0-~#kXpOxYO@)Y2zqkx)%AS8O@kDZtk}JbTs$cht zkJ#XiZ)Jj?b#3ir8kBGL)_=QwYgIX*CR{##840PvqxMLU8Ex0vay8DMf+lF7Ec+8a zUc}0o|7g3Y8kltTTk?DEBGCA{6p*4z03*#Yp6K}jai52=?~4C{crK{=Iw-c0zcGFE)>pn_42eq{&P^uT4%T7-!i1VNyi*A`>&vGN?eJ8gC z1;=ln0dLR^lk&T%4=A@RdB%|S+riXn zZIaiI+M6T?1RB816d!gR)sS0&G>gQL8Y;4?B%3k$TqiftRBnREnU(3c&RP7oDa6Ga z_!_fS#Q5cErLsba?w?YYUXSqW!uSo)o;*}xXW5kAsPGtjhckq@%lk^Cf#cSsF3h(C zIjh1;#P1E>7gCzr6ur05lM7!Q)Ygb_Di}g-O+U8rB&l z)UKffF3pAM#{UBb?(Z9sAb zeJ}R`GIF_1A3-}nHVx<7rj<+yHFUj&;p;1$=Cg8%C9*+q(+E6`%(O5XpVW#{p(=I_@!$N3-Ji3Y3z%q_|izfviL(89@#zB|2 z2R%&%b@Q`|`Bpc$4a?~*QdqTOf$ayGlvOe)^A7{z=WY9!k86@iO<#6%yT1L);;1Dy zQZJPs;`EYSZaXeJf=RQ+N~onds)P#E9BP$1ukQHV0&ZGn%S%@pic58~K2X=A7@%Px z>29EfO*XM4U@r39Tt8ucxbPQHMj_AEq}@* zkuG(p{K&EK2+zTk$O#ok3n4=0#D%I*da^{dw7?h_N7*u$tWz*|M$exs3}9~$`qqA? zs6vk*FA!pvoGgMl-N7_6&u3VdD8w1{(=S{fI@xP`0_{6wCG_wtQj^c?-y5(! zF6<6Ga7h_r6>%l18!izjINNAJ?Tr!U)ii%Lbw^Q?m%&tFVVyQ*nriv1t3Pe2vpODC z^D9BZJ^j@^YK}nTis@4R`0#nFbo8n#M!pt&<#H%c@@$$oYpWrum7G!n3tKez+<1?hSWm|=V* zdhmwG)=i@LY%C(GZjsIi#J|V5ZN$IM5FD_?aPrr*FH(wcM|8Rn+HehVM&RF1ae~|u z_u*{VV>rFojWacy1L9C0%V!{_XhsyEoLIZdsWE-9MPU4jucSvXT zfBAi8gWe*xsNG*lQEBqkgDI2P@;N1N3~bAk;pgiS-oc>PT+ss$=PGwO{5VFR9%F7P zItE3(-GJFgjItDanL=Axi5GT7bM`EkB1}UVwTH(IhgseKsVkym&5|nDz9d6-WPhFJ znJ=e#^?rUlELcy(El7n$s+d;MRLIZHNGded_&xq?Q}L(`Bx`Nv7HM3Nu7)e4JJ+H8 zTL4N}LOoUQJMIaP#_owCNU7>$0xsX)z3NWwLgOb#Qd3!zkEC8&>lM5YvRqOQS8;OU z+PSLxK^rQ_!gxHWhRFso3&XpJsVo;QIvR;q7wtdMP{3oP4;Kfz#jlJdoG;H)i7tGg^@E~&WuZWuP#fF zOT~B|LYo>A_5NeiCLZ=@DFIs^xRUaWLy%x~ai)*YXZ8^y<~MB${FXnw8AbQ@#8eH zF1WVP$78|Ri{~uk{Stv&r7vSH*F){v8c9N3G*B@@zM0NTi40XAA1BD&D~|1~`f^n# za&Jdsfo?wzhbjhQ0j5SQn8)b8@vwus+L?FVXZp)u91 zOVDxDwPi7=eTEH7geoA*HUvM?5htbOGA*0=#1N6GirRYP5PuoAc1!OWv?jfjVeH!I zsG4exCDP>1{yv4@94$REDMS4(w6}Z?VaQseL>_--f|t7_3B}jY=zx~Fb8>u0jaj2G zqzx=Mhy)I@vgSCax`n&wU&qfkf*Ci#m(ini4VVlFJ|k6w!PjQ{(qS>plQR}9g+ruh z!c{reBb7vmMvCwJejLt_ilUC&bi=ij?Y$1nB=?Mvl18{e-NTgWFs#{f_TWvPna?jL z)4(xWvXhWIcgo{$#eN~mXIbL1<}>p1PwHTg@bzg}XHQ=GO>eZTWjI`a@Al46^!P%g>sm9xlj5>LPbV^Gc&YjK zX-wPD-tMVjPSmbsaUCGP2;l7Y;LKKA9I_OV-gb zh!P#wRNd_r46r6!>Tx8V5+_=oxo@9bxYU+ysCUu{LL%!4!VehwEyYi2am32C4TChH zk)=Hj+l`_Kah^1-oSUwYVpx*AiH7Gz%TJMCu~-M~=je6_usvjRFE7!t$F*&Pk@x2( zmnF>9d`dQ zF&2&H4|lM@d_Cc}(4F>sWHw@ftzz_8>G$+D+s}k0mPcvp8e#uu@at{g*G(%aIEh~o zlRoe(?PhH#kcUFi$6A}`=>L>B>)Q^2%CMmQnj?aGtP>yu3|P5~jWFa`@c~2exZW<4 zfoDNx(g7}1GP-_cl;-Y5PuvD%F-q^H&lQaxVD*K(f zj1ctX-i7djy()G;5Rwv#dfc%t=I5Oh`6c3KN6!atLi$eX<9ucu*HD6ysc6jC_}L9; zLOHE`rP1pn_Tb@+N!>TMq=+%O-nkv8fr3iJ-PuQ^r=3-pnWn8Arq(Kmu(S-LBZ+*` zgAuNV$*lsTOy>ECcADMl7YuF}(?8J{ZFtt`ELF2a=(2u~>3C0x?iId<;ZsKG%y6OI zFlNDj4hV<`|#`dQJO?Bc*lhw7l2_F%0ZNlOf?IgMbSmN%Yk;I!ZO zlxc|Pj=q8p)AxXs?O(FSL3RQt|Y3usNVRkYnpAE!Y=*D5+Qu2Ew_KSztu#|D1%GaEbna8dzp zEp{=6wR~~PDP7#r4P}*is_FsLbJ+N2e0w8tzP|Z%ZNs0XT+3uFjj~A%7o+x>PCM{w zU~(xigX%*+d5{xnV__6`p-JY+9xKHI17_T6CAJG`StlbKF4w0RRbxFbr?Fb@jo!?D zh0rAAADyn~@zqQYqs8UUBvn>}YH5boE4%$|nq`JXDnEoq4hB2SjI||1 zzi11sQW*wTblOP!Q$Bohk-N5o;nC6Vgh!;_Pl^y2Ac!3D`Vojn`cKQ-zhSCsf5W`~!2a9dg#iFi|LKuy?Xo4;}O&o8)J+ds45B!i@20rr0lNihN8k^Z-L0p;I+Ld5B>pG~O-vBIjk z{bw+CQmh*?MBomH3Gssi5yNV`|Hpv^F@^zg!5Vt}*KYk|n|c19os{kQzXNT&{&GMJ zVL|U;oxJ~xD)asuMeBK@Z}^>2T7;GfyZA$C9zE6jJuS0G4)^dD{d z-)OXmztIGs7dHM;VE+vZiTxX9_6PP~p%MGvFwCUCVYQ$a)|6BK7%!A#L6G5I$WTxF zKRYQV4H;qw2V#QN`SO3)AZ>pzpVI$hV?&7GK}00~zbN;=+s7QD2oK^S`Tz6${{_@Q zGT=cDLzCO0mKAT00~0?iNU7#CROy}LstJ>N`Rmsg2aI7#4wN_ z#4vae6U3Lr0ZbtAh#*mzHpmzvND^4q2Mg)!gT;d|BY~KJi&wCa)2kQD{>6e3gM2{( ziNWAQ7Lh=7B>zs7{#n*JgbW!Z3{wlyMF!E3{yCLhUJ|Ny*uN91e{i4^NCqorRvPkt!_6NZ*P*4|$;6y*lx&>Kn0H`dY=J)Ijt4vqq zFHLRz^BeT|^cMbfN(afDA4e}H$c*-tCphHSRF1cFKjOCEM{Bc+z!~S|LoHilv8E*P z=tlT7j#;1Ie{)F9@_w)zr>P&Kv@$b-YKEj{=#+6Q8X)ejbhHPMd*6bQ;$8Y4HAyKm z`dEzo08ZoNgDN>CHXyCSfNw+5b9lst!xMFMoc+}-mS0KpDp({tlv$CqfjyOohz!YD z7+E_Mvy!XZaLJyDD{dvjP1P@t*T;vQ%q#{YrmGW;hnC!R;x@RO0!5K<9BTde%Xex&^3FS-MH)uT=FYvZ@X-Z1QFR`015u!xg%i=&br>>Eyr z41_D=9>M4kco;+h6p67on+ap3FE>mro)0yi&m`a^Zfqn@T*r*BuuxC}cz>0csTd9f zanWpPDX~CnUh)acw`$1w$!9BLW)}QN8XVRt!wbj^%$oLI^ot`8}iPF}hwzr-JWnpbOWnW?KCXg+h)HL%B7_9-*6A;#_D zf~SIbBO-O%Ct8`2@#dU#7o!<6Z@#R7-YFXGe6{4a>#%~qq0Xep8I5#eHP3(+O+zQr zT5Wu5uOlvph+Neb<78h9p{X+QjA$92V+OsPUkwWjcNxrxf|h40zT~U&i>~ofn?ob9 zaKI7zFrB~YmqIib?+Lui!;wF(PyaQCrZ1qt?{E?2<)B_#-8E0VT_=}UwuF8CuBX`T z!W<2&IlHp*L7^DEzt%Ui@kCpWD)rzvuVqHg0Bu4qQo#UpC3J`PSBKtdzkXfPcoI!|(YffjReuKe%;o_%hoy!()YQF)BYWKV6bMm>Sj`_m*6t z3|>taHHr$ik4JTJpS-z(WWguhv*lXwq_uH|%stO;t8QqkSjl)zELTJURk1*-u|Tue zh^+j6yWzmda^)};SGJ1#M#sxTF5PU8OJY{Yzgy^m?62P9*g8t=fKX6j=->$hDi8~k zw}btN_KM>Y7j_5PS1*iuJ1s29Cjt+oCl~xguI{7XIjMU(rPQ|A$BT@B%ZA4OeQ<1H z;kT&ipY+KT+?0|e0Rp>ztGvmE9gCa|HAQXJI{e((c#Sp_jm8$UhNG`P3X0hD9;}VL zT3y=MsNnIawpHizd2QyEhmX>=J%|b=YVw+$jeAbaoqhNqhSNdjCD@}rbzCc!TVg;j zz#=uvFL7ScL3HW5DqN$A_xEnekyVAJ=0q$`W_Y71)OtOw*!^mC#h2WP7WD}}C11n> zuT@XkBYuJ^g;<^63gSy=Rr)R?>;xZcO63b^;`DX2@{7Y263-wUUy#&@3nmR8WCk0(WF-lJ9gxZfaMGR2rtJkLJ#DDY9jW&`U2T60C~!9i_wtW9RMH$*Xjz{R@tRx0S5FSWlxO zJNT`BJp8i$L@js5cj{@znpoE7C}=BRN*w3eBQD5m?xPVjPgA*EA^rQ;I#tBz-HJbeV`XE2bAsB9@sLYUV3R=m{ui?Qm`BxQ-d2d)6PE857Yr41Xblly zNr~Lq3}{j9f;kX^O@UwRh_%h_P^_KOIMu4&It&?q^?#u4i_U}zgG-htaz)*_I#qsI ztUDIe?YZU<77<P>NE;hmxT9d4n<|(D!&t}I1Kc?%aYtU1?DyKl;c)=kn`I(2M zGZ^MmN~e6AiGglC$w#pt%>5aiv@1WfVhSg7Wy%Z>Qdr=pL!zSn@BM`y(4nASUSOb9 z6D{To@j`HP0wl_a4hg;j*N{Q+IHu{7}ENB*;4nLRF9w9Y+#wyzLI&+G(aXBH_(G4u;1ZluEzM9E;&GAlR5B~z_F zFSC|4ITkP5KcJ-e8kQCi9C)Z}FZ*=b39rBqx2tt|>`_Nwz#`-;NGEvM4PyCUlaF3V zh9d1vUv5Lsp|gY9trASpj6RQcamX3t(stdj0!@lDZE?d8u#tl?6l5Z&HyTG#;HH$U zZf1U;Z$21xKHWawu)E{&k0{sq%pKcrp!M0HT%kfc2fh{YX@Me$qx$Rw8;YRBhJ_o> z?;l9&Dvg}mmu={`UW?b@-wyXIkt=9-8HQBA5jXu-hAy2(DxSEGv#VP1>7)G?|IgeL zM%fR(&2Qcvpt4HO7DSi%2YktW2LADh;6PuLItNbzI3!9Y%~oW%R|_S5RUV(m@EaXwqrdAY(39mIy;$LsV$ z+3B#IOBtP5LqQXnGBC}qT#q!z%+%o*Z zXDM5o4v%hkc5A%tgxVQ@1V|>*2Di%=>O+ooGtuvkKD-c6> zt!1yi!(ZMm^%nMR2#v8h@yH6?xU+^=eJh^ualf<74RStw^o=EnaNzz>Z(sW~Si&L^ z3`YT-XA5nL3<5}q=wnchz-)zLnOy6Rhubqds`U&z4VE$wIJ$f=cTsPcZS#Gj{ewJS z)ht>`29B>GH5Y(Q8Rd^g98Ggd?-F>3gpM&sJCZ74Y~)AEC9)u37>76Az1n@26xk?L zxgo4qQHiaZF_+U+fhqXu{sXg=;=UkZ-xa!|S^KaaJ!og%gNJ+BM2aGRZZMoHEM);E z27^kDpkvSi-QdInFJF%7>Qdc<^Fz$_d1Iyr#K+dr_Q`C-8vBP&Az1W7a6(~E1B z-N%wyO|1;`>?{-IHIZ7`ZSfk>0E+G zAUz*utsSSUO2EvJx}oelpz2uMK9rYXiKFUf&8DhF%kb{77+NPlMLOYAY9Tld1OZhJ zDe-<}q~FBLNP(?~?NNY241pq7qQ)SV3UrAjxD*(m@f$0wj&=yoR=4{>i9qxM{)7R$m+2(PY#CcR2QGKL@$5LB4 z_%oy7Qq@J$jc?3VWLW(ud;?iFUUOQ+;w1ak4YPI*S0D7AI&I&18aYTBSw~yqf5+fO zbN;3XZ5j%L=?Z7RPD#&_M;h=G@7I#eLRNW#(y-TzHj&L;L&wLe>c+lm_P%Nmna6&^ znguh5ciE^PnLPA2X|c~}`e;1;TnPFHm`50ci8qf|np0P^vwiQdj)X;533_*s@8XlV z#=*bz;ANu_=(^G<;7Dn(5!SQ!|-soZgfv zAt-0#U}K?p2a*H=r0DA~DdR6*V?D3YMqAQ=P5FIs>Kp$uPw8?ipR~fC5f&~VL!6(* z5F@^Xe!&Zcs-1x6Qay1B_7PIC31j)KGIzbQOV>8~rol>&_oc5SUAl+>w51j=FcRc| z4E!pcIK-JA*p(#FS!cQqr)^U_o02xvVo>)Q+ zM8rESwoCo|X}e*y2=W*u%DhqauV_`CVlRd)!ja6tTyJM?f zfr0&-KVA*|6bx^&;+VyQ-C<<23SBeDbPLa-3PwVy)RN1zrt^nF%0bb4{^?B%)=Ikn z(3&t!r@JIltT<&krC6cw&eYc@BqY?odP9)8%iO5w;P4H<{EJ}yI{RFsx1PJjY!2CC z^*Eb|1K2!75_%O}9-;uMv@3EoYYBf=aQ=e6MaI)wY<0RKd^?VN-alKmz{c zW6xc@v5X%eqK38EPm0c%Ct(}2?S-6`{Rg*&CFaS@a!7wtBZ%0_h&8-3~JFN{(w9t+i$Li?N< zM}11_3svX6fM!r!>$#fpxm0Q~t8giNb0UP38@>IR-2?$vBHOO{9JkFdc5R4COZ$hO zyeBU6JDc_q_`xuX9qo@=hVH>;8GJ~a6AOw*BZ(jaZvhzLnpM84i{R>(7L7M~baEl{ zF=qJYn8u_RBC%1(VmtR;A#W8nF~m~tR>5#R{5T*(W)Be0QuZ0%H|L0D`eIuM8(%oK zkI=c0b_YEDWkZk_M>lD2`mdR*y^l_5R~g2c_a8UCc@Ev3!`*vGDqDGDbivi*wQG`d zXMtz3GDfa-R!To!aJ zz6j=7kURohN;mfH0YoxD!Y0N4rAM3oSnp)@Y~L`_i(R=Pb*FFvKMnX7KN=oY5O zL}UR9d0OE>iR=;WrEP~v3X-@kr$EKnTySpX6%A;EE2c6psdC51x5~^1m?usW>glcq zjX$w;&VhHA+Z1)nXntW;Yhh5*6r#NUn&_wtz=rRDPKcxoRD`_S^q^(O0%RIIr_j4wUUa7J^mO8anU6t(M#4vEJiKx7IS5_n7T zxdQ~qYTYYI+kE6VYfg(Flt6IoTUv<;EEp~tlBbCG~?(#4LIu|}SU=Jy-*W8PL)uI3614NnZGA>Kz$I3)oMg2?|kE=t>`3 zfsP}NaG_wfm)Ya_;6u!=&x@;_#8i5MuYK`H#*s;Pr+l~Ems^3C|4Xvvk26UrydJ)~;6djOR8sTedf z8<{lIh^VM5AXvj-@zbskd9Nzg4s|yH?Kt|k`%RE4uP>IHTNFw2Xcu*)$w7aY2Rp)} zMvVZfA21q$3TSp@CF`i2wk!<;MpiaTnb?X7lyWchjS@vC!%Ac6RZA--J%M@&2g6|5hAeyg zuGNMOzOb^v_5gY(Mpqf`lLwg#4zMA^jc#X&G3K%is`V5t5 zwiuqNHHrb5(}7Q!7KYqXAD)P98rD!FCzVf1-Qf=9nPU_TcIS?7nEgz)7f5slJuscW zCZ&yRis>{};xAp;nRB6!{X*y4aV#WtJb2gLOqkjv9DQHgfpL#Y=EMvf046nR*5b@- zBTl>_$?RZsx-vdpJF{aq2d`xFfZlHpmk)Gle;5u@+KuB_tdbOJ1Sw+?PwI+g0j1Df zs5T_n+1#;?!q|zaS+5_3XQl_pih}JXgv|Ty5?>HbHFKiN%W%&PK2-6Iv!WsBP)#-G zPThJb2nrBM&7Xmz4yj2$@w^GOj3-krw&shmB6WG$i-qRPtT6oXSn zG)u(^EM{?JU3RYTDz|H|-||PjP98EOG2$ouih0|=`>Mt6s%Q{^&5$l<(dHh|Za+#nzCo$%^j=q2V7O?OhSlNYfCstcpd+Rh zly%T6`nx(nf9PyF1BHpMKAk1CfW)ji4u8x?A?A&RVvK*1K=jy<1to@x6H9T>R-Zg0 zsT3u;F22wqsYI56cu*pxlXk=U$>5l;A3yLuRRw6hF(O4AGUda_prc%0*W*x$Salto zE+453UOnF+z&e|wF=TW*^9$lzAi+)7u%m#Cr^)0{uo@9#+}8SuDF}UHYt~b0ry8YW z%IV|y-b>*vmEA>?2YNFpyLRioH*K?*M2=u2oNJENGN=3%OY410TYmQ8_zuo$$dD}A zr6vz~j-`r?g&wH0V51yjh80D+iYs%+_wI{{wu-d{d&e!T%utpLqqevjj!)W_;OlId@&eoh=H^{I_MF7RLLU-`nTIF(~s!#X?Ik9nD+)mgc zc_3BF0_+#la-02NXK|ehPPVY()}o>Kb-Lz^uRn2Q_Iv zPppyfBHr52B1rh9!4jY_C+W9z&_TTsbr{y7I*)e_q`>OfPUL31IfH#_LgiWoF463L zuSz(aeH0y-G(+X(rWl}N@6V?B5<=zef~^#RMleQe7%H~6w0{_(uWoK!SCX&fCBs}% zC*+DQwUWtP-%se4DHapK(ffwkU7!1VJU0b?d6jgQE(mH#YT(R}Bg+BFp+Kx0c;fBo z|8#yQ40<@f>s@re)|#l*YC7bQZ%WFXnMQ5g33+=Md}IpcynrB2pZ78#Vj$kx-PG z7IXdv4J5UI8oM*6Gx;^&L^1?ZUfob`Z4WLy7}cU@lOWpaZLdmXo{D&0_y!RY^|(b6 zgxeU!qozty^Ra*?UDY=WQFkM2MceL<;xKVfbrD8f0)X{Vh(PQp7F*J9z#XtSF0YwI zV7T&=Y)w+oa0P>S?T4UYb|2d5$JZtf?KGJbR2}{V#e94QXS9Ch+jcLq3FS1gNfHpo zePotba0zvR=3MM90B87Xe`ad0hR%PSy zNNbRYX@;48d~`W`PY7a|tdx(uC*F6xs{P`Qv@k1nZ5&+pd#l5TC5bEhh_3GO%axtM z4XJ32=>{=*p96aqByp^}G@gPOU9HweSGD^0RhJw?X{_F%g2b4}VMeMZOcRqQm9+qZ z{wO?U!j!aM`BMjdph`=CV6cCq0oXpU8d!^a+U_jr=F=muZug;2eYwk_oK_NH0f zXP)E|!-?WXygc;oD{$70L~c6Rv|oZ zS4ERL-GC90_n!2;<$H5T*0o%-JPhh4;&~H%^XvEWiKr6ho#A5Bn=R&0{qFEu>wvb7$mc>91_}uL1~v1pMYh1W=yTAFib+w0W9d$iO^>?Bc#bi#oX| z^-k!~V#Kz`%5aNyX44jr=AWM)h%ST!!9mwYa3U+}$wD*y4;(x+`zuOytNI5ZjdU{G zrB#=um+;&t^gr=D;#9MZRl_SBcc>dK{00E6jGzLVar3k|QnzoLeFz8)<7IV?5A((9 z3_gY%mC(tYq)$vaqs4rGDu!bq?pq1R#+y~R(6;E|KI0xV{h|7~^h7#u?)Of3uS*I| z5{1j2MO5dn6S^Aw?nz+=L>nKeD)eMA`df{8mO#}2PDkztD&v-k3rAhq;>i~V&i4`^ zx6|o5w>+g-)Zy9TPL*p@@#=RAOvf1SKE}7uQ7j4~=n>NY6iStX%ERkVn0kBGR@!hI zAH8k~w%`plZE92rJi?6NDz%FfcZhUhzlJ9wbrrXD3 zRsR*i(8M)RT9cOa#+#k_ZXFHBgw%@%WGc_J1MjQx_#EBudLP;2G+f_nz8J~cEWT8R zD=b~E_``5`!7>Bs0

p4iWE`@Ve89XX*tMUsZ9i#lJ5(y~6%ttE+g802Y8ZS<{D~ zLwAunI~!CyNEpZh{c4aJ^f~%rvxo99*fp4My=NY@>ecqm?I*f)HVRt3$K0X}$W&#% zO+0h<^(y*ydw5qkH&0g+-Axaw6*;qj#%@p^!JK7}x|@ZF2S%8XcT$(m@57Hl|~hguXY*Doh(j!1|?UmePrAwOEQ*f-Ll_0e#%BO zrAkbfK~Xi3dZ4;IyK;lhC*1o35H;N+YI)V*NW>Q21X+w;Vl=D_SeM)*Xa-gd9&5-= z0anMl+Zs@yyA&$*hEUO*BWbc%>J5>iDTlMph^#DLV3^)jasEAy&>#qjCfk77=0STML=mlrJhDBT zm2$#4?|Y*R_4^5qNQ==*vo}X9>~Nt|YlcD$f?j_EP34a{bL2ljblhsN?zltGIxkYd z_7s@_C%O5?@syRE_$=wOwO>A}P(b?qASQW8G~C-?fVaqO9?N9V$)(nT$*3Zti8SX7 zTL_6_k}xTb&?!>uHB!~8)RRyaM1j1~WxeZN zb%PO6qu?0racLyvz4pR*WL|C*Ef{myTcm!hec8A zpx*&^g4XeTc)rE?3h<4LR#vEkLRzVttJNmy(QQ+E&{Nd2xg+y19W8U)huD>NZPteS z=>`HhzG%@bEvBBT({mhc=mbrw6n-;tUwsZ_H{I`ZDGJVCnzpV#aV@(lR|$7udrq9# zW5l6(YAhwuO~sL)66&6yy`Cbf-TV=Y8pu9B1J~3_`pvnrX$gTJ+ZTh6t-5})S}hl zO&`Mu1AyFzuG&qwr!a4!K~CSv@xx9aN5UAt-!YEa$moF`&gAgG&Gri<1=Vuz>!Ba_ zI?1XU4=g>!#l|j3(cm}EM7OQs`-a5mcn-qwgK#BjuNb;dVq{sq5Ac0q&%qyovZd?;cP-u*fH$j?Y)t~~2>%d9evKR=7*8h>{^+q#lcjaHC*1j-mZyjUHN+WXA_5kbAP%1-V0Qh>&UpAi${I+TP(l?W z9(OWvQiv#)iC8bBUe@nvdy4GOKLzXGxQme3^!*%$1{$=gyu^YLkX!%KJv4m{WdkoB zxcs>s!2^pViE!;s=1UxRfBaEF(c@JsHFZ6eMsUYvt5NQF?r}_;H$%Nn-o;RcDvJOy z5TIzwZjn~7#?{QngBnW5LSSv@jBP&wk2g8T%;woBA&t~-jI=2&s-%$|u zp-mH^EAO)Ax#dk8uoMd8~Oz|^4+EzuQtCH)ehtyyYbS=tbQF zH&8aj#=)%m8`Pgxw;)kbi&n2Prar-AVv`SRouIJ7yM>*{ca5L2If9d2%|de+sy*&^ zN*Ck}m5}W-DV5 zo!b{sLW!z@Za*vUToZbAFfsmN8+rl+piYo?Nx;SaqPfG5?C%YDo;8rdrhAA9t6YQz z;*9p_=018ZmvV4GaG3#eZPgcl?2gWpa%Z?=ug#N`5waM-^3JG*Q}r4;3fD@2FzLhrQf`~(j9i-ucnj`%NH09z=Hi>y5kRh=>T^5L=EP3M1~MT12IzB zfrNku$5%O4;(rAU|6Mts>z|dUwg8y{ik^SuA?VORPJo8jU)mNL$N~7^{de5Y-bj!! zXdnZ?*ynE_Dd4rw^5fsW%8y8Y=41fa`~K~l0ssk#|6TY0cT!iszv`le0pbwG{}~z>GV#g)9RfxP#iNG