From 83b7cb4ff9c7630e05790de60b28b0ccdd9768a5 Mon Sep 17 00:00:00 2001 From: James Cole Date: Sat, 20 Dec 2014 15:25:22 +0100 Subject: [PATCH] Test updates. --- app/controllers/BudgetController.php | 2 +- app/database/seeds/TestContentSeeder.php | 18 +- app/tests/PiggybankPartTest.php | 222 +++ tests/_bootstrap.php | 30 +- tests/_data/db.sqlite | Bin 154624 -> 0 bytes tests/_data/dump.sql | 1798 --------------------- tests/_support/FunctionalHelper.php | 3 +- tests/functional/BudgetControllerCest.php | 10 + 8 files changed, 261 insertions(+), 1822 deletions(-) create mode 100644 app/tests/PiggybankPartTest.php delete mode 100644 tests/_data/db.sqlite delete mode 100644 tests/_data/dump.sql diff --git a/app/controllers/BudgetController.php b/app/controllers/BudgetController.php index a60f99a696..177d96add4 100644 --- a/app/controllers/BudgetController.php +++ b/app/controllers/BudgetController.php @@ -146,7 +146,7 @@ class BudgetController extends BaseController public function show(Budget $budget, LimitRepetition $repetition = null) { if (!is_null($repetition) && $repetition->budgetLimit->budget->id != $budget->id) { - App::abort(500); + return View::make('error')->with('message','Invalid selection.'); } $hideBudget = true; // used in transaction list. diff --git a/app/database/seeds/TestContentSeeder.php b/app/database/seeds/TestContentSeeder.php index 03c8f584a1..093e63d407 100644 --- a/app/database/seeds/TestContentSeeder.php +++ b/app/database/seeds/TestContentSeeder.php @@ -33,7 +33,23 @@ class TestContentSeeder extends Seeder // create two budgets: $groceriesBudget = Budget::create(['user_id' => $user->id, 'name' => 'Groceries']); $billsBudget = Budget::create(['user_id' => $user->id, 'name' => 'Bills']); - Budget::create(['user_id' => $user->id, 'name' => 'Delete me']); + $deleteBudget = Budget::create(['user_id' => $user->id, 'name' => 'Delete me']); + + // some limits: + $limitOne = BudgetLimit::create( + ['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $groceriesBudget->id] + ); + $limitTwo = BudgetLimit::create( + ['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $billsBudget->id] + ); + $limitThree = BudgetLimit::create( + ['startdate' => '2014-01-01', 'amount' => 200, 'repeats' => 0, 'repeat_freq' => 'monthly', 'budget_id' => $deleteBudget->id] + ); + + // and because we have no filters, some repetitions: + $repOne = LimitRepetition::create(['budget_limit_id' => $limitOne->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]); + $repOne = LimitRepetition::create(['budget_limit_id' => $limitTwo->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]); + $repOne = LimitRepetition::create(['budget_limit_id' => $limitThree->id, 'startdate' => '2014-01-01', 'enddate' => '2014-01-31', 'amount' => 200]); // create two categories: $dailyGroceries = Category::create(['user_id' => $user->id, 'name' => 'DailyGroceries']); diff --git a/app/tests/PiggybankPartTest.php b/app/tests/PiggybankPartTest.php new file mode 100644 index 0000000000..8e98c22a18 --- /dev/null +++ b/app/tests/PiggybankPartTest.php @@ -0,0 +1,222 @@ +object = new PiggybankPart; + } + + /** + * Tears down the fixture, for example, closes a network connection. + * This method is called after a test is executed. + */ + protected function tearDown() + { + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getReminder + * @todo Implement testGetReminder(). + */ + public function testGetReminder() + { + $this->object->getReminder(); + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setReminder + * @todo Implement testSetReminder(). + */ + public function testSetReminder() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getStartdate + * @todo Implement testGetStartdate(). + */ + public function testGetStartdate() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setStartdate + * @todo Implement testSetStartdate(). + */ + public function testSetStartdate() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getTargetdate + * @todo Implement testGetTargetdate(). + */ + public function testGetTargetdate() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setTargetdate + * @todo Implement testSetTargetdate(). + */ + public function testSetTargetdate() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getRepetition + * @todo Implement testGetRepetition(). + */ + public function testGetRepetition() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setRepetition + * @todo Implement testSetRepetition(). + */ + public function testSetRepetition() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::hasReminder + * @todo Implement testHasReminder(). + */ + public function testHasReminder() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::percentage + * @todo Implement testPercentage(). + */ + public function testPercentage() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getCurrentamount + * @todo Implement testGetCurrentamount(). + */ + public function testGetCurrentamount() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setCurrentamount + * @todo Implement testSetCurrentamount(). + */ + public function testSetCurrentamount() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getCumulativeAmount + * @todo Implement testGetCumulativeAmount(). + */ + public function testGetCumulativeAmount() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setCumulativeAmount + * @todo Implement testSetCumulativeAmount(). + */ + public function testSetCumulativeAmount() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::getAmountPerBar + * @todo Implement testGetAmountPerBar(). + */ + public function testGetAmountPerBar() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } + + /** + * @covers FireflyIII\Collection\PiggybankPart::setAmountPerBar + * @todo Implement testSetAmountPerBar(). + */ + public function testSetAmountPerBar() + { + // Remove the following lines when you implement this test. + $this->markTestIncomplete( + 'This test has not been implemented yet.' + ); + } +} diff --git a/tests/_bootstrap.php b/tests/_bootstrap.php index df0f7477cc..bc088a8f9e 100644 --- a/tests/_bootstrap.php +++ b/tests/_bootstrap.php @@ -1,24 +1,14 @@ tests/_data/dump.sql'); +} + +/** + * Class resetToClean + */ class resetToClean { /** diff --git a/tests/_data/db.sqlite b/tests/_data/db.sqlite deleted file mode 100644 index 3d440bfdbacaae0da6070cbdfcf8c3846ceeb609..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 154624 zcmeEv2Vfk<_4mxq?w-z)dy%{4ZrPTtyHmR}hI5gNY|Fjd2w6JYvSrDZrFjJ6qfK)pry{kcu!y@uDJx^2Q^CJ_G;l-#iGYb_CAY749JjJW8HY zH1a6wM{cI~RFk*K>*QtfJb9YjOCBM2lH19T$j#(;M-Mp{f`TktuMPHVFC)DLHzNcx~i zBx-2L(88smvXW4^BwSil8jXcYW2I47QYaEDuZ%^?b{=eL=xAzfsc()aj@0kl-<+7$ z(7JC@_~@ii>7*SsEiH!@%rD)uV*Y_cWwje-wN|w*oweamsA|{x_T>kb)ogBBI)72k zf#n^M&7nwJ<<0{O*Dc$(roFy2y0m%Y-qx1(y=yk@YOk+avSi=xh0Xg)7p&U3;^6KT ziIodBtUk10^QN|n9Xl%9o7=*tZfI-Vy?2GN0MiFp;Qs+iJ9Z~_wH@5I|7c@VLq~l_ zYg>HRzWSzS*Hau_Hhafrp1D`s!pv3lQ;o$D8@FRiL>UUFpKf(0vfS1jAP zDH^SZPx1VZ`g648_l09V8HUIUeLAbSFP$h-sh1o!19)fxw`f+zn&zzk6g! z?ouuXayjr(=DUVBA@}>3 z=0Ge@hu(2f4Um3>N5=!5qKBTbeqW z>YIyp)Hl=4xy@vbMw!g;sl}Sap+w6;hgi*oxcbQcL`%CMjuJ{d)u-fn?d=JXbyW%_ zo$T|;7u2`!7LSWF(Rg8EXZ^uuA(poPd1Nahza%Z>FE9$Yg={6~lIuREAAjz#b2;!q z<-j0PjMJ;fyh0Mel3Fh?ip;@F<&~K}n9RUk>L`t-b*XyPfzY>4t5L`RG8wxo3S|(P z5$sa_Y5T9EQxN?99{*j5D3=rSgUSHPryU0h$B)NGsH1*Ib7Ei9uC{t=&uVu<%7Qi3 z^VU@tt(!N0d3DhQ=fZ@dX-;fH(V_abhTZjTMJ=rzMJ)%Ln`ahH*iqlnuzNyLQwt2X z63&%kGpGa#3kz}bfF;!$F0nCFx-2V=ifL->&ZTI7Thl(;H0@15^K`JIwW+0{EwK*< zY#oDxw$8n1MH2InjQg8N9u9?TG^iVMLhd5>?Z3r_04@E%o~n zGl83b8?&S{f5atURo#K{F)-J5xRMh?6qSlt8 z3F0-dTq!p8YJtM3Q*m;rr8MtbumNjYL{C$ALfW;DAP zqwv9skEQr@Jy3YkRBVj1vNP=&tVia#nsy-|%iXj)+@w|}r(LC)W9eE<%YQ#~4I)1! zXOQ_sRqj`=R5mL`_$mBNd>GG1FTur+?zgfZHPxaZUgoo7q_3?%)YP)8-R>Mg<&f4# zT-BE|T;Z4Dg58ORy}+_3j*$Y+aj?&BpH|blBa)vf(b6?*tH5V#WyTo4lB&UD(0Vk{ zRu#;UQk{SBXwiz+wnSwfryS)|rn(Bo1NHUIa{`=jqF=(rZ3(E9cDFV)Br0@HJi;&W z2B_Cs+RHRfH`FiPs^#m~o}hB7$$qKkHA8jVQM4q{w5KIXIQ2N6)MR0zIRSHS_9afT z91-w!`yH#0E?;*XbJ-<+Wq19WY56B;6hfo$Kb0?~74+otK%j8U7<}$tcQp*AP-cn@ zN-N*?kEGshv~sj-bIV#s+Pc)q8hB{N-IZcb_t17vTBlQ+@FBR=wML&wXHzAbcD2x+ z!!)aPqr8iY+7dex)DoL$x7$3c=TS`SXZ8d|4fX8}^^J)xEV`R3*@x{p95?No0{c*OsztPqJ?xxNk6~ zy}1G&gg#n+e@GpJHM{54hs8yID%cOMkHU5@DQ^%&Ct}sr_X+fcq!CzUJsLe9VngA6 z=%;9dAv_tY?%szw0Mf=`r%yqKLBb5&wWpxa;b;zBQ#_q0%cZVa^5jic5%bq3wTw%tGV|@(XeUxsWuI6%ft+aygL8fo?f4 zRtt_P0h>CT+|#x83wU0x&^<4gYo3?O)X`dSLU1vm%)%ONIycg>pgqbG zgDNq~?A)GjjWW;ItWoCvrd_*^?x=6s+wO$=r;jq73m?fS(;lz)VA|+$pxII12GiQ= z_tE)e6N+{=x5BzFmrtb~u6I!91#@iJt`1LG zoEf&uVt*a@-P?|K_q)Iwp@h_<0&InE$EMpyzo0e=Lw2FAeQ(o#7nx&%2QLYb)=^`Q zL|5>*P_9Cppi3KKyYgIWgYh!I3@Hc{u7n~`Z509M;}M3JbeoHF!vNX$?_BPI-un2R zyXYtC(q4S_wEU;7>id97e2z^n2XZ;^-=71t|DP-W|NZYNr(rG!K8zfo?LQ{JLGYLR z<#HgG1IKp`%(mtNqrv{nlhy0j(DJXM`w+Sh|6Vyl4jk8yZ)$x5h0!QZPPWGI@lb zV`Fx=cVj(=d*WWVOc;8sH`0wox0fL@%hJ#C|6}qW1b?|-E(dZs@NvljoeU1z?LR3( z<-qZg z19UlHm#RlC0Mrn>Mj`otC&DWVr7syDbjm*+|L5%g$H!~VX_?D`4>|{E`B(5Lgh!G2 zA2jddoL}dpftEG#698NXYnR&+6i5krcWz9lc6sWsbYqqLrjNv8Wlw;T%yePPZMs>k zV5$f}L(_HEVh)d(95aDUBdUX$HIk`B_Qm=ml8f%CL@s_kuBn6B=dLJJfymv zZHWU?MSGeSls3J`&YbkQJv7y8V$YmGfx>z)wl-M?J^8y9lhjCw{~mG&`7xjZ z-3Y4#t|wn0SCLD}CjlYoY;r2B7-}KA$qq)|3ng--xg7Z4%z?|z4e(%}GHc*?k$EB< z&oe1N|GDN=ICh$_@E#c^1?4}>q4z+9Huxv3Lmd=4g(QG)BOoYSKLO6`er~QA7 z?nd@zt8EqHzwK}+M4!LbSGC2objQHFev5)pc+Z~?$V(^uRG>l zFcjR6V&_eIKfmi8J@@&$utplL(=pfDGU&Ef3u4x!*;)5XoHt{M$1s1a1GP zlYCnAKhvfCf0+E1{0h7Rx04@|n*bT$tAGpeIY0-$1du|LfEIKZPy+Un1gRsN$y!)7 zxR}fXynu2tn-r6YWDF@J0~zDvw_eF<{_)CzE6xeQ17CJd5gb2#4sDh%J_ioyg3eYr zp5IAZ)K7G-gyT7#C&4kJ$+>WB zOVVw7_9yAiJgrH(4bMLFbU5xcX@lKlZiVA+a~T|WnzXrYG-trE!RjW|o3xZ}HBN=& z24fE#*BM*jxW?)ltTv($UTM%BfmRqJ;JDnNJN(offy2aIaF|K^5wqwf7{#>zFn$6Y z#tx+Izl!4s$Cb0mAo6*L=6)IEfH`+Wpm5?u+&RzcdF*#Eeq6x`>HQ4%6|l+37Vv$j z;DcUWh#r>>LL*%dt#{&xd$nL%17)*KZ;)uJNBd*+9~mfIHW3?h*|In%|76xJSI$k6 z*~whjW#nv4oFhVN5iyN@BOWO5G z&%6nM>eB(M_W(tzsY9|5vUta609pjVCI+-4Kw&q|6+8tAY>zl`W2(T7GZdyAV%q?dfL8f_Kse81iu!x!9x8Kk@pHB3@X&W zAVrxvAi@wr{S)<59(gImu|b1=wd?=IFhc`{qt9IE`_d`2{O6;S5V@QbEB7h;mBIKI zfcrZG{TW>X$;bND<`-Cyv_TXc7mRevdub70+}7HVXalQ+b$e;3q_m=_6!yQPe>Hss zze2zKmct%-y9KXu!K*eXc=bZJGQqDVPw>l9w}{|X8xXvDp<7t+tI-9&EOiSBURyQ6 zE9&B7;lV%YyI+8ZA}09e1j62L0uqxMIJe#_Fy4ueXm4y1^bi8qUFB;)gajSZv)Yl zA1Qm3vG{&$;xKv&T?rR_|7vE7%$I(GAxpY@$IDR2RdmB8AtwiFX9-@?;vwVJrCI@g zu(PIJt&|9U+38jq6})O^3SQakR$3+a)yxq5ved0o@T#3Ic=bXzS9M%0_+_b^t2&-0 zc=bXzS9Ls9@RRB$>s_XOZ>6s4c#7a9)lJ5$+xJ%L)N(bG1-~qHbIQWDNrKlLNo^o) zVx8)EQDR41m-;wd;?k7$|7Reu^Iu3-kzvZ8m1~uq(EEQGdjA*TRd^`$1ipxNq8TVU zA;TWIIxtSnm+-3^pJ9)DV2V>li!v0d4TulpLdRt&bU=zzM#p9-RP7%xX2X`MF&PT& zpW>9^(Y8>ZJ#wv|9vWp!^GVb1t>{QwjL&hE+BZJS8sS8$M%dDPlJ-q;%INS6g=z)y z!JnnStE&n#6k3qtl+j@s3RUytk+ZFDr)p@1Li1CcGCCwfp<17KkU#0*42AYdamwhR z427z}I3H%y@}IN+SuZ_z$mPJtE(ciqKa=kNdm$kH4^#f3d`CH`#1w?@!WTmOKMdOc zYoYxI$7R(nj|xiGB`*^uuALqgl#Eh~#0T*PHIbpvNQzTN8#5HDhU0U%(1r|!hEtp} zx+6oOT1Y%;eTG6q;z>`*P^elO5AjB)E<>TEDNY$ZIYXh^Y+<0?o}tj$wt+Uh%@!)@ z@W?(SbylCyR$H1+npv+$x7cDNJsp`Ctt4K^J4u^uX+B9yQk*inDMO*^%y=aix-mnc zGgF+h53TX&%){I-mjk&R_}Jw@uK)kBd*!(Y&gFo}fn579vLYAA<-o@-2Wb0WfHooW zeVF|-T)9U%9c=%P;ZNa(=r!~;xRB+qworI2vh}EhNfr3{rbaQ#h1_*vx>gIUKYWoXbz0l3& zG43b$Wv83lW87Ep%3e3O$GAZ7%ThO|EYR|=;6n%>B6Rg&?)U#C2a0!ZPW=)bV9v&m^x=)Bt9wMxzF`3L$VqA z(mQ?2VQU#=s?zuG@P^lsmirKKbe>?%{~w5!$nF1^;*;?t^enmsnQ)8euPWkUfs{?3 z7?~<$7U*!;HhW6UvocC`#E4MHmgbXY#M9AITa3gmD-)v)j}PPCfZ4V*pQOW6oH9Ji z7V1+^wXlDv#FplhrtszHOk0dk1+`(~*=E?%e3A~cpDj8)L!s)>_+&n9xi~|iLsOhG zJk1vBGjp^dBsA5Q=96Z~yU{7O7@xVK4vtsyXPazG^GP~5#VMncG8C!}iWl%NbYg}= z2crG}a^QbD2Wa^x2-X_UQTi&GVSpr8P7f4r+=$OPqZ{bPuC~^Lu!SQ9 zG^XntTU+Wl*yDn{35tM+dyNrj|sbTU3v4ZLX}3D_B_FRbPDQ zo9uog>&Cj%-Op@R&I}Ze8ihNntxs`>was=rKb@HVIq}r2KA46!*z7dXSXU1_r&81s zx=E>f^VEa;X==~cy?|YMTzPG;tCk?XqX(nA7UX-C2ePRJE{{=9)znlGkKCJ&aA1*k*Z4-sr(f2|GXX)0l z79wn&Ah`Qpbtcws$(cLW;Vt6@^Gd&KDAv^bWr^+Gq7 zZ(^k2m!)pb*H=42@alzbF5kp(!7n@ALe6S7TK)&YYJ%>V6BV)%V%|F6Og zcs6tw*~pEF7wA% zhvwOGeA0}+EgZK=e5zKY_lcZjtLBrYPtku~51(ig`P5AvH#jucR?a8QxEG=)*kXKI ztF*CVqU#)6norWPVxns-L!s)Jc-aWro4dLynxW7!DNY%#vW5E09Bs53sa{=b9KJ#RXUet z#Maw%ZlU?#?S&@$mIeyv&BN!gEt=W8msyH?zOo?wh4*}8Rv!Ro_rV&19j58VIhOuW zntXHff75HcTr8IZAEzA1_5VLkZ#(y_xg1E(0b2eQv>x^iQI3uFmrmMqEV*lPpm6qV zd@h?AU`+fm=Lw=QuA;MUmGR(C=;y-U}PAgi8SZ=JPib0{Uw*EBD+%Ny<7$~M1{ zZg0VN&g;H0UYbicO@;KXqqy`@^d9XkDvFaQPJtN%n9|EU`);p(qNUOO4%u6^aJv)I{Y+X~J6c)~cfVBBnAll=u(_jX zYUxxM;flPVFyradNtlTA8|bDbT{l)q`&jI!OaD%2YR{jDHUD=Isz>Bu@)g+8YdIOK zJYgY#%vJj0hw!D~0jL55;J>1);ihbUm4nE^Aa!)rl~&b-!gZm_NHi3!V};W-+u1c+ z8YWdkj?5pZ8bLu>T2WV8R#q0Ouqo-5GOaC8o51vV$;OdN)OQUt+(z2?uhZ{pFBjp-5Qr+_K3q7Kh4wk>wS2VR(v)@<>^k zEzrq0Hv@}sRv(dFoUp7aA|$(R=b2CuB<);N`~He>sV&HLzdikn(^ch>!(Hi|Z$kP$ zIb|e3_I05whmVSXO>T*_xY*+KZsJOv7vLu1`|5ywiM_g+8mUVc7pV$W+2WiknBT2R z?iOE<$al_rIw4!T@D7)Yf>Gbl(0UM>O2&D%LK0o>4V9JKdhmPeT#q~zll5H)N+Tkl ztU7^lrtQD3+(YO8Ttiw(RQVS~a=%;-9A`N&c{o|kK6u*3M4+-St&Bibw7b4#7nEjb zDC-VI!l5OFsxg$`7peq2FvVW)<7*9ARJbYummY#3=xV-zW`EEC1I8zWwjXAQM$ zSZIbqrBJtrOUp&GVHf0miH>?EWyTP)otNXPx-dKzGzDSNfQb$QyE#0V>=iddH5Do? zjnF)>CM~*}TGk17%74!Pcbt9fIdyY6@B!sO&i?lSWn_*`E(eao9H8Z&p!X4aUs056 zkHZJ(oysPf8YrAR87CK517LRt%pI;ww_>?3eI$k~TY(g7YZq2;DstZd8{AnVS-NcA z#lxB_U|*t)Xg=C;w%EsdiehtHG34<-qZr z1J?K-_eHobzL~5!o}c6c(A}6Ef_Y2xu(8Wt?*N0=jy-T-8?N^})qJ6B7!0?k)4P^C z$fms0VW~4yoC39V2T-B&M2eFm!-2x;YJ5(mH74d$?vKiNdR<$TK2G+!HM@(`d!M)Bx`qJs!5@MJ!MIy}llyc+$51`)2vB>4Xahd~G`%ktZ zau4hPzU?@Dh@9HF9QZHHfeI2pkq8=R&B-Zo?|d!YiF{$AInj|Q+Ls6`7G0rFy7^7b z&FvL9BUy{vS{o8{9W8DD33&vOr^zGamH)y_%&C;ifm{w`oCE#T;5aO56w*fx7GkTS zQ2N4^peX-V`;V?cu=@XQ~li>ucZ)vjDuRJ(rp@|i`>QlX-S^VU_bTe_m!b=5(2lwB1IN34r3GQMo2YjXWQ zIDr|$Yh8rg2Ede;>bq*q(iQX8Y%W?>y%`>;xY$@*9w=;| zjm?49n6uks*V(*W$n{)3ZrbQZvP3o%?RM9(85hB$bt5a9*5w&z7Kv<}S;RFfHtQ>_ z$rUZJ4)a!IF7vriIJPi;LXCiWaO~z8t>SqWMc};d7W-bnI`d>zBj&|639H zIk|*v{jiI3j(;u(J~lZJX5D|k-S{P~FbgQduK)6bEe*Tpu&#fx&*8$t`ljZiqWx$6 z|A!HI0agG${;_#Cxd+YV!2fa%Sp9vgMqyoltD;Z_slno4dimEN7YO+m&5KLO+vMLY z_`jSrxo6Aez{fcU4x3Zq@lP?9!?CVafg>S*rWtZ6l>TQ}kVbRATn^-N;P}pgBYA32 zQE(~j;(^e~Rs=nU9)QSpT@7M<^Z*_IW954Y{&K%u4jczLU@of+6i%IrJJ(xQLAN21 z@A$)vlI>&C?1E|ceF%m@VZY4W-pdeZ+Kc9|T)Dh@p4$@4v1xX;B@U!p0d3QDHwz$t zOqWg3Z7`e(_U3fUv8(@oVXpsw9DM#c6>~Yzs~l)IX=h-Iu@H`%_ptu|A1TLAl2>6C zfEA?C+%J~{xg0p2bD$%rVp!FW2VwdYn*u7vSlQbE;f-u4@D%z(ZvOA_{DyP7=W?KT zIY7t%1!xl@HMP$ znw#fm&f3|C*^~9Ad4hGsuhwE0W(j8}KeomNXX*aVviuNRFiZD$cJIM_5@X)e9?UZ4 zX?rlI_cu=zs%HCH0Y6vYWUke9lHG0>LhlW6I)QDcBD$Y*iTmc;w<;gZqcmgkdpNs5z3jeZ%5RTsxA?2o8#hGG|| zIBC=<$WW}dC_c;TDQ``_tc|9cGVe+$9> z_qFWpf3<79`zf+Ipo`5eQWA3Yq1Fg~(ms@opUY+kyj*>#)qRkKR) z%ThPjkY=Ue)eGHRLz-H_FH7B=E`03@!Aq)}tb*;HZ!TNsa=}lkn~Y!DJ1vb0+hpxB z!7F>+N?o?j8o@71-CVZLrGi&4baR!3C4yg;x;bTmwf~Lo_WwF%pAvSp{|~|P;Kr^! z{7m9iMzKfLCM#|0Q{~J&5jLjTRhy*Ek&$Za)Q~aNmgkdb-8)fZiY-Xe*vJH_YvUoi zp_**V^GUll#Yv;aqzuJsYvRLfu@f^CyC%g+qsD{`#j300b9rCW7@wio)hSLIHi~Sq zK3|NsiiC`DwmhFitKN+oV{Jh`--x<0UO9qx=dP|Y#@OyL$O+Iyufb% zM`b9sHpNM!#>foCsw?8WyUp7Fth+ew06vG-`Og7^+GpS-(-v6m!)p5 zzR706s~5Vt`X-wMzbtig^-VSkUcJ!G)i>E7_+_V?+Yh^5@XB5{w;y($;FqOtPT!Sm|!6UtERX1nhb zHcD-=J{xvzlO8f=+wy!8ZF(zg%*s%Zx^Ym*D9KRJ#uuZ;Ok0r8u7kEAKEUqH&9LS9 zq}`C>q)}sfhGNzAao)kE<$oXo{J%TN#bh&?th}V$rkta!Rz~Az@J;v#J^?I%ze88S zEgAo!Moor#X^D6rJ3E$Um>r1}Ck-1*Y_UE+5w&qd$XIO4^GVeBbkta63-bBOw1#-0 zZ8NO4<@uy-NO97zvCtOlQ`Nu@a8)d@<@qGq0j`Sq84A+t!BsIYLqYZ6s)*ZyBu08! z_bKlb>Z&-&mgJM_6zZxt(H7-1AM)!?3>kB6Nj{0{?g$$v*fc)1J6U@$V$89%^GVd_ z1b#v@CwL1l`Ug+i;CnN;F zEOm2@6B-4tUg+i;Co~9tS?cDD6E^PoXL)*Xii3%TTPk$DZg_WvtCm?4A^#BNjE*WGGf^iVtI7N0qTUL$OUMP8u~ z{{LZ7V@d1mNcTAa5tmJ@tR(EzQMHEzFKK%s zc=bXzr(;mFPw>l9H&^8I9Tz51(zdO;yG&k6Kek+mYg=QDdh^Wi2Ds+MP*Ci44WIJCl?eGZd?~ z#VhTnZOBk;TZ)rLjU66hWu;y_;PiItJ;cgr4>-M@Q!*5*?vICUCth8KV)v&wY1BA5 zL$O+Ge1L8H-JYS?))Xg=8rw1ytG2|eY_VH26x)*Gq;&o7$#^WnWAS7>6Gw0i&%;ab zO1uGY$BlR|i~)|~v+*bJ#rO*RdHf}O1O6`92X4oAr4a+h*Hj5r>H zRY$KVZxfaDCBw)#GL3{tj4U9_$$D6mw2SN~M~MmZlP@R#2X>0@kXy;m$S=w7$Y02l zOIt}b^odyrIPD2MlCZ7PA61Z zrxRn=srn@Aw0NF%TDrhGEvvRpD;8U)l}oMD>Sfkx?F#F(ex-HVxY{~xUTdAUuD4Fx zH(IC0ZPsb$$<}H2Db{Jv4(rt1Xq{SiTBrTHty9|`>(tR~oes5Frz88V)2VIN>GX~O zKviLsJj%}JoW{Qx{3w9g05zPuc6PgzzygNEbvYAMHcurx{d{IMAx&x_s~~Z z;QQ!nEN~0Dfdy_w-(-Owp>MOm&(KXQ@N;xC3*3c%zyiNOKV*S>(QPd7EA$f42&V}akIpR>U4&|NI>d-Mwyco^Nw0)IrmVgUgDVu8oegDmg_dWe?)t>{gJ2jkID z1I)seIF6Ts-)}3F{(blm%mF?Re;Qv6CI6fFX8cq93;Y27Bb55*@N4*8MOXSO!=c1a zS0c&@uxg-I*$Ab*NofNgVyAMEa;0(&?t?LUQ~4VB6>n8iFvIWx9AJ60(YHBBzkuQ0kA6v&nhnQ{*c0Me;RRp?oVz!9GO~z)mHP0aD>h z$qrb4gi|DT`@Dh5A1ztgqv%qWU z2^M%AJ;efVqGwp(ee{AAfZX^O3lQ`&3ux$776_n!vp^8N!2C+fyFq)0!wj(1(xA* z7FdBRSzslOGVlsrW#>Gdo%`gmb3q?=?pMIh1NyP^paJYWWDq+K8^X@Rhq3d>;p{wm zBs-5C&CZj@v-8x6>|8vVoo7sC=aOP}o;`z|LnZ7Sna$4SA$G2euyeGWo##}t^IZNs z3r}S6MR9gsGM}Am7P9m5MeJO=gq>H_u=ASb?7Xg)oj0sv=S^$adCNL>-nN0A8@94@ zVmmwUs$=J-dfNZrgZ_rdn^2yffpYan@>^(I?;y94o5(lG_0Zy80iMBg$ywwul*rwr z9=wEWNDZ{kb4VGPNhXsqWGJ-Tn)06Vy7DjOX(-!|D8E(iRqjxJ1a15`z^Cwe&s8^AXO$XF{FSig)2Uyb*dSOQ5!j;t-yWC*V;~hZSHIy^H>hUPMp9Lm{N? zQDG5Mo8F`%z&<&k?WWQF`YtQls_mrF7Cm7__i2qZ+N?KN(Y@LZ8r`GUThS)%6dK*F z*IChB+Q~G!Q{Qey6WTT!ZPd3~(FT1BJ(C^!X6sz9Z?ev(XdCHm+w~3BZQHcN?S^! zEA=H-v{qY8qbu}9R&=>mO{2^7g;umiTR@{r_4!tGi8hZ$7wd5=x=1^TMyvG`t>{91 zEq)_H<9hTb+#A8p+>RvSg5 zWAu?$bhI{tMn~zxt>{RtkVZ%7!>s6VZ77Wv>O-vPFl{i64%G))(IMJE8Xc?;u%d&s z{xmvJ?`K5^Xnkq4zg}QP`)TN8$mn&%wK}D&e2#@91H4KPb(A0fT^04f-W3=(hobe#?;bfNs#QSwX)E z81#FFr2BP)e$fiLFJRDb8j^mk8}L;_(ysyr{j4GBm%0HTHYD8}FyPCkN%!ameB6-q zi+}-NH%+=*H{b(@q`LwJeBm_dPThcy9Fl$>FyJevNq6W5eCUw$vw#6#I!#Ii4EnJv z1l=Am;B%*;p9T#2#Y5;PxxZP9b%TEY3i^J)pd|p3Zqf}}1{CzYfI&+EBz;#mXgN^OjRAv}1W5XhZqTxzpl=5Z zS{fkfTe<<|0g}EMFld2*q;Kd36bVSWAz(n6ph;iX4Ja0n^tFHi<$@-CRX3n$K+;zN z29yn&^kvFfZpr2)>oF6!oC7h?9VI_Pba5_skS3k{4I45u_OX$>(S_#R(5td*E z4$}ZZM&J+&oUI>(048T?9dIi?U2msR zgIY6q&@09trr}LOssmunS|+u zM2c1NdS5SNtUO-CxCTDOkw^3*azij50}?0b}_n ztQ=SjR>1YjHl;z?1HJzv%2_b-zeu?p<`rG1d>yQSKTv)OcK=^1zf=AMXd};n&ER$A zU9kP z9`YOV2l6O+f;>lFA^&0Z)&Jk4Wx&=|>%^S}c`yuv{S~;+piiC^CtES@m6$QrigD*eNwF2z-3^2 z`!fDE{sB%w`F{|6eox>RVD$bzl>LF=@0+O1RLYeTq1>+myWS3EuhOBM0cHLYumN0q zeE9kN)fZNlaevim?N-coTbW1F-B+Ebrn|AuJw4r>b>5ljZmkQ@*_Npr3IEn7k;zho zqw8YS$x?*J>r?1lmLgnVm!k7nitvG5jxJy+!WniY`XoycUa_mt#Vkd*$F4@7VkyE; zb}hPsr3i=Fm(XWeitwC$8GV+e2p8H{(dSr-@TGkn{U1vaPPK2KYgmf#u6+w#%Tk1! z?K|j8EJgU+zKg!hQiS8}CiGR7B0O+6qp!0R;fnhK`UXo8KDi&FZ?P2NoJ*nau@vE@ zy90fnr3iQ3o#+;pBK&rDqgz>uaNym8e#BCQC-0Z&$1Fv-^nQ(g%2I@H?|zhGDZ27dWkvKYK|Q4%K8$pkWz3?>DZ58w^( z>piPH4%Wbjl>3ys!5(<4@?EF}zGQg;E>=FFoUI%M|KMJw5&8)0l;z+xJW;7sN|j<| zg5?M3tLR`Id=tNn{|WZNzu@2F`@!p&!auY;0oUXI!&ky=gmb|Ya2W50dTIywD%ar^ zco9AcS6RM*iQvl|iu>UJ0H6N{y#kL%e;OD>g4ni)XkZTsV%r>|fjK0I+qt_yYoamR zTcGWtG22<7C1}j{6=)4KX1fZsdK$Am1zH`A*^UBjJB`_X0&OdeaW{d&-2@7E6DYQu zK-)m?vb_X=YydIaNuaHvG22I=t)em8MWEHvnC&6ZmeZK+Akb=P%=QmxOK8k?4`_>M z%=QjwU{wub+c}_tK{beN-+%_T)F8H90~(l7gP3~;6z&;NxMx7IJp+JA3U}F#0gc*C zvF#VosL2%DZUK#2OR?=0(7;d{#I{pF0~2Ww+dcsetfN6}y96{aj0Umo5zxRU8pO6k zKm&7V5ZnF$4J@HSY`X(AFoFiL?G4bt{u#vF8K7`yfWn;titP;0sMQnOz5tCHJhANx z(5S5w+nxZ8nmMuU2++X78N{|9Km*%m5Zi754a}NBYI;j4?qJu zW)Ryh0C4s~%=Q4lbQOr%4gd`dmqEVr$X7M_Wuo*{eKRW`(o&;7m|KZ>fcdbRsIQm`G=vz{~Wx2 z-vw{~HQ@Wd$npTR!F+&IU|v8il=Kr|p1^dNFEAWN4LW%HUW0iAkAn~3H~20XUwjXL z9aA5`#o*^V9k=5>&=1)JUcNTJbcfif1p31--7D&7ck%>r^eX7 z=*BX5U!A3%!Z zJaR4cf-$18+14wb) z20C>cK#Jov(5cq|Qf#MzBAf<_a2hBsr-4qL25`UQGtjBe08$*6flgfpkm7g@bm}pH z6vttpQ-=YhIQ{~i`U@b%aTn;+T>vSLw?L=f0!VS31v+&WK#K4c=-?}WxNsHd;3|N) z@D%9aDS)_e6zJe6fH?OPD7K$KLEKNE*nR>H`~*R4y9qRK69lpCC7|v9K(r7+ng0yg zL1rp%C_hs^sccY2;z#kdFb8NFw4S%XO2CCyIg=iuCWkIlWN4o9{iJBZ*)HgBew4X6%>TGJKZ(0>4 z<5QWtAZl`qQQyQUnc}oDlVgqgrqz%cAH-gA)a00>zKM~U;YEA~mqtvEJ?fiCM`yz_V2(cOn+lx`%aj@ZsDBq#-dS{+GD9Hs?+rVPE>ji=q&|y9 z{+ZPwLtu~kBs%jpX8#BLpPQic4^{4j89Gy-Jw6Z50YCfyWrqJ#YxM86ak9K5xFhMXM&*%hFNOo@+KIXVAc!m+@(Sl471eEDHXK* z4*>T*^!P6ZTl;9`Z!l8d2|mCVV4i;mjHrWv{{5-U{QpstLz($+IWD%b%wi_TGV@KV zqKo1Yw(28la@b+t#OR_Fr;V5#ci4A}puvubVUr^c`=&yld^cuttYP13s_4Ral)0Fr zCI=h#O^hx~aoU*4(T07~YUlzRZa8XkxMAPK=mHyWIA(IZVc)bWIzN8GO;#5uYI59R z-^A$r6sL`u9Dmq1t%lCCz4=j-0}%TrM(5e?{D{dBh<$$;D*D9Wu*tE9eN&-Nybv=v z>acG$HFU1suXUCGPk_IzAI#jnLfHi9KYxQcw>x3?pSRK7nU{YKW#n5Sbft|&6)`!M zk?$N((G~e&vpCc7z!m?Fm>gTwwZos84P9)*j()KH|52i2BJJt0&1}+u|I4~e>L^c})M1Pi45d9C8N;+$Lhe}|#t6Zz z7uvb|VZ#MOsdh5!MY?uQKdja$6wIXB$(VJ|JNM{hm|&QtcJ9&1P{FJh+POz3Lj=R@ zv~y!H7=s0~?6q@)Fc^ab!z{IPk4^>(X1&nPJvtd67-p%RGdf}IKj44-oXFb$+2B9B z6J4D7J^&GuA(?@NPBNWWR&LQ3-YbZh9LY@DxXP&V(f`c}n;c)%Hx>H7yCNn-7R^Ax z&uh1pnG91D`+lrG=<{z?$4rhVDy^br&!wWz#pl>Pehw(=n;3mA#c5+EM-=r_s?puxk#sBwUlQ;T=1AZZgJY&f1xT?ZtYdF;=ja&hM6KEv8|2=j`Oi24jriES=yj z<18j(cb(wvo`!9VW{i89hb?2AHV+%R*v?nQ+W#$x+zYdOPA0|R$^QZD|97H-!6Sbj zUXJ?%`tOynL@?uD)a0OK(rQVjCHhKg4m0`0OpYAvn^r?#ws%sBnoB)Kk5a*3wzpD> znH)RVw_p`rZ|?&ZH93Z`Z(?-4y%AW|gMg?2Qj&=E4jG ztLVD;bbGwaQHA{rzAnXSV}&OMMR5e&1`&gpX28Z!m6UTEhG5NeDWf?<~0IUV;}W4d703+>#d&SJqZ zJMGdYVoVdvve(Wv5reh=RXy4NrlS|ocToqb63saeL`}Zr*mtFaZb?mL%~Z_f=%Bu7 zHFUELu^cs1;Y z4fQQpMK{JHEW4s6hYj^jjBZSE+L+04Lw(a~=sV6k=D?x8iP3kQcg&GPebcJw+wl|F z2#%Kjd|2q;rTsq_mIOWs$sg8llX0S`$E4<>^6vQHb(OKmzb z)-Ib)SI$n;u+ccdo3m_~E^Ip8tVL-?ojHti)<&HQw^66ohzUirZzbHT>y4;jm|Yu| z=7_Bl%zB}nyLVD47-p%RyLVC{nDs(CckiTJFw9ar=M$_o$^^4sXy^1!X!#$A=5}rW zC&K){TLAZW86FBadS65Ba7*`J#N@M-rNb3jIn&Wk!MwqzDf^~EKLzs!!xWO6H)Nvn z&`^ zA$e}dsQRGW{_|MGCI=4kO^kkEPnnCE96880 zt%`1m^S(G6|IbH&sIiFzVC`NL%>DZntgS6UkD*J@{O*OmYf6oAjIGjTrOf4mt1Jn* z>$hX(5(@;gUTEiT_2&zQS!(BQ_2&s@z0l6x>c<7cEVXk= z#U|qi+P^Jvm*F`lZb}3PYd7D3#*05tA=8l=iq}xfMXSgNKqYH1th{Zoib3f3W}E3G@G!!TkRR zVgCPS=mR_k^Z$3@>42pDU39R!{V$gEnsh8vQA79JTi`^KUJHa|#OQu|51d%iYk`oA zRz>&4r}6$>(rbZ`j2PXQ;a)c+9THy_O5f zh|#?%P8&;lEf@B7(^Z0DmfE?;DJuoDUTEhYr_>6DS!(AVr>qdndZC?roU&Xn%u+k| zIAxh&)(h>NQjvZ8?=|UIR@rIj5Ai{K+E~(SfuM{S{UOC^V@a_<&}U_*qTk2EY+hkB zDb@-4Bu2kaaoSi?EEn`itD%R)Qo5vAHRzKVJtUUWC8uQA@mA6A;w5}aP;zpn{omiE zIBhIBDMP^;dN4lJ7VNcnQ2LG^OmW&+(rfXcj8;Xz6>}1kUW*51#OSwTPGZt)@t}-W zLl21AS4pqMgEC_DfIa&vmh@UYD5F);Z{l<9_TOvqpo|#(CdFxK`QL7-S6P@}5!lzK2p8hMu)o4v=w8C0%kr-8mF5UgcKedFoP^D~@_bifR-(5Qf^v(QN0)GXnJ0TW=PsH9=K zNvx!y0TXbfXwnefgj@j?2M0{H>jWO88`icHcwoR_`%d5ix?ycRf%^vxfRmzx{dB|H zdII+i7=S26lL~ah+I#}%2Mhp}qDg&p1Gb+4_Q8O0h$ZFe2JAlpNr8aT!IE^{px9Ch z)&fQwOHy@%0!%5G1dRPGNzn}oy$Dmv14au=Lb|b!CZYEOMzfWK-U}FeX^5bA1I8W} zdM98svC!MPvD+eeGhpmu1aIiZPAlp4fRSKH|JIF0E9td>0mzK-Am~-y*kL8T5-{pn z(#yJWik0+IzyOR!de^^n<76x8#ee}ojWp>6-PmR&Js&Utt&t`@ryE&x4u2R{{Fh4X`WEk70M72k@T&^Y=ykrlPKQof%M$?<3n^ZC`?&TX(VZfhKlt-^mgt0VIW4|JZ&1LvO31LvI?gnQs+UVzT#A;1jgA;1deA;1Xc zA;1RaA;1LYA;1FWA;19UA;A9SA;A3QA;9|OA;9?MA;9+KA;9$IA;9wGA;9qEA;9kC zA;9eAA;9Y8A;9S6A;9M4A;9G2A;9A0A;93}A;8|{A;8?_A;8+@A;8$>A;8wQI&!Ru_&~xa| zJoEy3l!yL>{>DQuqrdaetLPs*^l$Ve550k&=Ark{^DG2twlDIKf?nbw6}`ekI(m(V z^3dx%)CaxELj~w99_okQ;h_QOJ=*@~qh0p=pF3c;t^)iW*a<*G--qN6>Q`gbi*ZXf zgP^LCQuiR}6u~UpK@c!>20=AOonV-yc8+Oai*d4GRw>)sL)Ia4oHg?f?mF1s;aUrq zrs)=Ad*;lYc~joZHyhgo^K!qMiEZV3^Iv1#c|PpHeVDY61fc$}wJZQtWHy-syZ+L>KNV~5&nK+C zKktQp{|}UJD_;hr|I3sMEE_;8j1IN~%0J!xGYT00Qw2A$d)K#F5-(5blrQXFf8POS});usrrYHWZM$JU@zTLYvxrUspw z8X(27H0adQ04a{4L8pcWNEt8e3_7(lK#F5#(5aaLQfw=OBCHGwwyg{bcB~9KwKBl{ zj*&s9Mg~Z6Yz#WJF+hrAV$i9H0a6?bgHA0Bkm48^bZTIL6vw`xQ~Ls>IOYYNnin9& zu`cM;x&SGTaY3iX1xRsh3p%weK#F5p(5YzwQXI>IPAv;iU)hEQMHm(oWE&O~HMoB%0~H9@D=1W0j=2|6_J`g<#zd@b;*Clk8RQdqfHig96iVaFzRH1C(uJI0HaS9cnbZ21z;4)0?(jFSO7+& zEbveCCl-KFDGNN0{=xz=g~>Sci-dV>XE^veSI=szp~qhJ>3i{54d7!9*PfAlU3z^Ir72BP;_U=T(uFc@PN z7y=vLsX=H?hGN13!?4N%g&4NupqIwrAPbDeeOO=|&S!xlT)+b3abFggfcvq)MBJYR zCgA}rFc}YIfhl+p3rxj>SzsC-!UDy3C<{!-!&qPjE@Xk3csL7`;1Mh^3y)-h*?1If z|2^=3tFprXOo~;^l2JiL_mw>r=xKZTRwOAFGfO(BGFlZqH9DLWSR+2E&{I#ul3pMq zGEo|OQUFjSy+B4}#OO&IfFhRk0vVCfs_2P$Yy|D!UL8$(fsDwA(Gw|78%r+oaOlZs zHS`YwtCFnt@FdEJ(LV&NO418tL`JKk$K$28d&>)CL`IArPjT8<(hFon)-~49-{V1h zB;f@zA|pnBPjT8v(hFonMysO728WYgAR{s=^whW=(_9Mke&0L%Ql ztpCe${r^5;oRC^NWbeu~o4u+e;)$z zBStT#IBhKH1t%n<)zAxKLU+;&PDnXLj{)njhwnV3vJ79CqsA z8snf~n5A~^-bsgG)(h?2y_0sqFiY*+y^}V)Q|%Lb9yJ)xBp%XmStrVy&;xpC%qOd%V<^fdVH4M{(Aur$%xVGDNY+p zdI1l~Xf^b2XVH=u@Q{oc{o7fzc-j(UV`?VCOjU{(xJmP=Vnb4ZZ zRPd|LgjO%$A^8)(5-+iz*b8__MvPubaoSkY3wTIItD%>jMN3}5Lo#CYva@K(3wTII ztD=|UrDt0$Y&7WwJR~DVFQqtbEa?S2B%{^Pzv6vZ$AgytfoPeH|1ns36!z|IgME56 znDuuxPT<+-RoMU2fLo6BizK~PEz0yz(feTX@LIJfqeAb4$wL5-`0nz&=a}vU{)kUv z^qy_HizEdMiBCgg0KE&776b~3Pb%~-Oj_^)A(3T_j^2Su3tk{3GAi^AOj=+dByu;s zj3^JiO(!id6cX?)N%nYS!(AV5u7EM^+G%Mh~P}YFiY*65y5uj48d%! zY~rEpBX*`tu1)OkNbK8@Xmib)gct27yWKcFbNb5P(s`M(>=AP(CG#>}vnNIWKhyR9on8x;WeTY{5TDNb@SR=@mSw~^km9tlPA_l~ z8LftO;lt|m0vC}HV_o>LI=#R}WV9;Q;&Y#}`dQIVs26&Kp^y<{EyZbLonGJ~GFlC* zVi{g%AXCArScccBXE=CJF>#()V2t?eWntnxu@}^c{D~C-rPWC?ePTsGX?1!*jmQM6 z7{^cGe#%ZSs1X@4#wku4>-2&ekoDvY5D)a{D0;#HYTg=?)tBE z`TwFNZaa*5jLpPl%(~eBfMHcpX=%**t1*wUnYfH$x^^x*jCqXB#AVF7Yv=BZ9Ah(a z8N+n#+T9<*P5DOmc4c^-zjVVCHP-2!v5a}aTSaMZif|S>oOS# zL^{P{X320@_A*r5e`vT_h5J7j>-2&ll8MrAzxYsYX6p2UA(9c}eko2H>-2&l zlF_QTuK?EW^nxLh5#zoBSi92;hDb)M;Q|3Q*69U9BqPQJHq=ScZyXEKB;iw zQ?X7j7!p}7Yj~LO_I7%~kjRMfFyZa(^nxLg(W-c8JY;_x#U5Q$88IH3;1Gq^~nfFbeuVQ6@e8t$BE zKdMhEJm{TRrx);uOidLJj8C=exbe0`$%scrj0dJTZLHG^ctl34;Q^xm-{}QBA|u8F z-2MN2)ZEqoe=eSiehJAR=x?j(><=E5nMq`-I%b%a4IQm%MxIcq+sL!UbT$jG^vhis zVWiBRUg0*=**sio;gP8>OfYf_kIM?P+~iw{_cV7x#y)NCL^N&ggn5k3#AWQd^|0M@ zC(L7PCN5)`*28wsoiLBFnYfHuckSGxlVfZqE@POkoqKe0jLpPl%(`pm9-SOxGjSQi zbnTq)u+}`rX5unt-L-S(PSEy$Af5kvFS!i%|C|Ph9k(gxDyx)H_(}YAK;tO||KCs1 zd2q`yf6-1cd)aRVSS0pK>lBlieOA{R9tV}YSbyx33Xg+IUMxKJsium@#^;=EJ%6-Q ztUvZijK`)pZLCu)L-t9l;W4(OHrgpxBl{%AW9$i+kxsEF*=IHd@aUFsr&yEhlM0W% zG}7s{Bw6-#>UdN^xYKJ%vWyCkdabOJElHO9>10HCcqDi&JK36Kxl>R^hDUD2^CtH2&KR5c|;cty$_P>)5xsI$SDy-k# zsf@t);L`y4_fhmobkZ>jeT_L)*dwII4OxCVl^e9+Zt#C|ieM%+ZpfIWS8kM{Q@Pcc zlLf=>e1x>4_LV`v@v{euiVVF@KxI92ABt$3|sp9ewAOckip<4tGMI@m10TmSxLRCeh zA{9jfB~;?f{QsPpjZgj^ualR?`_Mi4>+kIGcxUFH@0|0U4D~YZH=@jrKM3=qgr^CM+j4r+9AM@3~Z%i!b z-ZiJmQFddShAN-`N22l`nHx8@5u3TA*t+Oezz>*kYeDH`F2D19!ex3QhoU;X+fvok!|8mY2Mwi{H z)S3UwIjoH?yH%+(|Ce*NFuLqkrOy0c&S7nI*{w>Q`M;dAh0)!7|DQ_gf7jjO{y(L^ z|EvF73aE;ixqNZoU}$^O4Rqzp9LR>_PtQ+Xs5IL+3t<;7P=-LoDFtkz|LZE9y_}61x;8`(3_Fq(UOAvPMCKdGVJ+B>bOiMu=0w5vYi^)xJmfyghHc)O>Sw zt17G;=o$|>tOYHe+I>g&|24*(Vg3&H|Fh;g)bjq8__%0BZLS}|r=VzDGcFlt@CS0g zN&%HJGY5}5t)TmIIgmBXJmbVSY7`S2ZnN0VckI2f5c%eD0%K=bUI$H1dlKFP?xF->jt|1BkqH3D5jUX z
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'/budgets/show/1'); } + /** + * @param FunctionalTester $I + */ + public function showInvalidRepetition(FunctionalTester $I) + { + $I->wantTo('show a budget with a repetition that does not match the budget.'); + $I->amOnPage('/budgets/show/1/3'); + $I->see('Invalid selection'); + } + /** * @param FunctionalTester $I */