HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: //opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/__pycache__/http_parser.cpython-310.pyc
o

;jr��@s�UddlZddlZddlZddlZddlZddlmZddlmZddlm	Z	ddl
mZmZm
Z
mZmZmZmZmZddlmZmZmZddlmZdd	lmZdd
lmZddlmZmZm Z m!Z!m"Z"ddl#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+dd
l,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5ddl6m7Z7m8Z8m9Z9ddl:m;Z;m<Z<ddl=m>Z>er�ddl?m@Z@dZAedZBeCejD�ZEeeCeFeGd<e�Hd�ZIeeFeGd<e�JdeI�d��ZKee	eFeGd<e�JdejL�ZMee	eFeGd<e�JdejL�ZNee	eFeGd<e�Jd�ZOee	ePeGd<e�Jd �ZQee	eFeGd!<eRhd"��ZSeeReFeGd#<Gd$d%�d%e�ZTGd&d'�d'e�ZUed(eTeU�ZVGd)d*�d*e�ZWGd+d,�d,e�ZXGd-d.�d.e�ZYGd/d0�d0�ZZd1eeFd2e[fd3d4�Z\Gd5d6�d6ej]eeV�Z^Gd7d8�d8e^eT�Z_Gd9d:�d:e^eU�Z`Gd;d<�d<�ZaGd=d>�d>�Zbe_Zce`ZdeTZeeUZfze)�s�dd?lgm_Z_m`Z`mTZTmUZUe_Zhe`ZieTZjeUZkWdSWdSel�y�YdSw)@�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]+�TOKENREzHTTP/(\d)\.(\d)�VERSREz\d+�DIGITSs[0-9a-fA-F]+�	HEXDIGITSz[\x00-\x08\x0a-\x1f\x7f]�_FIELD_VALUE_FORBIDDEN_CTL_RE>
z
user-agentzcontent-lengthztransfer-encoding�hostzmax-forwardsZserverzcontent-typeZetagzcontent-locationz
content-range�SINGLETON_HEADERSc@sbeZdZUeed<eed<eed<ded<eed<eed<edBed	<eed
<eed<eed<dS)
r5�method�path�version�CIMultiDictProxy[str]�headers�raw_headers�should_closeN�compression�upgrade�chunked�url)	�__name__�
__module__�__qualname__�str�__annotations__r*r/�boolr�rSrS�G/opt/saltstack/salt/lib/python3.10/site-packages/aiohttp/http_parser.pyr5os
r5c@s^eZdZUeed<eed<eed<eeed<eed<e	ed<edBed<e	ed	<e	ed
<dS)r6rD�code�reasonrFrGrHNrIrJrK)
rMrNrOr*rQ�intrPrr/rRrSrSrSrTr6|s
r6�_MsgTc@seZdZdZdZdZdS)�PayloadStaterr�N)rMrNrO�PAYLOAD_COMPLETE�PAYLOAD_NEEDS_INPUT�PAYLOAD_HAS_PENDING_INPUTrSrSrSrTrY�srYc@seZdZdZdZdZdZdS)�
ParseStaterrrZ�N)rMrNrO�
PARSE_NONE�PARSE_LENGTH�
PARSE_CHUNKED�PARSE_UNTIL_EOFrSrSrSrTr^�s
r^c@s eZdZdZdZdZdZdZdS)�
ChunkStaterrrZr_�N)rMrNrO�PARSE_CHUNKED_SIZE�PARSE_CHUNKED_CHUNK�PARSE_CHUNKED_CHUNK_EOFZPARSE_MAYBE_TRAILERS�PARSE_TRAILERSrSrSrSrTrd�srdc@sReZdZ				ddededededd	f
d
d�Zdeeded
e	ffdd�Z
d	S)r1���F�
max_line_size�max_headers�max_field_size�lax�returnNcCs||_||_||_||_dS�N)rlrmrn�_lax)�selfrlrmrnrorSrSrT�__init__�s
zHeadersParser.__init__�linesrEcCst�}g}d}||}t|�}|�rz
|�dd�\}}Wnty(t|�d�wt|�dkr3t|��|d|dhddh@rCt|��|�d�}|�dd	�}	t�|	�sWt|��|d7}||}|j	oi|oi|dd
v}
|
r�t|�}|g}|
r�|t|�7}||j
kr�|dd�|�}
t|
dd
�d|j
��|�
|�|d7}||kr�||}|r�|dd
v}
nd}n|
sud�|�}|�d�}|�dd	�}|j	r�d|vs�d|vs�d|vr�t|��n	t�|�r�t|��|j	s�|	|vr�|	��tvr�td|	�d���|�|	|�|�
||f�|st|�t|�fS)Nr�:r���� �	s 	�utf-8�surrogateescape)rxrys: ��d�...�
�
�zDuplicate 'z' header found.)r
�len�split�
ValueErrorr&�lstrip�decoder;�	fullmatchrrrn�joinr(�append�stripr?�search�lowerrAr!�addr�tuple)rsrurFrGZ	lines_idx�lineZ
line_countZbnameZbvalue�nameZcontinuation�
header_lengthZ
bvalue_lstZheader_line�valuerSrSrT�
parse_headers�sr
�


�
��

�
�AzHeadersParser.parse_headers)rjrkrjF)rMrNrOrWrRrt�list�bytesr�r/r�rSrSrSrTr1�s*�����
��
�r1rFrpcCs"|�tjd�}|��o|��dvS)z)Check if the upgrade header is supported.�>Z	websocketZtcp)�getr�UPGRADE�isasciir�)rF�urSrSrT�_is_supported_upgrade�sr�c@s�eZdZUdZeeed<														d6d	edBd
ej	dBde
de
d
e
de
dedBde
dBdedBde
edBdededede
ddfdd�Zejdeedefdd��Zejdedefdd��Zd7d d!�Zd7d"d#�ZdedBfd$d%�Zd&d'ejejejfd(ed)ed*ed+ed,ed-ede ee ee!feeffd.d/�Z"deede d0e#edBedBeeffd1d2�Z$d3eddfd4d5�Z%dS)8r2FroN�rj�Tr�protocol�loop�limitrlrmrn�timerrUrB�payload_exception�response_with_body�read_until_eof�auto_decompress�max_msg_queue_sizerpcCs�||_||_||_||_||_||_||_||_|	|_|
|_||_	||_
g|_d|_d|_
d|_d|_d|_|
|_||_t||||j�|_||_d|_dS)Nr|Fr)r�r�rlrmrnr�rUrBr�r�r��_lines�_tail�	_upgraded�_payload�_payload_parser�_payload_has_more_data�_auto_decompress�_limitr1ro�_headers_parser�_max_msg_queue_size�_msg_in_flight)rsr�r�r�rlrmrnr�rUrBr�r�r�r�r�rSrSrTrts2
�
zHttpParser.__init__rucC�dSrqrS)rsrurSrSrT�
parse_message4�zHttpParser.parse_message�tecCr�rqrS�rsr�rSrSrT�_is_chunked_te7r�zHttpParser._is_chunked_tecCs|jdusJ�|j��dSrq)r��
pause_reading�rsrSrSrTr�:szHttpParser.pause_readingcCs |jdkr|jd8_dSdS)z;Protocol drained a queued message; free a slot for parsing.rrN)r�r�rSrSrT�message_consumed>s
�zHttpParser.message_consumedcCs�|jdur|j��|jjrd|_dS|jr|j�|j�|jrG|jddkr-|j�d�tt��|�|j�Wd�S1sBwYdS)Nrwz
r|)	r��feed_eof�doner�r�r�r�	Exceptionr�r�rSrSrTr�Cs

�

 �zHttpParser.feed_eofr7r|�data�SEP�EMPTY�CONTENT_LENGTH�METH_CONNECT�SEC_WEBSOCKET_KEY1csg}|jr|j|d}|_t|�}d}	|j}
|j}d}|	|ks$|j�rm|jdu�r�|j�s�|jr@|j|jkr@||	d�|_�n-|�	||	�}
|
|	krT|j
sT|
t|�}	q|
|	k�r�|r_td��||	|
�}|dkrn|�d�}t|�|krt
|dd�d|��|j
�|�|j}t|j
�|jkr�td	��|
t|�}	|j
d
|k�r�|jt|j
�}z
|�|j
��W|j
��n|j
��wdtdBf��fdd
�}|�}|�jvr�t|���jo�t�j�|_t�d|j�}t�dd�}|jdus�J�|tvp�t|o�|tv�}|�sC|du�r|dk�s�j�rC|j�sCt|j|j |
|j!d�}t"||�j|�j#|j$|j%|j&|j'|j(|j|j||j!d�}|j)�sB||_np||k�rvt*�t+��sPJ�t|j|j |
|j!d�}d|_t"|�j�j#|j&|j'|j(|j|j||j!d�
|_n=|�s�|du�r�|j,�r�t|j|j |
|j!d�}t"||�j|�j#|j$|j%|j&|j'|j(|j|j||j!d�}|j)�s�||_nt-}|��|f�|j�r�|jd7_�j.}n�||	d�|_t|j�|jk�r�t
|jdd�d|j��|}n�|jdu�r�|j�r�|j
�r�J�ns|j
�rJ�|jdu�sJ�z|j�/||	d�|�\}}Wn8t0�yO}z+|}|j1du�r/|�1t2|��}t3|jj4||�t5j6}d}t*|tt7f��rE�WYd}~nd}~ww|t5j8k|_|t5j6u�r]nd}	t|�}d|_|	|ks$|js$|�r||	|k�r|||	d�}n|}||j|fS)Nr|rFzData after `Connection: close`r8�
r}r~zToo many headers receivedrwrpcs2�j���}|durdSt�|�st���t|�Srq)rFr�r=r�r&rW)Z
length_hdr�r��msgrSrT�get_content_length�s
z0HttpParser.feed_data.<locals>.get_content_lengthrBrU)r�r�r�)
�lengthrKrBrIrUr�r�ro�headers_parserrlrn�max_trailersr�T)	rBrIr�ror�rlrnr�r�r)9r�r�r�rlr�r�r�r�r��findr�r!�rstripr(r�rnrmr��clearrWrFr&rJr��getattrrBr�rrRrrKr.r�r��HttpPayloadParserrIrUr�r�ror�r��
isinstancer5r�r-rH�	feed_datar�r�rPr �payloadrYr[r)r])rsr�r�r�r�r�r��messagesZdata_lenZ	start_posr��max_line_lengthrH�posr�r�r�r�rBrUZ
empty_bodyr�Zpayload_parserZ
payload_stateZunderlying_excZreraised_excrSr�rTr�Tsd
�


�

�����
�
��������������TzHttpParser.feed_datarEcCs�|j�|�\}}d}d}d}d}|�tjd�}|r9dd�|D�}	d|	vr'd}nd|	vr-d}d	|	vr9|�tj�r9d}|�tjd
�}
|
��rL|
�	�dvrL|
}|�tj
�}|durf|�|�r]d}tj|vrft
d��||||||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.
        NFrScSs:h|]}dd�|�d�D�D]}|r|��r|���qqS)css�|]}|�d�VqdS)� 	N)r�)�.0�partrSrSrT�	<genexpr>Zs�z5HttpParser.parse_headers.<locals>.<setcomp>.<genexpr>�,)r�r�r�)r�Z
conn_value�tokenrSrSrT�	<setcomp>Ws����z+HttpParser.parse_headers.<locals>.<setcomp>�closeTz
keep-aliverJr�>�deflate�gzip�zstd�brz6Transfer-Encoding can't be present with Content-Length)r�r�ZgetallrZ
CONNECTIONr�r�ZCONTENT_ENCODINGr�r��TRANSFER_ENCODINGr�r�r!)rsrurFrGZ
close_conn�encodingrJrKZconn_valuesZconn_tokens�encr�rSrSrTr�Cs8
�

�zHttpParser.parse_headers�valcCs
||_dS)zZSet connection upgraded (to websocket) mode.

        :param bool val: new state.
        N)r�)rsr�rSrSrT�set_upgradedys
zHttpParser.set_upgraded)NNr�rjr�rjNNNNTFTr�rpN)&rMrNrOrorrRrQr�asyncioZAbstractEventLooprWrrP�type�
BaseExceptionrt�abc�abstractmethodr�r�rXr�r�r�r�r�rr�r�r��_SEPrr�r.r�r/r�r�rSrSrSrTr2s�
��������	�
�
��
���
�-

�������
�p��
�6r2c@s8eZdZdZdeedefdd�Zdede	fdd�Z
d	S)
r3z�Read request status line.

    Exception .http_exceptions.BadStatusLine
    could be raised in case of any errors in status line.
    Returns RawRequestMessage.
    rurpcCs�|d�dd�}z|jddd�\}}}Wnty t|�d�wt�|�s*t|��t�|�}|dur7t|��tt	|�
d��t	|�
d���}|dkrRtj|d	d
�}nD|�
d�rq|�d�\}	}
}|	�d
�\}	}}
tj|	|
|d	d�}n%|dkr�|dkr�t|d	d�}nt|d	d�}|jdkr�t|jdd��d���|�|dd��\}}}}}}|tkr�tj|vr�td��|dur�|tkr�d	}nd}t||||||||||�
S)Nrrzr{� rZ��maxsplitrZCONNECTT)Z	authority�encoded�/�#�?)rCZquery_string�fragmentr��*ZOPTIONS)r�r�)�errors�latin1z!Missing 'Host' header in request.F)r�r�r�r"r;r�r<r#r*rW�groupr�build�
startswith�	partition�schemer'�encoder�r,rZHOSTr!r+r5)rsrur�rBrCrD�match�	version_orLZ	path_partZ_hash_separatorZurl_fragmentZ_question_mark_separatorZqs_partrFrGr�rIrJrKrSrSrTr��sp
�


�
���zHttpRequestParser.parse_messager�cCs8|jddd�d�d�}|��r|��dkrdStd��)	Nr�rr�rwr�rKTz'Request has invalid `Transfer-Encoding`)�rsplitr�r�r�r!r�rSrSrTr��sz HttpRequestParser._is_chunked_teN)rMrNrO�__doc__r�r�r5r�rPrRr�rSrSrSrTr3�sSr3cs�eZdZUdZded<eZ	ddededBde	de	d	e
ee
ee
feeff
�fd
d�
Zdeed	efd
d�Zded	efdd�Z�ZS)r4z�Read response status line and headers.

    BadStatusLine could be raised in case of any errors in status line.
    Returns RawResponseMessage.
    r0r�Nr�r��args�kwargsrpcs0|dur
trdnd}t�j||g|�Ri|��S)Nr7r8)r�superr�)rsr�r�rr��	__class__rSrTr��szHttpResponseParser.feed_dataruc
Csb|d�dd�}z
|jdd�\}}Wntyt|�d�wz
|jdd�\}}Wnty8|��}d}Ynwt�|�}|durFt|��tt|�	d��t|�	d���}t
|�dks`t�|�sdt|��t|�}|�|dd��\}	}
}}}
}|dur�|t
kr�d	}n!d
|kr�dks�n|dvr�d
}ntj|	vs�tj|	vr�d
}nd	}t|||��|	|
|||
|�	S)Nrrzr{rr�r�rZr_Tr}��>i0��F)r�r�r�r#r�r<r�r*rWr�r�r=r�r+rr�r�r6)rsrur�rD�statusrVr�rZstatus_irFrGr�rIrJrKrSrSrTr��s\
��

��z HttpResponseParser.parse_messager�cCs |jddd�d�d���dkS)Nr�rr�rwr�rK)rr�r�r�rSrSrTr�6s z!HttpResponseParser._is_chunked_terq)rMrNrOrrQrror�r�rr�r�r6r.rRr�r�rPr��
__classcell__rSrSrrTr4�s$
������:r4c @s�eZdZ								d#ddded�dededBd	ed
edBdedBdedBd
ededededededededdfdd�Z	d$dd�Z
d$dd�Z	d%dede
d edeeeffd!d"�ZdS)&r�NFTrjr�)rlrnr�r�r�r�rKrIrUrBr�r�ror�rlrnr�r�rpc
Cs�d|_d|_tj|_tj|_d|_d|_	||_
|	|_|
|_||_
||_|
|_d|_g|_d|_d|_|rA|rA|j
rAt|||d�}n|}|sQtj|_|��d|_n!|rXtj|_n|durrtj|_||_||_|jdkrr|��d|_||_dS)NrFr|)�max_decompress_sizeT)�_length�_pausedr^rc�_typerdrf�_chunk�_chunk_size�_chunk_tailr�rrr��_max_line_size�_max_field_size�
_max_trailers�_more_data_available�_trailer_linesr��_eof_pending�
DeflateBufferr`r�rbra�_length_expectedr�)rsr�r�rKrIrUrBr�r�ror�rlrnr�r�Zreal_payloadrSrSrTrt<sF�


zHttpPayloadParser.__init__cCs
d|_dS)NT)rr�rSrSrTr�ys
zHttpPayloadParser.pause_readingcCs�|jtjkr,d|_|jr|jrd|_dS|j�dd�|_|js|j��d|_	d|_dS|jtj
krD|j|j}t
d|�d|j�d���|jtjkrNtd��dS)	NTFr|rz;Not enough data to satisfy content length header (received z of z bytes).z2Not enough data to satisfy transfer length header.)rr^rcrrrr�r�r�r�rarr
r%rbr))rsZreceivedrSrSrTr�|s2�

�����zHttpPayloadParser.feed_eofr7�;�chunkr��	CHUNK_EXTcCs�|jtjkr_|jr|j|}d|_|j}t|t|�d�|_|j�|d|�|�|_	|j	rJ|j
r?d|_
||d�|_tjdfS|j�dd�|_	|j	s-|jdkr]|j�
�tj||d�fS�nb|jtjk�r�|jr�|jtjkr�|j}|jtjkr{|j}t|j�|kr�t|jdd�d|��|j|}d|_|s�|j	�r|jtjk�rQ|�|�}|dk�rI||jkr�t|dd�d|j��|�|d|�}|dkr�|d|�}d|||�}	vr�td|	���}
t|j|
�|
�n|d|�}|jr�|��}t�t|��st|d|�� d	d
��}
t|j|
�|
�t!t"|�d�}||t|�d�}|dk�r<tj|_|j�r;|�#d��r;|d
d�}ntj|_||_$|j�%�n||_tj&dfS|jtjk�r�|j
�rgd|_
||_tjdfS|j$}t|t|�d�|_$|j�|d|�|�|_	||d�}|j	�r�q�|j$�r�d|_
tj&dfStj'|_|j�(�|jtj'k�r�|j�r�|�#d��r�|d
d�}|dt|��|k�r�|t|�d�}tj|_n(t|�t|�k�s�||dt|��k�r�td�}
t|j|
�|
�||_tj&dfS|jtjk�rz|�|�}|dk�r||_tj&dfS|d|�}||t|�d�}|dk�r*|�)d�}t|�|jk�r>t|dd�d|j��|j*�+|�t|j*�|j,k�rQt-d��|j*ddk�rzz|j.�/|j*�\}
}W|j*�0�n|j*�0�w|j�
�tj|fS|s�|j	s�nA|jtj1k�r�|j�|t|��|_	|j	�r�|j
�r�d|_
tjdfS|j�dd�|_	|j	�s�|j2�r�|j�
�d|_3d|_2tjdfStj&dfS)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|rNFr}r~r8z"Unexpected LF in chunk-extension: �asciir{�r�rz3Chunk size mismatch: expected CRLF after chunk datazToo many trailers receivedrwT)4rr^rarr
�maxr�r�r�rrrYr]r�r[rbrrdrgrrirr(rfr�r)r rrr��rer�r>r�rWr�r�r�begin_http_chunk_receivingr\rh�end_http_chunk_receivingr�rr�rr!r�r�r�rcrr�)rsrr�r�requiredr�r��iZsize_b�ext�exc�sizer�ZtrailersZraw_trailersrSrSrTr��s

�
�

��



���
�

�


(�






�


��w
�


zHttpPayloadParser.feed_data)NFNNNTTFr�)r7r)rMrNrOrr.rWrRrPr1rtr�r�r�r�r�rYr�rSrSrSrTr�;sr�
��������	�
��
����
�
=
����
�r�c	@s�eZdZUdZeed<efdededBde	ddfdd	�Z
efd
ededdfdd
�Z
dede	defdd�Zddd�Zddd�Zddd�ZdS)rzDDeflateStream decompress stream and feed data into specified stream.�decompressor�outr�NrrpcCsv||_d|_|j|_||_d|_||dkr!tstd��t�|_n|dkr0t	s+td��t
�|_nt|d�|_||_dS)NrFr�zECan not decode content-encoding: brotli (br). Please install `Brotli`r�zRCan not decode content-encoding: zstandard (zstd). Please install `backports.zstd`)r�)
r*r(�total_compressed_bytesr��_started_decodingrr$rr)rrr�_max_decompress_size)rsr*r�rrSrSrTrtPs(�
�

zDeflateBuffer.__init__r'�	exc_causecCst|j||�dSrq)r r*)rsr'r.rSrSrTr pszDeflateBuffer.set_exceptionrr(cCs�|j|7_|j|j_|js$|jdkr$|dd@dkr$t|jdd�|_|jj}|tj	kr/dnt
|j|�}z
|jj||d�}Wnt
yMtd|j��wd|_|r\|j�|t|��|jjS)	Nr�r��T)r�Zsuppress_deflate_header)�
max_lengthz#Can not decode content-encoding: %s)r(r*r+r,r�rr)Z
_low_water�sys�maxsizer r-Zdecompress_syncr�r$r�r�Zdata_available)rsrr(Z	low_waterr1rSrSrTr�ws.
�
����zDeflateBuffer.feed_datacCsD|j��}|r	J�|jdkr|jdkr|jjstd��|j��dS)Nrr�)r)�flushr(r��eofr$r*r�)rsrrSrSrTr��s

zDeflateBuffer.feed_eofcC�|j��dSrq)r*r"r�rSrSrTr"��z(DeflateBuffer.begin_http_chunk_receivingcCr6rq)r*r#r�rSrSrTr#�r7z&DeflateBuffer.end_http_chunk_receivingr�)rMrNrOrrrQrr.rPrWrtrr�r r�rRr�r�r"r#rSrSrSrTrKs2
����
�#���
�
#

r)r3r4r5r6)mr�r�r!�stringr2�
contextlibr�enumrr�typingrrrrr	r
rrZ	multidictr
rrZyarlrr�rZ
base_protocolrZcompression_utilsrrrrrZhelpersrrrrrrrr Zhttp_exceptionsr!r"r#r$r%r&r'r(r)Zhttp_writerr*r+r,Zstreamsr-r.Ztypedefsr/Zclient_protor0�__all__r��set�	printabler9rPrQ�escaper:�compiler;�ASCIIr<r=r>r�r?�	frozensetrAr5r6rXrYr^rdr1rRr��ABCr2r3r4r�rZHttpRequestParserPyZHttpResponseParserPyZRawRequestMessagePyZRawResponseMessagePyZ_http_parserZHttpRequestParserCZHttpResponseParserCZRawRequestMessageCZRawResponseMessageC�ImportErrorrSrSrSrT�<module>s�
((,
		"�	�
\dVc
��