§
    èƒñj´  ã                   ó  — 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mZm
Z
mZ ddlmZmZ  e
ddd¦  «        Ze                     ¦   «         ZdZ ej        e¬¦  «        d„ ¦   «         Zd	„ Z G d
„ de¦  «        Ze	j        dk    o
e	j        dk     Zd„ Zd„ Zd„ ZdZ G d„ d¦  «        Z  G d„ d¦  «        Z! e!ddd¦  «        Z"d„ Z#d„ Z$d„ Z%d„ Z& G d„ d¦  «        Z'dZ(d„ Z) G d„ d¦  «        Z* G d „ d!¦  «        Z+dS )"é    N)ÚMAXYEARÚMINYEARÚdatetimeÚ	timedeltaé   )Ú_tzinfoÚenfoldi²  i   )Úmaxsizec                 ó"   — t          | ¬¦  «        S )N©Úseconds)r   r   s    úR/data/share/cad/hardware/.venv/lib/python3.11/site-packages/dateutil/tz/_tzfile.pyÚ_load_timedeltar   !   s   € å˜WÐ%Ñ%Ô%Ð%ó    c                 óv   — |                       | ¦  «        }||_        ||_        |                     |¦  «         |S ©N)Ú__new__Ú_keyÚ	_filenameÚ_load_from_data)ÚclsÚkeyÚfilenameÚdataÚobjs        r   Ú	_unpickler   &   s:   € Ø
�+Š+�cÑ
Ô
€CØ€C„HØ€C„Mà×Ò˜ÑÔÐà€Jr   c                   óà   ‡ — e Zd ZdZdˆ fd„	Zed„ ¦   «         Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zd
„ Zdd„Zd„ Z eg d¢¦  «        Zd„ Zd„ Zd„ Zd„ Zed„ ¦   «         Zed„ ¦   «         Zd„ Zd„ ZdZd„ Zˆ xZS )ÚtzfileaÖ  
    This is a ``tzinfo`` subclass that allows one to use the ``tzfile(5)``
    format timezone files to extract current and historical zone information.

    :param fileobj:
        This can be an opened file stream or a file name that the time zone
        information can be read from.

    :param filename:
        This is an optional parameter specifying the source of the time zone
        information in the event that ``fileobj`` is a file object. If omitted
        and ``fileobj`` is a file stream, this parameter will be set either to
        ``fileobj``'s ``name`` attribute or to ``repr(fileobj)``.

    This class is intended to be mostly equivalent to the standard library
    :py:class:`zoneinfo.ZoneInfo` class. The primary differences are:

        * All caching in ``tzfile`` is handled by :func:`tz.gettz` level (you
          should generally not attempt to construct a ``tzfile`` directly).
        * ``tzfile`` objects are pickled by value rather than by reference to
          the IANA key.
        * ``tzfile`` has equality-by-value semantics, whereas
          :py:class:`~zoneinfo.ZoneInfo` has equality-by-identity semantics.

    See `Sources for Time Zone and Daylight Saving Time Data
    <https://data.iana.org/time-zones/tz-link.html>`_ for more information.
    Time zone files can be compiled from the `IANA Time Zone database files
    <https://www.iana.org/time-zones>`_ with the `zic time zone compiler
    <https://www.freebsd.org/cgi/man.cgi?query=zic&sektion=8>`_

    .. note::

        Only construct a ``tzfile`` directly if you have a specific timezone
        file on disk that you want to read into a Python ``tzinfo`` object.
        If you want to get a ``tzfile`` representing a specific IANA zone,
        (e.g. ``'America/New_York'``), you should call
        :func:`dateutil.tz.gettz` with the zone identifier.

    .. versionchanged:: 3.0.0
        ``tzfile`` is now a partial backport of :py:class:`zoneinfo.ZoneInfo`,
        which brings with it support for Version 2 and 3 ``tzfile(5)`` binaries.

    **Examples:**

    Using the US Eastern time zone as an example, we can see that a ``tzfile``
    provides time zone information for the standard Daylight Saving offsets:

    .. testsetup:: tzfile

        from dateutil.tz import gettz
        from datetime import datetime

    .. doctest:: tzfile

        >>> NYC = gettz('America/New_York')
        >>> NYC
        tzfile('/usr/share/zoneinfo/America/New_York')

        >>> print(datetime(2016, 1, 3, tzinfo=NYC))     # EST
        2016-01-03 00:00:00-05:00

        >>> print(datetime(2016, 7, 7, tzinfo=NYC))     # EDT
        2016-07-07 00:00:00-04:00


    The ``tzfile`` structure contains a fully history of the time zone,
    so historical dates will also have the right offsets. For example, before
    the adoption of standard time on November 18, 1883, New York used local
    mean time:

    .. doctest:: tzfile

       >>> print(datetime(1883, 11, 18, tzinfo=NYC))    # LMT
       1883-11-18 00:00:00-04:56:02

    And during World War II, New York was on "Eastern War Time", which was a
    state of permanent daylight saving time:

    .. doctest:: tzfile

        >>> print(datetime(1944, 2, 7, tzinfo=NYC))    # EWT
        1944-02-07 00:00:00-04:00

    Nc                 óÐ  •— t          ¦   «                              ¦   «          d}t          |t          ¦  «        r|| _        t          |d¦  «        }d}nE|�|| _        n;t          |d¦  «        r|j        | _        n|�|| _        nt          |¦  «        | _        |�E|st          j
        |¦  «        }|5 }|                      |¦  «         d d d ¦  «         n# 1 swxY w Y   || _        d S )NFÚrbTÚname)ÚsuperÚ__init__Ú
isinstanceÚstrr   ÚopenÚhasattrr!   ÚreprÚ
contextlibÚnullcontextÚ
_load_filer   )ÚselfÚfileobjr   r   Úfile_opened_hereÚfile_streamÚ	__class__s         €r   r#   ztzfile.__init__†   s,  ø€ Ý‰Œ×ÒÑÔÐà ÐÝ�g�sÑ#Ô#ð 	+Ø$ˆDŒNÝ˜7 DÑ)Ô)ˆGØ#ÐÐØÐ!Ø%ˆDŒNˆNÝ�W˜fÑ%Ô%ð 	+Ø$œ\ˆDŒNˆNØˆ_Ø ˆDŒNˆNå! '™]œ]ˆDŒNàÐØ#ð :Ý$Ô0°Ñ9Ô9�àð -˜KØ—’ Ñ,Ô,Ð,ð-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð ˆŒ	ˆ	ˆ	s   Â2CÃCÃCc                 ó   — | j         S )u  
        Read-only attribute returning the ``key`` constructor argument.

        For zones generated from :func:`gettz`, this will be the IANA key
        passed to ``gettz`` â€” no normalization is done, so although in most
        distributions of the time zone database "US/Eastern" is a link to
        "America/New_York", ``tz.gettz("US/Eastern").key`` should always return
        ``"US/Eastern"``.

        For zones constructed via another mechanism without specifying ``key``,
        this returns :obj:`None`.
        )r   ©r,   s    r   r   z
tzfile.key    s   € ð ŒyÐr   c                 ó4   — |                       |¦  «        dk    S )a6  
        Whether or not the "wall time" of a given datetime is ambiguous in this
        zone.

        :param dt:
            A :py:class:`datetime.datetime`, naive or time zone aware.


        :return:
            Returns ``True`` if ambiguous, ``False`` otherwise.

        .. versionadded:: 2.6.0
        r   )Ú_is_ambiguous_or_imaginary©r,   Údts     r   Úis_ambiguousztzfile.is_ambiguous°   s   € ð ×.Ò.¨rÑ2Ô2°aÒ7Ð7r   c                 ó  — |�| j         rdS |                      |¦  «        }|                      |d|¬¦  «        }|                      |d|¬¦  «        }t          |j        |j        k    ¦  «        t          |j        |j        k    ¦  «        z
  S )Nr   )ÚfoldÚ	timestampr   )Ú_fixed_offsetÚ_get_local_timestampÚ_find_transÚintÚutcoff)r,   r6   r:   Útti_0Útti_1s        r   r4   z!tzfile._is_ambiguous_or_imaginaryÀ   s’   € Øˆ:˜Ô+ˆ:Ø�1à×-Ò-¨bÑ1Ô1ˆ	Ø× Ò  ¨!°yÐ ÑAÔAˆØ× Ò  ¨!°yÐ ÑAÔAˆõ �5”< %¤,Ò.Ñ/Ô/µ#ØŒL˜5œ<Ò'ñ3
ô 3
ñ 
ð 	
r   c                 ó6   — |                       |¦  «        j        S r   )r=   r?   r5   s     r   Ú	utcoffsetztzfile.utcoffsetÍ   ó   € Ø×Ò Ñ#Ô#Ô*Ð*r   c                 ó6   — |                       |¦  «        j        S r   )r=   Údstoffr5   s     r   Údstz
tzfile.dstÐ   rD   r   c                 ó6   — |                       |¦  «        j        S r   )r=   Útznamer5   s     r   rI   ztzfile.tznameÓ   rD   r   c                 ó&  — t          |t          ¦  «        st          d¦  «        ‚|j        | urt	          d¦  «        ‚|                      |¦  «        }t          | j        ¦  «        }|dk    r|| j        d         k     r| j        }d}�nl|dk    s|| j        d         k    r’t          | j	        t          ¦  «        sx| j	                             ||j        ¦  «        \  }}|rR|sP|dk    r| j        d         }n| j        }|j        |j        z
  }|                     ¦   «         || j        d         z
  k    }nÃ|dk    r
| j	        }d}n³t!          j        | j        |¦  «        }|dk    r'|| j        d         k    r| j        |dz
  |…         \  }}n4|| j        d         k    r| j        }| j	        }n| j        }| j        d         }|j        |j        z
  }|                     ¦   «         || j        |dz
           z
  k    }||j        z  }|rt%          |d¬¦  «        S |S )	a  
        The ``tzfile`` implementation of :py:func:`datetime.tzinfo.fromutc`.

        :param dt:
            A :py:class:`datetime.datetime` object.

        :raises TypeError:
            Raised if ``dt`` is not a :py:class:`datetime.datetime` object.

        :raises ValueError:
            Raised if this is called with a ``dt`` which does not have this
            ``tzinfo`` attached.

        :return:
            Returns a :py:class:`datetime.datetime` object representing the
            wall time in ``self``'s time zone.
        z&fromutc() requires a datetime argumentzdt.tzinfo is not selfr   r   éÿÿÿÿéþÿÿÿé   )r9   )r$   r   Ú	TypeErrorÚtzinfoÚ
ValueErrorr<   ÚlenÚ
_trans_utcÚ_tti_beforeÚ	_tz_afterÚ_ttinfoÚget_trans_info_fromutcÚyearÚ_ttinfosr?   Útotal_secondsÚbisectÚbisect_rightr	   )	r,   r6   r:   Ú	num_transÚttir9   Útti_prevÚshiftÚidxs	            r   Úfromutcztzfile.fromutcÖ   s:  € õ& ˜"�hÑ'Ô'ð 	FÝÐDÑEÔEÐEØŒ9˜DÐ Ð ÝÐ4Ñ5Ô5Ð5à×-Ò-¨bÑ1Ô1ˆ	Ý˜œÑ(Ô(ˆ	à˜Š>ˆ>˜i¨$¬/¸!Ô*<Ò<Ð<ØÔ"ˆCØˆD‰Dà˜ŠNˆN˜i¨$¬/¸"Ô*=Ò=Ð=Ý˜Tœ^­WÑ5Ô5ð >àœ×=Ò=Ø˜2œ7ñô ‰IˆC�ð ð O ð OØ˜q’=�=Ø#œ}¨RÔ0�H�Hà#Ô/�Hà œ¨#¬*Ñ4�Ø×*Ò*Ñ,Ô,¨y¸4¼?È2Ô;NÑ/NÒN�øØ˜!Š^ˆ^Ø”.ˆCØˆDˆDåÔ% d¤o°yÑAÔAˆCà˜1Š}ˆ} ¨d¬o¸aÔ.@Ò!@Ð!@Ø $¤¨c°A©g¸¨mÔ <‘�˜#˜#Ø˜Tœ_¨RÔ0Ò0Ð0ð  Ô+�Ø”n��àÔ+�Ø”m AÔ&�ð ”O c¤jÑ0ˆEØ×&Ò&Ñ(Ô(¨9°t´ÀsÈQÁwÔ7OÑ+OÒOˆDØ
ˆcŒjÑˆØð 	Ý˜" 1Ð%Ñ%Ô%Ð%àˆIr   c                 óv  — |€| j         r| j        S t          S |€|                      |¦  «        }n|}|€|j        }| j        |         }t          |¦  «        }|r||d         k     r| j        S |r||d         k    r”t          | j        t          ¦  «        rs| j         
                    ||j        |¦  «        }|r| j        d         nd }|�=|j        |j        k    r-||j                             ¦   «         z
  | j        d         k     r|S |S | j        S t!          j        ||¦  «        dz
  }	|	dk    sJ ‚| j        |	         S )Nr   rK   r   )r;   rT   Ú
_NO_TTINFOr<   r9   Ú_trans_localrQ   rS   r$   Ú_TZStrÚget_trans_inforW   rX   r?   rY   rR   rZ   r[   )
r,   r6   r9   r:   ÚtsÚltr\   r]   Úlast_ttir`   s
             r   r=   ztzfile._find_trans  s[  € Øˆ:ØÔ!ð "Ø”~Ð%å!Ð!àÐØ×*Ò*¨2Ñ.Ô.ˆBˆBàˆBàˆ<Ø”7ˆDàÔ˜tÔ$ˆå˜‘G”Gˆ	àð 	&˜˜b œeš˜ØÔ#Ð#Øð 	&˜b 2 b¤6šk˜kÝ˜$œ.­&Ñ1Ô1ð &Ø”n×3Ò3°B¸¼ÀÑFÔF�ð 1:ÐC˜4œ=¨Ô,Ð,¸t�àÐ(Øœ
 h¤oÒ5Ð5Ø˜SœZ×5Ò5Ñ7Ô7Ñ7¸$¼/È"Ô:MÒMÐMà#�Oà�
à”~Ð%õ Ô% b¨"Ñ-Ô-°Ñ1ˆCØ˜!’8�8�8�8Ø”= Ô%Ð%r   c                 ó|   — |                      ¦   «         t          z
  dz  |j        dz  z   |j        dz  z   |j        z   S )Né€Q é  é<   )Ú	toordinalÚEPOCHORDINALÚhourÚminuteÚsecondr5   s     r   r<   ztzfile._get_local_timestampP  sD   € à�\Š\‰^Œ^�lÑ*¨eÑ3ØŒg˜‰nñàŒi˜"‰nñð Œiñð	
r   )r   r;   Ú_isdstr   Ú
_trans_idxrd   rR   rS   Ú_ttinfo_listrX   rT   Ú_tz_strc                 ó,   — |                       d ¦  «        S r   )Ú__reduce_ex__r2   s    r   Ú
__reduce__ztzfile.__reduce__j  s   € Ø×!Ò! $Ñ'Ô'Ð'r   c                 ó>  ‡ — d„ ‰ j         D ¦   «         }d„ ‰ j         D ¦   «         }‰ j        }‰ j        }‰ j        }‰ j        }||||||f}‰ j        ‰ j        ‰ j        |f}	ˆ fd„t          ‰ ¦  «         	                    ¦   «         D ¦   «         }
|
r
t          |	|
fS t          |	fS )Nc                 óZ   — g | ](}t          |j                             ¦   «         ¦  «        ‘Œ)S © )r>   r?   rY   ©Ú.0Úttinfos     r   ú
<listcomp>z(tzfile.__reduce_ex__.<locals>.<listcomp>n  s;   € ð 
ð 
ð 
Ø39�C�”×+Ò+Ñ-Ô-Ñ.Ô.ð
ð 
ð 
r   c                 ó   — g | ]	}|j         ‘Œ
S r|   )rI   r}   s     r   r€   z(tzfile.__reduce_ex__.<locals>.<listcomp>q  s   € Ð>Ð>Ð> &�”Ð>Ð>Ð>r   c                 ó.   •— i | ]\  }}|‰j         v¯||“ŒS r|   )Ú_UNPICKLE_ATTRS)r~   ÚkÚvr,   s      €r   ú
<dictcomp>z(tzfile.__reduce_ex__.<locals>.<dictcomp>€  s3   ø€ ð 
ð 
ð 
Ù�Q˜°1¸DÔ<PÐ3PÐ3PˆAˆqÐ3PÐ3PÐ3Pr   )ru   rt   rs   rR   rv   r0   r   r   ÚvarsÚitemsr   )r,   Úprotocolr?   ÚabbrÚ	trans_idxÚisdstÚ	trans_utcÚtz_strr   ÚargsÚstates   `          r   rx   ztzfile.__reduce_ex__m  sÜ   ø€ ð
ð 
Ø=AÔ=Nð
ñ 
ô 
ˆð ?Ð>¨DÔ,=Ð>Ñ>Ô>ˆð ”Oˆ	Ø”ˆà”Oˆ	Ø”ˆà˜9 f¨e°T¸6ÐBˆØ” ¤	¨4¬>¸4Ð@ˆð
ð 
ð 
ð 
Ý! $™ZœZ×-Ò-Ñ/Ô/ð
ñ 
ô 
ˆð ð 	,Ý˜t UÐ+Ð+å˜4Ð Ð r   c                 óØ   — t          |¦  «        rt          |d¦  «        s&t          j        |                     ¦   «         ¦  «        }t          |¦  «        }|                      |¦  «         d S )NÚreadline)Ú_is_seekabler'   ÚioÚBytesIOÚreadÚ	load_datar   )r,   Úfobjr   s      r   r+   ztzfile._load_fileˆ  sc   € õ ˜DÑ!Ô!ð 	+­°°zÑ)BÔ)Bð 	+Ý”:˜dŸiši™kœkÑ*Ô*ˆDõ ˜‰ŒˆØ×Ò˜TÑ"Ô"Ð"Ð"Ð"r   c                 ó¸  — |\  }}}}}}|                       ||||¦  «        }d„ |D ¦   «         }	t          ||¦  «        D ]
\  }
}||	|
<   Œ|                      |||¦  «        }d„ t          ||	|¦  «        D ¦   «         }|| _        || _        || _        || _        || _        i }g | _        t          ||¦  «        D ]\  }
}||
         }|j	         
                    ¦   «         |k    r;|
|f}||vr+t          |j        t          |¦  «        |j        ¦  «        ||<   ||         }| j                             |¦  «         Œ€t!          t#          |¦  «        ¦  «        D ]}||         s||         | _         n"Œ| j        r| j        d         | _        nd | _        || _        |�-|dk    r't)          |                     ¦   «         ¦  «        | _        n?| j        s|st/          d¦  «        ‚| j        r| j        d         | _        n|d         | _        t#          |¦  «        dk    st1          | j        t          ¦  «        s	d| _        d S |s	d	| _        d S |d         | j        k    | _        d S )
Nc                 ó   — g | ]}|rd nd‘Œ	S )rl   r   r|   )r~   rG   s     r   r€   z*tzfile._load_from_data.<locals>.<listcomp>›  s!   € Ð6Ð6Ð6¨˜#Ð$�$�$ 1Ð6Ð6Ð6r   c                 ól   — g | ]1\  }}}t          t          |¦  «        t          |¦  «        |¦  «        ‘Œ2S r|   )rU   r   )r~   rC   Ú	dstoffsetrI   s       r   r€   z*tzfile._load_from_data.<locals>.<listcomp>¤  sQ   € ð 
ð 
ð 
ñ -�	˜9 fõ Ý 	Ñ*Ô*­O¸IÑ,FÔ,FÈñô ð
ð 
ð 
r   r   r   zNo time zone information found.rK   r   FT)Ú_utcoff_to_dstoffÚzipÚ_ts_to_localru   rt   rs   rR   rd   rX   rF   rY   rU   r?   r   rI   ÚappendÚrangerQ   rS   rv   Ú_parse_tz_strÚdecoderT   rP   r$   r;   )r,   r   r‹   r�   r?   rŒ   rŠ   rŽ   Útrans_dstoffrF   r`   Ú	trans_offÚtrans_localru   Úttinfosr]   r   Úis                     r   r   ztzfile._load_from_data“  sÎ  € Ø<@Ñ9ˆ	�9˜f e¨T°6ð ×-Ò-Ø�y &¨%ñ
ô 
ˆð 7Ð6°Ð6Ñ6Ô6ˆÝ! )¨\Ñ:Ô:ð 	$ð 	$‰NˆC�Ø#ˆF�3‰KˆKð ×'Ò'¨	°9¸fÑEÔEˆð
ð 
õ 14°F¸FÀDÑ0IÔ0Ið	
ñ 
ô 
ˆð )ˆÔà#ˆŒØˆŒØ#ˆŒØ'ˆÔð ˆØˆŒÝ! )¨\Ñ:Ô:ð 		&ð 		&‰NˆC�Ø˜sÔ#ˆCØŒz×'Ò'Ñ)Ô)¨YÒ6Ð6Ø˜IÐ&�Ø˜gÐ%Ð%Ý#*Øœ
¥O°IÑ$>Ô$>ÀÄ
ñ$ô $�G˜C‘Lð ˜c”l�ØŒM× Ò  Ñ%Ô%Ð%Ð%õ •s˜5‘z”zÑ"Ô"ð 	(ð 	(ˆAØ˜”8ð Ø#/°¤?�Ô Ø�ðð Œ}ð (Ø#'¤=°Ô#3�Ô Ð à#'�Ô ð ˆŒØÐ &¨C¢- -Ý*¨6¯=ª=©?¬?Ñ;Ô;ˆDŒNˆNà”=ð D¨ð DÝ Ð!BÑCÔCÐCàŒ}ð 1Ø!%¤¨rÔ!2�”�ð ".¨a¤�”õ* ˆ|ÑÔ˜qÒ Ð ­
°4´>Å7Ñ(KÔ(KÐ Ø!&ˆDÔÐÐØð 	CØ!%ˆDÔÐÐà!-¨a¤°D´NÒ!BˆDÔÐÐr   c                 ó  ‡‡‡‡— t          | ¦  «        }t          d„ t          ||¦  «        D ¦   «         d¦  «        }dg|z  Šdg|z  Št          |¦  «        ‰|ft          |dz
  dd¦  «        ‰dffD ]4\  }}}|D ]+Š| ‰         }	||	         s	||	         }Œ|�||	         |z
  |‰<   Œ,Œ5ˆˆˆfd„t          |¦  «        D ¦   «         }
dg|z  }t          |¦  «        D ]§Š|| ‰                  sŒd„ ‰‰         ‰‰         fD ¦   «         }t          |¦  «        dk    rd„ |D ¦   «         }|p|}t          |¦  «        dk    r)ˆˆfd	„|
D ¦   «         }||z  }t          |¦  «        dk    r|}|rt	          |d
„ ¬¦  «        |‰<   Œ¢d|‰<   Œ¨|S )aD  Infer the DST offset (the value of dst()) for each transition.

        TZif files give the total UTC offset of each local time type and
        whether it is DST, but not how much of the offset is DST, so this has
        to be worked out from the standard time on either side of each DST
        period. That is done for each transition rather than for each local
        time type, because zic reuses a local time type for periods with
        different standard offsets (e.g. UTC+0 DST in the Azores was double
        summer time in the 1940s and summer time later).
        c              3   ó$   K  — | ]\  }}|°|V — Œd S r   r|   )r~   r?   rG   s      r   ú	<genexpr>z+tzfile._utcoff_to_dstoff.<locals>.<genexpr>  s+   è è € ÐJÐJ™˜ ÀcÐJˆVÐJÐJÐJÐJÐJÐJr   Nr   rK   c                 ód   •— g | ],}‰|         r"‰|         ‰|         k    ¯‰|         ‰|         f‘Œ-S r|   r|   )r~   r¨   ÚafterÚbeforer�   s     €€€r   r€   z,tzfile._utcoff_to_dstoff.<locals>.<listcomp>  sQ   ø€ ð 
ð 
ð 
àØ�aŒyð
ð $ AœY¨%°¬(Ò2Ð2ð �qŒ\˜6 !œ9Ð%à2Ð2Ð2r   r   c                 ó   — h | ]}|¯|’ŒS r|   r|   ©r~   Úcs     r   ú	<setcomp>z+tzfile._utcoff_to_dstoff.<locals>.<setcomp>#  s   € Ð@Ð@Ð@ ¸aÐ@˜!Ð@Ð@Ð@r   c                 ó$   — h | ]}|d z  dk    ¯|’ŒS )i,  r   r|   r°   s     r   r²   z+tzfile._utcoff_to_dstoff.<locals>.<setcomp>(  s!   € ÐCÐCÐC 1°a¸#±gÀ²l°l˜Q°l°l°lr   c                 ó\   •— h | ](\  }}t          |‰‰         z
  ¦  «        t          k    ¯&|’Œ)S r|   )ÚabsÚ_DST_CONSENSUS_WINDOW)r~   rg   rF   r¨   r�   s      €€r   r²   z+tzfile._utcoff_to_dstoff.<locals>.<setcomp>2  sD   ø€ ð ð ð á"˜˜FÝ˜2 	¨!¤Ñ,Ñ-Ô-Õ1FÒFÐFð àFÐFÐFr   c                 ó,   — | dk     t          | ¦  «        fS ©Nr   )rµ   )r±   s    r   ú<lambda>z*tzfile._utcoff_to_dstoff.<locals>.<lambda>?  s   € ¸AÀºEÅ3ÀqÁ6Ä6¸?€ r   ©r   rl   )rQ   Únextrž   r¡   Úmin)r‹   r�   Ú
utcoffsetsÚisdstsÚnÚfirst_std_utcoffÚindicesÚimpliedÚ
std_utcoffr`   Ú	clear_cutÚdstoffsÚ
candidatesÚ	plausibleÚnearbyÚ	consensusr­   r®   r¨   s    `              @@@r   r�   ztzfile._utcoff_to_dstoffõ  sD  øøøø€ õ �	‰NŒNˆõ
  ØJÐJ¥s¨:°vÑ'>Ô'>ÐJÑJÔJØñ
ô 
Ðð �˜!‘ˆØ�˜‘
ˆå�1‰XŒX�vÐ/Ð0Ý�1�q‘5˜"˜bÑ!Ô! 5¨$Ð/ð-
ð 		>ð 		>Ñ(ˆG�W˜jð ð >ð >�Ø ”l�Ø˜c”{ð >Ø!+¨C¤�J�JØÐ+Ø!+¨C¤°:Ñ!=�G˜A‘Jøð>ð
ð 
ð 
ð 
ð 
ð 
å˜1‘X”Xð
ñ 
ô 
ˆ	ð �#˜‘'ˆÝ�q‘”ð $	"ð $	"ˆAØ˜) Aœ,Ô'ð Øà@Ð@ f¨Q¤i°°q´Ð%:Ð@Ñ@Ô@ˆJÝ�:‰Œ Ò"Ð"ð DÐC¨
ÐCÑCÔC�	Ø&Ð4¨*�
å�:‰Œ Ò"Ð"ðð ð ð ð à&/ðñ ô �ð
 '¨Ñ/�	Ý�y‘>”> QÒ&Ð&Ø!*�Jàð "õ ! Ð1JÐ1JÐKÑKÔK�˜‘
�
ð "�˜‘
�
àˆr   c                 ó  — |sg g gS t          |¦  «        t          |¦  «        g}t          |¦  «        dk    r!|d         }|| d                  }||k    r||}}n
|d         x}}|d         dxx         |z  cc<   |d         dxx         |z  cc<   t          dt          | ¦  «        ¦  «        D ]W}|| |dz
                    }|| |                  }||k    r||}}|d         |xx         |z  cc<   |d         |xx         |z  cc<   ŒX|S )z‡Generate number of seconds since 1970 *in the local time*.

        This is necessary to easily find the transition times in local timer   r   )ÚlistrQ   r¡   )r‹   Útrans_list_utcr½   Útrans_list_wallÚoffset_0Úoffset_1r¨   s          r   rŸ   ztzfile._ts_to_localG  s]  € ð
 ð 	Ø˜�8ˆOõ   Ñ/Ô/µ°nÑ1EÔ1EÐFˆåˆz‰?Œ?˜QÒÐØ! !”}ˆHØ! )¨A¤,Ô/ˆHØ˜(Ò"Ð"Ø%-¨x˜(�øà",¨Q¤-Ð/ˆH�xà˜Ô˜1ÐÐÔ Ñ)ÐÐÑØ˜Ô˜1ÐÐÔ Ñ)ÐÐÑå�q�#˜i™.œ.Ñ)Ô)ð 	.ð 	.ˆAØ! )¨A°©EÔ"2Ô3ˆHØ! )¨A¤,Ô/ˆHà˜(Ò"Ð"Ø%-¨x˜(�à˜AÔ˜qÐ!Ð!Ô! XÑ-Ð!Ð!Ñ!Ø˜AÔ˜qÐ!Ð!Ô! XÑ-Ð!Ð!Ñ!Ð!àÐr   c                 ó  — t          |t          ¦  «        st          S | j        |j        k    oY| j        |j        k    oI| j        |j        k    o9| j        |j        k    o)|                      ¦   «         |                     ¦   «         k    S r   )r$   r   ÚNotImplementedrR   rd   rX   rS   Ú_fallback_key©r,   Úothers     r   Ú__eq__ztzfile.__eq__i  sŽ   € Ý˜%¥Ñ(Ô(ð 	"Ý!Ð!ð ŒO˜uÔ/Ò/ð >ØÔ! UÔ%7Ò7ð>à” ¤Ò/ð>ð Ô  EÔ$5Ò5ð>ð ×"Ò"Ñ$Ô$¨×(;Ò(;Ñ(=Ô(=Ò=ð	
r   c                 óR   — t          | j        t          ¦  «        r| j        S | j        S r   )r$   rT   rU   rv   r2   s    r   rÒ   ztzfile._fallback_keyu  s(   € õ �d”n¥gÑ.Ô.ð 	"Ø”>Ð!ØŒ|Ðr   c                 óJ   — | j         j        ›dt          | j        ¦  «        ›d�S )Nú(ú))r0   Ú__name__r(   r   r2   s    r   Ú__repr__ztzfile.__repr__€  s(   € Øœ>Ô2Ð2Ð2µD¸¼Ñ4HÔ4HÐ4HÐ4HÐIÐIr   ©NN)rÚ   Ú
__module__Ú__qualname__Ú__doc__r#   Úpropertyr   r7   r4   rC   rG   rI   ra   r=   r<   Ú	frozensetrƒ   ry   rx   r+   r   Ústaticmethodr�   rŸ   rÕ   rÒ   Ú__hash__rÛ   Ú__classcell__)r0   s   @r   r   r   0   sÂ  ø€ € € € € ðSð Sðjð ð ð ð ð ð4 ðð ñ „Xðð8ð 8ð 8ð 
ð 
ð 
ð+ð +ð +ð+ð +ð +ð+ð +ð +ðGð Gð GðR/&ð /&ð /&ð /&ðb
ð 
ð 
ð  �ið	
ð 	
ð 	
ñô €Oð"(ð (ð (ð!ð !ð !ð6	#ð 	#ð 	#ð`Cð `Cð `CðD ðOð Oñ „\ðOðb ðð ñ „\ððB

ð 

ð 

ðð ð ð €HðJð Jð Jð Jð Jð Jð Jr   r   Úwin32)é   é   c                 óX  — t          | d¦  «        sdS t          | dd ¦  «        }|� |¦   «         sdS t          sdS 	 |                      ¦   «         }n# t          t
          t          f$ r Y dS w xY w	 t          j        t          j
        |¦  «        j        ¦  «        S # t
          $ r Y dS w xY w)NÚseekFÚseekableT)r'   ÚgetattrÚ_SEEKABLE_PIPES_BUGÚfilenoÚAttributeErrorÚOSErrorrP   ÚstatÚS_ISREGÚosÚfstatÚst_mode)r˜   rê   Úfds      r   r“   r“   ‰  sÌ   € Ý�4˜Ñ Ô ð Øˆuå�t˜Z¨Ñ.Ô.€HàÐ H H¡J¤JÐØˆuåð ØˆtðØ�[Š[‰]Œ]ˆˆøÝ�G¥ZÐ0ð ð ð àˆtˆtðøøøðÝŒ|�BœH R™LœLÔ0Ñ1Ô1Ð1øÝð ð ð Øˆtˆtðøøøs#   ¼A ÁA,Á+A,Á0*B Â
B)Â(B)c                 óp   — 	 t          | ¦  «        S # t          j        $ r}t          d¦  «        |‚d }~ww xY w)Nú)Invalid TZif file: unexpected end of file)Ú
_load_dataÚstructÚerrorrP   )r˜   Úes     r   r—   r—   ¢  sL   € ðMÝ˜$ÑÔÐøÝŒ<ð Mð Mð MåÐDÑEÔEÈ1ÐLøøøøðMøøøs   ‚ ‘5 0°5c                 óÜ  ‡ ‡‡‡— t                                ‰ ¦  «        }|j        dk    rd}d}nld}d}|j        dz  |j        dz  z   |j        z   |j        dz  z   |j        z   |j        z   }‰  	                    |d¦  «         t                                ‰ ¦  «        }|j        }|j        }|j        }|rŽt          j        d|›|›�‰                      ||z  ¦  «        ¦  «        }t          j        d	|z  ‰                      |¦  «        ¦  «        }	t          |	¦  «        |k    rt          d
t          |	¦  «        z  ¦  «        ‚nd}d}	|r't          ˆ fd„t!          |¦  «        D ¦   «         Ž \  }
}}nd}
d}d}i Š‰                      |¦  «        Šˆˆfd„Št#          ˆfd„|D ¦   «         ¦  «        }|j        |j        z   |j        |dz   z  z   }‰  	                    |d¦  «         |j        dk    r{‰                      d¦  «        }|dk    rt          d|z  ¦  «        ‚‰                      ¦   «         }|                     d¦  «        st          d¦  «        ‚|                     d¦  «        }nd }|	||
|||fS )Nr   é   Úlé   Úqé   é   ú>z>%sBz5Invalid transition index found while reading TZif: %sr|   c              3   óh   •K  — | ],}t          j        d ‰                     d¦  «        ¦  «        V — Œ-dS )z>lbbr  N)rù   Úunpackr–   )r~   r¨   r˜   s     €r   r«   z_load_data.<locals>.<genexpr>Ý  s9   øè è € ÐJÐJ°a�fŒm˜F D§I¢I¨a¡L¤LÑ1Ô1ÐJÐJÐJÐJÐJÐJr   c                 ó†   •— | ‰vr5‰                      d| ¦  «        }‰| |…                              ¦   «         ‰| <   ‰|          S )Nó    )Úfindr£   )r`   Úspan_endÚ
abbr_charsÚ	abbr_valss     €€r   Úget_abbrz_load_data.<locals>.get_abbrë  sK   ø€ ð �iÐÐØ!—’ w°Ñ4Ô4ˆHØ'¨¨H¨Ô5×<Ò<Ñ>Ô>ˆI�c‰Nà˜Œ~Ðr   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r   r|   )r~   r`   r  s     €r   r«   z_load_data.<locals>.<genexpr>ü  s+   øè è € Ð2Ð2 3��˜#‘”Ð2Ð2Ð2Ð2Ð2Ð2r   rM   ó   
z+Invalid TZif file: expected newline, got %rr÷   )Ú_TZifHeaderÚ	from_fileÚversionÚtimecntÚtypecntÚcharcntÚleapcntÚisstdcntÚisutcntré   rù   r  r–   ÚmaxrP   rž   r¡   Útupler’   ÚendswithÚrstrip)r˜   ÚheaderÚ	time_sizeÚ	time_typeÚ
skip_bytesr  r  r  rÌ   r‹   r?   rŒ   ÚabbrindrŠ   r±   ÚlinerŽ   r
  r  r  s   `                @@@r   rø   rø   ª  sé  øøøø€ Ý×"Ò" 4Ñ(Ô(€Fà„~˜ÒÐØˆ	Øˆ	ˆ	ð ˆ	Øˆ	ð
 ŒN˜QÑØŒn˜qÑ ñ!àŒnñð Œn˜qÑ ñ!ð Œoñ	ð
 Œnñð 	ð 	�	Š	�*˜aÑ Ô Ð õ ×&Ò& tÑ,Ô,ˆàŒn€GØŒn€GØŒn€Gð ð Ýœ˜Ø�w 	 	Ð*¨D¯IªI°gÀ	Ñ6IÑ,JÔ,Jñ
ô 
ˆõ ”M &¨7Ñ"2°D·I²I¸gÑ4FÔ4FÑGÔGˆ	åˆy‰>Œ>˜WÒ$Ð$ÝØGÝ�i‘.”.ñ!ñô ð ð %ð ˆØˆ	ð ð Ý!$ØJÐJÐJÐJ½5À¹>¼>ÐJÑJÔJð"
Ñˆ��w�wð ˆØˆØˆð €IØ—’˜7Ñ#Ô#€Jðð ð ð ð ð õ" Ð2Ð2Ð2Ð2¨'Ð2Ñ2Ô2Ñ2Ô2€Dð 	Œ˜œÑ(¨6¬>¸YÈ¹]Ñ+KÑKð ð 	‡I‚Iˆj˜!ÑÔÐØ„~˜ÒÐØ�IŠI�a‰LŒLˆØ�Š:ˆ:ÝÐJÈQÑNÑOÔOÐOà�}Š}‰ŒˆØ�}Š}˜UÑ#Ô#ð 	JÝÐHÑIÔIÐIØ—’˜UÑ#Ô#ˆˆàˆà�n f¨e°T¸6ÐAÐAr   i Ìc                   ó2   — e Zd Zg d¢Zd„ Zed„ ¦   «         ZdS )r  )r  r  r  r  r  r  r  c                 ó¬   — t          | j        ¦  «        t          |¦  «        k    sJ ‚t          | j        |¦  «        D ]\  }}t          | ||¦  «         Œd S r   )rQ   Ú	__slots__rž   Úsetattr)r,   r�   ÚattrÚvals       r   r#   z_TZifHeader.__init__'  sa   € Ý�4”>Ñ"Ô"¥c¨$¡i¤iÒ/Ð/Ð/Ð/Ý˜Tœ^¨TÑ2Ô2ð 	%ð 	%‰IˆD�#Ý�D˜$ Ñ$Ô$Ð$Ð$ð	%ð 	%r   c                 ó<  — |                      d¦  «        dk    rt          d¦  «        ‚|                      d¦  «        }|dk    rd}nt          |¦  «        }|                      d¦  «         |f}|t          j        d|                      d¦  «        ¦  «        z   } | |Ž S )	Nrý   s   TZifz"Invalid TZif file: magic not foundr   r  é   z>6lé   )r–   rP   r>   rù   r  )r   ÚstreamÚ_versionr  r�   s        r   r  z_TZifHeader.from_file,  s˜   € ð �;Š;�q‰>Œ>˜WÒ$Ð$ÝÐAÑBÔBÐBà—;’;˜q‘>”>ˆØ�wÒÐØˆGˆGå˜(‘m”mˆGØ�Š�B‰Œˆàˆzˆð •f”m E¨6¯;ª;°r©?¬?Ñ;Ô;Ñ;ˆàˆs�DˆzÐr   N)rÚ   rÝ   rÞ   r$  r#   Úclassmethodr  r|   r   r   r  r    sO   € € € € € ðð ð €Ið%ð %ð %ð
 ðð ñ „[ðð ð r   r  c                   ó(   — e Zd Zg d¢Zd„ Zd„ Zd„ ZdS )rU   ©r?   rF   rI   c                 ó0   — || _         || _        || _        d S r   r/  )r,   r?   rF   rI   s       r   r#   z_ttinfo.__init__D  s   € ØˆŒØˆŒØˆŒˆˆr   c                 óš   — t          |t          ¦  «        st          S | j        |j        k    o| j        |j        k    o| j        |j        k    S r   )r$   rU   rÑ   r?   rF   rI   rÓ   s     r   rÕ   z_ttinfo.__eq__I  sO   € Ý˜%¥Ñ)Ô)ð 	"Ý!Ð!ð ŒK˜5œ<Ò'ð ,Ø”˜uœ|Ò+ð,à”˜uœ|Ò+ð	
r   c                 óP   — | j         j        ›d| j        ›d| j        ›d| j        ›d�S )NrØ   z, rÙ   )r0   rÚ   r?   rF   rI   r2   s    r   rÛ   z_ttinfo.__repr__T  s5   € àŒNÔ#Ð#Ð#ØŒKˆKˆKØŒKˆKˆKØŒKˆKˆKð	
ð 	
r   N)rÚ   rÝ   rÞ   r$  r#   rÕ   rÛ   r|   r   r   rU   rU   A  sL   € € € € € Ø.Ð.Ð.€Iðð ð ð

ð 
ð 
ð
ð 
ð 
ð 
ð 
r   rU   c                 ó   — |                       dd¦  «        ^}}d}t          j        ||t          j        ¦  «        }|€t	          d| z  ¦  «        ‚|                     d¦  «        }|                     d¦  «        }d }|                     d¦  «        }|r|                     d¦  «        }|                     d¦  «        }|r5	 t          |¦  «        }n6# t          $ r}	t	          d	| z  ¦  «        ‚d }	~	ww xY wt	          d	| z  ¦  «        ‚|�Ê|                     d
¦  «        }|r5	 t          |¦  «        }n)# t          $ r}	t	          d| z  ¦  «        ‚d }	~	ww xY w|dz   }|st	          d| z  ¦  «        ‚|d                               dd¦  «        }
	 d„ |
D ¦   «         \  }}n$# t          $ r}	t	          d| z  ¦  «        ‚d }	~	ww xY wt          ||||||¦  «        S |rt	          d| z  ¦  «        ‚t          t          |¦  «        t          d¦  «        |¦  «        S )Nú,r   z­(?P<std>[a-zA-Z]+|<[a-zA-Z0-9+-]+>)(?:(?P<stdoff>[+-]?\d{1,3}(?::\d{2}(?::\d{2})?)?)(?:(?P<dst>[a-zA-Z]+|<[a-zA-Z0-9+-]+>)(?P<dstoff>[+-]?\d{1,3}(?::\d{2}(?::\d{2})?)?)?)?)?z%s is not a valid TZ stringÚstdrG   z<>ÚstdoffzInvalid STD offset in %srF   zInvalid DST offset in %srl   zMissing transition rules: %sr   c              3   ó4   K  — | ]}t          |¦  «        V — Œd S r   )Ú_parse_dst_start_end)r~   Úxs     r   r«   z _parse_tz_str.<locals>.<genexpr>   s+   è è € ÐJÐJ°aÕ.¨qÑ1Ô1ÐJÐJÐJÐJÐJÐJr   zInvalid TZ string: %sz'Transition rule present without DST: %s)ÚsplitÚreÚ	fullmatchÚASCIIrP   ÚgroupÚstripÚ_parse_tz_deltare   rU   r   )rŽ   Ú
offset_strÚstart_end_strÚ	parser_reÚmÚstd_abbrÚdst_abbrÚ
dst_offsetÚ
std_offsetrû   Ústart_end_strsÚstartÚends                r   r¢   r¢   `  s~  € ð "(§¢¨c°1Ñ!5Ô!5Ð€J�ð	ð õ 	Œ�Y 
­B¬HÑ5Ô5€Aà€yÝÐ6¸Ñ?Ñ@Ô@Ð@à�wŠw�u‰~Œ~€HØ�wŠw�u‰~Œ~€HØ€Jà�~Š~˜dÑ#Ô#€Hàð (Ø—>’> $Ñ'Ô'ˆà—’˜Ñ"Ô"€JØð >ð	BÝ(¨Ñ4Ô4ˆJˆJøÝð 	Bð 	Bð 	BÝÐ7¸&Ñ@ÑAÔAÐAøøøøð	Bøøøõ Ð3°fÑ<Ñ=Ô=Ð=àÐØ—W’W˜XÑ&Ô&ˆ
Øð 	+ðFÝ,¨ZÑ8Ô8�
�
øÝð Fð Fð FÝ Ð!;¸fÑ!DÑEÔEÐEøøøøðFøøøð $ dÑ*ˆJàð 	FÝÐ;¸fÑDÑEÔEÐEà& qÔ)×/Ò/°°QÑ7Ô7ˆð	?ØJÐJ¸>ÐJÑJÔJ‰JˆE�3�3øÝð 	?ð 	?ð 	?ÝÐ4°vÑ=Ñ>Ô>Ð>øøøøð	?øøøõ �h 
¨H°jÀ%ÈÑMÔMÐMØ	ð 
ÝÐBÀVÑKÑLÔLÐLõ Ý˜JÑ'Ô'­¸Ñ);Ô);¸Xñ
ô 
ð 	
sH   Â?C Ã
C0ÃC+Ã+C0ÄD/ Ä/
EÄ9EÅEÆ	F Æ
F:Æ#F5Æ5F:c                 ó^  — |                       dd¦  «        ^}}|d d…         }|dk    rtd}t          j        d|t          j        ¦  «        }|€t	          d| z  ¦  «        ‚t          t          t          |                     ¦   «         ¦  «        ¦  «        }t          |Ž }nf|dk    rd}|dd …         }nd}t          j        d	|t          j        ¦  «        €t	          d| z  ¦  «        ‚t          |¦  «        }t          ||¦  «        }|r(t          |d
         ¦  «        \  |_        |_        |_        |S )Nú/r   ÚMFzM(\d{1,2})\.(\d)\.(\d)zInvalid dst start/end date: %sÚJTz\d{1,3}r   )r:  r;  r<  r=  rP   r  Úmapr>   ÚgroupsÚ_CalendarOffsetÚ
_DayOffsetÚ_parse_transition_timerp   rq   rr   )	ÚdststrÚdateÚtimeÚ	date_typeÚn_is_julianrD  Údate_offsetÚoffsetÚdoys	            r   r8  r8  ®  s*  € Ø—,’,˜s AÑ&Ô&€K€Dˆ4Ø�R�a�R”€IØ�CÒÐØˆÝŒLÐ2°D½"¼(ÑCÔCˆØˆ9ÝÐ=ÀÑFÑGÔGÐGÝ�C¥ Q§X¢X¡Z¤ZÑ0Ô0Ñ1Ô1ˆÝ  +Ð.ˆˆà˜ÒÐØˆKØ˜˜˜”8ˆDˆDàˆKåŒ<˜
 D­"¬(Ñ3Ô3Ð;ÝÐ=ÀÑFÑGÔGÐGÝ�$‰iŒiˆÝ˜C Ñ-Ô-ˆàð 
Ý4JØ�ŒGñ5
ô 5
Ñ1ˆŒ�V”] F¤Mð €Mr   c                 ó.  — t          j        d| t           j        ¦  «        }|€t          d| z  ¦  «        ‚d„ t	          |j        d¦  «        D ¦   «         \  }}}|dk    rt          d| z  ¦  «        ‚|                     d¦  «        dk    r	| | | }}}|||fS )	Nú=(?P<sign>[+-])?(?P<h>\d{1,3})(:(?P<m>\d{2})(:(?P<s>\d{2}))?)?zInvalid time: %sc              3   ó8   K  — | ]}t          |pd ¦  «        V — ŒdS ©r   N©r>   ©r~   r…   s     r   r«   z)_parse_transition_time.<locals>.<genexpr>Õ  ó,   è è € ÐFÐF˜q�s�1�6˜‰{Œ{ÐFÐFÐFÐFÐFÐFr   ©ÚhrD  Úsé§   zHour must be in [0, 167]: %sÚsignú-)r;  r<  r=  rP   rP  r>  )Útime_strÚmatchre  rD  rf  s        r   rT  rT  Ì  s°   € ÝŒLØHØÝ
Œñô €Eð
 €}ÝÐ+¨hÑ6Ñ7Ô7Ð7àFÐF¥C¨¬°_Ñ$EÔ$EÐFÑFÔF�G€A€qˆ!àˆ3‚w€wÝÐ7¸(ÑBÑCÔCÐCà‡{‚{�6ÑÔ˜cÒ!Ð!Ø�"�q�b˜1˜"ˆaˆ1ˆàˆa�ˆ7€Nr   c                 ó,  — t          j        d| t           j        ¦  «        }|€
J | ¦   «         ‚d„ t          |j        d¦  «        D ¦   «         \  }}}|dz  |dz  z   |z   }|dk    rt          d| z  ¦  «        ‚|                     d¦  «        d	k    r|d
z  }|S )Nr^  c              3   ó8   K  — | ]}t          |pd ¦  «        V — ŒdS r`  ra  rb  s     r   r«   z"_parse_tz_delta.<locals>.<genexpr>ê  rc  r   rd  rl   rm   r*  z#Offset hours must be in [0, 24]: %srh  ri  rK   )r;  r<  r=  rP  r>  rP   )Útz_deltark  re  rD  rf  Útotals         r   r@  r@  à  s´   € ÝŒLØHØÝ
Œñô €Eð ÐÐ˜hÑÔÐàFÐF¥C¨¬°_Ñ$EÔ$EÐFÑFÔF�G€A€qˆ!à�‰H�q˜2‘vÑ Ñ!€Eàˆ2‚v€vÝÐ>ÀÑIÑJÔJÐJð ‡{‚{�6ÑÔ˜cÒ!Ð!Ø�‰ˆà€Lr   c                   ó@   — e Zd ZdZ	 d
d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d	„ Z
dS )re   )r5  rG   rJ  rK  rf   rV   Údst_diffNc                 óp  — ||z
  | _         t          |¦  «        }t          |t          d¦  «        |¬¦  «        | _        || _        || _        t          |¦  «        }t          | j         ¦  «        }t          |||¬¦  «        | _        |€
J d¦   «         ‚|€
J d¦   «         ‚| j        | _        | j	        | _
        d S )Nr   r/  zNo transition start specifiedzNo transition end specified)rq  r   rU   r5  rJ  rK  rG   Ú_get_trans_inforf   Ú_get_trans_info_fromutcrV   )r,   rE  rH  rF  rG  rJ  rK  Údeltas           r   r#   z_TZStr.__init__  sÇ   € ð # ZÑ/ˆŒÝ$ ZÑ0Ô0ˆ
ÝØ¥o°aÑ&8Ô&8Àð
ñ 
ô 
ˆŒð ˆŒ
ØˆŒå$ ZÑ0Ô0ˆ
Ý ¤Ñ.Ô.ˆÝ *°UÀ8ÐLÑLÔLˆŒð Ð Ð Ð"AÑ Ô Ð ØˆˆÐ =‰Œˆà"Ô2ˆÔØ&*Ô&BˆÔ#Ð#Ð#r   c                 ór   — | j                              |¦  «        }| j                             |¦  «        }||fS r   )rJ  Úyear_to_epochrK  )r,   rW   rJ  rK  s       r   Útransitionsz_TZStr.transitions  s6   € Ø”
×(Ò(¨Ñ.Ô.ˆØŒh×$Ò$ TÑ*Ô*ˆØ�cˆzÐr   c                 óˆ   — t          |¦  «        dz  }t          |dz   ¦  «        dz  }||t          z   k     p||t          z
  k    S )zmWhether ts is close enough to the new year that the rules for the
        previous or next year might matter.rk   r   )Ú_post_epoch_days_before_yearÚ_NEW_YEAR_MARGIN)r,   rg   rW   Ú
year_startÚyear_ends        r   Ú_near_new_yearz_TZStr._near_new_year   sR   € õ 2°$Ñ7Ô7¸%Ñ?ˆ
Ý/°°q±Ñ9Ô9¸EÑAˆà�Õ.Ñ.Ò.ð 1Ø�XÕ 0Ñ0Ò0ð	
r   c                 óB  — |                       ||¦  «        r|                      ||¦  «        S |                      |¦  «        \  }}|| j        dk    k    r|| j        z  }n
|| j        z  }||k     r||cxk    o|k     nc }n||cxk    o|k     nc  }|r| j        n| j        S )z6Get the information about the current transition - ttir   )r~  Ú_get_trans_info_near_new_yearrx  rq  rG   r5  )r,   rg   rW   r9   rJ  rK  rŒ   s          r   rs  z_TZStr._get_trans_info*  sÙ   € à×Ò˜r 4Ñ(Ô(ð 	@Ø×5Ò5°b¸$Ñ?Ô?Ð?à×%Ò% dÑ+Ô+‰
ˆˆsð �D”M QÒ&Ò'Ð'Ø�4”=Ñ ˆCˆCà�T”]Ñ"ˆEà�3Š;ˆ;Ø˜RÐ%Ð%Ò%Ð% #Ò%Ð%Ð%Ð%ˆEˆEà Ð*Ð*Ò*Ð* UÒ*Ð*Ð*Ð*Ð+ˆEà Ð.ˆtŒxˆx d¤hÐ.r   c                 óî  — g }| j         | j        fD ]“}||j                             ¦   «         z
  }	 t          t          |¬¦  «        z   j        }n$# t          $ r |dk     rt          nt          }Y nw xY w|  
                    ||¦  «        \  }}||u r|                     |¦  «         Œ”t          |¦  «        dk    r|d         S t          | j         | j        fd„ ¬¦  «        \  }	}
|r
|dk    r|
n|	S |dk    r|	n|
S )Nr   r   r   c                 ó   — | j         S r   )r?   )Úts    r   r¹   z6_TZStr._get_trans_info_near_new_year.<locals>.<lambda>[  s   € ÀQÄX€ r   rº   )r5  rG   r?   rY   ÚEPOCHr   rW   ÚOverflowErrorr   r   Ú%_get_trans_info_fromutc_near_new_yearr    rQ   Úsorted)r,   rg   r9   Úvalidr]   Úutc_tsÚutc_yearÚactualÚ_ÚsmallerÚlargers              r   r€  z$_TZStr._get_trans_info_near_new_yearE  s/  € ð
 ˆØ”H˜dœhÐ'ð 	"ð 	"ˆCØ˜#œ*×2Ò2Ñ4Ô4Ñ4ˆFð>Ý!¥I°fÐ$=Ñ$=Ô$=Ñ=ÔC��øÝ ð >ð >ð >à&,¨q¢j j�7˜7µg���ð>øøøð ×BÒBØ˜ñô ‰IˆF�Að ˜ˆ}ˆ}Ø—’˜SÑ!Ô!Ð!øåˆu‰:Œ:˜Š?ˆ?Ø˜”8ˆOå  $¤(¨D¬HÐ!5Ð;MÐ;MÐNÑNÔN‰ˆ�Øð 	4à! QšY˜Y�6�6¨GÐ3ð # aši˜i�7�7¨VÐ3s   °AÁA/Á.A/c                 ó¤  — | j         j                             ¦   «         }| j        j                             ¦   «         }g }|dz
  ||dz   fD ]N}|                      |¦  «        \  }}|                     ||z
  df¦  «         |                     ||z
  df¦  «         ŒO|                     ¦   «          |d         d          }	d }
d}|t          |¦  «        k     r®||         d         |k    rœ||         d         }|	}|t          |¦  «        k     rJ||         d         |k    r8||         d         }|dz  }|t          |¦  «        k     r||         d         |k    °8||	k    r|}	|}
|t          |¦  «        k     r||         d         |k    °œ|	r| j        | j         }}n| j         | j        }}d}|
�*|j        |j        z
                       ¦   «         }|||
z
  k    }||fS )Nr   TFr   )r5  r?   rY   rG   rx  r    ÚsortrQ   )r,   rg   rW   rÃ   Ú
dst_utcoffrx  ÚyrJ  rK  rŒ   Úlast_changer¨   Útrans_tsÚ	new_isdstr]   r^   r9   r_   s                     r   r†  z,_TZStr._get_trans_info_fromutc_near_new_yearc  s  € ð ”X”_×2Ò2Ñ4Ô4ˆ
Ø”X”_×2Ò2Ñ4Ô4ˆ
àˆØ˜‘(˜D $¨¡(Ð+ð 	:ð 	:ˆAØ×)Ò)¨!Ñ,Ô,‰JˆE�3Ø×Ò ¨
Ñ 2°DÐ9Ñ:Ô:Ð:Ø×Ò  jÑ 0°%Ð8Ñ9Ô9Ð9Ð9ð
 	×ÒÑÔÐà ”N 1Ô%Ð%ˆØˆØˆØ•#�kÑ"Ô"Ò"Ð" {°1¤~°aÔ'8¸BÒ'>Ð'>Ø" 1”~ aÔ(ˆHØˆIØ•c˜+Ñ&Ô&Ò&Ð&¨;°q¬>¸!Ô+<ÀÒ+HÐ+HØ'¨œN¨1Ô-�	Ø�Q‘�ð •c˜+Ñ&Ô&Ò&Ð&¨;°q¬>¸!Ô+<ÀÒ+HÐ+Hð ˜EÒ!Ð!Ø!�Ø&�ð •#�kÑ"Ô"Ò"Ð" {°1¤~°aÔ'8¸BÒ'>Ð'>ð ð 	/Ø œH d¤h�ˆCˆCà œH d¤h�ˆCð ˆØÐ"Ø”_ s¤zÑ1×@Ò@ÑBÔBˆEØ˜2 Ñ+Ò+ˆDà�Tˆ{Ðr   c                 óê  — |                       ||¦  «        r|                      ||¦  «        S |                      |¦  «        \  }}|| j        j                             ¦   «         z  }|| j        j                             ¦   «         z  }||k     r||cxk    o|k     nc }n||cxk    o|k     nc  }| j        dk    r|}|| j        z   }n|}|| j        z
  }||cxk    o|k     nc }|r| j        n| j        |fS r¸   )r~  r†  rx  r5  r?   rY   rG   rq  )	r,   rg   rW   rJ  rK  rŒ   Úambig_startÚ	ambig_endr9   s	            r   rt  z_TZStr._get_trans_info_fromutc’  s8  € Ø×Ò˜r 4Ñ(Ô(ð 	HØ×=Ò=¸bÀ$ÑGÔGÐGà×%Ò% dÑ+Ô+‰
ˆˆsØ�””×.Ò.Ñ0Ô0Ñ0ˆØˆtŒxŒ×,Ò,Ñ.Ô.Ñ.ˆà�3Š;ˆ;Ø˜RÐ%Ð%Ò%Ð% #Ò%Ð%Ð%Ð%ˆEˆEà Ð*Ð*Ò*Ð* UÒ*Ð*Ð*Ð*Ð+ˆEð
 Œ=˜1ÒÐØˆKØ˜dœmÑ+ˆIˆIàˆKØ ¤Ñ-ˆIà˜bÐ,Ð,Ò,Ð, 9Ò,Ð,Ð,Ð,ˆà!Ð/�”� t¤x°Ð6Ð6r   rÜ   )rÚ   rÝ   rÞ   r$  r#   rx  r~  rs  r€  r†  rt  r|   r   r   re   re   ø  s•   € € € € € ð€Ið KOðCð Cð Cð Cð0ð ð ð

ð 
ð 
ð/ð /ð /ð64ð 4ð 4ð<-ð -ð -ð^7ð 7ð 7ð 7ð 7r   re   i / c                 óP   — | dz
  }|dz  |dz  z   |dz  z
  |dz  z   dz   t           z
  S )z8Get the number of days between 1970-01-01 and YEAR-01-01r   ém  rý   éd   i�  )ro   )rW   r’  s     r   rz  rz  µ  s:   € àˆq‰€AØˆs‰7�Q˜!‘VÑ˜a 3™hÑ&¨¨c©Ñ1°AÑ5½ÑDÐDr   c                   ó$   — e Zd Zg d¢Zdd„Zd„ ZdS )rS  )ÚdÚjulianrp   rq   rr   rM   r   c                 óž   — d|z   }||cxk    rdk    sn t          d|›d|›�¦  «        ‚|| _        || _        || _        || _        || _        d S )Nr   rš  zd must be in [z, 365], not: )rP   r�  rž  rp   rq   rr   )r,   r�  rž  rp   rq   rr   Úmin_days          r   r#   z_DayOffset.__init__¾  sl   € Ø�f‘*ˆØ˜!Ð"Ð"Ò"Ð"˜sÒ"Ð"Ð"Ð"Ý�*À'À'À'È1È1ÐMÑNÔNÐNàˆŒØˆŒØˆŒ	ØˆŒØˆŒˆˆr   c                 óØ   — t          |¦  «        }| j        }| j        r$|dz  }|dk    rt          j        |¦  «        r|dz  }||z   dz  }|| j        dz  | j        dz  z   | j        z   z  }|S )Nr   é;   rk   rl   rm   )rz  r�  rž  ÚcalendarÚisleaprp   rq   rr   )r,   rW   Údays_before_yearr�  Úepochs        r   rw  z_DayOffset.year_to_epochÉ  s„   € Ý7¸Ñ=Ô=Ðð
 ŒFˆØŒ;ð 	Ø�‰FˆAØ�BŠwˆw�8œ?¨4Ñ0Ô0ˆwØ�Q‘�à! AÑ%¨Ñ.ˆØ�”˜TÑ! D¤K°"Ñ$4Ñ4°t´{ÑBÑBˆàˆr   N©rM   r   r   )rÚ   rÝ   rÞ   r$  r#   rw  r|   r   r   rS  rS  »  sB   € € € € € Ø;Ð;Ð;€Ið	ð 	ð 	ð 	ðð ð ð ð r   rS  c                   ó>   — e Zd Zg d¢ZdZd	d„Zed„ ¦   «         Zd„ ZdS )
rR  )rD  Úwr�  rp   rq   rr   )rK   r   é   r¢  éZ   éx   é—   éµ   éÔ   éó   i  i0  iN  rM   r   c                 ó  — d|cxk    rdk    sn t          d¦  «        ‚d|cxk    rdk    sn t          d¦  «        ‚d|cxk    rdk    sn t          d¦  «        ‚|| _        || _        || _        || _        || _        || _        d S )	Nr   é   zm must be in [1, 12]r  zw must be in [1, 5]r   r  zd must be in [0, 6])rP   rD  r©  r�  rp   rq   rr   )r,   rD  r©  r�  rp   rq   rr   s          r   r#   z_CalendarOffset.__init__î  s¢   € Ø�Aˆ|ˆ|Š|ˆ|˜Š|ˆ|ˆ|ˆ|ÝÐ3Ñ4Ô4Ð4à�Aˆ{ˆ{Š{ˆ{˜Š{ˆ{ˆ{ˆ{ÝÐ2Ñ3Ô3Ð3à�Aˆ{ˆ{Š{ˆ{˜Š{ˆ{ˆ{ˆ{ÝÐ2Ñ3Ô3Ð3àˆŒØˆŒØˆŒØˆŒ	ØˆŒØˆŒˆˆr   c                 ó~   — t          |¦  «        | j        |         z   |dk    ot          j        |¦  «        z   |z   dz
  S )NrM   r   )rz  Ú_DAYS_BEFORE_MONTHr£  r¤  )r   rW   ÚmonthÚdays       r   Ú_ymd2ordz_CalendarOffset._ymd2ordÿ  sS   € õ )¨Ñ.Ô.ØÔ$ UÔ+ñ,à�qŠyÐ2�Xœ_¨TÑ2Ô2ñ4ð ñð ñ	ð	
r   c                 óÀ  — |                       || j        d¦  «        }|dz   dz  }| j        dk    r|                       |dz   dd¦  «        }n|                       || j        dz   d¦  «        }||z
  }| j        |dz   z
  dz  dz   }|| j        dz
  dz  z  }||k    r|dz  }|                       || j        |¦  «        }|dz  }|| j        dz  | j        dz  z   | j        z   z  }|S )z7Calculates the datetime of the occurrence from the yearr   ræ   é   r²  rk   rl   rm   )r·  rD  r�  r©  rp   rq   rr   )	r,   rW   Úfirst_ordinalÚ	first_dayÚnext_ordinalÚdays_in_monthÚ	month_dayÚordinalr¦  s	            r   rw  z_CalendarOffset.year_to_epoch
  s  € ð Ÿš d¨D¬F°AÑ6Ô6ˆØ" QÑ&¨!Ñ+ˆ	ØŒ6�RŠ<ˆ<ØŸ=š=¨°©°1°aÑ8Ô8ˆLˆLàŸ=š=¨¨t¬v¸©z¸1Ñ=Ô=ˆLØ$ }Ñ4ˆð ”V˜y¨1™}Ñ-°Ñ2°QÑ6ˆ	ð 	�d”f˜q‘j AÑ%Ñ%ˆ	ð
 �}Ò$Ð$Ø˜‰NˆIà—-’-  d¤f¨iÑ8Ô8ˆØ˜%‘ˆØ�”˜TÑ! D¤K°"Ñ$4Ñ4°t´{ÑBÑBˆØˆr   Nr§  )	rÚ   rÝ   rÞ   r$  r´  r#   r-  r·  rw  r|   r   r   rR  rR  Û  se   € € € € € Ø;Ð;Ð;€IðÐð ð ð ð ð" ð
ð 
ñ „[ð
ð*ð *ð *ð *ð *r   rR  ),rZ   r£  r)   Ú	functoolsr”   rò   r;  rð   rù   Úsysr   r   r   r   Ú_commonr   r	   r„  rn   ro   Ú_TIMEDELTA_CACHE_SIZEÚ	lru_cacher   r   r   ÚplatformÚversion_inforì   r“   r—   rø   r¶   r  rU   rc   r¢   r8  rT  r@  re   r{  rz  rS  rR  r|   r   r   ú<module>rÇ     só  ðØ €€€Ø €€€Ø Ð Ð Ð Ø Ð Ð Ð Ø 	€	€	€	Ø 	€	€	€	Ø 	€	€	€	Ø €€€Ø €€€Ø 
€
€
€
Ø :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :Ð :à $Ð $Ð $Ð $Ð $Ð $Ð $Ð $àˆ��q˜!ÑÔ€Ø�ŠÑ Ô €ð Ð ð €ÔÐ2Ð3Ñ3Ô3ð&ð &ñ 4Ô3ð&ðð ð ðQ	Jð Q	Jð Q	Jð Q	Jð Q	JˆWñ Q	Jô Q	Jð Q	Jðl ”l gÒ-ÐL°#Ô2BÀWÒ2LÐ ðð ð ð2Mð Mð MðjBð jBð jBð^ )Ð ð"ð "ð "ð "ð "ñ "ô "ð "ðJ
ð 
ð 
ð 
ð 
ñ 
ô 
ð 
ð8 ˆW�T˜4 Ñ&Ô&€
ðK
ð K
ð K
ð\ð ð ð<ð ð ð(ð ð ð0s7ð s7ð s7ð s7ð s7ñ s7ô s7ð s7ðt Ð ðEð Eð Eðð ð ð ð ñ ô ð ð@Yð Yð Yð Yð Yñ Yô Yð Yð Yð Yr   