From 2d25a4de7707017173a8b6d5ff81e65df1713b7c Mon Sep 17 00:00:00 2001 From: RomanSteinberg <romanofficial@yandex.ru> Date: Thu, 8 Jan 2015 17:42:39 +0300 Subject: [PATCH] FIX: exam form generation --- .../Controller/Handler/FileCreator.php | 108 +++++++++++++++--- ~dev_rating/docs/template exam.xls | Bin 27136 -> 34304 bytes 2 files changed, 92 insertions(+), 16 deletions(-) diff --git a/~dev_rating/application/classes/Controller/Handler/FileCreator.php b/~dev_rating/application/classes/Controller/Handler/FileCreator.php index 95e27fc28..06aa84663 100644 --- a/~dev_rating/application/classes/Controller/Handler/FileCreator.php +++ b/~dev_rating/application/classes/Controller/Handler/FileCreator.php @@ -214,13 +214,13 @@ class Controller_Handler_FileCreator extends Controller_Handler $index = 1; foreach($result as $studentInfo){ - $this->addStudentToSheet($objPHPExcel, $studentInfo, $rowNumber, $index); + $this->addStudentToSheet($objPHPExcel, $studentInfo, $rowNumber, $index, $type); $rowNumber++; $index++; } } - protected function prepareSheetHeader(&$objPHPExcel, $examType, $data) { + protected function prepareSheetHeader(&$objPHPExcel, $disciplineType, $data) { $sheet = $objPHPExcel->getActiveSheet(); $range = $objPHPExcel->getNamedRange("Discipline")->getRange(); @@ -236,31 +236,43 @@ class Controller_Handler_FileCreator extends Controller_Handler $range = $objPHPExcel->getNamedRange("Grade")->getRange(); $degree = $data['Degree']; - $gradeName = $data['GradeNum']; + $gradeNum = $data['GradeNum']; + $gradeName = $gradeNum; if ($degree == 'master') $gradeName = $gradeName."Рј"; $sheet->setCellValue($range, $gradeName); $range = $objPHPExcel->getNamedRange("Semester")->getRange(); - $sheet->setCellValue($range, $data['SemesterNum']); + $semester = $data['SemesterNum'] + ($gradeNum -1)*2; + $sheet->setCellValue($range, $semester); + $range = $objPHPExcel->getNamedRange("Year")->getRange(); $sheet->setCellValue($range, $data['Year']); $range = $objPHPExcel->getNamedRange("CreationDate")->getRange(); - $sheet->setCellValue($range, date("d.m.y")); + $sheet->setCellValue($range, date("dd.mm.yy")); + $range = $objPHPExcel->getNamedRange("Date")->getRange(); - if ($examType == 'exam') { - $controlDate = '__________'; - } else { - $controlDate = '30.12.2014'; + if ($disciplineType == 'credit') { + $controlDate = "Дата зачета\n30.12.2014"; + } elseif ($disciplineType == 'exam') { + $controlDate = "Дата экзамена\n__________"; } - $sheet->setCellValue("$range", "Дата зачета \n$controlDate"); + $sheet->setCellValue("$range", $controlDate); } - - protected function addStudentToSheet(&$objPHPExcel, $data, $row, $index) + + protected function addStudentToSheet($disciplineType, &$objPHPExcel, $data, $row, $index) { - $sheet = $objPHPExcel->getActiveSheet(); - - $indPosition = 'A'; // Номер + $sheet = $objPHPExcel->getActiveSheet(); + if ($disciplineType == 'credit') { + addStudentInfoForCreditToSheet($sheet, $data, $row, $index); + } elseif ($disciplineType == 'exam') { + addStudentInfoForExamToSheet($sheet, $data, $row, $index); + } + } + + protected function addStudentInfoForCreditToSheet(&$sheet, $data, $row, $index) + { + $indPosition = 'A'; // Номер $namePosition = 'B'; // Р¤РРћ $totalRatePosition = 'G'; // Ртоговый рейтинг $semesterRatePosition = 'H'; // РЎСѓРјРјР° баллов @@ -299,7 +311,71 @@ class Controller_Handler_FileCreator extends Controller_Handler ->setCellValue($semesterRatePosition.$row, $rate) ->setCellValue($bonusRatePosition.$row, $bonus) ->setCellValue("J".$row, $tempStr); - + } + + protected function addStudentInfoForExamToSheet(&$sheet, $data, $row, $index) + { + $indPosition = 'A'; // Номер + $namePosition = 'B'; // Р¤РРћ + $totalRatePosition = 'G'; // Ртоговый рейтинг + $semesterRatePosition = 'H'; // РЎСѓРјРјР° баллов + $bonusRatePosition = 'I'; // Бонусные баллы + $examRatePosition = 'J'; // Баллы Р·Р° экзамен + $rateOfFivePosition = 'K'; // Оценка Р·Р° экзамен РїРѕ пятибальной системе + + $sheet ->getStyle("A".$row.":S".$row) + ->getBorders()->getAllBorders() + ->setBorderStyle(PHPExcel_Style_Border::BORDER_THIN); + $sheet ->getStyle("G".$row.":J".$row) + ->getAlignment() + ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); + $sheet ->getStyle("K".$row.":L".$row) + ->getAlignment() + ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $sheet ->getStyle("M".$row.":N".$row) + ->getAlignment() + ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); + $sheet ->getStyle("O".$row.":U".$row) + ->getAlignment() + ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_CENTER); + $sheet ->getStyle("R".$row.":R".$row) + ->getAlignment() + ->setHorizontal(PHPExcel_Style_Alignment::HORIZONTAL_RIGHT); + $sheet->mergeCells("B".$row.":F".$row); + + $lastName = $data['Last']; + $firstName = $data['First']; + $secondName = $data['Second']; + $rate = (int)$data['intermediate']; + $bonus = (int)$data['bonus']; + $examRate = 0; // TODO: get it from DB + $fullName = $lastName." ".$firstName." ".$secondName; + $totalRateValue = $rate + $examRate + $bonus; + + if ($totalRateValue > 100) + $totalRateValue = 100; + + $totalRate = ''; + $rateOfFive = ''; + if ($rate < 38) { + $totalRate = ' '; + $rateOfFive = 'РЅРµ СѓРґРѕРІР»'; + } elseif (($rate >= 38) and ($examRate >= 22)) { + $totalRate = $totalRateValue; + $rateOfFive = 'СѓРґРѕРІР»'; + if (($totalRateValue >= 75) and ($totalRateValue < 85)) + $rateOfFive = 'С…РѕСЂ'; + elseif ($totalRateValue >= 85) + $rateOfFive = 'отл'; + } + + $sheet ->setCellValue($indPosition.$row, $index) + ->setCellValue($namePosition.$row, $fullName) + ->setCellValue($totalRatePosition.$row, $totalRate) + ->setCellValue($semesterRatePosition.$row, $rate) + ->setCellValue($bonusRatePosition.$row, $bonus) + ->setCellValue($examRatePosition.$row, $examRate) + ->setCellValue($rateOfFivePosition.$row, $rateOfFive); } protected function getSheetName(&$disciplineInfo) { diff --git a/~dev_rating/docs/template exam.xls b/~dev_rating/docs/template exam.xls index 682553295565fb2e1931608da9f2bebac94b6c46..64d1f4aecb71304a86b2e6d26f12ca52f0dd731c 100644 GIT binary patch literal 34304 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 DA!seb literal 27136 zcmeHQ3v?V;dH!cLl2(>%OR_A>FL@<Pwrop^p0;dR)>?if#u74qfb*b=VyzMp+frmX zC(xLf7EU=$N`nnao4BO`LV1J$PIw)_7!HR=D+-4L^$AH@L*qh$5R#^pN5b~|?%mm) znY}aKg>p_qGow3q?tkz9xc~j{e;+fm`sOz(E<W(FCEpX@u|*2xH^~wya=|U!GpM6n zqzyMr|0bDCYM=;iUp`(!8h8=1cB1hL5Nw1(1h#oGLKL9{VGcqmLK(tbgn0<_5nuvR zfl!IC0HF$DAwo66B7_=*#Ry9fmLe=eSdLJOumT~5P=`>Duo9sGp%Gyf!fJ#jgf$3j z5!N9zBeWp2B3yw$yJP5Z-M@rX|9?W%y)ub&25qrJjv}6x*F&4RAJwoJry>!c#iG25 zoL5)b$*AJCrw_fa_M6t<9lY?WhY+^|7N^1Ccn!Eu%gu6wlH+C#%;Q=q5sP-~$dC&v zCH&$wx@4j3ljCv(=cuatE@)v~$wbJEOyK@#2+=0+rw?RxC__k5Pu4F|sY2Nf4u_Ns z3DpAm$<qV=PTh0mPkr4@p>dQ%(Tj@;<pV3eUi>w9^CDz^Pa^VB`wO^=d>`RDnSu|n zR@>cn-0re>+kN&<+;`Y*cI@|c3@8~!Ey{2nvi9N5k~4so!>166mdAC0x_(5J`>eY5 zA?G%nzi9lcWj!dtG3sC>uFCy|y4I`fJX|gLq{8{Gg0#a^eHG=CcR1Q9w6?-3CSVDN z<@cQ%arj1NC7Z8>+|RPY##}pvYZ-IXH8SSf@awFv8P|qa4$cju{4;1bNak930#%7> zD~!y}DYmvL9Z$dyP~YtsBUqy3vL&`$ri3N^lG0lM7fZTAOEjZ@_k@<PFI(aX=pvj3 zOGHDtutZ5{iJJ^^97$<(G_BLkm(du<ab^F3?GnN09$rGA)612ZbJ-FVfhB6~D=_XX z6l*0W1uJp3Nxj7FR$P1Gu37-`!)xu0nAj{aqg*R{B_U(-+Cb!9%!rn{kz2ttn5#Fp z*4}}}jfJ5HN#G}RGiF1bVvV4VYe6x)p3KoY2+Mcy>ruKstvij&Yg~A(wQt4*%*bv8 z>K?&NOruccUUuGmmSVnUm!0RZ`(rd)uc>xkH3Ts=mGZLghdXdAMN{E5!+u>Dd#~Kt zb=K^?rLx&)=R54z$$K%LS@rTztlrhKx;6dKTDw~w#1z|5+-pnOh#Ta67(=rVwfJUk zI<MB=Dt`~x9Ecju*&&jU_oM458`i@4O~<j|;9ROTlk1oj@!aj%EFa)PVx(nlY-RJx zm2D#}z1O+!39oOd2Xv$*KGITaAD0ipO$Q3*v~QSr?lLAJX@G=#1?`d#aYd6Bw6)D6 zt4^lG?eEVByi6YAN~^x1Ue|9;?{!U1;<`1pcAb2ft1bsLvZnXiy@|2cdJEOd!(5g* zg~-fJ2WgU8Egyl#eWiTVQbjk&M+IxL5sKnyeob#Gd0mqd^|~~GEx<&41YBC>V_fo$ zG`aEC#@tA{&C(eCa#l8ZndusM`6<yH8Nd=+Op{nIk6?7nFm>?Ld>v%PI)iypt$0QL zD;dLF#W~K$2*-p<!=KL$&Z(WE<0~HoCskAVKV-Ot5hQbHJ##-o>EY2-j{PpB|7`e& z1K=MFfIl1nzdr!}kpTEZ0r0;GfZrJa50WQ{{v(PG_iDWQ`P%@vmM6QsmM0tj-T*ou z3xGcw06!N1|MLL&rvu>m%JXqWhx=GcKkulhxVQA)Qn7VAa&OCle}2X1SBQO&D$o5c z2d>L&IQPk(=jz|re=WEtRo+?fi{l?YYJ_tyO_l$)?7=Oz$#i+{uespZj??g}3_ONg zRL2MR$;17*6rE9#Eou7Pvs3VQjF0R3ep1z!`*;fOqf_I+AH@w1`$MWc_X<sV;69+D zlP<6OBliYP^ttz_;Abi-s!OZUF83+=Tmvb%PoLahRPb-h^|%FDtq1Non&?~b`6fCR z1|Soh`<4oxmS6h~fZ^+7f<KxJZZu!q1733tCOQWA62L3U<1thDii&s)IUYJl#!PTj zvn>#ApwIH<<>2b0kAdAthj6Pr4(^UT+#6Q)r2(kJUEi20>4tMZS(We6P=`($&P`r* zxalbU81z7Sy!tE#Zi>D^&#|oXWMxU6-n?carDyJM2h)L&ZB|8G;xVT@F)i*;w{Z*H z1TU|UtaeoTG|(a3R37ccTB$?pN7onSd%SvJ5sMQvpMEr4>C=K;A(^FTgPl~;J`Lp+ z+*Ce5Kk#No{Sa=duae)OPui_X|Ad?Luk75Q|Lk_x`k_3=`Vt;gUkmo&)2FJh1$!{S z%VAz7xVL`+5$&kx80=Z;&Cq{QFQXoyPoMqp8IHxLHNO6<;h=AXqe)!w+oM%-I~{cT zI4;HWhsI7sx5^0*oXiXG%&1E3k3%uS#RR6|Yv*DACSt3M#5gyk^$MU31pGue<mNzx z9wnFvYL*KTy0>5=9E5X_gncxaNL6k`sK;O;9L95ygtL-hA{_HCOJsI1ymdH1$bm?B z>(IDzAQIj>oMPlaB)oOtIdUNq-a4F&<RD3S>u~0hA%cXd?{svAw+^Q*IS>hN9X_wk zfk=4kV5XT1k?_`u<whjDb>J*>ktDoz;8`zEL_bmw?tm+EBNE;^4Y?5sZ=J^6h=jM! zs@#Z#x6bO^h<ID)?Y?oR2}Fw3xD&x$fB&t?tZ|1K$=Sb7I;~TTv52rc?zkiAY}`d% zFlXbg#0871tvtRUk--HCb)1O$g<1o+Td01sP|rR0T$WJ%{ry=&5#|?)FuzcQrDTGZ z{6g{Fii}XdIw83W^}nYn|A^lTp)wAKkJdfS$7Ufg-1YGdk;@WE_J<Q`%Y}&F3AgyH zu^mJr=~+-#bxuSN_z*f&<pQToG*y57-8ym1H@mevL0Gpo@p*U@%lR1lz=IDy_<J-# zzk0gBF<3oT_Jpt-2)bn{?3qM>%_e_*CS8kcA{)F!q{wXe$*=sAi-=$Jp0wzW>+tCF zMD#Xa%WechAq-dRIhmYIb9MaB*|TSplH%(49|cSK0LTBNVekQt|4GB(1F~z}>#1>8 zS9h2tPg<<8N}h=NYrNT0V>p&{1=Nf_n`^&^E1vRu5gb)~`5C2W#r1S#1(q#y#p=MS zrcq*eT!P&ddy{(Wq|Y9(+vQYr2mz#1hh^6$=i;G5P<a}Rg%=%)?Zo)wm!3@)@}BDv zRG^Vd5%R1E<Jn>0Ss%iaeK^IlFfsnzlTVm=R)+EHH1J#%!js)Q#j_|e{-bA~H1k{# z#<R=7b8QGu_TCiF;>7r+i$5{*tP11VZQ$7&!c#i{)t*tb=THCB%yVHF&-DhL9U(l| zXX;s!7=Q6U9y9Z-CeN-wJIuD*72p|MKCN4OcJNcPPnmfx3gc<A+m#_a-F7=W`0t<o zl$mEu7*CVkt`6bpw%ggk3r~I4%yV%VPm|rQ3*qUu+u6a{^WQb|ToT69WVcs@@O0bl z?BFM!{GplW(lDMTyX_3&>9*V1!56;ssF~+7@?4*X-NwK(xO~QLJ38O_$OX+4J&3O; zrv2^mFrFs6Z3yA%w%d-*$L@WnnP+VnPm|p?h46ISZAa%9|M@;M&lO=jO?KNH!qaWH z9i3+%_==flER3hgZreh5y6v{3^YqtK<BGpM>%w@N?6xa}r`v8jI)8QkZc{xMV8^>y zEdShKD||bIOC6TIJX!3UKV<AvWcW>=Gt*w_r%jvm)2{Q;cH1E~+xHBaX*c+3)Aszd z8-29h_9k-wXRbEWZuHZpjrnP>@zHkMmB`7lcbjRi^3$d*`DwTKXuIu4WcNc~Hq&11 zr%jvj({A_CcH4=_f8VpyM0-A-)D((UiFcN_;0@*&=pILKECgHPkt*P2^0`dn{GyOE zT<j8XzQ}uSB`E(@gs&h7;3C*UVRtI(NtJj~rz7+6f{T)6cS@RUSr#f;oP4(|+#JZr z((jdpD};<JI_1csQ;sY;bvm*bZ{^|5?n=DVeWl%FZ?${zUUwhvy6scZJA4|dPR@ab zvP%ZZ#}&r!s4H96os1?=MVo!1M3bem0Alv5SJJma@ZAu76JAJXlb*(dh31ns@K$;8 z3hg8o7^;fh_Igxwx4kiq(Q>jF7_B~x;$&GCMog~7K>1o_J*Oi}@fKvMSc|~C6V}y> zKr7n>E8{w4x0hf+IYc*?rB71p60FTv>^h-!N6RXPjM_<&+Z93F=$-uBDgwA^FBQNo z+5i6Y{{k~3x3(Z|^jCgvl>ywe-wNQSCkPS6tv!evJy@SllM4d4(UV28HF-M11)?oh z4OWm_&{o;<FHYLx<Z^pSN$g%Fve!GUp?jK>DuVocRkl*BC7{k#Y8-K|J&5}@dl=R* zj6T*4gQJ<AivFdyHjzciO34M&-P^cNqhv&l(=#i_GqH~sr9G2QxxGOV-lWi8OXr=A zEW|=2D%Ntyw?Tc~;dp`#URev~qZ|24nRIT^g1XtJ%T>*(leUyj*!50DcX=sW%h0Cg zvd)ODJTi86Sa05+!S+vTMu~26QqYGRd_)C9My=hhT$i`cuRmFW@>hAwM@o{5QGNgo z6$cJKbLp_J!gUyah7H*n;(01$gA|FiLivFmumIMw-^;*SiiUBQ@YD?(PU*T~S1MJv zMR?#}Lb_X&7=6l#X+OQuOFhz!&o;BmIql;NS}D4VWg|y`6{u>Dy%|)mL`9u;KkB1A z2P1%~B=@w^qb2sV924YzRAxZZDaQnL$}vHmqT}9lvJg$O*2}rDFvWRGdJo9mkd1hq zwp^?_w9_z5mlZH~x&vOak(y+=Tn@`|%T!!?NOJ~!ZkDm@x5#Gf=~?wq;3inf0IZ}R zD(%K(V;e>(-mS;I9$bfE62m@8N|RNRE4I5SA(Uexw)CAWFzBuTx@$n|QYC#5j^mSi z;M;Pt2v{6F)QF}oR$)<co)ODC_$|Qe%$O-Pf+*eHRbWGd_f6WYCFp_PGH#RS-k)Rg z+#pn@`L^gmd7De3yCGKv&iyEH13t$};KRKce5}a3A@%Xbg!+hXBi@^vkX!Ll-HfZm zAYeDjO@Osy)q1_f?b^5CL)Eq|tZuQ@f@Y)Pum|+n_eE>uJ{NC21W@fF@4*Li?{Vc3 z|1OLb#W)|vr-+tV_9D7bX5gs75(P&YADyL+ZPSU-nTg4x+ec>-oA^2gOYy<8*sfBk z+$g$djl`Hc$DKQI?9jy2;fbT9K)GtvC$>`PDs$!Z=oqsLgR&=&Pa&InHDC{ozHV|F z*_<HNsBd;9>LR``aU^kUCczTeK1GQ-QYv+qIDW&}#H|y@P*W7*1BV**`L7ha3hhsf z9=b_UDMAs08m>-^Y97V%1uKexZ-{?v$qVwl-2jp+5MY2qp7vX$2Qlr?`jo*tPAw)~ zu+gn>Bb+_<s&26xFSn~v&y2wC97i|agqUVdf}H8Gi*q%>F>QnD+|KNI*oGBU*UcBJ z0dKU|An?uhn2^%8lp7cT7TDGSuo)*lrIdDDd)2_vks=<G4#?V#{FrQ3%(fwaSfx$% zm?u^RiuHl$R$O-jHA8l{y`0&a$8NhB0<i+UD9nioeWpgBqlk%DrQJ40wc3>T<qQVi zj)P1Wv`BppW?{6Y)YWE}iB*N7?Fey~JoH1@bZW=;K1WqOm+uCxE|BLigbz(}7uS#8 zZKE$%feIC^o+Sja!N6*%>5RGgsSSE?&H^$G>@+?Nfo9PG^XRcRL8tVA+f_w-P%C1a z=r*9&V90W2n~qP8;j=2v5eI<O2P=aL{91O#71{+gHGr6MZ3MSXkYqDZxgzSp*(fCu z7`#@3ze(B1`JI^jDn|hK7fT%&_&33T;$Ya!j;O7bt;kM;_rIKiPP`x+ge-iQ$H_1I zBW;n`Ttvl$PMMGaWt}?!VXdj09vCBLmfCpRRW?<?2I;cV5i-^0kjD<HeE@B(m1|xS zqPn&yb~Ip3iw5Iw2i-no@9m`C9?eoQsjfp;=|t^0^7o@p!4JgLyr~;WN=H+28g39q zgTAx{wWO_3y6q?whhP+g-NxykJ;+UBIEl)a@Zgbe?5%}kowh`7$FsdJVHEf?Jf8ao zJnf-qH3ABxj_OqWR=Eem*FCPBflHR$57_-K7zoN;fZgSSkpSQA*58Yld%hPhjig@= z#0o;>&D%sC-Xn7E)%?8(eq~*T>lj{6=Y0jPd@V65FMQzHZw=kBr+-Aj*DClrb^Q|s zIf*jP(TJ%braJN_<a`0nNB`2qpQ>_iRyeCrdT7<@uZ?wlt$(!(vndUKtbYyeUwHA2 zpa0iqe$YQ8>p^k|6N5we=6F($A&g^!5R-$LLhM8A|1v*@Un}6($upR4Os53Hh+p)C z94sinL@a_C`hBHc(J|C=KE63;ZFv>hs`QdV`JE%S4-dwq&e-(r|Mp$4JWwy?)?h)I z{KL0??ud-i*$3aJ(T79bNxvNbf6;)u<?*(%>>Jwu3f3K7-1=Sm$*!YQ$7cp6j>^vA zy+iwk5A5BxL-y|2w|#I>4ji4BP8{RiuA`Vt9!`wjI&t(y8Q!^5b{!eLF|q&kQwe#+ zo*h>XCB|fUdLnUjMopb%&+y*;d$;b|FWV*$AI3adq3lf@n>>7+Q)?NXV$?2sMyC?f z`zGFykii}M_wU%t@{`j;lVb_#=(=HQD%ZB9w;ejT{WTW!@&J5r3H%u*d8+Rnj2w*2 zdCR~9dz!x8@5K163hX|f$vChqM*Eu_&;j(~sGLw99lwH8NIxkmP5O_QWYQ7jJZ@#u z1(-886lc;lX6x?!LeBlM<LuBY!rp{nJaW=pw48GBi$abguKW_z)15yDW55v?zf$b& zNHjyQ40Sl=!k-KO@1{2oJ5G<g@aMx%y6Kg});{6F=Yp@HEJME%`)h9e1$dMFl#72A zhEg~FLi|R+k$D<lBK(Gpzf8b`BVsfH%U1Vr-Z<jWEMe>i)pE7!4i1bOtH$`Fj#N1= zY5XvbQhpfPAPdIVF{|aB9v)m4`T5d-s^vzqPs>MNjq#l%(lCzAe!l#srCKg}c+igh zFn%lPhf!C47{8VC!>B<&j4$l_VU-3Lrh-}JII{b37aCw}KYuyCitdMTX5xqOMR7lD zi2=sfxc%k$R<<9;m#qCTzBBEIajoixy{KkXf{h6t=Tyo<YA^by&MUw?gHoJRn+P^i zLFX~_6pd4f`3a@e^cEoX3iJw{w@|KD6L_X*7B{MGhjaMV1$r8C4x&%^G0>XfFBC*D z!9~xyT2ZBG-lC|T!_xxJd2Y%1T&O6pAKd~>%G?HzmOlmdx?A}1qoTk~n0#emAKk<6 zVw6PO&K!o;oK!@vLCawnM9m8!;WepJwp^=z@r=5rue}y$Q7W$(rD%~FCyE?uy$~LC zpZZlajWb7Hg|jr3SB869>^WQu;X9e<KI7m<D(w1GYBPlzV{1&|JY+cI;y)LHI-i>3 zL97g>&LP};&$)^Zz0Xakuhs)MwO*(8gU-Q^N6}(8tMf2qrBqQ!@<*I4q*BHBH5KYr z=S7i6xpk@pd6Yq?=3q3XhoDZP&_)6?@v>CjT;S2W>5}v0dX70LS%#AHu^GtiKyCX` z(6}CwIk^i`xvcRL=v^>(KZ4)b;yEcJc!I}Jq9~Vu2Y;kR^C<z3F@-^iO2BIzWwlPY zWxWj$r{sJOUb(yy<(#|<<dH9BFM)JhU3d#*r;A^e47l(X%9W^-wjI`em%K5;vDd;1 zMC51v)c+jlU$^){X!&#MNp6u`g?x$g8dcYFb*)m@nmDnS#j$FJ9nXO*2Z6U4cXNdp zF;%KwT^rPOmAW>m>sobfR@YW_ZHrU09jZOHV`KJ!I$w=-lXJcX9Gv@1tg)!U{IRIp z{IO^g`D4+a<c~%B&mW7eoj(@)O#WE(a`|J?8|IJ2u{(b(`r7=l=xy`IqQA`_i*tzl zu{g`fAB!`9{INI($RCSynf$Rh+sPk`^P&8(E};Bbxc|eEH^^1+m^>dwSS7RaDS0;@ z?c{cHmLCIm_iT)?Is>fU09$E*H5g!x2G}YCY_$Q_WPq(Pz}6aI>kP1F1FXdWYc;_5 zEsbASZ3Y;>bn%z#Fu*!}FpeTI!1A*OVzI^Y$6}l2kHuEcAB%R8KNc+~e=OQo{#dlW z{IO`C`D4+7^T(o%=a0o+kUtjtN&Z;uN%>>3ujP-$-k3iY`)mGK?9usSvCrp^MX!(_ z)&;CwzltTs?N)Ane@moNK2c<WPaI(k=K;ib;#tR?QQV}Dy;xh#mjW&{FbT&57osIE z$?FP^V7Y~#uET_zaVe(IEjXEG%ycUsE+M@ZC)3Spab2ilrb&<6T8t~P;JgAS%QI&F zDx6F+cIYu)hm&x|Os~PoG-Ia8kLfy`O!HSAnP$xNYMe|nX1WO{(~Oy3j+1dMPR1*6 zGLGS7+<=pDBTnKmW}3gg$uwi99Mg+%GF^j{@nW2em*8Z~txP_|;T9%iZe23w79#Vx zb;wvB&Q>dbB$W#)EN>8#4`Xg?s;y1X<T5;>Xj-_Ig9gtsH0OL3bBmE_wgF@2k`D0; zkmeR8;oJ(XggkoLRj6VO=cZ_h%I6Y__fGkFph<ZsJGUMQug1xkaup+&{K=2}8MD4l zJ-8i9eDY>_JX?Ycl?tEsLYizJmM0I!l$SB<$C&&WQ~!*)CCYdyPR7e{GVa9b#FUTi z#58#@CSS(fVr9(sV@x}7;KU<+#<Um0V>lVJof)^|bYhn4z{xaYrfIKCQ$D6CALD0G zcfrea*rbXsLSUQg16xdd+EuV!Kaq66FUP-)1}q@4BeE0nxAeJRL&bA%hB{|w;|>J# z*clnWeEi{P;5T@rQDo5qya(;#;#=PJ+%Jc3D*w>iqq1)GBad+g@l^!c1@o^$pwr%i zK-d%lcO>47z@hUD0&V8~2;8@M6oGpW=Ml*9-+;`OBUj)<6NjcJk4=ux#I{XNPfbqi zr+hk}G%j5F*;BuM`sbIve^JBAJvcjVJCryqalmBW*0)|*@=c5PC(nKSS5qJVjJlVZ zE$V*{(9YdQSp6g4`TBRxv@R__eJ|?Y{L6<~|Lak4_6gRX_2wSYK?LqSj3KbzhY={> z3<B$WI|6q!s2A$tE(F$TF^IVJ0ClKC%gCWgA3<>~m@tpJfAU8^xcHMxPb>QF_Y2`! zF{$DMQkLAFerr&5a`l2>>JIM$syp@CpQ@tshM$skU*=^##V_^Vo+8gz^rQ^JumWsQ zI*@<-;j_>ETDcXfN<R*P`9Q{>e*farPyhN-?5Q7KeCFa0e)_a7MJMxH92PuM0dUzP z{r`KS4)iESEMr{5<Kq*D5;0{jv5vO3P9^KW#Q1m*#!(TK(Yo)ZL}I43N1oq!_Lkp5 yrk4_mg}v-a?21p}dB+Xd-Ou;ne_?QY!(8xbiAQoNm}8lI`R7PB=VC8q{{I7b-#AeK -- GitLab