From 539bbd2282df5133e015b1970f672bee2037fd8f Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 14 Nov 2024 15:29:17 +0900 Subject: [PATCH 01/25] =?UTF-8?q?feat:=20=EA=B8=B0=EB=B3=B8=EC=A0=81=20tex?= =?UTF-8?q?tfield=20ui=20=EA=B5=AC=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditBook/EditBookViewController.swift | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift new file mode 100644 index 00000000..1b796dc0 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift @@ -0,0 +1,38 @@ +import UIKit + +final class EditBookViewController: UIViewController { + // MARK: - Property + private let textView: UITextView = { + let textView = UITextView() + textView.font = .ownglyphBerry(size: 15) + textView.textColor = .mhTitle + textView.tintColor = .mhTitle + textView.backgroundColor = .clear + textView.textContainerInset = UIEdgeInsets(top: 20, left: 32, bottom: 20, right: 32) + textView.layer.borderWidth = 3 + textView.layer.borderColor = UIColor.mhTitle.cgColor + + return textView + }() + + // MARK: - LifeCycle + override func viewDidLoad() { + super.viewDidLoad() + + setup() + configureAddSubView() + } + + // MARK: - Setup & Configuration + private func setup() { + view.backgroundColor = .baseBackground + hideKeyboardWhenTappedView() + } + private func configureAddSubView() { + view.addSubview(textView) + textView.setTop(anchor: view.safeAreaLayoutGuide.topAnchor, constant: 20) + textView.setLeading(anchor: view.leadingAnchor, constant: 20) + textView.setTrailing(anchor: view.trailingAnchor, constant: 20) + textView.setBottom(anchor: view.safeAreaLayoutGuide.bottomAnchor, constant: 20) + } +} From 86b39dbce5a13f33f019ceedf0a34dbebbdceef8 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 14 Nov 2024 16:26:22 +0900 Subject: [PATCH 02/25] =?UTF-8?q?feat:=20=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=ED=8C=8C=EC=9D=BC=EB=93=A4=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../audioButtonImage.imageset/Contents.json | 23 ++++++++++++++++++ .../audioButtonImage.png | Bin 0 -> 1208 bytes .../audioButtonImage@2x.png | Bin 0 -> 2716 bytes .../audioButtonImage@3x.png | Bin 0 -> 4265 bytes .../imageButtonImage.imageset/Contents.json | 23 ++++++++++++++++++ .../imageButtonImage.png | Bin 0 -> 1255 bytes .../imageButtonImage@2x.png | Bin 0 -> 2732 bytes .../imageButtonImage@3x.png | Bin 0 -> 4351 bytes .../publishButtonImage.imageset/Contents.json | 23 ++++++++++++++++++ .../publishButtonImage.png | Bin 0 -> 9119 bytes .../publishButtonImage@2x.png | Bin 0 -> 26431 bytes .../publishButtonImage@3x.png | Bin 0 -> 50378 bytes .../textButtonImage.imageset/Contents.json | 23 ++++++++++++++++++ .../textButtonImage.png | Bin 0 -> 929 bytes .../textButtonImage@2x.png | Bin 0 -> 2002 bytes .../textButtonImage@3x.png | Bin 0 -> 3268 bytes .../videoButtonImage.imageset/Contents.json | 23 ++++++++++++++++++ .../videoButtonImage.png | Bin 0 -> 778 bytes .../videoButtonImage@2x.png | Bin 0 -> 1573 bytes .../videoButtonImage@3x.png | Bin 0 -> 2429 bytes 20 files changed, 115 insertions(+) create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/Contents.json create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/audioButtonImage.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/audioButtonImage@2x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/audioButtonImage@3x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/Contents.json create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/imageButtonImage.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/imageButtonImage@2x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/imageButtonImage@3x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/publishButtonImage.imageset/Contents.json create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/publishButtonImage.imageset/publishButtonImage.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/publishButtonImage.imageset/publishButtonImage@2x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/publishButtonImage.imageset/publishButtonImage@3x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/Contents.json create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@2x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@3x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/Contents.json create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@2x.png create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@3x.png diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/Contents.json b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/Contents.json new file mode 100644 index 00000000..d8841c13 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "audioButtonImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "audioButtonImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "audioButtonImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/audioButtonImage.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/audioButtonImage.imageset/audioButtonImage.png new file mode 100644 index 0000000000000000000000000000000000000000..2ca77473c68f2a46fdbdd51cd326d12955db2acf GIT binary patch literal 1208 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 LNkvXXu0mjf+%zHm literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/Contents.json b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/Contents.json new file mode 100644 index 00000000..90dcd833 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "imageButtonImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "imageButtonImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "imageButtonImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/imageButtonImage.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/imageButtonImage.imageset/imageButtonImage.png new file mode 100644 index 0000000000000000000000000000000000000000..d8079ef6ea3a40b1ca91f07b101c62ea0b414ccb GIT binary patch literal 1255 zcmV*_cGTVZ;Bd~IIcLr{=l}oj{4*Q@L{a33 z#=vo$=&1_}3pb39k2g7;&b5BViL!c0xcIvU!LJb!5oTd@bo8jp<=R5Dhs|!cyHMbH zUdQ%=ISD7=Zr&P2FMy@jd?5EKIy(9sNQ*NwGi?8YO-!FD@59<0LyXhubR1mm)YR0J zMd}yW#W85Csi~=-gb`-5Ia_K|(!3TUm<3NX2Dv*4Bm^ieE!Ep>w)0qgJ$!Kx_1*UN z_E9Bs;o2tTT-swS1p4Hdy^5c@KF>4b^PaP3wyHzWk>>gs+QjmAv~kX?z1i5ps5 zTf3CbU6d$hwKUMFQ&CajK=pzI2~`B4_OX$Xk$W8u#{rProt2ff8r>0;Ty}Q$1cKl> zj>__mjt(0M5|~R=69kbsEPQcta`FU9bbw(iQHo&BLj?r|#)gK5?_>c`M9^Zf#7#_0 zoSUAWF2frxQ!)qRR*#H~+(PpR2@Z2kl7MG%T3Xt2nD8`o>>_r~z@}no+fnsHGJ2w- zq6V>J4w@Mu8`+O?!LyPm9>%V3MNqsYDiLr8)6>&;qI!r$*HMv`$U!1Lp}LchkZ`A_ zrsl7osn1eVQ;nFjp9T-+ThVu%D1;~}`Yfo-h_V5EW@csu9{du!w$A$|g76VLb)>ks zcq5$uW&m;?K=-aoZ9K!Ao143WsDxYxIYekBe65@koh3YtsvLy3x3si8&dbZ2neU-V zNlCph`DfauK8t{|5S8#D2s2XYurgf(*ty-^-Q8C^J3F03A)t9~5WFv03+*yBd8a2~ zm38Qu_PhN2{CzOz08xSX`1t$MafYDT1~czcG7m1XioN!G)ZugQC(NWsK7s~=;Y?3YPtd1;9I>&nR}l3s+Qtj-=nXy1Kefl0`yJPR?bB{1rw$Tp;}# z^)K}45JWV2jq^7b{(nR6g9K7?n=B$48yl}db{-&5yz9b@J5fv^m(G%-T8qMd3iu|h zVBFi>-29#_B50t1WD)%FEZQGrIxLN`!|xwqXZIipxyRn}IZ5zV^J<)0;JB+sRSltE zJ3KtRh3X@U8^ni_lat@freg%zkcpial8+`9_4V~bsD{|Swzf9*(&ul3=Dv&NpaeDh zXMqM5&qS9d!OK%@ErD{IlWu7MzWE^F^+D(${o5skvp@@dwVA!Zk#`W8^dHY_FoGJy zUst6A#X$4u@yFhv$BvH^!tRlCo+gIJ3$U(>hmt=*p`V6gm8$tJ0TX#XtobnMbUIVNgCNhaef#$Knwpv)cXf5W)OYaz z15HvVqOSv|a)?u*RvUugnl^gURRo~Ikv5hp?4c4;m?(XH6FJBJU<1-T&KpN}@OCU%b<>TXH z(2M&>gWVAAJc!imEq7Q$FtQpH;CE4|MU&j$xUt8*4EJC%f?f3HXA`5Q|(bBV*)&~RxOhk0@E0WPtZg znHKLUz|YT5(TsVMhk?V5goK2bTUuIzk*~fOKYo1uiWMtr)~;RaSYT-9q@?(x zLUQ8a!-xNR_UzeJBGPEJnQ=FOX5B^4pY${s@?SCwjOYd=CgGm%pWo}gfw ze2@^l*U->#@!-LO<49$A41w9%*)v*OTX)MH2Z^sV5a7 zPoMq~sSJ;b19Nk8%b}*bVFw#6_oIVWjet7(@ZrNxNM$HyA~3o%+<;!~$+)< zzKd-tled5W{=B(!=XR0{;Bl!O16AaI*T8mT0PJP%+(lo0T%+K zHgaPOnF^z;Z@6^n(rXVMJa_}P_Pa>@XRleaCIHIdL;uqZCXOp89kH>o)l;TSIlgDl zo=-zULY~tg0@;mwl(S&S^+@PLP-Y5iYioNK9`PL*`RQB)5ZkB>%l8(T`}FD4?`>i=~uV zlOd|GNEGbjQ>0&?A<@4zYSgG!B|I87SG` zqalJ*sT|)t^3P*jGPm@iN?>w8*xxYjQxNuh*s_~w_%zFnXZ6RJdr;Y5l9kEf#Xn6= zO?&V*nOp?iqn!Gf>?x>9ewjTYFAIj9t3sUgo-M~995dl&J`N5JextOs^i6CZLV7Ee z$P>QXJ9_l!V<7!Y>ud0JVP_L|?%X+*h6oNaqQB(&{{X-gLz&z<} zs&GX`#fKm-!p4c}{r&yp&YwRYkC5UKxd=06%&11${x8=1*<|1zzrSP0j+bbVp-3Q9 zF%kuU6gdwoc;5<0T^PKokv%545GY9WPM9!(ok>5FBZONM5R2}jL4;X_g~qz%fcEzG zFgOfIn+4OXf&!Sg)mEsf$e~n_+kR} zi04+6m6c_nMmMPSIbLN2va+m$e16Cv@a4+N$~B}S9zT98xssu8eIPjqc;+^QC)*%( zS80e45fPDt3G@rV#R=8a)TA6aa%3#2g!1z8Sd!prK&!KGliiahP1>H9msdhVh@_;X zHhAPrelJc$e1$W44b|>cauOVIAcb6oT>PhUW6Y_XutL?YVnRSbfDvA{fZPDEy+`?h zO5Hl@g&(Y6zy2L^0;^ZAjzbob3sa$JQ|(@z1-o~D-n@BfxM7#9^mG(kw{E>ZcI;TA z)G-t{{2@76u+JgnAkdeYw|x2X-=X@Q3tDWhC$v|EyV1-^Kp4?TZiLX#&~$joCaGf} zF%${FXDGTx96fr}N9jDA21Z3i{Q%ikX=`iim-ucJ*$Ex&g?C0q#!ZOo>yiVYBFIC3 zedf%W-Q8G4z6$ zZ`-U$4V8Ug>Npocu!VpmR_92(l3K89fhC@dk-Z+d zDY!I-@>&YYUDpPAp{&!`@enrc96s6EKwp+^H05TkBv`|pMD!4Z+FYnKf%xwfUz33l}c@0^O)UIE~kFz$HHy7)D^@ mrexB35FOma7MqooRrg;V2iRtu=DmLa0000eIWajl`u5R8})icxGuaD{P{m1+N_g*t5 zARwS!7?dk!v)KTc>AUT6ZfddN5KYw_3&?lsj+vXIH6E;rdK^o-!vSj23Q60dH^b zd_OpoMgxfW{zIg4;%;aSDWWDOE}@ z+JTK;Cr+H052^jDAXmGPB)ocle*QaS#*Ar3E8g@0(QcQPmNuPL-R=sw84}4M_wL=x zI(_=|E{g<%+y?maVgj0n!d5q;4S=s#&KHYFX#7sAx!V zDNkYHV7m`wLgnYL#+-5yOee-t8Wa??1r6y;lrNI^!G7P5g4_>-(Ur|sZt_78gt-uO zkIY7J#h!bz68tH1>T=h4D0-;ejpr*z6b*{wy=Wc#4CF5r6%}>PD>nl^2k&$@N% zyy>?q99A`PbFNslz{5a1*f?eaMg@$C@;0k_zH) zGdDr51cG2Y5EmC$_tvdj>q<&WqDX3Ko0PG#AS)}29XfOE`90Vy?ecFm6KAe z;n~^Q$#dtg_2^@up? zdBF*9Nb&3Y_wNs2u7$9{YVp%gKY2kS{Ur6P=Fqy^w{Ne_+yFta3Uukx#q8_rYf{?* z0+qriKR@5d90aAuZVTK53p;H=X^k2+uBbUcl5|s}MvXF=3nB9*Bv=LLp@oKq{;ozn zle9nf*kebrxRhWSf?$k&W(tO_&^@7>uLysRU$e%`f_-9_!9gq zwPlMbngo^pK~hrEkIYRF1ls|l(Kr`Uyxm$EB0nG?VAIs8Q$M9a1I$ej1lxhdix=Mw z2?V!2rAx*= zd-jC;`};S$d-rbByu7@6iHV6p*zFH5(wD|eOLH?CWIKs8U*YiK!*dZjJk_8ak&CEMc(o;Pn^_}Q~(+veot^c*r|NLM7!8xoCE-tSmZXmzJJt_bn&$ob_4@>>_&0?8-hhn^QD$pg6-mQ&BCcM& znmlvn%uuESxYY(PSg^ov_wL zcH{$IxpJiup72Xsw{D#T``3mkG>J4%6muuY2S5U098~ppSp6^aFz{45S=+i)f~QQG z5()Gq_1N#+-rjO(`d@(g-REy^EDvjpMy9Rx4VBVBhJzw@z;g8wD*415G=2OqSXAIB0|*{~BO zaIeu5CQSGcKhH9a!s+S4@#Duo*{4sRneb5i(e-32_g_A9=FC5F{V*HFL(ZQ+ABRB5hgdu^TVxAPlVFk%GwdlZGL`!>D8-O&%lGXv>B#Ooyv6{%HiTZHVqp# ztUB7h^j-t2&j1zk4YZF};O9A}A=ov1l-IbA8#k^lnmlt%Cer|VAxK3b#LCDmUjb;M zR39IoBeiSSo-uOd$X(Aq`)qDiZ6Y0yim?&IjX*TZYMU4L5e{2C1V2Aw9s)K0-=TpH zlG;(DMs-88XFI&mK{B~2&mqT(3w(Wj4?jB&*59mhV4pvvI2zyIctVrO zWpi}I#>R&9?c4VqI3mMPtHRWH#`5q>-0W32OewW$)%rX+Ir*}y`w&M)My}hpZ{Ijn z&SuuiVgK{+Et=xzDW(C~GZC6)wsCpot+(E)jhg>89H~jv+>j-f*XE*Z4v1YI5fRaO z0~&olyAfb4Rz;BeGBapJ@(NbU>l z;TK$1c#OiCDM52*FTCQIO`A3)rlh2#yIbu+d#uGhRN97?D=y;Y{U{p8Gz8UCI3SH@ zymaZ(Jp9>iJmqDHmL$B;-`{_Jr%s)EBOblOQ$m3FFTcZM|J7O<$-9370g~sK24Ihh zwqVAL8I$kaxf5$p(f*Obg{PpByTNOH6H<`FJP0rkd2sMjY?Y(fIh?HocXyCbGl9E> zU^EkW${G+k>YbjRKAGoDX|hemVgj+t!o$ORrlzL;%sdpGJ9qvbrX#zu{c?SVwD&?= zpX-GfZU(;uOMlJ>>iJFT-eRk~G*1-u);tf%7y)8OLM2~h9t@Cn6Xs)6WfQE(6&l}x zh|^os-2Gz$k^Co)r=jvJ_D$6Vn*FcI|3HPC40{Mw8ma3~k~eyLRmg zVlD=*NuB!tVym27NgZiN%&=kK^z7O5BY34nOrz-1rOPU0uhOiQAsd~Sm)8>Qc$Z7@ znl)=)$jZvH*;I4rEIU-ILGJO69XpPD_0?B3C%H;cd^#*FY?-yFn$$Y*PD@Lhv}n;H zm)K&myJ%iMdHM3?PbfCddz?cEMv&k}yLRmoCQqJxgXsVrI&?^Z6x$r(05#ZT_wL>E zM~@!uR8>vnA}P`b(Zl_SiPu+?f~_*aco28%*RMb2?YG}P!E^#haVB!btLe9`j2Pna z19Nh6{!X*LGbaG&4UCSC9)bM&GPGi9%RT@vs!FiAZr!>|7A{=4g6RycTDAHNnkmE9 zq@#G~Ubk-DdKcq@$vDum<~Z+Xt!?NQc#K0c*^5>gl1%9EQPIH1Ye{MIbnQy0E3A?(@5@-qpM5~gJ^mohbsqO$I z@KZeamLR!5Z%0B!HjT_+0KNm1$I5<;qX;bz)sZa4aFO2-&fCr&A<)!?km51WT!)ne zSwltp%a4t+hg{xnQL^L9MX-EQsugHD{4#g$T$@8g^oAZidfY&EEDjO7bXr&O&IX4- z9`2*IVyMXn({~}74xf5TR~uIYX6bjd9Qwh5ImT4HAkq;q-+zNkX|-zA4kE|S9aK^? zr9ZWM7bhntpJtCR5Dz}trcIld@Ss;YD$lL#x2F77;2tW~57beydGqGIz{9V+=jM7r zw4@e_Jf-8ey8+MoDm2;1prD|5JUfb6KM3^j+DIi7h*aMSh;fL z##yswWvej{Twb)S^Ks%wo?IE!Q4e3MQc_Y}jSm)ZKR82`jvLt^;JFY4>l}h$ zokI|;L8y*o3FsH92o?!{?ZHB@nvU-R?gvlqz%0dk4KSi2-4QH3*)N zv0YO*`1<-X0d1g+isnr=(5N^jped*t*-%`p$rq344r=;jad(@glZJ(bHJUSL&V$L# zN=izq?0tKCdkd{l4iF@RpPyfuZ3P7dOx||<_;Kzjjn%x`&iC52YoBLiWE4w%dWjgd z1ap(=;I6vvs6-V$8*B4vGtT>jsSIG8@R3f=dt!ezGrS16AKabp1hj=R6M~CKmi|zt z9qi-dQzCjz>H~@y2>u-5kCiM}k60IQ9we8_GGxZWYTv$n4`JgKCZKspQ*D^hq}oO6 z7J^@S;gZf@=$CX=ZpvPLv}s?gc)h1{~? tb&g75X6Yr_%bt1WnTbhBNtQR;{2u|WSH`V1wC0*tggO$l!n(9utyGU;=>&UmzJKWL{q8W%vS_B=a7D zmu1Mt12U5^kc0$6Ab~Go37FLcvlxsqHnw(oleM&Zy|-%4sj7SXwj|q<-QALH9cZ`I zeRXf$s#E9u=Rc?FGMJVLiIkGT)~#{;u_EI*wXWk-0Ou`C%J~dLJ!7n13JBwYwq(+h zj7dCJge*JjxFU^zzC&=n-IeY}+p@M>mNgKK#Rj0JW&rMQjLV=hQB#5n60 zQnuk|Jua}fY&-Hov@-TODo}sHi6>d6mBonMyt&qiM2>c{?qbQru?*xfOp2upSRHl} zXJk?EfBXk%`b+$eIu9)eaHAON4IuyS4KoXNbl!M)#|Sbg`1hn1j9K)7beR}L3-pBJ zxW5nC_A{}TmiJ+j<&absawUnaTW8tQS?XkS%a~+mhNN7=8Pwt6Md%nk^kr)ij2sGq z|8e>Z4V=Sar{vbpGMxWs?cBL>=r0+EaPajIDsFxF3a(KHi2vavjj zjBU;`dlQCK7ge>kz5^we15#N~K|+c4_9IXUK4J@T1!513T%^SgMZAua!r@jQ3xz)! zojdoBP(nFidRLKQLqm0`UAsPsig7W1bS8S12>Ed)wYi>h)}dU2x9@VRUs(L=`26_~ zLWyL`_pW^UX*;)c>Cw4V>T^uE7u!$sLm{O!x4_`gWf+;k!GzLsHrvT9_;hq$>+hk+ zGUfVL_Vv{yhK6snrTe#BC|cbHUnM+fO8f)U(G8P+&`=N&AA+J8VTECKxr~3YqPh9! z#mqNN8D&Yl|NiWdZQTHlb2;PIJfzzFwvFaDA@Io*3U{Z95FZ09?S`y>i(8@F*qk{@ zD1uD7vJCb1HrVO(KOk8B0;brirw6|nqWjP#)|Xj7&w{w2wxwkk?59kcvUGHG#Oj2& zmb>yR81v3XhV_sKs>KqG(C_$%#gZ_y(75%N=5U+-@!gg*+zzVlD_Uu^P-M@ zQ%H!b5q5FKi?DKMcn=j}etN^pWFQBe%USR>RG8Zk_~u}OQWj;An>R<(%>ESGk8fE* zG-!a%cLQ9fr8qJ|SyTd5{hM<+eh3<0XLGk=RJ$T1D7Y0W z-@y)PW~BV$O-#kdpheGd>m39DmsK@4zct=-lx(zAfl*uAB_V*@G16((4b=sOM5g7b zv}q}ac%_`&{DN?Xl;+)xgez+nEO====P1c&QKE0Cz5U-KQhbsNS z7NZ=3QO|Q#NJZF@qNN<;{Z=%3Mx?1}-JVWSRAtF^cc1O#GWT);^DUJLMo0^u6$w-? zPs^l=1m=TY62dVVkUep3eUP=b?iTbGWr7nv8QQYxQa79alP%7^BP3w7dQP&l z{X4rmbib5^7Gfo&{3>_E_d>$8K}?ft2bOp>zD%WB2s+rVxGvSzb?#V4@3UVZMM-yb z+zhUBlU=~TPP>`|M@EdBhMACM*6Ntem$CWtQ^BM6$+8eeNw;@?%W~a+2`Y-5R+Ix$ z^2=#8|H7F#IVw`y6SXlPPE@v8 zp*2ClT?(e97(z)$${+FVncCXLwY9aX4rbhzCEeAv7-_$s;LyaB>6#)1uTuIRcUp=h zWko#gJ;WqE-cWzp=4&2;JDA@=Sv~KU4>cNX+C+s ztsVLY2I2T)js}}CC=FX|NGz#WFJ`hCNM|yTb8_J19B>>L9M{3mvye)qpthz47R;YN z!B(&l*PAS%aYEc8Fx6;Tm*IrG4=uQ}S7pHi!>KLre>ntfasFHryAdi#uv8~Y7#L1M zZ|`X!smJ3xrz!>vw?%H+lKxa=koPW+a#?6*m@-=p( zAVSJz_;&xE-B315q}w7{w2g)YSCn;7xRN(SW%^gHP9W3$CYJuOBUWpaJ$t z3ZgDNu`uO{gr6j~kKSFhC=R~oK))P3#=&D9p$m^7;F7#;KuFm)B0%4c_@`%^x6KOk zm!#4?q;aA+oWa&@W!Z*Bw;&iJNYRR&TR)~{p)_@-z3nSVyoH2XD#|AeY6~tL_?ZBp zFoVmOiE4ybVPSSd@Y+b>8!8oT%I9Kt6Oh#7RoE6`27w}yyy;K>mXk?+|B7~(TG_M0!FNkxBLRieYF}g1y$Sd4TUod2!BnbY zOl3h(`)OPIDJ@0Z?~bAd^6A@l^}#?gp@!3<-FKMTbjSE=Wj^q-L&+r0OreyFqK%Ov z2v|zJ(TyWr6>%w_?>C$IIV)lAWxQ*XyzriY`5&M8GyLoq_aVN}1FPF<2toRlb7eWC zkiOMW_Jnq`#I{E)OPyz=yJb9=?f5KL z(Vpq9qNy)+CfzuPJO2M&aL3(%ctit2>R`^9-r6(JNC$b0tO2g1Xr8UepHeDIrLv{z zEa+T^*#=BaPp-;3WgvnY_q`Z5K(F;1HemEKtaLaYjzC2`jxI6|u}B2M<`u=yiC?L% ztc0qnDyXckfNK1`rlJbwHq4@(lt*2hxEhaxqUdQ<6UfafEG8iujhN<7#6A{BaD1vp zDNEMvxqwS?k{Se-H{-?77MgX^hYnP8DOAWw=9ZKH7kZajX)J?UO($GqdZnJxP)PBs ziET{xS`5eQFl3F#V>A<>A{^79EOv5)aF05}1n$LHIjUFv+*Mb>m6v}CB6vQVo8%kS zfKa<3NFCP*+7`QAA=2)F*=2k5U6 z0|?>gxksE?VT#9|dJ6vd#1mlIXic!=BX$_W*$~d^M)=?V^PkWn*b}-PPXS0-V(3O< zR@4|Q?uR>M^}2d`VEua=5WDoFlG@PH(h5f|J_0JEQDxU`t(S|Qb#ywk&*~D3G>JtS|@z5a0n(M!KliQ z+z=NLPI6oZufO>=Joe-t;q~?F6yRlE8*yM;TUy}b7p{cUPdfNU!U^m80qYuLauKl~egVRqs2|GTg6exk$=t~ShUCj)rs*IDV z+V5FOG*uF#mLL4|r||qsFM&gG7PfI_bv4A0;!h-pQ9*|>U$q6kea9Ve`Nuv6e{>gAW=nU`MB;GW=?!Sl4Ropz{D$Cv*cq^so`<`jUwGZD+)29o-1R8WQ+Pd5)DCBMGPlFMBPI@4q!8D($SG| zVf!mIe*bab{qW3-FDf?mtP@XG%xdfWX2s?barnxbSK+}&9)+G={qT$5{uYiqYAGyP zxFE0+GjM+t<(Ye^t*TMHl0sIh%@R_GX?6|`sAC93E40TLl(Q;Bxn9nbzOtmdy3Vkq zm{YpQU0*hiQAB1iiRN}-jBh;}B_DofF}o|wp0*L=v&W1vX(rkh1bG#O5k@eI`+8^6 zwCRm^*1^*+K2JdweB!S!h08v=0>ZYfK{#HzIue2lmM@3J3lD>vZ@V3K43WY-1Yi5o zKY>=Y(dU&a!V1Gb-|&ynI(IHG@bX&>-h6jG{OfnWqpVFNrXD~tDfK&eyM6h<-<9Xv zL5ErrVNi{;od$DYa7eirau*Kr2;}oAj2uRcF^GV!9|b{1FL?WZeDp9!VMImE} zjbS%M9_j^Nh)oX4g8i)z_OAIZ0@*YwaO127xb)%+5lqwGCyw3>k$Yf7!ePzL@KLll zWH;VHsy^qsqa2_#7LhcKa!K_wXP{*XW2PD-xp)XF@fEVrqB2dpS79(vMwH?UX7L>! z4)-a`B5%H#=cGJO+xrqE;WY2AZgU}aVml@USN&xTyz<%W{SaA&$x>*uOq_@zxLh;K zT95&)uBz6N$SCWlLvq3nCas?a_poinsFP=I=zUo z3}d)kfxzzUQ%-}p0(ga?qn_~k_mE*Y87oDXYNgG(u5xj+(Xx<>Qx9L@{(SI7;Ab1# zw`k%*I8Kf@w0bbUQUvQ;7sBb#G6vDlJvEPi47HP;0o7uHLQi(C;5rq3-FYob2xc z9tg;lhI!=`q%c;%s(TsjL{e`wNx;|Q7L-N&Cel+#=pNZiex)22{9Gn;CEU(jcapLQ z*nsMI6plhdZqy+Fex^0w@v`9i;Jv7}E1FynRFnWP-JEow_?sCrb;_fcEPfpZe1p!LJK?kG<~j>#dS|)yQRfSAtHb(MqHK!q9V{8oOh3f zFjXbEkZ7Z-G)g$ns;^gEisEL9-lzJ6XPa4^m?0l59lJR``jwH>z;eybJt#rxb2j()Z`Lq zcM*_r6=2xEi7aTjjCSf~a{KnGY;t%PcO6S3!%`^A_~e(rdjy_+@g=R%3dh*0o`rxb zndvaTDl6hDqf23AWn5=<7azU|8meo`V-!IvL=HRhMPyuGfBS9NzGH`~=&!&w&6zzL zjz0QmSaQT-sIRTj1hnuf-;6sBw9_LT^)cos9mc6iPom;nXvrK(_k6CsN^DNYI4=SO1>8qeqop5Q@BO~UNY5NsHed%SI6i)lF809^%ypo zT{lyu1j;44u%AJWu|cHy{e5%oRF1_fEGS<~#t_Yp0({|`Yv983&xfw=ZWtUIRAik8 z8p&K!WP(b)mpclKj~QNR{du#KDB;P|5!L&?SDahS>V=*Q~{%$j@Lh&c@M z$_}dh5?OL=|LWIXgEec`Ku>p%QkEKwuI4q(fkt#&r=gpvj>UD+Hp`!fnb{-DG)h`g zQK@<8uF6HNJG{?Xs-xpWmgD@HdE22+q8n1?k7gog1=VI=g^0IOj$;U!%et_B^Je&$ zZ+$~m(p`V$Rj^|DGAOl}qDR>K)~x0@gHhUgd*R3T+zo5jzXu-2;#K`Kq4CU&>MFSU z@+;u1lTX!;gf$g_0mcu?CXy$dc=WhfW8?eYN4DU+#tK$;GVkZf5grH+CHRlpR=+dv zU$i(OhE=-zu>5BYyB&J*l^CXM^pILR z)7{gf7Q&~g(w=H~QHkbaYJX~p=8K+u<{72vhqtuAveQn(=*E;OFs%ZXN)t#3;p^n% zkAwM5P0-%E4PINj4nFbMS#(>5(FoGo#cibzq6r}(k3WE&ddpZ(K(j?Uw{xl}3uRl^ zzPlbCeDo1TnP)ROOg1{IM3MzT9zD<-XJZ(TUodYTd}R4@IQ0X^!PFAsC?veUag%!P z&snG_;gIFAqW&?`kZ?3>t1wZz1UaLwo~>#f5-stKhvPc;6u@r9ll->$)Go{ep)q5h zkIioxb1z)mipPg!Dk+ijH%mXtUkvO?2L1KzKl~wVL#q+N%;B7dMyRQ-Rzw$tm@&+= zQ0AG+3#%(*>if#7N|j{O8PR-rIhnfSt6MT3SLb z%9X;$XG%(t)F}YuTu3_f9eWY zao&ejIi%&sk6x4nnqLp}pM+pWY4U|)7%ID*-P8b`+qOenM+cmAba-oh3BU?t?7aOHnGDeXH~^e>CsH^JF%37iMNY1D^hB{E*p~CoS+3SMw;{{? z(4&7)OIWGQlc`>hEFlq!KYnBo;%zm2J+3;bZbmJH?T}in$1PjsWjG~f49iPE zm(~K?_+8Vidi4$l5So14B#MAz4nG1ueEOO2#H#1u-rxKNUV7~nxOC-8w49BKP#jJr z;jQ)S;gLrlg`JqsavPx7RsdfR*M{{{RO6~zz#EnR{G-hL~ft&7)IugTQOpZ>&UuyVx;;BFAxz~qUs za{Uk4jJi>U2-v;f7aPZf9ZwxH2VoC@9#qbJ3R7qtd8iAUMN~Q3Mo)fMrTo*+ihx{W45hK~5doxv4|KRO!J6=(k zg+T6bTia7O6OWkGnP_r8ph!5a2;mTiNJuZP(vtT-Ea1zP@(A;UQC2#Fe4^qBp$EAnZH{^QQHA}rz(fR51s1jn`&!nCj3Bff8t>z@+X;J0X|70 zjgn|Z5P{G0yEqy!!*r%J_^!$tIP*we-yKbsco>Tae%-bDJ`8WGaEMkE3xEX~xZ(>c zibODbZ&tFe*3{JW!9IxJI(qhUhVdRtIJM=e-5X0JC8U zXMJ!<|BR`?!A6eejK*;#D9qL~|N1nR4mHE(Uk}e~{@1Z`KI4_VWm&KwEjYVt%%!1a zo1x4U1erQjmbW4WuW_DgveB)V`zs&_*;p?bc)`Tl?QKmZ^QG!OmQ%{gQjTSPIWoWH zmi}I0`22 zre%tX*|-^W6zDMK<}7|!qO$VCReO0(^F(Eovc%@Lu0~h%kjIoxyP&BgdN91$(5pu= zrI2JzI$UmD6Hg?rZ;g@m7zr^Ox-zSo7qOwN~ zNc8p|!_(=fL(;9A1}{@UBv}_GQBj_imUUyr+_`I@jIzf(TV-S8T4vi{Vv-e@MayNpBjy$GtYCKZ&z?b0Dg*;I?GF?NO zLnT?~ghJojzG1`t3zjcW!z9VLd<*4`Qs^Ho!B*O4`>Lr@D{`R8$fc+wH~V8|He%`} z4VySZtcvEta6CchHi&jAZEVa^di=W;8Wz zfhi~x_9VmGw=}VY`@@igi}Sk|=hNcTvS;x&SVYE^9){N~8UKR}+xJBq=e>g6nS?1U z`!vF`udgPPOy0tC&KE#BoSOJV-{!)twoHMNV1=qN73yG%Dc%I| z>TL2muQIbeNWLtERLJF0V7S}qa{e%W{Hv-&Vl`X3^nj!y_S<(PJ3CL4j`Q=d5QkY( zs3ismvjp=p`AwX4iIZQHjo~hEwi>^Fl1Ib83a?tVo?UjC3kSFq1!&NYm&sJ>222fn z8KkJvq2WP_V`N}2D)Y!Y238V3?Q}pq@7mTQU|FlG=gipw2bmOYG-*Fwr?>ZPnN5F9 z3b~A%b9;d9;1RkZnRB?k4MFM#ms!ton?D?HYFdZbBLxSs6nz-wd+$ZEvDix2asD|Z zfdBYiLxfOeykyocSBed2L7s4hSPk{{ zFH}`k^&KeSv=~ydIZsbUOSHGIL{I+ZkdP-ZS^*wlp+?tcc<;q+(pa1Ki9q#x{;AIf zyfR%SfuDk6;}xOM8|)x-EfbNFI|x)7JF~gt9LdC$c(vsmL?f4Gcld&> zJ3Z4<>?Ub-VbZg1Og(VZ+pt*ZJ-BG?(GJF}wSrr#GuiCw5U+ZnV$0h**z)C5X3xFJ zma?LW#J0_iJZ&wPu6q>+egZ1ZOd36I9%~1sSV<`LqI$i*udySNR!+;EnC5@o;qa)% zVNFU}Z8PW2?H%tT@k3E21$vUT>D#oaDHINWz?SU8==M)x!d;B6s+L1>)}JWc!PFC~ z(Tm6qj8HZT$zJ1g{-AN|juR7w0{%PeHzf74pg%l{)+wp;HRxZIrWef5a&FHFT zq4LnHhA z9M^RwdhV_2I5PkSaRz}11Ou3p#3YJQiL%0zY$a>gO15lk*Os2`wdH+lTf5$U-f!Qx z-t|5|+v}AruXbsfk}OKJvcx2kVi0oxNo34m0L)-8c{)|y`_4J{-m2=Jp1}Yd0Npe7 zla21FuCDH?y7%03{*wfxNYP@@yLRO!3Wd&$?=P3xY)97f3bj&6mM15@P-|agGF}jd zQV1bwcY^16AxIhKa=BW;^Az}gtx~N{Z4Rzj9RsR<#xk_H$Fwb~VE-Ivd0j%R(p8~{wI zT5Sw}*KzQ?G76^&SiXEL6+*8MsbER5V8D4zMb~oHh4nrP#QLn#v!G5o>pN2xABygK|tCC zDg=_Bh0!*w@X#zQc(x1s(DmQR`#IeN4> z6$IO*FD?#(>Sj;rYjNhCE4A2)yJT>Z`M4uX4v#boWwZ@9dCkNZtda0kwwk^_0wb4`qe_z0CUc&*S%nkfIK$U`Y{y1<3yWxtb6=@Ug*{@?xCI+k!B-1qaGz zoIq%@fTzMx`1ryI0;?G)^X%D)N)waB3h4mKY6&1jq*c^?FKuIUM}ly>3&ZP`5N`^D%EhR# ztoHhXbdGw23fH(F!sns>O?Ls68u0R3OAtORm+y9Mr!t@7j zmBdltbV;%p&U2H(z^NV)8x!#~_9A+o@g`aCS4dab7f&O5^gnVNHvH{U@g${!rH#Q_ z2|%HI@ZdTn!3=jAr2?=uuX_ybC>McjY&1cmxGZ85S|p5z~gC2=?mm@cF^yzDeAJk(J8zA;8;Z5L}OL+3n~O&52sb$_SY(bTdPW zR%MTEy}*E31xq9J?6W0>Q9;~woP(1!1h4a@8Gjm)yC_&7lp@6Y^t8z2eygju_tC`| z2a^hx76xi2#o)-1HwIeYp{muJl~xyJgzV<^kGPRgLq-~#UNP}Xfubh3i^u;A7wS9( zON!Z%6f6xwn8ZxXP&HgfqFscE07kPFO(TWE#Cr{e%D*a}bI$h`n`=51EG-26lFlAq zaeSR$o46#e#dRRX+ruEZ0wqS)^8^QgQf?gwcnRZ`P^_Cbxs5Y6os7UphsCU@6D$yE zElxj_mflr~U8H?e@_mvJ;5`&Jkg%#?NN00@0U7VlyLx&CVUZvmL1!7LU1X;A?OW;P z^A}WA@F57*<-USTG5}qum9T-Mg|-QKmUxX`n}Nz<@mC8EnD`%B0xHV&I0rwp*QC<$2!VEa1{i> zEojr+szY@x3Jdb$So=J^HSLTUvU;vP$vpDBAW-_d#kHNk3dPljIk>2ek&fOo1k_CY z2h#PzQ0kE ztqq=Hv4hkVd%uy0ucDo+J?{m`*avDGpup@i-F3aa~JJ5*!s0eGf zwnsg z!X*_f3kV8agQ1}{qvh#4(ad?9r}ec$>5U#}&qcm6WkMx=oxdl0stuE_E zMzu!j$3+yrX1zO&IVdTX7KC$2TX%LSO~h_Z>X*Ho_sPP#4NtU_=8}%#Q-pr$rR+#P z-;>Yh-y~|mCvhBHj)S9{s;CKT*9anF6M&B~rsxGX(Hf(2|rD|SPp zNhGKagMKJi?D%Y^jX0Nd{GKGp+?f~{*sg=%?YJt@@aU6iW-bAzK>%3W(Ux5a*(_67X22(DCaiT%KzOvnUlT^8lGUqobqC^QF?I zwOZ{?Ps6)WE!l#LNs&TdBMn2_Qfm#hS|c+@3$~@}1&fY$mC4ke^v*0zL>U35;J32D zkRe(|q4XY;UiRPQH}pKv>cS-*z9)b_a-^fI)K#@W{WiLDZuCK~#9J)L%<&*1+Q0=m znQ;4t=uG?U1Peeze5TNmDlEWNB!d)7942KWv^1Q6s?6wG81_jiKHj-`^G{H?v~1z1 zRIoGw)j25*3~a~>eM_xc`v@)@S9sD}r#ZwvS&9IxYgpJkk@=wUlGiUh=9rKoMFKYb z-zG95=W+nDx&OD2&Hit(X3b$}L8L=C0j|I{F|l%LV&dIUtNydBhU;)^K}32)iWFxL z!sdk4$ZI6Tgz)^YibCNJimO*2f)+z6Sin|d8yV@UR4O+HIfl>ehfRgsSf9&k+{MWEzMSm;Rby@O)g@j7w$dPxbAov6dl3TLE zTOpK^K}f0X*5pYm)~9FzDBFNda1b5Ubm1ZmRqcBZ6mz-Hh_!2XLyKU^&Jx|%SC|&! zHlg&VP>Q@06_bo4zQnqUiII=WBnhxx@>0Q);_QK%s_|Nm)JIQ!tyDU^xg zb`1ecM_W!9sZj=+kbAvM_VZJ@+z(f-Tsa135ld#~5HVXibbNyjOLuxI{45e-=SwQ& z$im;0byPM&DYUK`nN~$f(Lzvlf<>TUF`S=imIgq+XD#J%@ch3}zW--uvm)K1pEvC3 z85-)Cs+F!oum9)prrey-xGuVaIr-CI#>p(@_7k~$=3(C|s&PBV% zX~L_70>0@1{8?e|-p9qQx1RBOx{G?=kWiUC+IO)Rs82wkeg!3bhpRv8vWabCG3Z1^ zb%#`_q-bSCU7{MeKQ@n0i>WEqFa6B#6gF-8CwzYr&L9@$++i(cYG~c~SowV-P`~f% za8*Wg&mG_zvBI;$g!cxBT4ox!e!Qt`Zu#7S){6 z6?s3Q*d@nNi>Y8qv4{}`c0#hg3z$v-lnS79MR@Wbklg*v?yXx#;WWU9HU)7hlY91D zG&Mc_316wtp#7MQ;!eVd;!1oXO(aaQG@ujDQp5pu)DeQBvyj})X&rn-2ya|ZP5s|c zEG~E-qqbbSQK;m{`}*GNDfJ&R8n$?v;$=lcrIWgfCw!(#=qR`-MT*4=r>C1fnUFAx z%nNo$6S3=Ml#>3p3dQ_yh*hilU;)u~Gi5m>6Ef7F^Fy`XV~G*6B!&hT9RHO# z!#Kbw6)Y(hFLc6Rl&ldXbp4{Mg$L*@nnbncEBQjWCMg}(5#;SjS z?z9i14Oj4OV&H5!J@rDxAf;|oEPmKXay!!Ng^PLLJUsRm1?Y|jKl^vOko%*;0tuJ4 zm}4kBvekischtfVwG@4W1f3Dim2A3vL32(8ps}QRDp*o1dL-tB&DD?oja$*!s&w=Q zk}gO~)PRB9oj!F9MYFeI+kXV6nhWkP5_5IzLR=xQndvbenK--zz+ z*X1p0*?Gp<$o>86L#6%;p7zg4rSn{Ug4&bXyoitpD87Kg5>@8%&1}3fQzcB1V(~&J ze9qG9C$``_@h)8AlHPP3CQLT~K+dJ6RW;P&Z#uVa`5c-=WjIB&u3#A%*;1L9_+1eO zA4jo~6RE2>MT!N5Gl)3l#S*(Ab)7&TNj97RfWLnIk59GSWy=W`>M%IDY}pMWtp25^ z#d)5wa#Ey7vA{5966-5guo&%Mp_Wq-VxRCcpYPhR;UC}>&{Ea`nm?K8uC6d2C-lajWRG=s%Ut~OaS!H_qk0%EQd*CF|5`sk!3=}Kb?59K!{t5b#*UK`tDZ{xvVuzmox2Z8&UO zAd-Jw>dQ%y;&i~dqT@w8js;UzGH`l;l!ug`d3SOB`e)`FJa<+F%jkgv-AJtbvDENO zIe?<%7N#cCAr3!D1xtz)rvo!u12?e}xDK=sD)8h#s!Z-P^DWSQ)@H4~|9(Fs<-hZV z_-Iy8acgvRQNWHc%(U%<4JlHjI6a6%=j=ncqEPk$CQ?^YP->{}^lG&`&?NHackHu( ziCw$aWHOoG(^`F2lD8`ifqR+OSCW9V)Io|ArxS5#e+*Igw)>0Hd;=k0hJ5y8#h#uM zmbX0P8VhwGRN4Hmqs8-SpR*J+c%J0qztKKmVggmFv7|_G2B5j52+cs%>|MbV6}6Xe zJ1PO6fw8d_CpzL86)gJ5k+r2z|NER$zbn!FF&n832lb-$?9Vafnxtuc4JlHjI9+fR zTZq7wJo9A3+osnRpthn&xMXEDct4C!z2QVhK4XG~;#4Zt>OU7secA(ENJI2fq-ZB- zyWp$NN)Y_A9vfRZ*WPDDu#iwGWip=$g76PKPZYIIg-VJP?F432aNc^H)TnNq92vi5 zuKiEDU_l|`Px=0*gKG8PWTfcQK>%l2F0(0Ez|iYdYe~_Xi0euV_fUFMtycTxX6Dd>3l=>xvcj8~ z_!nUv_#2QS3u-v%A7idqdgV)8T-EIO*hAG^h9Q$VQ#l87gn z=s%<_w?SmGeBI^;6*(v2K!=gi1BF_eC(ZdAZ7ohu5Uy#Oc7?knC?ujv)f)WWU4IV) zhmXL`H{Ap`-FQ9T9F)$&6bU!Qj)h5QPu#=S(r@&P>*<7n#O(oImmmxvM3b+E&!|R2 z6(6*X-V1B^9E7~Rrf|P%$oox9jKkR27;X<>*|KG@eamJz@7!}C|&2F2}|Zyma&@XR;@_7GbLUOHbTTk+K&z?sj`G zh+r9d<&`e&`=796178Hg13nrD=vL?#tHFP&V&NMAvs@Yy$r3Z~g{e*}WTwN6iRQD|8}38C`!P zgp(P!d~axRP&zv1@W=>^;A73I)hu|Z;@N^m77`LlS;65J0P8Dc51FmS zV@o@mO!v@eY#y4KblgHdkB@@=4x1UDFuTtbW;H_>ts0Zm^y6+txSVA0UfhO{zr}kH z&>pW_uvCv9zfh^*w|ouVt&~_u`U{yAPd)oAj80DA$xE0jS7GqjFlo*>S%qCFUnj?c z2RU$P077Z9M5mDlc=45;aKrW2Lbj_jGR^FdYC7oX`-x|u2}HUHt?Xqaa@~8-M)iLi zO_FRT!{%YRQe{nrFFM@-X|mX3VgfgzAdZ^7Xd_rW-(&mU&-g5OiiHBa@yaV;-MV!) z_6JyEyRRhSy>J;L&DoUZLfr&;xRQ=$pVpZV3x(*6>~$u7i`EGb#08T_k5XbHSD1TU zf@NS}pcqiSS`e3dbX}3mIoqMN5piZ$#EGdX6fj)3liv#hQ;I?I$_WvHd#aiX9j(xb zrj_)0B_@*cKwm$MO-#XxWnJ8Lj%`t;n+g@0gv22Pltbl;7~^LuC|G#naMG9Y8tJwf zs3NMb)6=sKKKS$RgFd__A)aGM+6OY*bYAqF&E_DBJP8SqTt3H~NhX^?Z7+kuB+CRX z)$5TSKBLfC*4YKCySs6F#tgM4rtGOiGbk5J#5pmx<8dS;>~)V8hKBDWfr9^(s}-0o zmtY0{KB>%cT=>A5;($&UL}K)5D_rdxraP&G4b`dYIj|6drK?tZCm!?zk~Jc$mY&VQ zuV=oj;$U`#xtThZ$#-2+6}&DBZVM8vKYj9NJUD6aA4l?a0<|QZR&j|xA!ffe#5aVY zy?KUbsPXTPCyCbef~mEKXgrCEXtuolmRng1^H4a@$uX~GCtN~diDD$IU4xU;Dcm;B zC-DugQqMw6Ryz6=3i79)c?L?QY1oL|)&=LC4<6KO9j#InAfnzS`Z}Zv3RPIUY9-`QRj;BMq*cgT(R67F z+?3F>*+BNYLlyE$u62C-h-aDgJIyY3GD1s(CnI@@tQ(#tnCG}HcfM{luNy<=O=%Z| zBxsL?>tv^yaQ?}okHXzw|2mXW!zC^2Uw-B@uzBMqTXrlF!T|MmQd@KG+2@~!z55S9 z1x;Gw+*YC1^5OTs7d5hMA_#K!anS0}4bLRlO?7{#y=a+H`drw(JBxo*PAv@L`0=i4 zsQ$I5;Y!IaZIvM6S_Mq|L9JG?e`=05@i@T5?IRYza?`M^qZ9JTC3tLiY95T0^8ET~ zn~YIyL;GU{wHhQ>{&ogOU)x+Ldgxe!MwW%yX5x*ahpi)+i2kt?d10>!Es766_85$e zk3$I;qQgfA**$KZs?m1~S7kZ@CoV?D#(-nYGai)C6M1mp5Xb1ac&WtME-FL|f>KDK zc^8bVTE(RlPD!v#Pfx$e7xHZ$wd=6)B8mfN;H;wA*E@|xNZUna#!~nCel&f$6A8sU z@&TG%pXNeWk*tjOm|H;5z*ctEcDqqv7$aK5tvQe+=Gz3sk0@lk3DGa!GDvP z#HKXvCyhrBq}flghcABUIs?i*P7aM4>v44Plk1d16>4}NhmVgmsQn^-rRxb|j?fk3=GQKiFF;jha}i*4Udt0eL)^ z8b{*{xTqH+>%$;4YNjPxTs2bNU>Z0TeManru6Io@w9rqUNj%NX>dZuCLV#-=CuD{K zJA^|1w23-)u4%?aad+xkIHm`8k>I}V#_noYYY3XqhBA0zJ`k?-v3GX#sh z4)qI6TdffZZB?`!&4*7)uuw0c>WUTbm(}VGLWF{Jf5o*KBu^r9 zqtA|nnN1Jj;4%(`BjVOY3u^YhNcPs)i2$*i)67I82qFuzZvBdhSo)WeEx8CdKGzg4 zw8)W!W*c(_ioZK~LmJ_V77IIgYitS${%mwE_S@aF5Kge@y7$eKGcDk>joikGpcu8d0V!u^GGa@tojrA>4&P30*q%EyELN;L2r;L+- zXlM`yjvR#%G&814CFUGz$Ujg_%lP;hdSFT{G$=ZHdb$i%3h~GH=$R%u2`2ZSV%NLn zSy^x(5T=r}>^NUgSxUd~&vP=sx%zyIwbR980(PuHULE*#zb(5dFa5{F%OF7L%`tZ{yo`i3G`#W&(&_TQosAXt~L-nQc zBbbz0G*c$D(2sjxc{7>x=47IIbm{!<}X;Lj~(k#LHOY;S-N%! zwdQ|JD7F}!_aV{-aF87uI1Kyx`e4QKW#B@`DI(NO)`&p01Dpkks8?j&_~2CupNEHs zS!GxDO_~gxR0l>$J6sW{R=J{_{^rSi%d1OIH*F(9ggTk8e!dy>n$Di*D z=0rGw9e_1YGD|m~vk5X8->7R+R9Zl37hc_tqQj~Y4%7ccm&;wk3IPq4<3s8firZI?sVX6(chb;ou*%;^}}PIQ`ABnbB(IEdF`)bJ~o826+d zF;??Jbu3!Fg`0F*L>@c7_V|(<14OQy=vxo+6s4QXLN1qq3_fSFS;*(}&{6Dw?q$ni z?dsLAskaxlpkVPita`2l(|94N*z^hWw`6XGzHi>19BoY@fXGNBiax!9v>UwFlsDhTF`lWcn&!f1RWin zP%IXqkRySBF8W-K6GJno)sT>oI1#fH%1>easBsi>W}nWkP7d+UQb`KDPno<4^Y`g< zxZPFSp-0AQHzXX)rJZTgnCoRqg3|S>1wnMZ_?#%2`UQyNXms;H zIc0xO1U%lr;1K-BKmAjlsO#3OfkH74#f}c}I9nK3`b-XTxXR}W1?Cm#oI3Eev@5ng z%{RxLn-c*7j0>N>co}+Qmf>$<{!NI4hUGq-AgWa?1WCxqgm;XSI;Du*wFyNm5>m`* zDdWJA5l=+3=*6OCjQ=GGbI5v1eW>WvZKz=Cc>c;71;NoYiwDBb0MhTQmk`CAT|m%Dv`* zFkH2te&Km|9v`HQkf}wb13Y|WybSXW6bMF{z#WAmEbHuqYp%QsZocVFkoDvYi}Z9c zEba=q7MygBSznq0OhU472d9BVJJ)kXPHUqaD@sJ9!dF#vL4);_<%%Y^S{h@L8Pg~!T1foTi4C`D262pB05P-qkEeoZ2=&vUdX0UOE0^p3CLSRZ|?~- zmXVQ8Uxh!9>tWHUk0Po5CL~OP;BP4;V@T-dy#XiRFMiw}3N|!f$`h$tL(daF zOoem-BDuoiXZsHJ!PaeCQOh|eAymzzJsr13H2IsgS@H(i+P6`?-e`)O+$eV)sb!4Hp^gh9xAt7P>`Jx_0om}BWvXeVPhg~>ra^8pFp#3YHB(%yXp8D=2&F>eM>-F zArPwuV`JW&f+Z-GF3E)IIvK^N#D1Xql|ZzlP)WjQTBd5;a@0;JN|S%Ha)DQ|ITES) zs^J{@&H4dC+)5FNz8rZl@U6fN>PYe`JAmb^7M8H&KrGUs=(CvB=1)rx3chqx=|CT&(HJfwKbxp(EV=A6`$ix$dn{*;_;_`20ys} zKIj`b1Y@OXrFGbH6Tp6WcaNRm zjeaP=jDT=1sbynn0_!R!Qr}}sSi;cpQ5Z+fsS~w9(hTW-c=lk*a*C8FN#3u4qeGkv z#R(kRWI|_2yW|xnuK(L;nl;m=+8szK;7Tzvd)WlMK$%kCq4#Hm?t(T(W3pMbimN__ z+h@JVR-YB~(2SX=^E~VIiA6`Gp@=9}citcqB8xJg+^5n7-hpv#)5N3SPq{=Kp^EQw zN&!yBb2e^-P3Vz1onibZ3;HdpQbRK)!`0OSJQpex`q<-7!2J(B2zw6hXQ5eDq2XEV zwd7O)Q%^NAD{DG{fg^|DTi-bfk3I4zy!T!2;u4@Vi8-CX%G{F;2Gqta$8jh0ngq?m zk3IsscI|>L^hgnRMc%4>J{N^3(C?$`KZe@Mp`%Cew}tG*Gsi&_6_4e*2P_d~g@I$V ziY7pHR>4v_etew{!y5%>VYKI!NeT^jgUjWLRm~R=Hp(*cED2FZ))~b}&)+M6gR{H4 z3;yM&KW!53h}S`_k)nkI+cslzY?3-o!qL%TsFusn-L(QPzx)#X-155oAwC?4v)Cqt zMv!k3F>!Jp?C*mg{P;c=EL5>yqM1_;s^BA61jNgbKnYc3KDt~l029{lvGp!taAX+1 ze$PFyeEBlC`pPSyh!dVQon(>WIi#ydXo$-4Hf;J>4TIi0bo4Oj!T3CU8@cV0AOWmS zN^(gUr+_I7fxJ*AoA|bqxc6-id8f{fI)$N`=&RMG%yFBq4hNw(3}TR_23 zp)EKRm8E>0ONwf|LimR-Wn^17l7%M%t#kz>kuN;|d=P=@QDjza$MYDwg9G$@8($)PtCkFE=TnJgR;Nlbu zifzhxvBry+utN7hn)~Cb#n67hft4n?)d_Iog&f~v1WR0^a!?^p1-l;oU93rpt0w&Fa@QYKj}o5uhFwcge*mt zhD2VH+chw&wyhh@Kb!})Ffkj%u`q9G-Lo84epc>T@;b(6PeW*EWCZ@<>;K4I4781A zrt`?+q+Gjp4V-uGcDU;D%V9%LFLYYBI#|3nu^ow*N$aX0_yW# z%wRTdUKPiZxEP$XX86==3XztG*ZbQ)`~f_Ju5%aNLpe{KC_L}D`Bu2?=9^)|`t`_5 z*w_?jX1Ht7(*x&k-v&2bcP)JH``?Ej|Kt(whCs=r#LbLNPrx_6`Az8k)GxzIB<4+g zi$1BPLfZf!65^!!twDZkBYv;6ny2Amj5(&AMuYoP)b62U$5^Y12wL2pL9Z1o0YTCT zJmcf^JVUThIPOG$|8=-hE;B3QeAe971@)hqD#c|Yr>Cc)+N%UV_Q7LMJ;_<*ial5gmUVQ&`+n|S@b0&~6>=1%N>ex4$-t@{BwQ(`C5IZ!Mszj* zvk!d`^607g#&^EULPhu<7fgS3?{3(K+EDi;mzoj^mhYI)is3XI4#?9c^7kFL-vPJZ zdMjk2Y-h@PNMB$hi-P>_a24~i;Yf#Yg< zhY3u~G6@z&6?*C373ls87sn!(40(%Zd5E582o|(ix1tz+ljnkq&UVeo*8{wn%a<>& z(-LS9Q5nHVm?YvQ9Hfv<4prafFLa5EIDz`n(=mmb5PK8s3blOM@`OwlC#4p%2`4>U z=Sjx%43dHErv7WaKyk&U;jAIqx|UEuZSjSdUyisT+TOEfE!_EzcR-<#1L;%5Y>mBM zO1j9|_(8c@0TQ@uiP-$EwcXwDuD8D(mZK|}E)SVkWESn&zuz>IS95#)>hrTqz#bLO zAPbMLLRVN zH)=>8nwSx;Uuv6{69R6&6~gf7DE#opKW1B7Y2#)lS0i~gj3*#2kEl;Vb73K+pl;=D zj3ad!<<{@eaQ0^&qAqe(F~3E9c1G}eyGCUcEAoanTmx&?tmbkGlo}x%zoBB&(;bT4 z^yICv_lhg@;kE8vvj%$Cu7<(MF_S)k?~mcVAg`ZK{03_v9_S{a1$EbuFP`FA!7gWe zEYFvg90&W4F>!1?scrqB$* z;%RwvMnE?=(c;ywP54{OHRyzfMc#ugo6do!pLrIlPR=ePtVMQ(D(JI@pw!u`+NycJfh=(g62Ys@uAZ4h0rwKG3J zL2r`X4d!#g5xkHHzSHjGErHmCG(v^`-oJkzRLWKKsF=P&R4(EC?dP(&!OgCCe~*QV zY{EfBNv{-N!lX?|V-z|IoyfUtgqP5T?NMM_5HAeq>^1xc33WldiLCRInR{*`ujwZT zfzvD$Se1kGlIU-f6e)RJ=}3^10MaZNP41WkZm?;4OJ~qD>+0-)8A*t33|A{GQl7yX z;erJ#mkk1OFesM~(tCA+g`#bz5A@xXT>jcrVPVh;bnezI(3vm7sI6~8VdN8NwosvF zS4TC<<*|H5biQ?iaW;*^B%B37l{F+f-um7i=%j&_fU>J!(`zYU#v5@3GaD?{CaSdY zBFEMDDb0YnDBG*K0|ojziYT_%*$r5pc4B@)(h=CM(Hp_XNuJAQY>p1F1{A7rR$-n@ zQcWZwXw6!HauRf3|YFs_084s&{MMC{T8a~j;67}`y+ zCkbxz%h`kk6LUiIm+G@DL;iu|a0~-&g{CXSaiRyXkQ$vD=kk}HjTfPVucq=6RIUMx zhsT>mOK21}HEY7S6~l>xTHOJ> zaO{GuH-&1oO?bmsfKaWYU(Xi}Br~t~IGMYO9q|75yoam5zqoTJH|`E?V=0%p9Pt>g z&aE(!lq7`6#NpsHvb&{mrMiq;DzV^mrL(Llzp!!@TzKC3aMfj(o5AVL}~NH^l$9l0KfT} z&p==QA=tfd4@{R#kemy-=VIDYM)g%qz0wS;?S*`vS3zboV z7=a1*hLaHjO$I+#AWMiQ*A!k^HKxe|(sH0{O4pEMe{A#c(sUWdM@B)c?Xe=%o?!#` zTwg;jev|Z?<71<6&v(8JqZ4DM+8kb+F8rPgC{Hk5YY3}|{L!IJUkRh+SHVa!2u&ZOUmT2G^%_Y7`hD>FL#iHSoiWvH%~P;Xnd zuhg|_Etpj$i#K{3dV;oYK4;cOR)!>n#1Ih>Uydf)hlo{k69-`$Wt%A3`H^*Qm2-#n zY`zag?z)lzRNq9%cDNI9ZzWpANlz)$aQjR;JR4SITAs=*gQZQ;`%j_Nvh3u3VT3OV9+n*UU2)zXFpt9BedLP zLqrn?X&1ycxcN&&uZ&q_Dxy%>83k4~KFDaX$wUOL(XawpHr)aaNh$Da&|On30%H_@0WxtF24-A zyH_w_D`i9t&l-khVqJvon{8|4@{h39-#j^o85M6QQ>;dDHa5nI&YA9=x9D8UjoP1f zHoUoSQuLLw*%=(~QTPd2UrtJ=)>o1Ew!Nk{fABBdRLCwAZ#0f6gTE=@L}47;BQ7v z<@Q@{;p^tvbOO?1$g>venc6A6?|XifZxvrubK@z}mr_AyGiOqlbAu z)=&%i%GbUMeSLlKzIVNw%S}ovR5(Y6>MgnfMndFoQwNk&rr zmKto^vIRc;3m<^x=xK7XLW%>{JX_LW=C9-e+M(gaL{v-1B#TnT{-Wj6nnBunyM|k{ zJ(`0MVy;N=Z_%@Sce}#O1IPL~Q^;_!C|oMYvHVDgc<@Jp1ttGl+%XGniny=QTzgpw z3kwV9|Is2zG$t$8*8hgaA4v&|Z+OESV1Iu()Uwm*ILSEL70!p{U*c z`}d;Ix29)e=2yxRae5mz#;fP60ap{A4}VD5)My{!|)3)fJTjmE|%wsi0c4lCNY^9 z+*OgHT2Xj(;OldGdf}rV{s?T}x|R7c%Gr^&b0trHFsTAjrMJf6K`X88k#+f{m%uOn z{Ci<+Y#cVM?}clxz8W&gy1O6}o;Y%oTdyGg-mIU6BD&N)YtB)~!FoJKyD^j}f@jBK zBwCzj%yeRS94eLJo54w2`0aZ?Im`Lbnj`;9lk+i$xK z)~;P^%U*=61u5(8lZgg;!lincKWF@|q^wq<$)GmJh&3L&l-NGyBC0k=rYY4R{x-V4 z@5OVfR%`I{?|(nsdFP#60Z^*NGjD{l3#)LY;W;LeDmy_SybB5|R{ilmA9)rkL+J}!ov!80p7|r{*@F)%y0vTf z9(Wo}pl6?d4hD`6@|7nNG<5B7g|Lm+Oo{{%sYndMWtUt6m*V4+9Xn7<$VSIzvxJ0E zTlJzfQ2&)mmB)74r+8iNT((l#nm#hl%lVxcH)rkgzUrSID-A z5SS<8Tp=e|OgB!nSO<#BJ1-P#)=bpxPydvT9NDHT<%dxH+aPqf1O*FNvN3Mc@SPw1 z82;*i{VzlEnLQGN(3v$Z-z7|NcWzLcd>;}nB!GxV5uDGGg+ewD`K;|Qd!x{H8?y3hYlZsp<_cZHa@|b$zwP_(Js5G!$miic1GkB{@4_r%NRy^AwvZ zu8X2ud6Vo-R5QieoXQbZ96Uv{UKQYcox+*{)PU>AJKqWKx%1~x z^@o#c@!8VQhJlhc0FL?#37hWFvw9V*UA4+k>caHs;qnTWoZ^xXQw=LkRb{e0P&F!Mj41p<+pcd&wauLV2 zUd|xikGn;am5{GuwNzbB;~f?m;dCl+i*73E25*qL zX7E(4RNC2Wf7V!VrN~LTK1)zSA@wZ6+o%Hf0h<8i4v&LytGe|H{3)iWsDZYpM5A28G;bD$d zVGRSdAL`k?dgV%3yJiiWt89XGbf7tA>&2j;pw14&nJEtacfWyE*=WW%_w=Hz6jx{0 zajHdt+R9ypfqkRRcK696G~yuB9)q zuDPdBEPhwqdTY>ZS05gDz=Lh)tz}Dpu}a$$ps@k?CI{J&wi7O-&XMpSLN$}gfzIK| zRE#TwX-i0YwnLsP!w|2n+N^3^-@`=K2FSTk9LLzyG(7UeV{q5qce5%@+ycdL96CI} zA?|J6cclTsk^j~gFLm>f)cFRgy6V1lpQ39><`8NY)MWnomtI7-_P1d_dTUf7_K5pO zOKFSnAPs<@p$7C*_!t}+Wv%kXS6_vP9(@F^xa?B+xwpLoEJWP_0>WjI@F~F-2s#FX^^-=OA^|;j6EhEjVscWM&K374lWn`)d*p?i-_zqf2gp= zg`~J3kta9?MwKS{ZO=0%`}V`cJp9n!Kw0I8+VGj*Yv$(FfIKdD)`NfN4VuY#iM}nq=T-FbNd>_2@%B!gD`5Y=B zZP@;r?v-%GrI*1CZ+s(cT;I#(Lpeo2ndHIIi3#+^9ft!4`{2>XAA^_i7#t=_$EJAc zpb8H@`Y^7+SHXqbw^^#eBufgn&;Uf)FKu)0bOU>(n+q2ct3~{k)D^9VMb5t$$82q` zL$g;1RrT!bIa5nnu*^Q-lU$0NWjEpMqXd-FQC<^!C$x*TGg-6bGzx>oACUNZ;7T*F zmOz5p^WmqDJOV$s|2`R!1T zc3f~FTz}nl@YR3(NBG{4f5fD^Nn9t7-6(wJt6zoB{`#-Max`Q8D6R<>4U%F;HT=z* zxeygx`0g%?{1YcSmPCK5SXBAl3kWsGgW!4)l3+o($hZGj#e|6#%f@{D(6(h}@{wq0s%PAbx(3hsWNk79ymL7llX*f1I3N@{)1+QV% z@)hv@cfFfSHgE?8;zp#1vdsy$!lX&(0ApJDctg9py5NJzr>t4Iib;3Q4@0wcvQ&nL zA9)nUk&AJhip%0|$EBIf9u*B@GYG|uhY>7+l!5g9ujJOR-!q?MOW3`e+(^|nvkuP) zxCX1eDz03DqqBraN^>H$gsDbPZclP6h9)Z&I65{0d;1Q+3p-zC zmAe|6psNr}b$ALFr`U>A%+C&OtL%|L*n8jr-20vHK$*-+&u}8tZ~5Ktcn4gJrVT|% zYvf;;#p3&^qVx>cN18(hgs>Iqkm$wN+c$54n{K#~lT7K}mr;=U*&GZVAAvo4_nXXj zt2GIiI2xgy=223mZUXB~3xs$yS1jIz<35Wmw-&K^;@p+O zB%#s0@N5w#fvyKipQp5Ydaug8bWoU-%bZ|0I5Y$UhYrCo+UbXn4nhevm9eog^fZ+C zd)U7r3}2AV|O_B~*ngl_{7+Rk(ygV`6j+1;;Vi z-G2Z^aBz>0kK^_dnmAJ|R4B4Gv^7FFhsC!0)0C*jIYS=PE0ixogPiKazWt6n(9@h_ zn?FT!P?mTQ8nb6N3KqK7<_%MX{OT*Ogr2o)KqgB@&VDq*B?uJXF&no6xa@-xT1K#=8x4})f0I0)gUfQt&) zsNKoQDeg8v6OvlHx^^H&Wl7XOZh4sBES-kMPc|ij(-%lv(fg41{%<&*%O`VW)>!b! z!#Z_E)PZZgQO7-0ga7ic{~BK2^_t;BSen}bDC{8OxCS3w$pu$)RaybV)#z*>ms6Wb z{a(?vjO(Lbc)+Y| zqaqSzE@n&UF)=8nHxvg&0&-&IB^$DA?ow~03N9?Bm~`@(E;OTE1PdW@ zS(<-^=@zbx30db`I(f-d>@e)vOp1qtpd z`5e70*Wr+!arJP05hD9=^(0$6L%o2gPZ3p)quw%9RSpS1pDW4vkjeSbQOGd|aKU*O z!pfB^A&c9oT?92$qgB?6w4IbopB1Lgs>vv~UK?dOja7I}g)nVEDAhurFgPz31KJ)# zC*09g@sG+l&?2F1H%Hb)ZIGPeTD!@EX=tCsA=iW~b}YM~KRh|QdJlDGa$geEr2Hho z0dm=VXQetZsma!l8gy%6)grM(qg*r`J2nhYKl>a^ldX4y#wM=60-|&mq&Gn@0P7tl`6@7*>+F8ikNLymucp>pj z?2*wz!@7eCTUoBvVPdjmUHAln;=Y4Wzbtc^KM`x!&YQ4J!c>sc{zwI&(im;Gv>{*= z&7g^iNgl*Jba2I5g@oO&eBu*qdoy=J25jeRt_Y`Gk!2g_ zLUKd967bHSX;%r`M5o~~H;_Cfi(jT^O-);(YTlswG$PswrXHS`w2@2!4*V}26 zFv~UP8ZVApAt6G<{qS-229|0S8^?s6BIL*}x%eU|7V}of>$c_DIl;u9GYMt#ZU(;m z_C#3wZLxLhNqK=9VKhP^s-EXh&VOhx0oZ^wrA^EUuad&LjwxMUo0_Y%k14vXIpUVq zNP1Sj5%FL686&V|aBvZn~NjmQ=a#k1RE z7HO-B3u&6cDc>9Ng!k8Lw{9JT*NJFshGFo0s;wjtg?z^*3Ec<^#;Vn7Hi*dF8K;D} zma3*9nJd1m6G@4N*lYHPgiKumlBh2{m4abh`ZW6kxcK57aNQf<2$GtO+4e2Zz4Q`% z?Vfwk9UXAwH0t?$6Q%H3tr7OYn|Vmj^f#4b6n15ck`f_)%~}t{Yn`%gO(xZ} zhW1XKU0^U>Wr~n@6^d}jn{S4We1ThwkXAv_u|In7LHO>Ee#o_jIYvd;M({>gNS5+nMO8!|31D?E7z<6 zpQ`l$Ol|9PXP(FA!CbyXK0^Y&()T z96-AtC0sm+v#(nF=7dJDlyHIk)1nlA+SS`T4GV;*DSTKC_Mrwef-gHD1!GlrH>~gJ zg=4$-uu!40gj5UlYv1?={OqZxpnK&iC{ks26f_j4!tGUY@Mb7(CF3y{!?7&Bc}>qI z>|aJE4%ZanvON{gje_Ng{}9YH*ecEG-EcvvW`x^Ph`@Lj*WBi?H6&sL;Z)i zJSA1}qhn~Bj95Uz{`Q;R47c5Q1D95ydrC#Rs8y~hHr1Yy()g=uC}_Wg=lN%1{e}e- zDun22l#U$Ps;i}Y{7_vMufR*$uGd`p;0O0V2!H+M{{I!xZD!hU~SRm9TPvTY%Vm6$uEZF|x6xU`4S5 z-ubq-!rN}W4OVt7vr)DtjDU|t-_6C(MRaeZKD!!A%+Sr;pc9)y>3zGJ%l*cRo}Rt1 zz=%wtKmPc~r%Rd4jd*=7H4M6)5=&OLa0C{tSh)fY9~!_%Kd+LmWvFo_d$tA(ME14e zNTm5&+q?^Ho8vhX7{4!X*YL$&Qa0D)=x# z`z5&kjc_HIs6uyBnTh}JHOB7~ZdN_pOsDx3Sz zvUTeQzVL-FEV$wunL^^?i>nj;2OmQ5`=O-exO8Dww$;nK;iDh=Aar$ha(u+(^t4&c zYXgB5%C62D;_{V=&%)A` zEs?j(X%Hmz(PTVl!+Q9oU;HRsg&N-v?|Tq-?b!>*j*mcwVqI)DIql0{CFw<)Cmn|3 zl(J~fUc6%m7v8=S`IME*mvaY1u5qiVRY+2z$DK1<$;lB35r%nXGQv^2;)P8-gC_Uq zx_WwEw_ACx-w^+ViHVD*j~)9dN}FX);HMSZXpM-<`eQ<1e7>?s$ zofw~h@riM6AWu=cQ%LO6KqWz7GG(x7_?DSif!^ zh){Dc8{%QyWO8EPh9RV2n3M@BU*RFg#o7p7preDw;DzU3fL*(H!~XsI`94*sngc$t zeymk;Q7&OiHb84b$DJb0cp-N>c_8Ia!)*3b=>2&aPBZES3z7iS{r%sPO8=Z6n#j^9 zTWhJosoJ46RXFd&+Ss=4imP{8*P=Cw#!MVWIAvSJgVF`vSrRbv_*l+`D>H=F8^`~60_WNQn0Z5E|qL;PF&;m5H5PwhUo+FcK47@mF9hLz$^P8fkn}x^cfYJBsgwC5t=S?+Vq4L zI`%9z3Y8QPcSUf2bM0Emm72IF3mD-p-D@zWr3A;QyRev$?=7|1rgRNO;c~)~?_j(> z6rtJ<)4_SXY}`~0&7Vi4^!`O=_3EeK3}MEChXl{FIKKBQr*kiHI8Q>d-MhAb>%>+) zkN;c|EjPd+u`T%?)aAH{*wYYgiyuoC@$E1WGdHpS&KBdchUkpDmS~O&$*USg(c0w0 zc5-L1yhI6!-k%UPmG6aG|5|b5#-E-}PNflk;|870?n4&*XDFU`XuXu{g6KMWJvpuE zwQAh=1aQJ(UUXH1=cjSok{9<0=UCn4bmpbw2YH)r{OByG7u9->y;>cd^CUzS&Gfs` z*)AHSiXD|&Jz5lTf4gl!l{V|g_iHoVZee~HAE6N)(<8uE?TCZFpY#l z6qRP(&USBoh9WJODwkddF@s)dKJ0|OZ}Wm~^6E@L)Gb=ZlT*(WxpBvJf#}(JBOO6Y zZzCaH)vDrong3Sxy#L&_V#NrYMKsm!sEr~z*6ASyZroXuUs^}h=GA>sSKQtavZ z{@EaDXTzN0pmOBMrK(c-p0Ct;k&La-^|pR$_oqm4>WF)H={i?>BMcXV1g$5KPYI`G zCi@-F^ZzK@)AMqxXethKdeE}9+HNJ~w?o0Y_V=-!}Iwq;RT@%`*b$VwR%PFKtvCwGLS*TYP<*0><+R1Ptp$?^YKY0EJJ2!0jK`RRt!n_oW+R>vo z)XI}zky>nW)yz!G&^Xp3)mT!bI2Gvn)~t!ZOBbVpp4k!H?XJM{{>!qB8}|yLCR!Zx zic%gC;`vaDdz2*MX<|BrOhrhF6bpkU9E%ew8V=%Hzf3PPNB;1VR0i*TIRWIJXmQ=2gKWl#pxQvB>6 z!s?ZuYgMn$iEvV~pmg}~7N}JJ#tZeWQkY9)v=$j1EEO&(QpAEJIUk~|kUBA8Jw8a* z21-o_(*K&D_y2ow-G)b?jd4#6p)mo^dniA%M$yBtYNP%9Q zMDm~(Q6qYQM5eqj!EwqHVW?prK7Scq%75OqVZ%tfa4EClq@{q?_xqFm=l#7O1ph}? zQ4ApUX3^ZMg{W*V6)Y)I;CwK_Z8RG^TfV`Sc{MzW@%)5R9><0Go{SLxHM?=+i|sB@ z98O6JO!xO+2Z8?Ej0!IFIJ*-4?H(18mZ@M#kpkjUrB1LA6vt!;E*pspae$j2MS1g| ziiN@hV(r>VSVTA_DL^Js>CmC~`+@o*Dsi2Ff<;Nw%ED`#I$J4HoK9$yjZD03XlrG9 zK65Vt!0r(AUuCk{ujYGu`xc9qlEf*i7bslhRA1j8`=R?3tF^kRnA2lj|d> zYohNHj}lb0-l??u|F?23kI ze0~OUxxXpq^IvQA{GNrx>lQ3}V4zqD^v7ha_8(9PFNernOtqI3?S#hhS|2f6Uzt?f z*U7fGHjb8)b#+xq`2ueEpCSmpncudpe=+hXb74VdzwXn8G93Lw2r8e==pbh6XQdqyff3cf9vthy1 z3OzBgrhI(#-}^fF1jP|@Ph!iuxL_cFIIKApEGb$EVWJCz(@JI^qb{b_RLxhQYv}QL z5lPyA)S$jp*ibtr#MUw_VJw_r(OQ%S1~#He^kpQeZpx4tN5{Ri73W+9x>T^FIFo2p z7euoiC{V58efDqaxcE}^c^cMW+n5S;^myV~TtdH6$Y#F*>(=dGsv1fo7Mutf-@pHQ zDfOTDO5P+wC45@|*wvjdVa%yuNpWT{Gov{1cR~b&qRBp5)aCb>xRDRdO-oJyAzX9CRy zi~HBsZnnkYskY)UrVdH>B;ZjjTzu^1+R}0IQeMxk64MB<%;zx zK#FLjo#Yy9|&u*>n_DTacUaM=hKS#dhazD~TQ^Atr^dsun*}(5v6A2Y-J*lNU zUK8^BUN-wpsr5_wk&(mV;)|=0;*@blW;Z1))(#)O62jpBfiS!YEmyC3q@$SSuM};M zvv5O2q7J01de57rC@H1-@zqZ~&woH?GLL6_dUmF+;)TN*yVVru0>i@>Oifq5fM(HK zGg_^Xwtyd#XI3k9H{Y-^f;~!&L3RL5`mjKXR)x@}_<@~0cp9p57}l*TEwym_Gl4U@hLCWX zJ~rK}N+bW;4}(wn0uNmDIB~Vg68i$=QBoQn;jorFFrxIm*M)b<#rCNf}}F5&PE+q2l%;AtJfmuM(^e zO({>j0-pC^EeP(f0qkA1d2=7`I+gM!X9s7UAElNem0Il&vH-t;UZYOW375zXC{q@< z%~4Na#P^mU8U#xnfiDujzL zj~-o<3Bz9qg5V1orB;$C5kbiIG8K*@{)KF4wxa=}p3y1V15D0ahJ@Q-&_6cfHQ584 zZ5fa*YK`Bg2v{wB^axXn3^j(^p7(wK?oftL7L~VOY}_~uDOwIKGegNG9UMP?ZFOqu z4`ry{?13&Yog0xZ=|a@DP|6fV5?~hy6$ukV+B>q|lpzRdAE7H~+6>~J`_asK61_SP z3*UdZv!~}+s+F`pT59R%(hL2=>rtcqNT`C}MU!Z`r$gT;$hNjia)nFL7Lerma|}Fb zpX{-LD7*k~s1`~D;K?#-CF3d#pVglHZqD}~$@u;NOiYZy_U+YFptKKKa)wfSk=pR^ zRbjRINm;9WM2D)2gb6>Anv0H4K&P^%WkIQY1kKrE)HPFZp=o@LUL4(z@9vZ!A3-hU zxlAVWT)wC02&8;TTcf3?BiGXn!&^icd4*Ym^>kSKKXBpu6lyG2d0P9# z|9Nb?8wAqyk0#W+CL2Sr;_b~KW(mk^SVjhYR%#)gaQZYEgfERA_0$Rj}}ziTz|08`N-sCZA2l z#9G0jU4)4#Hy}AXUD>1zZ~YhiOP9UFsFYAk;&I&gD0*!k3yCN3axdlAtvirLx-MO`H8Y_{Mpjg6 zF4^G>L(m)|q3Tu^?aBBGDut6iZG&nXCA%H)er6_k2jtY1G3DN|(gqz4Dr zi0R68sGWZZl)eV}zfE{zSt1r>Ldb}SIH@-Zbfeh-$^BX#ja&-<8@=VuKuHaat>luq z#PK%Gsh`w%3$>A&mU0X~H-LP}UeA-yW_|ww-}iUHnl)qa)vs2?2R@K$B`Id0?FCB` zC}i@r!NCh^wb}=C5ZsP}=29eki&2U|G|}8z9p%PG!bMnuQ@4#^p?Pi2C&~oZF61oM zUz}Lc()|sbZ(~HR)!vZ*2$dQ~@^u%U`#}^YFDV~>x~zN6GtkjNWb2adm6KxrSX6?= zfr#Gn!GoJ{wY?H2)LS7`*P>Z-o-afJmtkRQc9`0`JmIWXBNO?zY)(lJS{+f0i1pM+ z;n{F_u-gSkx{{|x3W$Q!$fiNpZ&gci98Y||5Z)dI`e}UgCG_CzEEfvn-QC^esrxs@ zsbEnGmL!Pmof;Zi=LMD9gHm{-^u)C|x3=MQ=>lR8@CtZ_m;tU0qhq1d4h6sYS8D6$ za{YrNc1YU7S$IxLDM4{05(d$uvo{dpMdV5Lpb&Yi*xUOuo^#5Pq*yR4dcopATns*W zlShuM@BuDD{$K~1OK(O_<^o*1H=%2^19!*^+E3g5ywG}ROvDVG@T1H=DN%f&H3PDY zBC~{Q$q{r2_k-uXj9#;ysI?rxeRkz5m2nszo`S2d4paAUiqnB5BUl_4t zZrxg(a2MlDB|&px5QbNHps&O=KSyRp;{`g~c}iL*NoUko@W-Mg89}Y&6)7`2WyU*H z4b-csiS&E9+}^^|2vza)2cqN)bcZzEHLMdb~8XG-csMn*G zvl4~Sa-7KjAOWtOEML{8KJ0kA6A;4jI?)cmM>NL@@ZU0SoWSQ%{O-{} z>tUtCAvD&GAY0q7v;HF;>o&d$RJtY=9w}M`sbHA{`u_WU*s&uA#bTixhMm>P$+ap7 zdNWckLn?HI_C&82z;XfMa?kTSvc%Hya(P2hf$Xr>K87!EI6zI+ODl`3>?pk6oS eRFI@-Rs8?OWr$F$!c*x00000=J%z00009a7bBm001F4 z001F40Y#QEU;qFB0drDELIAGL9O(c600d`2O+f$vv5yP0t5+y$8dO)!{MCLXlA65M#rorS=Jt2YrTH9*K6&*ed}GX z-rD>8y!L9n>r<93do4Xn8hLe$=02&J;V~TEBtQ}baW>Fs^npIBt12@i-v9p*k(pIp zeE?_xeZ)r=swyihD?2kH{`>m{czAehNNBAkJ_$H;rT|@C1t=B^AZ3V;0ECb*KQHEM zHBrNdXf$M9N?9(Kq26c+e8x=;sqrwSVo~Eh{7eTW;OnGPF6(*xfr?TJluDpnjv$U> zs8%D`vnRrj5+Q^J5051vz{A61%>&ncnyd5(_%SjPz>Xafu3V89Mn=Ld<#J&zjyq8} zZ0Rf(yBl%6Bhk8`h3J$@bPFlBpgiaeM9>)uQBgvaK`R+IBB@YVX{ACsu9iY-&A%f- zpb*nSp}5jo;VU6X+USA|VHWj=O^6*%LK%qmzrcxUo z-ddKjJ5s8Y;CqoIT_`kqMNsStAnAy;F6u^H!IirMCvzW)j-6p3cW9OLCy7GS1xivt zh%&5zM=jt!0X<|uPbkmV zycbFv8(s)`c-&-ItEK=G6Xn@PqZDafDMV3MfWihnTRlRA74(I5$S~+fS+QS(+^yoc z2Up@wloH)|gkD^jyHS#$wUd;Df&wo5lBEba;7B&0&7w)9;1s9LLbE50XS|?)v{~25 zD<|z++TSb)Vu^EC3peualD|!65m=F-MAH{R+xKKq;ZuyJRxK8KP9=I4zc!5~*d+cD z)i4OA;y_$X8jVwl7MEqAz(OjHqDj0)(;fTwSK;{ad9<7&FQC>xyb$v6xPjof%$YOA zxsHzBPSNOz8ln?@PUR?$x5`lN4Mng$R`FI`p|_#SY&!~s0kj{sfQl;U+A7LG6mgms zaq*WrAwfe&B{8BoyrTiva|Qe?NdifFMGwXD$V_p17$JmV9~Mez0WCOJ3hfASbxT5i ze>x=nwh%$~_p@y!jG&{lHqs9FRV?^OhG;<{D#a!k2^IcW=m!2-^Z1v}qhOoD?U!Pm zoWUbq!ksRuFnlkJqS2sSzJe~uarpYzr^V+!mw?B*gBL;`9;*a)p^c7KpsTBQZhU;J zj-n$$D0ZV9>cJIuJ1(T#fm~)FI?+|OMM^P%3vUm852Xn%wbm*TxS9*}ZqaHir4b@J zwOqh1-uw>0_|mKuBbJ@fPV|VT_qp$CSn^q`oHgaXZ_kY^oxD)e`SWsz5cyxv{vHxv zD1`a%RL4`tx4Ep4E1l|tX&489*mfi#9f^%8z~UI~3(1i`yOsq}71>x(cjP_-79 z#~OzhLLMI10CuSzKVF#a@9!;2xf2)0?QvY+qT*z*5Qc}6INFCs$q`(DcL}m&KnJ*{ z1}JFIv!qzGNOoQ6Ou*RX+O6ZXofm2Q+Ps(PcH?Su`{ow-b`C1x?57qnM8|CrLS)Ub zM^C_lXR=mE*vP!VbArm8Y1`{1?7=ziq_e-r2w5YnD3?!}56ySz`q*pa4og;+wt^Qw zM|nkp2Cuplb9i2-aNjqSgqKjFztbrT?_x~p0{*7Akk&A~5c2R?0#4Y#u3a59t$X6x z*&fu#2Qeyt2Y$E>SL6Ob1iNuD-H{|ww@#8R7`GU})wDy9b(7cn`GDy^Mkv??m;7u- zNSH;QAI`!6$QE8{7v&Z!CHBq51sKnV{Q@j{)86Lk`g`j(RN zP2BOl-g0?FY~MZ$9%~9-2zhwqkV}OwHO`+ugaYL*jN$A-m3x&1S+?n4n9oysKXJ_bkw_<5T}K^uY4X1m$H{j}C?tQ4_oOMq_k zS~PDOdNnX8F`CCb{XqMPm=V__@|xQw~zVQ(XD}>Ssoi6D0m9B zk&!(SB=_K=v=0(}4~A9_sYbK|1K0z&eszIR6`^H76ai^;CQ&v~AfNHo9Lw-n8(2;V zaq2k5(?r0rqr}|F8Y&*6iG<@i2)~1#*spKdz57kPw=sC!H29h1v7zA7q^m;o6r<=+ zqV@e47`QD_$w8&!!%~ZG^wjiWtfwLsWvmGsr?LJuN)J}r*0#vjW2djZ5L#PElQ%3} zLWoGS>I4fSTJjPWSQ1=0FFqPtiOUemH$o}D5tm9|>b`vWjJW&m26)_X_?hIf?m?Cg zjExP%S|5y~`kiq@J)~89XR#1&L%Fd{Xx)J$y`;1%8Cn4w>{oHqA|-5e-+V4%@gftK z3gEF;V1-Evr#>_ZA!5FBsT@@3D_wS?twGXI$C%L=ZhtKd!>^!C{N?hF9cO*L(T#-{ zLLTc5HiNCBHZ`(6sy5yy6ZimbI4CvjM$xhzwctM7rwfuSrXyWyFhDLX+R)T!#~wgw zztW^Pb9MhB)5Fxdcp(@>mzJ2?gENOPB6QbbNmjCyxuI9z-d#3$2z8p;ZBePawgv zzu=-1q{W#cO^wd~Yg}AbP_ z{wJnxwxNUIIFyS2H(Ex2Slqhx9iP^{`tUQ!V@-msow2d5T9OQiB)L6~8Ap}kP=%#U$ zICreD?zw=tW1*3Neiwz&Zx_0{e!skB%XuFwS{?Xl=5b5GZnnwEef37;a1upN=_L6S zE(!;vklhkpY$7)EoD&D^gK1iH!rn5IX3$=cz>0*>qGz_U70hF8K(~k=vB;Qc1ExjI zvp1yAMi8+u!bgGw4}EkE2*MXcq3}<-1_!@{yH&kabbatb$m5oP+-+TexIy25n`Ar?2foi%LY zf{Egme-IQ4D2M=}xIwnl*`QebTb;$?pNfHj8SuDfcp>C*Lt!)7!kG&fdW0-*FA8-p zij;>j#`7bPBnLnxow!FBf^B19z64sCdL0Z1o8zdAZJHJaAu}RO?>h5XAcP!RJZA3Q zQVICkF>NxwbI)mQzQr^^oLx7C7Siv@u=6)Mb`8Al85gb%e(HLxDoE)3!5{pA{JDo8 zE?nvDEmfwb`a}@i83cuo>Nt5Q*6Kc`lYYsqa)f1%RyI}EXrxkV)1VEwL8!q}#i5IS zbiJ00pC0Q5*CB*d%hzP)kF$&!l8+tRZnfMPkRp>fW^r3h1;ww(LhyGkHyUr#JAk|??zrOHpC)8bK7 z5f7oj87OE7xHqQlG2@z>CEVUQYib6z4~=WiW*VA-DJrD))%1@LIbJY;<=LxOXbH93 zO{D*LtP6;?_fahx*VAp^iQIEj{TRPDV^^mg1dXDiWC#t88|mXX+JC(}j{k2saA3+O zEUXNEmU&zioZy)}bEY$Z(qOS7?+{Aeqm$(EL`9F`tluWA5g|zM=#0n9!(*)?Zx>x{ zDhpflG60QkI&?Q*hA{a1mEOMJhOVwLFNl_hUmZMF1V@!KdFj$X7{mTT7~Gr0jSu4t zd>|AsfUdVr+)1RV)T}+amTP{Pd2C!rrvFiFwI@{Q8iW^h82mFSg8yH6aPYiOSXdf< zb?{geT*GtbOmU`E>Iw>Q01|m$+-N+70_LFrI8s1$v z!H%MI`3MS^-BRm5k}MpLQQElNAY(4boDa;-#oD0{@Ox}zkk!xeOe=&a)uurV?INh@ zg8ai`q4W<50|UoU5Jljz0Dg7wV6eMwWTc}}tL=j@yc>h8532|sQjpw-*3DK9@lxR@ zF%DBEk}!eVtlC_+%`#Ko8|SgXk+c2n770pHkt>h?Dq2W?ST0un&%)r=mps+aLipuj zlY?AtbC)j<2odj+u{er;g-_@>`5?DMP_jZyS^;Ty#4=2?$`XW9znvg07`4yrVX^pyN+I~$VEPkz*IW)>2yH@8_tA-o ziOx=?cGjxZ_l1FYJkW3#&Y~k)C3_@MHUbsx843esD@LX3wL=0)H7j(&m_`fIWVIh* z9vd87WNn)wnmRX`mJ_hrCIcO*WER5U^Fdhpx8D2oqx6kovwpVI||Wu$MEpjh)CHLQnm$Y`xBw!hA!=h zJldcqbO2uti@`syY~TGuFNnM)w4p)0d8S84_XYFw9|*MgkQCAV7#2N<)=sye(mI=9 zV0KRb0a!GSlM^-~``S`9>0SVNY+e}kOk#|P;za@H@#w8_tUnzqU9XLdjNtpzo4ugb zuMryz6z`e4e0duRn!8n!d@xb!p+Kplq0+n2Q(Y3dTP`ehPL7|1s7DqYQ>0SI3L(3H zJ}Q*%q8Fh)@$lH-$Xi0WtsrCoaS}5dH-wV=5+$Iff*|9Ju%nG&S#P>C2O==gHWHA$^tqW-El<>;;d< zW<~oX98N0*#~wlq-DnvJ^g{HiMEzV;(^6l#@*6mRk8RfUZNFZubKu}D&z?JX2>ojJ z210xa$NUitgYK6K`tY-YkrxUFziuIAG*3=i#v# z(CSQZ*>hSz>Up3NhlFxWg&0*b{1V90KknQ;a2)q*z$SxV9@Z&vFo)6P z%_EOZ3~I<2P~8wdCo18(I_^nCTyyvwft-l7`VMaRjoy9xp5AQf+kR zQKCPQ#PQFg#5ovf=*F=eq5u*?XY2*+N)tq$Be;TFL$j8)m~2>R3AG9#XnrSjli=|} z$ipKKGx%vfn!@g^aYRBqbLgDIIMFQ5?PsJEzger*zAsn;rr9bnaUYRpv0a-ySn31%ahA{G)?+#d{&h#W{6*NdZDcdViTv`g#-T4=>a0e!r$QzEoKWg1^dj%T!CFLj zTj1h3T5EqJJv`PUw6-}zg1P6=W05E+N5Zi1hoW5m=f(d1w>P>V@@v-`ge@@bt&WU5 zsT+;Ysw8?WRB&4;MA+$;{5(ru~PYOO53)b+^80j7eZ?Ulxp1=A3qS+>pu^16?g{=mK9BHC`DCHUAJv`PQ@*Rj%js;LSr(>MsXc<+5Fnl^F6n?!N zMbC=8d*@+;!3&{V46=OcV`I1LM*Qbg-1v`#)`wB>gas*??t=tSk|Y@+6+kL@?DuVt zdkG#M9_tI*v6N_?GLw+EL+30bZW#{xgbKsI+cQ7^d2#q~9X1fW5V}RsFTPl)?b@{q zMaM5hjp!FeqHhlb6e-()jB$3iS>ZyDd^L8f0HS9vggiXfAGB32SpeyLse`btcL_0W zjC7(C5M$_?`_*z7{t;~3HoH+c=e!WQiC}6SfMR`UXip;LkE$sC1 zA&jA}TziG=IO%H|s3d=UOvuAyeZiDX7)vOv>$Ad0no@J)o)f0dFT<1<`m|DE#Ac zsr0X4>(=3o5GV3N=q7YVKZbbta4+BM73#;4W?k! z!^30azzHF+LMYERl2T=9Q%6J;+_V-%)XqzYCskT zuLwRUSwT_za0&BJD19Y>;{Q;T@j2MBqq<(*b6yDDAXwp3j7CTAifWBdsW|?RLMe_) zr9xw9JGL7Ikdhi&l0#tzr^<~fFN8ciHXarVApx%4idi4BF2>p=bCG{to3Ig$O(aZ9s&W?`f#lXP2 z;+^wCXcfWM&**69Y+T)2NW`ziaq{zcfwzYgW~9NBs0BozWNAxNf67`;{Z{O5cx+CzoBPHS;*`(kj9B}u$crM` zQld0&+^3;~@VE}dzYvwKFIW2eFRh2R5Ps#mPEfHa%*<@5R;!OkaqUwg(SKel-5ubd zC{Wt9tK|V2Fd_SKMds<{S0Yz2oj1$#VMguml!wR0LrcTRG%+c4)ak5lh&StWT_6EP zu6(K|WRoYPnj)!Vt;S@b_{Wh}zu#Nw`XTi9&#dL71;4ai2lT~@9n*1qcPR)yj5q!l zAc^n9F;QV+_Jo|diU$gDyU}P-IJ%U}h7(!QsUz%I=o`-cn7>mV9vcv%X`bt*w^k5o zvsOskoCQ)LMC(bM7OE?)Y_fvX3Fx^v(XR$!;h#ad{GG1t+b_WygX?f?)3nKY%$z~Ep2A_%||5VkbN)}lGd+Fx!D504vxwhXI6 z5I-Co9GrtS0>3J*0C)=vjggT%RUCgtq3aEuulIsd9a2zxQwh|9ikYliMuHPUt|G{1 zz75m)usiFE&Mi^0?XhwnfMo=pLR;^h4{?@Hqr(q4iuZl~6te-2VPW6+;o;%2I&dqFi$gbM)Pmul6r@`zK$P`!!3kY z&D(%dud71btsAvJFBSZ#)UY4jZk2q#O4EhY?GsL1VuB)z$Xh}l9v-U*X9Z~iO|?UW zR*ML13vsR};<|Y`9|ODzVez*seSLofmCA)%Wf6HxCt|cYG#QC0EMrS(X*LXBSnA>7aVw#lEFxE1q&a-Ruav5wBzj0EsuWF5hJ{+~w{Y_m z+yZzZWTC(Fop5$y;*PLV_<0q_KUYxV0BRK_L$qU=t{2OR^ziWTxXB=^hq+c3TZ*h8 zGRO#%-P@3ghLpOy(NKS#jH$WN(ckUZwr%8QbIy4o1cvtw4(_>A&sYCO(ujYeAjMYV zrw#ZfD#QE6aBNQP?|Q2Rq!#nkwZ{3x1E7GPCC$() z6F`Jkb;2`Ydw6)PF0%Z%{Cd;0)->f#xvF~GIvfP2aHAk2{-1YLQ21vZf%p%wW5?*t z5=5I;2vPiJdV0FAFf;QPlv4k(O!OUr&=u3wP}yd4W?!aHw{AJz)(Xll<5G647eXE$ z9;*pns|+B_$l2p*siVIqexQ2Jnl=RW35MIA@~QCO6R}2S;VKC(jCXl z*Hcpmg4x;sQZ*W%Lwj^E5J5w(G)Aa17k%0L-*FLbGTl96NOa`ZXh<5JB}EXCeNMw^C)P3 z4F$t(l=&8-kU=E?1Y1DDbU+2L?X^u~DHcC@h6H=o^rLt$wx8Vk2(+D9HK;`Pt z&@YK3{+}_zGf3NnttOVRFwHS5@XCksd?ts7hsXK=i5S^p{VavNTaQFrLQ+ZwuU2|{ ze@686oq-#KO|hoxiHY7ut@f)Z+W#gxKr7xd@$m52>}XZ4O(-G@N053R=>&pO<=>Qd zg@09u8^gT4p@q<~W5T+#Y}7TmGBZ5T*d z6|i9}A(qZ_bKC1PGyhQ%#eX{l`B(uUkep+!INie=LLMF-9?QYf`Ovya1+e5rq7s%Q z>4Z4`Xqdp?go%s0V3n{Tgb-OkmrkDCh63mpb)5XQK)~%qDFR897IB0BNV0;o7eXE$ z9v(|TG&zex8Q?>rCy9j+1YyvD3+YGZ=aZj3efo46RsriiJB}!LX3w6z17!FMGEROu z0N9Pv}~d3uta+{t=51M5-<>0kRbIWsnPs3^oQ2U`D30mQC=Xx|Lkgk^nmVkqmI z;YoKqJUl!cbjzdt*8Ha~xr_KuQR&~4)EmDL4GbLR%;amtx?7bg2GkfDI+`f;7qv=0 z7f87SC^Jqe;7+IutREi(^6>ERScoQKxn=jxXBX4U1iur3z9NJ0^Btw)-xh;|m*E<) zu2yJH!@hE5w@&n55Q+M%)UX4E4-24XHrd>Fpw%Ms@bK{PFjyE9T1gno<9q|2VMwyczAd$ z4HQ1YJ{C<+$nQ;15TYvzh0lIme18gNXAfTso5H$aOrSrkF*0&Q&DZ~u(E76|cy^1X zZaya7(~g!Wld?WZ!NbGDBSTB`P2GOGLteb3DchQya-tJr^@+yB^vPnaYX~>bz*S() zTS6QII)DCdU2FWZQ0ixj8g|J=+sTPGkMv031(An`hesYut(i+hN#GPPX&yVYihdMo zmmauUYiRAe<3>idszm&>N|K+W+;j=rXBv2TczE1uXl*-AGp$b%l)k&6;*a1b9anRh zHM^j5A?oPpuK7m%ONoyEGRA!N2`Q*W19*6NczE1mXy#j>7fg$WulkcX`bd27^82nP zWqa*f6~n{*qS5$SrPZ&X0NNob^MC_p*ToRw;o;%ov06YuM23Md$zcT$@<sSu?;tq7Yxc{BUD-?td)>^6qjNa61N+KoD@7S@VZ_czAet z+*+{Z!+dfiMl`p3;38Hb2J!7D!gBfkmBfbDln|ObefnrrYy3ZpLcU)oDl|+8njb#B zdToM~0&0FmAv@EvNvDc}cb$58Y;4dRck^8a!ti$LB*Xy912T%9fU&X8<&Lptgpi({ z-60BvzlDLHPoN8~B%Sba0?1oHYZ5dF$x2nq2qU-62`6v4dU$ML+gsYXT&EoDj+jA0v>wF!J!&h(Ohot2UMWmmb{F+V;ppmt3fl z*(GNJC|oln0uXoN+J1C&baYWFpIat`8sp=K=dVovT{PJa2U((dDsM7_$9F|t53u=g zd<*N12FzEhD3}!Z`*w4%()>}q=)>P9kLyJ15aO2LqJ*2D?5)>tTda8XrnhpS6B&8^ z^$tBh|0_|{_;|4punA`hZ&j1#taJaSxaD)j3QUGwdUYl=X%VJ~oWcb-3(Due)9(Gv zKIu2dAEMI85{@Fw*QC>U>1eX$mPo{gnG7Yfqr~cN+r_|82>Y=C1MHs zrOmJy($#W`mAekDf46y0)};`V*@`t6YfHP`C~fITH0A4jG(lO4S~QJPlR9hO&}&i< z6iqs1_K;|`hIs#qh0tU?nxZ^Q$s+A}+^T!ClHc`i-OfYgvj$Wzleb(o%+fjNBC@iqNU zcTW%W_x8fQcO8K{ZoeJ6JG=1~;qmaEg`qU}PK1zGyjtPL#OgwJ1cMID0?F3jVUtNzZy> z;mMX_-K59z1QA(rW~rkB^EkP~LV<4p*UnJZ1#7S|D64tqwaV6j{%V8I0e`-M3s4;w zuu8cT7Zy5iTU^@WjG;d#u@(_cY?CJ6{`?X?wuAux-t(u=z;iFW0Ou}V#6>fKciuY* zeYmjg9^3_6j@*F@nI)jL8g^RT>a0lEENg+}f$y>iNg*(Xjba6W6oskjDVUq9qTrc_ zITSwA`2OrMh!`S!)M5sX2BN8+Xh#Dv?NMMijlZ(^b0wb6rToeLyXM}|!)EW`gYjeDS z7Yikv)FE3P)cw`m80T)e@k_4^1DKwjf%8KbU~*~(Iy<|d2Q}aATem_-rDCi!&`s_e zv0zJk7#EL%Mm>VzOPAong$umcnF3Y?=gyylOP5DbyFSQ^90_A~16j+f)k(NHklpia zQ8x>`K$qCaCW) zH=0~{w9Urs_;YF8cc;#tg^7s?*n-M~WF-YGLoy|wz^#E;p&)7l-+b&wW2t*1jC&Z3 z4^*x`P@kUr!skE#`8PlJxz9C?q?;xPuAl&_#Of~viT;?i>(>?Xaz39k;R5pXf1wyc z6)lbN$t&>m)8B>57#k^uMcBQ254``r`(V$m9n_OO6+(_x;6@g8()rEJ&BJ$}c^1C= z{byigWE46&I$_t&o$%NrkHY)!zYqF*x@|T~mL8u9A?=RR9s$L_aBp%I&CE=*dxy5g z_V23B&%+chqI2^YBdT<;^`p>zL@prXLV-;Pof3d#DnsyT`(36yHH&P1IL3hA)nqoD{M^Ol1MGmgzuF(uOy0byv(rxlI#v_ z;Qb7(1;6p&U2)e7z4Y~CmpjME_u-s>;zu8S^c%SKN`9A{A`GZvwi@dnPm<`f82sD? zI@wUS-PuP(-#0um0$={>*Wi24JcDkMi0fp!(DInaMfj&a{V515rIcUI2%a0yDlmz{ z;n>@6!^tyeaZyn)je=nqtrOC)JG;B!!S~$~fIAGi?@U61aczp+Pqcb@*(J*HNn!c^1Rg&y;}Q3*RLanaN{TBy7S?6U zBXu3k+7*udxbKx#4r2;y_WMaGzH3PfMk5 z3p9GAHrk!132TGNZyY-Y&ph`W`s*X!CV~RYrb`Hd;9jGL9eccO_}k0c-XY2xrY&n0g{c z>N2`qge`WCS_Q5)9_D5|cQ=O$EU+v!n%N)JT+LN-oe)WXU8>aBwmR z{uAJXEOB~}Yc$aI9xE1iXtf8hYu9cV*tU(oPrp+@%gb;AiY9?}^Y5Bo!DA&5Z5|%0 z29ZlzvdW9J`cfd|_J-CwpvCyP@s`l|_+TT7ej2C7{ehHavvK1rJjPpv6BPeI%09X< zdk*pY6)guox80Cp7xfnwi&z`sL_+bo{vIgH`V zw6G>FAZ{1Uv_au|Qm2R?rIR+p-19xcJYZKqtWvatuhDw13WVmsYqK_Zs9}dtl=?Z0Te^`SiMnTtFP~ zJu8G}`qQzyIy*U?{-FmR;7mDpJi2ctfkfH#@XTe)*6N+0(Jo;lN;AO%n~_D@J=LP9O*;8g zYera?roHYR9Tj-+{r5wmRD!WFv|i(gtw?8K1}Kz__mgUQ0)EfWWZj@!O%~9CLIp^m z*+X?doG2rMl*xhw8Ve#kCcQT-=n}fSx;YtPTi+JGFV4au<$}ILu2bg)Z2CL$Z?1C) zlfEYKoG1XL>{ubeOQVR+RoeubYxx=Ft}#kYs%4|B!`{9=a}8XwhSp7j*0&^C4vWoQ z8)k5?wJ9?|%ex1anj;uzNeLtU(S|2oJCMG9)-7h;WvA9$Q zaUj>!V^HCy%PgXuvjttJes=zDx)|NKH0^S^0$tsl5ucjM!p3qq^Quv|aUGFML|ECx zu)~-_3|tMa0Ewd zk+4pQVuN(N&~_F+WZBSbcGm$59%rE%Ath7mC$BT{dAR3vWAhlK?`lg>+je}e*8Q_Z z&!o&$=c?wn@o%e?OZeL%3t@Igww|NTVqi;B^r={V z67T2(ICM%z+pvRqgK58xH;Epxbu*=YQTu30sk_ObU~^AzH!o0e6mzzdumWcuHA2d0 zQykQ`14uNd_AU#XXwiP#&bvI1NtWvdFr zd5x*o4lNhaz0}4WXhG{G*0)IOCjlf;cpf`;9Ns-~g5!(iEF9t{7^{8!p@-moM~|ZGGi*s3@>bB*!i_M; z#Ad7@olg5it9x`3Y^9PNyteGMzac^hf1tBAbnz$Am+({Q71$mKW94csHkkOy;9@A` zda_&iLCypz9Lu!*q(!^Bk=hn%xTRtddeGfMlZ?`%nchXCu*8Ke!Sk)x=ULmO(ZE&b zV&yJES8PgYzAB0BHpm4gwXuZUB54yK78?j6_k07rlxr3&L$sZk(z>9?3LvY-QTDit zr&Gs~wQ*D59zeQ1cLA4iueNHlHw(sXE8!x>Q@`+~FTvYyy~X3Pf^o`sPo9LI{_JPr z;DOt~xr)t~TuH%lXDv)E75?34QTV+0$}1>*DlCNN(aQYZv(G{UU++V!Xj@-@nkba- zlO>i>oHi>mr84*04NVQ{I5a6V+IEB!eT70{FTO0|gEF;NKRQDaZhmO!9$ei1TqxjR z;Oer|g1C(+hIIPi%qF|d1o_P%CfCBP8pjk9ApW)zYMO;Wn5d9Sz}**P2{jjj=oQ3+ zn)WBRn`&QCPw@n83sgOpht3uAx_TXHEdjnyxwSVne4N&)1=B>C|0ripLb^q8xiC20 zwDplY+6}?d0#L&%ue}Dx-+2e7t8*|jUxn$pIdq?$hLb1XgL>3pQzxfa!y>MRCb$Fy z5-wxo;}{<;K@I1qpv*)3tbvNt`Qc&y%rQc=wyF2S_Ue&^%!Of#QN|Ld>}XV155n|x z%BsEkDFU;z+Y)rc1zJ6f2QPE%K^d~dX1!%2ArnFoPnPVj)Tw`2E|`QjvPd<5Zj_SS zfs?OD0c)!%8_nA2$s{`o2zFd++9b5*uhXAA-j+V9(hi%>h#zM>IdP zf+x&ko-!lk9?Cw9)zL->+1TFAKx@F?o!_Z5XSldolDilmF|HZ({``fD#$621A~5+V z=D#Ht7rHJ)BgNc#qWY&@KY8WA85;TK@HItmc zSXFnNK7G18J2mxToDV+{il9eWcZ`V(XyfW(E>E#xixEi(nIIf+pwqBN>m}=fZuB50 zVbh6mp)zWJ)ApWFFxw3dqTEq!O5#@qF)<~>PF>L{b z5OE!bK>{O}N7$90NnG9HXmoBL$lO5-6d_c`3MITwf`v|iE^1jQa5mmNy5lHO!3&#J zfXI>(L>9UOLkYrmxjZm|PtE(mp=zxuK`H+s|AH$)32eDcy74un8YXf7F z0gsOLEP$39rrBby^L`SOc;*&@n{3|;t_dkZu~3A33vSnfK~efIxzfnbu0>Ozd!@%W zf2GcEOfMGG!dUIx9p8N@me5{Zd_-KO34L>GS5_ZcG?BtW!qD>QgfquDK>@7wV4q{K zgr(M^;7l-=wJ3~Bie@71N0nT(5Vt-Q?Mu&Tw@i^egnJFS=hgLU&|gbM)g)X(wAht( zN7C4#{!|T&-?;fCbUJ!ck6i1-bYs9NH+0NuZQhg#pzv{uF$pC84RlF68ZG|5$T|i4 z47ufzTk29bzu9CG(s(|bII&3LWS5eX$V|yUyo#34OD~0uty@2Uai9<3kvlo@L7G6f zs~3?%tZVOs5w)ji*onBC!v%HY<%kUU0BkaA7AYyv)nReO;EWe-JH_d$Ebp zR+|&Tb~z1LAtBagb3SG`+Qc9@J4~AS zk+!@LGOJ+`uGNOMj-=7aAq| z5L>uwF48P>bn|$~4Hr{%ZT==yiSZbb5z2IZsZcjD#oJ_A&g0)e*N4WaV;NtL*~RHb zo0cRscX{$nU)(r_G~1T$g-n%j+`Jnv{4Nak(EyHDMF?@nypfT;L9O;9QmehpkqFlH zW|t=ZamPBn-c{8WGQ%PZIzuXDxYltrf!B8RT2V1rg0r%YhF0k zW~7x9*?b%lN;TB*YtLcc%*Io z>}tQj+%9tClJMy$mtkPrRycYGrBEN@B6PzGxcHK6gx|t=kb6x$gH1P=@2hD;p;Bvl zf&P)kAMyghv3_Jqj7}|ewu;Wob0Wt_($>feElB7PpNF$Bov+l5M0v3LeSM4rblw;?9Wok+yQ( zIZ&n0P1z-oT97L9wJrjljCm~+vckqRIBm6Gsz?uQTL702ZK~4ku~rlha>4Buw}lll z^h7~nTuSVMA(}nYMs~A!6tGs^`K?Q`wy~YSE}Y6)q}nn{5Mu!D)F6I8 zD*&>BU`LH4IIVtmZVqNJmN7ju4Kw(gmEbUz82IZKV6i57;>%c_`$U|GP`-9T;GnHNr4=hx59Q#UUFpj%psFZK)BE=B-}g`Y2f zm^A^q%Zbg@DxpO|ynfU^fm(kI4GqD>l}VVb&T|7oidB#>Vrzvus>ThNnw;VezRapk z4e4xWTk5cCl0XzMxXNXv=G>ExQc3BYRVthUqK#XR$DK@-h}=K?{Wz+#)k5cd=InW> zpUKFMbQM7>jYi<&$A({E*vCr*6sSv7}a^mxN<*PZMs8-_iU&$il^3QB}{T*T@=0XF+!k&(F3+;HuXR<%0~)=oIOAg0@@>9s?g zSSDdZu%*DRcUuc$y;%%5|4DnMX~;~}U^PVh-m=uCu>&nc&eAaK*0g9Pc7fr!XDR&y zZZREOmmxG+DOVGa)i$fiu4~zp7KSHI*#I&Hxur5<#Ker!Bk=d6Zu-jsKrAYN^4r}8 z_pMv)r*HrJ&e{{4nWgFq-Z=gieE+%Un9ZE}E>%hRkhQ`B1lY~RQ8^B500((lrrU0) znp{ex%uozgnQIlK6g#FoFileelO^VoovpEIT~kJb5zg(Wly$4xq#|~qT4GvB4Btgg zW}zTIHE{&)Ih3$da48te2cVS}hZ6+Ii(oCqG$BB)o>md3*_%42h=Cb*qRk!4S!Eup z3%vII0h|5TDTJ6G?&8IVL=t}n?^THx!etefjV*{=nzC{PrnZiTI%CeGAW%UMr=Kc_ zSSXNdj5?okyeNP1@)ixjPR7JWpsZ6beNK47xP`|Bpp8&a+Hkv(yMuiEf>Kj$0a?f~ zA!TC?x!}IIiVQh+^C?&m%Cc5*oY>5++$ULnl}H1~vPr7wTzsefLXax5IRWMNWC0Cp z3r+x;Ot4va`Q?}4i(mc%GuH+fJi|M%h&9uOH|U|Xb7uNXe&&bbThn{Q&ThW z>KkvuduPs=`U#57p)x>=A-UNMVP}>u@9qiT7g|ggQxJr(8DvJ#WL5vRi>h`OP{wx7 z&yL+3m6SlZWE;~y!no-q$10^Z$qA)m0ru?P1@|1i3o4}|7ept^^s3C}gv)V*bevK0 zL@QH)`HnqTqcmR^oIB1Pms^ln?*Q@CiJTB}9s`dXghcmu73B5BgvbhthKCP?O8gjV zNF6eesn%l0KWucXrxixI)Tuj;;3gThO!)2J{atQUMya_(w_hw44aL5cHicSRP1RDh z1Q}zpwOnm>n|U^^WJLPj2q$YPxmqAffWY4y9UFzI**T6+Ie|mxKrsbZFXS{)K7Vy} zjOVUOKW~rlQI&~>sU%B&;OVW5cH$Pqri*Cz;hHnE|#?DgdoVO;pe z$H!rKco@e(0U9=CneI8oMMxkJy^>)9(DoWAPAOI*GITr~A2j0F+;eODaVmGt8cw~k zhP+4Q+BC4U&RXh*8pt-+3o>PhwwFsKw0L@>b8!$hK_|1e7LF^A)dgPb zuCaRk+ASeUMwl5M?kg(w2;R0kOggf*MRmHxtj^u+T!3^V!nlXD^=*rsyFswqgl7Fb zGb%`q(^RVwr)4*VHEa;bJ@awR?9K&2G-TGMb8ShpD2uF*N6Od6SyzI48zr`$gq|bx z+Z0H5a4tmJFQ<*t{!%aR<99SFuKjfOp~=AG;CiI2a1A*4ZRC+nZqK^`o$%Hf@g!|w zD}j6I==3{U>9&TNyFzPm9dWiDDIg_W+}Yv@!ZdR+{Tr2L%fl!gM)8nN;Q$kT4MoUv z&ShT;Zr1=DZ{kj>lujL(eQ2D~Z<5AOze|=lE$rQ0UEF@2NIkoHy18{isa%9gr2{%U z%p+uFslc^B#X^bCi))1JIe|?YSWfnH(Y!Q!awc66SivAUlP|TDwG*t?RThNT?T%Bd z3`O>}8H>*1qT^G#d^T?~Wf~TEHau1XxXx5MOC`SK*J=rcWg%|UiT){E=*le4^g?Hh zSw|NNqm8O%_^o3b{dT7I61Hr=hyenOVI8>#DiL4giWkb-$54^Cp?q zln7_dKzbava1)6tE#?%Rp*kgYl_e3z5S#^b?PztQI4MBqMXnb9OQ|mm2`XxoMpj;k z=a=V|gUqETtgD3TH%hn=3QFIlzZAbmmK|6Duk&fQqKVq_mfGQq<%bGw;w?J|2ho*v zH#b3?n4C1t)ws!@;%h>liejv6rKnR_Z`E#4Ktik9EH zwW24778A`m$Osg7>FMf(pZd&Cz>^<%0>-agF&U0znP8y5x4R39)*WZYgGenQf^%b$ zbz;cb%_p4MCKP8NvS3gq{hHacd6ROQp=HjX&y4jE${;s(EZMM2X$Ipa1}6}-bGzBP zHGnk!yYwXyR=ILYR>t7qI>%;3()K&-A`GtE5~AaC^TymjckV+|JT99w7nix2n}Qyz z1-jo#6|@j#@~U065W+8o(WOfV@vi6=uVa3R_l7Ws5y7H;<5 zg0f@4YB17etuYINGI2+1q0^$v)~3x|bnY)8NJr|S}NcAVf?0A;!b zHdBs}_eEzKV*6)v=*)j@(rzt#HU56Y4CVn_LX;{_oOLEf<18i{X91nlbkohtB1=qY z2E`|;^#=UO7rzA0J@-5eY~2c5`}?4$yN9iyPSpA-Q5C<^ zjpJJAGNG772fC9AQlup$YjJovMQq{HsZDIh-kVU^3JD@QogzcVd6Hao>9^5(sAa#p2-$paOlukn=U`{UoxyW8FgEZb^ zUz?#WI773|&Y2|$*M}&ovs;*d&0g57Sl1*bq%JrYm$L1|eLQIOL2XrQQB=X1Ew4%l zk?AxwHnumMuYDN31?6R;Z`Ti^H zujha@2awSf6`E#bX3o&J91|QzM?k0VsrZ$b3S$)|CgY8G!H624w9K;?hG6*eC=-&B z03zgTL`(%e*f5i}7TNN5%`KGKqUa{EITqCjQ9+$_vht8n)GIX*uoz(f}!2_V+c zZA_yS6wI?Mu(n=6Ayh7xp$lUo-6*)oYB+rG5FEPg0Ju@Lo~k=cLt`6<02AYKY!jr6 zM9f|xnhKZgHzCbWaTbzwXNg?QgxR#ovf+4{>7m2l7AF0g69Q~HGKGKwVa8)BfFPF= zpIYUH>yTjFW_A&mcAuQ)xjfmev9?-Qgt!sk(8azwU*lS&6gF#B3e$Eo%w^yCM1-3G zEpRO?!BtyALqp|2i%0P0J%XB*OluhI$8Lh~Po%%Kc}?0h*#KW}AJ`5b{=nm~t*?&- z4VnKP7;vW+#vPRo=R*B`w9e)w~r`#IQ!!F>*v>y}foxYa$1oZ65l)fBl8%`HgM z>ra1cn2XOj;SMcxDpd|>`dTG`+c;pHk$Uh<&rZYG_ykN&PQuLW47#CeY-w=p5Eomr zFgrUtpr@x7$K^m;w?@`@V6zS(H zOVU_k8gd@$Y|VkCEn&AhQNN(s**VCUAvi^g##Rsp3x$u)N*7k5ka?^e(gYYu2(3IZ zfvh07e7Q%|qYvY9utl0chWQK@F@jpm`puwQq;w>?ZS=CoOt zSRm6GrdhZ+;hr8Z<&|rVxVg3qxjshrnU5%l$|8WyQkkCvx7LI8{R>Dta;7t!kEhe4 zEj9g&!kqFG1Au696LB02oaUa<8kty-Nf}q^f$WgNeG@n7dC>@XA*2OzZmtUF&Yg!# zBco^)?XdBS{KB!^vUKy%dfl|$$evLqlr^N8%y6ETHzal^o4!u>iQ*M>Ym{3ItrW0- z>*UNV3Y}4yn4IFqaAz+L!O;2hFgiMFYP7gk%Gc9htvD z*}pr0oSWMHzG!j`=FUQLs{afMpjtgLy{)YK(OGbGO+xD)&mT8;nr*RmM%wy>z)61m z`0=Z-gkE|njCSle5G3kJ_FPjDS?*Su>0%d>+#)P;|86#uC{4KrM{H_oO{mwpFf}yV zrbo9<-XL{lT31bWP`Db9b}DiGC}W(3TwNm3mOPR_%;G<(uO~67;Cwp4iYJ*PP8B&7 zm4o8i2o_2KE?9viwYDtH+Kv^Sxr9hFb?QB2nRm8ogyTY_+0Ws^>-z0vi(mfQ+}h=# zty{`1;QU70YaUo3Y$zkLr~Rp@RoIbhY|XTtK!40zfY_$^Fe~25G!e!?FZBpL$;VU+jB}zF8rJnWRA~ z5OsSRB}a8*-C~Ac>-xdMfrKuY)j(=XzG|hDbLn!5G6`mF&r@eE7*6ODE=a7UMj_S)_`x+eFzn|ULRO3XnK@?Y|EJKbdT6Ph`{9x+GD85EL zlxirf-+cQWZsTpNN}YNZn6X5d#2~)%O`LuDYIQ!36+*E>9@NmdS(!TyZ-%UojSZ?q ze;mJ160kX3YuAFbRwy@mwVm+99N?6+JV)G$aSao~ITs9F3*`Ky*}+A307ZB#YaRw#D(eT<`8o30ozV;ft@ZyVbVfZ2oA8Jk)Fhjdedqc@|d_fxf z$Y(&ZKq28C2I-<4;U*GnmxqVp{Q2{2S$+6}AH+q!zy!HE=T6HRysPmiTlcd_yDw{7 z?m(EDo`UZ`^9;QH#_OE4Q?kqt(g`7aO))JefQ*G>+Jckdp$2~=V`Jtz1qFLuGE1CU z8Nx#QbMx__8v<@;)zEYB;Dc&qme83qMNuxl4+rjpAU4c&UvS^8;M<6Y4zD9Kl zOPlyN1SYry`9QKG+cEJ$>(H{6hhx9K-V7n<2BL-HBTqdA`}gj(?Y*<2TKbRNOysVl zYeekK^VK@cqYrgb+A z=iKJ_*$i1fXr(;&gCD?~Z@dW?Q5X@^1!WH^X;PfSV#o;{v;aG6+fd=?v>k(E%XY=5 zU|Ty#$GVN*r$m-x`FWT3JuNI+_`U;F-@}tec^qf^Q5?ps{u=# zC1@>_Ih;Gy`g~5gORtWpArhI}F%6H}ga*Tn=n`U7O5Dolqk(_75Qfk?+`aI*ao}=& zEht@ah3>fi{ti7i_i?;!y>eY8#NJ%UHuU)pH2CZDb$)$I(mzGJO-9^sy->~?GH$P| z@5}Z6EV(<596k(3j~p>>CT%(Dz)<#Zc*+VxQsl{P8P)1AN8LjkRNFyJ+%apweSKS? zi?RsYgrFha(yXnoI}n>jv1Ayp@li!>{-sx6gQvguJ$U=X2}6SLHbHbS5bF}fEl1n}O>qSYQ@9OX-2{VFO?RrtsUKLlIx+LJ|}v+=WY zz6#%{OKvc)vkt`Cvb%H5j-xSBhKrF|v;`L-WEpN?(xA;-y&a8^$7(^x3DkLVuSf{ZO;7K^h2sMtb)eti0q%nSdck%xa|6qu?3O6)Qf*h^yeQ~v`?>PbnIZ+Oy9M2EA=gc5>wW<) z*esM#D=ieEyQdpeVA6Makx*v8&?a<9y9&9O{ziesznyu`@LJW-HTmodFTmHn`7Jng z?wpC?05PB!abd;KZqhI$xSY?RxDKtmT!AgUTTo#4L1$+t6i|56*(H^hVk(+ zn4Pb3N;g|esSuFHWrYhhHP<_TaTxyeOJ6~2wg^A+v5!KzV3{s-u8AV#6CPFqORk%n z2kaiS>FJ3jGIe}%(sJC9yB6~4Q1*q+{WuroI_nN(X7Si$DRu>e`3=ra4JOt|nQW9f*5BWc z*5;jX=)i64KI`i4;@UF`x|3x@#i|Xol*p1ApP1m}hU4$N1;dvv@pevx1FN*Kg+-~$ zf>Xf1{_StU9e3OTcN{!qPjvOJyc?Is4QU!YGK~@5bEnu*4<$z@#6nN0)PfFd9Emgc zwC#@sqKU81@Fqgqmx!)kU<-w5fKflB^cLiVkB6MKrQ}3OJL03X^FBARy1y zt(@kW^SQAb4wVY-Dru>OTrG;xJTmK;mx zDoVd-1!3R{b#>OO$?Usw-Ft1poV}}=3Idrf!tR+84bGiE58wXocj45jQ*1>iCdgxG zowUg`EMV;D_WieEeD^`vy=xcj+p`-6wrw-qgfeY!mnu6Z)SAZf^O@UzEoLo8JCW6VW|Z>rIZpT z3oZX0x1AM_K&ID*6EZB>ZpccW6%ODs{&YGwI0ICf_kncR)Ye_udM9pY!gIyEmz-S} za$-WOz|lJE{OT>D)rAsbPM1ooBP=U~dZXwLw3!|c&>~W6vT5?#0(VTUH=xzXA+2t1 zZqCk^Y(VE-c6m-M_w1&e5DR&%oPgnP3+GCMg}(tNF(R_A7wY243%EA?Sj9pC9G_Os zQ3#HsY-P*5hPG+@j#5UL*V*5aB|bFkG@|Lrd?h=s*bs|>Q4-t&$Ay@V_?G=@60Xe7 z!1sUf9K8MR38<0)!uwY&RnVG_*tJ{4#dK@WHqKuAz~hg@HWUt>U0vvDZ=}jk-fQlX zPC^^|A;ylqJ9fhMty|$Pv~cda{V;qTh0L)N@ABA4>;NVOWp;iZdOFJR#_>1dzPIm& z#~*$aiYvJ~L-h5f<3mn>1)^ z1J?F)Dh4EXOqwO946j>=UnI^tVL9qV8qn2{r)0WT@b63MQsrz6AuGla1{AC3hd$!kKi!NV`g#Wig0;T9V0%J6bu5*9J|ietkWnYvhKY2( zl>@X}WGr`FF6CO;9!2B=tJUV2wIB#gS58wLDn_rvXESg zEW2Ua{glW_(G8^Z2CVYh+{Lj7&q$k&`~NwrBH$& z``E|f$tOPu1tKfuj5WnVDkv3gVBh{&izTawLylX@7fevzj*}u%&}!UZ^2ZvGgV)Nx~)2OC*^__ATy5e!$NNy6beT}zil1i~CEQa0bv$AE4) z@a~NDSi-<1mBwgn>RzGLy~6r;y4$Z zv5u5&GL{zN@g#K>@itJ~;zBU)og{57LBfZs?B^*X(rTOB%G+vxon4()J8V9a)tHQQ zgir>#SWbQ!$sOOQrP<#A?tSauoBN9W+WM1EPUz&ccDo4EgJM8$op=Xk(Q@X>@{qDC zBNh}Cpnu}gN8mF*{u3ZM!w{`mBE&ZhT5$gu+@)*xa1=M(Lc-4FA}S${AolTxAAz6x z^rxYxvjWAUQEVFM4lHz3poZr#F*5}x@%&6oClf5!dK=srb7Pf+0gX**g);S>+S1*F ze|OC5j~NZL7AbCcm_BI4@UwXk{ghy8c?A)UdxhuDP5L+{Y1Xnpo3Yu27FH^=b8#v! zjBXSJhMx5Z^!GCb$D%@r2utJI%oBLO_He+DwG30`?o+hegNAH(PY*1XQA26Bl$qo- zU&EN4B@i?VE}NQa1&>>xTH`>jkBr-H7BllXY0uOyfyg15O_?U6GQM|h1LL$O`Py5v zgYwVUi+tUNFuoS+YRir<7c65Umw2!)CCw7hx#Sd?bIF-D3&d1F0*Hd>%&|ob61F8n zf8Q4P=tn<_0wQGVr-TBiHb2Y#a+Hdg1XM3EKgkLrONrWhfHqxTBkp<|7 zC}bS_aVh00v0efrcsLP3E1T$GQqQRXnqo!Lxje1K<`@%t==i$5b>^}9pu2->%jD3| z5WC}+vV=mERuAGgido?s*qDY#JJ6!t)!CK#_j900Q%31Iq%X z&V`fTt|4v3tW|C?;62j)Nazh+7=p8B&!tva-hWO(Y~o@wlfFd^SZ)2ft_irbSVOx* z9CF;H6S8>OVk4?G2~%6aq?-iP`h>d&Qi|N`fZe7emq%a<;}>bN3I*#?nV=RRk38}y zY}>XC3MeqB6D!@ra(5SZpG~Yg)^T35bE(A=Qr2}w>$i0(OZ zCwJeat6s#<$(1ZEtH2mh;1C6suxZf(7FE1ju~-49v3_Vi2f?&bRN&UEu`y2_Ky4#pM*d{!%u(7dIV`m54rz%tIpsmZ$WA%WSHwvY!?ulc* zz>CL(Mn;M_AU_aVP21FWfNhZC#ZVq;7frlQ)cI3df=CX+Ct!X30JHNoW;otqi{aSy z!0D&fMP^$qllzRcRZ2~bl&Q;#Y?>+si^-y*1tYOE{aGV3!R{K?n(>%KcQZ9L1@D}E zkA3;B&V+7c$W6^8Q{fOPq{JA3FuHAX3_8WWR3#M2Tpj0gJ`(nAkDb>{Ak6l$5FCl)kP}%m~g>XTq zkA;`jC`f615Q8SQdIQQhZsWvI=R_!A_V3vXo#hJ5p!-ehjQo}oY)BxHRo#W-#^C`suGI=^b;mjPo2%aDzB{?? z`Td$wx?7LI0#I>)*3j4+E;nlFK>qQ4J9n`=A}a)R{eJ>>ZG>;^)9anm+7=WrRVpplWws9>Ow0F%W<2?vD!-d@R#n322fz5s`g(cXzeHZlg_QTlBEFF>W z6;UTi{EXaXG@cF9g=Pzk6rfngrhT}!`D>!(-U&k!WLh*h!ArGh1+)MgrtV0}lw6hD zeMrex5XZ(qr*TDAl^k1xosOJ~K(Q+B+$*gqs5u#d{(vZ<@h9xuQ=HvL@u5DvuI_$h zr|M%u%OUOfBAQhLg0xw`pv`MmBm&!ZUW>D+=$xY=Mf)x)gisUt>A<*cmwdHQ zdl2Q!z_xxkux~${Ll+pe)-K`%t4F4Fag3HwJ;Dh>nr=>bw4&8F&1hqdti)}=ONDb` zSSyDz^(d%aDHKp>9zdUaC#=R&zu27R32pn)IDw^8zMaj9)>t5c#zX_H64Qp;2y>31 z36sUPePAnEt|gAmGBZHSF{RGB>Rk2t*ssJ9T0<4%Dkiptgd55kGEs5~O1HCh1r~~i zJhXud7%`yd+hi{Ww{WG!)Gd~W*~bcMX)^rXRy&OCP!cVsUNc{w1Gz07ktqv63QI=R z8iURs-JGQYcw9YPGePH7cX!Xl+Xx)@PPIvLmkJ#O;fM$eV?v0_y`{%7sJZzLT!3z$Y;e7+=5(h)Y;vt*y~^(+J3%&|ADMv)50{Bb8ie| zwq7DTZm}?$t0@a`Q6|Q6VyvE>o8|3n$t%-rjs#C{PY-mV;=(HdlHL$Xp*5gCsCnW z^iolXn%kqT5UPhEhAq?}cr?SQVT*j!s7JWihwu}h{uH-PCayTLj%w8^uO}wu+W7ec z=Bpw%hokxtHYn;I+GhFKRBe@I{#Yv(xW>e}!)cO1l0G~CxzQM7cHdBEQzrkUYINK_ zxP3df8!v=G`@gFtZF;$D;}#FY^q|ub8Q5M%Zt?VD2$~W;@{6NsX<_XEVUsYF38wdL z>F4526HqrY$GJd-&c{ox<&aO;Jd6jXy^>5vZF{E;;1v|H% zybAYK-gqZh8^t$M_m{|Ad4bIkUGZ@tb4&9OwAqENtE00-sX-nkK6qR`^2PA&kiX6eRE=(d`qBTA%NizJF**Umxsz+;cXi?6)OZH37V zK!M*H3ME&YVNBK-n(Gp>LOr*S`%PB}n3}rmH@7}=X#^VceUXjiMu)I07fb?aI%JZC zR_N@6-Ge*f;fEfCL$@Eqg{@#CL9O?D<%`M!ODJ2{SYsBs0FSFdP2Ex8;TC1q7^P#6 zu_!3U5gMu)$D=G=L-*b^?EjnSGf*tjM!Y!gM06Fz)C zwwaz*%NIEFJ$La^7Y_y9l+chFLixU2%a4+F#q7#52}uh973P-HWN_**nnKcs}2@K6lXyVkur!r{i#nw zPj4T*aqLYP9UF(4xf!NNN$g^;HMFGZLh6bTLbjxA1Jmn}3ypfAFe|b&ZH-N9W77|a zh!}~xjy?|yru(FM9dgkhog1+$Q;P5QZ3D1p*Dfd*N?eZt*RpWsky=6v4-|5RzR1}@ zV!?Me8(M3zoMlwN`$q0BVOuts?yB4zoiiQd2E}Iz)*7<0BzH``h~c_m`nJE|>;WtU zFgiXCui?0*`ZAZ^Oud|Hb92nDv1jkz+#$4WoCnt&$k!?pLQU~aTgni~mAT_m0h6AY znP>GzEv<=jiVqj;a(O}r^XPf39@4m-eXp(NN!K4o%4`zNpD*m*U3L4nyZSPzM;}7N zsnabQ+83uT2{-vkM~$Ke`^E=%Y=_VM_^08i4?YR+ymJEHJ9C=3<6=su)%nI?wrJJ1 zB{uDerDgXG(t_6Bu5Kt6OHi&DA9hDa1u8g!Iw}>ec&BIKT1h~r5K8I%--=&z))2kM z6K1m2L}ii18w3(UMzBJY3~IH4nz-X&W20SN4c&XPm^rp0Z0|0&KR(7Tk8(dCfi9%{ z6o&<`GKdAndwb8l6J+Fq`_6a22dB=S;euA$ldT}?>4b~+_JIM|zi+Q$skT|5nS~D5 zNU*QdEYQ|dWd$o(el%oOld;NO!UG+bYUNz9uVj+cD2?HgB~&PQcic6jjXvo%rLj4? zzHpF01SfE9OOp}^ZG_NNkBS?QpypjL;!Jz5+_JEY5)^aMBCXva>!ZJa3%ceWhesZH z2~YW8(sf%G_5%H#w}Ms5k|PjO2Jb|KpLo5~t87bl;d&s*_zxm@7~ry6tO ziAY^n6IUi-9v4*Avjt3F+SIR=x;)G!b_~-1(3G>3zsPQTR)|gu^|80!hHri6+c0m7 zQ43@xXbSE(pbO9I_S+A^HjD|mVrk*pMF>kix`Z{fQ1F`9iA`=WW5l*00plGILfRDe z+<;oi6_$nxoc^O;Nr|(Bz$l9@MZ82Yp%q$M9?j6Xd(vJN64@R`K~WeQ_(3v1eF#A!QN8dW+QyZHb*(bJiOc%VFH%$mSOe_I5 zAKYS0T7DeG>Gtj02Vg74T#8mZr*!(z_757Hpk#q5*nzH8awuT!n>OO~WyxE4XK~R2WU{+8=>h=2>UY?!n8xHjLHGo~`pK)z@c&r0m!TqLp!J zyTstY#en!9O>|ngq+M`m0U!<339!vq0$?owV#r8r8wY7zuq1$}AeF3Wa+L-mBlo;K zHVVhzeha24bsDW%V%MfxG%Zc6kZC-%Yr|oGiQS+knSm}gF(oi4`#}WEk`Uoy|HiRn z@W+4h1$gVkiPUnS`=+9pnKdXXb@=v!aNBLSv3oVKg2VOvG0hNRNm|L!(*7vN_hv0T zt+F~H*9%EmE;)+VaJ+Mw9e`L9~0X7kO6A z@0$!`A)2(~m0%?nFQ=Q6`!F;aa8%>M-<76Sfk^x2n3H4IiZb0ZseXg~{Z5O$s9|#c$#DnLs{k8ICxwycy#G39^^I}_7rg$Ke!0bKHJEDr&$P1Ol(EX zYY@K@WXpobwWHNFcJ)`ab>CdnWx;d%jR2XSUMzCdYX@t#wqHvSNGp^AL-P-YF@i{4 zsa{HRQDeZ2%}lN0VqCD7ZhVYfx(xG;8Z%zF11IZ{8q(D&WzQB7$)Iblv{{gt`&LeD@(QgIP)GKjHw>Iuq?$fixjZ9e} ztfrJF@|9^)O=g|bd&(B%9$hOH66p}PZ1MO^f0tTBigi{h;McipM?Mk7xcbviQXdej z9_X{f+xZ^e=Lzw-&ovPYHVL7q(b$PMZLi?$dUaLt3y*ea4$`fLn(t~x7JGJsVnLQt zYq|U?Wjyl2LLD%1v7juybUPULA7$+gY}>|~JG)=3YsnPshNi*Zrh~RYcaa934E>4RYT=GWG>W@CMwwYAGnlwDXaK+zC1X1sr5KbLI?*@ zFUAh=u4w56&?2}dpOFpJ!74y3^W665ZMIRmH?ISh9GI+Ve-lXOERjJPFWI!jYTb$J&J0}jqnRDk@V<%U~{kT9LII!Q)$_STY?wXJRES1u` zapAOfol)WdWWja3K13?}-~;c6lc(Q<6Q@pLT&B*%rW`|4niC2rQ|`r=Uxu@1&Ts)T z@c-+Z~hEIR;Q?P4r zCo37QfgD+F3DHmS8e!U&EHbQ`kP0D@jUz5)z_`r8+YZ1>Z@dY05*SqUT`ZwXawi-; za)e!!fyj}Pwo$x9?)tfSWMZ4&CCYepjDX4%t`f$ZdU|@A?t#b3(Oew8(5arg*Ac#b z8C}Qcgjnc;X%a$-()X5RP~_fci)sAsS2tq;s}SvNhDEPM^K4masBF=w@MxDL1QAZLL!Z~*#>TObd_Y50oSET z!x?Cj<|T8{vG__Nc;c}q;A0>92pqos5DFy8nT`#cGHtwWIYL@tnA$n(QoFy${zZ8~ zk+Kz-b|~Dk0W@dZJ@w=h+)Z|D@(QPflMDB56hQlT?Shal7L9$Kzknh1NQDz#mwxpJ%6;k>$5t0%o z9PMKg0SqTss+~Bc+Aesmw2{w>3zss@Qrkj4w^(IoZ=0{F*kxPhbQ6)bm!JiTCOtJF zJA#YW?fdqzD~HoxF;*nnDm32C&X8So4)!bKvMi%(^WLLJApXgpglC?87G8SwRc;Gn zQoGF^<#cS3W6H2anrz-!OF-ycCYv^_*r@r#)GLki9GT8FAx6b_yc{OM0zt?=*671r59vs*XpZWABVQPAs8#DHxRo92EvNF|} z+0{%haK~l8rE{mkV%08ybnbWEaRsI?^@`mJ0d6Y*YAIM2iwL)S7e>+QtvEmh5Y7AK=~t*fd=*aR6x=fAM}` z_qAl2u5C0o#SLlp(+FV%rnBP6*IvQ}%hiyi63k;o$lMsl5+2yP4fgKc%a+Q> zrAsNFo4G}%6REI?0W9#9O50Dd&~e#yyii+ZM7xx5yyv(mQ#|R>2OorwJ@sLD?2(5# zIfA}Jt-a}dYPBlInuN}XblW*~b5677ecIfA_qh`-6c?ffa|8YTEQBa2LfP)KZHG_p zMDm}TtRxJ(&ND#D3VF!2Fq@MfMlX~;sExHL3P$b@N;Oxs8(P#sFaeoouy zJH$yx)(joPkd21MWq}izwo@@5A47&|(3*q0(pX{?Ux?#|AylQmfm%g?%v}GQGVXJI zAU7+gyp#2jXtr*~$0p$QW5?jw@ndin<8Bu&4RiW2bsi1sTE$O=Vvr) znYyn<8|$a}nC{cG5L;MFP@0Zg>_W%=re~(%+`02`^5jVra6NF}efM%u7X*45p`NO^4IeQnHIODFt{8N=K$Zd><~pJJ9__8E*&C^+tk-((9=nM-r!>jY0Al zq+|&CeZ2n-6nKGXjchhMa2I^C0^yT=L8r_J?DkW-$s>^Gom&uZ0%2+A?B7gFU})Go zD6^25?P%pIGZ-jU@T2TMixivpi{O9%)P{ zER}X)Fu9c8@J$`}x%n`47N|2&l7WVl!h`~;=PzD>H{UuAmoASQ>jgE{nA4zX--J71 zI{jDJe@x&wOQR6^dYpFJr4v%ben2sXK(dx70%_@4sAo}uC$O}nlFphUwgk#>+PiBv zeDDJwfWx=l##vk}+$1cj&3d#42@Q9@sQ!m0xU_M+F1*e?C@gxrx?s=lUC_W75yfk2 z^*TPsyx7jq*H9o$@faZmp|hit-BDEkQ(_)J$@h!WlbM=Fo7x}}UT$Hh9z1L%qa{Xc z+Vxs&S}H8KmF=a>assH`h{!j^GhBoVnZ_4`V8U0!2+zd0S1ZUfZ3TDsA5q2p1Y1fg%-F(rS2b(m4SKK zY!4=Vb%lb>U%#|x;f_mM7_fnJl~L5qhMa2ID0 zwlFlwg8U*)`8O=x#O56o14ADK#=3TeuMytgrTXsVV>J1ExjcA$IUyyoOiuS4TLuRD zTR5S{*7|TWMDw^{vzhZB%O&u${*;vP+MfiM$)m2?+{NZygwb`|rIM zwr}YJK^$SiEIvfTQX=h@xWd3NcVkSC<1$j&_u4!=DtqA`V8oM4e+64<9@yr3MsP{f zyi8}ldFhylL8Q#h?EIs~XS9&v%6aO{890Aoh}|5EHw5um49dBbs3?>)duau~E%Ft@ z^zw0aHqu(ECKt)v9h1~zKckPd`HZ|G?!n58G!Oc25I7nkNFSD#J7q`b^l{5{z)S?z zO=w~Qj_k{Hg*6$L0keG5dnHU^Y(&C^JZCh{IU`frGZ(xsxGYRC*_%;9<4POro-;lr zw?@%6ae;&wcSlW<)X?YV7KzCc@J$H7fC^spI%36R~=ryN4yZ6rZK^bR1{Zl^)_uhLq3|+VgQ&W>L zeDM;DPmaUf>^#iP&!W$sijtLe%V?88!ajB5$4{%;t-X^U6$PI3t`;fbsxwK8lrk~f zBF21Ty8vlU{|#*xl356~tvPaZE|VCKxNz|z%%R5FSuVp0oHHIdq#b9COT%c2qBT>j z^?IgxVvByZNZwlZI^97uos0Q-Bb8Vf#isue#R3&%HEe9vr18pt$K2@U%P=x>31((z z*{$p{;7G{O_bZhO^!D~be{UbgsCwDj;&KCR+=*#TlXW=?B55TWqd2xyP_l^u+wsrY zH%)(Yo-!!^clnWd?P!1P(7_qVw*w8&bhmlG8G1&>-d<%iQV8D4sxNy7%SjFbySDQ2B|5%SJ)aK3V4&7hlAMY zhM+(;74FSdtDH4dtIk6eUsDIzdZPx_TAgD86l0()DXu92(}6SQPOgF%5^jnHMzf`& zSvvj@3Za?l8R#PNNuQW-)yT(J(k|bN#CGKhE^n(EAmHk!I4L01=#J`aNb!i72_0ic zg@7$K8YeXFMn^~C`0?ZL>Z`AEoREaiED9kSdte!}T}c5wlOUqU*1kT@(ChE-huyn( z!@fOxVQ_EX#S+N{i|OKC?Y?%TbVtexe%H%M$QcoY z-;tHdvtr-A#&XATLWrEb6)k*H+*&}B_6ergFs_?aU1-wYl-5Pt1QPO(Q(qa|63j9h7|m5#zb!Esr2LpRKBTSt&Txn+PFe6r3wq9`9_@;mLI2V8TGuztKMzF1t=&Z;NA3*L8TT>DzMifYwKmcF@zQWdgsW^2>bmU2qYOr?cmW;CFxT_u%!{UW1Q5^&zBryV9c=A=GFTi3nLNnwZ@($o>7g zL0EhN5ny`onA#yzpvpdVX>Oqu%^rV~@MZ`EMH<{TzoGMq2`*d6eqSd^8k=&g3kB+; zNv;?CO+oGyT!2E11N3k0w9g2C?AJv z|1-k$iNcq}+VH~5FTppz{cSjX?hI$bQ4&F{Y-+V*Y+zOnGftV`&K}1l32e)oNz{y$JN4Rc&%hvU8Ol`l@wcT1SZv6XGNqyu^I(+w1A%e-uK~~ z-}yFNz<8k!r5$q#3ma{-&jP2A;0Pp2s9s`k=!fB18qeQo6d;tWT3tI_+5NpxmG70qwPp z#V$_s_Ed1&EKXEArci@;tyF+ha1{vcK`6w5V#)vPO#bMKkOh||Z(-ihnDAe4YJxpASO3VsDy9g(m# zM|7U#x&a>(x(0~0FBivZU1P(}Kz^~1=?4T09a##^VvdVMg!lB%o_Pko`mJxn$oMD< zpdwop%CasHQ-S49haMC-RA{|@$9A~=w%g$Dqeq}`OCKsy1+bN7%nmX-HqJ>2@18ux z)KpV5({Sn1C5$!A@nEJF<=k(}7D|)w86F>luRr~5D3(j`#AA;^CqA>fC9<(=>>HXd zW(>E>E!@-=P;19!3zaG(Eyx)ll#v;5JrI>>pyCl0l13cAtt5PVz4S|gLn%= z>9`kKPPF+1TCF6Hn}HS4iip&xSMN(*(DO@L(5LdwEu~B&8#TQ}w_5nD0+JF7|?d&=j{ZRVbw z?a=Nrh()%yl}nsyD|J1NCgMOo9dxVL;VNN9Q6$i_BSLSZu3=o|tjTMA*Q@Q3AW4`O zDB#Jht(z`Ew+xePu<#Mqw{MFV$%P+lUm~>5KrRuA031Q%zQK?MOK!E8GU3qLY2f`F zM(gBDU;7H2Ie(575^a@}&K37TYr~JP)tE`3AQcr!;HFM@Uu*#V0Emn|bj4_rp(o>eH}i_a0{KW+$>G zL^kd>Wx3phiQ(8xPFl*k$`y<^)mb2sK)L_^`_bANgPGYGn3$Sk>K;BE3lhQa<5~>` z(c5qWU3u@j=P1UWOb;z;Z$jCm9Ond)T0_Ep-=htdyD%+toHwCrp~X0ci~qE*RC;A8 zw(P|qSAGH>w-V|q9}=J`HCin4$lvx^srzkgV2hJ(SkX7<`jJ6>F+>|GSF;0cLE6&DyH7j-3=do>M8i#PyZ|& zL@TC*!a%S^Wis37LD_LGt=c6HNXwv*u(h3V1{}4nCu^*$qXHksV}AI9PjMX_cL`$h z){yIiID8cpU>IF?&p!V=yXS-@BULuBfotnj^SbD@?M1MN#_HCR*42a88Y$<|l6|>Y zto*6C%2-hT_-NM>dz|o1*4Hp3v`UD@&6@@3y-Udfky$~hHI%c*EipdVc~DG%+9gvE znrT|lRYL`=E{iJtDf@jt+1DRPAjI=EW3Av~PxV05-Sznwe+W}(k(fvh7(ryJO`%*W z!aYasf~TJN01OTcFc)EHnYn2UaFPQU)(#gxlDXz}oLOlo5SS8(j#-d~n76C513vJ? z6Y%gu4?&T7AyMrcHR%gXFDn|KL?v|M z0jU|ocrU+I9vmEjYlOQm#G#RR*U4IjWcx zr7e*yFcZgqbiFT@voMVQW`bFl18I;- zC${yowk;T1Q|jG-u{YP&0nyx4)`Br9)-u%^X<%|&Wc2mZV|I?}Ic8vXc83Xj z{Dlkf>T7Qp#s+F9PJCZf-vLelnf4CC)@b-~wLYLQ*dKBRB#N6*u(kWOZ+-(tMlVBy z$^(eoEev=plKZT;qXV9N>@l{4NMLY!K4r4e!MGsRG&SUQ4mpW}3SG~gKM%u~Mxej1pVc$AnwW;l zc3ow(rjUw-erXRz-j&HN)3gAY<8dld`dt)6zuPr1@E%+TTooZ6KZycxJnR03tTi}; zg0w#8(%@%wUnIXpU1c;|TWdr5k%nVGTAgbenC2V}anbh2JoY|EP*`?zI^H?Xaii);=)v<|j zIDPswTR{09*tEEl(4lO$d+t8U%mv)fCuM#&nzidiMbND=!}PuB{Oj6{q%9Y~HL2Io zgU7$?$er-wD=)*@p$n-%OUE9@Du+idqY%0bNA9?jiB5&J=v*U6^HXAB>4NrYSkb+6%S^K@7$efL_D5%MrXNYBSYi#ls4z7_MD1WiZg?J5|z7{y{j^u^Qb#AN_k ztxlS>BTla+e>pK>PfSn2+ZLqRlXT9GGiExI}-R-~=x^}?^Z&ak)#v1s46e?MFt9)`LybU!W# zNr?^9s2q`{RIAmY*wvXH%US+DPT3x9y!K|hW6Q|VE0H2XRuI0sSnlZfqw>JO7+fce z5K0PlJpL?>GUctHH41WMt~n*2xqJ8x$Z_TsWqurg>t{ z%+0{W%ry56YBcKB&6aQwmxK?wLK1XmkV{Y57>`qC`CTBayACX2Dwx1Civxl}@-uodn+d>G1wB6Gd5 zGI9;;N8W|3?YK*`I<-m4p`&i=?}Hn4pY%I<#R2ILl~a0R#j4hoq6@p0dU<1 z^tdrlrso3G$O1xZXdYc*XWlyrm(W*#`pg-wGAFBLzBY-+1F*9w) zsdfXR)h(g3-c(@u--sX;SAj+nF+nOu0@$))o-iw{IE@z<08YI{LA86&Zg}{?2jS6& z9)hlpGSl+=X7TF>WKC0R5V~s=<9io{P#PDo1<911R>4@%{(bx4(7{92?X@^NhA~!_ z9|OvclOX+4zQjPY;M*Y<${xPn4RX=5Ro#nPM`2~0Q6&Cj;$NNbO}=_BAq+KW`^ zH(w8JCAYHW7@WA2sD=pScMCz`_wd@*U=?75(9BE?15DGv^h#c9U5ijwD+y2lji9#o z^>2O)-ac^xu1rtDG{$kN^EJccWc?1(F&TiilUuWkMdprYTxrJ2G0rs`OV(gxN5<(! z#e)1gF6Pe{zp6F+PB?8D)-{&LJ>EdXG4JkUkIIgy$ zMWn3~M6Kp^Drhvj;>gmc@k{I-(j7A$g7$^>4Mq%F=Vo?I*fmQ@BRGe(AxKvEe7+>Z ze-iH6bqZDqMhNZM6X~<3tKcQjngrhzT=)|l6x7c9>F<3PzW%Lma^*U?9%5}Wj|_W` z5i?X!YQlTQZ=ME-Mdtc2#*S@{r@;n-MasTyXjx3WN7}3yv)G_JrdWc$-Yw9Nv7hY& z+u-2AgK+oJyI|+`?NCBjA+1%4S}(gmwV&_n1KP5xQ#wAnYstlH$^%S6DGoNahI_kv zI3C2AbWwu~Q+X`WF+`h#Hes>BAQluj=Y{79a7Ivr2pD?W+OcorlB}85Tvfxr< z$GPGboR4Vp3m$ox1QDAhXIipcDTamLMFI3IZi`@*5ZWJ$r_Y?KYmV>9X4A|w{oQi7 z>@^Ys&;H25FgPHkxR_0<7HdNiNZDx}F&$c-<-gKtbmzGP*9n>6;s@+5K>Dz>c zLZN_ewSYTd5*efn@i~-C<YRLaoVQGsq;l!}xzp-huK z3O0u}xUKypUl%a3K-*foC@n*V$#A1GF$xB_cp=^UKD03-`a*NUYDk>R@* zX`DxjmZirPz7laRj?q9G3!4O{>rq6tL5XFPXV!UcIUlEmvCTiPvzmoX3t{7A*}9Ow z=1y^??#dK5)}j2WyR<*r6tt6Gg0to^Fl)CM~^2+qUr72BH&8Vr-@ z2Y>$g=V5$ul7$bGsRzcDMwO-9@|ZH4Sm*?7g-}LasaSwcbf0vi5b5jdgWfG$P@C*v zvdLnp%oXo6fho~|COCCbr66RH3J7rkc6U|q*dhDm$qhrtqPUdPA!XX6%(!HvwWM6W zuXCyJ(;@?>T`y?QsoPaJ!CCWj9lg0Mr{-jQ{>0Rrc}*Nesyj9>onnwXDwqgc5c1Q=`PYI`|&l86+g~yE_flL zaRDLg6J%|aaJnY=Y*kL{>*DnXR9#^hhVMbvRI^0RsiUVOgnm+X4L-3hTeiC->95h-h zx92ulZAF`ENpRUh(#42$rh~dWon{nKIyPyR{FzYYQ!zWwd!G`FeyQ2nA+J zpm@)AjPaelFl18orBQguLYkeOh52d~x{GCw6@}L2rP~yKwl4L~IkwW|G;K3xNI+5o z4wW6a%uEH4Dn|57RytYjE}qePPOh!D+~mWOl}?)VIu{eu?pj$^1R|A14KxhGFGX?u zuR9JOuEPyL>MYfwaEUB0y-Cf}wGPrcY0`811ZgZFezqE9S9d2o^3a2@Z{J=hqdSdQ zjOn=?7TFy~#e`(_Zyg2|@ee1aJ=((wqErZw`zw%XI(9VXcMT45Fcxf^TnZXTjXEUg z!blo1XRC41AsAvwcDGr7y3NbZJ+x_TX47xAYUSQqIXR@`ty@a-&FJDiZY7*b!7f|0 zgl<24I|PNmBppb@GZ?8DW@e`0_19mAX|l{I_DBf=$~3ym6Jj>KZz9TUey}10#`Ozr z++;NRrsrni^trQed3@Y>kpffi#@T$@xQ8iYvs5mFuT5J4_%iF1>dVCgDGRqjR*;ax zL9zJvVQ}z-5H~JEEuHrz(I6odrzhvJra+UN7!H`c)D{LhWr5skl%Yh)26XQztBo?$ zh{2!(CnO~r5Q8z*7zwM@nsy9{sV$;|IM>{*I87C24_z{(8?mA!lS zLI;j3iUrX~;Y=y~yoQR+TPIF%F)Lfi!t^1^vQTmY2v+`Z?q#d;H;;kdTwr%}exmcM$7bZ!CnARt*Ou!q*-h>*CEl#OzQB>I7qZd9F7)EaY zberUdwsA)qN%R}k=KI{xd9z3|1Bg+ejAbw2(18OeH1{yeH`q9-R;sC|&_ZltmmObh zll|ywf#|y8x)2A2((lPir1PAz9zr1|D4)><{5;kUXhL!8h9t@I_i4~D zV>Pe=Tr5(?E_paTrjn0+cYL#VZS|~qMo50s7U&PMWnl0Klb)oRjI<{@Qd?Vd(4o%8t zlq9bxoiv1J(q40jG3ZLw;$STyumXZImB?*E9C7pWH5OJRbYhAFQPM$xucIW5@uZ0e zU{YFXamhY2@t{m2wfT3Ndmb)r^)N+>d5ETmsnu{=vPq`!NegQg6zu1g+kt=xg-od! z!cYFxPe4y^x25ONECfg)B5Uc?>9g>auYVmTr)Tgx1zf~P1n}tMBo@iJnL*k`QKU&O zx%XuCFlSu>8k7`al_cUxq(yOTVv?Kc{osc`%xamGiEUDzHZ51g+J0dFUhc$7eU1X# z)Q)~jdza2a@H!H3S^`@?f@g7p*Z=jn9{v5!>FKw{P3pGYB!uusUsFogT6?m4+C1gi~O%-vTCKG5;}Rf+ZkjZ5L#k zJ!kyIHXF~9o;Jmea{XaUo92WUF<02g{A00c72&L=2(7dv@#AZ)g6>;lEgc$fq~z?| zwFf@-p$|i#Ex9N_sz_98^YFq;FTyiFc%EB@FlSrJu5R3BOoYp6(=w-ZTPs@Tlo8sD z!h_n#(+DY`H9s;w2H$`78Ti^azQGh#^gUvJXGMxi6>vYw0)6O#2jGswcR;0B;uLL{ zTw@yAne08#!bP3Drw2@|jfIb9nlF;v=St<`zZ6@yepB3_bnJF$5<;>R4wL&;EWy>| zef2jVwoC#ooB~f=XHA%tS;N;wi^0&vizamyBtKIymmf6wwa7Hkw4XPyHkw4}N@<_~ zi4-+?H$8#4Go=w%Y$SosJ)6bFv;sFN{YJ5M2@Ni}K|rz6!K@4z&F12E%@p;z6s|p zUcmSbMi?auov;8@Y)|w*vE?VEj#TDhZD?B@Pp{`GdsCXv5)?)kM=ryczWf#V@>jpg zW1HHRFoh6VYGCA7h>xQvd_MZrQ?O%TD_UwXGryCo$z^mlTi)IR&mfqbl-3KJt3!bd z|B3GH{}0{W-Q#c*(bV?x*Z#-9-7gx^kK#SXyQ!ssT-B;yEN&U-%9HgoK6M3NeEB7G zQ^cH!6swGcG%@AloFUZPzlB|KU|VaGd%|SEKdA+fMSm2mrF@dV_mhkAIqDN+Cw&&@r?4VFIDdQe%3Z^5keJyOoJdUm2 z?p|)|e&+OP&d?;cT!Mo`C8l<02IE4f&zy$gkxSf4fyOJPd56UU#~~AK>UyjfE*&>K zM#=rg9Ay$_QP5l%z63A)@J0CISHBF;z3>B=oSESUj&z)?HxRm_@jJT*2jN3cJ_+}~ z?_RdlXy8#2k4rlSD}eI!Kkms4?fib52d3mtKumvj5M05>KdzKYzf;_@<)*}e@(A;9 zaL`=FW#J;;=)>Kb7e_u#o1PNt<)UFz5xAP!pe+JtvQw2eMX!z-SR%FJwt*(M1q!Rn{|+p5}Qadi<9t+h0e}@4_mej-)sRyXcjc(@;Kh+i|A`j{M=t- zz#Fm!-603}AArjfQy9Qa(gmDSRVhX^g@N2>o_h}7KJgCpbaz9gqmwh7NN`brnP^zZ z$IndJR67(J(o%XYZT6Gt7Zh+{*H}t|X?x5mScV2+=z>VBas3FT?`jj&Ci?$`TR%wl z&G+?m!=9ZxVaN9EYy~-2BDr+vJe2a*(At9I2sE*wz;X#vvGe{td*Blv{W$#57ry|* zm&e&`BCCk*E2a2{+zd~_*yI(MeCdbq9$H3w@jE-wTA?&=;xnY8Y8r1e1{x@2h=PY$ z5Xh1`d+r>ZIe!*v)tZTCl0`+Mj`~@Va10HLhsN!skWufdM<03+w)XZid1+wXyHQNV z+IGxZ1HJD+0w1+~=#1OH+Jy^0 zOk!0t2?(~yR2x!4kDCl->V1yfaR)vQ!==k3FpmpB5LAGM6-_*9=*7gQwr_|Z`;`EiViBJaHl~HU`iU)#DZ`x+mA#NeG znN%Ge71RPBh4W|6!O2tafkyWi^Tb&#RGU0kPAH(vCAx7&LxKG;3Dodu0#L1ry|Fm*5XPcSj9Tp~=f zT9wE89cZQ{x_zzP-=?#+=nkwQN=^WY6J5vGFQLNtTjf1_R<%RwwIXQU@N0kX?=_;? zna5FsxgBHCMUz{S`;+|Qa7)0=#B8jkcS|qxd66HSYJzIDnw`Khm%i=XA5F5urncH@ zAXbsmt|FFMTiAVs=_w_gtIj-h%d-g+bG^#~yhE-6;DxCZM@~ z18gdI-u>6|>~ZUnA3$z{He+oI#%1W9Qb*kaT1qZUvw^Wm(_X~1gEwtOvO;BH6JSiu zwMrc=lr0%jmZo*(_I7n)40J!-d-px?(EIO4!S@7g-@29KLX;=N1*vxYxf;6V{*;Y` zR8*qs1eGSJCDATOB<;UlZl>EUW>vy)X6Akzb7Gs{b(1VlV*J zrURnK%?7(GtY$~4s`K>-Mn*5gd#BIBiFZ%1CQ8Ms6yTk&)mb=^_R49rI^l_G5*V`D z3DLCrXBlo{k!&I-WT3?z=l0}SLSP!-(eIR)*?R}vkFJwX{K&^)$F>1e5X-5w%5ZzN z5TH5@*@-=0leWe{NhNfjX<@U2g)H6i@d-F{?mV1E3;o22cVT2?gvTRUzoz)r){^Bi zC%G`zj>i%u$KZ|M($j;&tq->E*v?5fccS}w_pV*g(`{UDG=8{cx69s4`4lB=MlRh2 zf=K7eaBb;?DF+la^pqYC3dR4uT&a9f^z}``8bMo;qQ}P{o132cm$;nV8)|1Bn?F~1 zH{7j3t0F*}4L*^;saEGXy_Fh`QJ`}Pu&O4yLZwqJ3>4ef~L*pK4 zLoS)MkvH%{=oVu^SVeR8WXufgnmGxTjR}$~ZhB@GE?*vnvC&buI6Mqz&z*&dD_6|; zYcx#1BDS0ZR#-TVzg*@Hzz6p2hr#Uwunm=!t^NI+QPAInkE-qSop1SclQ_2H8FmxGU3{xy$~83+dVfo^RK0XPlT50 zTiSEh0z7^HEr7QCZb7jC3C4lw4p1>*y%B@;Z-BE)gk=w|p&%lmV+2s06Bin|ji_`I zYZYa^iHvZeNv$k}Eh$xIinkX$?mHw%9ETl&UUznOvLAojwtlD-4YfX7K9<)@+jQ-` z`r2v*5xfw(wP;nZ*V1zRp$WU~FtW?FdX`kZOZCVTO_ks9d0k zW2K`Lx=;vFKP)OO2r(v=P-dGpS#{bKI}11F6#s^_^=&K!h2ES($X=VKO-=xrM-BIQ z1qJ@UsC9OJp>GXYKo0GN(7W%J=1Qf1if)ttOp?~ZY4&D;@$R@=1LD+DQDk_z>;gbF zJ*)}Z0#r`fW*3J`6fm_tAgwD+JApz+wEH-JnthSF+c;7zn|lg5*zcQ=l1{VYTxU(H z7fBhHbX9g+fU@pLF)2{Gx3;Y$h{*$F#*zTpZDqX=hYBw*vV#ux8Wk$4~3#<`jc zY`Uqh4b=+8a&($>kfrdO#vi7r(75qz*HpYAK?WQGsZQVYnJL$Xsl;evB4Z$;*?a z9JT4il=#4Oh{6m=w!@TjQNyOg0xKx9fa-W<-q14m&4!lWD6LTeL})97xL)Y|`9DLm zxr%>fC#3-E#57h@)|A#hHgt1gdAFq1IyvLWw%jn!dHcbN5St<+no^wd_f0P|Z*_Vc zSJh(=X)~KlQL4}`TTY}Jt4R~psfptZF3zB`H6xD3r`<_-0kk&I>iK9&QnHj$Sw463 zXP}+3YF;~aBO9qypz2f_V5>-R!$fV%4YG!FJc@;(nMw-{ay4n2Q2-GnCx%!hkTPh2 z)lOWugO~9l{&r_~_ZOk3=L)Q0EPCs35LIT+p8ql~6CWm~TI$k$a83&g@0L-YIP|4xrviMC@Q7YkpBKv-;~${RR_H!6f}Oh=@`B!FU# z{_i0CN>D8RZ{;w2Squ!!z#7L=B&7|EKRmDF_$lrzFN9A>xW&l3sIu&_=6lk zH+hrQOfPh9EtXRfn%?WykUsp#h!fk4YPdmTt89#o?wx zi+t9af!UO$47db@)=rWF#C6`T8-KIKRe#`dBOn&ppqJTCEP8;e_+_0>e-YrbQWLB!^fd+9hSQGPDm}W$2C5dJJu$F&aQFmwWgPph+yh~WEI0D z|9W2Q|2GPt)9Y0L5teV^O*}($Gyg8G)&Hl0kR2STrUq#cE}FHnVA!-|(f9@CT40IV z+g!U=tGZcHCcYi1xp z6BQP>V~|x5hTkX_gTGXno+ci+dDtLWkr3*got@JK@wG&$E8Lp`t__RbEDsM4kBx)n zR=Ql~s_W}Te2b2moD&5F3n4|s^Ppx#D8Jj;QThLrckX;{y`^9;hn1z^A3Yl56?qRY z&eIeZ(>lx4TI$g@uhUyZ9v&VW8H;3Z7>lSmA;Yw!$bxCy_>XIUG{i!vhSFDJAwRE+ z#lHjFwowsk3>yq9i#OuMn3i&}O65z?-953MQ?QrA ziWxD;8k(!sE+>Kb8V1Vh+IC9QR`R5j?Vurj>EYqwvB}|juW8rv#Cqd&wgZ^1NuZR_ zGb(`ZK`8!iVS4(HMNiL~YQ=pcuza0R4*gS8^K+e@&(-Vo(`A4o)Y}6sBmT^?`WUm) z+CypAPK(7f1`iJpkBth`l01_mZpEa2NlMsu==guElFLfU@8RZO@7}fdB@{jpYyw=h zldO9F{O&}lUkz09D+M7cw9R!-Oap8!Et{P?&I=(A508xox30D3U8QYTxDlw}hLjxh zQJT}RGxc56W6*DlAoveKrSkdGwr!_2VgkZqxN3P&85y}87Udt~1$>7)d|Kg>P{y3S z3(C{~dw6(kG8kH&g$RPcwma9{1vLgszeC%CpsHl>QV^E@p(+;tWqDxW#AXsegsT=p z;-QD4NC(HlV(Cw`gjsGZD~0iEa-v5j<2^h)JT^WwESVk08E?wa@6dZw14IVVIC_=7 z4u#;?%jLqKbPo<*hE0fTvRBZ*S%@!Rd?c#Z|DI0Nlc5Yu=uBI_GJehu?cH%69v&MN z$`(b+RQ{M1F6)A29v&VZ9-JM=8E_iI=Xx5I@$cc=U+)OR-|Rej^7v*JK!mHxj&q=tLB!bH zg$rL7qW+V3VIP-Z=uO=tZ8HF{3hcTb9v&VyAB(M9c|VU>q_<7#phJm+u^=>jf{PHy zZ%eIzzf>%LS8U(DAqYsX7uO_&2vj#TdG_qNLQwjOZqyHJp|=NQSW!$!>y)&#)l2I0 z6+ApV)*M>8_2rf5cI;#BQ`d?wt&-HHc9LI9$pR=+x~_xZ4GdBIfvi-%-Z3yh*3Y`@ zfO?}4z;)p7ZQ0U@9(t%6f;fOtw>txJ#HAI$kY>(tF{|C|9d#Za9%~E2{%6pnJd2hG z6gX385HYCQ41{F!(bO6#j!KCQo+`?7Ijai{hGN zLJl@b;cRVq_}?oC?omnnL9~ccKdH1nQVti{?`)(imSq9fFga{O5yK?2qo8|fWFQXQ4 zI|l0pC0a#VxJw%t1@hy=W>o;V#os#<;M3I|ze+2c^=VmHYdLed58@Vbz3?b<4dO4-I`@ z32{hk`H;4?#J)<%!^2~(f<0>VLgy3V7P7t={aJA5Qzb=$D)qZM5WlSw^~YU1_q@AV zSg%(bt0sg9~cJvvD^SI#9t8up}?9uFQK9v-&{nI)vzypckt ztS=Z|;6`)gr;}mGrKyc1t|_IzBZ~50$U^eNu7LyNUI1M?R#gZwy1K^0+1WpcBYi&_ zr9XGFMd2cJk}PZ>C6ctpdM)`c#?!Ip8y3GF<&9rIMU4<6TyRTn~ZL-es@Cxd~3->lEg?+zq9h&Nb*WmBM@L(<2EJUl$s z3lfAt)^oZ`(Ja zabaJas4an3w@b=PV12_kdhqb@SX*G017+LLpysTDfCW+%Czmk>^rd3C{2S%L!56*N zv--FpLWn@|q3VSTU&0&uzBo#@hg$W9WDsdDhCDnx))GvoQxZND3yN_AD$lh3avmNYYXP<+Dm^t4 zt*5mNUQdGH3n~cyq;J=*v*2+b&q=Z#M-uTnJIWbczqn*P}b6ivO!bt9??qRPA)H zme*cLd3bC-v~!Q>wp-e@R}d{tW0?5>47+vK?aXq;QKA%e*w&(FM8&XKR&uZT>Hnq}VGGB{gNsNy9QnK|#t!p|{G)r*;v* zg)Fun9v&M3YSEd!yi%&2e+3s0L%Aba2&J3{T5<>=0h0lz1WXGVyp8hd`?6H}!|v_d ziE3vaJZ?H}>Uv%s8`~{v$^QtA>gNhV_fpq&+U|r7$c3lVDu}!g^6=Q0xE>+oR*FCx zUL9?u4Lbj+_J`W035W$GaiS*^p)boq__YAzK4l?Z5QBqr;Bm`v)7Nu7F?(-qYV;q3 z0-nUTojhP{SWxC^GFr~enc!Xsd3bD0G__QKWII!q7ZyVgu&A#t-lXDc2s@F+pWh0OvN+68*p@K0f zP2rerL*%pQJUliV+K2_W3<$l*=Rww(PHExDMiX+oB}xs2h0@oc7=E*~efzh3%x7)k zrVAmPsPNU~(uJ-@9Q}<@h{pmPL0To&drJbzlF&LbTQ7(_Jk~rGkq?V{FY-3XVol`; zvSt6a=?e*keI!%wXc9hJ51}smHoD!uQwU05D(={E5_hY6%V+K3=37EwseMLAzaoO9 zh_AONLL3kYMTBgd++2p7(AEv-1(AoxhDUyyx4Pe)rK3f2`vrQhgj7oDIW5EpMw(wo zm&y-$(yDHJPXb61~FIdq_G)TPujPcguNr zta+@|5?V|gw9au>Kt=8-O#vg*qYO~^;N~j6I-y1IMi2%+tku;wyXSYE7IzEZ)pQ-; zmM`t&+y!%?lw9kF}2Li3#!d6IV9~cD@srn}8T!B`k=5QkNR|>N4*5tPFzh z6^g~@3sRmGTenVw$GXItadPRInStum)L+wa@=F1Ty(owzSwl_;3ES0>_x0k)!(+{1 zsae^&&}i)acs zH`Y|7W%SIMogHEL6QI;zMFDhFC}sH+Ou_>9{9v`p2Z%g8HXLNgemG)JQB*c0gDMH0 z7~o|k^l`L$Uakmn3eKGy7Y{w;JDF|}tf|$U5*21gMz)DK{v=vLe@iFvA&K%Qpbm#* z|0tdMi9I|#))@2>>~A8A{TS27SU@_L;T9+4a+3`y#Sl8=PlPh~A#VRZN~P1KuC7to zvSrrS_-s7fk`(R5z^U6>kHXB%7wfaLeQ^^1Wz>mo7p5Vrbao1i=Xig0JIbe^Ug(siKr;VPN30ZzQ*|v8IF&f&9COiPHT1??PA*NfQ4> zog_yzy5{T-;Nju1Mv=3IoCTD^#dWo#*MSDk=Q9-NkwU(vgWwq`7LQfx^(ol3tL}x* z=D?a=(aALjLql5o5^COXGOvX^m%l%JuSoV zm00Uz1%RPI$|2aflL|_cJ}-PWE!M0MB3RelTEhx%55BVL-u zA)pfG$psn69K&Jj1oh&>V?Ck08Pu#aiG`n~g`e%wcDvT;ab=Eu8gj=oyJ?8xm;WUq>~thioC9Cz8pdnx?Iz{2&S-vW8ko5IsEBEQGUV!~&_& z93*KT%qf>z?vr-byJ-5VtJcX2ujT`3o7qN&Q4kc_0*b9A#LPMP!)W0Uqk)c+WL5^j zpW%*Q#K-e-6b(&jUETBSvkmyUpHp7&c(h_&nFsni-wEgMy?2MK*MBC7lK)ieu93Sfioz0UP2-CUEJZ7j{g30(Ai1W4$)Q2@8{xJ@Yd&pF}6z zUy(X_6kQ0Rq#42OARGZ|>mTQIJh5Uj)K+2Sg^4W?X*y>0;=(8! z*W{K9nYYndKl}_fw#xi%7?IT~N(7unq4)v>;+0}C{9yv&$t(5x)N{{0*Z4Va@pxPX z*5#Utvp@_D4V8O^xIYx)zm22D$8dUdg@QSCIW%g+MNJb_Sw1Q+ggn+Vc+sa9E;N&x zMGI{qxnQX`4c%z7Y&mFK3#j$mLK*eCTIjb?zi@h=1d22qPMf=FxA7Q#6(Y``cHD;Gi@ z9=8IESwganLryFrg!um!3#mB^&Ztxi661&^R9HDEL>&V8vMh%GS0M;qhGOvy^z=;n z`W=te#D-XoQ5bd9E?@o`)oA>8sJ`8S0w@ev2q~V3`N`{rkjHv}&OK)qP4n8{-tJgv zujd6&=B^X%K39p>Lm=fV=udm290cDDckTM7w{SdeBsR=)jDn~Tjg8$K)oZ_^lK9h7 z!OoC*coB)2yp(>*)QD2%`j+UdpNVH<@K^)L_t!D$X=b}@$*rMU9hcjdXPGDeSz4%I zdD^&U2R~0xG2_ymAZTbQ=kXv@_}Lh4doxn%>5fX}<>HRwIe@+yZ}E8C3~abnSD!!M z9|ghB#IgDdkVFrnORgN)IZ6{!Y2DN~3&1OR9%~HB*(=s!5l%2En-UF>rdCVZOPbH9 z{|;}pLWl`}$rT{zhzSavh7u@vgr3B>&uh5tB`6eL!~?$3`SjDH;&Y!%z{BGvV?(O` zIAM#8iP^*P+|;jPjOa&%ig!}Z0t+FV#_bSz>&IiQffOZe$fk_EvD7!Na8%~=+IR!o zIa(RZNy>l{3{VE?SZOt%fSyP+4B=s36NTWpVySez5Xa|X=T4%@@huTNZYehO3XGGs zr#3SBvq@C{3p!EvNuhhCN}9YHGDo*)v`jCQJZ>%6j&Us0>}s>tkhO|Xu-NF3%+;Jq zbi#=UKb})k&M2j?#7S}i<MFo4HG(7t(6^9Bq#qjZ_FhI!bM=juARUPsORzN|48G9);30 zT1Que5<@zGH&l|GC{`-3Rl2*+K}W{~ex>e{3p~~;HqDZX!l;>Ym) zHr!e^t_$N;*Sck%dLiU-3!rV$wU8zzWT<*UCqTsq5TVJ_kU~yqAulN*&f>Uz1%lw6 zQnC0>ab)B@arfN~@bFkC*i=g@vn`xGyI%#t&&F}|QJmcG!waxOFcFDi{mowxkjYm_dOvuB99c3gN|SBf1bs`Enr)zf~@ku0VhPJa|G-k9CSoxuoi2 z$BK=^kbFlCDoW zt<%V3vGq9wx%b-j zyRtPp+M3eJo(GQw`krPk!$yK}9drs`K%4wMw0usZQFB&?;hBz(jyGV-mP@#I!zUGZ zY(#8&MIIN8VD9qeZ6b;uPU7SzLn-bTTHl63sZVMp1MT!$Z3GYnhqVnEr<`6lKnU^4 zrJGBxaosa7G>@~<*9(iFS_$Q3-xz|^Cej7y!maTS?kQY5&&h8Fb{ zh+tHycm(%7muPW5EEJ9x!|5*_0>Z0KGjG*jGE|E zpcKZ81iI-!3hP4=R`_IcN38fNu0)OXF1}{uui4dJ8_iaRSYRYAAnm-`CJDl&O54^4 zISYx$Mqt_=Fden|hdPT+<9?^{gwEma=d=jkQc3b&ST3I_@7OVfpZR10k4*``-n9T1 zlCXOA>;Sq#jw+ozi3`X>xUk#}ak4uUq7Z0UP)VfIO7>RT-elAw=74oAXw+ ziig%R%>~fe4isZiV&Uy*ZS}FB9d_;*`Cm2!8`=mqX{;S)DaZ>UHh4r8-D_hY)ff($ z%OVhOCsE^!3goE()KDFg@qXDk0Xuij`(y%-%?>YwmcW%OSGJVu^*fU!c?7MZ4~4OQ zIM8Y*>b8aEJ+0S26+-PaYp2IsS6=$fm3f@x)koGh1eUsz3y_PWX<@#rS`Ag5=NVYI z&AsP)DvXsQO!$Y{bW%>Xz|`yzGY*Q8826pQt!HuDNfC^OYDvj|-cE2fCJSrtQ;GzW7 zWvzg+)Gk68yc1~sa)hy+La}(E+|e-w-QCnj~(l(Z`raNVz>hr zxcjtHAIGKX2!7HZfGC&*?kr)!aTzZZLT!%SnvG>MeY4E2%_@YJDj;sTrfo6`^&$yn zhGtEs`vEko2+CNtbXyX9)j%OMk8dVqP&fus9#6DB1CbulBDq}LvSqlOWw3dnaosGac9srZl(W|?*7NKI`dL_W(a zqf2I}&3LOg@UOsGn%Q>xN7w|#Y|R%OpONWxL^o=hH$sAj)1~cU5>BNKS=c06=Mo(S zh3*oi)udADqzsFvaLZXd*jaS54u$2;bJ6_#XlGZ~9BkW0$pn#4o%Zm!c6cFlozNFA zcGQD-XA;S~v`+3pq4KcM;)qnqUbK!nab1)Fn6z#kD;6wfiLCB~ zKMMlbe78%pFn8C+Jxd`|HyH~UCyaD1c>o_lU?`b{Ngd(uD*Ia5%sEP#MyqHB_qu|| z9L1eaBq}*4r5r+Q_oPn5a3I8$N}(_bJ9f-_f#cz^y6{41l|W7PU~H^B8O`(;RIyKL z{ULljg$vq~D$(00pDN_y#9UUEFqw4}-6l<6N*e*s70B|w0$_8le3T8K(qd4@Fu<2c z8766AOdM-T3KmXEo3v}Po5V`@NWCnECZ7Y_`gRxQvgqHg;Ht`g$e(0`KJ5f*H zf{SNJk|$tS6QtU^Fe|J%kbrb?T|ln7NkBq`I*6LTUzoyBwr*V7n@p1qUF!oE&yk$q zrW^S03`jkW!s!%#d<-|fjh5($3d3=s)NpxzeiB}KY1TJ&^YFO&@IvSYLVy1A0X+P0 z0mA+cDAoIC;&?ES@`#S&dvL`(f@|j8Lg}3-bOK``X%vnk%A1*CXL!@Q7jH8Q8Ybw`t;1e_U#Qg zdX$8Y^2r1q9=8r&2;D@Gg>?M*@xswvyE^{=?Ok1K6G0T6kNs#Gn++I0lBcR~MG@(1 z!Tx+-`l6yDMS?H7CIM;!mHoA$o3EXjJL8$j#)uYu)1=OUWMKCuEDY@7o^$V97~Sou z)&D&bo~GI@A|hgI5lLuE5M~{nok@0lEJveJ zvZqv@)^$7C&mI^jPpnc;xuc#FvVd5Z`g3qHLu*p&S!rcO_$W>A$|?8 z@MjcmEkYlTb5kby1RQ;ZYZU^9Hjyv6(62=;#)KHndEGs1X~yn(DQ*36k!&I&b`z0= zb_9W>%Cf~eNtemIYiix4THV%5eQ1n%CZs$9IX#4ow+F&W1rIYPIHW$L6E?_tlKaCQ zLXiXiG4tSmNTV!Kki*thYDCnG!}(s7=GG0KY{ffGrL=!)>1Z|BV1Z?h$T0|K=!AHM z|M^h#dL?|aDHAkfMxg)vj z!dW_iytPkD)gq%Z7%Lg*D3e^K#7xGm$e8fw;`wu+J-qR6tt6qHa2ooUvCbe15jEnp zl&MZqsf0{?)8+ycHv_?3IiJP&mGd#ulrqorudFDL+4zx6F=L5{h}hs8JS$1)|3e@r P00000NkvXXu0mjfpMU_p literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/Contents.json b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/Contents.json new file mode 100644 index 00000000..929ed986 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "textButtonImage.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "textButtonImage@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "textButtonImage@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff1157f69640e6f39c4c7009af023dedffd0d9c GIT binary patch literal 929 zcmV;S177@zP)Xg`j=HUtVx(#h!=AG3(p6Bb@!t)%*eVCq}zP`4$Rv;}vLr?j9ezjaK zyXwBe^F#^YJJwJr6oGiJ6@9Mu&>qr7Xfzsg%ewSrHk)t6<8dRzgOYoKtLRlFbvb_M z1iJN9hRb3&A~jVWdew{MJ>s+U26W$zjg8$UEkZ@wz|73dM|^97$~v9S>-YOF5QV^z z_8|TkwHQ$l?Go%7IwsgK-gX@w6U3k=N}}VpBe)YK(YIiy=$K$X%#a?3hA@QF=`<#j z$+H+HZ@0I%LvlJyEf|Z%9%nL{2kCVBwZq|u1peIP`F$!-SF@*pGu_+g+gJU-EKcFt>n>naejXOD8w%~-k40L z_Zu4Z+hpsbryt@K1?E;`8$I@>RtNhQr~*u+9~T z+<&A+x^9?&wQnju1`P(ocU*QFy6M_QWDCn?)N1uJtyUXCe_GNXQQU%FulMKD($cA1 zE_WIh)E0}yA9}t18)O&yoHeyi!C=rzg_V_+k!Un(0nxqC33g?YY;JCT#pR*2Z((6U z3@dPFN|4vr*Qo^qLYrBbfpta%8SYIs(_=;uA!bO@{M}5CB|&j`VKOw`r(s4=TIj;v z>SlV($}NPHUx<%Fv%2L%(;u?QC6Koa4i4T&3HFj1L2Mv}K=3@3;qEhYb90YoXJ_{# zn^dbBgd>a9YCXox#mLJZAt=*a4YD?YTn$5$laqg#5%hRGacn#}K=Pj%j7gJ%i_f{; z?(A-?>e^m+`h318Mx${Gaq#xQz`!dU&*A!2SndFJ%wABPw#Fbx#o(4BRK{4@Ast|A zYm4qJUX%6(0%9U*FU*XNj$Wq89mmu0@$oyPj~>Qfm5Wp^!Nt#o00000NkvXXu0mjf D)D*VI literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@2x.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6a5e50938b9062296c9ecd41e580297538ab8e GIT binary patch literal 2002 zcmV;@2QB!CP)X_~V?! ztJUh83l=QMsi>&vApu61J5g6x7YXt%fxNd!2#`ks@|-)grVqNiyQ{0Js?;RF@W?xE zvf5&?d`3bPXwI(>4GmprZf@=)0fa{aH5yGc75PvEl|;N7TC!S00t^pNhi7AJ>Nl8iN6%`dv#MHs81cJOx27}@1@bK{d zk&%(j*uLuO>bg~3U9A&S50eDa39kPB{zFJ6x{jUsR;xAT+O=y%BC2AOKs3`>o6VNS zS2i&*v7U$klLRW2N*aSR#aD*u>sN>fFiBu?aB(vSdl$nl)<#n{~($NNqfK6fI4kKYu>#%9Sgz5fKsd1_uX|RVvk@&d$#D zuE6tY*N={lzK`7v7}yq&Y;I_1=-s+?YnMi&xf&G}b>qyLGaZy<_xX|q^{iXB?t45i zuaO#v2-U*E!WbCG1t4G(UQh|5M$t^;VeipUWi9%=SmF{G*9SO0>*Es4Nl(HAx*HoC z`{Uxpi+?IEE*=dD39PHDQ|k5ls%{!Bs@xzfo=N8k@x0qI=P)YSCx z@#DuggoF~QudmMpdD%q576p%Gbz@`Wp^zYOa&mGJkv3S=xrdZ54+#R}NStYSHWWm6OiWA}H1-eBxOLId(T&LKad=fs>r<=M zri6rqijXm5cJAD{xwf|UTdGLlrNvVdhPq{V*+FdgaLPX*q!Z?d)o3)9J8c~=!g1V$ z{`7OsvEsyu6HzTKE$?8w@S~}zsT}0d!G_k9l$3(<^77juL*Vx9+vx|@U$nKgeTgj+ zMAEOMY`b^wHgg9KjvP6%90c;(fFS-~?y<|Bq@KwibUStG)Ym;dJ>exKB}R9hA!kUZ zr>9e2*5l9S=jT6DK0ZE9N1S=vG@7f=;e6PdgLHrF*fCEYbH4Dvz`$!lWsukrA`;9I z2=63Hs0@n3KtzJY(HOxIXK3G1A`;9I2%}qQ7>gg+!u$5^8^#}YNoerZ72XkpO~W%@=p0OiEg4}j7@YPblaUE?=gvJ1BKpa5 zfD#xU9{wOTHPz`iGf7}gO-&n=NimXEv2!UPa2WH#g-|3;gOb_ktcw>fp4RDfpVEcN zW_k_!&UPr6_s*R=cgLN_oDy+^4#{H{pRzgV)k&Hk+@nTD3}l`0!zqUay~a zy<`MpzF~^`q24^wP8sT;sXVK!?O1#T2U%o7Otz=CYlixQTPeZ4i#~eFsaQ^)H zcSw*zG6FGS-2f^4(@O%a@J+uvc<`X8pvKt*N!P5($;p`mcWEyi^NrAGPtbW+A3b{X kSJzae3>h+H$Otn057(Y1^JSNw;{X5v07*qoM6N<$g7vz%sQ>@~ literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@3x.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/textButtonImage.imageset/textButtonImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..64233b8c09c2218ca702d22c84b39cbb82048b3c GIT binary patch literal 3268 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 IM6N<$f)fo`umAu6 literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@2x.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..14698d6d974b4cebcd1604e195d148daf213bc24 GIT binary patch literal 1573 zcmV+=2HN?FP)<_6R=)={-b#>jpeb2OGqjz>@bmq>P(er`X`9E{!yT5aOzjMx< zA%w$WiA!1t1OoR(B9Z6Q>GVUGJlK?xAL9aao&mD+GlT(1iYfQSqe##1Qra!so^iX~ zY20@M(|4gzXqCuM?C!T6%?xrw>?d z+4lDKfMmU*fT>jKF~ZRe#Je;^9clbf5HjqnjU1(eiQvOpK%C_*iG zZEfv;FHE>tig-L8mpr>GAr%0MJGD+e?;z`Dw8~pI;p7AkM$=ijH7>xjwg##KS{a%+ z33=GZv+x;_Y9d@f6_5ipi!d(W896vO5Q{f1;2DrNDsur1!UZ%47tkPFK!b1r4WcTb zS>1;b&M?pq|IjN*e?tQg9T1&LSrsqM@NURrKRP~t*xzZmY0`r zwYIjt-rnARKXC|51soU{aPREwytlu<{}Hmw71TYi?CtFh?(Xi6b$53^P8RH}K0CrRad~-pg|IrsPJL{zh{a-~4Gj&Sqj#)= z*c9gfu3D=%wLVzriyIpoq2}i1r)ZWZHp3BN46N}9l#`>2i;HhSL?5vcj)?D^zZvyq}31T4vIVT_&Mf3CX2O;1G#6r|8&?(kOhhTl}^Z72<)YJ@2O--eUg*e&* z(US8wEbe-7aq*WUBO}pJC`7ErsRHhJz23p{^75NQLqoR-LmVX_vg#o$?iS|n%*@RE zVTZap(>O35kLwmd5QH$qYeMf`%k1pz?{;bEU}}NznrYM?(z*6$ANlas`5FwMd!$M#@_V-QL%A{`z6 zTTxNbGqts~UE|~9f7!qJ4k-ewRkph38RDxBsGRX$=p2f7Aab50E(t!Wlcelvk7 zm6es^oDXx*K-V`Daut;5A|w|bLr#QSpf=~OW8G@BI@T|=1@a;P20W&Kx4-XfH!{O3+ zJTAmyF>#yE=R0!mW`+(YLk2UD(sr73o=k@z2uJHMsQ=12w>w3zS5;LN2?m4z$UXPJ X^LSoFNF6|=00000NkvXXu0mjfL6G8E literal 0 HcmV?d00001 diff --git a/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@3x.png b/MemorialHouse/MHPresentation/MHPresentation/Resource/Images.xcassets/videoButtonImage.imageset/videoButtonImage@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac2788bf7b6540e49a8c411faba925aefbdf3c7 GIT binary patch literal 2429 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 literal 0 HcmV?d00001 From 315daabaae27116f94ca3ad6f6468c7ded30a3af Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 14 Nov 2024 16:55:09 +0900 Subject: [PATCH 03/25] =?UTF-8?q?feat:=20=EB=B2=84=ED=8A=BC=20UI=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditBook/EditBookViewController.swift | 65 +++++++++++++++++-- 1 file changed, 61 insertions(+), 4 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift index 1b796dc0..307d78e7 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift @@ -14,6 +14,42 @@ final class EditBookViewController: UIViewController { return textView }() + private let addImageButton: UIButton = { + let button = UIButton() + button.setImage(.imageButton, for: .normal) + button.backgroundColor = .clear + + return button + }() + private let addVideoButton: UIButton = { + let button = UIButton() + button.setImage(.videoButton, for: .normal) + button.backgroundColor = .clear + + return button + }() + private let addTextButton: UIButton = { + let button = UIButton() + button.setImage(.textButton, for: .normal) + button.backgroundColor = .clear + + return button + }() + private let addAudioButton: UIButton = { + let button = UIButton() + button.setImage(.audioButton, for: .normal) + button.backgroundColor = .clear + + return button + }() + private let buttonStackView: UIStackView = { + let stackView = UIStackView() + stackView.axis = .horizontal + stackView.spacing = 5 + stackView.distribution = .fillEqually + + return stackView + }() // MARK: - LifeCycle override func viewDidLoad() { @@ -29,10 +65,31 @@ final class EditBookViewController: UIViewController { hideKeyboardWhenTappedView() } private func configureAddSubView() { + // textView view.addSubview(textView) - textView.setTop(anchor: view.safeAreaLayoutGuide.topAnchor, constant: 20) - textView.setLeading(anchor: view.leadingAnchor, constant: 20) - textView.setTrailing(anchor: view.trailingAnchor, constant: 20) - textView.setBottom(anchor: view.safeAreaLayoutGuide.bottomAnchor, constant: 20) + + // buttonStackView + buttonStackView.addArrangedSubview(addImageButton) + buttonStackView.addArrangedSubview(addVideoButton) + buttonStackView.addArrangedSubview(addTextButton) + buttonStackView.addArrangedSubview(addAudioButton) + view.addSubview(buttonStackView) + + } + private func configureConstraints() { + // textView + textView.setAnchor( + top: view.safeAreaLayoutGuide.topAnchor, constantTop: 20, + leading: view.leadingAnchor, constantLeading: 20, + bottom: buttonStackView.topAnchor, constantBottom: 20, + trailing: view.trailingAnchor, constantTrailing: 20 + ) + // buttonStackView + buttonStackView.setAnchor( + leading: textView.leadingAnchor, + bottom: view.safeAreaLayoutGuide.bottomAnchor, constantBottom: 20, + trailing: view.trailingAnchor, constantTrailing: 20, + height: 50 + ) } } From bb628e82771521ab8789e878e38968ea586e48e4 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 16:34:40 +0900 Subject: [PATCH 04/25] =?UTF-8?q?feat:=20TableView=ED=8E=B8=EC=9D=98?= =?UTF-8?q?=EC=84=B1=EC=9D=84=20=EC=9C=84=ED=95=9C=20Identifier=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/Extensions/UITableViewCell+Identifier.swift | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Source/Extensions/UITableViewCell+Identifier.swift diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/Extensions/UITableViewCell+Identifier.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/Extensions/UITableViewCell+Identifier.swift new file mode 100644 index 00000000..9187b2fb --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/Extensions/UITableViewCell+Identifier.swift @@ -0,0 +1,7 @@ +import UIKit + +extension UITableViewCell { + static var identifier: String { + String(describing: self) + } +} From bb94594204d30e2bbfe3dffa5603533f86556d52 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 16:35:22 +0900 Subject: [PATCH 05/25] =?UTF-8?q?feat:=20EditPageTableViewCell=20=EC=9E=91?= =?UTF-8?q?=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/EditPageCell.swift | 60 +++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift new file mode 100644 index 00000000..da4f4704 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift @@ -0,0 +1,60 @@ +import UIKit + +final class EditPageCell: UITableViewCell { + // MARK: - Property + private let textView: UITextView = { + let textView = UITextView() + textView.font = .ownglyphBerry(size: 15) + textView.textColor = .mhTitle + textView.tintColor = .mhTitle + textView.backgroundColor = .clear + textView.textContainerInset = UIEdgeInsets(top: 20, left: 32, bottom: 20, right: 32) + textView.layer.borderWidth = 3 + textView.layer.borderColor = UIColor.mhTitle.cgColor + textView.autocorrectionType = .no + textView.autocapitalizationType = .none + textView.spellCheckingType = .no + textView.isScrollEnabled = false + + return textView + }() + + // MARK: - Initializer + override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { + super.init(style: style, reuseIdentifier: reuseIdentifier) + + setup() + configureAddSubView() + configureConstraints() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + + setup() + configureAddSubView() + configureConstraints() + } + + // MARK: - Setup & Configuration + private func setup() { + backgroundColor = .clear + selectionStyle = .none + } + private func configureAddSubView() { + addSubview(textView) + } + private func configureConstraints() { + textView.setAnchor( + top: topAnchor, constantTop: 20, + leading: leadingAnchor, constantLeading: 20, + bottom: bottomAnchor, constantBottom: 20, + trailing: trailingAnchor, constantTrailing: 20 + ) + } + override func touchesBegan(_ touches: Set, with event: UIEvent?) { + textView.becomeFirstResponder() + + super.touchesBegan(touches, with: event) + } +} From 1488b0bbce641ac88bf1f173bc550c35029c87e9 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 16:35:44 +0900 Subject: [PATCH 06/25] =?UTF-8?q?feat:=20=EA=B8=B0=EC=A1=B4=20textView?= =?UTF-8?q?=EB=8C=80=EC=8B=A0=20TableView=EB=A1=9C=20=EA=B5=AC=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditBook/EditBookViewController.swift | 76 +++++++++++++------ 1 file changed, 52 insertions(+), 24 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift index 307d78e7..08c6a65f 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift @@ -2,17 +2,12 @@ import UIKit final class EditBookViewController: UIViewController { // MARK: - Property - private let textView: UITextView = { - let textView = UITextView() - textView.font = .ownglyphBerry(size: 15) - textView.textColor = .mhTitle - textView.tintColor = .mhTitle - textView.backgroundColor = .clear - textView.textContainerInset = UIEdgeInsets(top: 20, left: 32, bottom: 20, right: 32) - textView.layer.borderWidth = 3 - textView.layer.borderColor = UIColor.mhTitle.cgColor + private let editPageTableView: UITableView = { + let tableView = UITableView() + tableView.backgroundColor = .clear + tableView.register(EditPageCell.self, forCellReuseIdentifier: EditPageCell.identifier) - return textView + return tableView }() private let addImageButton: UIButton = { let button = UIButton() @@ -47,6 +42,8 @@ final class EditBookViewController: UIViewController { stackView.axis = .horizontal stackView.spacing = 5 stackView.distribution = .fillEqually + stackView.alignment = .leading + stackView.backgroundColor = .clear return stackView }() @@ -56,17 +53,23 @@ final class EditBookViewController: UIViewController { super.viewDidLoad() setup() + configureNavigationBar() configureAddSubView() + configureConstraints() } // MARK: - Setup & Configuration private func setup() { view.backgroundColor = .baseBackground - hideKeyboardWhenTappedView() + + editPageTableView.delegate = self + editPageTableView.dataSource = self + } + private func configureNavigationBar() { + navigationController?.navigationBar.isHidden = true } private func configureAddSubView() { - // textView - view.addSubview(textView) + view.addSubview(editPageTableView) // buttonStackView buttonStackView.addArrangedSubview(addImageButton) @@ -74,22 +77,47 @@ final class EditBookViewController: UIViewController { buttonStackView.addArrangedSubview(addTextButton) buttonStackView.addArrangedSubview(addAudioButton) view.addSubview(buttonStackView) - } private func configureConstraints() { - // textView - textView.setAnchor( - top: view.safeAreaLayoutGuide.topAnchor, constantTop: 20, - leading: view.leadingAnchor, constantLeading: 20, - bottom: buttonStackView.topAnchor, constantBottom: 20, - trailing: view.trailingAnchor, constantTrailing: 20 + // talbeView + editPageTableView.setAnchor( + top: view.safeAreaLayoutGuide.topAnchor, + leading: view.leadingAnchor, + bottom: buttonStackView.topAnchor, constantBottom: 10, + trailing: view.trailingAnchor ) - // buttonStackView buttonStackView.setAnchor( - leading: textView.leadingAnchor, + leading: editPageTableView.leadingAnchor, bottom: view.safeAreaLayoutGuide.bottomAnchor, constantBottom: 20, - trailing: view.trailingAnchor, constantTrailing: 20, - height: 50 + trailing: editPageTableView.trailingAnchor, + height: 40 ) } + + func scrollViewDidScroll(_ scrollView: UIScrollView) { + view.endEditing(true) + } +} + +// MARK: - UITableViewDelegate +extension EditBookViewController: UITableViewDelegate { + +} + +// MARK: - UITableViewDataSource +extension EditBookViewController: UITableViewDataSource { + func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { + return 10 + } + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { + guard let cell = tableView.dequeueReusableCell( + withIdentifier: EditPageCell.identifier, + for: indexPath + ) as? EditPageCell else { return UITableViewCell() } + + return cell + } + func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { + return view.frame.height + } } From eec93d5eabdf7e0ef65a91cb82bd3ab41e10f16b Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 17:00:23 +0900 Subject: [PATCH 07/25] =?UTF-8?q?feat:=20=EB=B0=9C=ED=96=89=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=B6=94=EA=B0=80=20=EB=B0=8F=20=EC=9C=84=EC=B9=98?= =?UTF-8?q?=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../EditBook/EditBookViewController.swift | 36 +++++++++++++++---- 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift index 08c6a65f..0fa0127a 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift @@ -40,13 +40,21 @@ final class EditBookViewController: UIViewController { private let buttonStackView: UIStackView = { let stackView = UIStackView() stackView.axis = .horizontal - stackView.spacing = 5 + stackView.spacing = 10 stackView.distribution = .fillEqually stackView.alignment = .leading stackView.backgroundColor = .clear return stackView }() + private let publishButton: UIButton = { + let button = UIButton() + button.setImage(.publishButton, for: .normal) + button.imageView?.contentMode = .scaleAspectFit + button.backgroundColor = .clear + + return button + }() // MARK: - LifeCycle override func viewDidLoad() { @@ -69,31 +77,47 @@ final class EditBookViewController: UIViewController { navigationController?.navigationBar.isHidden = true } private func configureAddSubView() { + // editPageTableView view.addSubview(editPageTableView) // buttonStackView buttonStackView.addArrangedSubview(addImageButton) - buttonStackView.addArrangedSubview(addVideoButton) buttonStackView.addArrangedSubview(addTextButton) + buttonStackView.addArrangedSubview(addVideoButton) buttonStackView.addArrangedSubview(addAudioButton) view.addSubview(buttonStackView) + + // publishButton + view.addSubview(publishButton) } private func configureConstraints() { - // talbeView + // tableView editPageTableView.setAnchor( top: view.safeAreaLayoutGuide.topAnchor, leading: view.leadingAnchor, bottom: buttonStackView.topAnchor, constantBottom: 10, trailing: view.trailingAnchor ) + + // buttonStackView buttonStackView.setAnchor( - leading: editPageTableView.leadingAnchor, + leading: editPageTableView.leadingAnchor, constantLeading: 10, bottom: view.safeAreaLayoutGuide.bottomAnchor, constantBottom: 20, - trailing: editPageTableView.trailingAnchor, + height: 40 + ) + + // publishButton + publishButton.setAnchor( + bottom: buttonStackView.bottomAnchor, + trailing: editPageTableView.trailingAnchor, constantTrailing: 15, + width: 55, height: 40 ) } - +} + +// MARK: - UIScrollViewDelegate +extension EditBookViewController { func scrollViewDidScroll(_ scrollView: UIScrollView) { view.endEditing(true) } From a5b7b3c29e1288044295a658ff3b4fdfd166f775 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 17:00:56 +0900 Subject: [PATCH 08/25] =?UTF-8?q?refactor:=20cell=EC=9D=98=20=EA=B0=84?= =?UTF-8?q?=EA=B2=A9=20=EC=A1=B0=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MHPresentation/Source/EditBook/EditPageCell.swift | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift index da4f4704..735b992f 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift @@ -46,10 +46,10 @@ final class EditPageCell: UITableViewCell { } private func configureConstraints() { textView.setAnchor( - top: topAnchor, constantTop: 20, - leading: leadingAnchor, constantLeading: 20, - bottom: bottomAnchor, constantBottom: 20, - trailing: trailingAnchor, constantTrailing: 20 + top: topAnchor, constantTop: 10, + leading: leadingAnchor, constantLeading: 10, + bottom: bottomAnchor, constantBottom: 10, + trailing: trailingAnchor, constantTrailing: 10 ) } override func touchesBegan(_ touches: Set, with event: UIEvent?) { From b3f2ac4f896f69d3b581e33fcddcbda8cd988516 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 17:25:44 +0900 Subject: [PATCH 09/25] =?UTF-8?q?refactor:=20=ED=8F=B0=ED=8A=B8=20?= =?UTF-8?q?=ED=81=AC=EA=B8=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MHPresentation/Source/EditBook/EditPageCell.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift index 735b992f..68a1edfa 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift @@ -4,7 +4,7 @@ final class EditPageCell: UITableViewCell { // MARK: - Property private let textView: UITextView = { let textView = UITextView() - textView.font = .ownglyphBerry(size: 15) + textView.font = .ownglyphBerry(size: 20) textView.textColor = .mhTitle textView.tintColor = .mhTitle textView.backgroundColor = .clear From b494e95ebbe15c402837e9083436f5ef056173c5 Mon Sep 17 00:00:00 2001 From: iceHood Date: Tue, 19 Nov 2024 17:27:09 +0900 Subject: [PATCH 10/25] =?UTF-8?q?chore:=20=ED=8F=B4=EB=8D=94=20=EA=B5=AC?= =?UTF-8?q?=EC=A1=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/{ => View}/EditBookViewController.swift | 0 .../MHPresentation/Source/EditBook/{ => View}/EditPageCell.swift | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/{ => View}/EditBookViewController.swift (100%) rename MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/{ => View}/EditPageCell.swift (100%) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift similarity index 100% rename from MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditBookViewController.swift rename to MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift similarity index 100% rename from MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/EditPageCell.swift rename to MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift From 129c31330a0cdf756bc5722b731cc21567b8cf35 Mon Sep 17 00:00:00 2001 From: iceHood Date: Wed, 20 Nov 2024 07:29:30 +0900 Subject: [PATCH 11/25] =?UTF-8?q?feat:=20viewModel=20=EB=A7=8C=EB=93=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ViewModel/EditBookViewModel.swift | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift new file mode 100644 index 00000000..544bfbc6 --- /dev/null +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift @@ -0,0 +1,31 @@ +import Combine + +final class EditBookViewModel: ViewModelType { + // MARK: - Type + enum Input { + case viewDidLoad + } + enum Output { + case setTableView + } + + // MARK: - Property + private let output = PassthroughSubject() + private var cancellables = Set() + private var pages = [String]() + + // MARK: - Method + func transform(input: AnyPublisher) -> AnyPublisher { + input.sink { [weak self] event in + switch event { + case .viewDidLoad: + self?.fetchPages() + } + }.store(in: &cancellables) + + return output.eraseToAnyPublisher() + } + private func fetchPages() { + pages = ["Image", "Video", "Text", "Audio"] + } +} From 68b4a9525ce8bc435abed7dbba8ec6ab9344f97a Mon Sep 17 00:00:00 2001 From: iceHood Date: Wed, 20 Nov 2024 07:30:07 +0900 Subject: [PATCH 12/25] =?UTF-8?q?feat:=20textview=EC=A1=B0=EC=A0=95?= =?UTF-8?q?=EC=9D=84=20=EC=9C=84=ED=95=9C=20=ED=94=84=EB=A1=9C=ED=8D=BC?= =?UTF-8?q?=ED=8B=B0=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditPageCell.swift | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift index 68a1edfa..4ef84eac 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditPageCell.swift @@ -18,6 +18,9 @@ final class EditPageCell: UITableViewCell { return textView }() + private var textLayoutManager: NSTextLayoutManager? + private var textStorage: NSTextStorage? + private var textContainer: NSTextContainer? // MARK: - Initializer override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) { @@ -40,6 +43,10 @@ final class EditPageCell: UITableViewCell { private func setup() { backgroundColor = .clear selectionStyle = .none + + textLayoutManager = textView.textLayoutManager + textStorage = textView.textStorage + textContainer = textView.textContainer } private func configureAddSubView() { addSubview(textView) @@ -52,6 +59,8 @@ final class EditPageCell: UITableViewCell { trailing: trailingAnchor, constantTrailing: 10 ) } + + // MARK: - TouchEvent override func touchesBegan(_ touches: Set, with event: UIEvent?) { textView.becomeFirstResponder() From 49f7f6d270b15653c8117dc3cdf24a3abcb7a463 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 10:01:15 +0900 Subject: [PATCH 13/25] =?UTF-8?q?feat:=20keyboard=20=EA=B0=80=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=EA=B3=BC=20=EA=B0=99=EC=9D=B4=20=EC=98=AC=EB=9D=BC?= =?UTF-8?q?=EC=98=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/EditBookViewController.swift | 39 ++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 0fa0127a..21248e80 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -1,6 +1,8 @@ import UIKit final class EditBookViewController: UIViewController { + // MARK: - Constant + static let buttonBottomConstant: CGFloat = -20 // MARK: - Property private let editPageTableView: UITableView = { let tableView = UITableView() @@ -55,6 +57,7 @@ final class EditBookViewController: UIViewController { return button }() + private var buttonStackViewBottomConstraint: NSLayoutConstraint? // MARK: - LifeCycle override func viewDidLoad() { @@ -64,6 +67,7 @@ final class EditBookViewController: UIViewController { configureNavigationBar() configureAddSubView() configureConstraints() + configureKeyboard() } // MARK: - Setup & Configuration @@ -102,9 +106,11 @@ final class EditBookViewController: UIViewController { // buttonStackView buttonStackView.setAnchor( leading: editPageTableView.leadingAnchor, constantLeading: 10, - bottom: view.safeAreaLayoutGuide.bottomAnchor, constantBottom: 20, height: 40 ) + buttonStackViewBottomConstraint + = buttonStackView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: Self.buttonBottomConstant) + buttonStackViewBottomConstraint?.isActive = true // publishButton publishButton.setAnchor( @@ -114,6 +120,37 @@ final class EditBookViewController: UIViewController { height: 40 ) } + private func configureKeyboard() { + NotificationCenter.default.addObserver( + self, + selector: #selector(keyboardWillAppear), + name: UIResponder.keyboardWillShowNotification, + object: nil + ) + NotificationCenter.default.addObserver( + self, + selector: #selector(keyboardWillHide), + name: UIResponder.keyboardWillHideNotification, + object: nil + ) + } + + // MARK: - Keyboard Appear & Hide + @objc private func keyboardWillAppear(_ notification: Notification) { + guard let keyboardInfo = notification.userInfo?[UIResponder.keyboardFrameEndUserInfoKey], + let keyboardSize = keyboardInfo as? CGRect else { return } + let bottomConstant = -(keyboardSize.height - view.safeAreaInsets.bottom + 10) + buttonStackViewBottomConstraint?.constant = bottomConstant + UIView.animate(withDuration: 0.3) { [weak self] in + self?.view.layoutIfNeeded() + } + } + @objc private func keyboardWillHide() { + buttonStackViewBottomConstraint?.constant = Self.buttonBottomConstant + UIView.animate(withDuration: 0.3) { [weak self] in + self?.view.layoutIfNeeded() + } + } } // MARK: - UIScrollViewDelegate From 432d70a8b3092f73bbaf24e7b37bbf55d6d15f74 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 11:27:09 +0900 Subject: [PATCH 14/25] =?UTF-8?q?feat:=20ViewModel=20=EA=B8=B0=EB=B3=B8?= =?UTF-8?q?=EC=A0=81=EC=9D=B8=20=EC=97=B0=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/EditBookViewController.swift | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 21248e80..fa729395 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -1,9 +1,11 @@ import UIKit +import Combine final class EditBookViewController: UIViewController { // MARK: - Constant static let buttonBottomConstant: CGFloat = -20 - // MARK: - Property + + // MARK: - ViewComponent private let editPageTableView: UITableView = { let tableView = UITableView() tableView.backgroundColor = .clear @@ -58,6 +60,23 @@ final class EditBookViewController: UIViewController { return button }() private var buttonStackViewBottomConstraint: NSLayoutConstraint? + + // MARK: - Property + private let viewModel: EditBookViewModel + private let input = PassthroughSubject() + private var cancellables = Set() + + // MARK: - Initializer + init(viewModel: EditBookViewModel) { + self.viewModel = viewModel + + super.init(nibName: nil, bundle: nil) + } + required init?(coder: NSCoder) { + self.viewModel = EditBookViewModel() + + super.init(coder: coder) + } // MARK: - LifeCycle override func viewDidLoad() { @@ -68,6 +87,7 @@ final class EditBookViewController: UIViewController { configureAddSubView() configureConstraints() configureKeyboard() + configureBinding() } // MARK: - Setup & Configuration @@ -134,6 +154,17 @@ final class EditBookViewController: UIViewController { object: nil ) } + private func configureBinding() { + let output = viewModel.transform(input: input.eraseToAnyPublisher()) + output.receive(on: DispatchQueue.main) + .sink { [weak self] event in + switch event { + case .setTableView: + self?.editPageTableView.reloadData() + } + } + .store(in: &cancellables) + } // MARK: - Keyboard Appear & Hide @objc private func keyboardWillAppear(_ notification: Notification) { From c7c574a4bc6eb818b8d8653e760412d63cd99bb5 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 11:29:31 +0900 Subject: [PATCH 15/25] =?UTF-8?q?chore:=20=EB=B2=84=ED=8A=BC=EC=97=90=20?= =?UTF-8?q?=EB=8C=80=ED=95=9C=20todo=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/EditBookViewController.swift | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index fa729395..7e23878a 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -88,6 +88,7 @@ final class EditBookViewController: UIViewController { configureConstraints() configureKeyboard() configureBinding() + configureButtonAction() } // MARK: - Setup & Configuration @@ -165,6 +166,28 @@ final class EditBookViewController: UIViewController { } .store(in: &cancellables) } + private func configureButtonAction() { + // TODO: - 로직을 정한다음에 Action 추가 + let addImageAction = UIAction { [weak self] _ in + // TODO: - 이미지 추가 로직 + } + addImageButton.addAction(addImageAction, for: .touchUpInside) + + let addVideoAction = UIAction { [weak self] _ in + // TODO: - 비디오 추가 로직 + } + addVideoButton.addAction(addVideoAction, for: .touchUpInside) + + let addTextAction = UIAction { [weak self] _ in + // TODO: - 텍스트 추가로직??? + } + addTextButton.addAction(addTextAction, for: .touchUpInside) + + let addAudioAction = UIAction { [weak self] _ in + // TODO: - 오디오 추가 로직 + } + addAudioButton.addAction(addAudioAction, for: .touchUpInside) + } // MARK: - Keyboard Appear & Hide @objc private func keyboardWillAppear(_ notification: Notification) { From 7d21f49bb2cf0e5ca1f75a4e8fdd1adfa971560f Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 11:32:42 +0900 Subject: [PATCH 16/25] =?UTF-8?q?chore:=20todo=20=EC=9E=91=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 1 + 1 file changed, 1 insertion(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 7e23878a..f9bf1409 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -156,6 +156,7 @@ final class EditBookViewController: UIViewController { ) } private func configureBinding() { + // TODO: - 추후 로직 추가하기 let output = viewModel.transform(input: input.eraseToAnyPublisher()) output.receive(on: DispatchQueue.main) .sink { [weak self] event in From d713a48c517a48e89743984aa2ff71096b994b09 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 11:34:42 +0900 Subject: [PATCH 17/25] =?UTF-8?q?refactor:=20=EC=86=8D=EC=A7=80=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1=20=EB=88=84=EB=A5=B4=EB=A9=B4=20=ED=8E=B8?= =?UTF-8?q?=EC=A7=91=EC=9C=BC=EB=A1=9C=20=EC=9D=B4=EB=8F=99=ED=95=98?= =?UTF-8?q?=EA=B2=8C=20=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/BookCreation/BookCreationViewController.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/BookCreation/BookCreationViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/BookCreation/BookCreationViewController.swift index 69f05ad4..edbbd000 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/BookCreation/BookCreationViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/BookCreation/BookCreationViewController.swift @@ -210,8 +210,12 @@ final class BookCreationViewController: UIViewController { normal: normalAttributes, selected: selectedAttributes ) { [weak self] in - // TODO: - 구현 해야 함 - self?.navigationController?.popViewController(animated: true) + // TODO: - 추후 뷰모델 관련 생성 이슈 조정 필요 + let editBookViewModel = EditBookViewModel() + self?.navigationController?.pushViewController( + EditBookViewController(viewModel: editBookViewModel), + animated: true + ) } } From 5b6c6e0d3e3692dac58e8f1eae3c6dee0b8f9294 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 13:15:10 +0900 Subject: [PATCH 18/25] =?UTF-8?q?feat:=20=EB=B0=9C=ED=96=89=20=EB=A1=9C?= =?UTF-8?q?=EC=A7=81=20=EC=9E=84=EC=8B=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index f9bf1409..e3601d20 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -188,6 +188,12 @@ final class EditBookViewController: UIViewController { // TODO: - 오디오 추가 로직 } addAudioButton.addAction(addAudioAction, for: .touchUpInside) + + let publishAction = UIAction { [weak self] _ in + // TODO: - 발행 로직 + self?.navigationController?.popViewController(animated: true) + } + publishButton.addAction(publishAction, for: .touchUpInside) } // MARK: - Keyboard Appear & Hide From 0a7ebc611b80bf36e303ac403e8abd0096faf771 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 13:42:01 +0900 Subject: [PATCH 19/25] =?UTF-8?q?feat:=20NavigationBar=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../View/EditBookViewController.swift | 56 ++++++++++++++++++- 1 file changed, 54 insertions(+), 2 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index e3601d20..801b1b31 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -84,6 +84,7 @@ final class EditBookViewController: UIViewController { setup() configureNavigationBar() + configureSaveButton() configureAddSubView() configureConstraints() configureKeyboard() @@ -99,7 +100,55 @@ final class EditBookViewController: UIViewController { editPageTableView.dataSource = self } private func configureNavigationBar() { - navigationController?.navigationBar.isHidden = true + // 공통 스타일 정의 + let normalAttributes: [NSAttributedString.Key: Any] = [ + .font: UIFont.ownglyphBerry(size: 17), + .foregroundColor: UIColor.mhTitle + ] + let selectedAttributes: [NSAttributedString.Key: Any] = [ + .font: UIFont.ownglyphBerry(size: 17), + .foregroundColor: UIColor.mhTitle + ] + + // 네비게이션 왼쪽 아이템 + navigationItem.leftBarButtonItem = UIBarButtonItem( + title: "뒤로가기", + normal: normalAttributes, + selected: selectedAttributes + ) { [weak self] in + let alert = UIAlertController( + title: "작성을 취소하시겠습니까?", + message: "작성 중인 내용은 저장되지 않습니다.", + preferredStyle: .alert + ) + alert.addAction(UIAlertAction(title: "취소", style: .cancel)) + alert.addAction(UIAlertAction(title: "확인", style: .default) { _ in + self?.navigationController?.popViewController(animated: true) + }) + self?.present(alert, animated: true) + } + + // 네비게이션 오른쪽 아이템 + navigationItem.rightBarButtonItem = UIBarButtonItem( + title: "저장", + normal: normalAttributes, + selected: selectedAttributes + ) { [weak self] in + // TODO: - 저장하는 로직 + self?.navigationController?.popViewController(animated: true) + } + } + private func configureSaveButton() { + // BookCreationViewController에서 넘어온 경우에만 저장 버튼 보여주기 + let isFromCreation = navigationController?.viewControllers + .contains { $0 is BookCreationViewController } ?? false + + if isFromCreation { + navigationItem.rightBarButtonItem = nil + publishButton.isHidden = false + } else { + publishButton.isHidden = true + } } private func configureAddSubView() { // editPageTableView @@ -130,7 +179,10 @@ final class EditBookViewController: UIViewController { height: 40 ) buttonStackViewBottomConstraint - = buttonStackView.bottomAnchor.constraint(equalTo: view.safeAreaLayoutGuide.bottomAnchor, constant: Self.buttonBottomConstant) + = buttonStackView.bottomAnchor.constraint( + equalTo: view.safeAreaLayoutGuide.bottomAnchor, + constant: Self.buttonBottomConstant + ) buttonStackViewBottomConstraint?.isActive = true // publishButton From 33d57a17818ff700c53a694d490cf6193ea2bc2d Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 13:48:31 +0900 Subject: [PATCH 20/25] =?UTF-8?q?refactor:=20deinit=EC=8B=9C=20observer?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 801b1b31..0010e5d6 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -78,6 +78,12 @@ final class EditBookViewController: UIViewController { super.init(coder: coder) } + // MARK: - Deinitializer + deinit { + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) + NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) + } + // MARK: - LifeCycle override func viewDidLoad() { super.viewDidLoad() From d9f1c92d16bab7e57bd9f76216fc1e37c027088f Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 13:50:15 +0900 Subject: [PATCH 21/25] =?UTF-8?q?refactor:=20textButton=EC=9D=80=20?= =?UTF-8?q?=EC=B6=94=ED=9B=84=20=EB=85=BC=EC=9D=98=EB=A1=9C...?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 0010e5d6..b3637e77 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -32,6 +32,8 @@ final class EditBookViewController: UIViewController { button.setImage(.textButton, for: .normal) button.backgroundColor = .clear + button.isHidden = true // 추후 로직 추가하면 보여주기 + return button }() private let addAudioButton: UIButton = { From fd8bd18dd5bd73bc7c578afae6029e93f2bf28fe Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 13:52:47 +0900 Subject: [PATCH 22/25] =?UTF-8?q?chore:=20todo=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 2 +- .../Source/EditBook/ViewModel/EditBookViewModel.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index b3637e77..4a9d3c21 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -289,7 +289,7 @@ extension EditBookViewController: UITableViewDelegate { // MARK: - UITableViewDataSource extension EditBookViewController: UITableViewDataSource { func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return 10 + return 10 // TODO: - 추후 더미데이터 대신 뷰모델 데이터로 변경 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { guard let cell = tableView.dequeueReusableCell( diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift index 544bfbc6..81764860 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/ViewModel/EditBookViewModel.swift @@ -26,6 +26,6 @@ final class EditBookViewModel: ViewModelType { return output.eraseToAnyPublisher() } private func fetchPages() { - pages = ["Image", "Video", "Text", "Audio"] + // TODO: - Page가져오는 로직 추가 } } From 6653eba67b7941ed03e2013f1b2ebcee00c2aa3d Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 14:10:24 +0900 Subject: [PATCH 23/25] =?UTF-8?q?refactor:=20NotificationCenter=20deinit?= =?UTF-8?q?=EB=B6=80=EB=B6=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 6 ------ 1 file changed, 6 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 4a9d3c21..7371ea6d 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -80,12 +80,6 @@ final class EditBookViewController: UIViewController { super.init(coder: coder) } - // MARK: - Deinitializer - deinit { - NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) - NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) - } - // MARK: - LifeCycle override func viewDidLoad() { super.viewDidLoad() From 641b8c4ec93347abd69517ede6cdd5e598c21130 Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 14:11:38 +0900 Subject: [PATCH 24/25] =?UTF-8?q?feat:=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=20=ED=83=80=EC=9D=B4=ED=8B=80=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditBook/View/EditBookViewController.swift | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift index 7371ea6d..aa937236 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditBook/View/EditBookViewController.swift @@ -139,6 +139,10 @@ final class EditBookViewController: UIViewController { // TODO: - 저장하는 로직 self?.navigationController?.popViewController(animated: true) } + + // 네비게이션 타이틀 + // TODO: - ViewModel에서 받아오는 타이틀로 변경 + navigationItem.title = "책 제목" } private func configureSaveButton() { // BookCreationViewController에서 넘어온 경우에만 저장 버튼 보여주기 From 46eb5fc4cea2685863dd271cba15d5fdcbf0be9c Mon Sep 17 00:00:00 2001 From: iceHood Date: Thu, 21 Nov 2024 14:15:43 +0900 Subject: [PATCH 25/25] =?UTF-8?q?refactor:=20EditPhotoViewController=20?= =?UTF-8?q?=EB=85=B8=ED=8B=B0=EC=84=BC=ED=84=B0=20=EA=B4=80=EB=A0=A8=20dei?= =?UTF-8?q?nit=EB=B6=80=EB=B6=84=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Source/EditPhoto/EditPhotoViewController.swift | 6 ------ 1 file changed, 6 deletions(-) diff --git a/MemorialHouse/MHPresentation/MHPresentation/Source/EditPhoto/EditPhotoViewController.swift b/MemorialHouse/MHPresentation/MHPresentation/Source/EditPhoto/EditPhotoViewController.swift index bc208026..1425e78a 100644 --- a/MemorialHouse/MHPresentation/MHPresentation/Source/EditPhoto/EditPhotoViewController.swift +++ b/MemorialHouse/MHPresentation/MHPresentation/Source/EditPhoto/EditPhotoViewController.swift @@ -64,12 +64,6 @@ final class EditPhotoViewController: UIViewController { }() private var captionTextFieldBottomConstraint: NSLayoutConstraint? - // MARK: - Deinitialize - deinit { - NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillShowNotification, object: nil) - NotificationCenter.default.removeObserver(self, name: UIResponder.keyboardWillHideNotification, object: nil) - } - // MARK: - View Life Cycle override func viewDidLoad() { super.viewDidLoad()