Add corrupted images validation
This commit is contained in:
parent
caae21c52f
commit
7b6a96e4f5
@ -30,6 +30,7 @@ class Image extends File
|
||||
const SQUARE_NOT_ALLOWED_ERROR = '5d41425b-facb-47f7-a55a-de9fbe45cb46';
|
||||
const LANDSCAPE_NOT_ALLOWED_ERROR = '6f895685-7cf2-4d65-b3da-9029c5581d88';
|
||||
const PORTRAIT_NOT_ALLOWED_ERROR = '65608156-77da-4c79-a88c-02ef6d18c782';
|
||||
const CORRUPTED_IMAGE_ERROR = '5d4163f3-648f-4e39-87fd-cc5ea7aad2d1';
|
||||
|
||||
// Include the mapping from the base class
|
||||
|
||||
@ -49,6 +50,7 @@ class Image extends File
|
||||
self::SQUARE_NOT_ALLOWED_ERROR => 'SQUARE_NOT_ALLOWED_ERROR',
|
||||
self::LANDSCAPE_NOT_ALLOWED_ERROR => 'LANDSCAPE_NOT_ALLOWED_ERROR',
|
||||
self::PORTRAIT_NOT_ALLOWED_ERROR => 'PORTRAIT_NOT_ALLOWED_ERROR',
|
||||
self::CORRUPTED_IMAGE_ERROR => 'CORRUPTED_IMAGE_ERROR',
|
||||
);
|
||||
|
||||
public $mimeTypes = 'image/*';
|
||||
@ -61,6 +63,7 @@ class Image extends File
|
||||
public $allowSquare = true;
|
||||
public $allowLandscape = true;
|
||||
public $allowPortrait = true;
|
||||
public $detectCorrupted = false;
|
||||
|
||||
// The constant for a wrong MIME type is taken from the parent class.
|
||||
public $mimeTypesMessage = 'This file is not a valid image.';
|
||||
@ -74,4 +77,5 @@ class Image extends File
|
||||
public $allowSquareMessage = 'The image is square ({{ width }}x{{ height }}px). Square images are not allowed.';
|
||||
public $allowLandscapeMessage = 'The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed.';
|
||||
public $allowPortraitMessage = 'The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed.';
|
||||
public $corruptedMessage = 'The image file is corrupted.';
|
||||
}
|
||||
|
@ -13,6 +13,7 @@ namespace Symfony\Component\Validator\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraint;
|
||||
use Symfony\Component\Validator\Exception\ConstraintDefinitionException;
|
||||
use Symfony\Component\Validator\Exception\RuntimeException;
|
||||
use Symfony\Component\Validator\Exception\UnexpectedTypeException;
|
||||
|
||||
/**
|
||||
@ -46,7 +47,8 @@ class ImageValidator extends FileValidator
|
||||
if (null === $constraint->minWidth && null === $constraint->maxWidth
|
||||
&& null === $constraint->minHeight && null === $constraint->maxHeight
|
||||
&& null === $constraint->minRatio && null === $constraint->maxRatio
|
||||
&& $constraint->allowSquare && $constraint->allowLandscape && $constraint->allowPortrait) {
|
||||
&& $constraint->allowSquare && $constraint->allowLandscape && $constraint->allowPortrait
|
||||
&& !$constraint->detectCorrupted) {
|
||||
return;
|
||||
}
|
||||
|
||||
@ -178,5 +180,23 @@ class ImageValidator extends FileValidator
|
||||
->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
|
||||
->addViolation();
|
||||
}
|
||||
|
||||
if ($constraint->detectCorrupted) {
|
||||
if (!function_exists('imagecreatefromstring')) {
|
||||
throw new RuntimeException('Corrupted images detection requires installed and enabled GD extension');
|
||||
}
|
||||
|
||||
$resource = @imagecreatefromstring(file_get_contents($value));
|
||||
|
||||
if (false === $resource) {
|
||||
$this->context->buildViolation($constraint->corruptedMessage)
|
||||
->setCode(Image::CORRUPTED_IMAGE_ERROR)
|
||||
->addViolation();
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
imagedestroy($resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -0,0 +1,86 @@
|
||||
GIF89ad d ÷ Ro«(DHÏÓÔm/t8f†j<E280A0>’üÿÿ2W[#V–¥nkwLPQ&9C’³É!49†)u)3²êꮳ´15%ITEtx8Wc65jCiw
|
||||
e§«¦±Ôtœ¼KFCE‡UŠ˜;djè÷ø2FXx·¹–Æƈº¼"'7to‚E2k±,<2C>ÑÜîÏLºèêêW‡ˆ8$G¾ËèL…Šg8€fs¯Hx‡e˜¥36G†—)5:GzHY–Ú÷÷7)XU”›ËæëE&V8B©ÈÖ#$Z£©ˆ“º‹ÄǨÖ×%#EoH˜FYažÀÀGceÃ3¡4juv¥«gVu(RW49Ugª²)*x©¹T+ek³¶He™7A7JdI+aB9F7s”0„†–—SJ–¶R¶S0jØèé
|
||||
(Ug"*óþüh‚½6VuU[¦W{–W7vFDdDw”¬<E2809D>ÌC K—S³iS¥—˜š(6X»vÆEj‰AQˆ¶ØÛw–µ VJj¦ËÎN€|"*æìöiVBLaŠ¦Ùìò‘œÄóôôXxz™Ö×14IQz‡K”›(Kb777<37>pµ7s}<7D>y‰W"W"*€‡ˆÉöõC0Hh›´RD<52>Ei[#"%3#;¼ÇÆV£žE;VœÈѸe¹&$Xj˜™§ª!$v°®,[s‡„“)ah/,gri#^”½» rš¦PT<50>…«»WWd
ô÷úX‘‹.GMEXt„Jž³ÊÞIvm
_ersŽ³’‹—()
*)Og <67>BA}Š¢¤}ÃÈKM‘VefÉíðXZo7^^m¶¯p‹¸áâ$?>íñðQgŠ‚µ±=‚ˆ¸=§ Ã`¼0,¡œ££ÐÏÝßßÈáá0*œ®°£Fœû÷üöûúòïô
|
||||
$1PR¶½àH<C3A0><48>0/,1[[ˆJBO
($($-.-RM<>ÌÐ+NO_/o:2y!d¿¾Ãðëïóóï¤áá¡¢¢ ÿÿÿ!ÿNETSCAPE2.0 !ù
|
||||
ÿ , d d ¡ û H° Áƒ*\È°¡Ã‡#JœH±¢Å‹3jÜȱ£Ç<C2A3> CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ
|
||||
J´¨Ñ£H“*]Ê´©Ó§P£J<C2A3>JµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶۷pãÊ<C3A3>K·®Ý»xóêÝË·¯ß¿€L¸°áÈ+^ÌXp@ !ù
|
||||
ÿ , d d ÿ 7H° Áƒ*\È°¡C#JœH±¢Å‹3jÜȱ£Ç<C2A3> CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ
|
||||
J´¨Ñ£H“*]Ê´©Ó§P£J<C2A3>JµªÕ«X³jÝʵ«×¯`ÊK¶lÆe´š¶©›Yw’$¤ƒP<C692>n*YjÛê7 †d€1<E282AC>H„â®;!¿{ÕU<C395>žˆŠd¼˜|ÇÖàˆseìøE0 ]-ÄFƒ`Ì™·.hœ‹–ëÏzD‹&}oꬾ:Þ-ÛÕîµo_åæ@ÄkÞ¾“auÚ½T%<1D><>¼ºr6jÛ~^uµqP¬‡ñ¯!€óáÅi…_?¾€{òæÎC<C38E>š À…`¥Ø¿oZÑ–$ lgU}5à§ß û%XC|†q]q†— k!PÈÜ`:øà}ù%‡`… †x òuWÁw~8ÙŠ"NÑ †SIW`Š*²Ys¦ÙƒÉxÖß{6Vf^ŽÂmhã‘”‘Hd‘BÆÆ“G§<>ŽLVU…_¶<™ˆ"0¸äŽÃýá h p
ùå|X1„_d^ö"Œ]¡—\ÌY%_Tîù›ný)è „j衈&ªè¢Œ6êè£<C3A8>F*餔Vj饘fªé¦œvêé§ †úШ !ù
|
||||
ÿ , ! & % ÿ ÿ H°`·
*\Èa·‡"J„Ø°¢@ˆã2.ÐÈq¢Eƒ5’I’dÇ<64>%ê*©®BË—&3¢tˆ€¥ ›8qºŒ‰2âH—9¥ªSÝJ™}¶Äi¦)ª§P‰î<Êp<C38A>Ò 7¡>Ùúˆ«ª¨7<C2A8>êB
|
||||
2ãR¡_»F[˶ëצaG’øp%V´<56>Ø¢ÛË·íÛ¸=Ò¬<C392>U-_‹+ÆÁö©Abç"´káéZÅ<5A>2kÎÜ×íãÈ)ÍV~rs‘Ó¨O3^»õ³¯±•2R•×ôf¸q/öä5‚Ø”IÛ¾<C39B>[÷jp%Àž¨‹°™ÚÄS/’ø
ï©Ì<C2A9>_žÎ}zuäŒ KÙZ^+íÄÿJ©§Ò½øw5á!(ïHŠ°ðÓÐÖ·7μøÀÕ7Zbûq‡X¦Ä7R¢¡]tÝXƒØ¨Ž Ïía„ï)Hžl÷mè‚É}XÞ€ŠHÝq º&Sv†¨b$º8—ljauÖµXF YhÞƒÃñx<C3B1>‰t5è u«ÖY‹½-(X’ܜŕ^~ùè vSRéË]–ååÖVŽý(YYõ£Vešy¦Bu¥y×ctºùæB*<2A>÷V.q äLŹK1ý hhôýd—‡EA2 !ù
|
||||
ÿ , / - ÿ ÿ H°àÀn[)\h°¡Ã‡Ž›H±¢Eˆ#þ*ƒ c] Cz¼˜cB‘’RJPÉR$Ã’=’bY¡¦Í•8gŽ„YP"Í @ƒ
|
||||
½™r'Ï
|
||||
Cª»9´)Q<>$!&U)T<>Õ«X<C2AB>í˜Ð丙K«bµ@¶lÖ [£ö”Ô,£·pãšÕªöàD_aÝÊÝ+whÚ®kÁŽ5×°a¾uкŒ™7®©Ã<C2A9>#K><·&TÀH7JZòdÏŸá:P•ãÒ·ªž¤VÍ:´kѤ/šbAÄ£Û8rçþw{õkÊdcÛ] ®v
t‹Š(W¾hQ´Þ¿<C39E>_]¹)© ¦¢)XN¥»wçoˆÿ÷ýú,H†I=Ú®¬½{÷EÀ<45><C380>uŽ7\W•‹ÿÿ v'ß|¿M·Ôù"ÈE¼ €
|
||||
äF`<60>Á˜ ‹”p+žà` þÅÞ„ÖwßùI`JƒLtØá‡"Ž(Þ4Öˆ‡&þq^;U@ G˜ÐbB~¢„wda£<61>8æÈU<C388>ªä<>E‚è`„2.ɤ“>E¹!•Âˆ¤’Zcf“îhÝŠº¨¡˜Y–y¦‰%vbŠêqð¦•pÆ)§hÚ÷W7º`ÇÞƒ|þƒ%™Œþ9š Oâ‰CƒF†¸h’<68>–¹E…ƒ"´ß¤•Æˆi¦K‚`ª<>wÚUœ z'à¥óý—yª@éè~ªV žvÛŧ蘱ʊêŽÓF›)ª½¡t$þ™Á°kì±È’Hž7–*̳оDÐTÔÒ'Y¶t2Òíè:îU ÑWg¥+H<>µ[žU9q$í¼ô¶åؽ±ÕÅU<>ýÛ
|
||||
'z[ÒTTq¦Wš<57>•‚?i•ðF¯•àO<C3A0>b–±ÆG+ðÇ1Y„¢Ç% !ù
|
||||
ÿ , 9 8 ÿ ÿ H° Á<C2A0>›Ê(\Èð ÇvcèNVE‹/6ŒÈ"ÅT CŠL@RãÆŽ(?ŠL²¥Ë‘'S:Té˜Í›8_f”éqáÊœ=‚
|
||||
Í 3¦Ì‰ÍÀtéP›EyLZÓ©Õ¦O[š”Jµ*Ö¯`±ˆ4¥O¯aÓ‚KÖ,I´juxFW-Ô<>F"}{3®Ü¿€ç
|
||||
{wgO‹pëVbñÚÂyîÙÐõëâƘ33v|/噕™^ÆCz´fÎ<66>?ô§d߀KËÖ1»6ÝÓX=¤ŒX(lÒ;‚n›¶qÍ*æ-¹{/ËßÀ³HŸNøéëus–ÌZÖsèÓEÿO½|ñâ„™œÜ{Ktòðã›?<3F>[»;½Ÿã™ž¦ùòUG_vu¤†Ð?( ›tþ
ò€
|
||||
‡]}þ3‘$ ÒÆÆ –,áƒBHž„6f_C$9à
Xáb‡0†(bÅX7¡‰'Z˜_ j àÁL˜pÄ %¼âŒk<C592>x#<23>,Y$™w<10>À†°°bÂ5Xi¤ƒH¾Ü’8¦ÖJŠ¶R¥<52>XfùOŒ\Îhã’6yß… j`C C^‰ÄžZ¶è_—%†)§ŽdZ‚§ž{öÑg‡2¨ä%ž¸WvZdš|ÂÂ& ¯€©œ<C2A9>Qjæ ˆfº)§a@ª*…rî•@”S’ÿÚǬŠjÊ(/<2F>F¨Ä»®ÊjI‘P©¬BÉf®ðÁë²½úšYœÀr÷êwp䢧BÈì®Üb“•<>!µ¶h ç*pd—Û6‹\SºéØ]n˜ÆÈÊ×n·ï~;'BÝ%1…ÁÍÈn»ÎÊU!wì)H°ÁŽ¾²¯»‚¶ºZÀ*îÄ4N¬DÂðF‹<1F>ôjÌ1usËï³þ–5òÜHPòÆn~™êÊÈ-|qkðhr„ÔÕ˜ð¯m¦†3t bÅÛSBGËL‚´ ¨q’ªö40'ÝÕõ1• g ¹ÅWÉÇ¥öm
|
||||
·™D„¶Tà×k6·˜\Úµ×sÃK&jþêµÖ\<5C>%õkô>¦ÓVyÜU‚@Õ*Y„7.ïã<C3AF>g.'°”WnùåIEÍùèá~Z¸0§®úÛ¦ŸŽ:ëwTzì¦;G !ù
|
||||
ÿ , J < ÿ ÿ H° Áƒý)\È°!‡#J4Ø°¢Å‰3J´È±£Æ<C2A3>;ŠB²ä¦“ Syò—IY0cÊ4©²&Ë’gdæÜÉs&J›oêÌ©%‡Ñ£H{º£ ô¡P¤0ŠF•:•êQŸMWŽŒiHT.^Ê
{uéϬÿ¶r
|
||||
öJÛ·pÉÝÉ´éV¨cãŽqË7î\ºgUvL ¯Þ¾‡÷¾<C3B7>
|
||||
8ðG‹"§2
|
||||
¬G˜#ÞœXncÁ<63>%¡HRù²—Ó¨5wæ¶ã˜Ž1V$,<2C>tiÔÂÚèÞzuo×ë†l‰€T•ã·qç¾Ä¼yêÞÐU¿†ýø¤."Æ+©ÃÝôòæaœóÿŽNÞ3õáÅÿ×Þ]ˆïáÁ‹/Ϻõtá7èO/AÝvAlñ^1ñÉgàx™ùf_peì§Õ~
JæŸí<>°Ã+fX xÌ=GŸ_æá8$fÇ€jàq¡†k°x ‡JWÖ’Xb'Öb†{+®ñ
-¹á|1rvE¸d#7¾àø#ª¸ 4TY¥<59>CvcŒÀÍXq2™£ PJIå<49>i¤ $–Yidˆ_¾´Þ“Rl‘"•Vª©&›Dº)£Qfi¥Þ˜dZp'žz&ÊgŸ~ÚwÞ—ƒ` Ðyhž‰¦¹¨–<C2A8>.È ƒiEJéRb)¢™îé"£äÕóÛ§•ÿH!0’J꩘¦ºf›~gZK%âÆÂŽzk¡—êª*¯½–ÕgKéÁ°Ä[ª©Pf<50>ª²›nÙ¬b°[F*ÄÒjm¡†â±-šzþÓí·®¾ú©ƒãÒZ¬•’™l»í¾; ¼ñò.AÐV«¤“&¬î¶‰º»é¿G\ß‚ÐLR“t껯@ý®z‰Äƒ,/ øÅ*aÂ(_x&»š¾ëEÈ0‹î³©<ºÒu„¦¨rÃ.G³Ì,(Æ–š9PÏãýì󟋈ó‰Zèq–k¦4ÐÃ[œ7>)5<>SsšôÕ2ÓlsD]{-%Õ¬îE¶ÄæŠÞ?µUÈvÕ*ööfónÆí4Ýu{7à<37> ï}߈…9Yrƒ‹<C692>`ሙmV7 &>îâ–)ç‚n3µ¸ÕYwe™wúíá~£·é@ ÌyÜJ¦.å«kòÕ믓<yå@ÕNUë¸<C3AB>¬{„ ÛE{a¿¿˜ä<CB9C>Êž’B:%<25>{U}7ˆ’8±žWgÔ7}ýÍkIïi—Õüù÷}Wä'eþç¼£Ïu´£»oÿð
N¿ü"f<>üý>‰ÿB§¸™0I´Éˆv÷’vЋv Ì
|
||||
˜Á:# !ù
|
||||
ÿ , [ ; ÿ ÿ H° Áƒú[È°a·2ÿm˜¨°¢Å‹:ÜñaÇMCfIÒ"Ç“BB¦¨RbÉ—/QNT™²¦¬•.mz„ÉӤǟ3iž¹9”hÑ£5<C2A3>ö\:(M¡Õ<C2A1>ž¹AUêÍ–La‚|êΨר`«Š‹TdV’[;zM°`j*·9âÊ%«¥®]<5D>`¯&=‹‘ãÚ·€çÚ¥:¸páyõâä«0èßÀI"Ã0<™²å¹Š¥eLЯ$¶Ÿÿˆ–\¹‡i ¨ã”¾l¸ìÊÍœ<C38D>†
™ôéÔªs³¾‹93EÆžg×v›‹ñã¸Wï*©fØ1¹ê>œxqäÉu/gîúHém©Kÿ€€Xyë×±gßÎÝ·Vð´Ï×q0?QzøÕ¯g_Õ}IÇ…&_}$ÔwŸ~ûñ×Ýo}9¥V|óé@ fà……ùe¨a‚
|
||||
ú—‘_ÅG<C385>ÜQ"‰jT(Ì…¶ˆ`‡Î™ÕˆáAâ!ä¨H
&€‡@®è¢‹ÚÁØ•ŒÉ” ôhT” %>èèã<C3A8>Bù"íauQZAIÐä“Qž0%T²ÁÆXf©%‡F"9cŒbŠP™¥ÀbæžiðÊ úæ–qÊyЃ:`Î8B©çž|þ³æ+—¸9h‘…zg¢‰b <62>“6@aEž<45>òÉ‹¤”VÊ⥘nל‡›:ÿ"“æ$cÌ.l¸¢k©¬˜Ê‹ŸÅ¨º*‘ºº K€)
|
||||
Íd§"„**¯{žJ›–[¬±¾ÉÚmMŠÖR«“jîJ-,Vxð+¶Ã²Êe—\I´l3âþól¹Óžû+°Ùjû.¼†"b²)Ñ:.£ƒ˜«ïµÅ´ë¯r–µzìœj1+®ä&¬°©üjè0¡Kë¡—±€Á7ºq)–„бLJ¼mb7& ÊM€êüF›0§ÌºMühäÑs°Žjš$†Aƒ¼<ÿD‚©Ñ2„4(v=Eu€u†SËóAÙb‘3rƒŽ±Ä„ô5ÌpšmµÝgÏŒõw…ÿ7y€ØnÙwã÷Úhía²Éâ
(vÌ….¹äý!žøâ~è8ä‘>yÞ /ÖSߌknÛ<6E>uNyå{ÿGzãè
1è´×NsŒ|)» ñ<>>3ч¿Š;pZcÞûìÀv5ëï{æ‚%/ýí–<C3AD>þ:ôÑO™6Ôkêüõ_eßÚøp ßzlJ%þúi—oUõgÑx¤,a¹OYï¯Õ<ú¥¯>ûÌû–Nø÷%ÿÑï€ÿËŸN0×0V¤³Éî£À-Î{<”Û‚@ý-0^d›ü$˜ ÎO$!Å8uBZÐK*¼Ü_ˆÂ’Å<E28099>'¯ñV¼žsCô)KV%ì!ÿ
j(¯ ±‡?,"L !ù
|
||||
ÿ , d < ÿ ÿ H° Áƒ*DØŒÀVB6m˜¸°¢Å‹3œÈ±á/<2F>C‚ÔH²$I<>e$>D±¥È”0ÿM3I³æÊŽîrêÜ9r Ë—*m
|
||||
½(&OYg ]zÔçÑŸC£24š4•Õ«X³’“É´kÕŸí(JÊ2k’³hÓæXëµm¨·]cŽYÖ,°»xó²ýZõL5<4C>Õ†Ët.Ý<>Võæ]܆–ÇkoHÜ¥²=Ë—µ
†jآǾj7M:Î?Ó§1§ÆŒÙoRÎ<52>§rµ+º´m ‘â|ØͺwkÂ@cô·'%èеo_Yž7oß½]>¼8bäÉK3¯·]ÞsèÑ<C3A8>Sÿ¿©òxÚì=T¤_Î}€{æßÁÿ?–¸ýû³ŸOŸ¡¿zåc´Q<C2B4>{3Ì |ò…WO6Ýçàuûù'Œ„üý§Â<C2A7>¨!‚ *(Yøá¤_„za¢@b¨áŠv8l%=8ŽQ(@à@‰þ¥hâ‰ö¨"‹-º˜Ù‚Cɸ 6n‘Œ-wì€Ç“x䈢<CB86><R9àŠ6'ä‹E… 7U4s€wÔðÆ™hB©ƒ„ÿìèæ›X©å–C:"<22>ô$óˆ™èâƒ6üs¦“O² 'œqf9'<27>HIõ%˜è)C‹Ø` T@ñ<>
8ˆBèšo†ša¢ï)$‘\ÉEÔCºø€¤“ÿaŬÿœ`«%ƒ <20>…šUö:*©¦žJNy`‘7Õ£AŒyA¬%@c« G@k…
º~ê믤*ê£<><C2A3>õ¨·^’7¤°bú,´èÖÊ©§ÅLxí<78>À.Ê<C38A>ß&ðèD”£TLFB<46>ç#èÈZʹѦKE®Ö
|
||||
„(¶q+ìL÷âë@36âû%½2ú+³Íl0Âí¾o¼ÛÎKo«x‘PËľè{1K)¹š'Ç\-îŠze¶í•l2«Ø˜ˆÊ,Û»¯CK0 ™ÖŒn)¸&Üf›“ì3£''€ïCí2Æ É¼¬À;m´7ç¬3ÃÚÆ÷0«õ½µÑ/?X=c›ëlÁèJÿ²ÚVîlµÛ.q݈<C39D>ÉÍká~™Î«4ïÝ·ßìâÜ+#Ë)¯°Hùò¾_Ë•˜y—]ó´ƒX›#欷78á ž*¸3ÆE<C386>G®n܉ޒßjÉ €³®#Û=_Í9íÈ# ÛDÎü§é¶:(»S˜y©›®YòªBôáFãæ^zÇPwºÃS¬^áðÄg¯ýVÜÇè¸ÒÑüi) fª<66>þ<EFBFBD>§¯]àWrßû:?<3F>0OfŒX’þð°¿:¤Ïzý w˜ù F‡áˆÖj$4ôX<C3B4>=ÝY
·.ÃX'?$QýG5‡ÁÎC$Œ<>‘®âAÿ9G7Æ{¡j ó—ÊðA´ˆõæ3:
i3äH"çâ9F¦Ž¹<C5BD>#3Êä;ÒùG·à·Ä"M‹´!âb¨(<28>Áh†2G¼ •ØE&Ñ5E£Z<C2A3>È8¼Åw¤ã°ÔØÆÎàÇ<rcãBH>B¥€ãqJHe–:º…{¢cci¬GBò’ˆ¤äA<‡ÉN¥(2 ¥&7ÉIO‹'¥å(<28>•JSz)’A™$udT”ZºR&¶Ñ*3BËWºR—»Ì`ˆr‰b˜Á4`/qYÌø!3™¼ì¥ƒ¬3Íj>š'ÌŒyMlvÉšàôf"ÁNqŽ’œ6 !ù
|
||||
ÿ , d = ÿ ÿ ¸iÁƒ*\È°¡Ã‡»m<C2BB>±bĉ-jÔXæ_‰1nYÑŸI<C5B8>&O’Lø±¥Ë•%;ŠT˜²¦Í›*7ºÜ9&K™ªÄI´¨PŽ<{ú<´iѤO<C2A4>B„úÒçK§£‚¤ŠQêT®0·bE©U,׳f"X˶-Ù®1»†”‹¬GYBÈå-£·¯_»wÛ
|
||||
üó-Ö²tý
|
||||
L +U¨3<C2A8>k“üO²åÇY .ØÌy0a¦YášEœóåÈ<C3A5>µT«ü¯‹j×°a_&ËMWgÏŸ5<1E>¸wcÎŽƒ·~=\žñã‘>(_n¯y¨_zÛžŽ›pèÝu1â-<2D>:‡÷šÀkÿYŽ|•ùó<C3B9>Ò—½¶{ê·sóÎîn»ýÓâ¿ÇÙý½ÿ ¦çßz˜UAÄ<41>ð ø^uJ å[bïyWNpR¨_~å
`v €Ì5gàˆ$Â7ƒ…ö K¶X¡‹°%ÉyÖèူ¥£ãŽ *Èà\*žx‚À™Ä‘(iä…¯<E280A6>Ç<1F>6F9 zöT<04><šøãŠ<C3A3>ù’Ž `Ö!æ˜JC“Î8£†~ᦔª·^3tBPg‰ZÒ'$‚V‚i#€’&™üq&“gªi^›o6zcœrvQg ƒf¹à–‹m6b˜¢BÀ§j„º…„z„
|
||||
‡¦™!£ŽÂ©<æÿ`Š¬±Òs§<73>[î‰ Ÿfxúį ŠªÃ°k*†¦êd‹²Új«ª'&(’˵˜$#¥#æÚÒ®ôªÊ¸¼an°Â‚`쩨&‹!³>-‡SÊC˽®Ü+ƒÙÚzežn}»i¸ä–û碛®
|
||||
»ûîšÎÊû(zÆ•b1pàÃ"üNëï¥BîT›Ž‚ˆ[ð?'jYà±m«ì“lJ<o´ê!q
+Ð\¼1-°®W–l²Á)«ÌòÅ\òò?17<3ÄÛ<qz#ð<>ÇÎ>o4<>¸J7rFüiÒJ/íòÓQO
¥ÕÎâˆt3óI cÐ"0ÿbå<62>¸qCrÙãðÚi7m»Ý,Ü®¢GwÝ<÷lùÞ`<60><>Ýv Ù}øÁˆ«½ƒâ‹Ë,žqoC-Å“ƒcwå—óƒ·Â÷9Ù¨ˆþé8pœøâs̱¸ÃË>Ëûì´ëýBæ:hÛ¯ô˜ 输¼%
|
||||
Ü¡r1§?GãMÊÓúòô;!Ÿ°bBô{³Qíµ~|=ièÝ“þðŠkò’W3öµvtÓZäwú)"öC‡ó§` "ø<>Ù6X:–!§sZ»EµªYy „ýöfêk‚ù{Ðö5=•nƒŸRã 6³Õ•Ð€T8ÿØÀ"^Nzx¡”øŸOƒP´àÊZ&Œ*f ‡Éû¡›·µùå툃<CB86>aôõÀ1N¯‰h4{ש6‹éÓ¢ëäfÄ/"±Œg\â÷(Æ4*Œ<>â
|
||||
”˜RD-^&”X´º<C2B4>·Œý,_I´Öýð‡ÇÆ0<C386>j ÃEªN: I†,Ô?Ö9HU,]sâô4p z`pZ”Œå%Ñø)Mn‹“•JÒwvIB9*g®aa0XHFê {Íصd¹Lü)Ñ–m$UѲ§,^Z“f4á"ƒIL'bPÙ[¬°EÎfÆš%Ë¥Ž^tÍCb3›7k^sT Ã\hlï¡Ó8Í™ÿ-l½r“ê§{PÀÎvúPQðl”<<3C>CÉUfîž0Ñ\ÙÏŠ.S[µÓßÂi©Û¤Æ ¼,)ƒhçèEVšì›Ð´#JíÓ¢=¦DA8<>v¤h" ܨdÒ_øƒ{µ TîÚÂ'}¾4[1<>(ȶ„œÆQFŠ"POQ‚%¥ÎT0
|
||||
êE‘z=|Ƈ>7ÍieŠœaÆ)ÚKkàªZ‹TÔ_ÕÑf°¿ò£ÖljlØC×¥®5ZÅ \åê§èµxÍ+b{ֽ؄CóLV‹*ÔŽRä0óá‹fÃꢛΆ4ÞzÏdQ<64>Ž }5³ µ«g«˜èÐÕ)¬hq¤Ës¦³uUíj!ÛÚÔêi¶5‰o¡SŸÊÄ6¶Ãý-Š’–¡$7)ÇíÇstÛ±Xeº¯EHN@»”¸L×+jAmw‘Zî:·ã]IyÁû•ª¤·»F9‰|Õ[]ê¾7,쥯mï{]ó’Ķ™á¯€¼_Ø' !ù
|
||||
ÿ , d d ÿ H° Áƒ*”U†¡C!
!>\HQᦋ3jÜȱ£ÇŠ$ŠIò£É“(Sª´q¥Ë—0»…œI³e͘,qêÜÉÓæÍŸ=ƒ
|
||||
•™ÓçУE‘*]JÔ(Ó§[EuJu$P¨X¥&šµëÕ¦`½rK6ìײ[šEËößÚ´lϺ<C38F>Š€î8»pãÖÕÛö.Þ2Y윗/áÁ‚oRü±cÃ<63>#Kv̸rãÂo3¿´\7<>çÏ<C3A7>Cû½LZs`ѨA'V<>ºäÙ±§[‹þSŽµmÖ¯sǖݹŠoÚÀ¹_Í[·ñØD’ÿ^®¼¹sáÐQ%>ùêçÌÓeÇ<1E>›ôŸÔ'/ÿ½¾€»öó臫WO¹ø÷ñÄͧŸOß»}]÷Û—¬Íþçäå‡V0`}ÜåÞmšfgä5W`3VèÀ„¸]wJÄ ám6
x½<78>(`†¦¨"‚Ìýçâ‹Âö ]&Ò†b 8æXËŽ9¢È"€5Âc*26a€ÛÝÈ£Šô¬h ?&è¡<C3A8>güCäDÇÍåtôM¸¤Ž_šÓ¤“n%ˆX:tÆgkVce*Õ¸fÜuz&˜ˆ &™u¶ˆ&•pj¢Å 9´™&IGÚx¡’{ê)fžô@Ú£<C39A>(”)%’©$Q覄v
|
||||
œŸ’#j¨¢Ž¡<>>
|
||||
i2yŠÀꪒNÿZ欗VÃi¦¸v‡®¶vÑë?öØzXhÊ‘™ã«®j ì4«¬«ÈŽÉ§¥(äÚæ‚f«ë®Ü~àí·ò„ûÁ‚¾-j'ŽÈ6Ëƺ!´ëC»ÎBëŠuhÌ› À`mÛöÛm$ ÿóO bp ä2i2øá.PD\ŠÄÁ¼ï¼ŽNá€Æ›Lµšê멶"Ãðï*(üO,·AT÷¡Š.ÃÛ q)'°¢ó:OlƒGË DYàÇ!“¬´ÉLs‹ò=P»¼ÂÔ_Lí—„{¦J³7ç|
y€Ý‡ &”à3ÐAÃ:4Lj40=$÷Ü@ôÀÅ¿q ìrÕS÷ÿíw‰çâ¹58ñu6?£8âa“
ñ»2à€¶¼ó²]G˜g®Âæœ<C3A6>áùÝu?-ð¤ûmú
|
||||
XSøªªØ"B³\›mBˆ<> ¸<>@Hâ_q6ä5ÿìêkíÅñš#¯<Ÿ×3Àó£ŸîÄôÔKàŽÿ´úººã|8· þø·³¾SÁ<53>ÀϬ«[ÄO‚ôÇ/Ì%ø“øóß¼ó¥“õú¶œ
|
||||
n{ïRßÄ7»l€<6C>|Ä<>ùa¶õ±Or“«êG¿Wxp
ü`ÂÀ¿”Єѓ†
|
||||
ÈBÔÙ)]´`Ÿ½F6f<0‚œ ú÷®bðb:€Ÿÿ>˜…"†P„#<áèþ1µ¶p€æbÝÖеy lÇÀ¡yÀ
|
||||
òЇ?d–ïPÄ! GD" •0ƒ[ÜâNl<4E>Ÿ¨ºtqO†ÞC„Øl¨Å-î£l6cÇHF2‚<10>hLãéF9HÑ*”ãY †mÏY«YiÇö‡\dé¾Rà
ˆL¤"yHFR’Oœ^ë Õ0î½ <20>Äb'm÷Iòñ ”„« 4\1ˆb¢Í”§L¥*W©„VþÑrl<72>4c)Ëd-ëŽxôZ'=ÙËR°Œ[ÄŒ9d¢2•«a#¡)ÍvRÓ –´¦ðÊ»n³›å :9ÿ¶~Ú€œðúa2ÑÉÌ9´RbHh;aùD;ªëŽ›DÂ
ñ)>.†M˜CøÄ0ÿé®y”ƒH'ªÐ…Nr€´¼f¼.‚*Îܤèø²aˆõŒ˜¤tßG—©¿,Ò -©Ic)Å´±45%Ü,È N™Vt‚'°BÎpšÓ<C5A1>t
xð©I*T†¶pGñÔ ö"Ç5.¦øü¥ËÆ3bðTæUÉÕ®žtzZX<øºÈ<C2BA>À ýt Z?©Ö?ÊŽ£dZ\ƒ'
|
||||
eŠT<EFBFBD>ìªWYh
|
||||
<11>¯³Œ\*êÛ‘<C39B>ícaá»<C3A1>v®æä)T¡¾³ŽP›öúZ
|
||||
ÆÿqŠ#ì/)±ÖÒ"VŒ•\!‡ÛØÇ~°‘v¥&ÍüÀ\±Ž•žïúkÚñ<C39A><C3B1>·:ücú~kNCrµ‹Ô*dåÐÚɲ<C389>¥1¤Å-›K¹`ÓÐ ìvÉKëîvø]kÁ¨ÁþžÑƒY
0VÚÌ[¼ò®ÔKl1ööΖ¹
–<> {<7B> P"|ö5~ÅFÚý^ð}Û[ÝÔ Õ;X¼âÅáè
÷-Â
æ®XU*a4|/Ÿ¼û£5êáÏ¡jÐ \Gd[ôtÀ ÖŸ™(À˜ÁE°X³ì88,V÷©è#Ï*èÖ)ËY$²<>ÕÀÁ¬"™~Ë{^ ©ùä¬/ÿÂ8 ªü
|
||||
<EFBFBD>ã¸qÂ4Û‡ÇüåÙŠ€ƒòÛ <20>æä9OÍMÎdŒÕ«^?´wftçmÃ7Ú¨*ƒËR†Ÿàˆ[BZɳ[èÆ· ~v0^oœ…'Øì’Þhu§»ûVÆš¶ì8ݺ2:Ô T¸H5¨=4ÕŽf“DàjÙÅú³ …v6Æfé.¯:¶Ëf]ÑýkÈ[%×°†É‡<0E>BgJG3ÜÛlX¢Âµ“u8yŒþæ:Ý•-Þ¶í×íoÃ-iÁòU>Ыo=k¥÷f=Ž*;Xs2qó¦7Ë)¯fàû7Q¼SñüÝ4OÙŠT¯†5}¡ç¬›ÎÐÿHù³#žr=ONÙ8ÒŒ*8Y™ÌZS"Õ”*©6tûé`w×Të.R{ªQv°ž ÀLõ‰Z¸Â<C2B8>Mt.„rm=øIN3f œµ¼ÎC[ãŽN…LüäYO
Ìd"Y€ªHSúy‡zt‡-PªDïgµ9êå˜kh:j{Ô÷ø(H@̦˜â¿žTö]Ûï¿qÌôžÍH˜Z8l¦xλbœ
òÒŸ„ù÷I?–—ÓFßÍ/8<>§ýqÆH/y©^)†úáçŠC>òµ¼uPú /7mæòSðM?¬Â;ÿ.
|
||||
J
lWgqÚ—žù¨ŸKåq/ùrA<72>òË?—TN_"]ü¨‡ÐˆJÃ}Å=÷å ÿö×OÿÝÌŸõò7fÚ<66>ý÷GÿþâwL" Ѹ¶'"ì—Íw{ è Ø€¥1xø€+A<>ˆ<>ã¡(~A€¨} X‚$X(€%¸‚!<18>(¨‚,Ø‚¸'X<>1hƒ7È<37>3h<33>üǃ9øƒ2ƒ@X<>ˆƒ‡²€ !ù
|
||||
ÿ , d d ÿ ËH° A*<Ȱႇ#r+7‘¢Å‹3.Ô¸¡£Ç<C2A3> mt²$É<>D V<>ÇR‚Ë•-YrIÓäÉ›6kª„³çKž>yÎÔ™gD£
|
||||
/]Ê4¨Ï£D‹"<22>º³éS«NŸ¢”ÊuêÊŒXej«+åÃ*g³VŒ:®«[‰a—¦%k¶¢L´Dðªýš–-U‡ öælW0a½U±"@ûöï†À a:Ðl²\Ä_3^»³âÆ~ÿ<>•\¹t…Ξ
Ó;—)h¨H [†@»v껫U÷-ÓïëѤgŸ¾ªº8k ¾“'8(;®ótƒi£6^á±Èß\•fµ-Xºdç¼Söÿtœ}ºyîÑŸ«<17>ùã좗kGýÝvú÷¹ë__´uù©üáKpûW`æ'TY¬aYkµ™!~ ¦3á…"8\V2\-jâˆ$–há†""×Ø{Àñ&\Š“Åø¢‰4Ú&ã‰Ay߃<¦GÙ<47>5N"C–ö#<23>4v[y=ú$’‚XË”1Òs$‘RV™¤wf1Ùd<C399>O&"£˜dVIå•gjy%‘\ªÕQ*9<>à—<C3A0>(¤•Y¦©çžz> Óot*ˆa‘GòihŸkfÈXQÁVg9a*é™Tjé”ædš=—bše<C5A1>ŒŽåáO|ã˜FâÙ©¥"°êê¦Âÿêi’þùX 1•Š"
|
||||
ƒšéé«ÉÄ*,k¬±$Û©‰µ¾Ùh£±é¤šÚ¢ì±2û¢p+ÊÏ kí¸i†(•¸
|
||||
ú¯l
|
||||
¬Æf+CÞ²1Ƚõ~.¼ãnZî„ÍÊçaº»â¸.ª¿úl°ÅÎKozØÀËÄËPlo¾Çò[i¢´I5'Á8†|°Œª¾îÅSaE!FDÜrÅ_ìm¸ýZK 3ºÇ´;¥ëÏ¿&ÌjÃ(sPÈH?àÁÑ,·üò24ÌlÍnØ\¤†èî8XžJrÉA/ïwÌ[ñÑ‘¶ÚLtà6ÓMC-u²6+;E„^‚üµÐ«Âÿ:¶Ã
|
||||
,½6.„Ç`ø9…³
KÜsk°…Uãü3y‘6ßÀ^„àCàÂÂç “ñùሿírã<72>Û]Û‹šTt{cþϵbÿ
±
° ýIè³ôÞ;!€„N:ãÛÖy‘[mÝš¦ï*L·°k ˆÙ¹ã9ð¾ =8†tÿûèj/s·ëŒ{ü<>£;»7“]Ãû
‹;tô¶ß®û<Œ€Æöü÷ÿ=án‹XÔžQ¾Ç™ÏJ(눩 ëšSÀÃ?úU~l˜—î—?ÿy<C3BF>Á3\Óh0@ªyÁ<16>£Ì³Ä3Ö€^–À1J@Cr@‚œ¶þ¡éMÐ~GøÄ>ÿ°÷Á"~¯p€ƒHH3ÇAÎ7›˜ØÕ(z@Pe%ÐÝ>þ<>ˆ ÚPb>£¼âÅà N,w4¢CxŽ$:‚s@ÆPøÄ.§™XÉÏP ÀÅà›Óݘñƒ &ð"yC1Æ/‚1ä ¡Æ5²ÀpIœƒ&•`FÎ;Ù#Ï‚<C38F> í1ÀðqŒ ìÕŠ\¤FËHÐIÛ+÷WI#‰ppÄh†˜Ï
3ðBZb¤ MìJ¼È"*E‡=V² ûèâfÈHÎÒ–<C392>Ãâ'¦ÉË^úqJt„0£ðÄ(á<>uúÇÝD) -°AHKå*ñÿýµÒ•Ùô"7eø,á
ã"O<>ÈAƒ{æôå%Ý8LNV<4E>ï¼ìÄô“”$žG›æ>û9V<01>¡JÚH,jñŒè9Û¨‡7ÞÂQÈè-¼Aªy:óg<>æÑô¹J’æïŸ(E),çÁT¦”
|
||||
E§Ç9ÑAT¦E¼$… G<>zúÊAi#Vù8àøìÜ>ùiT“* 'u*T9àRiN •WŪµÊ2uvõrƒ8ÚQ‰œ5†„býG üq<C3BC>®ll\¹‰@|¢SÍF9õšULÁ¯€¬`™Ù¥¤œµ¨*QIjT£>V²KE%ôg€<ÿ`i”Ì+gýÇÆ"˜4<CB9C>ƒpE‹>G- "P@j‰
|
||||
Òö(<28>m[a9<61>£ÖVey0€e»Û½Šð·Ÿ
,5@A^7pôŽ(Á@n«Êæ:
Ð}euYûC1ˆ,¸n!Û9C궻½ý#à`ò’·Å]R¬ˆÚqæV{<hl8x€M€ÎV·, ìuKPRW·»ý»¤g•Hà˜°è…J3’Qƒk÷Ãÿ,)\çaJ¼rr½Æ†ƒGUî‚X{"~[0Ml`j„Õ¸ÜXqr© S.>4›þ<E280BA>/J÷gãlâx% ë'pYä7ãôï<C3B4>gA†ÒùÖiI$ðxÌ%GI€ÿS-Ç•¿œ‡}d÷¦ñ<C2A6>›ÊÍ"èaÜ28²‘˜Ž¹·gNg<4E>Õläu2"Ö\ßÆN™µ#˜ ŸUjPlÙ
|
||||
èð<EFBFBD>b<>=í^x·A>³Ó\à˜ž¨²<C2A8>E0êö’Ì‘=ꦻÕÀMœƒ`B¡É€ë˜bµÌmÚ<1B><>æV·ÀF³ž<C2B3>´<EFBFBD>”,„ªlÿ`AR¡¼ënû›÷
|
||||
ç BÊÜco„o,ñš£ôÀŒmÌɺb °ÍŒy@9¥rí5½0˜ÃânÞ5¶/µ{n.C<>Œ/mª¥-é] VUc±¨p9aÏÝöæÃÿvÁzι¸À[Rgжàÿ'¡:‹Œ%†]<5D>‡G!Ý^.ošÏOµA¯ÝÇó˜»/ƒá$÷ç¬ÛACÑt«†\ñRãÙœâx¼Ü02<>®5d)éªoŸ{ý}Ó7çˆZȈØì‡CZÜ,6@M:ý£c³ ü25s<‚
|
||||
Àìææêf¹‘û–Æ|N=€Üm%Û:pU>éøj;`½1Z—ËYt7Ñ‘w¬[áï*<üj7®“ýŒäNã¿ÁÇ[_Þ‚\F¿Z)ÆïöÇÊ|[þ@ÍY¡ïQå»#1O»ú¥,—«WÓ~ÈÃÞ„mhƒ¾à
ËOæ¹Gàî<C3A0>$ñ‰‡žïàÇáÿ¾š¯ÓSì÷¬_š%Ö®t™‰™^P ¾`÷lýãòÅÒ}3kSÿoßRçú†PÃ7;™u–×-ör~I·€`ô|w,u}`Ew
×*Gv³vþçM8zÈ7eS6bn&(3lp<6C>t<13>«°
|
||||
Èõ€ÑÓCùGw«¡d/äoè€þ‚9ñÂ<C3B1>Ï—A)˜‚ûBu•òDÀqPØs08ƒ–6hKµ$…8‚<Xz„„t2*X3TÂ+e• g•-SG„º…ý‡ƒTt<>·0˜ó<Xx<58>rè…_˜"w*¨{)VµÐ}j¨…Zè„oˆ)Ã/shˆÊ‚ÚÇ.q‡¦ÿWA±r†{Ø5<07>…Sh‰dˆ<64>ƒø†x¨1b£ˆWÈx”v׉;ÈcQŠ=´Š?‡‰2¸ƒ˜4`C~3+ôñ¤ø*WÃh(«XKe$/:„yu'‹AS&„ø.œR‡6ò'îA"¼¸‡QÈo$Œ¬(ˆÔ"‹QbŒÇ<08>%á&-Ò‡åW<C3A5>:4F™ˆ<E284A2>Ô²pÌH"ÿB!ðÀ@ã:1WKw<>!Ø.úh&Ó"!'Êó(óh€—øŠ±¢{P¢Ž“v<08>ˆ(=“ôx<C3B4>´ô€ªã'¤R»«á1Z#<23>ó8‘Dc<44>ùˆ‘籑†±y‘¸Rw…HŒëèŽ2IJòŽ,Ù’”âÁ<ÐŽ3ù„4I›q“';ÍX0øaDY“*"”ì¡,$$ ©Ñø“½á”C™GÑSôä3½¡”Ky™²<>.PÙQT¤‘aÁ5–Yk<> q–—A—jY”¸z)–È—rù<72>¢—¯“•R•‚é–Z‘XÙ"©+¹±—`¹ Šù—·Ò3I™T¹$”Ù![iiÉ‘kÙ “I– žq\Vi“H¦™›Y™;#šm˜‡©”Óš£±š ‰›£i›;#”m¡<¼¹›ÌášÂY›ðhœÑGÇ œÈ™œ !ù
|
||||
ÿ , d d ÿ H° ÁƒþýC€<43>¡Ã…e"Jœè°!Ň hÜÈ<C39C>ˆ„* =~YA¡É“(7@T¸á¢8‹.c¾”I³fÇ‘$ÓéÜ™2eËš?aJt<4A>Ñ›Hqæ„À´çI¡gB
*UhыI+,
Â4@ –>ª¤*öªÙ£Y·Vàêµ™ƒ³UÉÆ-K×&Ú´Lײm¡.ܨpÿâݹ׃ÃÆf9÷o`ÁƒõÖâ«7ñãÆ~/[ü÷§3áÂy+Öœ™tÅ»ž?SGÓ¥awÔ…w5âЯÝÁÞmõMÕ¶YÐM|£\ÞÈ}«e]9ïðÑÆ“ÇîM{yó®·û*׸R:Zͳÿÿ=žyöâX¿»>íýlx’‚‚g?/•#ŠÎåì‡?:<3A>?{÷#&`Iæa7Üv÷e’_nûý×uï§Ðu
|
||||
¸@ú-ˆƒúçÞ‡Õ7߈|Øa*&xbƒ :è¡rÊG¢€µp¸¢<C2B8>,Bøbz0ÆXa‰åÑH=7¢h¤†Ûq†äŽ<2Ùdjd‰B∤ŠÝ´äl:ªçŒ2Hå<48>D¹¥I_Zùdš=‚… MF¦9æly"–Yª¹&›i*_<>S¶%ç z*©¤<C2A9>|r¹g¢¿¹e€
|
||||
9è˜y册"š©•Žþ9¢<39>‚ιěj¨ tœ¦ª*”’}z‰tRÿšL¥zj©šZ•p:ê¨MЊk®«»k˜¯Š+°Â:É<>BGFk,‚œŠøh²‰d;Ŷ$,¬—µ¢*I„˜6¸aH¦6j«(hË-·Ì6›QDÒ¦ˆ–ÔÞ‹î¹ûz–®Zƒ²ëî»4ïŽÑÚ«¯VãšÊðgï$ÒRûj·4
|
||||
GðæÄrðzö«ñ„\õú°R/œ¬o«-.¬P·ÈÔ¼Ë! s§à¿*b;éœØ)s*û*EÁ±’0ðÒïºá´Ç7ã¬%Ï=ç×®·"̪5¥dþx-Ñ+#MgÌd—ý4PG=N›É¢\‹Ä-÷t?a7× ûf‚acÿ€wÓf{r¶-63`¸ö‰™m‚<1C>‹‡ü3÷!u×ý<C397>ëÍw«<77>ûý7à<37>£]x
|
||||
¤oac/³ã”¿pˆë°Ã^ùçyç]ò×#rìy˼î»à¢G!<é<>L’ƒé"cœ:êO¼^Àó“@}ô<>×M»íqÜõ¯º+í4èÁo8ñ§ Ïtê²:?ýúì»n}íð{êUÒ@/ß½òßç|øÃ_<æûýt÷8õ<38>á€Dàóª—5¼mu,Sívw?ý
NxÃc€ÿNÑ‹¶%ï~ñ‚›HÂ2Ð<32>GÃœ[(Á¿QÐ‚Ä É÷¿Šìƒ«Yéöé‘P<E28098>`pßûÿRˆÂñ…\ƒ!ÿd8¾
ö‚0ÓجxµÎ‡?T ·FDÌuñˆÝ!Çà¥D&f°†t ]wØö0‹YÜ"¿˜#VPwÌ*ãÇ×DÒ!<21>adWÅæ<C385>ð<EFBFBD>ˆ,áë¬WG#6ÒŽb¬âõ8Ã>ú‘Ë¡ÍŒ!ÉQ2‘Š¤ÜÝ)+R‚Q<E2809A>£ãïbhF^Òs©œ"C8+çáC ¤€þáŒlQŽu´Û0ÈàŠRÓ.E é7dè’ÛÀ,<2C>‰L¶Ò‰œc3c ¬RÒ<52>¼L¤4yi8ã—vKg
˜à…P …ø 9Á!€
|
||||
òºT$z€ÿŒ]B‚x{´ä+iY°Áq³ `(g2ÿ¨KlŒây
¦+À lücGÆE8ŠYŒ¢ˆÃÀÇ6Èð<C388>}2`—È`e5øÏKb²›“”åîÚ(MNœó<C593>ÒÜôüÀθ1
<„M1jÔ“ˆÅZ*w!M“ºÀ|ð]@]‰ÈNÆT¦žKè(؉Hl`Ä~8\q›"“¨É ç0,<2C>2 •R“˜Å¨¤‰L0„±©SØE>°UV’N O¤ƒUwç.
|
||||
"LàéMéàUŸºO¬d5äPÑÈŽÚUn%¥X—šÒ@Ú4yíegÏÆDÀ>‘ <E28098>œ,oùÍ›`¨Õ{A6¾ÌÊÿþ£ 8€Mq{´&xhðªÅgùùT‘¦ ª¥å#ù»5nª²cÄÀ0ˆ:zÛ('+\1Œš20<32>
LèòV€p¾à˜DjS{KdôÀ
½ À8Ó(¾]¬t¹½ÐÚ`×Û-p:£—ÿÅ'ª›Ý“@ˆŒÌšxãC<C3A3>ŽšÄDå¯[äÕJÀ ÄÍÇψ_SÆRÂ/¨hE-ÚËm@Î"6±(gT«0 '( ^¥-Š“è…–ÖCôuªNô03—ÛÜ–wè!‚yX¹Qš2~¶ñ£'8k„ƒ´:¼ï‘øáÉ •GöXcÛä>™Èaš_Ù¢à|ìÿÈÄca—UWXsˆ™üdâ.4Lã$¼©bYË •°”gD‚Èé¹Ì“5ó)¯U´&Â
òÅ>mèCG<43>t‚\tvÜÖ¸IˆÒ‘>3”å¶Í¾½ í…W©ÒOCW¸q5 é'iH®úv®Øê”vC*ttju¥}˜U{ñ×¼BY¹Ž¤8`;Y¶Y³½³ª™eÙc5ƒ<35>]2iï‡Ú–¾6¶Ó,_½yË.ÐÞæì\µ«lÛV#V<>å³\›[×Ò>™âÊ-ðs|#ÉË<C389>¾÷<C2BE>VÜ_ ?¹Ö•²i›+q÷Ô—ó]MfˆbW
|
||||
¢¬#q‹#ÝïÿŠâÂQɇ…ÜM©–ÃM²|k\Íüí¸^nnÚL+GÎ*N*:%ê<>å¼[₸ÐDþs C(ãùãøÏR+sx«ÈçMgTLî”ã¼iÜYÔ’®žõ ?‰o_¿¹ÚÛ"ö¡ïÌjÐÒ“Ösf”§ë$íøöº‰¢Sö¹»èïÿ±”n(›êçø*U‹ÎNñ—y<E28094>ï}÷;uì>¤çÝðÓJ|Ý7O÷Î~ë9VÑI²r<C2B2>ÝìŸO¼×¾ñ)È]W‰jÖ•>pÒËí4<C3AD>ýƒÚ*]|E§×½ìóÕ{WÝ>÷¨þìYÅz«bÈ÷¼òûÄ||;ÿùo'Öð1S*£ñ¥ûÑßþ…qxï}¯œ†jáfâîð|sžm<C5BE>W¿êCó·|þH©ß½lØ–2í€>þãÇ}‹!ü'1÷—È}ãG%W[—í¡Ø/<2F>A/M<12>˜Lw<4C>¸<>
|
||||
¸ärpÒçÓ ‚!˜tD°|Ü€<C39C>ˆ‚ØúG‚g2›ƒóR48 !ù
|
||||
ÿ , d d ÿ 7ü8Á‚ƒ
\¨° 8‡¿ œ8Ž!È%Žk˜°£Ç<C2A3> »‰G²ŒIŠ'Kª\ɲ¥Æ”0[e|™¥Í›8cêlÉó¢Å—;-º3gHžiöüµôbQ—P‰9RêS¤B²ÎtºAàÕŸV§<1E>6òjײf¿†mº–›X·XÅ®]ÚŠiM¡v}šuË·¯_²hëV+sî\™^¹~K
|
||||
.àÇ‚7Jž|6-S†#>¬YÙ2ÈÆ gŽì9®i®—÷úåF„ukÈ<6B>)Ëzš-ÇÍ‹‹ºöÕº÷"°cÏ&HûaêÚI‡ã=~uµï*Ðý×MÚtñÒ¹…– =]õï„¿jÿ-\»yÆé¢7/>1uöÌ×ì^¥Ýy…øsŽ<73>]nö›’<çÝpð‘wŸÊ·›€Ÿ5XàfÆ)¥àóýÖÛIm=Háƒì<C692>&`} rxbÆøc 2˜Šål¸Üˆ'²è!}ù9˜À‚7ö·aŒ)â(`3ú¨¡<C2A8>2:çc€¹šˆ&yä“Ò¤<>J6©ÛŒ"™e\¸äXL†ˆ”[BÐL^~9d˜T2X¦™žåH%‘<öˆe”dš g•s§<>d~¨çžr:ù¢u|Vˆç¢?ž A*‹Š©&jˆþ h9˜>—i”ƒ>Ê]—j^JU<4A>Nêbj ŒvÚ<76>(xZP¨6†ÿféd…ƪ)£œ~Ú)«âZ+ª¦i«–Äúšj¯ðª§oÃ+e©¿:,®Èr™l«ËF{«´ðÐÇ[ŸÐf iÔb[mµŠªê®ëb.·ìž‹,¹æ¢iG«*kí¾üöë.¬ÓÆ;¯&lðÁ½6ØÚ®Ž6Ìp ‚@Dzÿ*¬í<C2AC>åÖÃÆwœ²
|
||||
'ëp3×bŽÉ(—œrÊÖÞyjÀ#,s%žÐüq«€>|òììó@]KÄ-»sÌ3{\s%çÌ*É%ó,õÔ=WmõÐû}§À\£<>CÒo¼4Ó繫9T§<54>ŒÚ';¬¼[û;0ØdÛ<öÍ›Æí@Ä(OÿmÌßl7±öÚXO\4Ürkì5ÝuÛÝøâŸnu~^¹àTKœx×ý*ž ã<>;n³È†s·àÞ?_Žùê™[@téY¿Ýùìú‚úÝLïý<C3AF>ºŸö:ëÀîúë°Ón|í¶‹n7êšÎ<Ú”ÿ¼ðį¯õÉß¾üÞÜ_ÏåäÒ‡?|ñØ{JûÍÙã^I÷ìŸý?˜<>BÁ–ƒ!À,áàsÈÔãC=‰‡ðÐÿf<C3BF>
kxOWü¾öCèã<C3A8>ØPŸöF×><3E>ImÈØþ<>
Ëm£<6D>.p8 (4‰a€!üH‘
|
||||
ÀØ!'Ø€m¤09`GÀ‡Xð!lJÃ]ÿ¯79`áà àþ'€ý-aààæÆ7 NPà~Ã0Õ$¾ñìmƒ+ìW/(@‡ž<>
”`Õ7ħqzÜE
|
||||
ˆBÀ¡0ˆß7r<37>¶)AKp!t¡NtqYøØ]X©Z4<5A>9LcúîÖÆA™Œ~r´†!&QGú @Š˜<À!þ±?º`êø£'¡‹fð{\J<>!HfJHh
|
||||
†ÜE]ð<>Ç‘fì&%+ù=zHmŽóS¢'Àº<02>ògœØméJ.k‹Êj
|
||||
…]ör’K#¦û”9
|
||||
ØQ…S»Ÿ1ÚV½-2 1u´–#9È¡<C388>gŒ!: ÿ̱ ófÚT÷F †¿ur Æ$ªˆNv6o‹ÆhF‰&â~8œ]îy†Jœ‚ƒ<E2809A><˜òþ9…õ‰³SÌ6îçŒmŒb`àeÿ!EcMeÒ4g*}1À™†Q£4%Û†‹û‰Ttn éIx
|
||||
Ò<>3<EFBFBD>„1›jE0”<30>8€1¬Ú²&ðƒŒï4ß¹À Hȉüìg”ºÔe}<7D> ¸*øZ½A9†…bçÜ!„q¬.8*RÙZ8Þ!°dpe›\ªQq•«¡Ð!n Xµ“±‡ëÄ(ÕÔ m±Ñ$Ÿé¶…±Òú•)¸ß+›ˆ~†Sœ‚Ú,8±2ÏÿÒU´™H*ASšv3&mpaË,N5à<35>8Ūr—ZÜŽV·»](24ÑQà÷ºm4V=u×þ97·ÐõÈH¾ÆZ¥¹Ñ°Ï͛ٚ[×Æ~`Û!/ã΋^í’¶Qns¯–ÞB«ÑK¾I£/=Á[ÜoËxz}–ˆ†êWÈÍ,»÷U¯„<C2AF>&-põè¿ÎðÓ8gàO8ÂÆšÒÅr¥aÏyøÄZC\Åø;¦›o¦°iU`¹8‰Ãõúpxwœ)˜¬xT,1ç²õ<C2B2>ë¸M¬•°ŠŒ»gMnÖ“‚Lå(éÉY«‘”aUÙ´ò—-6æ./YË¢2š¾œä)¯iøG—JpäØ«ödˆÎ0Ãs<C383>Ù„ I9rzÞ³Ž(µ!¤šÉpÆ
žãóg])ˆÏ²’ˆC†'%͘N’l¶C'šRhõ<>æå_õ'Ó<>ÆW®&]+LWªÔqþ
¬ÅdäÜ%Õ”&<15>Q
^'‡Éœ6Ò¦/-Þò¼Czás¸”]";çEÔ³¶“W|í'ÛüdØ6vÒt\
êA¿
|
||||
ØÆw°“3S{<š™I¯]„¢r›ûÝÍv6FˆÓmlC{×î&‘Z „¡c'{Ú¸þH¾áMðÛÖw®ò¶]]m~_»0 WøÀ–HGúØ‹fö~øƒo°ÆÞHI@ !ùd ÿ , d d ÿ ÿm¸¡ Áƒ*\Hp¡Ã‡#JôG±¢Å‹3jÜȱ£Ç<C2A3> CŠI²¤É“(Sª\ɲ¥Ë—0cÊœI³¦Í›8sêÜɳ§ÏŸ@ƒ
|
||||
J´¨Ñ£H“*]Ê´©Ó§P£J<C2A3>JµªÕ«X³jÝʵ«×¯`ÊK¶¬Ù³hÓª]˶۷pãÊ<C3A3>+•¤~àsá‚N9¼wa‹ØN|'•é8I@#¼{<7B>Inx3Ö?…S€3„ÍÅåL…+.h¼Y1Ek›äû‡o1ÆLtþÉnЯÜìx<C3AC>âåÌ$3^v†ð<E280A0>î·Ë?<18>Q€ÄéŸi¬-À;É<>éÐ<C3A9>øAð<>v<ÙÓwRÿÀÖÛ&ê.tW„ôt¹Lð׉}×>á…ù|o|ÝõÓÈ?ùȇ“1á°“‚y<E2809A>QZ#†<Æ_äÖË?Ôæ\h±èƒÀ‘aè€ìxr»¹ Ø‚çÍ×Za
üóXm X<>1µ @G7™yHÑ{®A&£€.àMü¼¸Ýzÿà8b<38>GVmýÌX9ø¦Ñ„º}Ç$3Öa,ð5f„ú0Ð;lX„¿}Óäšœ@ØFÖ´‡Izæ$Mº b*ªÙOØÈ&ÛqQJ9$E*ªÏ)<29>VD'Ã6 ƒ45’$ãH•ñôB?»TZQ#“üµjltPeÉQ, h‚AÞ4àŸE±·Ó®ªö”É?üS<³”HT&–é©„a>Œj,LcàOå¤<C3A5>‚²t]î¸ä–kî¹è¦«îºì¶ëî»ðÆ+ï¼ôÖkï½øæ«ï¾üöëï¿æ !ù
|
||||
ÿ , 1 ? ÿ ÿ ܯÑÀþþñãÇ Ñ¯„vHa£F ´ƒX±¢?vÊ 4FG@><3E>ñ&1¨È@ c
8äH±L|â‹ÅMcšË4J1iR<„ø<:<3A>hŠn9=XNæ„þ²úË“BÎS?µnĪ•ëÐ^G0èv`,±ø]ý—Ô'Uvaó&춲£È z7=ÜkÌè?µ<>ÚþkD'ž1NÕÆ"›µ<E280BA>Æxì2Œ-§ÇbËatkX-ƒÁ‡·õË2ÇxWlDa²çÙ n[RnÓ öòJ·&ærý^<{Rìœ¬Ê¦Ø …HÄ<48>Rüv;:»ß<C2BB>äZ¾ý/SCÏ<43>vY'ÿ¯:h‚$;ßÞu=sL«@+rßQ€söíc—@G¹à™5L u‘HùU´@<ÁUÄ<55>A ´P» <08>†vèᇠ†(âˆ$RôX‰(røWE !ù
|
||||
ÿ , 1 B ÿ ÿ ¸i Áx
â-hçÏ ÃþÊ”+Ób&…>ldl`ƒ]
؉¬8pAÈnwñk0‘"IƒË]\‘v-5DËXKcZŽs¸!žQ’øvm€ØÍåÃM`ü— RÇ—O¥Êl„ æÕ¬™dö‹h¬Ì¦
#ªeŠ ,Ù45ªMÓåQ°¹ÖdGÔ%Ã_™ºí6)Ö<>l˜»0fN˜<4E>2ùËÄn즋( ¶£9·¢cˆü ÔÙ™íb´PINn$<24>2ÛÁ¹<>Û’6Ö¤û*®»;s–2žj4ÁaÍ‘‚{(™ôéá‘c†lD§Ðr¬§ç¦ŠSç?ÜÎ<C39C>ÎSÅÑhõé~±köžñ¡ÙïìM÷<4D>‡ò%àžã÷ÕÏ~íÙægáÇ߀>¥ÖcˆÝW<>ò7`}át\ƒ&¸ 7b·‚vxVcÒåሠú÷O@ ;
|
After Width: | Height: | Size: 20 KiB |
@ -13,7 +13,6 @@ namespace Symfony\Component\Validator\Tests\Constraints;
|
||||
|
||||
use Symfony\Component\Validator\Constraints\Image;
|
||||
use Symfony\Component\Validator\Constraints\ImageValidator;
|
||||
use Symfony\Component\Validator\Validation;
|
||||
|
||||
/**
|
||||
* @requires extension fileinfo
|
||||
@ -32,6 +31,7 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
|
||||
protected $imageLandscape;
|
||||
protected $imagePortrait;
|
||||
protected $image4By3;
|
||||
protected $imageCorrupted;
|
||||
|
||||
protected function createValidator()
|
||||
{
|
||||
@ -46,6 +46,7 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
|
||||
$this->imageLandscape = __DIR__.'/Fixtures/test_landscape.gif';
|
||||
$this->imagePortrait = __DIR__.'/Fixtures/test_portrait.gif';
|
||||
$this->image4By3 = __DIR__.'/Fixtures/test_4by3.gif';
|
||||
$this->imageCorrupted = __DIR__.'/Fixtures/test_corrupted.gif';
|
||||
}
|
||||
|
||||
public function testNullIsValid()
|
||||
@ -324,4 +325,26 @@ class ImageValidatorTest extends AbstractConstraintValidatorTest
|
||||
->setCode(Image::PORTRAIT_NOT_ALLOWED_ERROR)
|
||||
->assertRaised();
|
||||
}
|
||||
|
||||
public function testCorrupted()
|
||||
{
|
||||
if (!function_exists('imagecreatefromstring')) {
|
||||
$this->markTestSkipped('This test require GD extension');
|
||||
}
|
||||
|
||||
$constraint = new Image(array(
|
||||
'detectCorrupted' => true,
|
||||
'corruptedMessage' => 'myMessage',
|
||||
));
|
||||
|
||||
$this->validator->validate($this->image, $constraint);
|
||||
|
||||
$this->assertNoViolation();
|
||||
|
||||
$this->validator->validate($this->imageCorrupted, $constraint);
|
||||
|
||||
$this->buildViolation('myMessage')
|
||||
->setCode(Image::CORRUPTED_IMAGE_ERROR)
|
||||
->assertRaised();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user