+
    i, c                   s   ^ RI t ^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RIt^ RI	t	^ RI
t
^ RIt^ RIt^ RIt^ RIt^ RIHtHtHt ^ RIHtHtHtHtHtHtHtHtHtHtHtHtH t H!t!H"t"H#t# ^ RI$H%t%H&t&  ^ RI't'Rt(. RNRNR	NR
NRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNRNR NR!NR"NR#NR$NR%Nt*R&]PV                  R',          ,          t,Rs-R]
P\                  3R(R/R) llt/R* t0. t1RjR+ lt2R, t3]	Ph                  ! R-]	Pj                  4      t6R. t7 ! R/ R4      t8 ! R0 R4      t9R1 t: ! R2 R	4      t; ! R3 R];4      t< ! R4 R
];4      t= ! R5 R];4      t>R6 t? ! R7 R];4      t@ ! R8 R4      tA ! R9 R]A4      tB ! R: R]B4      tC ! R; R4      tD ! R< R]D];4      tE ! R= R]D];4      tF]P                  tH ! R> R4      tI ! R? R];]I4      tJ ! R@ R];]I4      tK ! RA RB];4      tL ! RC R]L4      tM]N! ]P                  RD4      '       d    ! RE RF]L4      tP]*P                  RF4        ! RG R];4      tR ! RH R];4      tSRI tTRJ tU ! RK R];4      tVRL tW ! RM R];4      tX ! RN R]X4      tY ! RO R];4      tZRPRRQR/RR lt[RSR/RT lt\Rs]RU t^Rs_RV t`RsaRW tbRscRX td ! RY RZ4      teR[ tfRkR\ ltgR] thR^ ti]P                  R_8X  d   ^ R`IkHltlHmtm Ra tnRb toRc tpRd tqR# ]P                  Re8X  d   Rf tsRg tqRh ttRi tpR# ]ftq]gtpR#   ]) d    Rt( ELi ; i)l    N)URLError	HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote
_splittype
_splithost
_splitport
_splituser_splitpasswd
_splitattr_splitvalue	_splittagunquote_to_bytes
urlunparse)
addinfourladdclosehookTFRequestOpenerDirectorBaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessorProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandlerHTTPHandlerFileHandler
FTPHandlerCacheFTPHandlerDataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_openerbuild_openerpathname2urlurl2pathname
getproxiesurlretrieve
urlcleanupz%d.%d:N   Ncontextc                s    V'       d   \        VR 7      p\        V4      pM\        f   \        4       ;spM\        pVP                  WV4      # )r6   )HTTPSHandlerr/   _openeropen)urldatatimeoutr6   Zhttps_handleropeners   &&&$  '/usr/lib64/python3.14/urllib/request.pyr-   r-      sC    V $W5m,	'>)&;;s'**    c                 s
    V s R # N)r9   )r>      &r?   r.   r.      s    Gr@   c           	      s   \        V 4      w  rE\        P                  ! \        W4      4      ;_uu_ 4       pVP	                  4       pVR 8X  d4   V'       g,   \
        P                  P                  V4      V3uuRRR4       # V'       d   \        VR4      pM8\        P                  ! RR7      pVP                  p\        P                  V4       T;_uu_ 4        W3p	Rp
R	p^ p^ pRV9   d   \        VR,          4      pV'       d
   V! WV4       VP                  V
4      ;p'       dB   V\!        V4      ,          pVP#                  V4       V^,          pV'       g   KO  V! WV4       KZ   RRR4       RRR4       X^ 8  d   XV8  d   \%        RW3,          X	4      hX	#   + '       g   i     L<; i  + '       g   i     LG; i)
fileNZwbF)Zdeletecontent-lengthzContent-Lengthz1retrieval incomplete: got only %i out of %i bytesi    )r
   
contextlibZclosingr-   infoospathZnormpathr:   tempfileZNamedTemporaryFilename_url_tempfilesappendintreadlenZwriter   )r;   filenameZ
reporthookr<   Zurl_typerI   fpheadersZtfpresultZbssizerO   ZblocknumZblocks   &&&&           r?   r3   r3      st      _NH			GC.	/	/2'') vh77##D)72 
0	/ x&C--U;CxxH!!(+S&FBDDH7*7#3458.772;&%&E
"		% A:xT2 ' ! 
0F qyTD["?l"$ 	$ M1 S! 
0	/sH   F/ F/ F/AF/,F	!F	&1F	F	(F/F,'F//F?	c                  s    \          F  p  \        P                  ! V 4       K  	  \         R  \        '       d   RsR# R#   \         d     KE  i ; i):NNNN)rL   rH   ZunlinkOSErrorr9   )Z	temp_file    r?   r4   r4      sJ    #		IIi  $ 	qw   		s   >AAz:\d+$c                 s    V P                   p\        V4      ^,          pVR8X  d   V P                  RR4      p\        P	                  RV^4      pVP                  4       # )    Host)full_urlr   
get_header_cut_port_resublower)requestr;   host   &  r?   request_hostrc     sX     

CC=Drz!!&"- Ba(D::<r@   c                   s*  a  ] tR tRt o R/ RRR3R lt]R 4       t]P                  R 4       t]P                  R 4       t]R 4       t	]	P                  R	 4       t	]	P                  R
 4       t	R t
R tR tR tR tR tR tR tRR ltR tR tRtV tR# )r   i  NFc                s    Wn         / V n        / V n        R V n        W n        R V n        VP                  4        F  w  rxV P                  Wx4       K  	  Vf   \        V 4      pW@n	        WPn
        V'       d	   W`n        R # R # rA   )r[   rS   unredirected_hdrs_datar<   _tunnel_hostitems
add_headerrc   origin_req_hostunverifiablemethod)	selfr;   r<   rS   ri   rj   rk   keyvalue	   &&&&&&&  r?   __init__ZRequest.__init__  ss     !#
	 !--/JCOOC' *"*40O.( K r@   c                s    V P                   '       d'   R P                  V P                  V P                   4      # V P                  # )z{}#{})fragmentformat	_full_urlrl   rB   r?   r[   Request.full_url1  s.    ===>>$..$--@@~~r@   c                s    \        V4      V n        \        V P                  4      w  V n        V n        V P	                  4        R # rA   )r   rs   r   rq   _parse)rl   r;      &&r?   r[   ru   7  s/      (1$..(A%r@   c                s0    R V n         R V n        RV n        R # NrY   )rs   rq   selectorrt   rB   r?   r[   ru   >  s    r@   c                    V P                   # rA   )re   rt   rB   r?   r<   Request.dataD  s    zzr@   c                s    WP                   8w  d3   Wn         V P                  R 4      '       d   V P                  R 4       R# R# R# )Content-lengthN)re   
has_headerremove_header)rl   r<   rw   r?   r<   r{   H  s<    ::J /00""#34 1 r@   c                s    R V n         R # rA   )r<   rt   rB   r?   r<   r{   R  s	    	r@   c                s    \        V P                  4      w  V n        pV P                  f   \        RV P                  ,          4      h\        V4      w  V n        V n        V P                  '       d   \        V P                  4      V n        R # R # )Nzunknown url type: %r)	r
   rs   type
ValueErrorr[   r   ra   ry   r	   )rl   Zrest   & r?   rv   ZRequest._parseV  sf    $T^^4	4993dmmCDD#-d#3 	4=999		*DI r@   c                s@    V P                   e   RMRp\        V RV4      # )NPOSTGETrk   )r<   getattr)rl   Zdefault_methodr   r?   
get_methodZRequest.get_method^  s!    #'99#8etX~66r@   c                rz   rA   )r[   rt   rB   r?   get_full_urlZRequest.get_full_urlc  s    }}r@   c                s    V P                   R 8X  d%   V P                  '       g   V P                  V n        MW n         V P                  V n        Wn        R# )httpsN)r   rf   ra   r[   ry   )rl   ra   r      &&&r?   	set_proxyZRequest.set_proxyf  s:    99(9(9(9 $		DI MMDM	r@   c                s4    V P                   V P                  8H  # rA   )ry   r[   rt   rB   r?   	has_proxyZRequest.has_proxyn  s    }}--r@   c                >    W P                   VP                  4       &   R # rA   )rS   
capitalizerl   rm   valr   r?   rh   ZRequest.add_headerq  s    ),S^^%&r@   c                r   rA   )rd   r   r   r   r?   add_unredirected_headerZRequest.add_unredirected_headeru  s    36s~~/0r@   c                sJ    WP                   9   ;'       g    WP                  9   # rA   )rS   rd   rl   header_namerw   r?   r}   ZRequest.has_headery  s'    ||+ 6 6555	7r@   c                sl    V P                   P                  VV P                  P                  W4      4      # rA   )rS   getrd   )rl   r   defaultr   r?   r\   ZRequest.get_header}  s0    ||""&&{<> 	>r@   c                sv    V P                   P                  VR 4       V P                  P                  VR 4       R # rA   )rS   poprd   r   rw   r?   r~   ZRequest.remove_header  s,    d+"";5r@   c                sh    / V P                   CV P                  Cp\        VP                  4       4      # rA   )rd   rS   listrg   )rl   hdrsr   r?   header_itemsZRequest.header_items  s,    9$((9DLL9DJJL!!r@   )re   rs   rf   r<   rq   r[   rS   ra   rk   ri   ry   r   rd   rj   rA   )__name__
__module____qualname____firstlineno__rp   Zpropertyr[   ZsetterZdeleterr<   rv   r   r   r   r   rh   r   r}   r\   r~   r   __static_attributes____classdictcell____classdict__   @r?   r   r     s     !%r!%E!$  
 __   
   
[[5 5 
\\ +7
.-77>
6" "r@   c                   sj   a  ] tR tRt o R tR tR tR tR]P                  3R lt
RR ltR	 tR
tV tR# )r   i  c                sz    R \         ,          pRV3.V n        . V n        / V n        / V n        / V n        / V n        R# )zPython-urllib/%sz
User-agentN)__version__
addheadershandlershandle_openhandle_errorprocess_responseprocess_request)rl   Zclient_versionr   r?   rp   ZOpenerDirector.__init__  sB    +k9(.9: "!r@   c                s|   \        VR 4      '       g   \        R\        V4      ,          4      hRp\        V4       EF.  pVR
9   d   K  VP	                  R4      pVRV pW4^,           R pVP                  R4      '       db   VP	                  R4      V,           ^,           pW7^,           R p \        V4      pV P                  P                  V/ 4      p	WP                  V&   MDVR8X  d   TpV P                  p	M.VR8X  d   TpV P                  p	MVR8X  d   TpV P                  p	MK  V	P                  V. 4      p
V
'       d   \        P                  ! W4       MV
P!                  V4       R	pEK1  	  V'       d5   \        P                  ! V P"                  V4       VP%                  V 4       R# R#   \         d     ELi ; i)
add_parentz%expected BaseHandler instance, got %rF_Nerrorr:   responser`   T)redirect_requestdo_open
proxy_open)hasattr	TypeErrorr   Zdirfind
startswithrN   r   r   r   r   r   r   Z
setdefaultbisectZinsortrM   r   r   )rl   handlerZaddedmethiprotocolZ	conditionZjkindZlookupr   s   &&         r?   add_handlerZOpenerDirector.add_handler  s   w--C M* + + LDDD		#ABQxHqST
I##G,,NN3'!+a/aCDzt9D **..x<.4!!(+f$))j(..i'--((r2Hh0(EG !J MM$--1t$ / " s   +F,,F;:F;c                    R # rA    rt   rB   r?   closeZOpenerDirector.close      r@   c                sn    VP                  VR4      pV F  p\        Wc4      pV! V!  pVf   K  Vu # 	  R # )Nr   )r   r   )	rl   Zchainr   	meth_nameargsr   r   ZfuncrT   s	   &&&&*    r?   _call_chainZOpenerDirector._call_chain  s<     99T2&G7.D4[F!	  r@   Nc                s0   \        V\        4      '       d   \        W4      pMTpVe   W$n        W4n        VP
                  pVR,           pV P                  P                  V. 4       F  p\        Wv4      pV! V4      pK  	  \        P                  ! RVP                  VP                  VP                  VP                  4       4       V P                  WB4      p	VR,           pV P                  P                  V. 4       F  p\        Wv4      pV! WI4      p	K  	  V	# )NZ_requestzurllib.RequestZ	_response)
isinstancestrr   r<   r=   r   r   r   r   sysZauditr[   rS   r   _openr   )
rl   Zfullurlr<   r=   reqr   r   Z	processorr   r   s
   &&&&      r?   r:   ZOpenerDirector.open  s    gs##'(CC88 Z'	--11(B?I90Ds)C @ 			"CLL#((CKKIYZ::c( [(	..228R@I90DC*H A r@   c                s   V P                  V P                  R RV4      pV'       d   V# VP                  pV P                  V P                  WDR,           V4      pV'       d   V# V P                  V P                  RRV4      # )r   Zdefault_openr   Zunknownunknown_open)r   r   r   )rl   r   r<   rT   r      &&&  r?   r   ZOpenerDirector._open  s    !!$"2"2I"0#7M88!!$"2"2H")?*+.0M 0 0) .5 	5r@   c                s(   VR9   d+   V P                   R ,          pV^,          pRV,          p^pTpMV P                   pVR,           p^ pW1V3V,           pV P                  ! V!  pV'       d   V# V'       d   VRR3X,           pV P                  ! V!  # R# )httpzhttp_error_%sZ_errorr   http_error_defaultN)r   r   )r   r   )rl   Zprotor   dictr   Zhttp_errZ	orig_argsrT   s   &&*     r?   r   ZOpenerDirector.error   s    %%$$V,DGE'%/IHI$$D(IHY'$.!!4(M)%9:YFD##T** r@   )r   r   r   r   r   r   rA   )r   r   r   r   rp   r   r   r   socket_GLOBAL_DEFAULT_TIMEOUTr:   r   r   r   r   r   r   r?   r   r     s;     	"-%^	 "&v/M/M :5+ +r@   c            	      s   \        4       p\        \        \        \        \
        \        \        \        \        .	p\        \        P                  R 4      '       d   VP                  \        4       \        4       pV Fl  pV  Fc  p\!        V\"        4      '       d'   \%        WT4      '       d   VP'                  V4       K=  K?  \!        WT4      '       g   KR  VP'                  V4       Ke  	  Kn  	  V F  pVP)                  V4       K  	  V F  pVP+                  V! 4       4       K  	  V  F1  p\!        V\"        4      '       d   V! 4       pVP+                  V4       K3  	  V# )HTTPSConnection)r   r   r+   r&   r   r   r(   r'   r,   r*   r   r   clientrM   r8   Zsetr   r   Z
issubclassZaddZremover   )r   r>   Zdefault_classesZskipZklassZcheckhs   *      r?   r/   r/     s    F#^[.0C!;0B"$O t{{-..|,5D E%&&e++HHUO ,E))  ! u%  !57# ! aA1  Mr@   c                   s6   a  ] tR tRt o RtR tR tR tRtV t	R# )r   i=  i  c                    Wn         R # rA   parent)rl   r   rw   r?   r   ZBaseHandler.add_parent@  s    r@   c                r   rA   r   rt   rB   r?   r   ZBaseHandler.closeC  r   r@   c                s\    \        VR 4      '       g   R# V P                  VP                  8  # )handler_orderT)r   r   )rl   Zotherrw   r?   __lt__ZBaseHandler.__lt__G  s+    uo.. !!E$7$777r@   r   N)
r   r   r   r   r   r   r   r   r   r   r   r   r?   r   r   =  s     M8 8r@   c                   s.   a  ] tR tRt o RtR t]tRtV tR# )r,   iP  i  c                s    VP                   VP                  VP                  4       rTp^Tu;8:  d   R8  g!   M V P                  P	                  RWW4V4      pV# )i   ,  r   )codemsgrG   r   r   )rl   r`   r   r   r   r      &&&   r?   http_responseZ HTTPErrorProcessor.http_responseT  sN    "--x}}4 t!c!{{((4d<H r@   r   N)	r   r   r   r   r   r   https_responser   r   r   r   r?   r,   r,   P  s     M	 #Nr@   c                   &   a  ] tR tRt o R tRtV tR# )r   ia  c                s0    \        VP                  W4WR4      hrA   )r   r[   )rl   r   rR   r   r   r   s   &&&&&&r?   r   Z*HTTPDefaultErrorHandler.http_error_defaultb  s    d::r@   r   N)r   r   r   r   r   r   r   r   r   r?   r   r   a  s     ; ;r@   c                   sH   a  ] tR tRt o ^t^
tR tR t];t;t	;t
tRtRtV tR# )r   ie  c                s   VP                  4       pVR9   d   VR	9   g&   VR
9   d   VR8X  g   \        VP                  W4WR4      hVP                  RR4      pRpVP                  P                  4        U	U
u/ uF  w  rV	P                  4       V9  g   K  WbK   	  pp	p
\        TVR8X  d   RMRVVP                  RR7      # u up
p	i )-  r   HEADr    z%20T)rk   rS   ri   rj   )r   .  /  i3  i4  )r   r   )r   r   r   )rD   zcontent-type)	r   r   r[   replacerS   rg   r_   r   ri   )rl   r   rR   r   r   rS   newurlmZCONTENT_HEADERSkvZ
newheaderss   &&&&&&&     r?   r   Z$HTTPRedirectHandler.redirect_requestm  s     NN22qO7K&1;CLL$WAA U+<'*{{'8'8': ;':tq/9 ad':
 ;v()Vf)'*':':$(	* 	*;s   5B?B?c                s   R V9   d   VR ,          pMRV9   d   VR,          pMR# \        V4      pVP                  R
9  d   \        WcV: RV: R2WR4      hVP                  '       g#   VP                  '       d   \        V4      pRV^&   \        V4      p\        VR\        P                  R7      p\        VP                  V4      pV P                  WW4WV4      pVf   R# \        VR4      '       dx   VP                  ;qn        V	P                  V^ 4      V P                   8  g   \#        V	4      V P$                  8  d*   \        VP                  VV P&                  V,           WR4      hM/ ;p	;Vn        Vn        V	P                  V^ 4      ^,           W&   VP)                  4        VP+                  4        V P,                  P/                  WP0                  R	7      # )ZlocationuriNz - Redirection to url 'z' is not allowed/z
iso-8859-1)encodingsaferedirect_dictr=   )r   r   ftprY   )r   schemer   rI   Znetlocr   r   r   stringZpunctuationr   r[   r   r   r   r   max_repeatsrP   max_redirectionsinf_msgrO   r   r   r:   r=   )
rl   r   rR   r   r   rS   r   ZurlpartsZnewZvisiteds
   &&&&&&    r?   http_error_302Z"HTTPRedirectHandler.http_error_302  s     Z(FgU^F F#
 ??">>ADfM 
 }}}H~HHQKH%
 \0B0BDv.
 ##CTH; 3((*-*;*;;G'FA&$*:*::G 5 55d $s 2GA A 6 ?A@G@c'#*;!++fa014 		

{{[[99r@   zoThe HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
r   N)r   r   r   r   r   r   r   r   Zhttp_error_301Zhttp_error_303Zhttp_error_307Zhttp_error_308r   r   r   r   r   r?   r   r   e  s?      K !*N::x IWVNV^Vn~2Gr@   c                 s   \        V 4      w  rVP                  R 4      '       g   RpT pMtVP                  R4      '       g   \        RV ,          4      hRV9   d%   VP                  R4      pVP                  R V4      pMVP                  R ^4      pVR8X  d   RpV^V p\	        V4      w  rgVe   \        V4      w  rMR;rWW3# )r   N//zproxy URL with no authority: %rZ@rE   )r
   r   r   r   r   r   )
proxyr   Zr_scheme	authorityZhost_separatorZendZuserinfohostportuserpasswords
   &         r?   _parse_proxyr     s     "%(Fs##	 ""4((>FGG (?%]]3/N--^4C--Q'C"9CQsO	#I.H%h/h++r@   c                   s4   a  ] tR tRt o ^dtRR ltR tRtV tR# )r   i  Nc                s    Vf   \        4       pWn        VP                  4        F8  w  r#VP                  4       p\	        V RV,          W2V P
                  3R l4       K:  	  R # )Nz%s_openc                 s    V! WV4      # rA   r   )rr   r   r   s   &&&&r?   <lambda>Z'ProxyHandler.__init__.<locals>.<lambda>  s    Qt,r@   )r2   proxiesrg   r_   Zsetattrr   )rl   r   r   r;      &&  r?   rp   ZProxyHandler.__init__  sO    ? lG ID::<DD)d*$' -. )r@   c                s0   VP                   p\        V4      w  rVrxVf   TpVP                  '       d   \        VP                  4      '       d   R # V'       dp   V'       dh   \	        V4      : R\	        V4      : 2p	\
        P                  ! V	P                  4       4      P                  R4      p
VP                  RRV
,           4       \	        V4      pVP                  W4       WE8X  g   VR8X  d   R # V P                  P                  WP                  R7      # )N:asciiProxy-authorizationBasic r   r   )r   r   ra   proxy_bypassr	   base64	b64encodeencodedecoderh   r   r   r:   r=   )rl   r   r   r   Z	orig_typeZ
proxy_typer   r   r   Z	user_passZcredss   &&&&       r?   r   ZProxyHandler.proxy_open  s    HH	/;E/B,
("J888SXX..H#*4=#*8#46I$$Y%5%5%78??HENN0(U2BC8$h+"i7&: ;;##C#==r@   )r   rA   )	r   r   r   r   r   rp   r   r   r   r   r   r?   r   r     s     M	.> >r@   c                   sB   a  ] tR tRt o R tR tR tR	R ltR tRt	V t
R# )
r   i#  c                s    / V n         R # rA   passwdrt   rB   r?   rp   ZHTTPPasswordMgr.__init__%  s	    r@   c                s$  a a \        V\        4      '       d   V.pVS P                  9  d   / S P                  V&   R FN  o\        ;QJ d    . VV 3R lV 4       F  NK  	  5M! VV 3R lV 4       4      pW43S P                  V,          V&   KP  	  R# )Tc              3   sH   <"   T F  pSP                  VS4      x  K  	  R # 5irA   )
reduce_uri)Z.0udefault_portrl   s   & r?   Z	<genexpr>Z/HTTPPasswordMgr.add_password.<locals>.<genexpr>/  s"       ?:=Q<00#s   "NTF)r   r   r  tuple)rl   realmr   r   r  reduced_urir  s   f&&&& @r?   add_passwordZHTTPPasswordMgr.add_password(  sz    c3%C#!#DKK'L%  ?:= ?%%  ?:= ? ?K/3nDKK{+ (r@   c                s    V P                   P                  V/ 4      pR FU  pV P                  W$4      pVP                  4        F-  w  rgV F"  pV P	                  W4      '       g   K  Vu u u # 	  K/  	  KW  	  R# )Tr  )NN)r  r   r	  rg   	is_suburi)	rl   r  authuriZdomainsr  reduced_authuriZurisZauthinfor   s	   &&&      r?   find_user_passwordZ"HTTPPasswordMgr.find_user_password3  sf    ++//%,'L"oogDO")--/C~~c;;'   #2 ( r@   c                s   \        V4      pV^,          '       d'   V^ ,          pV^,          pV^,          ;'       g    RpMRpTpRp\        V4      w  rxV'       d,   Vf(   Ve$   R^PRR/P                  V4      p	V	e   RWy3,          pWV3# )rX   r   Nr   r   i  z%s:%d)r   r   r   )
rl   r   r  partsr   r   rI   ra   portZdports
   &&&       r?   r	  ZHTTPPasswordMgr.reduce_uri=  s     881XFaI8??sD FID	*
DLV-?Rcs6{   #tm3	r@   c                s    W8X  d   R # V^ ,          V^ ,          8w  d   R# V^,          pVRR R8w  d
   VR,          pV^,          P                  V4      # )TFNr   rE   )r   )rl   basetestZprefixs   &&& r?   r  ZHTTPPasswordMgr.is_suburiT  sT    
 <7d1ga"#;#cMFAw!!&))r@   r  N)T)r   r   r   r   rp   r  r  r	  r  r   r   r   r   r?   r   r   #  s#     	=.* *r@   c                   r   )r   ic  c                sn    \         P                  WV4      w  r4Ve   W43# \         P                  V R V4      # rA   )r   r  )rl   r  r  r   r   r   r?   r  Z2HTTPPasswordMgrWithDefaultRealm.find_user_passworde  s=    (;;D<CE>!11$gFFr@   r   N)r   r   r   r   r  r   r   r   r   r?   r   r   c  s     G Gr@   c                   sR   a a ] tR tRt oV 3R ltRV 3R lltRR ltR tRtVt	V ;t
# )r   im  c                s2   < / V n         \        SV `	  4        R # rA   )authenticatedsuperrp   )rl   	__class__s   &r?   rp   Z%HTTPPasswordMgrWithPriorAuth.__init__o  s    r@   c                st   < V P                  W%4       Ve   \        SV `	  R W#V4       \        SV `	  WW44       R # rA   )update_authenticatedr  r  )rl   r  r   r   r  is_authenticatedr  s   &&&&&&r?   r  Z)HTTPPasswordMgrWithPriorAuth.add_passwords  s7    !!#8G s&9U6r@   c                s    \        V\        4      '       d   V.pR F+  pV F"  pV P                  WC4      pW P                  V&   K$  	  K-  	  R# TNr  )r   r   r	  r  )rl   r   r  r  r
  r  r   r?   r  Z1HTTPPasswordMgrWithPriorAuth.update_authenticatedz  sF    c3%C'L"ooa>2B"";/  (r@   c                s    R FU  pV P                  W4      pV P                   F1  pV P                  WC4      '       g   K  V P                  V,          u u # 	  KW  	  R# r  )r	  r  r  )rl   r  r  r  r      &&   r?   r  Z-HTTPPasswordMgrWithPriorAuth.is_authenticated  sJ    'L"oogDO))>>#77--c22 * (r@   )r  )F)r   r   r   r   rp   r  r  r  r   r   Z__classcell__)r  r   s   @@r?   r   r   m  s     7C3 3r@   c                   s   a  ] tR tRt o ]P
                  ! R]P                  4      tRR ltR t	R t
R tR tR	 t]t]tR
tV tR# )r    i  z1(?:^|,)[ 	]*([^ 	,]+)[ 	]+realm=(["']?)([^"']*)\2Nc                sd    Vf   \        4       pWn        V P                  P                  V n        R # rA   )r   r  r  )rl   Zpassword_mgrrw   r?   rp   Z!AbstractBasicAuthHandler.__init__  s'    *,L" KK44r@   c              #  s:  "   R p\         P                  P                  V4       F?  pVP                  4       w  rEpVR9  d   ^ RIpVP                  R\        ^4       WF3x  RpKA  	  V'       g+   V'       d   VP                  4       ^ ,          pMRpVR3x  R# R# 5i)FNzBasic Auth Realm was unquotedTrY   )"Z')r    rxZfinditerZgroupswarningsZwarnZUserWarningsplit)rl   headerZfound_challengeZmor   r   r  r"  s   &&      r?   _parse_realmZ%AbstractBasicAuthHandler._parse_realm  s     *--66v>B#%99; F5J&=)1. /!"O ? *4.  s   A,B/B7$Bc                s   VP                  V4      pV'       g   R # R pV FP  pV P                  V4       F8  w  rxVP                  4       R8w  d   TpK  Vf   K$  V P                  W#V4      u u # 	  KR  	  Ve   \	        RX: 24      hR # )Nbasicz@AbstractBasicAuthHandler does not support the following scheme: )Zget_allr%  r_   retry_http_basic_authr   )	rl   authreqra   r   rS   Zunsupportedr$  r   r  s	   &&&&&    r?   http_error_auth_reqedZ.AbstractBasicAuthHandler.http_error_auth_reqed  s     //'*F!%!2!26!:<<>W,"(K$  55dGG ";  " &) * * #r@   c                s   V P                   P                  W14      w  rEVe   V: RV: 2pR\        P                  ! VP	                  4       4      P                  R4      ,           pVP                  V P                  R 4      V8X  d   R # VP                  V P                  V4       V P                  P                  W"P                  R7      # R # )Nr   r  r   r   )r  r  r  r  r  r  r\   auth_headerr   r   r:   r=   )rl   ra   r   r  r   pwZrawauths   &&&&    r?   r'  Z.AbstractBasicAuthHandler.retry_http_basic_auth  s    ;;11%>>!2&Cf..szz|<CCGLLD~~d..5=''(8(8$?;;##C#==r@   c                s   \        V P                  R 4      '       d,   V P                  P                  VP                  4      '       g   V# VP	                  R4      '       g   V P                  P                  RVP                  4      w  r#RP                  W#4      P                  4       p\        P                  ! V4      P                  4       pVP                  RRP                  VP                  4       4      4       V# )r  AuthorizationNz{0}:{1}zBasic {})r   r  r  r[   r}   r  rr   r  r  Zstandard_b64encoder  r   strip)rl   r   r   r  ZcredentialsZauth_str   &&    r?   http_requestZ%AbstractBasicAuthHandler.http_request  s    %788{{++CLL99J~~o..;;99$MLD#**48??AK00=DDFH''(2(9(9(..:J(KM
r@   c                s   \        V P                  R 4      '       dk   ^VP                  u;8:  d   R8  d,   M M(V P                  P                  VP                  R4       V# V P                  P                  VP                  R4       V# )r  r   TF)r   r  r   r  r[   )rl   r   r   r   r?   r   Z&AbstractBasicAuthHandler.http_response  sc    4;; 233hmm)c)00tD  00uEr@   )r  r  rA   )r   r   r   r   recompileIr!  rp   r%  r)  r'  r0  r   https_requestr   r   r   r   r   r?   r    r      sM      
 1 DD
B5!**4
 !M"Nr@   c                   *   a  ] tR tRt o RtR tRtV tR# )r!   i  r-  c                D    VP                   pV P                  R WaV4      pV# )www-authenticate)r[   r)  )rl   r   rR   r   r   rS   r;   r      &&&&&&  r?   http_error_401Z#HTTPBasicAuthHandler.http_error_401   s(    ll--.@*-G=r@   r   N)r   r   r   r   r*  r9  r   r   r   r   r?   r!   r!     s     !K r@   c                   r5  )r"   i  r   c                r6  zproxy-authenticate)ra   r)  )rl   r   rR   r   r   rS   r   r   r8  r?   http_error_407Z$ProxyBasicAuthHandler.http_error_407  s+    
 HH	--.B*3'Cr@   r   N)r   r   r   r   r*  r;  r   r   r   r   r?   r"   r"     s     'K r@   c                   sT   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
 tRtV tR# )r#   i  Nc                s    Vf   \        4       pWn        V P                  P                  V n        ^ V n        ^ V n        R V n        R # rA   )r   r  r  retriednonce_count
last_nonce)rl   r  rw   r?   rp   Z"AbstractDigestAuthHandler.__init__%  s<    >$&F KK44r@   c                s    ^ V n         R# r    N)r<  rt   rB   r?   reset_retry_countZ+AbstractDigestAuthHandler.reset_retry_count.  s	    r@   c                s   VP                  VR 4      pV P                  ^8  d   \        VP                  RRVR 4      hV ;P                  ^,          un        V'       dg   VP	                  4       ^ ,          pVP                  4       R8X  d   V P                  W54      # VP                  4       R8w  d   \        RV,          4      hR # R # )Ni  zdigest auth failedZdigestr&  zEAbstractDigestAuthHandler does not support the following scheme: '%s')r   r<  r   r[   r#  r_   retry_http_digest_authr   )rl   r*  ra   r   rS   r(  r   s   &&&&&  r?   r)  Z/AbstractDigestAuthHandler.http_error_auth_reqed1  s    ++k40<<! CLL#/C#T+ + LLAL]]_Q'F||~)223@@7*  "?AG"H I I +	 r@   c                s   VP                  R ^4      w  r4\        \        R\        V4      4      4      pV P	                  W4      pV'       d{   RV,          pVP
                  P                  V P                  R4      V8X  d   R# VP                  V P                  V4       V P                  P                  WP                  R7      pV# R# )r   Nz	Digest %sr   )r#  parse_keqv_listZfilterparse_http_listget_authorizationrS   r   r*  r   r   r:   r=   )rl   r   r,  ZtokenZ	challengechalZauth_valZresps   &&&     r?   rA  Z0AbstractDigestAuthHandler.retry_http_digest_authE  s    ::c1-vdOI,FGH%%c0"T)H{{t//6(B''(8(8(C;;##C#=DK r@   c                s    V P                   : R V: R \        P                  ! 4       : R 2pVP                  R4      \	        ^4      ,           p\
        P                  ! V4      P                  4       pVR,          # )r   r   :Ni   N)r=  timeZctimer  _randombyteshashlibsha1	hexdigest)rl   noncesZbZdigr  r?   
get_cnonceZ$AbstractDigestAuthHandler.get_cnonceQ  sR      ++UDJJLAHHWQ/ll1o'')3xr@   c                s    VR ,          pVR,          pVP                  R4      pVP                  RR4      pVP                  RR4      pT P                  T4      w  rTf   R# T P                  P	                  Y1P
                  4      w  rT
f   R# TP                  e   T P                  TP                  T4      pMRpT
: RT: RT: 2pTP                  4       : RTP                  : 2pTf   T	! T! T4      T: RT! T4      : 24      pMRTP                  R	4      9   d   Y@P                  8X  d   T ;P                  ^,          un        M^T n        Y@n        R
T P                  ,          pT P                  T4      pT: RT: RT: RR: RT! T4      : 2	pT	! T! T4      T4      pM\        RT,          4      hRT
: RT: RT: RTP                  : RT: R2pT'       d   TRT,          ,          pT'       d   TRT,          ,          pTRT,          ,          pT'       d   TRX: RX: R2,          pT#   \         d     R# i ; i)r  rK  qop	algorithmMD5opaqueNr   r,  ,z%08xzqop '%s' is not supported.z
username="z
", realm="z
", nonce="z", uri="z", response="r   z, opaque="%s"z, digest="%s"z, algorithm="%s"z, qop=auth, nc=z
, cnonce=")r   KeyErrorget_algorithm_implsr  r  r[   r<   get_entity_digestr   ry   r#  r>  r=  rM  r   )rl   r   rE  r  rK  rN  rO  rQ  HKDr   r+  ZentdigZA1ZA2ZrespdigZncvalueZcnonceZnoncebitr  s   &&&                 r?   rD  Z+AbstractDigestAuthHandler.get_authorization\  s   		MEME((5/Ce4I XXh-F ((39;;11%F< 88++CHHd;FF+(&
 ;25!B% 89Gsyy~%'  A% #$ "'t///G__U+F+0'661R5QH2)G 7#=>>
 #'ucll")+ Of,,DOf,,D"Y..HHDg  		s   AH6 6IIc                s~   a VR 8X  d   R oM(VR8X  d   R oMVR8X  d   R oM\        RV,          4      hV3R lpSV3# )rP  c                 h    \         P                  ! V P                  R 4      4      P                  4       # r   )rH  Zmd5r  rJ  ZxrB   r?   r   ?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>  s    '++ahhw&78BBDr@   ZSHAc                 rX  rY  )rH  rI  r  rJ  rZ  rB   r?   r   r[    s    ',,qxx'89CCEr@   zSHA-256c                 rX  rY  )rH  Zsha256r  rJ  rZ  rB   r?   r   r[    s    '..'):;EEGr@   z.Unsupported digest authentication algorithm %rc                 s"   < S! V : R V: 24      # )r   r   )rL  drV  s   &&r?   r   r[    s    !q!,-r@   )r   )rl   rO  rW  rV  s   && @r?   rT  Z-AbstractDigestAuthHandler.get_algorithm_impls  sV     DA%EA)#GA  ,.78 9 9-"ur@   c                r   rA   r   )rl   r<   rE  r   r?   rU  Z+AbstractDigestAuthHandler.get_entity_digest  s    r@   )r  r>  r=  r  r<  rA   )r   r   r   r   rp   r@  r)  rA  rM  rD  rT  rU  r   r   r   r   r?   r#   r#     s4     I(
	<|  r@   c                   .   a  ] tR tRt o RtRtR tRtV tR# )r$   i  r-    c                s    \        VP                  4      ^,          pV P                  RWaV4      pV P                  4        V# )rX   r7  )r   r[   r)  r@  rl   r   rR   r   r   rS   ra   Zretryr8  r?   r9  Z$HTTPDigestAuthHandler.http_error_401  s>    %a(**+=+/g? r@   r   N)	r   r   r   r   r*  r   r9  r   r   r   r   r?   r$   r$     s      "KM r@   c                   r]  )r%   i  Proxy-Authorizationr^  c                sd    VP                   pV P                  R WaV4      pV P                  4        V# r:  )ra   r)  r@  r_  r8  r?   r;  Z%ProxyDigestAuthHandler.http_error_407  s4    xx**+?+/g? r@   r   N)	r   r   r   r   r*  r   r;  r   r   r   r   r?   r%   r%     s     'KM r@   c                   sB   a  ] tR tRt o R	R ltR tR tR tR tRt	V t
R# )
AbstractHTTPHandleri  Nc                sp    Ve	   Wn        R # \         P                  P                  P                  V n        R # rA   )r   r   HTTPConnection
debuglevel_debuglevel)rl   rc  rw   r?   rp   ZAbstractHTTPHandler.__init__  s$    )3)?:T[[E_E_EjEjr@   c                r   rA   rd  )rl   Zlevelrw   r?   set_http_debuglevelZ'AbstractHTTPHandler.set_http_debuglevel  s     r@   c                s    \         P                  P                  P                  VP                  VP                  4       4      # rA   )r   r   rb  _get_content_lengthr<   r   rl   r`   rw   r?   rg  Z'AbstractHTTPHandler._get_content_length  s2    {{))==LL " 	"r@   c                sn   VP                   pV'       g   \        R 4      hVP                  e   VP                  p\        V\        4      '       d   Rp\        V4      hVP                  R4      '       g   VP                  RR4       VP                  R4      '       g[   VP                  R4      '       gD   V P                  V4      pVe   VP                  R\	        V4      4       MVP                  RR4       TpVP                  4       '       d%   \        VP                  4      w  rx\        V4      w  riVP                  R4      '       g   VP                  RV4       V P                  P                   F?  w  rV
P                  4       p
VP                  V
4      '       d   K.  VP                  W4       KA  	  V# )no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-typez!application/x-www-form-urlencodedr|   Transfer-encodingZchunkedrZ   )ra   r   r<   r   r   r   r}   r   rg  r   r
   ry   r   r   r   r   )rl   r`   ra   r<   r   Zcontent_lengthZsel_hostr   ZselZsel_pathrK   rn      &&          r?   do_request_ZAbstractHTTPHandler.do_request_  sw   ||?++<<#<<D$$$Dn$%%n55//"79 &&'788#../BCC!%!9!9'!B!-33,c..AC 33/< $W%5%56KF!+CH!!&))++FH=;;11KD??$D%%d++//< 2
 r@   c           	     s4   VP                   pV'       g   \        R 4      hV! V3RVP                  /VB pVP                  V P                  4       \        VP                  4      pTP                  VP                  P                  4        UUu/ uF  w  rxWv9  g   K  WxbK  	  upp4       RVR&   VP                  4        U	U
u/ uF  w  rV	P                  4       V
bK  	  pp	p
VP                  '       d4   / pRpW9   d   Wl,          W&   Wl VP                  VP                  VR7         VP                  VP                  4       VP                  VP                   VVP#                  R4      R7       TP'                  4       pTP*                  '       d"   TP*                  P)                  4        RTn        TP-                  4       Tn        TP0                  Tn        T# u uppi u up
p	i   \$         d   p\        T4      hRp?ii ; i   TP)                  4        h ; i)	ri  r=   r   Z
Connectionr`  )rS   rj  )Zencode_chunkedN)ra   r   r=   Zset_debuglevelrd  r   rd   ZupdaterS   rg   Ztitlerf   Z
set_tunnelr`   r   ry   r<   r}   rV   Zgetresponser   Zsockr   r;   reasonr   )rl   Z
http_classr   Zhttp_conn_argsra   r   rS   r   r   rK   r   Ztunnel_headersZproxy_auth_hdrZerrr   s   &&&,           r?   r   ZAbstractHTTPHandler.do_open   s   
 xx?++ tCS[[CNC	))*s,,-):):)< -)<+ )< - 	. !(6=mmoFo4::<$oFN2N(181H. +LL))>LB		$		#..*CLL#((G),8K)L  N A 666FFLLNAF  " e- G   $sm#$	GGIs=   
G
G
G (AG& /H &H1G<<HH Hre  rA   )r   r   r   r   rp   rf  rg  rl  r   r   r   r   r   r?   ra  ra    s'     k!"
$L@ @r@   ra  c                   s>   a  ] tR tRt o R t]P                  tRtV t	R# )r&   iC  c                sV    V P                  \        P                  P                  V4      # rA   )r   r   r   rb  rl   r   rw   r?   	http_openZHTTPHandler.http_openE  s    ||DKK66<<r@   r   N)
r   r   r   r   ro  ra  rl  r0  r   r   r   r   r?   r&   r&   C  s     = '22Lr@   r   c                   sH   a  ] tR tRt o RR ltR t]P                  tRt	V t
R# )r8   iL  Nc                s2   Ve   TM#\         P                  P                  P                  p\        P                  W4       VfD   \         P                  P                  P                  p\         P                  P                  V4      pVe   W2n        W n	        R # rA   )
r   r   r   rc  ra  rp   Z	_http_vsnZ_create_https_contextcheck_hostname_context)rl   rc  r6   rp  Zhttp_versions   &&&& r?   rp   ZHTTPSHandler.__init__N  sk    '1'=4;;C^C^CiCiJ((:#{{::DD++;;LI))7&#Mr@   c                sn    V P                  \        P                  P                  VV P                  R 7      # r7   )r   r   r   r   rq  rn  rw   r?   
https_openZHTTPSHandler.https_openX  s-    << ; ;S(,   7 7r@   )rq  NNN)r   r   r   r   rp   rr  ra  rl  r4  r   r   r   r   r?   r8   r8   L  s     	$	7 ,77r@   r8   c                   s>   a  ] tR tRt o RR ltR tR t]t]tRt	V t
R# )r   i`  Nc                sV    ^ RI pVf   VP                  P                  4       pWn        R# r?  )Zhttp.cookiejar	cookiejarZ	CookieJar)rl   rt  r      && r?   rp   ZHTTPCookieProcessor.__init__a  s"    002I"r@   c                s<    V P                   P                  V4       V# rA   )rt  Zadd_cookie_headerrh  rw   r?   r0  Z HTTPCookieProcessor.http_requestg  s    ((1r@   c                s<    V P                   P                  W!4       V# rA   )rt  Zextract_cookies)rl   r`   r   r   r?   r   Z!HTTPCookieProcessor.http_responsek  s    &&x9r@   )rt  rA   )r   r   r   r   rp   r0  r   r4  r   r   r   r   r   r?   r   r   `  s      # !M"Nr@   c                   r   )r+   ir  c                s>    VP                   p\        R V,          4      h)zunknown url type: %s)r   r   )rl   r   r   ru  r?   r   ZUnknownHandler.unknown_opens  s    xx-455r@   r   N)r   r   r   r   r   r   r   r   r   r?   r+   r+   r  s     6 6r@   c                 s    / pV  F<  pVP                  R ^4      w  r4V^ ,          R8X  d   VR,          R8X  d   V^R pWAV&   K>  	  V# )=r   rE   )r#  )ZlZparsedZeltr   r      &    r?   rB  rB  w  sQ    Fyya Q43;1R5C<!BAq		 
 Mr@   c                 sj   . pR pR;r4V  Fj  pV'       d   W%,          pRpK  V'       d   VR8X  d   RpK*  VR8X  d   RpW%,          pK=  VR8X  d   VP                  V4       R pKY  VR8X  d   RpW%,          pKl  	  V'       d   VP                  V4       V Uu. uF  q"P                  4       NK  	  up# u upi )rY   F\Tr   rR  )rM   r.  )rL  ZresZpartZescaper   Zcurs   &     r?   rC  rC    s     CDFKDFd{KD#:JJtD#:E- 2 

4%()STJJLS)))s   B0c                   s4   a  ] tR tRt o RtR tR t]tRtV t	R# )r'   i  Nc                s   \         P                  fv    \        \        P                  ! R4      ^,          \        P                  ! \        P
                  ! 4       4      ^,          ,           4      \         n        \         P                  # \         P                  #   \        P                   d3    \        P                  ! R4      3\         n         \         P                  # i ; iN	localhost)r'   namesr  r   gethostbyname_exgethostnamegaierrorgethostbynamert   rB   r?   	get_namesZFileHandler.get_names  s    $I$)++K8;++F,>,>,@A!DE%F!
    {    ?? I%+%9%9+%F$H!   Is   A$B 5CCc                s   ^ RI p^ RIp\        VP                  RRR7      p \        P
                  ! V4      pVP                  pVP                  P                  VP                  RR7      pVP                  V4      ^ ,          pVP                  ! RT;'       g    RWg3,          4      p	\        VRR7      p
\        \        VR4      W4      #   \         d   p\!        YP"                  4      hRp?ii ; i)	r    NT)require_schemeresolve_host)Zusegmtz6Content-type: %s
Content-length: %d
Last-modified: %s
z
text/plain)
add_schemerb)Zemail.utils	mimetypesr1   r[   rH   ZstatZst_sizeZutilsZ
formatdateZst_mtimeZguess_file_typemessage_from_stringr0   r   r:   rV   r   rQ   )rl   r   emailr  Z	localfileZstatsrU   ZmodifiedmtyperS   Zorigurlexprk  r?   open_local_fileZFileHandler.open_local_file  s     dQUV		.GGI&E==D{{--ennT-JH--i8;E//K&&,789G #9>Gd9d3WFF 	.3--	.s   A6C 1C C0C++C0r   )
r   r   r   r   r{  r  r  Z	file_openr   r   r   r   r?   r'   r'     s     E!."  Ir@   c                 sj   V '       d   V R 8X  d   R#  \         P                  ! 4       pW8X  d   R#  V'       g   R#  \         P                  ! V 4      pT\        4       P                  4       9   #   \         P                  \        3 d     LYi ; i  \         P                  \        \
        3 d     R# i ; i)rz  TF)r   r}  r~  ZAttributeErrorr  ZUnicodeEncodeErrorr'   r  )r   ZresolveZhostnameaddressr   r?   _is_local_authorityr    s    	[0%%'   ! &&y1 km--/// OO^,  OO^-?@ s"   A- B -B
B B21B2c                   s,   a  ] tR tRt o R tR tRtV tR# )r(   i  c                sl   ^ RI p^ RIpVP                  pV'       g   \        R4      h\	        V4      w  rEVf   VP
                  pM\        V4      p\        V4      w  rdV'       d   \        V4      w  rgMRp\        V4      pT;'       g    RpT;'       g    Rp \        P                  ! V4      p\        TP                  4      w  rT	P                  R4      p\!        \#        \        T4      4      pTRR TR,          rT'       d   T^ ,          '       g
   TR,          pRp T P%                  YgYEYP&                  4      pT;'       d    R;'       g    RpT
 FA  p\)        T4      w  ppTP+                  4       R8X  g   K(  TR9   g   K1  TP-                  4       pKC  	  TP/                  Y4      w  ppRpTP1                  TP2                  4      ^ ,          pT'       d   TR	T,          ,          pTe   T^ 8  d   TR
T,          ,          p\4        P6                  ! T4      p\9        TTTP2                  4      #   \         d   p\        T4      hRp?ii ; i  \:         dX   pTe#   TP<                  '       g   TP?                  4        \A        TTPB                  4      '       d   \        RT 24      Thh Rp?ii ; i)r    Nzftp error: no host givenrY   r   rX   NNr3  Dr   zContent-type: %s
zContent-length: %d
ftp error: rE   )ZaZAr   r3  r\  r  )"ftplibr  ra   r   r   ZFTP_PORTrN   r   r   r	   r   r  rV   r   ry   r#  r   mapconnect_ftpr=   r   r_   upperretrfileZ
guess_typer[   r  r  r   Z	Exception	keepaliver   r   
all_errors)rl   r   r  r  ra   r  r   r  r   rI   ZattrsdirsrC   Zfwr   Zattrrn   rR   retrlenrS   r  r  s   &&                    r?   ftp_openZFTPHandler.ftp_open  sP   xx566%
<??Dt9D  %
'-LD&Ft}zzr2	 ''-D !.zz#C&'#2YRdQ8D	!!$D++NB<<C&&3D)$/e::<6):: ;;=D	 
 ++d1KBG((6q9E/%77"w!|1G;;//8Gb'3<<883  	 3-	 4  	~blll
#v0011SE23<	sI   H3 !/I (I >I B+I 3I>I		IJ3J.2<J..J3c           
     s     \        WW4WVR R7      # )F)
persistent)
ftpwrapper)rl   r   r  ra   r  r  r=   s   &&&&&&&r?   r  ZFTPHandler.connect_ftp  s    $D%*, 	,r@   r   N)r   r   r   r   r  r  r   r   r   r   r?   r(   r(     s     7r, ,r@   c                   sD   a  ] tR tRt o R tR tR tR tR tR t	Rt
V tR	# )
r)   i  c                sL    / V n         / V n        ^ V n        ^<V n        ^V n        R# r?  )cacher=   soonestdelay	max_connsrt   rB   r?   rp   ZCacheFTPHandler.__init__"  s%    

r@   c                r   rA   )r  )rl   trw   r?   
setTimeoutZCacheFTPHandler.setTimeout)  s    
r@   c                r   rA   )r  )rl   r   rw   r?   setMaxConnsZCacheFTPHandler.setMaxConns,  s    r@   c                sv   WVR P                  V4      V3pV P                  P                  V4      pVe   VP                  '       g0   Ve   VP	                  4        \        WW4WV4      ;qP                  V&   \        P                  ! 4       V P                  ,           V P                  V&   V P                  4        V# )r   )
joinr  r   r  r   r  rF  r  r=   check_cache)	rl   r   r  ra   r  r  r=   rm   connro   r?   r  ZCacheFTPHandler.connect_ftp/  s    $7zz~~c"<t~~~

%/d04&? ?D::c? IIK$**4Sr@   c                s   \         P                   ! 4       pV P                  V8:  dp   \        V P                  P	                  4       4       FH  w  r#W18  g   K  V P
                  V,          P                  4        V P
                  V V P                  V KJ  	  \        \        V P                  P                  4       4      4      V n        \        V P
                  4      V P                  8X  d   \        V P                  P	                  4       4       F1  w  r#W0P                  8X  g   K  V P
                  V V P                  V  M	  \        \        V P                  P                  4       4      4      V n        R # R # rA   )rF  r  r   r=   rg   r  r   ZminvaluesrP   r  )rl   r  r   r   s   &   r?   r  ZCacheFTPHandler.check_cache;  s   IIK<<1T\\//125JJqM'')

1Q	 3
 4 3 3 567 tzz?dnn,T\\//12$

1Q	 3
 tDLL$7$7$9:;DL -r@   c                s    V P                   P                  4        F  pVP                  4        K  	  V P                   P                  4        V P                  P                  4        R # rA   )r  r  r   Zclearr=   )rl   r  r   r?   clear_cacheZCacheFTPHandler.clear_cacheO  sB    JJ%%'DJJL (

r@   )r  r  r  r  r=   N)r   r   r   r   rp   r  r  r  r  r  r   r   r   r   r?   r)   r)     s(     
<( r@   c                   r   )r*   iU  c                s   VP                   pVP                  R ^4      w  r4VP                  R^4      w  rT\        P                  ! RV4      '       d   \	        R4      h\        V4      pVP                  R4      '       d   \        P                  ! V4      pVRR pV'       g   Rp\        P                  ! RV\        V4      3,          4      p\        \        P                  ! V4      Wb4      # )	r   rR  z[\x00-\x1F\x7F]z1Control characters not allowed in data: mediatypez;base64Nztext/plain;charset=US-ASCIIz$Content-type: %s
Content-length: %d
i)r[   r#  r1  Zsearchr   r   endswithr  Zdecodebytesr  r  rP   r   ioZBytesIO)rl   r   r;   r   r<   Z	mediatyperS   s   &&     r?   	data_openZDataHandler.data_openV  s     llyyQ'**S+	 99'33CE E  %i((%%d+D!#2I5I++,TD	"-# $ "**T*G99r@   r   N)r   r   r   r   r  r   r   r   r   r?   r*   r*   U  s      :  :r@   r  r  c                s   V'       g
   R V ,           p \        V 4      R,          w  r4p VR8w  d   \        R4      h\        P                  R8X  d   VR,          R8X  d
   W@,           p M\	        WB4      '       g   RV,           V ,           p MiV R,          R8X  d   V R	,          p MQV R
,          R8X  d   V R,          R9   d
   V R	,          p V R,          R8X  d   V R
,          R,           V R,          ,           p V P                  RR4      p M\	        WB4      '       g   \        R4      h\        P                  ! 4       p\        P                  ! 4       p\        WVR7      # )file:N   NrC   zURL is missing a 'file:' schement:rX   r5   Nr   r   ///r  :NrX   Nr   :r5   r  N|:r5   NNrx  z-file:// scheme is supported only on localhostr   errors)r   r  )
r   r   rH   rK   r  r   r   getfilesystemencodinggetfilesystemencodeerrorsr	   )r;   r  r  r   r   r   r  s   &$$    r?   r1   r1   {  s    m%c]2.Fs899	ww$S>S /C$Y=="S(CWb'C2w#~#c(j"8"g3x3"gmc"g-kk#t$ 99FGG((*H**,F3&99r@   r  c                sJ   \         P                  R 8X  d   V P                  RR4      p \        P                  ! 4       p\        P
                  ! 4       pV'       d   RMRp\         P                  P                  V 4      w  rVpV'       dj   VR,          R8X  d6   VR,          pVR,          P                  4       R8X  d   R	VR,          ,           pVR
,          R8X  d
   RV,           p\        WRVRR7      pMV'       d
   R	V,           p\        WrVR7      pWE,           V,           V,           # )r  rx  r   r  rY   N   Nz//?/:r  NNzUNC/r   r  r   r  z/:)r   r  r   r  )
rH   rK   r   r   r  r  rI   Z	splitrootr  r   )Zpathnamer  r   r  r   ZdriveZrootZtails   &$      r?   r0   r0     s     
ww$##D#.((*H**,F"WF))(3E 9"IERy F*uRy(9 EMEevDI	
 d{8D>D 4''r@   c                  J    \         f   \        P                  ! R4      s \         # ry  )
_localhostr   r  r   r@   r?   rz  rz    s      ))+6
r@   c                  s*   \         fA    \        \        P                  ! \        P                  ! 4       4      ^,          4      s \         # \         #   \        P
                   d/    \        \        P                  ! R4      ^,          4      s  \         # i ; iry  )	_thishostr  r   r|  r}  r~  r   r@   r?   thishostr    sw     	Gf55f6H6H6JKANOI 9  	Gf55kB1EFI	Gs   9A ;BBc                  s>    \         f   ^ R Ip V P                  s \         # rA   )
_ftperrorsr  r  )r  rW   r?   	ftperrorsr    s     &&
r@   c                  r  rx   )
_noheadersr  r  r   r@   r?   	noheadersr    s      ..r2
r@   c                   sN   a  ] tR tRt o RR ltR tR tR tR tR t	R	 t
R
tV tR# )r  i  Nc                s    Wn         W n        W0n        W@n        WPn        W`n        ^ V n        Wpn         V P                  4        R#    T P                  4        h ; ir?  )
r   r  ra   r  r  r=   refcountr  initr   )rl   r   r  ra   r  r  r=   r  s   &&&&&&&&r?   rp   Zftpwrapper.__init__  sM    				#	IIK	JJLs   A Ac                s   ^ RI p^ V n        VP                  4       V n        V P                  P	                  V P
                  V P                  V P                  4       V P                  P                  V P                  V P                  4       RP                  V P                  4      pV P                  P                  V4       R# )r    Nr   )r  busyZFTPr   Zconnectra   r  r=   Zloginr   r  r  r  cwd)rl   r  Z_targetrb   r?   r  Zftpwrapper.init  sw    	::<DIIt||<tyy$++.((499%Wr@   c                s   ^ RI pV P                  4        VR9   d   Rp^pMRV,           p^ p V P                  P                  V4       RpV'       d0   V'       g(    RV,           pV P                  P                  V4      w  rgV'       g   V P                  P                  R4       V'       d^   V P                  P                  4       p	  V P                  P                  V4        T P                  P                  T	4       R	T,           pMR
pV P                  P                  V4      w  rg^V n        \        VP                  R4      V P                  4      p
V ;P                   ^,          un        VP#                  4        V
X3#   TP                   d0    T P                  4        T P                  P                  T4        ELxi ; i  TP                   d2   p\        T4      R,          R8w  d   \        RT 24      Th Rp?ELRp?ii ; i  TP                   d   p\        RT,          4      ThRp?ii ; i  T P                  P                  T	4       i ; i)r    NzTYPE AzTYPE zRETR r  Z550r  zftp error: %rzLIST ZLISTr  )r\  r  )r  endtransferr   Zvoidcmdr  r  ZntransfercmdZ
error_permr   r   pwdr  r  r   Zmakefile
file_closer  r   )rl   rC   r   r  ZcmdZisdirr  r  rm  r  Zftpobjs   &&&        r?   r  Zftpwrapper.retrfile
  s   :XsqudNcAE	"HHS! Gn $ 5 5c : HHX&hhlln&MT* HHLL%n HH11#6MD	dmmD14??C

  G    	"IIKHHS!	" $$ Gv;r?e+"[#9:F ,G ",, M&'?@fLM HHLL%sM   F &G H	 <G GH&HH	H2H--H22H5 5Ic                s    V P                   '       g   R # ^ V n          V P                  P                  4        R #   \        4        d     R # i ; irA   )r  r   Zvoidrespr  rt   rB   r?   r  Zftpwrapper.endtransfer6  s>    yyy		HH{ 		s   9 AAc                sZ    R V n         V P                  ^ 8:  d   V P                  4        R# R# )FN)r  r  
real_closert   rB   r?   r   Zftpwrapper.close?  s$    ==AOO r@   c                s    V P                  4        V ;P                  ^,          un        V P                  ^ 8:  d'   V P                  '       g   V P                  4        R# R# R# )rX   N)r  r  r  r  rt   rB   r?   r  Zftpwrapper.file_closeD  sB    ==AdnnnOO '5r@   c                s    V P                  4         V P                  P                  4        R #   \        4        d     R # i ; irA   )r  r   r   r  rt   rB   r?   r  Zftpwrapper.real_closeJ  s5    	HHNN{ 		s   . A A)
r  r  r   ra   r  r  r  r  r=   r   )NT)r   r   r   r   rp   r  r  r  r   r  r  r   r   r   r   r?   r  r    s.      *!X
 r@   r  c                  s   / p . p\         P                   F  p\        V4      ^8  g   K  VR,          R8X  g   K%  VRR P                  4       R8X  g   K?  \         P                  V,          pVRR P                  4       pVP	                  W#V34       V'       g   K  W0V&   K  	  R\         P                  9   d   V P                  RR4       V F2  w  r#pVRR R8X  g   K  V'       d   W0V&   K   V P                  VR4       K4  	  V # )	i   r   Nr   ZREQUEST_METHODr   Z_proxyii)rH   ZenvironrP   r_   rM   r   )r   ZenvironmentrK   rn   Z
proxy_names        r?   getproxies_environmentr  R  s     GK

t9q=T"X_bc1Bg1MJJt$Ecr*JZ89u&+
#  2::%FD!#.Z9 &+
#J- $/ Nr@   c                 s   Vf   \        4       p VR,          pTR8X  d   R# T P                  4       p \        T 4      w  r4TP	                  R4       F  pTP                  4       pT'       g   K  TP                  R4      pTP                  4       pY58X  g   Y8X  d    R# RT,           pTP                  T4      '       g   T P                  T4      '       g   K   R# 	  R#   \         d     R# i ; i)NZnoFZ*TrR  .)r  rS  r_   r   r#  r.  Zlstripr  )ra   r   Zno_proxyhostonlyr  rK   r/  r?   proxy_bypass_environmentr  u  s     (*4= 3::<D%NHs#zz|4;;s#D::<D4<:D  &&$--*=*= $ )  s   	C C,+C,c                 s   ^ RI H p ^ RIHpHp \	        V 4      w  rVR pRV 9  d   VR,          '       d   R# Rp \        V! V4      4      pVP                  RR4       F  p	V	'       g   K  \        P                  ! R	V	4      p
V
e   Ve   V! V
P                  ^4      4      pV
P                  ^4      pVf0   ^V
P                  ^4      P                  R4      ^,           ,          pM\        VR
,          4      pV^ 8  g   V^ 8  d   K  ^ V,
          pW,	          W,	          8X  d    R# K  V! W	4      '       g   K   R# 	  R#   T d     Li ; i)r    fnmatch)AddressValueErrorIPv4Addressc                 s*   V P                  R 4      p\        \        \        V4      4      p\	        V4      ^8w  d   V. RO,           R,          pV^ ,          ^,          V^,          ^,          ,          V^,          ^,          ,          V^,          ,          # )r  r  )r    r    r    r    )r#  r   r  rN   rP   )ZipAddrr  r   r?   ip2numZ,_proxy_bypass_macosx_sysconf.<locals>.ip2num  sk    S!Se_%u:?\)2.EaB58r>2eAh!mDuQxOOr@   r  Zexclude_simpleTNZ
exceptionsz(\d+(?:\.\d+)*)(/\d+)?r  Fr   )r  Z	ipaddressr  r  r   rN   r   r1  matchZgroupZcount)ra   proxy_settingsr  r  r  r  r  r  ZhostIPrn   r   r  Zmasks   &&           r?   _proxy_bypass_macosx_sysconfr    s/     8%NHP $*++F[*+  ##L"5hHH.6=V/!''!*%D771:D|AGGAJ,,S1A5648}ax4"99DDL1 2 T!!/ 62 9  s   D> >EEc                 s    ^ RI H p \        V 4      w  rVP                  R4      pV F7  pVP                  4       pVR8X  d   RV 9  d    R# K&  V! W4      '       g   K6   R# 	  R# )r    r  ;z<local>r  TF)r  r   r#  r.  )ra   Zoverrider  r   Zproxy_overrider  r/  r?   _proxy_bypass_winreg_overrider    s`      GD^^C(Nzz|9$ T    r@   Zdarwin)_get_proxy_settings_get_proxiesc                 s,    \        4       p\        W4      # rA   )r  r  )ra   r  r   r?   proxy_bypass_macosx_sysconfr    s    ,.+DAAr@   c                  s    \        4       # rA   )r  r   r@   r?   getproxies_macosx_sysconfr    s     ~r@   c                 R    \        4       pV'       d   \        W4      # \        V 4      # rA   )r  r  r  ra   r   r   r?   r  r    s%     )*+D::.t44r@   c                  :    \        4       ;'       g    \        4       # rA   )r  r  r   r@   r?   r2   r2     s    %'FF+D+FFr@   r  c                  sT   / p  ^ RI p TP                  TP                  R4      pTP	                  TR4      ^ ,          pT'       Ed"   \        TP	                  TR4      ^ ,          4      pRT9  d   RT9  d   RP                  T4      pTP                  R4       FY  pTP                  R^4      w  rg\        P                  ! RT4      '       g"   TR9   d   RT,           pMTR8X  d
   RT,           pYpT&   K[  	  T P                  R4      '       d\   \        P                  ! RRT R,          4      pT P                  R	4      ;'       g    TT R	&   T P                  R
4      ;'       g    TT R
&   TP                  4        T #   \         d    T u # i ; i  \        \        \        3 d     T # i ; i)r    N;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnableZProxyServerrv  r  zhttp={0};https={0};ftp={0}z(?:[^/:]+)://r   r   zhttp://Zsockszsocks://z	^socks://z	socks4://)r   r   r   )winregImportErrorOpenKeyHKEY_CURRENT_USERQueryValueExr   rr   r#  r1  r  r   r^   ZCloserV   r   r   )r   r  internetSettingsproxyEnableZproxyServerZpr   r  s           r?   getproxies_registryr    s    	"	%~~f.F.FN P --.>/<>>?AK{!&"5"56F7D#FFG#I Jk)c.D">"E"Ek"RK$**3/A()Q%H88OW==#'??&/'&9G%0&07&:G(/H% 0 ;;w'' ff\;@PQG&-kk&&9&D&DWGFO'.{{7';'F'FwGG$""$ M  	N	B Y/ 	 	s;   E: =F CF 6F F "F :F
	F
F'&F'c                  r  rA   )r  r  r   r@   r?   r2   r2   F  s     &'@@+>+@@r@   c                 s>    ^ RI p TP                  TP                  R4      pTP	                  TR4      ^ ,          p\        TP	                  TR4      ^ ,          4      pT'       d	   T'       g   R# \        Y4      #   \         d     R# i ; i  \         d     R# i ; i)r    NFr  r  ZProxyOverride)r  r  r  r  r  r   rV   r  )ra   r  r  r  ZproxyOverriderw  r?   proxy_bypass_registryr  O  s    			%~~f.F.FN P --.>/<>>?AK 3 34D5D!FFG!I JM
 -,TAA  		  		s#   A; AB ;B
	B
BBc                 r  rA   )r  r  r  r  r   r?   r  r  c  s%     )*+D::(..r@   rs  rA   )ur  r   rF   r  rH  Zhttp.clientr   r  rH   r1  r   r   r   rF  rJ   Zurllib.errorr   r   r   Zurllib.parser   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   Zurllib.responser   r   ZsslZ	_have_sslr  Z__all__Zversion_infor   r9   r   r-   r.   rL   r3   r4   r2  ZASCIIr]   rc   r   r   r/   r   r,   r   r   r   r   r   r   r   r    r!   r"   ZurandomrG  r#   r$   r%   ra  r&   r   r   r8   rM   r   r+   rB  rC  r'   r  r(   r)   r*   r1   r0   r  rz  r  r  r  r  r  r  r  r  r  r  r  ZplatformZ_scproxyr  r  r  r  r  r2   rK   r  r  r   r@   r?   <module>r     s~  h       	 	 	   
   C B" " " " "
 5 I!.0I  1 3A 	 9	
 #
 %?  4 6Q  6 8E    "3 5B  +    "0  # %1   $ ((,,
F$B$B 2+2+h :x zz(BHH- k" k"ZI+ I+^"H8 8&# #";k ;o2+ o2d,B)>; )>V=* =*@Go G3#B 3>l# l#`3[ 4k   zzR RjK)B $
[*C 
s+ sl3% 3 4;;)**8* 8$ NN>"#+ #$6[ 6
)*V +  B0(<, <,|4j 4l!:+ !:L$: $:E $:N (  (J 
 	 
 
a aH!F J<@0 <<8:B5G WW_/bAB(/ (J+LI@  Is   0K2 2	K?>K?