o ?Ogg.@s gdZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl mZdZdaddZdZdZee jjZed Zd Zd Zd d ZdZddZgdZgdZ gZ!e D] Z"e!#e"$q`dhddZ%dhddZ&dddddZ'edej(Z)ddZ*ddZ+edej(Z,edej-ej(BZ.edej/ej(BZ0d d!Z1ed"ej/ej(BZ2d#d$Z3d%d&Z4ed'Z5ed(Z6ed)Z7ed*Z8d+d,Z9ed-Z:d.d/Z;d0d1Zd5d6Z?d7d8Z@d9d:ZAd;d<ZBed=ej(ZCd>d?ZDd@dAZEdBdCZFdDdEZGdFZHedGZIdHdIZJdJdKZKdLdMZLdNdOZMGdPdQdQZNGdRdSdSZOGdTdUdUeOZPdVdWZQdXdYZRGdZd[d[ZSGd\d]d]ZTGd^d_d_eUZVGd`dadaeTZWdbdcZXGdddedeeWZYGdfdgdgeWZZdS)i)Cookie CookieJar CookiePolicyDefaultCookiePolicy FileCookieJar LWPCookieJar LoadErrorMozillaCookieJarN)timegmFcGs(tsdStsddl}|datj|S)Nr zhttp.cookiejar)debugloggerloggingZ getLogger)argsr r5/opt/alt/python310/lib64/python3.10/http/cookiejar.py_debug,s   rZHTTPOnlyz #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. cCsJddl}ddl}ddl}|}|d||}|jd|dddS)Nr zhttp.cookiejar bug! %s) stacklevel)iowarnings tracebackStringIO print_excgetvaluewarn)rrrfmsgrrr_warn_unhandled_exceptionBs  ricCs|dd\}}}}}}|tkrTd|krdkrTndSd|kr'dkrTndSd|kr4dkrTndSd|krAdkrTndSd|krQdkrTt|SdSdS) N r ;=) EPOCH_YEARr )ttyearmonthZmdayhourminsecrrr_timegmQsr,)ZMonZTueZWedZThuZFriZSatZSun) ZJanZFebZMarZAprZMayZJunZJulZAugZSepZOctZNovZDeccCsB |dur tj}ntj|}d|j|j|j|j|j|jfS)Nz%04d-%02d-%02d %02d:%02d:%02dZ) datetimeutcnowutcfromtimestampr'r(dayr)minutesecondtZdtrrr time2isoz_s  r5cCsT |dur tj}ntj|}dt||jt|jd|j|j |j |j fS)Nz#%s, %02d-%s-%04d %02d:%02d:%02d GMTr) r-r.r/DAYSZweekdayr0MONTHSr(r'r)r1r2r3rrr time2netscapers  r8)ZGMTUTCZUTZz^([-+])?(\d\d?):?(\d\d)?$cCsld}|tvr d}|St|}|r4dt|d}|dr*|dt|d}|ddkr4| }|S)Nr ir<r-) UTC_ZONES TIMEZONE_REsearchintgroup)tzoffsetmrrroffset_from_tz_strings  rFc Cst|}|tjkr dSz t|d}Wn/tyEzt|}Wn ty.YYdSwd|kr9dkr@nYdS|}nYdSYnw|durLd}|durRd}|durXd}t|}t|}t|}t|}|dkrttd}|d} |} ||| }| | } t | dkr| dkr|d}n|d}t |||||||f} | dur|durd}| }t |} | durdS| | } | S)Nrr r id2r9) rAr-ZMAXYEAR MONTHS_LOWERindexlower ValueErrortime localtimeabsr,upperrF) r0monyrhrr*r+rCZimonZcur_yrrEtmpr4rDrrr _str2timesV        rUzV^[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 Cs t|}|r7|}t|dd}t|d|t|dt|dt|dt|df}t|S| }t d|d}dgd\}}}}}} } t |}|durc|\}}}}}} } ndSt |||||| | S) Nrrr r;)STRICT_DATE_REr@groupsrIrJrKrAfloatr,lstrip WEEKDAY_REsubLOOSE_HTTP_DATE_RErU) textrEgrQr&r0rRrSr*r+rCrrr http2times"  rca^ (\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 Csf |}dgd\}}}}}}}t|}|dur'|\}}}}}}}} ndSt|||||||S)NrY)r] ISO_DATE_REr@r[rU) rar0rQrRrSr*r+rCrE_rrriso2time3s  rfcCs, |d\}}|jd||j|dS)Nr )spanstring)matchstartendrrr unmatchedTsrlz^\s*([^=\s;,]+)z&^\s*=\s*\"([^\"\\]*(?:\\.[^\"\\]*)*)\"z^\s*=\s*([^\s;,]*)z\\(.)c Cs g}|D]{}|}g}|ryt|}|rSt|}|d}t|}|r4t|}|d}td|}nt|}|rIt|}|d}|}nd}| ||fn$| drl| dd}|ri| |g}n t dd|\}} |}|s |r| |q|S)Nrz\1,z^[=\s;]*rX)HEADER_TOKEN_REr@rlrBHEADER_QUOTED_VALUE_REHEADER_ESCAPE_REr_HEADER_VALUE_RErstripappendr] startswithresubn) Z header_valuesresultraZ orig_textpairsrEnamevalueZnon_junkZ nr_junk_charsrrrsplit_header_words]s@-        r{([\"\\])cCs~ g}|D]4}g}|D]#\}}|dur)td|s#td|}d|}d||f}||q |r9|d|qd|S)Nz^\w+$\\\1z"%s"%s=%s; , )rur@HEADER_JOIN_ESCAPE_REr_rsjoin)Zlistsheadersrxattrkvrrrjoin_header_wordss       rcCs0|dr |dd}|dr|dd}|S)N"r)rtendswithrarrr strip_quotess    rc Cs d}g}|D]s}g}d}t|dD]W\}}|}|d\}} } |}|s1|dkr0n)rrrrzry)rplimitZ namevaluerrr__str__1s   zCookie.__str__cCslg}dD]}t||}|d|t|fq|dt|j|dt|jd|jjd|fS)N)rryrzrrrrrrrrrrrrr~zrest=%sz rfc2109=%sz%s(%s)r)getattrrsreprrr __class____name__r)rrryrrrr__repr__;s zCookie.__repr__)Fr) r __module__ __qualname__rrrrrrrrrrrrs *   rc@s.eZdZ ddZddZddZddZd S) rcC trNotImplementedErrorrcookierrrrset_okSszCookiePolicy.set_okcCrrrrrrr return_ok\zCookiePolicy.return_okcC dSNTr)rrrrrrdomain_return_ok`zCookiePolicy.domain_return_okcCrrr)rrrrrrpath_return_okerzCookiePolicy.path_return_okN)rrrrrrrrrrrrJs   rc @seZdZ dZdZdZdZeeBZdddddddddedddf d d Zd d Z d dZ ddZ ddZ ddZ ddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd'd(Zd)d*Zd+d,Zd-d.Zd/d0Zd1d2Zd3d4Zd5d6ZdS)7rrrrVr NTF)ZhttpsZwsscCsx ||_||_||_||_||_||_| |_| |_| |_| |_ | |_ |dur,t ||_ nd|_ |dur7t |}||_ dS)Nr)netscaperfc2965rfc2109_as_netscape hide_cookie2 strict_domainstrict_rfc2965_unverifiablestrict_ns_unverifiablestrict_ns_domainstrict_ns_set_initial_dollarstrict_ns_set_pathsecure_protocolstuple_blocked_domains_allowed_domains)rblocked_domainsallowed_domainsrrrrrrrrrrrrrrrus$   zDefaultCookiePolicy.__init__cC |jSr)rrrrrrrz#DefaultCookiePolicy.blocked_domainscCs t||_dSr)rr)rrrrrset_blocked_domainssz'DefaultCookiePolicy.set_blocked_domainscCs |jD] }t||r dSqdSr)rr)rrZblocked_domainrrr is_blockeds  zDefaultCookiePolicy.is_blockedcCr r)rr rrrrrz#DefaultCookiePolicy.allowed_domainscCs |dur t|}||_dSr)rr)rrrrrset_allowed_domainss z'DefaultCookiePolicy.set_allowed_domainscCs.|jdurdS|jD] }t||rdSq dSr)rr)rrZallowed_domainrrris_not_alloweds   z"DefaultCookiePolicy.is_not_allowedcCB td|j|jdD]}d|}t||}|||sdSq dS)N - checking cookie %s=%s)r verifiabilityryrrrZset_ok_FTrryrzrrrrnZfn_namefnrrrrs  zDefaultCookiePolicy.set_okcCsZ|jdurtd|j|jdS|jdkr|jstddS|jdkr+|js+tddSdS)Nz0 Set-Cookie2 without version attribute (%s=%s)Fr $ RFC 2965 cookies are switched off$ Netscape cookies are switched offT)rrryrzrrrrrrset_ok_versions z"DefaultCookiePolicy.set_ok_versioncCJ|jr#t|r#|jdkr|jrtddS|jdkr#|jr#tddSdSNr z> third-party RFC 2965 cookie during unverifiable transactionFz> third-party Netscape cookie during unverifiable transactionTZ unverifiablerrrrrrrrrset_ok_verifiabilityz(DefaultCookiePolicy.set_ok_verifiabilitycCs0|jdkr|jr|jdrtd|jdSdS)Nr $z' illegal name (starts with '$'): '%s'FT)rrryrtrrrrr set_ok_names   zDefaultCookiePolicy.set_ok_namecCsL|jr$t|}|jdks|jdkr$|jr$||j|s$td|j|dSdS)Nr z7 path attribute %s is not a prefix of request path %sFT)rrrrrrr)rrrreq_pathrrr set_ok_paths  zDefaultCookiePolicy.set_ok_pathc Cs||jrtd|jdS||jrtd|jdS|jrt|\}}|j}|jre|ddkre|d}|dd|}|dkre||dd}||d|} | dvret |dkretd |dS| drq|dd} n|} | ddk} | s|d krtd |dS|j dkr||s| dsd||std ||dS|j dks|j|j@rt||std ||dS|j dks|j|j@r|dt | } | ddkrt|std| |dSdS)N" domain %s is in user block-listF& domain %s is not in user allow-listrrr r)coZacZcomZeduZorgZnetZgovZmilrAZaeroZbizcatZcoopinfoZjobsZmobiZmuseumryZproZtravelZeuz& country-code second level domain %srz/ 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)r rrrrrrcountrrKlenrtrrrrDomainRFC2965MatchrDomainStrictNoDotsrr@) rrrrrrrjZtldZsldZundotted_domainZ embedded_dotsZ host_prefixrrr set_ok_domainst                   z!DefaultCookiePolicy.set_ok_domainc Cs|jrBt|}|durd}nt|}|jdD] }zt|Wnty0td|YdSw||kr8dSqtd||jdSdS)N80rmz bad port %s (not numeric)Fz$ request port (%s) not found in %sT)rrstrrrrArLrrrrZreq_portrrrr set_ok_port3s*   zDefaultCookiePolicy.set_ok_portcCr)Nr)rrrrrrZ return_ok_FTrrrrrrHs  zDefaultCookiePolicy.return_okcCs<|jdkr|jstddS|jdkr|jstddSdS)Nr rFrT)rrrrrrrrreturn_ok_versionZsz%DefaultCookiePolicy.return_ok_versioncCrrrrrrrreturn_ok_verifiabilitycrz+DefaultCookiePolicy.return_ok_verifiabilitycCs"|jr|j|jvrtddSdS)Nz( secure cookie with non-secure requestFT)rtyperrrrrrreturn_ok_secureosz$DefaultCookiePolicy.return_ok_securecCs||jr tddSdS)Nz cookie expiredFT)r_nowrrrrrreturn_ok_expiresus z%DefaultCookiePolicy.return_ok_expirescCsP|jr&t|}|dur d}|jdD] }||krdSqtd||jdSdS)Nr-rmz0 request port %s does not match cookie port %sFT)rrrrr/rrrreturn_ok_port{sz"DefaultCookiePolicy.return_ok_portcCst|\}}|j}|r|dsd|}n|}|jdkr/|j|j@r/|js/||kr/tddS|jdkrAt||sAtd||dS|jdkrUd| |sUtd||dSdS)Nrr 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) rrrtrrDomainStrictNonDomainrrrr)rrrrrr dotdomainrrrreturn_ok_domains0    z$DefaultCookiePolicy.return_ok_domaincCst|\}}|dsd|}|dsd|}|r$|ds$d|}n|}||s2||s2dS||r>td|dS||rJtd|dSdS)NrFr"r#T)rrtrr rr)rrrrrr9rrrrs"        z$DefaultCookiePolicy.domain_return_okcCsbtd|t|}t|}||krdS||r)|ds'|||ddkr)dStd||dS)Nz- checking cookie path=%sTrrz %s does not path-match %sF)rrr(rtr)rrrr Zpathlenrrrrs   z"DefaultCookiePolicy.path_return_ok)rrrr*r8r)Z DomainLiberalZ DomainStrictrrr r rr rrrrrr!r,r0rr1r2r4r6r7r:rrrrrrrksR #   ;   rcCst|}t|j|Sr)sortedkeysmapr)Zadictr<rrrvals_sorted_by_keys  r>c csX t|}|D]!}d}z|jWn tyYn wd}t|EdH|s)|VqdSr)r>itemsAttributeError deepvalues)mappingvaluesobjrrrrAs   rAc@ eZdZdS)AbsentNrrrrrrrrF rFc@seZdZ edZedZedZedZedZ edej Z d2dd Z d d Z d d ZddZddZddZddZddZddZddZddZddZd d!Zd"d#Zd3d$d%Zd&d'Zd(d)Zd*d+Zd,d-Zd.d/Zd0d1Z dS)4rz\Wr|z\.?[^.]*z[^.]*z^\.+z^\#LWP-Cookies-(\d+\.\d+)NcCs(|durt}||_t|_i|_dSr)r_policy _threadingRLock _cookies_lock_cookiesrpolicyrrrrs   zCookieJar.__init__cCs ||_dSr)rIrNrrr set_policyrzCookieJar.set_policycCsg}|j||s gStd||j|}|D]*}|j||s#q||}|D]}|j||s9tdq+td||q+q|S)Nz!Checking %s for cookies to returnz not returning cookiez it's a match) rIrrrMr<rrCrrs)rrrcookiesZcookies_by_pathrZcookies_by_namerrrr_cookies_for_domains"     zCookieJar._cookies_for_domaincCs, g}|jD] }||||q|Sr)rMr<extendrR)rrrQrrrr_cookies_for_requests zCookieJar._cookies_for_requestc Cs8 |jddddd}g}|D]}|j}|s$d}|dkr$|d||jdur=|j|jr=|dkr=|jd|j}n|j}|jdurL||jn |d |j|f|dkr|j re|d |j |j d r|j }|j s|| d r||d d}|d ||jdurd}|jr|d|j}||q|S)NcS t|jSr)r(r)arrr s z)CookieJar._cookie_attrs..T)rreverseFr z $Version=%sr}r~z $Path="%s"rrz $Domain="%s"z$Portz="%s")sortrrsrz non_word_rer@quote_rer_ryrrrrtrrr) rrQrattrsrrrzrrrrr _cookie_attrssH        zCookieJar._cookie_attrscCs td|jzKtt|j_|_||}||}|r0| ds0| dd ||jj rO|jj sO| dsO|D]}|jdkrN| ddnq?W|jn|jw|dS)Nadd_cookie_headerrrZCookie2rz $Version="1")rrLacquirerArMrIr5rTr]Z has_headerZadd_unredirected_headerrrrrreleaseclear_expired_cookies)rrrQr\rrrrr^Qs.        zCookieJar.add_cookie_headerc Csv g}d}d}|D]}|d\}}d}d} i} i} |ddD]\} } | }||vs/||vr1|} | |vr;| dur;d} | | vr@q| dkrT| durPtdd} n\| } | d krd|r[q| durdtd q| d krd}zt| } Wntytd d} Yn,wd } |j| } | |vs| |vr| dur| d vrtd| d} n | | | <q| | | <q| rq |||| | fq |S)N)rr)rrrrrrr commenturlr FrTrz% missing value for domain attributerzM missing or invalid value for expires attribute: treating as session cookierz? missing or invalid (non-numeric) value for max-age attribute)rrrbz! missing value for %s attribute)rKrrArLr5rs)r attrs_set cookie_tuples boolean_attrs value_attrsZ cookie_attrsryrzZ max_age_setZ bad_cookiestandardrrrrrrr_normalized_cookie_tuplesrsj         z#CookieJar._normalized_cookie_tuplescCs|\}}}}|dt}|dt}|dt} |dt} |dd} | dur9zt| } Wn ty8YdSw|dd} |dd} |d d}|d d}|tur`|d kr`d }t|}n*d}t|}|d }|dkr| dkrz|d|}n|d|d}t|dkrd }|tu}d}|rt| d}|turt |\}}|}n | dsd|}d}| tur| durt |} n d }t dd | } nd} | turd} d } n!| |jkrz ||||Wn tyYnwtd|||dSt| ||| ||||||| | | |||S)NrrrrrrFrrrbrXTrrr rrz\s+z2Expiring cookie, domain='%s', path='%s', name='%s')rrFrArLrrrr(boolrtrrrur_r5clearKeyErrorrr)rtuprryrzrgrrrrrrrrrrrrrrrrrrrr_cookie_from_cookie_tuples                   z#CookieJar._cookie_from_cookie_tuplecCs6||}g}|D]}|||}|r||q |Sr)rhrmrs)rrcrrdrQrlrrrr_cookies_from_attrs_set/s  z!CookieJar._cookies_from_attrs_setcCsHt|jdd}|dur|jj }|D]}|jdkr!d|_|r!d|_qdS)NrrTr )rrIrrr)rrQZ rfc2109_as_nsrrrr_process_rfc2109_cookies8s  z"CookieJar._process_rfc2109_cookiesc Cs0 |}|dg}|dg}tt|j_|_|jj}|jj}|s(|r4|s,|r4|s0|r4|s6|s6gSz |t ||}Wnt yNt g}Ynw|r|rz |t ||} Wnt ykt g} Ynw| | |ri} |D] } d| | j| j| jf<qw| fdd} t| | } | r|| |S)Nz Set-Cookie2z Set-CookiecSs|j|j|jf}||vSr)rrry)Z ns_cookielookuprrrrno_matching_rfc2965qsz3CookieJar.make_cookies..no_matching_rfc2965)r&Zget_allrArMrIr5rrrnr{ ExceptionrrrorrryfilterrS) rresponserrZ rfc2965_hdrsZns_hdrsrrrQZ ns_cookiesrprrqrrr make_cookiesDs`        zCookieJar.make_cookiescCsh |jz'tt|j_|_|j||r&||W|jdSW|jdS|jwr) rLr_rArMrIr5r set_cookier`rrrrset_cookie_if_ok{s  zCookieJar.set_cookie_if_okcCsv |j}|jz+|j|vri||j<||j}|j|vr#i||j<||j}|||j<W|jdS|jwr)rMrLr_rrryr`)rrcZc2Zc3rrrrvs    zCookieJar.set_cookiecCsl td||jz"|||D]}|j||r'td|||qW|jdS|jw)Nzextract_cookies: %sz setting cookie: %s) rr&rLr_rurIrrvr`)rrtrrrrrextract_cookiess   zCookieJar.extract_cookiescCs| |dur|dus |durtd|j|||=dS|dur/|dur'td|j||=dS|dur9|j|=dSi|_dS)Nz8domain and path must be given to remove a cookie by namez.domain must be given to remove cookies by path)rLrM)rrrryrrrrjs    zCookieJar.clearcCsN |jz|D]}|jr||j|j|jq W|jdS|jwr)rLr_rrjrrryr`)rrrrrclear_session_cookiess zCookieJar.clear_session_cookiescCsZ |jz t}|D]}||r||j|j|jq W|jdS|jwr) rLr_rMrrjrrryr`)rrrrrrras  zCookieJar.clear_expired_cookiescCrUr)rArMr rrr__iter__rzCookieJar.__iter__cCs d}|D]}|d}q|S)Nr rr)rrrrrr__len__szCookieJar.__len__cC2g}|D] }|t|qd|jjd|fSNz<%s[%s]>r)rsrrrrrrrrrrrzCookieJar.__repr__cCr}r~)rsr.rrrrrrrrrzCookieJar.__str__r)NNN)!rrrrucompilerZr[Zstrict_domain_reZ domain_reZdots_reASCIImagic_rerrPrRrTr]r^rhrmrnrorurwrvryrjrzrar{r|rrrrrrrs:      ;!a\  7   rc@rE)rNrGrrrrrrHrc@s:eZdZ d ddZd ddZd ddZ  d d d ZdS) rNFcCs4 t|||durt|}||_t||_dSr)rrosfspathfilenameri delayload)rrrrOrrrrs   zFileCookieJar.__init__cCrrr)rrignore_discardignore_expiresrrrsaverzFileCookieJar.savecCsb |dur|jdur|j}nttt|}|||||WddS1s*wYdSr)rrLMISSING_FILENAME_TEXTopen _really_loadrrrrrrrrloads "zFileCookieJar.loadcCs |dur|jdur|j}ntt|jz&t|j}i|_z ||||Wn t y5||_wW|j dS|j wr) rrLrrLr_rZdeepcopyrMrOSErrorr`)rrrrZ old_staterrrreverts    zFileCookieJar.revert)NFNNFF)rrrrrrrrrrrrs   rcCs" |j|jfd|jfd|jfg}|jdur|d|jf|jr%|d|jr-|d|jr5|d|j r=|d|j rL|dt t |j f|j rT|d |jr_|d |jf|jrj|d |jft|j}|D]}||t|j|fqs|d t|jft|gS) Nrrr) path_specN) port_specN) domain_dotN)rNr)rNrrbr)ryrzrrrrsrrrrrr5r\rrrr;rr<r.rr)rrr<rrrrlwp_cookie_str,s*    rc@s*eZdZ d ddZd ddZdd ZdS) rTcCsV t}g}|D]}|s|jrq |s||rq |dt|q d|dgS)NzSet-Cookie3: %s rX)rMrrrsrr)rrrrrrrrr as_lwp_strUs zLWPCookieJar.as_lwp_strNFcCsn|dur|jdur |j}nttt|d}|d||||WddS1s0wYdS)Nwz#LWP-Cookies-2.0 )rrLrrwriterrrrrres  "zLWPCookieJar.savecCs |}|j|sd|}t|t}d}d} d} z |} | dkr)WdS| |s/q| t|d} t| gD]} | d\} }i}i}| D]}d||<qL| ddD]5\}}|durf| }nd}|| vsp|| vrr|}|| vr|dur|d }|||<qY|| vr|||<qY|||<qY|j }|d }|d }|durt |}|durd }|d }|d }t |d| ||d|d|||d|d|d|d|||d|d|}|s|j rq>|s||rq>||q>qtytyttd|| fw)Nz5%r does not look like a Set-Cookie3 (LWP) format filez Set-Cookie3:)rrrrr)rrrrrrrbrrXr FTrrrrrrrrrrrrrbz&invalid Set-Cookie3 format file %r: %r)readlinerr@rrMrtr(rr{rKrrfrrrrvrrrr)rrrrrmagicrrheaderrerflinedataryrzrgrrrrrrrrrrxrrrrqs                 5zLWPCookieJar._really_load)TTr)rrrrrrrrrrrHs   rc@s eZdZ ddZdddZdS)rcCsjt}t|std|z |}i}|dkr WdS|tr1d|t<|ttd}| dr<|dd}| dsI| dkrJq| d\}} } } } } }| dk} | dk} | dkrf|} d}|d }d }| dkrud} d }t d | |dd || || d | | |dd|}|s|j rq|s||rq||qtytyttd ||fw)Nz4%r does not look like a Netscape format cookies filerrXrr)#r TRUErFTr z+invalid Netscape format cookies file %r: %r)rMNETSCAPE_MAGIC_RGXrirrrtHTTPONLY_PREFIX HTTPONLY_ATTRr(rrrrrrrvrrrr)rrrrrrrrrrrrrryrzrrrxrrrrsp      9 zMozillaCookieJar._really_loadNFc Cs&|dur|jdur |j}nttt|ds}|tt}|D]^}|j}|s-|jr-q"|s5| |r5q"|j r;d}nd}| drEd} nd} |j durRt |j } nd} |jdur_d} |j} n|j} |j} |trnt|}|d|| |j|| | | gdq"WddS1swYdS)NrrZFALSErrXrr)rrLrrrNETSCAPE_HEADER_TEXTrMrrrrrtrr.rzryrrrrr) rrrrrrrrrrrryrzrrrr)sF         "zMozillaCookieJar.saver)rrrrrrrrrrsIrr)[__all__rrr-rurMZ urllib.parserZurllib.requestZ threadingrJZ http.clientZhttpZcalendarr r r rrrr.ZclientZ HTTP_PORTrrrrrrr%r,r6r7rIr(rsrKr5r8r>rr?rFrUrZIr^Xr`rcrdrfrlrnrorqrpr{rrrrrrrrrrrrrrrrrrrrrrrr>rArFrrrrrrrrrrrs      8  8 !     UD'    #b!b7x