
    yiTp                        U 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 d dlmZmZmZmZmZmZmZmZmZmZmZmZ d dlmZ d dlZd dlmZmZmZm Z m!Z! d dl"m#Z# dd	l$m%Z% dd
l&m'Z' ddl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2 ddl3m4Z4 ddl5m6Z6 ddl7m8Z8m9Z9 ddl:m;Z;m<Z< ddl=m>Z>m?Z?m@Z@mAZAmBZB ddlCmDZD ddlEmFZF dZGerddlHmIZI ddlJmKZK ddlLmMZM  ej                  ddd       G d d             ZOej                  ej                  z   dz   ZReeS   eTd<   deR dZUeeS   eTd<   d j                  d!j                  d" d# eX eYd$d%            z   D                    ZZeeS   eTd&<   d'Z[eeS   eTd(<   d)j                  eZe[*      Z\eeS   eTd+<   d,j                  eUe\-      Z]eeS   eTd.<    ej                  d/      Z_eeeS      eTd0<    ej                  e]      Z`eeeS      eTd1<    G d2 d3eeSef   e/      Za G d4 d5ea      Zby)6    N)SimpleCookie)MappingProxyType)TYPE_CHECKINGAnyDictFinalIteratorMappingMutableMappingOptionalPatternTupleUnioncast)	parse_qsl)CIMultiDictCIMultiDictProxy	MultiDictMultiDictProxyMultiMapping)URL   )hdrs)AbstractStreamWriter)
	_SENTINELDEBUGETAG_ANYLIST_QUOTED_ETAG_REChainMapProxyETagHeadersMixinparse_http_datereifysentinel)RawRequestMessage)HttpVersion)BodyPartReaderMultipartReader)EmptyStreamReaderStreamReader)DEFAULT_JSON_DECODERJSONDecoderLooseHeaders
RawHeadersStrOrURL)HTTPRequestEntityTooLarge)StreamResponse)BaseRequest	FileFieldRequest)Application)RequestHandler)UrlMappingMatchInfoT)auto_attribsfrozenslotsc                   T    e Zd ZU eed<   eed<   ej                  ed<   eed<   ded<   y)r3   namefilenamefilecontent_typezCIMultiDictProxy[str]headersN)__name__
__module____qualname__str__annotations__ioBufferedReader     N/root/polymarket_arb/.venv/lib/python3.12/site-packages/aiohttp/web_request.pyr3   r3   K   s$    
IM


$$rI   r3   z!#$%&'*+.^_`|~-_TCHAR[z]+_TOKENz[{}] c              #   2   K   | ]  }t        |        y wN)chr).0cs     rJ   	<genexpr>rT   Z   s     KSVKs   )	       !   #      _QDTEXTz
\\[\t !-~]_QUOTED_PAIRz"(?:{quoted_pair}|{qdtext})*")qdtextquoted_pair_QUOTED_STRINGz0({token})=({token}|{quoted_string})(:\d{{1,4}})?)tokenquoted_string_FORWARDED_PAIRz\\([\t !-~])_QUOTED_PAIR_REPLACE_RE_FORWARDED_PAIR_REc                      e Zd Zej                  ej
                  ej                  ej                  ej                  hZ	e
j                   eg d      z  Zdddddddededdd	ed
ddej"                  dedeeeef      dee   dee   dee   ddfdZeeeeeeeddeeef   deeef   deeef   deeef   deeef   deeef   deeef   dd fdZed[d       Zed\d       Z edeejB                     fd       Z"edefd       Z#edefd       Z$e%defd       Z&e%de'fd       Z(e%dej"                  fd        Z)d!edefd"Z*d!ed#eddfd$Z+d!eddfd%Z,defd&Z-de.e   fd'Z/e%de0fd(       Z1e%de2e3eef   d)f   fd*       Z4e%defd+       Z5e%defd,       Z6e%de7fd-       Z8e%defd.       Z9e%dee   fd/       Z:e%de'fd0       Z;e%defd1       Z<e%defd2       Z=e%defd3       Z>e%d]d4       Z?e%defd5       Z@e%d]d6       ZAe%deBfd7       ZCe%deeDj                     fd8       ZEe%deeDj                     fd9       ZFeGd:ede.eH   fd;       ZIeJd<ee   dee2eHd)f      fd=       ZKe%dee2eHd)f      fd>       ZLe%dee2eHd)f      fd?       ZMe%deeDj                     fd@       ZNe%de0fdA       ZOe%de3eef   fdB       ZPe%deQfdC       ZRe%defdD       ZSede0fdE       ZTede0fdF       ZUe%de0fdG       ZVd^dHZWdeXfdIZYdefdJZZe[dKdLe\defdMZ]de^fdNZ_d_dOZ`d`dPedQedefdRZadefdSZbdTecde0fdUZdde0fdVZedWefddfdXZgdYehddfdZZiy)ar2   )_message	_protocol_payload_writer_payload_headers_method_version_rel_url_post_read_bytes_state_cache_task_client_max_size_loop_transport_sslcontext_transport_peernamei   N)client_max_sizestateschemehostremotemessagepayloadprotocolr6   payload_writertaskasyncio.Task[None]looprv   rw   rx   ry   rz   returnc                   |i }|| _         || _        || _        || _        |j                  | _        |j                  | _        |j                  | _	        i | _
        |j                  }|j                         rW|| j                  d<   |j                  | j                  d<   |j                  | j                  d<   |j                         | _        n|j                  | _        d | _        d | _        || _        || _        || _        || _        | j                  j.                  }|J |j1                  d      | _        |j1                  d      | _        |	|	| j                  d<   |
|
| j                  d<   ||| j                  d<   y y )Nurlry   rx   
sslcontextpeernamerz   )re   rf   rg   rh   r@   ri   methodrj   versionrk   rp   r   is_absolutery   rx   relativerl   rm   rn   ro   rq   rr   rs   	transportget_extra_infort   ru   )selfr{   r|   r}   r~   r   r   rv   rw   rx   ry   rz   r   r   s                 rJ   __init__zBaseRequest.__init__   s`    =E!-~~&(kk?? "%DKK"%((DKK$'JJDKK!LLNDM#KKDMMQ
,0
 /
NN,,	$$$%.%=%=l%K"#,#;#;J#G $*DKK!"&DKK$*DKK! rI   r   rel_urlr@   rx   ry   rz   rv   r   r   r@   c                   | j                   rt        d      i }|t        ur||d<   |t        urt        |      }	|	|d<   t	        |	      |d<   |t        ur:t        t        |            |d<   t        d |j                         D              |d<    | j                  j                  di |}
i }|t        ur||d<   |t        ur||d	<   |t        ur||d
<   |t        u r| j                  } | j                  |
| j                  | j                  | j                  | j                   | j"                  f|| j$                  j'                         d|S )a  Clone itself with replacement some attributes.

        Creates and returns a new instance of Request object. If no parameters
        are given, an exact copy is returned. If a parameter is not passed, it
        will reuse the one from the current request object.
        z.Cannot clone request after reading its contentr   r   pathr@   c              3   f   K   | ])  \  }}|j                  d       |j                  d       f + yw)utf-8N)encode)rR   kvs      rJ   rT   z$BaseRequest.clone.<locals>.<genexpr>   s0      ';?1a'"AHHW$56's   /1raw_headersrx   ry   rz   )rv   rw   rH   )rn   RuntimeErrorr$   r   rD   r   r   tupleitemsre   _replacerr   	__class__rh   rf   rg   rq   rs   ro   copy)r   r   r   r@   rx   ry   rz   rv   dctnew_urlr{   kwargss               rJ   clonezBaseRequest.clone   sZ   " RSS !"CM("w<G CJg,CK("-k'.BCC	N!& 'CJ==?' "C )$--((/3/!%F8x!F6N!%F8h&"33Ot~~MMNN  JJJJ

 ,++""$

 

 
	
rI   c                     | j                   S rP   )rq   r   s    rJ   r   zBaseRequest.task  s    zzrI   c                     | j                   S rP   )rf   r   s    rJ   r}   zBaseRequest.protocol  s    ~~rI   c                 H    | j                   y | j                   j                  S rP   )rf   r   r   s    rJ   r   zBaseRequest.transport  s    >>!~~'''rI   c                     | j                   S rP   )rg   r   s    rJ   writerzBaseRequest.writer  s    ###rI   c                     | j                   S rP   )rr   r   s    rJ   rv   zBaseRequest.client_max_size  s    $$$rI   c                 R    t        j                  dt        d       | j                  S )NzRequest.message is deprecated   
stacklevel)warningswarnDeprecationWarningre   r   s    rJ   r{   zBaseRequest.message  s    57IVWX}}rI   c                     | j                   S rP   )rl   r   s    rJ   r   zBaseRequest.rel_url#  s    }}rI   c                 R    t        j                  dt        d       | j                  S )Nz#request.loop property is deprecated   r   )r   r   r   rs   r   s    rJ   r   zBaseRequest.loop'  s#    13ERS	
 zzrI   keyc                      | j                   |   S rP   ro   r   r   s     rJ   __getitem__zBaseRequest.__getitem__0  s    {{3rI   valuec                 "    || j                   |<   y rP   r   )r   r   r   s      rJ   __setitem__zBaseRequest.__setitem__3  s     CrI   c                     | j                   |= y rP   r   r   s     rJ   __delitem__zBaseRequest.__delitem__6  s    KKrI   c                 ,    t        | j                        S rP   )lenro   r   s    rJ   __len__zBaseRequest.__len__9  s    4;;rI   c                 ,    t        | j                        S rP   )iterro   r   s    rJ   __iter__zBaseRequest.__iter__<  s    DKK  rI   c                      | j                   dk(  S )z5A bool indicating if the request is handled with SSL.https)rx   r   s    rJ   securezBaseRequest.secureA  s     {{g%%rI   .c                 <   g }| j                   j                  j                  t        j                  d      D ]X  }t        |      }d}d}i }|j                  t        j                  |             d|cxk  r|k  sEn Ht        j                  ||      }||r|j                  d|      }n|j                         \  }}	}
|	d   dk(  rt        j                  d|	dd       }	|
r|	|
z  }	|	||j                         <   |t        |j!                  d            z  }d	}ne||   dk(  r.d}i }|j                  t        j                  |             |dz  }n/||   d
k(  rd}|dz  }n||   dv r|dz  }n|j                  d|      }d|cxk  r|k  rX [ t#        |      S )a  A tuple containing all parsed Forwarded header(s).

        Makes an effort to parse Forwarded headers as specified by RFC 7239:

        - It adds one (immutable) dictionary per Forwarded 'field-value', ie
          per proxy. The element corresponds to the data in the Forwarded
          field-value added by the first proxy encountered by the client. Each
          subsequent item corresponds to those added by later proxies.
        - It checks that every value has valid syntax in general as specified
          in section 4: either a 'token' or a 'quoted-string'.
        - It un-escapes found escape sequences.
        - It does NOT validate 'by' and 'for' contents as specified in section
          6.
        - It does NOT validate 'host' contents (Host ABNF).
        - It does NOT validate 'proto' contents for valid URI scheme names.

        Returns a tuple containing one or more immutable dicts
        rH   r   F,"z\1r   T;z 	)re   r@   getallr   	FORWARDEDr   appendtypesr   rc   matchfindgroupsrb   sublowergroupr   )r   elemsfield_valuelengthposneed_separatorelemr   r<   r   ports              rJ   	forwardedzBaseRequest.forwardedF  s   ( ==0077K %	5K%FC"N#%DLL//56s#V#*00cB$%)..sC8,1LLN)eT 8s?$;$?$?uQr{$SE!TME-2TZZ\*s5;;q>22)- %,%*NDLL!7!7!=>1HC %,%*N1HC %. 1HC &**34C? s#V##%	5L U|rI   c                     | j                   ryy)a  A string representing the scheme of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(scheme=new_scheme) call.
        - type of connection to peer: HTTPS if socket is SSL, HTTP otherwise.

        'http' or 'https'.
        r   http)rt   r   s    rJ   rx   zBaseRequest.scheme  s     %%rI   c                     | j                   S )zyRead only property for getting HTTP method.

        The value is upper-cased str like 'GET', 'POST', 'PUT' etc.
        )rj   r   s    rJ   r   zBaseRequest.method  s     ||rI   c                     | j                   S )zxRead only property for getting HTTP version of request.

        Returns aiohttp.protocol.HttpVersion instance.
        )rk   r   s    rJ   r   zBaseRequest.version  s     }}rI   c                     | j                   j                  j                  t        j                        }||S t        j                         S )zHostname of the request.

        Hostname is resolved in this order:

        - overridden value by .clone(host=new_host) call.
        - HOST HTTP header
        - socket.getfqdn() value
        )re   r@   getr   HOSTsocketgetfqdn)r   ry   s     rJ   ry   zBaseRequest.host  s:     }}$$((3K~~rI   c                     | j                   yt        | j                   t        t        f      rt	        | j                   d         S t	        | j                         S )zRemote IP of client initiated HTTP request.

        The IP is resolved in this order:

        - overridden value by .clone(remote=new_remote) call.
        - peername of opened socket
        Nr   )ru   
isinstancelistr   rD   r   s    rJ   rz   zBaseRequest.remote  sN     ##+d..u>t//2334++,,rI   c                     t        j                  | j                  | j                        }|j	                  | j
                        S )N)rx   ry   )r   buildrx   ry   joinrl   )r   r   s     rJ   r   zBaseRequest.url  s-    iit{{;xx&&rI   c                 .    | j                   j                  S )z_The URL including *PATH INFO* without the host or scheme.

        E.g., ``/app/blog``
        )rl   r   r   s    rJ   r   zBaseRequest.path  s     }}!!!rI   c                 ,    t        | j                        S )zXThe URL including PATH_INFO and the query string.

        E.g, /app/blog?id=10
        )rD   rl   r   s    rJ   path_qszBaseRequest.path_qs  s     4==!!rI   c                 .    | j                   j                  S )zThe URL including raw *PATH INFO* without the host or scheme.

        Warning, the path is unquoted and may contains non valid URL characters

        E.g., ``/my%2Fpath%7Cwith%21some%25strange%24characters``
        )re   r   r   s    rJ   raw_pathzBaseRequest.raw_path  s     }}!!!rI   c                 @    t        | j                  j                        S )z7A multidict with all the variables in the query string.)r   rl   queryr   s    rJ   r   zBaseRequest.query  s     dmm1122rI   c                 .    | j                   j                  S )z:The query string in the URL.

        E.g., id=10
        )rl   query_stringr   s    rJ   r   zBaseRequest.query_string  s     }})))rI   c                     | j                   S )z4A case-insensitive multidict proxy with all headers.)ri   r   s    rJ   r@   zBaseRequest.headers       }}rI   c                 .    | j                   j                  S )z$A sequence of pairs for all headers.)re   r   r   s    rJ   r   zBaseRequest.raw_headers  s     }}(((rI   c                 f    t        | j                  j                  t        j                              S )zyThe value of If-Modified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   r   r   IF_MODIFIED_SINCEr   s    rJ   if_modified_sincezBaseRequest.if_modified_since  s$     t||//0F0FGHHrI   c                 f    t        | j                  j                  t        j                              S )z{The value of If-Unmodified-Since HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   r   r   IF_UNMODIFIED_SINCEr   s    rJ   if_unmodified_sincezBaseRequest.if_unmodified_since  s$     t||//0H0HIJJrI   etag_headerc              #      K   | t         k(  rt        dt                yt        j                  |       D ]5  }|j	                  ddd      \  }}}|r yt        t        |      |       7 yw)z'Extract `ETag` objects from raw header.F)is_weakr   r   r      N)r   r    r   finditerr   bool)r   r   r  r   garbages        rJ   _etag_valueszBaseRequest._etag_values  sw      (" 
 -55kB 
*/++aA*>'  M 
s   A,A.header_valuec                 <    |sy t        | j                  |            S rP   )r   r  )clsr  s     rJ   _if_match_or_none_implz"BaseRequest._if_match_or_none_impl  s      S%%l344rI   c                 r    | j                  | j                  j                  t        j                              S )zxThe value of If-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r
  r@   r   r   IF_MATCHr   s    rJ   if_matchzBaseRequest.if_match%  s(     **4<<+;+;DMM+JKKrI   c                 r    | j                  | j                  j                  t        j                              S )z}The value of If-None-Match HTTP header, or None.

        This header is represented as a `tuple` of `ETag` objects.
        )r
  r@   r   r   IF_NONE_MATCHr   s    rJ   if_none_matchzBaseRequest.if_none_match-  s*     **4<<+;+;D<N<N+OPPrI   c                 f    t        | j                  j                  t        j                              S )zpThe value of If-Range HTTP header, or None.

        This header is represented as a `datetime` object.
        )r"   r@   r   r   IF_RANGEr   s    rJ   if_rangezBaseRequest.if_range5  s"     t||//>??rI   c                 0    | j                   j                   S )zIs keepalive enabled by client?)re   should_closer   s    rJ   
keep_alivezBaseRequest.keep_alive=  s     ==----rI   c                     | j                   j                  t        j                  d      }t	        |      }t        |j                         D ci c]  \  }}||j                   c}}      S c c}}w )zMReturn request cookies.

        A read-only dictionary-like object.
        rN   )r@   r   r   COOKIEr   r   r   r   )r   rawparsedr   vals        rJ   cookieszBaseRequest.cookiesB  sS     llt{{B/c" OHCcii OPP Os   A-
c                    | j                   j                  t        j                        }d\  }}|r	 d}t	        j
                  ||      d   \  }}|rt        |      nd}|rt        |      nd}||| }d}|||dz  }||k\  rt        d      ||cxu rt        d       t        ||d      S # t        $ r t        d      w xY w)	zMThe content of Range HTTP header.

        Return a slice instance.

        )NNNz^bytes=(\d*)-(\d*)$r   zrange not in acceptable formatr   zstart cannot be after endz"No start or end of range specified)
ri   r   r   RANGErefindall
IndexError
ValueErrorintslice)r   rngstartendpatterns        rJ   
http_rangezBaseRequest.http_rangeL  s     mm

+
s?C0ZZ5a8
s "#c(tC"'CJTE} S_qC<$%@AA# !EFF $ UC##+  C !ABBCs   B0 0Cc                     | j                   S )zReturn raw payload stream.)rh   r   s    rJ   contentzBaseRequest.contentp  r   rI   c                 p    t        j                  dt        d       | j                  j	                          S )@Return True if request's HTTP BODY can be read, False otherwise.z$Deprecated, use .can_read_body #2005r   r   )r   r   r   rh   at_eofr   s    rJ   has_bodyzBaseRequest.has_bodyu  s1     	24FST	
 =='')))rI   c                 8    | j                   j                          S )r-  )rh   r.  r   s    rJ   can_read_bodyzBaseRequest.can_read_body}  s     =='')))rI   c                 8    t        | j                        t        uS )z6Return True if request has HTTP BODY, False otherwise.)typerh   r)   r   s    rJ   body_existszBaseRequest.body_exists  s     DMM"*;;;rI   c                    K   | j                   j                         s>| j                   j                          d{    | j                   j                         s=yy7 !w)zKRelease request.

        Eat unread part of HTTP BODY if present.
        N)rh   r.  readanyr   s    rJ   releasezBaseRequest.release  sC     
 --&&(--''))) --&&()s   8AAAAc                 \  K   | j                   t               }	 | j                  j                          d{   }|j	                  |       | j
                  r1t        |      }|| j
                  k\  rt        | j
                  |      |sntt        |      | _         | j                   S 7 rw)z_Read request body if present.

        Returns bytes object with full request content.
        Nmax_sizeactual_size)	rn   	bytearrayrh   r6  extendrr   r   r0   bytes)r   bodychunk	body_sizes       rJ   readzBaseRequest.read  s     
 #;D"mm3355E"(( #D	I D$9$997%)%:%:	     %T{D 6s   5B,B*A3B,c                    K   | j                          d{   }| j                  xs d}|j                  |      S 7 %w)z1Return BODY as text using encoding from .charset.Nr   )rB  charsetdecode)r   
bytes_bodyencodings      rJ   textzBaseRequest.text  s8     99;&
<<*7  ** 's   ><&>)loadsrI  c                N   K   | j                          d{   } ||      S 7 w)zReturn BODY as JSON.N)rH  )r   rI  r?  s      rJ   jsonzBaseRequest.json  s#     YY[ T{ !s   %#%c                 J   K   t        | j                  | j                        S w)z3Return async iterator to process BODY as multipart.)r(   ri   rh   r   s    rJ   	multipartzBaseRequest.multipart  s     t}}dmm<<s   !#c                 z  K   | j                   | j                   S | j                  | j                  vr$t        t	                     | _         | j                   S | j
                  }|dvr$t        t	                     | _         | j                   S t	               }|dk(  r| j                          d{   }| j                  }|j                          d{   }|d}|j                  j                  t        j                        }t        |t              r|j                  J |j                   rt#        j$                         }|j'                  d       d{   }	|	rx|j)                  |	      }	|j+                  |	       |t-        |	      z  }d|cxk  r|k  r n n|j/                          t1        ||      |j'                  d       d{   }	|	rx|j3                  d       |d}t5        |j                  |j                   t7        t8        j:                  |      ||j                        }
|j=                  |j                  |
       n|j?                  d	
       d{   }||jA                  d      r>|jC                  d      }|j=                  |j                  |j)                  |             n|j=                  |j                  |       |t-        |      z  }d|cxk  r|k  rn nt1        ||      tE        d      |j                          d{   }|Mnd| j?                          d{   }|rJ| jF                  xs d}|jI                  tK        |jM                         j)                  |      d	|             t        |      | _         | j                   S 7 7 7 T7 7 O7 7 }w)zReturn POST parameters.N)rN   z!application/x-www-form-urlencodedmultipart/form-datarO  r   i   )sizer9  zapplication/octet-streamT)rE  ztext/r   )defaultz8To decode nested multipart you need to use custom reader)keep_blank_valuesrG  )'rm   rj   POST_METHODSr   r   r?   rM  rr   nextr@   r   r   CONTENT_TYPEr   r'   r<   r=   tempfileTemporaryFile
read_chunkrE  writer   closer0   seekr3   r   rF   rG   addrB  
startswithget_charsetr"  rD  r=  r   rstrip)r   r?   outrM  r:  fieldrP  field_cttmpr@  ffr   rD  datas                 rJ   postzBaseRequest.post  s<    ::!::<<t000'	4DJ::((  
 

 (	4DJ::7@{00"nn..I,,H#..**E# ==,,T->->?e^4 ::111 ~~&446&+&6&6E&6&B B#$)LL$7EIIe, CJ.D 82d2 #		&?-54'" !" +0*:*:*:*F$FE $ #+'AH&!JJ!NN !2!2C8$!MM 

B/ ',jjj&= =#+x/B/B7/K&+&7&7&7&HGGGEJJW0EFGGEJJ6E
*x.$.";)1t#  %U  (nn..q #t $D,,1'

,,W5*.!( $C(
zzU / + !C %G  !>  /$s   B,N;.N(/#N;N+BN;N.A6N;N1N;BN;%N4&B8N;N7N;'N;;N9<A-N;+N;.N;1N;4N;7N;9N;r<   rQ  c                 f    | j                   }||S |j                  }||S |j                  ||      S )z"Extra info from protocol transport)rf   r   r   )r   r<   rQ  r}   r   s        rJ   r   zBaseRequest.get_extra_info  s?    >>N&&	N''g66rI   c                     | j                   j                  dd      j                  d      }dj                  | j                  j
                  | j                  |      S )Nasciibackslashreplacez<{} {} {} >)r   r   rE  formatr   rA   rj   )r   ascii_encodable_paths     rJ   __repr__zBaseRequest.__repr__  sS    #yy//9KLSS 
 ##NN##T\\3G
 	
rI   otherc                 0    t        |       t        |      k(  S rP   )id)r   rn  s     rJ   __eq__zBaseRequest.__eq__'  s    $x2e9$$rI   c                      y)NTrH   r   s    rJ   __bool__zBaseRequest.__bool__*  s    rI   responsec                    K   y wrP   rH   )r   rt  s     rJ   _prepare_hookzBaseRequest._prepare_hook-  s	     s   excc                 :    | j                   j                  |       y rP   )rh   set_exception)r   rw  s     rJ   _cancelzBaseRequest._cancel0  s    ##C(rI   )r   r   )r   r6   )r   zMultiMapping[str])r   N)r   z,MultiDictProxy[Union[str, bytes, FileField]]rP   )jrA   rB   rC   r   
METH_PATCH	METH_POSTMETH_PUT
METH_TRACEMETH_DELETErS  r!   ATTRS	frozensetr%   r*   r   asyncioAbstractEventLoopr#  r   r   rD   r   r   r$   r   r   r/   r-   r   propertyr   r}   	Transportr   r   rv   r#   r{   r   r   r   r   r   r   r   r	   r   r  r   r   r
   r   rx   r   r&   r   ry   rz   r   r   r   r   r   r   r@   r.   r   datetimer   r   staticmethodr    r  classmethodr
  r  r  r  r  r  r$  r)  r+  r/  r1  r4  r7  r>  rB  rH  r+   r,   rK  r(   rM  rf  r   rm  objectrq  rs  r1   rv  BaseExceptionrz  rH   rI   rJ   r2   r2   u   s-    	L 	
" E>  '*. $" $7+"7+ 7+ #	7+
 -7+ #7+ ''7+ 7+ S#X'7+ 7+ sm7+ 7+ 
7+x )1.62:(0&.(0198
 c9n%8
 x*+	8

 |Y./8
 c9n%8
 CN#8
 c9n%8
 sI~.8
 
8
t     (8G$5$56 ( (
 $, $ $ % % % *      g//   s  s  !s !3 !4 !s t    !(3- !
 & & & :5c!2C!78 : :x           c     - - - 'S ' ' "c " " " " " "# " " 3 3 *c * *   )Z ) ) I8H,=,=#> I I KXh.?.?%@ K K # (4.  ( 5#C=5	%c	"	#5 5 L(5s#34 L L QxdCi(89 Q Q @(8#4#45 @ @ .D . . Qc* Q Q !$E !$ !$F    *$ * * *t * * <T < <* E  *+C + 2F ; # 
= =^@
73 
7 
7 
7
# 
%F %t %$ N t )= )T )rI   r2   c                   B    e Zd Zej                   edg      z  Zdededdf fdZerde	deddf fd	Z
eeeeeeed
dee	ef   deeef   deeef   dee	ef   dee	ef   dee	ef   deeef   dd f fdZedd       Zedd       Zedefd       ZdeddfdZ xZS )r4   _match_infoargsr   r   Nc                 2    t        |   |i | d | _        y rP   )superr   r  )r   r  r   r   s      rJ   r   zRequest.__init__8  s    $)&) ;?rI   r<   r  c                     || j                   vr@t        j                  dj                  | j                  j
                  |      t        d       t        | !  ||       y )Nz-Setting custom {}.{} attribute is discouragedr   r   )	r  r   r   rk  r   rA   r   r  __setattr__)r   r<   r  r   s      rJ   r  zRequest.__setattr__C  sM    4::%%%+VDNN,C,CT%J& 	 Gc*rI   r   r   r   r@   rx   ry   rz   rv   c          	      v    t         
|   |||||||      }t        t        |      }	| j                  |	_        |	S )Nr   )r  r   r   r4   r  )r   r   r   r@   rx   ry   rz   rv   retnew_retr   s             rJ   r   zRequest.cloneM  sN     gm+  
 w$"..rI   c                 &    | j                   }|J |S )zResult of route resolving.)r  r   
match_infos     rJ   r  zRequest.match_infoe  s!     %%
%%%rI   c                 :    | j                   }|J |j                  S )zApplication instance.)r  current_appr  s     rJ   appzRequest.appl  s'     %%
%%%%%%rI   c                     | j                   }|J |j                  }| j                  }|j                  |      }t	        t        |d |dz                }t        |      S )Nr   )r  appsr  indexr   reversedr   )r   r  lstr  idxsublists         rJ   config_dictzRequest.config_dicts  s\    %%
%%%oohhiinxIcAg/0W%%rI   rt  c                    K   | j                   }|y |j                  D ]&  }|j                  j                  | |       d {    ( y 7 wrP   )r  _appson_response_preparesend)r   rt  r  r  s       rJ   rv  zRequest._prepare_hook}  sN     %%
## 	?C))..tX>>>	?>s   >A
 AA
)r   r7   )r   r5   )rA   rB   rC   r2   r  r  r   r   r   rD   r  r$   r   r   r/   r-   r#  r   r#   r  r  r  r   r  r1   rv  __classcell__)r   s   @rJ   r4   r4   4  sV   	=/ ::E?c ?S ?T ? 	+C 	+c 	+d 	+ )1.62:(0&.(019 c9n% x*+	
 |Y./ c9n% CN# c9n% sI~. 
0   & & &] & &?N ?t ?rI   r4   )cr  r  rF   r  r   stringrV  r   r   http.cookiesr   r   typingr   r   r   r   r	   r
   r   r   r   r   r   r   urllib.parser   attr	multidictr   r   r   r   r   yarlr   rN   r   abcr   helpersr   r   r   r   r   r    r!   r"   r#   r$   http_parserr%   http_writerr&   rM  r'   r(   streamsr)   r*   typedefsr+   r,   r-   r.   r/   web_exceptionsr0   web_responser1   __all__web_appr5   web_protocolr6   web_urldispatcherr7   sr3   digitsascii_lettersrK   rD   rE   rM   rk  r   r   rangerZ   r[   r^   ra   compilerb   rc   r2   r4   rH   rI   rJ   <module>r     s	     	 	      % "    #     %   + $ 6 4  6 (
1 $,6 T$d3% % 4% ]]V%9%99<NNc
 N &_c
 $nnHHK/%dD8I2JJKKs  )eCj (=DD E c
  8>>
 ?    0:rzz//J ws|, J +5"**_*E E'#,' E|
).c*L |
)~N?k N?rI   