ÿØÿà 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ÿÙ  j֥ddlZddlZddlZddlZddlmZej dkreZn e Z e Z e ZdZGddeZGdd eZGd d eZGd d eZGddeZGddeZGddeZGddeZy)N)model)ct|gSN)bytes)nums D/opt/nydus/tmp/pip-target-mjwu0ny1/lib/python/cffi/backend_ctypes.pyr s %,c eZdZy) CTypesTypeN__name__ __module__ __qualname__r r rr sr rc`eZdZeZdgZdZdZedZe dZ edZ edZ e dZ edd Zed Zd Zd Zd dZdZedZdZedZdZedZdZdZedZedZedZedZedZedZ dZ!dZ"y )! CTypesData __weakref__zc2td|j)Nzcannot instantiate ) TypeError __class__)selfargss r __init__zCTypesData.__init__s4>>CDDr c<td|jd)Nz(expected a pointer or array ctype, got ''r _get_c_nameclsinits r _newpzCTypesData._newps??,/0 0r ctrrvalues r _to_ctypeszCTypesData._to_ctypesr c |j}|r.|j|}t ||s|j|}|S|j}|S#t$rtd|wxYw)Nzcannot create an instance of )_ctypeAttributeErrorrr) isinstance)r"r(ctyperess r _arg_to_ctypeszCTypesData._arg_to_ctypes sw HJJE  #..%(Cc5)jjo **,C  HFG G Hs AA(cH||jS|j|Srr1r!s r _create_ctype_objzCTypesData._create_ctype_obj.s' <%%' '%%d+ +r ctrr&) ctypes_values r _from_ctypeszCTypesData._from_ctypes5r*r c:|jjd|SN &) _reftypenamereplace)r" replace_withs r r zCTypesData._get_c_name9s''l;;r cvd|jd|_d|jd|_d|_y)NzCData<>ffi)r rrrr"s r _fix_classzCTypesData._fix_class=s,&)oo&79 *-//*;=r ctrNotImplementedErrorrs r _get_own_reprzCTypesData._get_own_reprCs!!r cz|dk(ry|dkr,|ddtjtjzzz }d|zS)NrNULLrz0x%x)ctypessizeofc_void_p)raddresss r _addr_reprzCTypesData._addr_reprFs? a<{16==#A!ABBG# #r NcX|j}d|xs|jd|dS)NzD,<,<,>">DDr c|td|jdtd|jd|j)Nzcannot convert z to an addressz to rrBClasss r _convert_to_addresszCTypesData._convert_to_addressRsP >  "%& &  "F$6$6$8:; ;r c@tj|jSrrKrLr,rAs r _get_sizezCTypesData._get_sizeZs}}SZZ((r c@tj|jSrrZrFs r _get_size_of_instancez CTypesData._get_size_of_instance^s}}T[[))r c:td|j)Nzcannot cast to rr"sources r _cast_fromzCTypesData._cast_fromass/@BCCr c$|jdSr)rXrFs r _cast_to_integerzCTypesData._cast_to_integeres''--r c@tj|jSr)rK alignmentr,rAs r _alignmentzCTypesData._alignmenths ++r c:td|jz)Nz#cdata %r does not support iterationrrFs r __iter__zCTypesData.__iter__ls#=     " "r c@tt|fd}||_|S)NcXt|t }t|txrt|t }|r)|r'|jd|jdS|s|rtSt|tr |j }t|tr |j }||Sr)r.CTypesGenericPrimitiverrXNotImplemented_value)rotherv_is_ptrw_is_ptrcmpfuncs r cmpz!CTypesData._make_cmp..cmprs%d,BCCH"5*5I)%1GHH Ht77=$88>@@X%%d$:;;;De%;<!LLEtU++r )getattroperator func_name)namerrrqs @r _make_cmpzCTypesData._make_cmpps"(D) ,  r __eq____ne____lt____le____gt____ge__c6t|jdSr)hashrXrFs r __hash__zCTypesData.__hash__sD,,T233r ctd|)Nz string(): r&rmaxlens r _to_stringzCTypesData._to_strings$011r )r)#rrrr __metaclass__ __slots__r classmethodr$ staticmethodr)r1r4r7r rBrGrOrTrXr[r]rarcrfrhrwrxryrzr{r|r}rrrr r rrsTMIHE00  ,, << "$E;))*DD.,,"(x F x F x F x F x F x F42r rceZdZgZdZdZy)rkc,t|jSr)rrmrFs r rzCTypesGenericPrimitive.__hash__sDKK  r cJt|j|jSr)reprr7rmrFs r rGz$CTypesGenericPrimitive._get_own_reprsD%%dkk233r N)rrrrrrGrr r rkrksI!4r rkc,eZdZgZedZdZdZy)CTypesGenericArrayc||Srrr!s r r$zCTypesGenericArray._newp 4yr c#LKtt|D] }|| ywr)xrangelen)ris r rhzCTypesGenericArray.__iter__s"D "Aq'M#s"$c^|jtj|jSrrOrK addressof_blobrFs r rGz CTypesGenericArray._get_own_repr v// ;<G  +--/G d ,G $v,"7"79: :""7++r c|j|}||_tj||j|_|Sr)__new__rrKcastr,r)r"rNrs r rz CTypesGenericPtr._new_pointer_ats3{{3 #[[#**= r cX |j|jS#t$rYywxYw)Nz???)rOrr-rFs r rGzCTypesGenericPtr._get_own_reprs, ??4==1 1  s  ))c|jSr)rrFs r rcz!CTypesGenericPtr._cast_to_integers }}r c,t|jSr)boolrrFs r __nonzero__zCTypesGenericPtr.__nonzero__sDMM""r ct|ts!tdt|jz|j |}t j||jS)Nzunexpected %s object) r.rrrrrXrKrr,)r"r(rNs r r)zCTypesGenericPtr._to_ctypessL%,2T%[5I5IIJ J++C0{{7CJJ//r ctj|tjjxsd}|j |SNr)rKrrMr(r)r" ctypes_ptrrNs r r7zCTypesGenericPtr._from_ctypess2++j&//:@@EA""7++r cJ|r!|j|j|_yyr)r)contents)r"rr(s r _initializezCTypesGenericPtr._initializes! "%.."7"@"@J  r c||jdfvs|js |jr |jStj ||Sr)r_automatic_castsrrrXrVs r rXz$CTypesGenericPtr._convert_to_addresssA t~~t, ,0G0G$$== 11$? ?r N)rrrrrkindrr$rarrGrcr__bool__r)r7rrXrr r rrs_-I D , ,  #H00 ,,AA@r rcfeZdZdgZedZdZedZdZedZ edZ d d Z y) CTypesBaseStructOrUnionrctd|)Nzcannot instantiate opaque type r&r!s r r4z)CTypesBaseStructOrUnion._create_ctype_objssDEEr c^|jtj|jSrrrFs r rGz%CTypesBaseStructOrUnion._get_own_reprrr cBt|j|jSr)rsr,offset)r" fieldnames r _offsetofz!CTypesBaseStructOrUnion._offsetofsszz9-444r ct|dd|jurtj|jSt j ||S)N_BItem)rsrrKrrrrXrVs r rXz+CTypesBaseStructOrUnion._convert_to_addresss? 68T *dnn <##DJJ/ /11$? ?r c6|j|}||_|Srrr)r"ctypes_struct_or_unionrs r r7z$CTypesBaseStructOrUnion._from_ctypess{{3+  r c|jSr)r)r"r(s r r)z"CTypesBaseStructOrUnion._to_ctypes s {{r NcTtj||xs|jdSr9)rrTr )rrRs r rTz CTypesBaseStructOrUnion.__repr__ s%""4)I43C3CD3IJJr r) rrrrrr4rGrrXr7r)rTrr r rrsj IFF=55@  Kr rceZdZejej ej ejejejejejejejejejej ej"dZdD]tZej(eeZeeeddezz<eej(ej,k(reeed<eej(ej.k(smeeed<vdD]|Zej(eeZeeeddezz<eej(ej,k(reeed <eeed <eej(ej.k(sueeed <~d Zd ZdZd(dZdZdZdZdZdZ dZ!dZ" d)dZ#dZ$dZ%dZ&dZ'd*dZ(d*dZ)dZdZ*d Z+d!Z,d"Z-d#Z.d(d$Z/e0Z1d%Z2d(d&Z3d+d'Z4y#), CTypesBackend)charshortrr long long signed char unsigned charunsigned short unsigned int unsigned longunsigned long longfloatdouble_Bool)rrrrrzuint%d_trJ uintptr_tsize_t)rrrrrzint%d_tintptr_t ptrdiff_tssize_tctd|_d|_tj|_tj|_yr) RTLD_LAZYRTLD_NOWrK RTLD_GLOBAL RTLD_LOCALrFs r rzCTypesBackend.__init__7s+ !-- ++r c||_yr)r@)rr@s r set_ffizCTypesBackend.set_ffi=s r cttfSr)rrrFs r _get_typeszCTypesBackend._get_types@s :%%r cFtj||}t||Sr)rKCDLL CTypesLibrary)rpathflagscdlls r load_libraryzCTypesBackend.load_libraryCs{{4'T4((r cDGddt}|j|S)Nc4eZdZgZdZedZedZy)/CTypesBackend.new_void_type..CTypesVoidzvoid &cyrrnovalues r r7z.CTypesVoid._from_ctypesKsr cL|"tdt|jdy)NzNone expected, got z object)rrrrs r r)z:CTypesBackend.new_void_type..CTypesVoid._to_ctypesNs*&#%)']%;%;%>??r N)rrrrr;rr7r)rr r CTypesVoidrHs0I#L      r r)rrB)rrs r new_void_typezCTypesBackend.new_void_typeGs"   r cdk(r t|jdk(rd}n-dvrd}n&dvrd}n dk(rd}nd }d jd k(fd |Gfd d tj S)Nwchar_tr)rrr)rrbyterrrc&t|tttfr t|}|St|tr|j }|St|t r t|}|S|d}|Stddt|jr) r.rrrrrcrordrrr)r`CTypesPrimitives r _cast_source_to_intz=CTypesBackend.new_primitive_type.._cast_source_to_inths&3e"45VMFJ/002MFE*V M M !0$v,2G2G!IJJr ceZdZdgZWZdWzZWZdZefdZ edk(sedk(re fdZ dZ ed k(r e fd Z d Z ed k(r e fd Z dZ edk(re fdZ dZ dZ e Zedk(s edk(sed k(r efdZed k(refdZdZndZeZedk(r efdZedZefdZed k(rdZedk(rdZyy)9CTypesBackend.new_primitive_type..CTypesPrimitiverm%s &c||_yrrmrr(s r rzBCTypesBackend.new_primitive_type..CTypesPrimitive.__init__}s # r cD|Sj|Sr)r))r#rr/s r r4zKCTypesBackend.new_primitive_type..CTypesPrimitive._create_ctype_objs%< 7N_77=>>r rrcH|}|j}||Srr'r"r`rr/s r razDCTypesBackend.new_primitive_type..CTypesPrimitive._cast_froms&08F"6]00Fv;&r c|jSrrrFs r __int__zACTypesBackend.new_primitive_type..CTypesPrimitive.__int__ ;;&r rclt|tttfs|}|t |Sr)r.rrrrr"r`rs r razDCTypesBackend.new_primitive_type..CTypesPrimitive._cast_froms-%fsD%.@A!4V!<tF|,,r c,t|jSrrrmrFs r rzACTypesBackend.new_primitive_type..CTypesPrimitive.__int__t{{++r rc@|}t|dz}||SN)bytechrr s r razDCTypesBackend.new_primitive_type..CTypesPrimitive._cast_froms%08F$Vd]3Fv;&r c,t|jSrrrmrFs r rzACTypesBackend.new_primitive_type..CTypesPrimitive.__int__r r rct|trn.CTypesPrimitive._cast_fromsZ!&%0#F,BC"6;7%*6]F%([F!4V!<"6]00Fv;&r c,t|jSrr rFs r rzACTypesBackend.new_primitive_type..CTypesPrimitive.__int__r r c|jSrrrFs r rzCCTypesBackend.new_primitive_type..CTypesPrimitive.__float__rr ct|ttfs=t|tr t|}n!t dt |j z|j|k7r#s|dkrtdztdz|S)Nzinteger expected, got %srz%s: negative integerz%s: integer out of bounds) r.rrrrrrr( OverflowError)xr/ is_signedrvs r r)zDCTypesBackend.new_primitive_type..CTypesPrimitive._to_ctypess%a#t5%a4 #AA"+,F,0G,<,<-=#>>Qx~~*(QU"/0F0M"NN"/0K2617#88Hr ct|trt|dk(r|St|r |jSt dt |j z)Nrzcharacter expected, got %s)r.rrrmrrr)rrs r r)zDCTypesBackend.new_primitive_type..CTypesPrimitive._to_ctypessQ!!U+A!  !!_5 xx#$@$(G$4$4%566r c2t|jdk7SrrrFs r rzECTypesBackend.new_primitive_type..CTypesPrimitive.__nonzero__st{{+q00r c |jdk7SrrrFs r rzECTypesBackend.new_primitive_type..CTypesPrimitive.__nonzero__s;;!++r ct|ttttfs!t dt |jz|jS)Nzfloat expected, got %s) r.rrrrrrrr()rr/s r r)zDCTypesBackend.new_primitive_type..CTypesPrimitive._to_ctypessF%a#tUJ)GH'(@(,Q(8(8)9:: 8>>)r ct|d|S)Nr(rsr's r r7zFCTypesBackend.new_primitive_type..CTypesPrimitive._from_ctypessugu55r c2j||_yr)r)r()blobr#rs r rzECTypesBackend.new_primitive_type..CTypesPrimitive._initializes,77= r c|jSrrrs r rzDCTypesBackend.new_primitive_type..CTypesPrimitive._to_stringrr c2t|jdzSr)chrrmrs r rzDCTypesBackend.new_primitive_type..CTypesPrimitive._to_stringst{{T122r N)rrrrr,r;rrrr4rrarrrcr)rrr7rr)rrr/rkind1rvsr rrwsx! IF!D=LD $ ? ? u}'''v~--,v~'',w ' ',' ' u}$&.  v~661,"Hw**  6 6 > >v~'v~3r r)rEPRIMITIVE_TYPESr(rkrB)rrvrrrr/rr(s ` @@@@@r new_primitive_typez CTypesBackend.new_primitive_typeWs 9 %d+ +$$T* 6>D ( (D77rB.I u 3u 34u 3n ""$r c2|jj}|tjdurdnX|tjd|tjdfvrdn|tjurdndGfdd t |jjtjus0|jjtjdurd _jS) NrcharprrbytepvoidpgenericceZdZdgZWdk(redgz ZWZeWdr;ejWjZejWjZ n ejZe We rWjdZnWjdZfdZdZd Zfd Zfd ZWdk(sWd k(r efd ZWdk(sWdk(rdZfdZxZS)1CTypesBackend.new_pointer_type..CTypesPtr_ownr, __as_strbufr,(* &)z * &cj|}dk(rWtj|jdz|_tj |j|j |_ntj||_tj |jtjj|_ d|_ y)Nr,T) r4rKcreate_string_bufferr(_CTypesPtr__as_strbufrr,rrrMrr2)rr#ctypeobjBItemrs r rz:CTypesBackend.new_pointer_type..CTypesPtr.__init__ s 22487?'-'B'B 0(2D$)/(($++*7D&*0)AD& & D,>,>,2OO!==BU   r ct|ttfr+|j|j||j zzSt Sr)r.rrrr _bitem_sizerlrrns r __add__z9CTypesBackend.new_pointer_type..CTypesPtr.__add__sGec4[1// 058H8H0H1IJJ*)r ct|ttfr+|j|j||j zz St |t |ur&|j|jz |j zStSr)r.rrrrr<rrlr=s r __sub__z9CTypesBackend.new_pointer_type..CTypesPtr.__sub__ ssec4[1// 058H8H0H1IJJ$Z4;. MMENN:t?O?OOO))r cpt|ddr |dk7rtj|j|S)Nr2Fr)rs IndexErrorr7rrindexr:s r __getitem__z=CTypesBackend.new_pointer_type..CTypesPtr.__getitem__)s74/EQJ$$))$*<*.CTypesPtr.__setitem__.s,1,<,.CTypesPtr._arg_to_ctypes2s8E!He!<%uQx88$YCUKKr r-cR|dkrtj}tj|jtj tj }d}||kr||dk7r|dz }||kr ||dk7rdjt|Dcgc]}|| c}Scc}wNrr6rr ) sysmaxsizerKrrPOINTERc_charjoinrangerrpnrs r rz.CTypesPtr._to_string:sz!$ D$6$6$*NN6==$ACAAf*1Qf*18858$<8aQqT8$<==$.CTypesPtr._get_own_reprDsL4/, d&8&8&A&AB0EEEY;==r )rrrrrrrKrQr,rLr<rM issubclassrr r;rr>r@rErHrr1rrG __classcell__)rr:rLrs@r rLr1sIwm_, Fuh'' 5+fmmELL9 %!34$009 $008  ! * * E  Dw$'/LL w$'/> > >r rLT)r@_get_cached_btyper PrimitiveType void_typerrrB)rr:getbtyperLrs ` @@r new_pointer_typezCTypesBackend.new_pointer_types88-- HU0089 9D x 3 3M BC 3 3O DEGGD hu/ /DDK >K >(K >Z TXX//@ @ TXX//0C0CF0KL L)-I &r cpdndzj|jj}|tjdurdn=|tjd|tjdfvrdndGfdd t j S) Nz &[]z &[%d]rrrrr/cReZdZddgZWWjWzZnej dWj WZWZWZ fdZ e fdZ dZ fdZfdZWd k(sWd k(rd Zfd Zfd Ze fdZe fdZfdZedZxZS)1CTypesBackend.new_array_type..CTypesArrayrr2r,cRit|ttfr|}d}n:dk(rt|trt |dz}nt |}t |}j |z|_|j |_d|_||j|j|yy)NrrT) r.rrrrtupler,rr2r)rr#len1r:rlengths r rz:CTypesBackend.new_array_type..CTypesArray.__init__js>!$d 4##JtU,C"4y1}$T{"4y"',,"5DK![[]   #$$TZZ6$r ct|tr(tt|Dcgc] }|||dz }}nLt|tr1t|t|k7s t| st d|t |}t|t|kDr tdtj|tjj}tjj}tjj}t|D]=\}}tj|||zz|}j!|j"|?ycc}w)Nrzlength/type mismatch: ztoo many initializers)r.rrTrrrrerBrKrrMr(rQr,rL enumeraterr) r$r#raddrPTRitemsizer(rVr: CTypesArrays r rz=CTypesBackend.new_array_type..CTypesArray._initializezsdE*16s4y1AB1AAD1Q3K1ADB!$(:;IT2 *4 ="+$,P"QQ ;Dt9s4y($%<=={{49??nnU\\2!==6 )$HAu D1x<$7=A%%ajj%8!0CsE c,t|jSr)rrrFs r __len__z9CTypesBackend.new_array_type..CTypesArray.__len__s4::&r cd|cxkrt|jks ttj|j|Sr)rrrBr7rCs r rEz=CTypesBackend.new_array_type..CTypesArray.__getitem__sCU4S_4$$5$$))$**U*;<.CTypesArray.__setitem__sBU4S_4$$5$$$)$4$4U$; 5!r rrc\|dkrt|j}tj|jtjtj }d}||kr||dk7r|dz }||kr ||dk7rdj t|Dcgc]}|| c}Scc}wrN)rrrKrrQrRrSrTrUs r rz.CTypesArray._to_stringsz!$TZZ DJJ$*NN6==$ACAAf*1Qf*18858$<8aQqT8$<==$.CTypesArray._get_own_reprs:4/, djj0I/KKK[$=??r c|dfvs |jrtj|jStj ||Sr)rrKrrrrX)rrWrLs r rXzECTypesBackend.new_array_type..CTypesArray._convert_to_addresss@i..&2I2I!++DJJ77%99$GGr c8j}||_|Srr) ctypes_arrayrrms r r7z>CTypesBackend.new_array_type..CTypesArray._from_ctypess"**;7)  r c&j|Srr3)r(rLs r r1z@CTypesBackend.new_array_type..CTypesArray._arg_to_ctypess //66r ct|ttfrQjt j |j |t jjzzStSr) r.rrrrKrrrLr,rl)rrnr:rLs r r>z9CTypesBackend.new_array_type..CTypesArray.__add__sXec4[1$44((4 ell ;;<==*)r c:td|j)Nz casting to )rEr r_s r raz.CTypesArray._cast_froms)OO%+())r )rrrrr,appendr r;_declared_length_CTPtrrrrrorErHrrGrXr7r1r>rrar[)rr:rmrLbracketsrrgs@r rmrc`s &)I!.  * ,,X6L% F 7  9 9$ ' =  < v~> @  H     7 7 * ) )r rm)rr@r\rr]rrB)rrLrgr_r:rmr}rs `` @@@@r new_array_typezCTypesBackend.new_array_typeQs >H&(H  88-- HU0089 9D x 3 3M BC 3 3O DEGGDDe )e ),e )N  r cGdd||d_|Gfddt}|j|S)Nc eZdZy);CTypesBackend._new_struct_or_union..struct_or_unionNrrr r struct_or_unionrs r r_c0eZdZdgZWZWdZWxZZy)?CTypesBackend._new_struct_or_union..CTypesStructOrUnionrr:N)rrrrr,r;_kindr)r(rvrsr CTypesStructOrUnionrs! I$F%)+L EDr r)rrrB)rrrvbase_ctypes_classrr(rs ` @@r _new_struct_or_unionz"CTypesBackend._new_struct_or_unionsH / .2D#9  ! !"9 ! &&(""r cD|jd|tjS)Nstruct)rrK Structurerrvs r new_struct_typezCTypesBackend.new_struct_types((49I9IJJr cD|jd|tjS)Nunion)rrKUnionrs r new_union_typezCTypesBackend.new_union_types(($ EEr c r|dk\s|dk\r tdj|D cgc]\}} } | c} } }|D cgc]\}} } |  } } }} |D cgc]\}} } |  } } }} i} g}|D]U\}} } | dkr#|j|| jf| | |</|j|| j| ft| |<W|dzrd_n |r|_|_| _tfd}|_fdjdk(ttt| | |D]\}} } |dk(r td t|rtd |z| dkr|| j|tj | jfd }|| fd }t#| t$r\d}| j&dk(rK|| j(j|tj | jfd }n || fd}|| fd}t+|t-|||j.j1t3j4|}D]=}t||rtd |z|fd}|fd}t+||t-||?ycc} } }wcc} } }wcc} } }w)Nrzthe ctypes backend of CFFI does not support structures completed by verify(); please compile and install the _cffi_backend module.rJrc,}| |||Srr)r#result initializers r r4zACTypesBackend.complete_struct_or_union.._create_ctype_objs $&F64(Mr c r&t|dkDrtdt|fzt|tstt|tt fr t dt|}t|t kDrtd jztt |}tj|}|jD]~\}} |\}}|dksJd j|}tj|j}tj ||z|} |j#| j$|y)NrzPunion initializer: %d items given, but only one supported (use a dict if needed)zunion initializer: got a strz"too many values for %s initializerrz,not implemented: initializer with bit fields)r ValueErrorr.dictrunicoderrer ziprKritemsrrQr,rrr)r$r#rjfnamer(BFieldbitsizerrkrVrfnamesis_unionname2fieldtypes r rz:CTypesBackend.complete_struct_or_union..initializes;t9q=$&P(+D |&455dD)dUG$45#$BCCT{t9s6{*$%I%8%D%D%F&GHHC-.##D)D $ u"0"7{FEF{,66u=nnV]]3KKv s3""1::u5!-r rrznested anonymous structs/unionsz1the field name %r conflicts in the ctypes backendctj|j}tj||z|}|j |j Sr)rKrrrr7r)rrrrrkrjrVs r getterz6CTypesBackend.complete_struct_or_union..getter%sA"++DJJ7D D6M37A!..qzz::r cPt|j||j|yr)setattrrr))rr(rrs r setterz6CTypesBackend.complete_struct_or_union..setter+sDJJv/@/@/GHr ctj|j}tj||z|}|j |Sr)rKrrrr7)rr BFieldPtrrrkrjrVs r rz6CTypesBackend.complete_struct_or_union..getter1s=$*#3#3DJJ#?D & D6M3 ?A#,#9#9!#<.getter9s!..wtzz5/IJJr c|j|}t|j|}t|j|||t|j|k7r"t|j||t dy)Nzvalue too large for bitfield)r)rsrrr)rr(rroldvalues r rz6CTypesBackend.complete_struct_or_union..setter;sf"--e4E&tzz59HDJJu5 E :: E8<+,JKK;r c t|d|Srr")rrs r rz6CTypesBackend.complete_struct_or_union..getterJstAw..r c$t|d||yr)r)rr(rs r rz6CTypesBackend.complete_struct_or_union..setterLsQ.r )rEr,rzEllipsis_pack__fields_ _bfield_typesrr4rrrrrrrKrQrZrr{r|rpropertyr@r\r PointerType)rrfieldstp totalsizetotalalignmentsflagspackrrrbtypes bitfields bfield_typescfieldsr4rrrLrrrrrs ` @@@@@r complete_struct_or_unionz&CTypesBackend.complete_struct_or_unions >^q0%'VW W.448>?4UFG%?9?@5eVW&@=CDV!9%WV D (. $UFG{v}}56&, U#v}}g>?&. U# )/ A:%&O " %)O "#* ,8)     1B- 6.',,7c&#fi*@AB&, "E67{)*KLL*E2 "68=">??{',V"5"?"?"F%~~fmm<; /4FIf&89!F..!3/4 *=*G*G*N'-~~fmm'D=(-VK.3FL '0H IK'-NHH..u/@/@/DE Ey%( "68=">??#( /*/ / Iuhvv&> ?}@@Ds J$ J+ J2cDcgc]}|jc}rjddjGfddtj Scc}w)Nz...z, ceZdZddgZej eWddgWDcgc]}|jc}}ddiZWjdWdZ dfd Z e d Z d Z fd Zfd ZxZScc}}w):CTypesBackend.new_function_type..CTypesFunctionPtr _own_callback_namer,N use_errnoTz(* &)()cddl rJdtdd!jjndfd}t t r@t jt jgDcgc]}|jc}ddi}n j}|||_ t j|jt jj|_ |_ycc}w)Nrz#varargs not supported for callbacksr,c\g}t|D]%\}}|j|j|' |}j|}t t r4|r0tj|tjj}|Sd}|S# j }Y\xYwr) rrzr7r) print_excrZrrKrrMr() rargs2argBArgres2BArgsBResulterrorr# tracebacks r callbackzUCTypesBackend.new_function_type..CTypesFunctionPtr.__init__..callbackfsE%(u%5 T T%6%6s%;<&6%#U|&11$7"'+;<#);;tV__#E#K#KD  K$(DK%!++-$s BB+rT)rrsr7r4rZrrK CFUNCTYPErMr,rrr(rr) rr#rrrcallback_ctyperrrCTypesFunctionPtr has_varargss `` @r rzCCTypesBackend.new_function_type..CTypesFunctionPtr.__init__]s &M(MM7Hd3?#0011%8:E!E  $g'78&,%5%5&(278%$$++%8&(#'&(N &7%=%=N%3H%=" & D,>,>,2OO!==BU %)"9s>C9 c|r tdy)NzActypes backend: not supported: initializers for function pointersrD)rr(s r rzFCTypesBackend.new_function_type..CTypesFunctionPtr._initializes-/OPPr ct|dd}|rP|jjd}|j|dz dvrd|z}|jjd|}tj ||S)Nrr4rz )*rQ)rsr;rDr<rrT)rrRrs r rTzCCTypesBackend.new_function_type..CTypesFunctionPtr.__repr__st w5))//8A((1-U:!$v!..66wGF!**488r cXt|ddd|jSt|S)Nrzcalling )rsrrKrG)rrrs r rGzHCTypesBackend.new_function_type..CTypesFunctionPtr._get_own_reprs24$7C+/+=+=??.CEEr c r6t|tk\sJ|td}|dt}nt|tk(sJg}t|D]%\}}|j|j|' rt D]\}}|%|jt j d-t|ts2tddtz|zt|jfz|j|j||j|} j|S)NrzKargument %d passed in the variadic part needs to be a cdata object (got %s)r)rrrzr1rirKrMr.rrrrrr7) rr extraargs ctypes_argsrrrrrrrs r __call__zCCTypesBackend.new_function_type..CTypesFunctionPtr.__call__s>t9E 222 $SZ[ 1I U,Dt9E 222 !$T5!1IC&&t':':3'?@"2"+I"63;'..vq/AB$)#z:"+!F!"SZ!!3T#Y5G5G H!I#JJ$**3+=+=c+BC#7,++[9++F33r r)rrrrrKrrsr,r r;rrrrTrGrr[).0rrrrrrnameargss00@r rrVs('2I%V%%ggx&F6@E'F 'F6046F#..h/HIL' *' *R P P  9 F  4 4C(GsB r)r rzrSrrB)rrrrrrrs ``` @@r new_function_typezCTypesBackend.new_function_typePsm38954D$$&59  OOE "99X&Z 4Z 4 0Z 4x $$&  E:sA/cttsJttt |t |Gfdd|}|j |S)Nc2eZdZgZdWzZfdZfdZy)/CTypesBackend.new_enum_type..CTypesEnumrcf|j} d||fzS#t$rt|cYSwxYw)Nz%d: %srmKeyErrorstr)rr(reverse_mappings r rGz=CTypesBackend.new_enum_type..CTypesEnum._get_own_reprs? &#uoe.D&EEE&u:%&s 00c\|j} |S#t$rt|cYSwxYwrr)rrr(rs r rz:CTypesBackend.new_enum_type..CTypesEnum._to_strings5 &*511&u:%&s ++N)rrrrr;rGr)rvrsr CTypesEnumrsI!D=L & &r r)r.rrrreversedrB)rrv enumerators enumvalues CTypesIntrrs ` @r new_enum_typezCTypesBackend.new_enum_typesS$$$$s8J#7#+K#8 :; & &$ r c*tjSr)rK get_errnorFs r rzCTypesBackend.get_errnos!!r c.tj|yr)rK set_errnors r rzCTypesBackend.set_errnosr c$|j|Sr)r)rbrs r stringzCTypesBackend.strings||F##r ctd)Nzbuffer() with ctypes backendrD)rbptrsizes r bufferzCTypesBackend.buffers!"@AAr ct|tr|jSt|tsJ|j Sr)r.rr]rZr[)rcdata_or_BTypes r rLzCTypesBackend.sizeofs: nj 1!779 9nj9 99!++- -r cFt|tsJ|jSr)rZrrf)rBTypes r alignofzCTypesBackend.alignofs!%,,,!!r cPt|tst|j|Sr)rZrrr$rrr`s r newpzCTypesBackend.newps %,O{{6""r c$|j|Sr)rars r rzCTypesBackend.casts''r c|J|||Srr)rrr`ronerrors r rzCTypesBackend.callbacksVU##r Nc@|j"ddl}Gdd|j}i|f|_|j\}| ||=yfd}|j |j ||}||usJ||f|||<|S#t$r t dwxYw)NrceZdZdZdZdZy) CTypesBackend.gcp..MyRefc:|}||uxs|duxr ||uSrr)rrnmyrefs r rxz'CTypesBackend.gcp..MyRef.__eq__s0 FE5=@T)>euw.>@r c||k( Srrr=s r ryz'CTypesBackend.gcp..MyRef.__ne__s $ ..r c| |jS#t$r$t||_|jcYSwxYwr)_hashr-rrFs r rz)CTypesBackend.gcp..MyRef.__hash__s7*#zz))*%)$&\ #zz)*s *;;N)rrrrxryrrr r MyRefrs@/*r rzFCan remove destructor only on a object previously returned by ffi.gc()cFj|d\}}| ||yy)N)NN)pop)kcdata destructor weak_caches r removez!CTypesBackend.gcp..removes+ *q, ? E:%5!&r )_weakref_cache_refweakrefrefrrrtypeof) rrrrrrr new_cdatars @r gcpzCTypesBackend.gcps  " " *  * *')%iD # 33 E   CuU|, " IIdkk%0%8 %%%05z/B 5F+, C!BCC Cs  BBc$|j|Sr)r )rrr=s r getcnamezCTypesBackend.getcnames  ..r c>t|trq|dk(rt|tr |j}t|t s t d|j|}|tur t d||j|fSt|ttfrst|tr |j}t|ts t d|j}|j|z}|tj kDrt"||fSt t%|)Nrz expected a struct or union ctypeznot supported for bitfieldszexpected an array or ptr ctype)r.rrZrrrrrrrrrrr|r[rOrPrr)rrrr rr:rs r typeoffsetofzCTypesBackend.typeoffsetofs i %axJu.>? e%<= BCC((3F! =>>EOOI67 7  C; /%!34 e%56 @AALLE__&2F ###6? "DO, ,r ct|tr.tjt |j |}nt|t rK|#tt |jts tdt |j |}n6t|trt |j |}n td|ratjtjtj|tjj|zt |}|j|S)Nzunexpected cdata typez$expected a )r.rrKrrr)rrZrrrrrMr(r7)rBTypePtrrrptrs r rawaddressofzCTypesBackend.rawaddressof5s e4 5..e!7!7!>?C / 0~ZU 0B0B0G&I 788u+((/C 1 2u+((/CBC C ++KKV__5;;fDFS C$$S))r )r)rrrr)rr)5rrrrKrRc_shortc_intc_long c_longlongc_bytec_ubytec_ushortc_uintc_ulong c_ulonglongc_floatc_doublec_boolr)rrL_sizerMc_size_trrrrrr*r`r~rrrrrrrrrrrrrrrrrrrrr#rr r rrs= || &&}} // $00// O"E oe452A%2H ag./ MFMM&//2 2+:5+AOK ( MFMM&//2 2(7(>OH %EF oe451@1G QuW-. MFMM&//2 2*9%*@OJ '+:5+AOK ( MFMM&//2 2)8)?OI &F, &) Xt^@wr# KFJK&'n@`c!J4" $B."# ($#JF/-.*r rc$eZdZdZdZdZdZy)rc ||_||_yr)backendr)rr5rs r rzCTypesLibrary.__init__Ks  r cbt|j|}|j|}||_|Sr)rsrr7r)rrrvc_funcfuncobjs r load_functionzCTypesLibrary.load_functionOs.D)$$V, r c |jj|j|}|j |S#t$r}t |d}~wwxYwr)r,in_dllrr-rEr7)rrrv ctypes_objes r read_variablezCTypesLibrary.read_variableUsQ ),,TYY=J!!*-- )%a( ( )s&9 A A  Ac&|j|}|jj|j|}t j t j |t j |t j|jyr)r)r,r;rrKmemmoverrL)rrrvr(new_ctypes_objr<s r write_variablezCTypesLibrary.write_variable\sc))%0\\((D9 v'' 3''7}}U\\2 4r N)rrrrr9r>rBrr r rrIs .4r r)rK ctypes.utilrtrOrr version_infor'rrrrrrTrrrobjectrrkrrrrrrr r rFs))dGG D F&G  @2@2F4Z4 = =@@z@@F Kj KFu *Fu *p4F4r