§
    ÷„tjÜ  ã                  óò   — d dl mZ d dlZd dlZd dlmZmZmZ d dlmZm	Z	m
Z
 d dlmZmZmZ erd dlmZ dZddd„Zdd„Z G d„ d¦  «        Z G d„ de¦  «        Z G d„ de¦  «        Z G d„ de¦  «        ZdS )é    )ÚannotationsN)ÚdatetimeÚ	timedeltaÚtimezone)Ú
formatdateÚ	parsedateÚparsedate_tz)ÚTYPE_CHECKINGÚAnyÚMapping)ÚHTTPResponsez%a, %d %b %Y %H:%M:%S GMTÚdeltar   Údateúdatetime | NoneÚreturnr   c                óL   — |pt          j        t          j        ¦  «        }|| z   S ©N)r   Únowr   Úutc)r   r   s     úa/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/pip/_vendor/cachecontrol/heuristics.pyÚexpire_afterr      s"   € ØÐ-•8”<¥¤Ñ-Ô-€DØ�%‰<Ðó    ÚdtÚstrc                óh   — t          t          j        |                      ¦   «         ¦  «        ¦  «        S r   )r   ÚcalendarÚtimegmÚ	timetuple)r   s    r   Údatetime_to_headerr      s"   € Ý•h”o b§l¢l¡n¤nÑ5Ô5Ñ6Ô6Ð6r   c                  ó&   — e Zd Zd
d„Zdd„Zdd„Zd	S )ÚBaseHeuristicÚresponser   r   ú
str | Nonec                ó   — dS )a!  
        Return a valid 1xx warning header value describing the cache
        adjustments.

        The response is provided too allow warnings like 113
        http://tools.ietf.org/html/rfc7234#section-5.5.4 where we need
        to explicitly say response is over 24 hours old.
        z110 - "Response is Stale"© ©Úselfr"   s     r   ÚwarningzBaseHeuristic.warning   s
   € ð +Ð*r   údict[str, str]c                ó   — i S )zïUpdate the response headers with any new headers.

        NOTE: This SHOULD always include some Warning header to
              signify that the response was cached by the client, not
              by way of the provided headers.
        r%   r&   s     r   Úupdate_headerszBaseHeuristic.update_headers'   s	   € ð ˆ	r   c                óÎ   — |                       |¦  «        }|rM|j                             |¦  «         |                      |¦  «        }|�|j                             d|i¦  «         |S )NÚWarning)r+   ÚheadersÚupdater(   )r'   r"   Úupdated_headersÚwarning_header_values       r   ÚapplyzBaseHeuristic.apply0   so   € Ø×-Ò-¨hÑ7Ô7ˆàð 	KØÔ×#Ò# OÑ4Ô4Ð4Ø#'§<¢<°Ñ#9Ô#9Ð Ø#Ð/ØÔ ×'Ò'¨Ð4HÐ(IÑJÔJÐJàˆr   N©r"   r   r   r#   ©r"   r   r   r)   )r"   r   r   r   )Ú__name__Ú
__module__Ú__qualname__r(   r+   r2   r%   r   r   r!   r!      sP   € € € € € ð	+ð 	+ð 	+ð 	+ðð ð ð ð	ð 	ð 	ð 	ð 	ð 	r   r!   c                  ó   — e Zd ZdZdd„ZdS )	ÚOneDayCachezM
    Cache the response by providing an expires 1 day in the
    future.
    r"   r   r   r)   c                óô   — i }d|j         vrlt          |j         d         ¦  «        }t          t          d¬¦  «        t	          |d d…         dt
          j        iŽ¬¦  «        }t          |¦  «        |d<   d|d	<   |S )
NÚexpiresr   é   )Údaysé   Útzinfo)r   Úpublicúcache-control)r.   r   r   r   r   r   r   r   )r'   r"   r.   r   r;   s        r   r+   zOneDayCache.update_headersB   s�   € Øˆà˜HÔ,Ð,Ð,Ý˜XÔ-¨fÔ5Ñ6Ô6ˆDÝ"¥9°!Ð#4Ñ#4Ô#4½8ÀTÈ"È1È"ÄXÐ;cÕV^ÔVbÐ;cÐ;cÐdÑdÔdˆGÝ!3°GÑ!<Ô!<ˆG�IÑØ'/ˆG�OÑ$Øˆr   Nr4   )r5   r6   r7   Ú__doc__r+   r%   r   r   r9   r9   <   s2   € € € € € ðð ð
ð ð ð ð ð r   r9   c                  ó*   — e Zd ZdZdd„Zdd
„Zdd„ZdS )ÚExpiresAfterz;
    Cache **all** requests for a defined time period.
    Úkwr   r   ÚNonec                ó(   — t          di |¤Ž| _        d S )Nr%   )r   r   )r'   rE   s     r   Ú__init__zExpiresAfter.__init__R   s   € Ý�_�_ �_�_ˆŒ
ˆ
ˆ
r   r"   r   r)   c                óN   — t          | j        ¦  «        }t          |¦  «        ddœS )Nr@   )r;   rA   )r   r   r   )r'   r"   r;   s      r   r+   zExpiresAfter.update_headersU   s'   € Ý˜tœzÑ*Ô*ˆÝ-¨gÑ6Ô6ÈÐRÐRÐRr   r#   c                ó   — d}|| j         z  S )Nz:110 - Automatically cached for %s. Response might be stale)r   )r'   r"   Útmpls      r   r(   zExpiresAfter.warningY   s   € ØKˆØ�d”jÑ Ð r   N)rE   r   r   rF   r4   r3   )r5   r6   r7   rB   rH   r+   r(   r%   r   r   rD   rD   M   s^   € € € € € ðð ð%ð %ð %ð %ðSð Sð Sð Sð!ð !ð !ð !ð !ð !r   rD   c                  ó*   — e Zd ZdZh d£Zdd„Zdd	„Zd
S )ÚLastModifiedaÁ  
    If there is no Expires header already, fall back on Last-Modified
    using the heuristic from
    http://tools.ietf.org/html/rfc7234#section-4.2.2
    to calculate a reasonable value.

    Firefox also does something like this per
    https://developer.mozilla.org/en-US/docs/Web/HTTP/Caching_FAQ
    http://lxr.mozilla.org/mozilla-release/source/netwerk/protocol/http/nsHttpResponseHead.cpp#397
    Unlike mozilla we limit this to 24-hr.
    >   é,  é-  é”  é•  éš  éž  éõ  éÈ   éË   éÌ   éÎ   Úrespr   r   r)   c                óB  — |j         }d|v ri S d|v r|d         dk    ri S |j        | j        vri S d|vsd|vri S t          |d         ¦  «        }|€J ‚t	          j        |d d…         ¦  «        }t          |d         ¦  «        }|€i S t          j        ¦   «         }t          d||z
  ¦  «        }|t	          j        |¦  «        z
  }t          dt          |dz  d	¦  «        ¦  «        }	|	|k    ri S ||	z   }
dt          j
        t          t          j        |
¦  «        ¦  «        iS )
Nr;   rA   r@   r   zlast-modifiedr>   r   é
   i€Q )r.   ÚstatusÚcacheable_by_default_statusesr	   r   r   r   ÚtimeÚmaxÚminÚstrftimeÚTIME_FMTÚgmtime)r'   rY   r.   Ú
time_tupler   Úlast_modifiedr   Úcurrent_ager   Úfreshness_lifetimer;   s              r   r+   zLastModified.update_headersy   sD  € Ø%)¤\ˆà˜ÐÐØˆIà˜gÐ%Ð%¨'°/Ô*BÀhÒ*NÐ*NØˆIàŒ;˜dÔ@Ð@Ð@ØˆIà˜Ð Ð  O¸7Ð$BÐ$BØˆIå! '¨&¤/Ñ2Ô2ˆ
ØÐ%Ð%Ð%ÝŒ˜z¨"¨1¨"œ~Ñ.Ô.ˆÝ! '¨/Ô":Ñ;Ô;ˆØÐ ØˆIåŒi‰kŒkˆÝ˜!˜S 4™ZÑ(Ô(ˆØ•x” }Ñ5Ô5Ñ5ˆÝ  ¥C¨°©
°IÑ$>Ô$>Ñ?Ô?ÐØ Ò,Ð,ØˆIàÐ+Ñ+ˆØ�4œ=­µ4´;¸wÑ3GÔ3GÑHÔHÐIÐIr   r#   c                ó   — d S r   r%   )r'   rY   s     r   r(   zLastModified.warning™   s   € Øˆtr   N)rY   r   r   r)   )rY   r   r   r#   )r5   r6   r7   rB   r]   r+   r(   r%   r   r   rM   rM   ^   s]   € € € € € ð
ð 
ð%ð %ð %Ð!ðJð Jð Jð Jð@ð ð ð ð ð r   rM   r   )r   r   r   r   r   r   )r   r   r   r   )Ú
__future__r   r   r^   r   r   r   Úemail.utilsr   r   r	   Útypingr
   r   r   Úpip._vendor.urllib3r   rb   r   r   r!   r9   rD   rM   r%   r   r   ú<module>rm      s‚  ðð #Ð "Ð "Ð "Ð "Ð "à €€€Ø €€€Ø 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ð .àð 1Ø0Ð0Ð0Ð0Ð0Ð0à&€ðð ð ð ð ð
7ð 7ð 7ð 7ðð ð ð ð ñ ô ð ðBð ð ð ð �-ñ ô ð ð"!ð !ð !ð !ð !�=ñ !ô !ð !ð"<ð <ð <ð <ð <�=ñ <ô <ð <ð <ð <r   