
    bfl                     H   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 d dl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! 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.m/Z/ ddlm0Z0 ddl1m2Z2m3Z3 dZ4erddl5m6Z6 ee7ef         Z8nej        j        Z8 G d dej9                  Z: G d de8e&          Z; G d de;          Z<e*fddddddej=        ddedee7         dee>         de?dee7         dee3         d e7d!e2d"e<fd#Z@dS )$    N)Executor)
HTTPStatus)SimpleCookie)TYPE_CHECKINGAnyDictIteratorMutableMappingOptionalUnioncast)CIMultiDictistr   )hdrspayload)AbstractStreamWriter)ZLibCompressor)
ETAG_ANYQUOTED_ETAG_REETagHeadersMixinmust_be_empty_bodyparse_http_daterfc822_formatted_timesentinelshould_remove_content_lengthvalidate_etag_value)SERVER_SOFTWAREHttpVersion10HttpVersion11)Payload)JSONEncoderLooseHeaders)ContentCodingStreamResponseResponsejson_response)BaseRequestc                       e Zd ZdZdZdZdS )r%   deflategzipidentityN)__name__
__module____qualname__r+   r,   r-        N/var/www/html/Alfredo/env/lib/python3.11/site-packages/aiohttp/web_response.pyr%   r%   7   s        
 GDHHHr2   r%   c                       e Zd ZdZdddddedee         dee         ddfd	Ze	de
fd
            Ze	dPd            Ze	defd            Ze	de
fd            Ze	de
fd            Ze	defd            Z	 dQdedee         ddfdZe	dee
         fd            ZdRdZe	defd            Ze	defd            ZdQdee         ddfdZ	 dQdeee
ef                  ddfdZe	dSd            Ze	defd            Zdddddddddded ed!ee         d"ee         d#eeeef                  d$ed%ee
         d&ee
         d'ee         d(ee         ddfd)Zddd*ded"ee         d$eddfd+Ze	dee         f fd,            Zej         d ee         ddfd-            Ze	def fd.            Z!e!j         d eddfd/            Z!e	dee         f fd0            Z"e"j         d ee         ddfd1            Z"e	dee#j#                 fd2            Z$e$j         d eeee%e#j#        ef                  ddfd3            Z$e	dee&         fd4            Z'e'j         d eee&ef                  ddfd5            Z'e(j)        fd6e*ddfd7Z+d8eddfd9Z,dTd<Z-d:d;dee.         fd=Z/d:d;de.fd>Z0dRd?Z1dRd@Z2dAe3ddfdBZ4dRdCZ5dUdAe3ddfdEZ6defdFZ7dGede8fdHZ9dGed e8ddfdIZ:dGeddfdJZ;defdKZ<de=e         fdLZ>defdMZ?dNe@de
fdOZA xZBS )Vr&   T   Nstatusreasonheadersr7   r8   r9   returnc                F   d | _         d | _        d| _        d| _        d | _        t                      | _        d | _        d | _        d| _	        d | _
        d| _        i | _        |t          |          | _        nt                      | _        |                     ||           d S )NFr   )_body_keep_alive_chunked_compression_compression_forcer   _cookies_req_payload_writer	_eof_sent_must_be_empty_body_body_length_stater   _headers
set_status)selfr7   r8   r9   s       r3   __init__zStreamResponse.__init__J   s     
+/!;?$+/	?C37 &(.9'.B.BDMM'MMDM'''''r2   c                     | j         d uS N)rC   rJ   s    r3   preparedzStreamResponse.preparedf   s    #4//r2   Optional[asyncio.Task[None]]c                 ,    | j         r| j         j        S d S rM   )rB   taskrN   s    r3   rR   zStreamResponse.taskj   s    9 	9>!4r2   c                     | j         S rM   )_statusrN   s    r3   r7   zStreamResponse.statusq   
    |r2   c                     | j         S rM   )r>   rN   s    r3   chunkedzStreamResponse.chunkedu   
    }r2   c                     | j         S rM   )r?   rN   s    r3   compressionzStreamResponse.compressiony         r2   c                     | j         S rM   )_reasonrN   s    r3   r8   zStreamResponse.reason}   rU   r2   c                     | j         r
J d            t          |          | _        |-	 t          | j                  j        }n# t
          $ r d}Y nw xY w|| _        d S )NzGCannot change the response status code after the headers have been sent )rO   intrT   r   phrase
ValueErrorr]   )rJ   r7   r8   s      r3   rI   zStreamResponse.set_status   s    
 = 	
 	
X	
 	
 	
 6{{>#DL118   s   A AAc                     | j         S rM   r=   rN   s    r3   
keep_alivezStreamResponse.keep_alive   s    r2   c                     d| _         d S )NFrd   rN   s    r3   force_closezStreamResponse.force_close   s     r2   c                     | j         S rM   )rF   rN   s    r3   body_lengthzStreamResponse.body_length   r[   r2   c                 `    t          j        dt                     | j        sJ | j        j        S )Nzoutput_length is deprecated)warningswarnDeprecationWarningrC   buffer_sizerN   s    r3   output_lengthzStreamResponse.output_length   s1    35GHHH#####//r2   
chunk_sizec                     d| _         t          j        | j        v rt	          d          |t          j        dt                     dS 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)r>   r   CONTENT_LENGTHrH   RuntimeErrorrk   rl   rm   )rJ   rp   s     r3   enable_chunked_encodingz&StreamResponse.enable_chunked_encoding   sX    $-//S   !M:<NOOOOO "!r2   forcec                     t          |          t          k    r5|rt          j        nt          j        }t          j        dt                     n!|t          |t                    s
J 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-   rk   rl   rm   
isinstancer?   r@   )rJ   ru   s     r3   enable_compressionz!StreamResponse.enable_compression   s    
 ;;$-2NM))8NEM=?Q    e]33  I   !"'r2   CIMultiDict[str]c                     | j         S rM   )rH   rN   s    r3   r9   zStreamResponse.headers   rX   r2   c                     | j         S rM   )rA   rN   s    r3   cookieszStreamResponse.cookies   rX   r2   /)expiresdomainmax_agepathsecurehttponlyversionsamesitenamevaluer   r   r   r   r   r   r   r   c                   | j                             |          }|&|j        dk    r| j                             |d           || j         |<   | j         |         }|||d<   n|                    d          dk    r|d= |||d<   |t	          |          |d<   nd|v r|d= ||d<   |||d<   |||d	<   |	|	|d
<   |
|
|d<   dS dS )zSet or update response cookie.

        Sets new cookie or updates existent with new value.
        Also updates only those params which are not None.
        Nr_   r   Thu, 01 Jan 1970 00:00:00 GMTr   zmax-ager   r   r   r   r   )rA   getcoded_valuepopstr)rJ   r   r   r   r   r   r   r   r   r   r   oldcs                r3   
set_cookiezStreamResponse.set_cookie   s   & m%%?s"44MdD)))#dM$"AiLLUU9!@@@) AhKw<<AiLL!^^)&	 AhK$AjM"AiL$AjMMM  r2   )r   r   c                r    | j                             |d           |                     |ddd||           dS )zBDelete cookie.

        Creates new empty expired cookie.
        Nr_   r   r   )r   r   r   r   )rA   r   r   )rJ   r   r   r   s       r3   
del_cookiezStreamResponse.del_cookie   sS     	$%%%3 	 	
 	
 	
 	
 	
r2   c                 *    t                      j        S rM   )supercontent_lengthrJ   	__class__s    r3   r   zStreamResponse.content_length  s     ww%%r2   c                     |Ht          |          }| j        rt          d          t          |          | j        t
          j        <   d S | j                            t
          j        d            d S )Nz<You can't set content length when chunked encoding is enable)r`   r>   rs   r   rH   r   rr   r   rJ   r   s     r3   r   zStreamResponse.content_length  sp    JJE} "U   25UDM$-...Md1488888r2   c                 *    t                      j        S rM   )r   content_typer   s    r3   r   zStreamResponse.content_type  s     ww##r2   c                 d    | j          t          |          | _        |                                  d S rM   )r   r   _content_type_generate_content_type_headerr   s     r3   r   zStreamResponse.content_type"  s1     ZZ**,,,,,r2   c                 *    t                      j        S rM   )r   charsetr   s    r3   r   zStreamResponse.charset(  s     wwr2   c                    | j         }|dk    rt          d          | j        J || 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   rs   _content_dictr   r   lowerr   )rJ   r   ctypes      r3   r   zStreamResponse.charset-  s    !...?   !---=""9d3333,/JJ,<,<,>,>Dy)**,,,,,r2   c                 d    t          | j                            t          j                            S )zuThe value of Last-Modified HTTP header, or None.

        This header is represented as a `datetime` object.
        )r   rH   r   r   LAST_MODIFIEDrN   s    r3   last_modifiedzStreamResponse.last_modified<  s%     t}001CDDEEEr2   c                 *   |'| j                             t          j        d            d S t	          |t
          t          f          rMt          j        dt          j	        t          j        |                              | j         t          j        <   d S t	          |t          j                  r;t          j        d|                                          | j         t          j        <   d S t	          |t                    r|| j         t          j        <   d S d S )Nz%a, %d %b %Y %H:%M:%S GMT)rH   r   r   r   ry   r`   floattimestrftimegmtimemathceildatetimeutctimetupler   r   s     r3   r   zStreamResponse.last_modifiedD  s     =Md0$77777U|,, 		604+T[59I9I-J-J1 1DM$,--- x011 	604+U-?-?-A-A1 1DM$,--- s## 	605DM$,---	6 	6r2   c                 0   | j                             t          j                  }|sd S |t          k    rt          t                    S t          j        |          }|sd S |                    dd          \  }}t          t          |          |          S )N)r   r      )is_weakr   )
rH   r   r   ETAGr   r   r   	fullmatchgrouprx   )rJ   quoted_valuematchr   r   s        r3   etagzStreamResponse.etagU  s    }((33 	(4X%%h''''(66 	4Q**MM
 
 
 	
r2   c                    |'| j                             t          j        d            d S t	          |t
                    r|t          k    s%t	          |t                    r+|j        t          k    rt          | j         t          j        <   d S t	          |t
                    r)t          |           d| d| j         t          j        <   d S t	          |t                    rat	          |j        t
                    rGt          |j                   |j
        rd|j         dn
d|j         d}|| j         t          j        <   d S t          dt          |           d          )N"zW/"zUnsupported etag type: z . etag must be str, ETag or None)rH   r   r   r   ry   r   r   r   r   r   r   rb   rw   )rJ   r   	hdr_values      r3   r   zStreamResponse.etage  sV   =Mdi.....$$ 	():):ud## *;(-x(?(?'/DM$)$$$s## 	&&&'35|||DM$)$$$t$$ 	EK)E)E 	,,,05U,ek,,,,CUu{CUCUCUI'0DM$)$$$2$u++ 2 2 2  r2   CONTENT_TYPEc                     | j         J | j        J d                    d | j                                         D                       }|r| j        dz   |z   }n| j        }|| j        |<   d S )Nz; c              3   *   K   | ]\  }}| d | V  dS )=Nr1   ).0kvs      r3   	<genexpr>z?StreamResponse._generate_content_type_header.<locals>.<genexpr>  s0      MM$!Qa::!::MMMMMMr2   )r   r   joinitemsrH   )rJ   r   paramsr   s       r3   r   z,StreamResponse._generate_content_type_headerz  s     !---!---MM$2D2J2J2L2LMMMMM 	'&-6EE&E&+l###r2   codingc                    K   |t           j        k    rh| j        J |j        | j        t
          j        <   | j                            |j                   | j                            t
          j	        d            d S d S rM   )
r%   r-   rC   r   rH   r   CONTENT_ENCODINGrz   popallrr   )rJ   r   s     r3   _do_start_compressionz$StreamResponse._do_start_compression  sx      ]+++'33339<DM$/0 33FLAAA M  !4d;;;;; ,+r2   requestr)   c                 ,  K   | j         r"|                     | j                    d {V  d S |j                            t          j        d                                          }t          D ])}|j        |v r|                     |           d {V   d S *d S )Nr_   )	r@   r   r9   r   r   ACCEPT_ENCODINGr   r%   r   )rJ   r   accept_encodingr   s       r3   _start_compressionz!StreamResponse._start_compression  s      " 		,,T-DEEEEEEEEEEE &o11$2FKKQQSSO'  <?2244V<<<<<<<<<FF 3 r2   c                    K   | j         rd S | j        | j        S t          |j        | j                  | _        |                     |           d {V S rM   )rD   rC   r   methodr7   rE   _start)rJ   r   s     r3   preparezStreamResponse.prepare  sa      > 	4+''#5gndk#R#R [[)))))))))r2   c                    K   || _         |j        x}| _        |                                  d {V  |                    |            d {V  |                                  d {V  |S rM   )rB   rC   _prepare_headers_prepare_hook_write_headers)rJ   r   writers      r3   r   zStreamResponse._start  s      	(/(??%##%%%%%%%%%##D)))))))))!!#########r2   c                 R  K   | j         }|J | j        }|J | j        }||j        }|| _        |j        }| j        }| j                                        D ]@}|                    d          dd          }|	                    t          j        |           A| j        r|                     |           d {V  | j        rx|t          k    r't!          d                    |j                            | j        s#|                                 d|t          j        <   t          j        |v r|t          j        = nY| j        rR| j        |_        |j        ?|t          k    r+| j        s#|                                 d|t          j        <   n	| j        sd}| j        rQt          j        |v r't3          |j        | j                  r|t          j        = t          j        |v r|t          j        = n |                    t          j        d           |                    t          j        t?                                 |                    t          j         tB                     t          j"        |vr<|r|tF          k    rd|t          j"        <   d S d S |t          k    rd	|t          j"        <   d S d S d S )
Nr_   )headerr   z@Using chunked encoding is forbidden for HTTP/{0.major}.{0.minor}rW   Fr   z
keep-aliveclose)$rB   rC   r=   re   r   rH   rA   valuesoutputaddr   
SET_COOKIEr?   r   r>   r!   rs   formatrE   enable_chunkingTRANSFER_ENCODINGrr   _length_checkr   lengthr   r   r7   
setdefaultr   DATEr   SERVERr   
CONNECTIONr    )rJ   r   r   re   r   r9   cookier   s           r3   r   zStreamResponse._prepare_headers  s     )"""%!!!%
 +J%/-m**,, 	0 	0FMMM,,QRR0EKK//// 	3))'222222222= 	'-''"3396'/3J3J   + <&&(((2;./"g--D/0 	' /FM}$m++3 D..000:C 671 '!&J # 
	N"g--2N3 3- D/0 %00D23t02LMMM49&;&=&=>>>4;888 ?')) 7m++/;GDO,,, ,+ m++/6GDO,,, *)
 ,+r2   c                    K   | j         }|J | j        }|J |j        }d                    |d         |d         | j        | j                  }|                    || j                   d {V  d S )NzHTTP/{}.{} {} {}r   r   )rB   rC   r   r   rT   r]   write_headersrH   )rJ   r   r   r   status_lines        r3   r   zStreamResponse._write_headers  s      )"""%!!!/(//AJ
DL$,
 
 "";>>>>>>>>>>>r2   datac                   K   t          |t          t          t          f          sJ dt	          |          z              | j        rt          d          | j        t          d          | j                            |           d {V  d S )N#data argument must be byte-ish (%r)z%Cannot call write() after write_eof()z$Cannot call write() before prepare())	ry   bytes	bytearray
memoryviewrw   rD   rs   rC   writerJ   r   s     r3   r   zStreamResponse.write  s      5)Z0
 
 	> 	>04::=	> 	> 	> > 	HFGGG'EFFF"((...........r2   c                    K   | j         r
J d            | j        
J d            t          j        dt          d           | j                                         d {V  d S )NzEOF has already been sentResponse has not been startedz2drain method is deprecated, use await resp.write()r   )
stacklevel)rD   rC   rk   rl   rm   drainrN   s    r3   r   zStreamResponse.drain  s      >>>#>>>>#//1P///@	
 	
 	
 	

 "((***********r2   r2   c                 B  K   t          |t          t          t          f          sJ dt	          |          z              | j        rd S | j        
J d            | j                            |           d {V  d| _        d | _        | j        j	        | _
        d | _        d S )Nr   r   T)ry   r   r   r   rw   rD   rC   	write_eofrB   output_sizerF   r   s     r3   r   zStreamResponse.write_eof  s      5)Z0
 
 	> 	>04::=	> 	> 	> > 	F#//1P///",,T222222222	 0<#r2   c                     | j         rd}n/| j        r&| j        J | j        j         d| j        j         d}nd}d| j        j         d| j         d| dS )Neof znot prepared<>)rD   rO   rB   r   r   r   r.   r8   )rJ   infos     r3   __repr__zStreamResponse.__repr__!  sy    > 	"DD] 	"9(((i&:::::DD!DB4>*BBT[BB4BBBBr2   keyc                     | j         |         S rM   rG   rJ   r  s     r3   __getitem__zStreamResponse.__getitem__+  s    {3r2   c                     || j         |<   d S rM   r
  )rJ   r  r   s      r3   __setitem__zStreamResponse.__setitem__.  s     Cr2   c                     | j         |= d S rM   r
  r  s     r3   __delitem__zStreamResponse.__delitem__1  s    Kr2   c                 *    t          | j                  S rM   )lenrG   rN   s    r3   __len__zStreamResponse.__len__4  s    4;r2   c                 *    t          | j                  S rM   )iterrG   rN   s    r3   __iter__zStreamResponse.__iter__7  s    DK   r2   c                 :    t          t          |                     S rM   )hashidrN   s    r3   __hash__zStreamResponse.__hash__:  s    BtHH~~r2   otherc                 
    | |u S rM   r1   )rJ   r  s     r3   __eq__zStreamResponse.__eq__=  s    u}r2   )r:   rP   rM   )r:   N)r:   r{   )r   r)   r:   Nr2   )Cr.   r/   r0   r   r`   r   r   r$   rK   propertyrx   rO   rR   r7   rW   rZ   r8   rI   re   rg   ri   ro   rt   r   r%   rz   r9   r   r~   r   r   r   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	   r  r  objectr  __classcell__r   s   @r3   r&   r&   F   sT       M
  $*.( ( ( ( 	(
 ,'( 
( ( ( (8 0$ 0 0 0 X0    X     X     X !T ! ! ! X!     X !%   
	      HTN       X ! ! ! ! !S ! ! ! X! 0s 0 0 0 X0
	P 	P(3- 	P4 	P 	P 	P 	P =A( (eD-$789(	( ( ( ($    X     X "& $-1!%#'!%"&1% 1% 1%1% 1%
 #1% 1% %S/*1% 1% 1% 4.1% #1% 3-1% 
1% 1% 1% 1%h 59c
 
 

$,SM
@C
	
 
 
 
$ & & & & & & X& 	9HSM 	9d 	9 	9 	9 	9 $c $ $ $ $ $ X$ -# -$ - - - -
 #      X ^-Xc] -t - - - ^- Fx(9: F F F XF 6eC0A3$FGH6	6 6 6 6  
htn 
 
 
 X
 
[(5s#34     [* $(#4
, 
, 
,	
, 
, 
, 
,<- <D < < < <
 
 
 
*] *x@T7U * * * *M 6J    @7 @7 @7 @7D
? 
? 
? 
?
/ 
/$ 
/ 
/ 
/ 
/+ + + +$ $E $D $ $ $ $ C# C C C C s  s        !s !3 !4 ! ! ! !s t             !(3- ! ! ! !#    F t        r2   r&   c                       e Zd Zdddddddddd	dededee         dee         dee         d	ee         d
ee         dee         dee         ddf fdZ	e
deeeef                  fd            Zej        deddfd            Ze
dee         fd            Zej        deddfd            Ze
dee         f fd            Zej        dee         ddfd            Zddeddf fdZdddef fdZdeddf fdZ xZS )r'   Nr5   )	bodyr7   r8   textr9   r   r   zlib_executor_sizezlib_executorr%  r7   r8   r&  r9   r   r   r'  r(  r:   c       	            ||t          d          |t                      }
n't          |t                    st          |          }
n|}
|d|v rt          d          |t          j        |
v r|s|rt          d          nt          |t
                    st          dt          |          z            |d}|d}|dz   |z   |
t          j        <   |                    |          }d }n=t          j        |
v r||t          d          n|||d|z   z  }||
t          j        <   t                      
                    |||
	           ||| _        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=r6   )rb   r   ry   r   r   r   	TypeErrorrw   encoder   rK   r&  r%  _compressed_body_zlib_executor_size_zlib_executor)rJ   r%  r7   r8   r&  r9   r   r   r'  r(  real_headersr   s              r3   rK   zResponse.__init__B  s     0EFFF?-8]]LLG[11 	#&w//LL"L#	\(A(ANOOO L00 7 $'   "$,, S#$DtDzz$QRRR'#/L?%G2>2MPW2WT./{{7++ L00+w/B$'   0C  +*$w(>>6BL!23v|LLLDIIDI15#5 +r2   c                     | j         S rM   )r<   rN   s    r3   r%  zResponse.body  s
    zr2   c                    |d | _         d| _        nt          |t          t          f          r|| _         d| _        n	 t
          j                            |          x| _         }n2# t
          j        $ r  t          dt          |          z            w xY wd| _        | j        }t          j        |vr|j        |t          j        <   |j        r(|j                                        D ]\  }}||vr|||<   d | _        d S )NFzUnsupported body type %rT)r<   _body_payloadry   r   r   r   PAYLOAD_REGISTRYr   LookupErrorrb   rw   rH   r   r   r   r9   r   r/  )rJ   r%  r9   r  r   s        r3   r%  zResponse.body  s$   <*.DJ',Dui011 	-DJ!&DJ$+$<$@$@$F$FF
TT& J J J !;d4jj!HIIIJ "&DmG  //-1->)* | -$(L$6$6$8$8 - -LS%'))', $s   &A% %/Bc                 V    | j         d S | j                             | j        pd          S )Nr,  )r<   decoder   rN   s    r3   r&  zResponse.text  s,    :4z  !8999r2   c                    |/t          |t                    sJ dt          |          z              | j        dk    rd| _        | j        d| _        |                    | j                  | _        d| _        d | _        d S )Nr*  r   r+  r,  F)	ry   r   rw   r   r   r.  r<   r5  r/  )rJ   r&  s     r3   r&  zResponse.text  s    |z# 
  
||+d4jj8 ||  ::: ,D<"DL[[..
" $r2   c                     | j         rd S t          j        | j        v rt	                      j        S | j        t          | j                  S | j        rd S | j	        t          | j	                  S dS )Nr   )
r>   r   rr   rH   r   r   r/  r  r5  r<   r   s    r3   r   zResponse.content_length  st    = 	4$-//77)) ,t,--- 	4Z#tz??"1r2   r   c                      t          d          )Nz#Content length is set automatically)rs   r   s     r3   r   zResponse.content_length  s    @AAAr2   r2   r   c                 p  K   | j         rd S | j        | j        }n| j        }|rJ d|            | j        J | j        J || j        r(t                                                       d {V  d S | j        rXt          t          |          } |j        | j                   d {V  t                                                       d {V  d S t                                          t          t          |                     d {V  d S t                                                       d {V  d S )Nzdata arg is not supported, got )rD   r/  r<   rB   rC   rE   r   r   r5  r   r"   r   r   )rJ   r   r%  r   r   s       r3   r   zResponse.write_eof  s     > 	F (48JDD(DCCC4CCCCCy$$$#///' ;gg'')))))))))))# ;w--#gmD$8999999999gg'')))))))))))gg''UD(9(9:::::::::::''##%%%%%%%%%%%r2   r   r)   c                   K   t          |j        | j                  r&t          j        | j        v r| j        t          j        = n| j        st          j        | j        vr| j        rCt          t          | j
                  j        }|!t          |          | j        t          j        <   nv| j
        rt          | j
                  nd}|dk    s2| j        dk    rH|j                                        t          j        k    r!t          |          | j        t          j        <   t!                                          |           d {V S )N0i0  )r   r   r7   r   rr   rH   r>   r5  r   r"   r<   sizer   r  upper	METH_HEADr   r   )rJ   r   r@  body_lenr   s       r3   r   zResponse._start  s     'DD 	G"dm33M$"56 	G4#6dm#K#K! 
GGTZ005#9<TDM$"56.2jA3tz???cs??K3&&7>+?+?+A+AT^+S+S9<XDM$"56WW^^G,,,,,,,,,r2   r   c                   K   | j         s| j        r't                                          |           d {V S |t          j        k    rt          t          |j                  | j	        | j
                  }| j        J | j	        Bt          | j                  dk    r*t          j        dt          | j                   d           |                    | j                   d {V |                                z   | _        | j        J |j        | j        t&          j        <   t          t          | j                            | j        t&          j        <   d S d S )N)encodingmax_sync_chunk_sizeexecutori   z2Synchronous compression of large response bodies (z bytes) might block the async event loop. Consider providing a custom value to zlib_executor_size/zlib_executor response properties or disabling compression on it.)r5  r>   r   r   r%   r-   r   r   r   r0  r1  r<   r  rk   rl   compressflushr/  rH   r   r   rr   )rJ   r   
compressorr   s      r3   r   zResponse._do_start_compression  sv      	? 	?66v>>>>>>>>>]+++ (V\**$($<,  J
 :)))'/C
OOk4Q4QXDJX X X   !))$*55555555
8H8H8J8JJ ! (44439<DM$/014S9N5O5O1P1PDM$-...- ,+r2   r  )r.   r/   r0   r   r`   r   r   r$   r   rK   r  r   r   r"   r%  r   r&  r   r   r   r   r%   r   r"  r#  s   @r3   r'   r'   A  s         $"*.&*!%,0,0D, D, D, D, 	D,
 D, smD, ,'D, smD, #D, %SMD,  )D, 
D, D, D, D, D, D,L huUG^45    X 
[% %4 % % % [%: :hsm : : : X:
 
[% % % % % [%       X$ BHSM Bd B B B B& &E &D & & & & & &,-M -6J - - - - - -&Q- QD Q Q Q Q Q Q Q Q Q Qr2   r'   r5   zapplication/json)r&  r%  r7   r8   r9   r   dumpsr   r&  r%  r7   r8   r9   r   rK  r:   c                z    | t           ur|s|rt          d           ||           }t          ||||||          S )Nz3only one of data, text, or body should be specified)r&  r%  r7   r8   r9   r   )r   rb   r'   )r   r&  r%  r7   r8   r9   r   rK  s           r3   r(   r(     sc     8 	4 	RSSS5;;D!   r2   )Aasynciocollections.abccollectionsr   enumjsonr   r   rk   concurrent.futuresr   httpr   http.cookiesr   typingr   r   r   r	   r
   r   r   r   	multidictr   r   r_   r   r   abcr   compression_utilsr   helpersr   r   r   r   r   r   r   r   r   r   r   r    r!   r"   typedefsr#   r$   __all__web_requestr)   r   	BaseClassEnumr%   r&   r'   rK  r   r`   r(   r1   r2   r3   <module>r_     s              ' ' ' ' ' '       % % % % % %	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 ( ' ' ' ' ' ' '         % % % % % % - - - - - -                        @ ? ? ? ? ? ? ? ? ?       / / / / / / / /
J  /((((((sCx(II.I    DI   x x x x xY x x xvXQ XQ XQ XQ XQ~ XQ XQ XQx    &**  
 3- 5/	
  SM l#        r2   