
    F/jr                        U 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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 m!Z!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.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5 ddl6m7Z7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z> erddl?m@Z@ dZAed   ZB eCej                        ZEeeCeF      eGd<    ej                  d      ZIeeF   eGd<    ej                  deI d      ZKee	eF      eGd<    ej                  dej                        ZMee	eF      eGd<    ej                  dej                        ZNee	eF      eGd<    ej                  d      ZOee	eP      eGd<    ej                  d       ZQee	eF      eGd!<    eRh d"      ZSeeReF      eGd#<    G d$ d%e      ZT G d& d'e      ZU ed(eTeU      ZV G d) d*e      ZW G d+ d,e      ZX G d- d.e      ZY G d/ d0      ZZd1eeF   d2e[fd3Z\ G d4 d5e j                  eeV         Z^ G d6 d7e^eT         Z_ G d8 d9e^eU         Z` G d: d;      Za G d< d=      Zbe_Zce`ZdeTZeeUZf	 e)sdd>lgm_Z_m`Z`mTZTmUZU e_Zhe`ZieTZjeUZkyy# el$ r Y yw xY w)?    N)suppress)IntEnum)Pattern)TYPE_CHECKINGAnyClassVarFinalGenericLiteral
NamedTupleTypeVar)CIMultiDictCIMultiDictProxyistr)URL   )hdrs)BaseProtocol)
HAS_BROTLIHAS_ZSTDBrotliDecompressorZLibDecompressorZSTDDecompressor)_EXC_SENTINELDEBUGDEFAULT_CHUNK_SIZEEMPTY_BODY_METHODSEMPTY_BODY_STATUS_CODESNO_EXTENSIONSBaseTimerContextset_exception)	BadHttpMessageBadHttpMethodBadStatusLineContentEncodingErrorContentLengthErrorInvalidHeaderInvalidURLErrorLineTooLongTransferEncodingError)HttpVersionHttpVersion10HttpVersion11)EMPTY_PAYLOADStreamReader)
RawHeaders)ResponseHandler)HeadersParser
HttpParserHttpRequestParserHttpResponseParserRawRequestMessageRawResponseMessage)   
   
ASCIISETz!#$%&'*+-.^_`|~_TCHAR_SPECIALSz
[0-9A-Za-zz]+TOKENREzHTTP/(\d)\.(\d)VERSREz\d+DIGITSs   [0-9a-fA-F]+	HEXDIGITSz[\x00-\x08\x0a-\x1f\x7f]_FIELD_VALUE_FORBIDDEN_CTL_RE>
   
user-agentcontent-typemax-forwardscontent-rangecontent-lengthcontent-locationtransfer-encodingetaghostserverSINGLETON_HEADERSc                   x    e Zd ZU eed<   eed<   eed<   ded<   eed<   eed<   edz  ed	<   eed
<   eed<   eed<   y)r6   methodpathversionCIMultiDictProxy[str]headersraw_headersshould_closeNcompressionupgradechunkedurl)	__name__
__module____qualname__str__annotations__r+   r0   boolr        Q/var/www/html/maxservice/venv/lib/python3.12/site-packages/aiohttp/http_parser.pyr6   r6   o   s=    K
I$$tMM	Hr_   r6   c                   t    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dz  ed<   e	ed	<   e	ed
<   y)r7   rO   codereasonrQ   rR   rS   NrT   rU   rV   )
rX   rY   rZ   r+   r\   intr[   r   r0   r]   r^   r_   r`   r7   r7   |   s=    
IKc""tMMr_   r7   _MsgTc                       e Zd ZdZdZdZy)PayloadStater   r      N)rX   rY   rZ   PAYLOAD_COMPLETEPAYLOAD_NEEDS_INPUTPAYLOAD_HAS_PENDING_INPUTr^   r_   r`   rg   rg      s     !r_   rg   c                       e Zd ZdZdZdZdZy)
ParseStater   r   rh      N)rX   rY   rZ   
PARSE_NONEPARSE_LENGTHPARSE_CHUNKEDPARSE_UNTIL_EOFr^   r_   r`   rm   rm      s    JLMOr_   rm   c                        e Zd ZdZdZdZdZdZy)
ChunkStater   r   rh   rn      N)rX   rY   rZ   PARSE_CHUNKED_SIZEPARSE_CHUNKED_CHUNKPARSE_CHUNKED_CHUNK_EOFPARSE_MAYBE_TRAILERSPARSE_TRAILERSr^   r_   r`   rt   rt      s    Nr_   rt   c                   R    e Zd Z	 	 	 	 ddededededdf
dZdee   ded	e	f   fd
Z
y)r2   max_line_sizemax_headersmax_field_sizelaxreturnNc                 <    || _         || _        || _        || _        y N)r|   r}   r~   _lax)selfr|   r}   r~   r   s        r`   __init__zHeadersParser.__init__   s#     +&,	r_   linesrP   c                    t               }g }d}||   }t        |      }|r	 |j                  dd      \  }}t        |      dk(  rt	        |      |d   |d   hddhz  rt	        |      |j                  d      }|j                  dd	      }	t        j                  |	      st	        |      |dz  }||   }| j                  xr |xr |d   d
v }
|
rt        |      }|g}|
r|t        |      z  }|| j                  kD  r3|dz   dj                  |      z   }t        |d d dz   | j                        |j                  |       |dz  }||k  r||   }|r|d   d
v }
nd}n|
rdj                  |      }|j                  d      }|j                  dd	      }| j                  rd|v sd|v sd|v r+t	        |      t        j!                  |      rt	        |      | j                  s)|	|v r%|	j#                         t$        v rt'        d|	 d      |j)                  |	|       |j                  ||f       |rt+        |      t-        |      fS # t        $ r t	        |      d w xY w)Nr      :r       	   s    	utf-8surrogateescape)r   r   s   : r_   d      ...
 zDuplicate 'z' header found.)r   lensplit
ValueErrorr'   lstripdecoder<   	fullmatchr   r~   joinr)   appendstripr@   searchlowerrK   r"   addr   tuple)r   r   rQ   rR   	lines_idxline
line_countbnamebvaluenamecontinuationheader_length
bvalue_lstheader_linevalues                  r`   parse_headerszHeadersParser.parse_headers   s    %0M	YZ
4 $

4 3v 5zQ#E** a%)$Aw.#D))]]6*F<<):;D$$T*#E** NI#D  99DD$q'W2DL  #F$X
"!SY.M$t':'::&+emchhz6J&J)'-68K8K  %%d+ NI :-$Y/+/7g+=L"# #$ *-\\&)FMM'+<=E yy5=DEMVu_'//.55e<#F++99TZZ\EV5V${4&%HIIKKe$v/ B !)5+=>>{  4#D)t34s   I I$)  i   r   F)rX   rY   rZ   rd   r]   r   listbytesr   r0   r   r^   r_   r`   r2   r2      sl     " "

 
 	

 
 

L?%[L?	&
2	3L?r_   r2   rQ   r   c                     | j                  t        j                  d      }|j                         xr |j	                         dv S )z)Check if the upgrade header is supported. >   tcp	websocket)getr   UPGRADEisasciir   )rQ   us     r`   _is_supported_upgrader      s3    DLL"%A99;<1779(<<<r_   c                      e Zd ZU dZee   ed<   	 	 	 	 	 	 	 	 	 	 	 	 	 	 d(dedz  dej                  dz  de
de
de
d	e
d
edz  de
dz  dedz  dee   dz  dededede
ddfdZej"                  dee   defd       Zej"                  dedefd       Zd)dZd)dZdedz  fdZddej6                  ej8                  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dz  edz  eef   fd%Z$d&eddfd'Z%y)*r3   Fr   Nprotocollooplimitr|   r}   r~   timerrb   rM   payload_exceptionresponse_with_bodyread_until_eofauto_decompressmax_msg_queue_sizer   c                 r   || _         || _        || _        || _        || _        || _        || _        || _        |	| _        |
| _        || _	        || _
        g | _        d| _        d| _        d | _        d | _        d| _        || _        || _        t'        |||| j(                        | _        || _        d| _        y )Nr_   Fr   )r   r   r|   r}   r~   r   rb   rM   r   r   r   _lines_tail	_upgraded_payload_payload_parser_payload_has_more_data_auto_decompress_limitr2   r   _headers_parser_max_msg_queue_size_msg_in_flight)r   r   r   r   r|   r}   r~   r   rb   rM   r   r   r   r   r   s                  r`   r   zHttpParser.__init__  s    " !	*&,&
	!2"4,#%
9=&+# /,; 
 $6 r_   r   c                      y r   r^   )r   r   s     r`   parse_messagezHttpParser.parse_message4  s    :=r_   tec                      y r   r^   r   r   s     r`   _is_chunked_tezHttpParser._is_chunked_te7  s    /2r_   c                 T    | j                   J | j                   j                          y r   )r   pause_readingr   s    r`   r   zHttpParser.pause_reading:  s&    ##///**,r_   c                 N    | j                   dkD  r| xj                   dz  c_         yy)z;Protocol drained a queued message; free a slot for parsing.r   r   N)r   r   s    r`   message_consumedzHttpParser.message_consumed>  s&    "1$ #r_   c                    | j                   8| j                   j                          | j                   j                  rd | _         y | j                  r%| j                  j                  | j                         | j                  ra| j                  d   dk7  r| j                  j                  d       t        t              5  | j                  | j                        cd d d        S y # 1 sw Y   y xY w)Nr   z
r_   )	r   feed_eofdoner   r   r   r   	Exceptionr   r   s    r`   r   zHttpParser.feed_eofC  s    +  ))+##(('+$  zz""4::.{{;;r?f,KK&&s+i( ;--dkk:; ;;s   >C$$C-r8   r_   dataSEPEMPTYCONTENT_LENGTHMETH_CONNECTSEC_WEBSOCKET_KEY1c                 F   g }| j                   r| j                   |z   dc}| _         t        |      }d}	| j                  }
| j                  }d}|	|k  s| j                  r| j
                  5| j                  s(| j                  r%| j                  | j                  k\  r||	d  | _         n|j                  ||	      }||	k(  r| j                  s|t        |      z   }	||	k\  rj|rt        d      ||	| }|dk(  r|j                  d      }t        |      |kD  rt        |d d dz   |      | j                  j                  |       | j                  }t        | j                        | j                   kD  rt        d	      |t        |      z   }	| j                  d
   |k(  r| j                   t        | j                        z
  }	 | j#                  | j                        | j                  j%                          dt&        d z  ffd} |       }|j(                  v rt+        |      j,                  xr t/        j(                        | _        t1        d| j2                        }t1        dd      }| j4                  J |t6        v xs t9        |xr |t:        v       }|s||dkD  sj<                  r| j                  st?        | j4                  | j@                  |
| jB                        }tE        ||j<                  |jF                  | jH                  | jJ                  | jL                  | jN                  | jP                  | j                  | j                  || jB                        }|jR                  s|| _        n||k(  rtU        tV              sJ t?        | j4                  | j@                  |
| jB                        }d| _        tE        |j2                  jF                  | jL                  | jN                  | jP                  | j                  | j                  || jB                  
      | _        n|s|| jX                  rt?        | j4                  | j@                  |
| jB                        }tE        ||j<                  |jF                  | jH                  | jJ                  | jL                  | jN                  | jP                  | j                  | j                  || jB                        }|jR                  s|| _        ntZ        }|j                  |f       | j                  r| xj                  dz  c_        j\                  }n||	d  | _         t        | j                         | j                  kD  r&t        | j                   d d dz   | j                        |}n| j
                  | j                  r| j                  rJ n| j                  rJ | j
                  J 	 | j
                  j_                  ||	d  |      \  }}|tj        jp                  k(  | _        |tj        jl                  urn)d}	t        |      }d | _        |	|k  r| j                  r|r|	|k  r||	d  }n|}|| j                  |fS # | j                  j%                          w xY w# t`        $ r}}|}| jb                  | jc                  te        |            }tg        | j
                  jh                  ||       tj        jl                  }d}tU        |t*        tn        f      r Y d }~d }~ww xY w)Nr_   r   FzData after `Connection: close`r9      r   r   zToo many headers receivedr   r   c                      j                   j                        } | y t        j                  |       st	              t        |       S r   )rQ   r   r>   r   r'   rd   )
length_hdrr   msgs    r`   get_content_lengthz0HttpParser.feed_data.<locals>.get_content_length  sC    ),)HJ)1'+
 $*#3#3J#?&3N&C C#&z?2r_   rM   rb   )r   r   r   )lengthrV   rM   rT   rb   r   r   r   headers_parserr|   r~   max_trailersr   T)	rM   rT   r   r   r   r|   r~   r   r   r   )9r   r   r   r|   r   r   r   r   r   findr   r"   rstripr)   r   r~   r}   r   clearrd   rQ   r'   rU   r   getattrrM   r   r   r]   r   rV   r/   r   r   HttpPayloadParserrT   rb   r   r   r   r   r   
isinstancer6   r   r.   rS   	feed_datar   r   r[   r!   payloadrg   ri   r*   rk   )r   r   r   r   r   r   r   messagesdata_len	start_posr   max_line_lengthrS   posr   r   r   r   rM   rb   
empty_bodyr   payload_parserpayload_stateunderlying_excreraised_excr   s       `                     @r`   r   zHttpParser.feed_dataT  s    ::#zzD0#D$*t9	yy,,("d&A&A ##+DNN,,++t/G/GG
 "&ij!1DJiiY/)#DKK #c#hI)##,-MNN  	#.De|#{{514y?2)$t*v*=OOKK&&t,&*&9&9O4;;'$*:*::,-HII #c#hI {{2%/'+'7'7#dkk:J'J0)-););DKK)HC KK--/3C$J 3 "4!5-<"/0B"CC), *9NKK: ")h!D&sFA6#}}888%)-D%D &"Cv1C'CI
  *$0VaZCKK$(NN&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.2.@.@/3/B/B-9&*kk.N  $2#6#67E 4#|3#-c3D#EE#E&2 $&*jj%)&*kk	'G .2DN3D ''*zz,/OO040E0E$(HH/3/C/C.2.@.@/3/B/B-9&*kk4D0 ",4CVCV&2 $&*jj%)&*kk	'G .? ''-(+'-,/OO%)YY373J3J040E0E$(HH/3/C/C.2.@.@/3/B/B-9&*kk.N  $2#6#67E 4&3G g733 //14/'*'7'7!%ij!1DJ4::););;)$**Tc*:V*CTEWEWXX D %%-$..;;&  ;;&++777*.*>*>*H*HYZ(#+'M4, "\%K%KK + !(E(EE 	t9'+$c ("d&A&Af I(	
#DD--W !KK--/N ! 2@L--9'+'='=c.>Q'R!,,44$& %1$A$AMD!&8M(N s%   Y; '"Z ;Z	\ #A2\\ rP   c                    | j                   j                  |      \  }}d}d}d}d}|j                  t        j                  d      }|r|D 	
ch c]A  }	d |	j                  d      D        D ]$  }
|
r |
j                         r|
j                         & C }}	}
d|v rd}nd|v rd}d	|v r!|j                  t        j                        rd}|j                  t        j                  d
      }|j                         r|j                         dv r|}|j                  t        j                        }|0| j                  |      rd}t        j                  |v rt        d      ||||||fS c c}
}	w )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.
        NFr^   c              3   >   K   | ]  }|j                  d         yw) 	N)r   ).0parts     r`   	<genexpr>z+HttpParser.parse_headers.<locals>.<genexpr>Z  s     RDdjj/Rs   ,closeTz
keep-aliverU   r   >   brgzipzstddeflatez6Transfer-Encoding can't be present with Content-Length)r   r   getallr   
CONNECTIONr   r   r   r   r   CONTENT_ENCODINGTRANSFER_ENCODINGr   r   r"   )r   r   rQ   rR   
close_connencodingrU   rV   conn_values
conn_valuetokenconn_tokensencr   s                 r`   r   zHttpParser.parse_headersC  sv     $33AA%H
 nnT__b9 #.RJ<L<LS<QR U]]_ K  +%!
,"
 K'GKK,E kk$//4;;=SYY[,MMH [[//0>""2&""g-$L  j(GWMMAs   AE&valc                     || _         y)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r   )r   r  s     r`   set_upgradedzHttpParser.set_upgradedy  s    
 r_   )NNi   r      r   NNNNTFTr   r   N)&rX   rY   rZ   r   r   r]   r\   r   asyncioAbstractEventLooprd   r    r[   typeBaseExceptionr   abcabstractmethodr   r   re   r   r   r   r   r   r   r   r   r   _SEPr   r   r/   r   r0   r   r  r^   r_   r`   r3   r3     s6   C$ )-15!")-!8<#'$ $"#+ %+  ''$.+  	+ 
 +  +  +   $&+  Dj+  d
+   .5+  !+  +  +   +   
!+ Z 	=4;=5= =222 2-%
%$, ( #22 --#'#:#:m.m. m. 	m.
 m. m. !m. 
tE%-./u<	=m.^4N%[4N	TD[#*dDP
4Nl  r_   r3   c                   6    e Zd ZdZdee   defdZdede	fdZ
y)r4   zRead request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    r   r   c                    |d   j                  dd      }	 |j                  dd      \  }}}t        j                  |      st        |      t        j                  |      }|t        |      t        t        |j                  d            t        |j                  d                  }|dk(  rt        j                  |d	
      }n|j                  d      rD|j                  d      \  }	}
}|	j                  d      \  }	}}t        j                  |	||d	      }n^|dk(  r|dk(  rt        |d	      }nFt        |d	      }|j                  dk(  r*t!        |j#                  d      j                  d            | j%                  |dd        \  }}}}}}|t&        k(  rt(        j*                  |vrt-        d      ||t.        k  rd	}nd}t1        ||||||||||
      S # t        $ r t        |      d w xY w)Nr   r   r    rh   maxsplitr   CONNECTT)	authorityencoded/#?)rN   query_stringfragmentr(  *OPTIONS)r(  r   )errorslatin1z!Missing 'Host' header in request.F)r   r   r   r#   r<   r   r=   r$   r+   rd   groupr   build
startswith	partitionschemer(   encoder   r-   r   HOSTr"   r,   r6   )r   r   r   rM   rN   rO   match	version_orW   	path_part_hash_separatorurl_fragment_question_mark_separatorqs_partrQ   rR   r  rT   rU   rV   s                       r`   r   zHttpRequestParser.parse_message  s   Qxw(9:	0$(JJsQJ$?!FD'
   (''   )=%%EKKN 3SQ5HI	Y ))dD9C__S! 8<~~c7J4I;D;N;Ns;S8I/ ))$%	C S[Vy0dD)C dD)CzzR%KK'8K9@@J  uQRy)	
 %$))7*B !DEE=M) 
 	
C  	0%4/	0s   G! !G7r   c                     |j                  dd      d   j                  d      }|j                         r|j                         dk(  ryt	        d      )	Nr  r   r$  r   r   rV   Tz'Request has invalid `Transfer-Encoding`)rsplitr   r   r   r"   r   s     r`   r   z HttpRequestParser._is_chunked_te  sI    YYsQY'+11%8::<BHHJ)3FGGr_   N)rX   rY   rZ   __doc__r   r   r6   r   r[   r]   r   r^   r_   r`   r4   r4     s9    Q
4; Q
3D Q
fH H Hr_   r4   c                        e Zd ZU dZded<   e Z	 ddededz  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ded	efdZ xZS )r5   zRead response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    r1   r   Nr   r   argskwargsr   c                 D    |
t         rdnd}t        |   ||g|i |S )Nr8   r9   )r   superr   )r   r   r   rD  rE  	__class__s        r`   r   zHttpResponseParser.feed_data  s/     ;"'Cw s<T<V<<r_   r   c                 6   |d   j                  dd      }	 |j                  d      \  }}	 |j                  d      \  }}t
        j                  |      }|t        |      t        t        |j                  d            t        |j                  d                  }t        |      dk7  st        j                  |      st        |      t        |      }| j                  |dd        \  }	}
}}}}|I|t        k  rd	}n=d
|cxk  rdk  sn |dv rd}n)t        j                  |	v st        j                   |	v rd}nd	}t#        |||j	                         |	|
||||	      S # t        $ r t        |      d w xY w# t        $ r |j	                         }d}Y Uw xY w)Nr   r   r   r   r$  r   rh   rn   Tr      >   0     F)r   r   r   r$   r   r=   r   r+   rd   r2  r   r>   r   r,   r   r   r  r7   )r   r   r   rO   statusrc   r9  r:  status_irQ   rR   r  rT   rU   rV   s                  r`   r   z HttpResponseParser.parse_message  s   Qxw(9:	0"jj!j4OGV	#\\1\5NFF   )=%%EKKN 3SQ5HI	 v;!6#3#3F#;%%v; uQRy)	
 =M)&3&(j*@$$/43I3IW3T !LLN

 
	
U  	0%4/	0
  	\\^FF	s   E  E9  E69FFr   c                 n    |j                  dd      d   j                  d      j                         dk(  S )Nr  r   r$  r   r   rV   )rA  r   r   r   s     r`   r   z!HttpResponseParser._is_chunked_te6  s3    yyqy)"-33E:@@BiOOr_   r   )rX   rY   rZ   rB  r\   r   r   r   r   r   r   r   r7   r/   r]   r   r   r[   r   __classcell__)rH  s   @r`   r5   r5     s       )C
  	=	= D[	= 		=
 	= 
tE,l:;<dEI	J	=8
4; 8
3E 8
tP P Pr_   r5   c                        e Zd Z	 	 	 	 	 	 	 	 ddddeddededz  dededz  d	edz  d
edz  dededededededededdfdZ	ddZ
ddZ	 ddedededeeef   fdZy)r   Nr   r  )r|   r~   r   r   r   r   rV   rT   rb   rM   r   r   r   r   r|   r~   r   r   r   c
                   d| _         d| _        t        j                  | _        t
        j                  | _        d| _        d| _	        || _
        |	| _        |
| _        || _        || _        || _        d| _        g | _        d| _        d| _        |r|r| j                  rt)        |||      }n|}|s4t        j*                  | _        |j-                          d| _        || _        y |rt        j.                  | _        || _        y |It        j0                  | _        || _         || _        | j                   dk(  r|j-                          d| _        || _        y )Nr   Fr_   )max_decompress_sizeT)_length_pausedrm   rr   _typert   rv   _chunk_chunk_size_chunk_tailr   r   r   _max_line_size_max_field_size_max_trailers_more_data_available_trailer_linesr   _eof_pendingDeflateBufferro   r   rq   rp   _length_expectedr   )r   r   r   rV   rT   rb   rM   r   r   r   r   r|   r~   r   r   real_payloads                   r`   r   zHttpPayloadParser.__init__<  sD   $ //
 33 /	-+-)$)!+-	! +$2G2G9F%:L #L "#..DJ!!#DI $ #11DJ $ #00DJ!DL$*D!||q %%' 	#r_   c                     d| _         y )NT)rU  r   s    r`   r   zHttpPayloadParser.pause_readingy  s	    r_   c                 .   | j                   t        j                  k(  r~d| _        | j                  rB| j
                  rd| _        y | j                  j                  dd      | _        | j                  rB| j                  j                          d| _	        d| _        y | j                   t        j                  k(  r5| j                  | j                  z
  }t        d| d| j                   d      | j                   t        j                  k(  rt        d      y )	NTFr_   r   z;Not enough data to satisfy content length header (received z of z bytes).z2Not enough data to satisfy transfer length header.)rV  rm   rr   r_  r]  rU  r   r   r   r   rp   ra  rT  r&   rq   r*   )r   receiveds     r`   r   zHttpPayloadParser.feed_eof|  s    ::333 $D++<<#(DL,0LL,B,B3,J)	 ++
 LL!!#DI %DZZ:222,,t||;H$%Jd4+@+@*AK  ZZ:333'D  4r_   chunkr   	CHUNK_EXTc                    | j                   t        j                  k(  r| j                  r| j                  |z   }d| _        | j                  }t        |t        |      z
  d      | _        | j                  j                  |d| |      | _	        | j                  r]| j                  r#d| _
        ||d | _        t        j                  dfS | j                  j                  dd      | _	        | j                  r]| j                  dk(  r| j                  j                          t        j                  ||d fS | j                   t        j                  k(  r| j                  r| j                   t"        j$                  k7  ri| j&                  }| j                   t"        j(                  k(  r| j*                  }t        | j                        |kD  rt-        | j                  dd dz   |      | j                  |z   }d| _        |s| j                  r| j                   t"        j.                  k(  r|j1                  |      }|dk\  r|| j&                  kD  rt-        |dd dz   | j&                        |j1                  |d|      }|dk\  r4|d| }d||| x}	v r+t3        d|	      }
t5        | j                  |
       |
|d| }| j6                  r|j9                         }t;        j<                  t>        |      s6t3        |d| jA                  d	d
            }
t5        | j                  |
       |
tC        tE        |      d      }||t        |      z   d }|dk(  r8t"        j(                  | _        | j6                  rg|jG                  d      rV|dd }nPt"        j$                  | _        || _$        | j                  jK                          n|| _        t        jL                  dfS | j                   t"        j$                  k(  r| j                  r d| _
        || _        t        j                  dfS | jH                  }t        |t        |      z
  d      | _$        | j                  j                  |d| |      | _	        ||d }| j                  r| jH                  rd| _
        t        jL                  dfS t"        jN                  | _        | j                  jQ                          | j                   t"        jN                  k(  r| j6                  r|jG                  d      r|dd }|dt        |       |k(  r$|t        |      d }t"        j.                  | _        ndt        |      t        |      k\  s||dt        |       k7  r#t3        d      }
t5        | j                  |
       |
|| _        t        jL                  dfS | j                   t"        j(                  k(  rX|j1                  |      }|dk  r|| _        t        jL                  dfS |d| }||t        |      z   d }|dk(  r|jS                  d      }t        |      | j*                  kD  rt-        |dd dz   | j*                        | jT                  jW                  |       t        | jT                        | jX                  kD  rt[        d      | jT                  d   dk(  ro	 | j\                  j_                  | jT                        \  }}| jT                  ja                          | j                  j                          t        j                  |fS |r| j                  r-n| j                   t        jb                  k(  r| j                  j                  |t        |            | _	        | j                  rS| j                  rd| _
        t        j                  dfS | j                  j                  dd      | _	        | j                  rS| jd                  r:| j                  j                          d| _3        d| _2        t        j                  dfS t        jL                  dfS # | jT                  ja                          w xY w)a  Receive a chunk of data to process.

        Return:
            PayloadState - The current state of payload processing.
                           This function may be called with empty bytes after returning
                           PAYLOAD_HAS_PENDING_INPUT to continue processing after a pause.
            bytes - If payload is complete, this is the unconsumed bytes intended for the
                    next message/payload, b"" otherwise.
        r_   r   NFr   r   r9   z"Unexpected LF in chunk-extension: asciir      r   r   z3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedr   T)4rV  rm   rp   rY  rT  maxr   r   r   r]  rU  rg   rk   r   ri   rq   rW  rt   rw   rZ  rz   r[  r)   rv   r   r*   r!   r   r   rer   r?   r   rd   r   r4  rX  begin_http_chunk_receivingrj   rx   end_http_chunk_receivingr   r^  r   r\  r"   r   r   r   rr   r_  r   )r   rf  r   rg  requiredr   r   isize_bextexcsizer   trailersraw_trailerss                  r`   r   zHttpPayloadParser.feed_data  s@    ::000((50#& ||Hx#e*4a8DL(,(>(>ix ()D% ++<<#(DL',XY'7D$'AA3FF,0LL,B,B3,J) ++ ||q %%'#44eHI6FFFZZ:333;;*"@"@@&*&9&9O{{j&?&??*.*>*>4++,>) ,,Tc2V;_  ((50#& 444;;*"?"??**S/Cax !4!44"-eDSkF.BDDWDW"XX!JJy!S96%*2AYF$a)<=&;&H$P'" !.dllC @&)	%*4C[F99%+\\^F!||Iv>"7 %ds 2 27<M N#C *$,,<"%I"5="5 %cCHn&6 719*4*C*CDK#yyU-=-=e-D(-ab	*4*H*HDK/3D, LLCCE+0(+??DD ;;*"@"@@||',+0(+EEsJJ#//H'*8c%j+@!'DD$040F0Fix((1D- "(),E00 ''',+??DD","D"DDKLL99; ;;*"D"DDyyU%5%5e%< %ab	Zs3x(C/ %c#hj 1&0&C&CUs3x/5C#e*<M3M3Q &dllC8!	+0(+??DD;;*";";;**S/CQw+0(+??DD #;D!#C."23Ee|#{{514y4#7#77)$t*v*=t?S?STT''..t44../$2D2DD,-IJJ **2.#58595I5I5W5W $ 3 362Hl !//557--/+<<eCCi 444n ZZ:555(,(>(>uc%j(QD%++<<#(DL'AA3FF,0LL,B,B3,J)	 ++   %%' 	$)!#44c99//44' !//557s   8(`7 7a)NFNNNTTFr  )r8      ;)rX   rY   rZ   r   r/   rd   r]   r[   r2   r   r   r   r   r   r   rg   r   r^   r_   r`   r   r   ;  s    ""&!#' $;$ ""'!;$;$ d
;$ 	;$
 4Z;$ Dj;$ d
;$ !;$ ;$ ;$ &;$ ;$ ;$ ;$  !;$" 
#;$z. EIv5v5!%v5<Av5	|U"	#v5r_   r   c            	           e Zd ZU dZeed<   efdededz  de	ddfdZ
efd	ed
eddfdZdede	defdZddZddZddZy)r`  zDDeflateStream decompress stream and feed data into specified stream.decompressoroutr  NrS  r   c                 F   || _         d| _        | j                  |_        || _        d| _        |  |dk(  r(t
        st        d      t               | _        || _        y |dk(  r(t        st        d      t               | _        || _        y t        |      | _        || _        y )Nr   Fr  zECan not decode content-encoding: brotli (br). Please install `Brotli`r  zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r  )rz  rt  total_compressed_bytesr  _started_decodingr   r%   r   ry  r   r   r   _max_decompress_size)r   rz  r  rS  s       r`   r   zDeflateBuffer.__init__P  s     	%)YY" !&t*.  !3 4D %8! *6  !1 2D %8! !1( CD$7!r_   rs  	exc_causec                 2    t        | j                  ||       y r   )r!   rz  )r   rs  r  s      r`   r!   zDeflateBuffer.set_exceptionp  s    
 	dhhY/r_   rf  rt  c                 v   | xj                   |z  c_         | j                   | j                  _        | j                  s6| j                  dk(  r'|d   dz  dk7  rt        | j                  d      | _        | j                  j                  }|t        j                  k\  rdnt        | j                  |      }	 | j                  j                  ||      }d| _        |r%| j                  j                  |t!        |             | j                  j"                  S # t        $ r t        d| j                  z        w xY w)	Nr	  r         T)r  suppress_deflate_header)
max_lengthz#Can not decode content-encoding: %s)rt  rz  r|  r}  r  r   ry  
_low_watersysmaxsizerk  r~  decompress_syncr   r%   r   r   data_available)r   rf  rt  	low_waterr  s        r`   r   zDeflateBuffer.feed_dataw  s   		T	*.))' &&*a3!# !1!D HH''	ckk)As43L3Li/X 		%%55e
5SE "&HHuc%j1  ///  	&5E 	s   5D "D8c                     | j                   j                         }|rJ | j                  dkD  r0| j                  dk(  r!| j                   j                  st        d      | j                  j                          y )Nr   r	  )ry  flushrt  r  eofr%   rz  r   )r   rf  s     r`   r   zDeflateBuffer.feed_eof  s`    !!'') y99q=}}	)$2C2C2G2G*955r_   c                 8    | j                   j                          y r   )rz  rm  r   s    r`   rm  z(DeflateBuffer.begin_http_chunk_receiving  s    ++-r_   c                 8    | j                   j                          y r   )rz  rn  r   s    r`   rn  z&DeflateBuffer.end_http_chunk_receiving  s    ))+r_   r  )rX   rY   rZ   rB  r   r\   r   r/   r[   rd   r   r   r  r!   r   r]   r   r   rm  rn  r^   r_   r`   r`  r`  K  s    N $6	88 *8 !	8
 
8F $100 !0 
	0!0u !0C !0D !0F.,r_   r`  )r4   r5   r6   r7   )mr  r  rl  stringr  
contextlibr   enumr   r   typingr   r   r   r	   r
   r   r   r   	multidictr   r   r   yarlr   r   r   base_protocolr   compression_utilsr   r   r   r   r   helpersr   r   r   r   r   r   r    r!   http_exceptionsr"   r#   r$   r%   r&   r'   r(   r)   r*   http_writerr+   r,   r-   streamsr.   r/   typedefsr0   client_protor1   __all__r   set	printabler:   r[   r\   escaper;   compiler<   ASCIIr=   r>   r?   r   r@   	frozensetrK   r6   r7   re   rg   rm   rt   r2   r]   r   ABCr3   r4   r5   r   r`  HttpRequestParserPyHttpResponseParserPyRawRequestMessagePyRawResponseMessagePy_http_parserHttpRequestParserCHttpResponseParserCRawRequestMessageCRawResponseMessageCImportErrorr^   r_   r`   <module>r     s   
  	  
   	 	 	 : 9   ' 	 	 	
 
 
 C B 0  - ~ 0 01%C/ 1 (bii(9:s :)rzzJ6Gr*JKws|	 K(bjj);RXXFgcl F(bjj:gcl :#-2::.>#?	5  ?5?RZZ6 uWS\2  ,5, 53(  

 
	 	 	*,>?"7 "  Y? Y?x=#3C#8 =T =z'%. zzaH
#45 aHHSP$67 SPlM5 M5``, `,F ( ) ' ) 		
 	
 /0.0   		s   I. .I65I6