
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a™Ø  ã                   @   sb  d dl Zd dlZd dlZd dlZd dlZd dlZd dlZd dl	m
Z
 ddddddd	d
ddddddddddgZdZdZdZdZdZdZeƒ  ejj¡ dd„ ejj ¡ D ƒZdZdZe d¡jZe d ¡jZe d!¡Ze d"¡Z d#d$d%hZ!dAd'd(„Z"G d)d*„ d*ej#j$ƒZ%d+d,„ Z&e%fd-d.„Z'G d/d„ dej(ƒZ)G d0d„ dƒZ*zd dl+Z+W n e,k
�r\   Y nX G d1d2„ d2e*ƒZ-e .d2¡ G d3d„ de/ƒZ0G d4d„ de0ƒZ1G d5d„ de0ƒZ2G d6d„ de0ƒZ3G d7d„ de0ƒZ4G d8d	„ d	e0ƒZ5G d9d
„ d
e0ƒZ6G d:d„ de0ƒZ7G d;d„ de7ƒZ8G d<d„ de7ƒZ9G d=d„ de7ƒZ:G d>d„ de0ƒZ;G d?d„ de0ƒZ<G d@d„ de=e;ƒZ>e0Z?dS )Bé    N)ÚurlsplitÚHTTPResponseÚHTTPConnectionÚHTTPExceptionÚNotConnectedÚUnknownProtocolÚUnknownTransferEncodingÚUnimplementedFileModeÚIncompleteReadÚ
InvalidURLÚImproperConnectionStateÚCannotSendRequestÚCannotSendHeaderÚResponseNotReadyÚBadStatusLineÚLineTooLongÚRemoteDisconnectedÚerrorÚ	responseséP   i»  ZUNKNOWNZIdlezRequest-startedzRequest-sentc                 C   s   i | ]}||j “qS © )Úphrase)Ú.0Úvr   r   ú0/opt/alt/python38/lib64/python3.8/http/client.pyÚ
<dictcomp>j   s      r   i   éd   s   [^:\s][^:\r\n]*s   \n(?![ \t])|\r(?![ \t\n])z[ - ]z[ -]ZPATCHZPOSTZPUTÚdatac                 C   sh   z|   d¡W S  tk
rb } z8t|j|j|j|jd| ¡ | |j|j… |f ƒd ‚W 5 d }~X Y nX d S )Núlatin-1z`%s (%.20r) is not valid Latin-1. Use %s.encode('utf-8') if you want to send it encoded in UTF-8.)ÚencodeÚUnicodeEncodeErrorÚencodingÚobjectÚstartÚendÚtitle)r   ÚnameÚerrr   r   r   Ú_encodeŸ   s    þûùr(   c                   @   s   e Zd Zdd„ ZdS )ÚHTTPMessagec                 C   sj   |  ¡ d }t|ƒ}g }d}|  ¡ D ]@}|d |…   ¡ |krBd}n|d d…  ¡ sVd}|r$| |¡ q$|S )Nú:r   é   )ÚlowerÚlenÚkeysÚisspaceÚappend)Úselfr&   ÚnZlstZhitÚliner   r   r   Úgetallmatchingheadersµ   s    
z!HTTPMessage.getallmatchingheadersN)Ú__name__Ú
__module__Ú__qualname__r4   r   r   r   r   r)   ®   s   r)   c                 C   sX   g }|   td ¡}t|ƒtkr&tdƒ‚| |¡ t|ƒtkrHtdt ƒ‚|dkrqTq|S )Nr+   úheader linezgot more than %d headers©ó   
ó   
ó    )ÚreadlineÚ_MAXLINEr-   r   r0   Ú_MAXHEADERSr   )ÚfpÚheadersr3   r   r   r   Ú_read_headersÌ   s    
rB   c                 C   s,   t | ƒ}d |¡ d¡}tjj|d� |¡S )Nr<   ú
iso-8859-1)Ú_class)rB   ÚjoinÚdecodeÚemailÚparserZParserZparsestr)r@   rD   rA   Zhstringr   r   r   Úparse_headersÞ   s    
rI   c                       s  e Zd Zd@dd„Zdd„ Zdd„ Zd	d
„ Zdd„ Z‡ fdd„Z‡ fdd„Z	dd„ Z
dd„ ZdAdd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zd#d$„ Zd%d&„ ZdBd(d)„ZdCd*d+„ZdD‡ fd,d-„	Zd.d/„ Zd0d1„ Zd2d3„ ZdEd4d5„Zd6d7„ Zd8d9„ Zd:d;„ Zd<d=„ Zd>d?„ Z ‡  Z!S )Fr   r   Nc                 C   sR   |  d¡| _|| _|| _d  | _| _t| _t| _t| _	t| _
t| _t| _t| _d S )NÚrb)Zmakefiler@   Ú
debuglevelÚ_methodrA   ÚmsgÚ_UNKNOWNÚversionÚstatusÚreasonÚchunkedÚ
chunk_leftÚlengthÚ
will_close)r1   ÚsockrK   ÚmethodÚurlr   r   r   Ú__init__ö   s    zHTTPResponse.__init__c                 C   s  t | j td ¡dƒ}t|ƒtkr*tdƒ‚| jdkrBtdt|ƒƒ |sNt	dƒ‚z| 
d d¡\}}}W nF tk
rª   z| 
d d¡\}}d}W n tk
r¤   d}Y nX Y nX | d	¡sÆ|  ¡  t|ƒ‚z$t|ƒ}|d
k sà|dkrèt|ƒ‚W n tk
�r   t|ƒ‚Y nX |||fS )Nr+   rC   zstatus liner   zreply:z-Remote end closed connection without responseé   Ú zHTTP/r   iç  )Ústrr@   r=   r>   r-   r   rK   ÚprintÚreprr   ÚsplitÚ
ValueErrorÚ
startswithÚ_close_connr   Úint)r1   r3   rO   rP   rQ   r   r   r   Ú_read_status  s2    

zHTTPResponse._read_statusc           	      C   sÎ  | j d k	rd S |  ¡ \}}}|tkr&qHt| jƒ}| jdkrDtd|ƒ ~q| | _| _| 	¡ | _
|dkrnd| _n| d¡r€d| _nt|ƒ‚t| jƒ | _ | _| jdkrÈ| j  ¡ D ]\}}td|d |ƒ q®| j  d	¡}|rò| ¡ d
kròd| _d | _nd| _|  ¡ | _d | _| j  d¡}|�rb| j�sbzt|ƒ| _W n tk
�rL   d | _Y nX | jdk �rhd | _nd | _|tk�s¢|tk�s¢d|  k�r”dk �s¢n | jdk�r¨d| _| j�sÊ| j�sÊ| jd k�rÊd| _d S )Nr   zheaders:)zHTTP/1.0zHTTP/0.9é
   zHTTP/1.é   úheader:r*   útransfer-encodingrR   TFúcontent-lengthr   éÈ   ÚHEAD)rA   rd   ZCONTINUErB   r@   rK   r]   ÚcoderP   ÚstriprQ   rO   ra   r   rI   rM   ÚitemsÚgetr,   rR   rS   Ú_check_closerU   rT   rc   r`   Z
NO_CONTENTZNOT_MODIFIEDrL   )	r1   rO   rP   rQ   Zskipped_headersÚhdrÚvalZtr_encrT   r   r   r   Úbegin5  sf    







 ÿ
ÿ
þÿþzHTTPResponse.beginc                 C   sv   | j  d¡}| jdkr.|r*d| ¡ kr*dS dS | j  d¡r>dS |rRd| ¡ krRdS | j  d¡}|rrd| ¡ krrdS dS )NZ
connectionrf   ÚcloseTFz
keep-alivezproxy-connection)rA   ro   rO   r,   )r1   ZconnZpconnr   r   r   rp   }  s    
zHTTPResponse._check_closec                 C   s   | j }d | _ | ¡  d S ©N)r@   rt   )r1   r@   r   r   r   rb   š  s    zHTTPResponse._close_connc                    s$   ztƒ  ¡  W 5 | j r|  ¡  X d S ru   )r@   rb   Úsuperrt   ©r1   ©Ú	__class__r   r   rt   Ÿ  s    zHTTPResponse.closec                    s   t ƒ  ¡  | jr| j ¡  d S ru   )rv   Úflushr@   rw   rx   r   r   rz   «  s    
zHTTPResponse.flushc                 C   s   dS )NTr   rw   r   r   r   Úreadable°  s    zHTTPResponse.readablec                 C   s
   | j d kS ru   )r@   rw   r   r   r   Úisclosed¶  s    zHTTPResponse.isclosedc                 C   s¼   | j d krdS | jdkr$|  ¡  dS |d k	rRt|ƒ}|  |¡}t|ƒd |…  ¡ S | jr`|  ¡ S | j	d krv| j  
¡ }n6z|  | j	¡}W n tk
r¤   |  ¡  ‚ Y nX d| _	|  ¡  |S d S )Nr<   rk   r   )r@   rL   rb   Ú	bytearrayÚreadintoÚ
memoryviewÚtobytesrR   Ú_readall_chunkedrT   ÚreadÚ
_safe_readr
   )r1   ÚamtÚbr2   Úsr   r   r   r‚   À  s*    



zHTTPResponse.readc                 C   s¦   | j d krdS | jdkr$|  ¡  dS | jr4|  |¡S | jd k	r^t|ƒ| jkr^t|ƒd| j… }| j  |¡}|s||r||  ¡  n&| jd k	r¢|  j|8  _| js¢|  ¡  |S )Nr   rk   )	r@   rL   rb   rR   Ú_readinto_chunkedrT   r-   r   r~   )r1   r…   r2   r   r   r   r~   à  s$    





zHTTPResponse.readintoc                 C   sr   | j  td ¡}t|ƒtkr$tdƒ‚| d¡}|dkrB|d |… }zt|dƒW S  tk
rl   |  ¡  ‚ Y nX d S )Nr+   z
chunk sizeó   ;r   é   )	r@   r=   r>   r-   r   Úfindrc   r`   rb   )r1   r3   Úir   r   r   Ú_read_next_chunk_size  s    
z"HTTPResponse._read_next_chunk_sizec                 C   s:   | j  td ¡}t|ƒtkr$tdƒ‚|s*q6|dkr q6q d S )Nr+   ztrailer liner9   )r@   r=   r>   r-   r   ©r1   r3   r   r   r   Ú_read_and_discard_trailer  s    z&HTTPResponse._read_and_discard_trailerc                 C   sl   | j }|sh|d k	r|  d¡ z|  ¡ }W n tk
rD   tdƒ‚Y nX |dkrb|  ¡  |  ¡  d }|| _ |S )NrZ   r<   r   )rS   rƒ   rŒ   r`   r
   rŽ   rb   )r1   rS   r   r   r   Ú_get_chunk_left   s    
zHTTPResponse._get_chunk_leftc                 C   sb   g }z6|   ¡ }|d krq0| |  |¡¡ d| _qd |¡W S  tk
r\   td |¡ƒ‚Y nX d S ©Nr   r<   )r�   r0   rƒ   rS   rE   r
   )r1   ÚvaluerS   r   r   r   r�   8  s    zHTTPResponse._readall_chunkedc                 C   s°   d}t |ƒ}zv|  ¡ }|d kr$|W S t|ƒ|krN|  |¡}|| | _|| W S |d |… }|  |¡}||d … }||7 }d| _qW n( tk
rª   tt|d|… ƒƒ‚Y nX d S )Nr   )r   r�   r-   Ú_safe_readintorS   r
   Úbytes)r1   r…   Ztotal_bytesZmvbrS   r2   Ztemp_mvbr   r   r   r‡   F  s"    



zHTTPResponse._readinto_chunkedc                 C   s.   | j  |¡}t|ƒ|k r*t||t|ƒ ƒ‚|S ru   )r@   r‚   r-   r
   )r1   r„   r   r   r   r   rƒ   ^  s    zHTTPResponse._safe_readc                 C   s:   t |ƒ}| j |¡}||k r6tt|d |… ƒ|| ƒ‚|S ru   )r-   r@   r~   r
   r“   )r1   r…   r„   r2   r   r   r   r’   j  s
    zHTTPResponse._safe_readintoéÿÿÿÿc                 C   sˆ   | j d ks| jdkrdS | jr(|  |¡S | jd k	rJ|dk sD|| jkrJ| j}| j  |¡}|sh|rh|  ¡  n| jd k	r„|  jt|ƒ8  _|S ©Nrk   r<   r   )r@   rL   rR   Ú_read1_chunkedrT   Úread1rb   r-   )r1   r2   Úresultr   r   r   r—   r  s    


zHTTPResponse.read1c                 C   s4   | j d ks| jdkrdS | jr(|  |¡S | j  |¡S )Nrk   r<   )r@   rL   rR   Ú_peek_chunkedÚpeek)r1   r2   r   r   r   rš   ƒ  s
    
zHTTPResponse.peekc                    sŠ   | j d ks| jdkrdS | jr*tƒ  |¡S | jd k	rL|dk sF|| jkrL| j}| j  |¡}|sj|rj|  ¡  n| jd k	r†|  jt|ƒ8  _|S r•   )r@   rL   rR   rv   r=   rT   rb   r-   )r1   Úlimitr˜   rx   r   r   r=   Œ  s    

zHTTPResponse.readlinec                 C   sd   |   ¡ }|d ks|dkrdS d|  kr0|ks6n |}| j |¡}|  jt|ƒ8  _|s`tdƒ‚|S r�   )r�   r@   r—   rS   r-   r
   )r1   r2   rS   r‚   r   r   r   r–   ›  s    zHTTPResponse._read1_chunkedc                 C   sD   z|   ¡ }W n tk
r"   Y dS X |d kr0dS | j |¡d |… S )Nr<   )r�   r
   r@   rš   )r1   r2   rS   r   r   r   r™   ©  s    zHTTPResponse._peek_chunkedc                 C   s
   | j  ¡ S ru   )r@   Úfilenorw   r   r   r   rœ   ¶  s    zHTTPResponse.filenoc                 C   sF   | j d krtƒ ‚| j  |¡p|}t|tƒs4t|dƒs8|S d |¡S d S )NÚ__iter__z, )rA   r   Zget_allÚ
isinstancer\   ÚhasattrrE   )r1   r&   ÚdefaultrA   r   r   r   Ú	getheader¹  s    
zHTTPResponse.getheaderc                 C   s   | j d krtƒ ‚t| j  ¡ ƒS ru   )rA   r   Úlistrn   rw   r   r   r   Ú
getheadersÍ  s    
zHTTPResponse.getheadersc                 C   s   | S ru   r   rw   r   r   r   r�   Õ  s    zHTTPResponse.__iter__c                 C   s   | j S ru   )rA   rw   r   r   r   ÚinfoÚ  s    zHTTPResponse.infoc                 C   s   | j S ru   )rX   rw   r   r   r   Úgeturlñ  s    
zHTTPResponse.geturlc                 C   s   | j S ru   )rP   rw   r   r   r   Úgetcodeý  s    zHTTPResponse.getcode)r   NN)N)r”   )r”   )r”   )N)"r5   r6   r7   rY   rd   rs   rp   rb   rt   rz   r{   r|   r‚   r~   rŒ   rŽ   r�   r�   r‡   rƒ   r’   r—   rš   r=   r–   r™   rœ   r¡   r£   r�   r¤   r¥   r¦   Ú__classcell__r   r   rx   r   r   í   s<   	
!H

 "

	
c                   @   s
  e Zd ZdZdZeZeZdZ	dZ
edd„ ƒZedd„ ƒZd	ejd	d
fdd„Zd7dd„Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd8d d!„Zd9d"d#„Zd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Z d:dd.œd/d0„Z!d	i fdd.œd1d2„Z"d3d4„ Z#d5d6„ Z$d	S );r   rf   zHTTP/1.1r+   r   c                 C   s   t | tjƒS ru   )rž   ÚioÚ
TextIOBase)Ústreamr   r   r   Ú
_is_textIO  s    zHTTPConnection._is_textIOc                 C   sf   | d kr|  ¡ tkrdS d S t| dƒr*d S zt| ƒ}|jW S  tk
rN   Y nX t| tƒrbt| ƒS d S )Nr   r‚   )	ÚupperÚ_METHODS_EXPECTING_BODYrŸ   r   ÚnbytesÚ	TypeErrorrž   r\   r-   )ÚbodyrW   Zmvr   r   r   Ú_get_content_length  s    

z"HTTPConnection._get_content_lengthNé    c                 C   sn   || _ || _|| _d | _g | _d | _t| _d | _d | _	d | _
i | _|  ||¡\| _| _|  | j¡ tj| _d S ru   )ÚtimeoutÚsource_addressÚ	blocksizerV   Ú_bufferÚ_HTTPConnection__responseÚ_CS_IDLEÚ_HTTPConnection__staterL   Ú_tunnel_hostÚ_tunnel_portÚ_tunnel_headersÚ_get_hostportÚhostÚportÚ_validate_hostÚsocketZcreate_connectionÚ_create_connection)r1   r¾   r¿   r³   r´   rµ   r   r   r   rY   4  s    zHTTPConnection.__init__c                 C   s<   | j rtdƒ‚|  ||¡\| _| _|r.|| _n
| j ¡  d S )Nz.Can't set up tunnel for established connection)rV   ÚRuntimeErrorr½   rº   r»   r¼   Úclear)r1   r¾   r¿   rA   r   r   r   Ú
set_tunnelJ  s    zHTTPConnection.set_tunnelc                 C   sÊ   |d krÂ|  d¡}|  d¡}||kr”zt||d d … ƒ}W nH tk
r„   ||d d … dkrh| j}ntd||d d …  ƒ‚Y nX |d |… }n| j}|rÂ|d dkrÂ|d dkrÂ|dd… }||fS )	Nr*   ú]r+   r[   znonnumeric port: '%s'r   ú[r”   )Úrfindrc   r`   Údefault_portr   )r1   r¾   r¿   r‹   Újr   r   r   r½   b  s    

zHTTPConnection._get_hostportc                 C   s
   || _ d S ru   )rK   )r1   Úlevelr   r   r   Úset_debuglevelv  s    zHTTPConnection.set_debuglevelc                 C   sü   d| j | jf }| d¡}|  |¡ | j ¡ D ](\}}d||f }| d¡}|  |¡ q.|  d¡ | j| j| jd�}| 	¡ \}}	}
|	t
jjkrª|  ¡  td|	|
 ¡ f ƒ‚|j td ¡}t|ƒtkrÎtd	ƒ‚|sÔqø|d
krÞqø| jdkrªtd| ¡ ƒ qªd S )NzCONNECT %s:%d HTTP/1.0
Úasciiz%s: %s
r   r:   ©rW   zTunnel connection failed: %d %sr+   r8   r9   r   rg   )rº   r»   r   Úsendr¼   rn   Úresponse_classrV   rL   rd   ÚhttpÚ
HTTPStatusZOKrt   ÚOSErrorrm   r@   r=   r>   r-   r   rK   r]   rF   )r1   Zconnect_strZconnect_bytesÚheaderr‘   Z
header_strZheader_bytesÚresponserO   rl   Úmessager3   r   r   r   Ú_tunnely  s4    ÿ



ÿ
zHTTPConnection._tunnelc                 C   sB   |   | j| jf| j| j¡| _| j tjtj	d¡ | j
r>|  ¡  d S )Nr+   )rÂ   r¾   r¿   r³   r´   rV   Z
setsockoptrÁ   ZIPPROTO_TCPZTCP_NODELAYrº   r×   rw   r   r   r   Úconnect˜  s    
  ÿzHTTPConnection.connectc                 C   sB   t | _z| j}|r d | _| ¡  W 5 | j}|r<d | _| ¡  X d S ru   )r¸   r¹   r·   rt   rV   )r1   rÕ   rV   r   r   r   rt   ¡  s    zHTTPConnection.closec                 C   s  | j d kr | jr|  ¡  ntƒ ‚| jdkr8tdt|ƒƒ t|dƒr¦| jdkrTtdƒ |  |¡}|rt| jdkrttdƒ | 	| j
¡}|s†q¢|r”| d¡}| j  |¡ qtd S z| j  |¡ W nL tk
�r   t|tjjƒrî|D ]}| j  |¡ qÚntdt|ƒ ƒ‚Y nX d S )Nr   zsend:r‚   úsendIng a read()ableúencoding file using iso-8859-1rC   z9data should be a bytes-like object or an iterable, got %r)rV   Ú	auto_openrØ   r   rK   r]   r^   rŸ   r«   r‚   rµ   r   Zsendallr¯   rž   ÚcollectionsÚabcÚIterableÚtype)r1   r   r   Ú	datablockÚdr   r   r   rÏ   ¯  s8    






ÿzHTTPConnection.sendc                 C   s   | j  |¡ d S ru   )r¶   r0   )r1   r†   r   r   r   Ú_outputÕ  s    zHTTPConnection._outputc                 c   s^   | j dkrtdƒ |  |¡}|r2| j dkr2tdƒ | | j¡}|sDqZ|rR| d¡}|V  q2d S )Nr   rÙ   rÚ   rC   )rK   r]   r«   r‚   rµ   r   )r1   r{   r   rà   r   r   r   Ú_read_readableÜ  s    


zHTTPConnection._read_readableFc                 C   s   | j  d¡ d | j ¡}| j d d …= |  |¡ |d k	�rt|dƒrN|  |¡}nZzt|ƒ W nF tk
r    zt|ƒ}W n$ tk
rš   tdt	|ƒ ƒ‚Y nX Y nX |f}|D ]R}|sÈ| j
dkr¬tdƒ q¬|rô| jdkrôt|ƒd›d	� d
¡| d }|  |¡ q¬|�r| jdk�r|  d¡ d S )N)r<   r<   r:   r‚   zAmessage_body should be a bytes-like object or an iterable, got %rr   zZero length chunk ignoredrf   ÚXz
rÍ   s   0

)r¶   ÚextendrE   rÏ   rŸ   rã   r   r¯   Úiterrß   rK   r]   Ú	_http_vsnr-   r   )r1   Úmessage_bodyÚencode_chunkedrM   ZchunksÚchunkr   r   r   Ú_send_outputê  s:    


þ
ÿzHTTPConnection._send_outputc                 C   s¢  | j r| j  ¡ rd | _ | jtkr(t| _n
t| jƒ‚|  |¡ || _|pHd}|  |¡ d||| j	f }|  
|  |¡¡ | jdk�rž|�sŠd}| d¡r¦t|ƒ\}}}}}|ræz| d¡}W n tk
rÖ   | d¡}Y nX |  d|¡ n¤| jrú| j}	| j}
n| j}	| j}
z|	 d¡}W n  tk
�r4   |	 d¡}Y nX |	 d	¡d
k�rRd| d }|
| jk�rl|  d|¡ n| d¡}|  dd||
f ¡ |�sž|  dd¡ n d S )Nú/z%s %s %srf   r[   rÑ   rÍ   ZidnaZHostr*   r   ó   [ó   ]z%s:%szAccept-EncodingZidentity)r·   r|   r¹   r¸   Ú_CS_REQ_STARTEDr   Ú_validate_methodrL   Ú_validate_pathÚ_http_vsn_strrâ   Ú_encode_requestrç   ra   r   r   r    Ú	putheaderrº   r»   r¾   r¿   rŠ   rÉ   rF   )r1   rW   rX   Ú	skip_hostÚskip_accept_encodingÚrequestZnetlocZnilZ
netloc_encr¾   r¿   Zhost_encr   r   r   Ú
putrequest   sP    






zHTTPConnection.putrequestc                 C   s
   |  d¡S )NrÍ   )r   )r1   r÷   r   r   r   ró   Ÿ  s    zHTTPConnection._encode_requestc                 C   s,   t  |¡}|r(td|›d| ¡ ›d�ƒ‚d S )Nz)method can't contain control characters. ú (found at least ú))Ú$_contains_disallowed_method_pchar_reÚsearchr`   Úgroup)r1   rW   Úmatchr   r   r   rð   £  s
    
ÿzHTTPConnection._validate_methodc                 C   s,   t  |¡}|r(td|›d| ¡ ›d�ƒ‚d S ©Nz&URL can't contain control characters. rù   rú   ©Ú!_contains_disallowed_url_pchar_rerü   r   rý   )r1   rX   rþ   r   r   r   rñ   ¬  s    
zHTTPConnection._validate_pathc                 C   s,   t  |¡}|r(td|›d| ¡ ›d�ƒ‚d S rÿ   r   )r1   r¾   rþ   r   r   r   rÀ   ´  s    
zHTTPConnection._validate_hostc                 G   sÌ   | j tkrtƒ ‚t|dƒr$| d¡}t|ƒs:td|f ƒ‚t|ƒ}t|ƒD ]\\}}t|dƒrl| d¡||< nt	|t
ƒrˆt|ƒ d¡||< t|| ƒrJtd|| f ƒ‚qJd |¡}|d | }|  |¡ d S )Nr   rÍ   zInvalid header name %rr   zInvalid header value %rs   
	s   : )r¹   rï   r   rŸ   r   Ú_is_legal_header_namer`   r¢   Ú	enumeraterž   rc   r\   Ú_is_illegal_header_valuerE   râ   )r1   rÔ   Úvaluesr‹   Z	one_valuer‘   r   r   r   rô   ¼  s"    





zHTTPConnection.putheader©ré   c                C   s*   | j tkrt| _ ntƒ ‚| j||d� d S )Nr  )r¹   rï   Ú_CS_REQ_SENTr   rë   )r1   rè   ré   r   r   r   Ú
endheadersØ  s    
zHTTPConnection.endheadersc                C   s   |   |||||¡ d S ru   )Ú_send_request)r1   rW   rX   r°   rA   ré   r   r   r   r÷   å  s    zHTTPConnection.requestc                 C   sø   t dd„ |D ƒƒ}i }d|kr&d|d< d|kr6d|d< | j||f|Ž d|kr°d	|kr´d
}|  ||¡}|d krž|d k	r®| jdkrŒtd| ƒ d}|  dd¡ q´|  dt|ƒ¡ nd
}| ¡ D ]\}	}
|  |	|
¡ q¼t|tƒræt	|dƒ}| j
||d� d S )Nc                 s   s   | ]}|  ¡ V  qd S ru   )r,   )r   Úkr   r   r   Ú	<genexpr>ì  s     z/HTTPConnection._send_request.<locals>.<genexpr>r¾   r+   rõ   zaccept-encodingrö   ri   rh   Fr   zUnable to determine size of %rTzTransfer-EncodingrR   zContent-Lengthr°   r  )Ú	frozensetrø   r±   rK   r]   rô   r\   rn   rž   r(   r  )r1   rW   rX   r°   rA   ré   Zheader_namesZskipsZcontent_lengthrq   r‘   r   r   r   r	  ê  s0    	


zHTTPConnection._send_requestc                 C   sÎ   | j r| j  ¡ rd | _ | jtks&| j r0t| jƒ‚| jdkrR| j| j| j| jd�}n| j| j| jd�}zNz| 	¡  W n t
k
r�   |  ¡  ‚ Y nX t| _|jr¨|  ¡  n|| _ |W S    | ¡  ‚ Y nX d S )Nr   rÎ   )r·   r|   r¹   r  r   rK   rÐ   rV   rL   rs   ÚConnectionErrorrt   r¸   rU   )r1   rÕ   r   r   r   Úgetresponse  s.    

ÿ
zHTTPConnection.getresponse)NN)NF)FF)N)%r5   r6   r7   rç   rò   r   rÐ   Ú	HTTP_PORTrÉ   rÛ   rK   Ústaticmethodr«   r±   rÁ   Ú_GLOBAL_DEFAULT_TIMEOUTrY   rÅ   r½   rÌ   r×   rØ   rt   rÏ   râ   rã   rë   rø   ró   rð   rñ   rÀ   rô   r  r÷   r	  r  r   r   r   r   r     sL   

 ÿ

	&
6  ÿ
	ÿ.c                       sD   e Zd ZeZdddejdfddddœ‡ fdd„Z‡ fdd„Z‡  Z	S )ÚHTTPSConnectionNr²   )ÚcontextÚcheck_hostnamerµ   c                   sÜ   t t| ƒj|||||	d� |d k	s2|d k	s2|d k	rHdd l}
|
 dtd¡ || _|| _|d krtt 	¡ }|j
d k	rtd|_
|jtjk}|d krŽ|j}|rž|sžtdƒ‚|s¦|rÂ| ||¡ |j
d k	rÂd|_
|| _|d k	rØ|| j_d S )N)rµ   r   zTkey_file, cert_file and check_hostname are deprecated, use a custom context instead.rZ   TzMcheck_hostname needs a SSL context with either CERT_OPTIONAL or CERT_REQUIRED)rv   r  rY   ÚwarningsÚwarnÚDeprecationWarningÚkey_fileÚ	cert_fileÚsslZ_create_default_https_contextZpost_handshake_authZverify_modeZ	CERT_NONEr  r`   Zload_cert_chainÚ_context)r1   r¾   r¿   r  r  r³   r´   r  r  rµ   r  Zwill_verifyrx   r   r   rY   c  s<    þÿ þ

zHTTPSConnection.__init__c                    s6   t ƒ  ¡  | jr| j}n| j}| jj| j|d�| _d S )N)Úserver_hostname)rv   rØ   rº   r¾   r  Zwrap_socketrV   )r1   r  rx   r   r   rØ   ‡  s    

ÿzHTTPSConnection.connect)
r5   r6   r7   Ú
HTTPS_PORTrÉ   rÁ   r  rY   rØ   r§   r   r   rx   r   r  \  s   þ ý$r  c                   @   s   e Zd ZdS )r   N©r5   r6   r7   r   r   r   r   r   –  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   ›  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   ž  s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s   |f| _ || _d S ru   )ÚargsrO   )r1   rO   r   r   r   rY   ¢  s    zUnknownProtocol.__init__N©r5   r6   r7   rY   r   r   r   r   r   ¡  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   ¦  s   c                   @   s   e Zd ZdS )r	   Nr  r   r   r   r   r	   ©  s   c                   @   s$   e Zd Zddd„Zdd„ ZejZdS )r
   Nc                 C   s   |f| _ || _|| _d S ru   )r  ÚpartialÚexpected)r1   r!  r"  r   r   r   rY   ­  s    zIncompleteRead.__init__c                 C   s2   | j d k	rd| j  }nd}d| jjt| jƒ|f S )Nz, %i more expectedr[   z%s(%i bytes read%s))r"  ry   r5   r-   r!  )r1   Úer   r   r   Ú__repr__±  s    
 ÿzIncompleteRead.__repr__)N)r5   r6   r7   rY   r$  r"   Ú__str__r   r   r   r   r
   ¬  s   
c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   º  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   ½  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   À  s   c                   @   s   e Zd ZdS )r   Nr  r   r   r   r   r   Ã  s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s   |st |ƒ}|f| _|| _d S ru   )r^   r  r3   r�   r   r   r   rY   Ç  s    zBadStatusLine.__init__Nr   r   r   r   r   r   Æ  s   c                   @   s   e Zd Zdd„ ZdS )r   c                 C   s   t  | dt|f ¡ d S )Nz&got more than %d bytes when reading %s)r   rY   r>   )r1   Z	line_typer   r   r   rY   Î  s    ÿzLineTooLong.__init__Nr   r   r   r   r   r   Í  s   c                   @   s   e Zd Zdd„ ZdS )r   c                 O   s"   t  | d¡ tj| f|ž|Ž d S )Nr[   )r   rY   ÚConnectionResetError)r1   ÚposÚkwr   r   r   rY   Ó  s    zRemoteDisconnected.__init__Nr   r   r   r   r   r   Ò  s   )r   )@Zemail.parserrG   Zemail.messagerÑ   r¨   ÚrerÁ   Zcollections.abcrÜ   Zurllib.parser   Ú__all__r  r  rN   r¸   rï   r  ÚglobalsÚupdaterÒ   Ú__members__r  r   r>   r?   ÚcompileÚ	fullmatchr  rü   r  r  rû   r­   r(   rÖ   ZMessager)   rB   rI   ÚBufferedIOBaser   r   r  ÚImportErrorr  r0   Ú	Exceptionr   r   r   r   r   r	   r
   r   r   r   r   r   r   r&  r   r   r   r   r   r   Ú<module>G   s–             ú



        W8
