
    *Gjd                        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
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 d dlmZ d dlmZ dd	lmZ dd
lm Z m!Z! ddl"m#Z# ddl$m%Z%m&Z&m'Z' dZ(ee)df         Z*dj+        Z,dj+        Z-dZ. e            Z/ e0d          Z1 G d de	j2                  Z3 G d de           Z4 G d de           Z5dS )    N)defaultdict)IterableIteratorMapping)
BaseCookieMorselSimpleCookieMappingProxyType)Union)URL   ) preserve_morsel_with_coded_value)AbstractCookieJarClearCookiePredicate)is_ip_address)LooseCookiesPathLikeStrOrURL)	CookieJarDummyCookieJarzMorsel[str]z{}/{}z{1}.{0}d   )max-ageexpiresc                   r     e Zd ZU dZ eh d          Zeeeef                  ed<   dedede	f fdZ
 xZS )_RestrictedCookieUnpicklera@  A restricted unpickler that only allows cookie-related types.

    This prevents arbitrary code execution when loading pickled cookie data
    from untrusted sources. Only types that are expected in a serialized
    CookieJar are permitted.

    Subclasses :class:`pickle._Unpickler` (the pure-Python implementation)
    rather than :class:`pickle.Unpickler` because the accelerated unpickler
    on some implementations (notably PyPy) does not dispatch through
    :meth:`find_class` overrides.

    See: https://docs.python.org/3/library/pickle.html#restricting-globals
    >   builtinssetr   dictr   tupler   	frozensetcollectionsr   http.cookiesr   r)   r	   _ALLOWED_CLASSESmodulenamereturnc                     ||f| j         vrt          j        d| d| d          t                                          ||          S )NzForbidden class: .z. CookieJar.load() only allows cookie-related types for security. See https://docs.python.org/3/library/pickle.html#restricting-globals)r+   pickleUnpicklingErrorsuper
find_class)selfr,   r-   	__class__s      Y/home/rurouni/.hermes/hermes-agent/venv/lib/python3.11/site-packages/aiohttp/cookiejar.pyr4   z%_RestrictedCookieUnpickler.find_classL   sn    D>!666(XF X XT X X X  
 ww!!&$///    )__name__
__module____qualname____doc__r%   r+   r#   str__annotations__typer4   __classcell__r6   s   @r7   r   r   .   s           4=9	
 	
 	
4 4ic3h0   0 0C 0D 0 0 0 0 0 0 0 0 0 0r8   r   c                       e Zd ZdZ ej        d          Z ej        d          Z ej        d          Z ej        dej	                  Z
 ej        d          Z eej        j                            ej        j                                                            dz
  Z	  ej         ej        e                     n## e$ r  ej        d	          ZY ne$ r d
ZY nw xY wedz
  Zddddddededeee         z  dz  dej        dz  ddf
 fdZ e!defd            Z"e!defd            Z#e!de$e%e&e&f         e'f         fd            Z(e!de)e%e&e&f                  fd            Z*de+ddfdZ,de+ddfdZ-de.e&e.e&e.e&e&ez  e/z  f         f         f         ddfdZ0d8de1dz  ddfdZ2d e&ddfd!Z3d9d#Z4defd$Z5d:d%Z6d&ee%e&e&e&f                  ddfd'Z7d(e/d e&d)e&d*e&ddf
d+Z8 e9            fd,e:d-e9ddfd.Z; e9            fd/e9dd0fd1Z<d2e=e&         de=e&         fd3Z>e?d e&d4e&defd5            Z@eAd6e&dedz  fd7            ZB xZCS );r   z/Implements cookie storage adhering to RFC 6265.z][\x09\x20-\x2F\x3B-\x40\x5B-\x60\x7B-\x7E]*(?P<token>[\x00-\x08\x0A-\x1F\d:a-zA-Z\x7F-\xFF]+)z(\d{1,2}):(\d{1,2}):(\d{1,2})z	(\d{1,2})zG(jan)|(feb)|(mar)|(apr)|(may)|(jun)|(jul)|(aug)|(sep)|(oct)|(nov)|(dec)z	(\d{2,4}))tzinfor   )	i           ;   rG   rH   rH   iFTN)unsafequote_cookietreat_as_secure_originlooprI   rJ   rK   rL   r.   c                   t                                          |           t          t                    | _        t          t
                    | _        t                      | _        || _	        || _
        |g }not          |t                    r|                                g}nDt          |t                    r#t          |                                          g}nd |D             }|| _        g | _        i | _        d S )NrL   c                     g | ]L}t          |t                    r!t          |                                          n|                                MS  )
isinstancer=   r   origin).0urls     r7   
<listcomp>z&CookieJar.__init__.<locals>.<listcomp>   sT     & & & &0S%9%9KC!!!szz||& & &r8   )r3   __init__r   r	   _cookiesr!   _morsel_cacher   _host_only_cookies_unsafe_quote_cookierQ   r   rR   r=   _treat_as_secure_origin_expire_heap_expirations)r5   rI   rJ   rK   rL   r6   s        r7   rV   zCookieJar.__init__z   s    	d###DOE
 E
  	 9<)!)%'"".44 	&<&C&C&E&E%F"".44 	&)*@&A&A&H&H&J&J%K""& &1& & &" (>$FH?Ar8   c                     | j         S N)rZ   r5   s    r7   rI   zCookieJar.unsafe   s
    |r8   c                     | j         S r`   )r[   ra   s    r7   rJ   zCookieJar.quote_cookie   s    !!r8   c                 *    t          | j                  S )z&Return the cookies stored in this jar.)r   rW   ra   s    r7   cookieszCookieJar.cookies   s      ...r8   c                 *    t          | j                  S )z0Return the host-only cookies stored in this jar.)r%   rY   ra   s    r7   host_only_cookieszCookieJar.host_only_cookies   s     0111r8   	file_pathc                 8   t          j        |          }i }| j                                        D ]\  \  }}}| d| }i ||<   |                                D ]|\  }}|j        |j        |j        d}	|j        D ]}
|
t          v r||
         }|r||	|
<   ||f| j	        v rd|	d<   | j
                            |||f          x}||	d<   |	||         |<   }t          |ddd	 
          5 }t          j        ||d           ddd           dS # 1 swxY w Y   dS )zSave cookies to a file using JSON format.

        :param file_path: Path to file where cookies will be serialized,
            :class:`str` or :class:`pathlib.Path` instance.
        |keyvaluecoded_valueT	host_onlyNexpires_timestampwutf-8c                 .    t          j        | |d          S )Ni  )osopen)pathflagss     r7   <lambda>z CookieJar.save.<locals>.<lambda>   s    rwtUE'B'B r8   )modeencodingopener   )indent)pathlibPathrW   itemsrk   rl   rm   	_reserved_RELATIVE_EXPIRY_ATTRSrY   r^   getrt   jsondump)r5   rg   datadomainru   cookierk   r-   morselmorsel_dataattrattr_valexpfs                 r7   savezCookieJar.save   s    L++	DF&*m&9&9&;&; 	. 	."NVTF$$d$$CDI & . .f!:#\#)#5> > #, 5 5D555 %d|H 5,4D)D>T%<<</3K,,00&$1EFFFCS7:K 34"-S	$%.. BB	
 
 
 	)
 IdAa((((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   *DDDc                    t          j        |          }	 |                    dd          5 }t          j        |          }ddd           n# 1 swxY w Y   |                     |           dS # t          j        t          t          f$ rZ |                    d          5 }t          |                                          | _
        ddd           Y dS # 1 swxY w Y   Y dS w xY w)a  Load cookies from a file.

        Tries to load JSON format first. Falls back to loading legacy
        pickle format (using a restricted unpickler) for backward
        compatibility with existing cookie files.

        Replaces the current jar contents; loaded cookies pass through the
        same acceptance rules as :meth:`update_cookies`.

        :param file_path: Path to file from where cookies will be
            imported, :class:`str` or :class:`pathlib.Path` instance.
        rrq   )rx   ry   Nrb)rx   )r}   r~   rt   r   load_load_json_dataJSONDecodeErrorUnicodeDecodeError
ValueErrorr   rW   )r5   rg   r   r   s       r7   r   zCookieJar.load   s    L++		ES7;; $qy||$ $ $ $ $ $ $ $ $ $ $ $ $ $ $  &&&&&$&8*E 	E 	E 	ET** Ea :1 = = B B D DE E E E E E E E E E E E E E E E E E E E	EsX   A0 AA0 AA0 AA0 02C&"'C	C&C	C&C	C&%C&r   c                    |                                   |                                D ]#\  }}|                    dd          \  }}|                                D ]\  }}t                      }|                    |d         |d         |d         d           |j        D ]}	|	|v r|	dvr||	         ||	<   |                    d          rd|d	<   |rt          j        d
|          nt                      }
| 	                    ||i|
           |                    d          x}%| 
                    t          |          |||           %|                                  dS )z;Replace contents, routing cookies through update_cookies().ri   r   rk   rl   rm   rj   rn    r   https)schemehostro   N)clearr   splitr   __setstate__r   r   r   buildupdate_cookies_expire_cookiefloat_do_expiration)r5   r   compound_keycookie_datar   ru   r-   r   r   r   response_urlr   s               r7   r   zCookieJar._load_json_data   s    	

)- 	H 	H%L+'--c155LFD%0%6%6%8%8 H H!k&,hh ##*51!,W!5'2='A    #, 9 9D{**t < 0 0
 (34'8t??;// *')F8$>DOCIW6::::#%%  ##T6NLAAA&??+>???CL''c

FD$GGG9H: 	r8   	predicatec                      j                                           j                                          j                                          j                                          j                                         d S t          j                     fd j                                        D             }|r                     |           d S d S )Nc                     g | ]N\  \  }}}|                                 D ]1\  }}|||fx	j        v r	j                 k    s |          /2OS rP   )r   r^   )
rS   r   ru   r   r-   r   rk   nowr   r5   s
         r7   rU   z#CookieJar.clear.<locals>.<listcomp>  s     	
 	
 	
& &	
 	
 ft,,1BBB%c*c11y   2 
 2111r8   )	r]   r   rW   rX   rY   r^   timer   _delete_cookies)r5   r   to_delrk   r   s   `` @@r7   r   zCookieJar.clear  s    ##%%%M!!!$$&&&#))+++##%%%Fikk	
 	
 	
 	
 	
 	
 	
*.-*=*=*?*?	
 	
 	
  	)  (((((	) 	)r8   r   c                 <                            fd           d S )Nc                 <                         | d                   S )Nr   )_is_domain_match)xr   r5   s    r7   rw   z(CookieJar.clear_domain.<locals>.<lambda>-  s    T2261X;GG r8   )r   r5   r   s   ``r7   clear_domainzCookieJar.clear_domain,  s)    

GGGGGHHHHHr8   Iterator[Morsel[str]]c              #      K   |                                   | j                                        D ]}|                                E d {V  d S r`   )r   rW   values)r5   vals     r7   __iter__zCookieJar.__iter__/  sb      ='')) 	$ 	$Czz||########	$ 	$r8   c                 b    t          d | j                                        D                       S )zReturn number of cookies.

        This function does not iterate self to avoid unnecessary expiration
        checks.
        c              3   X   K   | ]%}t          |                                          V  &d S r`   )lenr   )rS   r   s     r7   	<genexpr>z$CookieJar.__len__.<locals>.<genexpr>:  s2      MMF3v}}''MMMMMMr8   )sumrW   r   ra   s    r7   __len__zCookieJar.__len__4  s/     MMdm6J6J6L6LMMMMMMr8   c                 $    t           j                  x}sdS |t          k    rL|t           j                  dz  k    r1 fd j        D              _        t	          j         j                   t          j                    }g } j        rj j        d         \  }}||k    rnSt	          j         j                    j                            |          |k    r|	                    |            j        j|r 
                    |           dS dS )zRemove expired cookies.Nr{   c                 h    g | ].}j                             |d                    |d         k    ,|/S )r   r   )r^   r   )rS   entryr5   s     r7   rU   z,CookieJar._do_expiration.<locals>.<listcomp>N  sG     ! ! !$((q22eAh>> >>>r8   r   )r   r]    _MIN_SCHEDULED_COOKIE_EXPIRATIONr^   heapqheapifyr   heappopr   appendr   )r5   expire_heap_lenr   r   when
cookie_keys   `     r7   r   zCookieJar._do_expiration<  sC   #&t'8#9#99 	F >>>#d&7"8"81"<<<! ! ! !!.! ! !D
 M$+,,,ikk-/ 
	*#03D*czzM$+,,,
  $$Z00D88j)))  
	*  	)  (((((	) 	)r8   r   c                    |D ]\  }}}| j                             ||f           | j        ||f                             |d            | j        ||f                             |d            | j                            |||fd            d S r`   )rY   discardrW   poprX   r^   )r5   r   r   ru   r-   s        r7   r   zCookieJar._delete_cookiesg  s    "( 	> 	>FD$#++VTN;;;M64.)--dD999~.224>>>!!64"6====		> 	>r8   r   ru   r-   c                     |||f}| j                             |          |k    rd S t          j        | j        ||f           || j         |<   d S r`   )r^   r   r   heappushr]   )r5   r   r   ru   r-   r   s         r7   r   zCookieJar._expire_cookien  s\    dD)
  ,,44Ft(4*<===(,*%%%r8   rd   r   c                    |j         }| j        st          |          rdS t          |t                    r|                                }|D ]&\  }}t          |t                    st                      }|||<   ||         }|d         }|r|d         dk    rd}|d= |s%|#| j        	                    ||f           |x}|d<   |r|d         dk    r|dd         }||d<   |r| 
                    ||          s|d         }|r|d         d	k    rD|j        }|                    d	          sd	}n d	|d|                    d	                   z   }||d<   |                    d	          }|d
         x}	rg	 t          |	          }
t!          t#          j                    |
z   | j                  }|                     ||||           nT# t(          $ r d|d
<   Y nCw xY w|d         x}r5|                     |          x}r|                     ||||           nd|d<   ||f}| j        |                             |          |k    r1|| j        |         |<   | j        |                             |d           (|                                  dS )zUpdate cookies.Nr   rH   r0   r   r   r   ru   /r   r   )raw_hostrZ   r   rQ   r   r   r   r	   rY   addr   ru   
startswithrfindrstripintminr   MAX_TIMEr   r   _parse_daterW   r   rX   r   r   )r5   rd   r   hostnamer-   r   tmpr   ru   max_agedelta_secondsmax_age_expirationr   expire_timerk   s                  r7   r   zCookieJar.update_cookiesv  s
   (| 	h 7 7 	Fgw'' 	&mmooG# ;	8 ;	8LD&ff-- #"nn"D	TH%F  %&*++8$ 5h2 '++Xt,<===,44) *&)s**#)x   5 5fh G G &>D &47c>>#(s++ ;DD a$**S//&9!::D!%v;;s##D ++w ++$'LLM),TY[[=-H$-)X)X&''(:FD$OOOO! + + +(*F9%%%+ #9-- +"&"2"27";";;; +''VT4HHHH(*F9%4.C}S!%%d++v55 ,2c"4("3'++D$777s   3AGGGrequest_urlBaseCookie[str]c                     t                      }| j        s|S |                                  | j        s|S t          |          t          ur;t          j        dt          |           t          d           t	          |          }|j        pd}|j	        dv}|rc| j
        r\t	                      }t          j        t                    5  |                                }ddd           n# 1 swxY w Y   || j
        v}d}| j        |                                         D ]k}|j        | j        |         v r!| j        |         |j                 ||j        <   7|                     |          }|| j        |         |j        <   |||j        <   lt'          |          r| j        s|S |f}	n:t+          j        t/          |                    d                    t2                    }	t+          j        |j                            d	          t6                    }
t+          j        |	|
          }t;          |j                  }|D ]}|| j        vr| j        |                                         D ]\  }}|d
         }||f| j        v r||k    rt;          |d                   |k    r9|r	|d         rD|| j        |         v r| j        |         |         ||<   j|                     |          }|| j        |         |<   |||<   |S )z8Returns this jar's cookies filtered by their attributes.zQfilter_cookies expects yarl.URL instances only,and will stop working in 4.x, got r{   )
stacklevelr   )r   wssN)r   r   r0   r   r   ru   secure) r   rW   r   r?   r   warningswarnDeprecationWarningr   r   r\   
contextlibsuppressr   rR   r   rk   rX   _build_morselr   rZ   	itertools
accumulatereversedr   _FORMAT_DOMAIN_REVERSEDru   _FORMAT_PATHproductr   r   rY   )r5   r   filteredr   is_not_securerequest_originrk   cmrsl_valdomainspathspairspath_lenpr-   r   r   s                    r7   filter_cookieszCookieJar.filter_cookies  s   
 %/LL} 	O} 	OC''MI59+5F5FI I"	    k**K'-2#*2BB 	OT9 	O UUN$Z00 6 6!,!3!3!5!56 6 6 6 6 6 6 6 6 6 6 6 6 6 6*$2NNM s#**,, 		' 		'Au*3///"&"4S"9!%"@ ))!,,H-5Ds#AE*&HQUOO"" 	<  &.[GG  *,,--/F G
 $[%5%;%;C%@%@,OO!'511{'(( 	* 	*A%% $a 0 6 6 8 8 * *f)D>T%<<<8ASAS vf~&&11  VH%5  4-a000%)%7%:4%@HTN  --f55.6"1%d+!)+*. s   C))C-0C-r   c                     | j         r'|j        r |j        d         dk    rt          |          S t                      }| j         r#t                              |j                  \  }}n	|j        x}}|                    |j        ||d           |S )z<Build a morsel for sending, respecting quote_cookie setting.r   "rj   )	r[   rm   r   r   _SIMPLE_COOKIEvalue_encoderl   r   rk   )r5   r   r   rl   rm   s        r7   r   zCookieJar._build_morsel  s     	<&"4 	<9KA9NRU9U9U3F;;;$hh 	/!/!<!<V\!J!JE;;"(,.K%
 	FJ{[[\\\r8   r   c                     || k    rdS |                     |           sdS |dt          |                     }|                     d          sdS t          |           S )z0Implements domain matching adhering to RFC 6265.TFNr0   )endswithr   r   )r   r   non_matchings      r7   r   zCookieJar._is_domain_match(  sq     v4  (( 	53v;;,/$$S)) 	5 ****r8   date_strc                    |sdS d}d}d}d}dx}x}}d}	d}
d}| j                             |          D ]}|                    d          }|sA| j                            |          }|r%d}d |                                D             \  }}}[|s@| j                            |          }|r$d}t          |                                          }	|s/| j                            |          }|rd}|j	        J |j	        }
|s?| j
                            |          }|r#d}t          |                                          }d|cxk    rdk    r	n n|d	z  }nd|cxk    rd
k    rn n|dz  }d||||fv rdS d|	cxk    rdk    sn dS |dk     s|dk    s|dk    s|dk    rdS t          j        ||
|	|||dddf	          S )z4Implements date string parsing adhering to RFC 6265.NFr   tokenTc              3   4   K   | ]}t          |          V  d S r`   )r   )rS   ss     r7   r   z(CookieJar._parse_date.<locals>.<genexpr>P  s(      +P+PqCFF+P+P+P+P+P+Pr8   F   c   il  E   i  r   rE   iA  rF   rG   rH   )DATE_TOKENS_REfinditergroupDATE_HMS_TIME_REmatchgroupsDATE_DAY_OF_MONTH_REr   DATE_MONTH_RE	lastindexDATE_YEAR_REcalendartimegm)clsr  
found_time	found_dayfound_month
found_yearhourminuteseconddaymonthyeartoken_matchr  
time_match	day_matchmonth_match
year_matchs                     r7   r   zCookieJar._parse_date8  sg     	4
	
!"""v-66x@@ 	3 	3K%%g..E  177>>
 !%J+P+PJ<M<M<O<O+P+P+P(D&& 4::5AA	  $Iioo//00C !/55e<< "&K&0<<<'1E 3 -33E::
 3!%Jz//1122DDLDD$____"_____DLDYZDDD4C~~~~2~~~~4$;;$))v{{frkk4eS$BPRSTTTr8   r`   r.   r   )r.   N)Dr9   r:   r;   r<   recompiler  r  r  Ir  r  r   datetimemaxreplacetimezoneutc	timestampr   r  r  r   gmtimeOSErrorOverflowErrorSUB_MAX_TIMEboolr   listasyncioAbstractEventLooprV   propertyrI   rJ   r   r#   r=   r	   rd   r%   rf   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   staticmethodr   classmethodr   r@   rA   s   @r7   r   r   V   sY       99RZ	> N
 "rz"BCC%2:l33BJQ
 M
 2:l++L
 	H!))1B1F)GGQQSSTTWXX H--.... K K K #8?#IJJ    a<L
 !CG15B B B B 	B
 !)4> 9D @B '$.B 
B B B B B BB     X "d " " " X" /)%S/<*GH / / / X/ 29U38_#= 2 2 2 X2()h ()4 () () () ()TEh E4 E E E E0$d3S#*u2D-D(E#EFFG$	$ $ $ $L) )3d: )d ) ) ) ).I3 I4 I I I I$ $ $ $
N N N N N)) )) )) ))V>d5c3+?&@ >T > > > >-5 -# -S - -PT - - - - IL H Hl H# HRV H H H HT 14 V V# V:K V V V VpF3K F3K      + + + + + + \+ =U3 =U3: =U =U =U [=U =U =U =U =Us   'C C&C&%C&r   c                   b    e Zd ZdZdddej        dz  ddf fdZddZdefd	Z	e
defd
            Ze
defd            Ze
deeeef         ef         fd            Ze
deeeef                  fd            Zddedz  ddfdZdeddfdZ e            fdededdfdZdeddfdZ xZS )r   zxImplements a dummy cookie storage.

    It can be used with the ClientSession when no cookie processing is needed.

    NrN   rL   r.   c                L    t                                          |           d S )NrN   )r3   rV   )r5   rL   r6   s     r7   rV   zDummyCookieJar.__init__  s$    d#####r8   r   c              #   
   K   d S r`   rP   ra   s    r7   r   zDummyCookieJar.__iter__  s      	 	r8   c                     dS )Nr   rP   ra   s    r7   r   zDummyCookieJar.__len__  s    qr8   c                     dS )NFrP   ra   s    r7   rI   zDummyCookieJar.unsafe  s    ur8   c                     dS )NTrP   ra   s    r7   rJ   zDummyCookieJar.quote_cookie  s    tr8   c                      t          i           S )zReturn an empty mapping.r
   ra   s    r7   rd   zDummyCookieJar.cookies  s      ###r8   c                     t                      S )zReturn an empty frozenset.)r%   ra   s    r7   rf   z DummyCookieJar.host_only_cookies  s     {{r8   r   c                     d S r`   rP   )r5   r   s     r7   r   zDummyCookieJar.clear      r8   r   c                     d S r`   rP   r   s     r7   r   zDummyCookieJar.clear_domain  rF  r8   rd   r   c                     d S r`   rP   )r5   rd   r   s      r7   r   zDummyCookieJar.update_cookies  rF  r8   r   r   c                     t                      S r`   )r	   )r5   r   s     r7   r   zDummyCookieJar.filter_cookies  s    ~~r8   r(  r`   )r9   r:   r;   r<   r8  r9  rV   r   r   r   r:  r6  rI   rJ   r   r#   r=   r	   rd   r%   rf   r   r   r   r   r   r   r   r@   rA   s   @r7   r   r   y  s         DH $ $ $ 9D @ $D $ $ $ $ $ $            X d    X $)%S/<*GH $ $ $ X$ 9U38_#=    X 3d: d    3 4     IL  l # RV    # 2C        r8   r   )6r8  r  r   r,  r   r   r   rs   r}   r1   r)  r   r   r'   r   collections.abcr   r   r   http.cookiesr   r   r	   typesr   typingr   yarlr   _cookie_helpersr   abcr   r   helpersr   typedefsr   r   r   __all__r=   
CookieItemformatr   r   r   r   r%   r   
_Unpicklerr   r   r   rP   r8   r7   <module>rW     sK                				   				   # # # # # # 7 7 7 7 7 7 7 7 7 7 9 9 9 9 9 9 9 9 9 9 " " " " " "             = = = = = = 8 8 8 8 8 8 8 8 " " " " " " 6 6 6 6 6 6 6 6 6 6
) 3%&
 ~#* 
 $'   ##9:: %0 %0 %0 %0 %0!2 %0 %0 %0P`U `U `U `U `U! `U `U `UF- - - - -& - - - - -r8   