From f13629de491fb356f11af94218bd712184372677 Mon Sep 17 00:00:00 2001 From: sahusaurabh65 Date: Thu, 1 Nov 2018 18:23:48 +0000 Subject: [PATCH 1/3] Done --- __pycache__/__init__.cpython-36.pyc | Bin 154 -> 155 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 178 -> 169 bytes q01_plot_corr/__pycache__/build.cpython-36.pyc | Bin 558 -> 706 bytes q01_plot_corr/build.py | 14 ++++++++++---- .../tests/__pycache__/__init__.cpython-36.pyc | Bin 167 -> 175 bytes .../test_q01_plot_corr.cpython-36.pyc | Bin 791 -> 1104 bytes 6 files changed, 10 insertions(+), 4 deletions(-) diff --git a/__pycache__/__init__.cpython-36.pyc b/__pycache__/__init__.cpython-36.pyc index abc397ac59f40d351e1861264050586541adce96..be06bd90ed58e446219839f4f4337b5281f85b3e 100644 GIT binary patch delta 82 zcmbQmIGd5fn3tE!-061oL=JO15B-e%+*JMI#EjD7#L}X~qzp4t{qX#v?BasNUzQ7{B4QoM}w$PP~4yzPQ97=xB^U>Q=JbRYfJX4f>U z_WbK#rX4Tfc_PTx*KDiUt3T|aW4Y&K9f9M4;6}DoAIMNnwS!wTwE5Pl30=$Uy>i6k`^fjN5cSyk+EhiNAcQz_%cTJ!;DQhmoQp&c2!j;7vD?ko*`&5p+G_U{uKf>O z`Ag==Y5xKz#;HUr9L<}F$DWz@{A_nO|MBkE=a-a_-{jU}7{5WY0VI*22?z94)0T18 zMm%a`9=8ck;5tuvs$iK(HUgi?RK_y-4m_7|NQ!KWRmedR`Q*Yi^@;V#`L)mNFze`ciNCK8Gd z3h?Psb8MSS#gk9^z4;)w99!dlW;!Qa)2)h`kLu1C6Jf%H33=KIXBXW!69o3L5vyb6 znN};G)}0>Ol{JA?5&I~p;G@vM_$?WMnq+`@I;%&}C6CN2}z8wq@Va}1?YLRR>oCUlx= cPvmaFJxuuQRolrytJgs`n;~TI5Hgyxzs9(@CjbBd literal 558 zcmZ8f!D`$v5S@`^uj6Dx3pu3FAMj;K=rxo;$f=M*dq`F+EMCh=>}u_;q@~&7y~Mrd zL;69v=$h01LVD?F10__$ym_7{jULD!hQsvf@p1eI0iNL1;>1rW?ID2zg&JyTsb_oj>IIV~>G|njPJ;Ca>gBp5RGlwXCq4EUYPk4;BapW9zt%H^OK9F8gmCFSj-g>!;C4IcgVE?BLpivv zZfy0ll<`=9Heb|6k~!)prggci+9uocqG*lre4(98>~glyt+T{RH!bG*LJsD+v$yRJ z8Q;08_-1`%^5&-WT$ha>6s=y)8!O}0iWSLepG#_xnd(=a=WyimEzy$Du}APbU{ zG0F0~-(ZIH{rqk;ntVSxp8h*DnJp`=MvIk6Nlz&40RbSx1P?H!cux^i-R{WHgxAP~ rd`pJI7+uZicwjPqsV2PBcK7zuSFlflPfq5oTI%v+_!DfHmPUU8ouh^r diff --git a/q01_plot_corr/build.py b/q01_plot_corr/build.py index edc724a..df10f57 100644 --- a/q01_plot_corr/build.py +++ b/q01_plot_corr/build.py @@ -1,16 +1,22 @@ +# %load q01_plot_corr/build.py # Default imports import pandas as pd from matplotlib.pyplot import yticks, xticks, subplots, set_cmap -plt.switch_backend('agg') +import matplotlib.pyplot +#plt.switch_backend('agg') data = pd.read_csv('data/house_prices_multivariate.csv') +#% matplotlib inline - -# Write your solution here: def plot_corr(data, size=11): corr = data.corr() fig, ax = subplots(figsize=(size, size)) - set_cmap("YlOrRd") + set_cmap('YlOrRd') ax.matshow(corr) xticks(range(len(corr.columns)), corr.columns, rotation=90) yticks(range(len(corr.columns)), corr.columns) return ax + + + + + diff --git a/q01_plot_corr/tests/__pycache__/__init__.cpython-36.pyc b/q01_plot_corr/tests/__pycache__/__init__.cpython-36.pyc index c4bc30d7704db1af3a7d76f564945a76f376cb2d..246175f81ea5a97322b977e23f15409b565870a0 100644 GIT binary patch delta 102 zcmZ3^xSo;2n3tE!%IS9WL=N+y82ya=+*JMI#EjD7#L}X~qzp4t{qX#v?BasN3Yi6FJPiLY%E)LW@(2ienO!GBS%ZQnO=RQj4=o@(W_pi&85S yOY(DL(oz#kN{dqCi&Jw_lS?x5^I{4O4C4!O@=M~A^NWgNN>YnUien~Dlmh^7@+3R} diff --git a/q01_plot_corr/tests/__pycache__/test_q01_plot_corr.cpython-36.pyc b/q01_plot_corr/tests/__pycache__/test_q01_plot_corr.cpython-36.pyc index 40d2b706881e3ab76930c2164e7d4894f4b4633f..4c55e0c700e3e2b6afbea79d8dad8da9c4bafa61 100644 GIT binary patch literal 1104 zcmaKrTWb_C6vvaf?9Ohx)h90?ItUd8q~iqzMWk3t!G}du5XOg)PO`gG=hh^%=u)4y zU&gN#AAQ=d;FIUfw%c7nGvwstcJe>JNuCY{{g-cketz!|@{6n$5Bz=Yna1)mj;R-MJ3P16|C&JG=MK|eEBI!vWI&+%zj)>@r;GBp+x^p+_3;KaXy#>T0 z!-(48qtxbrYq@~42@Le=yfQ4Ul!DIASej9j=Uk0-Ez{Y3!3~cmRih=VRhCN4iY7PN zl&g#zxtHo`ijgl1#@vUh?|_l5_QVlXIOimBQ9HDr@Ig_>4p7Ov%fnL&JFsAg0O|o$ z{RE65hR*4CdPYthwMqd$56W?_ZlX7~|%a@m+A%87~P7Pr&uL;OP$+h;o6s&t9x} z3OV9%8^S5i8>vH4g=J;Jf}3;_j$68$Dm~R`NnJX8Vj4m1uJGw;97fzMN45)Ny@N45qG7k?Md! zx$Wrz4ZL)~5# aW34e*9czPEOSP}@W@|(h&~5yjzWWC$E*#|m literal 791 zcmY*WO>Yx15VgIV#95NI5{MHAB*Y5O{5)Yi?F)yT(f**KXu#%y1v={YE;&R0!mwQNn1Yb&d+bj7VQ zg>pL0?QI@1JuHUg0?j@_&_qxmf&r?&BO-zbE608ss(pH>lH*wV74~p_j%J@CIO1q% z^#_gudIkg&u*Gr~nFs@X9Mt(lS*wj(nl9*%tuC*A62mdz&$s#8>`E)w87=Xi&Rx;e+0Coh^4}CPhiYw)^2m|48-Eg<|6@;s^zf{N za=LwX)Mt7ey1+qjDQi_}DSaYk)j(GUK9TaKQ{~=c5=_?jascCS7RsEU*)TIs`~TUQ zkL<>J)>t36%B}oRwXLqf$Lpr3{Rj#Z^7>)k8RVXKb>V_A6S9cM#|>U~MG5_+#jsU1 tD9qe~;6^Ku`0{3em-@m7;= Date: Thu, 1 Nov 2018 18:34:00 +0000 Subject: [PATCH 2/3] Done --- .../__pycache__/__init__.cpython-36.pyc | Bin 167 -> 175 bytes .../__pycache__/build.cpython-36.pyc | Bin 951 -> 765 bytes q02_best_k_features/build.py | 23 ++++++++++++++++-- .../tests/__pycache__/__init__.cpython-36.pyc | Bin 173 -> 181 bytes ...t_q02_percentile_k_features.cpython-36.pyc | Bin 0 -> 1968 bytes 5 files changed, 21 insertions(+), 2 deletions(-) create mode 100644 q02_best_k_features/tests/__pycache__/test_q02_percentile_k_features.cpython-36.pyc diff --git a/q02_best_k_features/__pycache__/__init__.cpython-36.pyc b/q02_best_k_features/__pycache__/__init__.cpython-36.pyc index 43047f0b7d121cffd870478bfcf87b31503ee2f1..685ca236d72cf43063ab2e6207f800e415672d07 100644 GIT binary patch delta 102 zcmZ3^xSo;2n3tE!-061oL=N+y82ya=+*JMI#EjD7#L}X~qzp4t{qX#v?BasN1xkJh zf60_o`3p2K8%_|3k!Cy|+uzJLEDRU%b zuAn<$9!8wpF9H@ocgsaTWFh*Y@I~+$SWm!|jC*@TA(x*X2yS?^tQsxjTBV89ana-^ zU2~OkBPWSokHMZzWiAtQB~>Czljag*!+EUaLP@RDs@&f}w1jq;C;_UE`Vv*YL(`HB z3toVr!ud+Kw8hjHw{kB#}10v`> zBD^ooh>XY%wtnj)9siQ`raYHd9fdt$$}upPe@ylM7mDht84s8%R8_04Ox3lMoy=1c z8^udKuT){(Jk`bqNtHK6sja`}c_X!@Wz7Pv7P?Y~1v;sabZkAn$sF3*kCTXX_V}szY%o{)Bb#e4KHM*`LfZxQGB+1`XqW?sgIX|F1D=N|C@_Cn4cL_oWp-+b}q`v{zfYQAH literal 951 zcmaJ=y>HYo6!&vJFHJ=SEXM#sNR_gjD#3U;Ngc!j16nz>~^j&5%=Nw{-Sz{7;KM+eI&^u#Z@JzkrBIA|H3yy2yG!c9zxRiNa z?PrdGV%xgz<~;ccO>@@TjLdr?tZYSAc1w<7O;%3pT#`OnxvkSu96d!_yS3JI<+uK^ z)w->>Mn=lUnX`uXpj_oC{}R^tUBDC=FnaDYi`gG6Mq2BgiPF0uxZ^PQ+;4l&$Qo8b z8;l8bpX!~#A*tvA=4`Ut&j9(EW=0f@+`%q=G?%1BatMO`FGc{!(YP|JF<)UL;OfC( zaCEZwB$;rjl6f-asaoRZ(PWtyY_MpwKP=L6!qQRS1jSBHAKm~DhDDvFg&d)?!M=*9 zw&uLip5Sk|ko*rtL(d%CQM`-J3@N@2SAbNZPd?HUdrUfNoxwPCuqRAaka@5WoaLFS z#fH7`aQ!M67P(YeT`orVa4yXeE;)VlAC|xIQ6Nl#wVl|N}pGZzm0b`lN*UfvhOxJ_+vK^TSbHbi#Zm-B+Bq8eP+Jdxewz*o=-(FxPR|5jt;8PV}tU^>f! Nk4$N#sb~nH^$W>S=m!7* diff --git a/q02_best_k_features/build.py b/q02_best_k_features/build.py index 9b1046a..1c5606f 100644 --- a/q02_best_k_features/build.py +++ b/q02_best_k_features/build.py @@ -1,12 +1,31 @@ +# %load q02_best_k_features/build.py # Default imports import pandas as pd - +import numpy as np data = pd.read_csv('data/house_prices_multivariate.csv') from sklearn.feature_selection import SelectPercentile from sklearn.feature_selection import f_regression +def percentile_k_features(df,k = 20): + X = df.drop(['SalePrice'], axis = 1) + y = df['SalePrice'] + + #regression model and transform method on predictors and target + selector = SelectPercentile(f_regression, k) + X_new = selector.fit_transform(X, y) + + + #list of best features with implementation of k percentile method + featurelist = list(X.columns.values[np.argsort(selector.scores_) + [-1:-X_new.shape[1]-1:-1]]) + + return featurelist + + + + + #percentile_k_features(df, 20) -# Write your solution here: diff --git a/q02_best_k_features/tests/__pycache__/__init__.cpython-36.pyc b/q02_best_k_features/tests/__pycache__/__init__.cpython-36.pyc index 86a25cff523fa394416e407b58545caf2749163a..105f396df463fe883a0a675e1cd7de26283da16e 100644 GIT binary patch delta 108 zcmZ3>xRsH^n3tE!-061oL=N+aB>jy1+*JMI#EjD7#L}X~qzp4t{qX#v?BasNIRH0NCPn}N diff --git a/q02_best_k_features/tests/__pycache__/test_q02_percentile_k_features.cpython-36.pyc b/q02_best_k_features/tests/__pycache__/test_q02_percentile_k_features.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6c04c5d41bad3309f8e706d833c06b36b887ec8 GIT binary patch literal 1968 zcmbtVU2oh(6rJ(MuJ&-yUEbq;J{Y&- zuArg=GrdE?H~8jj!Z(GxaN|DrACqY7%z;!9wKt|hrJ^vI6v^{sB$%m`&}T4-v%wRg z%|6ot{Ee|Nqe@Dq#(FB!qxmPC88)1hl@`fVWvS3fUP+V9n97(DJE@+QOfPQ3)1z51C?PvCot~_v`1qC#7L>Pv_?GK^)xC=0Ga+4j}O!Gm{iQ?EJzK zc46pkFoMLCli1;uJFiLXa+iB>_qfknaQ6`)xVLx*%J14+SlQ24)t*v_h8KnpVC=)t zcflB9=z{)6Uy&2XxUVRux5xt0L8`U?Bj+YrAYTL$c}L2HHx z)OC29Z-%sTigu7sDm13A_#Iv$6oX$`f#hFTT8+90L$*)DI2(*R@S> z`bvH5Oi%4+xbW)fWK|!2qxQfMC!q6tZv}nlzXZF)3OnE7`r7PuHO5NtSOvJyJvWmuFZ%$Z3i;kf4H@`{M6O^6V=7c?o{x{;$ga8q40 zSaD@tR7Vqxt>? zDzK|Vb2=5_s8pd6&=86SqA=6pvqzaW&$h$UvH}&0<$P9*!`nLY>{g@Nhx%cm4J%S% z`=*?(`ik`=yly=V4`|k?y#d%4?*Od%m?T@qMmjatNB}p7&hNh$a&H8^1mH?!*De9L z5*7e=e+3+t7M3Hx3i{u%tQ7_3LQ_p9*#7@m36eq~DNJJnv1}7>LFn^;M+g%j=NelH zq4VAUgA4{cirO|vl7i(TNo+Ss@{(6@WF)qqB-o;w88v`(Y75N`G#{Y3Ah`B$TPS1= zw~NLG8_>WD{Ge4ojRw{~t}@A+HW*YzX0Tv|T-Y{nk3F>BfpKff3eL23raTVdSm6nr mIo88-N!^6yHJ)|Ut3JX8-#1m Date: Thu, 1 Nov 2018 19:00:26 +0000 Subject: [PATCH 3/3] Done --- q03_rf_rfe/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 166 bytes q03_rf_rfe/__pycache__/build.cpython-36.pyc | Bin 0 -> 676 bytes q03_rf_rfe/build.py | 16 ++++++++++++++++ .../tests/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 172 bytes .../__pycache__/test_q03_rf_rfe.cpython-36.pyc | Bin 0 -> 1867 bytes .../__pycache__/__init__.cpython-36.pyc | Bin 0 -> 177 bytes .../__pycache__/build.cpython-36.pyc | Bin 0 -> 709 bytes q04_select_from_model/build.py | 17 +++++++++++++++++ .../tests/__pycache__/__init__.cpython-36.pyc | Bin 0 -> 183 bytes .../test_q04_select_from_model.cpython-36.pyc | Bin 0 -> 2087 bytes 10 files changed, 33 insertions(+) create mode 100644 q03_rf_rfe/__pycache__/__init__.cpython-36.pyc create mode 100644 q03_rf_rfe/__pycache__/build.cpython-36.pyc create mode 100644 q03_rf_rfe/tests/__pycache__/__init__.cpython-36.pyc create mode 100644 q03_rf_rfe/tests/__pycache__/test_q03_rf_rfe.cpython-36.pyc create mode 100644 q04_select_from_model/__pycache__/__init__.cpython-36.pyc create mode 100644 q04_select_from_model/__pycache__/build.cpython-36.pyc create mode 100644 q04_select_from_model/tests/__pycache__/__init__.cpython-36.pyc create mode 100644 q04_select_from_model/tests/__pycache__/test_q04_select_from_model.cpython-36.pyc diff --git a/q03_rf_rfe/__pycache__/__init__.cpython-36.pyc b/q03_rf_rfe/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d882f03dab5b23c30c6491de543d59ead3f3b98 GIT binary patch literal 166 zcmXr!<>fMWx*g2`1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnuVDR*{M=Oi;>3*7 z;>6OT#H0)}Q~mJ#qU_>=#N<@{;5oGb|d literal 0 HcmV?d00001 diff --git a/q03_rf_rfe/__pycache__/build.cpython-36.pyc b/q03_rf_rfe/__pycache__/build.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd77efd782771ef64e6a41fe3dcd3542219c2588 GIT binary patch literal 676 zcmZWmOK;RL5cVU`n zDmYrW4ysUubo2%~swQHBa;T#3M8psSA1LbdiX@Xg<{+!DFO_sM-87wrtTkm0Hmf@A z${T4)>0p`Ln}m9PdHxQcqf1$*M^A5kSTzc?;HH3|#2jLVKNmQ(3Q{XKot2%D>&=_j>4(N# z+g9d~=J+9ffbsyNY-${FvqePd=U2y>DeywN?nSG(wFYVG<$q=GdKQQO{7_q{)*9~TF=oDN=@EO1 ZHXpymt~(7U`wN{Pwdw!> literal 0 HcmV?d00001 diff --git a/q03_rf_rfe/build.py b/q03_rf_rfe/build.py index e8a8d20..3829509 100644 --- a/q03_rf_rfe/build.py +++ b/q03_rf_rfe/build.py @@ -1,3 +1,4 @@ +# %load q03_rf_rfe/build.py # Default imports import pandas as pd @@ -9,3 +10,18 @@ # Your solution code here +def rf_rfe(df): + X = df.drop('SalePrice',axis=1) + y = df['SalePrice'] + + model = RandomForestClassifier() + rfe = RFE(model,n_features_to_select=len(X.columns)/2) + rfe = rfe.fit(X,y) + + return list(X.columns[rfe.support_]) + + + +rf_rfe(data) + + diff --git a/q03_rf_rfe/tests/__pycache__/__init__.cpython-36.pyc b/q03_rf_rfe/tests/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b225744488ae22b070cde64ca85ad69225707eb GIT binary patch literal 172 zcmXr!<>fMWx*g2`1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnuSorj{M=Oi;>3*7 z;>6OT#H0)}Q~mJ#qU_>=#N<@{~A)AEu;S! zAN>{$FyILbIJQ<|4eY??3~X=`XHW}j=rgD#^+6+Oa3=Yg3-t>gG@$`5G{J)wv|#}j z;S*SbWw-^O!fjZARk+h%4m??tO^j~sGWZPE-ZNN}_Jtj^fgiHY-AkOE?RR+LzL45% z3oS1#e1k9Qsu!xBL~pS#O)pOpq566#qw!ZDjOd?ZFUkx-oq3sueq!C;!&BRjj;yrkf8GZmd;r+%akvjidn=fg#?JjO?_qmd<9fdw3__bjl9ENmU9 zK^@x~QG;zAnh3I2cm(c2iD$%dI9-&_#b+BI{Sb{|hF|bM_&auH8T%avzQ!&vKjxn6 z_pDWRLGoaj+1Xc=?vl*--qW|pj*;LaQTafoM*H_+-QSHzGDWZBC=?-64w|ARw3f;| zeUpo%uoIbftisVU=@kyq{3law4EyI8X&%U~7N@xuxe_O*-+$MAm8sWyC?eU7GLYS# z6ed?P#L+l?oTVs=>B1Lqa!m_mw#&!< z48DzP!>@o!!%9%UL}wn<3R2o*QvmJ#OBfMWx*g2`1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnuQ>gT{M=Oi;>3*7 z;>6OT#H0)}Q~mJ#qU_>=#N<@{F4FBWp0E literal 0 HcmV?d00001 diff --git a/q04_select_from_model/__pycache__/build.cpython-36.pyc b/q04_select_from_model/__pycache__/build.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d134c45acbd8e2f494ce7736f06e790fd97ada5 GIT binary patch literal 709 zcmZWmJ#X7E5aov?D~_GC9SV5u=EW+|kEsX(81R;$sD~EJAkZRJ%OORTq=Kf9CwJ`+ z>0e^UPWcO+dQuP|KnUF7_zrjP@$t=cI$m7-xmps0{-Q?*?&uuCok0>vV1+bh822?% zL{mnGnyQG!fKipOk&Jh#hz^(?iC82*5gQA-M)T1f>_BrIPS;Y&!mq5+7e+`0(92J} z7Dlg(mCi2}cdjZcX)k}g65R7_Yg#As##V)Nxo(xOZn&+umy5#P6u93DCxM6{mJn_Q zsY5%EEQp}L$R2l4&(NNDd_a5ZNkIH(@RxvZL#%r*7UJ%aTE$MEP!sh1Mc51_kM@~k)9jUi3&1gD^H9Q_CVE5wul literal 0 HcmV?d00001 diff --git a/q04_select_from_model/build.py b/q04_select_from_model/build.py index 12dd1df..bc98473 100644 --- a/q04_select_from_model/build.py +++ b/q04_select_from_model/build.py @@ -1,3 +1,4 @@ +# %load q04_select_from_model/build.py # Default imports from sklearn.feature_selection import SelectFromModel from sklearn.ensemble import RandomForestClassifier @@ -8,3 +9,19 @@ # Your solution code here +def select_from_model(data): + X = data.drop('SalePrice',axis=1) + y = data['SalePrice'] + + model = RandomForestClassifier() + + sfm = SelectFromModel(model) + sfm.fit_transform(X,y) + + feature_name = list(X.columns[sfm.get_support()]) + + return feature_name + +select_from_model(data) + + diff --git a/q04_select_from_model/tests/__pycache__/__init__.cpython-36.pyc b/q04_select_from_model/tests/__pycache__/__init__.cpython-36.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05dd2836823b831827025509f36ae1c49762b78a GIT binary patch literal 183 zcmXr!<>fMWx*g2`1dl-k3@`#24nSPY0whuxf*CX!{Z=v*frJsnuN3`^{M=Oi;>3*7 z;>6OT#H0)}Q~mJ#qU_>=#N<@{l zA*n^ZNKczn|4ILndhE%6p{LGB&iWC%MJj>AAvGFuzWF%(a%QIW_4=Q`EY%tNi=BDq zP=AC?|BeC}@R<3$>@DBM-in>1=GQm_8=SbFH2enY3~I5PH2o%L(mrfKeZu{=s^Eei2pocOXe+t5g z-a(dY84OhvN*yG5Y@(4+kuY*C)T84j`t#e{nb}lXYQ#YL4IDgHQuxh1Db#u%#m4WD z`lG~!9s~HT?}h$3Ri#mDT_4LN$Ehg`eZHn8b?C=4@v z!hhp$*`a0Zw;cE~o8VHo%$afDT4WQOn1YKqJBr*LlNhf&{T1_LBzTyrJdvr<-W^!= zwxW?tQR_OYhIYz9QM85DQkkc3auFAHEYq%4IGFx^;ZUOgU}^@<{vKhX6WP<^AlD*S zV*lX5{ocz=z1Bk!%3g>Z>Gh>BxspLeo+wL^7TF>0r1$2FuTEyqP^xDT7G28VQiHYO zQQ?u%hyMoC$gbh;G)2N}myaJ@3iaB5IXRaLa#rTz6I9OTqRIrF*eUMz&asVF<8P*r zgX{}D1>Q)+xzrwHUYZ#%5hgtF24w=yTXgNyWGFf=T}!pGQymh7eI;g5D^{)u79T(SD9kQ6I|tpAMhoYln^FfMdoqQL z!tt^`qJ*`RB1Gb#IHgXt5+3OfERjG&8+9E;;mVVve+4R^{W~fZX;;vbrmDpF_}l-3 zN9AUx+bG;1NJS!pplAhjk>oMyogkocQ+-i%g4H~UMG{LSPLo+`M1IvkL5ikg>2kM* zZ@rxD&il1APq18A>CmqaMG8U})({FePa{JyD~hM6?c;p|RpDzO1*lAx$Io~1N`e5d ytiqvdt*9$>k|k6MC8%5Ya|v*{+-18f+=o?o-_fzr6bWvTcj&cRC};7-8S5X4DomaL literal 0 HcmV?d00001