File "request.cpython-39.opt-2.pyc"

Full Path: /home/attunedd/public_html/byp/izo/con7ext_sym404/rintoar.txt/opt/alt/python39/lib64/python3.9/urllib/__pycache__/request.cpython-39.opt-2.pyc
File size: 58.82 KB
MIME-type: text/x-bytecode.python
Charset: 8 bit

a

XC?h@sddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddlZddlZddlZddlmZmZmZddlmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'ddl(m)Z)m*Z*zddl+Z+Wne,ydZ-Yn0dZ-gdZ.dej/dd	Z0da1de
j2fddddd
ddZ3d
dZ4gZ5dddZ6ddZ7e	8de	j9Z:ddZ;GdddZ<GdddZ=ddZ>GdddZ?Gddde?Z@Gd d!d!e?ZAGd"d#d#e?ZBd$d%ZCGd&d'd'e?ZDGd(d)d)ZEGd*d+d+eEZFGd,d-d-eFZGGd.d/d/ZHGd0d1d1eHe?ZIGd2d3d3eHe?ZJejKZLGd4d5d5ZMGd6d7d7e?eMZNGd8d9d9e?eMZOGd:d;d;e?ZPGd<d=d=ePZQeRejSd>rGd?d@d@ePZTe.Ud@GdAdBdBe?ZVGdCdDdDe?ZWdEdFZXdGdHZYGdIdJdJe?ZZdKdLZ[GdMdNdNe?Z\GdOdPdPe\Z]GdQdRdRe?Z^dSZ_ej`dTkrddUlambZbmcZcndVdWZbdXdYZciZdGdZd[d[ZeGd\d]d]eeZfdagd^d_Zhdaid`daZjdakdbdcZldamdddeZnGdfdgdgZodhdiZpddjdkZqdldmZrdndoZsejtdpkrPddqlumvZvmwZwdrdsZxdtduZydvdwZzdxdyZ{n6ej`dTkr~dzd{Z|d|dyZ{d}d~Z}ddwZznepZ{eqZzdS)N)URLError	HTTPErrorContentTooShortError)urlparseurlspliturljoinunwrapquoteunquote
_splittype
_splithost
_splitport
_splituser_splitpasswd
_splitattr_splitquery_splitvalue	_splittag	_to_bytesunquote_to_bytes
urlunparse)
addinfourladdclosehookFT)!RequestOpenerDirectorBaseHandlerHTTPDefaultErrorHandlerHTTPRedirectHandlerHTTPCookieProcessorProxyHandlerHTTPPasswordMgrHTTPPasswordMgrWithDefaultRealmHTTPPasswordMgrWithPriorAuthAbstractBasicAuthHandlerHTTPBasicAuthHandlerProxyBasicAuthHandlerAbstractDigestAuthHandlerHTTPDigestAuthHandlerProxyDigestAuthHandlerHTTPHandlerFileHandler
FTPHandlerCacheFTPHandlerDataHandlerUnknownHandlerHTTPErrorProcessorurlopeninstall_openerbuild_openerpathname2urlurl2pathname
getproxiesurlretrieve
urlcleanup	URLopenerFancyURLopenerz%d.%d)cafilecapath	cadefaultcontextc
Cs|s|s|rfddl}|dtd|dur2tdts>tdtjtjj||d}t	|d}t
|}	n0|r~t	|d}t
|}	ntdurt
a}	nt}	|	|||S)NrzJcafile, capath and cadefault are deprecated, use a custom context instead.r:zDYou can't pass both context and any of cafile, capath, and cadefaultzSSL support not available)r;r<)r>)
warningswarnDeprecationWarning
ValueError	_have_sslsslZcreate_default_contextZPurposeZSERVER_AUTHHTTPSHandlerr2_openeropen)
urldatatimeoutr;r<r=r>r?Z
https_handleropenerrL3/opt/alt/python39/lib64/python3.9/urllib/request.pyr0s04




r0cCs|adSN)rF)rKrLrLrMr1sr1c	Cslt|\}}tt||}|}|dkrR|sRtj||fWdS|rbt|d}nt	j
dd}|j}t
||||f}	d}
d}d}d}
d|vrt|d	}|r||
|
|||
}|sҐq|t|7}|||
d
7}
|r||
|
|qWdn1s0YWdn1s80Y|dkrh||krhtd||f|	|	S)NfilewbF)delete rcontent-lengthContent-Length1retrieval incomplete: got only %i out of %i bytes)r
contextlibclosingr0infoospathnormpathrGtempfileZNamedTemporaryFilename_url_tempfilesappendintreadlenwriter)rHfilename
reporthookrIZurl_typer\fpheaderstfpresultbssizercblocknumblockrLrLrMr6sH


Nr6c	CsBtD]&}zt|Wqty(Yq0qtdd=tr>dadSrN)r`r[unlinkOSErrorrF)Z	temp_filerLrLrMr7s
r7z:\d+$cCs<|j}t|d}|dkr&|dd}td|d}|S)NrVHost)full_urlr
get_header_cut_port_resublower)requestrHhostrLrLrMrequest_host+sr{c@seZdZdidddfddZeddZejddZejddZed	d
Zejdd
Zejdd
Zd
dZ	ddZ
ddZddZddZ
ddZddZddZd#ddZdd Zd!d"ZdS)$rNFc	Csl||_i|_i|_d|_||_d|_|D]\}}|||q,|durRt|}||_	||_
|rh||_dSrN)rtriunredirected_hdrs_datarI_tunnel_hostitems
add_headerr{origin_req_hostunverifiablemethod)	selfrHrIrirrrkeyvaluerLrLrM__init__=szRequest.__init__cCs|jrd|j|jS|jS)Nz{}#{})fragmentformat	_full_urlrrLrLrMrtOszRequest.full_urlcCs(t||_t|j\|_|_|dSrN)rrrr_parserrHrLrLrMrtUs
cCsd|_d|_d|_dSNrr)rrselectorrrLrLrMrt\scCs|jSrN)r}rrLrLrMrIbszRequest.datacCs(||jkr$||_|dr$|ddS)NContent-length)r}
has_header
remove_header)rrIrLrLrMrIfs

cCs
d|_dSrN)rIrrLrLrMrIpscCsNt|j\|_}|jdur(td|jt|\|_|_|jrJt|j|_dS)Nzunknown url type: %r)	rrtyperBrtrrzrr
)rrestrLrLrMrts
zRequest._parsecCs|jdurdnd}t|d|S)NPOSTGETr)rIgetattr)rZdefault_methodrLrLrM
get_method|szRequest.get_methodcCs|jSrN)rtrrLrLrMget_full_urlszRequest.get_full_urlcCs2|jdkr|js|j|_n||_|j|_||_dS)Nhttps)rr~rzrtr)rrzrrLrLrM	set_proxys

zRequest.set_proxycCs|j|jkSrN)rrtrrLrLrM	has_proxyszRequest.has_proxycCs||j|<dSrN)ri
capitalizerrvalrLrLrMrszRequest.add_headercCs||j|<dSrN)r|rrrLrLrMadd_unredirected_headerszRequest.add_unredirected_headercCs||jvp||jvSrN)rir|rheader_namerLrLrMrs
zRequest.has_headercCs|j||j||SrN)rigetr|)rrdefaultrLrLrMruszRequest.get_headercCs |j|d|j|ddSrN)ripopr|rrLrLrMrszRequest.remove_headercCsi|j|j}t|SrN)r|rilistr)rhdrsrLrLrMheader_itemsszRequest.header_items)N)__name__
__module____qualname__rpropertyrtsetterdeleterrIrrrrrrrrrurrrLrLrLrMr;s6





	

rc@sNeZdZddZddZddZddZd	ejfd
dZ	ddd
Z
ddZd	S)rcCs6dt}d|fg|_g|_i|_i|_i|_i|_dS)NPython-urllib/%sz
User-agent)__version__
addheadershandlershandle_openhandle_errorprocess_responseprocess_request)rZclient_versionrLrLrMrszOpenerDirector.__init__c	CsRt|dstdt|d}t|D]}|dvr6q&|d}|d|}||dd}|dr|d|d}||dd}zt|}WntyYn0|j	|i}	|	|j|<n>|dkr|}|j
}	n*|d	kr|}|j}	n|d
kr&|}|j}	nq&|	
|g}
|
r t|
|n
|
|d}q&|rNt|j|||dS)N
add_parentz%expected BaseHandler instance, got %rF)redirect_requestdo_open
proxy_open_rVerrorrGresponseryT)hasattr	TypeErrorrdirfind
startswithrbrBrrrrr
setdefaultbisectZinsortrarr)rhandlerZaddedmethiprotocolZ	conditionjkindlookuprrLrLrMadd_handlersL



zOpenerDirector.add_handlercCsdSrNrLrrLrLrMcloseszOpenerDirector.closec	Gs<||d}|D]&}t||}||}|dur|SqdS)NrL)rr)	rchainr	meth_nameargsrrfuncrkrLrLrM_call_chains
zOpenerDirector._call_chainNc
Cst|trt||}n|}|dur(||_||_|j}|d}|j|gD]}t||}||}qJt	
d|j|j|j|
|||}	|d}|j|gD]}t||}|||	}	q|	S)NZ_requestzurllib.RequestZ	_response)
isinstancestrrrIrJrrrrsysauditrtrir_openr)
rfullurlrIrJreqrrZ	processorrrrLrLrMrGs$



zOpenerDirector.opencCsP||jdd|}|r|S|j}||j||d|}|r>|S||jdd|S)NrZdefault_openrunknownunknown_open)rrr)rrrIrkrrLrLrMrs 

zOpenerDirector._opencGs~|dvr,|jd}|d}d|}d}|}n|j}|d}d}|||f|}|j|}|r^|S|rz|dd	f|}|j|SdS)
Nhttprrr:z
http_error_%srVZ_errorrrhttp_error_default)rr)rprotordictrZhttp_errZ	orig_argsrkrLrLrMrs 

zOpenerDirector.error)N)rrrrrrrsocket_GLOBAL_DEFAULT_TIMEOUTrGrrrLrLrLrMrs/
rc	Gst}ttttttttt	g	}t
tjdr2|
tt}|D]B}|D]8}t|trht||r|||qDt||rD||qDq<|D]}||q|D]}||q|D]}t|tr|}||q|S)NHTTPSConnection)rrr.r)rrr+r*r/r-rrclientrarEsetrr
issubclassaddremover)rrKZdefault_classesskipklassZcheckhrLrLrMr27s2	




r2c@s(eZdZdZddZddZddZdS)	rcCs
||_dSrN)parent)rrrLrLrMr^szBaseHandler.add_parentcCsdSrNrLrrLrLrMraszBaseHandler.closecCst|dsdS|j|jkS)N
handler_orderT)rr)rotherrLrLrM__lt__es
zBaseHandler.__lt__N)rrrrrrrrLrLrLrMr[src@seZdZdZddZeZdS)r/icCsH|j|j|}}}d|kr,dksDn|jd|||||}|S)N,r)codemsgrZrr)rryrrrrrLrLrM
http_responsersz HTTPErrorProcessor.http_responseN)rrrrrhttps_responserLrLrLrMr/nsr/c@seZdZddZdS)rcCst|j||||dSrN)rrt)rrrhrrrrLrLrMrsz*HTTPDefaultErrorHandler.http_error_defaultN)rrrrrLrLrLrMrsrc@s4eZdZdZdZddZddZeZZZ	dZ
dS)	r
c	st|}|dvr|dvs:|dvr(|dks:t|j|||||dd}dfdd	|jD}t|||jd
dS)N)-./i3)rZHEAD)rrrr z%20)rTzcontent-typecs"i|]\}}|vr||qSrL)rx.0kvZCONTENT_HEADERSrLrM
<dictcomp>sz8HTTPRedirectHandler.redirect_request.<locals>.<dictcomp>T)rirr)rrrtreplacerirrr)	rrrhrrrinewurlmZ
newheadersrLrrMrs
z$HTTPRedirectHandler.redirect_requestc
CsLd|vr|d}nd|vr$|d}ndSt|}|jdvrRt||d||f|||jsn|jrnt|}d|d<t|}t|dtj	d}t
|j|}|||||||}|durdSt
|d	r|j}	|_|	|d
|jkst|	|jkrt|j||j|||ni}	|_|_|	|d
d|	|<|||jj||jdS)
Nlocationurirrftprrz+%s - Redirection to url '%s' is not allowed/r:z
iso-8859-1)encodingsafe
redirect_dictrrVrJ)rschemerr\Znetlocrrr	stringZpunctuationrrtrrr
rmax_repeatsrdmax_redirectionsinf_msgrcrrrGrJ)
rrrhrrrirurlpartsnewZvisitedrLrLrMhttp_error_302sH



z"HTTPRedirectHandler.http_error_302zoThe HTTP server returned a redirect error that would lead to an infinite loop.
The last 30x error message was:
N)rrrrrrrhttp_error_301http_error_303http_error_307rrLrLrLrMrs&<rc
Cst|\}}|ds d}|}nZ|ds6td|d|vrV|d}|d|}n|dd}|dkrnd}|d|}t|\}}|durt|\}}	nd}}	|||	|fS)Nr
//zproxy URL with no authority: %r@r:rS)rrrBrrr)
proxyrZr_scheme	authorityZhost_separatorendZuserinfohostportuserpasswordrLrLrM_parse_proxys$


r"c@s"eZdZdZdddZddZdS)rdNcCsP|durt}||_|D].\}}|}t|d||||jfddqdS)Nz%s_opencSs||||SrNrL)rrrrrLrLrM<lambda>!sz'ProxyHandler.__init__.<locals>.<lambda>)r5proxiesrrxsetattrr)rr&rrHrLrLrMrs
zProxyHandler.__init__cCs|j}t|\}}}}|dur"|}|jr6t|jr6dS|rv|rvdt|t|f}	t|	d}
|	dd|
t|}|
||||ks|dkrdS|jj||j
dSdS)N%s:%sasciiProxy-authorizationBasic rr)rr"rzproxy_bypassr
base64	b64encodeencodedecoderrrrGrJ)rrrrZ	orig_typeZ
proxy_typer r!rZ	user_passZcredsrLrLrMr$s"zProxyHandler.proxy_open)N)rrrrrrrLrLrLrMrs
rc@s6eZdZddZddZddZd
dd	Zd
dZdS)r cCs
i|_dSrN)passwdrrLrLrMrBszHTTPPasswordMgr.__init__cs\t|tr|g}|jvr$ij|<dD].tfdd|D}||fj||<q(dS)NTFc3s|]}|VqdSrN)
reduce_uri)rudefault_portrrLrM	<genexpr>Lsz/HTTPPasswordMgr.add_password.<locals>.<genexpr>)rrr1tuple)rrealmrr r1reduced_urirLr5rMadd_passwordEs


zHTTPPasswordMgr.add_passwordc	Cs`|j|i}dD]H}|||}|D].\}}|D] }|||r6|Sq6q*qdS)Nr2NN)r1rr3r	is_suburi)	rr9authuriZdomainsr6reduced_authuriZurisZauthinforrLrLrMfind_user_passwordPsz"HTTPPasswordMgr.find_user_passwordTc
Cst|}|dr.|d}|d}|dp*d}nd}|}d}t|\}}|r~|dur~|dur~ddd|}	|	dur~d||	f}||fS)	NrVrr:r
Pirz%s:%d)rr
r)
rrr6partsrrr\rzportZdportrLrLrMr3Zs$zHTTPPasswordMgr.reduce_uricCsN||krdS|d|dkr dS|d}|dddkr@|d7}|d|S)NTrFrVrSr
)r)rbasetestprefixrLrLrMr=qszHTTPPasswordMgr.is_suburiN)T)rrrrr;r@r3r=rLrLrLrMr @s


r c@seZdZddZdS)r!cCs0t|||\}}|dur"||fSt|d|SrN)r r@)rr9r>r r!rLrLrMr@sz2HTTPPasswordMgrWithDefaultRealm.find_user_passwordN)rrrr@rLrLrLrMr!sr!cs<eZdZfddZd
fdd	ZdddZdd	ZZS)r"csi|_tj|i|dSrN)
authenticatedsuperrrrkwargs	__class__rLrMrsz%HTTPPasswordMgrWithPriorAuth.__init__Fcs<||||dur&td|||t||||dSrN)update_authenticatedrHr;)rr9rr r1is_authenticatedrKrLrMr;sz)HTTPPasswordMgrWithPriorAuth.add_passwordcCs>t|tr|g}dD]$}|D]}|||}||j|<qqdSNr2)rrr3rG)rrrNr6r4r:rLrLrMrMs
z1HTTPPasswordMgrWithPriorAuth.update_authenticatedcCsDdD]:}|||}|jD]"}|||r|j|SqqdSrO)r3rGr=)rr>r6r?rrLrLrMrNs

z-HTTPPasswordMgrWithPriorAuth.is_authenticated)F)F)rrrrr;rMrN
__classcell__rLrLrKrMr"s

r"c@sTeZdZedejZdddZddZddZ	d	d
Z
ddZd
dZeZ
eZdS)r#z1(?:^|,)[ 	]*([^ 	,]+)[ 	]+realm=(["']?)([^"']*)\2NcCs"|durt}||_|jj|_dSrN)r r1r;)rZpassword_mgrrLrLrMrsz!AbstractBasicAuthHandler.__init__ccspd}tj|D]6}|\}}}|dvr8tdtd||fVd}q|sl|r^|d}nd}|dfVdS)NF)"'zBasic Auth Realm was unquotedTrrr)r#rxfinditergroupsr?r@UserWarningsplit)rheaderZfound_challengeZmorr	r9rLrLrM_parse_realms
z%AbstractBasicAuthHandler._parse_realmc	Cs~||}|sdSd}|D]H}||D]8\}}|dkrB|}q(|dur(||||Sq(q|durztd|fdS)NbasiczBAbstractBasicAuthHandler does not support the following scheme: %r)Zget_allrZrxretry_http_basic_authrB)	rauthreqrzrriZunsupportedrYrr9rLrLrMhttp_error_auth_reqeds
z.AbstractBasicAuthHandler.http_error_auth_reqedcCs||j||\}}|durtd||f}dt|d}||jd|krTdS||j||j	j
||jdSdSdS)Nr(r+r)r)r1r@r-r.r/r0ruauth_headerrrrGrJ)rrzrr9r pwrawauthrLrLrMr\sz.AbstractBasicAuthHandler.retry_http_basic_authcCstt|jdr|j|js|S|dsp|jd|j\}}d||}t	|
}|dd||S)NrN
Authorizationz{0}:{1}zBasic {})
rr1rNrtrr@rr/r-Zstandard_b64encoder0rstrip)rrr r1ZcredentialsZauth_strrLrLrMhttp_requests
z%AbstractBasicAuthHandler.http_requestcCsLt|jdrHd|jkr"dkr8nn|j|jdn|j|jd|S)NrNrrTF)rr1rrMrt)rrrrLrLrMrs
z&AbstractBasicAuthHandler.http_response)N)rrrrecompileIrTrrZr^r\rer
https_requestrrLrLrLrMr#s

r#c@seZdZdZddZdS)r$rccCs|j}|d|||}|S)Nwww-authenticate)rtr^)rrrhrrrirHrrLrLrMhttp_error_401s
z#HTTPBasicAuthHandler.http_error_401N)rrrr_rkrLrLrLrMr$sr$c@seZdZdZddZdS)r%r*cCs|j}|d|||}|SNproxy-authenticate)rzr^)rrrhrrrirrrLrLrMhttp_error_407's
z$ProxyBasicAuthHandler.http_error_407N)rrrr_rnrLrLrLrMr%#sr%c@sNeZdZdddZddZddZdd	Zd
dZdd
ZddZ	ddZ
dS)r&NcCs4|durt}||_|jj|_d|_d|_d|_dSNr)r r1r;retriednonce_count
last_nonce)rr1rLrLrMrAs
z"AbstractDigestAuthHandler.__init__cCs
d|_dSro)rprrLrLrMreset_retry_countJsz+AbstractDigestAuthHandler.reset_retry_countcCs|||d}|jdkr*t|jdd|dn|jd7_|rx|d}|dkr`|||S|dkrxtd|dS)	Nizdigest auth failedrVrZdigestr[zEAbstractDigestAuthHandler does not support the following scheme: '%s')rrprrtrXrxretry_http_digest_authrB)rr_rzrrir]rrLrLrMr^Ms

z/AbstractDigestAuthHandler.http_error_auth_reqedcCsz|dd\}}ttdt|}|||}|rvd|}|j|jd|krRdS||j||j	j
||jd}|SdS)NrrVz	Digest %sr)rXparse_keqv_listfilterparse_http_listget_authorizationrirr_rrrGrJ)rrrbtokenZ	challengechalZauth_valZresprLrLrMruasz0AbstractDigestAuthHandler.retry_http_digest_authcCs@d|j|tf}|dtd}t|}|ddS)Nz	%s:%s:%s:r))rqtimectimer/_randombyteshashlibsha1	hexdigest)rnoncesbdigrLrLrM
get_cnoncemsz$AbstractDigestAuthHandler.get_cnoncecCsz6|d}|d}|d}|dd}|dd}WntyJYdS0||\}}	|durfdS|j||j\}
}|
durdS|jdur||j|}nd}d|
||f}
d||j	f}|dur|	||
d|||f}n~d	|
d
vrZ||jkr|jd7_nd|_||_d|j}|
|}d
|||d	||f}|	||
|}ntd|d|
|||j	|f}|r|d|7}|r|d|7}|d|7}|r|d||f7}|S)Nr9rqop	algorithmMD5opaquez%s:%s:%sr(rb,rVz%08xz%s:%s:%s:%s:%szqop '%s' is not supported.z>username="%s", realm="%s", nonce="%s", uri="%s", response="%s"z
, opaque="%s"z
, digest="%s"z, algorithm="%s"z, qop=auth, nc=%s, cnonce="%s")rKeyErrorget_algorithm_implsr1r@rtrIget_entity_digestrrrXrrrqrr)rrr{r9rrrrHKDr r`ZentdigZA1ZA2ZrespdigZncvalueZcnonceZnoncebitrDrLrLrMryxs\




z+AbstractDigestAuthHandler.get_authorizationcsD|dkrddn|dkr$ddntd|fdd}|fS)NrcSst|dSNr))rZmd5r/rxrLrLrMr%z?AbstractDigestAuthHandler.get_algorithm_impls.<locals>.<lambda>ZSHAcSst|dSr)rrr/rrrLrLrMr%rz.Unsupported digest authentication algorithm %rcsd||fS)Nr(rL)rdrrLrMr%r)rB)rrrrLrrMrs

z-AbstractDigestAuthHandler.get_algorithm_implscCsdSrNrL)rrIr{rLrLrMrsz+AbstractDigestAuthHandler.get_entity_digest)N)rrrrrsr^rurryrrrLrLrLrMr&6s
	>
r&c@seZdZdZdZddZdS)r'rccCs*t|jd}|d|||}||S)NrVrj)rrtr^rsrrrhrrrirzretryrLrLrMrksz$HTTPDigestAuthHandler.http_error_401N)rrrr_rrkrLrLrLrMr'sr'c@seZdZdZdZddZdS)r(Proxy-AuthorizationrcCs"|j}|d|||}||Srl)rzr^rsrrLrLrMrnsz%ProxyDigestAuthHandler.http_error_407N)rrrr_rrnrLrLrLrMr(sr(c@s6eZdZd
ddZddZddZdd	Zd
dZdS)AbstractHTTPHandlerrcCs
||_dSrN_debuglevel)r
debuglevelrLrLrMrszAbstractHTTPHandler.__init__cCs
||_dSrNr)rlevelrLrLrMset_http_debuglevelsz'AbstractHTTPHandler.set_http_debuglevelcCstjj|j|SrN)rrHTTPConnection_get_content_lengthrIrrryrLrLrMrsz'AbstractHTTPHandler._get_content_lengthcCs|j}|std|jdur|j}t|tr8d}t||dsN|dd|ds|ds||}|dur|dt|n|dd|}|	rt
|j\}}t|\}}	|ds|d||j
jD]&\}
}|
}
||
s||
|q|S)	N
no host givenz\POST data should be bytes, an iterable of bytes, or a file object. It cannot be of type str.zContent-type!application/x-www-form-urlencodedrTransfer-encodingZchunkedrs)rzrrIrrrrrrrrrrrrr)rryrzrIrZcontent_lengthZsel_hostrZselZsel_pathr_rrLrLrMdo_request_sF






zAbstractHTTPHandler.do_request_c

sV|j}|std||fd|ji|}||jt|jfdd|j	Ddd<dd	D|j
ri}d}|vr|||<|=|j|j
|d	zbz&|j|
|j|j|d
dWn.ty}zt|WYd}~n
d}~00|}	Wn|Yn0|jr@|jd|_||	_|	j|	_|	S)NrrJcsi|]\}}|vr||qSrLrLrrirLrMr'sz/AbstractHTTPHandler.do_open.<locals>.<dictcomp>r
ConnectioncSsi|]\}}||qSrL)title)rr_rrLrLrMr4rrrr)Zencode_chunked)rzrrJZset_debuglevelrrr|updaterirr~Z
set_tunnelryrrrIrrqgetresponserZsockrrHreasonr)
rZ
http_classrZhttp_conn_argsrzrZtunnel_headersZproxy_auth_hdrerrr$rLrrMrsB



zAbstractHTTPHandler.do_openN)r)rrrrrrrrrLrLrLrMrs

&rc@seZdZddZejZdS)r)cCs|tjj|SrN)rrrrrrrLrLrM	http_open^szHTTPHandler.http_openN)rrrrrrrerLrLrLrMr)\sr)rc@s$eZdZdddZddZejZdS)rErNcCst||||_||_dSrN)rr_context_check_hostname)rrr>check_hostnamerLrLrMrgszHTTPSHandler.__init__cCs|jtjj||j|jdS)N)r>r)rrrrrrrrLrLrM
https_openlszHTTPSHandler.https_open)rNN)rrrrrrrrirLrLrLrMrEes
rEc@s.eZdZdddZddZddZeZeZdS)	rNcCs$ddl}|dur|j}||_dSro)Zhttp.cookiejar	cookiejarZ	CookieJar)rrrrLrLrMrus
zHTTPCookieProcessor.__init__cCs|j||SrN)rZadd_cookie_headerrrLrLrMre{sz HTTPCookieProcessor.http_requestcCs|j|||SrN)rZextract_cookies)rryrrLrLrMrsz!HTTPCookieProcessor.http_response)N)rrrrrerrirrLrLrLrMrts

rc@seZdZddZdS)r.cCs|j}td|dS)Nzunknown url type: %s)rr)rrrrLrLrMrszUnknownHandler.unknown_openN)rrrrrLrLrLrMr.sr.cCsNi}|D]@}|dd\}}|ddkr@|ddkr@|dd}|||<q|S)N=rVrrQrS)rX)lZparsedeltrrrLrLrMrvs
rvcCsg}d}d}}|D]l}|r*||7}d}q|rT|dkr>d}qn|dkrJd}||7}q|dkrl||d}q|dkrxd}||7}q|r||dd|DS)	NrrF\TrQrcSsg|]}|qSrL)rd)rpartrLrLrM
<listcomp>rz#parse_http_list.<locals>.<listcomp>)ra)rresrescaper	ZcurrLrLrMrxs4	


rxc@s(eZdZddZdZddZddZdS)r*cCs\|j}|dddkrN|dddkrN|jrN|jdkrN|j|vrXtdn
||SdS)Nr:rrSr
	localhost-file:// scheme is supported only on localhost)rrz	get_namesropen_local_file)rrrHrLrLrM	file_opens&
zFileHandler.file_openNcCs^tjdurXz*ttddttdt_Wn"tjyVtdft_Yn0tjS)Nrr:)r*namesr8rgethostbyname_exgethostnamegaierror
gethostbynamerrLrLrMrs

zFileHandler.get_namesc
Csddl}ddl}|j}|j}t|}zt|}|j}|jj	|j
dd}	||d}
|d|
pbd||	f}|r~t
|\}}|r|st||vr|rd||}
nd|}
tt|d||
WSWn,ty}zt|WYd}~n
d}~00tddS)	NrTZusegmtz6Content-type: %s
Content-length: %d
Last-modified: %s

text/plainfile://rbzfile not on local host)email.utils	mimetypesrzrr4r[statst_sizeutils
formatdatest_mtime
guess_typemessage_from_stringr
_safe_gethostbynamerrrGrqr)rremailrrzrfZ	localfilestatsrmmodifiedmtyperirCZorigurlexprLrLrMrs:
zFileHandler.open_local_file)rrrrrrrrLrLrLrMr*s
r*cCs(zt|WStjy"YdS0dSrN)rrr)rzrLrLrMrsrc@seZdZddZddZdS)r+c
Cs.ddl}ddl}|j}|s"tdt|\}}|dur>|j}nt|}t|\}}|rdt|\}}nd}t	|}|pvd}|p~d}zt
|}Wn,ty}zt|WYd}~n
d}~00t
|j\}	}
|	d}ttt	|}|dd|d}}|r|ds|dd}z|||||||j}
|r8dp:d}|
D]2}t|\}}|d	kr@|d
vr@|}q@|
||\}}d}||jd}|r|d|7}|dur|dkr|d|7}t|}t|||jWS|jy(}z*td
|}|t dWYd}~n
d}~00dS)Nrftp error: no host givenrrr
rSrVrhDraArrhrrzContent-type: %s
zContent-length: %d

ftp error: %rr:)!ftplibrrzrr
FTP_PORTrbrrr
rrrqrrrXrmapconnect_ftprJrrxupperretrfilerrtrrr
all_errorswith_tracebackrexc_info)rrrrrzrCr r1rr\attrsdirsrOfwrattrrrhretrlenrirrexcrLrLrMftp_opens^

zFTPHandler.ftp_openc	Cst||||||ddS)NF)
persistent)
ftpwrapper)rr r1rzrCrrJrLrLrMr/szFTPHandler.connect_ftpN)rrrrrrLrLrLrMr+s5r+c@s<eZdZddZddZddZddZd	d
ZddZd
S)r,cCs"i|_i|_d|_d|_d|_dS)Nr<r})cacherJsoonestdelay	max_connsrrLrLrMr6s
zCacheFTPHandler.__init__cCs
||_dSrN)r)rtrLrLrM
setTimeout=szCacheFTPHandler.setTimeoutcCs
||_dSrN)r)rrrLrLrMsetMaxConns@szCacheFTPHandler.setMaxConnscCsr|||d||f}||jvr4t|j|j|<n,t|||||||j|<t|j|j|<||j|S)Nr
)joinrr~rrJrcheck_cache)rr r1rzrCrrJrrLrLrMrCs


zCacheFTPHandler.connect_ftpcCst}|j|krPt|jD].\}}||kr |j||j|=|j|=q tt|j|_t	|j|j
krt|jD]&\}}||jkr|j|=|j|=qqtt|j|_dSrN)r~rrrJrrrminvaluesrdr)rrrrrLrLrMrNs


zCacheFTPHandler.check_cachecCs0|jD]}|q
|j|jdSrN)rrrclearrJ)rconnrLrLrMclear_cachebs

zCacheFTPHandler.clear_cacheN)	rrrrrrrrrrLrLrLrMr,3sr,c@seZdZddZdS)r-cCs~|j}|dd\}}|dd\}}t|}|drNt|}|dd}|sVd}td|t|f}t	t
|||S)N:rVrz;base64itext/plain;charset=US-ASCIIz$Content-type: %s
Content-length: %d
)rtrXrendswithr-decodebytesrrrdrioBytesIO)rrrHrrIZ	mediatyperirLrLrM	data_openis



zDataHandler.data_openN)rrrr
rLrLrLrMr-hsr-rnt)r4r3cCst|SrN)r
pathnamerLrLrMr4sr4cCst|SrN)r	rrLrLrMr3sr3c@seZdZdZdeZd)ddZddZddZd	d
Z	ddZ
d*d
dZd+ddZd,ddZ
d-ddZddZd.ddZd/ddZddZerddZd0dd Zd!d"Zd#d$Zd%d&Zd1d'd(ZdS)2r8NrcKszdd|jji}tj|tdd|dur.t}||_|d|_|d|_	d|j
fdg|_g|_t
j|_d|_t|_dS)	NzW%(class)s style of invoking requests is deprecated. Use newer urlopen functions/methodsclassrS)
stacklevelkey_file	cert_filez
User-Agent)ZAcceptz*/*)rLrr?r@rAr5r&rrrversionr_URLopener__tempfilesr[rp_URLopener__unlink	tempcacheftpcache)rr&Zx509rrLrLrMrs
zURLopener.__init__cCs|dSrN)rrrLrLrM__del__szURLopener.__del__cCs|dSrN)cleanuprrLrLrMrszURLopener.closec	CsT|jr@|jD]&}z||Wqty0Yq0q|jdd=|jrP|jdSrN)rrrqrr)rrOrLrLrMrs
zURLopener.cleanupcGs|j|dSrN)rra)rrrLrLrM	addheaderszURLopener.addheaderc
Csptt|}t|dd}|jrL||jvrL|j|\}}t|d}t|||St|\}}|s`d}||jvr|j|}t|\}}	t|	\}
}|
|f}nd}d|}||_	|
dd}t||r|dkr|r||||S|
||Sz0|durt|||WSt||||WSWnVttfy.Yn>tyj}
z$td	|
td
WYd}
~
n
d}
~
00dS)Nz%/:=&?~#+!$,;'@()*[]|rrrOZopen_-rrzsocket errorr:)rrr	rrGrrr&rrrropen_unknown_proxyopen_unknownrrrrqrrr)rrrIrfrirhurltyperHr	proxyhostrzrr_rrLrLrMrGs<




zURLopener.opencCst|\}}tdd|dS)N	url errorzunknown url typerrq)rrrIrrHrLrLrMrszURLopener.open_unknowncCs t|\}}tdd||dS)Nr zinvalid proxy for %sr!)rrrrIrrHrLrLrMrszURLopener.open_unknown_proxycCstt|}|jr&||jvr&|j|St|\}}|dur|rF|dkrz0||}|}|tt|d|fWSt	yYn0|
||}zL|}	|rt
|d}
nrt|\}}t|pd\}}t|pd\}}t|pd\}}t
j|d}
t|
\}}|j|t
|d}
z||	f}|jdurD||j|<d}d}d}d}d|	vrjt|	d	}|r|||||||}|sq|t|7}|
||d7}|r|||||q|W|
n
|
0W|n
|0|dkr||krtd
||f||S)NrOrVrPrrrRrSrrTrUrW)rrrrrrZrr4rrqrGrrr[r\splitextr^Zmkstemprrafdopenrbrcrdrer)rrHrfrgrIrZurl1rhrrirjZgarbager\suffixfdrkrlrmrcrnrorLrLrMretrieve
sn





zURLopener.retrievecCs"d}d}t|tr<t|\}}|r6t|\}}t|}|}nt|\}}t|\}}t|\}	}
|
}d}|	dkrvd}n:t|
\}}
|rt|\}}|rd|	||
f}t|r|}|stdd|rt|}t	
|d}nd}|rt|}t	
|d}nd}||}
i}|r*d||d<|r<d||d<|rJ||d	<d
|d<|j
D]\}}|||<qX|durd|d
<|
d|||n|
jd||dz|
}Wn tjjytdYn0d|jkrdkrnnt||jd||jS|||j|j|j|j|SdS)Nrz	%s://%s%sz
http errorrr)zBasic %srrcrsrrrzContent-Typerrrz$http protocol error: bad status linerrhttp:)rrrrr
rrxr,rqr-r.r/r0rryrrrZ
BadStatusLinerZstatusrr
http_errorrhr)rZconnection_factoryrHrIZuser_passwdZproxy_passwdrzrZrealhostrrZ
proxy_authrbZ	http_connrirYrrrLrLrM_open_generic_httpNst


zURLopener._open_generic_httpcCs|tjj||SrN)r)rrrrrHrIrLrLrM	open_httpszURLopener.open_httpc
Csbd|}t||rPt||}|dur6||||||}	n|||||||}	|	rP|	S||||||S)Nz
http_error_%d)rrr)
rrHrherrcodeerrmsgrirIr_rrkrLrLrMr(s

zURLopener.http_errorcCs|t||||ddSrN)rrrrHrhr,r-rirLrLrMrszURLopener.http_error_defaultcCstjj||j|jdS)N)rr)rrrrr)rrzrLrLrM_https_connectionszURLopener._https_connectioncCs||j||SrN)r)r/r*rLrLrM
open_httpsszURLopener.open_httpscCs^t|tstd|dddkrP|dddkrP|dddkrPtdn
||SdS)	NzEfile error: proxy support for file protocol currently not implementedr:rrSr
z
localhost/r)rrrrxrBrrrLrLrM	open_files

4
zURLopener.open_filec
Cs^ddl}ddl}t|\}}t|}zt|}Wn2tyd}zt|j|j	WYd}~n
d}~00|j
}	|jj|j
dd}
||d}|d|pd|	|
f}|s|}
|dddkrd|}
tt|d	||
St|\}}|sRt|tftvrR|}
|dddkr"d|}
n|dd
dkr@td|tt|d	||
Std
dS)NrTrz6Content-Type: %s
Content-Length: %d
Last-modified: %s
rrVr
rrr:z./zAlocal file url may start with / or file:. Unknown url of type: %sz#local file error: not on local host)rrrr4r[rrqrstrerrorrfrrrrrrrrGr
rrrthishostrB)rrHrrrzrOZ	localnamerermrrriZurlfilerCrLrLrMrs@$
zURLopener.open_local_filec
Cst|tstdddl}t|\}}|s2tdt|\}}t|\}}|r\t|\}}nd}t|}t|ppd}t|p|d}t	
|}|sddl}|j}nt
|}t|\}}	t|}|d}
|
dd|
d}
}|
r|
ds|
dd}
|
r
|
ds
d|
d<|||d|
f}t|jtkrbt|jD]*}
|
|kr6|j|
}|j|
=|q6z||jvrt|||||
|j|<|sd}nd	}|	D]2}t|\}}|d
kr|dvr|}q|j|||\}}|d|d}d}|r|d
|7}|dur,|dkr,|d|7}t|}t||d|WSty}z&td| t!"dWYd}~n
d}~00dS)NzCftp error: proxy support for ftp protocol currently not implementedrrrrr
rSrVrrhrrzftp:zContent-Type: %s
zContent-Length: %d
zftp error %rr:)#rrrrrr
rrr
rrrrrbrrXrrdrMAXFTPCACHErrrrrxrrrrrr	ftperrorsrrr)rrHrrzr\rCr r1rrrrOrrrrrrrhrrrirrLrLrMopen_ftpsj





zURLopener.open_ftpc	
Cs:t|tstdz|dd\}}WntyBtddYn0|sLd}|d}|dkrd	||dvr||dd}|d|}nd
}g}|dt	dt
t|d
||dkrt|
dd}nt|}|dt||d
||d|}t|}t|}t|||S)NzEdata error: proxy support for data protocol currently not implementedrrVz
data errorzbad data URLr;rrrrzDate: %sz%a, %d %b %Y %H:%M:%S GMTzContent-type: %sr-r)zlatin-1zContent-Length: %d
)rrrrXrBrqrfindrar~strftimegmtimer-rr/r0r
rdrrrrStringIOr)	rrHrIrZsemirrrifrLrLrM	open_data0s8






zURLopener.open_data)N)N)N)N)NNN)N)N)N)N)rrrrrrrrrrrrGrrr&r)r+r(rrCr/r0r2rr8r@rLrLrLrMr8s,

$


A\


	 :r8c@seZdZddZddZd"ddZdd	Zd#d
dZd$dd
Zd%ddZ	d&ddZ
d'ddZd(ddZd)ddZ
d*ddZd+ddZd,ddZd d!ZdS)-r9cOs.tj|g|Ri|i|_d|_d|_dS)Nrr)r8r
auth_cachetriesmaxtriesrIrLrLrMr]szFancyURLopener.__init__cCst||d||S)Nr')rr.rLrLrMrcsz!FancyURLopener.http_error_defaultNc	Cs~|jd7_zb|jrR|j|jkrRt|dr4|j}n|j}|||dd|Wd|_S|||||||}|Wd|_Sd|_0dS)NrVhttp_error_500rz)Internal Server Error: Redirect Recursionr)rBrCrrDrredirect_internal)	rrHrhr,r-rirIrrkrLrLrMrgs&
zFancyURLopener.http_error_302c	Csxd|vr|d}nd|vr$|d}ndS|t|jd||}t|}|jdvrnt|||d|||||S)Nrrrrz( Redirection to url '%s' is not allowed.)rrrrrrrG)	rrHrhr,r-rirIrrrLrLrMrEys 


z FancyURLopener.redirect_internalcCs|||||||SrNrrrHrhr,r-rirIrLrLrMrszFancyURLopener.http_error_301cCs|||||||SrNrFrGrLrLrMrszFancyURLopener.http_error_303cCs2|dur|||||||S||||||SdSrN)rrrGrLrLrMrszFancyURLopener.http_error_307Fc
Csd|vrt|||||||d}td|}	|	sHt|||||||	\}
}|
dkrtt|||||||st||||||d|jd}|durt||||St|||||SdS)Nrj![ 	]*([^ 	]+)[ 	]+realm="([^"]*)"r[Zretry__basic_authr8rrfmatchrVrxrr
rrHrhr,r-rirIrZstuffrKrr9r_rLrLrMrks.


zFancyURLopener.http_error_401c
Csd|vrt|||||||d}td|}	|	sHt|||||||	\}
}|
dkrtt|||||||st||||||d|jd}|durt||||St|||||SdS)NrmrHr[Zretry_proxy_rIrJrLrLrLrMrns.


zFancyURLopener.http_error_407cCst|\}}d||}|jd}t|\}}	t|	\}	}
|	dd}|	|d}	||	||\}}
|sr|
srdSdt|ddt|
dd|	f}	d|	|
|jd<|dur||S|||SdS)Nhttp://rrrV%s:%s@%srrrrr&rrget_user_passwdr	rGrrHr9rIrzrrrrrZ
proxyselectorrr r1rLrLrMretry_proxy_http_basic_auths 

z*FancyURLopener.retry_proxy_http_basic_authcCst|\}}d||}|jd}t|\}}	t|	\}	}
|	dd}|	|d}	||	||\}}
|sr|
srdSdt|ddt|
dd|	f}	d|	|
|jd<|dur||S|||SdS)Nhttps://rrrVrNrrrrOrQrLrLrMretry_proxy_https_basic_auths 

z+FancyURLopener.retry_proxy_https_basic_authc
Cst|\}}|dd}||d}||||\}}|sD|sDdSdt|ddt|dd|f}d||}	|dur||	S||	|SdS)NrrVrNrrrrMrrrPr	rG
rrHr9rIrzrrr r1rrLrLrMr\s
z$FancyURLopener.retry_http_basic_authc
Cst|\}}|dd}||d}||||\}}|sD|sDdSdt|ddt|dd|f}d||}	|dur||	S||	|SdS)NrrVrNrrrrSrUrVrLrLrMretry_https_basic_auth	s
z%FancyURLopener.retry_https_basic_authrcCs`|d|}||jvr2|r(|j|=n
|j|S|||\}}|sJ|rX||f|j|<||fS)Nr)rxrAprompt_user_passwd)rrzr9rrr r1rLrLrMrP	s


zFancyURLopener.get_user_passwdcCsVddl}z.td||f}|d|||f}||fWStyPtYdS0dS)NrzEnter username for %s at %s: z#Enter password for %s in %s at %s: r<)getpassinputKeyboardInterruptprint)rrzr9rYr r1rLrLrMrX!	s
z!FancyURLopener.prompt_user_passwd)N)N)N)N)NF)NF)N)N)N)N)r)rrrrrrrErrrrkrnrRrTr\rWrPrXrLrLrLrMr9Zs&










r9cCstdurtdatS)Nr)
_localhostrrrLrLrLrMr1	s
rcCsNtdurJztttdaWn&tjyHttddaYn0tS)Nr:r)	_thishostr8rrrrrLrLrLrMr49	sr4cCstdurddl}|jatSro)
_ftperrorsrr)rrLrLrMr7D	sr7cCstdurtdatSr)
_noheadersrrrLrLrLrM	noheadersM	s
rac@sFeZdZdddZddZddZd	d
ZddZd
dZddZ	dS)rNTcCsX||_||_||_||_||_||_d|_||_z|Wn|	Yn0dSro)
r r1rzrCrrJrefcount	keepaliveinitr)rr r1rzrCrrJrrLrLrMrZ	szftpwrapper.__init__cCs\ddl}d|_||_|j|j|j|j|j|j	|j
d|j}|j
|dS)Nrr
)rbusyZFTPr	ZconnectrzrCrJZloginr r1rrcwd)rrZ_targetrLrLrMrdj	s
zftpwrapper.initc
Csddl}||dvr"d}d}nd|}d}z|j|Wn(|jyf||j|Yn0d}|r|szd|}|j|\}}WnT|jy}z:t|dddkrt	d	|
td
WYd}~n
d}~00|s|jd|rz|j
}	zXz|j|Wn6|jyP}zt	d	||WYd}~n
d}~00W|j|	n|j|	0d|}nd}|j|\}}d|_t|d
|j}
|jd7_||
|fS)Nr)rrzTYPE ArVzTYPE zRETR rSZ550rr:zLIST ZLISTr)rendtransferr	ZvoidcmdrrdZntransfercmdZ
error_permrrrrrpwdrfrerZmakefile
file_closerbr)rrOrrcmdisdirrrrrhZftpobjrLrLrMrs	sJ

&
zftpwrapper.retrfilecCs
d|_dSro)rerrLrLrMrg	szftpwrapper.endtransfercCsd|_|jdkr|dS)NFr)rcrb
real_closerrLrLrMr	s
zftpwrapper.closecCs2||jd8_|jdkr.|js.|dS)NrVr)rgrbrcrlrrLrLrMri	szftpwrapper.file_closecCs0|z|jWnty*Yn0dSrN)rgr	rr7rrLrLrMrl	s
zftpwrapper.real_close)NT)
rrrrrdrrgrrirlrLrLrLrMrW	s
	-rcCsi}tjD]4\}}|}|r|dddkr|||dd<qdtjvrZ|ddtjD]J\}}|dddkrd|}|r|||dd<qd||dddqd|S)Ni_proxyZREQUEST_METHODr)r[environrrxr)r&r_rrLrLrMgetproxies_environment	s	
rocCs|durt}z|d}Wnty.YdS0|dkr<dS|}t|\}}|dD]Z}|}|rZ|d}|}||ks||krdSd|}||s||rZdSqZdS)NZnoF*Tr.)rorrxr
rXrdlstripr)rzr&Zno_proxyhostonlyrCr_rLrLrMproxy_bypass_environment	s*
rtc
Cs6ddlm}ddlm}m}t|\}}dd}d|vrD|drDdSd}zt||}Wn|yjYn0|d	d
D]}	|	sqxtd|	}
|
dur |dur ||
	d}|
	d
}|durd|
	d
dd}nt|dd}|dksx|dkrqxd|}||?||?kr0dSqx|||	rxdSqxdS)Nrfnmatch)AddressValueErrorIPv4AddresscSsd|d}ttt|}t|dkr8|gddd}|dd>|dd>B|dd	>B|d
BS)Nrqr)rrrrrrVr}r:r|rS)rXrrrbrd)ZipAddrrBrLrLrMip2num
s

z,_proxy_bypass_macosx_sysconf.<locals>.ip2numrqZexclude_simpleT
exceptionsrLz(\d+(?:\.\d+)*)(/\d+)?rVr:r| F)rvZ	ipaddressrwrxr
rbrrfrKgroupcount)
rzproxy_settingsrvrwrxrsrCrzZhostIPrrrDmaskrLrLrM_proxy_bypass_macosx_sysconf	s:

rcCs`ddlm}t|\}}|d}|D]4}|}|dkrJd|vrZdSq&|||r&dSq&dS)Nrrur9z<local>rqTF)rvr
rXrd)rzoverridervrZproxy_overriderErLrLrM_proxy_bypass_winreg_override:
s	

rdarwin)_get_proxy_settings_get_proxiescCst}t||SrN)rr)rzrrLrLrMproxy_bypass_macosx_sysconfU
srcCstSrN)rrLrLrLrMgetproxies_macosx_sysconfY
srcCs t}|rt||St|SdSrN)rortrrzr&rLrLrMr,c
s
r,cCstp
tSrN)rorrLrLrLrMr5p
sr5c
CsBi}zddl}Wnty&|YS0z||jd}||dd}|rt||dd}d|vr|d|vr|d|}|dD]J}|dd\}}t	d	|s|d
vrd|}n|dkrd
|}|||<q|
drtdd|d}|
dp||d<|
dp||d<|Wnt
ttfy<Yn0|S)Nr;Software\Microsoft\Windows\CurrentVersion\Internet SettingsProxyEnableZProxyServerrr9zhttp={0};https={0};ftp={0}rVz
(?:[^/:]+)://)rrr	rMZsockszsocks://z	^socks://z	socks4://rr)winregImportErrorOpenKeyHKEY_CURRENT_USERQueryValueExrrrXrfrKrrwZCloserqrBr)r&rinternetSettingsproxyEnableZproxyServerprZaddressrLrLrMgetproxies_registryu
sL



rcCstp
tSrN)rorrLrLrLrMr5
scCszddl}Wnty YdS0z6||jd}||dd}t||dd}WntylYdS0|rv|szdSt||S)NrFrrZ
ProxyOverride)rrrrrrrqr)rzrrrZ
proxyOverriderLrLrMproxy_bypass_registry
s.
rcCs t}|rt||St|SdSrN)rortrrrLrLrMr,
s
)NNN)N)~r-rrrZhttp.clientrrr[	posixpathrfrrrr~r^rXr?Zurllib.errorrrrZurllib.parserrrrr	r
rrr
rrrrrrrrrZurllib.responserrrDrrC__all__version_inforrFrr0r1r`r6r7rgASCIIrvr{rrr2rr/rrr"rr r!r"r#r$r%urandomrr&r'r(rr)rrrErarr.rvrxr*rr+r,r-r6r_Z
nturl2pathr4r3rr8r9r]rr^r4r_r7r`rarrortrrplatformZ_scproxyrrrrr,r5rrrLrLrLrM<module>TsP
M
?m$q!+@
ov

+3:5!@W

_
%@

1