
    h9W                     n   % S SK r S SKrS SKrS SKJrJrJrJrJrJ	r	J
r
JrJr  SSKJr  SSKJrJrJrJrJr  SSKJr  Sr\" S5      r " S	 S
\5      r " S S\\   5      r " S S5      r " S S5      r " S S\5      r " S S\5      r\" 5       r \\   \!S'    " S S\\   5      r" " S S\"\   5      r#g)    N)		AwaitableCallableDequeFinalGenericListOptionalTupleTypeVar   )BaseProtocol)_EXC_SENTINELBaseTimerContext	TimerNoopset_exception
set_result)internal_logger)EMPTY_PAYLOAD	EofStreamStreamReader	DataQueue_Tc                       \ rS rSrSrSrg)r   $   zeof stream indication. N)__name__
__module____qualname____firstlineno____doc____static_attributes__r       A/var/www/html/env/lib/python3.13/site-packages/aiohttp/streams.pyr   r   $   s     r"   r   c                   R    \ rS rSrSrS\/ \\   4   SS4S jrS	S jr	S\4S jr
Srg)
AsyncStreamIterator(   	read_funcr(   returnNc                     Xl         g Nr'   )selfr(   s     r#   __init__AsyncStreamIterator.__init__,   s    "r"   c                     U $ r+   r   r,   s    r#   	__aiter__AsyncStreamIterator.__aiter__/       r"   c                    #     U R                  5       I S h  vN nUS:X  a  [        eU$  N! [         a    [        ef = f7fNr"   )r(   r   StopAsyncIterationr,   rvs     r#   	__anext__AsyncStreamIterator.__anext__2   sF     	%~~''B 9$$	 ( 	%$$	%s#   A , *, A , =A )r)   zAsyncStreamIterator[_T])r   r   r   r   	__slots__r   r   r   r-   r1   r9   r!   r   r"   r#   r%   r%   (   s9    I#(2y}+<"= #$ # r"   r%   c                   D    \ rS rSrSrSS jrS	S jrS\\\	4   4S jr
Srg)
ChunkTupleAsyncStreamIterator<   _streamr)   Nc                     Xl         g r+   r?   )r,   streams     r#   r-   &ChunkTupleAsyncStreamIterator.__init__@   s    r"   c                     U $ r+   r   r0   s    r#   r1   'ChunkTupleAsyncStreamIterator.__aiter__C   r3   r"   c                 n   #    U R                   R                  5       I S h  vN nUS:X  a  [        eU$  N7f)Nr"   F)r@   	readchunkr6   r7   s     r#   r9   'ChunkTupleAsyncStreamIterator.__anext__F   s2     <<))++$$	 ,s   535)rB   r   r)   N)r)   r=   )r   r   r   r   r;   r-   r1   r
   bytesboolr9   r!   r   r"   r#   r=   r=   <   s&    Iud{!3 r"   r=   c                   f    \ rS rSrSrS\\   4S jrS\S\\   4S jr	S\\   4S jr
S\4S jrSrg	)
AsyncStreamReaderMixinM   r   r)   c                 ,    [        U R                  5      $ r+   )r%   readliner0   s    r#   r1    AsyncStreamReaderMixin.__aiter__Q   s    "4==11r"   nc                 &   ^ ^ [        UU 4S j5      $ )z>Returns an asynchronous iterator that yields chunks of size n.c                  &   > TR                  T 5      $ r+   )read)rR   r,   s   r#   <lambda>5AsyncStreamReaderMixin.iter_chunked.<locals>.<lambda>V   s    499Q<r"   )r%   r,   rR   s   ``r#   iter_chunked#AsyncStreamReaderMixin.iter_chunkedT   s    "#788r"   c                 ,    [        U R                  5      $ )z3Yield all available data as soon as it is received.)r%   readanyr0   s    r#   iter_anyAsyncStreamReaderMixin.iter_anyX   s    "4<<00r"   c                     [        U 5      $ )zYield chunks of data as they are received by the server.

The yielded objects are tuples
of (bytes, bool) as returned by the StreamReader.readchunk method.
)r=   r0   s    r#   iter_chunks"AsyncStreamReaderMixin.iter_chunks\   s     -T22r"   N)r   r   r   r   r;   r%   rJ   r1   intrY   r]   r=   r`   r!   r   r"   r#   rM   rM   M   sQ    I2.u5 29c 9&9%&@ 91-e4 13: 3r"   rM   c                      \ rS rSrSrSrSSS.S\S\S\\	   S	\\
R                     S
S4
S jjrS
\4S jrS
\\\4   4S jrS
\\   4S jr\4S\S\S
S4S jjrS\/ S4   S
S4S jrS,S jrS
\4S jrS
\4S jrS,S jrS\S
S4S jrS-S\S\S
S4S jjrS,S jrS,S jr S\S
S4S jr!S
\4S  jr"S.S!\S
\4S" jjr#S/S#\S
\4S$ jjr$S
\4S% jr%S
\\\4   4S& jr&S#\S
\4S' jr'S/S#\S
\4S( jjr(S#\S
\4S) jr)S#\S
\4S* jr*S+r+g)0r   e   a
  An enhancement of asyncio.StreamReader.

Supports asynchronous iteration by line, chunk or as available::

    async for line in reader:
        ...
    async for chunk in reader.iter_chunked(1024):
        ...
    async for slice in reader.iter_any():
        ...

)	_protocol
_low_water_high_water_loop_size_cursor_http_chunk_splits_buffer_buffer_offset_eof_waiter_eof_waiter
_exception_timer_eof_callbacks_eof_countertotal_bytesN)timerloopprotocollimitrv   rw   r)   c                b   Xl         X l        US-  U l        Uc  [        R                  " 5       nX@l        SU l        SU l        S U l        [        R                  " 5       U l        SU l        SU l        S U l        S U l        S U l        Uc
  [#        5       OUU l        / U l        SU l        SU l        g )N   r   F)re   rf   rg   asyncioget_event_looprh   ri   rj   rk   collectionsdequerl   rm   rn   ro   rp   rq   r   rr   rs   rt   ru   )r,   rx   ry   rv   rw   s        r#   r-   StreamReader.__init__   s     " 19<))+D

7;%0%6%6%8	7;;?37%*]ik8:r"   c                 *   U R                   R                  /nU R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  S5        U R
                  S:w  a*  UR                  SU R
                  U R                  4-  5        U R                  (       a  UR                  SU R                  -  5        U R                  (       a  UR                  SU R                  -  5        SSR                  U5      -  $ )	Nz%d byteseofi   zlow=%d high=%dzw=%rze=%r<%s> )
	__class__r   ri   appendrn   rf   rg   ro   rq   join)r,   infos     r#   __repr__StreamReader.__repr__   s    ''(::KK
TZZ/099KK??e#KK(DOOT=M=M+NNO<<KK-.??KK01&&r"   c                 2    U R                   U R                  4$ r+   )rf   rg   r0   s    r#   get_read_buffer_limits#StreamReader.get_read_buffer_limits   s    !1!122r"   c                     U R                   $ r+   rq   r0   s    r#   	exceptionStreamReader.exception       r"   exc	exc_causec                     Xl         U R                  R                  5         U R                  nUb  S U l        [	        X1U5        U R
                  nUb  S U l        [	        X1U5        g g r+   )rq   rs   clearro   r   rp   r,   r   r   waiters       r#   r   StreamReader.set_exception   sc    
 !!#DL&y1!!#D&y1 r"   callbackc                     U R                   (       a	   U" 5         g U R                  R                  U5        g ! [         a    [        R                  " S5         g f = fNException in eof callback)rn   	Exceptionr   r   rs   r   r,   r   s     r#   on_eofStreamReader.on_eof   sL    99G
 &&x0  G))*EFGs   7  AAc                    SU l         U R                  nUb  S U l        [        US 5        U R                  nUb  S U l        [        US 5        U R                  R
                  (       a  U R                  R                  5         U R                   H  n U" 5         M     U R                  R                  5         g ! [         a    [        R                  " S5         MM  f = f)NTr   )rn   ro   r   rp   re   _reading_pausedresume_readingrs   r   r   r   r   )r,   r   cbs      r#   feed_eofStreamReader.feed_eof   s    	DLvt$!!#Dvt$>>))NN))+%%BG & 	!!#  G))*EFGs   B77 CCc                     U R                   $ )z&Return True if  'feed_eof' was called.rn   r0   s    r#   is_eofStreamReader.is_eof   s    yyr"   c                 J    U R                   =(       a    U R                  (       + $ )z=Return True if the buffer is empty and 'feed_eof' was called.rn   rl   r0   s    r#   at_eofStreamReader.at_eof   s    yy---r"   c                    #    U R                   (       a  g U R                  b   eU R                  R                  5       U l         U R                  I S h  vN   S U l        g  N! S U l        f = f7fr+   )rn   rp   rh   create_futurer0   s    r#   wait_eofStreamReader.wait_eof   s`     99'''::335	$""""#D ##Ds0   AA.A" A A" A. A" "	A++A.datac                    [         R                  " S[        SS9  U(       d  gU R                  (       a0  U R                  S   U R                  S U R                  S'   SU l        U =R
                  [        U5      -  sl        U =R                  [        U5      -  sl        U R                  R                  U5        SU l	        g)zDrollback reading some data from stream, inserting it to buffer head.zJunread_data() is deprecated and will be removed in future releases (#3260)r{   )
stacklevelNr   )
warningswarnDeprecationWarningrm   rl   ri   lenrj   
appendleftrt   )r,   r   s     r#   unread_dataStreamReader.unread_data   s    =		
 "ll1od.A.A.CDDLLO"#D

c$i
D	!%r"   sizec                    U R                   (       a   S5       eU(       d  g [        U5      nU =R                  U-  sl        U R                  R	                  U5        U =R
                  U-  sl        U R                  nUb  S U l        [        US 5        U R                  U R                  :  a7  U R                  R                  (       d  U R                  R                  5         g g g )Nzfeed_data after feed_eof)rn   r   ri   rl   r   ru   ro   r   rg   re   r   pause_reading)r,   r   r   data_lenr   s        r#   	feed_dataStreamReader.feed_data  s    99888}t9

h
D!H$DLvt$::(((1O1ONN((* 2P(r"   c                 f    U R                   c$  U R                  (       a  [        S5      e/ U l         g g )Nz@Called begin_http_chunk_receiving when some data was already fed)rk   ru   RuntimeErrorr0   s    r#   begin_http_chunk_receiving'StreamReader.begin_http_chunk_receiving$  s6    ""*"V  ')D# +r"   c                 *   U R                   c  [        S5      eU R                   (       a  U R                   S   OSnU R                  U:X  a  g U R                   R                  U R                  5        U R                  nUb  S U l        [        US 5        g g )NzFCalled end_chunk_receiving without calling begin_chunk_receiving firstr   )rk   r   ru   r   ro   r   )r,   posr   s      r#   end_http_chunk_receiving%StreamReader.end_http_chunk_receiving,  s    ""*.  .2-D-Dd%%b)!s" &&t'7'78 DLvt$ r"   	func_namec                 Z  #    U R                   R                  (       d  [        S5      eU R                  b  [        SU-  5      eU R                  R                  5       =o l         U R                     UI S h  vN   S S S 5        S U l        g  N! , (       d  f       N= f! S U l        f = f7f)NzConnection closed.zH%s() called while another coroutine is already waiting for incoming data)re   	connectedr   ro   rh   r   rr   )r,   r   r   s      r#   _waitStreamReader._waitJ  s     ~~''344 <<#46?@ 
 !%

 8 8 ::	    DL    DLsH   A"B+%B 1B7B8B<B B+B
BB 	B((B+c                 >   #    U R                  5       I S h  vN $  N7fr+   )	readuntilr0   s    r#   rP   StreamReader.readline_  s     ^^%%%%s   	separatorc                 |  #    [        U5      nUS:X  a  [        S5      eU R                  b  U R                  eSnSnSnU(       a  U R                  (       a  U(       a  U R                  nU R                  S   R                  X5      S-   nU R                  U(       a
  Xv-
  U-   S-
  OS5      nX8-  nU[        U5      -  nU(       a  SnX@R                  :  a  [        S5      eU R                  (       a	  U(       a  M  U R                  (       a   U$ U(       a  U R                  S	5      I S h  vN   U(       a  M  U$  N7f)
Nr   z,Separator should be at least one-byte stringr"   Tr   r   FzChunk too bigr   )
r   
ValueErrorrq   rl   rm   find_read_nowait_chunkrg   rn   r   )	r,   r   seplenchunk
chunk_size
not_enoughoffseticharr   s	            r#   r   StreamReader.readuntilb  s    YQ;KLL??&//!

,,:,,Q,,Y?!C..38ENV+a/b c$i'
!&J 0 00$_55 ,,:: yy
  jj---) j,  .s   C7D<;/D<*D:+D<8D<rR   c                   #    U R                   b  U R                   e U R                  (       aK  U R                  (       d:  [        U SS5      S-   U l        U R                  S:  a  [
        R                  " SSS9  U(       d  gUS:  aG  / n U R                  5       I S h  vN nU(       d  OUR                  U5        M3  SR                  U5      $ U R                  (       dN  U R                  (       d=  U R                  S	5      I S h  vN   U R                  (       d  U R                  (       d  M=  U R                  U5      $  N N;7f)
NTrt   r   r      zEMultiple access to StreamReader in eof state, might be infinite loop.)
stack_infor"   rU   )rq   rn   rl   getattrrt   r   warningr\   r   r   r   _read_nowait)r,   rR   blocksblocks       r#   rU   StreamReader.read  s    ??&//! yy$+D.!$Dq$H!$$q(#++2#' q5
 F"lln,e$	 
 88F##
 ,,tyy**V$$$ ,,tyyy   ## - %s+   BED>A&EE &E-E Ec                    #    U R                   b  U R                   eU R                  (       dN  U R                  (       d=  U R                  S5      I S h  vN   U R                  (       d  U R                  (       d  M=  U R	                  S5      $  N97f)Nr\   r   )rq   rl   rn   r   r   r0   s    r#   r\   StreamReader.readany  sc     ??&//!
 ,,tyy**Y''' ,,tyyy   $$ (s   ABB&B;Bc                 
  #     U R                   b  U R                   eU R                  (       a  U R                  R                  S5      nXR                  :X  a  gXR                  :  a  U R	                  XR                  -
  5      S4$ [
        R                  " S5        U R                  (       a  M  U R                  (       a  U R                  S5      S4$ U R                  (       a  gU R                  S	5      I Sh  vN   M   N7f)
zReturns a tuple of (data, end_of_http_chunk).

When chunked transfer
encoding is used, end_of_http_chunk is a boolean indicating if the end
of the data corresponds to the end of a HTTP chunk , otherwise it is
always False.
TNr   r"   TzESkipping HTTP chunk end due to data consumption beyond chunk boundaryr   FrG   rH   )rq   rk   poprj   r   r   r   rl   r   rn   r   )r,   r   s     r#   rH   StreamReader.readchunk  s      *oo%))--11!4,,&&% --cLL.@A4HH''8 ))) ||//3U;; yy $**[)))1 0 *s   B,D0A
D:D;Dc                 h  #    U R                   b  U R                   e/ nUS:  a{  U R                  U5      I S h  vN nU(       d4  SR                  U5      n[        R                  " U[        U5      U-   5      eUR                  U5        U[        U5      -  nUS:  a  M{  SR                  U5      $  Nw7f)Nr   r"   )rq   rU   r   r|   IncompleteReadErrorr   r   )r,   rR   r   r   partials        r#   readexactlyStreamReader.readexactly  s     ??&//! !e))A,&E((6*11'3w<!;KLLMM% UOA !e xx 's   6B2B0A$B2B2c                     U R                   b  U R                   eU R                  (       a*  U R                  R                  5       (       d  [        S5      eU R	                  U5      $ )Nz9Called while some coroutine is waiting for incoming data.)rq   ro   doner   r   rX   s     r#   read_nowaitStreamReader.read_nowait  sT    
 ??&//!<< 1 1 3 3K    ##r"   c                    U R                   S   nU R                  nUS:w  a.  [        U5      U-
  U:  a  X#X1-    nU =R                  U-  sl        OGU(       a&  U R                   R                  5         X#S  nSU l        OU R                   R                  5       n[        U5      nU =R                  U-  sl        U =R
                  U-  sl        U R                  nU(       a@  US   U R
                  :  a-  UR                  S5        U(       a  US   U R
                  :  a  M-  U R                  U R                  :  a5  U R                  R                  (       a  U R                  R                  5         U$ )Nr   r   )rl   rm   r   popleftri   rj   rk   r   rf   re   r   r   )r,   rR   first_bufferr   r   r   chunk_splitss          r#   r   StreamReader._read_nowait_chunk  s   ||A$$7s<(61A54D1$LL  "(D"#D <<'')Dt9

h
 ..|A=Q |A= ::'DNN,J,JNN))+r"   c                 0   U R                   R                  5         / nU R                  (       aP  U R                  U5      nUR	                  U5        US:w  a  U[        U5      -  nUS:X  a  OU R                  (       a  MP  U(       a  SR                  U5      $ S$ )z6Read not more than n bytes, or whole buffer if n == -1r   r   r"   )rr   assert_timeoutrl   r   r   r   r   )r,   rR   chunksr   s       r#   r   StreamReader._read_nowait  s{    ""$ll++A.EMM% BwSZ6 lll $*sxx2s2r"   )rl   rm   rj   rn   rs   rt   rp   rq   rg   rk   rh   rf   re   ri   rr   ro   ru   r)   Nr   )   
r   ),r   r   r   r   r    r;   r   rb   r	   r   r|   AbstractEventLoopr-   strr   r
   r   BaseExceptionr   r   r   r   r   r   rK   r   r   r   rJ   r   r   r   r   r   rP   r   rU   r\   rH   r   r   r   r   r!   r   r"   r#   r   r   e   s   I2 -148 
 () w001 
8'# '3c3h 38M2  $122 !2 
	2$1xD1 1d 1$0 . .	$ $ (+e +3 +t +&)%< S  T  *& &" "5 "H($C ($ ($T
%u 
% *ud{!3  *D 3  5  $S $% $C E 83c 3e 3r"   r   c                   8   \ rS rSrSrSS jrS\4S jrS\\	   4S jr
\4S\	S	\	SS4S
 jjrS\/ S4   SS4S jrSS jrS\4S jrS\4S jrSS jrSS\S\SS4S jjrS\4S jrSS\S\4S jjrS\4S jrS\\\4   4S jrS\S\4S jrSS\S\4S jjrSrg)EmptyStreamReaderi(  _read_eof_chunkr)   Nc                      SU l         SU l        g )NFr   r  ru   r0   s    r#   r-   EmptyStreamReader.__init__,  s    $r"   c                 4    SU R                   R                  -  $ )Nr   )r   r   r0   s    r#   r   EmptyStreamReader.__repr__0  s    ////r"   c                     g r+   r   r0   s    r#   r   EmptyStreamReader.exception3      r"   r   r   c                     g r+   r   )r,   r   r   s      r#   r   EmptyStreamReader.set_exception6  s    
 	r"   r   c                 `     U" 5         g ! [          a    [        R                  " S5         g f = fr   )r   r   r   r   s     r#   r   EmptyStreamReader.on_eof=  s-    	CJ 	C%%&AB	Cs   
  --c                     g r+   r   r0   s    r#   r   EmptyStreamReader.feed_eofC      r"   c                     gNTr   r0   s    r#   r   EmptyStreamReader.is_eofF  r  r"   c                     gr  r   r0   s    r#   r   EmptyStreamReader.at_eofI  r  r"   c                    #    g 7fr+   r   r0   s    r#   r   EmptyStreamReader.wait_eofL  s        r   rR   c                     g r+   r   )r,   r   rR   s      r#   r   EmptyStreamReader.feed_dataO  r  r"   c                    #    g7fr5   r   r0   s    r#   rP   EmptyStreamReader.readlineR       r#  c                    #    g7fr5   r   rX   s     r#   rU   EmptyStreamReader.readU  r(  r#  c                    #    g7fr5   r   r0   s    r#   r\   EmptyStreamReader.readanyZ  r(  r#  c                 >   #    U R                   (       d  SU l         gg7f)NTrG   r   r  r0   s    r#   rH   EmptyStreamReader.readchunk]  s     ###'D s   c                 8   #    [         R                  " SU5      e7fr5   )r|   r   rX   s     r#   r   EmptyStreamReader.readexactlyd  s     ))#q11s   c                     gr5   r   rX   s     r#   r   EmptyStreamReader.read_nowaitg  s    r"   r  r  r  r  )r   r   r   r   r;   r-   r  r   r	   r  r   r   r   r   r   r   rK   r   r   r   rJ   rb   r   rP   rU   r\   r
   rH   r   r   r!   r   r"   r#   r
  r
  (  s   $I0# 08M2  $1 ! 
	CxD1 Cd C  e  D  C  
u ud{!3 23 25 2S %  r"   r
  r   c                       \ rS rSrSrS\R                  SS4S jrS\4S jr	S\
4S jrS\
4S	 jrS\\   4S
 jr\4S\S\SS4S jjrSS\S\SS4S jjrSS jrS\4S jrS\\   4S jrSrg)r   in  z>DataQueue is a general-purpose blocking queue with one reader.rw   r)   Nc                 n    Xl         SU l        S U l        S U l        [        R
                  " 5       U l        g )NF)rh   rn   ro   rq   r~   r   rl   )r,   rw   s     r#   r-   DataQueue.__init__q  s,    
	7;37.9.?.?.Ar"   c                 ,    [        U R                  5      $ r+   )r   rl   r0   s    r#   __len__DataQueue.__len__x  s    4<<  r"   c                     U R                   $ r+   r   r0   s    r#   r   DataQueue.is_eof{  s    yyr"   c                 J    U R                   =(       a    U R                  (       + $ r+   r   r0   s    r#   r   DataQueue.at_eof~  s    yy---r"   c                     U R                   $ r+   r   r0   s    r#   r   DataQueue.exception  r   r"   r   r   c                 d    SU l         Xl        U R                  =nb  S U l        [        X1U5        g g r  )rn   rq   ro   r   r   s       r#   r   DataQueue.set_exception  s5    
 	ll"F/DL&y1 0r"   r   r   c                     U R                   R                  X45        U R                  =nb  S U l        [        US 5        g g r+   )rl   r   ro   r   )r,   r   r   r   s       r#   r   DataQueue.feed_data  s;    TL)ll"F/DLvt$ 0r"   c                 X    SU l         U R                  =nb  S U l        [        US 5        g g r  )rn   ro   r   )r,   r   s     r#   r   DataQueue.feed_eof  s.    	ll"F/DLvt$ 0r"   c                   #    U R                   (       dX  U R                  (       dG  U R                  (       a   eU R                  R	                  5       U l         U R                  I S h  vN   U R                   (       a  U R                   R                  5       u  pU$ U R                  b  U R                  e[        e NR! [
        R                  [
        R                  4 a	    S U l        e f = f7fr+   )rl   rn   ro   rh   r   r|   CancelledErrorTimeoutErrorr   rq   r   )r,   r   _s      r#   rU   DataQueue.read  s     ||DII||##::335DLll"" <<ll**,GDK??&//! #**G,@,@A #s1   AC,B< 'B:(B< ,AC,:B< <-C))C,c                 ,    [        U R                  5      $ r+   )r%   rU   r0   s    r#   r1   DataQueue.__aiter__  s    "499--r"   )rl   rn   rq   rh   ro   r  r  )r   r   r   r   r    r|   r  r-   rb   r7  rK   r   r   r	   r  r   r   r   r   r   r   rU   r%   r1   r!   r   r"   r#   r   r   n  s    HBW66 B4 B! ! . .8M2  $1	2	2 !	2 
		2%b % %D %%B  ..r2 .r"   r   c                      ^  \ rS rSrSrS\S\S\R                  SS4U 4S jjr	SS	\
S
\SS4U 4S jjjrS\
4S jrSrU =r$ )FlowControlDataQueuei  zFlowControlDataQueue resumes and pauses an underlying stream.

It is a destination for parsed data.

This class is deprecated and will be removed in version 4.0.
rx   ry   rw   r)   Nc                N   > [         TU ]  US9  SU l        Xl        US-  U l        g )N)rw   r   r{   )superr-   ri   re   _limit)r,   rx   ry   rw   r   s       r#   r-   FlowControlDataQueue.__init__  s,     	d#
!air"   r   r   c                    > [         TU ]  X5        U =R                  U-  sl        U R                  U R                  :  a7  U R                  R
                  (       d  U R                  R                  5         g g g r+   )rO  r   ri   rP  re   r   r   )r,   r   r   r   s      r#   r   FlowControlDataQueue.feed_data  sS    $%

d
::#DNN,J,JNN((* -K#r"   c                   #    U R                   (       dX  U R                  (       dG  U R                  (       a   eU R                  R	                  5       U l         U R                  I S h  vN   U R                   (       a  U R                   R                  5       u  pU =R                  U-  sl	        U R                  U R                  :  a5  U R                  R                  (       a  U R                  R                  5         U$ U R                  b  U R                  e[        e N! [
        R                  [
        R                  4 a	    S U l        e f = f7fr+   )rl   rn   ro   rh   r   r|   rF  rG  r   ri   rP  re   r   r   rq   r   )r,   r   r   s      r#   rU   FlowControlDataQueue.read  s     ||DII||##::335DLll"" <<--/JDJJ$JzzDKK'DNN,J,J--/K??&//! #**G,@,@A #s1   AED  'D(D  ,B2ED   -EE)rP  re   ri   ro   r  )r   r   r   r   r    r   rb   r|   r  r-   r   r   rU   r!   __classcell__)r   s   @r#   rM  rM    sc     $ -0 ;B;T;T 	 +b + +D + +B  r"   rM  )$r|   r~   r   typingr   r   r   r   r   r   r	   r
   r   base_protocolr   helpersr   r   r   r   r   logr   __all__r   r   r   r%   r=   rM   r   r
  r   __annotations__r   rM  r   r"   r#   <module>r]     s      
 
 
 (  ! T]!	 !'"+ ( "3 30@3) @3F@ @F &7%8u\" 8>. >.B(9R= (r"   