§
    ÏÁ³g`\  ã                  óF  — d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dl	Zd dl
Zd dlZd dlZddlmZ ddlmZmZmZ ddl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  ej        d¦  «        Z dd„Z! G d„ dej"        ¦  «        Z# G d„ de¦  «        Z$ G d„ d¦  «        Z%dS )é    )ÚannotationsNé   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolError)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncSemaphoreÚAsyncShieldCancellation)ÚTraceé   )ÚAsyncConnectionInterfacezhttpcore.http2Úrequestr
   ÚreturnÚboolc                ó>   — t          d„ | j        D ¦   «         ¦  «        S )Nc              3  ó|   K  — | ]7\  }}|                      ¦   «         d k    p|                      ¦   «         dk    V — Œ8dS )s   content-lengthó   transfer-encodingN©Úlower©Ú.0ÚkÚvs      úS/var/www/html/mpstechhub/venv/lib/python3.11/site-packages/httpcore/_async/http2.pyú	<genexpr>z#has_body_headers.<locals>.<genexpr>   s[   è è € ð ð áˆAˆqð 	
�Š‰	Œ	Ð&Ò&ÐK¨!¯'ª'©)¬)Ð7KÒ*Kðð ð ð ð ð ó    )ÚanyÚheaders)r   s    r   Úhas_body_headersr#      s2   € Ýð ð à”Oðñ ô ñ ô ð r    c                  ó   — e Zd ZdZdZdZdS )ÚHTTPConnectionStater   r   é   N)Ú__name__Ú
__module__Ú__qualname__ÚACTIVEÚIDLEÚCLOSED© r    r   r%   r%   $   s   € € € € € Ø€FØ€DØ€F€F€Fr    r%   c                  ó(  — e Zd ZdZej                             d¬¦  «        Z	 d=d>d„Zd?d„Z	d@d„Z
dAd„ZdAd„ZdBd„ZdAd„ZdCd„ZdDd„ZdEd „Z	 d=dFd"„ZdGd%„ZdHd&„ZdId'„ZdJd)„Zd@d*„ZdKd+„ZdLd-„ZdMd.„ZdMd/„ZdMd0„ZdMd1„ZdNd3„ZdNd4„ZdOd5„Z 	 	 	 dPdQd<„Z!dS )RÚAsyncHTTP2Connectioné   F)Úvalidate_inbound_headersNÚoriginr	   Ústreamr   Úkeepalive_expiryúfloat | Nonec                ó¼  — || _         || _        || _        t          j                             | j        ¬¦  «        | _        t          j	        | _
        d | _        d| _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        t          ¦   «         | _        d| _        d| _        d| _        i | _        d | _        d | _        d | _        d S )N)Úconfigr   F)Ú_originÚ_network_streamÚ_keepalive_expiryÚh2Ú
connectionÚH2ConnectionÚCONFIGÚ	_h2_stater%   r+   Ú_stateÚ
_expire_atÚ_request_countr   Ú
_init_lockÚ_state_lockÚ
_read_lockÚ_write_lockÚ_sent_connection_initÚ_used_all_stream_idsÚ_connection_errorÚ_eventsÚ_connection_terminatedÚ_read_exceptionÚ_write_exception)Úselfr2   r3   r4   s       r   Ú__init__zAsyncHTTP2Connection.__init__.   sÄ   € ð ˆŒØ%ˆÔØ/?ˆÔÝœ×3Ò3¸4¼;Ð3ÑGÔGˆŒÝ)Ô.ˆŒØ(,ˆŒØˆÔÝ#™+œ+ˆŒÝ$™;œ;ˆÔÝ#™+œ+ˆŒÝ$™;œ;ˆÔØ%*ˆÔ"Ø$)ˆÔ!Ø!&ˆÔð ð 	Œð NRˆÔ#à15ˆÔØ26ˆÔÐÐr    r   r
   r   r   c           	   ƒ  ó¾	  K  — |                       |j        j        ¦  «        s$t          d|j        j        › d| j        › �¦  «        ‚| j        4 ƒd {V —† | j        t          j        t          j	        fv r)| xj
        dz  c_
        d | _        t          j        | _        nt          ¦   «         ‚	 d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | j        4 ƒd {V —† | j        �s	 d|i}t          dt           ||¦  «        4 ƒd {V —†  | j        di |¤Žƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   nT# t$          $ rG}t'          ¦   «         5  |                      ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |‚d }~ww xY wd| _        d| _        | j        j        j        }t3          |¦  «        | _        t7          || j        z
  ¦  «        D ]!}| j                             ¦   «         ƒ d {V —† Œ"d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   | j                             ¦   «         ƒ d {V —† 	 | j                             ¦   «         }g | j        |<   n=# t>          j         j!        $ r& d| _"        | xj
        dz  c_
        t          ¦   «         ‚w xY w	 ||dœ}t          dt           ||¦  «        4 ƒd {V —† |  #                    ||¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          d	t           ||¦  «        4 ƒd {V —† |  $                    ||¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   t          d
t           ||¦  «        4 ƒd {V —†	 }|  %                    ||¬¦  «        ƒ d {V —†\  }}	||	f|_&        d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   tO          ||	tQ          | ||¬¦  «        d| j)        |dœ¬¦  «        S # t$          $ r×}t'          ¦   «         5  d|i}t          dt           ||¦  «        4 ƒd {V —† |  *                    |¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† n# 1 ƒd {V —†swxY w Y   d d d ¦  «         n# 1 swxY w Y   tW          |t>          j         j,        ¦  «        r*| j-        rt]          | j-        ¦  «        ‚t_          |¦  «        ‚|‚d }~ww xY w)NzAttempted to send request to z on connection to r   r   Úsend_connection_initT©r   Ú	stream_idÚsend_request_headersÚsend_request_bodyÚreceive_response_headers©rS   s   HTTP/2)Úhttp_versionÚnetwork_streamrS   )Ústatusr"   ÚcontentÚ
extensionsrS   Úresponse_closedr-   )0Úcan_handle_requestÚurlr2   ÚRuntimeErrorr8   rD   r@   r%   r*   r+   rB   rA   r   rC   rG   r   ÚloggerÚ_send_connection_initÚBaseExceptionr   ÚacloseÚ_max_streamsr?   Úlocal_settingsÚmax_concurrent_streamsr   Ú_max_streams_semaphoreÚrangeÚacquireÚget_next_available_stream_idrJ   r;   Ú
exceptionsÚNoAvailableStreamIDErrorrH   Ú_send_request_headersÚ_send_request_bodyÚ_receive_responseÚreturn_valuer   ÚHTTP2ConnectionByteStreamr9   Ú_response_closedÚ
isinstanceÚProtocolErrorrK   r   r   )
rN   r   ÚkwargsÚexcÚlocal_settings_max_streamsÚ_rS   ÚtracerZ   r"   s
             r   Úhandle_async_requestz)AsyncHTTP2Connection.handle_async_requestS   sÂ
  è è € Ø×&Ò& w¤{Ô'9Ñ:Ô:ð 	õ
 ð%°´Ô0Bð %ð %Ø”lð%ð %ñô ð ð
 Ô#ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ØŒ{Õ2Ô9Õ;NÔ;SÐTÐTÐTØÐ#Ô# qÑ(Ð#Ô#Ø"&�”Ý1Ô8�”�å,Ñ.Ô.Ð.Ð.ð	/ð 	/ð 	/ñ 	/ô 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/øøøð 	/ð 	/ð 	/ð 	/ð ”?ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ØÔ-ñ @ðØ'¨Ð1�FÝ$Ð%;½VÀWÈfÑUÔUð Cð Cð Cð Cð Cð Cð Cð CØ8˜dÔ8ÐBÐB¸6ÐBÐBÐBÐBÐBÐBÐBÐBÐBðCð Cð Cñ Cô Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cð Cøøøð Cð Cð Cð Cøøå$ð ð ð Ý0Ñ2Ô2ð ,ð ,Ø"Ÿkšk™mœmÐ+Ð+Ð+Ð+Ð+Ð+Ð+ð,ð ,ð ,ñ ,ô ,ð ,ð ,ð ,ð ,ð ,ð ,øøøð ,ð ,ð ,ð ,à�Iøøøøðøøøð
 .2�Ô*ð %&�Ô!ð ”NÔ1ÔHð +õ /=Ð=WÑ.XÔ.X�Ô+åÐ9¸DÔ<MÑMÑNÔNð @ð @�AØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð/	@ð 	@ð 	@ñ 	@ô 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@øøøð 	@ð 	@ð 	@ð 	@ð2 Ô)×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ð	+Øœ×CÒCÑEÔEˆIØ&(ˆDŒL˜Ñ#Ð#øÝŒ}Ô5ð 	+ð 	+ð 	+Ø(,ˆDÔ%ØÐÔ 1Ñ$ÐÔÝ(Ñ*Ô*Ð*ð	+øøøð
.	Ø!(°yÐAÐAˆFÝÐ3µV¸WÀfÑMÔMð Wð Wð Wð Wð Wð Wð Wð WØ×0Ò0¸ÈIÐ0ÑVÔVÐVÐVÐVÐVÐVÐVÐVðWð Wð Wñ Wô Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wð Wøøøð Wð Wð Wð WåÐ0µ&¸'À6ÑJÔJð Tð Tð Tð Tð Tð Tð Tð TØ×-Ò-°gÈÐ-ÑSÔSÐSÐSÐSÐSÐSÐSÐSðTð Tð Tñ Tô Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tð Tøøøð Tð Tð Tð TåØ*­F°G¸Vñô ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7àØ(,×(>Ò(>Ø#¨yð )?ñ )ô )ð #ð #ð #ð #ð #ð #‘�˜ð '-¨gÐ%6�Ô"ð7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7õ ØØÝ1°$¸È9ÐUÑUÔUà$-Ø&*Ô&:Ø!*ðð ð		ñ 	ô 	ð 	øõ ð 	ð 	ð 	Ý(Ñ*Ô*ð Eð EØ% yÐ1�Ý Ð!2µF¸GÀVÑLÔLð Eð Eð Eð Eð Eð Eð Eð EØ×/Ò/¸)Ð/ÑDÔDÐDÐDÐDÐDÐDÐDÐDðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð EðEð Eð Eñ Eô Eð Eð Eð Eð Eð Eð Eøøøð Eð Eð Eð Eõ
 ˜#�rœ}Ô:Ñ;Ô;ð .ð Ô.ð KÝ-¨dÔ.IÑJÔJÐJõ )¨Ñ-Ô-Ð-àˆIøøøøð-	øøøsk  ÁAB=Â=
CÃ
CÃ	HÃ%!D>ÄD,ÄD>Ä,
D6	Ä6D>Ä9D6	Ä:D>Ä=HÄ>
FÅF
ÅE=Å1F
Å=FÆF
ÆFÆF
Æ
FÆA/HÈ
HÈHÉ#I% É%:JÊ#"O; ËK5Ë#O; Ë5
K?Ë?O; ÌK?Ì O; Ì#MÍO; Í
MÍO; Í MÍ! O; Î*N>Î,O; Î>
OÏO; ÏOÏ.O; Ï;
SÐSÐ"RÐ5Q$ÑRÑ$
Q.Ñ.RÑ1Q.Ñ2RÑ5SÒR	ÒSÒR	Ò	ASÓSÚNonec           	   ƒ  óÂ  K  — t           j                             dt           j        j        j        dt           j        j        j        dt           j        j        j        di¬¦  «        | j        _        | j        j        t           j        j        j	        = | j         
                    ¦   «          | j                             d¦  «         |                      |¦  «        ƒ d{V —† dS )z�
        The HTTP/2 connection requires some initial setup before we can start
        using individual request/response streams on it.
        Tr   éd   r0   )ÚclientÚinitial_valuesé   N)r;   ÚsettingsÚSettingsÚSettingCodesÚENABLE_PUSHÚMAX_CONCURRENT_STREAMSÚMAX_HEADER_LIST_SIZEr?   rf   ÚENABLE_CONNECT_PROTOCOLÚinitiate_connectionÚincrement_flow_control_windowÚ_write_outgoing_data)rN   r   s     r   rb   z*AsyncHTTP2Connection._send_connection_init¹   sÌ   è è € õ )+¬×(<Ò(<Øõ ”Ô(Ô4°aå”Ô(Ô?ÀÝ”Ô(Ô=¸uðð )=ñ 
)
ô 
)
ˆŒÔ%ð ŒNÔ)ÝŒKÔ$Ô<ð
ð 	Œ×*Ò*Ñ,Ô,Ð,ØŒ×4Ò4°UÑ;Ô;Ð;Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r    rS   Úintc              ƒ  ór  K  — t          |¦  «         }d„ |j        D ¦   «         d         }d|j        fd|fd|j        j        fd|j        j        fgd„ |j        D ¦   «         z   }| j                             |||¬¦  «         | j                             d	|¬
¦  «         |  	                    |¦  «        ƒ d{V —† dS )z@
        Send the request headers to a given stream ID.
        c                óH   — g | ]\  }}|                      ¦   «         d k    ¯|‘Œ S )ó   hostr   r   s      r   ú
<listcomp>z>AsyncHTTP2Connection._send_request_headers.<locals>.<listcomp>ä   s.   € ÐKÐKÐK™4˜1˜a°a·g²g±i´iÀ7Ò6JÐ6J�QÐ6JÐ6JÐ6Jr    r   s   :methods
   :authoritys   :schemes   :pathc                ól   — g | ]1\  }}|                      ¦   «         d v¯|                      ¦   «         |f‘Œ2S ))r�   r   r   r   s      r   r�   z>AsyncHTTP2Connection._send_request_headers.<locals>.<listcomp>ë   sR   € ð 
ð 
ð 
á��1Ø�wŠw‰yŒyððð ð �WŠW‰YŒY˜ˆNðð ð r    )Ú
end_streamr�   rW   N)
r#   r"   Úmethodr_   ÚschemeÚtargetr?   Úsend_headersrŠ   r‹   )rN   r   rS   r’   Ú	authorityr"   s         r   rn   z*AsyncHTTP2Connection._send_request_headersÚ   só   è è € õ *¨'Ñ2Ô2Ð2ˆ
ð LÐK 7¤?ÐKÑKÔKÈAÔNˆ	ð ˜œÐ(Ø˜IÐ&Ø˜œÔ+Ð,Ø�w”{Ô)Ð*ð	
ð

ð 
àœð
ñ 
ô 
ñ
ˆð 	Œ×#Ò# I¨wÀ:Ð#ÑNÔNÐNØŒ×4Ò4°UÀiÐ4ÑPÔPÐPØ×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r    c              ƒ  ó   K  — t          |¦  «        sdS t          |j        t          j        ¦  «        sJ ‚|j        2 3 d{V —†}|                      |||¦  «        ƒ d{V —† Œ%6 |                      ||¦  «        ƒ d{V —† dS )zP
        Iterate over the request body sending it to a given stream ID.
        N)r#   rt   r3   ÚtypingÚAsyncIterableÚ_send_stream_dataÚ_send_end_stream)rN   r   rS   Údatas       r   ro   z'AsyncHTTP2Connection._send_request_bodyù   sÉ   è è € õ   Ñ(Ô(ð 	ØˆFå˜'œ.­&Ô*>Ñ?Ô?Ð?Ð?Ð?Ø!œ.ð 	Cð 	Cð 	Cð 	Cð 	Cð 	Cð 	C�$Ø×(Ò(¨°)¸TÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBð )à×#Ò# G¨YÑ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7s   ¼A!r�   Úbytesc              ƒ  ó  K  — |r‡|                       ||¦  «        ƒ d{V —†}t          t          |¦  «        |¦  «        }|d|…         ||d…         }}| j                             ||¦  «         |                      |¦  «        ƒ d{V —† |°…dS dS )zI
        Send a single chunk of data in one or more data frames.
        N)Ú_wait_for_outgoing_flowÚminÚlenr?   Ú	send_datar‹   )rN   r   rS   r�   Úmax_flowÚ
chunk_sizeÚchunks          r   r›   z&AsyncHTTP2Connection._send_stream_data  sÃ   è è € ð ð 	5Ø!×9Ò9¸'À9ÑMÔMÐMÐMÐMÐMÐMÐMˆHÝ�S ™YœY¨Ñ1Ô1ˆJØ˜{ 
˜{Ô+¨T°*°+°+Ô->�4ˆEØŒN×$Ò$ Y°Ñ6Ô6Ð6Ø×+Ò+¨GÑ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ð ð 	5ð 	5ð 	5ð 	5ð 	5r    c              ƒ  ót   K  — | j                              |¦  «         |                      |¦  «        ƒ d{V —† dS )z`
        Send an empty data frame on on a given stream ID with the END_STREAM flag set.
        N)r?   r’   r‹   )rN   r   rS   s      r   rœ   z%AsyncHTTP2Connection._send_end_stream  sJ   è è € ð 	Œ×!Ò! )Ñ,Ô,Ð,Ø×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r    ú%tuple[int, list[tuple[bytes, bytes]]]c              ƒ  óZ  K  — 	 |                       ||¦  «        ƒ d{V —†}t          |t          j        j        ¦  «        rnŒ=d}g }|j        D ]\\  }}|dk    r%t          |                     dd¬¦  «        ¦  «        }Œ0|                     d¦  «        s| 	                    ||f¦  «         Œ]||fS )	zT
        Return the response status code and headers for a given stream ID.
        TNéÈ   s   :statusÚasciiÚignore)Úerrorsó   :)
Ú_receive_stream_eventrt   r;   ÚeventsÚResponseReceivedr"   rŒ   ÚdecodeÚ
startswithÚappend)rN   r   rS   ÚeventÚstatus_coder"   r   r   s           r   rp   z&AsyncHTTP2Connection._receive_response  sÐ   è è € ð	Ø×4Ò4°W¸iÑHÔHÐHÐHÐHÐHÐHÐHˆEÝ˜%¥¤Ô!;Ñ<Ô<ð Øð	ð
 ˆØˆØ”Mð 	'ð 	'‰DˆAˆqØ�JŠˆÝ! !§(¢(¨7¸8 (Ñ"DÔ"DÑEÔE��Ø—\’\ $Ñ'Ô'ð 'Ø—’  1˜vÑ&Ô&Ð&øà˜WÐ%Ð%r    útyping.AsyncIterator[bytes]c               óR  K  — 	 |                       ||¦  «        ƒ d{V —†}t          |t          j        j        ¦  «        rH|j        }| j                             ||¦  «         |                      |¦  «        ƒ d{V —† |j	        W V — n!t          |t          j        j
        ¦  «        rdS Œ¥)z]
        Iterator that returns the bytes of the response body for a given stream ID.
        TN)r¯   rt   r;   r°   ÚDataReceivedÚflow_controlled_lengthr?   Úacknowledge_received_datar‹   r�   ÚStreamEnded)rN   r   rS   rµ   Úamounts        r   Ú_receive_response_bodyz+AsyncHTTP2Connection._receive_response_body0  sÄ   è è € ð	Ø×4Ò4°W¸iÑHÔHÐHÐHÐHÐHÐHÐHˆEÝ˜%¥¤Ô!7Ñ8Ô8ð ØÔ5�Ø”×8Ò8¸ÀÑKÔKÐKØ×/Ò/°Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø”jÐ Ð Ð Ð Ð Ý˜E¥2¤9Ô#8Ñ9Ô9ð Ø�ð	r    úKh2.events.ResponseReceived | h2.events.DataReceived | h2.events.StreamEndedc              ƒ  óF  K  — | j                              |¦  «        s6|                      ||¦  «        ƒ d{V —† | j                              |¦  «        ¯6| j         |                              d¦  «        }t	          |t
          j        j        ¦  «        rt          |¦  «        ‚|S )zƒ
        Return the next available event for a given stream ID.

        Will read more data from the network if required.
        Nr   )	rJ   ÚgetÚ_receive_eventsÚpoprt   r;   r°   ÚStreamResetr   )rN   r   rS   rµ   s       r   r¯   z*AsyncHTTP2Connection._receive_stream_event@  s¦   è è € ð ”,×"Ò" 9Ñ-Ô-ð 	;Ø×&Ò& w°	Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ð ”,×"Ò" 9Ñ-Ô-ð 	;à”˜YÔ'×+Ò+¨AÑ.Ô.ˆÝ�e�RœYÔ2Ñ3Ô3ð 	-Ý% eÑ,Ô,Ð,Øˆr    ú
int | Nonec           	   ƒ  ó  K  — | j         4 ƒd{V —† | j        �H| j        j        }|r&|r$||k    r| xj        dz  c_        t	          ¦   «         ‚t          | j        ¦  «        ‚|�| j                             |¦  «        �sP|                      |¦  «        ƒ d{V —†}|D �]1}t          |t          j        j        ¦  «        rdt          dt          |¦  «        4 ƒd{V —†	 }|                      |¦  «        ƒ d{V —† ||_        ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   Œ†t          |t          j        j        t          j        j        t          j        j        t          j        j        f¦  «        r5|j        | j        v r%| j        |j                                      |¦  «         �Œt          |t          j        j        ¦  «        r|| _        �Œ3ddd¦  «        ƒd{V —† n# 1 ƒd{V —†swxY w Y   |                      |¦  «        ƒ d{V —† dS )zp
        Read some data from the network until we see one or more events
        for a given stream ID.
        Nr   Úreceive_remote_settings)rE   rK   Úlast_stream_idrB   r   r   rJ   rÁ   Ú_read_incoming_datart   r;   r°   ÚRemoteSettingsChangedr   ra   Ú_receive_remote_settings_changerq   r±   r¹   r¼   rÄ   rS   r´   ÚConnectionTerminatedr‹   )rN   r   rS   rÈ   r°   rµ   rz   s          r   rÂ   z$AsyncHTTP2Connection._receive_eventsO  s8  è è € ð ”?ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ØÔ*Ð6Ø!%Ô!<Ô!K�Øð 3 ð 3°IÀÒ4NÐ4NØÐ'Ô'¨1Ñ,Ð'Ô'Ý0Ñ2Ô2Ð2Ý)¨$Ô*EÑFÔFÐFð Ð ¨¬×(8Ò(8¸Ñ(CÔ(CÑ Ø#×7Ò7¸Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@�Ø#ð <ñ <�EÝ! %­¬Ô)HÑIÔIð <Ý#(Ø5µv¸wñ$ô $ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7à"Ø"&×"FÒ"FÀuÑ"MÔ"MÐMÐMÐMÐMÐMÐMÐMØ16˜EÔ.ð	7ð 7ð 7ñ 7ô 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð 7øøøð 7ð 7ð 7ð 7øõ $ØåœIÔ6ÝœIÔ2ÝœIÔ1ÝœIÔ1ð	ñô ð <ð !œ?¨d¬lÐ:Ð:Ø œL¨¬Ô9×@Ò@ÀÑGÔGÐGùå# E­2¬9Ô+IÑJÔJð <Ø6;˜Ô3ùðK%	<ð %	<ð %	<ñ %	<ô %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<ð %	<øøøð %	<ð %	<ð %	<ð %	<ðN ×'Ò'¨Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0s7   �CGÃ#DÃ<GÄ
DÄGÄDÄB1GÇ
G)Ç,G)rµ   úh2.events.Eventc              ƒ  óð  K  — |j                              t          j        j        j        ¦  «        }|r½t          |j        | j        j	        j
        ¦  «        }|r™|| j        k    r�|| j        k    r:| j                             ¦   «         ƒ d {V —† | xj        dz  c_        || j        k    °:|| j        k     rB| j                             ¦   «         ƒ d {V —† | xj        dz  c_        || j        k     °:d S d S d S d S d S )Nr   )Úchanged_settingsrÁ   r;   r‚   r„   r†   r¡   Ú	new_valuer?   rf   rg   re   rh   Úreleaserj   )rN   rµ   rg   Únew_max_streamss       r   rË   z4AsyncHTTP2Connection._receive_remote_settings_change  sG  è è € Ø!&Ô!7×!;Ò!;ÝŒKÔ$Ô;ñ"
ô "
Ðð "ð 	+Ý!Ø&Ô0Ø”Ô-ÔDñô ˆOð ð + ?°dÔ6GÒ#GÐ#GØ%¨Ô(9Ò9Ð9ØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÐ%Ô%¨Ñ*Ð%Ô%ð &¨Ô(9Ò9Ð9ð &¨Ô(9Ò9Ð9ØÔ5×=Ò=Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÐ%Ô%¨Ñ*Ð%Ô%ð &¨Ô(9Ò9Ð9Ð9Ð9ð	+ð 	+ð
+ð +Ð#GÐ#Gð :Ð9r    c              ƒ  óü  K  — | j                              ¦   «         ƒ d {V —† | j        |= | j        4 ƒd {V —† | j        r"| j        s|                      ¦   «         ƒ d {V —† nw| j        t          j        k    rb| j        s[t          j	        | _        | j
        �"t          j        ¦   «         }|| j
        z   | _        | j        r|                      ¦   «         ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S ©N)rh   rÑ   rJ   rD   rK   rd   r@   r%   r*   r+   r:   ÚtimeÚ	monotonicrA   rH   )rN   rS   Únows      r   rs   z%AsyncHTTP2Connection._response_closed�  s§  è è € ØÔ)×1Ò1Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒL˜Ð#ØÔ#ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ØÔ*ð 	(°4´<ð 	(Ø—k’k‘m”mÐ#Ð#Ð#Ð#Ð#Ð#Ð#Ð#à”Õ 3Ô :Ò:Ð:À4Ä<Ð:Ý1Ô6�”ØÔ)Ð5Ýœ.Ñ*Ô*�CØ&)¨DÔ,BÑ&B�D”OØÔ,ð (ØŸ+š+™-œ-Ð'Ð'Ð'Ð'Ð'Ð'Ð'ð
	(ð 
	(ð 
	(ñ 
	(ô 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(øøøð 
	(ð 
	(ð 
	(ð 
	(ð 
	(ð 
	(s   ·B!C+Ã+
C5Ã8C5c              ƒ  óœ   K  — | j                              ¦   «          t          j        | _        | j                             ¦   «         ƒ d {V —† d S rÔ   )r?   Úclose_connectionr%   r,   r@   r9   rd   ©rN   s    r   rd   zAsyncHTTP2Connection.acloseŸ  sS   è è € ð 	Œ×'Ò'Ñ)Ô)Ð)Ý)Ô0ˆŒØÔ"×)Ò)Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+Ð+r    úlist[h2.events.Event]c              ƒ  óz  K  — |j                              di ¦  «        }|                     dd ¦  «        }| j        �| j        ‚	 | j                             | j        |¦  «        ƒ d {V —†}|dk    rt          d¦  «        ‚n"# t          $ r}|| _        d| _        |‚d }~ww xY w| j	         
                    |¦  «        }|S )NÚtimeoutÚreadr    zServer disconnectedT)r\   rÁ   rL   r9   rÞ   ÚREAD_NUM_BYTESr   Ú	ExceptionrI   r?   Úreceive_data)rN   r   ÚtimeoutsrÝ   r�   rw   r°   s          r   rÉ   z(AsyncHTTP2Connection._read_incoming_data¨  sä   è è € ØÔ%×)Ò)¨)°RÑ8Ô8ˆØ—,’,˜v tÑ,Ô,ˆàÔÐ+ØÔ&Ð&ð	ØÔ-×2Ò2°4Ô3FÈÑPÔPÐPÐPÐPÐPÐPÐPˆDØ�sŠ{ˆ{Ý)Ð*?Ñ@Ô@Ð@ð øåð 	ð 	ð 	ð $'ˆDÔ Ø%)ˆDÔ"ØˆIøøøøð	øøøð )-¬×(CÒ(CÀDÑ(IÔ(Iˆàˆs   Á;A? Á?
BÂ	BÂBc              ƒ  óª  K  — |j                              di ¦  «        }|                     dd ¦  «        }| j        4 ƒd {V —† | j                             ¦   «         }| j        �| j        ‚	 | j                             ||¦  «        ƒ d {V —† n"# t          $ r}|| _        d| _	        |‚d }~ww xY w	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S )NrÝ   ÚwriteT)
r\   rÁ   rF   r?   Údata_to_sendrM   r9   rä   rà   rI   )rN   r   râ   rÝ   rå   rw   s         r   r‹   z)AsyncHTTP2Connection._write_outgoing_dataÄ  sŒ  è è € ØÔ%×)Ò)¨)°RÑ8Ô8ˆØ—,’,˜w¨Ñ-Ô-ˆàÔ#ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	Øœ>×6Ò6Ñ8Ô8ˆLàÔ$Ð0ØÔ+Ð+ðØÔ*×0Ò0°¸wÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGøÝð ð ð ð ),�Ô%Ø)-�Ô&Ø�	øøøøðøøøð Hð	ð 	ð 	ñ 	ô 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	øøøð 	ð 	ð 	ð 	ð 	ð 	s6   Á(CÁ*!BÂCÂ
B+ÂB&Â&B+Â+CÃ
CÃCc              ƒ  ó0  K  — | j                              |¦  «        }| j         j        }t          ||¦  «        }|dk    rW|                      |¦  «        ƒ d{V —† | j                              |¦  «        }| j         j        }t          ||¦  «        }|dk    °W|S )a  
        Returns the maximum allowable outgoing flow for a given stream.

        If the allowable flow is zero, then waits on the network until
        WindowUpdated frames have increased the flow rate.
        https://tools.ietf.org/html/rfc7540#section-6.9
        r   N)r?   Úlocal_flow_control_windowÚmax_outbound_frame_sizer¡   rÂ   )rN   r   rS   Ú
local_flowÚmax_frame_sizeÚflows         r   r    z,AsyncHTTP2Connection._wait_for_outgoing_flowß  s¥   è è € ð œ.×BÒBÀ9ÑMÔMˆ
Ø"œnÔDˆÝ�:˜~Ñ.Ô.ˆØ�aŠiˆiØ×&Ò& wÑ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Øœ×AÒAÀ)ÑLÔLˆJØ!œ^ÔCˆNÝ�z >Ñ2Ô2ˆDð	 �aŠiˆið
 ˆr    r   c                ó   — || j         k    S rÔ   )r8   ©rN   r2   s     r   r^   z'AsyncHTTP2Connection.can_handle_requestó  s   € Ø˜œÒ%Ð%r    c                ó    — | j         t          j        k    o9| j         o1| j         o)| j        j        j        t          j	        j
        j        k     S rÔ   )r@   r%   r,   rI   rH   r?   Ústate_machineÚstater;   r<   ÚConnectionStaterÚ   s    r   Úis_availablez!AsyncHTTP2Connection.is_availableö  sX   € àŒKÕ.Ô5Ò5ð ØÔ*Ð*ðàÔ-Ð-ðð ”Ô,Ô2Ý”=Ô0Ô7ò8ðð		
r    c                óP   — t          j        ¦   «         }| j        d uo
|| j        k    S rÔ   )rÕ   rÖ   rA   )rN   r×   s     r   Úhas_expiredz AsyncHTTP2Connection.has_expired  s(   € ÝŒnÑÔˆØŒ dÐ*ÐD¨s°T´_Ò/DÐDr    c                ó,   — | j         t          j        k    S rÔ   )r@   r%   r+   rÚ   s    r   Úis_idlezAsyncHTTP2Connection.is_idle  s   € ØŒ{Õ1Ô6Ò6Ð6r    c                ó,   — | j         t          j        k    S rÔ   )r@   r%   r,   rÚ   s    r   Ú	is_closedzAsyncHTTP2Connection.is_closed  s   € ØŒ{Õ1Ô8Ò8Ð8r    Ústrc                ó\   — t          | j        ¦  «        }|›d| j        j        › d| j        › �S )Nz
, HTTP/2, ú, Request Count: )rù   r8   r@   ÚnamerB   rí   s     r   ÚinfozAsyncHTTP2Connection.info  sD   € Ý�T”\Ñ"Ô"ˆàð 4ð 4 4¤;Ô#3ð 4ð 4Ø"Ô1ð4ð 4ð	
r    c           	     ó~   — | j         j        }t          | j        ¦  «        }d|› d|›d| j        j        › d| j        › d�	S )Nú<z [z, rû   z]>)Ú	__class__r'   rù   r8   r@   rü   rB   )rN   Ú
class_namer2   s      r   Ú__repr__zAsyncHTTP2Connection.__repr__  sc   € Ø”^Ô,ˆ
Ý�T”\Ñ"Ô"ˆð6�
ð 6ð 6˜fð 6ð 6¨$¬+Ô*:ð 6ð 6Ø"Ô1ð6ð 6ð 6ð	
r    c              ƒ  ó
   K  — | S rÔ   r-   rÚ   s    r   Ú
__aenter__zAsyncHTTP2Connection.__aenter__  s   è è € Øˆr    Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec              ƒ  ó>   K  — |                       ¦   «         ƒ d {V —† d S rÔ   )rd   )rN   r  r  r	  s       r   Ú	__aexit__zAsyncHTTP2Connection.__aexit__   s.   è è € ð �kŠk‰mŒmÐÐÐÐÐÐÐÐÐr    rÔ   )r2   r	   r3   r   r4   r5   )r   r
   r   r   )r   r
   r   r|   )r   r
   rS   rŒ   r   r|   )r   r
   rS   rŒ   r�   rž   r   r|   )r   r
   rS   rŒ   r   r¨   )r   r
   rS   rŒ   r   r·   )r   r
   rS   rŒ   r   r¿   )r   r
   rS   rÅ   r   r|   )rµ   rÍ   r   r|   )rS   rŒ   r   r|   ©r   r|   )r   r
   r   rÛ   )r   r
   rS   rŒ   r   rŒ   )r2   r	   r   r   )r   r   )r   rù   )r   r/   )NNN)r  r  r  r  r	  r
  r   r|   )"r'   r(   r)   rß   r;   r7   ÚH2Configurationr>   rO   r{   rb   rn   ro   r›   rœ   rp   r¾   r¯   rÂ   rË   rs   rd   rÉ   r‹   r    r^   rò   rô   rö   rø   rý   r  r  r  r-   r    r   r/   r/   *   si  € € € € € Ø€NØŒY×&Ò&ÀÐ&ÑFÔF€Fð *.ð	#7ð #7ð #7ð #7ð #7ðJdð dð dð dðL1ð 1ð 1ð 1ðB1ð 1ð 1ð 1ð>
8ð 
8ð 
8ð 
8ð5ð 5ð 5ð 5ð1ð 1ð 1ð 1ð&ð &ð &ð &ð*ð ð ð ð ð ð ð ð  9=ð.1ð .1ð .1ð .1ð .1ð`+ð +ð +ð +ð"(ð (ð (ð (ð,ð ,ð ,ð ,ðð ð ð ð8ð ð ð ð6ð ð ð ð(&ð &ð &ð &ð	
ð 	
ð 	
ð 	
ðEð Eð Eð Eð7ð 7ð 7ð 7ð9ð 9ð 9ð 9ð
ð 
ð 
ð 
ð
ð 
ð 
ð 
ðð ð ð ð
 04Ø*.Ø04ð	ð ð ð ð ð ð r    r/   c                  ó&   — e Zd Zdd	„Zdd„Zdd„ZdS )rr   r<   r/   r   r
   rS   rŒ   r   r|   c                ó>   — || _         || _        || _        d| _        d S )NF)Ú_connectionÚ_requestÚ
_stream_idÚ_closed)rN   r<   r   rS   s       r   rO   z"HTTP2ConnectionByteStream.__init__*  s%   € ð &ˆÔØˆŒØ#ˆŒØˆŒˆˆr    r·   c               óÊ  K  — | j         | j        dœ}	 t          dt          | j         |¦  «        4 ƒd {V —† | j                             | j         | j        ¬¦  «        2 3 d {V —†}|W V — Œ6 	 d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S # t          $ rG}t          ¦   «         5  |                      ¦   «         ƒ d {V —† d d d ¦  «         n# 1 swxY w Y   |‚d }~ww xY w)NrR   Úreceive_response_body)	r  r  r   ra   r  r¾   rc   r   rd   )rN   rv   r¦   rw   s       r   Ú	__aiter__z#HTTP2ConnectionByteStream.__aiter__2  sý  è è € Ø!œ]¸¼ÐIÐIˆð	ÝÐ4µf¸d¼mÈVÑTÔTð  ð  ð  ð  ð  ð  ð  ð  Ø#'Ô#3×#JÒ#JØ œM°T´_ð $Kñ $ô $ð  ð  ð  ð  ð  ð  ð  ˜%ð  �K�K�K�K�Kð$ð $ð ð  ð  ñ  ô  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  ð  øøøð  ð  ð  ð  ð  ð  øõ
 ð 	ð 	ð 	õ )Ñ*Ô*ð $ð $Ø—k’k‘m”mÐ#Ð#Ð#Ð#Ð#Ð#Ð#ð$ð $ð $ñ $ô $ð $ð $ð $ð $ð $ð $øøøð $ð $ð $ð $àˆIøøøøð	øøøsj   “"B µ'A>ÁA)Á"A>Á+B Á>
BÂB ÂBÂB Â
C"ÂCÂ)CÃCÃC	ÃCÃC	ÃCÃC"c              ƒ  ó  K  — | j         sd| _         d| j        i}t          dt          | j        |¦  «        4 ƒd {V —† | j                             | j        ¬¦  «        ƒ d {V —† d d d ¦  «        ƒd {V —† d S # 1 ƒd {V —†swxY w Y   d S d S )NTrS   r]   rW   )r  r  r   ra   r  r  rs   )rN   rv   s     r   rd   z HTTP2ConnectionByteStream.acloseB  sY  è è € ØŒ|ð 	SØˆDŒLØ! 4¤?Ð3ˆFÝÐ.µ¸¼ÀvÑNÔNð Sð Sð Sð Sð Sð Sð Sð SØÔ&×7Ò7À$Ä/Ð7ÑRÔRÐRÐRÐRÐRÐRÐRÐRðSð Sð Sñ Sô Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Sð Søøøð Sð Sð Sð Sð Sð Sð	Sð 	Ss   ¼'A6Á6
B ÂB N)r<   r/   r   r
   rS   rŒ   r   r|   )r   r·   r  )r'   r(   r)   rO   r  rd   r-   r    r   rr   rr   )  sV   € € € € € ðð ð ð ðð ð ð ð Sð Sð Sð Sð Sð Sr    rr   )r   r
   r   r   )&Ú
__future__r   ÚenumÚloggingrÕ   Útypesr™   Ú	h2.configr;   Úh2.connectionÚ	h2.eventsÚh2.exceptionsÚh2.settingsÚ_backends.baser   Ú_exceptionsr   r   r   Ú_modelsr	   r
   r   Ú_synchronizationr   r   r   Ú_tracer   Ú
interfacesr   Ú	getLoggerra   r#   ÚIntEnumr%   r/   rr   r-   r    r   ú<module>r*     sé  ðØ "Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø €€€Ø €€€Ø €€€à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð à /Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð
 0Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ð /Ø QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QÐ QØ Ð Ð Ð Ð Ð Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0à	ˆÔ	Ð+Ñ	,Ô	,€ðð ð ð ðð ð ð ð ˜$œ,ñ ô ð ð|ð |ð |ð |ð |Ð3ñ |ô |ð |ð~Sð Sð Sð Sð Sñ Sô Sð Sð Sð Sr    