� D�g�����UddlZddlZddlZddlZddlmZddlmZddlm Z m Z m Z m Z m Z mZmZmZmZmZmZmZmZmZddlmZmZmZddlmZddlmZdd lm Z dd l!m"Z"m#Z#m$Z$dd l%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,dd l-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dd l7m8Z8m9Z9ddl:m;Z;m<Z<ddl=m>Z>dZ?edZ@eAejB��ZCe eeDeEd<ejFd��ZGe eDeEd<ejHdeG�d���ZIe eeDeEd<ejHdejJ��ZKe eeDeEd<ejHdejJ��ZLe eeDeEd<ejHd��ZMe eeNeEd<Gd�de��ZOGd �d!e��ZPed"eOeP��ZQGd#�d$e��ZRGd%�d&e��ZSGd'�d(��ZTd)eeDd*eUfd+�ZVGd,�d-ejWe eQ��ZXGd.�d/eXeO��ZYGd0�d1eXeP��ZZGd2�d3��Z[Gd4�d5��Z\eYZ]eZZ^eOZ_ePZ` e*sdd6lamYZYmZZZmOZOmPZPeYZbeZZceOZdePZedSdS#ef$rYdSwxYw)7�N)�suppress)�IntEnum)�Any�ClassVar�Final�Generic�List�Literal� NamedTuple�Optional�Pattern�Set�Tuple�Type�TypeVar�Union)� CIMultiDict�CIMultiDictProxy�istr)�URL�)�hdrs)� BaseProtocol)� HAS_BROTLI�BrotliDecompressor�ZLibDecompressor)� _EXC_SENTINEL�DEBUG�EMPTY_BODY_METHODS�EMPTY_BODY_STATUS_CODES� NO_EXTENSIONS�BaseTimerContext� set_exception) �BadHttpMessage� BadHttpMethod� BadStatusLine�ContentEncodingError�ContentLengthError� InvalidHeader�InvalidURLError� LineTooLong�TransferEncodingError)� HttpVersion� HttpVersion10)� EMPTY_PAYLOAD� StreamReader)� RawHeaders)� HeadersParser� HttpParser�HttpRequestParser�HttpResponseParser�RawRequestMessage�RawResponseMessage)� � �ASCIISETz!#$%&'*+-.^_`|~�_TCHAR_SPECIALSz [0-9A-Za-zz]+�TOKENREzHTTP/(\d)\.(\d)�VERSREz\d+�DIGITSs [0-9a-fA-F]+� HEXDIGITSc��eZdZUeed<eed<eed<ded<eed<eed<eeed<eed <eed <e ed <d S) r6�method�path�version�CIMultiDictProxy[str]�headers� raw_headers� should_close� compression�upgrade�chunked�urlN) �__name__� __module__� __qualname__�str�__annotations__r-r1�boolr r���c/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/aiohttp/http_parser.pyr6r6Qs}������� �K�K�K� �I�I�I� ���� $�$�$�$����������#����� �M�M�M� �M�M�M� �H�H�H�H�HrSr6c��eZdZUeed<eed<eed<eeed<eed<e ed<e eed<e ed<e ed <d S) r7rC�code�reasonrErFrGrHrIrJN) rLrMrNr-rP�intrOrr1rQr rRrSrTr7r7^sy������� ���� �I�I�I� �K�K�K� �c� "�"�"�"����������#����� �M�M�M� �M�M�M�M�MrSr7�_MsgTc��eZdZdZdZdZdZdS)� ParseStaterr��N)rLrMrN� PARSE_NONE� PARSE_LENGTH� PARSE_CHUNKED�PARSE_UNTIL_EOFrRrSrTr[r[ms"�������J��L��M��O�O�OrSr[c�"�eZdZdZdZdZdZdZdS)� ChunkStaterrr\r]�N)rLrMrN�PARSE_CHUNKED_SIZE�PARSE_CHUNKED_CHUNK�PARSE_CHUNKED_CHUNK_EOF�PARSE_MAYBE_TRAILERS�PARSE_TRAILERSrRrSrTrcrcus+���������������N�N�NrSrcc �`�eZdZ ddededededd f d �Zd eeded e ffd �Z d S)r2����F� max_line_size� max_headers�max_field_size�lax�returnNc�>�||_||_||_||_dS�N)rmrnro�_lax)�selfrmrnrorps rT�__init__zHeadersParser.__init__~s'��+���&���,����� � � rS�linesrDc ���t��}g}d}|d}t|��}|�r! |�dd��\}}n#t$rt |��d�wxYwt|��dkrt |���|d|dhddhzrt |���|�d��}t|��|jkrdtd�|� d d ����t|j��tt|�������|� d d ��} t� | ��st |���t|��} |dz }||}|j o |o |dd v} | r�|g} | r�| t|��z } | |jkrWtd�|� d d ����t|j��t| �����| �|��|dz }||kr||}|r |dd v} nd}n| ��d�| ��}nb| |jkrWtd�|� d d ����t|j��t| �����|�d��}|� d d ��} d| vsd| vsd| vrt |���|�| | ��|�||f��|��!t%|��t'|��fS)Nr�:r������ � s zrequest header name {}�utf8�backslashreplace�utf-8�surrogateescape)r{r|zrequest header field {}rS� � �)r�len�split� ValueErrorr)�lstripror+�format�decoderOr<� fullmatchrt�append�join�strip�addr�tuple)rurwrErF� lines_idx�line� line_count�bname�bvalue�name� header_length� continuation� bvalue_lst�values rT� parse_headerszHeadersParser.parse_headers�s���%0�M�M��� �� ��Q�x����Z�Z� ��O 0� 4� $� � �4�� 3� 3� ��v�v��� 4� 4� 4�#�D�)�)�t�3� 4�����5�z�z�Q���#�E�*�*�*��a��%��)�$��A�w�.� *�#�D�)�)�)��]�]�6�*�*�F��5�z�z�D�/�/�/�!�,�3�3�� � �V�-?�@�@�����+�,�,���E� � �O�O� ����<�<��):�;�;�D��$�$�T�*�*� +�#�E�*�*�*���K�K�M� ��N�I���#�D� �9�D��D�$�q�'�W�2D�L�� �$�X� �"��!�S��Y�Y�.�M�$�t�':�:�:�)�5�<�<� %� � �V�5G� H� H��� �� 3�4�4�� �.�.� ����%�%�d�+�+�+���N�I� �:�-�-�$�Y�/���>�+/��7�g�+=�L��"���)#��*���*�-�-��� �4�#6�6�6�%�1�8�8�!�L�L��1C�D�D����D�/�0�0��M�*�*� ����\�\�&�)�)�F��M�M�'�+<�=�=�E��u�}�}��� � ��5���#�F�+�+�+� �K�K��e� $� $� $� � � ��v�� /� /� /�_�O 0�b!��)�)�5��+=�+=�>�>s �A�A#)rkrlrkF) rLrMrNrXrQrvr �bytesrr1r�rRrSrTr2r2}s�������"� �"�� � �� �� �� � � � � � � � �\?��%�[�\?� �&� �2� 3�\?�\?�\?�\?�\?�\?rSr2rErqc�j�|�tjd�����dvS)z)Check if the upgrade header is supported.�>�tcp� websocket)�getr�UPGRADE�lower)rEs rT�_is_supported_upgrader��s*�� �;�;�t�|�R� (� (� .� .� 0� 0�4H� H�HrSc�4�eZdZUdZeeed< d)deed ee j d e d e d e d e dee dee dee deeededededdfd�Zejdeedefd���Zejde defd���Zdeefd�Zddejejejfdeded ed!ed"e d#edeeeee feeffd$�Z!deeded%e"eeee eeffd&�Z#d'eddfd(�Z$dS)*r3FrpN�rkrlT�protocol�loop�limitrmrnro�timerrVrA�payload_exception�response_with_body�read_until_eof�auto_decompressrqc�:�||_||_||_||_||_||_||_| |_| |_| |_ | |_ g|_ d|_ d|_ d|_d|_| |_||_t%||||j��|_dS)NrSF)r�r�rmrnror�rVrAr�r�r��_lines�_tail� _upgraded�_payload�_payload_parser�_auto_decompress�_limitr2rp�_headers_parser)rur�r�r�rmrnror�rVrAr�r�r�r�s rTrvzHttpParser.__init__�s��� !�� ��� �*���&���,����� ��� ��� �!2���"4���,���#%�� ��� ������ �<@��� /����� �,� �;���� � ����rSrwc��dSrsrR)rurws rT� parse_messagezHttpParser.parse_messages��:=�#rS�tec��dSrsrR�rur�s rT�_is_chunked_tezHttpParser._is_chunked_tes��/2�srSc��|j�!|j���d|_n�|jr|j�|j��|jrq|jddkr|j�d��t t ��5|�|j��cddd��S#1swxYwYdS)Nrzz rS)r��feed_eofr�r�r�r� Exceptionr��rus rTr�zHttpParser.feed_eofs�� � � +� � � )� )� +� +� +�#'�D� � ��z� /�� �"�"�4�:�.�.�.��{� ;��;�r�?�f�,�,��K�&�&�s�+�+�+��i�(�(�;�;��-�-�d�k�:�:�;�;�;�;�;�;�;�;�;�;�;�;����;�;�;�;��ts�B<�<C�Cr8rS�data�SEP�EMPTY�CONTENT_LENGTH� METH_CONNECT�SEC_WEBSOCKET_KEY1c �6 ���g}|jr|j|zdc}|_t|��}d} |j} d} | |k�r=|j��U|j�sM|�|| ��} | | kr|js| t|��z} �M| | k�r�| rtd���|| | �} |dkr| �d��} |j� | ��| t|��z} |jd|k�r� |� |j���|j� ��n#|j� ��wxYwdttf��fd � }|��}|�jvrt|����jot#�j��|_t%�d |j��}t%�d d��}|j�J�|t*vpt-|o|t.v��}|s}|�|dks�jrn|jsgt3|j|j| |j� ��}t9||�j|�j|j|j|j |j!� � � }|j"s||_n�||krntG�tH��sJ�t3|j|j| |j� ��}d|_t9|�j�j|j |j!���|_ny|sp|�n|j%rgt3|j|j| |j� ��}t9||�j|�j|j|j|j |j!� � � }|j"s||_ntL}|� �|f���j'} n�|| d�|_|}n�|j�|jr |jrJ�n�|r�| |kr�|jrJ�|j�J� |j�(|| d�|��\}}na#tR$rT}|}|j*�"|�*tW|����}tY|jj-||��d}d}Yd}~nd}~wwxYw|rd} t|��}d|_��;nn| |k��=|r| |kr || d�}n|}||j|fS)NrSrFzData after `Connection: close`r9� rzrqc����j����}|�dSt�|��st ����t |��Srs)rEr�r>r�r)rX)� length_hdrr��msgs ��rT�get_content_lengthz0HttpParser.feed_data.<locals>.get_content_length_sT���),�����)H�)H�J�)�1�'+�t� $*�#3�#3�J�#?�#?�D�&3�N�&C�&C� C�#&�z�?�?�2rSrArV)r�r�r�)�lengthrJrArHrVr�r�rpT)rArHr�rp).r�r�r�r�r��findr�r$�rstripr�r��clearr rXrEr)rIr��getattrrAr�r rQrrJr0r�r��HttpPayloadParserrHrVr�r�rp�done� isinstancer6r�r/rG� feed_data� BaseExceptionr�rOr#�payload)rur�r�r�r�r�r��messages�data_len� start_posr�rG�posr�r�r�rArV� empty_bodyr��payload_parser�eof�underlying_exc� reraised_excr�s ` @rTr�zHttpParser.feed_data.s������� �:� 6�#�z�D�0�#� �D�$�*��t�9�9��� ��y��� ��(�"�"��#�+�D�N�+��i�i��Y�/�/���)�#�#�D�K�#� #�c�#�h�h��I���)�#�#�#�O�,�-M�N�N�N� � �#� �.�D��e�|�|�#�{�{�5�1�1���K�&�&�t�,�,�,� #�c�#�h�h��I��{�2��%�/�/�0�)-�);�);�D�K�)H�)H�C� �K�-�-�/�/�/�/��D�K�-�-�/�/�/�/���� 3�H�S�M� 3� 3� 3� 3� 3� 3� 3�"4�!3�!5�!5��-���<�<�"/�0B�"C�"C�C�),��*�9N��K�:�:���")��h�� �!D�!D��&�s�F�A�6�6��#�}�8�8�8�%)�-D�%D�&��"�C�v�1C�'C�I�I� � *�<4�$�0�V�a�Z�Z�C�K�Z�$(�N�6@�'3� $� �&*�j�%)�&*�k� '�'�'�G� .?� '�'-�(+� �'-�,/�O�%)�Y�37�3J�04�0E�$(�H� .� .� .�N�$2�#6�F�7E�� 4��#�|�3�3�#-�c�3D�#E�#E�E�E�#E�&2� $� �&*�j�%)�&*�k� '�'�'�G� .2�D�N�3D� '�'*�z�,/�O�04�0E�$(�H� 4�4�4�D�0�0�",�4���4�CV��&2� $� �&*�j�%)�&*�k� '�'�'�G� .?� '�'-�(+� �'-�,/�O�%)�Y�37�3J�04�0E�$(�H� .� .� .�N�$2�#6�F�7E�� 4��&3�G� ����g��7�7�7�'*�'7� ��!%�i�j�j�!1�D�J� �D���%�-�$�.�-��;�&�&���� �)�h�.�.��;�&�&���+�7�7�7�� $� 4� >� >�t�I�J�J�?O�QT� U� U�I�C����$� � � �#1�L��-�9�'+�'=�'=�c�.�>Q�>Q�'R�'R� �!��,�4�$�&���� �C��D�D�D�D�D�D����� ������ !�I�"�4�y�y�H�+/�D�(�� � �C�(�"�"�F � �I��(�(�� � � �#�D�D��D�����-�-s%�D5�5E�&O6�6 Q�A Q�QrDc �� �|j�|��\� }d}d}d}d}tjtjtjtjtjtjtj tj tj tj f }t� fd�|D��d��}|�td|�d����� �tj��} | rM| ���} | dkrd}n0| dkrd}n'| d kr!� �tj��rd}� �tj��} | r| ���} | d vr| }� �tj ��} | �4|�| ��rd}tj� vrtd ���� |||||fS) z�Parses RFC 5322 headers from a stream. Line continuations are supported. Returns list of header name and value pairs. Header name is in upper case. NFc3�j�K�|]-}t��|d����dk�)|V��.dS)rRrN)r��getall)�.0�hrEs �rT� <genexpr>z+HttpParser.parse_headers.<locals>.<genexpr> sC�����P�P�a��W�^�^�A�r�5J�5J�1K�1K�a�1O�1O��1O�1O�1O�1O�P�PrSz Duplicate 'z' header found.�closeTz keep-aliverI)�gzip�deflate�brz6Transfer-Encoding can't be present with Content-Length)r�r�rr��CONTENT_LOCATION� CONTENT_RANGE� CONTENT_TYPE�ETAG�HOST� MAX_FORWARDS�SERVER�TRANSFER_ENCODING� USER_AGENT�nextr$r�� CONNECTIONr�r��CONTENT_ENCODINGr�)rurwrF� close_conn�encodingrIrJ� singletons�bad_hdr�conn�v�encr�rEs @rTr�zHttpParser.parse_headers�s���� $�3�A�A�%�H�H����� ������� � � � !� � � � � �I� �I� � � �K� � "� �O�  � ��P�P�P�P�:�P�P�P�RV�W�W�� � � �!G�w�!G�!G�!G�H�H� H��{�{�4�?�+�+�� � �� � � � �A��G�|�|�!� � ��l�"�"�"� � ��i���G�K�K�� �$=�$=�����k�k�$�/�0�0�� � ��)�)�+�+�C��/�/�/����[�[��/� 0� 0�� �>��"�"�2�&�&� ����"�g�-�-�$�L������j�(�G�W�M�MrS�valc��||_dS)zZSet connection upgraded (to websocket) mode. :param bool val: new state. N)r�)rur�s rT� set_upgradedzHttpParser.set_upgraded.s�� ����rS) NNr�rkrlrkNNNNTFT)%rLrMrNrprrQrPr r�asyncio�AbstractEventLooprXr"rOrr�rv�abc�abstractmethodr r�rYr�r�r�rr�r�r��_SEPrrr0r�r1r�rrRrSrTr3r3�s���������C��$�����,0�48��!� �"�,0�"� $�;?�#'�$� $�% �% ��<�(�% ��w�0�1�% �� % � � % � � % ��% ��(�)�% ��s�m�% ��� �% �$�D��$7�8�% �!�% ��% ��% � �% �% �% �% �N ��=�4��;�=�5�=�=�=���=���2��2��2�2�2���2��(�5�/�����&��#�2� �-�#'�#:�|.�|.��|.��|.�� |.� � |.� � |.�!�|.� �t�E�%��-�.�/��u�<� =�|.�|.�|.�|.�|@N��%�[�@N� ���X�d�^�X�c�]�D�RV�V� �@N�@N�@N�@N�D���������rSr3c�>�eZdZdZdeedefd�Zdede fd�Z dS)r4z�Read request status line. Exception .http_exceptions.BadStatusLine could be raised in case of any errors in status line. Returns RawRequestMessage. rwrqc ��|d�dd��} |�dd���\}}}n#t$rt|��d�wxYwt |��|jkr=t dt|j��tt |�������t� |��st|���t� |��}|�t|���tt|�d����t|�d������}|d krtj|d � ��}n�|�d ��rK|�d ��\} } } | �d��\} } } tj| | | d ���}np|dkr|dkrt|d ���}nRt|d ���}|jdkr6t)|�d����d�����|�|��\}}}}}}|�|t.krd }nd}t1||||||||||� � S)Nrrr�� r\��maxsplit�Status line is too longr�CONNECTT)� authority�encoded�/�#�?)rB� query_string�fragmentr�*�OPTIONS)rr�)�errors�latin1F)r�r�r�r%r�rmr+rOr<r�r=r&r-rX�groupr�build� startswith� partition�schemer*�encoder�r.r6)rurwr�rArBrC�match� version_orK� path_part�_hash_separator� url_fragment�_question_mark_separator�qs_partrErFr�rHrIrJs rTr�zHttpRequestParser.parse_message>s����Q�x���w�(9�:�:�� 0�$(�J�J�s�Q�J�$?�$?� !�F�D�'�'��� 0� 0� 0���%�%�4� /� 0���� �t�9�9�t�)� )� )��)�3�t�/A�+B�+B�C��D� � �N�N��� � � � ��(�(� (���'�'� '�� � ��)�)�� �=���%�%� %���E�K�K��N�N� 3� 3�S����Q���5H�5H�I�I� � �Y� � ��)�d�D�9�9�9�C�C� �_�_�S� !� !� �8<�~�~�c�7J�7J� 4�I�� �;D�;N�;N�s�;S�;S� 8�I�/�� �)��$�%�� ���C�C� �S�[�[�V�y�0�0��d�D�)�)�)�C�C��d�D�)�)�)�C��z�R���%��K�K�'8�K�9�9�@�@��J�J���� � � �u� %� %� � � � � � � � �=��M�)�)������ � � � � � � � � � � �  �  � s �:�Ar�c��|�dd���d�d�����dkrdStd���) N�,rr rz� rJTz'Request has invalid `Transfer-Encoding`)�rsplitr�r�r$r�s rTr�z HttpRequestParser._is_chunked_te�sP�� �9�9�S�1�9� %� %�b� )� /� /�� 6� 6� <� <� >� >�)� K� K��4��F�G�G�GrSN) rLrMrN�__doc__r r�r6r�rOrQr�rRrSrTr4r46sv��������S �4��;�S �3D�S �S �S �S �jH��H��H�H�H�H�H�HrSr4c���eZdZdZe Z d dedeede de de e e e e feeff �fd� Zd e ede fd �Zd edefd �Z�xZS)r5z�Read response status line and headers. BadStatusLine could be raised in case of any errors in status line. Returns RawResponseMessage. Nr�r��args�kwargsrqc�Z��|� trdnd}t��j||g|�Ri|��S)Nr8r9)r�superr�)rur�r�r+r,� __class__s �rTr�zHttpResponseParser.feed_data�sA��� �;�"�-�'�'��C� �u�w�w� ��s�<�T�<�<�<�V�<�<�<rSrwc �|�|d�dd��} |�d���\}}n#t$rt|��d�wxYw |�d���\}}n&#t$r|���}d}YnwxYwt |��|jkr=tdt|j��tt |�������t� |��}|�t|���tt|� d����t|� d������}t |��d kst� |��st|���t|��}|�|��\} } } } } }| �E|t krd } n7d |cxkrd ksn|d vrd} n!t"j| vst"j| vrd} nd } t)|||���| | | | | |� � S)Nrrr�rr r�r r\r]T�d��>�0��F)r�r�r�r&r�r�rmr+rOr=r�r-rXrr>r�r.rr�r�r7)rurwr�rC�statusrWrr�status_irErFr�rHrIrJs rTr�z HttpResponseParser.parse_message�se���Q�x���w�(9�:�:�� 0�"�j�j�!�j�4�4�O�G�V�V��� 0� 0� 0���%�%�4� /� 0���� �#�\�\�1�\�5�5�N�F�F�F��� � � ��\�\�^�^�F��F�F�F� ���� �v�;�;��+� +� +��)�3�t�/A�+B�+B�C��F� � �DT�DT��� � � � ��)�)�� �=���%�%� %���E�K�K��N�N� 3� 3�S����Q���5H�5H�I�I� � �v�;�;�!� � �6�#3�#3�F�#;�#;� ���%�%� %��v�;�;�� � � �u� %� %� � � � � � � � �=��M�)�)������&�&�&�&�3�&�&�&�&�(�j�*@�*@�����$��/�/�4�3I�W�3T�3T������!� � � �L�L�N�N� � � � � � �  �  � s�8�A�A1�1 B�Br�c��|�dd���d�d�����dkS)Nr&rr rzr'rJ)r(r�r�r�s rTr�z!HttpResponseParser._is_chunked_te�s<���y�y��q�y�)�)�"�-�3�3�E�:�:�@�@�B�B�i�O�OrSrs)rLrMrNr)rrpr�r rrrr r7r0rQr�r�rOr�� __classcell__)r/s@rTr5r5�s�����������)�C� #� =� =�� =��d�^� =�� =� � =� �t�E�,�l�:�;�<�d�E�I� J� =� =� =� =� =� =�= �4��;�= �3E�= �= �= �= �~P��P��P�P�P�P�P�P�P�PrSr5c��eZdZ ddedeededeedeed eed ed ed ed dfd�Zdd�Z dde de de d e ee ffd�Z dS)r�NFTr�r�rJrHrVrAr�r�rprqc ���d|_tj|_tj|_d|_d|_||_ | |_ d|_ |r|r|j rt||��} n|} |s-tj |_| ���d|_ nT|rtj|_n@|�>tj|_||_|jdkr| ���d|_ | |_dS)NrrSFT)�_lengthr[ra�_typercre�_chunk� _chunk_size� _chunk_tailr�rtr�� DeflateBufferr^r�r`r_r�) rur�r�rJrHrVrAr�r�rp� real_payloads rTrvzHttpPayloadParser.__init__�s ���� ��/�� � �3�� ������� /����� ��� � � #�+� #�$�2G� #�?L���@�@�L�L�#�L�"� !�#�.�D�J� � !� !� #� #� #��D�I�I� � !�#�1�D�J�J� � �#�0�D�J�!�D�L��|�q� � ��%�%�'�'�'� �� �#�� � � rSc���|jtjkr|j���dS|jtjkrt d���|jtjkrtd���dS)Nz2Not enough data for satisfy content length header.z3Not enough data for satisfy transfer length header.) r<r[rar�r�r_r(r`r,r�s rTr�zHttpPayloadParser.feed_eof"s��� �:��3� 3� 3� �L� !� !� #� #� #� #� #� �Z�:�2� 2� 2�$�D��� ��Z�:�3� 3� 3�'�E��� �4� 3rSr8�;�chunkr�� CHUNK_EXTc�n �|jtjkr�|j}t |��}||krM||z |_|j�||��|jdkr|j���dS�n�d|_|j�|d|�|��|j���d||d�fS|jtjk�r|j r|j |z}d|_ |�r�|j tj k�r�|� |��}|dk�r�|� |d|��}|dkrB|d|�}d|||�x} vr)td| ����} t|j| ��| �n |d|�}|jr|���}t%jt(|��sBt+|d|��dd����} t|j| ��| �t/t1|��d ��} ||t |��zd�}| dkr8tj|_ |jr|�d ��r |d d�}n;tj|_ | |_|j���n ||_ d S|j tjkr�|j}t |��}||kr'||z |_|j�||��d Sd|_|j�|d|�|��||d�}tj|_ |j���|j tjkrs|jr|�d ��r |d d�}|dt |���|kr)|t |��d�}tj |_ n ||_ d S|j tjkr{|dt |���} | |kr2|j���d|t |��d�fS| sd S| |dd �kr | |_ d Stj |_ |j tj krP|� |��}|dkr,||t |��zd�}tj|_ n ||_ d S|���n=|jtj!kr(|j�|t |����d S) Nr)TrSTrSr9z"Unexpected LF in chunk-extension: �asciir��r�r)FrS)"r<r[r_r;r�r�r�r�r`r?r=rcrer�r$r#rtr��rer�r?r,r�rXr�rhrrfr>�begin_http_chunk_receivingrg�end_http_chunk_receivingrira) rurDr�rE�required� chunk_lenr��i�size_b�ext�exc�size�heads rTr�zHttpPayloadParser.feed_data.s=�� �:��0� 0� 0��|�H��E� � �I��9�$�$�'�)�3�� �� �&�&�u�i�8�8�8��<�1�$�$��L�)�)�+�+�+�$�9�%� !�� �� �&�&�u�Y�h�Y�'7��B�B�B�� �%�%�'�'�'��U�8�9�9�-�-�-��Z�:�3� 3� 3��� '��(�5�0��#&�� ��d *��;�*�"?�?�?��*�*�S�/�/�C��a�x�x�!�J�J�y�!�S�9�9����6�6�%*�2�A�2�Y�F�$��a��e� �)<��=�=�&4�$P��$P�$P�'"�'"��!.�d�l�C� @� @� @�&)� � >�&+�4�C�4�[�F��9�4�%+�\�\�^�^�F�!�|�I�v�>�>�&�"7� %�d�s�d� � 2� 2�7�<M� N� N�#�#�C�*�$�,��<�<�<�"%�I�"�5��=�=�"�5�5�� %�c�C��H�H�n�&6�&6� 7���1�9�9�*4�*I�D�K�#�y�2�U�-=�-=�e�-D�-D�2�(-�a�b�b� ���*4�*H�D�K�/3�D�,� �L�C�C�E�E�E�E�+0��(�)�z��;�*�"@�@�@�#�/�H� #�E� � �I��)�+�+�+3�i�+?��(�� �.�.�u�i�@�@�@�)�z�+,��(�� �.�.�u�Y�h�Y�/?��J�J�J� %�h�i�i� 0��&0�&H�� �� �=�=�?�?�?��;�*�"D�D�D��y�*�U�%5�%5�e�%<�%<�*� %�a�b�b� ���Z�s�3�x�x�Z�(�C�/�/� %�c�#�h�h�j�j� 1��&0�&C�� � �+0��(�)�z� �;�*�"A�A�A� ��3�s�8�8��,�D��s�{�{�� �-�-�/�/�/�#�U�3�s�8�8�:�:�%6�6�6� �*�)�z��s�2�A�2�w���+/��(�)�z�",�";�D�K��;�*�";�;�;��*�*�S�/�/�C��a�x�x� %�c�C��H�H�n�&6�&6� 7��&0�&E�� � �+0��(�)�z�I�d *��N�Z�:�5� 5� 5� �L� "� "�5�#�e�*�*� 5� 5� 5��zrS)NFNNNTTF�rqN)r8rC)rLrMrNr0r rXrQrOrvr�r�rrr�rRrSrTr�r��s"������!%��%)�"� $�#'� $��,$�,$��,$��� �,$�� ,$� �c�]� ,$� �s�m� ,$��� �,$�!�,$��,$��,$� �,$�,$�,$�,$�\ � � � �EI�D�D��D�!%�D�<A�D� �t�U�{� �D�D�D�D�D�DrSr�c��eZdZUdZeed<dedeeddfd�Z e fde d e ddfd �Z d e d eddfd �Zdd�Zdd�Zdd�ZdS)r@zDDeflateStream decompress stream and feed data into specified stream.� decompressor�outr�rqNc���||_d|_||_d|_||dkr+tst d���t ��|_dSt|���|_dS)NrFr�zECan not decode content-encoding: brotli (br). Please install `Brotli`)r�) rWrRr��_started_decodingrr'rrVr)rurWr�s rTrvzDeflateBuffer.__init__�s~������� � �� �!&��� �F� �t� � �� �*�.����!3� 4� 4�D� � � � 0�(� C� C� C�D� � � rSrQ� exc_causec�2�t|j||��dSrs)r#rW)rurQrZs rTr#zDeflateBuffer.set_exception�s�� �d�h��Y�/�/�/�/�/rSrDrRc��|sdS|xj|z c_|js5|jdkr*|ddzdkrt|jd���|_ |j�|��}n%#t $rtd|jz���wxYwd|_|r*|j� |t|����dSdS)Nr�r��T)r��suppress_deflate_headerz#Can not decode content-encoding: %s) rRrYr�rrV�decompress_syncr�r'rWr�r�)rurDrRs rTr�zDeflateBuffer.feed_data�s��� � �F� � � �T�� � � �&� �� ��*�*��a��3��!�#�#�!1����!�!�!�D� � ��%�5�5�e�<�<�E�E��� � � �&�5�� �E��� � ���� "&��� � 2� �H� � �u�c�%�j�j� 1� 1� 1� 1� 1� 2� 2s �A-�-"Bc� �|j���}|s |jdkrN|j�|t |����|jdkr|jjstd���|j� ��dS)Nrr�) rV�flushrRrWr�r�r�r�r'r�)rurDs rTr�zDeflateBuffer.feed_eof�s����!�'�'�)�)�� � 6�D�I��M�M� �H� � �u�c�%�j�j� 1� 1� 1��}� �)�)�$�2C�2G�)�*�9�5�5�5� ��������rSc�8�|j���dSrs)rWrJr�s rTrJz(DeflateBuffer.begin_http_chunk_receiving�s�� ��+�+�-�-�-�-�-rSc�8�|j���dSrs)rWrKr�s rTrKz&DeflateBuffer.end_http_chunk_receiving�s�� ��)�)�+�+�+�+�+rSrT)rLrMrNr)rrPr0r rOrvrr�r#r�rXr�r�rJrKrRrSrTr@r@�s��������N�N�����D�L�D�H�S�M�D�d�D�D�D�D�($1�0�0� �0�!�0� � 0�0�0�0�2�u�2�C�2�D�2�2�2�2�@����.�.�.�.�,�,�,�,�,�,rSr@)r4r5r6r7)grrrI�string� contextlibr�enumr�typingrrrrr r r r r rrrrr� multidictrrr�yarlrr�r� base_protocolr�compression_utilsrrr�helpersrrrr r!r"r#�http_exceptionsr$r%r&r'r(r)r*r+r,� http_writerr-r.�streamsr/r0�typedefsr1�__all__r�set� printabler:rOrP�escaper;�compiler<�ASCIIr=r>r?r�r6r7rYr[rcr2rQr��ABCr3r4r5r�r@�HttpRequestParserPy�HttpResponseParserPy�RawRequestMessagePy�RawResponseMessagePy� _http_parser�HttpRequestParserC�HttpResponseParserC�RawRequestMessageC�RawResponseMessageC� ImportErrorrRrSrT�<module>r�sb�� � � � � ����� � � � � � � � ���������������������������������������������":�9�9�9�9�9�9�9�9�9�������������'�'�'�'�'�'�O�O�O�O�O�O�O�O�O�O������������������� � � � � � � � � � � � � � � � � � � � � � �4�3�3�3�3�3�3�3�0�0�0�0�0�0�0�0� � � � � � � ���~����C�� 0�1�1��%��C��/�1�1�1�(�b�i�(9�:�:���s��:�:�:�)�r�z�*J��*J�*J�*J�K�K���w�s�|� �K�K�K�(�b�j�);�R�X�F�F���g�c�l��F�F�F�(�b�j����:�:���g�c�l��:�:�:�#-�2�:�.>�#?�#?� �5���� �?�?�?�  �  �  �  �  � �  �  �  � � � � � �� � � � ���*�,>�?�?��������������������i?�i?�i?�i?�i?�i?�i?�i?�XI�#3�C�#8�I�T�I�I�I�I� E�E�E�E�E���'�%�.�E�E�E�P aH�aH�aH�aH�aH� �#4�5�aH�aH�aH�HVP�VP�VP�VP�VP��$6�7�VP�VP�VP�r��������DK,�K,�K,�K,�K,�K,�K,�K,�\(��)��'��)�� � � 1� � � � � � � � � � � � �/��0��.��0���� 1� 1��� � � ��D�D� ���s�I�I$�#I$
Memory