
    z%i~.                    h   	 g d 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Zdad ZdZdZ eej*                  j,                        Z ej0                  d      Zd	Zd
Zd ZdZd Zg dZg dZ e D  cg c]  } | jC                          c} Z"dJdZ#dJdZ$dddddZ% ej0                  dejL                        Z'd Z(d Z) ej0                  dejL                        Z* ej0                  dejV                  ejL                  z        Z, ej0                  dejZ                  ejL                  z        Z.d Z/ ej0                  dejZ                  ejL                  z        Z0d Z1d Z2 ej0                  d      Z3 ej0                  d      Z4 ej0                  d      Z5 ej0                  d       Z6d! Z7 ej0                  d"      Z8d# Z9d$ Z:d% Z; ej0                  d&ejL                        Z<d' Z=d( Z>d) Z?d* Z@ ej0                  d+ejL                        ZAd, ZBd- ZCd. ZDd/ ZEd0ZF ej0                  d1      ZGd2 ZHd3 ZId4 ZJd5 ZK G d6 d7      ZL G d8 d9      ZM G d: d;eM      ZNd< ZO G d= d>      ZP G d? d@      ZQ G dA dBeR      ZS G dC dDeQ      ZTdE ZU G dF dGeT      ZV G dH dIeT      ZWyc c} w )K)Cookie	CookieJarCookiePolicyDefaultCookiePolicyFileCookieJarLWPCookieJar	LoadErrorMozillaCookieJar    N)timegmFc                  j    t         sy t        sdd l}|j                  d      at        j                   |  S )Nr
   zhttp.cookiejar)debugloggerlogging	getLogger)argsr   s     B/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/http/cookiejar.py_debugr   ,   s.    ""#34<<    HTTPOnlyz
#HttpOnly_z#( Netscape)? HTTP Cookie FilezQa filename was not supplied (nor was the CookieJar instance initialised with one)zr# Netscape HTTP Cookie File
# http://curl.haxx.se/rfc/cookie_spec.html
# This is a generated file!  Do not edit.

c                      dd l } dd l}dd l}| j                         }|j	                  d |       |j                         }|j                  d|z  d       y )Nr
   zhttp.cookiejar bug!
%s   )
stacklevel)iowarnings	tracebackStringIO	print_excgetvaluewarn)r   r   r   fmsgs        r   _warn_unhandled_exceptionr"   B   sF     #"
Aa 
**,CMM+c1aM@r   i  c                     | d d \  }}}}}}|t         k\  rPd|cxk  rdk  rEn y d|cxk  rdk  r7n y d|cxk  rdk  r)n y d|cxk  rdk  rn y d|cxk  rdk  rt        |       S  y y )	N            r
      ;   =   )
EPOCH_YEARr   )ttyearmonthmdayhourminsecs          r   _timegmr3   Q   s    (*2A%D%tS#		!u"2"2 	 :;db  
db   !C~2~  56NNbz 5C r   )MonTueWedThuFriSatSun)JanFebMarAprMayJunJulAugSepOctNovDecc                 R   	 | /t         j                   j                  t         j                        }n/t         j                   j                  | t         j                        }d|j                  |j
                  |j                  |j                  |j                  |j                  fz  S )Ntzz%04d-%02d-%02d %02d:%02d:%02dZ)
datetimenowUTCfromtimestampr-   r.   dayr0   minutesecondtdts     r   	time2isozrT   ^   s    
 	y""hll"3,,Q8<<,@+
266277BIIryy/B B Br   c                    	 | /t         j                   j                  t         j                        }n/t         j                   j                  | t         j                        }dt        |j                            |j                  t        |j                  dz
     |j                  |j                  |j                  |j                  fz  S )NrH   z#%s, %02d-%s-%04d %02d:%02d:%02d GMTr%   )rJ   rK   rL   rM   DAYSweekdayrN   MONTHSr.   r-   r0   rO   rP   rQ   s     r   time2netscaperY   q   s    	 	y""hll"3,,Q8<<,@0RZZ\BFFF288A:$6
"))RYY40 0 0r   )GMTrL   UTZz^([-+])?(\d\d?):?(\d\d)?$c                    d }| t         v rd}|S t        j                  |       }|redt        |j	                  d            z  }|j	                  d      r |dt        |j	                  d            z  z   }|j	                  d      dk(  r| }|S )Nr
   i  r      <   r%   -)	UTC_ZONESTIMEZONE_REsearchintgroup)rI   offsetms      r   offset_from_tz_stringrh      s    F	Y M r"C
O+Fwwqz"s1771:"66wwqzS  Mr   c           	         t        |      }|t        j                  kD  ry 	 t        j	                  |j                               dz   }|d}|d}|d}t        |       } t        |      }t        |      }t        |      }|dk  r\t        j                  t        j                               d   }|dz  }	|}
||z   |	z
  }|	|
z
  }	t        |	      dkD  r|	dkD  r|dz   }n|dz
  }t        ||| ||||f      }|'|d}|j                         }t        |      }|y ||z
  }|S # t        $ r5 	 t        |      }n# t        $ r Y Y y w xY wd|cxk  rdk  rn Y y |}nY y Y w xY w)Nr%   r&   r
   i  d   2   rL   )rd   rJ   MAXYEARMONTHS_LOWERindexlower
ValueErrortime	localtimeabsr3   upperrh   )rN   monyrhrr1   r2   rI   imoncur_yrrg   tmprR   rf   s                r   	_str2timer{      s   	RB	H  -a/ 
z2
{!C
{!C
c(C	RB
c(C
c(C	Dy		,Q/SL&[1_Gq6B;1u28bCx" 	S#r3R01A}:BXXZ&r*>JH[  		s8D 		??  C 	s;   &D 	E'D32E3	E <E?E  EEEzV^[SMTWF][a-z][a-z], (\d\d) ([JFMASOND][a-z][a-z]) (\d\d\d\d) (\d\d):(\d\d):(\d\d) GMT$z+^(?:Sun|Mon|Tue|Wed|Thu|Fri|Sat)[a-z]*,?\s*a  ^
    (\d\d?)            # day
       (?:\s+|[-\/])
    (\w+)              # month
        (?:\s+|[-\/])
    (\d+)              # year
    (?:
          (?:\s+|:)    # separator before clock
       (\d\d?):(\d\d)  # hour:min
       (?::(\d\d))?    # optional seconds
    )?                 # optional clock
       \s*
    (?:
       ([-+]?\d{2,4}|(?![APap][Mm]\b)[A-Za-z]+) # timezone
       \s*
    )?
    (?:
       \(\w+\)         # ASCII representation of timezone in parens.
       \s*
    )?$c           	      0   	 t         j                  |       }|r|j                         }t        j	                  |d   j                               dz   }t        |d         |t        |d         t        |d         t        |d         t        |d         f}t        |      S | j                         } t        j                  d| d      } d gdz  \  }}}}}}	}
t        j                  |       }||j                         \  }}}}}}	}
ny t        ||||||	|
      S )	Nr%   r   r
   r^             )STRICT_DATE_RErc   groupsrm   rn   ro   rd   floatr3   lstrip
WEEKDAY_REsubLOOSE_HTTP_DATE_REr{   )textrg   gru   r,   rN   rv   rw   r1   r2   rI   s              r   	http2timer      s   : 	d#AHHJ  1.2!A$ic!A$i!A$iQqTE!A$K1r{
 ;;=D>>"dA&D '+VAX"Cb"c3 	!!$'A})*&S"b#sBS#r2sC44r   a  ^
    (\d{4})              # year
       [-\/]?
    (\d\d?)              # numerical month
       [-\/]?
    (\d\d?)              # day
   (?:
         (?:\s+|[-:Tt])  # separator before clock
      (\d\d?):?(\d\d)    # hour:min
      (?::?(\d\d(?:\.\d*)?))?  # optional seconds (and fractional)
   )?                    # optional clock
      \s*
   (?:
      ([-+]?\d\d?:?(:?\d\d)?
       |Z|z)             # timezone  (Z is "zero meridian", i.e. GMT)
      \s*
   )?$c           	          	 | j                         } d gdz  \  }}}}}}}t        j                  |       }||j                         \  }}}}}}}}	ny t	        |||||||      S )Nr   )r   ISO_DATE_RErc   r   r{   )
r   rN   ru   rv   rw   r1   r2   rI   rg   _s
             r   iso2timer   2  s    
 ;;=D '+VAX"Cb"c3 	4 A} -.HHJ)Cb#sBS#r2sC44r   c                 j    	 | j                  d      \  }}| j                  d | | j                  |d  z   S )Nr
   )spanstring)matchstartends      r   	unmatchedr   S  s7    3AJE3<<ST 222r   z^\s*([^=\s;,]+)z&^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"z^\s*=\s*([^\s;,]*)z\\(.)c                    	 g }| D ]^  }|}g }|r?t         j                  |      }|rt        |      }|j                  d      }t        j                  |      }|r3t        |      }|j                  d      }t
        j                  d|      }nFt        j                  |      }|r-t        |      }|j                  d      }|j                         }nd }|j                  ||f       nd|j                         j                  d      r)|j                         dd  }|r|j                  |       g }nt        j                  dd|      \  }}	|}|r?|sN|j                  |       a |S )Nr%   z\1,z^[=\s;]*r   )HEADER_TOKEN_RErc   r   re   HEADER_QUOTED_VALUE_REHEADER_ESCAPE_REr   HEADER_VALUE_RErstripappendr   
startswithresubn)
header_valuesresultr   	orig_textpairsrg   namevaluenon_junknr_junk_charss
             r   split_header_wordsr   \  sR   +Z F #'	&&t,A |wwqz*11$7$Q<DGGAJE,00>E'..t4A(| !
 % !%dE]+))#.{{}QR(&--. +-''+r4*H'-  ? @ &--&G#'H Mr   ([\"\\])c                 ,   	 g }| D ]|  }g }|D ]P  \  }}|8t        j                  d|      st        j                  d|      }d|z  }|d|}|j	                  |       R |s]|j	                  dj                  |             ~ dj                  |      S )Nz^\w+$\\\1z"%s"=; , )r   rc   HEADER_JOIN_ESCAPE_REr   r   join)listsheadersr   attrkvs         r   join_header_wordsr     s    
 G 	1 	DAq}yy1--11'1=A
A !$KKN	 		$0	1 99Wr   c                 ^    | j                  d      r| dd  } | j                  d      r| d d } | S )N"r%   )r   endswithr   s    r   strip_quotesr     s5    sABx}}SCRyKr   c                    	 d}g }| D ]  }g }d}t        |j                  d            D ]  \  }}|j                         }|j                  d      \  }}	}
|j                         }|s|dk(  r nuE|	r|
j                         nd }
|dk7  rF|j	                         }||v r|}|dk(  r|
t        |
      }
d}n|dk(  r|
t        t        |
            }
|j                  ||
f        |s|s|j                  d	       |j                  |        |S )
N)expiresdomainpathsecureversionportmax-ageF;r   r
   r   Tr   )r   0)	enumeratesplitstrip	partitionro   r   r   r   )
ns_headersknown_attrsr   	ns_headerr   version_setiiparamkeysepvallcs               r   parse_ns_headersr     s.   1K F +!	 #9??3#78 	%IBKKME!OOC0MCc))+C7 "%#))+$CQwYY[$C)#*3/"&KI%'S(9:LL#s$=	%@ -.MM% W+!Z Mr   z\.\d+$c                 `    	 t         j                  |       ry| dk(  ry| d   dk(  s| d   dk(  ryy)NFr   r
   .r   TIPV4_RErc   r   s    r   is_HDNr     s;    4 ~~drzAw#~bSr   c                     	 | j                         } |j                         }| |k(  ryt        |       sy| j                  |      }|dk(  s|dk(  ry|j                  d      syt        |dd        syy)NTFr   r
   r   r%   )ro   r   rfindr   )ABis      r   domain_matchr   &  sr    , 	
	A		AAv!9	
ABw!q&<<!AB%=r   c                 2    	 t         j                  |       ryyNFTr   r   s    r   liberal_is_HDNr   M  s    
 ~~dr   c                     	 | j                         } |j                         }t        |       rt        |      s| |k(  ryy|j                  d      }|r| j                  |      ry|s| |k(  ryy)NTFr   )ro   r   r   r   )r   r   initial_dots      r   user_domain_matchr   W  sh    
 	
	A		A1."36,,s#Kqzz!}16r   z:\d+$c                     	 | j                         }t        j                  j                  |      d   }|dk(  r| j	                  dd      }t
        j                  d|d      }|j                         S )Nr%   r   Host)get_full_urlurllibparseurlparse
get_headercut_port_rer   ro   )requesturlhosts      r   request_hostr   l  si     


 C<<  %a(Drz!!&"- ??2tQ'D::<r   c                 8    	 t        |       x}}d|vr|dz   }||fS )Nr   .local)r   )r   erhnreq_hosts      r   eff_request_hostr   |  s4    
 #7++D8
(("T>r   c                     	 | j                         }t        j                  j                  |      }t	        |j
                        }|j                  d      sd|z   }|S )N/)r   r   r   urlsplitescape_pathr   r   )r   r   partsr   s       r   request_pathr     sO    @



 CLL!!#&Euzz"D??3TzKr   c                     | j                   }|j                  d      }|dk\  r||dz   d  }	 t        |       |S t
        }|S # t        $ r t	        d|       Y y w xY w)N:r
   r%   znonnumeric port: '%s')r   findrd   rp   r   DEFAULT_HTTP_PORT)r   r   r   r   s       r   request_portr    sl    <<D		#AAvAaCDz	I K !K  	*D1	s   A AAz%/;:@&=+$,!~*'()z%([0-9a-fA-F][0-9a-fA-F])c                 F    d| j                  d      j                         z  S )Nz%%%sr%   )re   rt   )r   s    r   uppercase_escaped_charr    s    EKKN((***r   c                     	 t         j                  j                  | t              } t        j                  t        |       } | S N)r   r   quoteHTTP_PATH_SAFEESCAPED_CHAR_REr   r  )r   s    r   r   r     s5    O <<dN3D5t<DKr   c                     	 | j                  d      }|dk\  r3| |dz   d  }|j                  d      }t        |       r|dk\  s|dk(  rd|z   S | S )Nr   r
   r%   local)r  r   )hr   bs      r   reachr    sZ    2 	
sAAvacdGFF3K!9!q&ALq5LHr   c                 \    	 t        |       }t        |t        | j                              syyNTF)r   r   r  origin_req_host)r   r   s     r   is_third_partyr    s.     G$H%(?(?"@Ar   c                   @    e Zd Z	 	 d	dZd Zd
dZd Zd
dZd Zd Z	y)r   c                    |t        |      }|t        t        |            }||du rt        d      || _        || _        || _        || _        || _        |j                         | _	        || _
        || _        |	| _        |
| _        || _        || _        || _        || _        || _        || _        t)        j(                  |      | _        y )NTz-if port is None, port_specified must be false)rd   r   rp   r   r   r   r   port_specifiedro   r   domain_specifieddomain_initial_dotr   path_specifiedr   r   discardcommentcomment_urlrfc2109copy_rest)selfr   r   r   r   r  r   r  r  r   r  r   r   r  r  r  restr  s                     r   __init__zCookie.__init__  s     #g,#eGn*=<Nd2LMM	
	,lln 0
 #5	,&YYt_
r   c                     || j                   v S r  r  )r   r   s     r   has_nonstandard_attrzCookie.has_nonstandard_attr#  s    tzz!!r   Nc                 :    | j                   j                  ||      S r  )r  get)r   r   defaults      r   get_nonstandard_attrzCookie.get_nonstandard_attr%  s    zz~~dG,,r   c                 "    || j                   |<   y r  r$  )r   r   r   s      r   set_nonstandard_attrzCookie.set_nonstandard_attr'  s     

4r   c                 h    |t        j                          }| j                  | j                  |k  ryyr  )rq   r   )r   rK   s     r   
is_expiredzCookie.is_expired*  s,    ;diikLL$4<<3+>r   c                     | j                   d}nd| j                   z   }| j                  |z   | j                  z   }| j                  | j                  d| j                  }n| j                  }d|d|dS )Nr   r   r   z<Cookie z for >)r   r   r   r   r   )r   plimit	namevalues       r   __str__zCookie.__str__0  sd    99"adii-aa$))+::!#'99djj9I		I'0%88r   c                 \   g }dD ]-  }t        | |      }|j                  |dt        |             / |j                  dt        | j                        z         |j                  dt        | j                        z         | j
                  j                  ddj                  |      dS )N)r   r   r   r   r  r   r  r  r   r  r   r   r  r  r  r   zrest=%sz
rfc2109=%s(r   ))getattrr   reprr  r  	__class____name__r   )r   r   r   r   s       r   __repr__zCookie.__repr__:  s     	6D 4&DKK4d45	6 	ITZZ 001L4#556>>22DIIdODDr   )Fr  )
r:  
__module____qualname__r"  r%  r)  r+  r-  r3  r;   r   r   r   r     s1    6 (%T"-!9Er   r   c                   &    e Zd Z	 d Zd Zd Zd Zy)r   c                     	 t               r  NotImplementedErrorr   cookier   s      r   set_okzCookiePolicy.set_okR  s    	 "##r   c                     	 t               r  rA  rC  s      r   	return_okzCookiePolicy.return_ok[  s    O!##r   c                      	 yNTr>  )r   r   r   s      r   domain_return_okzCookiePolicy.domain_return_ok_  
    	r   c                      	 yrI  r>  )r   r   r   s      r   path_return_okzCookiePolicy.path_return_okd  rK  r   N)r:  r<  r=  rE  rG  rJ  rM  r>  r   r   r   r   I  s    $$
r   r   c                       e Zd Z	 dZdZdZdZeez  Zdddddddddedddfd	Zd
 Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zy) r   r%   r   r}   r
   NTF)httpswssc                     	 || _         || _        || _        || _        || _        || _        |	| _        |
| _        || _        || _	        || _
        |t        |      | _        nd| _        |t        |      }|| _        y )Nr>  )netscaperfc2965rfc2109_as_netscapehide_cookie2strict_domainstrict_rfc2965_unverifiablestrict_ns_unverifiablestrict_ns_domainstrict_ns_set_initial_dollarstrict_ns_set_pathsecure_protocolstuple_blocked_domains_allowed_domains)r   blocked_domainsallowed_domainsrR  rS  rT  rU  rV  rW  rX  rY  rZ  r[  r\  s                 r   r"  zDefaultCookiePolicy.__init__t  s     	P #6 (*+F(&<# 0,H)"4 0&$)/$:D!$&D!&#O4O /r   c                     	 | j                   S r  )r^  r   s    r   r`  z#DefaultCookiePolicy.blocked_domains  s    B$$$r   c                 &    	 t        |      | _        y r  )r]  r^  )r   r`  s     r   set_blocked_domainsz'DefaultCookiePolicy.set_blocked_domains  s    2 %o 6r   c                 B    | j                   D ]  }t        ||      s y yr  )r^  r   )r   r   blocked_domains      r   
is_blockedzDefaultCookiePolicy.is_blocked  s)    "33 	N 8	 r   c                     	 | j                   S r  )r_  rc  s    r   ra  z#DefaultCookiePolicy.allowed_domains  s    K$$$r   c                 .    	 |t        |      }|| _        y r  )r]  r_  )r   ra  s     r   set_allowed_domainsz'DefaultCookiePolicy.set_allowed_domains  s    ;&#O4O /r   c                 \    | j                   y| j                   D ]  }t        ||      s y yr   )r_  r   )r   r   allowed_domains      r   is_not_allowedz"DefaultCookiePolicy.is_not_allowed  s8      ("33 	N 8	 r   c                     	 t        d|j                  |j                         dD ]  }d|z   }t        | |      } |||      r y y)N - checking cookie %s=%s)r   verifiabilityr   r   r   r   set_ok_FTr   r   r   r7  r   rD  r   nfn_namefns         r   rE  zDefaultCookiePolicy.set_ok  sW    	 	)6;;E N 	AkGw'Bfg&		 r   c                     |j                   "t        d|j                  |j                         y|j                   dkD  r| j                  st        d       y|j                   dk(  r| j
                  st        d       yy)Nz0   Set-Cookie2 without version attribute (%s=%s)Fr
   $   RFC 2965 cookies are switched off$   Netscape cookies are switched offT)r   r   r   r   rS  rR  rC  s      r   set_ok_versionz"DefaultCookiePolicy.set_ok_version  sh    >>! E;;.>>Adll9:^^q 9:r   c                     |j                   rYt        |      rN|j                  dkD  r| j                  rt	        d       y|j                  dk(  r| j
                  rt	        d       yyNr
   z>   third-party RFC 2965 cookie during unverifiable transactionFz>   third-party Netscape cookie during unverifiable transactionTunverifiabler  r   rW  r   rX  rC  s      r   set_ok_verifiabilityz(DefaultCookiePolicy.set_ok_verifiability  s]    N7$;~~!d&F&F 8 91$)D)D 8 9r   c                     |j                   dk(  r>| j                  r2|j                  j                  d      rt	        d|j                         yy)Nr
   $z'   illegal name (starts with '$'): '%s'FT)r   rZ  r   r   r   rC  s      r   set_ok_namezDefaultCookiePolicy.set_ok_name  s?     NNaD$E$EKK""3'<fkkJr   c                     |j                   rit        |      }|j                  dkD  s|j                  dk(  r@| j                  r4| j	                  |j
                  |      st        d|j
                  |       yy)Nr
   z7   path attribute %s is not a prefix of request path %sFT)r  r   r   r[  rM  r   r   )r   rD  r   req_paths       r   set_ok_pathzDefaultCookiePolicy.set_ok_path  se      #G,H!#..A%$*A*A''W= !"(++x9r   c                    | j                  |j                        rt        d|j                         y| j                  |j                        rt        d|j                         y|j                  rt        |      \  }}|j                  }| j                  rz|j                  d      dk\  rf|j                  d      }|j                  dd|      }|dk(  r=||dz   d  }||dz   | }	|	j                         dv rt        |      dk(  rt        d	|       y|j                  d      r|dd  }
n|}
|
j                  d      dk\  }|s|j                  d
      st        d|       y|j                  dk(  rX|j                  |      sG|j                  |
 d
      s3|j                  d      s"d|z   j                  |      st        d||       y|j                  dkD  s| j                  | j                   z  rt#        ||      st        d||       y|j                  dkD  s| j                  | j$                  z  rF|d t        |        }|j                  d      dk\  r#t&        j)                  |      st        d||       yy)N"   domain %s is in user block-listF&   domain %s is not in user allow-listr   r   r
   r%   )coaccomeduorgnetgovmilrd   aerobizcatcoopinfojobsmobimuseumr   protraveleuz&   country-code second level domain %sr   z/   non-local domain %s contains no embedded dotzO   effective request-host %s (even with added initial dot) does not end with %sz5   effective request-host %s does not domain-match %sz.   host prefix %s for domain %s contains a dotT)rh  r   r   rn  r  r   rV  countr   ro   lenr   r  r   r   rY  DomainRFC2965Matchr   DomainStrictNoDotsr   rc   )r   rD  r   r   r   r   r   jtldsldundotted_domainembedded_dotshost_prefixs                r   set_ok_domainz!DefaultCookiePolicy.set_ok_domain  sO   ??6==)7Gv}}-;V]]K""-g6NHd]]F!!v||C'8A'= LL%LLa+6 1,C 1Q-Cyy{ '' ' ,/s8q=GP$  %"(*"(,11#6!;M x)@H~~"v./):&'AB-d(,,V4 ?) !"&&)@)@@#D&1  !%v/ "&&)@)@@&}V5$$S)Q.x0K&0 r   c                     |j                   rft        |      }|d}nt        |      }|j                  j	                  d      D ]  }	 t        |       ||k(  s y t        d||j                         yy# t        $ r t        d|       Y  yw xY w)N80r   z   bad port %s (not numeric)Fz$   request port (%s) not found in %sT)r  r  strr   r   rd   rp   r   r   rD  r   req_portr0  s        r   set_ok_portzDefaultCookiePolicy.set_ok_port3  s      #G,Hx=[[&&s+ !F =
  =. " !91= !s   A44BBc                     	 t        d|j                  |j                         dD ]  }d|z   }t        | |      } |||      r y y)Nrp  )r   rq  r   r   r   r   
return_ok_FTrs  rt  s         r   rG  zDefaultCookiePolicy.return_okH  sT    	 	)6;;ER 	A"1nGw'Bfg&		
 r   c                     |j                   dkD  r| j                  st        d       y|j                   dk(  r| j                  st        d       yy)Nr
   ry  Frz  T)r   rS  r   rR  rC  s      r   return_ok_versionz%DefaultCookiePolicy.return_ok_versionZ  sA    >>Adll9:^^q 9:r   c                     |j                   rYt        |      rN|j                  dkD  r| j                  rt	        d       y|j                  dk(  r| j
                  rt	        d       yyr}  r~  rC  s      r   return_ok_verifiabilityz+DefaultCookiePolicy.return_ok_verifiabilityc  s]    N7$;~~!d&F&F % &1$)D)D % &r   c                 d    |j                   r$|j                  | j                  vrt        d       yy)Nz(   secure cookie with non-secure requestFT)r   typer\  r   rC  s      r   return_ok_securez$DefaultCookiePolicy.return_ok_secureo  s)    ==W\\1F1FF=>r   c                 R    |j                  | j                        rt        d       yy)Nz   cookie expiredFT)r-  _nowr   rC  s      r   return_ok_expiresz%DefaultCookiePolicy.return_ok_expiresu  s#    TYY'&'r   c                     |j                   rNt        |      }|d}|j                   j                  d      D ]	  }||k(  s	 y t        d||j                          yy)Nr  r   z0   request port %s does not match cookie port %sFT)r   r  r   r   r  s        r   return_ok_portz"DefaultCookiePolicy.return_ok_port{  sg    ;;#G,H[[&&s+ =
  I.r   c                    t        |      \  }}|j                  }|r|j                  d      sd|z   }n|}|j                  dk(  r6| j                  | j
                  z  r|j                  s||k7  rt        d       y|j                  dkD  rt        ||      st        d||       y|j                  dk(  r"d|z   j                  |      st        d||       yy)Nr   r
   zQ   cookie with unspecified domain does not string-compare equal to request domainFzQ   effective request-host name %s does not domain-match RFC 2965 cookie domain %sz;   request-host %s does not match Netscape cookie domain %sT)
r   r   r   r   rY  DomainStrictNonDomainr  r   r   r   )r   rD  r   r   r   r   	dotdomains          r   return_ok_domainz$DefaultCookiePolicy.return_ok_domain  s    )'2$&++C0fII NNa""T%?%??''FdN - .>>Al4&@ /04f>>>QD':':9'E !6+r   c                 l   t        |      \  }}|j                  d      sd|z   }|j                  d      sd|z   }|r|j                  d      sd|z   }n|}|j                  |      s|j                  |      sy| j                  |      rt	        d|       y| j                  |      rt	        d|       yy)Nr   Fr  r  T)r   r   r   rh  r   rn  )r   r   r   r   r   r  s         r   rJ  z$DefaultCookiePolicy.domain_return_ok  s     *'2$""3'8|Hs#t8D&++C0fII!!),i0H ??6"7@v&;VDr   c                     t        d|       t        |      }t        |      }||k(  ry|j                  |      r|j	                  d      s|||dz    dk(  ryt        d||       y)Nz- checking cookie path=%sTr   r%   z  %s does not path-match %sF)r   r   r  r   r   )r   r   r   r  pathlens        r   rM  z"DefaultCookiePolicy.path_return_ok  sj    *D1(d)t!!$'}}S!Xggai%@C%G,h=r   )r:  r<  r=  r  r  r  DomainLiberalDomainStrictr"  r`  re  rh  ra  rk  rn  rE  r{  r  r  r  r  r  rG  r  r  r  r  r  r  rJ  rM  r>  r   r   r   r   j  s    LM%&;;L "&t%)#$-1(-"/.3$)"2!0F%7%0&
	:x*$
64r   r   c              #      K   	 t        | j                               D ]-  }d} 	 |j                   d} t        |      E d {    | r*| / y 7 # t        $ r Y w xY wwr   )listvaluesitems
deepvaluesAttributeError)mappingobjs     r   r  r    si     3GNN$% 
	'II G!#&&I
 '	  		s8    AAAA AA	AAAAc                       e Zd Zy)AbsentNr:  r<  r=  r>  r   r   r  r        r   r  c                   ~   e Zd Z	  ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z ej                  d      Z	 ej                  dej                        ZddZd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd ZddZd Zd Zd Zd Zd Zd Z y)r   z\Wr   z\.?[^.]*z[^.]*z^\.+z^\#LWP-Cookies-(\d+\.\d+)Nc                 j    |
t               }|| _        t        j                         | _        i | _        y r  )r   _policy
_threadingRLock_cookies_lock_cookiesr   policys     r   r"  zCookieJar.__init__  s.    >(*F'--/r   c                     || _         y r  )r  r  s     r   
set_policyzCookieJar.set_policy  s	    r   c                    g }| j                   j                  ||      sg S t        d|       | j                  |   }|j	                         D ]}  }| j                   j                  ||      s ||   }|j                         D ]F  }| j                   j                  ||      st        d       +t        d       |j                  |       H  |S )Nz!Checking %s for cookies to returnz   not returning cookiez   it's a match)	r  rJ  r   r  keysrM  r  rG  r   )r   r   r   cookiescookies_by_pathr   cookies_by_namerD  s           r   _cookies_for_domainzCookieJar._cookies_for_domain  s    ||,,VW=I2F;--/#((* 		'D<<..tW=-d3O)002 '||--fg>45()v&'			' r   c                     	 g }| j                   j                         D ]#  }|j                  | j                  ||             % |S r  )r  r  extendr  )r   r   r  r   s       r   _cookies_for_requestzCookieJar._cookies_for_request
  sF    @mm((* 	FFNN433FGDE	Fr   c                    	 |j                  d d       d}g }|D ]  }|j                  }|sd}|dkD  r|j                  d|z         |j                  Q| j                  j                  |j                        r,|dkD  r'| j                  j                  d|j                        }n|j                  }|j                  |j                  |j                         n |j                  |j                  d|       |dkD  s|j                  r|j                  d	|j                  z         |j                  j                  d
      rB|j                  }|j                  s|j                  d
      r|dd  }|j                  d|z         |j                  yd}|j                  r|d|j                  z  z   }|j                  |        |S )Nc                 ,    t        | j                        S r  )r  r   )as    r   <lambda>z)CookieJar._cookie_attrs.<locals>.<lambda>  s    3qvv; r   T)r   reverseFr
   z$Version=%sr   r   z
$Path="%s"r   r%   z$Domain="%s"z$Portz="%s")sortr   r   r   non_word_rerc   quote_rer   r   r  r   r   r   r  r   r  )	r   r  r   attrsrD  r   r   r   r0  s	            r   _cookie_attrszCookieJar._cookie_attrs  s   	 	.= (	$F nnG"Q;LL!89
 )  ''5'A+))'6<<@ ||#V[[)U;<{((LL!;<==++C0#]]F"55))#.!'LL&!89;;*A,,6;;!67LLOQ(	$T r   c                    	 t        d       | j                  j                          	 t        t	        j                               x| j
                  _        | _        | j                  |      }| j                  |      }|r2|j                  d      s!|j                  ddj                  |             | j
                  j                  rQ| j
                  j                  s;|j                  d      s*|D ]%  }|j                  dk7  s|j                  dd        n | j                  j                          | j!                          y # | j                  j                          w xY w)Nadd_cookie_headerr   r   Cookie2r%   z$Version="1")r   r  acquirerd   rq   r  r  r  r  
has_headeradd_unredirected_headerr   rS  rU  r   releaseclear_expired_cookies)r   r   r  r  rD  s        r   r  zCookieJar.add_cookie_headerL  s!   	
 	"#""$	),/		,<<DLL	//8G&&w/E))(333 $))E"24 $$T\\-F-F&&y1% F~~*77	>R &&(""$ &&(s   CE E Ec                 *   	 g }d}d}|D ]  }|d   \  }}d}d}	i }
i }|dd  D ]  \  }}|j                         }||v s||v r|}||v r|d}||
v r-|dk(  r!|t        d       d}	 nw|j                         }|d	k(  r|r[|t        d
       i|dk(  rd}	 t        |      }d	}| j                  |z   }||v s||v r||dvrt        d|z         d}	 n||
|<   |||<    |	r|j                  |||
|f        |S # t        $ r t        d       d}	Y  5w xY w)N)r  r   )r   r   r   r   r   r   r  
commenturlr
   Fr%   Tr   z%   missing value for domain attributer   zM   missing or invalid value for expires attribute: treating as session cookier   z?   missing or invalid (non-numeric) value for max-age attribute)r   r  r  z!   missing value for %s attribute)ro   r   rd   rp   r  r   )r   	attrs_setcookie_tuplesboolean_attrsvalue_attrscookie_attrsr   r   max_age_set
bad_cookiestandardr!  r   r   r   s                  r   _normalized_cookie_tuplesz#CookieJar._normalized_cookie_tuplesm  s   	 +0
 & H	@L&q/KD%  KJHD$QR( 2 1WWY$m(;A%!) A==yFG%)
	A	>" y  F G 	>"&KF "A		AA$!}*<	!BBBQFG%)
"#HQKDGe2 h   $x!>?QH	@T 5 &   2 3%)
	s   C88DDc                 R   |\  }}}}|j                  dt              }|j                  dt              }|j                  dt              }	|j                  dt              }
|j                  dd       }|	 t        |      }|j                  dd      }|j                  dd      }|j                  d	d       }|j                  d
d       }|t        ur|dk7  rd}t	        |      }nFd}t        |      }|j                  d      }|dk7  r|dk(  r|d | }n|d |dz    }t        |      dk(  rd}|t        u}d}|rt        |j                  d            }|t        u rt        |      \  }}|}n|j                  d      sd|z   }d}|	t        ur(|	t        |      }	nd}t        j                  dd|	      }	nd }	|
t        u rd }
d}n2|
| j                  k  r#	 | j                  |||       t#        d|||       y t%        ||||	||||||||
||||      S # t        $ r Y y w xY w# t         $ r Y Cw xY w)Nr   r   r   r   r   r   Fr  r  r  r   Tr   r   r
   r%   r   z\s+z2Expiring cookie, domain='%s', path='%s', name='%s')r'  r  rd   rp   r   r   r   r  boolr   r   r  r   r   r  clearKeyErrorr   r   )r   tupr   r   r   r   r!  r   r   r   r   r   r   r  r  r  r  r   r  r  r   r   r  s                          r   _cookie_from_cookie_tuplez#CookieJar._cookie_from_cookie_tuple  sv    '*#eXth/||FF+||FF+,,y&1 ,,y$/g, h.,,y%0,,y$/ll<6 v$"*!Nt$D"N(D

3ABwa<8D1:D4yA~ct "/"!%f&7&7&<!=V-g6NHdF""3'ZF v| $G,!%vvfb$/ D fGG		!

64. G4'gEN.0BN!
 
	C  v  s$   5H H 	HH	H&%H&c                     | j                  |      }g }|D ](  }| j                  ||      }|s|j                  |       * |S r  )r  r  r   )r   r  r   r  r  r  rD  s          r   _cookies_from_attrs_setz!CookieJar._cookies_from_attrs_set*  sM    66yA  	.C33CAFw~~f-	. r   c                     t        | j                  dd       }|| j                  j                   }|D ]#  }|j                  dk(  sd|_        |sd|_        % y )NrT  r%   Tr
   )r7  r  rS  r   r  )r   r  rfc2109_as_nsrD  s       r   _process_rfc2109_cookiesz"CookieJar._process_rfc2109_cookies3  s[    .CTJ  $ 4 44M 	'F~~"!%  &'FN	'r   c                    	 |j                         }|j                  dg       }|j                  dg       }t        t        j                               x| j                  _        | _        | j                  j                  }| j                  j                  }|s|r|s|r|s|r|s|sg S 	 | j                  t        |      |      }|r|r	 | j                  t        |      |      }	| j                  |	       |r@i }
|D ](  }d |
|j                  |j                  |j                   f<   * |
fd}t#        ||	      }	|	r|j%                  |	       |S # t        $ r t                g }Y w xY w# t        $ r t                g }	Y w xY w)NzSet-Cookie2z
Set-Cookiec                 P    | j                   | j                  | j                  f}||vS r  )r   r   r   )	ns_cookielookupr   s      r   no_matching_rfc2965z3CookieJar.make_cookies.<locals>.no_matching_rfc2965l  s'    #**INNINNJCf,,r   )r  get_allrd   rq   r  r  rS  rR  r	  r   	Exceptionr"   r   r  r   r   r   filterr  )r   responser   r   rfc2965_hdrsns_hdrsrS  rR  r  
ns_cookiesr  rD  r  s                r   make_cookieszCookieJar.make_cookies?  sx   O--/}b9//,3(+DIIK(88DI,,&&<<((gh'I	22"<0';G x !99$W-w8

 ))*5 % MFHLFFMM6;;DEM ;A - $$7D
z*C  	%'G	   )+
 s$   (E E& E#"E#&E>=E>c                 n   	 | j                   j                          	 t        t        j                               x| j                  _        | _        | j                  j                  ||      r| j                  |       | j                   j                          y # | j                   j                          w xY wr  )	r  r  rd   rq   r  r  rE  
set_cookier  rC  s      r   set_cookie_if_okzCookieJar.set_cookie_if_okv  s    ;""$	),/		,<<DLL	||""673' &&(D&&(s   A B B4c                    	 | j                   }| j                  j                          	 |j                  |vri ||j                  <   ||j                     }|j                  |vri ||j                  <   ||j                     }|||j
                  <   | j                  j                          y # | j                  j                          w xY wr  )r  r  r  r   r   r   r  )r   rD  cc2c3s        r   r  zCookieJar.set_cookie  s    MMM""$	)}}A%"q'76==!B{{"$boFKKB$Bv{{O&&(D&&(s   A'B+ +Cc                    	 t        d|j                                | j                  j                          	 | j	                  ||      D ]<  }| j
                  j                  ||      s t        d|       | j                  |       > 	 | j                  j                          y # | j                  j                          w xY w)Nzextract_cookies: %sz setting cookie: %s)	r   r  r  r  r  r  rE  r  r  )r   r  r   rD  s       r   extract_cookieszCookieJar.extract_cookies  s    O$hmmo6""$	)++Hg> ,<<&&vw70&9OOF+,
 &&(D&&(s   1B$ )B$ $C c                     	 |#||t        d      | j                  |   |   |= y ||t        d      | j                  |   |= y || j                  |= y i | _        y )Nz8domain and path must be given to remove a cookie by namez.domain must be given to remove cookies by path)rp   r  )r   r   r   r   s       r   r  zCookieJar.clear  s    
	 DL NP Pf%d+D1~ DF Ff%d+f%DMr   c                 :   	 | j                   j                          	 | D ]@  }|j                  s| j                  |j                  |j
                  |j                         B 	 | j                   j                          y # | j                   j                          w xY wr  )r  r  r  r  r   r   r   r  )r   rD  s     r   clear_session_cookieszCookieJar.clear_session_cookies  s{    	 	""$	) H>>JJv}}fkk6;;GH &&(D&&(s   A> 3A> >Bc                 l   	 | j                   j                          	 t        j                         }| D ]E  }|j                  |      s| j	                  |j
                  |j                  |j                         G 	 | j                   j                          y # | j                   j                          w xY wr  )	r  r  rq   r-  r  r   r   r   r  )r   rK   rD  s      r   r  zCookieJar.clear_expired_cookies  s    	 	""$	)))+C H$$S)JJv}}fkk6;;GH &&(D&&(s   *B 3B B3c                 ,    t        | j                        S r  )r  r  rc  s    r   __iter__zCookieJar.__iter__  s    $--((r   c                 $    	 d}| D ]  }|dz   }	 |S )Nr
   r%   r>  )r   r   rD  s      r   __len__zCookieJar.__len__  s"    1%FAA%r   c                     g }| D ]  }|j                  t        |              d| j                  j                  ddj	                  |      dS N<[r   z]>)r   r8  r9  r:  r   r   rrD  s      r   r;  zCookieJar.__repr__  s>    2FAHHT&\22!^^44diilCCr   c                     g }| D ]  }|j                  t        |              d| j                  j                  ddj	                  |      dS r,  )r   r  r9  r:  r   r/  s      r   r3  zCookieJar.__str__  s>    1FAHHS[11!^^44diilCCr   r  )NNN)!r:  r<  r=  r   compiler  r  strict_domain_re	domain_redots_reASCIImagic_rer"  r  r  r  r  r  r  r  r	  r  r  r  r  r"  r  r%  r  r(  r*  r;  r3  r>  r   r   r   r     s     "**U#Krzz+&H!rzz+.

8$Ibjj!Grzz6AH$9v%B_BZx
'5n))
)6))&)D
Dr   r   c                       e Zd Zy)r   Nr  r>  r   r   r   r     r  r   r   c                   2    e Zd Z	 ddZddZddZ	 	 ddZy)r   Nc                     	 t         j                  | |       |t        j                  |      }|| _        t        |      | _        y r  )r   r"  osfspathfilenamer  	delayload)r   r=  r>  r  s       r   r"  zFileCookieJar.__init__  s?    	
 	4(yy*H ir   c                     	 t               r  rA  )r   r=  ignore_discardignore_expiress       r   savezFileCookieJar.save  s    %!##r   c                     	 |(| j                   | j                   }nt        t              t        |      5 }| j	                  ||||       d d d        y # 1 sw Y   y xY wr  )r=  rp   MISSING_FILENAME_TEXTopen_really_loadr   r=  r@  rA  r    s        r   loadzFileCookieJar.load  s_    '}}(T]]("#899(^ 	Kqa>>J	K 	K 	Ks   AAc                    	 |(| j                   | j                   }nt        t              | j                  j	                          	 t        j                  | j                        }i | _        	 | j                  |||       	 | j                  j                          y # t        $ r	 || _         w xY w# | j                  j                          w xY wr  )r=  rp   rD  r  r  r  deepcopyr  rH  OSErrorr  )r   r=  r@  rA  	old_states        r   revertzFileCookieJar.revert  s    	 }}(T]]("#899""$	)dmm4IDM		(NNC &&(   )
 &&(s   &B2 .B B//B2 2C)NFNNFF)r:  r<  r=  r"  rB  rH  rM  r>  r   r   r   r     s"    @
)$K #49)r   r   c                    	 | j                   | j                  fd| j                  fd| j                  fg}| j                  |j                  d| j                  f       | j                  r|j                  d       | j                  r|j                  d       | j                  r|j                  d       | j                  r|j                  d       | j                  r/|j                  dt        t        | j                              f       | j                  r|j                  d	       | j                  r|j                  d
| j                  f       | j                  r|j                  d| j                  f       t!        | j"                  j%                               }|D ]+  }|j                  |t'        | j"                  |         f       - |j                  dt'        | j(                        f       t+        |g      S )Nr   r   r   )	path_specN)	port_specN)
domain_dotN)r   Nr   )r  Nr  r  r   )r   r   r   r   r   r   r  r  r  r   r   rT   r   r  r  r  sortedr  r  r  r   r   )rD  r  r  r   s       r   lwp_cookie_strrT  '  s   
 ++v||	$
&++	
FMM	"	$A {{&&++)> ?ahh':;ahh':;  !((+?"@}}ahh/0~~qxx(v~~)>?!A B~~qxx 12~~qxxFNN ;<188\63E3E$FG&,,##%&D ,	!Sa)*+, HHiV^^,-.aS!!r   c                   $    e Zd Z	 ddZddZd Zy)r   c                     	 t        j                          }g }| D ]B  }|s|j                  r|s|j                  |      r&|j                  dt	        |      z         D dj                  |dgz         S )NzSet-Cookie3: %s
r   )rq   r  r-  r   rT  r   )r   r@  rA  rK   r0  rD  s         r   
as_lwp_strzLWPCookieJar.as_lwp_strP  sw    	
 iik 	AF!fnn!f&7&7&<HH&)??@	A yyB4  r   Nc                    |(| j                   | j                   }nt        t              t        j                  t        j
                  |t        j                  t        j                  z  t        j                  z  d      d      5 }|j                  d       |j                  | j                  ||             d d d        y # 1 sw Y   y xY w)N  wz#LWP-Cookies-2.0
)r=  rp   rD  r;  fdopenrE  O_CREATO_WRONLYO_TRUNCwriterX  rG  s        r   rB  zLWPCookieJar.save`  s    }}(T]]("#899YYGGHbjj2;;6CUK
 	E  GG()GGDOONNCD	E 	E 	Es   3CCc                 J   |j                         }| j                  j                  |      sd|z  }t        |      t	        j                         }d}d}	d}
	 |j                         x}dk7  r|j                  |      s(|t        |      d  j                         }t        |g      D ]0  }|d   \  }}i }i }|	D ]  }d||<   	 |dd  D ]A  \  }}||j                         }nd }||
v s||	v r|}||	v r
|d	}|||<   3||
v r|||<   =|||<   C |j                  } |d
      } |d      }|t        |      }|d	} |d      }|j                  d      }t         |d      || |d       |d      || |d       |d       |d       |d      || |d       |d      |      }|s|j                  r|s|j                  |      r | j                  |       3 |j                         x}dk7  ry y # t         $ r  t"        $ r t%                t        d|d      w xY w)Nz5%r does not look like a Set-Cookie3 (LWP) format filezSet-Cookie3:)rQ  rP  rR  r   r  )r   r   r   r   r   r  r  r   r
   Fr%   Tr   r  r   r   r   r   rQ  rR  r   rP  r   r  r  z invalid Set-Cookie3 format file : )readliner7  rc   r   rq   r   r  r   r   ro   r'  r   r   r  r-  r  rK  r  r"   )r   r    r=  r@  rA  magicr!   rK   headerr  r  linedatar   r   r   r!  r   r   r   r  r   r  r   r  r  s                             r   rF  zLWPCookieJar._really_loado  su   

}}##E*$%CC. iik.0
9	.::<'4B.v.CKL)//1.v6 -'D"&q'KD%!HD* ,&+, $QR (1=!"B!%B+-23F "A- yd!*+HQK+-*+HQK&'DG(  !A	lG	lG*"*7"3"&x[F'-'8'8'=$q|T5 y!K.%'7< y!K. {&& | #	%A *aii )all3.? OOA&[-' ::<'4B.f  	 	.%'%t- . .	.s   FG4 4.H")TTrN  )r:  r<  r=  rX  rB  rF  r>  r   r   r   r   C  s    
! EJ.r   r   c                       e Zd Z	 d ZddZy)r	   c                 t   t        j                          }t        j                  |j                               st	        d|z        	 |j                         x}dk7  r+i }|j                  t              rd|t        <   |t        t              d  }|j                  d      r|d d }|j                         j                  d      s|j                         dk(  r|j                  d      \  }}	}
}}}}|dk(  }|	dk(  }	|dk(  r|}d }|j                  d      }d	}|dk(  rd }d
}t        d||d d	||	||
d	|||d d |      }|s|j                  r|s|j                  |      r| j                  |       |j                         x}dk7  r*y y # t         $ r  t"        $ r t%                t	        d|d      w xY w)Nz4%r does not look like a Netscape format cookies filer   rW  r   )#r  	TRUEr   FTr
   z%invalid Netscape format cookies file rb  )rq   NETSCAPE_MAGIC_RGXr   rc  r   r   HTTPONLY_PREFIXHTTPONLY_ATTRr  r   r   r   r   r  r-  r  rK  r  r"   )r   r    r=  r@  rA  rK   rf  r!  r   r  r   r   r   r   r   r   r  r  s                     r   rF  zMozillaCookieJar._really_load  s   iik!''

5F <	.::<'4B.
 ???3*,D'O 4 56D ==&tCRy JJL++J7JJLB& 

4( M($u F*$4$> 2: !D E$//4  b="G"G 1dE!#3[!""	! &!))%!,,s*;"i ::<'4B.l  	 	.%'%t- . .	.s   D>F	 	.F7Nc                    |(| j                   | j                   }nt        t              t        j                  t        j
                  |t        j                  t        j                  z  t        j                  z  d      d      5 }|j                  t               t        j                         }| D ]  }|j                  }|s|j                  r|s|j                  |      r3|j                  rd}nd}|j!                  d      rd}	nd}	|j"                  t%        |j"                        }
nd}
|j&                  d}|j(                  }n|j(                  }|j&                  }|j+                  t,              r	t.        |z   }|j                  dj1                  ||	|j2                  ||
||g      dz           	 d d d        y # 1 sw Y   y xY w)	NrZ  r[  rl  FALSEr   r   rk  rW  )r=  rp   rD  r;  r\  rE  r]  r^  r_  r`  NETSCAPE_HEADER_TEXTrq   r   r  r-  r   r   r   r  r   r   r%  ro  rn  r   r   )r   r=  r@  rA  r    rK   rD  r   r   r   r   r   r   s                r   rB  zMozillaCookieJar.save"  s   }}(T]]("#899YYGGHbjj2;;6CUK
 "	 GG()))+C %&..%&*;*;C*@==6&&f$$S);$+k>>-!&..1G G<<' D"KKE!;;D"LLE..}=,v5FIIv{FKK%we= >3"	 "	 "	s   D2GGrN  )r:  r<  r=  rF  rB  r>  r   r   r	   r	     s    >D.L'r   r	   r  )X__all__r;  r  rJ   r   rq   urllib.parser   urllib.request	threadingr  http.clienthttpcalendarr   r   r   r   ro  rn  r  client	HTTP_PORTr  r2  rm  rD  rr  r"   r+   r3   rV   rX   ro   rm   rT   rY   ra   r6  rb   rh   r{   r   Ir   Xr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r
  r  r   r  r  r   r   r   r  r  r   rK  r   r   rT  r   r	   )r.   s   0r   <module>r~     s  6M 
   	  #   	 --. RZZ @A :  A 
 9
4+12%2B&0( T=	bjj5rxx@6p ,-/XX7 RZZ2BDD288OE
RZZ& DD288O) *65p bjj
  44"))#$5B3
 $$67#$MN #$9:2::h' Sj #

;/ 2AH "**Y
)%N( bjj288, 	  $"**9:+!F"_E _ED B_, _B"  LD LD`  4)I 4)n"8v.= v.rM} MA; 3s   J/