python (3.11.7)

(root)/
lib/
python3.11/
test/
__pycache__/
test_httplib.cpython-311.pyc

eHaBddlZddlZddlmZmZddlZddlZddlZddlZddl	Z	ddl
Z
ddlZddlZddl
Z
ddl
mZe
jZddlmZddlmZddlmZddlmZejd	ejeZejed
dZejed
dZejed
d
ZdZdZ dZ!dZ"de!zdzZ#dZ$dZ%ej&Z&GddZ'Gdde'Z(Gddej)Z*Gddej+Z,GddeZ-Gdd eZ.Gd!d"eZ/Gd#d$eZ0Gd%d&eZ1Gd'd(e1Z2Gd)d*Z3Gd+d,eZ4Gd-d.eZ5Gd/d0eZ6Gd1d2eZ7Gd3d4eZ8Gd5d6eZ9Gd7d8eZ:Gd9d:eZ;e<d;kre
j=d<=dSdS)>N)client
HTTPStatus)mock)support)	os_helper)
socket_helper)warnings_helperT)modulecertdatazkeycert.pemzkeycert2.pemzselfsigned_pythontestdotnet.pemz{HTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello worl
3
d! 
8
and now 
22
for something completely different
s7hello world! and now for something completely differentz;foo=barz0
0
zX-Dummy: foo
X-Dumm2: bar
cFeZdZejddfdZdZddZdZdZ	dZ
dS)	
FakeSocketNct|tr|d}||_||_d|_d|_d|_||_||_	dS)NasciirF)

isinstancestrencodetext	fileclassdata
sendall_callsfile_closedhostport)selfrrrrs     E/BuggyBox/python/3.11.7/bootstrap/lib/python3.11/test/test_httplib.py__init__zFakeSocket.__init__9s\dC  	(;;w''D	"	 				rcF|xjdz
c_|xj|z
c_dS)N)rrrrs  rsendallzFakeSocket.sendallDs*a		T				rc|dkr|dkrtj||j|_|j|j_|jS)Nrrb)rUnimplementedFileModerrfile
file_closeclose)rmodebufsizes   rmakefilezFakeSocket.makefileHsJ3;;44<<.000NN49--	/	yrcd|_dS)NT)rrs rr)zFakeSocket.file_closePsrcdSNr/s rr*zFakeSocket.closeSrcdSr1r2)rleveloptnamevalues    r
setsockoptzFakeSocket.setsockoptVr3rr1)__name__
__module____qualname__ioBytesIOrr#r-r)r*r8r2rrrr8s')z4				   







rrc eZdZdZdZdZdS)EPipeSocketcJt||||_dSr1)rrpipe_trigger)rrrAs   rrzEPipeSocket.__init__[s&D$'''(rcl|j|vrttjd|xj|z
c_dS)Ngotcha)rAOSErrorerrnoEPIPErr"s  rr#zEPipeSocket.sendall`s6$$%+x000		T				rcdSr1r2r/s rr*zEPipeSocket.closeer3rN)r9r:r;rr#r*r2rrr?r?YsA)))






rr?c"eZdZdZddZddZdS)NoEOFBytesIOzLike BytesIO, but raises AssertionError on EOF.

    This is used below to test that http.client doesn't try to read
    more from the underlying file than it should.
    cptj||}|dkrtd|SNrzcaller tried to read past EOF)r<r=readAssertionError)rnrs   rrMzNoEOFBytesIO.readns4ztQ''3;; !@AAArNcptj||}|dkrtd|SrL)r<r=readlinerN)rlengthrs   rrQzNoEOFBytesIO.readlinets6z""4003;; !@AAArrJr1)r9r:r;__doc__rMrQr2rrrIrIhsF
rrIc2eZdZdZfdZfdZdZxZS)FakeSocketHTTPConnectionz@HTTPConnection subclass using FakeSocket; counts connect() callsc~d|_td||_|j|_dS)Nrexample.com)connectionssuperrfake_socket_argscreate_connection_create_connection)rargs	__class__s  rrz!FakeSocketHTTPConnection.__init__}s<
''' $"&"8rcd|xjdz
c_tS)z.Count the number of times connect() is invokedr!)rYrZconnect)rr_s rraz FakeSocketHTTPConnection.connects+Aww   rct|jSr1)rr[)rposkws   rr\z*FakeSocketHTTPConnection.create_connections4011r)r9r:r;rTrrar\
__classcell__)r_s@rrVrVzsfJJ99999!!!!!
2222222rrVc>eZdZdZdZdZdZdZdZdZ	dZ
d	S)
HeaderTestscGddt}dD]}dD]}tjd}td|_||_d}i}|rt
t|||<|dd	|||	|jj
|d
dS)NceZdZdZdZdS);HeaderTests.test_auto_headers.<locals>.HeaderCountingBufferci|_dSr1)countr/s rrzDHeaderTests.test_auto_headers.<locals>.HeaderCountingBuffer.__init__s



rcF|d}t|dkr]|dd}|j|d|j|xxdz
cc<t||dS)N:r!rr)splitlendecodelowerrl
setdefaultlistappend)ritemkvlcKeys    rruzBHeaderTests.test_auto_headers.<locals>.HeaderCountingBuffer.appendsZZ%%r77Q;;qELL117799EJ))%333Ju%%%*%%%D$'''''rNr9r:r;rrur2rrHeaderCountingBufferrjs2
 
 
 
(
(
(
(
(rrz)TF)Content-lengthHostzAccept-encodingrXblahblahblahspamspamspamPOST/r!)rtrHTTPConnectionrsock_bufferrrprequestassertEqualrlrr)rrzexplicit_headerheaderconnbodyheaderss       rtest_auto_headerszHeaderTests.test_auto_headerss
	(
	(
	(
	(
	(4
	(
	(
	( +	H	HOE

H

H,];;&~66	3355%"5&)#d))nnGFOVS$888  !3FLLNN!CQGGGG

H	H	HrcGddt}d}d}tj||D]\}}tjd}td|_||_||d||	|jj
dd|d	}|D]}tjd}td|_||_||dd|	|jj
dd
||D]}tjd}td|_||_||dd|	|jj
dd|tj||D]}tjd}td|_||_||dd|	|jj
d
d|dS)NceZdZdZdZdS)?HeaderTests.test_content_length_0.<locals>.ContentLengthCheckercHt|d|_dSr1)rtrcontent_lengthr/s rrzHHeaderTests.test_content_length_0.<locals>.ContentLengthChecker.__init__s"

d###&*###rc|dd}t|dkr=|ddkr|d|_t
||dS)Nrnr!rscontent-length)rorprrstriprrtru)rrvrws   rruzFHeaderTests.test_content_length_0.<locals>.ContentLengthChecker.appendsiZZa((r77Q;;2a5;;==4E#E#E*,Q%++--D'D$'''''rNryr2rrContentLengthCheckerrs2
+
+
+
(
(
(
(
(rr)N)PUTrPATCHrXr0z%Header Content-Length incorrect on {})GETCONNECTDELETEHEADOPTIONSTRACEz.Header Content-Length set for empty body on {}r 1)
rt	itertoolsproductrrrrrrrrformatchain)rrbodiesmethods_with_bodymethodrrmethods_without_bodys        rtest_content_length_0z!HeaderTests.test_content_length_0s	(	(	(	(	(4	(	(	(4%-.?HH		LFD(77D"4((DI//11DLLLd++++T7>>vFF



 
+		F(77D"4((DI//11DLLLd++++T@GGOO



+		F(77D"4((DI//11DLLLb)))+T7>>vFF



 o&:<MNN		F(77D"4((DI//11DLLLc***+T7>>vFF



		rctjd}td|_|dd|dd|d|j|dd|d	|j|d
d|d|j|d
d|d|j|ddd|d|j|dd|d|j|dd|d|j|dd|d|j|dd|d|j|d d!|d"|j|d#d$|d%|j|d&d$|d'|j|d(d$|d)|j|d*d$|d+|jdS),NrXrrr{*sContent-length: 42Fooz bar s
Foo:  bar Barz	baz	s
Bar: 	baz	
AuthorizationzBearer mytokensAuthorization: Bearer mytoken
IterHeaderIterAIterBsIterHeader: IterA
	IterBLatinHeadersLatinHeader: 
Utf8HeadersÀsUtf8Header: Àz
C1-Controls	nextlinesC1-Control: nextlinezEmbedded-Fold-Spacezis
 alloweds!Embedded-Fold-Space: is
 allowedzEmbedded-Fold-Tabzis
	allowedsEmbedded-Fold-Tab: is
	allowedz	Key Spacer7sKey Space: valuez	KeySpace sKeySpace : valuesNonbreakSpacesNonbreakSpace: valuesNonbreakSpacesNonbreakSpace: value)rrrr
putrequest	putheaderassertInrrrs  rtest_putheaderzHeaderTests.test_putheaders$]33t$$	c"""',,,

+T\:::ug&&&

mT\222ui(((

ot|444(8999

6EEE|Wg666

5t|DDD}g...

*DL999|[111

-t|<<<|_555

14<@@@,.>???

<dlKKK*,=>>>

;T\JJJ{G,,,

)4<888{G,,,

)4<888+W555

14<@@@+W555

14<@@@@@rc~d}tjd}td}||_|dd||j|d}tjd}td}||_|dd||j|d}tjd	}td}||_|dd||j|d
}tjd}td}||_|dd||j|dS)NsCGET /foo HTTP/1.1
Host: [2001::]:81
Accept-Encoding: identity

z[2001::]:81rr/foosEGET /foo HTTP/1.1
Host: [2001:102A::]
Accept-Encoding: identity

z
[2001:102A::]s@GET /foo HTTP/1.1
Host: [fe80::]
Accept-Encoding: identity

z
[fe80::%2]sCGET /foo HTTP/1.1
Host: [fe80::]:81
Accept-Encoding: identity

z
[fe80::%2]:81)rrrrr
assertTruer
startswithrexpectedrrs    rtest_ipv6host_headerz HeaderTests.test_ipv6host_header
s8$]33"~~	UF###	,,X667778$_55"~~	UF###	,,X667778$\22"~~	UF###	,,X667778$_55"~~	UF###	,,X6677777rcd}t|}tj|}|||dd||dddS)Nz4HTTP/1.1 200 OK
First: val
: nval
Second: val

FirstvalSecond)rrHTTPResponsebeginr	getheaderrrrresps    r!test_malformed_headers_coped_withz-HeaderTests.test_malformed_headers_coped_with0s{O$"4((

00%88811599999rc	dttddzdzttddzdz}t|}tj|}|||dd	||jdd	||d
d||jd
dd	tttdd}||d
|||jd
|||d|
d|j|d|jdfD]h}||d|
d|||didS)Ns0HTTP/1.1 200 OK
!#$%&'*+-.^_`|~: value
VCHAR: !s
obs-text: sM
obs-fold: text
 folded with space
	folded with tab
Content-Length: 0

Content-Lengthrz!#$%&'*+-.^_`|~r7rVCHARzobs-textzobs-foldrz folded with spacezfolded with tab)bytesrangerrrrrrmsgjoinmapchrassertIsNotNonerrrendswith)rrrrvcharfoldeds      rtest_parse_all_octetsz!HeaderTests.test_parse_all_octets:s*
uT84455
69
"%h"7"788
9<
	
$"4((

(8993???"23S999(9::GDDD"34g>>>CtX!6!6778800%888'*E222T^^J77888

j$(+++~~j1148J3GH	@	@FOOF--f55666MM.777OOFOO,=>>????	@	@rctjd}td|_|ddd}|D]}\}}|||f5|td5|||dddn#1swxYwYdddn#1swxYwY~dS)NrXrrr))s
Invalid
Name
ValidValue)sInvalid
Namer)sInvalid
Namer)s

InvalidNamer)s
InvalidNamer)s
InvalidNamer)s InvalidNamer)s	InvalidNamer)sInvalid:Namer)s:InvalidNamer)	ValidNamesInvalid
Value)rs
Invalid
Value)rs
Invalid
Value)rsInvalidValue
)rs
InvalidValue
)rs
InvalidValue
zInvalid header)	rrrrrsubTestassertRaisesRegex
ValueErrorr)rrcasesnamer7s     rtest_invalid_headersz HeaderTests.test_invalid_headersXsE$]33rNN	s###
$!	0	0KD%tUm,,
0
0++J8HII00NN4///000000000000000
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0	0	0s6B5;BB5B""B5%B"&B55B9	<B9	cd}t|}tj|d}tj5}|dddn#1swxYwY|}||dd||dd||dd||d	d
dS)Ns9HTTP/1.1 200 OK
First: val
Second: val1
Second: val2
r!)
debuglevelrzreply: 'HTTP/1.1 200 OK\r\n'zheader: First: valzheader: Second: val1zheader: Second: val2)	rrrrcaptured_stdoutrgetvalue
splitlinesr)rrrroutputliness      rtest_headers_debuglevelz#HeaderTests.test_headers_debuglevelvs+
 	
$"4A666

$
&
&	&JJLLL															!!,,..q#CDDDq#7888q#9:::q#9:::::sAA #A N)r9r:r;rrrrrrrrr2rrrgrgsHHH:@@@D A A AD!8!8!8F:::@@@<000<;;;;;rrgceZdZdZdS)HttpMethodTestscd}|D]t}|td5tjd}t	d|_||ddddn#1swxYwYudS)N)	zGET
zPOST
zPUT

z
POST
Valuez
POST
HOST:abczGET
rHost:abc
zPOST
Remainder:
z
GET
HOST:
z
PUTz'method can't contain control charactersrXr)rurl)rrrrrrr)rmethodsrrs    rtest_invalid_method_namesz)HttpMethodTests.test_invalid_method_namess

	5	5F'' IKK
5
5,];;&t,,	F444	
5
5
5
5
5
5
5
5
5
5
5
5
5
5
5	5	5sAA..A2	5A2	N)r9r:r;rr2rrrrs#55555rrc>eZdZdZdZdZdZdZddZdZ	d	Z
d
S)TransferEncodingTestsIt's just a flesh woundcztjd}td|_|dd||d||jj\}}}|	|}|
||jdS)NrXrrrT)encode_chunked)rrrrr
endheaders
_make_body_parse_requestr_parse_chunkedr
expected_body)rr_rs    rtest_endheaders_chunkedz,TransferEncodingTest.test_endheaders_chunkeds$]33sOO	$$$))$???((88
1d""4((t122222rcXtjd}td|_|dd|ddi||jj\}}}|dd|	D|
|dd|
||jtjd}td|_|dd|jd	ddi||jj\}}}|dd
|	D|
|dd|
||jtjd}td|_|ddddid|
||jj\}}}|dd|D|
|dd|
|
||jdS)NrXrrrTransfer-Encodingchunkedcontent-lengthc6g|]}|Sr2rr.0ks  r
<listcomp>z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp> +N+N+N!AGGII+N+N+Nrlatin-1c6g|]}|Sr2rrs  rr	z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp>r
rz
gzip, chunkedT)rrrc6g|]}|Sr2rrs  rr	z>TransferEncodingTest.test_explicit_headers.<locals>.<listcomp> +G+G+G!AGGII+G+G+Gr)rrrrrrrrassertNotInkeysrrrqrrrrrrs     rtest_explicit_headersz*TransferEncodingTest.test_explicit_headerss$]33sOO		
C**-@),L	N	N	N ..ty~>>7D)+N+Nw||~~+N+N+NOOO!45yAAAt1222$]33sOO	C+229==
 ),	.	.	. ..ty~>>7D)+N+Nw||~~+N+N+NOOO!45yAAAt1222$]33sOO	VS(/:""		$	$	$ ..ty~>>7D)+G+Gw+G+G+GHHH!45GGG,,T22D4FGGGGGrcdD]}tjd}td|_|dd||||jj\}}}||}|	||j
|	|dd|d	d
|DdS)N)FTrXrrr)empty_linesrrrc6g|]}|Sr2rrs  rr	z5TransferEncodingTest.test_request.<locals>.<listcomp>s /K/K/Ka		/K/K/Kr)rrrrrrrrrrrr)rrrrrrs      rtest_requestz!TransferEncodingTest.test_requests)
	M
	MK(77D"3DILLT___EE
G
G
G $2249>BBAw&&t,,DT4#5666W%899EEE
-/K/K7/K/K/KLLLL
	M
	Mrcntjd}td|_|ddd||jj\}}}||dd|dd	|D||d
dS)NrXrrrr2rrrc6g|]}|Sr2rrs  rr	z8TransferEncodingTest.test_empty_body.<locals>.<listcomp>rrs0

)	rrrrrrrrrrs     rtest_empty_bodyz$TransferEncodingTest.test_empty_bodys$]33sOO	VS"%%%..ty~>>7D!45yAAA)+G+Gw+G+G+GHHH|,,,,,rFc#K|jd}t|D]2\}}|r	|dzrdV|t|dz
kr|dzV.|V3dS)N rrr!)rro	enumeraterp)rrridxlines     rrzTransferEncodingTest._make_bodys"((.."5))		IC
sQw
			SZZ!^##Tk!!!!



		rc"|d}|d}i}d}|t|krt||dkr||d\}}|d}|d||<|dz
}|t|krt||dk||d||dzdfS)N
rr!rnr)rorprqrr)rrrrrrOkeyrs        rrz#TransferEncodingTest._parse_requests

7##(
#e**nnU1X!2!2Qx~~d++HC**Y''--//C::i006688GCL
FA	#e**nnU1X!2!2eAEFFm!<!<<<rc`g}i}d}|d}	|||dz\}}t|d}|dkr|dz
}nR||t||||dz
}|t|krn~d|S)Nrr Trr!r)rointrrprur)rrrtrailersrOrsizechunks        rrz#TransferEncodingTest._parse_chunkeds


7##	!A#,KD%tR==DqyyQT3u::...KK
FA3u::~~!	$xx~~rN)F)r9r:r;rrrrrrrrr2rrrrs.M333$H$H$HLMMM ---				===rrc@eZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!d Z"d!Z#d"Z$d#Z%d$Z&d%Z'd&Z(d'Z)d(Z*d)Z+d*Z,d+Z-d,Z.d-Z/d.Z0d/Z1d0Z2d1Z3d2Z4d3Z5d4S)5	BasicTestc
|hdtttdkdS)N>rr7phrasedescription)rsetdirrr/s r&test_dir_with_added_behavior_on_statusz0BasicTest.test_dir_with_added_behavior_on_statuss=BBBc#jY\ooJ^J^F_F__`````rcjGddtj}tj|tdS)NceZdZdZdCdZdZdZdZdZdZ	d	Z
d
ZdZdZ
d
ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ d Z!d!Z"d"Z#d#Z$d$Z%d%Z&d&Z'd'Z(d(Z)d)Z*d*Z+d+Z,d,Z-d-Z.d.Z/d/Z0d0Z1d1Z2d2Z3d3Z4d4Z5d5Z6d6Z7d7Z8d8Z9d9Z:d:Z;d;Z<d<Z=d=Z>d>Z?d?Z@d@ZAdAZBdBS)D;BasicTest.test_simple_httpstatus.<locals>.CheckedHTTPStatusaHTTP status codes and reason phrases

            Status codes from the following RFCs are all observed:

                * RFC 7231: Hypertext Transfer Protocol (HTTP/1.1), obsoletes 2616
                * RFC 6585: Additional HTTP Status Codes
                * RFC 3229: Delta encoding in HTTP
                * RFC 4918: HTTP Extensions for WebDAV, obsoletes 2518
                * RFC 5842: Binding Extensions to WebDAV
                * RFC 7238: Permanent Redirect
                * RFC 2295: Transparent Content Negotiation in HTTP
                * RFC 2774: An HTTP Extension Framework
                * RFC 7725: An HTTP Status Code to Report Legal Obstacles
                * RFC 7540: Hypertext Transfer Protocol Version 2 (HTTP/2)
                * RFC 2324: Hyper Text Coffee Pot Control Protocol (HTCPCP/1.0)
                * RFC 8297: An HTTP Status Code for Indicating Hints
                * RFC 8470: Using Early Data in HTTP
            rcft||}||_||_||_|Sr1)r$__new___value_r+r,)clsr7r+r,objs     rr5zCBasicTest.test_simple_httpstatus.<locals>.CheckedHTTPStatus.__new__7s/kk#u--##
"-
r)dContinuez!Request received, please continue)ezSwitching Protocolsz.Switching to new protocol; obey Upgrade header)f
Processing)gzEarly Hints)OKz#Request fulfilled, document follows)CreatedzDocument created, URL follows)Acceptedz/Request accepted, processing continues off-line)zNon-Authoritative InformationzRequest fulfilled from cache)z
No Contentz"Request fulfilled, nothing follows)z
Reset Contentz"Clear input form for further input)zPartial ContentzPartial content follows)zMulti-Status)zAlready Reported)zIM Used)i,zMultiple Choicesz,Object has several resources -- see URI list)i-zMoved Permanently(Object moved permanently -- see URI list)i.Found(Object moved temporarily -- see URI list)i/z	See Otherz'Object moved -- see Method and URL list)i0zNot Modifiedz)Document has not changed since given time)i1z	Use Proxyz@You must use proxy specified in Location to access this resource)i3zTemporary RedirectrN)i4zPermanent RedirectrL)izBad Requestz(Bad request syntax or unsupported method)Unauthorizedz*No permission -- see authorization schemes)izPayment Requiredz"No payment -- see charging schemes)i	Forbiddenz0Request forbidden -- authorization will not help)r-	Not FoundzNothing matches the given URI)izMethod Not Allowedz-Specified method is invalid for this resource)izNot Acceptablez%URI not available in preferred format)izProxy Authentication Requiredz7You must authenticate with this proxy before proceeding)izRequest Timeoutz"Request timed out; try again later)iConflictzRequest conflict)iGonez5URI no longer exists and has been permanently removed)izLength Requiredz"Client must specify Content-Length)izPrecondition Failedz Precondition in headers is false)izRequest Entity Too LargezEntity is too large)izRequest-URI Too LongzURI is too long)izUnsupported Media Typez!Entity body in unsupported format)izRequested Range Not SatisfiablezCannot satisfy request range)izExpectation Failedz'Expect condition could not be satisfied)izI'm a Teapotz5Server refuses to brew coffee because it is a teapot.)izMisdirected Requestz(Server is not able to produce a response)izUnprocessable Entity)iLocked)izFailed Dependency)iz	Too Early)izUpgrade Required)izPrecondition Requiredz8The origin server requires the request to be conditional)izToo Many RequestszOThe user has sent too many requests in a given amount of time ("rate limiting"))izRequest Header Fields Too LargezVThe server is unwilling to process the request because its header fields are too large)izUnavailable For Legal ReasonszOThe server is denying access to the resource as a consequence of a legal demand)izInternal Server ErrorzServer got itself in trouble)izNot Implementedz&Server does not support this operation)izBad Gatewayz+Invalid responses from another server/proxy)izService Unavailablez8The server cannot process the request due to a high load)izGateway Timeoutz4The gateway server did not receive a timely response)izHTTP Version Not SupportedzCannot fulfill request)izVariant Also Negotiates)izInsufficient Storage)iz
Loop Detected)izNot Extended)izNetwork Authentication Requiredz7The client needs to authenticate to gain network accessN)r)Cr9r:r;rTr5CONTINUESWITCHING_PROTOCOLS
PROCESSINGEARLY_HINTSr@CREATEDACCEPTEDNON_AUTHORITATIVE_INFORMATION
NO_CONTENT
RESET_CONTENTPARTIAL_CONTENTMULTI_STATUSALREADY_REPORTEDIM_USEDMULTIPLE_CHOICESMOVED_PERMANENTLYFOUND	SEE_OTHERNOT_MODIFIED	USE_PROXYTEMPORARY_REDIRECTPERMANENT_REDIRECTBAD_REQUESTUNAUTHORIZEDPAYMENT_REQUIRED	FORBIDDEN	NOT_FOUNDMETHOD_NOT_ALLOWEDNOT_ACCEPTABLEPROXY_AUTHENTICATION_REQUIREDREQUEST_TIMEOUTCONFLICTGONELENGTH_REQUIREDPRECONDITION_FAILEDREQUEST_ENTITY_TOO_LARGEREQUEST_URI_TOO_LONGUNSUPPORTED_MEDIA_TYPEREQUESTED_RANGE_NOT_SATISFIABLEEXPECTATION_FAILEDIM_A_TEAPOTMISDIRECTED_REQUESTUNPROCESSABLE_ENTITYLOCKEDFAILED_DEPENDENCY	TOO_EARLYUPGRADE_REQUIREDPRECONDITION_REQUIREDTOO_MANY_REQUESTSREQUEST_HEADER_FIELDS_TOO_LARGEUNAVAILABLE_FOR_LEGAL_REASONSINTERNAL_SERVER_ERRORNOT_IMPLEMENTEDBAD_GATEWAYSERVICE_UNAVAILABLEGATEWAY_TIMEOUTHTTP_VERSION_NOT_SUPPORTEDVARIANT_ALSO_NEGOTIATESINSUFFICIENT_STORAGE
LOOP_DETECTEDNOT_EXTENDEDNETWORK_AUTHENTICATION_REQUIREDr2rrCheckedHTTPStatusr3$s

$



LH#F*J,KABEGCH-Q)PJVMOO.L6$G @!<LESI=LTI"<"<<K>L 6DI1I"A9N-K)6O:HID6O#4('$$# &5"/0+";IK#<#> "F 8(I6%L!!</(+-?)
%0!:O?K#LHO**&&D##> 0M.L/K+++rr)enumIntEnum_test_simple_enumr)rrs  rtest_simple_httpstatusz BasicTest.test_simple_httpstatus#s[K	KK	KK	KK	KK	KK	KK	KK	KX	
0*=====rcd}t|}tj|}|||dd||||j||d|	|||j|
|	|jd}t|}tj|}|tj|jdS)NHTTP/1.1 200 Ok

TextrrTextzHTTP/1.1 400.100 Not Ok

Text)
rrrrrrMassertFalseisclosedclosedrr*assertRaises
BadStatusLiners    rtest_status_lineszBasicTest.test_status_liness7-$"4((

1s+++)))%%%g...

(((%%%

$$$4$"4((&.
;;;;;rcttjd}|t|ddS)NrzBadStatusLine("''"))rrrrepr)rexcs  rtest_bad_status_reprzBasicTest.test_bad_status_reprs5"2&&c$=>>>>>rcHd}t|}tj|}|||dd||||dd||||j	|
||j	dSN*HTTP/1.1 200 Ok
Content-Length: 4

TextrTextrrrrrrMrrrrr*rs    rtest_partial_readszBasicTest.test_partial_readssB$"4((

1u---)))1u---

(((%%%

$$$$$rcDd}t|}tj|}|||d||||d|	|||j
||	|j
dS)Nz4HTTP/1.1 200 Ok
Content-Length: 13

Text
AnothersText
sAnother)rrrrrrQrrrMrrr*rs    rtest_mixed_readszBasicTest.test_mixed_readssN$"4((

+666)))j111

(((%%%

$$$$$rcd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d|
|	||j||
|jdSr
rrrr	bytearrayreadintorrrrrrr*rrrrbrOs      rtest_partial_readintosz BasicTest.test_partial_readintoss8B$"4((

aLLMM!Aq5))))))MM!Aq5)))

(((%%%

$$$$$rcd}t|}tj|}|||dd||||j	|
||j	dS)Nr
rrrrrrrMrrrrr*rs    rtest_partial_reads_past_endz%BasicTest.test_partial_reads_past_endsA$"4((

2000

(((%%%

$$$$$rc d}t|}tj|}|t	d}||}||d|t|ddd||	|
|j|||jdS)Nrrr)
rrrrrrrrrrrrr*rs      rtest_partial_readintos_past_endz)BasicTest.test_partial_readintos_past_end
sA$"4((

bMMMM!Aq"1"w///

(((%%%

$$$$$rcd}t|}tj|}|||dd||||dd||dd||||j	|
||j	dS)Nrrrrr!rrrs    r$test_partial_reads_no_content_lengthz.BasicTest.test_partial_reads_no_content_lengths-$"4((

1u---)))1u---1s+++

(((%%%

$$$$$rcd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d||}||d|
|	dS)Nrrrrr)rrrrrrrrrrrrs      r(test_partial_readintos_no_content_lengthz2BasicTest.test_partial_readintos_no_content_length)s'-$"4((

aLLMM!Aq5))))))MM!Aq5)))MM!A

(((((rc
d}t|}tj|}|||dd||||dd||dd||dS)N+HTTP/1.1 200 Ok
Content-Length: 10

Textrrrr!r)	rrrrrrMrrrrs    r"test_partial_reads_incomplete_bodyz,BasicTest.test_partial_reads_incomplete_body<sC$"4((

1u---)))1u---1s+++

(((((rcPd}t|}tj|}|t	d}||}||d|t|d||	||}||d|t|d||}||d|
|	||j||
|jdS)Nrrrrrrrs      r&test_partial_readintos_incomplete_bodyz0BasicTest.test_partial_readintos_incomplete_bodyIs_C$"4((

aLLMM!Aq5))))))MM!Aq5)))MM!A

(((%%%

$$$$$rcdD]-}|tjtj|.dD]P\}}}tj|}|||j|||jQdS)Nzwww.python.org:abczuser:password@www.python.org)z[fe80::207:e9ff:fe9b]:8000fe80::207:e9ff:fe9bi@)zwww.python.org:80www.python.orgP)www.python.org:rr)rrr)[fe80::207:e9ff:fe9b]rr)[fe80::207:e9ff:fe9b]:rr)rr
InvalidURLrrrrrhphpcs     rtest_host_portzBasicTest.test_host_port_sI	L	LBf/1FKKKKP		(		(HB1%b))AQ'''Q''''		(		(rcd}d}t|}tj|}||d}|||dS)NzHTTP/1.1 200 OK
Set-Cookie: Customer="WILE_E_COYOTE"; Version="1"; Path="/acme"
Set-Cookie: Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"

No body
zrCustomer="WILE_E_COYOTE"; Version="1"; Path="/acme", Part_Number="Rocket_Launcher_0001"; Version="1"; Path="/acme"z
Set-Cookie)rrrrrr)rrhdrsr%cookiess      rtest_response_headerszBasicTest.test_response_headerspsjO
t""				++l++#&&&&&rctdt}tj|d}||r|ddSdS)N*HTTP/1.1 200 OK
Content-Length: 14432

rr)Did not expect response from HEAD request)rrIrrrrMfailrrrs   rtest_read_headzBasicTest.test_read_headsw

	
"4777

99;;	CIIABBBBB	C	CrcDtdt}tj|d}|td}||dkr|d|t|ddS)Nrrrrr)
rrIrrrrrrrr)rrrrs    rtest_readinto_headzBasicTest.test_readinto_heads

	
"4777

aLL==q  IIABBBq9-----rcddttjdzDdz}d|z}t	|}tj|}|tjd|jdS)Nr
c3 K|]	}d|zV
dS)z
Header%d: fooNr2)ris  r	<genexpr>z2BasicTest.test_too_many_headers.<locals>.<genexpr>sCFF"#.1FFFFFFrr!zHTTP/1.1 200 OK
zgot more than \d+ headers)	rrr_MAXHEADERSrrr
HTTPExceptionr)rrrrr%s     rtest_too_many_headerszBasicTest.test_too_many_headerss++FF',V-?!-C'D'DFFFFFHNO%/t""v3;QW	F	F	F	F	Frc	d}ttd5}tjd}t	|}||_|dd|||j	||jdt|d|ddddS#1swxYwYdS)Ns_GET /foo HTTP/1.1
Host: example.com
Accept-Encoding: identity
Transfer-Encoding: chunked

r&rXrrz != )open__file__rrrrrrrrrprrrrrs     rtest_send_filezBasicTest.test_send_files
(D
!
!	;T(77Dd##DDILL---OODI00::Y~H

~...=:
;
;
;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;	;sBB44B8;B8cd}tjd}td}||_|||||jd|_|tjd||||jd|_|tj	||||jdS)Ns"this is a test this is only a testrXrr)
rrrrsendrrarrayr<r=rs    r	test_sendzBasicTest.test_sends8$]33$			(49---			%+c8,,---49---			"*X&&'''49-----rc
dGfddtj}d}tjd}t	d}||_||||j|dS)Nc3"KdVdVdVdS)Nrdata_twor2r2rrrz/BasicTest.test_send_updating_file.<locals>.datas*LLLJJJrc0eZdZdZZddZdS)7BasicTest.test_send_updating_file.<locals>.UpdatingFiler%rJc*t|jSr1)nextd)r	blocksizes  rrMz<BasicTest.test_send_updating_file.<locals>.UpdatingFile.readsDF||#rNrS)r9r:r;r+rrM)rsrUpdatingFilers9DA
$
$
$
$
$
$rrsdatarXr)	r<
TextIOBaserrrrrrr)rrrrrrs     @rtest_send_updating_filez!BasicTest.test_send_updating_files			
	$	$	$	$	$	$	$2=	$	$	$$]33"~~			,,..!!!H-----rcd}d}tjd}td}||_|dd|ddi||j|dS)	NsbGET /foo HTTP/1.1
Host: example.com
Accept-Encoding: identity
Content-Length: 11

onetwothreec3"KdVdVdVdS)Nsonestwosthreer2r2rrrz&BasicTest.test_send_iter.<locals>.bodys%LLLLLLNNNNNrrXrrrr11)rrrrrrrrs     rtest_send_iterzBasicTest.test_send_iters~&			
$]33"~~	UFDDFF-=t,DEEEH-----rcnd}tjd|}td}||_d|zdz}|ddtj|d	d
i||jd|j	
dd
d
}|||dS)z8Check that request() respects the configured block size.rXrNabrrr9r

r!)rrrrrr<r=rrrro)rrrrrrs      rtest_blocksize_requestz BasicTest.test_blocksize_requests	$]iHHH$	)#d*UCH!5!58H#7NOOO+Q///y{A..q1x(((((rc,d}tjd|}td}||_d|zdz}|tj|||jd||j	|dS)z5Check that send() respects the configured block size.rrXrNrr	r)
rrrrrr<r=rrr)rrrrrs     rtest_blocksize_sendzBasicTest.test_blocksize_sends	$]iHHH$	)#d*		"*X&&'''+Q///H-----rctjd}td|_|t
5|dd|ddddS#1swxYwYdS)NrXrrtest)rrrrr	TypeErrorrrs  rtest_send_type_errorzBasicTest.test_send_type_errors$]33rNN	


y
)
)	/	/LL...	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/	/sA((A,/A,ct}tttztz}tj|d}|||	||
tddD]}tttztz}tj|d}|||	||	|z|	z||
dD]+}tt|z}tj|d}|	|	|dn#t
j
$r}}||j|dt|z}|t!|||t#||Yd}~nd}~wwxYw|
#|
wxYwdS)Nrrr!rzfoo
IncompleteRead expectedIncompleteRead(%d bytes read))chunked_expectedr
chunked_start
last_chunkchunked_endrrrrrMr*rrIncompleteReadpartialrprr)rrrrrOxrexpected_messages        rtest_chunkedzBasicTest.test_chunkeds8#-*4{BCC"4666

h///

q"		Amj8;FGGD&tE:::DJJLLLTYYq\\DIIaLL8499;;FQQQJJLLLL 		Ama/00D&tE:::DJJLLL

				34444
(
;
;
;  H555#BS]]#R   a*:;;;  Q)9::::::::	
;



		s1"G6I1IA3II1II11Jc:t}t|}td}ttt
ztz}tj|d}|	|
|}||d||||||tddD]}ttt
ztz}tj|d}|	t|}|
|d|}||
||||zz
}||
||dz
}||d||||||
dD],}	tt|	z}tj|d}|		|
|}|dn#tj$r}}||j|d	t|z}
|t%||
|t'||
Yd}~nd}~wwxYw|#|wxYwdS)
Nrrrr!rrrrr)rrprrrrrrrrrrr*r
memoryviewrrrrr)rr	nexpectedrrrrOmrrrs           rtest_readinto_chunkedzBasicTest.test_readinto_chunked&s#MM	cNN-*4{BCC"4666

MM!:I:111I&&&

q"
	
	Amj8;FGGD&tE:::DJJLLL1

A

a!f%%A
q1q5z***A
qu%%%AQz	z]H555Q	***JJLLLL 		Ama/00D&tE:::DJJLLL

MM!$$		34444
(
;
;
;  H555#BS]]#R   a*:;;;  Q)9::::::::	
;



		s12ILK),A3K$L$K))LLc6d}t|tztz}tj|d}|||d||jd||j	d|
|||j
||
|j
dS)NEHTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello world
1
d
rrrr?r@)rrrrrrrrMstatusreasonrrrrr*)rrrrs    rtest_chunked_headzBasicTest.test_chunked_headQs
	-*4{BCC"4777

c***c***d+++

(((%%%

$$$$$rcd}t|tztz}tj|d}|t
d}||}||d|t|d||j
d||jd||
||j|||jdS)	Nr'rrrrrr?r@)rrrrrrrrrrr(r)rrrrr*)rrrrrrOs      rtest_readinto_chunked_headz$BasicTest.test_readinto_chunked_heades
	-*4{BCC"4777

aLLMM!Aq9---c***d+++

(((%%%

$$$$$rctd}tj|d}|||d||dS)Nz.HTTP/1.1 200 OK
Content-Length: -1

Hello
rrHello
)rrrrrrMrrrs   rtest_negative_content_lengthz&BasicTest.test_negative_content_length|svDFF"4666

l333

(((((rctd}tj|d}|	||ddS#tj$r}||jd|t|d|t|d||Yd}~dSd}~wwxYw)Nz.HTTP/1.1 200 OK
Content-Length: 10

Hello
rrrr.z-IncompleteRead(7 bytes read, 3 more expected))
rrrrrMrrrrrrrr)rrrrs    rtest_incomplete_readzBasicTest.test_incomplete_readsRSS"4666


	1IIKKK
II/00000$	-	-	-QY555T!WWL
N
N
NSVVL
N
N
NOODMMOO,,,,,,,,,
	-sA&&D5BDDcJtdd}tjd|_|t
fd}|d|j|d|	ddS)NzgHTTP/1.0 401 Authorization Required
Content-type: text/html
WWW-Authenticate: Basic realm="example"
sContent-LengthrXc2dddS)Nr/urlr)r)rsr<lambda>z&BasicTest.test_epipe.<locals>.<lambda>s$,,uff"E"ErrOzBasic realm="example"zwww-authenticate)
r?rrrrrDgetresponserr(r)rrrrs   @r
test_epipezBasicTest.test_epipes
<
	
$]33	'EEEE	G	G	G!!dk***2(:;;	=	=	=	=	=rcdddzzdz}tjt|}|tjtjf|jdS)NHTTP/1.1 200 Okrr
)rrrrLineTooLongrrrrrs   rtest_overflowing_status_linez&BasicTest.test_overflowing_status_linesV 3;.7":d#3#3446-v/CDdjQQQQQrcdddzzdz}tjt|}|tj|jdS)NzHTTP/1.1 200 OK
X-Foo: barr%r:z

)rrrrr;rr<s   rtest_overflowing_header_linez&BasicTest.test_overflowing_header_lines[
;
')3
4	
":d#3#344&,dj99999rcddz}tjt|}|tj5}|dddn#1swxYwY|dt|j|dt|jdS)NzHTTP/1.1 100 OK
r
izgot more than r)	rrrrrrrr	exception)rrrcms    r'test_overflowing_header_limit_after_100z1BasicTest.test_overflowing_header_limit_after_100s

	
":d#3#344


v3
4
4	JJLLL																


&BL(9(9:::

iR\!2!233333sA''A+.A+cdddzzdz}tjt|}||tj|jdS)Nz/HTTP/1.1 200 OK
Transfer-Encoding: chunked

rr:za
hello world
0

)rrrrrr;rMr<s   rtest_overflowing_chunked_linez'BasicTest.test_overflowing_chunked_linesj
1Ek

	
":d#3#344

&,di88888rcd}t|}tj|}|||d||||j	|
||j	dS)Nr9rrrs    rtest_early_eofzBasicTest.test_early_eofs $"4((

c***

(((%%%

$$$$$rctjd}dGfddtj}||_t	d|_|dd|tj|j	|
j|
|jjdS)NrXceZdZfdZdS)+BasicTest.test_error_leak.<locals>.Responsec@|tjj|g|Ri|dSr1)rrr)rrcrdresponses   rrz4BasicTest.test_error_leak.<locals>.Response.__init__s2#,T>C>>>2>>>>>rN)r9r:r;r)rLsrResponserJs.
?
?
?
?
?
?
?rrMzInvalid status linerr)
rrrresponse_classrrrrrr6rrr)rrrMrLs   @rtest_error_leakzBasicTest.test_error_leaks$]33	?	?	?	?	?	?	?v*	?	?	?
'455	UC   &.0@AAA(((	-.....rc8d}tdz}tt|ztztz}tj|d}|||	||
dS)Nz3;foo=bar
abc
sabcrr)rrrlast_chunk_extendedrrrrrrMr*)rextrarrrs     rtest_chunked_extensionz BasicTest.test_chunked_extensions+#f,-%/2EESTT"4666

h///

rct}tttz}t	j|d}|||||	dS)z9some servers may serve up a short chunked encoding streamrrN)
rrrrrrrrrMr*rrrrs    rtest_chunked_missing_endz"BasicTest.test_chunked_missing_endsj#-*455"4666

h///

rct}tttztzt
z}t
j|d}||	|
||	|j
d|dS)z&See that trailers are read and ignoredrrrN)
rrrrr%rrrrrrMr(r*rUs    rtest_chunked_trailerszBasicTest.test_chunked_trailerss#-*4x?+MNN"4666

h///))3///

rct}d}tttztzt
z|z}t
j|d}||	|
||	|j
|d|
dS)zDCheck that we don't read past the end of the chunked-encoding stream	extradatarrrN)rrrrr%rrrrrrMr(rr*)rrrZrrs     rtest_chunked_synczBasicTest.test_chunked_syncs#	-*4x?+MPYYZZ"4666

h///))9+;+;G+D+DEEE

rc^d}d}td|z|z}tj|d}||||||j||dS)zBCheck that we don't read past the end of the Content-Length stream	extradata
Hello123
'HTTP/1.1 200 OK
Content-Length: 10

rrN)rrrrrrMr(r*rrZrrrs     rtest_content_length_syncz"BasicTest.test_content_length_syncs 	"JXUXaabb"4666

h///))9555

rcbd}d}td|z|z}tj|d}|||d|g||j||dSNr]r^r_rri)	rrrrr	readlinesr(rMr*r`s     rtest_readlines_content_lengthz'BasicTest.test_readlines_content_lengths 	"JXUXaabb"4666

--z:::))9555

rc`d}d}td|z|z}tj|d}|||d|||j||dSrc)	rrrrrread1r(rMr*r`s     rtest_read1_content_lengthz#BasicTest.test_read1_content_length)s 	"JXUXaabb"4666

D))8444))9555

rcd}d}td|z|z}tj|d}|||d|||dd||j||dS)Nr]r^r_rrrr)	rrrrrrQr(rMr*r`s     r"test_readline_bound_content_lengthz,BasicTest.test_readline_bound_content_length4s 	"JXUXaabb"4666

r**H555r**C000))9555

rcd}d}td|dzz|z}tj|d}|||d|dz|||||j||dS)	Nr]r^s'HTTP/1.1 200 OK
Content-Length: 30

rrrr)	rrrrrrgrMr(r*r`s     rtest_read1_bound_content_lengthz)BasicTest.test_read1_bound_content_length@s 	"JXVWZWZccdd"4666

B!444h///))9555

rctjtdf|jdfd}tj|}|||jtdtj}|
dd|}	||jtjtj|}	|d|n#|wxYw	||n-#||wxYw||ddS)	Nrcp\}}|5|d5}	|}|dsn+|d|dddn#1swxYwYddddS#1swxYwYdS)Nr&Tr s'HTTP/1.1 200 Connection established

)acceptr-rQrstripr#rM)raddressreaderrresultservs    r
run_serverz2BasicTest.test_response_fileno.<locals>.run_serverRs3"kkmmOT7
'
't}}T**
'f!??,,D;;w//KLLL
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
's5B+ABB+B	B+B	B++B/2B/)targetr!rz
dummy:1234)filenos
proxied data
)socket
create_serverHOST
addCleanupr*	threadingThreadstartrfloatrrgetsocknamerr6rr(r@rxr#detach)rrvthreadrrLrrtrus      @@rtest_response_filenozBasicTest.test_response_filenoLs#T1I..
###
	'
	'
	'
	'
	'
	'!444U1XX...$d&6&6&8&89Y---##%%		X_fi888
X__%6%6777A
		+,,,








NNJJLLLL
NNJJLLLL


!233333s%AF)E>FE))F*GcGddtj}|d}td|_|dddS)zv
        It should be possible to override the default validation
        behavior in putrequest (bpo-38216).
        ceZdZdZdS)RBasicTest.test_putrequest_override_domain_validation.<locals>.UnsafeHTTPConnectioncdSr1r2rrs  r_validate_pathzaBasicTest.test_putrequest_override_domain_validation.<locals>.UnsafeHTTPConnection._validate_pathwrN)r9r:r;rr2rrUnsafeHTTPConnectionrv#




rrrXrrz/Nrrrrrrrrs   r*test_putrequest_override_domain_validationz4BasicTest.test_putrequest_override_domain_validationqsh
					6#8			$#M22rNN	w'''''rcGddtj}|d}td|_|ddddS)	NceZdZdZdS)PBasicTest.test_putrequest_override_host_validation.<locals>.UnsafeHTTPConnectioncdSr1r2rs  r_validate_hostz_BasicTest.test_putrequest_override_host_validation.<locals>.UnsafeHTTPConnection._validate_hostrrN)r9r:r;rr2rrrrrrrz
example.com
rrrr!)	skip_hostrrs   r(test_putrequest_override_host_validationz2BasicTest.test_putrequest_override_host_validation~so					6#8			$#$566rNN		
sa00000rcGddtj}|d}td|_|dddS)z
        It should be possible to override the default encoding
        to transmit bytes in another encoding even if invalid
        (bpo-36274).
        ceZdZdZdS)IBasicTest.test_putrequest_override_encoding.<locals>.UnsafeHTTPConnectionc,|dS)Nutf-8)r)rstr_urls  r_encode_requestzYBasicTest.test_putrequest_override_encoding.<locals>.UnsafeHTTPConnection._encode_requests~~g...rN)r9r:r;rr2rrrrs#
/
/
/
/
/rrrXrru/☃Nrrs   r!test_putrequest_override_encodingz+BasicTest.test_putrequest_override_encodingsh	/	/	/	/	/6#8	/	/	/$#M22rNN	v&&&&&rN)6r9r:r;r0rrrrrrrrrrrrrrrrrrrrrrrrr r%r*r,r/r1r7r=r?rCrErGrOrSrVrXr[rarerhrjrmrrrrr2rrr)r)s$aaaM>M>M>`<<<*???
%
%
%
%
%
%%%%(
%
%
%
%
%
%%%% )))&)))%%%,((("'''$CCC
.
.
.FFF;;;......*... 
)
)
)	.	.	.///@)))V%%%(%%%.)))111 
=
=
="RRR
:::444999
%
%
%/// 			





						





#4#4#4J(((	1	1	1'''''rr)ceZdZdZdZeedddZdZdZ	dZ
d	Zd
ZdZ
dZd
ZdZdZdS)ExtendedReadTestz*
    Test peek(), read1(), readline()
    zOHTTP/1.1 200 OK

hello world!
and now 
for something completely different
foohelloNrHTTP/1.1 200 OK
Transfer-Encoding: chunked

a
hello worl
3
d!

9
and now 

23
for something completely different

3
foo
0

ct|j}tj|d}|tj|j|_||_dS)Nrr)	rrrrrr<BufferedReaderfprrs   rsetUpzExtendedReadTest.setUpsR$*%%"4666

#DG,,			rc|j}|jjdfd	}||j_g}	|d}|r|t	|d|}|t	|t	|||||t	|}|	||n)|}|
||||sn"|	d||j
dS)NrJcN|}|dkr
|d|S|ddS)Nrrr2)rOroldpeeks  rmypeekz*ExtendedReadTest.test_peek.<locals>.mypeeks3

AAvv!uSbS6MrTrrrrS)rrpeek
assertGreaterrpassertGreaterEqualrrrMrrrurlines_expected)rrrallrp2rrs       @r	test_peekzExtendedReadTest.test_peeksdy',						
			!A

'""3q661---YY[[''BQ888

a 0 0111yyR))  r****yy{{  &&&JJt
!	"	
#(;<<<<<rc^|j}||jj|jdSr1)r_verify_readlinerQr)rrs  r
test_readlinezExtendedReadTest.test_readlines-ydi0$2EFFFFFrc,g}	|d}|rA|dkr;t|dkr(||d|||sng|d||dS)NTrfoo
r)rprrrurr)rrQrrrs     rrz!ExtendedReadTest._verify_readlines	8A;;D
:t99q==OODMM%$8$8999JJt
		
#11111rcjfd}t|}|jjdS)Ncxd}t|d|S)Nr)rgassertLessEqualrp)resrrs rr%z&ExtendedReadTest.test_read1.<locals>.rs3**Q--C  S1---Jr)r	ReadlinerrrQr)rr%	readlinerrs`  @r
test_read1zExtendedReadTest.test_read1sXy						aLL	i0$2EFFFFFrc|j}g}	|}|sn||-|d||jdS)NTr)rrgrurrrrrrrs    rtest_read1_unboundedz%ExtendedReadTest.test_read1_unboundedsmy	::<<D
JJt		
	
#(;<<<<<rc|j}g}	|d}|sn9|t|d||Q|d||jdS)NTrr)rrgrrprurrrrs    rtest_read1_boundedz#ExtendedReadTest.test_read1_boundedsy	::b>>D
  TB///JJt		
#(;<<<<<rcb||jdddS)Nrr)rrrgr/s rtest_read1_0zExtendedReadTest.test_read1_0
s,++S11111rc|jd}|dt|dSNr)rrrrp)rrs  rtest_peek_0zExtendedReadTest.test_peek_0s7INN1QA'''''r)r9r:r;rTrfindrr
lines_chunkedrrrrrrrrrr2rrrrs	
5::g..//077@@N
	"===>GGG222GGG===	=	=	=222(((((rrceZdZdZdZdS)ExtendedReadTestChunkedz:
    Test peek(), read1(), readline() in chunked mode
    rN)r9r:r;rTrr2rrrrs"
	
EErrceZdZdZdZdZdS)rzT
    a simple readline class that uses an arbitrary read function and buffering
    c"||_d|_dS)Nr)readfunc	remainder)rrs  rrzReadliner.__init__/s 
rcg}d}|j}		|d}|dkrnM|t|z|kr||z
dz
}|||}|sd}ni|dz
}||d|||d|_d|S#d||_xYw)NrTrrJr!r)rrrprurr)rlimitrdatalenrMrs      rrQzReadliner.readline3s~	
ii&&"99SYY&%//'/A-CD!!!}}C

1HCKKTcT
###!#$$ZDN88D>>!	 XXd^^DNsB/B==CN)r9r:r;rTrrQr2rrrr+s<rrc eZdZdZdZdZdS)OfflineTestc4dh}ddh}ttD][}|ds||vrtt|}t|dddkr||\|tj|dS)N	responsesHTTPMessage
parse_headersrr:zhttp.client)r/rrgetattraddassertCountEqual__all__)rrdenylistr
module_objects     rtest_allzOfflineTest.test_allNs="?3KK	#	#Ds##
tx'7'7#FD11M}lD99]JJT"""fnh77777rcf|tjtjddS)NrR)rrrror/s rtest_responseszOfflineTest.test_responses\s))&*:;[IIIIIrcgd}|D]X}||5|tt|dddn#1swxYwYYdS)N):rVrWrXr@rZr[r\r]r^r_r`rbrcrdrerfrgrhrirkrlrmrnrorprqrrrsrtrurvrwrxryrzr{r|r}r~rrrrrrrrrrrrrrrrrrYr)constant)rrhasattrr)rrconsts   rtest_client_constantsz!OfflineTest.test_client_constants_s;
;
;
x	8	8Eu--
8
8 6 6777
8
8
8
8
8
8
8
8
8
8
8
8
8
8
8	8	8s)AA	A	N)r9r:r;rrrr2rrrrMsI888JJJ@8@8@8@8@8rrcjeZdZdZdZdZejee	dddZ
dS)SourceAddressTestctjtjtj|_t	j|j|_t	j|_|j	d|_
dSr1)ryAF_INETSOCK_STREAMrur	bind_portrfind_unused_portsource_portlistenrr/s rrzSourceAddressTest.setUps^M&.&2DEE	!+DI66	(9;;				rc|jr |jd|_|jd|_dSr1)rr*rur/s rtearDownzSourceAddressTest.tearDownsB9	IOODI				rctjt|jd|jf|_|j||jj	d|jdS)Nrsource_addressr!)
rrr{rrrrarrrr/s rtestHTTPConnectionSourceAddressz1SourceAddressTest.testHTTPConnectionSourceAddressst)$	 "D$45777		3355a8$:JKKKKKrHTTPSConnectionz'http.client.HTTPSConnection not definedc`tjt|jd|jf|_dS)Nrr)rrr{rrrr/s r testHTTPSConnectionSourceAddressz2SourceAddressTest.testHTTPSConnectionSourceAddresss2*4 "D$45777			rN)r9r:r;rrrunittestskipIfrrrr2rrrrsLLLX_):;;;>@@77@@777rrc$eZdZdZdZdZdZdS)TimeoutTestNctjtjtj|_t	j|jt_|jdSr1)	ryrrrurrrPORTrr/s rrzTimeoutTest.setUpsIM&.&2DEE	(249==	rcF|jd|_dSr1)rur*r/s rrzTimeoutTest.tearDowns				rc|tjtjd	t	jttj}|	tjdn#tjdwxYw|
|jd|
|tjtjd	t	jttjd}|	tjdn#tjdwxYw|
|jd|
t	jttjd}|	|
|jd|
dSN)timeout)assertIsNonerygetdefaulttimeoutsetdefaulttimeoutrrr{rrrarr
gettimeoutr*)rhttpConns  rtestTimeoutAttributez TimeoutTest.testTimeoutAttributes
	
&244555 $$$	+,T;3CDDH$T****F$T****1133R888	
&244555 $$$	+,T;3C6:<<<H$T****F$T****1133T:::({/?LLL1133R888s8B		B:E--F)r9r:r;rrrrr2rrrrsFD
rrc eZdZdZdZdZdS)PersistenceTestcd}|D]W\}}}|||5d||}t|}||j|dd|5}||jdu||dddn#1swxYwY||jdu|||j	d|dd||j	|rdnddddn#1swxYwYYdS)	N))1.0rF)rzConnection: keep-alive
T)1.1rT)rzConnection: close
F)rzConnection: keep-ALIVE
T)rzConnection: cloSE
F)versionrz4HTTP/{} 200 OK
{}Content-Length: 12

Dummy body
rz/open-connectionr!z/subsequent-requestr)
rrrVrrrr6rrMrY)rtestsrrreuserrrLs        rtest_reuse_reconnectz$PersistenceTest.test_reuse_reconnects
',	F	F"GVUgf==
F
F%
&&))
044!!$),,,U$6777%%''$8$$TY$%6E	BBBMMOOO$$$$$$$$$$$$$$$  d!2I>>>  !11555U$9:::  !13D111EEE#
F
F
F
F
F
F
F
F
F
F
F
F
F
F
F	F	Fs7A*E
3CECECA1EE	E	cd}tjtjf|tff}|D]\}}||5t
d|}|dd|||j	|
|j|dd||j
ddddn#1swxYwYdS)Ncltj|fd}|_tjS)z3Return BufferedReader that raises ECONNRESET at EOFcptj|}|dkrt|Sr)r<r=rConnectionResetError)bufferr&streams  rrzNPersistenceTest.test_disconnected.<locals>.make_reset_reader.<locals>.readintos4z**66::199.000r)r<r=rr)rrrs  @rmake_reset_readerz<PersistenceTest.test_disconnected.<locals>.make_reset_readersEZ%%F





'FO$V,,,r)rArrz
/eof-response
/reconnectr)r<r=rRemoteDisconnectedrrrVrrr6rrrrY)rrrstream_factoryrArs      rtest_disconnectedz!PersistenceTest.test_disconnecteds9		-		-		-Z23
 45
*/	6	6%NI	22
6
6/^DDUO444!!)T-=>>>!!$),,,UL111  !11555
6
6
6
6
6
6
6
6
6
6
6
6
6
6
6	6	6sB
CC	"C	c8td}|ddddi|tj|j||j|dd||j	ddS)	NsHTTP/1.1 100 Continue

rrExpectz100-continue)rrr)
rVrrrrr6rrrrYrs  rtest_100_closezPersistenceTest.test_100_close*s'



	
UC(N)CDDD&3T5EFFF$)$$$UL))))1-----rN)r9r:r;rrr"r2rrr
r
sDFFF<6666
.
.
.
.
.rr
ceZdZdZdZdZdZdZej	dZ
dZejdd	Z
d
ZdZdZejeed
ddZdZdS)	HTTPSTestc^ttds|ddSdS)Nrzssl support required)rrskipTestr/s rrzHTTPSTest.setUp9s8v011	2MM011111	2	2rc(ddlm}|||S)Nr)make_https_server)certfile)test.ssl_serversr()rr)r(s   rmake_serverzHTTPSTest.make_server=s*666666  9999rctjttjd}||jddSr)rrr{rrrr)rrs  rtest_attributeszHTTPSTest.test_attributesAs:"4)92FFFB'''''rcddl}tjdtjd5tjdd}||j5}|	dddddn#1swxYwY|
|jjdddddS#1swxYwYdS)Nrnetworkself-signed.pythontest.netrrCERTIFICATE_VERIFY_FAILED)
sslrrequiresrtransient_internetrrrSSLErrorrrrAr))rr3rexc_infos    rtest_networkedzHTTPSTest.test_networkedFsR


###

-.J
K
K	U	U&'CSIIA""3<00
&H		%%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&X/68STTT		U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	Us50B8B4B8B	B8B	#B88B<?B<cddl}tjdtjd5|}t
jdd|}|dd|	}|
|d|d	|
ddddS#1swxYwYdS)
Nrr/r0r1contextrrnginxserver)
r3rr4rr5_create_unverified_contextrrrr6r*rr)rr3r;rrs     rtest_networked_noverificationz'HTTPSTest.test_networked_noverificationPs


###

-.J
K
K		4466G&'CS/6888A
IIeS!!!==??D
GGIIIMM'4>>(#;#;<<<JJLLL																		sB'C!!C%(C%ctjdtjd5t	jdd}|dd|}|d}|	|	|
d|ddddS#1swxYwYdS)Nr/rr1rrzcontent-typez	text/html)rr4rr5rrrr6rr*r)rrrcontent_types    r&test_networked_trusted_by_default_certz0HTTPSTest.test_networked_trusted_by_default_cert^s	###

-.>
?
?	5	5&'7==A
IIeS!!!==??D>>.99LJJLLL
GGIIIMM+|444	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5	5sBC		C
C
c	Bddl}tjdd}tj|5||j}||j|j	||j
d|t	tj|d|}|dd|}nR#|j$rE}t%|}t'jd	|rt+jd
|d|dd}~wwxYw|d
}|||d|ddddS#1swxYwYdS)Nrr/r0Tr1r:rrz(?i)key.too.weakzGot z trying to connect to z). See https://bugs.python.org/issue36816.r=r<)r3rr4rr5
SSLContextPROTOCOL_TLS_CLIENTrverify_mode
CERT_REQUIREDcheck_hostnameload_verify_locations CERT_selfsigned_pythontestdotnetrrrr6r6rresearchrSkipTestrr*r)	rr3selfsigned_pythontestdotnetr;rrssl_errssl_err_str
server_strings	         rtest_networked_good_certz"HTTPSTest.test_networked_good_certks


###&B#

-.I
J
J	2	2nnS%<==GW0#2CDDDW3T:::))*JKKK
*+F3:<<<		%%%%}}<


!'ll90+>>C"+B{BB9BBBCCC
!NN844MJJLLL
GGIIIMM'=1115	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2	2s9A0F AC"!F"
D1,AD,,D11AFFFwalltimecddl}tjdtjd5||j}|ttj
dd|}||j5}|
dddddn#1swxYwY||jjdddddS#1swxYwYdS)	Nrr/r0r1r:rrr2)r3rr4rr5rDrErICERT_localhostrrrr6rrrAr))rr3r;rr7s     rtest_networked_bad_certz!HTTPSTest.test_networked_bad_certs	


###

-.J
K
K	U	UnnS%<==G)).999&'CSRYZZZA""3<00
&H		%%%%
&
&
&
&
&
&
&
&
&
&
&
&
&
&
&X/68STTT
	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	U	Us6A&C.B6*C.6B:	:C.=B:	>#C..C25C2cFddl}|t}tjd|j}||j5}|dddddn#1swxYwY|	|j
jddS)Nr	localhostrrr2)r3r+rUrrrrr6rrrAr))rr3r=rr7s     rtest_local_unknown_certz!HTTPSTest.test_local_unknown_certs


!!.11";<<


s|
,
,	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"+24OPPPPPsA66A:=A:cddl}|t}||j}|tt
jd|j|}|	|j
|dd|}|	|j
|
|jddS)NrrXr:r/nonexistentr-)r3r+rUrDrErIrrrr|r*rr6rr(rr3r=r;rrs      rtest_local_good_hostnamez"HTTPSTest.test_local_good_hostnames


!!.11..!899%%n555";WMMM   			%(((}}
###c*****rc|ddl}|t}||j}|tt
jd|j|}|	|j
5|dddddn#1swxYwYtj
dtf5t
jd|j|d}dddn#1swxYwY|	|j
5|dddddn#1swxYwYd	|_tj
dtf5t
jd|j|d	}dddn#1swxYwY|dd
|}||||jdd	|_t
jd|j|}|dd
|}||jd||tj
dtf5t
jd|j|d}dddn#1swxYwY|	|j
5|ddddddS#1swxYwYdS)NrrXr:rrrT)r;rHFr[r-)r3r+CERT_fakehostnamerDrErIrrrrCertificateErrorrr	check_warningsDeprecationWarningrHr6r*rr(r\s      rtest_local_bad_hostnamez!HTTPSTest.test_local_bad_hostnames


!!"344..!899%%&7888";WMMM


s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"
+R1C,D
E
E	M	M&{FK/6tMMMA	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M

s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	""'

+R1C,D
E
E	N	N&{FK/6uNNNA	N	N	N	N	N	N	N	N	N	N	N	N	N	N	N	
		%(((}}

				c***"'";WMMM			%(((}}c***

				
+R1C,D
E
E	M	M&{FK/6tMMMA	M	M	M	M	M	M	M	M	M	M	M	M	M	M	M

s3
4
4	"	"
IIeS!!!	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"	"sl	B,,B03B0C<<DD!EEE1FF"F>K((K,/K,
L11L58L5rz)http.client.HTTPSConnection not availablecdD]-}|tjtj|.dD]P\}}}tj|}|||j|||jQdS)Nr)r)zwww.python.org:443rr1)rrr1)rrr1)rrr1)rrr1)rrrrrrrrs     rrzHTTPSTest.test_host_ports
I	M	MBf/1GLLLL#
	(
	(HB1&r**AQ'''Q''''
	(
	(rcddl}|js|dtjdd}||jj||j	}|
|jtjdd|}||j||
|jjtj
5tjddttjdd|t }dddn#1swxYwY||jjdS)	NrzTLS 1.3 support requiredrXr1r:ignorez5key_file, cert_file and check_hostname are deprecated)r;	cert_file)r3HAS_TLSv1_3r&rrr_contextpost_handshake_authrDrErassertIswarningscatch_warningsfilterwarningsrbrU)rr3rr;s    rtest_tls13_phazHTTPSTest.test_tls13_phas


	6MM4555";44
6777..!8994555";WEEE

aj'***7888

$
&
&	A	A#H.e$6
8
8
8&{C1?AAAA	A	A	A	A	A	A	A	A	A	A	A	A	A	A	A
	

677777s-9D22D69D6N)r9r:r;rr+r-r8r?rsystem_must_validate_certrBrRrequires_resourcerVrYr]rcrrrrrror2rrr$r$7sB222:::(((
UUU
&
5
5'&
5222BWz**
U
U+*
UQQQ+++("("("TX_):;;;@BB((BB($88888rr$cHeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)RequestBodyTestz3Test cases where a request includes a message body.ctjd|_tdx|j_|_|j|j_dS)NrXr)rrrrrr/s rrzRequestBodyTest.setUps9)-88	%/^^3		rctj|jj}|tj|}||fSr1)r<r=rrrQrrrfmessages   rget_headers_and_fpz"RequestBodyTest.get_headers_and_fps<Jty~&&	

&q))zrcVddgdfdf}|D]\}}||5tjd|_t	dx|j_|_|jdd||\}}|d	||d
||	|
dd|	||dddn#1swxYwYdS)
Nrbar3
foo
3
bar
0

))rr{r|rXrrr4zContent-Typerrr)rrrrrrrryrrgetrM)rrrrrrws      rtest_list_bodyzRequestBodyTest.test_list_bodysh
f
CDD
$
	5
	5ND(d##	
5	
5"1-@@	-7^^;		!!%6660022Q  555  !13777  )<!=!=yIII  16688444	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5	
5
	5
	5sC*DD 	#D 	c.|jdddddi|\}}|d|d|dt|dS)Nrr4rr42rr)rrryrr}rprMrrxrws   rtest_manual_content_lengthz*RequestBodyTest.test_manual_content_length%s	
	%+T2	4	4	4,,..
w{{+;<<===CMM*****rc|jddd|\}}|d||||d|d|d|dS)Nrr4r
text/plain4rsbody	rrryrget_content_typerget_charsetr}rMrs   rtest_ascii_bodyzRequestBodyTest.test_ascii_body.s	%000,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<!&&((+++++rc|jddd|\}}|d||||d|d|d|dS)Nrr4ubodyÁr5rbodyrrs   rtest_latin1_bodyz RequestBodyTest.test_latin1_body6s	%444,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<affhh/////rc|jddd|\}}|d||||d|d|d|dS)Nrr4rrrrrrs   rtest_bytes_bodyzRequestBodyTest.test_bytes_body>s	%555,,..
w'?'?'A'ABBB'--//000gkk*:;;<<<affhh/////rcJ|tjtjt	tjdd5}|ddddn#1swxYwYt	tjd5}|jdd||\}}|	d|
||||
d|	d	|
d
|	d|ddddS#1swxYwYdS)Nwr)encodingrrr4rrrztransfer-encodings4
body
0

)r|runlinkTESTFNrwriterrryrrrrr}rMrvs   rtest_text_file_bodyz#RequestBodyTest.test_text_file_bodyFs	()*:;;;
)"C'
:
:
:	a
GGFOOO															
)"W
5
5
5		BIeVQ///0022JGQ\7+C+C+E+EFFFg1133444
gkk*:;;<<<Y4G(H(HIII6AAA		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		B		Bs%A))A-0A-C<FFFc |tjtjt	tjd5}|ddddn#1swxYwYt	tjd5}|jdd||\}}|	d|
|||	d|
d|d	||	d
|ddddS#1swxYwYdS)Nwbrr&rr4rrrrs5
body
0

)r|rrrrrrrryrrrrr}rrMrvs   rtest_binary_file_bodyz%RequestBodyTest.test_binary_file_bodyUs	()*:;;;
)"D
)
)	!Q
GGK   	!	!	!	!	!	!	!	!	!	!	!	!	!	!	!
)"D
)
)	FQIeVQ///0022JGQ\7+C+C+E+EFFFg1133444Y4G(H(HIII-w777:AFFHHEEE	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	F	Fs%A''A+.A+C*FF
FN)
r9r:r;rTrryr~rrrrrrr2rrrsrss==###
555(+++,,,000000
B
B
BFFFFFrrsc2eZdZdZdZdZdZdZdZdS)HTTPResponseTestcd}t|}tj||_|jdS)NzXHTTP/1.1 200 Ok
My-Header: first-value
My-Header:                 second-value

Text)rrrrr)rrrs   rrzHTTPResponseTest.setUpes@*$'--		rc|jd}||d|jdd}||ddS)Nz	My-Headerzfirst-value, second-valuezsome defaultrrrrrs  rtest_getting_headerz$HTTPResponseTest.test_getting_headerlsb$$[11!<===$$[.AA!<=====rch|jdd}||ddS)NNo-Such-Headerz
default-valuerrs  r3test_getting_nonexistent_header_with_string_defaultzDHTTPResponseTest.test_getting_nonexistent_header_with_string_defaultss6$$%5GG11111rc|jdddg}||d|jdd}||ddS)Nrdefaultvalueszdefault, values)rrrrs  r5test_getting_nonexistent_header_with_iterable_defaultzFHTTPResponseTest.test_getting_nonexistent_header_with_iterable_defaultwsl$$%5	87LMM!2333$$%57LMM!233333rcf|jd}||ddS)Nrrrs  r/test_getting_nonexistent_header_without_defaultz@HTTPResponseTest.test_getting_nonexistent_header_without_default~s4$$%566&&&&&rcj|jdd}||ddS)Nrr)rrrs  rtest_getting_header_defaultintz/HTTPResponseTest.test_getting_header_defaultints9$$%5b$AA$$$$$rN)	r9r:r;rrrrrrr2rrrrcsn>>>222444'''%%%%%rrcJeZdZdZdZdZdZdZdZdZ	dZ
d	Zd
ZdS)TunnelTestscd}d|_tj|j|_|||j_dS)Nz:HTTP/1.0 200 OK

HTTP/1.1 200 OK
Content-Length: 42

z	proxy.com)rrrrr])r
response_texts  rrzTunnelTests.setUpsG
)	
 	)$)44	'+'>'>}'M'M	$$$rc8|jdSr1)rr*r/s rrzTunnelTests.tearDowns	rcdfd	}|S)Nc@t|d|dS)Nrr!rrr)rrrrrs   rr\z9TunnelTests._create_connection.<locals>.create_connections m'!*71:NNNNrNNr2)rrr\s ` rr]zTunnelTests._create_connections-	O	O	O	O	O	O  rcd}d}ddi}|j||||jddd||jjj|j||jjjtj||jj	|||jj
|||jj|dS)	Ndestination.comi"z
User-Agentz!Mozilla/5.0 (compatible, MSIE 11))rrrrr)r
set_tunnelrrrrrr	HTTP_PORT_tunnel_host_tunnel_port_tunnel_headers)rtunnel_hosttunnel_porttunnel_headerss    r!test_set_tunnel_host_port_headersz-TunnelTests.test_set_tunnel_host_port_headerss'&(KL	[{%3		5	5	5	&#r***,di888,f.>???/===/===2NCCCCCrc|j|t|jjddS)Nr)rrarRuntimeErrorrr/s r&test_disallow_set_tunnel_after_connectz2TunnelTests.test_disallow_set_tunnel_after_connectsD	,	(<+	-	-	-	-	-rcL|jd|jddd||jjj|j||jjjtj|	d|jjj
|d|jjj
|	d|jjj
|d|jjj
dS)	NrrrrCONNECT destination.comsHost: destination.com:NoneHost: destination.comsHost: proxy.com)rrrrrrrrrrrrr/s rtest_connect_with_tunnelz$TunnelTests.test_connect_with_tunnels	.///	&#r***,di888,f.>???

0$).2EFFF6	8KLLL

.	0CDDD	
+TY^-@AAAAArc`tj|jd5}|jd|j|jdddddn#1swxYwY||t|j
dd|j
|j
d	dd	}|d
|||
dd|dS)
z8Regresstion test for https://bugs.python.org/issue43332.rrrrNr!z!unexpected number of send calls: )rrrrzunexpected proxy data sent )rpatchobjectrrrar
assert_calledrrp
mock_callsrrr)r	mock_sendproxy_setup_data_sents   r0test_tunnel_connect_single_send_connection_setupz<TunnelTests.test_tunnel_connect_single_send_connection_setupsz
Z

ty&
1
1	*YI  !2333IIeS)))	*	*	*	*	*	*	*	*	*	*	*	*	*	*	*	!!!I())1N	8LNN		P	P	P!* 4Q 7 :1 =

02GHHH%..{;;K2GKK		M	M	M	M	MsABBBc|jd|jddd||jjj|j||jjjtj|	d|jjj
|	d|jjj
dS)Nrrrrrr)rrrrrrrrrrrr/s rtest_connect_put_requestz$TunnelTests.test_connect_put_requests	.///	%b))),di888,f.>???

0$).2EFFF

.	0CDDDDDrcd}d|}|jd|||j_|jdtj5}|jddddddn#1swxYwY|	}|
d||dS)	Nz
X-Dummy: 1zHTTP/1.0 200 OK
{}

r!rrrrz
header: {})rrset_debuglevelr]rrrrrrr)rexpected_headerrrrs     rtest_tunnel_debuglogz TunnelTests.test_tunnel_debuglogs&7>>OO
	  ###'+'>'>}'M'M	$	.///

$
&
&	.&IeS"---	.	.	.	.	.	.	.	.	.	.	.	.	.	.	.!!,,..

l))/::EBBBBBs>B''B+.B+c4ddfd	}||j_|jdd}	|jdddn#t$r}|}Yd}~nd}~wwxYw|||jdS)NcDtd|d|dS)NzHTTP/1.1 404 NOT FOUND

rr!rr)rrrrrs   rr]z8TunnelTests.test_tunnel_leak.<locals>._create_connections/0QZQZD
Krrrrrr)rr]rrrDrrr)rr]rers    @rtest_tunnel_leakzTunnelTests.test_tunnel_leaks						(:	$	.///	Ifc2....			CCCCCC		
S!!!()))))sA
A&A!!A&N)
r9r:r;rrr]rrrrrrrr2rrrrsNNN!!!
DDD---BBBMMM"EEECCC*****rr__main__r)	verbosity)>rrEhttprrr<rosrrKryr}rlrrTestCaserrtest.supportrrr	requires_working_socketpathdirnamerhererrUr_rJrrchunk_extensionrrQr%rr{rr?r=rIrrVrgrrr)rrrrrrr
r$rsrrr9mainr2rr<module>rsJ########												



""""""&&&&&&((((((t,,,,	wx  dJ
>>GLLz>BB#%7<<*7$$ 	-N

O+f4-







B









*





2:$22222v4222"z;z;z;z;z;(z;z;z;z55555h555,}}}}}8}}}@w
'w
'w
'w
'w
'w
'w
'w
'tz(z(z(z(z(xz(z(z(z.,DR8R8R8R8R8(R8R8R8j77777777>+++++(+++\E.E.E.E.E.hE.E.E.PI8I8I8I8I8I8I8I8X]F]F]F]F]Fh]F]F]F@!%!%!%!%!%x!%!%!%Fn*n*n*n*n*(n*n*n*bzHMAr