ÿØÿà 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ÿÙ  j3PdZddlmZddlZddlZddlmZddlmZm Z ddl m Z m Z m Z mZmZmZmZmZmZddlmZdd lmZmZmZmZmZdd lmZdd lmZm Z m!Z!m"Z"dd l#m#Z#dd l$m%Z%m&Z&ddl'm(Z(ddl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0e rddl1m2Z2dZ3dZ4dZ5dZ6dZ7dZ8dZ9dZ:dZ;dZ<GddZ=y)z,Implements the MySQL Client/Server protocol.) annotationsN)deque)DecimalDecimalException) TYPE_CHECKINGAnyDequeDictListOptionalSequenceTupleUnion)utils)PARAMETER_COUNT_AVAILABLE ClientFlag FieldFlag FieldType ServerCmd)MySQLConverter) DatabaseErrorInterfaceErrorProgrammingError get_exception)logger)MySQLAuthPluginget_auth_plugin)"MySQLCachingSHA2PasswordAuthPlugin)BinaryProtocolTypeDescriptionType EofPacketType HandShakeType OkPacketTypeStatsPacketType StrOrBytes) MySQLSocket -i@c FeZdZdZed#dZed$dZed$dZed%dZed&dZ e d' d(d Z ede d e ddddddf d)d Z ee d e f d*d Zed+d,d Zed-d.dZed/dZed0dZed1dZed2d3dZd4dZed5d6dZ d7 d8dZe d9dZe d:dZe d; ddZ d2 d?dZ d@ dAdZedBdZedCdZ e dDdZ!e dEd Z"edFd!Z# dG dHd"Z$y)I MySQLProtocolzRImplements MySQL client/server protocol Create and parses MySQL packets. c:|dtk(s td|ddS)a Parse a MySQL auth more data packet. Args: pkt: Packet representing an `auth more data` response. Returns: auth_data: Authentication method data (see [1]). Raises: InterfaceError: If packet's status tag doesn't match `protocol.EXCHANGE_FURTHER_STATUS`. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_auth_more_data.html z"Failed parsing AuthMoreData packetN)EXCHANGE_FURTHER_STATUSr)pkts I/opt/nydus/tmp/pip-target-mjwu0ny1/lib/python/mysql/connector/protocol.pyparse_auth_more_dataz"MySQLProtocol.parse_auth_more_data^s($1v00 !EF F12wc|dtk7r tdtj|ddd\}}|r |ddk(r|dd}|j |fS) a|Parse a MySQL auth switch request packet. Args: pkt: Packet representing an `auth switch request` response. Returns: plugin_name: Name of the client authentication plugin to switch to. plugin_provided_data: Plugin provided data (see [1]). Raises: InterfaceError: If packet's status tag doesn't match `protocol.AUTH_SWITCH_STATUS`. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/ latest/page_protocol_connection_phase_packets_protocol_ auth_switch_request.html r1z'Failed parsing AuthSwitchRequest packetr2Nendr)AUTH_SWITCH_STATUSrr read_stringdecode)r4 plugin_names r5parse_auth_switch_requestz'MySQLProtocol.parse_auth_switch_requesttsf( q6' ' !JK K ,,SW'B[ 3r7a<cr(C!!#S((r7ctj|ddd\}}|tk7r tdtj|d\}}|j |fS)aParse a MySQL auth next factor packet. Args: pkt: Packet representing an `auth next factor` response. Returns: plugin_name: Name of the client authentication plugin. plugin_provided_data: Initial authentication data for that client plugin (see [1]). Raises: InterfaceError: If packet's packet type doesn't match `protocol.MFA_STATUS`. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_auth_ next_factor_request.html r1Nrz.Failed parsing AuthNextFactor packet (invalid)r9r:)rread_int MFA_STATUSrr>r?)r4statusr@s r5parse_auth_next_factorz$MySQLProtocol.parse_auth_next_factors]*nnSWa0 V Z  !QR R ,,Sg>[!!#S((r7c VD] }| d|<tfdDtjztjz}t j d|g}D]}|j t j dt||j |j|j t j dt||j |jdj|S)azEncode the connection attributes. Args: conn_attrs: Connection attributes. Returns: serialized_conn_attrs: Serialized connection attributes as per [1]. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_handshake_response.html c3RK|]}t|t|z ywN)len).0x conn_attrss r5 z0MySQLProtocol.make_conn_attrs..s$@ZAZ]++Zs$'?#I  $ $V[[s9~%F G  $ $Y%5%5%7 8  $ $V[[s:i;P7Q%R S  $ $Z %:%A%A%C D $ xx)**r7cV|tjzr|r|jdzSdS)aPrepare database string for handshake response. Args: client_flags: Integer representing client capabilities flags. database: Initial database name for the connection. Returns: serialized_database: Serialized database name as per [1]. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_handshake_response.html r9)rCONNECT_WITH_DBrW) client_flagsdatabases r5connect_with_dbzMySQLProtocol.connect_with_dbs4"j888X OO  '  r7NFcT|s|dk(rdt|||fS|i} t|||||}|j|fi|}|t d|j t jt||z}||fS#ttf$r} t d| | d} ~ wwxYw)aPrepare the first authentication response. Args: auth_data: Authorization data from initial handshake. username: Account's username. password: Account's password. client_flags: Integer representing client capabilities flags. auth_plugin: Authorization plugin name. auth_plugin_class: Authorization plugin class (has higher precedence than the authorization plugin name). ssl_enabled: Whether SSL is enabled or not. plugin_config: Custom configuration to be passed to the auth plugin when invoked. The parameters defined here will override the ones defined in the auth plugin itself. Returns: auth_response: Authorization plugin response. auth_strategy: Authorization plugin instance created based on the provided `auth_plugin` and `auth_plugin_class` parameters. Raises: InterfaceError: If authentication fails or when got a NULL auth response. rHr9) ssl_enabledNzFailed authentication: z8Got NULL auth response while authenticating with plugin ) rr auth_response TypeErrorrnamerlc_intrK) auth_datausernamepassword auth_pluginauth_plugin_classrc plugin_config auth_strategyrderrs r5auth_plugin_first_responsez(MySQLProtocol.auth_plugin_first_responsesDK2->(    M KKOK9JK( M8M77 S]SM   ',,-/   S%78=H m++>* K #:3%!@As J Ks(BB'B""B'rc \|j} g}| rtjdtjd| tdd|j d tdd |xs|d}tjd || rB|jtjd t| d tj| n9d }|jtjd|t| d |||| tj|d||||| | \}}|j||jtj||| r%|jtjd||t j"zr"|j|jdz|t j$zr&| $|jtj'| dj)||fS#t t f$r}td|d dd}~wwxYw)aMake a MySQL Authentication packet. Args: handshake: Initial handshake. username: Account's username. password: Account's password. database: Initial database name for the connection charset: Client charset (see [2]), only the lower 8-bits. client_flags: Integer representing client capabilities flags. max_allowed_packet: Maximum packet size. auth_plugin: Authorization plugin name. auth_plugin_class: Authorization plugin class (has higher precedence than the authorization plugin name). conn_attrs: Connection attributes. is_change_user_request: Whether is a `change user request` operation or not. ssl_enabled: Whether SSL is enabled or not. plugin_config: Custom configuration to be passed to the auth plugin when invoked. The parameters defined here will override the one defined in the auth plugin itself. Returns: handshake_response: Handshake response as per [1]. auth_strategy: Authorization plugin instance created based on the provided `auth_plugin` and `auth_plugin_class`. Raises: ProgrammingError: Handshake misses authentication info. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_handshake_response.html [2]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_basic_character_set.html#a_protocol_character_set zGot a `change user` requestzStarting authorization phaseNzGot a NULL handshakerhz$Handshake misses authentication inforkz-Handshake misses authentication plugin info ()z#The provided initial strategy is %srPsxxxxxxxxxxxxxxxxxxxxxxxxz ? *00 0  # #K$6$6$87$B C :22 2 8N  # #M$A$A*$M Nxx()=88m8$ "?uAF  s+ HH+H&&H+cdjtj|tj|tj|dgS)aMake a SSL authentication packet (see [1]). Args: charset: Client charset (see [2]), only the lower 8-bits. client_flags: Integer representing client capabilities flags. max_allowed_packet: Maximum packet size. Returns: ssl_request_pkt: SSL connection request packet. References: [1]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_connection_phase_packets_protocol_ssl_request.html [2]: https://dev.mysql.com/doc/dev/mysql-server/latest/ page_protocol_basic_character_set.html#a_protocol_character_set r7s)rXr int4store int1store)r}r_r~s r5 make_auth_sslzMySQLProtocol.make_auth_sslsB0xx - 23(    r7c>tj|}||S||zS)z(Make a MySQL packet containing a command)rr)commandargumentdatas r5 make_commandzMySQLProtocol.make_commands&w''tr?intreadrSECURE_CONNECTIONminrz startswith) packetres auth_data1 capabilities1 capabilities2auth_data_lengthr auth_data2sizes r5parse_handshakezMySQLProtocol.parse_handshakes --&1+>qAJ z?. .6s:6GH$$4#57 271B1B 12JG2 .-. MM2F1RL A ! "    N   ),-F)G)N)N)P %&}}]]%BC  *66 64D3r+a/0"D$JDE]F"~"'_ *00 0f$-F)G)R)R*14V,]+/4/@/@W/U,]+!$]!3!:!:7!CC !8C % 2K*N r7c|ddk(s tdi} tjd|ddd|d<tj|dd\}|d<tj|\}|d <tjd |dd\|d <|d <|dd}|r2tj |\}|d <|d j d|d <|S#t$r}td|d}~wwxYw)zParse a MySQL OK-packetr1rz#Failed parsing OK packet (invalid).rr2 field_countN affected_rows insert_idz->v-F *FIk* eVAa[1 -(/*ABZF050D0DV0L- *-(1*(=(D(DW(M *% G !<=3 F GsB3C C& C!!C&c tj|ddd}|S#tjtf$r}t d|d}~wwxYw)z=Parse a MySQL packet with the number of columns in result setr1NrzFailed parsing column count)rrrTerrorrr)rcountros r5parse_column_countz MySQLProtocol.parse_column_count sQ I%%fQRj1!4EL j) I !>?S H IsA  AA c tj|dd\}}tj|\}}tj|\}}tj|\}}tj|\}}tj|\}} tjd|\}}}}}|j ||dddd|tjz||f S#tj$r t ddwxYw)zParse a MySQL column-packet.r1Nz ==( (. 3}}Z8H s"s6{a'7 ) )'{O%a[M || 3 )s 2 3sA((B ; BB c $d}i}dg}d}|r|ddjd}n|jd}|D]T} |jddDcgc]}|jc}\}}|j d} t |||<V|Scc}w#t$r} t|| d} ~ wwxYw#t tf$rQ t|j d||<n/#t$r#} t|d |d t|d | d} ~ wwxYwYwxYw) zParse the statistics packetz)Failed getting COM_STATISTICS informationr7r1Ns :r*rz (:rr) splitstriprrr?intrxrrrepr) r with_headererrmsgrpairslblpairvvalros r5parse_statisticszMySQLProtocol.parse_statisticsJs7=.0 12J$$[1ELL-ED 6/3zz$/BC/B!AGGI/BCS **W%C Ss8C D 6$V,#5 6j) SS&szz'':;CH'S(F82cU!DI;a)HIsRS Ss_B B #B;B/ B B, B''B,/D?CD D &DD  DDc|}g}d}d}d} |s| |k(r ||fS|j|} | jdr| ddg} |j|} | jdr7| j| dd|j|} | jdr7| j| ddtjdj | }nG| ddk(r| ddkr|j | }d}n#d}tjt| dd}|||j|n| | t| | dz } 9) zRead MySQL text result Reads all or given number of rows from the socket. Returns a tuple with 2 elements: a list with all rows and the EOF packet. Nrsr1r7r)r) recvrrVrread_lc_string_listrXrbytesr) rsockversionr read_timeoutrreofrowdatairdatass r5read_text_resultzMySQLProtocol.read_text_resultgs\$  a5j*Sy)YY|,F  1 <0''8LL,!YY|4F''8 VABZ(33CHHUODc!fQi!mnnV,33E&*4EF{w2 G$#F++ FA-r7c|dtjk(rd}d}nk|dtjk(rd}d}nP|dtjtjfvrd}d}n&|dtj k(rd}d}n t d |d tjzr|j}||d tj||d |d fS) z%Parse an integer from a binary packetr>: :GF 1X++ +GF34 4 8i(( (mmoGvwwq8H!I!!LMMr7c|dtjk(rd}d}nd}d}||dtj||d|dfS)z)Parse a float/double from a binary packetrrt1j2|\}}|jt5j6|;| dt8j:k(s| ddk(r+t1j2|\}}|j|t1j2|\}} |j|j=|tA|Scc}w#t>$r|j|YwxYw)z(Parse values from a binary result packetrr*rrNr?)!rKr enumeraterVrrrrrrrrFLOATrDECIMAL NEWDECIMALrrDATEr rTIMErVECTORrrr_vector_to_pythonrBINARYr?UnicodeDecodeErrortuple) rfieldsrr}null_bitmap_lengthr null_bitmaprSrposrs r5_parse_binary_valuesz"MySQLProtocol._parse_binary_valuess"&kAo1a7'-a0B'CD'C!s1v'C D*+,$(#F+JC3a1}-.!a1}2DE d#Qx"" !% : :65 I  e$qi.. @@ $ 8 8 G  e$qi//1E1EFF $ > >vw O  e$q""## #'">">vuQx"P e$qY^^+"&"9"9&"A e$qY---"'"6"6v"> n>>uEFqY---qR"'"6"6v"> e$"'"6"6v">)MM%,,w"78O,VV}aEZ*)MM%()sL! LL21L2c8g}d}d}d} | ||fS| |k(r ||fSt|j|} | ddk(r|j| }d}n | ddk(rd}|j|| dd|}|||j |n| | t | | dz } )zwRead MySQL binary protocol result Reads all or given number of binary resultset rows from the socket. Nrr1r)r2r)rrrr)rVr) rrcolumnsrr}rrrrSrrs r5read_binary_resultz MySQLProtocol.read_binary_result8s c{Ezc{499\23FayCnnV,a227F12JP{v1 F##F++ FA!r7c\|ddk(s tdi} tj|ddd\}|d<tj|d\}|d<tj|d\}|d <|d d}tj|d\}|d <|S#t$r}td|d}~wwxYw) z(Parse a MySQL Binary Protocol OK packet.r1rzFailed parsing Binary OK packetr2Nrr* num_columns num_paramsrr)rrrCr)rok_pktros r5parse_binary_prepare_okz%MySQLProtocol.parse_binary_prepare_ok^sayA~ !BC C M-2^^F12J-J *FF>*,1NN61,E )FF=)+0>>&!+D (FF<(ABZF.3nnVQ.G +FF?+  M !BC L MsA8B B+ B&&B+cd}d}|dkr[|dk\rd}tj}n|dk\rd}tj}n|dk\rd}tj}nod }tj}n\d }|d krd }tj}nB|d krd}tj}n*|dkrd}tj}ntj}d}t j ||||fS)z0Prepare an integer for the MySQL binary protocolNriririrrr+rPirulrzrFr __class____name__rr8rX)rrr parametersrlong_data_usedr} query_attrsconverter_str_fallbackiteration_countr'rStypesr:data_lenquery_attr_namesrattr_valr(r_flagsr rfrparameter_countbitra_typea_values r5make_stmt_executezMySQLProtocol.make_stmt_executescc$i!m12  t9(*(e6O.O i G  !N :D* 8 H% +##d)a-A!56K 3z?*$2(o U=+qS1W~=+LL 7%//&:QQ.(%c*1-%.^^ &/%5%5 s+ 33E: "MM&)s+!LL1EMM%,,s5z":U"BC!*!1!1Ju-MM%,,s5z":U"BC!*!1!1Jw/MM SU):):7)C%DEe*++G45"+!2!2Ju-MM&++dE":;!*!1!1J(9(98=='IJ+/+H+H+O(VZMM&)(:(:HMM'JK+/+C+CE+J(VZMM&)+J--g6EMM%,,s5z":U"BC!*!1!1J*!OO445Y@ U__Z85??6;RRS37X#5&sX~6q9@@ID$++ELLT,Cd,JKq.t OOL ) OOE " OOO ,   "&[)99O&O & ell?;< MMKHKS6;;sC0KH I MM%//!, -E f% *qy8+ &6ux7G&HI g.  " g&"xx)Is6W9)r4rreturnr)r4rrfzTuple[str, bytes])rNzDict[str, str]rfr)r_rr` Optional[str]rfr)NFN)rhrrirSrjrSrkrSrlrgrcboolrmOptional[Dict[str, Any]]rfTuple[bytes, MySQLAuthPlugin])r|r#rirSrjrSr`rgr}rr_rr~rrkrgrlrgrNzOptional[Dict[str, str]]rrhrcrhrmrirfrj)r}rr_rr~rrfrrJ)rrrzOptional[bytes]rfr)r)rrrrrfr)rrrfr#)rrrfr$)rrrf Optional[int])r)rrrrSrfr!)rrrfr")T)rrrrhrfr%)rN) rr'rzTuple[int, ...]rrrrkrfzATuple[List[Tuple[Optional[bytes], ...]], Optional[EofPacketType]])rrrr!rfTuple[bytes, int])rrrr!rfzTuple[bytes, float])rM)rrr}rSrfzTuple[bytes, Decimal])rrr rrfz?Tuple[bytes, Optional[Union[datetime.date, datetime.datetime]]])rrrfz Tuple[bytes, datetime.timedelta])r%List[DescriptionType]rrr}rSrfzTuple[BinaryProtocolType, ...])rrN) rr'r+rmrrr}rSrrkrfzDTuple[List[Tuple[BinaryProtocolType, ...]], Optional[EofPacketType]])rrrfzDict[str, int])rrrfzTuple[bytes, int, int])rz'Union[datetime.date, datetime.datetime]rfrl)rz(Union[datetime.timedelta, datetime.time]rfrl)rHrrIrrrrfr)rnrNrMNF)rrrzSequence[BinaryProtocolType]rWr rrrXz Optional[Dict[int, Tuple[bool]]]r}rSrYz.Optional[List[Tuple[str, BinaryProtocolType]]]rZrhrfr)%rV __module__ __qualname____doc__ staticmethodr6rArFr\rarpDEFAULT_CHARSET_IDDEFAULT_MAX_ALLOWED_PACKETrrrrrrrrrrrrrrrrr)r,r1r4r;rFrJrernr7r5r/r/Xs *))4))4++<  ( ,0!26:,:,:,:, :, ) :,  :,0:, ':,:,x #')"<%)+//3',!26w9 w9w9w9 w9  w9  w9 w9#w9)w9-w9!%w9w90w9 'w9w9r)"<         @== EE11f,II  @(@&* ..!. . $ .   .`NN-N NN2 N N- N  N N&,88 #8 88--- I-->++4 8%88 8 ( 8|&* $$'$ $  $ $ $ $L"@@B(A6(A (A(AT5A75A 5A5AnTT.0!;?FJ',E E +E  E  E 9 E E DE !%E  E r7r/)>rq __future__rr rT collectionsrdecimalrrtypingrrr r r r r rrrHr constantsrrrrr conversionrerrorsrrrrrpluginsrrplugins.caching_sha2_passwordrr\r r!r"r#r$r%r&networkr'rr=r3 OK_STATUS EOF_STATUSrD ERR_STATUSLOCAL_INFILE_STATUSrsrtr/rnr7r5rs:3" -   'RR5M$     'j j r7