
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    'â7`Zf  ã                   @   sÒ  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Zd dl	Z	d dl
mZ d dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZmZmZmZ d dlmZmZ ddlm Z m!Z! dd	l"m#Z# dd
l$m%Z%m&Z&m'Z'm(Z( ddl)m*Z*m+Z+m,Z,m-Z- ddl!m.Z. ddl/m0Z0m1Z1 dZ2e�r<ddl3m4Z4 ee5ef Z6nej"jZ6e%�sTdej7d< G dd„ dej8ƒZ9G dd„ de6e&ƒZ:G dd„ de:ƒZ;e(fddddddej<dœeee5 ee= e>ee5 ee1 e5e0e;dœ	dd„Z?dS )é    N)ÚExecutor)Ú	parsedate)ÚMorselÚSimpleCookie)
ÚTYPE_CHECKINGÚAnyÚDictÚIteratorÚMappingÚMutableMappingÚOptionalÚTupleÚUnionÚcast)ÚCIMultiDictÚistré   )ÚhdrsÚpayload)ÚAbstractStreamWriter)ÚPY_38ÚHeadersMixinÚrfc822_formatted_timeÚsentinel)Ú	RESPONSESÚSERVER_SOFTWAREÚHttpVersion10ÚHttpVersion11)ÚPayload)ÚJSONEncoderÚLooseHeaders)ÚContentCodingÚStreamResponseÚResponseÚjson_response)ÚBaseRequestZSameSiteÚsamesitec                   @   s   e Zd ZdZdZdZdS )r!   ÚdeflateÚgzipÚidentityN)Ú__name__Ú
__module__Ú__qualname__r'   r(   r)   © r-   r-   úG/opt/alt/python38/lib64/python3.8/site-packages/aiohttp/web_response.pyr!   4   s   r!   c                       sæ  e Zd ZdZddddœeee ee ddœdd„Ze	e
dœd	d
„ƒZe	ddœdd„ƒZe	edœdd„ƒZe	e
dœdd„ƒZe	e
dœdd„ƒZe	edœdd„ƒZdefeee eeeeef f ddœdd„Ze	ee
 dœdd„ƒZddœdd„Ze	edœdd„ƒZe	edœdd „ƒZdpee dd!œd"d#„Zdqeee
ef  dd$œd%d&„Ze	d'dœd(d)„ƒZe	d*dœd+d,„ƒZdddd-ddddd.œeeee ee eeeef  eee
 ee
 ee ee dd/œd0d1„Zdd-d2œeee edd3œd4d5„Z e	ee dœ‡ fd6d7„ƒZ!e!j"ee dd8œd9d7„ƒZ!e	edœ‡ fd:d;„ƒZ#e#j"edd8œd<d;„ƒZ#e	ee dœ‡ fd=d>„ƒZ$e$j"ee dd8œd?d>„ƒZ$e	ee%j% dœd@dA„ƒZ&e&j"eeee'e%j%ef  dd8œdBdA„ƒZ&e(j)fe*ddCœdDdE„Z+eddFœdGdH„Z,dIddJœdKdL„Z-dIee. dJœdMdN„Z/dIe.dJœdOdP„Z0ddœdQdR„Z1ddœdSdT„Z2e3ddUœdVdW„Z4ddœdXdY„Z5dre3ddUœd[d\„Z6edœd]d^„Z7ee8d_œd`da„Z9ee8ddbœdcdd„Z:edd_œdedf„Z;edœdgdh„Z<e=e dœdidj„Z>edœdkdl„Z?e@e
dmœdndo„ZA‡  ZBS )sr"   TéÈ   N©ÚstatusÚreasonÚheaders)r1   r2   r3   Úreturnc                C   sp   d | _ d | _d| _d| _d | _tƒ | _d | _d | _d| _	d| _
i | _|d k	rXt|ƒ| _ntƒ | _|  ||¡ d S )NFr   )Ú_bodyÚ_keep_aliveÚ_chunkedÚ_compressionÚ_compression_forcer   Ú_cookiesÚ_reqÚ_payload_writerÚ	_eof_sentÚ_body_lengthÚ_stater   Ú_headersÚ
set_status)Úselfr1   r2   r3   r-   r-   r.   Ú__init__G   s    zStreamResponse.__init__©r4   c                 C   s
   | j d k	S ©N)r<   ©rB   r-   r-   r.   Úpreparedb   s    zStreamResponse.preparedzasyncio.Task[None]c                 C   s   t | jdd ƒS )NÚtask)Úgetattrr;   rF   r-   r-   r.   rH   f   s    zStreamResponse.taskc                 C   s   | j S rE   )Ú_statusrF   r-   r-   r.   r1   j   s    zStreamResponse.statusc                 C   s   | j S rE   )r7   rF   r-   r-   r.   Úchunkedn   s    zStreamResponse.chunkedc                 C   s   | j S rE   )r8   rF   r-   r-   r.   Úcompressionr   s    zStreamResponse.compressionc                 C   s   | j S rE   )Ú_reasonrF   r-   r-   r.   r2   v   s    zStreamResponse.reason)r1   r2   Ú
_RESPONSESr4   c                 C   sV   | j rtdƒ‚t|ƒ| _|d krLz|| j d }W n tk
rJ   d}Y nX || _d S )NzGCannot change the response status code after the headers have been sentr   Ú )rG   ÚAssertionErrorÚintrJ   Ú	ExceptionrM   )rB   r1   r2   rN   r-   r-   r.   rA   z   s    ÿ

zStreamResponse.set_statusc                 C   s   | j S rE   ©r6   rF   r-   r-   r.   Ú
keep_alive‹   s    zStreamResponse.keep_alivec                 C   s
   d| _ d S )NFrS   rF   r-   r-   r.   Úforce_close�   s    zStreamResponse.force_closec                 C   s   | j S rE   )r>   rF   r-   r-   r.   Úbody_length’   s    zStreamResponse.body_lengthc                 C   s   t  dt¡ | jst‚| jjS )Nzoutput_length is deprecated)ÚwarningsÚwarnÚDeprecationWarningr<   rP   Zbuffer_sizerF   r-   r-   r.   Úoutput_length–   s    
zStreamResponse.output_length)Ú
chunk_sizer4   c                 C   s2   d| _ tj| jkrtdƒ‚|dk	r.t dt¡ dS )z,Enables automatic chunked transfer encoding.Tz>You can't enable chunked encoding when a content length is setNzChunk size is deprecated #1615)r7   r   ÚCONTENT_LENGTHr@   ÚRuntimeErrorrW   rX   rY   )rB   r[   r-   r-   r.   Úenable_chunked_encodingœ   s    ÿz&StreamResponse.enable_chunked_encoding)Úforcer4   c                 C   sT   t |ƒtkr*|rtjntj}t dt¡ n|dk	rDt|tƒsDt	dƒ‚d| _
|| _dS )z&Enables response compression encoding.z+Using boolean for force is deprecated #3318Nz1force should one of None, bool or ContentEncodingT)ÚtypeÚboolr!   r'   r)   rW   rX   rY   Ú
isinstancerP   r8   r9   )rB   r_   r-   r-   r.   Úenable_compression§   s     ÿÿz!StreamResponse.enable_compressionzCIMultiDict[str]c                 C   s   | j S rE   )r@   rF   r-   r-   r.   r3   ¹   s    zStreamResponse.headerszSimpleCookie[str]c                 C   s   | j S rE   )r:   rF   r-   r-   r.   Úcookies½   s    zStreamResponse.cookiesú/)ÚexpiresÚdomainÚmax_ageÚpathÚsecureÚhttponlyÚversionr&   )ÚnameÚvaluerf   rg   rh   ri   rj   rk   rl   r&   r4   c                C   sæ   | j  |¡}|dk	r,|jdkr,| j  |d¡ || j |< | j | }|dk	rR||d< n| d¡dkrf|d= |dk	rv||d< |dk	rŒt|ƒ|d< nd|krš|d= ||d< |dk	r²||d< |dk	rÂ||d	< |	dk	rÒ|	|d
< |
dk	râ|
|d< dS )zŸSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        NrO   rf   úThu, 01 Jan 1970 00:00:00 GMTrg   zmax-ageri   rj   rk   rl   r&   )r:   ÚgetZcoded_valueÚpopÚstr)rB   rm   rn   rf   rg   rh   ri   rj   rk   rl   r&   ÚoldÚcr-   r-   r.   Ú
set_cookieÁ   s0    


zStreamResponse.set_cookie)rg   ri   )rm   rg   ri   r4   c                C   s(   | j  |d¡ | j|ddd||d� dS )zBDelete cookie.

        Creates new empty expired cookie.
        NrO   r   ro   )rh   rf   rg   ri   )r:   rq   ru   )rB   rm   rg   ri   r-   r-   r.   Ú
del_cookieõ   s    úzStreamResponse.del_cookiec                    s   t ƒ jS rE   )ÚsuperÚcontent_lengthrF   ©Ú	__class__r-   r.   rx     s    zStreamResponse.content_length©rn   r4   c                 C   sD   |d k	r0t |ƒ}| jrtdƒ‚t|ƒ| jtj< n| j tjd ¡ d S )Nz<You can't set content length when chunked encoding is enable)rQ   r7   r]   rr   r@   r   r\   rq   ©rB   rn   r-   r-   r.   rx     s    ÿc                    s   t ƒ jS rE   )rw   Úcontent_typerF   ry   r-   r.   r}     s    zStreamResponse.content_typec                 C   s   | j  t|ƒ| _|  ¡  d S rE   )r}   rr   Ú_content_typeÚ_generate_content_type_headerr|   r-   r-   r.   r}     s    
c                    s   t ƒ jS rE   )rw   ÚcharsetrF   ry   r-   r.   r€   #  s    zStreamResponse.charsetc                 C   sZ   | j }|dkrtdƒ‚| jd k	s$t‚|d kr<| j dd ¡ nt|ƒ ¡ | jd< |  ¡  d S )Núapplication/octet-streamzYSetting charset for application/octet-stream doesn't make sense, setup content_type firstr€   )r}   r]   Ú_content_dictrP   rq   rr   Úlowerr   )rB   rn   Úctyper-   r-   r.   r€   (  s    ÿc                 C   sF   | j  tj¡}|dk	rBt|ƒ}|dk	rBtj|dd… dtjjiŽS dS )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        Né   Ztzinfo)r@   rp   r   ÚLAST_MODIFIEDr   ÚdatetimeÚtimezoneZutc)rB   ZhttpdateZ	timetupler-   r-   r.   Úlast_modified7  s    zStreamResponse.last_modifiedc                 C   sŠ   |d kr| j  tjd ¡ nlt|ttfƒrJt dt 	t
 |¡¡¡| j tj< n<t|tjƒrpt d| ¡ ¡| j tj< nt|tƒr†|| j tj< d S )Nz%a, %d %b %Y %H:%M:%S GMT)r@   rq   r   r†   rb   rQ   ÚfloatÚtimeÚstrftimeÚgmtimeÚmathÚceilr‡   Zutctimetuplerr   r|   r-   r-   r.   r‰   D  s     ÿ ÿ
)ÚCONTENT_TYPEr4   c                 C   s^   | j d k	st‚| jd k	st‚d dd„ | j  ¡ D ƒ¡}|rJ| jd | }n| j}|| j|< d S )Nz; c                 s   s    | ]\}}|› d |› �V  qdS )ú=Nr-   )Ú.0ÚkÚvr-   r-   r.   Ú	<genexpr>Z  s     z?StreamResponse._generate_content_type_header.<locals>.<genexpr>)r‚   rP   r~   ÚjoinÚitemsr@   )rB   r�   Zparamsr„   r-   r-   r.   r   U  s    z,StreamResponse._generate_content_type_header©Úcodingr4   c                 Ã   sH   |t jkrD| jd k	st‚|j| jtj< | j |j¡ | j 	tj
d ¡ d S rE   )r!   r)   r<   rP   rn   r@   r   ÚCONTENT_ENCODINGrc   Zpopallr\   )rB   r™   r-   r-   r.   Ú_do_start_compressiona  s
    
z$StreamResponse._do_start_compressionr%   ©Úrequestr4   c                 Ã   s\   | j r|  | j ¡I d H  n>|j tjd¡ ¡ }tD ]$}|j|kr2|  |¡I d H   d S q2d S )NrO   )	r9   r›   r3   rp   r   ZACCEPT_ENCODINGrƒ   r!   rn   )rB   r�   Zaccept_encodingr™   r-   r-   r.   Ú_start_compressionj  s    
z!StreamResponse._start_compressionc                 Ã   s*   | j r
d S | jd k	r| jS |  |¡I d H S rE   )r=   r<   Ú_start©rB   r�   r-   r-   r.   Úpreparet  s
    
zStreamResponse.preparec                 Ã   sB   || _ |j }| _|  ¡ I d H  | | ¡I d H  |  ¡ I d H  |S rE   )r;   r<   Ú_prepare_headersZ_prepare_hookÚ_write_headers)rB   r�   Úwriterr-   r-   r.   rŸ   |  s    zStreamResponse._startc                 Ã   s´  | j }|d k	st‚| j}|d k	s$t‚| j}|d kr8|j}|| _|j}| j}| j ¡ D ]&}|j	dd�dd … }| 
tj|¡ qT| jr’|  |¡I d H  | jrÖ|tkr°td |j¡ƒ‚| ¡  d|tj< tj|krÔ|tj= nr| j�rH| j|_|jd k�r*|tk�r$| ¡  d|tj< tj|k�r(|tj= nd}n|tk�rH| jdk�rH|tj= | tjd¡ | tjtƒ ¡ | tjt¡ tj |k�r°|�rœ|t!k�r°d	|tj < n|tk�r°d
|tj < d S )NrO   )Úheaderr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rK   F)éd   ée   éf   ég   éÌ   r�   z
keep-aliveÚclose)"r;   rP   r<   r6   rT   rl   r@   r:   ÚvaluesÚoutputÚaddr   Z
SET_COOKIEr8   rž   r7   r   r]   ÚformatZenable_chunkingZTRANSFER_ENCODINGr\   Ú_length_checkrx   Zlengthr1   Ú
setdefaultr�   ZDATEr   ZSERVERr   Z
CONNECTIONr   )rB   r�   r¤   rT   rl   r3   Zcookiern   r-   r-   r.   r¢   †  s\    ÿÿ







zStreamResponse._prepare_headersc                 Ã   s^   | j }|d k	st‚| j}|d k	s$t‚|j}d |d |d | j| j¡}| || j¡I d H  d S )NzHTTP/{}.{} {} {}r   r   )	r;   rP   r<   rl   r¯   rJ   rM   Zwrite_headersr@   )rB   r�   r¤   rl   Zstatus_liner-   r-   r.   r£   À  s       ÿzStreamResponse._write_headers©Údatar4   c                 Ã   sV   t |tttfƒs tdt|ƒ ƒ‚| jr.tdƒ‚| jd kr@tdƒ‚| j 	|¡I d H  d S )Nú#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())
rb   ÚbytesÚ	bytearrayÚ
memoryviewrP   r`   r=   r]   r<   Úwrite©rB   r³   r-   r-   r.   r¸   Ì  s     ÿ
þ
zStreamResponse.writec                 Ã   sD   | j rtdƒ‚| jd k	s tdƒ‚tjdtdd� | j ¡ I d H  d S )NzEOF has already been sentúResponse has not been startedz2drain method is deprecated, use await resp.write()é   )Ú
stacklevel)r=   rP   r<   rW   rX   rY   ÚdrainrF   r-   r-   r.   r½   Ø  s    ýzStreamResponse.drainó    c                 Ã   sn   t |tttfƒs tdt|ƒ ƒ‚| jr*d S | jd k	s<tdƒ‚| j |¡I d H  d| _d | _	| jj
| _d | _d S )Nr´   rº   T)rb   rµ   r¶   r·   rP   r`   r=   r<   Ú	write_eofr;   Zoutput_sizer>   r¹   r-   r-   r.   r¿   â  s     ÿ
þ
zStreamResponse.write_eofc                 C   s\   | j rd}n2| jr:| jd k	s t‚| jj› d| jj› d�}nd}d| jj› d| j› d|› d�S )NÚeofú znot preparedú<ú>)	r=   rG   r;   rP   Úmethodri   rz   r*   r2   )rB   Úinfor-   r-   r.   Ú__repr__ò  s    zStreamResponse.__repr__)Úkeyr4   c                 C   s
   | j | S rE   ©r?   ©rB   rÇ   r-   r-   r.   Ú__getitem__ü  s    zStreamResponse.__getitem__)rÇ   rn   r4   c                 C   s   || j |< d S rE   rÈ   )rB   rÇ   rn   r-   r-   r.   Ú__setitem__ÿ  s    zStreamResponse.__setitem__c                 C   s   | j |= d S rE   rÈ   rÉ   r-   r-   r.   Ú__delitem__  s    zStreamResponse.__delitem__c                 C   s
   t | jƒS rE   )Úlenr?   rF   r-   r-   r.   Ú__len__  s    zStreamResponse.__len__c                 C   s
   t | jƒS rE   )Úiterr?   rF   r-   r-   r.   Ú__iter__  s    zStreamResponse.__iter__c                 C   s   t t| ƒƒS rE   )ÚhashÚidrF   r-   r-   r.   Ú__hash__  s    zStreamResponse.__hash__)Úotherr4   c                 C   s   | |kS rE   r-   )rB   rÔ   r-   r-   r.   Ú__eq__  s    zStreamResponse.__eq__)N)N)r¾   )Cr*   r+   r,   r°   rQ   r   rr   r    rC   Úpropertyra   rG   rH   r1   rK   rL   r2   r   r
   r   rA   rT   rU   rV   rZ   r^   r   r!   rc   r3   rd   ru   rv   rx   Úsetterr}   r€   r‡   r‰   rŠ   r   r�   r   r   r›   rž   r   r¡   rŸ   r¢   r£   rµ   r¸   r½   r¿   rÆ   r   rÊ   rË   rÌ   rÎ   r	   rÐ   rÓ   ÚobjectrÕ   Ú__classcell__r-   r-   ry   r.   r"   C   sè   ûúüû ÿþôó5 ÿ  þþÿþ	

:

r"   c                       sV  e Zd Zddddddddddœ	eeee ee ee ee ee ee ee ddœ
‡ fdd„Z	e
eeeef  dœdd	„ƒZejejejfeeedd
œdd	„ƒZe
ee dœdd„ƒZejeddœdd„ƒZe
ee dœ‡ fdd„ƒZejee ddœdd„ƒZd"eddœ‡ fdd„Zdedœ‡ fdd„Zeddœdd„Zeddœ‡ fd d!„Z‡  ZS )#r#   Nr/   )	Úbodyr1   r2   Útextr3   r}   r€   Úzlib_executor_sizeÚzlib_executor)
rÚ   r1   r2   rÛ   r3   r}   r€   rÜ   rÝ   r4   c       	            s^  |d k	r|d k	rt dƒ‚|d kr(tƒ }
nt|tƒs<t|ƒ}
n|}
|d k	rXd|krXt dƒ‚|d k	rÐtj|
kr||sr|rÎt dƒ‚nRt|tƒs–tdt|ƒ ƒ‚|d kr¢d}|d kr®d}|d | |
tj< | |¡}d }nNtj|
krô|d k	sê|d k	ròt dƒ‚n*|d k	�r|d k	�r|d| 7 }||
tj< t	ƒ j
|||
d	� |d k	�rB|| _n|| _d | _|| _|	| _d S )
Nz&body and text are not allowed togetherr€   z,charset must not be in content_type argumentzPpassing both Content-Type header and content_type or charset params is forbiddenútext argument must be str (%r)ú
text/plainúutf-8z
; charset=r0   )Ú
ValueErrorr   rb   r   r�   rr   Ú	TypeErrorr`   Úencoderw   rC   rÛ   rÚ   Ú_compressed_bodyÚ_zlib_executor_sizeÚ_zlib_executor)rB   rÚ   r1   r2   rÛ   r3   r}   r€   rÜ   rÝ   Zreal_headersry   r-   r.   rC     sP    


ÿ


ÿ



zResponse.__init__rD   c                 C   s   | j S rE   )r5   rF   r-   r-   r.   rÚ   Y  s    zResponse.body)rÚ   r�   r\   r4   c                 C   sê   |d krd | _ d| _nÊt|ttfƒr2|| _ d| _n®ztj |¡ | _ }W n& tjk
rn   t	dt
|ƒ ƒ‚Y nX d| _| j}| js¤||kr¤|j}|d k	r¤t|ƒ||< ||kr¶|j||< |jrà|j ¡ D ]\}}||krÆ|||< qÆd | _d S )NFzUnsupported body type %rT)r5   Ú_body_payloadrb   rµ   r¶   r   ZPAYLOAD_REGISTRYrp   ÚLookupErrorrá   r`   r@   r7   Úsizerr   r}   r3   r—   rä   )rB   rÚ   r�   r\   r3   ré   rÇ   rn   r-   r-   r.   rÚ   ]  s.    

c                 C   s    | j d krd S | j  | jpd¡S )Nrà   )r5   Údecoder€   rF   r-   r-   r.   rÛ   †  s    
zResponse.text)rÛ   r4   c                 C   s`   |d ks"t |tƒs"tdt|ƒ ƒ‚| jdkr2d| _| jd krBd| _| | j¡| _d| _d | _	d S )NrÞ   r�   rß   rà   F)
rb   rr   rP   r`   r}   r€   rã   r5   rç   rä   )rB   rÛ   r-   r-   r.   rÛ   Œ  s    
 ÿ
þ

c                    sX   | j r
d S tj| jkrtƒ jS | jd k	r2t| jƒS | jr<d S | j	d k	rPt| j	ƒS dS d S )Nr   )
r7   r   r\   r@   rw   rx   rä   rÍ   rç   r5   rF   ry   r-   r.   rx   ›  s    



zResponse.content_lengthr{   c                 C   s   t dƒ‚d S )Nz#Content length is set automatically)r]   r|   r-   r-   r.   rx   ®  s    r¾   r²   c                 ƒ   sä   | j r
d S | jd kr| j}n| j}|r4td|›�ƒ‚| jd k	sBt‚| jd k	sPt‚|d k	rÐ| jjtjksp| j	dkr‚t
ƒ  ¡ I d H  qà| jr¶tt|ƒ}| | j¡I d H  t
ƒ  ¡ I d H  qàt
ƒ  tt|ƒ¡I d H  nt
ƒ  ¡ I d H  d S )Nzdata arg is not supported, got )rª   i0  )r=   rä   r5   rP   r;   r<   Ú_methodr   Z	METH_HEADrJ   rw   r¿   rç   r   r   r¸   rµ   )rB   r³   rÚ   r   ry   r-   r.   r¿   ²  s"    

zResponse.write_eofr%   rœ   c                 ƒ   sX   | j sFtj| jkrF| jsF| jd k	r:tt| jƒƒ| jtj< nd| jtj< tƒ  	|¡I d H S )NÚ0)
r7   r   r\   r@   rç   r5   rr   rÍ   rw   rŸ   r    ry   r-   r.   rŸ   È  s    
zResponse._start)Ú	zlib_moder4   c                 C   sB   |dkst ‚tj|d�}| j}|d k	s*t ‚| |¡| ¡  | _d S )Nr   )Zwbits)rP   ÚzlibÚcompressobjr5   ÚcompressÚflushrä   )rB   rí   rï   Úbody_inr-   r-   r.   Ú_compress_bodyÒ  s
    zResponse._compress_bodyr˜   c                 ƒ   sÌ   | j s| jrtƒ  |¡I d H S |tjkrÈ|tjkr<dtj ntj}| j	}|d k	sTt
‚| jd k	rŠt|ƒ| jkrŠt ¡  | j| j|¡I d H  n
|  |¡ | j}|d k	s¦t
‚|j| jtj< tt|ƒƒ| jtj< d S )Né   )rç   r7   rw   r›   r!   r)   r(   rî   Z	MAX_WBITSr5   rP   rå   rÍ   ÚasyncioZget_event_loopZrun_in_executorræ   ró   rä   rn   r@   r   rš   rr   r\   )rB   r™   rí   rò   Zbody_outry   r-   r.   r›   Ù  s*    
ÿÿþ  ÿ
zResponse._do_start_compression)r¾   )r*   r+   r,   r   rQ   r   rr   r    r   rC   rÖ   r   rµ   r   rÚ   r×   r   r�   r\   r   rÛ   rx   r¿   r   rŸ   ró   r!   r›   rÙ   r-   r-   ry   r.   r#     sX   õôFüû(
r#   r/   zapplication/json)rÛ   rÚ   r1   r2   r3   r}   Údumps)	r³   rÛ   rÚ   r1   r2   r3   r}   rö   r4   c                C   s6   | t k	r"|s|rtdƒ‚n|| ƒ}t||||||d�S )Nz3only one of data, text, or body should be specified)rÛ   rÚ   r1   r2   r3   r}   )r   rá   r#   )r³   rÛ   rÚ   r1   r2   r3   r}   rö   r-   r-   r.   r$   ö  s    
úr$   )@rõ   Úcollections.abcÚcollectionsr‡   ÚenumZjsonrŽ   r‹   rW   rî   Zconcurrent.futuresr   Zemail.utilsr   Zhttp.cookiesr   r   Útypingr   r   r   r	   r
   r   r   r   r   r   Z	multidictr   r   rO   r   r   Úabcr   Zhelpersr   r   r   r   Zhttpr   r   r   r   r   Ztypedefsr   r    Ú__all__Zweb_requestr%   rr   Z	BaseClassZ	_reservedÚEnumr!   r"   r#   rö   rµ   rQ   r$   r-   r-   r-   r.   Ú<module>   sj   0
   R fÿ÷ö