PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB` ELF>@?@F@8@$$  HqHs  $$Ptd(((  QtdRtd GNUY*?Ԥo.Zo B oqtBE|pqX 8{\" Ck0Ph2": O]k$ K9 ' N:3gnuMvmua > N-8 [ZR"t>!@!3 0.{>! 8 `__gmon_start___init_fini_ITM_deregisterTMCloneTable_ITM_registerTMCloneTable__cxa_finalize_Jv_RegisterClasses_PyArg_ParseTupleAndKeywords_SizeTPyEval_SaveThreadPR_ShutdownPyEval_RestoreThread_Py_NoneStruct__stack_chk_failPyInt_TypePyInt_AsLongPR_ClosePyExc_ValueErrorPyErr_SetStringPR_OpenUDPSocketPR_OpenTCPSocketPyExc_DeprecationWarningPyErr_WarnExPyInt_FromLong_PyArg_ParseTuple_SizeTPR_ImportTCPSocketPR_GetSockNamePySequence_CheckPySequence_SizePyErr_NoMemoryPyMem_MallocPySequence_GetItemPyType_IsSubtypePR_PollPyTuple_NewPyTuple_SetItemPyMem_FreePyErr_OccurredPyExc_TypeErrorPR_NewTCPSocketPair_Py_BuildValue_SizeTfreereallocPR_RecvPyString_FromStringAndSizePyString_AsStringmemmovePyList_NewPyString_SizePyList_Append_PyString_ResizePR_ListenPR_AcceptReadPR_AcceptPR_GetSocketOption_Py_TrueStruct_Py_ZeroStructPyTuple_GetItemPR_SetSocketOptionPyString_FromStringPyString_FromFormatPR_GetHostByAddrPR_GetHostByNamePR_EnumerateHostEntPyUnicodeUCS4_AsASCIIStringPR_GetAddrInfoByNamePR_EnumerateAddrInfoPR_GetCanonNameFromAddrInfoPyTuple_SizePyString_FormatPyString_ConcatAndDelPyErr_FormatPR_FreeAddrInfoPR_ntohsPR_IntervalToMicrosecondsPR_IntervalToMillisecondsPR_IntervalToSecondsPR_MicrosecondsToIntervalPR_MillisecondsToIntervalPR_SecondsToIntervalPR_TicksPerSecondPR_IntervalNowPR_GetProtoByNumberPR_GetProtoByNamePR_htonlPR_htonsPR_ntohl__snprintf_chkPR_SendToPR_RecvFromPR_BindPR_ConnectPR_GetDescTypePR_SetNetAddrPR_FileDesc2NativeHandlePR_GetPeerNamePR_SendPR_NetAddrToStringinitioPyImport_ImportModulePyObject_GetAttrStringPyCObject_TypePyCObject_AsVoidPtrPy_InitModule4_64PyType_ReadyrindexPyModule_AddObjectPyCObject_FromVoidPtrPyModule_GetDictPyDict_GetItemStringPyModule_GetNamePyExc_SystemErrorPyModule_AddIntConstantlibnspr4.solibpython2.7.so.1.0libpthread.so.0libc.so.6_edata__bss_start_endGLIBC_2.4GLIBC_2.2.5GLIBC_2.3.4jii ui ti  ? ?  ,!a,!6,!a,!b,!6,!=,!6,!F-!b-!b -!a0-!a8-!LP-!L`-!Th-!L-![-!c-!T-!L-!g-!g-!l.!T.!a.!L .!u(.!L@.!uH.!L`.!uh.!ap.!L.!6.!ڤ.!@=!.!;!.!:!.!@C.!0@.!Ԟ.!i.! /!/!po/!` /!(/!o8/! @/!H/!nX/! `/!h/!nx/! /!t/!l/! /!y/!l/! /!/!`l/!@ /!^/!l/! 0!C0!k0! 0!((0!@k80! @0!H0!jX0! `0!h0!jx0! 0!ܞ0! j0! 0!*0! v0!` 0!Z0!Y0! !1!1!W1!! 1! (1!t81! @1! H1!VX1!@ `1!h1!Tx1!` 1!1!s1! 1!1! T1! 1!s1!D1!@ 1!1!1! 2!2!S2! 2!(2!@82! @2!؝H2!PX2! `2!˝h2!Ox2! 2! 2!q2! 2!2!p2!@ 2!2!2!@ 2!2!@p2! 3!3!G3!` 3!(3!@83! @3!H3!X3! `3!h3!PFx3!@ 3!3!K3! 3!3!@H3! 3!3!F3! 4!6 4!`4!ͤh4!x4!P4!դ4!4!4!4!Ї@5!ȠH5!@X5!!`5!h5! x5!@!5!=5! ^5!ߤ5!65!0F5!5!5!6!X6!p6!`i6!P^6!7!6!g6!!6!7!A(7!@!07! @!87!@8!h7! ex7!A7!Ј7!0@8!=H8!AX8!h8!'p8!A8!H8!8!~8!`*!9!69!`9!(9!=09!P@9!P9!"X9!h9!@x9!69!@F9!9!b9!i9! 9!R:!g0:!MX:!0^:!v:! :!C:!C:!:!PQ:!0!:!4!:!`4!(;!D8;!PC;!u;! C!A(>!8!0>!`@!8>!9!h>!{x>!p^    ( ) * 9 C E O T ] h l  ( 0 8 @ H  P  X  `  h p x                 ! " # $ % &( '0 +8 ,@ -H .P /X 0` 1h 2p 3x 4 5 6 7 8 9 : ; < = > ? @ A B D F G H I J K( L0 M8 N@ PH QP RX S` Uh Vp Wx X Y Z [ \ ^ _ ` a b c d e f g i j k l m nHH Ht3H5 % @% h%ږ h%Җ h%ʖ h%– h% h% h% hp% h`% h P% h @% h 0% h %z h %r h%j h%b h%Z h%R h%J h%B h%: h%2 h%* hp%" h`% hP% h@% h0% h % h% h% h% h %ڕ h!%ҕ h"%ʕ h#%• h$% h%% h&% h'p% h(`% h)P% h*@% h+0% h, %z h-%r h.%j h/%b h0%Z h1%R h2%J h3%B h4%: h5%2 h6%* h7p%" h8`% h9P% h:@% h;0% h< % h=% h>% h?% h@%ڔ hA%Ҕ hB%ʔ hC%” hD% hE% hF% hGp% hH`% hIP% hJ@% hK0% hL %z hM%r hN%j hO%b hP%Z hQ%R hR%J hS%B hT%: hU%2 hV%* hWp%" hX`% hYP% hZ@% h[0% h\ % h]% h^% h_% h`H H=z UH)HHw]H< Ht]@HQ H=J UH)HHHH?HHu]HO Ht]H@=) u'H=7 UHt H=ʍ =h] fffff.H= t&H HtUH= H]WKf.S11HH= 3 HtoHHPHSHPHSHP HSHP(HS HP0HS(HP8HS0HP@HS8HPHHS@HPPHSHHPXHSPHP`HSXHPhHS`HPpHShHPx[DATIUHSHHHt HՅuH1Ht[HL]A\@[]A\ff.SHHHtHǃH/t/HHtHǃH/uHGP01[HGP0SHHCH[H@fDHGHHGHG HHG HH10Ht H@H@H@ H@(HSHHHtHCH/tMH{ HtHC H/t&H{(HtHC(H/uHGP01[@HGP0fDHGP0fffff.ATIUHSHH0Ht HՅuH81Ht[HL]A\@[]A\ff.SHH0HtHǃ0H/t/H8HtHǃ8H/uHGP01[HGP0SHHCH[H@fDHwWHH10Ht=H@@H@(@@ H@0H@8H@@Hf.H(HHt H1DHG(HtHG(HHQHHt1DHHPHR01HUH x SHHHHGYHdH%(HD$1LD$D$1҅t=H{t$HHu?D$uC HB HHL$dH3 %(HuH[]@K11 H7ATH USHHHHXH0L dH%(HD$(1HD$LL$ HD$ D$H$14H|$ HH{t/H{IH{LHCT$tXt;H H5`H8HL$(dH3 %(uqH0[]A\HtHCk1ɐYHu1 @멐H H5_H8uxٽ fHc SHHH5#WH dH%(HD$1H[HL$ HT$D$ HD$1It%CHHHt$dH34%(uH [@17UHH5VSHdH%(H$1HT$ 1҅t[|$ HHHt$HHHuQ11l$H=  Ht@HXhHH$dH3 %(Hu@HĘ[]s11 H1D11 HD@ATIUSHĀdH%(HD$x1 I|$HHPHu)H,HT$xdH3%(uH[]A\11y f.AWHH5VUAVAUATUSH8dH%(HD$(1HL$HT$ HD$ `1t@H|$ H|$ HIHI9v2HHT$(dH3%(HH8[]A\A]A^A_@LHHHD$tMLd$L5 1H|$ HsHH1H]HIHxL9tH5 IGI$I/HHIH1HHIHHHIHfAt$H9H+HII93T$H|$DHHL1HI1MHl$t.fH} HHHLH`I9uH|$LOfIGLP0IGH4$LP0H4$fHCHP0H$HH4$f.H|$&H+u HCHP0MtI/t 1@IGLP01E1H H5lRH8H|$1ofHQ H5Z[H81IE1H1 H5RH8EH]11 Lfff.AUATUSHdH%(H$1H|$Hu=H|$Ht$ ;uH|$H$%tQH|$WH|$MH11c H$dH3 %('H[]A\A]fDH11l$ Ld$H=s  HHL`h11D$Ll$H=A s HHH=-QLhD`HH1HOH+toHEHP1HHU2HUHD$HR0HD$@H|$H>H|$4H1H+tHHCHP0HCHP0xSH7H{0HtHCHC0HHC8HC@[H@AUATUHSHHHG8@HtYH{0HH ~ H9HHNHH9? ~Hf: t HH9uH)H9I#L9(Hs@II)I)H{0HHs@HHC0Lc@L+c8yHs0Hs81H{DIALLcOMxtMLHC8HC8 H{0HtHC0HC81HC@H H[]A\A]1Lc8H{0LKHItvHk0HLHHiHk8H{0L)J4'HRHk8LH[]A\A]HL9IHC8HC@H[]A\A] 1E1HuH~dAUH ' IHHHMATUSHdH%(HD$1IH$o1PHI1)HxHHH$H~ H9H1LHHtEHLHuHPHHuHCHP0HHHu HCHP0fI,$uID$LP0fD1HL$dH3 %(uH[]A\A]L.fffff.SH HHHHLHdH%(HD$1IH$D1t H4$HHL$dH3 %(uH[DS1xHHtH(HHuH+t 1H[HCP0AWAVAUAATUHSH1H(dH%(HD$1HD$HHD$HHS8IHH9Hs0HLc8H{0HL)MHHD$tnHC0HC8HC@H{T$E1ILLLcMKt%H9tH|$aHD$HL$dH3 %(H([]A\A]A^A_ÐHHHS8H9t,H{0H)IH4/Lc8Hl$E1MH{0HtHC0HC8HC@lDHT$H*tEH{0HtWHC0HC81HC@1M ,1%fH|$HGP0}ffff.SH  HHHH9JH dH%(HD$1LL$ LD$HD$D$ 1tT$ Ht$HHL$dH3 %(uH [Dff.UH X SHHHHIHdH%(HD$1LD$D$1҅t,H{t$HHu/zHC{ HHL$dH3 %(Hu H[]DK11 H7AUH ATIHHH IUSH8dH%(HD$(1LL$ LD$D$D$ HD$HD$ .Hct$1HHD$HHD$I|$DL$ DD$HT$Ht$ HH$]Hs;\$tH|$Hc8xdH|$zHHtR11Ed$Ll$ H=- _ HHt3HL$H=HLhD`HH1HuK 11HD$HtHHQHHtSHtH+t8HtHmu HEHP0f1HL$(dH3 %(uAH8[]A\A]HCHP0@H|$HGP0f111 1qXAUH ATUHHHH1ۅnfDHHLHf9~RHL$H @1@1Q{H1DHH^ H56HH811Mffff.UL x H 1 SHHHH#.H8dH%(HD$(1HD$LD$D$HD$D$HD$HD$HD$ H$1+HD$x9{H{(HHD$HHC(t H/Hct$1HHD$ rHHD$ H{DL$T$1Hp$HD$L@9H?x{;\$tH|$ HcxVHD$ HL$(dH3 %(H8[]@1{H1HH\ H5S5HH81n1f.HT$ H*t%11S fHGP0@H|$ HGP0}ffff.UH SHHH5m,HdH%(HD$1HH$H$x9{H{(HH$HHC(tH/tbHH$H{HpYHu*H[ HHT$dH3%(upH[]11Q HGP01@1Q{H1DHH[ H53HH811Mffff.ULx H a SHHHH;+H8dH%(HD$(1HD$LL$ HD$ D$H$1FHD$ x9{H{(HHD$ HHC(tH/tpHHD$ H{T$HpHu3HOZ C HHL$(dH3 %(uuH8[]DS11 HGP01@1{H1HHY H5{2HH811{f.HHH5)dH%(HD$1HT$1t|$wHHL$dH3 %(uHDUSHHHHn8Hc HH-)f{1H=)HH1HHH=) HHH3HVHHH[]DH-4)H-G)H-(t@H-)d@L(H= APP1H-w -DHSHD$HR0HD$H[]D1UAVAUATUSHH0H IH8H Iċ{ 1HKH5(H=(HMHHE1LHHH=u0HHHHIMt ImMt I,$HtHEHPHHUt`HtHHPHHu HCHP0[]A\A]LA^fDL%W I$$L-V IEHEHP0@ID$LP0jIELP0CE11(fDE1AWIAVAAUATUSHHHt$HtILJH/IHtILJH/NH|$1 H:HIHMoE11f.LDLHHt*tAW9DDfLHt[HHIt]LHhU HH[]A\A]A^A_DHGP0@HGP0@H|$VHIuLHD$MHD$fDALp@@u~1Ht Ht 1HfGtL1HHkT HT$H5-H81M1衾11? 1Hp1HfOXAGHo>fff.UH  SHHHH$H8dH%(HD$(1HD$LL$LD$ HD$ D$H$1D$PH|$ HHWHv1mD$t  HHtHǃHHPHHyHHtHǃHHPHH?T$t$HKHD$ HtH@Hu'1HL$(dH3 %(H8[]f.HR H5,H8eHl$ HEHEHZHL$T$HHHHMHQHHUHHQHHFHPHR07fDHQ H5Z+H8RHWR0@HWR0{@Hmty1HHH f.HUHD$HR0HD$'H8Q H5+H8豼bHEHP0x11 8HP H5O*H8g(AUH ATUHHHH!SH8dH%(HD$(1LL$LD$ HD$ D$/HpP H5y*H8<H\$ HtzHCHthHH!HI}Dl$wDLHH HQHHu/HSHD$HR0HD$HO H5:*H8:1HL$(dH3 %(u@SH HHHHHdH%(HD$1LD$D$tNHGH H5#H8x/H8Ht+1ܳHL$dH3 %(u!H[fD1@HH H6fDH8Ht4HH舳HtHHf.1HfHGH5HPHG H81pHG(Ht'HH+HtHHD1HÐHGH5;HPH2G H81 H8HtHHHGH5HPHF H81HHfff.HG(HtH韵HHGH5HPHF H81蛵HHffffff.HStkHFt-HH蒰sHK1u,1[HQF H5J"H8躱[11 [H F H5!H8艱[fSHdH%(H$1ftNHH譱u)HH$dH3 %(u,H[D11 @H=ԱͰffff.USHHHHdH%(H$1 u|CftRf t,HtH$dH3 %(u]H[]{gH=xH1ò뽐{GH=RH1裲띐11 ffffff.ft $@H=԰@UH=SH^HHt0H5HHHtHPH;\D tBH(t,H+tH[]HCHH@0H[]DHR0HHHHմ HPHҴ HPHϴ HPH@ HmHô HĴ H+u HCHP0HG H5 H= 1A HH:H= d&H= .Hذ 賱H̰ HpH萱H= $H= .H sH HpHPH=ٮ H=ݮ .H 3H HpHH= 褮fH= .Hج H̬ HpHаH=Y 1H5HH谰H`HH57HHHtbHKH HHA H5;H8H1[]HmHEHP0fHEHP0H5H蝫oH轰Ht(H5H詮Ht=H謭H \H蘭HH>A H5H8H1[]7H5R H#HCHtH55H/HtH2H H5 HҪHHYH5HڭHtHݬH H51H耪RH蠯HH5-H舭HtH苬H ;H5H+HKHH5H3HtH6H H5H֩HH]H5HެHtHH H5t H聩SH衮HH5XH艬HtH茫H <HtHAH H5 HHHhH5I HHtHH - H5! 1H菤aH诩HH5 H藧HtH蚦H JH5 H: HZHH5 HBHtHEH H5 HHHlH5 HHtHH o H5c H萣bH谨HH5K H蘦HtH蛥H / KH5# H; H[HH5 HCHtHFH H5 HHHmH5 HHtHH H5 H葢cH豧HH5 H虥HtH蜤H | LH5p H<H\HH5^ HDHtHGH B H56 HHHnH5 HHtHH  H5 H蒡dH貦HH5 H蚤HtH蝣H MH5 H=H]HH5 HEHtHHH H5| HHHoH5j HHtHH N H5B H蓠eH賥HH5. H蛣HtH螢H  NH5 H>H^HH5 HFHtHIH H5 HH HpH5 HHtHH H5 H蔟fH贤HH5m H蜢HtH蟡H Q OH5E H?H_HH5( HGHtHJH H5 HH HqH5HHtHH H51H蘞jH踣HH5H蠡HtH裠H SH5}HCHcHH5gHKHtHNH KH5?HHHuH5HHtHH H5H虝kH蹢H H5H衠HtH褟H TH5HDHdHH5HLHtHOH vH5jHHHvH5IHHtHH -H5!H蚜lH躡H!H5H袟HtH襞H UXHH5 []BfHH|I:shutdown|O!i|si:makefilei:import_tcp_socketOI:pollInvalid content of poll_descs|l:readlines|l:readlinel|I:recv|I:listeni|I:accept_readNNN|I:accepti:get_socket_optionOIii:set_socket_optioniiI:set_socket_optioniO!O!:set_socket_optioniO!:set_socket_option<%s object at %p>O|is|ii:AddrInfo%s is uninitialized(OOi) addr[%d]=%s(iO)i:ntohsI:interval_to_microsecondsI:interval_to_millisecondsI:interval_to_secondsI:microseconds_to_intervalI:milliseconds_to_intervalI:seconds_to_intervali:get_proto_by_numbersNs:get_proto_by_namei:htonli:htonsi:ntohlPR_AF_INETPR_AF_INET6PR_AF_LOCALPR_AF_UNSPECunknown(%#x)s#O!|I:send_toiO!|I:recv_fromO!:bindO!|I:connecti:addr_family_namePR_DESC_FILEPR_DESC_SOCKET_TCPPR_DESC_SOCKET_UDPPR_DESC_LAYEREDPR_DESC_PIPE(ss)family=%s type=%sNone(ssOO)|OiiO:set_from_string|i:get_network_addressessocket not intializeds#|I:sendalls#|I:send|l:read|i:get_network_address%s:%d[%s]:%dnss.error_C_APImodule '%s' has no __dict__PR_AI_ALLPR_AI_V4MAPPEDPR_AI_ADDRCONFIGPR_AI_NOCANONNAMEPR_AI_DEFAULTPR_IpAddrNullPR_IpAddrAnyPR_IpAddrLoopbackPR_IpAddrV4MappedPR_SHUTDOWN_RCVPR_SHUTDOWN_SENDPR_SHUTDOWN_BOTHPR_SockOpt_NonblockingPR_SockOpt_LingerPR_SockOpt_ReuseaddrPR_SockOpt_KeepalivePR_SockOpt_RecvBufferSizePR_SockOpt_SendBufferSizePR_SockOpt_IpTimeToLivePR_SockOpt_IpTypeOfServicePR_SockOpt_AddMemberPR_SockOpt_DropMemberPR_SockOpt_McastInterfacePR_SockOpt_McastTimeToLivePR_SockOpt_McastLoopbackPR_SockOpt_NoDelayPR_SockOpt_MaxSegmentPR_SockOpt_BroadcastPR_INTERVAL_MINPR_INTERVAL_MAXPR_INTERVAL_NO_WAITPR_INTERVAL_NO_TIMEOUTPR_POLL_READPR_POLL_WRITEPR_POLL_EXCEPTPR_POLL_ERRPR_POLL_NVALPR_POLL_HUPiofamilyhostnameflagstimeoutamountbackloghowsizesizehintbufinterval_nowticks_per_secondcloseget_sock_nameget_peer_namefilenonew_tcp_pairnetaddrdesc_typeofficial name of hostaliasestuple of aliases for hostnss.io.AddrInfocanonical_namehostentryaddress as stringnetwork address portnss.io.Socketnss.io.HostEntrynss.io.NetworkAddressSocket initialization will require family parameter in future, default family parameter of PR_AF_INET is deprecated. Suggest using the family property of the NetworkAddress object associated with the socket, e.g. Socket(net_addr.family)type must be PR_DESC_SOCKET_TCP or PR_DESC_SOCKET_UDPpoll_descs is not a suitable sequenceget_socket_option: unknown optionset_socket_option: missing option argumentset_socket_option: option must be an intset_socket_option: unknown option<%s object at %p PRFileDesc %p>HostEntry objects only support IPv4, this property will be removed, use AddrInfo insteadaddr must be string, unicode or NetworkAddress objecthost=%s canonical=%s (%d addrs)Socket family (%s) does not match NetworkAddress family (%s)name=%s family=%s aliases=%s addresses=%sno address for "%s" in family %saddr must be an int or a stringaddr is an int, must be PR_IpAddrNull, PR_IpAddrAny, PR_IpAddrLoopback or PR_IpAddrV4Mappedfamily must be PR_AF_INET or PR_AF_INET6NetworkAddress initialization from a string parameter only works for IPv4, use AddrInfo instead.addr must be string or unicode objectUse iteration instead (e.g. for net_adder in hostentry), the port parameter is not respected, port will be value when HostEntry object was created.I/O operation on closed socketUse indexing instead (e.g. hostentry[i]), the port parameter is not respected, port will be value when HostEntry object was created.Cannot delete the port attributeThe port attribute value must be an integermodule '%s' already contains %ssocket family: PR_AF_INET, PR_AF_INET6, PR_AF_LOCAL, PR_AF_UNSPECNetworkAddress object bound to this socketsocket description: PR_DESC_FILE, PR_DESC_SOCKET_TCP, PR_DESC_SOCKET_UDP, PR_DESC_LAYERED, PR_DESC_PIPEaddress family (e.g. PR_AF_INET, etc.)Returns the hostname this object was initialized fromReturns the canonical name associated with the IP address or None if not knownHostEntry object representing this NetworkAddress (Warning: Deprecated, use AddrInfo instead)If an address string was used to construct this NetworkAddress then return the canonical hostname if available, otherwise the original address stringةЪةة88PPxxPةة8ةxЭxxPPxxxP0@ ; `(PpHhxȒ0HP((X(Phh(hh@hȨ H x  ( H H h X@ ط 8 x8 P p X  x ؼ 80 XH x` ؾ H @ p h X X((XXpX@XxxH `X(PzRx $Ȇ FJ w?;*3$"DA4d EBDD g GBF AAB8YAG H xAPx p  h9Gq$rAR E 4DEBDD g GBF AAB|YAG H HAPH@VGN=lP,AHT0| AAE 4LH^BHA TP  AABH p h $`yAQ0X AE ,AKG AAH 4 xvBDA DM  AABD LDtBLB B(A0A8Dp 8A0A(B BBBE <BBA A(G (A ABBG @AvdBBA D(G0 (A ABBD T (A ABBA h (A ABBE <\"BYA A(D@ (A ABBD $kA[ H AA P9Ak D LpBBB E(A0D8I` 8A0A(B BBBB $4 A[0] AA ,\AHT0k AAF <BIQ A(D`u (A ABBD <>BIA Q(G (A ABBA , AAT AAF ,<H_ADO AAD lx pxGk F `G F <`BUB A(D0k (A BBBH D4BIB Q(A0GS 0A(A BBBG <|hBIA Q(GT (A ABBB L^BBB E(A0A8D` 8A0A(B BBBH  3Ai,8DMD@\D R A dZD P A ZD P A ZD P A @ZD P A ZD P A  ZD P A $ DI< DI4T VBKA G  AABA $ 8AQw AF  [D Q A  \D R A  @[D Q A  nDj B },4 гsAHTp AAD ,d AOTP AAE , #AHQ0 AAD , VAOTP AAF  [D Q A 4 0?AAG0 AAF  AAF <L 8BBB A(A0 (A BBEG L TBEE B(A0C8DP  8A0A(B BBBF , (AHTP6 AAK < iBIA Q(D`  (A ABBF L ,4d UBDD u GBH AAB , $$ 8A[ p AC < AAG \ AAI B AAD PCA4 1T\L 8=DR J \l X1DU G O$ xYAD| AF , AHMP AAD , PAHMP AAD <BIA A(T@  (A ABBE $TA[ l AG |`PU K FXPMU F FDXkAUk,Ds I \ D P A \$XAGQ AF ,DAFNQ AAH t`\h.AHD A AAH O AAG  CAE  CAE PA?? :FZj 8 `  o( 0    / oooo 69F9V9f9v999999999::&:6:F:V:f:v:::::::::;;&;6;F;V;f;v;;;;;;;;;<<&<6<F<V<f<v<<<<<<<<<==&=6=F=V=f=v=========>>&>6>F>V>f>v>>>>>>>>>??&?6?This module implements the NSPR IO functions addr_family_name(family) -> string :Parameters: family : int An address family constant, (i.e. PR_AF_INET) Given an address family constant returns the string name. Converts platform-dependent intervals to standard clock microsecondsConverts platform-dependent intervals to standard clock millisecondsConverts platform-dependent intervals to standard clock secondsConverts standard clock microseconds to platform-dependent intervals.Converts standard clock milliseconds to platform-dependent intervals.Converts standard clock seconds to platform-dependent intervals.An integer between 1000 and 100000 indicating the number of ticks per second counted by PRIntervalTime on the current platform. The value returned by ticks_per_second() lies between PR_INTERVAL_MIN and PR_INTERVAL_MAX. You can use the value returned by interval_now() to establish epochs and to determine intervals (that is, compute the difference between two times)Returns the protocol name and a tuple of aliases given the protocol's number. name, aliases = get_proto_by_number(number) Raises an exception if the lookup fails.Returns the protocol number given the protocol's name. Raises exception if lookup fails.32 bit conversion from host to network16 bit conversion from host to network32 bit conversion from network to host16 bit conversion from network to hostSocket(family=PR_AF_INET, type=PR_DESC_SOCKET_TCP) :Parameters: family : integer one of: - PR_AF_INET - PR_AF_INET6 - PR_AF_LOCAL type : integer one of: - PR_DESC_SOCKET_TCP - PR_DESC_SOCKET_UDP Create a new NSPR socket: import_tcp_socket(osfd) -> Socket :Parameters: osfd : integer file descriptor of the SOCK_STREAM socket to import Returns a Socket object that uses the specified socket file descriptor for communication. poll(poll_descs, timeout) -> (flags, ...) :Parameters: poll_descs : sequence of (Socket, flags) sequences flags is a bitwise OR of PR_POLL_* flags timeout : interval time how long to block Wait until at least one of the Socket objects is ready for the action in flags. Return a sequence of flags values, each representing the state of the corresponding Socket in poll_descs. new_tcp_pair() -> (Socket, Socket) Returns a pair of connected TCP sockets: data written to one can be read from the other and vice versa. makefile([mode[, buffersize]]) -> file object :Parameters: mode : string mode string identical to open(), e.g. 'r','w','rb', etc. buffersize : integer file buffer size Return a regular file object corresponding to the socket. The mode and buffersize arguments are as for the built-in open() function.fileno() -> integer Return the integer file descriptor of the socket. get_peer_name() -> NetworkAddress Return the network address for the connected peer socket. get_sock_name() -> NetworkAddress Return the network address for this socket. send_to(buf, addr, timeout=PR_INTERVAL_NO_TIMEOUT) -> amount :Parameters: buf : buffer a buffer of data to transmit addr : NetworkAddress object a NetworkAddress object to send to timeout : integer optional timeout value expressed as a NSPR interval Socket.send_to() blocks until all bytes are sent (unless the socket is in non-blocking mode), a timeout occurs, or an error occurs. In the case of a timeout or an error then a nss.error.NSPRError will be raised. The function returns the number of bytes actually transmitted. Note: Socket.send_to() is usually used with a UDP socket. sendall(buf, timeout=PR_INTERVAL_NO_TIMEOUT) -> amount :Parameters: buf : buffer a buffer of data to transmit timeout : integer optional timeout value expressed as a NSPR interval Socket.sendall() blocks until all bytes are sent (unless the socket is in non-blocking mode), a timeout occurs, or an error occurs. In the case of a timeout or an error then a nss.error.NSPRError will be raised. The function returns the number of bytes actually transmitted. send(buf, timeout=PR_INTERVAL_NO_TIMEOUT) -> amount :Parameters: buf : buffer a buffer of data to transmit timeout : integer optional timeout value expressed as a NSPR interval Socket.send() blocks until all bytes are sent (unless the socket is in non-blocking mode), a timeout occurs, or an error occurs. In the case of a timeout or an error then a nss.error.NSPRError will be raised. The function returns the number of bytes actually transmitted. recv_from(amount, addr, timeout=PR_INTERVAL_NO_TIMEOUT) -> buf :Parameters: amount : integer the maximum number of bytes to receive addr : NetworkAddress object a NetworkAddress object to receive from timeout : integer optional timeout value expressed as a NSPR interval Socket.recv_from() blocks until some positive number of bytes are transferred, a timeout occurs, or an error occurs. No more than amount bytes will be transferred. If the length of the returned buffer is 0 this indicates the network connection is closed. Note: Socket.recv_from() is usually used with a UDP socket. read(size=-1) :Parameters: size : integer If specified and non-negative the maximum number of bytes to receive otherwise read till EOF If the length of the returned buffer is 0 this indicates the network connection is closed. recv(amount, timeout=PR_INTERVAL_NO_TIMEOUT) -> buf :Parameters: amount : integer the maximum number of bytes to receive timeout : integer optional timeout value expressed as a NSPR interval Socket.recv() blocks until some positive number of bytes are transferred, a timeout occurs, or an error occurs. No more than amount bytes will be transferred. If the length of the returned buffer is 0 this indicates the network connection is closed. readlines([sizehint]) -> [buf] :Parameters: sizehint : integer optional, read approximately sizehint bytes before returning Read until EOF using Socket.readline() and return a list containing the lines thus read. If the optional sizehint argument is present and non-negative, instead of reading up to EOF, whole lines totalling approximately sizehint bytes are read. readline([size]) -> buf :Parameters: size : integer optional, read at most size bytes Read one entire line from the socket. If the size argument is present and non-negative, it is a maximum byte count (including the trailing newline) and an incomplete line may be returned. An empty string is returned on EOF (connection close). Note: Unlike stdio's fgets(), the returned string may contain null characters ('') if they occurred in the input. The trailing line ending character(s) are preserved in the string (but may be absent when a socket stream ends with an incomplete line). No line ending conversions are performed. This is because some network protocols require sequences in some parts of the protocol stream but permit (e.g. newline) endings in encapsulated portions of the protocol. It is up to the caller to make line endings canonical or to strip them altogether if necessary for their application. Both operations are trival and not considered a burden in light of the need to read exact protocol sequences. close() Close the socket. shutdown(how=PR_SHUTDOWN_BOTH) :Parameters: how : integer The kind of disallowed operations on the socket. May be one of the following the following: PR_SHUTDOWN_RCV Further receives will be disallowed. PR_SHUTDOWN_SEND Further sends will be disallowed. PR_SHUTDOWN_BOTH Further sends and receives will be disallowed. listen(backlog=5) :Parameters: backlog : integer The maximum length of the queue of pending connections. Socket.listen() turns the specified socket into a rendezvous socket. It creates a queue for pending connections and starts to listen for connection requests on the socket. The maximum size of the queue for pending connections is specified by the backlog parameter. Pending connections may be accepted by calling Socket.accept(). bind(addr) :Parameters: addr : NetworkAddress object address to bind to When a new socket is created, it has no address bound to it. Socket.bind() assigns the specified network address to the socket. If you do not care about the exact IP address assigned to the socket, create a NetworkAddress object using PR_INADDR_ANY. If you do not care about the TCP/UDP port assigned to the socket, set the port value of the NetworkAddress object to 0. Note that if Socket.connect() is invoked on a socket that is not bound, it implicitly binds an arbitrary address to the socket. Call Socket.get_sock_name to obtain the address (name) bound to a socket. accept_read(amount, timeout=PR_INTERVAL_NO_TIMEOUT) -> (Socket, NetworkAddress, buf) :Parameters: amount : integer the maximum number of bytes to receive timeout : integer optional timeout value expressed as a NSPR interval Socket.accept_read() combines the behavior of Socket.accept() and Socket.recv(). It accepts a new connection and after it performs an initial read on the new socket as Socket.recv() would it returns the newly created Socket and NetworkAddress objects for the peer as well as a buffer of data. Socket.accept_read() returns a tuple containing a new Socket object, a new Networkaddress object for the peer, and a bufer containing data from the first read on the Socket object. accept(timeout=PR_INTERVAL_NO_TIMEOUT) -> (Socket, NetworkAddress) :Parameters: timeout : integer optional timeout value expressed as a NSPR interval The socket is a rendezvous socket that has been bound to an address with Socket.bind() and is listening for connections after a call to Socket.listen(). Socket.accept() accepts the first connection from the queue of pending connections and creates a new socket for the newly accepted connection. The rendezvous socket can still be used to accept more connections. Socket.accept() blocks the calling thread until either a new connection is successfully accepted or an error occurs. If the timeout parameter is not PR_INTERVAL_NO_TIMEOUT and no pending connection can be accepted before the time limit, Socket.accept() raises a nss.error.NSPRError exception with the error code PR_IO_TIMEOUT_ERROR. Socket.accept() returns a tuple containing a new Socket object and Networkaddress object for the peer. connect(addr, timeout=PR_INTERVAL_NO_TIMEOUT) :Parameters: addr : NetworkAddress object address to connect to timeout : integer optional timeout value expressed as a NSPR interval Socket.connect() is usually invoked on a TCP socket, but it may also be invoked on a UDP socket. Both cases are discussed here. If the socket is a TCP socket, Socket.connect() establishes a TCP connection to the peer. If the socket is not bound, it will be bound to an arbitrary local address. Socket.connect() blocks until either the connection is successfully established or an error occurs. If the timeout parameter is not PR_INTERVAL_NO_TIMEOUT and the connection setup cannot complete before the time limit, Socket.connect() fails with the error code PR_IO_TIMEOUT_ERROR. If the socket is a UDP socket, there is no connection setup to speak of, since UDP is connectionless. If Socket.connect() is invoked on a UDP socket, it has an overloaded meaning: Socket.connect() merely saves the specified address as the default peer address for the socket, so that subsequently one can send and receive datagrams from the socket using Socket.send() and Socket.recv() instead of the usual Socket.send_to() and Socket.recv_from(). get_socket_option(option) The method return values varies depending on the option, see below: Set socket to non-blocking IO :: get_socket_option(PR_SockOpt_Nonblocking) -> bool Time to linger on close if data is present in socket send buffer. :: get_socket_option(PR_SockOpt_Linger) -> (polarity, interval) Allow local address reuse :: get_socket_option(PR_SockOpt_Reuseaddr) -> bool Keep connections alive :: get_socket_option(PR_SockOpt_Keepalive) -> bool Allow IP multicast loopback :: get_socket_option(PR_SockOpt_McastLoopback) -> bool Disable Nagle algorithm. Don't delay send to coalesce packets. :: get_socket_option(PR_SockOpt_NoDelay) -> bool Enable broadcast :: get_socket_option(PR_SockOpt_Broadcast) -> bool Receive buffer size. :: get_socket_option(PR_SockOpt_RecvBufferSize) -> size Send buffer size. :: get_socket_option(PR_SockOpt_SendBufferSize) -> size Maximum segment size :: get_socket_option(PR_SockOpt_MaxSegment) -> size IP Time to Live :: get_socket_option(PR_SockOpt_IpTimeToLive) -> interval IP type of service and precedence :: get_socket_option(PR_SockOpt_IpTypeOfService) -> tos Add an IP group membership :: get_socket_option(PR_SockOpt_AddMember) -> (mcaddr, ifaddr) - mcaddr is a NetworkAddress object representing the IP multicast address of group - ifaddr is a NetworkAddress object representing the local IP address of the interface Drop an IP group membership :: get_socket_option(PR_SockOpt_DropMember) -> (mcaddr, ifaddr) - mcaddr is a NetworkAddress object representing the IP multicast address of group - ifaddr is a NetworkAddress object representing the local IP address of the interface Multicast Time to Live :: get_socket_option(PR_SockOpt_McastTimeToLive) -> interval Multicast interface address :: get_socket_option(PR_SockOpt_McastInterface) -> ifaddr - ifaddr is a NetworkAddress object representing the multicast interface address set_socket_option(option, ...) The method signature varies depending on the option, see below: Set socket to non-blocking IO :: set_socket_option(PR_SockOpt_Nonblocking, bool) Time to linger on close if data is present in socket send buffer. :: set_socket_option(PR_SockOpt_Linger, polarity, interval) Allow local address reuse :: set_socket_option(PR_SockOpt_Reuseaddr, bool) Keep connections alive :: set_socket_option(PR_SockOpt_Keepalive, bool) Allow IP multicast loopback :: set_socket_option(PR_SockOpt_McastLoopback, bool) Disable Nagle algorithm. Don't delay send to coalesce packets. :: set_socket_option(PR_SockOpt_NoDelay, bool) Enable broadcast :: set_socket_option(PR_SockOpt_Broadcast, bool) Receive buffer size. :: set_socket_option(PR_SockOpt_RecvBufferSize, size) Send buffer size. :: set_socket_option(PR_SockOpt_SendBufferSize, size) Maximum segment size :: set_socket_option(PR_SockOpt_MaxSegment, size) IP Time to Live :: set_socket_option(PR_SockOpt_IpTimeToLive, interval) IP type of service and precedence :: set_socket_option(PR_SockOpt_IpTypeOfService, tos) Add an IP group membership :: set_socket_option(PR_SockOpt_AddMember, mcaddr, ifaddr) - mcaddr is a NetworkAddress object representing the IP multicast address of group - ifaddr is a NetworkAddress object representing the local IP address of the interface Drop an IP group membership :: set_socket_option(PR_SockOpt_DropMember, mcaddr, ifaddr) - mcaddr is a NetworkAddress object representing the IP multicast address of group - ifaddr is a NetworkAddress object representing the local IP address of the interface Multicast Time to Live :: set_socket_option(PR_SockOpt_McastTimeToLive, interval) Multicast interface address :: set_socket_option(PR_SockOpt_McastInterface, ifaddr) - ifaddr is a NetworkAddress object representing the multicast interface address HostEntry(addr) :Parameters: addr : string or NetworkAddr object May be either a string or a NetworkAddr object. - If addr is string it is equivalent to GetHostByName. - If addr is a NetworkAddress object it is equivalent to GetHostByAddr. A HostEntry contains an official name of the host, a set of aliases for the host name, an address family and a set of network addresses (all within the single address family). After successful initialization the HostEntry object will contain an unordered sequence of `NetworkAddress` objects which may be accessed via iteration or indexing. It is suggested you try connecting with the each `NetworkAddress` object in sequential order until one succeeds. Example Usage:: host_entry = io.HostEntry(hostname) for net_addr in host_entry: net_addr.port = port sock = io.Socket(net_addr.family) try: sock.connect(net_addr, timeout=io.seconds_to_interval(1)) break except Exception, e: pass **WARNING:** HostEntry only supports IPv4 lookups and it's address list is unordered, HostEntry should be considered *deprecated*. Use `AddrInfo` instead. get_network_address(port=0) :Parameters: port : integer optional port value specifying the port to associate with the NetworkAddress. Returns the first network address associated with this HostEntry as a NetworkAddress object. Equivalent to get_network_addresses()[0]. Note, may return None if the HostEntry does not have address associated with it. get_network_addresses(port=0) Return a tuple of all possible network address associated with this HostEntry. Each item in the returned tuple is a NetworkAddress object. AddrInfo(hostname, family=PR_AF_UNSPEC, flags=PR_AI_ADDRCONFIG) :Parameters: hostname : str or unicode object Either a hostname or an address string (dotted-decimal for IPv4 or a hex string for IPv6. family : int May be: - PR_AF_UNSPEC - PR_AF_INET. flags : int May be either: - PR_AI_ADDRCONFIG - PR_AI_ADDRCONFIG | PR_AI_NOCANONNAME Include PR_AI_NOCANONNAME to suppress the determination of the canonical name corresponding to hostname. An object used to encapsulate network address information for a specific host. After successful initialization the AddrInfo object will contain an ordered sequence of `NetworkAddress` objects which may be accessed via iteration or indexing. It is suggested you try connecting with the each `NetworkAddress` object in sequential order until one succeeds. Example Usage:: try: addr_info = io.AddrInfo(hostname) except Exception, e: print "ERROR: could not resolve address for %s" % hostname return for net_addr in addr_info: net_addr.port = port sock = io.Socket(net_addr.family) try: sock.connect(net_addr, timeout=io.seconds_to_interval(1)) return except Exception, e: pass print "ERROR: could not connect to %s at port %d" % (hostname, port) Note, the NSPR interface to getaddrinfo() does not provide a way to select just IPv6 addresses. The solution is filter them yourself, e.g.:: for net_addr in addr_info: if net_addr.family != io.PR_AF_INET6: continue NetworkAddress(addr, port=0, family=PR_AF_INET) :Parameters: addr : string or integer may be an int or a string. port : integer port number family : integer one of: - PR_AF_INET - PR_AF_INET6 If addr argument is a string it may be either a numeric address or a DNS host name and is passed to the `AddrInfo` constructor along with the family parameter. The first address in the `AddrInfo` object is selected. If you need more fine grained control over which address is selected from the `AddrInfo` object then invoke `AddrInfo` and select one of the `NetworkAddress` it provides. If the addr argument is an integer it may be one of the following constants: PR_IpAddrNull Do not set the IP address, only set the port. NetworkAddress(PR_IpAddrNull, 123) is equivalent to NetworkAddress(port=123) PR_IpAddrAny Assign logical PR_INADDR_ANY to IP address. This wildcard value is typically used to establish a socket on which to listen for incoming connection requests. PR_IpAddrLoopback Assign logical PR_INADDR_LOOPBACK. A client can use this value to connect to itself without knowing the host's network address. PR_IpAddrV4Mapped Use IPv4 mapped address The optional port argument sets the port number in the NetworkAddress object. The port number may be modfied later by assigning to the port attribute. Example:: netaddr = nss.io.NetworkAddress('www.python.org') print '%s %s' % (netaddr, netaddr.hostname) netaddr = nss.io.NetworkAddress('82.94.237.218') print '%s %s' % (netaddr, netaddr.hostname) Output: 82.94.237.218:0 www.python.org 82.94.237.218:0 dinsdale.python.org **WARNING:** NetworkAddress initialization from a string only works with IPv4 and its use should be considered *deprecated*. Use `AddrInfo` instead. set_from_string(addr, family=PR_AF_INET) :Parameters: addr : string the address string to convert family : integer one of: - PR_AF_INET - PR_AF_INET6 - PR_AF_UNSPEC Reinitializes the NetworkAddress object given a string. Identical to constructing nss.io.NetworkAddress() with a string value (see `NetworkAddress` constructor for documentation). **WARNING:** NetworkAddress initialization from a string only works with IPv4 and its use should be considered *deprecated*. Use `AddrInfo` instead. a6ab6=6FbbaaLLTL[cTLgglTaLuLuLuaL6ڤ@=!;!:!@C0@Ԟi po` o n n tl yl `l@ ^l Ck (@k j j ܞ j * v` ZY !W! t V@ T` s T sD@  S @ ؝P ˝O q p@ @ @p G` @  PF@ K$ @H! F! 6ͤPդЇȠ@! @!= ^ߤ60F0`iP^7!gE!A@! @!@8! eAЈ0=A'AH~`*!6`=P"@6@Fbi RgHM0^vE CCPQ0!4!`4!DPCu@ C4!wE!pBB@5!?!5!ap_pAE#!@A8!`@!9!{p^io.so.debug@n7zXZִF!t/]?Eh=ڊ2N[E9~ºNiށ󐹶'tPLVsy?lWfumD9B~#RK gڻ z?9= ǾZJ }u|aBM4x0i%4xbC}эҜ[Nr{`ygq kNѥض.nD/+?+7<)W#v2\r>ɓՒ%]:u.:7a藫1σB3߿W0Ю{&ֺAF{1SR;KsaҥGe< D8uM7rSܲ47EHx@ -.pEk 'Չ~<]3-<%%cC=GRU-p}91ߝ(¼ XAS =nˢ>'(sR_(})oO!ssrݟdQIhJٕTo@W@y#\XFmדHp0kY--RMYBxn8,ՒϻW/G@s+# y+\8YQ̗5Rʍo82C1Paպu˺|/b:s)TbQ{3"nnUM!z-v H$€b۞qIy^ܵ|9ƩQG,Kŵt(>+{7%̘Hy 'ֺԒ8wťW lOLV8d@[ 0v/x!:_-M4oOQA"<t0f:x;!dF\y L 4)dƄre :>cwZ6+/|+uchL=C1_3Ł<.u3$<6Ɓ~+?v&Lʰ v*3?, 9:&\gYZ.shstrtab.note.gnu.build-id.gnu.hash.dynsym.dynstr.gnu.version.gnu.version_r.rela.dyn.rela.plt.init.text.fini.rodata.eh_frame_hdr.eh_frame.init_array.fini_array.jcr.data.rel.ro.dynamic.got.got.plt.data.bss.gnu_debuglink.gnu_debugdata $o<( 00 0( ( 8oEo@T^//  h88c 9 9 n@?@? ^t`` zpp(( 88      p  k >!> >>E