ÿØÿà JFIF    ÿÛ „ !.%+&8&+/1555$;@;4?.451 4,$,44444444444414444444444444444444444444444444444444ÿÀ  á á" ÿÄ     ÿÄ ?    !1AQaq"2‘¡±ÁðBRbrÑá#‚’¢²3S CñÿÄ   ÿÄ !    !1QAa‘2ÿÚ   ? 5˜Z¯V¦cø)›t/? z¨±>Õ5€¶‹Á¤·¼z¼Ü¬+ñ®v¤¨_ˆR­BFn©—˜ý®ç̝P8gýt·ÉSTŦˆìät?þé¼íìN/Þa)ì–í6ô… Ï¿øÃj´¿KÇü]ÿ ªô¹-eKànëÕHTx}ýSÜ›ÿ ”7Ø×&µ<¦  ¥ÑO¶[Ù¯ä¨ÞÃÿ PZ-¬;#õ|•oaÿ ©CìÞz3˜öː/¤­ñTûIØ}š^ mÓ%ªxˆ¥ÉŸu=Z+ISe¿45™¼u;ú&WØ÷€æßQ™®{|íx*TC“#ZŠìZ§²‹ 6pv…³¿¡äª*áZÐ%ÒOáˆo"x«OHk w±æ+¬V(kMúŸ5Vö«$ ÁrÏbàb57/luR ¸ÑÛj Òµì`Мq­û žICÀÊ•©4€Âcà¨Ï€O´<èÐ:›ù(Ë^L8þ‘ÍÌ#¸Ð_Ì©ÙK(Öz 4¬û+¸;ü’V’84‘¬ÃŽ:[â‡ÔÌáõp¢~§ªlæ£ö{®G>J¼"°‡7¯ÆÉèßû ‹É‹§ÁòÃýâßî ^ƾÙõ‹×óH#«LP½ïX=xÑÍ$|W?•~• îëÔ©ª‹ {ÝT…Kÿ ”hûâá)J*ö˜–ÔU;iÇ€/ ÆþjóZ\ýwØ=Ìm ºèËL9 ýèÆð/¨’¥öo=nË.%Îì ŽÕ¯È|{Oj²ƒE6e/ßdÄõ²Ìâ1O®ò×TsəԸhOMýíMˆ¿¼H˜l²,7Â¥#MF/Úf°Ö½± ¸–dr‹NýÊ íjqx{œÉ ä-È ¦ øÄër¨q°ð †nцýÑÄÆ’mä…n<0È™;ÁÝá¯ÁZƒ7FÀmì­ É&9ˆîéi¶ùN§Y• ÃZãAâ?•‡©‰ , ó¾IŸŠc1 4â&y­&pŠ­6;M À 0¹qç»p.á …ŸÅáK@%6·y6ƒ‰3?”úºŽ‰éX5ªPT §µ!=Mž«Ú½‹ÅgÂSâÉaþÓoö–¯ÁÔìR>5éÿ üs¶ÆUcÌ kÇR ]ÿ ù¬¼«VŽ;Â|‡~¢¦”ÏŰæ {L™Õ°Óv¹ò¸írޡעCÃ!íVÕ {¶»sŒNPg/ "uÕbkm²“$ďå¿é¹§°½æz¯6 †s¿!s–wÚÝ“™Œ °.ûj>·+™Òa…©Œ&rÝÎtÛë긪Ît’LAVp%c Úý[ÄzJ¾ÇàXXç@˜ó<êL]·T˜¾¥1Ó©V‡g´æ½¦Ý@¹óø!_@´ÞâSÁ —S3™•& ]@JHÚý©ZŽ €×æÔr»Áf!‡yÞ4Mv*èÓã_{‘åóUuљØ«Oïé*®EvÑ Œ÷‡U \"㪒ÍK+À 4“M¡ï:0¥5í!'<@î´”>Ç»&Z–ïCCV˜Ì5Šo&îhè.žû |ÓK©h$s6KìŒëã)¹hI¦GïOåóI;ììü#É$Š0…Ææ¥TØ.5­¾gn´ “ÂÖ\:hœ89G)J@„}œ:’Ò{/Š"¦_Æ×7Æ3VÇŠÊa]ÚŒÙ€Ä–=®uÁßâACZƒ§§£ Qnâ:«,×{tyø¬iÛcœÜÄ€H½ÄÍCk´÷šß .W'b¤Íåh]÷€=,Žv×cÚEÚHXJX¶îo¨FÒtèöŸ>ªª6[J®Fµ£sGÁeqõfe\íjÒÐïÄÐGˆe1Ø‹.Ø”‘Ëuø Y­ˆÜ ŽG|zùªüMpDnQWÄ”%JŠ™)â*p@Örš«ÕT2Ð%ˆG#ª„ ·¤!°ŸOTÂT¸aÚ%4&h™LµšØüÐ.F¿²ÐÞ_Ç‚¾ÅÃaÜ÷09Æ q€öy˜v‡85õN÷]¬äѼóS{°_MެúÔ#°Ç¸0åÞè2ëôPcvÆw9®ií1Ä8F™˜à‰´+‰Ik1òÝ7“Ñ×ÒsÝ\x‚h`ÞÑ`ó"|µEcý£n˜h`}GÞ !±ù²Ápü²ß6 0ïi󜵩SÈÇ7˜-ÕURO˜¦´f$ªž-Í6(œ}<„ éc øs]ŽŽ„*—¾ ìdŽ„)méª\¿êÎIg¾ØÞ~I#C/¼¼´EÁÈŽi8“©õådô·>euä ƒ'Ê×लR1ÉJE1ÐAát`t;ÇР%Ý<‡¥„ÍÆ`×Oyó)õiI€ñQaŸ4Ûù\áàaÃÔ¹HÃu¹*k€¦<„e S‡&õÏ B!ŽhüÞ`yj}mªf×\¿ Ç~æ­9‡û\՞Ǖg²1Žû5V7 !àöšm° c`ܬøÇìµÒ'P"?…´Ö,"§^•õލsÔ)6˜sæéÍR¼ ò|Sl”‹7 nPW Gòú÷½§O¯‡„l¡kSÞŒr½PÊ@æ¢pŽ-mÿ #Ÿ˜Àº¶Áä¦;ïÔæ$1££`“Õ>„—·ž)ßð³ñ#Ï Ô$¶œ‰ÊE‹À;÷º ¯«P:Ñ”8–IÊtpÞ3ª“>ê“þës4ò2OÏÕ­±zô†Õ§‰.÷ä¸;¿˜“'œ›žª}«Œ{ª±Ì 9ÔóÞÕ‡0 $íWV3Üì¬ —@kÝ4@¿r¼±½¬™›?øØæ´'Áé®CË3-g$˜ö‡×auÚi´Žp/êÛ æF›Ú2v‹ã¿¿,nB1̨ƃqÞa5͝@&Æû“él÷ \C²½UÍc ¯k×¢U ÖéQå™—-r wô ÞÏ<Ò=&=ÿ Ôê Òêˈt,i—;LîÜ á¸*ÚÃ1$êL•LÍ <É)ýÐà’ ;F™{ƒ™˜€&'}‚ãÄK`¡ÞT@I;®žZóè‚s’7®°›+§O­Åq©é»²9<Ô J ¼9O’HL»Ùïì¸rk¼Ž_ý‘TŸu[²ßÚŒ·ü÷B%¯E ŸÔX5êO´ Ç•€’I0 ÉJX` ñ¹õ%;µŸD‘«´€àwÒ™U ûئžÖö\×®×´8 ½‡ºÐÆÓ§?Àkmœ=;d5*@-ì0F Rªýš[Ü6âö̃ڸr*KA9· u*µæ£?U¸Âêí†8@¦X4 e-ò„0s{ HâUpU?¼mñRa°®a%Ð'tÉ×’\¾ÊÉ]t›h>·(Ë@R¼¡Ãt h}’O÷au<+nT…Ö…MӐ??Óe95 q>í/;&JSû °¯ÊéÞ øƒ*Ã2½Ài&:nôUl=¾¿5eˆ3”ñc|Ú2V”>„»&eE;«ÚäC p¢Û úy 9š[ŒÌx¼擼A&DåÒ¯ˆ¤ÀÌ;"˜ ÏQä¸åhÊ}Ûq«Û0WžÒ|»€ø®öCm5•\ÇÀ§Pe3£]0ÃàLDÉ‰1øªxjgwT‚÷¿LΨK‹›ùs—xˆÜ±µ kæ¸f‰‰ÜGk/LÛØ6d9ò¶ùA{ƒA3š/¬D¬khÓk‰`˜"㯒r¿±Óã jx‡°e}<Ñø\3y:'À•/h½Í€Ç4~g ?Û(¼]v‘ªlKÎâ~?O‚W%{Ì:“'©úNq¾›úo(X’¥¯ˆ nFê{Ç€ü?º'ë ø‹ì Þ09ŒÌç9Æ —ËC`j@ÓÄ(+a‹un¸#ÂꟋ{K`‘ÑÍÍ'à´»/Û,KW;Þ4²þð ï Nm|~fGÏ(…³Ã)«1ö­Õ ¥‡¨©ƒÃ™ü-s=à=U66Ï«Ýc蓦W¹íž®›nÔ%êÇìŒ<#Ü×84ån®Ð ÒåOC` ñânÑs‡¢ç 1õ%Îhì½Ã½® e:ݼUZo™`  ÅZŸŒÊ«ê1ÏÄo$q¹Þ€©ˆhÐÉä¯ñ[!…Ú˜àJ:x2$Íß&PåT£6ç— ‡Í*4Ýšçjÿ ‰É nófÐ ó(L5C•åÆ\rMÒ@ò }y-W}™üýVù—ú¢=Ù”c®‘< M ž ´Phr ¦©TD ‘ù.$´÷O‡‘V2Æò.=IUŒ=ž‡â¬i™aþÓåÙ?òUø'ØÖ•.~* šTŒ!•-×áºTâ®ä#õü'´ eýlYÅÓeÕKÂrT"CÚ@u!Óxƒ{š3€}1¿(r}%«nËamjÑ%ÑNEò v ˜à  σöK³,*º.àzù¨™Ó ÚçâU¦*¿ 9{%Ö¹ njûdaXöb) kÛÆ±ûÓ\°M7ˆÂ=û›ç¿Ã‚­V»Cg–8ÙêE- j)k$º`Ã-ùEýeBÆÇ]c¡°ñty&Òd0nõ'¡W+ƒ*|–øµFa\GQªEAÔp5\Ǽ·¼Ç8·õ -â§Ú[ ‡ uZeÖ 3}×d'+¹:ð+K†Û®s!Ï$úe€<Û”x)1»a­¡LC]¸µík…ÚàA»AYº{†ªS[¦5HÒ7ù --,ísòDØ€èk ÞÀîÜ ò@â( ËNˆë›4ô½•/¦o‡€Û7 ê•ÆêòðÜy'Án½µ á˜ݦ ndeo…[ì¶Ê,¥R³Ä=À±—–ß;£™´ñSâ*g§”ïaið‘Jå~™ÓÞ ß³Õ¢»8x埒²52>AÊb&-÷\7´éÄù€T˜,w;3{ï˜k…à¹ÄqÀ«œ{€\ ˆ¾[´¨јr &Úé„Ívˆ±8†¿]|¬ņ4I×pÞS1ÈÖz‰#Ìv‡G!YNògñ:màTz¢Ý1ô©^O=~ë|5Bã™ç•¼µõ•bÆ@úÕS¬ÈŒ#¬zünrŸ û” Z²•èðV"ÁHÚý©wÝ €7¼Ìu1hÑa3Éä û f$o¿É ™Ú›ÝçnpÒ3äÌ3†Í§,Äï]$‰/pê †«À¼¸e9­Æê_C]žƒ·ý·frÁN«, E=›Çq -‰öŒ:aÏ¿±í&£Í:-} 84‘ÿ eƒQÑeëSsuiA ³g㟥ú£?ÿ ʼn*”“÷aühe:ÊWa@ÒÞk±eØ] F Ô—r.åä˜ @ö¥ªZoÐýYL·¥S²G/‡ñ <~*ZÆ´è>JlòàÛÆ½ÿ 窘ìGN¢:I®KšJp/`íIÁÀõ#Ä-€ö­šµŒoF4|ÆQØÆ@Ì|£Ô…¢À{9˜è½Üó›€ôYÒÎYsið;ís¤€à²ˆ‚4qÉVŒI$ ‰"° æµ8cXGjœˏ¡Aâý•ËÜ¢ûï e·çLx']á"oÅÎê3¯Ç—¹”ó0nå‚âg{Œñ> S´˜îè°g238‚ãköÝfÚd´6Ò€;ò÷±¢™¼›º ¢Æ'¥Ðx'e¬ç ]bÈÆV¢ó‹kýBO ðÊâ$Ÿ!×T 3Mýמ žìٍàÌü‘8÷€àæØ8æ©6‰©L´«…oãpð„~Çk‰!ñ;‹”ÛžÍ àž±z Ÿôû øŸÝužÏ;ÿ #|u6™Þ¬ÚˆÐõA4¶â|ôl|Ê2ŽÇ¤ÝÅÇY.<#Aí.k§hóF‚”Y; M½Ö4hŸ4&›­¿tès´%FìL¥£Ãk‰ÇT¤haÁ¤ÚxfÉ`ÑìË›>i 3t‚:,–+^÷´–{Û–Nxi"x‘Ûg î¨>¥Õ܁ùZH,2Û“:8xÊ¢Çí9.É-Ìâã-=çjwµS˜dütžçwýGòú®®ûº_ˆýx$–¡ãøO EÚÛÏ÷R„×w+3£Á£öUMyR²¹âŒ°š›¸Ñãò9§Ó_Dl+Ùßc›úšGÅÌc†Ž!Ko=¶.‘Îÿ c²(2®V mª.ÿ ¹B›¹å ù„öŸSV>™ü¯$y:G¢Z×àøúdî¹û­·ýÇ´:•c LÍõi_‹ö+ÎæGÊè>OŠ•äž´§Þ{X}¨1ÚTc›»Qþ•êô°t¿OP?eæ~É{5]•ÙR£r5†nZ\ã@ &îJõ ¾àC°þV>fé¥/ü5ñÊIº_é5 ;e­h<@ Ä&æÃëE%;X,ÒãÆÞ`Oò¦kŸm#˜!ÀyÄ¢| óLšò¥Ä` ¶R=|ÈCâh5ò3DˆïF†ðÒ#ÅìÛœ?¸yhBãœí ZxßÎÄhºRK„`Þödvײ™ÀÈÑÒgŒuY w³%†ƒÓzõ ÖÏp‚dH®¦A´ù§»ÓÇMæ~)ˆð‡û:ù&Ä •vGD´À n ݇¼Ö8Fö óáà£~Ë¥x`oK|Ä?fxiØü%pìR>éò+Û±éÎ>núlFŤ'tq8LZÏvÃ?„¡ß±È⽆¯³íü@x|PöUäèØã¡ð‚ŒAìÏ"vÍwóŸÍ{ ý0.z È•Ö{,N¡£¡ŸKÕÙž>Ýœþ ÍÀ°<×EA!Å‚D™IúOÍ¡>ôG}Â` ÍßkÜL™Ž Þð™ {IøF²¹òQ3&!ÃÂÞz.d&Ï-sH¸,Ôõ˜ŽP€ 77ˆÝ¼ÊëÜw =cÕ Ú,ØÐ5ÎYÐ)ì´öœgŒ[¤ßv㙑8心>h]§µháYš£²ºÑ.{Ï7Sð•?´~×SÃKýJÛ˜ ™Íäiúu<µX¶1õ^kâçIÑ£sZ4h>j*ÔšD:4­¿_ ÷¸ Õxæÿ ¸?Mù _•­ÊÐ ä ÷ý ÑwL œ­ïnTkÛUÍN©ë:¦fV ¶ÜÔÜMªÅâA½–¿R×TXš-%iTÊT•‡Ù‚JôϐZxWÑè‰f‰òG º ×Õû2aZ7OU3[“×AT–ÞŒ…-‘¤”Ì ì&(ˆ¿­•ƒkï’:ðY¦W‘ Å)“†‘˜³Åtcø˜ñTÂwÚÇ4|üLÇªí–v- qˆèU qPE.†â‘˜µ Æ,ÐÅs]8¾„oúÑ i>ÜxxÈó)ƒ ´æÁâØ$À‰vžŸf$Ž |ãw;ÀÁIJ»b` {¦Ó¤Ú$©YÀ‘n@Óïž«9J¼êG m¤ ܯ¹ÌW4€ÐÒÅÛ‡#褕Ÿn-?í|с¥÷Ú¹¬'´ÞÜ9ÓK `hê£SÄSà?7—Wí_´…óB›»:=Ãïq`<8ñÓŒÑlú2d¬ê³£hÖ[l|$vÝro~'R®‰§°ñmY ͧäP |PUª¹·:3Œ[Û{Xÿ ºâ@‚W–Äé u‚ ¯´*=íή.pûÒdt @G‰¬ s¸ ëÉücr ÞæÑ¨Ê@>¤¢Ö±. Þ'¯°ÌME[YéïĵÂCå½ Ué©Áû'Ê9%eÔðNU”ë‘ÌsD3/®+UI˜9h.WC”빓$#:pz:YÓ ¿xž* ³$Í +$kñAŠ‹†¢ Uê>¸)_š¬÷©ßAÂÔb9ÇU ¯¾á•9¯ÏÏ÷O÷¼¼Fähal1‰3Ì[Ïr•´UCksNÐ] R‘¸¥H+§Šé†c©vÖÞ0iÓ76s†î!§=ß ¼~Ô'°Ãmäoäš³ªøi1úÉ)³yV8 CLÄØÁ‘WYïi€H6ÖÑiámø^ÈY´°Ñ7¥Û*—Ñ©L«Qƒï—Ùrÿ ›£Ð*š¸ˆL©ˆ$ˆ ÷¾D§9È®«qbqC)–ˆïv´çñsÑVT­Ø, <àïºÀO«Jý·õ àfPìð .wFšir´þ’2_Y *Æ€x\« ì€9š@ Ž|F⇥ˆkZ@hÖÄ0t¿-<“‹qµ¾*ZL¤Ú)&BJpÓF5=$„at*Zš$’ÑtdûÝRI1 2މ$€$I$#‰SÞ’Hë¬ï;Á$¡t$’`<(ñÇt)$‡Ð.Êf¢X’Kt=Éé$‚ˆªè¢oÝëòI%Rgcª÷ŠyI%¡‰ÿ !ñ)´õ $¤ Ô’IIGÿÙa 3gJ@srddlZddlmZmZddlZddlmZddlZGdddejZ GdddejZ dd Z e d krne dS) N) run_unittest run_doctest)cookiesc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS) CookieTestsc Csddddddddd d id d dd d diddddddidddddddddddddg}|D]r}t}||d|t||d ||jdd!|d"t|d#D]\}}|||j |qqfdS)$Nzchips=ahoy; vienna=fingerZahoyZfinger)ZchipsZviennaz,z0Set-Cookie: chips=ahoy Set-Cookie: vienna=finger)datadictreproutputz)keebler="E=mc2; L=\"Loves\"; fudge=\012;"ZkeeblerzE=mc2; L="Loves"; fudge= ;z5z5Set-Cookie: keebler="E=mc2; L=\"Loves\"; fudge=\012;"z keebler=E=mc2zE=mc2zzSet-Cookie: keebler=E=mc2zkey:term=value:termzkey:termz value:termz%zSet-Cookie: key:term=value:termza=b; c=[; d=r; f=hb[rh)acdfz' )zSet-Cookie: a=bzSet-Cookie: c=[zSet-Cookie: d=rzSet-Cookie: f=hrr)sepr r) joinr SimpleCookieload assertEqualrr sorteditemsvalue)selfcasesZcaseCkvr 5/opt/python39/lib/python3.9/test/test_http_cookies.py test_basic sB (zCookieTests.test_basiccCst}|d||djd||ddd||ddd||dgd||d ||dgd dS) Nz/Customer="WILE_E_COYOTE"; Version=1; Path=/acmeCustomer WILE_E_COYOTEversion1path/acme0Set-Cookie: Customer="WILE_E_COYOTE"; Path=/acme rrrrrr js_outputrrr r r! test_load=s zCookieTests.test_loadcCs(t}d|d<||dgddS)Nzsome,funky;stuffvalz(Set-Cookie: val="some\054funky\073stuff"rrrr r.r r r!test_extended_encodeVs z CookieTests.test_extended_encodecCstd}d|dd<||dt}|d||dddt}|d||ddd td}d |dd <||d dS) NCustomer="WILE_E_COYOTE"rr#expiresZGMTz3Customer="W"; expires=Wed, 01 Jan 2010 00:00:00 GMTzWed, 01 Jan 2010 00:00:00 GMTz1Customer="W"; expires=Wed, 01 Jan 98 00:00:00 GMTzWed, 01 Jan 98 00:00:00 GMT max-agez0Set-Cookie: Customer="WILE_E_COYOTE"; Max-Age=10)rr assertTruer endswithrrr.r r r!test_special_attrs^s$       zCookieTests.test_special_attrscCs6td}d|dd<d|dd<||ddS)Nr3Tr#securehttponlyz6Set-Cookie: Customer="WILE_E_COYOTE"; HttpOnly; Securer1r.r r r!test_set_secure_httponly_attrsus     z*CookieTests.test_set_secure_httponly_attrsc Csgd}|D]}|j|ddtd}||dd<||d|t}|d|||dd|Wdq 1s0Yq dS)N)ZStrictZLaxstrictZlax)r0r3r#Zsamesitez1Set-Cookie: Customer="WILE_E_COYOTE"; SameSite=%sz%Customer="WILL_E_COYOTE"; SameSite=%s)subTestrrrr r)rZsamesite_valuesr0rr r r!test_samesite_attrs|s   zCookieTests.test_samesite_attrscCs:t}|d||dd||dddS)Nzeggs=scrambled; Path=/baconeggsr;r:)rrr assertFalser.r r r!)test_secure_httponly_false_if_not_presents z5CookieTests.test_secure_httponly_false_if_not_presentcCs:t}|d||dd||dddS)Nz-eggs=scrambled; httponly; secure; Path=/baconr@r;r:)rrrr7r.r r r!$test_secure_httponly_true_if_presents z0CookieTests.test_secure_httponly_true_if_presentcCsbt}|d||dd||dd||ddd||ddddS)Nz5eggs=scrambled; httponly=foo; secure=bar; Path=/baconr@r;r:foobar)rrrr7rr.r r r!'test_secure_httponly_true_if_have_values  z3CookieTests.test_secure_httponly_true_if_have_valuecCs&t}|d||ddS)Nz=eggs = scrambled ; secure ; path = bar ; foo=foo zASet-Cookie: eggs=scrambled; Path=bar; Secure Set-Cookie: foo=foo)rrrrr r.r r r!test_extra_spacess   zCookieTests.test_extra_spacescCst}|d||djd||ddd||ddd||dgd||d ||dgd dS) Nz3Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"r#r$r%r&r'r(r)r*r+r,r.r r r!test_quoted_metas zCookieTests.test_quoted_metacCs@t}dD].}|||t|i||dq dS)N) z]foo=xz[foo=xz blah]foo=xz blah[foo=xzSet-Cookie: foo=barzSet-Cookie: fooz foo=bar; bazz baz; foo=barzsecure;foo=barzVersion=1;foo=bar)rrrrrr )rrsr r r!test_invalid_cookiess  z CookieTests.test_invalid_cookiesc Csd}d|}t}|||||ttjdD]T}|j|d4t tj ||d}|||Wdq<1s0Yqloadsdumps)rrawdataZexpected_outputrrNZC1r r r! test_pickles zCookieTests.test_picklecCsFd}t}|tj||Wdn1s80YdS)Nz a=b; c,d=e)rr assertRaises CookieErrorr)rrUrr r r!test_illegal_charsszCookieTests.test_illegal_charscCsHt}d|d<|t|ddd|dd<|t|dddS)N©rDzSet-Cookie: foo="\251"u comment ©commentz.Set-Cookie: foo="\251"; Comment="comment \251")rrrstr)rrr r r!test_comment_quotings  z CookieTests.test_comment_quotingN)__name__ __module__ __qualname__r"r/r2r9r<r?rBrCrFrGrHrKrVrYr]r r r r!r s1    rc@sheZdZdZddZddZddZdd Zd d Zd d Z ddZ ddZ ddZ ddZ ddZdS) MorselTestszTests for the Morsel object.cCsht}||j||j||j||tjj| D]\}}||d|qLdSNrI) rMorselZ assertIsNonekeyr coded_valuerkeys _reservedr)rmorselrdr0r r r! test_defaultss   zMorselTests.test_defaultscCszt}|jD] }|||d|||<q|jD]}|||d|q6dD]}|tj|j |d|qXdS)N%s_valuezthe holy hand grenade) rrcrgr7Z isReservedKeyrsplitrWrX __setitem__)rMir r r!test_reserved_keyss    zMorselTests.test_reserved_keysc Cst}|jD]"}|tj|j|d|d|qdD]}d|d<||d|d|||j|||j d|||j d||| d|d|fd|d|f}|| |q:d D]"}|tj|j|d|d|qdS) Nrjz(thou cast _the- !holy! ^hand| +*grenade~z/foor'z%s_valz %s_coded_valzSet-Cookie: %s=%s; Path=/fooz )zfoo barzfoo@bar) rrcrgrWrXsetrkrrdrrer r-)rrmrnZexpected_js_outputr r r! test_setters.   zMorselTests.test_settercCst}|td|_Wdn1s.0Y|td|_Wdn1s^0Y|td|_Wdn1s0YdSrb)rrcrWAttributeErrorrdrrerrhr r r!test_set_properties$s $ $ zMorselTests.test_set_propertiesc Csd}ddddd}t}|||j|t}|||j||||k|||kd}|D]f}||Ht}|||j||||k|||kWdqn1s0Yqnt}|||j|d|d <|||k|||k|td k|td k|td k|td ktt}|t|k|t|kt}|j|||||t |k||t |kdS) N)rdr"value"/rD example.com)r'r[domainr%))rdrmismatch)rdrzru)rzrrurEr[rLrI) rrcupdaterpr7rAr>listrr) rZ base_caseattribsmorsel_amorsel_brZcase_brrhr r r!test_eq-sP       .    zMorselTests.test_eqcCst}|ddd|ddd|}||tj||||||t|}||tj||||||dS)NrDrEbazrxr%r[)rrcrpr{copyassertIsInstanceZ assertIsNotr)rr~rr r r! test_copyas    zMorselTests.test_copycCst}d|d<||ddd|d<||ddd|d<||dd|tjd |d <Wdn1sz0Y|d |dS) Nrr4rxVersionr%rwDOMAINryrinvalid)rrcrrWrX assertNotInrsr r r! test_setitemrs&zMorselTests.test_setitemcCst}|ddd||ddd||dd||ddd||d d||d dd||d d|tj|d dWdn1s0Y|d |dS) Nrwrx)ryr%r4rrIrrLr%rryr)rrcr{r setdefaultrWrXrrsr r r!test_setdefaults*zMorselTests.test_setdefaultcCsRdddd}t}||||dd||dd||ddt}|t|||dd||dd||ddt}|dd |D||dd||dd||dd|tj|d d iWdn1s0Y|d ||t |j|t |jd dS) NrLrxrw)r4rrr4r%rycss|]\}}||fVqdSNr ).0rrr r r! z*MorselTests.test_update..rrr) rrcr{rr|rrWrXr TypeError)rr}rhr r r! test_updates*  . zMorselTests.test_updatec Cst}|ddd|dddttjdD]p}|j|dPtt ||}| |tj| ||| t |t |Wdq41s0Yq4dS)NrDrErrxrrLrM) rrcrpr{rPrQrRr>rSrTrrr\)rr~rNrr r r!rVs zMorselTests.test_picklec Cst}|t|d|t|d|ddd|t|d|t|d|dd d d d d d |t|d|t|dd|d<d |d<|t|d|t|dt}|dddd |d<|t|d|t|ddS)NzzSet-Cookie: None=Nonerdr0Z coded_valzzSet-Cookie: key=coded_valrvrDrwrrL)r'r[ryr6r:r%zVzXSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; Max-Age=0; Path=/; Version=1Tr:r;zhzjSet-Cookie: key=coded_val; Comment=foo; Domain=example.com; HttpOnly; Max-Age=0; Path=/; Secure; Version=1r4zAzCSet-Cookie: key=coded_val; expires=\w+, \d+ \w+ \d+ \d+:\d+:\d+ \w+)rrcrrr\rpr{Z assertRegexrsr r r! test_reprsJ      zMorselTests.test_reprN)r^r_r`__doc__rirorqrtrrrrrrVrr r r r!ras  4 racCstttttdSr)rrrarrr r r r! test_mains r__main__) rZ test.supportrrZunittesthttprrQZTestCaserrarr^r r r r!s ay