
    U}bg                        U 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
mZmZ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mZ ddlmZ dd	lm Z  dd
l!m"Z"m#Z#m$Z$ ddl%m&Z&m'Z'm(Z(m)Z)m*Z* ddl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3 ddl4m5Z5m6Z6 ddl7m8Z8 ddl9m:Z:m;Z; ddl<m=Z= dZ>ed         Z? e@ejA                  ZBeeeC                  eDd<    ejE        d          ZFeeC         eDd<    ejG        deF d          ZHeeeC                  eDd<    ejG        dejI                  ZJeeeC                  eDd<    ejG        dejI                  ZKeeeC                  eDd<    ejG        d          ZLeeeM                  eDd<    G d d e          ZN G d! d"e          ZO ed#eNeO          ZP G d$ d%e          ZQ G d& d'e          ZR G d( d)          ZS G d* d+e jT        eeP                   ZU G d, d-eUeN                   ZV G d. d/eUeO                   ZW G d0 d1          ZX G d2 d3          ZYeVZZeWZ[eNZ\eOZ]	 e'sdd4l^mVZVmWZWmNZNmOZO eVZ_eWZ`eNZaeOZbdS dS # ec$ r Y dS w xY w)5    N)suppress)IntEnum)AnyClassVarFinalGenericListLiteral
NamedTupleOptionalPatternSetTupleTypeTypeVarUnion)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)
HAS_BROTLIBrotliDecompressorZLibDecompressor)DEBUGNO_EXTENSIONSBaseTimerContextmethod_must_be_empty_bodystatus_code_must_be_empty_body)BadHttpMessageBadStatusLineContentEncodingErrorContentLengthErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10)internal_logger)EMPTY_PAYLOADStreamReader)
RawHeaders)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSc                       e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   ee         ed<   eed	<   eed
<   e	ed<   dS )r4   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closecompressionupgradechunkedurlN)
__name__
__module____qualname__str__annotations__r*   r/   boolr   r        f/home/e360mart.nyusoft.in/public_html/e360mart_env/lib/python3.11/site-packages/aiohttp/http_parser.pyr4   r4   O   s}         KKK
III$$$$#MMMMMM	HHHHHrQ   r4   c                       e Zd ZU eed<   eed<   eed<   ee         ed<   eed<   e	ed<   e
e         ed<   e	ed<   e	ed	<   d
S )r5   rA   codereasonrC   rD   rE   rF   rG   rH   N)rJ   rK   rL   r*   rN   intrM   r   r/   rO   r   rP   rQ   rR   r5   r5   \   sy         
IIIKKKc""""#MMMMMMMMrQ   r5   _MsgTc                       e Zd ZdZdZdZdZdS )
ParseStater   r         N)rJ   rK   rL   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFrP   rQ   rR   rY   rY   k   s"        JLMOOOrQ   rY   c                   "    e Zd ZdZdZdZdZdZdS )
ChunkStater   r   rZ   r[      N)rJ   rK   rL   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSrP   rQ   rR   ra   ra   s   s+        NNNrQ   ra   c            	       Z    e Zd Z	 	 	 ddedededdfdZd	ee         ded
ef         fdZ	dS )r0        max_line_sizemax_headersmax_field_sizereturnNc                 0    || _         || _        || _        d S N)rk   rl   rm   )selfrk   rl   rm   s       rR   __init__zHeadersParser.__init__|   s"     +&,rQ   linesrB   c           	         t                      }g }d}|d         }t          |          }|r	 |                    dd          \  }}n# t          $ r t	          |          d w xY wt          |          dk    rt	          |          |d         |d         hddhz  rt	          |          |                    d          }t          |          | j        k    rdt          d                    |	                    d	d
                    t          | j                  t          t          |                              |	                    dd          }	t                              |	          st	          |          t          |          }
|dz  }||         }|o	|d         dv }|r|g}|r|
t          |          z  }
|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    |           |dz  }||k     r||         }|r
|d         dv }nd}n|d                    |          }nb|
| j        k    rWt          d                    |	                    d	d
                    t          | j                  t          |
                    |                    d          }|	                    dd          }d|v sd|v sd|v rt	          |          |                    |	|           |                    ||f           |t#          |          t%          |          fS )Nr      :r       	   s    	zrequest header name {}utf8backslashreplaceutf-8surrogateescape)rw   rx   zrequest header field {}rQ   
 )r   lensplit
ValueErrorr&   lstriprm   r(   formatdecoderM   r:   	fullmatchappendjoinstripaddr   tuple)rq   rs   rC   rD   	lines_idxline
line_countbnamebvaluenameheader_lengthcontinuation
bvalue_lstvalues                 rR   parse_headerszHeadersParser.parse_headers   s    %0MM	QxZZ
 O	04 $

4 3 3vv 4 4 4#D))t34 5zzQ#E*** a%)$Aw. *#D)))]]6**F5zzD///!,33V-?@@  +,,E

OO   <<):;;D$$T** +#E***KKM NI#D  6DGw$6L   $X
" !SYY.M$t':::)5<< %V5G H H    344..   %%d+++ NI :--$Y/ >+/7g+=L") # * *-- 4#666%188!LL1CDD  D/00M**   \\&))FMM'+<==E u}}5#F+++KKe$$$v///_  O	0b !))5+=+=>>s   A A#)ri   rj   ri   )
rJ   rK   rL   rV   rr   r	   bytesr   r/   r   rP   rQ   rR   r0   r0   {   s         " "	- -- - 	-
 
- - - -\?%[\?	&
2	3\? \? \? \? \? \?rQ   r0   c                      e Zd ZU dZee         ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 d(dee         d	ee	j
                 d
ededededee         dee         dee         dedeee                  dedededdfdZej        dee         defd            Zdee         fdZddej        ej        ej        fdededed ed!ed"edeeeeef                  eef         fd#Z dee         ded$e!ee         ee         eef         fd%Z"d&eddfd'Z#dS ))r1   FlaxN   ri   rj   Tprotocollooplimitrk   rl   rm   timerrT   r?   readallpayload_exceptionresponse_with_bodyread_until_eofauto_decompressrn   c                 <   || _         || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        || _        g | _        d| _        d| _        d | _        d | _        || _        || _        t'          |||          | _        d S )NrQ   F)r   r   rk   rl   rm   r   rT   r?   r   r   r   r   _lines_tail	_upgraded_payload_payload_parser_auto_decompress_limitr0   _headers_parser)rq   r   r   r   rk   rl   rm   r   rT   r?   r   r   r   r   r   s                  rR   rr   zHttpParser.__init__   s    " !	*&,
	!2"4,#%
<@ /,]KXXrQ   rs   c                     d S rp   rP   )rq   rs   s     rR   parse_messagezHttpParser.parse_message  s    rQ   c                    | j         !| j                                          d | _         n| j        r| j                            | j                   | j        rq| j        d         dk    r| j                            d           t          t                    5  |                     | j                  cd d d            S # 1 swxY w Y   d S )Nrv   z
rQ   )r   feed_eofr   r   r   r   	Exceptionr   rq   s    rR   r   zHttpParser.feed_eof  s    + ))+++#'D   z /""4:...{ ;;r?f,,K&&s+++i(( ; ;--dk::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;ts   B<<C C r6   rQ   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 F	   g }| j         r| j         |z   dc}| _         t          |          }d}	| j        }
|	|k     rG| j        ?| j        s7|                    ||	          }||	k    r| j        s|t          |          z   }	M||	k    r||	|         }|dk    r|                    d          }| j                            |           |t          |          z   }	| j        d         |k    r	 | 	                    | j                  | j        
                                 n# | j        
                                 w xY wdt          t                   ffd} |            }|j        v rt          |          j        | _        t!          d| j                  }t!          d	d          }| j        J t'          |          pt)          |ot+          |                    }|s||dk    sj        rtj        smt/          | j        | j        |
| j        
          }t5          ||j        |j        | j        | j        | j        | j        | j         
  
        }|j!        s|| _        n||k    rotE          tF                    sJ t/          | j        | j        |
| j        
          }d| _        t5          |j        j        d| j        | j                   | _        nz|sq|o| j$        rht/          | j        | j        |
| j        
          }t5          ||j        |j        | j        d| j        | j        | j         
  
        }|j!        s|| _        ntJ          }|                    |f           n||	d          | _         |}n | j        | j        r
| j        rJ n|r|	|k     r| j        rJ | j        J 	 | j        &                    ||	d          |          \  }}n# tN          $ rt}| j(        @| j        j)        *                    | (                    tW          |                               n| j        j)        *                    |           d}d}Y d }~nd }~ww xY w|rd}	t          |          }d | _        Enn|	|k     G|r|	|k     r||	d          }n|}|| j        |fS )NrQ   r   r7      rv   rn   c                      j                                       } | d S t                              |           st	                    t          |           S rp   )rC   getr<   r   r&   rV   )
length_hdrr   msgs    rR   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_lengthP  sT    ),)H)HJ)1'+t
 $*#3#3J#?#? D&3N&C&C C#&z??2rQ   r?   rT   )r   r   r   )	lengthrH   r?   rF   rT   r   r   r   r   T)r?   rF   r   r   r   ),r   r   r   r   r   findr   rstripr   r   clearr   rV   rC   r&   rG   getattrr?   r   r!   rO   r    rH   r.   r   r   HttpPayloadParserrF   rT   r   r   r   r   done
isinstancer4   r   r-   	feed_dataBaseExceptionr   payloadset_exceptionrM   )rq   r   r   r   r   r   r   messagesdata_len	start_posr   posr   r   r   r?   rT   
empty_bodyr   payload_parsereofexcr   s       `                 @rR   r   zHttpParser.feed_data#  s    : 	6#zD0#D$*t99	y("" #+DN+iiY//)##DK# #c#hhI)##	#.De||#{{511K&&t,,, #c#hhI {2%//0)-););DK)H)HC K--////DK--////3HSM 3 3 3 3 3 3 3 "4!3!5!5-<<"/0B"C"CC),!(h!D!D&sFA66#}888%CD%I%I &T"H'@'H'HN N
  * @4#/FQJJ"{ 5?$'K 5? '3 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y(,373J040E$(H. . .N $2#6 F7E 4#|33#-c3D#E#EEE#E&2 $&*j%)&*k	' ' 'G .2DN3D ''*z,/O(,040E$(H4 4 4D00 ", 44CV&2 $&*j%)&*k	' ' 'G .? ''-(+'-,/O%)Y(,373J040E$(H. . .N $2#6 F7E 4&3G g777!%ijj!1DJ D %-$.-;&&  )h..;&&+777 $ 4 > >tIJJ?OQT U UIC$ 	 	 	-9,4BB 223s88<<    ,4BB3GGGCDDDDDD	   !I"4yyH+/D(	 y (""|  	I((	

#DDD--s%   .D" "D=7&O 
Q(A*QQrB   c           
         | j                             |          \  }d}d}d}d}t          j        t          j        t          j        t          j        t          j        t          j        t          j	        t          j
        t          j        t          j        f
}t          fd|D             d          }|t          d| d                              t          j                  }	|	rM|	                                }
|
dk    rd}n0|
dk    rd}n'|
d	k    r!                    t          j                  rd}                    t          j                  }|r|                                }|d
v r|}                    t          j                  }|Gd|                                k    rd}nt          d          t          j        v rt          d          |||||fS )zParses RFC 5322 headers from a stream.

        Line continuations are supported. Returns list of header name
        and value pairs. Header name is in upper case.
        NFc              3   j   K   | ]-}t                              |d                     dk    )|V  .dS )rP   r   N)r   getall).0hrC   s     rR   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>  sC      PPaW^^Ar5J5J1K1Ka1O1O1O1O1O1OPPrQ   zDuplicate 'z' header found.closeTz
keep-aliverG   )gzipdeflatebrrH   z'Request has invalid `Transfer-Encoding`z6Transfer-Encoding can't be present with Content-Length)r   r   r   r   CONTENT_LOCATIONCONTENT_RANGECONTENT_TYPEETAGHOSTMAX_FORWARDSSERVERTRANSFER_ENCODING
USER_AGENTnextr"   r   
CONNECTIONlowerUPGRADECONTENT_ENCODING)rq   rs   rD   
close_connencodingrG   rH   
singletonsbad_hdrconnvencterC   s                @rR   r   zHttpParser.parse_headers  s     $3AA%HH

 !IIK"O

 PPPP:PPPRVWW !Gw!G!G!GHHH {{4?++ 	

AG||!

l"""

iGKK$=$= kk$/00 	))++C/// [[/00>BHHJJ&&$%NOOO"g--$L   j(GWMMrQ   valc                     || _         dS )zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )rq   r   s     rR   set_upgradedzHttpParser.set_upgraded  s    
 rQ   )NNr   ri   rj   ri   NNNFNTFT)$rJ   rK   rL   r   r   rO   rN   r   r   asyncioAbstractEventLooprV   r   rM   r   r   rr   abcabstractmethodr	   r   rW   r   r   r   r   r   r   _SEPr   r   r.   r   r/   r   r   rP   rQ   rR   r1   r1      s        C$ ,048! ",0" $;?#'$ $%Y %Y<(%Y w01%Y 	%Y
 %Y %Y %Y ()%Y sm%Y %Y %Y $D$78%Y !%Y %Y %Y  
!%Y %Y %Y %YN 	4; 5    (5/    & #2 -#'#:v. v.v. v. 	v.
 v. v. !v. 
tE%-./u<	=v. v. v. v.pBN%[BN	Xd^Xc]DRVV
BN BN BN BNH       rQ   r1   c                   .    e Zd ZdZdee         defdZdS )r2   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    rs   rn   c                    |d                              dd          }	 |                    dd          \  }}}n# t          $ r t          |          d w xY wt	          |          | j        k    r=t          dt          | j                  t          t	          |                              t          	                    |          st          |          t          	                    |          }|t          |          t          t          |                    d                    t          |                    d                              }|d	k    rt          j        |d
          }n|                    d          rK|                    d          \  }	}
}|	                    d          \  }	}}t          j        |	||d
          }np|dk    r|dk    rt          |d
          }nRt          |d
          }|j        dk    r6t'          |                    d                               d                    |                     |          \  }}}}}}||t,          k    rd
}nd}t/          ||||||||||
  
        S )Nr   r{   r|    rZ   maxsplitStatus line is too longr   CONNECTT)	authorityencoded/#?)r@   query_stringfragmentr  *OPTIONS)r   )errorslatin1F)r   r   r   r#   r   rk   r(   rM   r:   r   r;   r*   rV   groupr   build
startswith	partitionschemer'   encoder   r+   r4   )rq   rs   r   r?   r@   rA   match	version_orI   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrC   rD   r   rF   rG   rH   s                       rR   r   zHttpRequestParser.parse_message/  s   Qxw(9::	0$(JJsQJ$?$?!FD'' 	0 	0 	0%%4/	0 t99t))))3t/A+B+BCD		NN  
   (( 	('''   ))=%%%EKKNN 3 3SQ5H5HII	Y )dD999CC__S!! 	 8<~~c7J7J4I;D;N;Ns;S;S8I/ )$%	  CC S[[Vy00dD)))CC dD)))CzR%KK'8K99@@JJ   u%%	
 =M)) 
 
 	
s	   : AN)rJ   rK   rL   __doc__r	   r   r4   r   rP   rQ   rR   r2   r2   '  sM         S
4; S
3D S
 S
 S
 S
 S
 S
rQ   r2   c                        e Zd ZdZe Z	 ddedee         de	de	de
ee
eef                  eef         f
 fdZd	ee         defd
Z xZS )r3   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    Nr   r   argskwargsrn   c                 Z    |t           rdnd} t                      j        ||g|R i |S )Nr6   r7   )r   superr   )rq   r   r   r  r  	__class__s        rR   r   zHttpResponseParser.feed_data  sA     ;"-''C uww s<T<<<V<<<rQ   rs   c                    |d                              dd          }	 |                    d          \  }}n# t          $ r t          |          d w xY w	 |                    d          \  }}n&# t          $ r |                                }d}Y nw xY wt          |          | j        k    r=t          dt          | j                  t          t          |                              t          
                    |          }|t          |          t          t          |                    d                    t          |                    d                              }t          |          d	k    st          
                    |          st          |          t          |          }|                     |          \  }	}
}}}}||t           k    }t#          |||                                |	|
||||	  	        S )
Nr   r{   r|   r   r   r  r  rZ   r[   )r   r   r   r#   r   r   rk   r(   rM   r;   r   r*   rV   r  r<   r   r+   r5   )rq   rs   r   rA   statusrU   r  r  status_irC   rD   r   rF   rG   rH   s                  rR   r   z HttpResponseParser.parse_message  s   Qxw(9::	0"jj!j44OGVV 	0 	0 	0%%4/	0	#\\1\55NFFF 	 	 	\\^^FFFF	 v;;+++)3t/A+B+BCFDTDT  
   ))=%%%EKKNN 3 3SQ5H5HII	 v;;!6#3#3F#;#;%%%v;; u%%	
 =.E!LLNN

 

 
	
s   8 AA1 1 BBrp   )rJ   rK   rL   r  r   r   r   r   r   r   r   r	   r5   r.   rO   r   r   __classcell__)r"  s   @rR   r3   r3     s          )C
 #	= 	=	= d^	= 		=
 	= 
tE,l:;<dEI	J	= 	= 	= 	= 	= 	=4
4; 4
3E 4
 4
 4
 4
 4
 4
 4
 4
rQ   r3   c                       e Zd Z	 	 	 	 	 	 	 	 	 ddedee         dedee         dee         d	ee         d
ededededdfdZddZ		 dde
dede
deee
f         fdZdS )r   NFTr   r   rH   rF   rT   r?   r   r   r   r   rn   c                    d| _         t          j        | _        t          j        | _        d| _        d| _        |	| _	        |
| _
        d| _        |r|r| j	        rt          ||          }n|}|s-t          j        | _        |                                 d| _        n|rt          j        | _        n|?t          j        | _        || _         | j         dk    r|                                 d| _        n^|r|dk    rt          j        | _        nD|dv r@t#          j        d           t          j        | _        |                                 d| _        || _        d S )Nr   rQ   FT   )PUTPOSTz6Content-Length or Transfer-Encoding header is required)_lengthrY   r\   _typera   rc   _chunk_chunk_size_chunk_tailr   _laxr   DeflateBufferr   r^   r]   r_   r,   warningr   )rq   r   r   rH   rF   rT   r?   r   r   r   r   real_payloads               rR   rr   zHttpPayloadParser.__init__  so    *
 3 /		  	#+ 	#$2G 	#?L@ @LL #L " 	!#.DJ!!###DII 	!#1DJJ#0DJ!DL|q  %%''' 	 !43;;'7

?**'L   (2
%%''' 	#rQ   c                     | j         t          j        k    r| j                                         d S | j         t          j        k    rt          d          | j         t          j        k    rt          d          d S )Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.)	r-  rY   r_   r   r   r]   r%   r^   r)   r   s    rR   r   zHttpPayloadParser.feed_eof  s    :333L!!#####Z:222$D   Z:333'E   43rQ   r6      ;chunkr   	CHUNK_EXTc                 

   | j         t          j        k    r| j        }t	          |          }||k    rM||z
  | _        | j                            ||           | j        dk    r| j                                         dS nd| _        | j                            |d |         |           | j                                         d||d          fS | j         t          j        k    r| j	        r| j	        |z   }d| _	        |r| j
        t          j        k    rz|                    |          }|dk    rU|                    |d|          }|dk    r|d |         }n
|d |         }| j        r|                                }t!          j        t$          |          sGt'          |d |                             dd                    }	| j                            |	           |	t-          t/          |          d          }
||t	          |          z   d          }|
dk    r8t          j        | _
        | j        r|                    d          r
|d	d          }n;t          j        | _
        |
| _        | j                                         n	|| _	        d
S | j
        t          j        k    r| j        }t	          |          }||k    r'||z
  | _        | j                            ||           d
S d| _        | j                            |d |         |           ||d          }| j        r|                    d          r
|d	d          }t          j        | _
        | j                                         | j
        t          j        k    rM|d t	          |                   |k    r)|t	          |          d          }t          j        | _
        n	|| _	        d
S | j
        t          j        k    r{|d t	          |                   }||k    r2| j                                         d|t	          |          d          fS |sd
S ||d d	         k    r	|| _	        d
S t          j        | _
        | j
        t          j        k    rP|                    |          }|dk    r,||t	          |          z   d          }t          j        | _
        n	|| _	        d
S |n=| j         t          j         k    r(| j                            |t	          |                     d
S )Nr   )TrQ   TrQ   asciir|      r   r   )FrQ   )!r-  rY   r]   r,  r   r   r   r   r^   r0  r.  ra   rc   r   r1  r   rer   r=   r)   r   r   rV   r   rf   r  rd   r/  begin_http_chunk_receivingre   end_http_chunk_receivingrg   r_   )rq   r7  r   r8  required	chunk_lenr   isize_br   sizeheads               rR   r   zHttpPayloadParser.feed_data  s    :000|HE

I9$$')3&&ui888<1$$L))+++$9 %  !&&uYhY'7BBB%%'''U899--- Z:333 '(50#&  ]* ;*"???**S//Caxx!JJy!S9966%*2A2YFF%*4C4[F9 4%+\\^^F!|Iv>> &"7 %dsd 2 27<M N N# #C !L66s;;;"%I"5=="55 %cCHHn&6&6 7199*4*IDK#y 2U-=-=e-D-D 2(-abb	*4*HDK/3D, LCCEEEE+0()z ;*"@@@#/H #E

I)+++3i+?(..ui@@@)z+,(..uYhY/?JJJ %hii 09 .)9)9%)@)@ .$)!""IE&0&H==??? ;*"DDDZs3xxZ(C// %c#hhjj 1&0&C+0()z
 ;*"AAA 3s88,Ds{{--///#U3s88::%666   *)zs2A2w+/()z",";DK ;*";;;**S//Caxx %cCHHn&6&6 7&0&E+0()z{  ]*@ Z:555L""5#e**555zrQ   )	NFNNNFTTFrn   N)r6   r6  )rJ   rK   rL   r.   r   rV   rO   rM   rr   r   r   r   r   r   rP   rQ   rR   r   r     s/        !%%)" $#' $8$ 8$8$ 8$ 	8$
 c]8$ sm8$ 8$ 8$ !8$ 8$ 8$ 
8$ 8$ 8$ 8$t
 
 
 
 EI} }}!%}<A}	tU{	} } } } } }rQ   r   c                   z    e Zd ZU dZeed<   dedee         ddfdZ	de
ddfd	Zd
ededdfdZddZddZddZdS )r2  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr   rn   Nc                     || _         d| _        || _        d| _        |  |dk    r+t          st          d          t                      | _        d S t          |          | _        d S )Nr   Fr   zECan not decode content-encoding: brotli (br). Please install `Brotli`)r   )	rH  rC  r   _started_decodingr   r$   r   rG  r   )rq   rH  r   s      rR   rr   zDeflateBuffer.__init__  s~    	 !&Ft *.   !3 4 4D 0( C C CDrQ   r   c                 :    | j                             |           d S rp   )rH  r   )rq   r   s     rR   r   zDeflateBuffer.set_exception  s    s#####rQ   r7  rC  c                    |sd S | xj         |z  c_         | j        s5| j        dk    r*|d         dz  dk    rt          | j        d          | _        	 | j                            |          }n%# t          $ r t          d| j        z            w xY wd| _        |r*| j        	                    |t          |                     d S d S )Nr   r         T)r   suppress_deflate_headerz#Can not decode content-encoding: %s)rC  rJ  r   r   rG  decompress_syncr   r$   rH  r   r   )rq   r7  rC  s      rR   r   zDeflateBuffer.feed_data  s     	F		T		 &		**a3!## !1! ! !D	%55e<<EE 	 	 	&5E  	
 "& 	2Huc%jj11111	2 	2s   A- -"Bc                     | j                                         }|s| j        dk    rN| j                            |t          |                     | j        dk    r| j         j        st          d          | j        	                                 d S )Nr   r   )
rG  flushrC  rH  r   r   r   r   r$   r   )rq   r7  s     rR   r   zDeflateBuffer.feed_eof  s    !'')) 	6DIMMHuc%jj111}	))$2C2G)*9555rQ   c                 8    | j                                          d S rp   )rH  r=  r   s    rR   r=  z(DeflateBuffer.begin_http_chunk_receiving  s    ++-----rQ   c                 8    | j                                          d S rp   )rH  r>  r   s    rR   r>  z&DeflateBuffer.end_http_chunk_receiving  s    ))+++++rQ   rE  )rJ   rK   rL   r  r   rN   r.   r   rM   rr   r   r   r   rV   r   r   r=  r>  rP   rQ   rR   r2  r2    s         NNDL DHSM Dd D D D D"$ $4 $ $ $ $2u 2C 2D 2 2 2 2@   . . . ., , , , , ,rQ   r2  )r2   r3   r4   r5   )dr   r   r<  string
contextlibr   enumr   typingr   r   r   r   r	   r
   r   r   r   r   r   r   r   r   	multidictr   r   r   yarlr   r  r   base_protocolr   compression_utilsr   r   r   helpersr   r   r   r    r!   http_exceptionsr"   r#   r$   r%   r&   r'   r(   r)   http_writerr*   r+   logr,   streamsr-   r.   typedefsr/   __all__r   set	printabler8   rM   rN   escaper9   compiler:   ASCIIr;   r<   r=   r   r4   r5   rW   rY   ra   r0   ABCr1   r2   r3   r   r2  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorrP   rQ   rR   <module>rt     s   




  				                                            " : 9 9 9 9 9 9 9 9 9             ' ' ' ' ' ' O O O O O O O O O O             	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 4 3 3 3 3 3 3 3             0 0 0 0 0 0 0 0             ~C 011%C/ 1 1 1 (bi(9::s : : :)rz*J*J*J*JKKws|	 K K K(bj);RXFFgcl F F F(bj::gcl : : :#-2:.>#?#?	5  ? ? ?
 
 
 
 

 
 
 
	 	 	 	 	 	 	 	 	*,>??              g? g? g? g? g? g? g? g?T    '%.   D
[
 [
 [
 [
 [

#45 [
 [
 [
|I
 I
 I
 I
 I
$67 I
 I
 I
XD D D D D D D DNG, G, G, G, G, G, G, G,T ( ) ' ) 	 1	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 	
 /0.01 1  	 	 	DD	s   3I II